diff --git a/rad/static/dv3d/assets/computeWorker-FOqOvCDJ.js b/rad/static/dv3d/assets/computeWorker-FOqOvCDJ.js new file mode 100644 index 00000000..f0ed6bae --- /dev/null +++ b/rad/static/dv3d/assets/computeWorker-FOqOvCDJ.js @@ -0,0 +1,2969 @@ +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */const Ac=Symbol("Comlink.proxy"),Gf=Symbol("Comlink.endpoint"),Bf=Symbol("Comlink.releaseProxy"),Ba=Symbol("Comlink.finalizer"),xi=Symbol("Comlink.thrown"),Wc=t=>typeof t=="object"&&t!==null||typeof t=="function",Af={canHandle:t=>Wc(t)&&t[Ac],serialize(t){const{port1:e,port2:n}=new MessageChannel;return Ws(t,e),[n,[n]]},deserialize(t){return t.start(),jf(t)}},Wf={canHandle:t=>Wc(t)&&xi in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},zc=new Map([["proxy",Af],["throw",Wf]]);function zf(t,e){for(const n of t)if(e===n||n==="*"||n instanceof RegExp&&n.test(e))return!0;return!1}function Ws(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(i){if(!i||!i.data)return;if(!zf(n,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}const{id:a,type:s,path:o}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(vn);let l;try{const u=o.slice(0,-1).reduce((g,h)=>g[h],t),f=o.reduce((g,h)=>g[h],t);switch(s){case"GET":l=f;break;case"SET":u[o.slice(-1)[0]]=vn(i.data.value),l=!0;break;case"APPLY":l=f.apply(u,c);break;case"CONSTRUCT":{const g=new f(...c);l=Xf(g)}break;case"ENDPOINT":{const{port1:g,port2:h}=new MessageChannel;Ws(t,h),l=Yf(g,[g])}break;case"RELEASE":l=void 0;break;default:return}}catch(u){l={value:u,[xi]:0}}Promise.resolve(l).catch(u=>({value:u,[xi]:0})).then(u=>{const[f,g]=Wi(u);e.postMessage(Object.assign(Object.assign({},f),{id:a}),g),s==="RELEASE"&&(e.removeEventListener("message",r),$c(e),Ba in t&&typeof t[Ba]=="function"&&t[Ba]())}).catch(u=>{const[f,g]=Wi({value:new TypeError("Unserializable return value"),[xi]:0});e.postMessage(Object.assign(Object.assign({},f),{id:a}),g)})}),e.start&&e.start()}function $f(t){return t.constructor.name==="MessagePort"}function $c(t){$f(t)&&t.close()}function jf(t,e){const n=new Map;return t.addEventListener("message",function(i){const{data:a}=i;if(!a||!a.id)return;const s=n.get(a.id);if(s)try{s(a)}finally{n.delete(a.id)}}),is(t,n,[],e)}function ai(t){if(t)throw new Error("Proxy has been released and is not useable")}function jc(t){return Bn(t,new Map,{type:"RELEASE"}).then(()=>{$c(t)})}const Bi=new WeakMap,Ai="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(Bi.get(t)||0)-1;Bi.set(t,e),e===0&&jc(t)});function Hf(t,e){const n=(Bi.get(e)||0)+1;Bi.set(e,n),Ai&&Ai.register(t,e,t)}function Kf(t){Ai&&Ai.unregister(t)}function is(t,e,n=[],r=function(){}){let i=!1;const a=new Proxy(r,{get(s,o){if(ai(i),o===Bf)return()=>{Kf(a),jc(t),e.clear(),i=!0};if(o==="then"){if(n.length===0)return{then:()=>a};const c=Bn(t,e,{type:"GET",path:n.map(l=>l.toString())}).then(vn);return c.then.bind(c)}return is(t,e,[...n,o])},set(s,o,c){ai(i);const[l,u]=Wi(c);return Bn(t,e,{type:"SET",path:[...n,o].map(f=>f.toString()),value:l},u).then(vn)},apply(s,o,c){ai(i);const l=n[n.length-1];if(l===Gf)return Bn(t,e,{type:"ENDPOINT"}).then(vn);if(l==="bind")return is(t,e,n.slice(0,-1));const[u,f]=ao(c);return Bn(t,e,{type:"APPLY",path:n.map(g=>g.toString()),argumentList:u},f).then(vn)},construct(s,o){ai(i);const[c,l]=ao(o);return Bn(t,e,{type:"CONSTRUCT",path:n.map(u=>u.toString()),argumentList:c},l).then(vn)}});return Hf(a,t),a}function qf(t){return Array.prototype.concat.apply([],t)}function ao(t){const e=t.map(Wi);return[e.map(n=>n[0]),qf(e.map(n=>n[1]))]}const Hc=new WeakMap;function Yf(t,e){return Hc.set(t,e),t}function Xf(t){return Object.assign(t,{[Ac]:!0})}function Wi(t){for(const[e,n]of zc)if(n.canHandle(t)){const[r,i]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},i]}return[{type:"RAW",value:t},Hc.get(t)||[]]}function vn(t){switch(t.type){case"HANDLER":return zc.get(t.name).deserialize(t.value);case"RAW":return t.value}}function Bn(t,e,n,r){return new Promise(i=>{const a=Zf();e.set(a,i),t.start&&t.start(),t.postMessage(Object.assign({id:a},n),r)})}function Zf(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var A;(function(t){t.ERROR_EVENT="CORNERSTONE_ERROR",t.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",t.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",t.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",t.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",t.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",t.PRESET_MODIFIED="CORNERSTONE_VIEWPORT_RENDERING_PRESET_MODIFIED",t.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",t.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",t.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",t.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",t.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",t.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",t.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",t.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",t.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",t.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",t.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",t.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",t.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",t.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",t.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",t.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",t.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",t.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",t.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",t.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",t.VIEWPORT_NEW_IMAGE_SET="CORNERSTONE_VIEWPORT_NEW_IMAGE_SET",t.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",t.STACK_SCROLL_OUT_OF_BOUNDS="STACK_SCROLL_OUT_OF_BOUNDS",t.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",t.GEOMETRY_CACHE_GEOMETRY_REMOVED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_REMOVED",t.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS="VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS",t.VOLUME_VIEWPORT_SCROLL="VOLUME_VIEWPORT_SCROLL",t.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",t.WEB_WORKER_PROGRESS="CORNERSTONE_WEB_WORKER_PROGRESS",t.COLORMAP_MODIFIED="CORNERSTONE_COLORMAP_MODIFIED",t.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED="DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED",t.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED="DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED",t.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED="DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED",t.DYNAMIC_VOLUME_TIME_POINT_LOADED="DYNAMIC_VOLUME_TIME_POINT_LOADED",t.GEOMETRY_LOADED="GEOMETRY_LOADED",t.GEOMETRY_LOAD_PROGRESS="GEOMETRY_LOAD_PROGRESS",t.GEOMETRY_LOADED_FAILED="GEOMETRY_LOADED_FAILED",t.ACTORS_CHANGED="CORNERSTONE_ACTORS_CHANGED"})(A||(A={}));var Z;(function(t){t.Interaction="interaction",t.Thumbnail="thumbnail",t.Prefetch="prefetch",t.Compute="compute"})(Z||(Z={}));var xe;(function(t){t.STACK="stack",t.ORTHOGRAPHIC="orthographic",t.PERSPECTIVE="perspective",t.VOLUME_3D="volume3d",t.VIDEO="video",t.WHOLE_SLIDE="wholeSlide"})(xe||(xe={}));var Bt;(function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR",t[t.FAST_LINEAR=2]="FAST_LINEAR"})(Bt||(Bt={}));const wi={COMPOSITE_BLEND:0,MAXIMUM_INTENSITY_BLEND:1,MINIMUM_INTENSITY_BLEND:2,AVERAGE_INTENSITY_BLEND:3,ADDITIVE_INTENSITY_BLEND:4,RADON_TRANSFORM_BLEND:5,LABELMAP_EDGE_PROJECTION_BLEND:6},Jf={OFF:0,NORMALIZED:1,RAW:2};var Kc={BlendMode:wi,FilterMode:Jf};const{BlendMode:fr}=Kc;var as;(function(t){t[t.COMPOSITE=fr.COMPOSITE_BLEND]="COMPOSITE",t[t.MAXIMUM_INTENSITY_BLEND=fr.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",t[t.MINIMUM_INTENSITY_BLEND=fr.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",t[t.AVERAGE_INTENSITY_BLEND=fr.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND",t[t.LABELMAP_EDGE_PROJECTION_BLEND=fr.LABELMAP_EDGE_PROJECTION_BLEND]="LABELMAP_EDGE_PROJECTION_BLEND"})(as||(as={}));var Qf=as,Dn;(function(t){t.AXIAL="axial",t.CORONAL="coronal",t.SAGITTAL="sagittal",t.ACQUISITION="acquisition"})(Dn||(Dn={}));var ss;(function(t){t.CONTOUR="CONTOUR",t.SURFACE="SURFACE",t.MESH="MESH"})(ss||(ss={}));var e5=ss,os;(function(t){t.CLOSED_PLANAR="CLOSED_PLANAR",t.OPEN_PLANAR="OPEN_PLANAR"})(os||(os={}));var t5=os,cs;(function(t){t.PLY="PLY",t.STL="STL",t.OBJ="OBJ",t.VTP="VTP"})(cs||(cs={}));var n5=cs,Ae;(function(t){t.LINEAR="LINEAR",t.SAMPLED_SIGMOID="SIGMOID",t.LINEAR_EXACT="LINEAR_EXACT"})(Ae||(Ae={}));var ls;(function(t){t.SUM="SUM",t.AVERAGE="AVERAGE",t.SUBTRACT="SUBTRACT"})(ls||(ls={}));var r5=ls,Mt;(function(t){t.NOT_APPLICABLE="",t.ERMF="ERMF",t.USER="User",t.PROJECTION="Proj",t.REGION="Region",t.ERROR="Error",t.UNCALIBRATED="Uncalibrated",t.CALIBRATED="Calibrated",t.UNKNOWN="Unknown"})(Mt||(Mt={}));var Ke;(function(t){t.NO_DATA="noData",t.LOADING="loading",t.PRE_RENDER="preRender",t.RESIZE="resize",t.RENDERED="rendered"})(Ke||(Ke={}));var rt;(function(t){t[t.FAR_REPLICATE=1]="FAR_REPLICATE",t[t.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",t[t.SUBRESOLUTION=6]="SUBRESOLUTION",t[t.LOSSY=7]="LOSSY",t[t.FULL_RESOLUTION=8]="FULL_RESOLUTION"})(rt||(rt={}));var Pr;(function(t){t.FRAME="f",t.SECOND="s"})(Pr||(Pr={}));var i5=Object.freeze({__proto__:null,get SpeedUnit(){return Pr}}),Ye;(function(t){t.CALIBRATION="calibrationModule",t.CINE="cineModule",t.GENERAL_IMAGE="generalImageModule",t.GENERAL_SERIES="generalSeriesModule",t.GENERAL_STUDY="generalStudyModule",t.IMAGE_PIXEL="imagePixelModule",t.IMAGE_PLANE="imagePlaneModule",t.IMAGE_URL="imageUrlModule",t.MODALITY_LUT="modalityLutModule",t.MULTIFRAME="multiframeModule",t.NM_MULTIFRAME_GEOMETRY="nmMultiframeGeometryModule",t.OVERLAY_PLANE="overlayPlaneModule",t.PATIENT="patientModule",t.PATIENT_STUDY="patientStudyModule",t.PET_IMAGE="petImageModule",t.PET_ISOTOPE="petIsotopeModule",t.PET_SERIES="petSeriesModule",t.SOP_COMMON="sopCommonModule",t.ULTRASOUND_ENHANCED_REGION="ultrasoundEnhancedRegionModule",t.VOI_LUT="voiLutModule",t.WADO_WEB_CLIENT="wadoWebClient"})(Ye||(Ye={}));var us;(function(t){t.SUM="SUM",t.SUBTRACT="SUBTRACT",t.AVERAGE="AVERAGE"})(us||(us={}));var zi;(function(t){t.RLE="RLE",t.Volume="Volume"})(zi||(zi={}));var a5=Object.freeze({__proto__:null,BlendModes:Qf,CalibrationTypes:Mt,ContourType:t5,DynamicOperatorType:r5,Events:A,get GenerateImageType(){return us},GeometryType:e5,ImageQualityStatus:rt,InterpolationType:Bt,MeshType:n5,MetadataModules:Ye,OrientationAxis:Dn,RequestType:Z,VOILUTFunctionType:Ae,VideoEnums:i5,ViewportStatus:Ke,ViewportType:xe,VoxelManagerEnum:zi});const so={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}},Se={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(Se);const yt=.001;function qc(t){const e=Object.getOwnPropertyNames(t);for(const n of e){const r=t[n];r&&typeof r=="object"&&qc(r)}return Object.freeze(t)}const s5={axial:{viewPlaneNormal:[0,0,-1],viewUp:[0,-1,0],viewRight:[1,0,0]},sagittal:{viewPlaneNormal:[1,0,0],viewUp:[0,0,1],viewRight:[0,1,0]},coronal:{viewPlaneNormal:[0,-1,0],viewUp:[0,0,1],viewRight:[1,0,0]}},wn=qc(s5),o5=[{name:"CT-AAA",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-AAA2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bones",gradientOpacity:"4 0 1 985.12 1",specularPower:"1",scalarOpacity:"8 -1000 0 152.19 0 278.93 0.190476 952 0.2",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-Cardiac",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Contrast-Enhanced",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Vessels",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-2",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cropped-Volume-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -451 0 -450 1 1050 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Fat",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886",diffuse:"1",interpolation:"1"},{name:"CT-Liver-Vasculature",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Lung",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -637.62 0 700 1 3071 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Muscle",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Pulmonary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Soft-Tissue",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -167.01 0 -160 1 240 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Air",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ",diffuse:"0.9",interpolation:"1"},{name:"MR-Angio",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-Default",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"8 0 0 98.3725 0 416.637 1 2800 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-T2-Brain",gradientOpacity:"4 0 1 160.25 1",specularPower:"40",scalarOpacity:"10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1",diffuse:"0.6",interpolation:"1"},{name:"DTI-FA-Brain",gradientOpacity:"4 0 1 0.9950 1",specularPower:"40",scalarOpacity:"16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0",diffuse:"0.9",interpolation:"1"}],gr={},Gr={get:t=>gr[t],set:t=>{const e=t.id;gr[e]=t},delete:t=>delete gr[t],getAll:()=>{const e=Object.keys(gr).map(n=>gr[n]);return e.sort((n,r)=>n.id[0]==="_"&&r.id[0]!=="_"?1:n.id[0]!=="_"&&r.id[0]==="_"?-1:0),e}};class c5{constructor(){this.listeners={},this.debouncedListeners={}}reset(){this.listeners={},this.debouncedListeners={}}addEventListenerOnce(e,n){const r=i=>{this.removeEventListener(e,r),n.call(this,i)};this.addEventListener(e,r)}addEventListener(e,n){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].indexOf(n)===-1&&this.listeners[e].push(n)}addEventListenerDebounced(e,n,r){this.debouncedListeners[e]=this.debouncedListeners[e]||{};const i=this.debouncedListeners[e];if(!i[n]){const a=s=>{i[n]&&clearTimeout(i[n].timeoutId),i[n].timeoutId=setTimeout(()=>{n.call(this,s)},r)};i[n]={original:n,handle:a,timeoutId:null},this.addEventListener(e,a)}}removeEventListenerDebounced(e,n){var r;if((r=this.debouncedListeners[e])!=null&&r[n]){const i=this.debouncedListeners[e][n];this.removeEventListener(e,i.handle),clearTimeout(i.timeoutId),delete this.debouncedListeners[e][n]}}removeEventListener(e,n){if(!this.listeners[e])return;const r=this.listeners[e],i=r.length;for(let a=0;a(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}function $(t=ne,e,n=null){if(!e)throw new Error("Event type was not defined");const r=new CustomEvent(e,{detail:n,cancelable:!0});return t==null?void 0:t.dispatchEvent(r)}var tt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function da(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function l5(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var u5=function t(e,n){if(e===n)return!0;if(e&&n&&typeof e=="object"&&typeof n=="object"){if(e.constructor!==n.constructor)return!1;var r,i,a;if(Array.isArray(e)){if(r=e.length,r!=n.length)return!1;for(i=r;i--!==0;)if(!t(e[i],n[i]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if(a=Object.keys(e),r=a.length,r!==Object.keys(n).length)return!1;for(i=r;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,a[i]))return!1;for(i=r;i--!==0;){var s=a[i];if(!t(e[s],n[s]))return!1}return!0}return e!==e&&n!==n},zs=da(u5),oo=Object.prototype.toString,Yc=function(e){var n=oo.call(e),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&oo.call(e.callee)==="[object Function]"),r},Aa,co;function f5(){if(co)return Aa;co=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Yc,i=Object.prototype.propertyIsEnumerable,a=!i.call({toString:null},"toString"),s=i.call(function(){},"prototype"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(g){var h=g.constructor;return h&&h.prototype===g},l={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},u=function(){if(typeof window>"u")return!1;for(var g in window)try{if(!l["$"+g]&&e.call(window,g)&&window[g]!==null&&typeof window[g]=="object")try{c(window[g])}catch{return!0}}catch{return!0}return!1}(),f=function(g){if(typeof window>"u"||!u)return c(g);try{return c(g)}catch{return!1}};t=function(h){var d=h!==null&&typeof h=="object",m=n.call(h)==="[object Function]",p=r(h),v=d&&n.call(h)==="[object String]",T=[];if(!d&&!m&&!p)throw new TypeError("Object.keys called on a non-object");var C=s&&m;if(v&&h.length>0&&!e.call(h,0))for(var y=0;y0)for(var x=0;x3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Nn("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Nn("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Nn("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Nn("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,c=!!go&&go(e,n);if(fo)fo(e,n,{configurable:s===null&&c?c.configurable:!s,enumerable:i===null&&c?c.enumerable:!i,value:r,writable:a===null&&c?c.writable:!a});else if(o||!i&&!a&&!s)e[n]=r;else throw new T5("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},fs=Xc,Zc=function(){return!!fs};Zc.hasArrayLengthDefineBug=function(){if(!fs)return null;try{return fs([],"length",{value:1}).length!==1}catch{return!0}};var x5=Zc,w5=d5,S5=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",M5=Object.prototype.toString,E5=Array.prototype.concat,ho=C5,R5=function(t){return typeof t=="function"&&M5.call(t)==="[object Function]"},Jc=x5(),O5=function(t,e,n,r){if(e in t){if(r===!0){if(t[e]===n)return}else if(!R5(r)||!r())return}Jc?ho(t,e,n,!0):ho(t,e,n)},Qc=function(t,e){var n=arguments.length>2?arguments[2]:{},r=w5(e);S5&&(r=E5.call(r,Object.getOwnPropertySymbols(e)));for(var i=0;inull};function pt(t){if(t==null||t.isA)return t;if(!t.vtkClass)return gt.console&>.console.error&>.console.error("Invalid VTK object"),null;const e=a1[t.vtkClass];if(!e)return gt.console&>.console.error&>.console.error(`No vtk class found for Object of type ${t.vtkClass}`),null;const n={...t};Object.keys(n).forEach(i=>{n[i]&&typeof n[i]=="object"&&n[i].vtkClass&&(n[i]=pt(n[i]))});const r=e(n);return r&&r.modified&&r.modified(),r}function P5(t,e){a1[t]=e}pt.register=P5;class Wa extends Array{push(){for(let e=0;e{o1[t]=yn});gt.console=console.hasOwnProperty("log")?console:o1;const on={debug:yn,error:gt.console.error||yn,info:gt.console.info||yn,log:gt.console.log||yn,warn:gt.console.warn||yn};function c1(t,e){on[t]&&(on[t]=e||yn)}function l1(){on.log(...arguments)}function u1(){on.info(...arguments)}function $i(){on.debug(...arguments)}function J(){on.error(...arguments)}function pa(){on.warn(...arguments)}const po={};function f1(t){po[t]||(on.error(t),po[t]=!0)}const je=Object.create(null);je.Float32Array=Float32Array;je.Float64Array=Float64Array;je.Uint8Array=Uint8Array;je.Int8Array=Int8Array;je.Uint16Array=Uint16Array;je.Int16Array=Int16Array;je.Uint32Array=Uint32Array;je.Int32Array=Int32Array;je.Uint8ClampedArray=Uint8ClampedArray;try{je.BigInt64Array=BigInt64Array,je.BigUint64Array=BigUint64Array}catch{}function sr(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r1?e-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:2,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;const r=["TB","GB","MB","KB"];let i=Number(t),a="B";for(;i>n;)i/=n,a=r.pop();return`${i.toFixed(e)} ${a}`}function d1(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:" ";const n=[];let r=t;for(;r>1e3;)n.push(`000${r%1e3}`.slice(-3)),r=Math.floor(r/1e3);return r>0&&n.push(r),n.reverse(),n.join(e)}function p1(t){Object.keys(t).forEach(e=>{Array.isArray(t[e])&&(t[e]=[].concat(t[e]))})}function A5(t){return Object.values(je).some(e=>t instanceof e)}function W5(t,e){if(t===e)return!0;if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let n=0;nt[n]===e)}function m1(t){return t&&t.isA?t.getState():t}function $s(t){setTimeout(t,0)}function v1(t,e){const n=performance.now();t.finally(()=>{const r=performance.now()-n;e(r)})}function Ve(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};p1(e);const n=[];if(Number.isInteger(e.mtime)||(e.mtime=++gs),!("classHierarchy"in e))e.classHierarchy=new Wa("vtkObject");else if(!(e.classHierarchy instanceof Wa)){const a=new Wa;for(let s=0;s!!e.deleted,t.modified=a=>{if(e.deleted){J("instance deleted - cannot call any method");return}a&&as&&s(t)))},t.onModified=a=>{if(e.deleted)return J("instance deleted - cannot call any method"),null;const s=n.length;return n.push(a),i(s)},t.getMTime=()=>e.mtime,t.isA=a=>{let s=e.classHierarchy.length;for(;s--;)if(e.classHierarchy[s]===a)return!0;return!1},t.getClassName=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.classHierarchy[e.classHierarchy.length-1-a]},t.set=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,c=!1;return Object.keys(a).forEach(l=>{const u=o?null:t[`set${va(l)}`];u&&Array.isArray(a[l])&&u.length>1?c=u(...a[l])||c:u?c=u(a[l])||c:(["mtime"].indexOf(l)===-1&&!s&&pa(`Warning: Set value to model directly ${l}, ${a[l]}`),c=e[l]!==a[l]||c,e[l]=a[l])}),c},t.get=function(){for(var a=arguments.length,s=new Array(a),o=0;o{c[l]=e[l]}),c},t.getReferenceByName=a=>e[a],t.delete=()=>{Object.keys(e).forEach(a=>delete e[a]),n.forEach((a,s)=>r(s)),e.deleted=!0},t.getState=()=>{if(e.deleted)return null;const a={...e,vtkClass:t.getClassName()};Object.keys(a).forEach(o=>{a[o]===null||a[o]===void 0||o[0]==="_"?delete a[o]:a[o].isA?a[o]=a[o].getState():Array.isArray(a[o])?a[o]=a[o].map(m1):A5(a[o])&&(a[o]=Array.from(a[o]))});const s={};return Object.keys(a).sort().forEach(o=>{s[o]=a[o]}),s.mtime&&delete s.mtime,s},t.shallowCopy=function(a){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(a.getClassName()!==t.getClassName())throw new Error(`Cannot ShallowCopy ${a.getClassName()} into ${t.getClassName()}`);const o=a.get(),c=Object.keys(e).sort();Object.keys(o).sort().forEach(u=>{const f=c.indexOf(u);f===-1?s&&$i(`add ${u} in shallowCopy`):c.splice(f,1),e[u]=o[u]}),c.length&&s&&$i(`Untouched keys: ${c.join(", ")}`),t.modified()},t.toJSON=function(){return t.getState()},t}const $5={object(t,e,n){return function(){return{...e[n.name]}}}};function Tt(t,e,n){n.forEach(r=>{if(typeof r=="object"){const i=$5[r.type];i?t[`get${Ee(r.name)}`]=i(t,e,r):t[`get${Ee(r.name)}`]=()=>e[r.name]}else t[`get${Ee(r)}`]=()=>e[r]})}const y1={enum(t,e,n){const r=`_on${Ee(n.name)}Changed`;return i=>{var a;if(typeof i=="string"){if(n.enum[i]!==void 0)return e[n.name]!==n.enum[i]?(e[n.name]=n.enum[i],t.modified(),!0):!1;throw J(`Set Enum with invalid argument ${n}, ${i}`),new RangeError("Set Enum with invalid string argument")}if(typeof i=="number"){if(e[n.name]!==i){if(Object.keys(n.enum).map(s=>n.enum[s]).indexOf(i)!==-1){const s=e[n.name];return e[n.name]=i,(a=e[r])==null||a.call(e,t,e,i,s),t.modified(),!0}throw J(`Set Enum outside numeric range ${n}, ${i}`),new RangeError("Set Enum outside numeric range")}return!1}throw J(`Set Enum with invalid argument (String/Number) ${n}, ${i}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(t,e,n){var i;((i=n.params)==null?void 0:i.length)===1&&pa('Setter of type "object" with a single "param" field is not supported');const r=`_on${Ee(n.name)}Changed`;return function(){var l,u;for(var a=arguments.length,s=new Array(a),o=0;o1&&((l=n.params)!=null&&l.length)?c=n.params.reduce((f,g,h)=>Object.assign(f,{[g]:s[h]}),{}):c=s[0],!zs(e[n.name],c)){const f=e[n.name];return e[n.name]=c,(u=e[r])==null||u.call(e,t,e,c,f),t.modified(),!0}return!1}}};function mo(t){if(typeof t=="object"){const e=y1[t.type];if(e)return(n,r)=>e(n,r,t);throw J(`No setter for field ${t}`),new TypeError("No setter for field")}return function(n,r){const i=`_on${Ee(t)}Changed`;return function(s){var o;if(r.deleted)return J("instance deleted - cannot call any method"),!1;if(r[t]!==s){const c=r[t.name];return r[t]=s,(o=r[i])==null||o.call(r,n,r,s,c),n.modified(),!0}return!1}}}function Xr(t,e,n){n.forEach(r=>{typeof r=="object"?t[`set${Ee(r.name)}`]=mo(r)(t,e):t[`set${Ee(r)}`]=mo(r)(t,e)})}function Xe(t,e,n){Tt(t,e,n),Xr(t,e,n)}function Zr(t,e,n){n.forEach(r=>{t[`get${Ee(r)}`]=()=>e[r]?Array.from(e[r]):e[r],t[`get${Ee(r)}ByReference`]=()=>e[r]})}function js(t,e,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;n.forEach(a=>{if(e[a]&&r&&e[a].length!==r)throw new RangeError(`Invalid initial number of values for array (${a})`);const s=`_on${Ee(a)}Changed`;t[`set${Ee(a)}`]=function(){var h;if(e.deleted)return J("instance deleted - cannot call any method"),!1;for(var o=arguments.length,c=new Array(o),l=0;l=0)&&(u=u[0],g=!0),u==null)f=e[a]!==u;else{if(r&&u.length!==r)if(u.length{const c=e[a];o.forEach((l,u)=>{c[u]=l})}})}function T1(t,e,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;Zr(t,e,n),js(t,e,n,r,i)}function ya(t,e,n){for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){J("instance deleted - cannot call any method");return}if(d>=e.numberOfInputs){J(`algorithm ${t.getClassName()} only has ${e.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(e.inputData[d]!==h||e.inputConnection[d])&&(e.inputData[d]=h,e.inputConnection[d]=null,t.modified&&t.modified())}function a(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[h]&&(e.inputData[h]=e.inputConnection[h]()),e.inputData[h]}function s(h){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){J("instance deleted - cannot call any method");return}if(d>=e.numberOfInputs){let m=`algorithm ${t.getClassName()} only has `;m+=`${e.numberOfInputs}`,m+=" input ports. To add more input ports, use addInputConnection()",J(m);return}e.inputData[d]=null,e.inputConnection[d]=h}function o(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[h]}function c(){let h=e.numberOfInputs;for(;h&&!e.inputData[h-1]&&!e.inputConnection[h-1];)h--;return h===e.numberOfInputs&&e.numberOfInputs++,h}function l(h){if(e.deleted){J("instance deleted - cannot call any method");return}s(h,c())}function u(h){if(e.deleted){J("instance deleted - cannot call any method");return}i(h,c())}function f(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.deleted?(J("instance deleted - cannot call any method"),null):(t.shouldUpdate()&&t.update(),e.output[h])}t.shouldUpdate=()=>{var p,v;const h=t.getMTime();let d=1/0,m=r;for(;m--;){if(!e.output[m]||e.output[m].isDeleted())return!0;const T=e.output[m].getMTime();if(Td)return!0;return!1};function g(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const d=()=>f(h);return d.filter=t,d}if(e.numberOfInputs){let h=e.numberOfInputs;for(;h--;)e.inputData.push(null),e.inputConnection.push(null);t.setInputData=i,t.setInputConnection=s,t.addInputData=u,t.addInputConnection=l,t.getInputData=a,t.getInputConnection=o}r&&(t.getOutputData=f,t.getOutputPort=g),t.update=()=>{const h=[];if(e.numberOfInputs){let d=0;for(;de.numberOfInputs,t.getNumberOfOutputPorts=()=>r||e.output.length,t.getInputArrayToProcess=h=>{const d=e.inputArrayToProcess[h],m=e.inputData[h];return d&&m?m[`get${d.fieldAssociation}`]().getArray(d.arrayName):null},t.setInputArrayToProcess=function(h,d,m){let p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Scalars";for(;e.inputArrayToProcess.lengthf.apply(t,arguments),1-g);else if(f.apply(t,arguments)===Ks)break}}}t[`invoke${Ee(n)}`]=c,t[`on${Ee(n)}`]=function(l){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!l.apply)return console.error(`Invalid callback for event ${n}`),null;if(e.deleted)return J("instance deleted - cannot call any method"),null;const f=a++;return r.push([f,l,u]),r.sort((g,h)=>h[2]-g[2]),o(f)},t.delete=()=>{i(),r.forEach(l=>{let[u]=l;return s(u)})}}function Ue(t,e){const n=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const i={},a={};return t(a,i,r),Object.freeze(a)};return e&&pt.register(e,n),n}function Jr(){for(var t=arguments.length,e=new Array(t),n=0;n!!s).map(s=>s(...i))}}function qs(t){return t&&t.isA&&t.isA("vtkObject")}function ji(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(qs(t)){if(r.indexOf(t)>=0)return n;r.push(t);const i=e(t);i!==void 0&&n.push(i);const a=t.get();Object.keys(a).forEach(s=>{const o=a[s];Array.isArray(o)?o.forEach(c=>{ji(c,e,n,r)}):ji(o,e,n,r)})}return n}function x1(t,e,n){var r=this;let i;const a=function(){for(var s=arguments.length,o=new Array(s),c=0;c{i=null,n||t.apply(l,o)},f=n&&!i;clearTimeout(i),i=setTimeout(u,e),f&&t.apply(l,o)};return a.cancel=()=>clearTimeout(i),a}function w1(t,e){let n=!1,r=null;function i(){n=!1,r!==null&&(a(...r),r=null)}function a(){for(var s=arguments.length,o=new Array(s),c=0;c2&&arguments[2]!==void 0?arguments[2]:{};e.keystore=Object.assign(e.keystore||{},n),t.setKey=(r,i)=>{e.keystore[r]=i},t.getKey=r=>e.keystore[r],t.getAllKeys=()=>Object.keys(e.keystore),t.deleteKey=r=>delete e.keystore[r],t.clearKeystore=()=>t.getAllKeys().forEach(r=>delete e.keystore[r])}let j5=1;const si="__root__";function S1(t,e){Ys(t,e);const n=t.delete;e.proxyId=`${j5++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),Tt(t,e,["proxyId","proxyGroup","proxyName"]),Xe(t,e,["proxyManager"]);const r={},i={};function a(l,u){i[u]||(i[u]=[]);const f=i[u];for(let g=0;g{e.ui=JSON.parse(JSON.stringify(l||[])),Object.keys(r).forEach(u=>delete r[u]),Object.keys(i).forEach(u=>delete i[u]),a(e.ui,si),t.modified()};function s(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:si;return i[l]}t.updateProxyProperty=(l,u)=>{const f=r[l];f?Object.assign(f,u):r[l]={...u}},t.activate=()=>{if(e.proxyManager){const l=`setActive${Ee(t.getProxyGroup().slice(0,-1))}`;e.proxyManager[l]&&e.proxyManager[l](t)}},e.propertyLinkSubscribers={},t.registerPropertyLinkForGC=(l,u)=>{u in e.propertyLinkSubscribers||(e.propertyLinkSubscribers[u]=[]),e.propertyLinkSubscribers[u].push(l)},t.gcPropertyLinks=l=>{const u=e.propertyLinkSubscribers[l]||[];for(;u.length;)u.pop().unbind(t)},e.propertyLinkMap={},t.getPropertyLink=function(l){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.propertyLinkMap[l])return e.propertyLinkMap[l];let f=null;const g=[];let h=0,d=!1;function m(y){let x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(d)return null;const w=[];let E=null;for(h=g.length;h--;){const D=g[h];D.instance===y?E=D:w.push(D)}if(!E)return null;const R=E.instance[`get${Ee(E.propertyName)}`]();if(!W5(R,f)||x){for(f=R,d=!0;w.length;){const D=w.pop();D.instance.set({[D.propertyName]:f})}d=!1}return e.propertyLinkMap[l].persistent&&(e.propertyLinkMap[l].value=R),R}function p(y,x){const w=[];for(h=g.length;h--;){const E=g[h];E.instance===y&&(E.propertyName===x||x===void 0)&&(E.subscription.unsubscribe(),w.push(h))}for(;w.length;)g.splice(w.pop(),1)}function v(y,x){let w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const E=y.onModified(m),R=g[0];return g.push({instance:y,propertyName:x,subscription:E}),w&&(e.propertyLinkMap[l].persistent&&e.propertyLinkMap[l].value!==void 0?y.set({[x]:e.propertyLinkMap[l].value}):R&&m(R.instance,!0)),{unsubscribe:()=>p(y,x)}}function T(){for(;g.length;)g.pop().subscription.unsubscribe()}const C={bind:v,unbind:p,unsubscribe:T,persistent:u};return e.propertyLinkMap[l]=C,C};function o(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:si;const u=[],f=e.proxyId,g=s(l)||[];for(let h=0;ho().map(l=>l.name),t.getPropertyByName=l=>o().find(u=>u.name===l),t.getPropertyDomainByName=l=>(r[l]||{}).domain,t.getProxySection=()=>({id:e.proxyId,name:e.proxyGroup,ui:e.ui,properties:o()}),t.delete=()=>{const l=Object.keys(e.propertyLinkMap);let u=l.length;for(;u--;)e.propertyLinkMap[l[u]].unsubscribe();Object.keys(e.propertyLinkSubscribers).forEach(t.gcPropertyLinks),n()},t.getState=()=>null;function c(){if(e.links)for(let l=0;l{for(;i.length;)i.pop().unsubscribe();r()}}function E1(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};e.this=t;function i(o){const c=Object.keys(o);let l=c.length;for(;l--;){const u=c[l];e[u].set(o[u])}}const a=Object.keys(r);let s=a.length;for(;s--;){const o=a[s];e[o]=r[o];const c=n[o];t[`set${Ee(o)}`]=l=>{if(l!==e[o]){e[o]=l;const u=c[l];i(u),t.modified()}}}a.length&&Tt(t,e,a)}const vo=10,yo=40,To=800;function R1(t){let e=0,n=0,r=0,i=0;return"detail"in t&&(n=t.detail),"wheelDelta"in t&&(n=-t.wheelDelta/120),"wheelDeltaY"in t&&(n=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=n,n=0),r=e*vo,i=n*vo,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(r=t.deltaX),(r||i)&&t.deltaMode&&(t.deltaMode===1?(r*=yo,i*=yo):(r*=To,i*=To)),r&&!e&&(e=r<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:e,spinY:n||e,pixelX:r,pixelY:i||r}}var M={algo:Hs,capitalize:va,chain:Jr,debounce:x1,enumToString:z5,event:C1,EVENT_ABORT:Ks,formatBytesToProperUnit:h1,formatNumbersWithThousandSeparator:d1,get:Tt,getArray:Zr,getCurrentGlobalMTime:G5,getStateArrayMapFunc:m1,isVtkObject:qs,keystore:Ys,measurePromiseExecution:v1,moveToProtected:ya,newInstance:Ue,newTypedArray:sr,newTypedArrayFrom:ma,normalizeWheel:R1,obj:Ve,proxy:S1,proxyPropertyMapping:M1,proxyPropertyState:E1,safeArrays:p1,set:Xr,setArray:js,setGet:Xe,setGetArray:T1,setImmediate:$s,setLoggerFunction:c1,throttle:w1,traverseInstanceTree:ji,TYPED_ARRAYS:je,uncapitalize:g1,VOID:s1,vtkDebugMacro:$i,vtkErrorMacro:J,vtkInfoMacro:u1,vtkLogMacro:l1,vtkOnceErrorMacro:f1,vtkWarningMacro:pa,objectSetterMap:y1},Lt=Object.freeze({__proto__:null,VOID:s1,setLoggerFunction:c1,vtkLogMacro:l1,vtkInfoMacro:u1,vtkDebugMacro:$i,vtkErrorMacro:J,vtkWarningMacro:pa,vtkOnceErrorMacro:f1,TYPED_ARRAYS:je,newTypedArray:sr,newTypedArrayFrom:ma,capitalize:va,_capitalize:Ee,uncapitalize:g1,formatBytesToProperUnit:h1,formatNumbersWithThousandSeparator:d1,setImmediateVTK:$s,measurePromiseExecution:v1,obj:Ve,get:Tt,set:Xr,setGet:Xe,getArray:Zr,setArray:js,setGetArray:T1,moveToProtected:ya,algo:Hs,EVENT_ABORT:Ks,event:C1,newInstance:Ue,chain:Jr,isVtkObject:qs,traverseInstanceTree:ji,debounce:x1,throttle:w1,keystore:Ys,proxy:S1,proxyPropertyMapping:M1,proxyPropertyState:E1,normalizeWheel:R1,default:M});const H5={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},me={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",UNSIGNED_CHAR_CLAMPED:"Uint8ClampedArray",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},K5=me.FLOAT;var O1={DefaultDataType:K5,DataTypeByteSize:H5,VtkDataTypes:me};const Br={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},H={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var D1={Wrap:Br,Filter:H};const V1=new Float32Array(1),q5=new Int32Array(V1.buffer);function Y5(t){V1[0]=t;const e=q5[0];let n=e>>16&32768,r=e>>12&2047;const i=e>>23&255;return i<103?n:i>142?(n|=31744,n|=(i===255?0:1)&&e&8388607,n):i<113?(r|=2048,n|=(r>>114-i)+(r>>113-i&1),n):(n|=i-112<<10|r>>1,n+=r&1,n)}function X5(t){const e=(t&32768)>>15,n=(t&31744)>>10,r=t&1023;return n===0?(e?-1:1)*2**-14*(r/2**10):n===31?r?NaN:(e?-1:1)*(1/0):(e?-1:1)*2**(n-15)*(1+r/2**10)}var An={fromHalf:X5,toHalf:Y5},Xs={exports:{}};Xs.exports;(function(t){(function(e,n,r){function i(c){var l=this,u=o();l.next=function(){var f=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=f-(l.c=f|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(c),l.s0<0&&(l.s0+=1),l.s1-=u(c),l.s1<0&&(l.s1+=1),l.s2-=u(c),l.s2<0&&(l.s2+=1),u=null}function a(c,l){return l.c=c.c,l.s0=c.s0,l.s1=c.s1,l.s2=c.s2,l}function s(c,l){var u=new i(c),f=l&&l.state,g=u.next;return g.int32=function(){return u.next()*4294967296|0},g.double=function(){return g()+(g()*2097152|0)*11102230246251565e-32},g.quick=g,f&&(typeof f=="object"&&a(f,u),g.state=function(){return a(u,{})}),g}function o(){var c=4022871197,l=function(u){u=String(u);for(var f=0;f>>0,g-=c,g*=c,c=g>>>0,g-=c,c+=g*4294967296}return(c>>>0)*23283064365386963e-26};return l}n&&n.exports?n.exports=s:this.alea=s})(tt,t)})(Xs);var Z5=Xs.exports,Zs={exports:{}};Zs.exports;(function(t){(function(e,n,r){function i(o){var c=this,l="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var f=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^f^f>>>8},o===(o|0)?c.x=o:l+=o;for(var u=0;u>>0)/4294967296};return f.double=function(){do var g=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(g+h)/(1<<21);while(d===0);return d},f.int32=l.next,f.quick=f,u&&(typeof u=="object"&&a(u,l),f.state=function(){return a(l,{})}),f}n&&n.exports?n.exports=s:this.xor128=s})(tt,t)})(Zs);var J5=Zs.exports,Js={exports:{}};Js.exports;(function(t){(function(e,n,r){function i(o){var c=this,l="";c.next=function(){var f=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(f^f<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,o===(o|0)?c.x=o:l+=o;for(var u=0;u>>4),c.next()}function a(o,c){return c.x=o.x,c.y=o.y,c.z=o.z,c.w=o.w,c.v=o.v,c.d=o.d,c}function s(o,c){var l=new i(o),u=c&&c.state,f=function(){return(l.next()>>>0)/4294967296};return f.double=function(){do var g=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(g+h)/(1<<21);while(d===0);return d},f.int32=l.next,f.quick=f,u&&(typeof u=="object"&&a(u,l),f.state=function(){return a(l,{})}),f}n&&n.exports?n.exports=s:this.xorwow=s})(tt,t)})(Js);var Q5=Js.exports,Qs={exports:{}};Qs.exports;(function(t){(function(e,n,r){function i(o){var c=this;c.next=function(){var u=c.x,f=c.i,g,h;return g=u[f],g^=g>>>7,h=g^g<<24,g=u[f+1&7],h^=g^g>>>10,g=u[f+3&7],h^=g^g>>>3,g=u[f+4&7],h^=g^g<<7,g=u[f+7&7],g=g^g<<13,h^=g^g<<9,u[f]=h,c.i=f+1&7,h};function l(u,f){var g,h=[];if(f===(f|0))h[0]=f;else for(f=""+f,g=0;g0;--g)u.next()}l(c,o)}function a(o,c){return c.x=o.x.slice(),c.i=o.i,c}function s(o,c){o==null&&(o=+new Date);var l=new i(o),u=c&&c.state,f=function(){return(l.next()>>>0)/4294967296};return f.double=function(){do var g=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(g+h)/(1<<21);while(d===0);return d},f.int32=l.next,f.quick=f,u&&(u.x&&a(u,l),f.state=function(){return a(l,{})}),f}n&&n.exports?n.exports=s:this.xorshift7=s})(tt,t)})(Qs);var eg=Qs.exports,e0={exports:{}};e0.exports;(function(t){(function(e,n,r){function i(o){var c=this;c.next=function(){var u=c.w,f=c.X,g=c.i,h,d;return c.w=u=u+1640531527|0,d=f[g+34&127],h=f[g=g+1&127],d^=d<<13,h^=h<<17,d^=d>>>15,h^=h>>>12,d=f[g]=d^h,c.i=g,d+(u^u>>>16)|0};function l(u,f){var g,h,d,m,p,v=[],T=128;for(f===(f|0)?(h=f,f=null):(f=f+"\0",h=0,T=Math.max(T,f.length)),d=0,m=-32;m>>15,h^=h<<4,h^=h>>>13,m>=0&&(p=p+1640531527|0,g=v[m&127]^=h+p,d=g==0?d+1:0);for(d>=128&&(v[(f&&f.length||0)&127]=-1),d=127,m=4*128;m>0;--m)h=v[d+34&127],g=v[d=d+1&127],h^=h<<13,g^=g<<17,h^=h>>>15,g^=g>>>12,v[d]=h^g;u.w=p,u.X=v,u.i=d}l(c,o)}function a(o,c){return c.i=o.i,c.w=o.w,c.X=o.X.slice(),c}function s(o,c){o==null&&(o=+new Date);var l=new i(o),u=c&&c.state,f=function(){return(l.next()>>>0)/4294967296};return f.double=function(){do var g=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(g+h)/(1<<21);while(d===0);return d},f.int32=l.next,f.quick=f,u&&(u.X&&a(u,l),f.state=function(){return a(l,{})}),f}n&&n.exports?n.exports=s:this.xor4096=s})(tt,t)})(e0);var tg=e0.exports,t0={exports:{}};t0.exports;(function(t){(function(e,n,r){function i(o){var c=this,l="";c.next=function(){var f=c.b,g=c.c,h=c.d,d=c.a;return f=f<<25^f>>>7^g,g=g-h|0,h=h<<24^h>>>8^d,d=d-f|0,c.b=f=f<<20^f>>>12^g,c.c=g=g-h|0,c.d=h<<16^g>>>16^d,c.a=d-f|0},c.a=0,c.b=0,c.c=-1640531527,c.d=1367130551,o===Math.floor(o)?(c.a=o/4294967296|0,c.b=o|0):l+=o;for(var u=0;u>>0)/4294967296};return f.double=function(){do var g=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(g+h)/(1<<21);while(d===0);return d},f.int32=l.next,f.quick=f,u&&(typeof u=="object"&&a(u,l),f.state=function(){return a(l,{})}),f}n&&n.exports?n.exports=s:this.tychei=s})(tt,t)})(t0);var ng=t0.exports,I1={exports:{}},rg={},ig=Object.freeze({__proto__:null,default:rg}),ag=l5(ig);(function(t){(function(e,n,r){var i=256,a=6,s=52,o="random",c=r.pow(i,a),l=r.pow(2,s),u=l*2,f=i-1,g;function h(y,x,w){var E=[];x=x==!0?{entropy:!0}:x||{};var R=v(p(x.entropy?[y,C(n)]:y??T(),3),E),D=new d(E),S=function(){for(var O=D.g(a),V=c,L=0;O=u;)O/=2,V/=2,L>>>=1;return(O+L)/V};return S.int32=function(){return D.g(4)|0},S.quick=function(){return D.g(4)/4294967296},S.double=S,v(C(D.S),n),(x.pass||w||function(O,V,L,b){return b&&(b.S&&m(b,D),O.state=function(){return m(D,{})}),L?(r[o]=O,V):O})(S,R,"global"in x?x.global:this==r,x.state)}function d(y){var x,w=y.length,E=this,R=0,D=E.i=E.j=0,S=E.S=[];for(w||(y=[w++]);RL1(`vtkMath::${t} - NOT IMPLEMENTED`)}function Rr(t,e,n,r){let i;for(let a=0;a0&&arguments[0]!==void 0?arguments[0]:3;const e=Array(t);for(let n=0;nMath.PI;function vg(t,e){return e>1023?t*2**1023*2**(e-1023):e<-1074?t*2**-1074*2**(e+1074):t*2**e}function Ge(t){return t/180*Math.PI}function b1(t){return t*180/Math.PI}const{round:yg,floor:a0,ceil:Tg,min:Cg,max:xg}=Math;function wg(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=1/0;for(let i=e,a=t.length;i1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=-1/0;for(let i=e,a=t.length;i1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=1/0,i=-1/0;for(let a=e,s=t.length;a=0;--i)if(n[i]0&&arguments[0]!==void 0?arguments[0]:0;const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)-t;return t+n*Math.random()}const bg=Qr("gaussian");function Hi(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n}function At(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n}function F1(t,e){return t[0]*=e,t[1]*=e,t[2]*=e,t}function _1(t,e){return t[0]*=e,t[1]*=e,t}function hs(t,e,n,r){return r[0]=t[0]+e[0]*n,r[1]=t[1]+e[1]*n,r[2]=t[2]+e[2]*n,r}function Fg(t,e,n,r){return r[0]=t[0]+e[0]*n,r[1]=t[1]+e[1]*n,r}function Y(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function _g(t,e,n){n[0]=t[0]*e[0],n[1]=t[0]*e[1],n[2]=t[0]*e[2],n[3]=t[1]*e[0],n[4]=t[1]*e[1],n[5]=t[1]*e[2],n[6]=t[2]*e[0],n[7]=t[2]*e[1],n[8]=t[2]*e[2]}function Dt(t,e,n){const r=t[1]*e[2]-t[2]*e[1],i=t[2]*e[0]-t[0]*e[2],a=t[0]*e[1]-t[1]*e[0];return n[0]=r,n[1]=i,n[2]=a,n}function nn(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;switch(e){case 1:return Math.abs(t);case 2:return Math.sqrt(t[0]*t[0]+t[1]*t[1]);case 3:return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);default:{let n=0;for(let r=0;ra&&i>s?(c=0,l=1,u=2):a>s?(c=1,l=2,u=0):(c=2,l=0,u=1);const f=t[c]/o,g=t[l]/o,h=t[u]/o,d=Math.sqrt(f*f+h*h);if(r!==0){const m=Math.sin(r),p=Math.cos(r);e&&(e[c]=(h*p-f*g*m)/d,e[l]=m*d,e[u]=(-(f*p)-g*h*m)/d),n&&(n[c]=(-(h*m)-f*g*p)/d,n[l]=p*d,n[u]=(f*m-g*h*p)/d)}else e&&(e[c]=h/d,e[l]=0,e[u]=-f/d),n&&(n[c]=-f*g/d,n[l]=d,n[u]=-g*h/d)}function kg(t,e,n){const r=Y(e,e);if(r===0)return n[0]=0,n[1]=0,n[2]=0,!1;const i=Y(t,e)/r;for(let a=0;a<3;a++)n[a]=e[a];return F1(n,i),!0}function ds(t,e){return t[0]*e[0]+t[1]*e[1]}function Pg(t,e,n){const r=ds(e,e);if(r===0)return n[0]=0,n[1]=0,!1;const i=ds(t,e)/r;for(let a=0;a<2;a++)n[a]=e[a];return _1(n,i),!0}function St(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])+(t[2]-e[2])*(t[2]-e[2])}function Gg(t,e){const n=[0,0,0];return Dt(t,e,n),Math.atan2(nn(n),Y(t,e))}function Bg(t,e,n){const r=Math.abs(t-n);return 1/Math.sqrt(2*Math.PI*e)*Math.exp(-(r**2)/(2*e))}function Ag(t,e,n){const r=Math.abs(t-n);return Math.exp(-(r**2)/(2*e))}function Wg(t,e,n){n[0]=t[0]*e[0],n[1]=t[0]*e[1],n[2]=t[1]*e[0],n[3]=t[1]*e[1]}function U1(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function zg(t){const e=U1(t);return e!==0&&(t[0]/=e,t[1]/=e),e}function Ce(){for(var t=arguments.length,e=new Array(t),n=0;ni&&(i=r),(r=Math.abs(t[s*3+2]))>i&&(i=r),a[s]=1/i;i=a[0]*Math.abs(t[0]),n=0,(r=a[1]*Math.abs(t[3]))>=i&&(i=r,n=1),(r=a[2]*Math.abs(t[6]))>=i&&(n=2),n!==0&&(Rr(t,3,n,0),a[n]=a[0]),e[0]=n,t[3]/=t[0],t[6]/=t[0],t[4]-=t[3]*t[1],t[7]-=t[6]*t[1],i=a[1]*Math.abs(t[4]),n=1,(r=a[2]*Math.abs(t[7]))>=i&&(n=2,Rr(t,3,1,2),a[2]=a[1]),e[1]=n,t[7]/=t[4],t[5]-=t[3]*t[2],t[8]-=t[6]*t[2]+t[7]*t[5],e[2]=2}function jg(t,e,n){let r=n[e[0]];n[e[0]]=n[0],n[0]=r,r=n[e[1]],n[e[1]]=n[1],n[1]=r-t[3]*n[0],r=n[e[2]],n[e[2]]=n[2],n[2]=r-t[6]*n[0]-t[7]*n[1],n[2]/=t[8],n[1]=(n[1]-t[5]*n[2])/t[4],n[0]=(n[0]-t[1]*n[1]-t[2]*n[2])/t[0]}function Hg(t,e,n){const r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],c=t[5],l=t[6],u=t[7],f=t[8],g=+Ce(o,u,c,f),h=-Ce(s,l,c,f),d=+Ce(s,l,o,u),m=-Ce(i,u,a,f),p=+Ce(r,l,a,f),v=-Ce(r,l,i,u),T=+Ce(i,o,a,c),C=-Ce(r,s,a,c),y=+Ce(r,s,i,o),x=r*g+i*h+a*d,w=g*e[0]+m*e[1]+T*e[2],E=h*e[0]+p*e[1]+C*e[2],R=d*e[0]+v*e[1]+y*e[2];n[0]=w/x,n[1]=E/x,n[2]=R/x}function Oi(t,e,n){const r=t[0]*e[0]+t[1]*e[1]+t[2]*e[2],i=t[3]*e[0]+t[4]*e[1]+t[5]*e[2],a=t[6]*e[0]+t[7]*e[1]+t[8]*e[2];n[0]=r,n[1]=i,n[2]=a}function ps(t,e,n){const r=[...t],i=[...e];for(let a=0;a<3;a++)n[a]=r[0]*i[a]+r[1]*i[a+3]+r[2]*i[a+6],n[a+3]=r[3]*i[a]+r[4]*i[a+3]+r[5]*i[a+6],n[a+6]=r[6]*i[a]+r[7]*i[a+3]+r[8]*i[a+6]}function Kg(t,e,n,r,i,a,s){r!==i&&L1("Number of columns of A must match number of rows of B.");const o=[...t],c=[...e];for(let l=0;l2&&arguments[2]!==void 0?arguments[2]:r0;if(t.length!==e.length)return!1;function r(i,a){return Math.abs(i-e[a])<=n}return t.every(r)}const ei=k1;function P1(t){for(let e=0;e<3;e++)t[e*3]=t[e*3+1]=t[e*3+2]=0,t[e*3+e]=1}function G1(t,e){for(let n=0;n1&&arguments[1]!==void 0?arguments[1]:r0;return ei(t,n0,e)}function Xg(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:r0;return ei(t,pg,e)}function B1(t,e){const n=t[0]*t[0],r=t[0]*t[1],i=t[0]*t[2],a=t[0]*t[3],s=t[1]*t[1],o=t[2]*t[2],c=t[3]*t[3],l=t[1]*t[2],u=t[1]*t[3],f=t[2]*t[3],g=s+o+c;let h=1/(n+g);const d=(n-g)*h;h*=2,e[0]=s*h+d,e[3]=(l+a)*h,e[6]=(u-i)*h,e[1]=(l-a)*h,e[4]=o*h+d,e[7]=(f+r)*h,e[2]=(u+i)*h,e[5]=(f-r)*h,e[8]=c*h+d}function Di(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!`${t}`.includes("e"))return+`${Math.round(`${t}e+${e}`)}e-${e}`;const n=`${t}`.split("e");let r="";return+n[1]+e>0&&(r="+"),+`${Math.round(`${+n[0]}e${r}${+n[1]+e}`)}e-${e}`}function ms(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return e[0]=Di(t[0],n),e[1]=Di(t[1],n),e[2]=Di(t[2],n),e}function ti(t,e,n,r){let i,a,s,o,c,l,u,f,g,h,d,m,p,v,T,C;const y=pe(e),x=pe(e),w=(R,D,S)=>{v=R[D],p=R[S],R[D]=v-m*(p+v*h),R[S]=p+m*(v-p*h)};for(G1(e,r),c=0;c3&&Math.abs(n[c])+v===Math.abs(n[c])&&Math.abs(n[o])+v===Math.abs(n[o]))t[c*e+o]=0;else if(Math.abs(t[c*e+o])>u){for(p=n[o]-n[c],Math.abs(p)+v===Math.abs(p)?g=t[c*e+o]/p:(f=.5*p/t[c*e+o],g=1/(Math.abs(f)+Math.sqrt(1+f*f)),f<0&&(g=-g)),T=1/Math.sqrt(1+g*g),m=g*T,h=m/(1+T),p=g*t[c*e+o],x[c]-=p,x[o]+=p,n[c]-=p,n[o]+=p,t[c*e+o]=0,a=0;a<=c-1;a++)w(t,a*e+c,a*e+o);for(a=c+1;a<=o-1;a++)w(t,c*e+a,a*e+o);for(a=o+1;a=Co)return Vn("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(a=0;a=C||Math.abs(n[i]-C)>1)+(e&1);for(l=0,i=0;i=0&&l++;if(lh?d:h,i=m>i?m:i,n[g]=1,i!==0&&(n[g]/=i)}const a=Math.abs(e[0])*n[0],s=Math.abs(e[3])*n[1],o=Math.abs(e[6])*n[2];r[0]=0,i=a,s>=i&&(i=s,r[0]=1),o>=i&&(r[0]=2),r[0]!==0&&(yr(e,3,r[0],0),n[r[0]]=n[0]);const c=Math.abs(e[4])*n[1],l=Math.abs(e[7])*n[2];r[1]=1,i=c,l>=i&&(r[1]=2,yr(e,3,1,2)),r[2]=2;let u=0;if(Ca(e)<0){u=1;for(let g=0;g<9;g++)e[g]=-e[g]}const f=pe(4);if(A1(e,f),B1(f,e),u)for(let g=0;g<9;g++)e[g]=-e[g];r[1]!==1&&yr(e,3,r[1],1),r[0]!==0&&yr(e,3,r[0],0)}function z1(t,e,n){let r,i,a,s,o,c;const l=[...t];if(ti(l,3,e,n),e[0]===e[1]&&e[0]===e[2]){P1(n);return}for(Kn(n,n),r=0;r<3;r++)if(e[(r+1)%3]===e[(r+2)%3]){for(c=Math.abs(n[r*3]),s=0,i=1;i<3;i++)c<(o=Math.abs(n[r*3+i]))&&(c=o,s=i);s!==r&&(o=e[s],e[s]=e[r],e[r]=o,Rr(n,3,r,s)),n[s*3+s]<0&&(n[s*3]=-n[s*3],n[s*3+1]=-n[s*3+1],n[s*3+2]=-n[s*3+2]),i=(s+1)%3,a=(s+2)%3,n[i*3]=0,n[i*3+1]=0,n[i*3+2]=0,n[i*3+i]=1;const u=Dt([n[s*3],n[s*3+1],n[s*3+2]],[n[i*3],n[i*3+1],n[i*3+2]],[]);Ta(u);const f=Dt(u,[n[s*3],n[s*3+1],n[s*3+2]],[]);for(let g=0;g<3;g++)n[a*3+g]=u[g],n[i*3+g]=f[g];Kn(n,n);return}for(c=Math.abs(n[0]),s=0,r=1;r<3;r++)c<(o=Math.abs(n[r*3]))&&(c=o,s=r);if(s!==0){const u=e[s];e[s]=e[0],e[0]=u,Rr(n,3,s,0)}if(Math.abs(n[4])s&&(s=u);if(s===0)return Vn("Unable to factor linear system"),0;f[r]=1/s}for(i=0;i=s&&(s=l,o=r)}if(i!==o){for(a=0;a=0)for(a=s;a<=i-1;a++)c-=t[i*r+a]*n[a];else c!==0&&(s=i);n[i]=c}for(i=r-1;i>=0;i--){for(c=n[i],a=i+1;a3&&arguments[3]!==void 0?arguments[3]:null,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const a=r||pe(n),s=i||pe(n);if(s0(t,a,n)===0)return null;for(let o=0;or&&(r=Math.abs(t[i*e+a]));for(let i=0;i6&&arguments[6]!==void 0?arguments[6]:!0;if(ti0&&(c=0,o[g]=0);if(c&&i===1)return Vn("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),vs(t,e,n,a);if(c)d=1;else for(g=0;g1&&arguments[1]!==void 0?arguments[1]:[0,.5,1];switch(t.length){case 3:return e[0]=parseInt(t[0],16)*17/255,e[1]=parseInt(t[1],16)*17/255,e[2]=parseInt(t[2],16)*17/255,e;case 4:return e[0]=parseInt(t[1],16)*17/255,e[1]=parseInt(t[2],16)*17/255,e[2]=parseInt(t[3],16)*17/255,e;case 6:return e[0]=parseInt(t.substr(0,2),16)/255,e[1]=parseInt(t.substr(2,2),16)/255,e[2]=parseInt(t.substr(4,2),16)/255,e;case 7:return e[0]=parseInt(t.substr(1,2),16)/255,e[1]=parseInt(t.substr(3,2),16)/255,e[2]=parseInt(t.substr(5,2),16)/255,e;case 9:return e[0]=parseInt(t.substr(1,2),16)/255,e[1]=parseInt(t.substr(3,2),16)/255,e[2]=parseInt(t.substr(5,2),16)/255,e[3]=parseInt(t.substr(7,2),16)/255,e;default:return e}}function Cr(t,e){let n,r;const[i,a,s]=t,o=1/3,c=1/6,l=2/3;let u=i,f=i;a>u?u=a:au?u=s:s0?r=(u-f)/u:r=0,r>0?(i===u?n=c*(a-s)/(u-f):a===u?n=o+c*(s-i)/(u-f):n=l+c*(i-a)/(u-f),n<0&&(n+=1)):n=0,e[0]=n,e[1]=r,e[2]=g}function Wn(t,e){const[n,r,i]=t,a=1/3,s=1/6,o=2/3,c=5/6;let l,u,f;n>s&&n<=a?(u=1,l=(a-n)/s,f=0):n>a&&n<=.5?(u=1,f=(n-a)/s,l=0):n>.5&&n<=o?(f=1,u=(o-n)/s,l=0):n>o&&n<=c?(f=1,l=(n-o)/s,u=0):n>c&&n<=1?(l=1,f=(1-n)/s,u=0):(l=1,u=n/s,f=0),l=r*l+(1-r),u=r*u+(1-r),f=r*f+(1-r),l*=i,u*=i,f*=i,e[0]=l,e[1]=u,e[2]=f}function H1(t,e){const[n,r,i]=t;let a=(n+16)/116,s=r/500+a,o=a-i/200;a**3>.008856?a**=3:a=(a-16/116)/7.787,s**3>.008856?s**=3:s=(s-16/116)/7.787,o**3>.008856?o**=3:o=(o-16/116)/7.787;const c=.9505,l=1,u=1.089;e[0]=c*s,e[1]=l*a,e[2]=u*o}function K1(t,e){const[n,r,i]=t,a=.9505,s=1,o=1.089;let c=n/a,l=r/s,u=i/o;c>.008856?c**=1/3:c=7.787*c+16/116,l>.008856?l**=1/3:l=7.787*l+16/116,u>.008856?u**=1/3:u=7.787*u+16/116,e[0]=116*l-16,e[1]=500*(c-l),e[2]=200*(l-u)}function q1(t,e){const[n,r,i]=t;let a=n*3.2406+r*-1.5372+i*-.4986,s=n*-.9689+r*1.8758+i*.0415,o=n*.0557+r*-.204+i*1.057;a>.0031308?a=1.055*a**(1/2.4)-.055:a*=12.92,s>.0031308?s=1.055*s**(1/2.4)-.055:s*=12.92,o>.0031308?o=1.055*o**(1/2.4)-.055:o*=12.92;let c=a;c1&&(a/=c,s/=c,o/=c),a<0&&(a=0),s<0&&(s=0),o<0&&(o=0),e[0]=a,e[1]=s,e[2]=o}function Y1(t,e){let[n,r,i]=t;n>.04045?n=((n+.055)/1.055)**2.4:n/=12.92,r>.04045?r=((r+.055)/1.055)**2.4:r/=12.92,i>.04045?i=((i+.055)/1.055)**2.4:i/=12.92,e[0]=n*.4124+r*.3576+i*.1805,e[1]=n*.2126+r*.7152+i*.0722,e[2]=n*.0193+r*.1192+i*.9505}function Sn(t,e){const n=[0,0,0];Y1(t,n),K1(n,e)}function Ki(t,e){const n=[0,0,0];H1(t,n),q1(n,e)}function xa(t){return t[0]=1,t[1]=-1,t[2]=1,t[3]=-1,t[4]=1,t[5]=-1,t}function r3(t){return!(t[1]-t[0]<0)}function i3(t,e,n){return n[0]=Math.min(t[0],e[0]),n[1]=Math.max(t[0],e[0]),n[2]=Math.min(t[1],e[1]),n[3]=Math.max(t[1],e[1]),n[4]=Math.min(t[2],e[2]),n[5]=Math.max(t[2],e[2]),n}function mt(t,e,n){return tn?n:t}function ys(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return r[0]=mt(t[0],e[0],n[0]),r[1]=mt(t[1],e[1],n[1]),r[2]=mt(t[2],e[2],n[2]),r}function a3(t,e){let n=0;return e[0]!==e[1]&&(te[1]?n=e[1]:n=t,n=(n-e[0])/(e[1]-e[0])),n}const s3=Qr("GetScalarTypeFittingRange"),o3=Qr("GetAdjustedScalarRange");function c3(t,e){if(!t||!e)return 0;for(let n=0;n<6;n+=2)if(t[n]e[n+1]||t[n+1]e[n+1])return 0;return 1}function l3(t,e,n){if(!t||!e)return 0;for(let r=0;r<6;r+=2)if(t[r]+n[r/2]e[r+1]||t[r+1]+n[r/2]e[r+1])return 0;return 1}function u3(t,e,n){if(!t||!e||!n)return 0;for(let r=0;r<3;r++)if(t[r]+n[r]e[2*r+1])return 0;return 1}function f3(t,e,n,r){const i=pe(3),a=pe(3),s=pe(3),o=pe(3),c=pe(3),l=pe(3);for(let y=0;y<3;++y)i[y]=t[y]-e[y],a[y]=e[y]-n[y],s[y]=n[y]-t[y],o[y]=-i[y],c[y]=-a[y],l[y]=-s[y];const u=nn(o),f=nn(c),g=nn(s),h=pe(3);Dt(i,a,h);const d=nn(h),m=u*f*g/(2*d),p=2*d*d,v=f*f*Y(i,l)/p,T=g*g*Y(o,a)/p,C=u*u*Y(s,c)/p;for(let y=0;y<3;++y)r[y]=v*t[y]+T*e[y]+C*n[y];return m}const g3=1/0,h3=-1/0,X1=t=>!Number.isFinite(t),{isFinite:d3,isNaN:Ts}=Number,xo=Ts;function Zn(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function p3(t){let e=-1,n=-1;for(let r=0;re&&(n=r,e=i)}return n}function Z1(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;const n=new Array(e),r=new Array(e);for(let a=0;a0;a--){let s=-1/0,o=0,c=0;for(let l=0;l<=a;++l){const u=n[l];for(let f=0;f<=a;++f){const g=r[f],h=Math.abs(t[u+e*g]);h>s&&(s=h,o=l,c=f)}}[n[a],n[o]]=[n[o],n[a]],[r[a],r[c]]=[r[c],r[a]]}const i=new Array(e*e).fill(0);for(let a=0;a15?e.toString(16):`0${e.toString(16)}`}function m3(t){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#"}${t.map(J1).join("")}`}function oi(t){return Math.round(t*255)}function v3(t){return t.length===3?`rgb(${t.map(oi).join(", ")})`:`rgba(${oi(t[0]||0)}, ${oi(t[1]||0)}, ${oi(t[2]||0)}, ${t[3]||0})`}var ht={Pi:mg,ldexp:vg,radiansFromDegrees:Ge,degreesFromRadians:b1,round:yg,floor:a0,ceil:Tg,ceilLog2:Eg,min:Cg,max:xg,arrayMin:wg,arrayMax:Sg,arrayRange:Mg,isPowerOfTwo:Tr,nearestPowerOfTwo:Jt,factorial:Rg,binomial:Og,beginCombination:Dg,nextCombination:Vg,randomSeed:Ig,getSeed:Lg,random:Ng,gaussian:bg,add:Hi,subtract:At,multiplyScalar:F1,multiplyScalar2D:_1,multiplyAccumulate:hs,multiplyAccumulate2D:Fg,dot:Y,outer:_g,cross:Dt,norm:nn,normalize:Ta,perpendiculars:Ug,projectVector:kg,projectVector2D:Pg,distance2BetweenPoints:St,angleBetweenVectors:Gg,gaussianAmplitude:Bg,gaussianWeight:Ag,dot2D:ds,outer2D:Wg,norm2D:U1,normalize2D:zg,determinant2x2:Ce,LUFactor3x3:$g,LUSolve3x3:jg,linearSolve3x3:Hg,multiply3x3_vect3:Oi,multiply3x3_mat3:ps,multiplyMatrix:Kg,transpose3x3:Kn,invert3x3:qg,identity3x3:P1,identity:G1,isIdentity:Yg,isIdentity3x3:Xg,determinant3x3:Ca,quaternionToMatrix3x3:B1,areEquals:k1,areMatricesEqual:ei,roundNumber:Di,roundVector:ms,matrix3x3ToQuaternion:A1,multiplyQuaternion:Zg,orthogonalize3x3:W1,diagonalize3x3:z1,singularValueDecomposition3x3:Jg,solveLinearSystem:$1,invertMatrix:j1,luFactorLinearSystem:s0,luSolveLinearSystem:o0,estimateMatrixCondition:Qg,jacobi:e3,jacobiN:ti,solveHomogeneousLeastSquares:vs,solveLeastSquares:t3,hex2float:n3,rgb2hsv:Cr,hsv2rgb:Wn,lab2xyz:H1,xyz2lab:K1,xyz2rgb:q1,rgb2xyz:Y1,rgb2lab:Sn,lab2rgb:Ki,uninitializeBounds:xa,areBoundsInitialized:r3,computeBoundsFromPoints:i3,clampValue:mt,clampVector:ys,clampAndNormalizeValue:a3,getScalarTypeFittingRange:s3,getAdjustedScalarRange:o3,extentIsWithinOtherExtent:c3,boundsIsWithinOtherBounds:l3,pointIsWithinBounds:u3,solve3PointCircle:f3,inf:g3,negInf:h3,isInf:X1,isNan:Ts,isNaN:Ts,isFinite:d3,createUninitializedBounds:Zn,getMajorAxisIndex:p3,getSparseOrthogonalMatrix:Z1,floatToHex2:J1,floatRGB2HexCode:m3,float2CssRGBA:v3};const{vtkErrorMacro:y3}=Lt,{DefaultDataType:T3}=O1,C3=1e-6;function Cs(t,e,n){const r=t.length;let i=Number.MAX_VALUE,a=-Number.MAX_VALUE,s,o;for(o=e;oa&&(a=s);return{min:i,max:a}}function x3(){let t=Number.MAX_VALUE,e=-Number.MAX_VALUE,n=0,r=0;return{add(i){t>i&&(t=i),e1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(e<0&&n>1){const i=t.length/n,a=new Float64Array(i);for(let s=0,o=0;s1&&arguments[1]!==void 0?arguments[1]:0;const n=t||[];for(;n.length<=e;)n.push(null);return n}function c0(t){return Object.prototype.toString.call(t).slice(8,-1)}function w3(t){const e=t.getNumberOfComponents();let n=0;const r=new Array(e);for(let i=0;in&&(n=a)}return n}const S3={computeRange:Q1,createRangeHelper:x3,fastComputeRange:Cs,getDataType:c0,getMaxNorm:w3};function M3(t,e){e.classHierarchy.push("vtkDataArray");function n(r){if(r<0)return!1;const i=t.getNumberOfComponents(),a=e.values.length/(i>0?i:1);if(r===a)return!0;if(r>a){const s=e.values;return e.values=sr(e.dataType,(r+a)*i),e.values.set(s),!0}return e.size>r*i&&(e.size=r*i,t.dataChange()),!0}t.dataChange=()=>{e.ranges=null,t.modified()},t.resize=r=>{n(r);const i=r*t.getNumberOfComponents();return e.size!==i?(e.size=i,t.dataChange(),!0):!1},t.initialize=()=>{t.resize(0)},t.getElementComponentSize=()=>e.values.BYTES_PER_ELEMENT,t.getComponent=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[r*e.numberOfComponents+i]},t.setComponent=(r,i,a)=>{a!==e.values[r*e.numberOfComponents+i]&&(e.values[r*e.numberOfComponents+i]=a,t.dataChange())},t.getValue=r=>{const i=r/e.numberOfComponents,a=r%e.numberOfComponents;return t.getComponent(i,a)},t.setValue=(r,i)=>{const a=r/e.numberOfComponents,s=r%e.numberOfComponents;t.setComponent(a,s,i)},t.getData=()=>e.size===e.values.length?e.values:e.values.subarray(0,e.size),t.getRange=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1,i=r;i<0&&(i=e.numberOfComponents===1?0:e.numberOfComponents);let a=null;return e.ranges||(e.ranges=wo(e.ranges,e.numberOfComponents)),a=e.ranges[i],a?(e.rangeTuple[0]=a.min,e.rangeTuple[1]=a.max,e.rangeTuple):(a=Q1(t.getData(),r,e.numberOfComponents),e.ranges[i]=a,e.rangeTuple[0]=a.min,e.rangeTuple[1]=a.max,e.rangeTuple)},t.setRange=(r,i)=>{e.ranges||(e.ranges=wo(e.ranges,e.numberOfComponents));const a={min:r.min,max:r.max};return e.ranges[i]=a,e.rangeTuple[0]=a.min,e.rangeTuple[1]=a.max,e.rangeTuple},t.getRanges=function(){if(!(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0))return structuredClone(e.ranges);const i=[];for(let a=0;a1){const[a,s]=t.getRange(-1),o={min:a,max:s};i.push(o)}return i},t.setTuple=(r,i)=>{const a=r*e.numberOfComponents;for(let s=0;s{let a=r*e.numberOfComponents;const s=Math.min(i.length,e.size-a);for(let o=0;o(e.size<=r*e.numberOfComponents&&(e.size=(r+1)*e.numberOfComponents,n(r+1)),t.setTuple(r,i),r),t.insertTuples=(r,i)=>{const a=r+i.length/e.numberOfComponents;return e.size{const i=e.size/e.numberOfComponents;return t.insertTuple(i,r)},t.insertNextTuples=r=>{const i=e.size/e.numberOfComponents;return t.insertTuples(i,r)},t.findTuple=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:C3;for(let a=0;ai){s=!1;break}if(s)return a/e.numberOfComponents}return-1},t.getTuple=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const a=e.numberOfComponents||1,s=r*a;switch(a){case 4:i[3]=e.values[s+3];case 3:i[2]=e.values[s+2];case 2:i[1]=e.values[s+1];case 1:i[0]=e.values[s];break;default:for(let o=a-1;o>=0;--o)i[o]=e.values[s+o]}return i},t.getTuples=(r,i)=>{const a=(r??0)*e.numberOfComponents,s=(i??t.getNumberOfTuples())*e.numberOfComponents,o=t.getData().subarray(a,s);return o.length>0?o:null},t.getTupleLocation=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},t.getNumberOfComponents=()=>e.numberOfComponents,t.getNumberOfValues=()=>e.size,t.getNumberOfTuples=()=>e.size/e.numberOfComponents,t.getDataType=()=>e.dataType,t.newClone=()=>tl({empty:!0,name:e.name,dataType:e.dataType,numberOfComponents:e.numberOfComponents}),t.getName=()=>(e.name||(t.modified(),e.name=`vtkDataArray${t.getMTime()}`),e.name),t.setData=(r,i)=>{e.values=r,e.size=r.length,e.dataType=c0(r),i&&(e.numberOfComponents=i),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),t.dataChange()},t.getState=()=>{if(e.deleted)return null;const r={...e,vtkClass:t.getClassName()};r.values=Array.from(r.values),delete r.buffer,Object.keys(r).forEach(a=>{r[a]||delete r[a]});const i={};return Object.keys(r).sort().forEach(a=>{i[a]=r[a]}),i.mtime&&delete i.mtime,i},t.deepCopy=r=>{const i=t.getDataType(),a=e.values;t.shallowCopy(r),e.ranges=structuredClone(r.getRanges()),(a==null?void 0:a.length)>=r.getNumberOfValues()&&i===r.getDataType()?(a.set(r.getData()),e.values=a,t.dataChange()):t.setData(r.getData().slice())},t.interpolateTuple=(r,i,a,s,o,c)=>{const l=e.numberOfComponents||1;(l!==i.getNumberOfComponents()||l!==s.getNumberOfComponents())&&y3("numberOfComponents must match");const u=i.getTuple(a),f=s.getTuple(o),g=[];switch(g.length=l,l){case 4:g[3]=u[3]+(f[3]-u[3])*c;case 3:g[2]=u[2]+(f[2]-u[2])*c;case 2:g[1]=u[1]+(f[1]-u[1])*c;case 1:g[0]=u[0]+(f[0]-u[0])*c;break;default:for(let h=0;h2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,E3,n),Array.isArray(n.values)&&n.dataType===void 0&&console.warn("vtkDataArray.newInstance: no dataType provided, converting to Float32Array"),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(e.values?Array.isArray(e.values)&&(e.values=ma(e.dataType,e.values)):e.values=sr(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=c0(e.values)),Ve(t,e),Xr(t,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");M3(t,e)}const tl=Ue(el,"vtkDataArray");var ie={newInstance:tl,extend:el,...S3,...O1};const{vtkErrorMacro:R3}=M,O3=["Build","Render"];function D3(t,e){e.classHierarchy.push("vtkViewNode"),t.build=r=>{},t.render=r=>{},t.traverse=r=>{const i=r.getTraverseOperation(),a=t[i];if(a){a(r);return}t.apply(r,!0);for(let s=0;s{const a=t[r.getOperation()];a&&a(i,r)},t.getViewNodeFor=r=>{if(e.renderable===r)return t;for(let i=0;ie._parent?e._parent.isA(r)?e._parent:e._parent.getFirstAncestorOfType(r):null,t.getLastAncestorOfType=r=>{if(!e._parent)return null;const i=e._parent.getLastAncestorOfType(r);return i||(e._parent.isA(r)?e._parent:null)},t.addMissingNode=r=>{if(!r)return;const i=e._renderableChildMap.get(r);if(i!==void 0)return i.setVisited(!0),i;const a=t.createViewNode(r);if(a)return a.setParent(t),a.setVisited(!0),e._renderableChildMap.set(r,a),e.children.push(a),a},t.addMissingNodes=r=>{if(!(!r||!r.length))for(let i=0;i{if(!(!r||!r.length))for(let i=0;i{const i=e.children.findIndex(s=>s===r);if(i<0)return!1;const a=r.getRenderable();return a&&e._renderableChildMap.delete(a),r.delete(),e.children.splice(i,1),!0},t.prepareNodes=()=>{for(let r=0;r{e.visited=r},t.removeUnusedNodes=()=>{let r=0;for(let i=0;i{if(!e.myFactory)return R3("Cannot create view nodes without my own factory"),null;const i=e.myFactory.createNode(r);return i&&i.setRenderable(r),i};const n=t.delete;t.delete=()=>{for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,V3,n),M.obj(t,e),M.event(t,e,"event"),e._renderableChildMap=new Map,M.get(t,e,["visited"]),M.setGet(t,e,["_parent","renderable","myFactory"]),M.getArray(t,e,["children"]),M.moveToProtected(t,e,["parent"]),D3(t,e)}const I3=M.newInstance(nl,"vtkViewNode");var He={newInstance:I3,extend:nl,PASS_TYPES:O3};function L3(t,e){e.overrides||(e.overrides={}),e.classHierarchy.push("vtkViewNodeFactory"),t.createNode=n=>{if(n.isDeleted())return null;let r=0,i=n.getClassName(r++),a=!1;const s=Object.keys(e.overrides);for(;i&&!a;)s.indexOf(i)!==-1?a=!0:i=n.getClassName(r++);if(!a)return null;const o=e.overrides[i]();return o.setMyFactory(t),o}}const N3={};function rl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,N3,n),M.obj(t,e),L3(t,e)}const b3=M.newInstance(rl,"vtkViewNodeFactory");var il={newInstance:b3,extend:rl};const al=Object.create(null);function Nt(t,e){al[t]=e}function F3(t,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const _3={};function U3(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_3,n),e.overrides=al,il.extend(t,e,n),F3(t,e)}M.newInstance(U3,"vtkOpenGLViewNodeFactory");function k3(){try{const r=new Int16Array([0,32767]),i=[1,1],a=document.createElement("canvas");a.width=4,a.height=4;const s=a.getContext("webgl2");if(!s)return!1;const o=s.getExtension("EXT_texture_norm16");if(!o)return!1;const c=`#version 300 es + void main() { + gl_PointSize = ${4 .toFixed(1)}; + gl_Position = vec4(0, 0, 0, 1); + } + `,l=`#version 300 es + precision highp float; + precision highp int; + precision highp sampler2D; + + uniform sampler2D u_image; + + out vec4 color; + + void main() { + vec4 intColor = texture(u_image, gl_PointCoord.xy); + color = vec4(vec3(intColor.rrr), 1); + } + `,u=s.createShader(s.VERTEX_SHADER);if(s.shaderSource(u,c),s.compileShader(u),!s.getShaderParameter(u,s.COMPILE_STATUS))return!1;const f=s.createShader(s.FRAGMENT_SHADER);if(s.shaderSource(f,l),s.compileShader(f),!s.getShaderParameter(f,s.COMPILE_STATUS))return!1;const g=s.createProgram();if(s.attachShader(g,u),s.attachShader(g,f),s.linkProgram(g),!s.getProgramParameter(g,s.LINK_STATUS))return!1;const h=s.createTexture();s.bindTexture(s.TEXTURE_2D,h),s.texImage2D(s.TEXTURE_2D,0,o.R16_SNORM_EXT,2,1,0,s.RED,s.SHORT,r),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.useProgram(g),s.drawArrays(s.POINTS,0,1);const d=new Uint8Array(4);s.readPixels(i[0],i[1],1,1,s.RGBA,s.UNSIGNED_BYTE,d);const[m,p,v]=d,T=s.getExtension("WEBGL_lose_context");return T&&T.loseContext(),m===p&&p===v&&m!==0}catch{return!1}}let za;function P3(){return za===void 0&&(za=k3()),za}const{Wrap:Pt,Filter:ke}=D1,{VtkDataTypes:re}=ie,{vtkDebugMacro:$a,vtkErrorMacro:bn,vtkWarningMacro:So}=Lt,{toHalf:G3}=An;function B3(t,e){e.classHierarchy.push("vtkOpenGLTexture");function n(){return{internalFormat:e.internalFormat,format:e.format,openGLDataType:e.openGLDataType,width:e.width,height:e.height}}t.render=function(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(d?e._openGLRenderWindow=d:(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow")),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?t.setMinificationFilter(ke.LINEAR_MIPMAP_LINEAR):t.setMinificationFilter(ke.LINEAR),t.setMagnificationFilter(ke.LINEAR)):(t.setMinificationFilter(ke.NEAREST),t.setMagnificationFilter(ke.NEAREST)),e.renderable.getRepeat()&&(t.setWrapR(Pt.REPEAT),t.setWrapS(Pt.REPEAT),t.setWrapT(Pt.REPEAT)),e.renderable.getInputData()&&e.renderable.setImage(null),!e.handle||e.renderable.getMTime()>e.textureBuildTime.getMTime()){if(e.renderable.getImage()!==null&&(e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(ke.LINEAR_MIPMAP_LINEAR)),e.renderable.getImage()&&e.renderable.getImageLoaded()&&(t.create2DFromImage(e.renderable.getImage()),t.activate(),t.sendParameters(),e.textureBuildTime.modified())),e.renderable.getCanvas()!==null){e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(ke.LINEAR_MIPMAP_LINEAR));const p=e.renderable.getCanvas();t.create2DFromRaw(p.width,p.height,4,re.UNSIGNED_CHAR,p,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const p=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(ke.LINEAR_MIPMAP_LINEAR)),t.create2DFromRaw(p.width,p.height,4,re.UNSIGNED_CHAR,p.data,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}const m=e.renderable.getInputData(0);if(m&&m.getPointData().getScalars()){const p=m.getExtent(),v=m.getPointData().getScalars(),T=[];for(let C=0;C{if(!((e.minificationFilter===ke.LINEAR||e.magnificationFilter===ke.LINEAR)&&!P3()))return e.oglNorm16Ext};t.destroyTexture=()=>{t.deactivate(),e.context&&e.handle&&e.context.deleteTexture(e.handle),e._prevTexParams=null,e.handle=0,e.numberOfDimensions=0,e.target=0,e.components=0,e.width=0,e.height=0,e.depth=0,t.resetFormatAndType()},t.createTexture=()=>{e.handle||(e.handle=e.context.createTexture(),e.target&&(e.context.bindTexture(e.target,e.handle),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.bindTexture(e.target,null)))},t.getTextureUnit=()=>e._openGLRenderWindow?e._openGLRenderWindow.getTextureUnitForTexture(t):-1,t.activate=()=>{e._openGLRenderWindow.activateTexture(t),t.bind()},t.deactivate=()=>{e._openGLRenderWindow&&e._openGLRenderWindow.deactivateTexture(t)},t.releaseGraphicsResources=d=>{d&&e.handle&&(d.activateTexture(t),d.deactivateTexture(t),e.context.deleteTexture(e.handle),e._prevTexParams=null,e.handle=0,e.numberOfDimensions=0,e.target=0,e.internalFormat=0,e.format=0,e.openGLDataType=0,e.components=0,e.width=0,e.height=0,e.depth=0,e.allocatedGPUMemoryInBytes=0),e.shaderProgram&&(e.shaderProgram.releaseGraphicsResources(d),e.shaderProgram=null)},t.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&t.getMTime()>e.sendParametersTime.getMTime()&&t.sendParameters()},t.isBound=()=>{let d=!1;if(e.context&&e.handle){let m=0;switch(e.target){case e.context.TEXTURE_2D:m=e.context.TEXTURE_BINDING_2D;break;default:So("impossible case");break}d=e.context.getIntegerv(m)===e.handle}return d},t.sendParameters=()=>{e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e._openGLRenderWindow.getWebgl2()&&(e.context.texParameteri(e.target,e.context.TEXTURE_BASE_LEVEL,e.baseLevel),e.context.texParameteri(e.target,e.context.TEXTURE_MAX_LEVEL,e.maxLevel)),e.sendParametersTime.modified()},t.getInternalFormat=(d,m)=>(e._forceInternalFormat||(e.internalFormat=t.getDefaultInternalFormat(d,m)),e.internalFormat||$a(`Unable to find suitable internal format for T=${d} NC= ${m}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&So("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),t.getDefaultInternalFormat=(d,m)=>{let p=0;return p=e._openGLRenderWindow.getDefaultTextureInternalFormat(d,m,r(),t.useHalfFloat()),p||(p||($a("Unsupported internal texture type!"),$a(`Unable to find suitable internal format for T=${d} NC= ${m}`)),p)},t.useHalfFloat=()=>e.enableUseHalfFloat&&e.canUseHalfFloat,t.setInternalFormat=d=>{e._forceInternalFormat=!0,d!==e.internalFormat&&(e.internalFormat=d,t.modified())},t.getFormat=(d,m)=>(e.format=t.getDefaultFormat(d,m),e.format),t.getDefaultFormat=(d,m)=>{if(e._openGLRenderWindow.getWebgl2())switch(m){case 1:return e.context.RED;case 2:return e.context.RG;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}else switch(m){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}},t.resetFormatAndType=()=>{e._prevTexParams=null,e.format=0,e.internalFormat=0,e._forceInternalFormat=!1,e.openGLDataType=0},t.getDefaultDataType=d=>{const m=t.useHalfFloat();if(e._openGLRenderWindow.getWebgl2())switch(d){case re.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(r()&&!m&&re.SHORT):return e.context.SHORT;case(r()&&!m&&re.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(m&&re.SHORT):return e.context.HALF_FLOAT;case(m&&re.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case re.FLOAT:case re.VOID:default:return e.context.FLOAT}switch(d){case re.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case re.FLOAT:case re.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const p=e.context.getExtension("OES_texture_half_float");if(p&&e.context.getExtension("OES_texture_half_float_linear"))return p.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},t.getOpenGLDataType=function(d){let m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||m)&&(e.openGLDataType=t.getDefaultDataType(d)),e.openGLDataType},t.getShiftAndScale=()=>{let d=0,m=1;switch(e.openGLDataType){case e.context.BYTE:m=127.5,d=m-128;break;case e.context.UNSIGNED_BYTE:m=255,d=0;break;case e.context.SHORT:m=32767.5,d=m-32768;break;case e.context.UNSIGNED_SHORT:m=65536,d=0;break;case e.context.INT:m=21474836475e-1,d=m-2147483648;break;case e.context.UNSIGNED_INT:m=4294967295,d=0;break;case e.context.FLOAT:}return{shift:d,scale:m}},t.getOpenGLFilterMode=d=>{switch(d){case ke.NEAREST:return e.context.NEAREST;case ke.LINEAR:return e.context.LINEAR;case ke.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case ke.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case ke.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case ke.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},t.getOpenGLWrapMode=d=>{switch(d){case Pt.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case Pt.REPEAT:return e.context.REPEAT;case Pt.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}};function i(d){const[m,p,v,T,C,y]=d;return[p-m+1,T-v+1,y-C+1]}function a(d){const[m,p,v]=i(d);return m*p*v}function s(d,m,p,v,T){const[C,y,x,w,E,R]=p,[D,S]=m,O=D*S;let V=T;for(let L=E;L<=R;L++){const b=L*O;for(let U=x;U<=w;U++){const I=b+U*D;for(let P=I+C,k=I+y;P<=k;P++,V++)v[V]=d[P]}}}function o(d,m){const v=(arguments.length>2&&arguments[2]!==void 0?arguments[2]:null)||d.constructor,T=m.reduce((w,E)=>w+a(E),0),C=new v(T),y=[e.width,e.height,e.depth];let x=0;return m.forEach(w=>{s(d,y,w,C,x),x+=a(w)}),C}t.updateArrayDataTypeForGL=function(d,m){let p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,v=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];const T=[];let C=e.width*e.height*e.components;p&&(C*=e.depth);const y=!!v.length;if(d!==re.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let w=0;wC?m[w].subarray(0,C):m[w];T.push(new Float32Array(E))}else T.push(null);if(d!==re.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let w=0;wC?m[w].subarray(0,C):m[w];T.push(new Uint8Array(E))}else T.push(null);let x=!1;if(e._openGLRenderWindow.getWebgl2())x=e.openGLDataType===e.context.HALF_FLOAT;else{const w=e.context.getExtension("OES_texture_half_float");x=w&&e.openGLDataType===w.HALF_FLOAT_OES}if(x)for(let w=0;w=v&&(I=v-1);const P=b-U,k=1-P;U=U*p*T,I=I*p*T;for(let F=0;F=p&&(G=p-1);const Q=_-B;B*=T,G*=T;for(let Te=0;Te5&&arguments[5]!==void 0?arguments[5]:!1;if(t.getOpenGLDataType(v,!0),t.getInternalFormat(v,p),t.getFormat(v,p),!e.internalFormat||!e.format||!e.openGLDataType)return bn("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=p,e.width=d,e.height=m,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const y=[T],x=t.updateArrayDataTypeForGL(v,y),w=c(x);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,C),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(v)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),w[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,w[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,w[0]),e.generateMipmap&&e.context.generateMipmap(e.target),C&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*p*e._openGLRenderWindow.getDefaultTextureByteSize(v,r(),t.useHalfFloat()),t.deactivate(),!0},t.createCubeFromRaw=(d,m,p,v,T)=>{if(t.getOpenGLDataType(v),t.getInternalFormat(v,p),t.getFormat(v,p),!e.internalFormat||!e.format||!e.openGLDataType)return bn("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=p,e.width=d,e.height=m,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),e.maxLevel=T.length/6-1,t.createTexture(),t.bind();const C=t.updateArrayDataTypeForGL(v,T),y=c(C),x=[];let w=e.width,E=e.height;for(let R=0;R=1&&O>=1;){let V=null;D<=e.maxLevel&&(V=x[6*D+R]),l(v)?V!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+R,D,0,0,S,O,e.format,e.openGLDataType,V):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+R,D,e.internalFormat,S,O,0,e.format,e.openGLDataType,V),D++,S/=2,O/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*p*e._openGLRenderWindow.getDefaultTextureByteSize(v,r(),t.useHalfFloat()),t.deactivate(),!0},t.createDepthFromRaw=(d,m,p,v)=>(t.getOpenGLDataType(p),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?p===re.FLOAT?e.internalFormat=e.context.DEPTH_COMPONENT32F:e.internalFormat=e.context.DEPTH_COMPONENT16:e.internalFormat=e.context.DEPTH_COMPONENT,!e.internalFormat||!e.format||!e.openGLDataType?(bn("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=d,e.height=m,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),l(p)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),v!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,v)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,v),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(p,r(),t.useHalfFloat()),t.deactivate(),!0)),t.create2DFromImage=d=>{if(t.getOpenGLDataType(re.UNSIGNED_CHAR),t.getInternalFormat(re.UNSIGNED_CHAR,4),t.getFormat(re.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return bn("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=4,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1);const m=!e._openGLRenderWindow.getWebgl2()&&(!Tr(d.width)||!Tr(d.height)),p=document.createElement("canvas");p.width=m?Jt(d.width):d.width,p.height=m?Jt(d.height):d.height,e.width=p.width,e.height=p.height;const v=p.getContext("2d");v.translate(0,p.height),v.scale(1,-1),v.drawImage(d,0,0,d.width,d.height,0,0,p.width,p.height);const T=p;return l(re.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),T!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,T)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,T),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(re.UNSIGNED_CHAR,r(),t.useHalfFloat()),t.deactivate(),!0};function u(d,m,p){const v=new Array(p),T=new Array(p);for(let C=0;C2048||T<-2048||T>2048)return!1}return!0}function g(d,m,p,v){t.getOpenGLDataType(d);const T=f(m,p)||v;let C=!1;if(e._openGLRenderWindow.getWebgl2())C=e.openGLDataType===e.context.FLOAT&&e.context.getExtension("OES_texture_float_linear")===null&&T||e.openGLDataType===e.context.HALF_FLOAT;else{const y=e.context.getExtension("OES_texture_half_float");C=y&&e.openGLDataType===y.HALF_FLOAT_OES}e.canUseHalfFloat=C&&T}function h(d,m){const p=d.getNumberOfComponents(),v=d.getDataType(),T=d.getData(),C=new Array(p),y=new Array(p);for(let w=0;w5&&arguments[5]!==void 0?arguments[5]:!1,y=arguments.length>6&&arguments[6]!==void 0?arguments[6]:void 0;return t.create2DFilterableFromDataArray(d,m,ie.newInstance({numberOfComponents:p,dataType:v,values:T,ranges:y}),C)},t.create2DFilterableFromDataArray=function(d,m,p){let v=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:T,dataType:C,data:y}=h(p,v);t.create2DFromRaw(d,m,T,C,y)},t.updateVolumeInfoForGL=(d,m)=>{var T,C;let p=!1;const v=t.useHalfFloat();(!((T=e.volumeInfo)!=null&&T.scale)||!((C=e.volumeInfo)!=null&&C.offset))&&(e.volumeInfo={scale:new Array(m),offset:new Array(m)});for(let y=0;y6&&arguments[6]!==void 0?arguments[6]:[],x=T,w=C;if(!t.updateVolumeInfoForGL(x,v)&&w){const L=d*m*p,b=structuredClone(e.volumeInfo),U=new Float32Array(L*v);e.volumeInfo.offset=b.offset,e.volumeInfo.scale=b.scale;let I=0;const P=b.scale.map(k=>1/k);for(let k=0;k0,R=!E||!zs(e._prevTexParams,n()),D=[w],O=t.updateArrayDataTypeForGL(x,D,!0,R?[]:y),V=c(O);if(e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),R)l(x)?(e.context.texStorage3D(e.target,1,e.internalFormat,e.width,e.height,e.depth),V[0]!=null&&e.context.texSubImage3D(e.target,0,0,0,0,e.width,e.height,e.depth,e.format,e.openGLDataType,V[0])):e.context.texImage3D(e.target,0,e.internalFormat,e.width,e.height,e.depth,0,e.format,e.openGLDataType,V[0]),e._prevTexParams=n();else if(E){const L=V[0];let b=0;for(let U=0;U6&&arguments[6]!==void 0?arguments[6]:!1,x=arguments.length>7&&arguments[7]!==void 0?arguments[7]:void 0,w=arguments.length>8&&arguments[8]!==void 0?arguments[8]:[];return t.create3DFilterableFromDataArray(d,m,p,ie.newInstance({numberOfComponents:v,dataType:T,values:C,ranges:x}),y,w)},t.create3DFilterableFromDataArray=function(d,m,p,v){let T=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,C=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[];const{numComps:y,dataType:x,data:w,scaleOffsets:E}=h(v,T),R=[],D=[];for(let ge=0;ge{ge[we]=ct},L=re.UNSIGNED_CHAR;if(x===re.UNSIGNED_CHAR)for(let ge=0;ge{ge[we]=(ct-ve)/Le}):(L=re.UNSIGNED_CHAR,V=(ge,we,ct,ve,Le)=>{ge[we]=255*(ct-ve)/Le});if(t.getOpenGLDataType(L),t.getInternalFormat(L,y),t.getFormat(L,y),!e.internalFormat||!e.format||!e.openGLDataType)return bn("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=y,e.depth=1,e.numberOfDimensions=2;let b=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);b>4096&&(L===re.FLOAT||y>=3)&&(b=4096);let U=1,I=1;S>b*b&&(U=Math.ceil(Math.sqrt(S/(b*b))),I=U);let P=Math.sqrt(S)/U;P=Jt(P);const k=Math.floor(P*U/d),F=Math.ceil(p/k),N=Jt(m*F/I);e.width=P,e.height=N,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.volumeInfo.xreps=k,e.volumeInfo.yreps=F,e.volumeInfo.xstride=U,e.volumeInfo.ystride=I,e.volumeInfo.offset=O.offset,e.volumeInfo.scale=O.scale;let _;const B=P*N*y;L===re.FLOAT?_=new Float32Array(B):_=new Uint8Array(B);let G=0;const Q=Math.floor(d/U),Te=Math.floor(m/I);for(let ge=0;ge{e._openGLRenderWindow!==d&&(t.releaseGraphicsResources(),e._openGLRenderWindow=d,e.context=null,d&&(e.context=e._openGLRenderWindow.getContext()))},t.getMaximumTextureSize=d=>d&&d.isCurrent()?d.getIntegerv(d.MAX_TEXTURE_SIZE):-1,t.enableUseHalfFloat=d=>{e.enableUseHalfFloat=d}}const A3={_openGLRenderWindow:null,_forceInternalFormat:!1,_prevTexParams:null,context:null,handle:0,sendParametersTime:null,textureBuildTime:null,numberOfDimensions:0,target:0,format:0,openGLDataType:0,components:0,width:0,height:0,depth:0,autoParameters:!0,wrapS:Pt.CLAMP_TO_EDGE,wrapT:Pt.CLAMP_TO_EDGE,wrapR:Pt.CLAMP_TO_EDGE,minificationFilter:ke.NEAREST,magnificationFilter:ke.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0,enableUseHalfFloat:!0,canUseHalfFloat:!1};function sl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,A3,n),He.extend(t,e,n),e.sendParametersTime={},Ve(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},Ve(e.textureBuildTime,{mtime:0}),Xr(t,e,["format","openGLDataType"]),Xe(t,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),Tt(t,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),ya(t,e,["openGLRenderWindow"]),B3(t,e)}const ol=Ue(sl,"vtkOpenGLTexture");var We={newInstance:ol,extend:sl,...D1};Nt("vtkTexture",ol);function W3(t,e){e.classHierarchy.push("vtkFramebuffer"),t.getBothMode=()=>e.context.FRAMEBUFFER,t.saveCurrentBindingsAndBuffers=n=>{const r=typeof n<"u"?n:t.getBothMode();t.saveCurrentBindings(r),t.saveCurrentBuffers(r)},t.saveCurrentBindings=n=>{if(!e.context){J("you must set the OpenGLRenderWindow before calling saveCurrentBindings");return}const r=e.context;e.previousDrawBinding=r.getParameter(e.context.FRAMEBUFFER_BINDING),e.previousActiveFramebuffer=e._openGLRenderWindow.getActiveFramebuffer()},t.saveCurrentBuffers=n=>{},t.restorePreviousBindingsAndBuffers=n=>{const r=typeof n<"u"?n:t.getBothMode();t.restorePreviousBindings(r),t.restorePreviousBuffers(r)},t.restorePreviousBindings=n=>{if(!e.context){J("you must set the OpenGLRenderWindow before calling restorePreviousBindings");return}const r=e.context;r.bindFramebuffer(r.FRAMEBUFFER,e.previousDrawBinding),e._openGLRenderWindow.setActiveFramebuffer(e.previousActiveFramebuffer)},t.restorePreviousBuffers=n=>{},t.bind=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;r===null&&(r=e.context.FRAMEBUFFER),e.context.bindFramebuffer(r,e.glFramebuffer);for(let i=0;i{if(!e.context){J("you must set the OpenGLRenderWindow before calling create");return}e.glFramebuffer=e.context.createFramebuffer(),e.glFramebuffer.width=n,e.glFramebuffer.height=r},t.setColorBuffer=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const i=e.context;if(!i){J("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let a=i.COLOR_ATTACHMENT0;if(r>0)if(e._openGLRenderWindow.getWebgl2())a+=r;else{J("Using multiple framebuffer attachments requires WebGL 2");return}e.colorBuffers[r]=n,i.framebufferTexture2D(i.FRAMEBUFFER,a,i.TEXTURE_2D,n.getHandle(),0)},t.removeColorBuffer=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const r=e.context;if(!r){J("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let i=r.COLOR_ATTACHMENT0;if(n>0)if(e._openGLRenderWindow.getWebgl2())i+=n;else{J("Using multiple framebuffer attachments requires WebGL 2");return}r.framebufferTexture2D(r.FRAMEBUFFER,i,r.TEXTURE_2D,null,0),e.colorBuffers=e.colorBuffers.splice(n,1)},t.setDepthBuffer=n=>{if(!e.context){J("you must set the OpenGLRenderWindow before calling setDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const r=e.context;r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,n.getHandle(),0)}else J("Attaching depth buffer textures to fbo requires WebGL 2")},t.removeDepthBuffer=()=>{if(!e.context){J("you must set the OpenGLRenderWindow before calling removeDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const n=e.context;n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,null,0)}else J("Attaching depth buffer textures to framebuffers requires WebGL 2")},t.getGLFramebuffer=()=>e.glFramebuffer,t.setOpenGLRenderWindow=n=>{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))},t.releaseGraphicsResources=()=>{e.glFramebuffer&&e.context.deleteFramebuffer(e.glFramebuffer)},t.getSize=()=>e.glFramebuffer==null?null:[e.glFramebuffer.width,e.glFramebuffer.height],t.populateFramebuffer=()=>{if(!e.context){J("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}t.bind();const n=e.context,r=We.newInstance();r.setOpenGLRenderWindow(e._openGLRenderWindow),r.setMinificationFilter(H.LINEAR),r.setMagnificationFilter(H.LINEAR),r.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,me.UNSIGNED_CHAR,null),t.setColorBuffer(r),e.depthTexture=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,e.depthTexture),n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_COMPONENT16,e.glFramebuffer.width,e.glFramebuffer.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,e.depthTexture)},t.getColorTexture=()=>e.colorBuffers[0]}const z3={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function cl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,z3,n),Ve(t,e),e.colorBuffers&&J("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],Zr(t,e,["colorBuffers"]),W3(t,e)}const $3=Ue(cl,"vtkFramebuffer");var j3={newInstance:$3,extend:cl},he=1e-6,Ie=typeof Float32Array<"u"?Float32Array:Array,H3=Math.PI/180;function K3(t){return t*H3}function Mo(t,e){return Math.abs(t-e)<=he*Math.max(1,Math.abs(t),Math.abs(e))}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function ll(){var t=new Ie(9);return Ie!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function ul(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function ci(t,e,n,r,i,a,s,o,c){var l=new Ie(9);return l[0]=t,l[1]=e,l[2]=n,l[3]=r,l[4]=i,l[5]=a,l[6]=s,l[7]=o,l[8]=c,l}function q3(t,e,n,r,i,a,s,o,c,l){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=s,t[6]=o,t[7]=c,t[8]=l,t}function wa(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function Y3(t,e){if(t===e){var n=e[1],r=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=n,t[5]=e[7],t[6]=r,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function l0(t,e){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],u=e[8],f=u*s-o*l,g=-u*a+o*c,h=l*a-s*c,d=n*f+r*g+i*h;return d?(d=1/d,t[0]=f*d,t[1]=(-u*r+i*l)*d,t[2]=(o*r-i*s)*d,t[3]=g*d,t[4]=(u*n-i*c)*d,t[5]=(-o*n+i*a)*d,t[6]=h*d,t[7]=(-l*n+r*c)*d,t[8]=(s*n-r*a)*d,t):null}function Fn(t){var e=t[0],n=t[1],r=t[2],i=t[3],a=t[4],s=t[5],o=t[6],c=t[7],l=t[8];return e*(l*a-s*c)+n*(-l*i+s*o)+r*(c*i-a*o)}function Eo(t,e,n){var r=e[0],i=e[1],a=e[2],s=e[3],o=e[4],c=e[5],l=e[6],u=e[7],f=e[8],g=n[0],h=n[1],d=n[2],m=n[3],p=n[4],v=n[5],T=n[6],C=n[7],y=n[8];return t[0]=g*r+h*s+d*l,t[1]=g*i+h*o+d*u,t[2]=g*a+h*c+d*f,t[3]=m*r+p*s+v*l,t[4]=m*i+p*o+v*u,t[5]=m*a+p*c+v*f,t[6]=T*r+C*s+y*l,t[7]=T*i+C*o+y*u,t[8]=T*a+C*c+y*f,t}function Wt(){var t=new Ie(16);return Ie!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function X3(t){var e=new Ie(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Fe(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function fl(t,e,n,r,i,a,s,o,c,l,u,f,g,h,d,m){var p=new Ie(16);return p[0]=t,p[1]=e,p[2]=n,p[3]=r,p[4]=i,p[5]=a,p[6]=s,p[7]=o,p[8]=c,p[9]=l,p[10]=u,p[11]=f,p[12]=g,p[13]=h,p[14]=d,p[15]=m,p}function Z3(t,e,n,r,i,a,s,o,c,l,u,f,g,h,d,m,p){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=s,t[6]=o,t[7]=c,t[8]=l,t[9]=u,t[10]=f,t[11]=g,t[12]=h,t[13]=d,t[14]=m,t[15]=p,t}function q(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function fe(t,e){if(t===e){var n=e[1],r=e[2],i=e[3],a=e[6],s=e[7],o=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[11]=e[14],t[12]=i,t[13]=s,t[14]=o}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Be(t,e){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],u=e[8],f=e[9],g=e[10],h=e[11],d=e[12],m=e[13],p=e[14],v=e[15],T=n*o-r*s,C=n*c-i*s,y=n*l-a*s,x=r*c-i*o,w=r*l-a*o,E=i*l-a*c,R=u*m-f*d,D=u*p-g*d,S=u*v-h*d,O=f*p-g*m,V=f*v-h*m,L=g*v-h*p,b=T*L-C*V+y*O+x*S-w*D+E*R;return b?(b=1/b,t[0]=(o*L-c*V+l*O)*b,t[1]=(i*V-r*L-a*O)*b,t[2]=(m*E-p*w+v*x)*b,t[3]=(g*w-f*E-h*x)*b,t[4]=(c*S-s*L-l*D)*b,t[5]=(n*L-i*S+a*D)*b,t[6]=(p*y-d*E-v*C)*b,t[7]=(u*E-g*y+h*C)*b,t[8]=(s*V-o*S+l*R)*b,t[9]=(r*S-n*V-a*R)*b,t[10]=(d*w-m*y+v*T)*b,t[11]=(f*y-u*w-h*T)*b,t[12]=(o*D-s*O-c*R)*b,t[13]=(n*O-r*D+i*R)*b,t[14]=(m*C-d*x-p*T)*b,t[15]=(u*x-f*C+g*T)*b,t):null}function J3(t,e){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],c=e[6],l=e[7],u=e[8],f=e[9],g=e[10],h=e[11],d=e[12],m=e[13],p=e[14],v=e[15];return t[0]=o*(g*v-h*p)-f*(c*v-l*p)+m*(c*h-l*g),t[1]=-(r*(g*v-h*p)-f*(i*v-a*p)+m*(i*h-a*g)),t[2]=r*(c*v-l*p)-o*(i*v-a*p)+m*(i*l-a*c),t[3]=-(r*(c*h-l*g)-o*(i*h-a*g)+f*(i*l-a*c)),t[4]=-(s*(g*v-h*p)-u*(c*v-l*p)+d*(c*h-l*g)),t[5]=n*(g*v-h*p)-u*(i*v-a*p)+d*(i*h-a*g),t[6]=-(n*(c*v-l*p)-s*(i*v-a*p)+d*(i*l-a*c)),t[7]=n*(c*h-l*g)-s*(i*h-a*g)+u*(i*l-a*c),t[8]=s*(f*v-h*m)-u*(o*v-l*m)+d*(o*h-l*f),t[9]=-(n*(f*v-h*m)-u*(r*v-a*m)+d*(r*h-a*f)),t[10]=n*(o*v-l*m)-s*(r*v-a*m)+d*(r*l-a*o),t[11]=-(n*(o*h-l*f)-s*(r*h-a*f)+u*(r*l-a*o)),t[12]=-(s*(f*p-g*m)-u*(o*p-c*m)+d*(o*g-c*f)),t[13]=n*(f*p-g*m)-u*(r*p-i*m)+d*(r*g-i*f),t[14]=-(n*(o*p-c*m)-s*(r*p-i*m)+d*(r*c-i*o)),t[15]=n*(o*g-c*f)-s*(r*g-i*f)+u*(r*c-i*o),t}function Q3(t){var e=t[0],n=t[1],r=t[2],i=t[3],a=t[4],s=t[5],o=t[6],c=t[7],l=t[8],u=t[9],f=t[10],g=t[11],h=t[12],d=t[13],m=t[14],p=t[15],v=e*s-n*a,T=e*o-r*a,C=e*c-i*a,y=n*o-r*s,x=n*c-i*s,w=r*c-i*o,E=l*d-u*h,R=l*m-f*h,D=l*p-g*h,S=u*m-f*d,O=u*p-g*d,V=f*p-g*m;return v*V-T*O+C*S+y*D-x*R+w*E}function ae(t,e,n){var r=e[0],i=e[1],a=e[2],s=e[3],o=e[4],c=e[5],l=e[6],u=e[7],f=e[8],g=e[9],h=e[10],d=e[11],m=e[12],p=e[13],v=e[14],T=e[15],C=n[0],y=n[1],x=n[2],w=n[3];return t[0]=C*r+y*o+x*f+w*m,t[1]=C*i+y*c+x*g+w*p,t[2]=C*a+y*l+x*h+w*v,t[3]=C*s+y*u+x*d+w*T,C=n[4],y=n[5],x=n[6],w=n[7],t[4]=C*r+y*o+x*f+w*m,t[5]=C*i+y*c+x*g+w*p,t[6]=C*a+y*l+x*h+w*v,t[7]=C*s+y*u+x*d+w*T,C=n[8],y=n[9],x=n[10],w=n[11],t[8]=C*r+y*o+x*f+w*m,t[9]=C*i+y*c+x*g+w*p,t[10]=C*a+y*l+x*h+w*v,t[11]=C*s+y*u+x*d+w*T,C=n[12],y=n[13],x=n[14],w=n[15],t[12]=C*r+y*o+x*f+w*m,t[13]=C*i+y*c+x*g+w*p,t[14]=C*a+y*l+x*h+w*v,t[15]=C*s+y*u+x*d+w*T,t}function Re(t,e,n){var r=n[0],i=n[1],a=n[2],s,o,c,l,u,f,g,h,d,m,p,v;return e===t?(t[12]=e[0]*r+e[4]*i+e[8]*a+e[12],t[13]=e[1]*r+e[5]*i+e[9]*a+e[13],t[14]=e[2]*r+e[6]*i+e[10]*a+e[14],t[15]=e[3]*r+e[7]*i+e[11]*a+e[15]):(s=e[0],o=e[1],c=e[2],l=e[3],u=e[4],f=e[5],g=e[6],h=e[7],d=e[8],m=e[9],p=e[10],v=e[11],t[0]=s,t[1]=o,t[2]=c,t[3]=l,t[4]=u,t[5]=f,t[6]=g,t[7]=h,t[8]=d,t[9]=m,t[10]=p,t[11]=v,t[12]=s*r+u*i+d*a+e[12],t[13]=o*r+f*i+m*a+e[13],t[14]=c*r+g*i+p*a+e[14],t[15]=l*r+h*i+v*a+e[15]),t}function Vt(t,e,n){var r=n[0],i=n[1],a=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function lt(t,e,n,r){var i=r[0],a=r[1],s=r[2],o=Math.hypot(i,a,s),c,l,u,f,g,h,d,m,p,v,T,C,y,x,w,E,R,D,S,O,V,L,b,U;return o0?(n[0]=(o*s+u*r+c*a-l*i)*2/f,n[1]=(c*s+u*i+l*r-o*a)*2/f,n[2]=(l*s+u*a+o*i-c*r)*2/f):(n[0]=(o*s+u*r+c*a-l*i)*2,n[1]=(c*s+u*i+l*r-o*a)*2,n[2]=(l*s+u*a+o*i-c*r)*2),gl(t,e,n),t}function ih(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function hl(t,e){var n=e[0],r=e[1],i=e[2],a=e[4],s=e[5],o=e[6],c=e[8],l=e[9],u=e[10];return t[0]=Math.hypot(n,r,i),t[1]=Math.hypot(a,s,o),t[2]=Math.hypot(c,l,u),t}function xs(t,e){var n=new Ie(3);hl(n,e);var r=1/n[0],i=1/n[1],a=1/n[2],s=e[0]*r,o=e[1]*i,c=e[2]*a,l=e[4]*r,u=e[5]*i,f=e[6]*a,g=e[8]*r,h=e[9]*i,d=e[10]*a,m=s+u+d,p=0;return m>0?(p=Math.sqrt(m+1)*2,t[3]=.25*p,t[0]=(f-h)/p,t[1]=(g-c)/p,t[2]=(o-l)/p):s>u&&s>d?(p=Math.sqrt(1+s-u-d)*2,t[3]=(f-h)/p,t[0]=.25*p,t[1]=(o+l)/p,t[2]=(g+c)/p):u>d?(p=Math.sqrt(1+u-s-d)*2,t[3]=(g-c)/p,t[0]=(o+l)/p,t[1]=.25*p,t[2]=(f+h)/p):(p=Math.sqrt(1+d-s-u)*2,t[3]=(o-l)/p,t[0]=(g+c)/p,t[1]=(f+h)/p,t[2]=.25*p),t}function dl(t,e,n,r){var i=e[0],a=e[1],s=e[2],o=e[3],c=i+i,l=a+a,u=s+s,f=i*c,g=i*l,h=i*u,d=a*l,m=a*u,p=s*u,v=o*c,T=o*l,C=o*u,y=r[0],x=r[1],w=r[2];return t[0]=(1-(d+p))*y,t[1]=(g+C)*y,t[2]=(h-T)*y,t[3]=0,t[4]=(g-C)*x,t[5]=(1-(f+p))*x,t[6]=(m+v)*x,t[7]=0,t[8]=(h+T)*w,t[9]=(m-v)*w,t[10]=(1-(f+d))*w,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function ah(t,e,n,r,i){var a=e[0],s=e[1],o=e[2],c=e[3],l=a+a,u=s+s,f=o+o,g=a*l,h=a*u,d=a*f,m=s*u,p=s*f,v=o*f,T=c*l,C=c*u,y=c*f,x=r[0],w=r[1],E=r[2],R=i[0],D=i[1],S=i[2],O=(1-(m+v))*x,V=(h+y)*x,L=(d-C)*x,b=(h-y)*w,U=(1-(g+v))*w,I=(p+T)*w,P=(d+C)*E,k=(p-T)*E,F=(1-(g+m))*E;return t[0]=O,t[1]=V,t[2]=L,t[3]=0,t[4]=b,t[5]=U,t[6]=I,t[7]=0,t[8]=P,t[9]=k,t[10]=F,t[11]=0,t[12]=n[0]+R-(O*R+b*D+P*S),t[13]=n[1]+D-(V*R+U*D+k*S),t[14]=n[2]+S-(L*R+I*D+F*S),t[15]=1,t}function qi(t,e){var n=e[0],r=e[1],i=e[2],a=e[3],s=n+n,o=r+r,c=i+i,l=n*s,u=r*s,f=r*o,g=i*s,h=i*o,d=i*c,m=a*s,p=a*o,v=a*c;return t[0]=1-f-d,t[1]=u+v,t[2]=g-p,t[3]=0,t[4]=u-v,t[5]=1-l-d,t[6]=h+m,t[7]=0,t[8]=g+p,t[9]=h-m,t[10]=1-l-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function sh(t,e,n,r,i,a,s){var o=1/(n-e),c=1/(i-r),l=1/(a-s);return t[0]=a*2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a*2*c,t[6]=0,t[7]=0,t[8]=(n+e)*o,t[9]=(i+r)*c,t[10]=(s+a)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*a*2*l,t[15]=0,t}function pl(t,e,n,r,i){var a=1/Math.tan(e/2),s;return t[0]=a/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0?(s=1/(r-i),t[10]=(i+r)*s,t[14]=2*i*r*s):(t[10]=-1,t[14]=-2*r),t}var oh=pl;function ch(t,e,n,r,i){var a=1/Math.tan(e/2),s;return t[0]=a/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0?(s=1/(r-i),t[10]=i*s,t[14]=i*r*s):(t[10]=-1,t[14]=-r),t}function lh(t,e,n,r){var i=Math.tan(e.upDegrees*Math.PI/180),a=Math.tan(e.downDegrees*Math.PI/180),s=Math.tan(e.leftDegrees*Math.PI/180),o=Math.tan(e.rightDegrees*Math.PI/180),c=2/(s+o),l=2/(i+a);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=-((s-o)*c*.5),t[9]=(i-a)*l*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t}function ml(t,e,n,r,i,a,s){var o=1/(e-n),c=1/(r-i),l=1/(a-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+n)*o,t[13]=(i+r)*c,t[14]=(s+a)*l,t[15]=1,t}var p0=ml;function uh(t,e,n,r,i,a,s){var o=1/(e-n),c=1/(r-i),l=1/(a-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=l,t[11]=0,t[12]=(e+n)*o,t[13]=(i+r)*c,t[14]=a*l,t[15]=1,t}function vl(t,e,n,r){var i,a,s,o,c,l,u,f,g,h,d=e[0],m=e[1],p=e[2],v=r[0],T=r[1],C=r[2],y=n[0],x=n[1],w=n[2];return Math.abs(d-y)0&&(h=1/Math.sqrt(h),u*=h,f*=h,g*=h);var d=c*g-l*f,m=l*u-o*g,p=o*f-c*u;return h=d*d+m*m+p*p,h>0&&(h=1/Math.sqrt(h),d*=h,m*=h,p*=h),t[0]=d,t[1]=m,t[2]=p,t[3]=0,t[4]=f*p-g*m,t[5]=g*d-u*p,t[6]=u*m-f*d,t[7]=0,t[8]=u,t[9]=f,t[10]=g,t[11]=0,t[12]=i,t[13]=a,t[14]=s,t[15]=1,t}function gh(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function hh(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function dh(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}function yl(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t[9]=e[9]-n[9],t[10]=e[10]-n[10],t[11]=e[11]-n[11],t[12]=e[12]-n[12],t[13]=e[13]-n[13],t[14]=e[14]-n[14],t[15]=e[15]-n[15],t}function ph(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12]*n,t[13]=e[13]*n,t[14]=e[14]*n,t[15]=e[15]*n,t}function mh(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t[9]=e[9]+n[9]*r,t[10]=e[10]+n[10]*r,t[11]=e[11]+n[11]*r,t[12]=e[12]+n[12]*r,t[13]=e[13]+n[13]*r,t[14]=e[14]+n[14]*r,t[15]=e[15]+n[15]*r,t}function vh(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function yh(t,e){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],c=t[6],l=t[7],u=t[8],f=t[9],g=t[10],h=t[11],d=t[12],m=t[13],p=t[14],v=t[15],T=e[0],C=e[1],y=e[2],x=e[3],w=e[4],E=e[5],R=e[6],D=e[7],S=e[8],O=e[9],V=e[10],L=e[11],b=e[12],U=e[13],I=e[14],P=e[15];return Math.abs(n-T)<=he*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(r-C)<=he*Math.max(1,Math.abs(r),Math.abs(C))&&Math.abs(i-y)<=he*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(a-x)<=he*Math.max(1,Math.abs(a),Math.abs(x))&&Math.abs(s-w)<=he*Math.max(1,Math.abs(s),Math.abs(w))&&Math.abs(o-E)<=he*Math.max(1,Math.abs(o),Math.abs(E))&&Math.abs(c-R)<=he*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(l-D)<=he*Math.max(1,Math.abs(l),Math.abs(D))&&Math.abs(u-S)<=he*Math.max(1,Math.abs(u),Math.abs(S))&&Math.abs(f-O)<=he*Math.max(1,Math.abs(f),Math.abs(O))&&Math.abs(g-V)<=he*Math.max(1,Math.abs(g),Math.abs(V))&&Math.abs(h-L)<=he*Math.max(1,Math.abs(h),Math.abs(L))&&Math.abs(d-b)<=he*Math.max(1,Math.abs(d),Math.abs(b))&&Math.abs(m-U)<=he*Math.max(1,Math.abs(m),Math.abs(U))&&Math.abs(p-I)<=he*Math.max(1,Math.abs(p),Math.abs(I))&&Math.abs(v-P)<=he*Math.max(1,Math.abs(v),Math.abs(P))}var Yi=ae,Th=yl,Ro=Object.freeze({__proto__:null,add:dh,adjoint:J3,clone:X3,copy:Fe,create:Wt,determinant:Q3,equals:yh,exactEquals:vh,frob:hh,fromQuat:qi,fromQuat2:rh,fromRotation:d0,fromRotationTranslation:gl,fromRotationTranslationScale:dl,fromRotationTranslationScaleOrigin:ah,fromScaling:h0,fromTranslation:ni,fromValues:fl,fromXRotation:eh,fromYRotation:th,fromZRotation:nh,frustum:sh,getRotation:xs,getScaling:hl,getTranslation:ih,identity:q,invert:Be,lookAt:vl,mul:Yi,multiply:ae,multiplyScalar:ph,multiplyScalarAndAdd:mh,ortho:p0,orthoNO:ml,orthoZO:uh,perspective:oh,perspectiveFromFieldOfView:lh,perspectiveNO:pl,perspectiveZO:ch,rotate:lt,rotateX:u0,rotateY:f0,rotateZ:g0,scale:Vt,set:Z3,str:gh,sub:Th,subtract:yl,targetTo:fh,translate:Re,transpose:fe});function z(){var t=new Ie(3);return Ie!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Ch(t){var e=new Ie(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function rn(t){var e=t[0],n=t[1],r=t[2];return Math.hypot(e,n,r)}function Me(t,e,n){var r=new Ie(3);return r[0]=t,r[1]=e,r[2]=n,r}function xh(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function ce(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function zt(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function ze(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function wh(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}function Sh(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}function vt(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function qe(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t}function Tl(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.hypot(n,r,i)}function Mh(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function an(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function Cl(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function Pe(t,e){var n=e[0],r=e[1],i=e[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t}function le(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ye(t,e,n){var r=e[0],i=e[1],a=e[2],s=n[0],o=n[1],c=n[2];return t[0]=i*c-a*o,t[1]=a*s-r*c,t[2]=r*o-i*s,t}function ue(t,e,n){var r=e[0],i=e[1],a=e[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,t[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,t[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,t[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,t}function Vi(t,e,n){var r=e[0],i=e[1],a=e[2];return t[0]=r*n[0]+i*n[3]+a*n[6],t[1]=r*n[1]+i*n[4]+a*n[7],t[2]=r*n[2]+i*n[5]+a*n[8],t}function xl(t,e){var n=t[0],r=t[1],i=t[2],a=e[0],s=e[1],o=e[2],c=Math.sqrt(n*n+r*r+i*i),l=Math.sqrt(a*a+s*s+o*o),u=c*l,f=u&&le(t,e)/u;return Math.acos(Math.min(Math.max(f,-1),1))}function Eh(t){return t[0]=0,t[1]=0,t[2]=0,t}function Oo(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function Do(t,e){var n=t[0],r=t[1],i=t[2],a=e[0],s=e[1],o=e[2];return Math.abs(n-a)<=he*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=he*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=he*Math.max(1,Math.abs(i),Math.abs(o))}var De=ze,Rh=wh,Vo=Mh,wl=rn;(function(){var t=z();return function(e,n,r,i,a,s){var o,c;for(n||(n=3),r||(r=0),i?c=Math.min(i*n+r,e.length):c=e.length,o=r;o0&&(s=1/Math.sqrt(s)),t[0]=n*s,t[1]=r*s,t[2]=i*s,t[3]=a*s,t}function Mn(t,e,n){var r=e[0],i=e[1],a=e[2],s=e[3];return t[0]=n[0]*r+n[4]*i+n[8]*a+n[12]*s,t[1]=n[1]*r+n[5]*i+n[9]*a+n[13]*s,t[2]=n[2]*r+n[6]*i+n[10]*a+n[14]*s,t[3]=n[3]*r+n[7]*i+n[11]*a+n[15]*s,t}(function(){var t=Oh();return function(e,n,r,i,a,s){var o,c;for(n||(n=4),r||(r=0),i?c=Math.min(i*n+r,e.length):c=e.length,o=r;ohe?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=1,t[1]=0,t[2]=0),n}function Lo(t,e,n){var r=e[0],i=e[1],a=e[2],s=e[3],o=n[0],c=n[1],l=n[2],u=n[3];return t[0]=r*u+s*o+i*l-a*c,t[1]=i*u+s*c+a*o-r*l,t[2]=a*u+s*l+r*c-i*o,t[3]=s*u-r*o-i*c-a*l,t}function Ii(t,e,n,r){var i=e[0],a=e[1],s=e[2],o=e[3],c=n[0],l=n[1],u=n[2],f=n[3],g,h,d,m,p;return h=i*c+a*l+s*u+o*f,h<0&&(h=-h,c=-c,l=-l,u=-u,f=-f),1-h>he?(g=Math.acos(h),d=Math.sin(g),m=Math.sin((1-r)*g)/d,p=Math.sin(r*g)/d):(m=1-r,p=r),t[0]=m*i+p*c,t[1]=m*a+p*l,t[2]=m*s+p*u,t[3]=m*o+p*f,t}function Lh(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Nh(t,e){var n=e[0]+e[4]+e[8],r;if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(e[5]-e[7])*r,t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else{var i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);var a=(i+1)%3,s=(i+2)%3;r=Math.sqrt(e[i*3+i]-e[a*3+a]-e[s*3+s]+1),t[i]=.5*r,r=.5/r,t[3]=(e[a*3+s]-e[s*3+a])*r,t[a]=(e[a*3+i]+e[i*3+a])*r,t[s]=(e[s*3+i]+e[i*3+s])*r}return t}var No=Dh,Sl=Vh;(function(){var t=z(),e=Me(1,0,0),n=Me(0,1,0);return function(r,i,a){var s=le(i,a);return s<-.999999?(ye(t,e,i),wl(t)<1e-6&&ye(t,n,i),Pe(t,t),m0(r,t,Math.PI),r):s>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(ye(t,i,a),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+s,Sl(r,r))}})();(function(){var t=In(),e=In();return function(n,r,i,a,s,o){return Ii(t,r,s,o),Ii(e,i,a,o),Ii(n,t,e,2*o*(1-o)),n}})();(function(){var t=ll();return function(e,n,r,i){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=i[0],t[4]=i[1],t[7]=i[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],Sl(e,Nh(e,t))}})();function Ml(){var t=new Ie(2);return Ie!=Float32Array&&(t[0]=0,t[1]=0),t}function bo(t,e){var n=new Ie(2);return n[0]=t,n[1]=e,n}function v0(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function Xi(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function Fo(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}var Zi=Xi;(function(){var t=Ml();return function(e,n,r,i,a,s){var o,c;for(n||(n=2),r||(r=0),i?c=Math.min(i*n+r,e.length):c=e.length,o=r;or,t.setType=o=>{r=o},t.getHandle=()=>i,t.isReady=()=>a===!1,t.generateBuffer=o=>{const c=n(o);return i===null&&(i=e.context.createBuffer(),r=o),n(r)===c},t.upload=(o,c)=>t.generateBuffer(c)?(e.context.bindBuffer(n(r),i),e.context.bufferData(n(r),o,e.context.STATIC_DRAW),e.allocatedGPUMemoryInBytes=o.length*o.BYTES_PER_ELEMENT,a=!1,!0):(s="Trying to upload array buffer to incompatible buffer.",!1),t.bind=()=>i?(e.context.bindBuffer(n(r),i),!0):!1,t.release=()=>i?(e.context.bindBuffer(n(r),null),!0):!1,t.releaseGraphicsResources=()=>{i!==null&&(e.context.bindBuffer(n(r),null),e.context.deleteBuffer(i),i=null,e.allocatedGPUMemoryInBytes=0)},t.setOpenGLRenderWindow=o=>{e._openGLRenderWindow!==o&&(t.releaseGraphicsResources(),e._openGLRenderWindow=o,e.context=null,o&&(e.context=e._openGLRenderWindow.getContext()))},t.getError=()=>s}const _h={objectType:Li.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function Rl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_h,n),M.obj(t,e),M.get(t,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),M.moveToProtected(t,e,["openGLRenderWindow"]),Fh(t,e)}const Uh=M.newInstance(Rl);var Ol={newInstance:Uh,extend:Rl,...bh,...El};const Dl={FLAT:0,GOURAUD:1,PHONG:2},Rt={POINTS:0,WIREFRAME:1,SURFACE:2},kh=Dl;var Vl={Shading:Dl,Representation:Rt,Interpolation:kh};const{vtkErrorMacro:_o}=M;function Ph(t,e){const n=new Float64Array(3);Cl(n,e);const r=new Float64Array(16);return dl(r,In(),t,n),r}function Gh(t,e){return t===null||e===null?!1:!(Oo(t,[0,0,0])&&Oo(e,[1,1,1]))}function Bh(t,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),t.setType(Or.ARRAY_BUFFER),t.createVBO=function(n,r,i,a){let s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;if(!n.getData()||!n.getData().length)return e.elementCount=0,0;e.blockSize=3,e.vertexOffset=0,e.normalOffset=0,e.tCoordOffset=0,e.tCoordComponents=0,e.colorComponents=0,e.colorOffset=0,e.customData=[];const o=a.points.getData();let c=null,l=null,u=null;const f=a.colors?a.colors.getNumberOfComponents():0,g=a.tcoords?a.tcoords.getNumberOfComponents():0;a.normals&&(e.normalOffset=4*e.blockSize,e.blockSize+=3,c=a.normals.getData()),a.customAttributes&&a.customAttributes.forEach(F=>{F&&(e.customData.push({data:F.getData(),offset:4*e.blockSize,components:F.getNumberOfComponents(),name:F.getName()}),e.blockSize+=F.getNumberOfComponents())}),a.tcoords&&(e.tCoordOffset=4*e.blockSize,e.tCoordComponents=g,e.blockSize+=g,l=a.tcoords.getData()),a.colors?(e.colorComponents=a.colors.getNumberOfComponents(),e.colorOffset=0,u=a.colors.getData(),e.colorBO||(e.colorBO=Ol.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let h=0,d=0,m=0,p=0,v=0,T=0,C;const y={anythingToPoints(F,N,_,B){for(let G=0;G2)for(let G=0;G2){for(let G=0;G1?(F-1)*2:0},polysToWireframe(F,N){return F>2?F*2:0},stripsToWireframe(F,N){return F>2?F*4-6:0},polysToSurface(F,N){return F>2?(F-2)*3:0},stripsToSurface(F,N,_){return F>2?(F-2)*3:0}};let w=null,E=null;i===Rt.POINTS||r==="verts"?(w=y.anythingToPoints,E=x.anythingToPoints):i===Rt.WIREFRAME||r==="lines"?(w=y[`${r}ToWireframe`],E=x[`${r}ToWireframe`]):(w=y[`${r}ToSurface`],E=x[`${r}ToSurface`]);const R=n.getData(),D=R.length;let S=0;for(let F=0;F0&&(Math.abs(I)/U>1e6||Math.abs(Math.log10(U))>3||U===0&&I>1e6)){const F=new Float64Array(3),N=new Float64Array(3);for(let _=0;_<3;++_){const B=a.points.getRange(_),G=B[1]-B[0];F[_]=.5*(B[1]+B[0]),N[_]=G>0?1/G:1}t.setCoordShiftAndScale(F,N)}else e.coordShiftAndScaleEnabled===!0&&t.setCoordShiftAndScale(null,null);if(s)if(!s.points&&!s.cells)s.points=new Int32Array(S),s.cells=new Int32Array(S);else{const F=new Int32Array(S+s.points.length);F.set(s.points),s.points=F;const N=new Int32Array(S+s.cells.length);N.set(s.cells),s.cells=N}let k=a.vertexOffset;C=function(N,_){if(s&&(s.points[k]=N,s.cells[k]=T+a.cellOffset),++k,h=N*3,e.coordShiftAndScaleEnabled?(V[L++]=(o[h++]-e.coordShift[0])*e.coordScale[0],V[L++]=(o[h++]-e.coordShift[1])*e.coordScale[1],V[L++]=(o[h++]-e.coordShift[2])*e.coordScale[2]):(V[L++]=o[h++],V[L++]=o[h++],V[L++]=o[h++]),c!==null&&(a.haveCellNormals?d=(T+a.cellOffset)*3:d=N*3,V[L++]=c[d++],V[L++]=c[d++],V[L++]=c[d++]),e.customData.forEach(B=>{v=N*B.components;for(let G=0;G{if(n!==null&&(n.constructor!==Float64Array||n.length!==3)){_o("Wrong type for coordShift, expected vec3 or null");return}if(r!==null&&(r.constructor!==Float64Array||r.length!==3)){_o("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||n===null||!Do(n,e.coordShift))&&(e.coordShift=n),(e.coordScale===null||r===null||!Do(r,e.coordScale))&&(e.coordScale=r),e.coordShiftAndScaleEnabled=Gh(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=Ph(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const Ah={elementCount:0,stride:0,colorBOStride:0,vertexOffset:0,normalOffset:0,tCoordOffset:0,tCoordComponents:0,colorOffset:0,colorComponents:0,tcoordBO:null,customData:[],coordShift:null,coordScale:null,coordShiftAndScaleEnabled:!1,inverseShiftAndScaleMatrix:null};function Il(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ah,n),Ol.extend(t,e,n),M.setGet(t,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),M.get(t,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),Bh(t,e)}const Wh=M.newInstance(Il);var zh={newInstance:Wh,extend:Il};const{vtkErrorMacro:$h}=M;function jh(t,e){e.classHierarchy.push("vtkShader"),t.compile=()=>{let n=e.context.VERTEX_SHADER;if(!e.source||!e.source.length||e.shaderType==="Unknown")return!1;switch(e.handle!==0&&(e.context.deleteShader(e.handle),e.handle=0),e.shaderType){case"Fragment":n=e.context.FRAGMENT_SHADER;break;case"Vertex":default:n=e.context.VERTEX_SHADER;break}if(e.handle=e.context.createShader(n),e.context.shaderSource(e.handle,e.source),e.context.compileShader(e.handle),!e.context.getShaderParameter(e.handle,e.context.COMPILE_STATUS)){const i=e.context.getShaderInfoLog(e.handle);return $h(`Error compiling shader '${e.source}': ${i}`),e.context.deleteShader(e.handle),e.handle=0,!1}return!0},t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(e.context.deleteShader(e.handle),e.handle=0,e.dirty=!0)}}const Hh={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function Ll(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hh,n),M.obj(t,e),M.setGet(t,e,["shaderType","source","error","handle","context"]),jh(t,e)}const Kh=M.newInstance(Ll,"vtkShader");var ja={newInstance:Kh,extend:Ll};const{vtkErrorMacro:Ct}=M;function qh(t,e,n,r){const i=typeof n=="string"?n:n.join(` +`),a=r===!1?e:new RegExp(e,"g"),s=t.replace(a,i);return{replace:s!==i,result:s}}function Yh(t,e){e.classHierarchy.push("vtkShaderProgram"),t.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!t.attachShader(e.vertexShader)||!t.attachShader(e.fragmentShader)?(Ct(e.error),0):t.link()?(t.setCompiled(!0),1):(Ct(`Links failed: ${e.error}`),0):(Ct(e.fragmentShader.getSource().split(` +`).map((n,r)=>`${r}: ${n}`).join(` +`)),Ct(e.fragmentShader.getError()),0):(Ct(e.vertexShader.getSource().split(` +`).map((n,r)=>`${r}: ${n}`).join(` +`)),Ct(e.vertexShader.getError()),0),t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(t.release(),e.vertexShaderHandle!==0&&(e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=0),e.fragmentShaderHandle!==0&&(e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=0),e.context.deleteProgram(e.handle),e.handle=0,t.setCompiled(!1))},t.bind=()=>!e.linked&&!t.link()?!1:(e.context.useProgram(e.handle),t.setBound(!0),!0),t.isBound=()=>!!e.bound,t.release=()=>{e.context.useProgram(null),t.setBound(!1)},t.setContext=n=>{e.vertexShader.setContext(n),e.fragmentShader.setContext(n),e.geometryShader.setContext(n)},t.link=()=>{if(e.linked)return!0;if(e.handle===0)return e.error="Program has not been initialized, and/or does not have shaders.",!1;if(e.uniformLocs={},e.context.linkProgram(e.handle),!e.context.getProgramParameter(e.handle,e.context.LINK_STATUS)){const r=e.context.getProgramInfoLog(e.handle);return Ct(`Error linking shader ${r}`),e.handle=0,!1}return t.setLinked(!0),e.attributeLocs={},!0},t.setUniformMatrix=(n,r)=>{const i=t.findUniform(n);if(i===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;const a=new Float32Array(r);return e.context.uniformMatrix4fv(i,!1,a),!0},t.setUniformMatrix3x3=(n,r)=>{const i=t.findUniform(n);if(i===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;const a=new Float32Array(r);return e.context.uniformMatrix3fv(i,!1,a),!0},t.setUniformf=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1f(i,r),!0)},t.setUniformfv=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1fv(i,r),!0)},t.setUniformi=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1i(i,r),!0)},t.setUniformiv=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1iv(i,r),!0)},t.setUniform2f=(n,r,i)=>{const a=t.findUniform(n);if(a===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(i===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2f(a,r,i),!0},t.setUniform2fv=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform2fv(i,r),!0)},t.setUniform2i=(n,r,i)=>{const a=t.findUniform(n);if(a===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(i===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2i(a,r,i),!0},t.setUniform2iv=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform2iv(i,r),!0)},t.setUniform3f=(n,r,i,a)=>{const s=t.findUniform(n);if(s===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(a===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(s,r,i,a),!0},t.setUniform3fArray=(n,r)=>{const i=t.findUniform(n);if(i===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(!Array.isArray(r)||r.length!==3)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(i,r[0],r[1],r[2]),!0},t.setUniform3fv=(n,r)=>{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform3fv(i,r),!0)},t.setUniform3i=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var i=arguments.length,a=new Array(i>1?i-1:0),s=1;s{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform3iv(i,r),!0)},t.setUniform4f=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var i=arguments.length,a=new Array(i>1?i-1:0),s=1;s{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform4fv(i,r),!0)},t.setUniform4i=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var i=arguments.length,a=new Array(i>1?i-1:0),s=1;s{const i=t.findUniform(n);return i===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform4iv(i,r),!0)},t.findUniform=n=>{if(!n||!e.linked)return-1;let r=e.uniformLocs[n];return r!==void 0?r:(r=e.context.getUniformLocation(e.handle,n),r===null?(e.error=`Uniform ${n} not found in current shader program.`,e.uniformLocs[n]=-1,-1):(e.uniformLocs[n]=r,r))},t.isUniformUsed=n=>{if(!n)return!1;let r=e.uniformLocs[n];return r!==void 0?r!==null:e.linked?(r=e.context.getUniformLocation(e.handle,n),e.uniformLocs[n]=r,r!==null):(Ct("attempt to find uniform when the shader program is not linked"),!1)},t.isAttributeUsed=n=>{if(!n)return!1;if(n in e.attributeLocs)return!0;if(!e.linked)return Ct("attempt to find uniform when the shader program is not linked"),!1;const r=e.context.getAttribLocation(e.handle,n);return r===-1?!1:(e.attributeLocs[n]=r,!0)},t.attachShader=n=>{if(n.getHandle()===0)return e.error="Shader object was not initialized, cannot attach it.",!1;if(n.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;if(e.handle===0){const r=e.context.createProgram();if(r===0)return e.error="Could not create shader program.",!1;e.handle=r,e.linked=!1}return n.getShaderType()==="Vertex"&&(e.vertexShaderHandle!==0&&e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=n.getHandle()),n.getShaderType()==="Fragment"&&(e.fragmentShaderHandle!==0&&e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=n.getHandle()),e.context.attachShader(e.handle,n.getHandle()),t.setLinked(!1),!0},t.detachShader=n=>{if(n.getHandle()===0)return e.error="shader object was not initialized, cannot attach it.",!1;if(n.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;switch(e.handle===0&&(e.error="This shader program has not been initialized yet."),n.getShaderType()){case"Vertex":return e.vertexShaderHandle!==n.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,n.getHandle()),e.vertexShaderHandle=0,e.linked=!1,!0);case"Fragment":return e.fragmentShaderHandle!==n.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,n.getHandle()),e.fragmentShaderHandle=0,e.linked=!1,!0);default:return!1}},t.setContext=n=>{e.context=n,e.vertexShader.setContext(n),e.fragmentShader.setContext(n),e.geometryShader.setContext(n)},t.setLastCameraMTime=n=>{e.lastCameraMTime=n}}const Xh={vertexShaderHandle:0,fragmentShaderHandle:0,geometryShaderHandle:0,vertexShader:null,fragmentShader:null,geometryShader:null,linked:!1,bound:!1,compiled:!1,error:"",handle:0,numberOfOutputs:0,attributesLocs:null,uniformLocs:null,md5Hash:0,context:null,lastCameraMTime:null};function Nl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xh,n),e.attributesLocs={},e.uniformLocs={},e.vertexShader=ja.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=ja.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=ja.newInstance(),e.geometryShader.setShaderType("Geometry"),M.obj(t,e),M.get(t,e,["lastCameraMTime"]),M.setGet(t,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),Yh(t,e)}const Zh=M.newInstance(Nl,"vtkShaderProgram");var W={newInstance:Zh,extend:Nl,substitute:qh};function Jh(t,e){e.classHierarchy.push("vtkOpenGLVertexArrayObject"),t.exposedMethod=()=>{},t.initialize=()=>{e.instancingExtension=null,e._openGLRenderWindow.getWebgl2()||(e.instancingExtension=e.context.getExtension("ANGLE_instanced_arrays")),!e.forceEmulation&&e._openGLRenderWindow&&e._openGLRenderWindow.getWebgl2()?(e.extension=null,e.supported=!0,e.handleVAO=e.context.createVertexArray()):(e.extension=e.context.getExtension("OES_vertex_array_object"),!e.forceEmulation&&e.extension?(e.supported=!0,e.handleVAO=e.extension.createVertexArrayOES()):e.supported=!1)},t.isReady=()=>e.handleVAO!==0||e.supported===!1,t.bind=()=>{if(t.isReady()||t.initialize(),t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(e.handleVAO):e.context.bindVertexArray(e.handleVAO);else if(t.isReady()){const n=e.context;for(let r=0;r0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(s.index+c,1):n.vertexAttribDivisor(s.index+c,1))}}}},t.release=()=>{if(t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(null):e.context.bindVertexArray(null);else if(t.isReady()){const n=e.context;for(let r=0;r0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(s.index+c,0):n.vertexAttribDivisor(s.index+c,0)),n.disableVertexAttribArray(s.index+c)}}}},t.shaderProgramChanged=()=>{t.release(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.handleProgram=0},t.releaseGraphicsResources=()=>{t.shaderProgramChanged(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.supported=!0,e.handleProgram=0},t.addAttributeArray=(n,r,i,a,s,o,c,l)=>t.addAttributeArrayWithDivisor(n,r,i,a,s,o,c,l,0,!1),t.addAttributeArrayWithDivisor=(n,r,i,a,s,o,c,l,u,f)=>{if(!n||!n.isBound()||r.getHandle()===0||r.getType()!==Or.ARRAY_BUFFER||(e.handleProgram===0&&(e.handleProgram=n.getHandle()),t.isReady()||t.initialize(),!t.isReady()||e.handleProgram!==n.getHandle()))return!1;const g=e.context,h={};if(h.name=i,h.index=g.getAttribLocation(e.handleProgram,i),h.offset=a,h.stride=s,h.type=o,h.size=c,h.normalize=l,h.isMatrix=f,h.divisor=u,h.Index===-1)return!1;if(r.bind(),g.enableVertexAttribArray(h.index),g.vertexAttribPointer(h.index,h.size,h.type,h.normalize,h.stride,h.offset),u>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(h.index,1):g.vertexAttribDivisor(h.index,1)),h.buffer=r.getHandle(),!e.supported){let d=!1;for(let m=0;m{const f=t.addAttributeArrayWithDivisor(n,r,i,a,s,o,c,l,u,!0);if(!f)return f;const g=e.context,h=g.getAttribLocation(e.handleProgram,i);for(let d=1;d0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(h+d,1):g.vertexAttribDivisor(h+d,1));return!0},t.removeAttributeArray=n=>{if(!t.isReady()||e.handleProgram===0)return!1;if(!e.supported)for(let r=0;r{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))}}const Qh={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function bl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Qh,n),e.buffers=[],M.obj(t,e),M.get(t,e,["supported"]),M.setGet(t,e,["forceEmulation"]),Jh(t,e)}const e4=M.newInstance(bl,"vtkOpenGLVertexArrayObject");var Fl={newInstance:e4,extend:bl};const Xt={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function t4(t,e){e.classHierarchy.push("vtkOpenGLHelper"),t.setOpenGLRenderWindow=n=>{e.context=n.getContext(),e.program.setContext(e.context),e.VAO.setOpenGLRenderWindow(n),e.CABO.setOpenGLRenderWindow(n)},t.releaseGraphicsResources=n=>{e.VAO.releaseGraphicsResources(),e.CABO.releaseGraphicsResources(),e.CABO.setElementCount(0)},t.drawArrays=(n,r,i,a)=>{if(e.CABO.getElementCount()){const s=t.getOpenGLMode(i),o=t.haveWideLines(n,r),c=e.context,l=c.getParameter(c.DEPTH_WRITEMASK);e.pointPicking&&c.depthMask(!1),s===c.LINES&&o?(t.updateShaders(n,r,a),c.drawArraysInstanced(s,0,e.CABO.getElementCount(),2*Math.ceil(r.getProperty().getLineWidth()))):(c.lineWidth(r.getProperty().getLineWidth()),t.updateShaders(n,r,a),c.drawArrays(s,0,e.CABO.getElementCount()),c.lineWidth(1));const f=(s===c.POINTS?1:0)||(s===c.LINES?2:3);return e.pointPicking&&c.depthMask(l),e.CABO.getElementCount()/f}return 0},t.getOpenGLMode=n=>{if(e.pointPicking)return e.context.POINTS;const r=e.primitiveType;return n===Rt.POINTS||r===Xt.Points?e.context.POINTS:n===Rt.WIREFRAME||r===Xt.Lines||r===Xt.TrisEdges||r===Xt.TriStripsEdges?e.context.LINES:e.context.TRIANGLES},t.haveWideLines=(n,r)=>r.getProperty().getLineWidth()>1?!(e.CABO.getOpenGLRenderWindow()&&e.CABO.getOpenGLRenderWindow().getHardwareMaximumLineWidth()>=r.getProperty().getLineWidth()):!1,t.getNeedToRebuildShaders=(n,r,i)=>!!(i.getNeedToRebuildShaders(t,n,r)||t.getProgram()===0||t.getShaderSourceTime().getMTime(){if(t.getNeedToRebuildShaders(n,r,i)){const a={Vertex:null,Fragment:null,Geometry:null};i.buildShaders(a,n,r);const s=e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgramArray(a.Vertex,a.Fragment,a.Geometry);s!==t.getProgram()&&(t.setProgram(s),t.getVAO().releaseGraphicsResources()),t.getShaderSourceTime().modified()}else e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgram(t.getProgram());t.getVAO().bind(),i.setMapperShaderParameters(t,n,r),i.setPropertyShaderParameters(t,n,r),i.setCameraShaderParameters(t,n,r),i.setLightingShaderParameters(t,n,r),i.invokeShaderCallbacks(t,n,r)},t.setMapperShaderParameters=(n,r,i)=>{if(t.haveWideLines(n,r)){t.getProgram().setUniform2f("viewportSize",i.usize,i.vsize);const a=parseFloat(r.getProperty().getLineWidth()),s=a/2;t.getProgram().setUniformf("lineWidthStepSize",a/Math.ceil(a)),t.getProgram().setUniformf("halfLineWidth",s)}e.primitiveType===Xt.Points||r.getProperty().getRepresentation()===Rt.POINTS?t.getProgram().setUniformf("pointSize",r.getProperty().getPointSize()):e.pointPicking&&t.getProgram().setUniformf("pointSize",t.getPointPickingPrimitiveSize())},t.replaceShaderPositionVC=(n,r,i)=>{let a=n.Vertex;a=W.substitute(a,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,a=W.substitute(a,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," gl_PointSize = pointSize;"],!1).result,t.getOpenGLMode(i.getProperty().getRepresentation())===e.context.LINES&&t.haveWideLines(r,i)&&(a=W.substitute(a,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,a=W.substitute(a,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," if (halfLineWidth > 0.0)"," {"," float offset = float(gl_InstanceID / 2) * lineWidthStepSize - halfLineWidth;"," vec4 tmpPos = gl_Position;"," vec3 tmpPos2 = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * mod(float(gl_InstanceID), 2.0) * offset / viewportSize[0];"," tmpPos2.y = tmpPos2.y + 2.0 * mod(float(gl_InstanceID + 1), 2.0) * offset / viewportSize[1];"," gl_Position = vec4(tmpPos2.xyz * tmpPos.w, tmpPos.w);"," }"]).result),n.Vertex=a},t.getPointPickingPrimitiveSize=()=>e.primitiveType===Xt.Points?2:e.primitiveType===Xt.Lines?4:6,t.getAllocatedGPUMemoryInBytes=()=>t.getCABO().getAllocatedGPUMemoryInBytes()}const n4={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function _l(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,n4,n),M.obj(t,e),e.shaderSourceTime={},M.obj(e.shaderSourceTime),e.attributeUpdateTime={},M.obj(e.attributeUpdateTime),M.setGet(t,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=W.newInstance(),e.VAO=Fl.newInstance(),e.CABO=zh.newInstance(),t4(t,e)}const r4=M.newInstance(_l);var Sa={newInstance:r4,extend:_l,primTypes:Xt};const{Representation:xr,Interpolation:wr}=Vl;function Uo(t){return()=>M.vtkErrorMacro(`vtkProperty::${t} - NOT IMPLEMENTED`)}function i4(t,e){e.classHierarchy.push("vtkProperty"),t.setColor=(n,r,i)=>{Array.isArray(n)?(e.color[0]!==n[0]||e.color[1]!==n[1]||e.color[2]!==n[2])&&(e.color[0]=n[0],e.color[1]=n[1],e.color[2]=n[2],t.modified()):(e.color[0]!==n||e.color[1]!==r||e.color[2]!==i)&&(e.color[0]=n,e.color[1]=r,e.color[2]=i,t.modified()),t.setDiffuseColor(e.color),t.setAmbientColor(e.color),t.setSpecularColor(e.color)},t.computeCompositeColor=Uo("ComputeCompositeColor"),t.getColor=()=>{let n=0;e.ambient+e.diffuse+e.specular>0&&(n=1/(e.ambient+e.diffuse+e.specular));for(let r=0;r<3;r++)e.color[r]=n*(e.ambient*e.ambientColor[r]+e.diffuse*e.diffuseColor[r]+e.specular*e.specularColor[r]);return[].concat(e.color)},t.setSpecularPower=n=>{const r=1/Math.max(1,n);(e.roughness!==r||e.specularPower!==n)&&(e.specularPower=n,e.roughness=r,t.modified())},t.addShaderVariable=Uo("AddShaderVariable"),t.setInterpolationToFlat=()=>t.setInterpolation(wr.FLAT),t.setInterpolationToGouraud=()=>t.setInterpolation(wr.GOURAUD),t.setInterpolationToPhong=()=>t.setInterpolation(wr.PHONG),t.getInterpolationAsString=()=>M.enumToString(wr,e.interpolation),t.setRepresentationToWireframe=()=>t.setRepresentation(xr.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(xr.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(xr.POINTS),t.getRepresentationAsString=()=>M.enumToString(xr,e.representation)}const a4={color:[1,1,1],ambientColor:[1,1,1],diffuseColor:[1,1,1],specularColor:[1,1,1],edgeColor:[0,0,0],ambient:0,diffuse:1,metallic:0,roughness:.6,normalStrength:1,emission:1,baseIOR:1.45,specular:0,specularPower:1,opacity:1,interpolation:wr.GOURAUD,representation:xr.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function s4(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,a4,n),M.obj(t,e),M.setGet(t,e,["lighting","interpolation","ambient","diffuse","metallic","roughness","normalStrength","emission","baseIOR","specular","specularPower","opacity","edgeVisibility","lineWidth","pointSize","backfaceCulling","frontfaceCulling","representation","diffuseTexture","metallicTexture","roughnessTexture","normalTexture","ambientOcclusionTexture","emissionTexture"]),M.setGetArray(t,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),i4(t,e)}M.newInstance(s4,"vtkProperty");var o4={...Vl};const{vtkErrorMacro:ko,vtkWarningMacro:c4}=M;function l4(t,e){e.classHierarchy.push("vtkFieldData");const n=t.getState;e.arrays&&(e.arrays=e.arrays.map(r=>({data:pt(r.data)}))),t.initialize=()=>{t.initializeFields(),t.copyAllOn(),t.clearFieldFlags()},t.initializeFields=()=>{e.arrays=[],e.copyFieldFlags={},t.modified()},t.copyStructure=r=>{t.initializeFields(),e.copyFieldFlags=r.getCopyFieldFlags().map(i=>i),e.arrays=r.arrays().map(i=>({array:i}))},t.getNumberOfArrays=()=>e.arrays.length,t.getNumberOfActiveArrays=()=>e.arrays.length,t.addArray=r=>{const i=r.getName(),{array:a,index:s}=t.getArrayWithIndex(i);return a!=null?(e.arrays[s]={data:r},s):(e.arrays=[].concat(e.arrays,{data:r}),e.arrays.length-1)},t.removeAllArrays=()=>{e.arrays=[]},t.removeArray=r=>{const i=e.arrays.findIndex(a=>a.data.getName()===r);return t.removeArrayByIndex(i)},t.removeArrayByIndex=r=>r!==-1&&re.arrays.map(r=>r.data),t.getArray=r=>typeof r=="number"?t.getArrayByIndex(r):t.getArrayByName(r),t.getArrayByName=r=>e.arrays.reduce((i,a,s)=>a.data.getName()===r?a.data:i,null),t.getArrayWithIndex=r=>{const i=e.arrays.findIndex(a=>a.data.getName()===r);return{array:i!==-1?e.arrays[i].data:null,index:i}},t.getArrayByIndex=r=>r>=0&&rt.getArrayWithIndex(r).index>=0,t.getArrayName=r=>{const i=e.arrays[r];return i?i.data.getName():""},t.getCopyFieldFlags=()=>e.copyFieldFlags,t.getFlag=r=>e.copyFieldFlags[r],t.passData=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;r.getArrays().forEach(s=>{const o=t.getFlag(s.getName());if(o!==!1&&!(e.doCopyAllOff&&o!==!0)&&s){let c=t.getArrayByName(s.getName());if(c)if(s.getNumberOfComponents()===c.getNumberOfComponents())if(i>-1&&i-1?a:i;c.insertTuple(l,s.getTuple(i))}else c.insertTuples(0,s.getTuples());else ko("Unhandled case in passData");else if(i<0||i>s.getNumberOfTuples())t.addArray(s),r.getAttributes(s).forEach(l=>{t.setAttribute(s,l)});else{const l=s.getNumberOfComponents();let u=s.getNumberOfValues();const f=a>-1?a:i;u<=f*l&&(u=(f+1)*l),c=ie.newInstance({name:s.getName(),dataType:s.getDataType(),numberOfComponents:l,values:M.newTypedArray(s.getDataType(),u),size:0}),c.insertTuple(f,s.getTuple(i)),t.addArray(c),r.getAttributes(s).forEach(g=>{t.setAttribute(c,g)})}}})},t.interpolateData=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5;r.getArrays().forEach(c=>{const l=t.getFlag(c.getName());if(l!==!1&&!(e.doCopyAllOff&&l!==!0)&&c){let u=t.getArrayByName(c.getName());if(u)if(c.getNumberOfComponents()===u.getNumberOfComponents())if(i>-1&&i-1?s:i;u.interpolateTuple(f,c,i,c,a,o),c4("Unexpected case in interpolateData")}else u.insertTuples(c.getTuples());else ko("Unhandled case in interpolateData");else if(i<0||a<0||i>c.getNumberOfTuples())t.addArray(c),r.getAttributes(c).forEach(f=>{t.setAttribute(c,f)});else{const f=c.getNumberOfComponents();let g=c.getNumberOfValues();const h=s>-1?s:i;g<=h*f&&(g=(h+1)*f),u=ie.newInstance({name:c.getName(),dataType:c.getDataType(),numberOfComponents:f,values:M.newTypedArray(c.getDataType(),g),size:0}),u.interpolateTuple(h,c,i,c,a,o),t.addArray(u),r.getAttributes(c).forEach(d=>{t.setAttribute(u,d)})}}})},t.copyFieldOn=r=>{e.copyFieldFlags[r]=!0},t.copyFieldOff=r=>{e.copyFieldFlags[r]=!1},t.copyAllOn=()=>{(!e.doCopyAllOn||e.doCopyAllOff)&&(e.doCopyAllOn=!0,e.doCopyAllOff=!1,t.modified())},t.copyAllOff=()=>{(e.doCopyAllOn||!e.doCopyAllOff)&&(e.doCopyAllOn=!1,e.doCopyAllOff=!0,t.modified())},t.clearFieldFlags=()=>{e.copyFieldFlags={}},t.deepCopy=r=>{e.arrays=r.getArrays().map(i=>{const a=i.newClone();return a.deepCopy(i),{data:a}})},t.copyFlags=r=>r.getCopyFieldFlags().map(i=>i),t.reset=()=>e.arrays.forEach(r=>r.data.reset()),t.getMTime=()=>e.arrays.reduce((r,i)=>i.data.getMTime()>r?i.data.getMTime():r,e.mtime),t.getNumberOfComponents=()=>e.arrays.reduce((r,i)=>r+i.data.getNumberOfComponents(),0),t.getNumberOfTuples=()=>e.arrays.length>0?e.arrays[0].getNumberOfTuples():0,t.getState=()=>{const r=n();return r&&(r.arrays=e.arrays.map(i=>({data:i.data.getState()}))),r}}const u4={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function Ul(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,u4,n),M.obj(t,e),l4(t,e)}const f4=M.newInstance(Ul,"vtkFieldData");var g4={newInstance:f4,extend:Ul};const h4={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},d4={MAX:0,EXACT:1,NOLIMIT:2},p4={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},m4={DUPLICATEPOINT:1,HIDDENPOINT:2},v4={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},y4="vtkGhostType",T4={DEFAULT:0,SINGLE:1,DOUBLE:2};var kl={AttributeCopyOperations:v4,AttributeLimitTypes:d4,AttributeTypes:h4,CellGhostTypes:p4,DesiredOutputPrecision:T4,PointGhostTypes:m4,ghostArrayName:y4};const{AttributeTypes:Ht,AttributeCopyOperations:un}=kl,{vtkWarningMacro:li}=M;function C4(t,e){const n=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function r(s){let o=n.find(c=>Ht[c.toUpperCase()]===s||typeof s!="number"&&c.toLowerCase()===s.toLowerCase());return typeof o>"u"&&(o=null),o}e.classHierarchy.push("vtkDataSetAttributes");const i={...t};t.checkNumberOfComponents=s=>!0,t.setAttribute=(s,o)=>{const c=r(o);if(s&&c.toUpperCase()==="PEDIGREEIDS"&&!s.isA("vtkDataArray"))return li(`Cannot set attribute ${c}. The attribute must be a vtkDataArray.`),-1;if(s&&!t.checkNumberOfComponents(s,c))return li(`Cannot set attribute ${c}. Incorrect number of components.`),-1;let l=e[`active${c}`];if(l>=0&&ln.filter(o=>t[`get${o}`]()===s),t.setActiveAttributeByName=(s,o)=>t.setActiveAttributeByIndex(t.getArrayWithIndex(s).index,o),t.setActiveAttributeByIndex=(s,o)=>{const c=r(o);if(s>=0&&s{const o=r(s);return t[`get${o}`]()},t.removeAllArrays=()=>{n.forEach(s=>{e[`active${s}`]=-1}),i.removeAllArrays()},t.removeArrayByIndex=s=>(s!==-1&&n.forEach(o=>{s===e[`active${o}`]?e[`active${o}`]=-1:s{const o=`active${s}`;t[`get${s}`]=()=>t.getArrayByIndex(e[o]),t[`set${s}`]=c=>t.setAttribute(c,s),t[`setActive${s}`]=c=>t.setActiveAttributeByIndex(t.getArrayWithIndex(c).index,s),t[`copy${s}Off`]=()=>{const c=s.toUpperCase();e.copyAttributeFlags[un.PASSDATA][Ht[c]]=!1},t[`copy${s}On`]=()=>{const c=s.toUpperCase();e.copyAttributeFlags[un.PASSDATA][Ht[c]]=!0}}),t.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(un).filter(s=>s!=="ALLCOPY").forEach(s=>{e.copyAttributeFlags[un[s]]=Object.keys(Ht).filter(o=>o!=="NUM_ATTRIBUTES").reduce((o,c)=>(o[Ht[c]]=!0,o),[])}),e.copyAttributeFlags[un.COPYTUPLE][Ht.GLOBALIDS]=!1,e.copyAttributeFlags[un.INTERPOLATE][Ht.GLOBALIDS]=!1,e.copyAttributeFlags[un.COPYTUPLE][Ht.PEDIGREEIDS]=!1},t.initialize=M.chain(t.initialize,t.initializeAttributeCopyFlags),e.dataArrays&&Object.keys(e.dataArrays).length&&Object.keys(e.dataArrays).forEach(s=>{!e.dataArrays[s].ref&&e.dataArrays[s].type==="vtkDataArray"&&t.addArray(ie.newInstance(e.dataArrays[s]))});const a=t.shallowCopy;t.shallowCopy=(s,o)=>{a(s,o),e.arrays=s.getArrays().map(c=>{const l=c.newClone();return l.shallowCopy(c,o),{data:l}})},t.initializeAttributeCopyFlags()}const x4={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function Pl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,x4,n),g4.extend(t,e,n),M.setGet(t,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),C4(t,e)}const w4=M.newInstance(Pl,"vtkDataSetAttributes");var Po={newInstance:w4,extend:Pl,...kl};const S4={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},M4={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var E4={FieldDataTypes:S4,FieldAssociations:M4};const ws=["pointData","cellData","fieldData"];function R4(t,e){e.classHierarchy.push("vtkDataSet"),ws.forEach(r=>{e[r]?e[r]=pt(e[r]):e[r]=Po.newInstance()});const n=t.shallowCopy;t.shallowCopy=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,i),ws.forEach(a=>{e[a]=Po.newInstance(),e[a].shallowCopy(r.getReferenceByName(a))})}}const O4={};function Gl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,O4,n),M.obj(t,e),M.setGet(t,e,ws),R4(t,e)}const D4=M.newInstance(Gl,"vtkDataSet");var Bl={newInstance:D4,extend:Gl,...E4};function V4(t,e){e.classHierarchy.push("vtkOpenGLCamera"),t.buildPass=n=>{n&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext())},t.opaquePass=n=>{if(n){const r=e._openGLRenderer.getTiledSizeAndOrigin();e.context.viewport(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize),e.context.scissor(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize)}},t.translucentPass=t.opaquePass,t.zBufferPass=t.opaquePass,t.opaqueZBufferPass=t.opaquePass,t.volumePass=t.opaquePass,t.getKeyMatrices=n=>{if(n!==e.lastRenderer||e._openGLRenderWindow.getMTime()>e.keyMatrixTime.getMTime()||t.getMTime()>e.keyMatrixTime.getMTime()||n.getMTime()>e.keyMatrixTime.getMTime()||e.renderable.getMTime()>e.keyMatrixTime.getMTime()){Fe(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),ul(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),l0(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),fe(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const r=e._openGLRenderer.getAspectRatio();Fe(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(r,-1,1)),fe(e.keyMatrices.vcpc,e.keyMatrices.vcpc),ae(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=n}return e.keyMatrices}}const I4={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function L4(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,I4,n),He.extend(t,e,n),e.keyMatrixTime={},Ve(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},Xe(t,e,["context","keyMatrixTime"]),V4(t,e)}const N4=Ue(L4);Nt("vtkCamera",N4);function b4(t,e){e.classHierarchy.push("vtkAbstractMapper"),t.update=()=>{t.getInputData()},t.addClippingPlane=n=>n.isA("vtkPlane")?e.clippingPlanes.includes(n)?!1:(e.clippingPlanes.push(n),t.modified(),!0):!1,t.getNumberOfClippingPlanes=()=>e.clippingPlanes.length,t.removeAllClippingPlanes=()=>e.clippingPlanes.length===0?!1:(e.clippingPlanes.length=0,t.modified(),!0),t.removeClippingPlane=n=>{const r=e.clippingPlanes.indexOf(n);return r===-1?!1:(e.clippingPlanes.splice(r,1),t.modified(),!0)},t.getClippingPlanes=()=>e.clippingPlanes,t.setClippingPlanes=n=>{if(n)if(!Array.isArray(n))t.addClippingPlane(n);else{const r=n.length;for(let i=0;i{const a=e.clippingPlanes,s=n;if(a){const o=a.length;if(r>=0&&r2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,F4,n),M.obj(t,e),M.algo(t,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),b4(t,e)}var U4={extend:_4};function k4(t,e){e.classHierarchy.push("vtkImplicitFunction"),t.functionValue=n=>{if(!e.transform)return t.evaluateFunction(n);const r=[];return e.transform.transformPoint(n,r),t.evaluateFunction(r)},t.evaluateFunction=n=>{M.vtkErrorMacro("not implemented")}}const P4={};function Al(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,P4,n),M.obj(t,e),M.setGet(t,e,["transform"]),k4(t,e)}const G4=M.newInstance(Al,"vtkImplicitFunction");var B4={newInstance:G4,extend:Al};const Ss=1e-6,Wl="coincide",zl="disjoint";function A4(t,e,n){return t[0]*(n[0]-e[0])+t[1]*(n[1]-e[1])+t[2]*(n[2]-e[2])}function $l(t,e,n){const r=n[0]*(t[0]-e[0])+n[1]*(t[1]-e[1])+n[2]*(t[2]-e[2]);return Math.abs(r)}function jl(t,e,n,r){const i=[];At(t,e,i);const a=Y(n,i);r[0]=t[0]-a*n[0],r[1]=t[1]-a*n[1],r[2]=t[2]-a*n[2]}function Hl(t,e,n){const r=Y(t,e);let i=Y(e,e);return i===0&&(i=1),n[0]=t[0]-r*e[0]/i,n[1]=t[1]-r*e[1]/i,n[2]=t[2]-r*e[2]/i,n}function Kl(t,e,n,r){const i=[];At(t,e,i);const a=Y(n,i),s=Y(n,n);s!==0?(r[0]=t[0]-a*n[0]/s,r[1]=t[1]-a*n[1]/s,r[2]=t[2]-a*n[2]/s):(r[0]=t[0],r[1]=t[1],r[2]=t[2])}function ql(t,e,n,r){const i={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},a=[],s=[];At(e,t,a),At(n,t,s);const o=Y(r,s),c=Y(r,a);let l,u;return c<0?l=-c:l=c,o<0?u=-o*Ss:u=o*Ss,l<=u||(i.t=o/c,i.x[0]=t[0]+i.t*a[0],i.x[1]=t[1]+i.t*a[1],i.x[2]=t[2]+i.t*a[2],i.intersection=!0,i.betweenPoints=i.t>=0&&i.t<=1),i}function Yl(t,e,n,r){const i={intersection:!1,l0:[],l1:[],error:null},a=[];Dt(e,r,a);const s=a.map(f=>Math.abs(f));if(s[0]+s[1]+s[2]s[1]&&s[0]>s[2]?o="x":s[1]>s[2]?o="y":o="z";const c=[],l=-Y(e,t),u=-Y(r,n);switch(o){case"x":c[0]=0,c[1]=(u*e[2]-l*r[2])/a[0],c[2]=(l*r[1]-u*e[1])/a[0];break;case"y":c[0]=(l*r[2]-u*e[2])/a[1],c[1]=0,c[2]=(u*e[0]-l*r[0])/a[1];break;case"z":c[0]=(u*e[1]-l*r[1])/a[2],c[1]=(l*r[0]-u*e[0])/a[2],c[2]=0;break}return i.l0=c,Hi(c,a,i.l1),i.intersection=!0,i}const W4={evaluate:A4,distanceToPlane:$l,projectPoint:jl,projectVector:Hl,generalizedProjectPoint:Kl,intersectWithLine:ql,intersectWithPlane:Yl,DISJOINT:zl,COINCIDE:Wl};function z4(t,e){e.classHierarchy.push("vtkPlane"),t.distanceToPlane=n=>$l(n,e.origin,e.normal),t.projectPoint=(n,r)=>{jl(n,e.origin,e.normal,r)},t.projectVector=(n,r)=>Hl(n,e.normal,r),t.push=n=>{if(n!==0)for(let r=0;r<3;r++)e.origin[r]+=n*e.normal[r]},t.generalizedProjectPoint=(n,r)=>{Kl(n,e.origin,e.normal,r)},t.evaluateFunction=(n,r,i)=>Array.isArray(n)?e.normal[0]*(n[0]-e.origin[0])+e.normal[1]*(n[1]-e.origin[1])+e.normal[2]*(n[2]-e.origin[2]):e.normal[0]*(n-e.origin[0])+e.normal[1]*(r-e.origin[1])+e.normal[2]*(i-e.origin[2]),t.evaluateGradient=n=>[e.normal[0],e.normal[1],e.normal[2]],t.intersectWithLine=(n,r)=>ql(n,r,e.origin,e.normal),t.intersectWithPlane=(n,r)=>Yl(n,r,e.origin,e.normal)}const $4={normal:[0,0,1],origin:[0,0,0]};function Xl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$4,n),B4.extend(t,e,n),M.setGetArray(t,e,["normal","origin"],3),z4(t,e)}const j4=M.newInstance(Xl,"vtkPlane");var $e={newInstance:j4,extend:Xl,...W4};const Ma=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function Zl(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function $t(t){return(t==null?void 0:t.length)>=6&&t[0]<=t[1]&&t[2]<=t[3]&&t[4]<=t[5]}function y0(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function T0(t){return y0(t,Ma)}function Ji(t,e,n,r){const[i,a,s,o,c,l]=t;return t[0]=ie?a:e,t[2]=sn?o:n,t[4]=cr?l:r,t}function C0(t,e){if(e.length===0)return t;if(Array.isArray(e[0]))for(let n=0;na?e:a,t[2]=n,t[3]=n>o?n:o,t[4]=r,t[5]=r>l?r:l,i!==e||s!==n||c!==r}function e2(t,e,n,r){const[i,a,s,o,c,l]=t;return t[0]=e=0?(t[0]*=e,t[1]*=e):(t[0]=e*t[1],t[1]=e*t[0]),n>=0?(t[2]*=n,t[3]*=n):(t[2]=n*t[3],t[3]=n*t[2]),r>=0?(t[4]*=r,t[5]*=r):(t[4]=r*t[5],t[5]=r*t[4]),!0):!1}function w0(t){return[.5*(t[0]+t[1]),.5*(t[2]+t[3]),.5*(t[4]+t[5])]}function H4(t,e,n,r){if(!$t(t))return!1;const i=w0(t);return t[0]-=i[0],t[1]-=i[0],t[2]-=i[1],t[3]-=i[1],t[4]-=i[2],t[5]-=i[2],x0(t,e,n,r),t[0]+=i[0],t[1]+=i[0],t[2]+=i[1],t[3]+=i[1],t[4]+=i[2],t[5]+=i[2],!0}function Dr(t,e){return t[e*2+1]-t[e*2]}function Ea(t){return[Dr(t,0),Dr(t,1),Dr(t,2)]}function n2(t){return t.slice(0,2)}function r2(t){return t.slice(2,4)}function i2(t){return t.slice(4,6)}function a2(t){const e=Ea(t);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function s2(t){if($t(t)){const e=Ea(t);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function S0(t){return[t[0],t[2],t[4]]}function M0(t){return[t[1],t[3],t[5]]}function ui(t,e){return t<=0&&e>=0||t>=0&&e<=0}function E0(t,e){let n=0;for(let r=0;r<2;r++)for(let i=2;i<4;i++)for(let a=4;a<6;a++)e[n++]=[t[r],t[i],t[a]];return e}function o2(t,e,n){return e[0]=t[0],e[1]=t[2],e[2]=t[4],n[0]=t[1],n[1]=t[3],n[2]=t[5],e}function c2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const r=E0(t,[]);for(let i=0;i1&&arguments[1]!==void 0?arguments[1]:[];return e[0]=.5*(t[1]-t[0]),e[1]=.5*(t[3]-t[2]),e[2]=.5*(t[5]-t[4]),e}function u2(t,e,n,r){const i=[].concat(Ma),a=t.getData();for(let s=0;st[2*h+1]?(s[h]=u,l[h]=t[2*h+1],a=!1):s[h]=g;if(a)return r[0]=e[0],r[1]=e[1],r[2]=e[2],i[0]=0,1;for(let h=0;h<3;h++)s[h]!==g&&n[h]!==0?c[h]=(l[h]-e[h])/n[h]:c[h]=-1;for(let h=0;h<3;h++)c[o]1||c[o]<0)return 0;i[0]=c[o];for(let h=0;h<3;h++)if(o!==h){if(r[h]=e[h]+c[o]*n[h],r[h]t[2*h+1])return 0}else r[h]=l[h];return 1}function g2(t,e,n){const r=[];let i=0,a=1,s=1;for(let o=4;o<=5;++o){r[2]=t[o];for(let c=2;c<=3;++c){r[1]=t[c];for(let l=0;l<=1;++l)if(r[0]=t[l],i=$e.evaluate(n,e,r),s&&(a=i>=0?1:-1,s=0),i===0||a>0&&i<0||a<0&&i>0)return 1}}return 0}function h2(t,e){if(!($t(t)&&$t(e)))return!1;const n=[0,0,0,0,0,0];let r;for(let i=0;i<3;i++)if(r=!1,e[i*2]>=t[i*2]&&e[i*2]<=t[i*2+1]?(r=!0,n[i*2]=e[i*2]):t[i*2]>=e[i*2]&&t[i*2]<=e[i*2+1]&&(r=!0,n[i*2]=t[i*2]),e[i*2+1]>=t[i*2]&&e[i*2+1]<=t[i*2+1]?(r=!0,n[i*2+1]=e[2*i+1]):t[i*2+1]>=e[i*2]&&t[i*2+1]<=e[i*2+1]&&(r=!0,n[i*2+1]=t[i*2+1]),!r)return!1;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],!0}function Qi(t,e){if(!($t(t)&&$t(e)))return!1;for(let n=0;n<3;n++)if(!(e[n*2]>=t[n*2]&&e[n*2]<=t[n*2+1])&&!(t[n*2]>=e[n*2]&&t[n*2]<=e[n*2+1])&&!(e[n*2+1]>=t[n*2]&&e[n*2+1]<=t[n*2+1])&&!(t[n*2+1]>=e[n*2]&&t[n*2+1]<=e[n*2+1]))return!1;return!0}function ea(t,e,n,r){return!(et[1]||nt[3]||rt[5])}function K4(t,e){return!(!Qi(t,e)||!ea(t,...S0(e))||!ea(t,...M0(e)))}function d2(t,e,n){const r=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],i=[0,0,0,0,0,0,0,0];let a=0;for(let f=0;f<2;f++)for(let g=2;g<4;g++)for(let h=4;h<6;h++){const d=[t[f],t[g],t[h]];i[a++]=$e.evaluate(n,e,d)}let s=2;for(;s--&&!(ui(i[r[s][0]],i[r[s][4]])&&ui(i[r[s][1]],i[r[s][5]])&&ui(i[r[s][2]],i[r[s][6]])&&ui(i[r[s][3]],i[r[s][7]])););if(s<0)return!1;const o=Math.sign(n[s]),c=Math.abs((t[s*2+1]-t[s*2])*n[s]);let l=o>0?1:0;for(let f=0;f<4;f++){if(c===0)continue;const g=Math.abs(i[r[s][f]])/c;o>0&&gl&&(l=g)}const u=(1-l)*t[s*2]+l*t[s*2+1];return o>0?t[s*2]=u:t[s*2+1]=u,!0}class q4{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(Ma))}getBounds(){return this.bounds}equals(e){return Zl(this.bounds,e)}isValid(){return $t(this.bounds)}setBounds(e){return y0(this.bounds,e)}reset(){return T0(this.bounds)}addPoint(){for(var e=arguments.length,n=new Array(e),r=0;r1&&arguments[1]!==void 0?arguments[1]:[];return c2(this.bounds,e,n)}computeScale3(e){return l2(this.bounds,e)}cutWithPlane(e,n){return d2(this.bounds,e,n)}intersectBox(e,n,r,i){return f2(this.bounds,e,n,r,i)}intersectPlane(e,n){return g2(this.bounds,e,n)}intersect(e){return h2(this.bounds,e)}intersects(e){return Qi(this.bounds,e)}containsPoint(e,n,r){return ea(this.bounds,e,n,r)}contains(e){return Qi(this.bounds,e)}}function Y4(t){const e=t&&t.bounds;return new q4(e)}const X4={equals:Zl,isValid:$t,setBounds:y0,reset:T0,addPoint:Ji,addPoints:C0,addBounds:Jl,setMinPoint:Ql,setMaxPoint:e2,inflate:t2,scale:x0,scaleAboutCenter:H4,getCenter:w0,getLength:Dr,getLengths:Ea,getMaxLength:a2,getDiagonalLength:s2,getMinPoint:S0,getMaxPoint:M0,getXRange:n2,getYRange:r2,getZRange:i2,getCorners:E0,computeCornerPoints:o2,computeLocalBounds:u2,transformBounds:c2,computeScale3:l2,cutWithPlane:d2,intersectBox:f2,intersectPlane:g2,intersect:h2,intersects:Qi,containsPoint:ea,contains:K4,INIT_BOUNDS:Ma};var _e={newInstance:Y4,...X4};function Z4(t,e){t.getBounds=()=>(M.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),Zn()),t.getCenter=()=>{var r;const n=t.getBounds();return e.center=_e.isValid(n)?_e.getCenter(n):null,(r=e.center)==null?void 0:r.slice()},t.getLength=()=>{const n=t.getBounds();return _e.getDiagonalLength(n)}}const J4=t=>({bounds:[..._e.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...t});function Q4(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,J4(n)),U4.extend(t,e,n),M.setGet(t,e,["viewSpecificProperties"]),Z4(t,e)}var p2={extend:Q4};const ut={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var m2={StructuredType:ut};const{StructuredType:Ft}=m2;function e9(t){let e=0;for(let n=0;n<3;++n)t[n*2]t[1]||t[2]>t[3]||t[4]>t[5]?Ft.EMPTY:e===3?Ft.XYZ_GRID:e===2?t[0]===t[1]?Ft.YZ_PLANE:t[2]===t[3]?Ft.XZ_PLANE:Ft.XY_PLANE:e===1?t[0]o!==a[c]);return s&&(e.extent=a.slice(),e.dataDescription=t9.getDataDescriptionFromExtent(e.extent),t.modified()),s},t.setDimensions=function(){let n,r,i;if(e.deleted){fn("instance deleted - cannot call any method");return}if(arguments.length===1){const a=arguments.length<=0?void 0:arguments[0];n=a[0],r=a[1],i=a[2]}else if(arguments.length===3)n=arguments.length<=0?void 0:arguments[0],r=arguments.length<=1?void 0:arguments[1],i=arguments.length<=2?void 0:arguments[2];else{fn("Bad dimension specification");return}t.setExtent(0,n-1,0,r-1,0,i-1)},t.getDimensions=()=>[e.extent[1]-e.extent[0]+1,e.extent[3]-e.extent[2]+1,e.extent[5]-e.extent[4]+1],t.getNumberOfCells=()=>{const n=t.getDimensions();let r=1;for(let i=0;i<3;i++){if(n[i]===0)return 0;n[i]>1&&(r*=n[i]-1)}return r},t.getNumberOfPoints=()=>{const n=t.getDimensions();return n[0]*n[1]*n[2]},t.getPoint=n=>{const r=t.getDimensions();if(r[0]===0||r[1]===0||r[2]===0)return fn("Requesting a point from an empty image."),null;const i=new Float64Array(3);switch(e.dataDescription){case ut.EMPTY:return null;case ut.SINGLE_POINT:break;case ut.X_LINE:i[0]=n;break;case ut.Y_LINE:i[1]=n;break;case ut.Z_LINE:i[2]=n;break;case ut.XY_PLANE:i[0]=n%r[0],i[1]=n/r[0];break;case ut.YZ_PLANE:i[1]=n%r[1],i[2]=n/r[1];break;case ut.XZ_PLANE:i[0]=n%r[0],i[2]=n/r[0];break;case ut.XYZ_GRID:i[0]=n%r[0],i[1]=n/r[0]%r[1],i[2]=n/(r[0]*r[1]);break;default:fn("Invalid dataDescription");break}const a=[0,0,0];return t.indexToWorld(i,a),a},t.getBounds=()=>t.extentToBounds(t.getSpatialExtent()),t.extentToBounds=n=>_e.transformBounds(n,e.indexToWorld),t.getSpatialExtent=()=>_e.inflate([...e.extent],.5),t.computeTransforms=()=>{ni(e.indexToWorld,e.origin),e.indexToWorld[0]=e.direction[0],e.indexToWorld[1]=e.direction[1],e.indexToWorld[2]=e.direction[2],e.indexToWorld[4]=e.direction[3],e.indexToWorld[5]=e.direction[4],e.indexToWorld[6]=e.direction[5],e.indexToWorld[8]=e.direction[6],e.indexToWorld[9]=e.direction[7],e.indexToWorld[10]=e.direction[8],Vt(e.indexToWorld,e.indexToWorld,e.spacing),Be(e.worldToIndex,e.indexToWorld)},t.indexToWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return ue(r,n,e.indexToWorld),r},t.indexToWorldVec3=t.indexToWorld,t.worldToIndex=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return ue(r,n,e.worldToIndex),r},t.worldToIndexVec3=t.worldToIndex,t.indexToWorldBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return _e.transformBounds(n,e.indexToWorld,r)},t.worldToIndexBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return _e.transformBounds(n,e.worldToIndex,r)},t.onModified(t.computeTransforms),t.computeTransforms(),t.getCenter=()=>_e.getCenter(t.getBounds()),t.computeHistogram=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const i=[0,0,0,0,0,0];t.worldToIndexBounds(n,i);const a=[0,0,0],s=[0,0,0];_e.computeCornerPoints(i,a,s),ms(a,a),ms(s,s);const o=t.getDimensions();ys(a,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],a),ys(s,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],s);const c=o[0],l=o[0]*o[1],u=t.getPointData().getScalars().getData();let f=-1/0,g=1/0,h=0,d=0,m=0;for(let C=a[2];C<=s[2];C++)for(let y=a[1];y<=s[1];y++){let x=a[0]+y*c+C*l;for(let w=a[0];w<=s[0];w++){if(!r||r([w,y,C],i)){const E=u[x];E>f&&(f=E),E0?d/m:0,v=m?Math.abs(h/m-p*p):0,T=Math.sqrt(v);return{minimum:g,maximum:f,average:p,variance:v,sigma:T,count:m}},t.computeIncrements=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const i=[];let a=r;for(let s=0;s<3;++s)i[s]=a,a*=n[s*2+1]-n[s*2]+1;return i},t.computeOffsetIndex=n=>{let[r,i,a]=n;const s=t.getExtent(),o=t.getPointData().getScalars().getNumberOfComponents(),c=t.computeIncrements(s,o);return Math.floor((Math.round(r)-s[0])*c[0]+(Math.round(i)-s[2])*c[1]+(Math.round(a)-s[4])*c[2])},t.getOffsetIndexFromWorld=n=>{const r=t.getExtent(),i=t.worldToIndex(n);for(let a=0;a<3;++a)if(i[a]r[a*2+1])return fn(`GetScalarPointer: Pixel ${i} is not in memory. Current extent = ${r}`),NaN;return t.computeOffsetIndex(i)},t.getScalarValueFromWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const i=t.getPointData().getScalars().getNumberOfComponents();if(r<0||r>=i)return fn(`GetScalarPointer: Scalar Component ${r} is not within bounds. Current Scalar numberOfComponents: ${i}`),NaN;const a=t.getOffsetIndexFromWorld(n);return Number.isNaN(a)?a:t.getPointData().getScalars().getComponent(a,r)}}const r9={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:ut.EMPTY};function v2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,r9,n),Bl.extend(t,e,n),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=wa(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),M.get(t,e,["indexToWorld","worldToIndex"]),M.setGetArray(t,e,["origin","spacing"],3),M.setGetArray(t,e,["direction"],9),M.getArray(t,e,["extent"],6),n9(t,e)}const i9=M.newInstance(v2,"vtkImageData");var ta={newInstance:i9,extend:v2};const a9={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},s9={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var y2={VectorMode:a9,ScalarMappingTarget:s9};const o9={DEFAULT:0,DIRECT_SCALARS:2};var c9={ColorMode:o9};const{ScalarMappingTarget:Go,VectorMode:wt}=y2,{VtkDataTypes:Kt}=ie,{ColorMode:fi}=c9,{vtkErrorMacro:Bo}=M;function l9(t){return t}function Ao(t){return Math.floor(t*255+.5)}function u9(t,e){e.classHierarchy.push("vtkScalarsToColors"),t.setVectorModeToMagnitude=()=>t.setVectorMode(wt.MAGNITUDE),t.setVectorModeToComponent=()=>t.setVectorMode(wt.COMPONENT),t.setVectorModeToRGBColors=()=>t.setVectorMode(wt.RGBCOLORS),t.build=()=>{},t.isOpaque=()=>!0,t.setAnnotations=(n,r)=>{if(!(n&&!r||!n&&r)){if(n&&r&&n.length!==r.length){Bo("Values and annotations do not have the same number of tuples so ignoring");return}if(e.annotationArray=[],r&&n){const i=r.length;for(let a=0;a{let i=t.checkForAnnotatedValue(n),a=!1;return i>=0?e.annotationArray[i].annotation!==r&&(e.annotationArray[i].annotation=r,a=!0):(e.annotationArray.push({value:n,annotation:r}),i=e.annotationArray.length-1,a=!0),a&&(t.updateAnnotatedValueMap(),t.modified()),i},t.getNumberOfAnnotatedValues=()=>e.annotationArray.length,t.getAnnotatedValue=n=>n<0||n>=e.annotationArray.length?null:e.annotationArray[n].value,t.getAnnotation=n=>e.annotationArray[n]===void 0?null:e.annotationArray[n].annotation,t.getAnnotatedValueIndex=n=>e.annotationArray.length?t.checkForAnnotatedValue(n):-1,t.removeAnnotation=n=>{const r=t.checkForAnnotatedValue(n),i=r>=0;return i&&(e.annotationArray.splice(r,1),t.updateAnnotatedValueMap(),t.modified()),i},t.resetAnnotations=()=>{e.annotationArray=[],e.annotatedValueMap=[],t.modified()},t.getAnnotationColor=(n,r)=>{if(e.indexedLookup){const i=t.getAnnotatedValueIndex(n);t.getIndexedColor(i,r)}else t.getColor(parseFloat(n),r),r[3]=1},t.checkForAnnotatedValue=n=>t.getAnnotatedValueIndexInternal(n),t.getAnnotatedValueIndexInternal=n=>{if(e.annotatedValueMap[n]!==void 0){const r=e.annotationArray.length;return e.annotatedValueMap[n]%r}return-1},t.getIndexedColor=(n,r)=>{r[0]=0,r[1]=0,r[2]=0,r[3]=0},t.updateAnnotatedValueMap=()=>{e.annotatedValueMap=[];const n=e.annotationArray.length;for(let r=0;r{const a=n.getNumberOfComponents();let s=null;if(r===fi.DEFAULT&&(n.getDataType()===Kt.UNSIGNED_CHAR||n.getDataType()===Kt.UNSIGNED_CHAR_CLAMPED)||r===fi.DIRECT_SCALARS&&n)s=t.convertToRGBA(n,a,n.getNumberOfTuples());else{const o={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:Kt.UNSIGNED_CHAR},c=M.newTypedArray(o.dataType,4*n.getNumberOfTuples());o.values=c,o.size=c.length,s=ie.newInstance(o);let l=i;l<0&&a>1?t.mapVectorsThroughTable(n,s,Go.RGBA,-1,-1):(l<0&&(l=0),l>=a&&(l=a-1),t.mapScalarsThroughTable(n,s,Go.RGBA,l))}return s},t.mapVectorsToMagnitude=(n,r,i)=>{const a=n.getNumberOfTuples(),s=n.getNumberOfComponents(),o=r.getData(),c=n.getData();for(let l=0;l{let o=t.getVectorMode(),c=s,l=a;const u=n.getNumberOfComponents();o===wt.COMPONENT?(l===-1&&(l=t.getVectorComponent()),l<0&&(l=0),l>=u&&(l=u-1)):(c===-1&&(c=t.getVectorSize()),c<=0?(l=0,c=u):(l<0&&(l=0),l>=u&&(l=u-1),l+c>u&&(c=u-l)),o===wt.MAGNITUDE&&(u===1||c===1)&&(o=wt.COMPONENT));let f=0;switch(l>0&&(f=l),o){case wt.COMPONENT:{t.mapScalarsThroughTable(n,r,i,f);break}case wt.RGBCOLORS:break;case wt.MAGNITUDE:default:{const g=ie.newInstance({numberOfComponents:1,values:new Float32Array(n.getNumberOfTuples())});t.mapVectorsToMagnitude(n,g,c),t.mapScalarsThroughTable(g,r,i,0);break}}},t.luminanceToRGBA=(n,r,i,a)=>{const s=a(i),o=r.getData(),c=n.getData(),l=o.length,u=0,f=1;let g=0;for(let h=u;h{const s=r.getData(),o=n.getData(),c=s.length,l=0,u=2;let f=0;for(let g=l;g{const s=Ao(i),o=r.getData(),c=n.getData(),l=o.length,u=0,f=3;let g=0;for(let h=u;h{const s=r.getData(),o=n.getData(),c=s.length,l=0,u=4;let f=0;for(let g=l;g{let{alpha:a}=e;if(r===4&&a>=1&&n.getDataType()===Kt.UNSIGNED_CHAR)return n;const s=ie.newInstance({numberOfComponents:4,empty:!0,size:4*i,dataType:Kt.UNSIGNED_CHAR});if(i<=0)return s;a=a>0?a:0,a=a<1?a:1;let o=l9;switch((n.getDataType()===Kt.FLOAT||n.getDataType()===Kt.DOUBLE)&&(o=Ao),r){case 1:t.luminanceToRGBA(s,n,a,o);break;case 2:t.luminanceAlphaToRGBA(s,n,o);break;case 3:t.rGBToRGBA(s,n,a,o);break;case 4:t.rGBAToRGBA(s,n,a,o);break;default:return Bo("Cannot convert colors"),null}return s},t.usingLogScale=()=>!1,t.getNumberOfAvailableColors=()=>256*256*256,t.setRange=(n,r)=>t.setMappingRange(n,r),t.getRange=()=>t.getMappingRange(),t.areScalarsOpaque=(n,r,i)=>{if(!n)return t.isOpaque();const a=n.getNumberOfComponents();return r===fi.DEFAULT&&n.getDataType()===Kt.UNSIGNED_CHAR||r===fi.DIRECT_SCALARS?a===3||a===1?e.alpha>=1:n.getRange(a-1)[0]===255:!0}}const f9={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:wt.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function T2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,f9,n),M.obj(t,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],M.setGet(t,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),M.setArray(t,e,["mappingRange"],2),M.getArray(t,e,["mappingRange"]),u9(t,e)}const g9=M.newInstance(T2,"vtkScalarsToColors");var C2={newInstance:g9,extend:T2,...y2};const bt={Off:0,PolygonOffset:1};let Ms=bt.PolygonOffset,na=bt.Off;const h9=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function d9(){return Ms}function p9(t){const e=Ms===t;return Ms=t,e}function m9(){return na}function Ra(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const e=na===t;return na=t,e}function v9(){return Ra(bt.Off)}function y9(){return Ra(bt.Off)}function T9(){return Ra(bt.PolygonOffset)}function C9(){return h9[na]}var Es={Resolve:bt,getResolveCoincidentTopologyAsString:C9,getResolveCoincidentTopologyPolygonOffsetFaces:d9,getResolveCoincidentTopology:m9,setResolveCoincidentTopology:Ra,setResolveCoincidentTopologyPolygonOffsetFaces:p9,setResolveCoincidentTopologyToDefault:v9,setResolveCoincidentTopologyToOff:y9,setResolveCoincidentTopologyToPolygonOffset:T9};function x2(t,e,n){n.forEach(r=>{t[`get${r.method}`]=()=>e[r.key],t[`set${r.method}`]=M.objectSetterMap.object(t,e,{name:r.key,params:["factor","offset"]})})}const R0=["Polygon","Line","Point"],x9={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},w9=()=>{},Tn={modified:w9};x2(Tn,x9,R0.map(t=>({key:t,method:`ResolveCoincidentTopology${t}OffsetParameters`})));function S9(t,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),M.setGet(t,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(Es).forEach(n=>{t[n]=Es[n]}),Object.keys(Tn).filter(n=>n!=="modified").forEach(n=>{t[n]=Tn[n]}),x2(t,e.topologyOffset,R0.map(n=>({key:n,method:`RelativeCoincidentTopology${n}OffsetParameters`}))),t.getCoincidentTopologyPolygonOffsetParameters=()=>{const n=Tn.getResolveCoincidentTopologyPolygonOffsetParameters(),r=t.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}},t.getCoincidentTopologyLineOffsetParameters=()=>{const n=Tn.getResolveCoincidentTopologyLineOffsetParameters(),r=t.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}},t.getCoincidentTopologyPointOffsetParameter=()=>{const n=Tn.getResolveCoincidentTopologyPointOffsetParameters(),r=t.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}}}var w2={implementCoincidentTopologyMethods:S9,staticOffsetAPI:Tn,otherStaticMethods:Es,CATEGORIES:R0,Resolve:bt};const M9={DISPLAY:0,WORLD:1};var S2={CoordinateSystem:M9};const{CoordinateSystem:Rs}=S2;function Wo(t){return()=>M.vtkErrorMacro(`vtkProp::${t} - NOT IMPLEMENTED`)}function E9(t,e){e.classHierarchy.push("vtkProp"),t.getMTime=()=>{let n=e.mtime;for(let r=0;rn&&(n=i)}return n},t.processSelectorPixelBuffers=(n,r)=>{},t.getNestedProps=()=>null,t.getActors=()=>[],t.getActors2D=()=>[],t.getVolumes=()=>[],t.pick=Wo("pick"),t.hasKey=Wo("hasKey"),t.getNestedVisibility=()=>e.visibility&&(!e._parentProp||e._parentProp.getNestedVisibility()),t.getNestedPickable=()=>e.pickable&&(!e._parentProp||e._parentProp.getNestedPickable()),t.getNestedDragable=()=>e.dragable&&(!e._parentProp||e._parentProp.getNestedDragable()),t.getRedrawMTime=()=>e.mtime,t.setEstimatedRenderTime=n=>{e.estimatedRenderTime=n,e.savedEstimatedRenderTime=n},t.restoreEstimatedRenderTime=()=>{e.estimatedRenderTime=e.savedEstimatedRenderTime},t.addEstimatedRenderTime=n=>{e.estimatedRenderTime+=n},t.setAllocatedRenderTime=n=>{e.allocatedRenderTime=n,e.savedEstimatedRenderTime=e.estimatedRenderTime,e.estimatedRenderTime=0},t.getSupportsSelection=()=>!1,t.getTextures=()=>e.textures,t.hasTexture=n=>e.textures.indexOf(n)!==-1,t.addTexture=n=>{n&&!t.hasTexture(n)&&(e.textures=e.textures.concat(n),t.modified())},t.removeTexture=n=>{const r=e.textures.filter(i=>i!==n);e.textures.length!==r.length&&(e.textures=r,t.modified())},t.removeAllTextures=()=>{e.textures=[],t.modified()},t.setCoordinateSystemToWorld=()=>t.setCoordinateSystem(Rs.WORLD),t.setCoordinateSystemToDisplay=()=>t.setCoordinateSystem(Rs.DISPLAY)}const R9={allocatedRenderTime:10,coordinateSystem:Rs.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function M2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,R9,n),M.obj(t,e),M.get(t,e,["estimatedRenderTime","allocatedRenderTime"]),M.setGet(t,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),M.moveToProtected(t,e,["parentProp"]),E9(t,e)}const O9=M.newInstance(M2,"vtkProp");var D9={newInstance:O9,extend:M2,...S2},E2=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +attribute vec4 vertexMC; + +// frag position in VC +//VTK::PositionVC::Dec + +// optional normal declaration +//VTK::Normal::Dec + +// extra lighting parameters +//VTK::Light::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// material property values +//VTK::Color::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +// Apple Bug +//VTK::PrimID::Dec + +// picking support +//VTK::Picking::Dec + +void main() +{ + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Clip::Impl + + //VTK::PrimID::Impl + + //VTK::PositionVC::Impl + + //VTK::Light::Impl + + //VTK::Picking::Impl +} +`,R2=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the polydata mappers fragment shader + +uniform int PrimitiveIDOffset; + +// VC position of this fragment +//VTK::PositionVC::Dec + +// optional color passed in from the vertex shader, vertexColor +//VTK::Color::Dec + +// optional surface normal declaration +//VTK::Normal::Dec + +// extra lighting parameters +//VTK::Light::Dec + +// define vtkImageLabelOutlineOn +//VTK::ImageLabelOutlineOn + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// Depth Peeling Support +//VTK::DepthPeeling::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// label outline +//VTK::LabelOutline::Dec + +// the output of this shader +//VTK::Output::Dec + +// Apple Bug +//VTK::PrimID::Dec + +// handle coincident offsets +//VTK::Coincident::Dec + +//VTK::ZBuffer::Dec + +//VTK::LabelOutlineHelperFunction + +void main() +{ + // VC position of this fragment. This should not branch/return/discard. + //VTK::PositionVC::Impl + + // Place any calls that require uniform flow (e.g. dFdx) here. + //VTK::UniformFlow::Impl + + // Set gl_FragDepth here (gl_FragCoord.z by default) + //VTK::Depth::Impl + + // Early depth peeling abort: + //VTK::DepthPeeling::PreColor + + // Apple Bug + //VTK::PrimID::Impl + + //VTK::Clip::Impl + + //VTK::Color::Impl + + // Generate the normal if we are not passed in one + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Light::Impl + + if (gl_FragData[0].a <= 0.0) + { + discard; + } + + //VTK::DepthPeeling::Impl + + //VTK::Picking::Impl + + // handle coincident offsets + //VTK::Coincident::Impl + + //VTK::ZBuffer::Impl + + //VTK::RenderPassFragmentShader::Impl +} +`;function V9(t,e){t.replaceShaderCoincidentOffset=(n,r,i)=>{const a=t.getCoincidentParameters(r,i);if(a&&(a.factor!==0||a.offset!==0)){let s=n.Fragment;s=W.substitute(s,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(a.factor!==0?(s=W.substitute(s,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,s=W.substitute(s,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):s=W.substitute(s,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(a.factor!==0?(s=W.substitute(s,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,s=W.substitute(s,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):s=W.substitute(s,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),n.Fragment=s}}}function I9(t,e){t.applyShaderReplacements=(n,r,i)=>{let a=null;if(r&&(a=r.ShaderReplacements),a)for(let s=0;s{t.getReplacedShaderTemplate(n,r,i),e.lastRenderPassShaderReplacement=e.currentRenderPass?e.currentRenderPass.getShaderReplacement():null,e.lastRenderPassShaderReplacement&&e.lastRenderPassShaderReplacement(n);const a=e.renderable.getViewSpecificProperties().OpenGL;t.applyShaderReplacements(n,a,!0),t.replaceShaderValues(n,r,i),t.applyShaderReplacements(n,a)},t.getReplacedShaderTemplate=(n,r,i)=>{const a=e.renderable.getViewSpecificProperties().OpenGL;t.getShaderTemplate(n,r,i);let s=n.Vertex;if(a){const l=a.VertexShaderCode;l!==void 0&&l!==""&&(s=l)}n.Vertex=s;let o=n.Fragment;if(a){const l=a.FragmentShaderCode;l!==void 0&&l!==""&&(o=l)}n.Fragment=o;let c=n.Geometry;if(a){const l=a.GeometryShaderCode;l!==void 0&&(c=l)}n.Geometry=c}}var Jn={implementReplaceShaderCoincidentOffset:V9,implementBuildShadersWithReplacements:I9};const L9={NONE:-1,I:0,J:1,K:2,X:3,Y:4,Z:5};var Oa={SlicingMode:L9};const Rn={NEAREST:0,LINEAR:1};var N9={InterpolationType:Rn};function cn(t,e,n){return t?`${t.getMTime()}-${e}-${n}`:"0"}function O0(t,e){return`${t.getMTime()}A${e.getMTime()}`}const{vtkErrorMacro:_n}=Lt,{SlicingMode:Qe}=Oa;function b9(t){const e=t.split(` +`),n=[];for(let r=0;r0&&n.push(i)}return n}function F9(t,e){e.classHierarchy.push("vtkOpenGLImageMapper");function n(r){e.openGLTexture.releaseGraphicsResources(r),[e._colorTransferFunc,e._pwFunc,e._labelOutlineThicknessArray].forEach(i=>r.unregisterGraphicsResourceUser(i,t))}t.buildPass=r=>{if(r){e.currentRenderPass=null,e.openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const i=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),i&&!i.isDeleted()&&i!==e._openGLRenderWindow&&n(i),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow);const a=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(a.getActiveCamera()),e.renderable.isA("vtkImageMapper")&&e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(a.getActiveCamera())}},t.translucentPass=(r,i)=>{r&&(e.currentRenderPass=i,t.render())},t.zBufferPass=r=>{r&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=r=>t.zBufferPass(r),t.opaquePass=r=>{r&&t.render()},t.getCoincidentParameters=(r,i)=>e.renderable.getResolveCoincidentTopology()==bt.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const r=e.openGLImageSlice.getRenderable(),i=e._openGLRenderer.getRenderable();t.renderPiece(i,r)},t.getShaderTemplate=(r,i,a)=>{r.Vertex=E2,r.Fragment=R2,r.Geometry=""},t.replaceShaderValues=(r,i,a)=>{let s=r.Vertex,o=r.Fragment;s=W.substitute(s,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,s=W.substitute(s,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result,s=W.substitute(s,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result,s=W.substitute(s,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result;const c=e.openGLTexture.getComponents(),l=a.getProperty().getIndependentComponents();let u=["varying vec2 tcoordVCVSOutput;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D texture1;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform sampler2D labelOutlineTexture1;","uniform float opacity;","uniform float outlineOpacity;"];if(l){for(let g=1;g{let s=r.Vertex,o=r.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(J("OpenGL has a limit of 6 clipping planes"),c=6),s=W.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,s=W.substitute(s,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,o=W.substitute(o,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,o=W.substitute(o,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}r.Vertex=s,r.Fragment=o},t.getNeedToRebuildShaders=(r,i,a)=>{var l;const s=e.openGLTexture.getComponents(),o=a.getProperty().getIndependentComponents();let c=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(c=!0),c||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((l=r.getProgram())==null?void 0:l.getHandle())===0||e.lastTextureComponents!==s||e.lastIndependentComponents!==o?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=s,e.lastIndependentComponents=o,!0):!1},t.updateShaders=(r,i,a)=>{if(e.lastBoundBO=r,t.getNeedToRebuildShaders(r,i,a)){const s={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(s,i,a);const o=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(s.Vertex,s.Fragment,s.Geometry);o!==r.getProgram()&&(r.setProgram(o),r.getVAO().releaseGraphicsResources()),r.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(r.getProgram());r.getVAO().bind(),t.setMapperShaderParameters(r,i,a),t.setCameraShaderParameters(r,i,a),t.setPropertyShaderParameters(r,i,a)},t.setMapperShaderParameters=(r,i,a)=>{r.getCABO().getElementCount()&&(e.VBOBuildTime>r.getAttributeUpdateTime().getMTime()||r.getShaderSourceTime().getMTime()>r.getAttributeUpdateTime().getMTime())&&(r.getProgram().isAttributeUsed("vertexMC")&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"vertexMC",r.getCABO().getVertexOffset(),r.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||_n("Error setting vertexMC in shader VAO.")),r.getProgram().isAttributeUsed("tcoordMC")&&r.getCABO().getTCoordOffset()&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"tcoordMC",r.getCABO().getTCoordOffset(),r.getCABO().getStride(),e.context.FLOAT,r.getCABO().getTCoordComponents(),e.context.FALSE)||_n("Error setting tcoordMC in shader VAO.")),r.getAttributeUpdateTime().modified());const s=e.openGLTexture.getTextureUnit();r.getProgram().setUniformi("texture1",s);const o=e.openGLTexture.getComponents(),c=a.getProperty().getIndependentComponents();if(c)for(let d=0;d6&&(J("OpenGL has a limit of 6 clipping planes"),d=6);const p=r.getCABO().getCoordShiftAndScaleEnabled()?r.getCABO().getInverseShiftAndScaleMatrix():null,v=p?Fe(e.imagematinv,a.getMatrix()):a.getMatrix();p&&(fe(v,v),ae(v,v,p),fe(v,v)),fe(e.imagemat,e.currentInput.getIndexToWorld()),ae(e.imagematinv,v,e.imagemat);const T=[];for(let C=0;C{const s=r.getProgram(),o=e.openGLImageSlice.getKeyMatrices(),c=e.currentInput,l=c.getIndexToWorld();ae(e.imagemat,o.mcwc,l);const u=e.openGLCamera.getKeyMatrices(i);if(ae(e.imagemat,u.wcpc,e.imagemat),r.getCABO().getCoordShiftAndScaleEnabled()){const g=r.getCABO().getInverseShiftAndScaleMatrix();ae(e.imagemat,e.imagemat,g)}if(s.setUniformMatrix("MCPCMatrix",e.imagemat),a.getProperty().getUseLabelOutline()===!0){const g=c.getWorldToIndex(),h=c.getDimensions();let d=e.renderable.getClosestIJKAxis().ijkMode;d===Qe.NONE&&(d=Qe.K),s.setUniform3i("imageDimensions",h[0],h[1],h[2]),s.setUniformi("sliceAxis",d),s.setUniformMatrix("vWCtoIDX",g);const m=e.openGLCamera.getKeyMatrices(i);Be(e.projectionToWorld,m.wcpc),e.openGLCamera.getKeyMatrices(i),s.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const p=t.getRenderTargetSize();s.setUniformf("vpWidth",p[0]),s.setUniformf("vpHeight",p[1]);const v=t.getRenderTargetOffset();s.setUniformf("vpOffsetX",v[0]/p[0]),s.setUniformf("vpOffsetY",v[1]/p[1])}},t.setPropertyShaderParameters=(r,i,a)=>{const s=r.getProgram(),c=a.getProperty().getOpacity();s.setUniformf("opacity",c)},t.renderPieceStart=(r,i)=>{t.updateBufferObjects(r,i),e.lastBoundBO=null},t.renderPieceDraw=(r,i)=>{const a=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(t.updateShaders(e.tris,r,i),a.drawArrays(a.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(r,i)=>{},t.renderPiece=(r,i)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getCurrentImage(),t.invokeEvent({type:"EndEvent"}),!e.currentInput){_n("No input!");return}t.renderPieceStart(r,i),t.renderPieceDraw(r,i),t.renderPieceFinish(r,i)},t.computeBounds=(r,i)=>{if(!t.getInput()){xa(e.bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(r,i)=>{t.getNeedToRebuildBufferObjects(r,i)&&t.buildBufferObjects(r,i)},t.getNeedToRebuildBufferObjects=(r,i)=>{var a,s,o,c;return e.VBOBuildTime.getMTime(){var V,L,b,U;const a=e.currentInput;if(!a)return;const s=a.getPointData()&&a.getPointData().getScalars();if(!s)return;const o=s.getDataType(),c=s.getNumberOfComponents(),l=i.getProperty(),u=l.getInterpolationType(),f=l.getIndependentComponents(),g=f?c:1,h=f?2*g:1,d=l.getRGBTransferFunction(),m=cn(d,f,g),p=e._openGLRenderWindow.getGraphicsResourceForObject(d);if(!((V=p==null?void 0:p.oglObject)!=null&&V.getHandle())||(p==null?void 0:p.hash)!==m){e.colorTexture=We.newInstance({resizable:!0}),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const I=1024,P=I*h*3,k=new Uint8ClampedArray(P);if(u===Rn.NEAREST?(e.colorTexture.setMinificationFilter(H.NEAREST),e.colorTexture.setMagnificationFilter(H.NEAREST)):(e.colorTexture.setMinificationFilter(H.LINEAR),e.colorTexture.setMagnificationFilter(H.LINEAR)),d){const F=new Float32Array(I*3);for(let N=0;N1?1:0;const N=[Qe.X,Qe.Y,Qe.Z].includes(e.renderable.getSlicingMode())?E:R,_=a.getSpatialExtent(),B=s.getData();let G=null;if(w===Qe.I){G=new B.constructor(I[2]*I[1]*c);let ve=0;for(let Le=0;Le{var c;const i=r.getProperty().getLabelOutlineThicknessByReference(),a=e._openGLRenderWindow.getGraphicsResourceForObject(i),s=`${i.join("-")}`;if(!((c=a==null?void 0:a.oglObject)!=null&&c.getHandle())||(a==null?void 0:a.hash)!==s){const g=new Uint8Array(1024);for(let h=0;h<1024;++h){const d=typeof i[h]<"u"?i[h]:i[0];g[h]=d}e.labelOutlineThicknessTexture=We.newInstance({resizable:!1}),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.labelOutlineThicknessTexture.resetFormatAndType(),e.labelOutlineThicknessTexture.setMinificationFilter(H.NEAREST),e.labelOutlineThicknessTexture.setMagnificationFilter(H.NEAREST),e.labelOutlineThicknessTexture.create2DFromRaw(1024,1,1,me.UNSIGNED_CHAR,g),i&&(e._openGLRenderWindow.setGraphicsResourceForObject(i,e.labelOutlineThicknessTexture,s),i!==e._labelOutlineThicknessArray&&(e._openGLRenderWindow.registerGraphicsResourceUser(i,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._labelOutlineThicknessArray,t)),e._labelOutlineThicknessArray=i)}else e.labelOutlineThicknessTexture=a.oglObject},t.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:r,vsize:i}=e._openGLRenderer.getTiledSizeAndOrigin();return[r,i]},t.getRenderTargetOffset=()=>{const{lowerLeftU:r,lowerLeftV:i}=e._openGLRenderer.getTiledSizeAndOrigin();return[r,i]},t.delete=Jr(()=>{e._openGLRenderWindow&&n(e._openGLRenderWindow)},t.delete)}const _9={VBOBuildTime:0,VBOBuildString:null,openGLTexture:null,tris:null,imagemat:null,imagematinv:null,colorTexture:null,pwfTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0};function U9(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_9,n),He.extend(t,e,n),Jn.implementReplaceShaderCoincidentOffset(t,e,n),Jn.implementBuildShadersWithReplacements(t,e,n),e.tris=Sa.newInstance(),e.imagemat=q(new Float64Array(16)),e.imagematinv=q(new Float64Array(16)),e.projectionToWorld=q(new Float64Array(16)),e.idxToView=q(new Float64Array(16)),e.idxNormalMatrix=wa(new Float64Array(9)),e.modelToView=q(new Float64Array(16)),e.projectionToView=q(new Float64Array(16)),Xe(t,e,[]),e.VBOBuildTime={},Ve(e.VBOBuildTime),F9(t,e)}const k9=Ue(U9,"vtkOpenGLImageMapper");Nt("vtkAbstractImageMapper",k9);const gn={MAX:0,MIN:1,AVERAGE:2},{vtkErrorMacro:gi}=M;function P9(t,e){e.classHierarchy.push("vtkOpenGLImageCPRMapper");function n(r){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(i=>r.unregisterGraphicsResourceUser(i,t))}t.buildPass=r=>{if(r){e.currentRenderPass=null,e.openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const i=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),i&&!i.isDeleted()&&i!==e._openGLRenderWindow&&n(i),e.context=e._openGLRenderWindow.getContext(),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},t.opaquePass=(r,i)=>{r&&(e.currentRenderPass=i,t.render())},t.opaqueZBufferPass=r=>{r&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.getCoincidentParameters=(r,i)=>e.renderable.getResolveCoincidentTopology()===bt.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const r=e.openGLImageSlice.getRenderable(),i=e._openGLRenderer.getRenderable();t.renderPiece(i,r)},t.renderPiece=(r,i)=>{t.invokeEvent({type:"StartEvent"}),e.renderable.update(),t.invokeEvent({type:"EndEvent"}),e.renderable.preRenderCheck()&&(e.currentImageDataInput=e.renderable.getInputData(0),e.currentCenterlineInput=e.renderable.getOrientedCenterline(),t.renderPieceStart(r,i),t.renderPieceDraw(r,i),t.renderPieceFinish(r,i))},t.renderPieceStart=(r,i)=>{t.updateBufferObjects(r,i)},t.renderPieceDraw=(r,i)=>{const a=e.context;e.volumeTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(t.updateShaders(e.tris,r,i),a.drawArrays(a.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.volumeTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(r,i)=>{},t.updateBufferObjects=(r,i)=>{t.getNeedToRebuildBufferObjects(r,i)&&t.buildBufferObjects(r,i),i.getProperty().getInterpolationType()===Rn.NEAREST?(e.volumeTexture.setMinificationFilter(H.NEAREST),e.volumeTexture.setMagnificationFilter(H.NEAREST),e.colorTexture.setMinificationFilter(H.NEAREST),e.colorTexture.setMagnificationFilter(H.NEAREST),e.pwfTexture.setMinificationFilter(H.NEAREST),e.pwfTexture.setMagnificationFilter(H.NEAREST)):(e.volumeTexture.setMinificationFilter(H.LINEAR),e.volumeTexture.setMagnificationFilter(H.LINEAR),e.colorTexture.setMinificationFilter(H.LINEAR),e.colorTexture.setMagnificationFilter(H.LINEAR),e.pwfTexture.setMinificationFilter(H.LINEAR),e.pwfTexture.setMagnificationFilter(H.LINEAR))},t.getNeedToRebuildBufferObjects=(r,i)=>{var s;const a=e.VBOBuildTime.getMTime();return a{var S,O,V,L;const a=e.currentImageDataInput,s=e.currentCenterlineInput,o=(S=a==null?void 0:a.getPointData())==null?void 0:S.getScalars();if(!o)return;const c=e._openGLRenderWindow.getGraphicsResourceForObject(o),l=O0(a,o),u=!((O=c==null?void 0:c.oglObject)!=null&&O.getHandle())||(c==null?void 0:c.hash)!==l,f=e.renderable.getUpdatedExtents(),g=!!f.length;if(u){e.volumeTexture=We.newInstance(),e.volumeTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const b=a.getDimensions();e.volumeTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.volumeTexture.resetFormatAndType(),e.volumeTexture.create3DFilterableFromDataArray(b[0],b[1],b[2],o,e.renderable.getPreferSizeOverAccuracy()),e._openGLRenderWindow.setGraphicsResourceForObject(o,e.volumeTexture,l),o!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(o,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,t)),e._scalars=o}else e.volumeTexture=c.oglObject;if(g){e.renderable.setUpdatedExtents([]);const b=a.getDimensions();e.volumeTexture.create3DFilterableFromDataArray(b[0],b[1],b[2],o,!1,f)}const h=o.getNumberOfComponents(),d=i.getProperty(),m=d.getIndependentComponents(),p=m?h:1,v=m?2*p:1,T=d.getRGBTransferFunction(),C=cn(T,m,p),y=e._openGLRenderWindow.getGraphicsResourceForObject(T);if(!((V=y==null?void 0:y.oglObject)!=null&&V.getHandle())||(y==null?void 0:y.hash)!==C){const U=1024*v*3,I=new Uint8ClampedArray(U);if(e.colorTexture=We.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),T){const P=new Float32Array(3072);for(let k=0;k{const s=e.volumeTexture.getComponents(),o=a.getProperty().getIndependentComponents(),c=!!e.renderable.getCenterPoint(),l=e.renderable.getUseUniformOrientation(),u=e.renderable.isProjectionEnabled()&&e.renderable.getProjectionMode();return r.getProgram()===0||e.lastUseCenterPoint!==c||e.lastUseUniformOrientation!==l||e.lastProjectionMode!==u||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||e.lastTextureComponents!==s||e.lastIndependentComponents!==o?(e.lastUseCenterPoint=c,e.lastUseUniformOrientation=l,e.lastProjectionMode=u,e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=s,e.lastIndependentComponents=o,!0):!1},t.buildShaders=(r,i,a)=>{t.getShaderTemplate(r,i,a),t.replaceShaderValues(r,i,a)},t.replaceShaderValues=(r,i,a)=>{let s=r.Vertex,o=r.Fragment;const c=["vec3 applyQuaternionToVec(vec4 q, vec3 v) {"," float uvx = q.y * v.z - q.z * v.y;"," float uvy = q.z * v.x - q.x * v.z;"," float uvz = q.x * v.y - q.y * v.x;"," float uuvx = q.y * uvz - q.z * uvy;"," float uuvy = q.z * uvx - q.x * uvz;"," float uuvz = q.x * uvy - q.y * uvx;"," float w2 = q.w * 2.0;"," uvx *= w2;"," uvy *= w2;"," uvz *= w2;"," uuvx *= 2.0;"," uuvy *= 2.0;"," uuvz *= 2.0;"," return vec3(v.x + uvx + uuvx, v.y + uvy + uuvy, v.z + uvz + uuvz);","}"];s=W.substitute(s,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,s=W.substitute(s,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result;const l=["attribute vec3 centerlinePosition;","attribute float quadIndex;","uniform float width;","out vec2 quadOffsetVSOutput;","out vec3 centerlinePosVSOutput;"],u=e.renderable.isProjectionEnabled(),f=e.renderable.getUseUniformOrientation();f?(l.push("out vec3 samplingDirVSOutput;","uniform vec4 centerlineOrientation;","uniform vec3 tangentDirection;",...c),u&&l.push("out vec3 projectionDirVSOutput;","uniform vec3 bitangentDirection;")):l.push("out vec4 centerlineTopOrientationVSOutput;","out vec4 centerlineBotOrientationVSOutput;","attribute vec4 centerlineTopOrientation;","attribute vec4 centerlineBotOrientation;"),s=W.substitute(s,"//VTK::Color::Dec",l).result;const g=["quadOffsetVSOutput = vec2(width * (mod(quadIndex, 2.0) == 0.0 ? -0.5 : 0.5), quadIndex > 1.0 ? 0.0 : 1.0);","centerlinePosVSOutput = centerlinePosition;"];f?(g.push("samplingDirVSOutput = applyQuaternionToVec(centerlineOrientation, tangentDirection);"),u&&g.push("projectionDirVSOutput = applyQuaternionToVec(centerlineOrientation, bitangentDirection);")):g.push("centerlineTopOrientationVSOutput = centerlineTopOrientation;","centerlineBotOrientationVSOutput = centerlineBotOrientation;"),s=W.substitute(s,"//VTK::Color::Impl",g).result;const h=e.volumeTexture.getComponents(),d=a.getProperty().getIndependentComponents();let m=["uniform mat4 MCTCMatrix; // Model coordinates to texture coordinates","in vec2 quadOffsetVSOutput;","in vec3 centerlinePosVSOutput;","uniform highp sampler3D volumeTexture;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;"];u&&m.push("uniform vec3 volumeSizeMC;","uniform int projectionSlabNumberOfSamples;","uniform float projectionConstantOffset;","uniform float projectionStepLength;"),f?(m.push("in vec3 samplingDirVSOutput;"),u&&m.push("in vec3 projectionDirVSOutput;")):(m.push("uniform vec3 tangentDirection;","in vec4 centerlineTopOrientationVSOutput;","in vec4 centerlineBotOrientationVSOutput;",...c),u&&m.push("uniform vec3 bitangentDirection;"));const p=e.renderable.getCenterPoint();if(p&&m.push("uniform vec3 globalCenterPoint;"),d){for(let T=1;T 0.999 || qCosAngle < -0.999) {"," // Use LERP instead of SLERP when the two quaternions are close or opposite"," interpolatedOrientation = normalize(mix(q0, q1, quadOffsetVSOutput.y));","} else {"," float omega = acos(qCosAngle);"," interpolatedOrientation = normalize(sin((1.0 - quadOffsetVSOutput.y) * omega) * q0 + sin(quadOffsetVSOutput.y * omega) * q1);","}","vec3 samplingDirection = applyQuaternionToVec(interpolatedOrientation, tangentDirection);"),u&&v.push("vec3 projectionDirection = applyQuaternionToVec(interpolatedOrientation, bitangentDirection);")),p?v.push("float baseOffset = dot(samplingDirection, globalCenterPoint - centerlinePosVSOutput);","float horizontalOffset = quadOffsetVSOutput.x + baseOffset;"):v.push("float horizontalOffset = quadOffsetVSOutput.x;"),v.push("vec3 volumePosMC = centerlinePosVSOutput + horizontalOffset * samplingDirection;","vec3 volumePosTC = (MCTCMatrix * vec4(volumePosMC, 1.0)).xyz;","if (any(lessThan(volumePosTC, vec3(0.0))) || any(greaterThan(volumePosTC, vec3(1.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}"),u){const T=e.renderable.getProjectionMode();switch(T){case gn.MIN:v.push("const vec4 initialProjectionTextureValue = vec4(1.0);");break;case gn.MAX:case gn.AVERAGE:default:v.push("const vec4 initialProjectionTextureValue = vec4(0.0);");break}switch(v.push("vec3 projectionScaledDirection = projectionDirection / volumeSizeMC;","vec3 projectionStep = projectionStepLength * projectionScaledDirection;","vec3 projectionStartPosition = volumePosTC + projectionConstantOffset * projectionScaledDirection;","vec4 tvalue = initialProjectionTextureValue;","for (int projectionSampleIdx = 0; projectionSampleIdx < projectionSlabNumberOfSamples; ++projectionSampleIdx) {"," vec3 projectionSamplePosition = projectionStartPosition + float(projectionSampleIdx) * projectionStep;"," vec4 sampledTextureValue = texture(volumeTexture, projectionSamplePosition);"),T){case gn.MAX:v.push(" tvalue = max(tvalue, sampledTextureValue);");break;case gn.MIN:v.push(" tvalue = min(tvalue, sampledTextureValue);");break;case gn.AVERAGE:default:v.push(" tvalue = tvalue + sampledTextureValue;");break}v.push("}"),T===gn.AVERAGE&&v.push("tvalue = tvalue / float(projectionSlabNumberOfSamples);")}else v.push("vec4 tvalue = texture(volumeTexture, volumePosTC);");if(d){const T=["r","g","b","a"];for(let C=0;C{let s=r.Vertex,o=r.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(M.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),c=6),s=W.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,s=W.substitute(s,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,o=W.substitute(o,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,o=W.substitute(o,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}r.Vertex=s,r.Fragment=o},t.getShaderTemplate=(r,i,a)=>{r.Vertex=E2,r.Fragment=R2,r.Geometry=""},t.setMapperShaderParameters=(r,i,a)=>{const s=r.getProgram(),o=r.getCABO();o.getElementCount()&&(e.VBOBuildTime.getMTime()>r.getAttributeUpdateTime().getMTime()||r.getShaderSourceTime().getMTime()>r.getAttributeUpdateTime().getMTime())&&(s.isAttributeUsed("vertexMC")&&(r.getVAO().addAttributeArray(s,o,"vertexMC",o.getVertexOffset(),o.getStride(),e.context.FLOAT,3,e.context.FALSE)||gi("Error setting vertexMC in shader VAO.")),r.getCABO().getCustomData().forEach(h=>{h&&s.isAttributeUsed(h.name)&&!r.getVAO().addAttributeArray(s,o,h.name,h.offset,o.getStride(),e.context.FLOAT,h.components,e.context.FALSE)&&gi(`Error setting ${h.name} in shader VAO.`)}),r.getAttributeUpdateTime().modified());const c=e.volumeTexture.getTextureUnit();if(s.setUniformi("volumeTexture",c),s.setUniformf("width",e.renderable.getWidth()),r.getProgram().setUniform4fv("backgroundColor",e.renderable.getBackgroundColor()),s.isUniformUsed("tangentDirection")){const h=e.renderable.getTangentDirection();r.getProgram().setUniform3fArray("tangentDirection",h)}if(s.isUniformUsed("bitangentDirection")){const h=e.renderable.getBitangentDirection();r.getProgram().setUniform3fArray("bitangentDirection",h)}if(s.isUniformUsed("centerlineOrientation")){const h=e.renderable.getUniformOrientation();r.getProgram().setUniform4fv("centerlineOrientation",h)}if(s.isUniformUsed("globalCenterPoint")){const h=e.renderable.getCenterPoint();s.setUniform3fArray("globalCenterPoint",h)}if(e.renderable.isProjectionEnabled()){const h=e.currentImageDataInput,d=h.getSpacing(),m=h.getDimensions(),p=e.renderable.getProjectionSlabThickness(),v=e.renderable.getProjectionSlabNumberOfSamples(),T=Rh([],d,m);s.setUniform3fArray("volumeSizeMC",T),s.setUniformi("projectionSlabNumberOfSamples",v);const C=-.5*p;s.setUniformf("projectionConstantOffset",C);const y=p/(v-1);s.setUniformf("projectionStepLength",y)}const l=e.currentImageDataInput,u=l.getWorldToIndex(),f=h0(new Float32Array(16),Cl([],l.getDimensions())),g=Yi(f,f,u);if(s.setUniformMatrix("MCTCMatrix",g),e.haveSeenDepthRequest&&r.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),e.renderable.getNumberOfClippingPlanes()){let h=e.renderable.getNumberOfClippingPlanes();h>6&&(M.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),h=6);const m=o.getCoordShiftAndScaleEnabled()?o.getInverseShiftAndScaleMatrix():null,p=m?Fe(e.imagematinv,a.getMatrix()):a.getMatrix();m&&(fe(p,p),ae(p,p,m),fe(p,p)),fe(e.imagemat,e.currentImageDataInput.getIndexToWorld()),ae(e.imagematinv,p,e.imagemat);const v=[];for(let T=0;T{const s=e.openGLImageSlice.getKeyMatrices().mcwc,o=e.openGLCamera.getKeyMatrices(i).wcpc;if(ae(e.imagemat,o,s),r.getCABO().getCoordShiftAndScaleEnabled()){const c=r.getCABO().getInverseShiftAndScaleMatrix();ae(e.imagemat,e.imagemat,c)}r.getProgram().setUniformMatrix("MCPCMatrix",e.imagemat)},t.setPropertyShaderParameters=(r,i,a)=>{const s=r.getProgram(),o=a.getProperty(),c=o.getOpacity();s.setUniformf("opacity",c);const l=e.volumeTexture.getComponents(),u=o.getIndependentComponents();if(u)for(let d=0;d{if(t.getNeedToRebuildShaders(r,i,a)){const s={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(s,i,a);const o=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(s.Vertex,s.Fragment,s.Geometry);o!==r.getProgram()&&(r.setProgram(o),r.getVAO().releaseGraphicsResources()),r.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(r.getProgram());r.getVAO().bind(),t.setMapperShaderParameters(r,i,a),t.setCameraShaderParameters(r,i,a),t.setPropertyShaderParameters(r,i,a)},t.delete=M.chain(()=>{e._openGLRenderWindow&&n(e._openGLRenderWindow)},t.delete)}const G9={currentRenderPass:null,volumeTexture:null,colorTexture:null,pwfTexture:null,tris:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0,lastIndependentComponents:0,imagemat:null,imagematinv:null};function B9(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,G9,n),He.extend(t,e,n),Jn.implementReplaceShaderCoincidentOffset(t,e,n),M.algo(t,e,2,0),e.tris=Sa.newInstance(),e.volumeTexture=null,e.colorTexture=null,e.pwfTexture=null,e.imagemat=q(new Float64Array(16)),e.imagematinv=q(new Float64Array(16)),e.VBOBuildTime={},M.obj(e.VBOBuildTime,{mtime:0}),P9(t,e)}const A9=M.newInstance(B9,"vtkOpenGLImageCPRMapper");Nt("vtkImageCPRMapper",A9);function W9(t,e){e.classHierarchy.push("vtkOpenGLImageSlice"),t.buildPass=n=>{if(!(!e.renderable||!e.renderable.getVisibility())&&n){if(!e.renderable)return;e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes()}},t.traverseZBufferPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children.forEach(r=>{r.traverse(n)}),t.apply(n,!1))},t.traverseOpaqueZBufferPass=n=>t.traverseOpaquePass(n),t.traverseOpaquePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children.forEach(r=>{r.traverse(n)}),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children.forEach(r=>{r.traverse(n)}),t.apply(n,!1))},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?r.incrementOpaqueActorCount():r.incrementTranslucentActorCount()}},t.zBufferPass=(n,r)=>t.opaquePass(n,r),t.opaqueZBufferPass=(n,r)=>t.opaquePass(n,r),t.opaquePass=(n,r)=>{n&&e.context.depthMask(!0)},t.translucentPass=(n,r)=>{e.context.depthMask(!n)},t.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(Fe(e.keyMatrices.mcwc,e.renderable.getMatrix()),fe(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.keyMatrixTime.modified()),e.keyMatrices)}const z9={context:null,keyMatrixTime:null,keyMatrices:null};function $9(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,z9,n),He.extend(t,e,n),e.keyMatrixTime={},Ve(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:q(new Float64Array(16))},Xe(t,e,["context"]),W9(t,e)}const j9=Ue($9,"vtkOpenGLImageSlice");Nt("vtkImageSlice",j9);const{vtkDebugMacro:H9}=Lt;function K9(t,e){e.classHierarchy.push("vtkOpenGLPixelSpaceCallbackMapper"),t.opaquePass=(n,r)=>{e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow");const i=e._openGLRenderer.getAspectRatio(),a=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,s=e._openGLRenderer.getTiledSizeAndOrigin();let o=null;if(e.renderable.getUseZValues()){const c=r.getZBufferTexture(),l=Math.floor(c.getWidth()),u=Math.floor(c.getHeight()),f=e._openGLRenderWindow.getContext();c.bind();const g=r.getFramebuffer();g?g.saveCurrentBindingsAndBuffers():H9("No framebuffer to save/restore");const h=f.createFramebuffer();f.bindFramebuffer(f.FRAMEBUFFER,h),f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,c.getHandle(),0),f.checkFramebufferStatus(f.FRAMEBUFFER)===f.FRAMEBUFFER_COMPLETE&&(o=new Uint8Array(l*u*4),f.viewport(0,0,l,u),f.readPixels(0,0,l,u,f.RGBA,f.UNSIGNED_BYTE,o)),g&&g.restorePreviousBindingsAndBuffers(),f.deleteFramebuffer(h)}e.renderable.invokeCallback(e.renderable.getInputData(),a,i,s,o)},t.queryPass=(n,r)=>{n&&e.renderable.getUseZValues()&&r.requestDepth()}}const q9={};function Y9(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,q9,n),He.extend(t,e,n),K9(t,e)}const X9=Ue(Y9,"vtkOpenGLPixelSpaceCallbackMapper");Nt("vtkPixelSpaceCallbackMapper",X9);const{vtkDebugMacro:Z9}=Lt;function J9(t,e){e.classHierarchy.push("vtkOpenGLRenderer"),t.buildPass=n=>{if(n){if(!e.renderable)return;t.updateLights(),t.prepareNodes(),t.addMissingNode(e.renderable.getActiveCamera()),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes()}},t.updateLights=()=>{let n=0;const r=e.renderable.getLightsByReference();for(let i=0;i0&&n++;return n||(Z9("No lights are on, creating one."),e.renderable.createLight()),n},t.zBufferPass=n=>{if(n){let r=0;const i=e.context;e.renderable.getTransparent()||(e.context.clearColor(1,0,0,1),r|=i.COLOR_BUFFER_BIT),e.renderable.getPreserveDepthBuffer()||(i.clearDepth(1),r|=i.DEPTH_BUFFER_BIT,e.context.depthMask(!0));const a=t.getTiledSizeAndOrigin();i.enable(i.SCISSOR_TEST),i.scissor(a.lowerLeftU,a.lowerLeftV,a.usize,a.vsize),i.viewport(a.lowerLeftU,a.lowerLeftV,a.usize,a.vsize),i.colorMask(!0,!0,!0,!0),r&&i.clear(r),i.enable(i.DEPTH_TEST)}},t.opaqueZBufferPass=n=>t.zBufferPass(n),t.cameraPass=n=>{n&&t.clear()},t.getAspectRatio=()=>{const n=e._parent.getSizeByReference(),r=e.renderable.getViewportByReference();return n[0]*(r[2]-r[0])/((r[3]-r[1])*n[1])},t.getTiledSizeAndOrigin=()=>{const n=e.renderable.getViewportByReference(),r=[0,0,1,1],i=n[0]-r[0],a=n[1]-r[1],s=e._parent.normalizedDisplayToDisplay(i,a),o=Math.round(s[0]),c=Math.round(s[1]),l=n[2]-r[0],u=n[3]-r[1],f=e._parent.normalizedDisplayToDisplay(l,u);let g=Math.round(f[0])-o,h=Math.round(f[1])-c;return g<0&&(g=0),h<0&&(h=0),{usize:g,vsize:h,lowerLeftU:o,lowerLeftV:c}},t.clear=()=>{let n=0;const r=e.context;if(!e.renderable.getTransparent()){const a=e.renderable.getBackgroundByReference();r.clearColor(a[0],a[1],a[2],a[3]),n|=r.COLOR_BUFFER_BIT}e.renderable.getPreserveDepthBuffer()||(r.clearDepth(1),n|=r.DEPTH_BUFFER_BIT,r.depthMask(!0)),r.colorMask(!0,!0,!0,!0);const i=t.getTiledSizeAndOrigin();r.enable(r.SCISSOR_TEST),r.scissor(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize),r.viewport(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize),n&&r.clear(n),r.enable(r.DEPTH_TEST)},t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources(),e.renderable&&e.renderable.getViewProps().forEach(n=>{n.modified()})},t.setOpenGLRenderWindow=n=>{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))}}const Q9={context:null,_openGLRenderWindow:null,selector:null};function ed(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Q9,n),He.extend(t,e,n),Tt(t,e,["shaderCache"]),Xe(t,e,["selector"]),ya(t,e,["openGLRenderWindow"]),J9(t,e)}const td=Ue(ed,"vtkOpenGLRenderer");Nt("vtkRenderer",td);function nd(t,e){e.classHierarchy.push("vtkOpenGLVolume"),t.buildPass=n=>{!e.renderable||!e.renderable.getVisibility()||n&&(e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;r.incrementVolumeCount()}},t.traverseVolumePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children[0].traverse(n),t.apply(n,!1))},t.volumePass=n=>{!e.renderable||!e.renderable.getVisibility()||e.context.depthMask(!n)},t.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),Fe(e.MCWCMatrix,e.renderable.getMatrix()),fe(e.MCWCMatrix,e.MCWCMatrix),e.renderable.getIsIdentity()?wa(e.normalMatrix):(ul(e.normalMatrix,e.MCWCMatrix),l0(e.normalMatrix,e.normalMatrix),Y3(e.normalMatrix,e.normalMatrix)),e.keyMatrixTime.modified()),{mcwc:e.MCWCMatrix,normalMatrix:e.normalMatrix})}const rd={};function id(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,rd,n),He.extend(t,e,n),e.keyMatrixTime={},Ve(e.keyMatrixTime,{mtime:0}),e.normalMatrix=new Float64Array(9),e.MCWCMatrix=new Float64Array(16),Xe(t,e,["context"]),nd(t,e)}const ad=Ue(id,"vtkOpenGLVolume");Nt("vtkVolume",ad);const Os={NEAREST:0,LINEAR:1,FAST_LINEAR:2},O2={FRACTIONAL:0,PROPORTIONAL:1},Ni={CUSTOM:0,ADDITIVE:1,COLORIZE:2};var D2={InterpolationType:Os,OpacityMode:O2,ColorMixPreset:Ni},sd=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +attribute vec4 vertexDC; + +varying vec3 vertexVCVSOutput; +uniform mat4 PCVCMatrix; + +uniform float dcxmin; +uniform float dcxmax; +uniform float dcymin; +uniform float dcymax; + +void main() +{ + // dcsmall is the device coords reduced to the + // x y area covered by the volume + vec4 dcsmall = vec4( + dcxmin + 0.5 * (vertexDC.x + 1.0) * (dcxmax - dcxmin), + dcymin + 0.5 * (vertexDC.y + 1.0) * (dcymax - dcymin), + vertexDC.z, + vertexDC.w); + vec4 vcpos = PCVCMatrix * dcsmall; + vertexVCVSOutput = vcpos.xyz/vcpos.w; + gl_Position = dcsmall; +} +`,od=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkVolumeFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the volume mappers fragment shader + +// the output of this shader +//VTK::Output::Dec + +varying vec3 vertexVCVSOutput; + +// first declare the settings from the mapper +// that impact the code paths in here + +// always set vtkNumComponents 1,2,3,4 +//VTK::NumComponents + +// possibly define vtkTrilinearOn +//VTK::TrilinearOn + +// possibly define UseIndependentComponents +//VTK::IndependentComponentsOn + +// possibly define vtkCustomComponentsColorMix +//VTK::CustomComponentsColorMixOn + +// possibly define any "proportional" components +//VTK::vtkProportionalComponents + +// possibly define any components that are forced to nearest interpolation +//VTK::vtkForceNearestComponents + +// Define the blend mode to use +#define vtkBlendMode //VTK::BlendMode + +// Possibly define vtkImageLabelOutlineOn +//VTK::ImageLabelOutlineOn + +// Possibly define vtkLabelEdgeProjectionOn +//VTK::LabelEdgeProjectionOn + + +#ifdef vtkImageLabelOutlineOn + uniform float outlineOpacity; + uniform float vpWidth; + uniform float vpHeight; + uniform float vpOffsetX; + uniform float vpOffsetY; + uniform mat4 PCWCMatrix; + uniform mat4 vWCtoIDX; + + const int MAX_SEGMENT_INDEX = 256; // Define as per expected maximum + // bool seenSegmentsByOriginalPos[MAX_SEGMENT_INDEX]; + #define MAX_SEGMENTS 256 + #define UINT_SIZE 32 + #define BITMASK_SIZE ((MAX_SEGMENTS + UINT_SIZE - 1) / UINT_SIZE) + + uint bitmask[BITMASK_SIZE]; + + // Set the corresponding bit in the bitmask + void setBit(int segmentIndex) { + int index = segmentIndex / UINT_SIZE; + int bitIndex = segmentIndex % UINT_SIZE; + bitmask[index] |= 1u << bitIndex; + } + + // Check if a bit is set in the bitmask + bool isBitSet(int segmentIndex) { + int index = segmentIndex / UINT_SIZE; + int bitIndex = segmentIndex % UINT_SIZE; + return ((bitmask[index] & (1u << bitIndex)) != 0u); + } +#endif + +// define vtkLightComplexity +//VTK::LightComplexity +#if vtkLightComplexity > 0 +uniform float vSpecularPower; +uniform float vAmbient; +uniform float vDiffuse; +uniform float vSpecular; +//VTK::Light::Dec +#endif + +//VTK::VolumeShadowOn +//VTK::SurfaceShadowOn +//VTK::localAmbientOcclusionOn +//VTK::LAO::Dec +//VTK::VolumeShadow::Dec + +// define vtkComputeNormalFromOpacity +//VTK::vtkComputeNormalFromOpacity + +// possibly define vtkGradientOpacityOn +//VTK::GradientOpacityOn +#ifdef vtkGradientOpacityOn +uniform float goscale0; +uniform float goshift0; +uniform float gomin0; +uniform float gomax0; +#ifdef UseIndependentComponents +#if vtkNumComponents > 1 +uniform float goscale1; +uniform float goshift1; +uniform float gomin1; +uniform float gomax1; +#if vtkNumComponents > 2 +uniform float goscale2; +uniform float goshift2; +uniform float gomin2; +uniform float gomax2; +#if vtkNumComponents > 3 +uniform float goscale3; +uniform float goshift3; +uniform float gomin3; +uniform float gomax3; +#endif +#endif +#endif +#endif +#endif + +// if you want to see the raw tiled +// data in webgl1 uncomment the following line +// #define debugtile + +// camera values +uniform float camThick; +uniform float camNear; +uniform float camFar; +uniform int cameraParallel; + +// values describing the volume geometry +uniform vec3 vOriginVC; +uniform vec3 vSpacing; +uniform ivec3 volumeDimensions; // 3d texture dimensions +uniform vec3 vPlaneNormal0; +uniform float vPlaneDistance0; +uniform vec3 vPlaneNormal1; +uniform float vPlaneDistance1; +uniform vec3 vPlaneNormal2; +uniform float vPlaneDistance2; +uniform vec3 vPlaneNormal3; +uniform float vPlaneDistance3; +uniform vec3 vPlaneNormal4; +uniform float vPlaneDistance4; +uniform vec3 vPlaneNormal5; +uniform float vPlaneDistance5; + +//VTK::ClipPlane::Dec + +// opacity and color textures +uniform sampler2D otexture; +uniform float oshift0; +uniform float oscale0; +uniform sampler2D ctexture; +uniform float cshift0; +uniform float cscale0; + +#if vtkNumComponents >= 2 +uniform float oshift1; +uniform float oscale1; +uniform float cshift1; +uniform float cscale1; +#endif +#if vtkNumComponents >= 3 +uniform float oshift2; +uniform float oscale2; +uniform float cshift2; +uniform float cscale2; +#endif +#if vtkNumComponents >= 4 +uniform float oshift3; +uniform float oscale3; +uniform float cshift3; +uniform float cscale3; +#endif + +// jitter texture +uniform sampler2D jtexture; +uniform sampler2D ttexture; + + +// some 3D texture values +uniform float sampleDistance; +uniform vec3 vVCToIJK; +uniform vec3 volumeSpacings; // spacing in the world coorindates + + +// the heights defined below are the locations +// for the up to four components of the tfuns +// the tfuns have a height of 2XnumComps pixels so the +// values are computed to hit the middle of the two rows +// for that component +#ifdef UseIndependentComponents +#if vtkNumComponents == 1 +uniform float mix0; +#define height0 0.5 +#endif +#if vtkNumComponents == 2 +uniform float mix0; +uniform float mix1; +#define height0 0.25 +#define height1 0.75 +#endif +#if vtkNumComponents == 3 +uniform float mix0; +uniform float mix1; +uniform float mix2; +#define height0 0.17 +#define height1 0.5 +#define height2 0.83 +#endif +#if vtkNumComponents == 4 +uniform float mix0; +uniform float mix1; +uniform float mix2; +uniform float mix3; +#define height0 0.125 +#define height1 0.375 +#define height2 0.625 +#define height3 0.875 +#endif +#endif + +uniform vec4 ipScalarRangeMin; +uniform vec4 ipScalarRangeMax; + +// declaration for intermixed geometry +//VTK::ZBuffer::Dec + +//======================================================================= +// global and custom variables (a temporary section before photorealistics rendering module is complete) +vec3 rayDirVC; +float sampleDistanceISVS; +float sampleDistanceIS; + +#define SQRT3 1.7321 +#define INV4PI 0.0796 +#define EPSILON 0.001 +#define PI 3.1415 +#define PI2 9.8696 + +//======================================================================= +// Webgl2 specific version of functions +#if __VERSION__ == 300 + +uniform highp sampler3D texture1; + +vec4 getTextureValue(vec3 pos) +{ + vec4 tmp = texture(texture1, pos); + + #if defined(vtkComponent0ForceNearest) || \\ + defined(vtkComponent1ForceNearest) || \\ + defined(vtkComponent2ForceNearest) || \\ + defined(vtkComponent3ForceNearest) + vec3 nearestPos = (floor(pos * vec3(volumeDimensions)) + 0.5) / vec3(volumeDimensions); + vec4 nearestValue = texture(texture1, nearestPos); + #ifdef vtkComponent0ForceNearest + tmp[0] = nearestValue[0]; + #endif + #ifdef vtkComponent1ForceNearest + tmp[1] = nearestValue[1]; + #endif + #ifdef vtkComponent2ForceNearest + tmp[2] = nearestValue[2]; + #endif + #ifdef vtkComponent3ForceNearest + tmp[3] = nearestValue[3]; + #endif + #endif + + #ifndef UseIndependentComponents + #if vtkNumComponents == 1 + tmp.a = tmp.r; + #endif + #if vtkNumComponents == 2 + tmp.a = tmp.g; + #endif + #if vtkNumComponents == 3 + tmp.a = length(tmp.rgb); + #endif + #endif + + return tmp; +} + +//======================================================================= +// WebGL1 specific version of functions +#else + +uniform sampler2D texture1; + +uniform float texWidth; +uniform float texHeight; +uniform int xreps; +uniform int xstride; +uniform int ystride; + +// if computing trilinear values from multiple z slices +#ifdef vtkTrilinearOn +vec4 getTextureValue(vec3 ijk) +{ + float zoff = 1.0/float(volumeDimensions.z); + vec4 val1 = getOneTextureValue(ijk); + vec4 val2 = getOneTextureValue(vec3(ijk.xy, ijk.z + zoff)); + + float indexZ = float(volumeDimensions)*ijk.z; + float zmix = indexZ - floor(indexZ); + + return mix(val1, val2, zmix); +} + +vec4 getOneTextureValue(vec3 ijk) +#else // nearest or fast linear +vec4 getTextureValue(vec3 ijk) +#endif +{ + vec3 tdims = vec3(volumeDimensions); + +#ifdef debugtile + vec2 tpos = vec2(ijk.x, ijk.y); + vec4 tmp = texture2D(texture1, tpos); + tmp.a = 1.0; + +#else + int z = int(ijk.z * tdims.z); + int yz = z / xreps; + int xz = z - yz*xreps; + + int tileWidth = volumeDimensions.x/xstride; + int tileHeight = volumeDimensions.y/ystride; + + xz *= tileWidth; + yz *= tileHeight; + + float ni = float(xz) + (ijk.x*float(tileWidth)); + float nj = float(yz) + (ijk.y*float(tileHeight)); + + vec2 tpos = vec2(ni/texWidth, nj/texHeight); + + vec4 tmp = texture2D(texture1, tpos); + +#if vtkNumComponents == 1 + tmp.a = tmp.r; +#endif +#if vtkNumComponents == 2 + tmp.g = tmp.a; +#endif +#if vtkNumComponents == 3 + tmp.a = length(tmp.rgb); +#endif +#endif + + return tmp; +} + +// End of Webgl1 specific code +//======================================================================= +#endif + +//======================================================================= +// transformation between VC and IS space + +// convert vector position from idx to vc +#if (vtkLightComplexity > 0) || (defined vtkClippingPlanesOn) +vec3 IStoVC(vec3 posIS){ + vec3 posVC = posIS / vVCToIJK; + return posVC.x * vPlaneNormal0 + + posVC.y * vPlaneNormal2 + + posVC.z * vPlaneNormal4 + + vOriginVC; +} + +// convert vector position from vc to idx +vec3 VCtoIS(vec3 posVC){ + posVC = posVC - vOriginVC; + posVC = vec3( + dot(posVC, vPlaneNormal0), + dot(posVC, vPlaneNormal2), + dot(posVC, vPlaneNormal4)); + return posVC * vVCToIJK; +} +#endif + +//Rotate vector to view coordinate +#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) +void rotateToViewCoord(inout vec3 dirIS){ + dirIS.xyz = + dirIS.x * vPlaneNormal0 + + dirIS.y * vPlaneNormal2 + + dirIS.z * vPlaneNormal4; +} + +//Rotate vector to idx coordinate +vec3 rotateToIDX(vec3 dirVC){ + vec3 dirIS; + dirIS.xyz = vec3( + dot(dirVC, vPlaneNormal0), + dot(dirVC, vPlaneNormal2), + dot(dirVC, vPlaneNormal4)); + return dirIS; +} +#endif + +//======================================================================= +// Given a normal compute the gradient opacity factors +float computeGradientOpacityFactor( + float normalMag, float goscale, float goshift, float gomin, float gomax) +{ + return clamp(normalMag * goscale + goshift, gomin, gomax); +} + +//======================================================================= +// compute the normal and gradient magnitude for a position, uses forward difference +#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) + #ifdef vtkClippingPlanesOn + void adjustClippedVoxelValues(vec3 pos, vec3 texPos[3], inout vec3 g1) + { + vec3 g1VC[3]; + for (int i = 0; i < 3; ++i) + { + g1VC[i] = IStoVC(texPos[i]); + } + vec3 posVC = IStoVC(pos); + for (int i = 0; i < clip_numPlanes; ++i) + { + for (int j = 0; j < 3; ++j) + { + if(dot(vec3(vClipPlaneOrigins[i] - g1VC[j].xyz), vClipPlaneNormals[i]) > 0.0) + { + g1[j] = 0.0; + } + } + } + } + #endif + + #ifdef vtkComputeNormalFromOpacity + vec4 computeDensityNormal(vec3 opacityUCoords[2], float opactityTextureHeight, float gradientOpacity) { + vec3 opacityG1, opacityG2; + opacityG1.x = texture2D(otexture, vec2(opacityUCoords[0].x, opactityTextureHeight)).r; + opacityG1.y = texture2D(otexture, vec2(opacityUCoords[0].y, opactityTextureHeight)).r; + opacityG1.z = texture2D(otexture, vec2(opacityUCoords[0].z, opactityTextureHeight)).r; + opacityG2.x = texture2D(otexture, vec2(opacityUCoords[1].x, opactityTextureHeight)).r; + opacityG2.y = texture2D(otexture, vec2(opacityUCoords[1].y, opactityTextureHeight)).r; + opacityG2.z = texture2D(otexture, vec2(opacityUCoords[1].z, opactityTextureHeight)).r; + opacityG1.xyz *= gradientOpacity; + opacityG2.xyz *= gradientOpacity; + + vec4 opacityG = vec4(opacityG1 - opacityG2, 1.0f); + // divide by spacing + opacityG.xyz /= vSpacing; + opacityG.w = length(opacityG.xyz); + // rotate to View Coords + rotateToViewCoord(opacityG.xyz); + if (!all(equal(opacityG.xyz, vec3(0.0)))) { + return vec4(normalize(opacityG.xyz),opacityG.w); + } else { + return vec4(0.0); + } + } + + vec4 computeNormalForDensity(vec3 pos, vec3 tstep, out vec3 scalarInterp[2], const int opacityComponent) + { + vec3 xvec = vec3(tstep.x, 0.0, 0.0); + vec3 yvec = vec3(0.0, tstep.y, 0.0); + vec3 zvec = vec3(0.0, 0.0, tstep.z); + vec3 texPosPVec[3]; + texPosPVec[0] = pos + xvec; + texPosPVec[1] = pos + yvec; + texPosPVec[2] = pos + zvec; + vec3 texPosNVec[3]; + texPosNVec[0] = pos - xvec; + texPosNVec[1] = pos - yvec; + texPosNVec[2] = pos - zvec; + vec3 g1, g2; + + scalarInterp[0].x = getTextureValue(texPosPVec[0])[opacityComponent]; + scalarInterp[0].y = getTextureValue(texPosPVec[1])[opacityComponent]; + scalarInterp[0].z = getTextureValue(texPosPVec[2])[opacityComponent]; + scalarInterp[1].x = getTextureValue(texPosNVec[0])[opacityComponent]; + scalarInterp[1].y = getTextureValue(texPosNVec[1])[opacityComponent]; + scalarInterp[1].z = getTextureValue(texPosNVec[2])[opacityComponent]; + + #ifdef vtkClippingPlanesOn + adjustClippedVoxelValues(pos, texPosPVec, scalarInterp[0]); + adjustClippedVoxelValues(pos, texPosNVec, scalarInterp[1]); + #endif + vec4 result; + result.x = scalarInterp[0].x - scalarInterp[1].x; + result.y = scalarInterp[0].y - scalarInterp[1].y; + result.z = scalarInterp[0].z - scalarInterp[1].z; + // divide by spacing + result.xyz /= vSpacing; + result.w = length(result.xyz); + // rotate to View Coords + rotateToViewCoord(result.xyz); + if (length(result.xyz) > 0.0) { + return vec4(normalize(result.xyz),result.w); + } else { + return vec4(0.0); + } + } + #endif + + // only works with dependent components + vec4 computeNormal(vec3 pos, vec3 tstep) + { + vec3 xvec = vec3(tstep.x, 0.0, 0.0); + vec3 yvec = vec3(0.0, tstep.y, 0.0); + vec3 zvec = vec3(0.0, 0.0, tstep.z); + vec3 texPosPVec[3]; + texPosPVec[0] = pos + xvec; + texPosPVec[1] = pos + yvec; + texPosPVec[2] = pos + zvec; + vec3 texPosNVec[3]; + texPosNVec[0] = pos - xvec; + texPosNVec[1] = pos - yvec; + texPosNVec[2] = pos - zvec; + vec3 g1, g2; + g1.x = getTextureValue(texPosPVec[0]).a; + g1.y = getTextureValue(texPosPVec[1]).a; + g1.z = getTextureValue(texPosPVec[2]).a; + g2.x = getTextureValue(texPosNVec[0]).a; + g2.y = getTextureValue(texPosNVec[1]).a; + g2.z = getTextureValue(texPosNVec[2]).a; + #ifdef vtkClippingPlanesOn + adjustClippedVoxelValues(pos, texPosPVec, g1); + adjustClippedVoxelValues(pos, texPosNVec, g2); + #endif + vec4 result; + result = vec4(g1 - g2, -1.0); + // divide by spacing + result.xyz /= vSpacing; + result.w = length(result.xyz); + if (result.w > 0.0){ + // rotate to View Coords + rotateToViewCoord(result.xyz); + return vec4(normalize(result.xyz),result.w); + } else { + return vec4(0.0); + } + } +#endif + + +#ifdef vtkImageLabelOutlineOn + vec4 fragCoordToPCPos(vec4 fragCoord) { + return vec4( + (fragCoord.x / vpWidth - vpOffsetX - 0.5) * 2.0, + (fragCoord.y / vpHeight - vpOffsetY - 0.5) * 2.0, + (fragCoord.z - 0.5) * 2.0, + 1.0); + } + + vec4 pcPosToWorldCoord(vec4 pcPos) { + return PCWCMatrix * pcPos; + } + + vec3 fragCoordToIndexSpace(vec4 fragCoord) { + vec4 pcPos = fragCoordToPCPos(fragCoord); + vec4 worldCoord = pcPosToWorldCoord(pcPos); + vec4 vertex = (worldCoord / worldCoord.w); + + vec3 index = (vWCtoIDX * vertex).xyz; + + // half voxel fix for labelmapOutline + return (index + vec3(0.5)) / vec3(volumeDimensions); + } + + vec3 fragCoordToWorld(vec4 fragCoord) { + vec4 pcPos = fragCoordToPCPos(fragCoord); + vec4 worldCoord = pcPosToWorldCoord(pcPos); + return worldCoord.xyz; + } +#endif + +//======================================================================= +// compute the normals and gradient magnitudes for a position +// for independent components +mat4 computeMat4Normal(vec3 pos, vec4 tValue, vec3 tstep) +{ + mat4 result; + vec4 distX = getTextureValue(pos + vec3(tstep.x, 0.0, 0.0)) - tValue; + vec4 distY = getTextureValue(pos + vec3(0.0, tstep.y, 0.0)) - tValue; + vec4 distZ = getTextureValue(pos + vec3(0.0, 0.0, tstep.z)) - tValue; + + // divide by spacing + distX /= vSpacing.x; + distY /= vSpacing.y; + distZ /= vSpacing.z; + + mat3 rot; + rot[0] = vPlaneNormal0; + rot[1] = vPlaneNormal2; + rot[2] = vPlaneNormal4; + +#if !defined(vtkComponent0Proportional) + result[0].xyz = vec3(distX.r, distY.r, distZ.r); + result[0].a = length(result[0].xyz); + result[0].xyz *= rot; + if (result[0].w > 0.0) + { + result[0].xyz /= result[0].w; + } +#endif + +// optionally compute the 2nd component +#if vtkNumComponents >= 2 && !defined(vtkComponent1Proportional) + result[1].xyz = vec3(distX.g, distY.g, distZ.g); + result[1].a = length(result[1].xyz); + result[1].xyz *= rot; + if (result[1].w > 0.0) + { + result[1].xyz /= result[1].w; + } +#endif + +// optionally compute the 3rd component +#if vtkNumComponents >= 3 && !defined(vtkComponent2Proportional) + result[2].xyz = vec3(distX.b, distY.b, distZ.b); + result[2].a = length(result[2].xyz); + result[2].xyz *= rot; + if (result[2].w > 0.0) + { + result[2].xyz /= result[2].w; + } +#endif + +// optionally compute the 4th component +#if vtkNumComponents >= 4 && !defined(vtkComponent3Proportional) + result[3].xyz = vec3(distX.a, distY.a, distZ.a); + result[3].a = length(result[3].xyz); + result[3].xyz *= rot; + if (result[3].w > 0.0) + { + result[3].xyz /= result[3].w; + } +#endif + + return result; +} + +//======================================================================= +// global shadow - secondary ray +#if defined(VolumeShadowOn) || defined(localAmbientOcclusionOn) +float random() +{ + float rand = fract(sin(dot(gl_FragCoord.xy,vec2(12.9898,78.233)))*43758.5453123); + float jitter=texture2D(jtexture,gl_FragCoord.xy/32.).r; + uint pcg_state = floatBitsToUint(jitter); + uint state = pcg_state; + pcg_state = pcg_state * uint(747796405) + uint(2891336453); + uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737); + return (float((((word >> uint(22)) ^ word) >> 1 ))/float(2147483647) + rand)/2.0; +} +#endif + +#ifdef VolumeShadowOn +// henyey greenstein phase function +float phase_function(float cos_angle) +{ + // divide by 2.0 instead of 4pi to increase intensity + return ((1.0-anisotropy2)/pow(1.0+anisotropy2-2.0*anisotropy*cos_angle, 1.5))/2.0; +} + +// Computes the intersection between a ray and a box +struct Hit +{ + float tmin; + float tmax; +}; + +struct Ray +{ + vec3 origin; + vec3 dir; + vec3 invDir; +}; + +bool BBoxIntersect(vec3 boundMin, vec3 boundMax, const Ray r, out Hit hit) +{ + vec3 tbot = r.invDir * (boundMin - r.origin); + vec3 ttop = r.invDir * (boundMax - r.origin); + vec3 tmin = min(ttop, tbot); + vec3 tmax = max(ttop, tbot); + vec2 t = max(tmin.xx, tmin.yz); + float t0 = max(t.x, t.y); + t = min(tmax.xx, tmax.yz); + float t1 = min(t.x, t.y); + hit.tmin = t0; + hit.tmax = t1; + return t1 > max(t0,0.0); +} + +// As BBoxIntersect requires the inverse of the ray coords, +// this function is used to avoid numerical issues +void safe_0_vector(inout Ray ray) +{ + if(abs(ray.dir.x) < EPSILON) ray.dir.x = sign(ray.dir.x) * EPSILON; + if(abs(ray.dir.y) < EPSILON) ray.dir.y = sign(ray.dir.y) * EPSILON; + if(abs(ray.dir.z) < EPSILON) ray.dir.z = sign(ray.dir.z) * EPSILON; +} + +float volume_shadow(vec3 posIS, vec3 lightDirNormIS) +{ + float shadow = 1.0; + float opacity = 0.0; + + // modify sample distance with a random number between 1.5 and 3.0 + float sampleDistanceISVS_jitter = sampleDistanceISVS * mix(1.5, 3.0, random()); + float opacityPrev = texture2D(otexture, vec2(getTextureValue(posIS).r * oscale0 + oshift0, 0.5)).r; + + // in case the first sample near surface has a very tiled light ray, we need to offset start position + posIS += sampleDistanceISVS_jitter * lightDirNormIS; + + // compute the start and end points for the ray + Ray ray; + Hit hit; + ray.origin = posIS; + ray.dir = lightDirNormIS; + safe_0_vector(ray); + ray.invDir = 1.0/ray.dir; + + if(!BBoxIntersect(vec3(0.0),vec3(1.0), ray, hit)) + { + return 1.0; + } + float maxdist = hit.tmax; + + // interpolate shadow ray length between: 1 unit of sample distance in IS to SQRT3, based on globalIlluminationReach + float maxgi = mix(sampleDistanceISVS_jitter,SQRT3,giReach); + maxdist = min(maxdist,maxgi); + if(maxdist < EPSILON) { + return 1.0; + } + + float current_dist = 0.0; + float current_step = length(sampleDistanceISVS_jitter * lightDirNormIS); + float clamped_step = 0.0; + + vec4 scalar = vec4(0.0); + while(current_dist < maxdist) + { +#ifdef vtkClippingPlanesOn + vec3 posVC = IStoVC(posIS); + for (int i = 0; i < clip_numPlanes; ++i) + { + if (dot(vec3(vClipPlaneOrigins[i] - posVC), vClipPlaneNormals[i]) > 0.0) + { + current_dist = maxdist; + } + } +#endif + scalar = getTextureValue(posIS); + opacity = texture2D(otexture, vec2(scalar.r * oscale0 + oshift0, 0.5)).r; + #if defined(vtkGradientOpacityOn) && !defined(UseIndependentComponents) + vec4 normal = computeNormal(posIS, vec3(1.0/vec3(volumeDimensions))); + opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); + #endif + shadow *= 1.0 - opacity; + + // optimization: early termination + if (shadow < EPSILON){ + return 0.0; + } + + clamped_step = min(maxdist - current_dist, current_step); + posIS += clamped_step * lightDirNormIS; + current_dist += current_step; + } + + return shadow; +} + +vec3 applyShadowRay(vec3 tColor, vec3 posIS, vec3 viewDirectionVC) +{ + vec3 vertLight = vec3(0.0); + vec3 secondary_contrib = vec3(0.0); + // here we assume only positional light, no effect of cones + for (int i = 0; i < lightNum; i++) + { + #if(vtkLightComplexity==3) + if (lightPositional[i] == 1){ + vertLight = lightPositionVC[i] - IStoVC(posIS); + }else{ + vertLight = - lightDirectionVC[i]; + } + #else + vertLight = - lightDirectionVC[i]; + #endif + // here we assume achromatic light, only intensity + float dDotL = dot(viewDirectionVC, normalize(vertLight)); + // isotropic scatter returns 0.5 instead of 1/4pi to increase intensity + float phase_attenuation = 0.5; + if (abs(anisotropy) > EPSILON){ + phase_attenuation = phase_function(dDotL); + } + float vol_shadow = volume_shadow(posIS, normalize(rotateToIDX(vertLight))); + secondary_contrib += tColor * vDiffuse * lightColor[i] * vol_shadow * phase_attenuation; + secondary_contrib += tColor * vAmbient; + } + return secondary_contrib; +} +#endif + +//======================================================================= +// local ambient occlusion +#ifdef localAmbientOcclusionOn +vec3 sample_direction_uniform(int i) +{ + float rand = random() * 0.5; + float theta = PI2 * (kernelSample[i][0] + rand); + float phi = acos(2.0 * (kernelSample[i][1] + rand) -1.0) / 2.5; + return normalize(vec3(cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi))); +} + +// return a matrix that transform startDir into z axis; startDir should be normalized +mat3 zBaseRotationalMatrix(vec3 startDir){ + vec3 axis = cross(startDir, vec3(0.0,0.0,1.0)); + float cosA = startDir.z; + float k = 1.0 / (1.0 + cosA); + mat3 matrix = mat3((axis.x * axis.x * k) + cosA, (axis.y * axis.x * k) - axis.z, (axis.z * axis.x * k) + axis.y, + (axis.x * axis.y * k) + axis.z, (axis.y * axis.y * k) + cosA, (axis.z * axis.y * k) - axis.x, + (axis.x * axis.z * k) - axis.y, (axis.y * axis.z * k) + axis.x, (axis.z * axis.z * k) + cosA); + return matrix; +} + +float computeLAO(vec3 posIS, float op, vec3 lightDir, vec4 normal){ + // apply LAO only at selected locations, otherwise return full brightness + if (normal.w > 0.0 && op > 0.05){ + float total_transmittance = 0.0; + mat3 inverseRotateBasis = inverse(zBaseRotationalMatrix(normalize(-normal.xyz))); + vec3 currPos, randomDirStep; + float weight, transmittance, opacity; + for (int i = 0; i < kernelSize; i++) + { + randomDirStep = inverseRotateBasis * sample_direction_uniform(i) * sampleDistanceIS; + weight = 1.0 - dot(normalize(lightDir), normalize(randomDirStep)); + currPos = posIS; + transmittance = 1.0; + for (int j = 0; j < kernelRadius ; j++){ + currPos += randomDirStep; + // check if it's at clipping plane, if so return full brightness + if (all(greaterThan(currPos, vec3(EPSILON))) && all(lessThan(currPos,vec3(1.0-EPSILON)))){ + opacity = texture2D(otexture, vec2(getTextureValue(currPos).r * oscale0 + oshift0, 0.5)).r; + #ifdef vtkGradientOpacityOn + opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); + #endif + transmittance *= 1.0 - opacity; + } + else{ + break; + } + } + total_transmittance += transmittance / float(kernelRadius) * weight; + + // early termination if fully translucent + if (total_transmittance > 1.0 - EPSILON){ + return 1.0; + } + } + // average transmittance and reduce variance + return clamp(total_transmittance / float(kernelSize), 0.3, 1.0); + } else { + return 1.0; + } +} +#endif + +//======================================================================= +// surface light contribution +#if vtkLightComplexity > 0 + void applyLighting(inout vec3 tColor, vec4 normal) + { + vec3 diffuse = vec3(0.0, 0.0, 0.0); + vec3 specular = vec3(0.0, 0.0, 0.0); + float df, sf = 0.0; + for (int i = 0; i < lightNum; i++){ + df = abs(dot(normal.rgb, -lightDirectionVC[i])); + diffuse += df * lightColor[i]; + sf = pow( abs(dot(lightHalfAngleVC[i],normal.rgb)), vSpecularPower); + specular += sf * lightColor[i]; + } + tColor.rgb = tColor.rgb*(diffuse*vDiffuse + vAmbient) + specular*vSpecular; + } + #ifdef SurfaceShadowOn + #if vtkLightComplexity < 3 + vec3 applyLightingDirectional(vec3 posIS, vec4 tColor, vec4 normal) + { + // everything in VC + vec3 diffuse = vec3(0.0); + vec3 specular = vec3(0.0); + #ifdef localAmbientOcclusionOn + vec3 ambient = vec3(0.0); + #endif + vec3 vertLightDirection; + for (int i = 0; i < lightNum; i++){ + float ndotL,vdotR; + vertLightDirection = lightDirectionVC[i]; + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } + #ifdef localAmbientOcclusionOn + return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; + #else + return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; + #endif + } + #else + vec3 applyLightingPositional(vec3 posIS, vec4 tColor, vec4 normal, vec3 posVC) + { + // everything in VC + vec3 diffuse = vec3(0.0); + vec3 specular = vec3(0.0); + #ifdef localAmbientOcclusionOn + vec3 ambient = vec3(0.0); + #endif + vec3 vertLightDirection; + for (int i = 0; i < lightNum; i++){ + float distance,attenuation,ndotL,vdotR; + vec3 lightDir; + if (lightPositional[i] == 1){ + lightDir = lightDirectionVC[i]; + vertLightDirection = posVC - lightPositionVC[i]; + distance = length(vertLightDirection); + vertLightDirection = normalize(vertLightDirection); + attenuation = 1.0 / (lightAttenuation[i].x + + lightAttenuation[i].y * distance + + lightAttenuation[i].z * distance * distance); + // per OpenGL standard cone angle is 90 or less for a spot light + if (lightConeAngle[i] <= 90.0){ + float coneDot = dot(vertLightDirection, lightDir); + if (coneDot >= cos(radians(lightConeAngle[i]))){ // if inside cone + attenuation = attenuation * pow(coneDot, lightExponent[i]); + } + else { + attenuation = 0.0; + } + } + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * attenuation * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * attenuation * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } else { + vertLightDirection = lightDirectionVC[i]; + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } + } + #ifdef localAmbientOcclusionOn + return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; + #else + return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; + #endif + } + #endif + #endif +#endif + +// LAO of surface shadows and volume shadows only work with dependent components +vec3 applyAllLightning(vec3 tColor, float alpha, vec3 posIS, vec4 normalLight) { + #if vtkLightComplexity > 0 + // surface shadows if needed + #ifdef SurfaceShadowOn + #if vtkLightComplexity < 3 + vec3 tColorS = applyLightingDirectional(posIS, vec4(tColor, alpha), normalLight); + #else + vec3 tColorS = applyLightingPositional(posIS, vec4(tColor, alpha), normalLight, IStoVC(posIS)); + #endif + #endif + + // volume shadows if needed + #ifdef VolumeShadowOn + vec3 tColorVS = applyShadowRay(tColor, posIS, rayDirVC); + #endif + + // merge + #ifdef VolumeShadowOn + #ifdef SurfaceShadowOn + // surface shadows + volumetric shadows + float vol_coef = volumetricScatteringBlending * (1.0 - alpha / 2.0) * (1.0 - atan(normalLight.w) * INV4PI); + tColor = (1.0-vol_coef) * tColorS + vol_coef * tColorVS; + #else + // volumetric shadows only + tColor = tColorVS; + #endif + #else + #ifdef SurfaceShadowOn + // surface shadows only + tColor = tColorS; + #else + // no shadows + applyLighting(tColor, normal3); + #endif + #endif + #endif + return tColor; +} + + +vec4 getColorForValue(vec4 tValue, vec3 posIS, vec3 tstep) +{ + +// If labeloutline and not the edge labelmap, since in the edge labelmap blend +// we need the underlying data to sample through +#if defined(vtkImageLabelOutlineOn) && !defined(vtkLabelEdgeProjectionOn) + vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord); // pos in texture space + vec4 centerValue = getTextureValue(centerPosIS); + bool pixelOnBorder = false; + vec4 tColor = texture2D(ctexture, vec2(centerValue.r * cscale0 + cshift0, 0.5)); + + // Get alpha of segment from opacity function. + tColor.a = texture2D(otexture, vec2(centerValue.r * oscale0 + oshift0, 0.5)).r; + + int segmentIndex = int(centerValue.r * 255.0); + + // Use texture sampling for outlineThickness + float textureCoordinate = float(segmentIndex - 1) / 1024.0; + float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; + + int actualThickness = int(textureValue * 255.0); + + + // If it is the background (segment index 0), we should quickly bail out. + // Previously, this was determined by tColor.a, which was incorrect as it + // prevented the outline from appearing when the fill is 0. + if (segmentIndex == 0){ + return vec4(0, 0, 0, 0); + } + + // Only perform outline check on fragments rendering voxels that aren't invisible. + // Saves a bunch of needless checks on the background. + // TODO define epsilon when building shader? + for (int i = -actualThickness; i <= actualThickness; i++) { + for (int j = -actualThickness; j <= actualThickness; j++) { + if (i == 0 || j == 0) { + continue; + } + + vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), + gl_FragCoord.y + float(j), + gl_FragCoord.z, gl_FragCoord.w); + + vec3 neighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); + vec4 value = getTextureValue(neighborPosIS); + + // If any of my neighbours are not the same value as I + // am, this means I am on the border of the segment. + // We can break the loops + if (any(notEqual(value, centerValue))) { + pixelOnBorder = true; + break; + } + } + + if (pixelOnBorder == true) { + break; + } + } + + // If I am on the border, I am displayed at full opacity + if (pixelOnBorder == true) { + tColor.a = outlineOpacity; + } + + return tColor; + +#else + // compute the normal and gradient magnitude if needed + // We compute it as a vec4 if possible otherwise a mat4 + + #ifdef UseIndependentComponents + + // sample textures + vec3 tColor0 = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, height0)).rgb; + float pwfValue0 = texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, height0)).r; + + #if vtkNumComponents > 1 + vec3 tColor1 = texture2D(ctexture, vec2(tValue.g * cscale1 + cshift1, height1)).rgb; + float pwfValue1 = texture2D(otexture, vec2(tValue.g * oscale1 + oshift1, height1)).r; + + #if vtkNumComponents > 2 + vec3 tColor2 = texture2D(ctexture, vec2(tValue.b * cscale2 + cshift2, height2)).rgb; + float pwfValue2 = texture2D(otexture, vec2(tValue.b * oscale2 + oshift2, height2)).r; + + #if vtkNumComponents > 3 + vec3 tColor3 = texture2D(ctexture, vec2(tValue.a * cscale3 + cshift3, height3)).rgb; + float pwfValue3 = texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, height3)).r; + #endif + #endif + #endif + + #if !defined(vtkCustomComponentsColorMix) + // default path for component color mix + + // compute the normal vectors as needed + #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #endif + + // compute gradient opacity factors as needed + vec4 goFactor = vec4(1.0, 1.0 ,1.0 ,1.0); + #if defined(vtkGradientOpacityOn) + #if !defined(vtkComponent0Proportional) + goFactor.x = + computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + #endif + #if vtkNumComponents > 1 + #if !defined(vtkComponent1Proportional) + goFactor.y = + computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); + #endif + #if vtkNumComponents > 2 + #if !defined(vtkComponent2Proportional) + goFactor.z = + computeGradientOpacityFactor(normalMat[2].a, goscale2, goshift2, gomin2, gomax2); + #endif + #if vtkNumComponents > 3 + #if !defined(vtkComponent3Proportional) + goFactor.w = + computeGradientOpacityFactor(normalMat[3].a, goscale3, goshift3, gomin3, gomax3); + #endif + #endif + #endif + #endif + #endif + + // process color and opacity for each component + #if !defined(vtkComponent0Proportional) + float alpha = goFactor.x*mix0*pwfValue0; + #if vtkLightComplexity > 0 + applyLighting(tColor0, normalMat[0]); + #endif + #else + tColor0 *= pwfValue0; + float alpha = mix(pwfValue0, 1.0, (1.0 - mix0)); + #endif + + #if vtkNumComponents > 1 + #if !defined(vtkComponent1Proportional) + alpha += goFactor.y*mix1*pwfValue1; + #if vtkLightComplexity > 0 + applyLighting(tColor1, normalMat[1]); + #endif + #else + tColor1 *= pwfValue1; + alpha *= mix(pwfValue1, 1.0, (1.0 - mix1)); + #endif + + #if vtkNumComponents > 2 + #if !defined(vtkComponent2Proportional) + alpha += goFactor.z*mix2*pwfValue2; + #if vtkLightComplexity > 0 + applyLighting(tColor2, normalMat[2]); + #endif + #else + tColor2 *= pwfValue2; + alpha *= mix(pwfValue2, 1.0, (1.0 - mix2)); + #endif + #endif + + #if vtkNumComponents > 3 + #if !defined(vtkComponent3Proportional) + alpha += goFactor.w*mix3*pwfValue3; + #if vtkLightComplexity > 0 + applyLighting(tColor3, normalMat[3]); + #endif + #else + tColor3 *= pwfValue3; + alpha *= mix(pwfValue3, 1.0, (1.0 - mix3)); + #endif + #endif + #endif + + // perform final independent blend + vec3 tColor = mix0 * tColor0; + #if vtkNumComponents > 1 + tColor += mix1 * tColor1; + #if vtkNumComponents > 2 + tColor += mix2 * tColor2; + #if vtkNumComponents > 3 + tColor += mix3 * tColor3; + #endif + #endif + #endif + + return vec4(tColor, alpha); + #else + /* + * Mix the color information from all the independent components to get a single rgba output + * Gradient opactity factors and normals are not computed + * + * You can compute these using: + * - computeMat4Normal: always available, compute normal only for non proportional components, used by default independent component mix + * - computeDensityNormal & computeNormalForDensity: available if ((LightComplexity > 0) || GradientOpacityOn) && ComputeNormalFromOpacity), + * used by dependent component color mix, see code for Additive preset in OpenGl/VolumeMapper + * - computeGradientOpacityFactor: always available, used in a lot of places + * + * Using applyAllLightning() is advised for shading but some features don't work well with it (volume shadows, LAO) + * mix0, mix1, ... are defined for each component that is used and correspond to the componentWeight + */ + //VTK::CustomComponentsColorMix::Impl + #endif + #else + // dependent components + + // compute normal if needed + #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) + // use component 3 of the opacity texture as getTextureValue() sets alpha to the opacity value + #ifdef vtkComputeNormalFromOpacity + vec3 scalarInterp[2]; + vec4 normal0 = computeNormalForDensity(posIS, tstep, scalarInterp, 3); + #else + vec4 normal0 = computeNormal(posIS, tstep); + #endif + #endif + + // compute gradient opacity factor enabled + #if defined(vtkGradientOpacityOn) + float gradientOpacity = computeGradientOpacityFactor(normal0.a, goscale0, goshift0, gomin0, gomax0); + #else + const float gradientOpacity = 1.0; + #endif + + // get color and opacity + #if vtkNumComponents == 1 + vec3 tColor = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, 0.5)).rgb; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + if (alpha < EPSILON){ + return vec4(0.0); + } + #endif + #if vtkNumComponents == 2 + vec3 tColor = vec3(tValue.r * cscale0 + cshift0); + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale1 + oshift1, 0.5)).r; + #endif + #if vtkNumComponents == 3 + vec3 tColor; + tColor.r = tValue.r * cscale0 + cshift0; + tColor.g = tValue.g * cscale1 + cshift1; + tColor.b = tValue.b * cscale2 + cshift2; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale0 + oshift0, 0.5)).r; + #endif + #if vtkNumComponents == 4 + vec3 tColor; + tColor.r = tValue.r * cscale0 + cshift0; + tColor.g = tValue.g * cscale1 + cshift1; + tColor.b = tValue.b * cscale2 + cshift2; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, 0.5)).r; + #endif + + // lighting + #if (vtkLightComplexity > 0) + #ifdef vtkComputeNormalFromOpacity + vec4 normalLight; + if (!all(equal(normal0, vec4(0.0)))) { + scalarInterp[0] = scalarInterp[0] * oscale0 + oshift0; + scalarInterp[1] = scalarInterp[1] * oscale0 + oshift0; + normalLight = computeDensityNormal(scalarInterp, 0.5, gradientOpacity); + if (all(equal(normalLight, vec4(0.0)))) { + normalLight = normal0; + } + } + #else + vec4 normalLight = normal0; + #endif + tColor = applyAllLightning(tColor, alpha, posIS, normalLight); + #endif + + return vec4(tColor, alpha); + #endif // dependent +#endif +} + +bool valueWithinScalarRange(vec4 val, vec4 min, vec4 max) { + bool withinRange = false; + #if vtkNumComponents == 1 + if (val.r >= min.r && val.r <= max.r) { + withinRange = true; + } + #else + #ifdef UseIndependentComponents + #if vtkNumComponents == 2 + if (val.r >= min.r && val.r <= max.r && + val.g >= min.g && val.g <= max.g) { + withinRange = true; + } + #else + if (all(greaterThanEqual(val, ipScalarRangeMin)) && + all(lessThanEqual(val, ipScalarRangeMax))) { + withinRange = true; + } + #endif + #endif + #endif + return withinRange; +} + +#if vtkBlendMode == 6 +bool checkOnEdgeForNeighbor(int i, int j, int s, vec3 stepIS) { + vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), gl_FragCoord.y + float(j), gl_FragCoord.z, gl_FragCoord.w); + vec3 originalNeighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); + + bool justSawIt = false; + + vec3 neighborPosIS = originalNeighborPosIS; + + float stepsTraveled = 0.0; + + + // float neighborValue; + for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { + ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); + vec4 texValue = texelFetch(texture1, texCoord, 0); + + if (int(texValue.g) == s) { + justSawIt = true; + break; + } + neighborPosIS += stepIS; + } + + if (justSawIt){ + return false; + } + + + neighborPosIS = originalNeighborPosIS; + for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { + ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); + vec4 texValue = texelFetch(texture1, texCoord, 0); + + if (int(texValue.g) == s) { + justSawIt = true; + break; + } + neighborPosIS -= stepIS; + } + + + if (!justSawIt) { + // onedge + vec3 tColorSegment = texture2D(ctexture, vec2(float(s) * cscale1 + cshift1, height1)).rgb; + float pwfValueSegment = texture2D(otexture, vec2(float(s) * oscale1 + oshift1, height1)).r; + gl_FragData[0] = vec4(tColorSegment, pwfValueSegment); + return true; + } + + // not on edge + return false; +} + +#endif + + +//======================================================================= +// Apply the specified blend mode operation along the ray's path. +// +void applyBlend(vec3 posIS, vec3 endIS, vec3 tdims) +{ + vec3 tstep = 1.0/tdims; + + // start slightly inside and apply some jitter + vec3 delta = endIS - posIS; + vec3 stepIS = normalize(delta)*sampleDistanceIS; + float raySteps = length(delta)/sampleDistanceIS; + + // Initialize arrays to false + // avoid 0.0 jitter + float jitter = 0.01 + 0.99*texture2D(jtexture, gl_FragCoord.xy/32.0).r; + float stepsTraveled = jitter; + + // local vars for the loop + vec4 color = vec4(0.0, 0.0, 0.0, 0.0); + vec4 tValue; + vec4 tColor; + + // if we have less than one step then pick the middle point + // as our value + // if (raySteps <= 1.0) + // { + // posIS = (posIS + endIS)*0.5; + // } + + // Perform initial step at the volume boundary + // compute the scalar + tValue = getTextureValue(posIS); + + #if vtkBlendMode == 6 + if (raySteps <= 1.0) + { + gl_FragData[0] = getColorForValue(tValue, posIS, tstep); + return; + } + + vec4 value = tValue; + posIS += (jitter*stepIS); + vec3 maxPosIS = posIS; // Store the position of the max value + int segmentIndex = int(value.g); + bool originalPosHasSeenNonZero = false; + + uint bitmask = 0u; + + if (segmentIndex != 0) { + // Tried using the segment index in an boolean array but reading + // from the array by dynamic indexing was horrondously slow + // so use bit masking instead and assign 1 to the bit corresponding to the segment index + // and later check if the bit is set via bit operations + setBit(segmentIndex); + } + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + segmentIndex = int(tValue.g); + + if (segmentIndex != 0) { + originalPosHasSeenNonZero = true; + setBit(segmentIndex); + } + + if (tValue.r > value.r) { + value = tValue; // Update the max value + maxPosIS = posIS; // Update the position where max occurred + } + + // Otherwise, continue along the ray + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + tValue = getTextureValue(posIS); + + if (tValue.r > value.r) { + value = tValue; // Update the max value + maxPosIS = posIS; // Update the position where max occurred + } + + // If we have not seen any non-zero segments, we can return early + // and grab color from the actual center value first component (image) + if (!originalPosHasSeenNonZero) { + gl_FragData[0] = getColorForValue(value, maxPosIS, tstep); + return; + } + + // probably we can make this configurable but for now we will use the same + // sample distance as the original sample distance + float neighborSampleDistanceIS = sampleDistanceIS; + + vec3 neighborRayStepsIS = stepIS; + float neighborRaySteps = raySteps; + bool shouldLookInAllNeighbors = false; + + float minVoxelSpacing = min(volumeSpacings[0], min(volumeSpacings[1], volumeSpacings[2])); + vec4 base = vec4(gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); + + vec4 baseXPlus = vec4(gl_FragCoord.x + 1.0, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); + vec4 baseYPlus = vec4(gl_FragCoord.x, gl_FragCoord.y + 1.0, gl_FragCoord.z, gl_FragCoord.w); + + vec3 baseWorld = fragCoordToWorld(base); + vec3 baseXPlusWorld = fragCoordToWorld(baseXPlus); + vec3 baseYPlusWorld = fragCoordToWorld(baseYPlus); + + float XPlusDiff = length(baseXPlusWorld - baseWorld); + float YPlusDiff = length(baseYPlusWorld - baseWorld); + + float minFragSpacingWorld = min(XPlusDiff, YPlusDiff); + + for (int s = 1; s < MAX_SEGMENT_INDEX; s++) { + // bail out quickly if the segment index has not + // been seen by the center segment + if (!isBitSet(s)) { + continue; + } + + // Use texture sampling for outlineThickness so that we can have + // per segment thickness + float textureCoordinate = float(s - 1) / 1024.0; + float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; + + int actualThickness = int(textureValue * 255.0); + + // check the extreme points in the neighborhood since there is a better + // chance of finding the edge there, so that we can bail out + // faster if we find the edge + bool onEdge = + checkOnEdgeForNeighbor(-actualThickness, -actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(actualThickness, actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(actualThickness, -actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(-actualThickness, +actualThickness, s, stepIS); + + if (onEdge) { + return; + } + + // since the next step is computationally expensive, we need to perform + // some optimizations to avoid it if possible. One of the optimizations + // is to check the whether the minimum of the voxel spacing is greater than + // the 2 * the thickness of the outline segment. If that is the case + // then we can safely skip the next step since we can be sure that the + // the previous 4 checks on the extreme points would caught the entirety + // of the all the fragments inside. i.e., this happens when we zoom out, + if (minVoxelSpacing > (2.0 * float(actualThickness) - 1.0) * minFragSpacingWorld) { + continue; + } + + // Loop through the rest, skipping the processed extremes and the center + for (int i = -actualThickness; i <= actualThickness; i++) { + for (int j = -actualThickness; j <= actualThickness; j++) { + if (i == 0 && j == 0) continue; // Skip the center + if (abs(i) == actualThickness && abs(j) == actualThickness) continue; // Skip corners + if (checkOnEdgeForNeighbor(i, j, s, stepIS )) { + return; + } + } + } + } + + vec3 tColor0 = texture2D(ctexture, vec2(value.r * cscale0 + cshift0, height0)).rgb; + float pwfValue0 = texture2D(otexture, vec2(value.r * oscale0 + oshift0, height0)).r; + gl_FragData[0] = vec4(tColor0, pwfValue0); + #endif + #if vtkBlendMode == 0 // COMPOSITE_BLEND + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + + // handle very thin volumes + if (raySteps <= 1.0) + { + tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps); + gl_FragData[0] = tColor; + return; + } + + tColor.a = 1.0 - pow(1.0 - tColor.a, jitter); + color = vec4(tColor.rgb*tColor.a, tColor.a); + posIS += (jitter*stepIS); + + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + + float mix = (1.0 - color.a); + + // this line should not be needed but nvidia seems to not handle + // the break correctly on windows/chrome 58 angle + //mix = mix * sign(max(raySteps - stepsTraveled - 1.0, 0.0)); + + color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; + stepsTraveled++; + posIS += stepIS; + if (color.a > 0.99) { color.a = 1.0; break; } + } + + if (color.a < 0.99 && (raySteps - stepsTraveled) > 0.0) + { + posIS = endIS; + + // compute the scalar + tValue = getTextureValue(posIS); + + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps - stepsTraveled); + + float mix = (1.0 - color.a); + color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; + } + + gl_FragData[0] = vec4(color.rgb/color.a, color.a); + #endif + #if vtkBlendMode == 1 || vtkBlendMode == 2 + // MAXIMUM_INTENSITY_BLEND || MINIMUM_INTENSITY_BLEND + // Find maximum/minimum intensity along the ray. + + // Define the operation we will use (min or max) + #if vtkBlendMode == 1 + #define OP max + #else + #define OP min + #endif + + // If the clipping range is shorter than the sample distance + // we can skip the sampling loop along the ray. + if (raySteps <= 1.0) + { + gl_FragData[0] = getColorForValue(tValue, posIS, tstep); + return; + } + + vec4 value = tValue; + posIS += (jitter*stepIS); + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // Update the maximum value if necessary + value = OP(tValue, value); + + // Otherwise, continue along the ray + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + tValue = getTextureValue(posIS); + value = OP(tValue, value); + + // Now map through opacity and color + gl_FragData[0] = getColorForValue(value, posIS, tstep); + #endif + #if vtkBlendMode == 3 || vtkBlendMode == 4 //AVERAGE_INTENSITY_BLEND || ADDITIVE_BLEND + vec4 sum = vec4(0.); + + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + sum += tValue; + } + + if (raySteps <= 1.0) { + gl_FragData[0] = getColorForValue(sum, posIS, tstep); + return; + } + + posIS += (jitter*stepIS); + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // One can control the scalar range by setting the AverageIPScalarRange to disregard scalar values, not in the range of interest, from the average computation. + // Notes: + // - We are comparing all values in the texture to see if any of them + // are outside of the scalar range. In the future we might want to allow + // scalar ranges for each component. + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + // Sum the values across each step in the path + sum += tValue; + } + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + + // compute the scalar + tValue = getTextureValue(posIS); + + // One can control the scalar range by setting the IPScalarRange to disregard scalar values, not in the range of interest, from the average computation + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + sum += tValue; + + stepsTraveled++; + } + + #if vtkBlendMode == 3 // Average + sum /= vec4(stepsTraveled, stepsTraveled, stepsTraveled, 1.0); + #endif + + gl_FragData[0] = getColorForValue(sum, posIS, tstep); + #endif + #if vtkBlendMode == 5 // RADON + float normalizedRayIntensity = 1.0; + + // handle very thin volumes + if (raySteps <= 1.0) + { + tValue = getTextureValue(posIS); + normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity, 0.5)); + return; + } + + posIS += (jitter*stepIS); + + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar value + tValue = getTextureValue(posIS); + + // Convert scalar value to normalizedRayIntensity coefficient and accumulate normalizedRayIntensity + normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + + posIS += stepIS; + stepsTraveled++; + } + + // map normalizedRayIntensity to color + gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity , 0.5)); + + #endif +} + +//======================================================================= +// Compute a new start and end point for a given ray based +// on the provided bounded clipping plane (aka a rectangle) +void getRayPointIntersectionBounds( + vec3 rayPos, vec3 rayDir, + vec3 planeDir, float planeDist, + inout vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY, + float vSize1, float vSize2) +{ + float result = dot(rayDir, planeDir); + if (abs(result) < 1e-6) + { + return; + } + result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result; + vec3 xposVC = rayPos + rayDir*result; + vec3 vxpos = xposVC - vOriginVC; + vec2 vpos = vec2( + dot(vxpos, vPlaneX), + dot(vxpos, vPlaneY)); + + // on some apple nvidia systems this does not work + // if (vpos.x < 0.0 || vpos.x > vSize1 || + // vpos.y < 0.0 || vpos.y > vSize2) + // even just + // if (vpos.x < 0.0 || vpos.y < 0.0) + // fails + // so instead we compute a value that represents in and out + //and then compute the return using this value + float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds + float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out + + tbounds = mix( + vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value + tbounds, // out value + check); // 0 in 1 out +} + +//======================================================================= +// given a +// - ray direction (rayDir) +// - starting point (vertexVCVSOutput) +// - bounding planes of the volume +// - optionally depth buffer values +// - far clipping plane +// compute the start/end distances of the ray we need to cast +vec2 computeRayDistances(vec3 rayDir, vec3 tdims) +{ + vec2 dists = vec2(100.0*camFar, -1.0); + + vec3 vSize = vSpacing*tdims; + + // all this is in View Coordinates + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal0, vPlaneDistance0, dists, vPlaneNormal2, vPlaneNormal4, + vSize.y, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal1, vPlaneDistance1, dists, vPlaneNormal2, vPlaneNormal4, + vSize.y, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal2, vPlaneDistance2, dists, vPlaneNormal0, vPlaneNormal4, + vSize.x, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal3, vPlaneDistance3, dists, vPlaneNormal0, vPlaneNormal4, + vSize.x, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal4, vPlaneDistance4, dists, vPlaneNormal0, vPlaneNormal2, + vSize.x, vSize.y); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal5, vPlaneDistance5, dists, vPlaneNormal0, vPlaneNormal2, + vSize.x, vSize.y); + + //VTK::ClipPlane::Impl + + // do not go behind front clipping plane + dists.x = max(0.0,dists.x); + + // do not go PAST far clipping plane + float farDist = -camThick/rayDir.z; + dists.y = min(farDist,dists.y); + + // Do not go past the zbuffer value if set + // This is used for intermixing opaque geometry + //VTK::ZBuffer::Impl + + return dists; +} + +//======================================================================= +// Compute the index space starting position (pos) and end +// position +// +void computeIndexSpaceValues(out vec3 pos, out vec3 endPos, vec3 rayDir, vec2 dists) +{ + // compute starting and ending values in volume space + pos = vertexVCVSOutput + dists.x*rayDir; + pos = pos - vOriginVC; + // convert to volume basis and origin + pos = vec3( + dot(pos, vPlaneNormal0), + dot(pos, vPlaneNormal2), + dot(pos, vPlaneNormal4)); + + endPos = vertexVCVSOutput + dists.y*rayDir; + endPos = endPos - vOriginVC; + endPos = vec3( + dot(endPos, vPlaneNormal0), + dot(endPos, vPlaneNormal2), + dot(endPos, vPlaneNormal4)); + + float delta = length(endPos - pos); + + pos *= vVCToIJK; + endPos *= vVCToIJK; + + float delta2 = length(endPos - pos); + sampleDistanceIS = sampleDistance*delta2/delta; + #ifdef VolumeShadowOn + sampleDistanceISVS = sampleDistanceIS * volumeShadowSamplingDistFactor; + #endif +} + +void main() +{ + + if (cameraParallel == 1) + { + // Camera is parallel, so the rayDir is just the direction of the camera. + rayDirVC = vec3(0.0, 0.0, -1.0); + } else { + // camera is at 0,0,0 so rayDir for perspective is just the vc coord + rayDirVC = normalize(vertexVCVSOutput); + } + + vec3 tdims = vec3(volumeDimensions); + + // compute the start and end points for the ray + vec2 rayStartEndDistancesVC = computeRayDistances(rayDirVC, tdims); + + // do we need to composite? aka does the ray have any length + // If not, bail out early + if (rayStartEndDistancesVC.y <= rayStartEndDistancesVC.x) + { + discard; + } + + // IS = Index Space + vec3 posIS; + vec3 endIS; + computeIndexSpaceValues(posIS, endIS, rayDirVC, rayStartEndDistancesVC); + + // Perform the blending operation along the ray + applyBlend(posIS, endIS, tdims); +} +`;const{vtkWarningMacro:cd,vtkErrorMacro:Ha}=Lt;function ld(t){switch(t){case Ni.CUSTOM:return"//VTK::CustomColorMix";case Ni.ADDITIVE:return` + // compute normals + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) + vec3 scalarInterp0[2]; + vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); + scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; + scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; + normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); + + vec3 scalarInterp1[2]; + vec4 normalLight1 = computeNormalForDensity(posIS, tstep, scalarInterp1, 1); + scalarInterp1[0] = scalarInterp1[0] * oscale1 + oshift1; + scalarInterp1[1] = scalarInterp1[1] * oscale1 + oshift1; + normalLight1 = computeDensityNormal(scalarInterp1, height1, 1.0); + #else + vec4 normalLight0 = normalMat[0]; + vec4 normalLight1 = normalMat[1]; + #endif + + // compute opacities + float opacity0 = pwfValue0; + float opacity1 = pwfValue1; + #ifdef vtkGradientOpacityOn + float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + opacity0 *= gof0; + float gof1 = computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); + opacity1 *= gof1; + #endif + float opacitySum = opacity0 + opacity1; + if (opacitySum <= 0.0) { + return vec4(0.0); + } + + // mix the colors and opacities + tColor0 = applyAllLightning(tColor0, opacity0, posIS, normalLight0); + tColor1 = applyAllLightning(tColor1, opacity1, posIS, normalLight1); + vec3 mixedColor = (opacity0 * tColor0 + opacity1 * tColor1) / opacitySum; + return vec4(mixedColor, min(1.0, opacitySum)); +`;case Ni.COLORIZE:return` + // compute normals + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) + vec3 scalarInterp0[2]; + vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); + scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; + scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; + normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); + #else + vec4 normalLight0 = normalMat[0]; + #endif + + // compute opacities + float opacity0 = pwfValue0; + #ifdef vtkGradientOpacityOn + float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + opacity0 *= gof0; + #endif + + // mix the colors and opacities + vec3 color = tColor0 * mix(vec3(1.0), tColor1, pwfValue1); + color = applyAllLightning(color, opacity0, posIS, normalLight0); + return vec4(color, opacity0); +`;default:return null}}function ud(t,e){e.classHierarchy.push("vtkOpenGLVolumeMapper");function n(i){[e._scalars,e._scalarOpacityFunc,e._colorTransferFunc,e._labelOutlineThicknessArray].forEach(a=>i.unregisterGraphicsResourceUser(a,t))}t.buildPass=()=>{e.zBufferTexture=null},t.zBufferPass=(i,a)=>{if(i){const s=a.getZBufferTexture();s!==e.zBufferTexture&&(e.zBufferTexture=s)}},t.opaqueZBufferPass=(i,a)=>t.zBufferPass(i,a),t.volumePass=(i,a)=>{if(i){const s=e._openGLRenderWindow;e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),s&&!s.isDeleted()&&s!==e._openGLRenderWindow&&n(s),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.jitterTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLVolume=t.getFirstAncestorOfType("vtkOpenGLVolume");const o=e.openGLVolume.getRenderable();e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const c=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(c.getActiveCamera()),t.renderPiece(c,o)}},t.getShaderTemplate=(i,a,s)=>{i.Vertex=sd,i.Fragment=od,i.Geometry=""},t.useIndependentComponents=i=>{var l,u;const a=i.getIndependentComponents(),s=e.currentInput,o=(u=(l=s==null?void 0:s.getPointData())==null?void 0:l.getScalars())==null?void 0:u.getNumberOfComponents(),c=i.getColorMixPreset();return a&&o>=2||!!c},t.replaceShaderValues=(i,a,s)=>{const o=s.getProperty();let c=i.Fragment;o.getInterpolationType()===Os.LINEAR&&(c=W.substitute(c,"//VTK::TrilinearOn","#define vtkTrilinearOn").result),t.isLabelmapOutlineRequired(s)===!0&&(c=W.substitute(c,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result),e.renderable.getBlendMode()===wi.LABELMAP_EDGE_PROJECTION_BLEND&&(c=W.substitute(c,"//VTK::LabelEdgeProjectionOn","#define vtkLabelEdgeProjectionOn").result);const g=e.scalarTexture.getComponents();c=W.substitute(c,"//VTK::NumComponents",`#define vtkNumComponents ${g}`).result;const h=t.useIndependentComponents(o);h&&(c=W.substitute(c,"//VTK::IndependentComponentsOn","#define UseIndependentComponents").result);const d=[],m=[];for(let E=0;E0&&(e.renderable.getVolumetricScatteringBlending()>0&&(c=W.substitute(c,"//VTK::VolumeShadowOn","#define VolumeShadowOn").result),e.renderable.getVolumetricScatteringBlending()<1&&(c=W.substitute(c,"//VTK::SurfaceShadowOn","#define SurfaceShadowOn").result),e.renderable.getLocalAmbientOcclusion()&&o.getAmbient()>0&&(c=W.substitute(c,"//VTK::localAmbientOcclusionOn","#define localAmbientOcclusionOn").result));const w=h?g:1;e.gopacity=!1;for(let E=0;!e.gopacity&&E{if(e.lightComplexity===0)return;let o=i.Fragment,c=0;a.getLights().forEach(l=>{l.getSwitch()&&(c+=1)}),o=W.substitute(o,"//VTK::Light::Dec",["uniform int lightNum;","uniform bool twoSidedLighting;",`uniform vec3 lightColor[${c}];`,`uniform vec3 lightDirectionVC[${c}]; // normalized`,`uniform vec3 lightHalfAngleVC[${c}];`,"//VTK::Light::Dec"],!1).result,e.lightComplexity===3&&(o=W.substitute(o,"//VTK::Light::Dec",[`uniform vec3 lightPositionVC[${c}];`,`uniform vec3 lightAttenuation[${c}];`,`uniform float lightConeAngle[${c}];`,`uniform float lightExponent[${c}];`,`uniform int lightPositional[${c}];`],!1).result),e.renderable.getVolumetricScatteringBlending()>0&&(o=W.substitute(o,"//VTK::VolumeShadow::Dec",["uniform float volumetricScatteringBlending;","uniform float giReach;","uniform float volumeShadowSamplingDistFactor;","uniform float anisotropy;","uniform float anisotropy2;"],!1).result),e.renderable.getLocalAmbientOcclusion()&&s.getProperty().getAmbient()>0&&(o=W.substitute(o,"//VTK::LAO::Dec",["uniform int kernelRadius;",`uniform vec2 kernelSample[${e.renderable.getLAOKernelRadius()}];`,"uniform int kernelSize;"],!1).result),i.Fragment=o},t.replaceShaderClippingPlane=(i,a,s)=>{let o=i.Fragment;if(e.renderable.getClippingPlanes().length>0){const c=e.renderable.getClippingPlanes().length;o=W.substitute(o,"//VTK::ClipPlane::Dec",["uniform vec3 vClipPlaneNormals[6];","uniform float vClipPlaneDistances[6];","uniform vec3 vClipPlaneOrigins[6];","uniform int clip_numPlanes;","//VTK::ClipPlane::Dec","#define vtkClippingPlanesOn"],!1).result,o=W.substitute(o,"//VTK::ClipPlane::Impl",[`for(int i = 0; i < ${c}; i++) {`," float rayDirRatio = dot(rayDir, vClipPlaneNormals[i]);"," float equationResult = dot(vertexVCVSOutput, vClipPlaneNormals[i]) + vClipPlaneDistances[i];"," if (rayDirRatio == 0.0)"," {"," if (equationResult < 0.0) dists.x = dists.y;"," continue;"," }"," float result = -1.0 * equationResult / rayDirRatio;"," if (rayDirRatio < 0.0) dists.y = min(dists.y, result);"," else dists.x = max(dists.x, result);","}","//VTK::ClipPlane::Impl"],!1).result}i.Fragment=o};const r=(i,a)=>{let s=0;i.getProperty().getShade()&&e.renderable.getBlendMode()===wi.COMPOSITE_BLEND&&(s=0,e.numberOfLights=0,a.forEach(o=>{o.getSwitch()>0&&(e.numberOfLights++,s===0&&(s=1)),s===1&&(e.numberOfLights>1||o.getIntensity()!==1||!o.lightTypeIsHeadLight())&&(s=2),s<3&&o.getPositional()&&(s=3)})),s!==e.lightComplexity&&(e.lightComplexity=s,t.modified())};t.getNeedToRebuildShaders=(i,a,s)=>{var v;const o=s.getProperty();r(s,a.getLights());const c=e.scalarTexture.getComponents(),l=[],u=[];for(let T=0;T{if(t.getNeedToRebuildShaders(i,a,s)){const o={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(o,a,s);const c=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(o.Vertex,o.Fragment,o.Geometry);c!==i.getProgram()&&(i.setProgram(c),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),t.setMapperShaderParameters(i,a,s),t.setCameraShaderParameters(i,a,s),t.setPropertyShaderParameters(i,a,s),t.getClippingPlaneShaderParameters(i,a,s)},t.setMapperShaderParameters=(i,a,s)=>{var u;const o=i.getProgram();i.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&(o.isAttributeUsed("vertexDC")&&(i.getVAO().addAttributeArray(o,i.getCABO(),"vertexDC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||Ha("Error setting vertexDC in shader VAO.")),i.getAttributeUpdateTime().modified()),o.setUniformi("texture1",e.scalarTexture.getTextureUnit()),o.setUniformf("sampleDistance",t.getCurrentSampleDistance(a));const c=e.scalarTexture.getVolumeInfo(),l=e.renderable.getIpScalarRange();if((u=c==null?void 0:c.dataComputedScale)!=null&&u.length){const f=[],g=[];for(let h=0;h<4;h++)f[h]=l[0]*c.dataComputedScale[h]+c.dataComputedOffset[h],g[h]=l[1]*c.dataComputedScale[h]+c.dataComputedOffset[h],f[h]=(f[h]-c.offset[h])/c.scale[h],g[h]=(g[h]-c.offset[h])/c.scale[h];o.setUniform4f("ipScalarRangeMin",f[0],f[1],f[2],f[3]),o.setUniform4f("ipScalarRangeMax",g[0],g[1],g[2],g[3])}if(e.zBufferTexture!==null){o.setUniformi("zBufferTexture",e.zBufferTexture.getTextureUnit());const f=e._useSmallViewport?[e._smallViewportWidth,e._smallViewportHeight]:e._openGLRenderWindow.getFramebufferSize();o.setUniformf("vpZWidth",f[0]),o.setUniformf("vpZHeight",f[1])}},t.setCameraShaderParameters=(i,a,s)=>{const o=e.openGLCamera.getKeyMatrices(a),c=e.openGLVolume.getKeyMatrices();ae(e.modelToView,o.wcvc,c.mcwc);const l=i.getProgram(),u=e.openGLCamera.getRenderable(),f=u.getClippingRange();l.setUniformf("camThick",f[1]-f[0]),l.setUniformf("camNear",f[0]),l.setUniformf("camFar",f[1]);const g=e.currentInput.getBounds(),h=e.currentInput.getDimensions(),d=new Float64Array(3),m=new Float64Array(3);let p=1,v=-1,T=1,C=-1;for(let I=0;I<8;++I){if(ce(d,g[I%2],g[2+Math.floor(I/2)%2],g[4+Math.floor(I/4)]),ue(d,d,e.modelToView),!u.getParallelProjection()){Pe(m,d);const P=-f[0]/d[2];vt(d,m,P)}ue(d,d,o.vcpc),p=Math.min(d[0],p),v=Math.max(d[0],v),T=Math.min(d[1],T),C=Math.max(d[1],C)}l.setUniformf("dcxmin",p),l.setUniformf("dcxmax",v),l.setUniformf("dcymin",T),l.setUniformf("dcymax",C),l.isUniformUsed("cameraParallel")&&l.setUniformi("cameraParallel",u.getParallelProjection());const y=e.currentInput.getSpatialExtent(),x=e.currentInput.getSpacing(),w=new Float64Array(3);ce(w,(y[1]-y[0])*x[0],(y[3]-y[2])*x[1],(y[5]-y[4])*x[2]),l.setUniform3f("vSpacing",x[0],x[1],x[2]),ce(d,y[0],y[2],y[4]),e.currentInput.indexToWorldVec3(d,d),ue(d,d,e.modelToView),l.setUniform3f("vOriginVC",d[0],d[1],d[2]);const E=e.currentInput.getIndexToWorld();ae(e.idxToView,e.modelToView,E),Eo(e.idxNormalMatrix,o.normalMatrix,c.normalMatrix),Eo(e.idxNormalMatrix,e.idxNormalMatrix,e.currentInput.getDirectionByReference());const R=rn(w)/t.getCurrentSampleDistance(a);R>e.renderable.getMaximumSamplesPerRay()&&cd(`The number of steps required ${Math.ceil(R)} is larger than the + specified maximum number of steps ${e.renderable.getMaximumSamplesPerRay()}. + Please either change the + volumeMapper sampleDistance or its maximum number of samples.`);const D=new Float64Array(3);if(ce(D,1,1,1),Sh(D,D,w),l.setUniform3f("vVCToIJK",D[0],D[1],D[2]),l.setUniform3i("volumeDimensions",h[0],h[1],h[2]),l.setUniform3f("volumeSpacings",x[0],x[1],x[2]),!e._openGLRenderWindow.getWebgl2()){const I=e.scalarTexture.getVolumeInfo();l.setUniformf("texWidth",e.scalarTexture.getWidth()),l.setUniformf("texHeight",e.scalarTexture.getHeight()),l.setUniformi("xreps",I.xreps),l.setUniformi("xstride",I.xstride),l.setUniformi("ystride",I.ystride)}const S=new Float64Array(3),O=new Float64Array(3);for(let I=0;I<6;++I){switch(I){case 1:ce(S,-1,0,0),ce(O,y[0],y[2],y[4]);break;case 2:ce(S,0,1,0),ce(O,y[1],y[3],y[5]);break;case 3:ce(S,0,-1,0),ce(O,y[0],y[2],y[4]);break;case 4:ce(S,0,0,1),ce(O,y[1],y[3],y[5]);break;case 5:ce(S,0,0,-1),ce(O,y[0],y[2],y[4]);break;case 0:default:ce(S,1,0,0),ce(O,y[1],y[3],y[5]);break}Vi(S,S,e.idxNormalMatrix),ue(O,O,e.idxToView);const P=-1*le(O,S);l.setUniform3f(`vPlaneNormal${I}`,S[0],S[1],S[2]),l.setUniformf(`vPlaneDistance${I}`,P)}if(t.isLabelmapOutlineRequired(s)){const P=e.currentInput.getWorldToIndex();l.setUniformMatrix("vWCtoIDX",P);const k=a.getActiveCamera(),[F,N]=k.getClippingRange(),_=k.getDistance();k.setClippingRange(_,_+.1);const B=e.openGLCamera.getKeyMatrices(a);Be(e.projectionToWorld,B.wcpc),k.setClippingRange(F,N),e.openGLCamera.getKeyMatrices(a),l.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const G=t.getRenderTargetSize();l.setUniformf("vpWidth",G[0]),l.setUniformf("vpHeight",G[1]);const Q=t.getRenderTargetOffset();l.setUniformf("vpOffsetX",Q[0]/G[0]),l.setUniformf("vpOffsetY",Q[1]/G[1])}if(Be(e.projectionToView,o.vcpc),l.setUniformMatrix("PCVCMatrix",e.projectionToView),e.lightComplexity===0)return;let V=0;const L=[],b=[],U=[];if(a.getLights().forEach(I=>{if(I.getSwitch()>0){const k=I.getColor(),F=I.getIntensity();L[0+V*3]=k[0]*F,L[1+V*3]=k[1]*F,L[2+V*3]=k[2]*F;const N=I.getDirection();ce(S,N[0],N[1],N[2]),Vi(S,S,o.normalMatrix),Pe(S,S),b[0+V*3]=S[0],b[1+V*3]=S[1],b[2+V*3]=S[2],U[0+V*3]=-.5*S[0],U[1+V*3]=-.5*S[1],U[2+V*3]=-.5*(S[2]-1),V++}}),l.setUniformi("twoSidedLighting",a.getTwoSidedLighting()),l.setUniformi("lightNum",V),l.setUniform3fv("lightColor",L),l.setUniform3fv("lightDirectionVC",b),l.setUniform3fv("lightHalfAngleVC",U),e.lightComplexity===3){V=0;const I=[],P=[],k=[],F=[],N=[];a.getLights().forEach(_=>{if(_.getSwitch()>0){const G=_.getAttenuationValues();P[0+V*3]=G[0],P[1+V*3]=G[1],P[2+V*3]=G[2],F[V]=_.getExponent(),k[V]=_.getConeAngle(),N[V]=_.getPositional();const Q=_.getTransformedPosition();ue(Q,Q,e.modelToView),I[0+V*3]=Q[0],I[1+V*3]=Q[1],I[2+V*3]=Q[2],V+=1}}),l.setUniform3fv("lightPositionVC",I),l.setUniform3fv("lightAttenuation",P),l.setUniformfv("lightConeAngle",k),l.setUniformfv("lightExponent",F),l.setUniformiv("lightPositional",N)}if(e.renderable.getVolumetricScatteringBlending()>0&&(l.setUniformf("giReach",e.renderable.getGlobalIlluminationReach()),l.setUniformf("volumetricScatteringBlending",e.renderable.getVolumetricScatteringBlending()),l.setUniformf("volumeShadowSamplingDistFactor",e.renderable.getVolumeShadowSamplingDistFactor()),l.setUniformf("anisotropy",e.renderable.getAnisotropy()),l.setUniformf("anisotropy2",e.renderable.getAnisotropy()**2)),e.renderable.getLocalAmbientOcclusion()&&s.getProperty().getAmbient()>0){const I=e.renderable.getLAOKernelSize();l.setUniformi("kernelSize",I);const P=[];for(let k=0;k{const o=i.getProgram();o.setUniformi("ctexture",e.colorTexture.getTextureUnit()),o.setUniformi("otexture",e.opacityTexture.getTextureUnit()),o.setUniformi("jtexture",e.jitterTexture.getTextureUnit()),o.setUniformi("ttexture",e.labelOutlineThicknessTexture.getTextureUnit());const c=e.scalarTexture.getVolumeInfo(),l=s.getProperty(),u=e.scalarTexture.getComponents(),f=t.useIndependentComponents(l);if(f)for(let h=0;h0&&(o.setUniformf("vAmbient",l.getAmbient()),o.setUniformf("vDiffuse",l.getDiffuse()),o.setUniformf("vSpecular",l.getSpecular()),o.setUniformf("vSpecularPower",l.getSpecularPower()))},t.getClippingPlaneShaderParameters=(i,a,s)=>{if(e.renderable.getClippingPlanes().length>0){const o=e.openGLCamera.getKeyMatrices(a),c=[],l=[],u=[],f=e.renderable.getClippingPlanes(),g=f.length;for(let d=0;d{e._animationRateSubscription&&(e._animationRateSubscription.unsubscribe(),e._animationRateSubscription=null)},()=>{e._openGLRenderWindow&&n(e._openGLRenderWindow)},t.delete),t.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:i,vsize:a}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,a]},t.getRenderTargetOffset=()=>{const{lowerLeftU:i,lowerLeftV:a}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,a]},t.getCurrentSampleDistance=i=>{const a=i.getVTKWindow().getInteractor(),s=e.renderable.getSampleDistance();if(a.isAnimating()){const o=e.renderable.getInteractionSampleDistanceFactor();return s*o}return s},t.renderPieceStart=(i,a)=>{const s=i.getVTKWindow().getInteractor();if(e._lastScale||(e._lastScale=e.renderable.getInitialInteractionScale()),e._useSmallViewport=!1,s.isAnimating()&&e._lastScale>1.5&&(e._useSmallViewport=!0),e._animationRateSubscription||(e._animationRateSubscription=s.onAnimationFrameRateUpdate(()=>{if(e.renderable.getAutoAdjustSampleDistances()){const c=s.getRecentAnimationFrameRate(),l=s.getDesiredUpdateRate()/c;(l>1.15||l<.85)&&(e._lastScale*=l),e._lastScale>400&&(e._lastScale=400),e._lastScale<1.5&&(e._lastScale=1.5)}else e._lastScale=e.renderable.getImageSampleDistance()*e.renderable.getImageSampleDistance()})),e._useSmallViewport){const c=e._openGLRenderWindow.getFramebufferSize(),l=1/Math.sqrt(e._lastScale);if(e._smallViewportWidth=Math.ceil(l*c[0]),e._smallViewportHeight=Math.ceil(l*c[1]),e._smallViewportHeight>c[1]&&(e._smallViewportHeight=c[1]),e._smallViewportWidth>c[0]&&(e._smallViewportWidth=c[0]),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.getGLFramebuffer()===null)e.framebuffer.create(c[0],c[1]),e.framebuffer.populateFramebuffer();else{const f=e.framebuffer.getSize();(!f||f[0]!==c[0]||f[1]!==c[1])&&(e.framebuffer.create(c[0],c[1]),e.framebuffer.populateFramebuffer())}e.framebuffer.bind();const u=e.context;u.clearColor(0,0,0,0),u.colorMask(!0,!0,!0,!0),u.clear(u.COLOR_BUFFER_BIT),u.viewport(0,0,e._smallViewportWidth,e._smallViewportHeight),e.fvp=[e._smallViewportWidth/c[0],e._smallViewportHeight/c[1]]}e.context.disable(e.context.DEPTH_TEST),t.updateBufferObjects(i,a),a.getProperty().getInterpolationType()===Os.NEAREST?(e.scalarTexture.setMinificationFilter(H.NEAREST),e.scalarTexture.setMagnificationFilter(H.NEAREST)):(e.scalarTexture.setMinificationFilter(H.LINEAR),e.scalarTexture.setMagnificationFilter(H.LINEAR)),e.zBufferTexture!==null&&e.zBufferTexture.activate()},t.renderPieceDraw=(i,a)=>{const s=e.context;e.scalarTexture.activate(),e.opacityTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.colorTexture.activate(),e.jitterTexture.activate(),t.updateShaders(e.tris,i,a),s.drawArrays(s.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.scalarTexture.deactivate(),e.colorTexture.deactivate(),e.opacityTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.jitterTexture.deactivate()},t.renderPieceFinish=(i,a)=>{if(e.zBufferTexture!==null&&e.zBufferTexture.deactivate(),e._useSmallViewport){if(e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null){e.copyShader=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","uniform vec2 tfactor;","varying vec2 tcoord;","void main() { tcoord = vec2(vertexDC.x*0.5 + 0.5, vertexDC.y*0.5 + 0.5) * tfactor; gl_Position = vertexDC; }"].join(` +`),["//VTK::System::Dec","//VTK::Output::Dec","uniform sampler2D texture1;","varying vec2 tcoord;","void main() { gl_FragData[0] = texture2D(texture1,tcoord); }"].join(` +`),"");const l=e.copyShader;e.copyVAO=Fl.newInstance(),e.copyVAO.setOpenGLRenderWindow(e._openGLRenderWindow),e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(l,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||Ha("Error setting vertexDC in copy shader VAO.")}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.copyShader);const s=e._openGLRenderWindow.getFramebufferSize();e.context.viewport(0,0,s[0],s[1]);const o=e.framebuffer.getColorTexture();o.activate(),e.copyShader.setUniformi("texture",o.getTextureUnit()),e.copyShader.setUniform2f("tfactor",e.fvp[0],e.fvp[1]);const c=e.context;c.blendFuncSeparate(c.ONE,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),o.deactivate(),c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA)}},t.renderPiece=(i,a)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent({type:"EndEvent"}),!e.currentInput){Ha("No input!");return}t.renderPieceStart(i,a),t.renderPieceDraw(i,a),t.renderPieceFinish(i,a)},t.computeBounds=(i,a)=>{if(!t.getInput()){xa(e.Bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(i,a)=>{t.getNeedToRebuildBufferObjects(i,a)&&t.buildBufferObjects(i,a)},t.getNeedToRebuildBufferObjects=(i,a)=>{var s,o,c;return e.VBOBuildTime.getMTime(){var E,R;const s=e.currentInput;if(!s)return;const o=s.getPointData()&&s.getPointData().getScalars();if(!o)return;const c=a.getProperty();if(!e.jitterTexture.getHandle()){const D=new Uint8Array(1024);for(let S=0;S<32*32;++S)D[S]=255*Math.random();e.jitterTexture.setMinificationFilter(H.LINEAR),e.jitterTexture.setMagnificationFilter(H.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,me.UNSIGNED_CHAR,D)}const l=o.getNumberOfComponents(),u=t.useIndependentComponents(c),f=u?l:1,g=c.getScalarOpacity(),h=e._openGLRenderWindow.getGraphicsResourceForObject(g);let d=cn(g,u,f);if(!(h!=null&&h.oglObject)||h.hash!==d){e.opacityTexture=We.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const D=1024,S=D*2*f,O=new Float32Array(S),V=new Float32Array(D);for(let L=0;L1?1:-1,D[L*3+2]=-1;const S=new Uint16Array(8);S[0]=3,S[1]=0,S[2]=1,S[3]=3,S[4]=3,S[5]=0,S[6]=3,S[7]=2;const O=ie.newInstance({numberOfComponents:3,values:D});O.setName("points");const V=ie.newInstance({numberOfComponents:1,values:S});e.tris.getCABO().createVBO(V,"polys",Rt.SURFACE,{points:O,cellOffset:0})}e.VBOBuildTime.modified()},t.updateLabelOutlineThicknessTexture=i=>{var l;const a=i.getProperty().getLabelOutlineThickness(),s=e._openGLRenderWindow.getGraphicsResourceForObject(a),o=`${a.join("-")}`;if(!((l=s==null?void 0:s.oglObject)!=null&&l.getHandle())||(s==null?void 0:s.hash)!==o){e.labelOutlineThicknessTexture=We.newInstance(),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const u=1024,f=1,g=u*f,h=new Uint8Array(g);for(let d=0;d{const a=i.getProperty(),s=e.renderable;return a.getUseLabelOutline()||s.getBlendMode()===wi.LABELMAP_EDGE_PROJECTION_BLEND}}const fd={context:null,VBOBuildTime:null,scalarTexture:null,opacityTexture:null,opacityTextureString:null,colorTexture:null,colorTextureString:null,jitterTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,tris:null,framebuffer:null,copyShader:null,copyVAO:null,lastXYF:1,targetXYF:1,zBufferTexture:null,lastZBufferTexture:null,lightComplexity:0,fullViewportTime:1,idxToView:null,idxNormalMatrix:null,modelToView:null,projectionToView:null,avgWindowArea:0,avgFrameTime:0};function gd(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fd,n),He.extend(t,e,n),Jn.implementBuildShadersWithReplacements(t,e,n),e.VBOBuildTime={},Ve(e.VBOBuildTime,{mtime:0}),e.tris=Sa.newInstance(),e.jitterTexture=We.newInstance(),e.jitterTexture.setWrapS(Br.REPEAT),e.jitterTexture.setWrapT(Br.REPEAT),e.framebuffer=j3.newInstance(),e.idxToView=q(new Float64Array(16)),e.idxNormalMatrix=wa(new Float64Array(9)),e.modelToView=q(new Float64Array(16)),e.projectionToView=q(new Float64Array(16)),e.projectionToWorld=q(new Float64Array(16)),Xe(t,e,["context"]),ud(t,e)}const hd=Ue(gd,"vtkOpenGLVolumeMapper");Nt("vtkVolumeMapper",hd);function D0(t,e){switch(t){case"Float32Array":return Float32Array;case"Uint8Array":return Uint8Array;case"Uint32Array":return Uint32Array;case"Uint16Array":case"Int16Array":return e?(console.debug(`${t} is not supported for volume rendering, switching back to Float32Array`),Float32Array):t==="Uint16Array"?Uint16Array:Int16Array;default:if(t)throw new Error("TargetBuffer should be Float32Array, Uint8Array, Uint16Array, Int16Array, or Uint32Array");return Float32Array}}function V2(t,e,n={}){const{isVolumeBuffer:r=!1}=n,i=D0(t,r),a=i.BYTES_PER_ELEMENT;return{numBytes:e*a,TypedArrayConstructor:i}}function Da(t){return Gr.get(t)}function Va(){return Gr.getAll()}const ra=t=>t&&typeof t=="object"&&Object.prototype.toString.call(t)!=="[object RegExp]"&&Object.prototype.toString.call(t)!=="[object Date]",dd=t=>Array.isArray(t)?[]:{},Ar=(t,e)=>e&&e.clone===!0&&ra(t)?Ia(dd(t),t,e):t,zo=(t,e,n)=>{const r=t.slice();return e.forEach(function(i,a){typeof r[a]>"u"?r[a]=Ar(i,n):ra(i)?r[a]=Ia(t[a],i,n):t.indexOf(i)===-1&&(r[a]=Ar(i,n))}),r},pd=(t,e,n)=>{const r={};return ra(t)&&Object.keys(t).forEach(function(i){r[i]=Ar(t[i],n)}),Object.keys(e).forEach(function(i){!ra(e[i])||!t[i]?r[i]=Ar(e[i],n):r[i]=Ia(t[i],e[i],n)}),r},Ia=(t={},e={},n=void 0)=>{const r=Array.isArray(e),a=(n||{arrayMerge:zo}).arrayMerge||zo;return r?Array.isArray(t)?a(t,e,n):Ar(e,n):pd(t,e,n)};class md{constructor(e){this.numRequests={[Z.Interaction]:0,[Z.Thumbnail]:0,[Z.Prefetch]:0,[Z.Compute]:0},this.id=e||Ot(),this.requestPool={[Z.Interaction]:{0:[]},[Z.Thumbnail]:{0:[]},[Z.Prefetch]:{0:[]},[Z.Compute]:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={[Z.Interaction]:0,[Z.Thumbnail]:0,[Z.Prefetch]:0,[Z.Compute]:0},this.maxNumRequests={[Z.Interaction]:6,[Z.Thumbnail]:6,[Z.Prefetch]:5,[Z.Compute]:1e3}}setMaxSimultaneousRequests(e,n){this.maxNumRequests[e]=n}getMaxSimultaneousRequests(e){return this.maxNumRequests[e]}destroy(){this.timeoutHandle&&window.clearTimeout(this.timeoutHandle)}addRequest(e,n,r,i=0){const a={requestFn:e,type:n,additionalDetails:r};this.requestPool[n][i]===void 0&&(this.requestPool[n][i]=[]),this.requestPool[n][i].push(a),this.startGrabbing()}filterRequests(e){Object.keys(this.requestPool).forEach(n=>{const r=this.requestPool[n];Object.keys(r).forEach(i=>{r[i]=r[i].filter(a=>e(a))})})}clearRequestStack(e){if(!this.requestPool[e])throw new Error(`No category for the type ${e} found`);this.requestPool[e]={0:[]}}sendRequests(e){const n=this.maxNumRequests[e]-this.numRequests[e];let r=0;for(let i=0;i{this.numRequests[e]--,this.startAgain()}):(this.numRequests[e]--,r++)}}return r&&this.startAgain(),!0}getNextRequest(e){const n=this.getSortedPriorityGroups(e);for(const r of n)if(this.requestPool[e][r].length)return this.requestPool[e][r].shift();return null}startGrabbing(){const e=this.sendRequests(Z.Interaction),n=this.sendRequests(Z.Thumbnail),r=this.sendRequests(Z.Prefetch),i=this.sendRequests(Z.Compute);!e&&!n&&!r&&!i&&(this.awake=!1)}startAgain(){this.awake&&(this.grabDelay!==void 0?this.timeoutHandle||(this.timeoutHandle=window.setTimeout(()=>{this.timeoutHandle=null,this.startGrabbing()},this.grabDelay)):this.startGrabbing())}getSortedPriorityGroups(e){return Object.keys(this.requestPool[e]).map(Number).filter(r=>this.requestPool[e][r].length).sort((r,i)=>r-i)}getRequestPool(){return this.requestPool}}const $o={gpuTier:{tier:2},isMobile:!1,rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,strictZSpacingForVolumeViewport:!0},peerImport:t=>null};let V0={...$o,rendering:{...$o.rendering}};function vd(){return/iPad|iPhone|iPod/.test(navigator.platform)?!0:navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&navigator.platform.includes("MacIntel")}function I2(){return!vd()}function Vr(){return V0.rendering.useCPURendering}function I0(){return V0}async function yd(t){return V0.peerImport(t)}const{vtkDebugMacro:hi}=M;function Td(t,e){e.classHierarchy.push("vtkCamera");const n=new Float64Array(3),r=new Float64Array([0,0,-1]),i=new Float64Array([0,1,0]),a=q(new Float64Array(16)),s=q(new Float64Array(16)),o=new Float64Array(3),c=new Float64Array(3),l=new Float64Array(3),u=q(new Float64Array(16)),f=q(new Float64Array(16)),g=new Float64Array(3),h=new Float64Array(3);function d(){e.viewPlaneNormal[0]=-e.directionOfProjection[0],e.viewPlaneNormal[1]=-e.directionOfProjection[1],e.viewPlaneNormal[2]=-e.directionOfProjection[2]}t.orthogonalizeViewUp=()=>{const m=t.getViewMatrix();e.viewUp[0]=m[4],e.viewUp[1]=m[5],e.viewUp[2]=m[6],t.modified()},t.setPosition=(m,p,v)=>{m===e.position[0]&&p===e.position[1]&&v===e.position[2]||(e.position[0]=m,e.position[1]=p,e.position[2]=v,t.computeDistance(),t.modified())},t.setFocalPoint=(m,p,v)=>{m===e.focalPoint[0]&&p===e.focalPoint[1]&&v===e.focalPoint[2]||(e.focalPoint[0]=m,e.focalPoint[1]=p,e.focalPoint[2]=v,t.computeDistance(),t.modified())},t.setDistance=m=>{if(e.distance===m)return;e.distance=m,e.distance<1e-20&&(e.distance=1e-20,hi("Distance is set to minimum."));const p=e.directionOfProjection;e.focalPoint[0]=e.position[0]+p[0]*e.distance,e.focalPoint[1]=e.position[1]+p[1]*e.distance,e.focalPoint[2]=e.position[2]+p[2]*e.distance,t.modified()},t.computeDistance=()=>{const m=e.focalPoint[0]-e.position[0],p=e.focalPoint[1]-e.position[1],v=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(m*m+p*p+v*v),e.distance<1e-20){e.distance=1e-20,hi("Distance is set to minimum.");const T=e.directionOfProjection;e.focalPoint[0]=e.position[0]+T[0]*e.distance,e.focalPoint[1]=e.position[1]+T[1]*e.distance,e.focalPoint[2]=e.position[2]+T[2]*e.distance}e.directionOfProjection[0]=m/e.distance,e.directionOfProjection[1]=p/e.distance,e.directionOfProjection[2]=v/e.distance,d()},t.dolly=m=>{if(m<=0)return;const p=e.distance/m;t.setPosition(e.focalPoint[0]-p*e.directionOfProjection[0],e.focalPoint[1]-p*e.directionOfProjection[1],e.focalPoint[2]-p*e.directionOfProjection[2])},t.roll=m=>{const p=e.position,v=e.focalPoint,T=e.viewUp,C=new Float64Array([T[0],T[1],T[2],0]);q(u);const y=new Float64Array([v[0]-p[0],v[1]-p[1],v[2]-p[2]]);lt(u,u,Ge(m),y),Mn(C,C,u),e.viewUp[0]=C[0],e.viewUp[1]=C[1],e.viewUp[2]=C[2],t.modified()},t.azimuth=m=>{const p=e.focalPoint;q(f),Re(f,f,p),lt(f,f,Ge(m),e.viewUp),Re(f,f,[-p[0],-p[1],-p[2]]),ue(g,e.position,f),t.setPosition(g[0],g[1],g[2])},t.yaw=m=>{const p=e.position;q(f),Re(f,f,p),lt(f,f,Ge(m),e.viewUp),Re(f,f,[-p[0],-p[1],-p[2]]),ue(h,e.focalPoint,f),t.setFocalPoint(h[0],h[1],h[2])},t.elevation=m=>{const p=e.focalPoint,v=t.getViewMatrix(),T=[-v[0],-v[1],-v[2]];q(f),Re(f,f,p),lt(f,f,Ge(m),T),Re(f,f,[-p[0],-p[1],-p[2]]),ue(g,e.position,f),t.setPosition(g[0],g[1],g[2])},t.pitch=m=>{const p=e.position,v=t.getViewMatrix(),T=[v[0],v[1],v[2]];q(f),Re(f,f,p),lt(f,f,Ge(m),T),Re(f,f,[-p[0],-p[1],-p[2]]),ue(h,e.focalPoint,f),t.setFocalPoint(...h)},t.zoom=m=>{m<=0||(e.parallelProjection?e.parallelScale/=m:e.viewAngle/=m,t.modified())},t.translate=(m,p,v)=>{const T=[m,p,v];Hi(e.position,T,e.position),Hi(e.focalPoint,T,e.focalPoint),t.computeDistance(),t.modified()},t.applyTransform=m=>{const p=[...e.viewUp,1],v=[],T=[],C=[];p[0]+=e.position[0],p[1]+=e.position[1],p[2]+=e.position[2],Mn(v,[...e.position,1],m),Mn(T,[...e.focalPoint,1],m),Mn(C,p,m),C[0]-=v[0],C[1]-=v[1],C[2]-=v[2],t.setPosition(...v.slice(0,3)),t.setFocalPoint(...T.slice(0,3)),t.setViewUp(...C.slice(0,3))},t.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],t.setThickness=m=>{let p=m;p<1e-20&&(p=1e-20,hi("Thickness is set to minimum.")),t.setClippingRange(e.clippingRange[0],e.clippingRange[0]+p)},t.setThicknessFromFocalPoint=m=>{let p=m;p<1e-20&&(p=1e-20,hi("Thickness is set to minimum.")),t.setClippingRange(e.distance-p/2,e.distance+p/2)},t.setRoll=m=>{},t.getRoll=()=>{},t.setObliqueAngles=(m,p)=>{},t.getOrientation=()=>{},t.getOrientationWXYZ=()=>{},t.getFrustumPlanes=m=>{},t.getCameraLightTransformMatrix=m=>(Fe(m,e.cameraLightTransform),m),t.computeCameraLightTransform=()=>{Fe(a,t.getViewMatrix()),Be(a,a),h0(s,[e.distance,e.distance,e.distance]),ae(a,a,s),q(e.cameraLightTransform),Re(e.cameraLightTransform,a,[0,0,-1])},t.deepCopy=m=>{},t.physicalOrientationToWorldDirection=m=>{const p=No(m[0],m[1],m[2],m[3]),v=In(),T=No(0,0,1,0);return Lh(v,p),Lo(T,p,T),Lo(T,T,v),[T[0],T[1],T[2]]},t.getPhysicalToWorldMatrix=m=>{t.getWorldToPhysicalMatrix(m),Be(m,m)},t.getWorldToPhysicalMatrix=m=>{q(m);const p=[3];Dt(e.physicalViewNorth,e.physicalViewUp,p),m[0]=p[0],m[1]=p[1],m[2]=p[2],m[4]=e.physicalViewUp[0],m[5]=e.physicalViewUp[1],m[6]=e.physicalViewUp[2],m[8]=-e.physicalViewNorth[0],m[9]=-e.physicalViewNorth[1],m[10]=-e.physicalViewNorth[2],fe(m,m),ce(o,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),Vt(m,m,o),Re(m,m,e.physicalTranslation)},t.computeViewParametersFromViewMatrix=m=>{Be(a,m),ue(o,n,a),t.computeDistance();const p=e.distance;t.setPosition(o[0],o[1],o[2]),ue(c,r,a),ze(c,c,o),Pe(c,c),t.setDirectionOfProjection(c[0],c[1],c[2]),ue(l,i,a),ze(l,l,o),Pe(l,l),t.setViewUp(l[0],l[1],l[2]),t.setDistance(p)},t.computeViewParametersFromPhysicalMatrix=m=>{t.getWorldToPhysicalMatrix(a),ae(a,m,a),t.computeViewParametersFromViewMatrix(a)},t.setViewMatrix=m=>{e.viewMatrix=m,e.viewMatrix&&(Fe(a,e.viewMatrix),t.computeViewParametersFromViewMatrix(a),fe(e.viewMatrix,e.viewMatrix))},t.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;vl(a,e.position,e.focalPoint,e.viewUp),fe(a,a);const m=new Float64Array(16);return Fe(m,a),m},t.setProjectionMatrix=m=>{e.projectionMatrix=m},t.getProjectionMatrix=(m,p,v)=>{const T=new Float64Array(16);if(q(T),e.projectionMatrix){const x=1/e.physicalScale;return ce(o,x,x,x),Fe(T,e.projectionMatrix),Vt(T,T,o),fe(T,T),T}q(a);const C=e.clippingRange[1]-e.clippingRange[0],y=[e.clippingRange[0]+(p+1)*C/2,e.clippingRange[0]+(v+1)*C/2];if(e.parallelProjection){const x=e.parallelScale*m,w=e.parallelScale,E=(e.windowCenter[0]-1)*x,R=(e.windowCenter[0]+1)*x,D=(e.windowCenter[1]-1)*w,S=(e.windowCenter[1]+1)*w;p0(a,E,R,D,S,y[0],y[1]),fe(a,a)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const x=Math.tan(Ge(e.viewAngle)/2);let w,E;e.useHorizontalViewAngle===!0?(w=e.clippingRange[0]*x,E=e.clippingRange[0]*x/m):(w=e.clippingRange[0]*x*m,E=e.clippingRange[0]*x);const R=(e.windowCenter[0]-1)*w,D=(e.windowCenter[0]+1)*w,S=(e.windowCenter[1]-1)*E,O=(e.windowCenter[1]+1)*E,V=y[0],L=y[1];a[0]=2*V/(D-R),a[5]=2*V/(O-S),a[2]=(R+D)/(D-R),a[6]=(S+O)/(O-S),a[10]=-(V+L)/(L-V),a[14]=-1,a[11]=-2*V*L/(L-V),a[15]=0}}return Fe(T,a),T},t.getCompositeProjectionMatrix=(m,p,v)=>{const T=t.getViewMatrix(),C=t.getProjectionMatrix(m,p,v);return ae(C,T,C),C},t.setDirectionOfProjection=(m,p,v)=>{if(e.directionOfProjection[0]===m&&e.directionOfProjection[1]===p&&e.directionOfProjection[2]===v)return;e.directionOfProjection[0]=m,e.directionOfProjection[1]=p,e.directionOfProjection[2]=v;const T=e.directionOfProjection;e.focalPoint[0]=e.position[0]+T[0]*e.distance,e.focalPoint[1]=e.position[1]+T[1]*e.distance,e.focalPoint[2]=e.position[2]+T[2]*e.distance,d()},t.setDeviceAngles=(m,p,v,T)=>{const C=[3];Dt(e.physicalViewNorth,e.physicalViewUp,C);const y=q(new Float64Array(16));lt(y,y,Ge(m),e.physicalViewUp),lt(y,y,Ge(p),C),lt(y,y,Ge(v),e.physicalViewNorth),lt(y,y,Ge(-T),e.physicalViewUp);const x=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),w=new Float64Array(e.physicalViewNorth);ue(x,x,y),ue(w,w,y),t.setDirectionOfProjection(x[0],x[1],x[2]),t.setViewUp(w[0],w[1],w[2]),t.modified()},t.setOrientationWXYZ=(m,p,v,T)=>{const C=q(new Float64Array(16));if(m!==0&&(p!==0||v!==0||T!==0)){const w=Ge(m),E=In();m0(E,[p,v,T],w),qi(C,E)}const y=new Float64Array(3);ue(y,[0,0,-1],C);const x=new Float64Array(3);ue(x,[0,1,0],C),t.setDirectionOfProjection(...y),t.setViewUp(...x),t.modified()},t.computeClippingRange=m=>{let p=null,v=null;p=e.viewPlaneNormal,v=e.position;const T=-p[0],C=-p[1],y=-p[2],x=-(T*v[0]+C*v[1]+y*v[2]),w=[T*m[0]+C*m[2]+y*m[4]+x,1e-18];for(let E=0;E<2;E++)for(let R=0;R<2;R++)for(let D=0;D<2;D++){const S=T*m[D]+C*m[2+R]+y*m[4+E]+x;w[0]=Sw[1]?S:w[1]}return w}}const Cd={position:[0,0,1],focalPoint:[0,0,0],viewUp:[0,1,0],directionOfProjection:[0,0,-1],parallelProjection:!1,useHorizontalViewAngle:!1,viewAngle:30,parallelScale:1,clippingRange:[.01,1000.01],windowCenter:[0,0],viewPlaneNormal:[0,0,1],useOffAxisProjection:!1,screenBottomLeft:[-.5,-.5,-.5],screenBottomRight:[.5,-.5,-.5],screenTopRight:[.5,.5,-.5],freezeFocalPoint:!1,projectionMatrix:null,viewMatrix:null,cameraLightTransform:Wt(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function L2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cd,n),M.obj(t,e),M.get(t,e,["distance"]),M.setGet(t,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),M.getArray(t,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),M.setGetArray(t,e,["clippingRange","windowCenter"],2),M.setGetArray(t,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),Td(t,e)}const xd=M.newInstance(L2,"vtkCamera");var N2={newInstance:xd,extend:L2};const{vtkErrorMacro:wd}=M,Sd=[1,-1,1,-1,1,-1];function Md(t,e){e.classHierarchy.push("vtkPoints"),t.getNumberOfPoints=t.getNumberOfTuples,t.setNumberOfPoints=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;t.getNumberOfPoints()!==n&&(e.size=n*r,e.values=M.newTypedArray(e.dataType,e.size),t.setNumberOfComponents(r),t.modified())},t.setPoint=function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;at.insertNextTuple([n,r,i]),t.getBounds=()=>{if(t.getNumberOfComponents()===3){const i=t.getRange(0);e.bounds[0]=i[0],e.bounds[1]=i[1];const a=t.getRange(1);e.bounds[2]=a[0],e.bounds[3]=a[1];const s=t.getRange(2);return e.bounds[4]=s[0],e.bounds[5]=s[1],e.bounds}if(t.getNumberOfComponents()!==2)return wd(`getBounds called on an array with components of + ${t.getNumberOfComponents()}`),Sd;const n=t.getRange(0);e.bounds[0]=n[0],e.bounds[1]=n[1];const r=t.getRange(1);return e.bounds[2]=r[0],e.bounds[3]=r[1],e.bounds[4]=0,e.bounds[5]=0,e.bounds},t.computeBounds=t.getBounds,t.setNumberOfComponents(e.numberOfComponents<2?3:e.numberOfComponents)}const Ed={empty:!0,numberOfComponents:3,dataType:me.FLOAT,bounds:[1,-1,1,-1,1,-1]};function b2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ed,n),ie.extend(t,e,n),Md(t,e)}const Rd=M.newInstance(b2,"vtkPoints");var Ds={newInstance:Rd,extend:b2};function F2(t){let e=0;return t.filter((n,r)=>r===e?(e+=n+1,!0):!1)}function _2(t){let e=0;for(let n=0;n(e.numberOfCells!==void 0&&!r||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=_2(t.getData())),e.numberOfCells),t.getCellSizes=r=>(e.cellSizes!==void 0&&!r||(e.cellSizes=F2(t.getData())),e.cellSizes),t.resize=r=>{const i=t.getNumberOfTuples();n.resize(r);const a=t.getNumberOfTuples();a{n.setData(r,1),e.numberOfCells=void 0,e.cellSizes=void 0},t.getCell=r=>{let i=r;const a=e.values[i++];return e.values.subarray(i,i+a)},t.insertNextCell=r=>{const i=t.getNumberOfCells();return t.insertNextTuples([r.length,...r]),++e.numberOfCells,e.cellSizes!=null&&e.cellSizes.push(r.length),i}}function Vd(t){return{empty:!0,numberOfComponents:1,dataType:me.UNSIGNED_INT,...t}}function U2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};ie.extend(t,e,Vd(n)),Dd(t,e)}const Id=M.newInstance(U2,"vtkCellArray");var Wr={newInstance:Id,extend:U2,...Od};function Ld(t,e){e.classHierarchy.push("vtkCell"),t.initialize=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(r){e.pointsIds=r;let i=e.points.getData();i.length!==3*e.pointsIds.length&&(i=M.newTypedArray(n.getDataType(),3*e.pointsIds.length));const a=n.getData();e.pointsIds.forEach((s,o)=>{let c=3*s,l=3*o;i[l]=a[c],i[++l]=a[++c],i[++l]=a[++c]}),e.points.setData(i)}else{e.points=n,e.pointsIds=new Array(n.getNumberOfPoints());for(let i=n.getNumberOfPoints()-1;i>=0;--i)e.pointsIds[i]=i}},t.getBounds=()=>{const n=e.points.getNumberOfPoints(),r=[];if(n){e.points.getPoint(0,r),e.bounds[0]=r[0],e.bounds[1]=r[0],e.bounds[2]=r[1],e.bounds[3]=r[1],e.bounds[4]=r[2],e.bounds[5]=r[2];for(let i=1;ie.bounds[1]?r[0]:e.bounds[1],e.bounds[2]=r[1]e.bounds[3]?r[1]:e.bounds[3],e.bounds[4]=r[2]e.bounds[5]?r[2]:e.bounds[5]}else xa(e.bounds);return e.bounds},t.getLength2=()=>{t.getBounds();let n=0,r=0;for(let i=0;i<3;i++)r=e.bounds[2*i+1]-e.bounds[2*i],n+=r*r;return n},t.getParametricDistance=n=>{let r,i=0;for(let a=0;a<3;a++)n[a]<0?r=-n[a]:n[a]>1?r=n[a]-1:r=0,r>i&&(i=r);return i},t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.deepCopy=n=>{n.initialize(e.points,e.pointsIds)},t.getCellDimension=()=>{},t.intersectWithLine=(n,r,i,a,s,o,c)=>{},t.evaluatePosition=(n,r,i,a,s,o)=>{M.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const Nd={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function k2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nd,n),M.obj(t,e),e.points||(e.points=Ds.newInstance()),M.get(t,e,["points","pointsIds"]),Ld(t,e)}const bd=M.newInstance(k2,"vtkCell");var ia={newInstance:bd,extend:k2};function Fd(t,e){let n=e;for(e>=t.array.length&&(n+=t.array.length);n>t.array.length;)t.array.push({ncells:0,cells:null});t.array.length=n}function _d(t,e){e.classHierarchy.push("vtkCellLinks"),t.buildLinks=n=>{const r=n.getPoints().getNumberOfPoints(),i=n.getNumberOfCells(),a=new Uint32Array(r);if(n.isA("vtkPolyData")){for(let s=0;s{t.incrementLinkCount(c)})}t.allocateLinks(r),e.maxId=r-1;for(let s=0;s{t.insertCellReference(c,a[c]++,s)})}}else{for(let s=0;s{t.incrementLinkCount(c)});t.allocateLinks(r),e.maxId=r-1;for(let s=0;s{t.insertCellReference(c,a[c]++,s)})}},t.allocate=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.array=Array(n).fill().map(()=>({ncells:0,cells:null})),e.extend=r,e.maxId=-1},t.initialize=()=>{e.array=null},t.getLink=n=>e.array[n],t.getNcells=n=>e.array[n].ncells,t.getCells=n=>e.array[n].cells,t.insertNextPoint=n=>{e.array.push({ncells:n,cells:Array(n)}),++e.maxId},t.insertNextCellReference=(n,r)=>{e.array[n].cells[e.array[n].ncells++]=r},t.deletePoint=n=>{e.array[n].ncells=0,e.array[n].cells=null},t.removeCellReference=(n,r)=>{e.array[r].cells=e.array[r].cells.filter(i=>i!==n),e.array[r].ncells=e.array[r].cells.length},t.addCellReference=(n,r)=>{e.array[r].cells[e.array[r].ncells++]=n},t.resizeCellList=(n,r)=>{e.array[n].cells.length=r},t.squeeze=()=>{Fd(e,e.maxId+1)},t.reset=()=>{e.maxId=-1},t.deepCopy=n=>{e.array=[...n.array],e.extend=n.extend,e.maxId=n.maxId},t.incrementLinkCount=n=>{++e.array[n].ncells},t.allocateLinks=n=>{for(let r=0;r{e.array[n].cells[r]=i}}const Ud={array:null,maxId:0,extend:0};function P2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ud,n),M.obj(t,e),_d(t,e)}const kd=M.newInstance(P2,"vtkCellLinks");var Pd={newInstance:kd,extend:P2};const de={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_QUAD:9,VTK_QUADRATIC_EDGE:21,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42},Vs=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function Gd(t){return t0&&arguments[0]!==void 0?arguments[0]:512,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.size=n>0?n:1,e.extend=r>0?r:1,e.maxId=-1,e.typeArray=new Uint8Array(n),e.locationArray=new Uint32Array(n)},t.insertCell=(n,r,i)=>{e.typeArray[n]=r,e.locationArray[n]=i,n>e.maxId&&(e.maxId=n)},t.insertNextCell=(n,r)=>(t.insertCell(++e.maxId,n,r),e.maxId),t.setCellTypes=(n,r,i)=>{e.size=n,e.typeArray=r,e.locationArray=i,e.maxId=n-1},t.getCellLocation=n=>e.locationArray[n],t.deleteCell=n=>{e.typeArray[n]=de.VTK_EMPTY_CELL},t.getNumberOfTypes=()=>e.maxId+1,t.isType=n=>{const r=t.getNumberOfTypes();for(let i=0;it.insertNextCell(n,-1),t.getCellType=n=>e.typeArray[n],t.reset=()=>{e.maxId=-1},t.deepCopy=n=>{t.allocate(n.getSize(),n.getExtend()),e.typeArray.set(n.getTypeArray()),e.locationArray.set(n.getLocationArray()),e.maxId=n.getMaxId()}}const jd={size:0,maxId:-1,extend:1e3};function G2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jd,n),M.obj(t,e),M.get(t,e,["size","maxId","extend"]),M.getArray(t,e,["typeArray","locationArray"]),$d(t,e)}const Hd=M.newInstance(G2,"vtkCellTypes");var Kd={newInstance:Hd,extend:G2,...zd};const qd={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var B2={IntersectionState:qd};const{IntersectionState:bi}=B2;function zn(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;const i={t:Number.MIN_VALUE,distance:0},a=[];let s;a[0]=n[0]-e[0],a[1]=n[1]-e[1],a[2]=n[2]-e[2];const o=a[0]*(t[0]-e[0])+a[1]*(t[1]-e[1])+a[2]*(t[2]-e[2]),c=Y(a,a);let l=1e-5*o;return c!==0&&(i.t=o/c),l<0&&(l=-l),-l1?s=n:(s=a,a[0]=e[0]+i.t*a[0],a[1]=e[1]+i.t*a[1],a[2]=e[2]+i.t*a[2]),r&&(r[0]=s[0],r[1]=s[1],r[2]=s[2]),i.distance=St(s,t),i}function A2(t,e,n,r,i,a){const s=[],o=[],c=[];i[0]=0,a[0]=0,At(e,t,s),At(r,n,o),At(n,t,c);const l=[Y(s,s),-Y(s,o),-Y(s,o),Y(o,o)],u=[];if(u[0]=Y(s,c),u[1]=-Y(o,c),$1(l,u,2)===0){let f=Number.MAX_VALUE;const g=[t,e,n,r],h=[n,n,t,t],d=[r,r,e,e];a[0],a[0],i[0],i[0],i[0],i[0],a[0],a[0];let m;for(let p=0;p<4;p++)m=zn(g[p],h[p],d[p]),m.distance=0&&i[0]<=1&&a[0]>=0&&a[0]<=1?bi.YES_INTERSECTION:bi.NO_INTERSECTION}const Yd={distanceToLine:zn,intersection:A2};function Xd(t,e){e.classHierarchy.push("vtkLine");function n(r){return r>=0&&r<=1}t.getCellDimension=()=>1,t.intersectWithLine=(r,i,a,s,o)=>{const c={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};o[1]=0,o[2]=0;const l=[],u=[],f=[];e.points.getPoint(0,u),e.points.getPoint(1,f);const g=[],h=[],d=A2(r,i,u,f,g,h);if(c.t=g[0],c.betweenPoints=n(c.t),o[0]=h[0],d===bi.YES_INTERSECTION){for(let m=0;m<3;m++)s[m]=u[m]+o[0]*(f[m]-u[m]),l[m]=r[m]+c.t*(i[m]-r[m]);if(St(s,l)<=a*a)return c.intersect=1,c}else{let m;if(c.t<0)return m=zn(r,u,f,s),m.distance<=a*a&&(c.t=0,c.intersect=1,c.betweenPoints=!0),c;if(c.t>1)return m=zn(i,u,f,s),m.distance<=a*a&&(c.t=1,c.intersect=1,c.betweenPoints=!0),c;if(o[0]<0)return o[0]=0,m=zn(u,r,i,s),c.t=m.t,m.distance<=a*a&&(c.intersect=1),c;if(o[0]>1)return o[0]=1,m=zn(f,r,i,s),c.t=m.t,m.distance<=a*a&&(c.intersect=1),c}return c},t.evaluateLocation=(r,i,a)=>{const s=[],o=[];e.points.getPoint(0,s),e.points.getPoint(1,o);for(let c=0;c<3;c++)i[c]=s[c]+r[0]*(o[c]-s[c]);a[0]=1-r[0],a[1]=r[0]},t.evaluateOrientation=(r,i,a)=>e.orientations?(Ii(i,e.orientations[0],e.orientations[1],r[0]),a[0]=1-r[0],a[1]=r[0],!0):!1}const Zd={orientations:null};function W2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zd,n),ia.extend(t,e,n),M.setGet(t,e,["orientations"]),Xd(t,e)}const Jd=M.newInstance(W2,"vtkLine");var at={newInstance:Jd,extend:W2,...Yd,...B2};function Qd(t,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=pt(e.points):e.points=Ds.newInstance(),t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.getBounds=()=>e.points.getBounds(),t.computeBounds=()=>{t.getBounds()};const n=t.shallowCopy;t.shallowCopy=function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,i),e.points=Ds.newInstance(),e.points.shallowCopy(r.getPoints())}}const ep={};function z2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ep,n),Bl.extend(t,e,n),M.setGet(t,e,["points"]),Qd(t,e)}const tp=M.newInstance(z2,"vtkPointSet");var np={newInstance:tp,extend:z2};function L0(t,e,n,r){const i=n[0]-e[0],a=n[1]-e[1],s=n[2]-e[2],o=t[0]-e[0],c=t[1]-e[1],l=t[2]-e[2];r[0]=a*l-s*c,r[1]=s*o-i*l,r[2]=i*c-a*o}function aa(t,e,n,r){L0(t,e,n,r);const i=Math.sqrt(r[0]*r[0]+r[1]*r[1]+r[2]*r[2]);i!==0&&(r[0]/=i,r[1]/=i,r[2]/=i)}function rp(t,e,n,r,i,a){let s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1e-6,o=!1;const c=[],l=[],u=[],f=[],g=[];aa(t,e,n,f),aa(r,i,a,g);const h=-Y(f,t),d=-Y(g,r),m=[Y(g,t)+d,Y(g,e)+d,Y(g,n)+d];if(m[0]*m[1]>s&&m[0]*m[2]>s)return{intersect:!1,coplanar:o,pt1:c,pt2:l,surfaceId:u};const p=[Y(f,r)+h,Y(f,i)+h,Y(f,a)+h];if(p[0]*p[1]>s&&p[0]*p[2]>s)return{intersect:!1,coplanar:o,pt1:c,pt2:l,surfaceId:u};if(Math.abs(f[0]-g[0])<1e-9&&Math.abs(f[1]-g[1])<1e-9&&Math.abs(f[2]-g[2])<1e-9&&Math.abs(h-d)<1e-9)return o=!0,{intersect:!1,coplanar:o,pt1:c,pt2:l,surfaceId:u};const v=[t,e,n],T=[r,i,a],C=Y(f,g),y=(h-d*C)/(C*C-1),x=(d-h*C)/(C*C-1),w=[y*f[0]+x*g[0],y*f[1]+x*g[1],y*f[2]+x*g[2]],E=Dt(f,g,[]);Ta(E);let R=0,D=0;const S=[],O=[];let V=50,L=50;for(let I=0;I<3;I++){const P=I,k=(I+1)%3,F=$e.intersectWithLine(v[P],v[k],r,g);F.intersection&&F.t>0-s&&F.t<1+s&&(F.t<1+s&&F.t>1-s&&(V=R),S[R++]=Y(F.x,E)-Y(w,E));const N=$e.intersectWithLine(T[P],T[k],t,f);N.intersection&&N.t>0-s&&N.t<1+s&&(N.t<1+s&&N.t>1-s&&(L=D),O[D++]=Y(N.x,E)-Y(w,E))}if(R>2){R--;const I=S[2];S[2]=S[V],S[V]=I}if(D>2){D--;const I=O[2];O[2]=O[L],O[L]=I}if(R!==2||D!==2)return{intersect:!1,coplanar:o,pt1:c,pt2:l,surfaceId:u};if(Number.isNaN(S[0])||Number.isNaN(S[1])||Number.isNaN(O[0])||Number.isNaN(O[1]))return{intersect:!1,coplanar:o,pt1:c,pt2:l,surfaceId:u};if(S[0]>S[1]){const I=S[1];S[1]=S[0],S[0]=I}if(O[0]>O[1]){const I=O[1];O[1]=O[0],O[0]=I}let b,U;return S[1]2,t.intersectWithLine=(n,r,i,a,s)=>{const o={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};s[2]=0;const c=[],l=i*i,u=[],f=[],g=[];e.points.getPoint(0,u),e.points.getPoint(1,f),e.points.getPoint(2,g);const h=[],d=[];if(aa(u,f,g,h),h[0]!==0||h[1]!==0||h[2]!==0){const C=$e.intersectWithLine(n,r,u,h);if(o.betweenPoints=C.betweenPoints,o.t=C.t,a[0]=C.x[0],a[1]=C.x[1],a[2]=C.x[2],!C.intersection)return s[0]=0,s[1]=0,o.intersect=0,o;const y=t.evaluatePosition(a,c,s,d);if(y.evaluation>=0)return y.dist2<=l?(o.intersect=1,o):(o.intersect=y.evaluation,o)}const m=St(u,f),p=St(f,g),v=St(g,u);e.line||(e.line=at.newInstance()),m>p&&m>v?(e.line.getPoints().setPoint(0,u),e.line.getPoints().setPoint(1,f)):p>v&&p>m?(e.line.getPoints().setPoint(0,f),e.line.getPoints().setPoint(1,g)):(e.line.getPoints().setPoint(0,g),e.line.getPoints().setPoint(1,u));const T=e.line.intersectWithLine(n,r,i,a,s);if(o.betweenPoints=T.betweenPoints,o.t=T.t,T.intersect){const C=[],y=[],x=[];for(let w=0;w<3;w++)C[w]=u[w]-g[w],y[w]=f[w]-g[w],x[w]=a[w]-g[w];return s[0]=Y(x,C)/v,s[1]=Y(x,y)/p,o.intersect=1,o}return s[0]=0,s[1]=0,o.intersect=0,o},t.evaluatePosition=(n,r,i,a)=>{const s={subId:0,dist2:0,evaluation:-1};let o,c;const l=[],u=[],f=[],g=[];let h;const d=[],m=[],p=[];let v=0,T=0;const C=[];let y,x,w,E=[];const R=[],D=[],S=[];s.subId=0,i[2]=0,e.points.getPoint(1,l),e.points.getPoint(2,u),e.points.getPoint(0,f),L0(l,u,f,g),$e.generalizedProjectPoint(n,l,g,S);let O=0;for(o=0;o<3;o++)g[o]<0?h=-g[o]:h=g[o],h>O&&(O=h,T=o);for(c=0,o=0;o<3;o++)o!==T&&(C[c++]=o);for(o=0;o<2;o++)d[o]=S[C[o]]-f[C[o]],m[o]=l[C[o]]-f[C[o]],p[o]=u[C[o]]-f[C[o]];if(v=Ce(m,p),v===0)return i[0]=0,i[1]=0,s.evaluation=-1,s;if(i[0]=Ce(d,p)/v,i[1]=Ce(m,d)/v,a[0]=1-(i[0]+i[1]),a[1]=i[0],a[2]=i[1],a[0]>=0&&a[0]<=1&&a[1]>=0&&a[1]<=1&&a[2]>=0&&a[2]<=1)r&&(s.dist2=St(S,n),r[0]=S[0],r[1]=S[1],r[2]=S[2]),s.evaluation=1;else{let V;if(r){if(a[1]<0&&a[2]<0)for(y=St(n,f),x=at.distanceToLine(n,l,f,V,R),w=at.distanceToLine(n,f,u,V,D),y{const a=[],s=[],o=[];e.points.getPoint(0,a),e.points.getPoint(1,s),e.points.getPoint(2,o);const c=1-n[0]-n[1];for(let l=0;l<3;l++)r[l]=a[l]*c+s[l]*n[0]+o[l]*n[1];i[0]=c,i[1]=n[0],i[2]=n[1]},t.getParametricDistance=n=>{let r,i=0;const a=[];a[0]=n[0],a[1]=n[1],a[2]=1-n[0]-n[1];for(let s=0;s<3;s++)a[s]<0?r=-a[s]:a[s]>1?r=a[s]-1:r=0,r>i&&(i=r);return i}}const sp={};function $2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sp,n),ia.extend(t,e,n),ap(t,e)}const op=M.newInstance($2,"vtkTriangle");var cp={newInstance:op,extend:$2,...ip};const Ka=["verts","lines","polys","strips"],{vtkWarningMacro:jo}=M,lp={[de.VTK_LINE]:at,[de.VTK_POLY_LINE]:at,[de.VTK_TRIANGLE]:cp};function up(t,e){e.classHierarchy.push("vtkPolyData");function n(i){return i.replace(/(?:^\w|[A-Z]|\b\w)/g,a=>a.toUpperCase()).replace(/\s+/g,"")}Ka.forEach(i=>{t[`getNumberOf${n(i)}`]=()=>e[i].getNumberOfCells(),e[i]?e[i]=pt(e[i]):e[i]=Wr.newInstance()}),t.getNumberOfCells=()=>Ka.reduce((i,a)=>i+e[a].getNumberOfCells(),0);const r=t.shallowCopy;t.shallowCopy=function(i){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(i,a),Ka.forEach(s=>{e[s]=Wr.newInstance(),e[s].shallowCopy(i.getReferenceByName(s))})},t.buildCells=()=>{const i=t.getNumberOfVerts(),a=t.getNumberOfLines(),s=t.getNumberOfPolys(),o=t.getNumberOfStrips(),c=i+a+s+o,l=new Uint8Array(c);let u=l;const f=new Uint32Array(c);let g=f;if(i){let h=0;e.verts.getCellSizes().forEach((d,m)=>{g[m]=h,u[m]=d>1?de.VTK_POLY_VERTEX:de.VTK_VERTEX,h+=d+1}),g=g.subarray(i),u=u.subarray(i)}if(a){let h=0;e.lines.getCellSizes().forEach((d,m)=>{g[m]=h,u[m]=d>2?de.VTK_POLY_LINE:de.VTK_LINE,d===1&&jo("Building VTK_LINE ",m," with only one point, but VTK_LINE needs at least two points. Check the input."),h+=d+1}),g=g.subarray(a),u=u.subarray(a)}if(s){let h=0;e.polys.getCellSizes().forEach((d,m)=>{switch(g[m]=h,d){case 3:u[m]=de.VTK_TRIANGLE;break;case 4:u[m]=de.VTK_QUAD;break;default:u[m]=de.VTK_POLYGON;break}d<3&&jo("Building VTK_TRIANGLE ",m," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),h+=d+1}),g+=g.subarray(s),u+=u.subarray(s)}if(o){let h=0;u.fill(de.VTK_TRIANGLE_STRIP,0,o),e.strips.getCellSizes().forEach((d,m)=>{g[m]=h,h+=d+1})}e.cells=Kd.newInstance(),e.cells.setCellTypes(c,l,f)},t.buildLinks=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;e.cells===void 0&&t.buildCells(),e.links=Pd.newInstance(),i>0?e.links.allocate(i):e.links.allocate(t.getPoints().getNumberOfPoints()),e.links.buildLinks(t)},t.getCellType=i=>e.cells.getCellType(i),t.getCellPoints=i=>{const a=t.getCellType(i);let s=null;switch(a){case de.VTK_VERTEX:case de.VTK_POLY_VERTEX:s=e.verts;break;case de.VTK_LINE:case de.VTK_POLY_LINE:s=e.lines;break;case de.VTK_TRIANGLE:case de.VTK_QUAD:case de.VTK_POLYGON:s=e.polys;break;case de.VTK_TRIANGLE_STRIP:s=e.strips;break;default:return s=null,{type:0,cellPointIds:null}}const o=e.cells.getCellLocation(i),c=s.getCell(o);return{cellType:a,cellPointIds:c}},t.getPointCells=i=>e.links.getCells(i),t.getCellEdgeNeighbors=(i,a,s)=>{const o=e.links.getLink(a),c=e.links.getLink(s);return o.cells.filter(l=>l!==i&&c.cells.indexOf(l)!==-1)},t.getCell=function(i){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const s=t.getCellPoints(i),o=a||lp[s.cellType].newInstance();return o.initialize(t.getPoints(),s.cellPointIds),o}}const fp={};function j2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fp,n),np.extend(t,e,n),M.get(t,e,["cells","links"]),M.setGet(t,e,["verts","lines","polys","strips"]),up(t,e)}const gp=M.newInstance(j2,"vtkPolyData");var sn={newInstance:gp,extend:j2};const hp=1e-6;function dp(t,e){e.classHierarchy.push("vtkProp3D"),t.addPosition=r=>{e.position=e.position.map((i,a)=>i+r[a]),t.modified()},t.getOrientationWXYZ=()=>{const r=In();xs(r,e.rotation);const i=new Float64Array(3),a=Ih(i,r);return[b1(a),i[0],i[1],i[2]]},t.getOrientationQuaternion=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return xs(r,e.rotation)},t.rotateX=r=>{r!==0&&(u0(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateY=r=>{r!==0&&(f0(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateZ=r=>{r!==0&&(g0(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateWXYZ=(r,i,a,s)=>{if(r===0||i===0&&a===0&&s===0)return;const o=Ge(r),c=In();m0(c,[i,a,s],o);const l=new Float64Array(16);qi(l,c),ae(e.rotation,e.rotation,l),t.modified()},t.rotateQuaternion=r=>{if(Math.abs(r[3])>=1-hp)return;const i=qi(new Float64Array(16),r);ae(e.rotation,e.rotation,i),t.modified()},t.setOrientation=(r,i,a)=>r===e.orientation[0]&&i===e.orientation[1]&&a===e.orientation[2]?!1:(e.orientation=[r,i,a],q(e.rotation),t.rotateZ(a),t.rotateX(r),t.rotateY(i),t.modified(),!0),t.setUserMatrix=r=>ei(e.userMatrix,r)?!1:(Fe(e.userMatrix,r),t.modified(),!0),t.getMatrix=()=>(t.computeMatrix(),e.matrix),t.computeMatrix=()=>{if(t.getMTime()>e.matrixMTime.getMTime()){q(e.matrix),e.userMatrix&&ae(e.matrix,e.matrix,e.userMatrix),Re(e.matrix,e.matrix,e.origin),Re(e.matrix,e.matrix,e.position),ae(e.matrix,e.matrix,e.rotation),Vt(e.matrix,e.matrix,e.scale),Re(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),fe(e.matrix,e.matrix),e.isIdentity=!0;for(let r=0;r<4;++r)for(let i=0;i<4;++i)(r===i?1:0)!==e.matrix[r+i*4]&&(e.isIdentity=!1);e.matrixMTime.modified()}},t.getCenter=()=>_e.getCenter(e.bounds),t.getLength=()=>_e.getLength(e.bounds),t.getXRange=()=>_e.getXRange(e.bounds),t.getYRange=()=>_e.getYRange(e.bounds),t.getZRange=()=>_e.getZRange(e.bounds),t.getUserMatrix=()=>e.userMatrix;function n(){t.computeMatrix()}t.onModified(n)}const pp={origin:[0,0,0],position:[0,0,0],orientation:[0,0,0],rotation:null,scale:[1,1,1],bounds:[1,-1,1,-1,1,-1],userMatrix:null,userMatrixMTime:null,cachedProp3D:null,isIdentity:!0,matrixMTime:null};function H2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pp,n),D9.extend(t,e,n),e.matrixMTime={},M.obj(e.matrixMTime),M.get(t,e,["bounds","isIdentity"]),M.getArray(t,e,["orientation"]),M.setGetArray(t,e,["origin","position","scale"],3),e.matrix=q(new Float64Array(16)),e.rotation=q(new Float64Array(16)),e.userMatrix=q(new Float64Array(16)),e.transform=null,dp(t,e)}const mp=M.newInstance(H2,"vtkProp3D");var K2={newInstance:mp,extend:H2};const{vtkErrorMacro:di}=M;function vp(t,e){e.classHierarchy.push("vtkPiecewiseFunction"),t.getSize=()=>e.nodes.length,t.getType=()=>{let n,r=0,i=0;e.nodes.length>0&&(r=e.nodes[0].y);for(let a=1;ar)switch(i){case 0:case 1:i=1;break;case 2:default:i=3;break}else switch(i){case 0:case 2:i=2;break;case 1:default:i=3;break}if(r=n,i===3)break}switch(i){case 0:return"Constant";case 1:return"NonDecreasing";case 2:return"NonIncreasing";case 3:default:return"Varied"}},t.getDataPointer=()=>{const n=e.nodes.length;if(e.function=null,n>0){e.function=[];for(let r=0;r{if(e.nodes.length===0)return 0;let n=1,r=0,i=0;for(;i0?r=e.nodes[i-1].x:e.clamping?r=-Number.MAX_VALUE:r=e.nodes[0].x,r},t.getNodeValue=(n,r)=>{const i=e.nodes.length;return n<0||n>=i?(di("Index out of range!"),-1):(r[0]=e.nodes[n].x,r[1]=e.nodes[n].y,r[2]=e.nodes[n].midpoint,r[3]=e.nodes[n].sharpness,1)},t.setNodeValue=(n,r)=>{const i=e.nodes.length;if(n<0||n>=i)return di("Index out of range!"),-1;const a=e.nodes[n].x;return e.nodes[n].x=r[0],e.nodes[n].y=r[1],e.nodes[n].midpoint=r[2],e.nodes[n].sharpness=r[3],a!==r[0]?t.sortAndUpdateRange():t.modified(),1},t.addPoint=(n,r)=>t.addPointLong(n,r,.5,0),t.addPointLong=(n,r,i,a)=>{if(i<0||i>1)return di("Midpoint outside range [0.0, 1.0]"),-1;if(a<0||a>1)return di("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||t.removePoint(n);const s={x:n,y:r,midpoint:i,sharpness:a};e.nodes.push(s),t.sortAndUpdateRange();let o;for(o=0;o{e.nodes!==n&&(e.nodes=n,t.sortAndUpdateRange())},t.sortAndUpdateRange=()=>{e.nodes.sort((r,i)=>r.x-i.x),t.updateRange()||t.modified()},t.updateRange=()=>{const n=e.range.slice(),r=e.nodes.length;return r?(e.range[0]=e.nodes[0].x,e.range[1]=e.nodes[r-1].x):(e.range[0]=0,e.range[1]=0),n[0]===e.range[0]&&n[1]===e.range[1]?!1:(t.modified(),!0)},t.removePoint=n=>{let r;for(r=0;r=e.nodes.length)return-1;const i=r;let a=!1;return e.nodes.splice(r,1),(r===0||r===e.nodes.length)&&(a=t.updateRange()),a||t.modified(),i},t.removeAllPoints=()=>{e.nodes=[],t.sortAndUpdateRange()},t.addSegment=(n,r,i,a)=>{t.sortAndUpdateRange();for(let s=0;s=n&&e.nodes[s].x<=i?e.nodes.splice(s,1):s++;t.addPoint(n,r,.5,0),t.addPoint(i,a,.5,0)},t.getValue=n=>{const r=[];return t.getTable(n,n,1,r),r[0]},t.adjustRange=n=>{if(n.length<2)return 0;const r=t.getRange();r[0]n[1]?t.addPoint(n[1],t.getValue(n[1])):t.addPoint(n[1],t.getValue(r[1])),t.sortAndUpdateRange();for(let i=0;i=n[0]&&e.nodes[i].x<=n[1]?e.nodes.splice(i,1):++i;return t.sortAndUpdateRange(),1},t.estimateMinNumberOfSamples=(n,r)=>{const i=t.findMinimumXDistance();return Math.ceil((r-n)/i)},t.findMinimumXDistance=()=>{const n=e.nodes.length;if(n<2)return-1;let r=e.nodes[1].x-e.nodes[0].x;for(let i=0;i4&&arguments[4]!==void 0?arguments[4]:1,o,c=0;const l=e.nodes.length;let u=0;l!==0&&(u=e.nodes[l-1].y);let f=0,g=0,h=0,d=0,m=0,p=0,v=0;for(o=0;o1?f=n+o/(i-1)*(r-n):f=.5*(n+r);ce.nodes[c].x;)c++,c.99999&&(p=.99999));if(c>=l)a[T]=e.clamping?u:0;else if(c===0)a[T]=e.clamping?e.nodes[0].y:0;else{let C=(f-g)/(h-g);if(C.99)if(C<.5){a[T]=d;continue}else{a[T]=m;continue}if(v<.01){a[T]=(1-C)*d+C*m;continue}C<.5?C=.5*(C*2)**(1+10*v):C>.5&&(C=1-.5*((1-C)*2)**(1+10*v));const y=C*C,x=y*C,w=2*x-3*y+1,E=-2*x+3*y,R=x-2*y+C,D=x-y,S=m-d,O=(1-v)*S;a[T]=w*d+E*m+R*O+D*O;const V=dm?d:m;a[T]=a[T]L?L:a[T]}}}}const yp={range:[0,0],clamping:!0,allowDuplicateScalars:!1};function q2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yp,n),M.obj(t,e),e.nodes=[],M.setGet(t,e,["allowDuplicateScalars","clamping"]),M.setArray(t,e,["range"],2),M.getArray(t,e,["range"]),vp(t,e)}const Tp=M.newInstance(q2,"vtkPiecewiseFunction");var Qn={newInstance:Tp,extend:q2};const{BlendMode:Zt,FilterMode:Sr}=Kc;function Cp(t,e,n,r,i){let a=null;return i?(a=i,a.removeAllPoints()):a=Qn.newInstance(),a.addPointLong(-1024,0,1,1),a.addPoint(t,e),a.addPoint(n,r),a}const xp={createRadonTransferFunction:Cp};function wp(t,e){e.classHierarchy.push("vtkVolumeMapper");const n={...t};t.getBounds=()=>{const r=t.getInputData();return r?(e.static||t.update(),e.bounds=r.getBounds()):e.bounds=Zn(),e.bounds},t.update=()=>{t.getInputData()},t.setBlendModeToComposite=()=>{t.setBlendMode(Zt.COMPOSITE_BLEND)},t.setBlendModeToMaximumIntensity=()=>{t.setBlendMode(Zt.MAXIMUM_INTENSITY_BLEND)},t.setBlendModeToMinimumIntensity=()=>{t.setBlendMode(Zt.MINIMUM_INTENSITY_BLEND)},t.setBlendModeToAverageIntensity=()=>{t.setBlendMode(Zt.AVERAGE_INTENSITY_BLEND)},t.setBlendModeToAdditiveIntensity=()=>{t.setBlendMode(Zt.ADDITIVE_INTENSITY_BLEND)},t.setBlendModeToRadonTransform=()=>{t.setBlendMode(Zt.RADON_TRANSFORM_BLEND)},t.getBlendModeAsString=()=>M.enumToString(Zt,e.blendMode),t.setAverageIPScalarRange=(r,i)=>{console.warn("setAverageIPScalarRange is deprecated use setIpScalarRange"),t.setIpScalarRange(r,i)},t.getFilterModeAsString=()=>M.enumToString(Sr,e.filterMode),t.setFilterModeToOff=()=>{t.setFilterMode(Sr.OFF)},t.setFilterModeToNormalized=()=>{t.setFilterMode(Sr.NORMALIZED)},t.setFilterModeToRaw=()=>{t.setFilterMode(Sr.RAW)},t.setGlobalIlluminationReach=r=>n.setGlobalIlluminationReach(mt(r,0,1)),t.setVolumetricScatteringBlending=r=>n.setVolumetricScatteringBlending(mt(r,0,1)),t.setVolumeShadowSamplingDistFactor=r=>n.setVolumeShadowSamplingDistFactor(r>=1?r:1),t.setAnisotropy=r=>n.setAnisotropy(mt(r,-.99,.99)),t.setLAOKernelSize=r=>n.setLAOKernelSize(a0(mt(r,1,32))),t.setLAOKernelRadius=r=>n.setLAOKernelRadius(r>=1?r:1)}const Sp=t=>({bounds:[1,-1,1,-1,1,-1],sampleDistance:1,imageSampleDistance:1,maximumSamplesPerRay:1e3,autoAdjustSampleDistances:!0,initialInteractionScale:1,interactionSampleDistanceFactor:1,blendMode:Zt.COMPOSITE_BLEND,ipScalarRange:[-1e6,1e6],filterMode:Sr.OFF,preferSizeOverAccuracy:!1,computeNormalFromOpacity:!1,volumetricScatteringBlending:0,globalIlluminationReach:0,volumeShadowSamplingDistFactor:5,anisotropy:0,localAmbientOcclusion:!1,LAOKernelSize:15,LAOKernelRadius:7,updatedExtents:[],...t});function Y2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sp(n)),p2.extend(t,e,n),M.setGet(t,e,["sampleDistance","imageSampleDistance","maximumSamplesPerRay","autoAdjustSampleDistances","initialInteractionScale","interactionSampleDistanceFactor","blendMode","filterMode","preferSizeOverAccuracy","computeNormalFromOpacity","volumetricScatteringBlending","globalIlluminationReach","volumeShadowSamplingDistFactor","anisotropy","localAmbientOcclusion","LAOKernelSize","LAOKernelRadius","updatedExtents"]),M.setGetArray(t,e,["ipScalarRange"],2),M.event(t,e,"lightingActivated"),wp(t,e)}const Mp=M.newInstance(Y2,"vtkVolumeMapper");var Ep={newInstance:Mp,extend:Y2,...xp};function Rp(t,e){e.classHierarchy.push("vtkSharedVolumeMapper");const n=t.delete;t.delete=()=>{e.scalarTexture=null,n()}}const Op={scalarTexture:null};function X2(t,e,n={}){Object.assign(e,Op,n),Ep.extend(t,e,n),M.setGet(t,e,["scalarTexture"]),Rp(t,e)}const Dp=M.newInstance(X2,"vtkSharedVolumeMapper");var Vp={newInstance:Dp,extend:X2};function ot(t){const e=t.indexOf(":");return t.substring(e+1)}function Z2(t){let e=2166136261;for(let n=0;n>>0).toString(36)}const Ip=1073741824;class Lp{constructor(){this._imageCache=new Map,this._volumeCache=new Map,this._imageIdsToVolumeIdCache=new Map,this._referencedImageIdToImageIdCache=new Map,this._geometryCache=new Map,this._imageCacheSize=0,this._maxCacheSize=3*Ip,this._geometryCacheSize=0,this.setMaxCacheSize=e=>{if(!e||typeof e!="number"){const n=`New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;throw new Error(n)}this._maxCacheSize=e},this.isCacheable=e=>{const n=this.getBytesAvailable(),r=Array.from(this._imageCache.values()).reduce((a,s)=>s.sharedCacheKey?a:a+s.sizeInBytes,0);return n+r>=e},this.getMaxCacheSize=()=>this._maxCacheSize,this.getCacheSize=()=>this._imageCacheSize,this._decacheImage=(e,n=!1)=>{var a;const r=this._imageCache.get(e);if(!r)return;if(r.sharedCacheKey&&!n)throw new Error("Cannot decache an image with a shared cache key. You need to manually decache the volume first.");const{imageLoadObject:i}=r;(a=r.image)!=null&&a.referencedImageId&&this._referencedImageIdToImageIdCache.delete(r.image.referencedImageId),i!=null&&i.cancelFn&&i.cancelFn(),i!=null&&i.decache&&i.decache(),this._imageCache.delete(e)},this._decacheVolume=e=>{const n=this._volumeCache.get(e);if(!n)return;const{volumeLoadObject:r,volume:i}=n;i&&(i.cancelLoading&&i.cancelLoading(),i.imageData&&i.imageData.delete(),r.cancelFn&&r.cancelFn(),i.imageIds&&i.imageIds.forEach(a=>{const s=this._imageCache.get(a);s&&s.sharedCacheKey===e&&(s.sharedCacheKey=void 0)}),this._volumeCache.delete(e))},this.purgeCache=()=>{const e=this._imageCache.keys();for(this.purgeVolumeCache();;){const{value:n,done:r}=e.next();if(r)break;this.removeImageLoadObject(n,{force:!0}),$(ne,A.IMAGE_CACHE_IMAGE_REMOVED,{imageId:n})}},this.purgeVolumeCache=()=>{const e=this._volumeCache.keys();for(;;){const{value:n,done:r}=e.next();if(r)break;this.removeVolumeLoadObject(n),$(ne,A.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:n})}},this.getVolumeLoadObject=e=>{if(e===void 0)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(e);if(n)return n.timeStamp=Date.now(),n.volumeLoadObject},this.putGeometryLoadObject=(e,n)=>{if(e===void 0)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(n.promise===void 0)throw new Error("putGeometryLoadObject: geometryLoadObject.promise must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putGeometryLoadObject: geometryLoadObject.cancel must be a function");const r={loaded:!1,geometryId:e,geometryLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(e,r),n.promise.then(i=>{try{this._putGeometryCommon(e,i,r)}catch(a){throw console.debug(`Error in _putGeometryCommon for geometry ${e}:`,a),a}}).catch(i=>{throw console.debug(`Error caching geometry ${e}:`,i),this._geometryCache.delete(e),i})},this.getGeometry=e=>{if(e===void 0)throw new Error("getGeometry: geometryId must not be undefined");const n=this._geometryCache.get(e);if(n)return n.timeStamp=Date.now(),n.geometry},this.removeGeometryLoadObject=e=>{if(e===void 0)throw new Error("removeGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(e);if(!n)throw new Error("removeGeometryLoadObject: geometryId was not present in geometryCache");this.decrementGeometryCacheSize(n.sizeInBytes);const r={geometry:n,geometryId:e};$(ne,A.GEOMETRY_CACHE_GEOMETRY_REMOVED,r),this._decacheGeometry(e)},this._decacheGeometry=e=>{const n=this._geometryCache.get(e);if(!n)return;const{geometryLoadObject:r}=n;r.cancelFn&&r.cancelFn(),r.decache&&r.decache(),this._geometryCache.delete(e)},this.incrementGeometryCacheSize=e=>{this._geometryCacheSize+=e},this.decrementGeometryCacheSize=e=>{this._geometryCacheSize-=e},this.getImageByReferencedImageId=e=>{var r;const n=this._referencedImageIdToImageIdCache.get(e);if(n)return(r=this._imageCache.get(n))==null?void 0:r.image},this.getImage=(e,n=rt.FAR_REPLICATE)=>{var i;if(e===void 0)throw new Error("getImage: imageId must not be undefined");const r=this._imageCache.get(e);if(r&&(r.timeStamp=Date.now(),!(((i=r.image)==null?void 0:i.imageQualityStatus){var i;if(e===void 0)throw new Error("getVolume: volumeId must not be undefined");const r=this._volumeCache.get(e);return r?(r.timeStamp=Date.now(),r.volume):n?(i=[...this._volumeCache.values()].find(a=>a.volumeId.includes(e)))==null?void 0:i.volume:void 0},this.getVolumes=()=>Array.from(this._volumeCache.values()).map(n=>n.volume),this.filterVolumesByReferenceId=e=>this.getVolumes().filter(r=>r.referencedVolumeId===e),this.removeImageLoadObject=(e,{force:n=!1}={})=>{if(e===void 0)throw new Error("removeImageLoadObject: imageId must not be undefined");const r=this._imageCache.get(e);if(!r)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._decacheImage(e,n),this.incrementImageCacheSize(-r.sizeInBytes);const i={image:r,imageId:e};$(ne,A.IMAGE_CACHE_IMAGE_REMOVED,i)},this.removeVolumeLoadObject=e=>{if(e===void 0)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(e);if(!n)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");const r={volume:n,volumeId:e};$(ne,A.VOLUME_CACHE_VOLUME_REMOVED,r),this._decacheVolume(e)},this.incrementImageCacheSize=e=>{this._imageCacheSize+=e},this.decrementImageCacheSize=e=>{this._imageCacheSize-=e},this.getGeometryLoadObject=e=>{if(e===void 0)throw new Error("getGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(e);if(n)return n.timeStamp=Date.now(),n.geometryLoadObject}}generateVolumeId(e){const n=e.map(ot).sort();let r=2166136261;for(const i of n){const a=Z2(i);for(let s=0;s>>0).toString(36)}`}getImageIdsForVolumeId(e){return Array.from(this._imageIdsToVolumeIdCache.entries()).filter(([n,r])=>r===e).map(([n])=>n)}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(e,n){let r=this.getBytesAvailable();if(r>=e)return r;const i=Array.from(this._imageCache.values()).filter(c=>!c.sharedCacheKey);function a(c,l){return c.timeStamp>l.timeStamp?1:c.timeStampc.imageId);let o=s;n&&(o=s.filter(c=>!n.includes(c)));for(const c of o)if(this.removeImageLoadObject(c),$(ne,A.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),r=this.getBytesAvailable(),r>=e)return r;for(const c of s)if(this.removeImageLoadObject(c),$(ne,A.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),r=this.getBytesAvailable(),r>=e)return r}_putImageCommon(e,n,r){if(!this._imageCache.has(e)){console.warn("The image was purged from the cache before it completed loading.");return}if(!n){console.warn("Image is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putImageCommon: image.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putImageCommon: image.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(A.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.image=n,r.sizeInBytes=n.sizeInBytes,this.incrementImageCacheSize(r.sizeInBytes);const i={image:r};n.referencedImageId&&this._referencedImageIdToImageIdCache.set(n.referencedImageId,e),$(ne,A.IMAGE_CACHE_IMAGE_ADDED,i),r.sharedCacheKey=n.sharedCacheKey}async putImageLoadObject(e,n){if(e===void 0)throw console.error("putImageLoadObject: imageId must not be undefined"),new Error("putImageLoadObject: imageId must not be undefined");if(n.promise===void 0)throw console.error("putImageLoadObject: imageLoadObject.promise must not be undefined"),new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");const r=this._imageCache.get(e);if(r!=null&&r.imageLoadObject)throw console.warn(`putImageLoadObject: imageId ${e} already in cache`),new Error("putImageLoadObject: imageId already in cache");if(n.cancelFn&&typeof n.cancelFn!="function")throw console.error("putImageLoadObject: imageLoadObject.cancel must be a function"),new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const i={...r,loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(e,i),this._imageCache.set(e,i),n.promise.then(a=>{try{this._putImageCommon(e,a,i)}catch(s){throw console.debug(`Error in _putImageCommon for image ${e}:`,s),s}}).catch(a=>{throw console.debug(`Error caching image ${e}:`,a),this._imageCache.delete(e),a})}putImageSync(e,n){if(e===void 0)throw new Error("putImageSync: imageId must not be undefined");if(this._imageCache.has(e))throw new Error("putImageSync: imageId already in cache");const r={loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._imageCache.set(e,r);try{this._putImageCommon(e,n,r)}catch(i){throw this._imageCache.delete(e),i}}getImageLoadObject(e){if(e===void 0)throw new Error("getImageLoadObject: imageId must not be undefined");const n=this._imageCache.get(e);if(n)return n.timeStamp=Date.now(),n.imageLoadObject}isLoaded(e){const n=this._imageCache.get(e);return n?n.loaded:!1}getVolumeContainingImageId(e){const n=Array.from(this._volumeCache.keys()),r=ot(e);for(const i of n){const a=this._volumeCache.get(i);if(!a)return;const{volume:s}=a;if(!s.imageIds.length)return;const o=s.getImageURIIndex(r);if(o>-1)return{volume:s,imageIdIndex:o}}}getCachedImageBasedOnImageURI(e){const n=ot(e),i=Array.from(this._imageCache.keys()).find(a=>ot(a)===n);if(i)return this._imageCache.get(i)}_putVolumeCommon(e,n,r){var a;if(!this._volumeCache.get(e)){console.warn("The volume was purged from the cache before it completed loading.");return}r.loaded=!0,r.volume=n,(a=n.imageIds)==null||a.forEach(s=>{const o=this._imageCache.get(s);o&&(o.sharedCacheKey=e)});const i={volume:r};$(ne,A.VOLUME_CACHE_VOLUME_ADDED,i)}putVolumeSync(e,n){if(e===void 0)throw new Error("putVolumeSync: volumeId must not be undefined");if(this._volumeCache.has(e))throw new Error("putVolumeSync: volumeId already in cache");const r={loaded:!1,volumeId:e,volumeLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._volumeCache.set(e,r);try{this._putVolumeCommon(e,n,r)}catch(i){throw this._volumeCache.delete(e),i}}async putVolumeLoadObject(e,n){if(e===void 0)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(n.promise===void 0)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(e))throw new Error(`putVolumeLoadObject: volumeId:${e} already in cache`);if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const r={loaded:!1,volumeId:e,volumeLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(e,r),n.promise.then(i=>{try{this._putVolumeCommon(e,i,r)}catch(a){throw console.error(`Error in _putVolumeCommon for volume ${e}:`,a),this._volumeCache.delete(e),a}}).catch(i=>{throw this._volumeCache.delete(e),i})}_putGeometryCommon(e,n,r){if(!this._geometryCache.get(e)){console.warn("The geometry was purged from the cache before it completed loading.");return}if(!n){console.warn("Geometry is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putGeometryCommon: geometry.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putGeometryCommon: geometry.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(A.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.geometry=n,r.sizeInBytes=n.sizeInBytes,this.incrementGeometryCacheSize(r.sizeInBytes);const i={geometry:r};$(ne,A.GEOMETRY_CACHE_GEOMETRY_ADDED,i)}putGeometrySync(e,n){if(e===void 0)throw new Error("putGeometrySync: geometryId must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometrySync: geometryId already in cache");const r={loaded:!1,geometryId:e,geometryLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._geometryCache.set(e,r);try{this._putGeometryCommon(e,n,r)}catch(i){throw this._geometryCache.delete(e),i}}setPartialImage(e,n){const r=this._imageCache.get(e);if(!r){n&&this._imageCache.set(e,{image:n,imageId:e,loaded:!1,timeStamp:Date.now(),sizeInBytes:0});return}r.loaded&&(r.loaded=!1,r.imageLoadObject=null,this.incrementImageCacheSize(-r.sizeInBytes),r.sizeInBytes=0),r.image=n||r.image}getImageQuality(e){var r;const n=(r=this._imageCache.get(e))==null?void 0:r.image;return n?n.imageQualityStatus||rt.FULL_RESOLUTION:void 0}}const K=new Lp;function Ho(t,e){const n=D0(e),r=new n(t.length);return r.set(t),r}function Np(t,e){e.classHierarchy.push("vtkStreamingOpenGLTexture"),e.updatedFrames=[],e.volumeId=null;const n=t.create3DFilterableFromRaw;t.create3DFilterableFromRaw=(o,c,l,u,f,g,h)=>{e.inputDataType=f,e.inputNumComps=u,n(o,c,l,u,f,g,h)};const r=t.updateVolumeInfoForGL;t.updateVolumeInfoForGL=(o,c)=>{const l=r(o,c);return e.volumeInfo.dataComputedScale=[1],e.volumeInfo.dataComputedOffset=[0],l},t.update3DFromRaw=()=>{const{volumeId:o}=e;if(!o)return;const c=K.getVolume(o);if(e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),c.isDynamicVolume()){s();return}return t.hasUpdatedFrames()&&a()};const i=t.modified;t.setUpdatedFrame=o=>{e.updatedFrames[o]=!0,i()},t.modified=()=>{i();const o=K.getVolume(e.volumeId);if(!o)return;const c=o.imageIds;for(let l=0;l!e.updatedFrames.length||e.updatedFrames.some(o=>o),t.getUpdatedFrames=()=>e.updatedFrames,t.setVolumeId=o=>{e.volumeId=o},t.getVolumeId=()=>e.volumeId,t.setTextureParameters=({width:o,height:c,depth:l,numberOfComponents:u,dataType:f})=>{e.width??(e.width=o),e.height??(e.height=c),e.depth??(e.depth=l),e.inputNumComps??(e.inputNumComps=u),e.inputDataType??(e.inputDataType=f)},t.getTextureParameters=()=>({width:e.width,height:e.height,depth:e.depth,numberOfComponents:e.inputNumComps,dataType:e.inputDataType})}const bp={updatedFrames:[]};function J2(t,e,n={}){Object.assign(e,bp,n),We.extend(t,e,n),Np(t,e)}const Fp=M.newInstance(J2,"vtkStreamingOpenGLTexture");var _p={newInstance:Fp,extend:J2};const Up={isPerformingCoordinateTransformation:!1};function Q2(t,e,n={}){Object.assign(e,Up,n),N2.extend(t,e,n),M.setGet(t,e,["isPerformingCoordinateTransformation"]),Pp(t,e)}const kp=M.newInstance(Q2,"vtkSlabCamera");function Pp(t,e){e.classHierarchy.push("vtkSlabCamera");const n=q(new Float64Array(16)),r=new Float64Array(3);t.getProjectionMatrix=(i,a,s)=>{const o=Wt();if(e.projectionMatrix){const g=1/e.physicalScale;return ce(r,g,g,g),Fe(o,e.projectionMatrix),Vt(o,o,r),fe(o,o),o}q(n);let c=e.clippingRange[0],l=e.clippingRange[1];e.isPerformingCoordinateTransformation&&(c=e.distance,l=e.distance+.1);const u=l-c,f=[c+(a+1)*u/2,c+(s+1)*u/2];if(e.parallelProjection){const g=e.parallelScale*i,h=e.parallelScale,d=(e.windowCenter[0]-1)*g,m=(e.windowCenter[0]+1)*g,p=(e.windowCenter[1]-1)*h,v=(e.windowCenter[1]+1)*h;p0(n,d,m,p,v,f[0],f[1]),fe(n,n)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const g=Math.tan(ht.radiansFromDegrees(e.viewAngle)/2);let h,d;e.useHorizontalViewAngle===!0?(h=c*g,d=c*g/i):(h=c*g*i,d=c*g);const m=(e.windowCenter[0]-1)*h,p=(e.windowCenter[0]+1)*h,v=(e.windowCenter[1]-1)*d,T=(e.windowCenter[1]+1)*d,C=f[0],y=f[1];n[0]=2*C/(p-m),n[5]=2*C/(T-v),n[2]=(m+p)/(p-m),n[6]=(v+T)/(T-v),n[10]=-(C+y)/(y-C),n[14]=-1,n[11]=-2*C*y/(y-C),n[15]=0}}return Fe(o,n),o}}var Gp={newInstance:kp,extend:Q2};function dt(t){return Je(t,"vtkVolume")||Je(t,"vtkImageSlice")}function Je(t,e){const n="isA"in t?t:t.actor;return n?!!n.isA(e):!1}const Ir=[];function N0(t,e=0){let n;for(n=0;n=0&&V<=v.levels.SILENT)return V;throw new TypeError("log.setLevel() called with invalid level: "+O)}v.name=m,v.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},v.methodFactory=p||g,v.getLevel=function(){return y??C??T},v.setLevel=function(O,V){return y=D(O),V!==!1&&w(y),u.call(v)},v.setDefaultLevel=function(O){C=D(O),E()||v.setLevel(O,!1)},v.resetLevel=function(){y=null,R(),u.call(v)},v.enableAll=function(O){v.setLevel(v.levels.TRACE,O)},v.disableAll=function(O){v.setLevel(v.levels.SILENT,O)},v.rebuild=function(){if(s!==v&&(T=D(s.getLevel())),u.call(v),s===v)for(var O in a)a[O].rebuild()},T=D(s?s.getLevel():"WARN");var S=E();S!=null&&(y=D(S)),u.call(v)}s=new h,s.getLogger=function(p){if(typeof p!="symbol"&&typeof p!="string"||p==="")throw new TypeError("You must supply a name when creating a logger.");var v=a[p];return v||(v=a[p]=new h(p,s.methodFactory)),v};var d=typeof window!==n?window.log:void 0;return s.noConflict=function(){return typeof window!==n&&window.log===s&&(window.log=d),s},s.getLoggers=function(){return a},s.default=s,s})})(eu);var Bp=eu.exports,Ap=da(Bp);const tu=Ap.noConflict();typeof window<"u"&&(window.log=tu);function La(t){const e=tu.getLogger(t[0]);return e.getLogger=(...n)=>La(`${t}.${n.join(".")}`),e}function b0(...t){return La(t.join("."))}const or=La("cs3d"),F0=or.getLogger("core"),Wp=or.getLogger("tools"),zp=or.getLogger("dicomImageLoader"),$p=or.getLogger("ai"),jp=or.getLogger("examples"),Hp=b0("consistency","dicom"),Kp=b0("consistency","image");var qp=Object.freeze({__proto__:null,aiLog:$p,coreLog:F0,cs3dLog:or,dicomConsistencyLog:Hp,examplesLog:jp,getLogger:b0,getRootLogger:La,imageConsistencyLog:Kp,loaderLog:zp,toolsLog:Wp});function ri(t,e){const{direction:n,spacing:r}=t,i=n.slice(0,3),a=n.slice(3,6),s=n.slice(6,9),o=[le(i,e),le(a,e),le(s,e)],c=z();return ce(c,o[0]*r[0],o[1]*r[1],o[2]*r[2]),rn(c)}const Ko=F0.getLogger("utilities","getClosestImageId");function sa(t,e,n,r){const{direction:i,spacing:a,imageIds:s}=t,{ignoreSpacing:o=!1}=r||{};if(!(s!=null&&s.length))return;const c=i.slice(6,9),l=le(c,n);if(Math.abs(l)<1-yt)return;let u;o||(u=ri({direction:i,spacing:a},n)/2);let f,g=1/0;for(let h=0;ht,qo=1e-6;let nu=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.matrix=q(new Float64Array(16)),this.tmp=new Float64Array(3),this.angleConv=e?K3:Yp}rotateFromDirections(e,n){const r=new Float64Array(3),i=new Float64Array(3),a=new Float64Array(16);ce(r,e[0],e[1],e[2]),ce(i,n[0],n[1],n[2]),Pe(r,r),Pe(i,i);const s=le(r,i);return s>=1?this:(ye(this.tmp,r,i),rn(this.tmp)1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;if(ei(n0,this.matrix))return this;const i=r===-1?e.length:n+r*3;for(let a=n;aMath.abs(Math.abs(t)-1)qa(t[e])||qa(t[e+1])||qa(t[e+2]),Qp=t=>Ya(t,0)&&Ya(t,3)&&Ya(t,6);function Na(t,e,n){const r=t.getMapper().getInputData();let i;const a=r.getDirection();if(Qp(a))i=ru(t);else{const[f,g,h]=r.getDimensions();i=[[0,0,0],[f-1,0,0],[0,g-1,0],[f-1,g-1,0],[0,0,h-1],[f-1,0,h-1],[0,g-1,h-1],[f-1,g-1,h-1]].map(m=>r.indexToWorld(m))}const s=En.buildFromDegree().identity().rotateFromDirections(e,[1,0,0]);i.forEach(f=>s.apply(f));const o=[...n];s.apply(o);const c=o[0];let l=1/0,u=-1/0;for(let f=0;f<8;f++){const g=i[f][0];g>u&&(u=g),gu?h=u:h<0&&(h=0);const m=h*i;d=[d[0]+r[0]*m,d[1]+r[1]*m,d[2]+r[2]*m];const p=[d[0]+l[0],d[1]+l[1],d[2]+l[2]];return{newFocalPoint:d,newPosition:p}}const e8={RGB:0,HSV:1,LAB:2,DIVERGING:3},t8={LINEAR:0,LOG10:1};var iu={ColorSpace:e8,Scale:t8};const{ColorSpace:st,Scale:_0}=iu,{ScalarMappingTarget:pi}=C2,{vtkDebugMacro:n8,vtkErrorMacro:_t,vtkWarningMacro:r8}=M;function Yo(t,e){const n=t[0],r=t[1],i=t[2],a=Math.sqrt(n*n+r*r+i*i),s=a>.001?Math.acos(n/a):0,o=s>.001?Math.atan2(i,r):0;e[0]=a,e[1]=s,e[2]=o}function i8(t,e){const n=t[0],r=t[1],i=t[2];e[0]=n*Math.cos(r),e[1]=n*Math.sin(r)*Math.cos(i),e[2]=n*Math.sin(r)*Math.sin(i)}function Xo(t,e){if(t[0]>=e-.1)return t[2];const n=t[1]*Math.sqrt(e*e-t[0]*t[0])/(t[0]*Math.sin(t[1]));return t[2]>-.3*Math.PI?t[2]+n:t[2]-n}function a8(t,e){let n=t-e;for(n<0&&(n=-n);n>=2*Math.PI;)n-=2*Math.PI;return n>Math.PI&&(n=2*Math.PI-n),n}function Zo(t,e,n,r){const i=[],a=[];Sn(e,i),Sn(n,a);const s=[],o=[];Yo(i,s),Yo(a,o);let c=t;if(s[1]>.05&&o[1]>.05&&a8(s[2],o[2])>.33*Math.PI){let f=Math.max(s[0],o[0]);f=Math.max(88,f),t<.5?(o[0]=f,o[1]=0,o[2]=0,c*=2):(s[0]=f,s[1]=0,s[2]=0,c=2*c-1)}s[1]<.05&&o[1]>.05?s[2]=Xo(o,s[0]):o[1]<.05&&s[1]>.05&&(o[2]=Xo(s,o[0]));const l=[];l[0]=(1-c)*s[0]+c*o[0],l[1]=(1-c)*s[1]+c*o[1],l[2]=(1-c)*s[2]+c*o[2];const u=[];i8(l,u),Ki(u,r)}function s8(t,e){e.classHierarchy.push("vtkColorTransferFunction"),t.getSize=()=>e.nodes.length,t.addRGBPoint=(n,r,i,a)=>t.addRGBPointLong(n,r,i,a,.5,0),t.addRGBPointLong=function(n,r,i,a){let s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(s<0||s>1)return _t("Midpoint outside range [0.0, 1.0]"),-1;if(o<0||o>1)return _t("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||t.removePoint(n);const c={x:n,r,g:i,b:a,midpoint:s,sharpness:o};e.nodes.push(c),t.sortAndUpdateRange();let l=0;for(;lt.addHSVPointLong(n,r,i,a,.5,0),t.addHSVPointLong=function(n,r,i,a){let s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;const c=[];return Wn([r,i,a],c),t.addRGBPoint(n,c[0],c[1],c[2],s,o)},t.setNodes=n=>{if(e.nodes!==n){const r=JSON.stringify(e.nodes);e.nodes=n;const i=JSON.stringify(e.nodes);if(t.sortAndUpdateRange()||r!==i)return t.modified(),!0}return!1},t.sortAndUpdateRange=()=>{const n=JSON.stringify(e.nodes);e.nodes.sort((a,s)=>a.x-s.x);const r=JSON.stringify(e.nodes),i=t.updateRange();return!i&&n!==r?(t.modified(),!0):i},t.updateRange=()=>{const n=[2];n[0]=e.mappingRange[0],n[1]=e.mappingRange[1];const r=e.nodes.length;return r?(e.mappingRange[0]=e.nodes[0].x,e.mappingRange[1]=e.nodes[r-1].x):(e.mappingRange[0]=0,e.mappingRange[1]=0),n[0]===e.mappingRange[0]&&n[1]===e.mappingRange[1]?!1:(t.modified(),!0)},t.removePoint=n=>{let r=0;for(;r=e.nodes.length)return-1;let a=!1;return e.nodes.splice(r,1),(r===0||r===e.nodes.length)&&(a=t.updateRange()),a||t.modified(),i},t.movePoint=(n,r)=>{if(n!==r){t.removePoint(r);for(let i=0;i{e.nodes=[],t.sortAndUpdateRange()},t.addRGBSegment=(n,r,i,a,s,o,c,l)=>{t.sortAndUpdateRange();for(let u=0;u=n&&e.nodes[u].x<=s?e.nodes.splice(u,1):u++;t.addRGBPointLong(n,r,i,a,.5,0),t.addRGBPointLong(s,o,c,l,.5,0),t.modified()},t.addHSVSegment=(n,r,i,a,s,o,c,l)=>{const u=[r,i,a],f=[o,c,l],g=[],h=[];Wn(u,g),Wn(f,h),t.addRGBSegment(n,g[0],g[1],g[2],s,h[0],h[1],h[2])},t.mapValue=n=>{const r=[];return t.getColor(n,r),[Math.floor(255*r[0]+.5),Math.floor(255*r[1]+.5),Math.floor(255*r[2]+.5),255]},t.getColor=(n,r)=>{if(e.indexedLookup){const i=t.getSize(),a=t.getAnnotatedValueIndexInternal(n);if(a<0||i===0){const s=t.getNanColorByReference();r[0]=s[0],r[1]=s[1],r[2]=s[2]}else{const s=[];t.getNodeValue(a%i,s),r[0]=s[1],r[1]=s[2],r[2]=s[3]}return}t.getTable(n,n,1,r)},t.getRedValue=n=>{const r=[];return t.getColor(n,r),r[0]},t.getGreenValue=n=>{const r=[];return t.getColor(n,r),r[1]},t.getBlueValue=n=>{const r=[];return t.getColor(n,r),r[2]},t.getTable=(n,r,i,a)=>{const s=Number(n),o=Number(r);if(xo(s)||xo(o)){for(let D=0;D0);let w=0,E=0,R=0;x&&(w=Math.log10(s),E=Math.log10(o));for(let D=0;D1?x?(R=w+D/(i-1)*(E-w),h=10**R):h=s+D/(i-1)*(o-s):x?(R=.5*(w+E),h=10**R):h=.5*(s+o),e.discretize){const O=e.mappingRange;if(h>=O[0]&&h<=O[1]){const V=e.numberOfValues,L=O[1]-O[0];if(V<=1)h=O[0]+L/2;else{const b=(h-O[0])/L,U=a0(V*b);h=O[0]+U/(V-1)*L}}}for(;ce.nodes[c].x;)c++,c.99999&&(T=.99999));if(h>e.mappingRange[1])a[S]=0,a[S+1]=0,a[S+2]=0,e.clamping&&(t.getUseAboveRangeColor()?(a[S]=e.aboveRangeColor[0],a[S+1]=e.aboveRangeColor[1],a[S+2]=e.aboveRangeColor[2]):(a[S]=u,a[S+1]=f,a[S+2]=g));else if(h0&&(a[S]=e.nodes[0].r,a[S+1]=e.nodes[0].g,a[S+2]=e.nodes[0].b));else if(c===0&&(Math.abs(h-s)<1e-6||e.discretize))l>0?(a[S]=e.nodes[0].r,a[S+1]=e.nodes[0].g,a[S+2]=e.nodes[0].b):(a[S]=0,a[S+1]=0,a[S+2]=0);else{let O=0;if(x?O=(R-d)/(m-d):O=(h-d)/(m-d),O.99)if(O<.5){a[S]=p[0],a[S+1]=p[1],a[S+2]=p[2];continue}else{a[S]=v[0],a[S+1]=v[1],a[S+2]=v[2];continue}if(C<.01){if(e.colorSpace===st.RGB)a[S]=(1-O)*p[0]+O*v[0],a[S+1]=(1-O)*p[1]+O*v[1],a[S+2]=(1-O)*p[2]+O*v[2];else if(e.colorSpace===st.HSV){const N=[],_=[];Cr(p,N),Cr(v,_),e.hSVWrap&&(N[0]-_[0]>.5||_[0]-N[0]>.5)&&(N[0]>_[0]?N[0]-=1:_[0]-=1);const B=[];B[0]=(1-O)*N[0]+O*_[0],B[0]<0&&(B[0]+=1),B[1]=(1-O)*N[1]+O*_[1],B[2]=(1-O)*N[2]+O*_[2],Wn(B,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]}else if(e.colorSpace===st.LAB){const N=[],_=[];Sn(p,N),Sn(v,_);const B=[];B[0]=(1-O)*N[0]+O*_[0],B[1]=(1-O)*N[1]+O*_[1],B[2]=(1-O)*N[2]+O*_[2],Ki(B,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]}else e.colorSpace===st.DIVERGING?(Zo(O,p,v,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]):_t("ColorSpace set to invalid value.",e.colorSpace);continue}O<.5?O=.5*(O*2)**(1+10*C):O>.5&&(O=1-.5*((1-O)*2)**(1+10*C));const V=O*O,L=V*O,b=2*L-3*V+1,U=-2*L+3*V,I=L-2*V+O,P=L-V;let k,F;if(e.colorSpace===st.RGB)for(let N=0;N<3;N++)k=v[N]-p[N],F=(1-C)*k,a[S+N]=b*p[N]+U*v[N]+I*F+P*F;else if(e.colorSpace===st.HSV){const N=[],_=[];Cr(p,N),Cr(v,_),e.hSVWrap&&(N[0]-_[0]>.5||_[0]-N[0]>.5)&&(N[0]>_[0]?N[0]-=1:_[0]-=1);const B=[];for(let G=0;G<3;G++)k=_[G]-N[G],F=(1-C)*k,B[G]=b*N[G]+U*_[G]+I*F+P*F,G===0&&B[G]<0&&(B[G]+=1);Wn(B,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]}else if(e.colorSpace===st.LAB){const N=[],_=[];Sn(p,N),Sn(v,_);const B=[];for(let G=0;G<3;G++)k=_[G]-N[G],F=(1-C)*k,B[G]=b*N[G]+U*_[G]+I*F+P*F;Ki(B,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]}else e.colorSpace===st.DIVERGING?(Zo(O,p,v,y),a[S]=y[0],a[S+1]=y[1],a[S+2]=y[2]):_t("ColorSpace set to invalid value.");for(let N=0;N<3;N++)a[S+N]=a[S+N]<0?0:a[S+N],a[S+N]=a[S+N]>1?1:a[S+N]}}},t.getUint8Table=function(n,r,i){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t.getMTime()<=e.buildTime&&e.tableSize===i&&e.tableWithAlpha!==a)return e.table;if(e.nodes.length===0)return _t("Attempting to lookup a value with no points in the function"),e.table;const s=a?4:3;(e.tableSize!==i||e.tableWithAlpha!==a)&&(e.table=new Uint8Array(i*s),e.tableSize=i,e.tableWithAlpha=a);const o=[];t.getTable(n,r,i,o);for(let c=0;c{t.removeAllPoints();const r=n.getNumberOfComponents();for(let i=0;i{let s=0;t.removeAllPoints(),i>1&&(s=(r-n)/(i-1));for(let o=0;on<0||n>=e.nodes.length?(_t("Index out of range!"),-1):(r[0]=e.nodes[n].x,r[1]=e.nodes[n].r,r[2]=e.nodes[n].g,r[3]=e.nodes[n].b,r[4]=e.nodes[n].midpoint,r[5]=e.nodes[n].sharpness,1),t.setNodeValue=(n,r)=>{if(n<0||n>=e.nodes.length)return _t("Index out of range!"),-1;const i=e.nodes[n].x;return e.nodes[n].x=r[0],e.nodes[n].r=r[1],e.nodes[n].g=r[2],e.nodes[n].b=r[3],e.nodes[n].midpoint=r[4],e.nodes[n].sharpness=r[5],i!==r[0]?t.sortAndUpdateRange():t.modified(),1},t.getNumberOfAvailableColors=()=>{var r;if(e.indexedLookup&&t.getSize())return t.getSize();if(e.tableSize)return e.tableSize;const n=((r=e.nodes)==null?void 0:r.length)??0;return Math.max(4094,n)},t.getIndexedColor=(n,r)=>{const i=t.getSize();if(i>0&&n>=0){const s=[];t.getNodeValue(n%i,s);for(let o=0;o<3;++o)r[o]=s[o+1];r[3]=1;return}const a=t.getNanColorByReference();r[0]=a[0],r[1]=a[1],r[2]=a[2],r[3]=1},t.fillFromDataPointer=(n,r)=>{if(!(n<=0||!r)){t.removeAllPoints();for(let i=0;i{const i=[n,r],a=t.getRange();if(a[1]===i[1]&&a[0]===i[0])return;if(i[1]===i[0]){_t("attempt to set zero width color range");return}const s=(i[1]-i[0])/(a[1]-a[0]),o=i[0]-a[0]*s;for(let c=0;c{const r=t.getRange(),i=[];r[0]n[1]?(t.getColor(n[1],i),t.addRGBPoint(n[1],i[0],i[1],i[2])):(t.getColor(r[1],i),t.addRGBPoint(n[1],i[0],i[1],i[2])),t.sortAndUpdateRange();for(let a=0;a=n[0]&&e.nodes[a].x<=n[1]?e.nodes.splice(a,1):++a;return 1},t.estimateMinNumberOfSamples=(n,r)=>{const i=t.findMinimumXDistance();return Math.ceil((r-n)/i)},t.findMinimumXDistance=()=>{if(e.nodes.length<2)return-1;let n=Number.MAX_VALUE;for(let r=0;r{if(t.getSize()===0){n8("Transfer Function Has No Points!");return}e.indexedLookup?t.mapDataIndexed(n,r,i,a):t.mapData(n,r,i,a)},t.mapData=(n,r,i,a)=>{if(t.getSize()===0){r8("Transfer Function Has No Points!");return}const s=Math.floor(t.getAlpha()*255+.5),o=n.getNumberOfTuples(),c=n.getNumberOfComponents(),l=r.getData(),u=n.getData(),f=[];if(i===pi.RGBA)for(let g=0;g{const r=JSON.stringify(e.colorSpace);n.ColorSpace&&(e.colorSpace=st[n.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(_t(`ColorSpace ${n.ColorSpace} not supported, using RGB instead`),e.colorSpace=st.RGB));let i=r!==JSON.stringify(e.colorSpace);const a=i||JSON.stringify(e.nanColor);if(n.NanColor)for(e.nanColor=[].concat(n.NanColor);e.nanColor.length<4;)e.nanColor.push(1);i=i||a!==JSON.stringify(e.nanColor);const s=i||JSON.stringify(e.nodes);if(n.RGBPoints){const l=n.RGBPoints.length;e.nodes=[];const u=.5,f=0;for(let g=0;g2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,o8,n),C2.extend(t,e,n),e.table=[],e.nodes=[],e.nanColor=[.5,0,0,1],e.belowRangeColor=[0,0,0,1],e.aboveRangeColor=[1,1,1,1],e.buildTime={},M.obj(e.buildTime),M.get(t,e,["buildTime","mappingRange"]),M.setGet(t,e,["useAboveRangeColor","useBelowRangeColor","discretize","numberOfValues",{type:"enum",name:"colorSpace",enum:st},{type:"enum",name:"scale",enum:_0}]),M.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),M.getArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"]),s8(t,e)}const c8=M.newInstance(au,"vtkColorTransferFunction");var ln={newInstance:c8,extend:au,...iu},l8=[{Name:"KAAMS",IndexedColors:[1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,0,1,0,1,1,.63,.63,1,.67,.5,.33,1,.5,.75,.53,.35,.7,1,.75,.5],Annotations:[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11]},{ColorSpace:"Diverging",Name:"Cool to Warm",NanColor:[1,1,0],RGBPoints:[0,.23137254902,.298039215686,.752941176471,.5,.865,.865,.865,1,.705882352941,.0156862745098,.149019607843]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Cool to Warm (Extended)",NanColor:[.25,0,0],RGBPoints:[0,0,0,.34902,.03125,.039216,.062745,.380392,.0625,.062745,.117647,.411765,.09375,.090196,.184314,.45098,.125,.12549,.262745,.501961,.15625,.160784,.337255,.541176,.1875,.2,.396078,.568627,.21875,.239216,.454902,.6,.25,.286275,.521569,.65098,.28125,.337255,.592157,.701961,.3125,.388235,.654902,.74902,.34375,.466667,.737255,.819608,.375,.572549,.819608,.878431,.40625,.654902,.866667,.909804,.4375,.752941,.917647,.941176,.46875,.823529,.956863,.968627,.5,.988235,.960784,.901961,.5,.941176,.984314,.988235,.52,.988235,.945098,.85098,.54,.980392,.898039,.784314,.5625,.968627,.835294,.698039,.59375,.94902,.733333,.588235,.625,.929412,.65098,.509804,.65625,.909804,.564706,.435294,.6875,.878431,.458824,.352941,.71875,.839216,.388235,.286275,.75,.760784,.294118,.211765,.78125,.701961,.211765,.168627,.8125,.65098,.156863,.129412,.84375,.6,.094118,.094118,.875,.54902,.066667,.098039,.90625,.501961,.05098,.12549,.9375,.45098,.054902,.172549,.96875,.4,.054902,.192157,1,.34902,.070588,.211765]},{ColorSpace:"Diverging",Name:"Warm to Cool",NanColor:[1,1,0],RGBPoints:[0,.705882352941,.0156862745098,.149019607843,.5,.865,.865,.865,1,.23137254902,.298039215686,.752941176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Warm to Cool (Extended)",NanColor:[.250004,0,0],RGBPoints:[0,.34902,0,.129412,.025,.4,.00392157,.101961,.05,.470588,.0156863,.0901961,.075,.54902,.027451,.0705882,.1,.619608,.0627451,.0431373,.125,.690196,.12549,.0627451,.15,.741176,.184314,.0745098,.175,.788235,.266667,.0941176,.2,.811765,.345098,.113725,.225,.831373,.411765,.133333,.25,.85098,.47451,.145098,.275,.870588,.54902,.156863,.3,.878431,.619608,.168627,.325,.890196,.658824,.196078,.35,.909804,.717647,.235294,.375,.929412,.776471,.278431,.395522,.94902,.823529,.321569,.418905,.968627,.87451,.407843,.444278,.980392,.917647,.509804,.470149,.988235,.956863,.643137,.483582,.992157,.964706,.713725,.499,.988235,.980392,.870588,.5,1,1,1,.501,.913725,.988235,.937255,.516418,.827451,.980392,.886275,.531343,.764706,.980392,.866667,.546766,.658824,.980392,.843137,.564179,.572549,.964706,.835294,.587562,.423529,.941176,.87451,.60597,.262745,.901961,.862745,.629851,.0705882,.854902,.870588,.651741,.0509804,.8,.85098,.681592,.0235294,.709804,.831373,.712935,.0313725,.615686,.811765,.75,.0313725,.537255,.788235,.775,.0392157,.466667,.768627,.8,.0509804,.396078,.741176,.825,.054902,.317647,.709804,.85,.054902,.243137,.678431,.875,.0431373,.164706,.639216,.9,.0313725,.0980392,.6,.925,.0392157,.0392157,.560784,.95,.105882,.0509804,.509804,.975,.113725,.0235294,.45098,1,.12549,0,.380392]},{ColorSpace:"RGB",Name:"Rainbow Desaturated",NanColor:[1,1,0],RGBPoints:[0,.278431372549,.278431372549,.858823529412,.143,0,0,.360784313725,.285,0,1,1,.429,0,.501960784314,0,.571,1,1,0,.714,1,.380392156863,0,.857,.419607843137,0,0,1,.878431372549,.301960784314,.301960784314]},{ColorSpace:"RGB",Name:"Cold and Hot",NanColor:[1,1,0],RGBPoints:[0,0,1,1,.45,0,0,1,.5,0,0,.501960784314,.55,1,0,0,1,1,1,0]},{ColorSpace:"RGB",Name:"Black-Body Radiation",NanColor:[0,.498039215686,1],RGBPoints:[0,0,0,0,.4,.901960784314,0,0,.8,.901960784314,.901960784314,0,1,1,1,1]},{ColorSpace:"RGB",Name:"X Ray",NanColor:[1,0,0],RGBPoints:[0,1,1,1,1,0,0,0]},{ColorSpace:"RGB",Name:"Grayscale",NanColor:[1,0,0],RGBPoints:[0,0,0,0,1,1,1,1]},{ColorSpace:"RGB",Name:"BkRd",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,1,0,0]},{ColorSpace:"RGB",Name:"BkGn",NanColor:[1,0,1],RGBPoints:[0,0,0,0,1,0,1,0]},{ColorSpace:"RGB",Name:"BkBu",NanColor:[1,1,0],RGBPoints:[0,0,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"BkMa",NanColor:[0,1,0],RGBPoints:[0,0,0,0,1,1,0,1]},{ColorSpace:"RGB",Name:"BkCy",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,0,1,1]},{ColorSpace:"RGB",Name:"Black, Blue and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,0,0,.501960784314,.666,0,.501960784314,1,1,1,1,1]},{ColorSpace:"RGB",Name:"Black, Orange and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,.501960784314,0,0,.666,1,.501960784314,0,1,1,1,1]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear YGB 1211g",NanColor:[.25,0,0],RGBPoints:[0,1,.988235,.968627,.02,1,.952941,.878431,.05,.968627,.905882,.776471,.1,.94902,.898039,.647059,.15,.901961,.878431,.556863,.2,.847059,.858824,.482353,.25,.690196,.819608,.435294,.3,.513725,.768627,.384314,.35,.337255,.721569,.337255,.4,.278431,.658824,.392157,.45,.231373,.639216,.435294,.5,.203922,.6,.486275,.55,.172549,.568627,.537255,.6,.141176,.517647,.54902,.65,.133333,.458824,.541176,.7,.12549,.396078,.529412,.75,.117647,.321569,.521569,.8,.121569,.258824,.509804,.85,.133333,.227451,.501961,.9,.145098,.192157,.490196,.95,.188235,.164706,.470588,1,.258824,.196078,.439216]},{ColorSpace:"CIELAB",Creator:"Francesca Samsel",Name:"Linear Green (Gr4L)",NanColor:[.25,0,0],RGBPoints:[0,.054902,.109804,.121569,.05,.07451,.172549,.180392,.1,.086275,.231373,.219608,.15,.094118,.278431,.25098,.2,.109804,.34902,.278431,.25,.113725,.4,.278431,.3,.117647,.45098,.270588,.35,.117647,.490196,.243137,.4,.113725,.521569,.203922,.45,.109804,.54902,.152941,.5,.082353,.588235,.082353,.55,.109804,.631373,.05098,.6,.211765,.678431,.082353,.65,.317647,.721569,.113725,.7,.431373,.760784,.160784,.75,.556863,.8,.239216,.8,.666667,.839216,.294118,.85,.784314,.878431,.396078,.9,.886275,.921569,.533333,.95,.960784,.94902,.670588,1,1,.984314,.901961]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear Blue (8_31f)",NanColor:[.25,0,0],RGBPoints:[0,.960784,1,.980392,.05,.815686,.960784,.913725,.1,.670588,.929412,.870588,.15,.556863,.901961,.843137,.2,.478431,.870588,.823529,.25,.439216,.831373,.803922,.3,.4,.8,.788235,.35,.376471,.768627,.768627,.4,.34902,.709804,.729412,.45,.32549,.654902,.690196,.5,.301961,.607843,.658824,.55,.247059,.545098,.619608,.6,.239216,.494118,.580392,.65,.227451,.439216,.541176,.7,.227451,.403922,.521569,.75,.231373,.368627,.501961,.8,.227451,.321569,.470588,.85,.219608,.282353,.439216,.9,.192157,.235294,.4,.95,.160784,.184314,.34902,1,.133333,.12549,.301961]},{ColorSpace:"HSV",Name:"Blue to Red Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,0,0,1,1,1,0,0]},{ColorSpace:"HSV",Name:"Red to Blue Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,1,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended White",NanColor:[1,1,0],RGBPoints:[0,1,1,1,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Grey",NanColor:[1,1,0],RGBPoints:[0,.317647058824,.341176470588,.43137254902,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Black",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Blue to Yellow",NanColor:[1,0,0],RGBPoints:[0,.0392156862745,.0392156862745,.949019607843,1,.949019607843,.949019607843,.0392156862745]},{ColorSpace:"HSV",Name:"blot",RGBPoints:[0,0,0,1,.166,0,0,1,.167,1,0,1,.332,1,0,1,.333,0,1,1,.5,0,1,1,.501,0,1,0,.666,0,1,0,.667,1,1,0,.832,1,1,0,.833,1,0,0,1,1,0,0]},{ColorSpace:"Lab",Name:"CIELab Blue to Red",NanColor:[1,1,0],RGBPoints:[0,0,.6,.749019607843,1,.76862745098,.466666666667,.341176470588]},{ColorSpace:"RGB",Name:"jet",RGBPoints:[-1,0,0,.5625,-.777778,0,0,1,-.269841,0,1,1,-.015873,.5,1,.5,.238095,1,1,0,.746032,1,0,0,1,.5,0,0]},{ColorSpace:"RGB",Name:"rainbow",RGBPoints:[-1,0,0,1,-.5,0,1,1,0,0,1,0,.5,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"erdc_rainbow_bright",RGBPoints:[-1,.32549,.14902,.960784,-.866221,.297047,.375586,.963836,-.732441,.180302,.536818,.964627,-.598662,.1302,.649207,.929647,-.464883,.0445143,.749654,.855998,-.331104,.0271325,.830713,.721527,-.197324,.259504,.866145,.543555,-.0635452,.428364,.890725,.329819,.0702341,.568503,.898508,.187623,.204013,.738259,.890317,.0825461,.337793,.84546,.86136,.0147555,.471572,.912191,.808018,0,.605351,.962848,.710445,0,.73913,.999469,.600258,.0176284,.87291,.994156,.445975,.193912,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"erdc_rainbow_dark",RGBPoints:[-1,0,0,.423499,-.866221,0,.119346,.529237,-.732441,0,.238691,.634976,-.598662,0,.346852,.68788,-.464883,0,.45022,.718141,-.331104,0,.553554,.664839,-.197324,0,.651082,.519303,-.0635452,.115841,.72479,.352857,.0702341,.326771,.781195,.140187,.204013,.522765,.798524,.0284624,.337793,.703162,.788685,.00885756,.471572,.845118,.751133,0,.605351,.955734,.690825,0,.73913,.995402,.567916,.0618524,.87291,.987712,.403398,.164851,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"nic_CubicL",RGBPoints:[-1,.479965,.0118108,.5307,-.87451,.522213,.0551282,.706919,-.74902,.50839,.237278,.867764,-.623529,.451617,.373834,.987255,-.498039,.39365,.497255,.97506,-.372549,.328631,.599639,.891843,-.247059,.250043,.690286,.778553,-.121569,.249656,.764905,.645857,.00392157,.297954,.821466,.50449,.129412,.337509,.872595,.358447,.254902,.430011,.913789,.297079,.380392,.587191,.931381,.333353,.505882,.727937,.93591,.353742,.631373,.826403,.921081,.365066,.756863,.893201,.846317,.372662,.882353,.965347,.73884,.378506,1,.983235,.597451,.366856]},{ColorSpace:"Lab",Name:"nic_CubicYF",RGBPoints:[-1,.5151,.0482,.6697,-.87451,.520711,.168955,.800574,-.74902,.493694,.278596,.911824,-.623529,.440026,.369475,.984978,-.498039,.398932,.457593,.987053,-.372549,.350651,.540644,.929608,-.247059,.298827,.615625,.857729,-.121569,.239928,.685061,.769531,.00392157,.228832,.739349,.673287,.129412,.263297,.78608,.569988,.254902,.298107,.828337,.460214,.380392,.33092,.864071,.352674,.505882,.38306,.898169,.287309,.631373,.49023,.917481,.307961,.756863,.62372,.926026,.332309,.882353,.717458,.92527,.342476,1,.8,.9255,.3529]},{ColorSpace:"Lab",Name:"gist_earth",RGBPoints:[-1,0,0,0,-.87451,.239216,.027451,.415686,-.74902,.0901961,.254902,.556863,-.623529,.0941176,.352941,.54902,-.498039,.105882,.435294,.533333,-.372549,.12549,.52549,.501961,-.247059,.156863,.596078,.443137,-.121569,.196078,.65098,.380392,.00392157,.282353,.717647,.301961,.129412,.466667,.772549,.27451,.254902,.678431,.784314,.309804,.380392,.901961,.756863,.376471,.505882,.992157,.705882,.521569,.631373,1,.721569,.701961,.756863,1,.784314,.784314,.882353,1,.866667,.866667,1,1,1,1]},{ColorSpace:"Lab",Name:"2hot",RGBPoints:[-1,.0416667,0,0,-.873016,.208333,0,0,-.746032,.375,0,0,-.619048,.541667,0,0,-.492063,.708333,0,0,-.365079,.854137,0,0,-.238095,.937488,.039062,0,-.111111,1,.208333,0,.015873,1,.375,0,.142857,1,.541667,0,.269841,1,.708333,0,.396825,1,.858805,.03125,.52381,1,.947392,.15625,.650794,1,1,.3125,.777778,1,1,.5625,.904762,1,1,.8125,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_red2yellow_BW",RGBPoints:[-1,754296e-12,0,109827e-10,-.87451,.18285,.0264094,0,-.74902,.3066,0,0,-.623529,.422841,0,0,-.498039,.522945,0,0,-.372549,.605721,0,0,-.247059,.672502,.14168,0,-.121569,.728167,.244025,0,.00392157,.781215,.333454,0,.129412,.825,.423586,0,.254902,.855893,.516793,0,.380392,.880491,.608846,0,.505882,.910305,.695505,0,.631373,.94109,.779067,.223528,.756863,.967873,.858572,.473521,.882353,.986815,.933211,.751583,1,1,1,.999997]},{ColorSpace:"Lab",Name:"erdc_marine2gold_BW",RGBPoints:[-1,111641e-12,0,162551e-11,-.87451,.0413146,.0619808,.209857,-.74902,.0185557,.101341,.350684,-.623529,.00486405,.149847,.461054,-.498039,.0836345,.210845,.517906,-.372549,.173222,.276134,.541793,-.247059,.259857,.343877,.535869,-.121569,.362299,.408124,.504293,.00392157,.468266,.468276,.468257,.129412,.582781,.527545,.374914,.254902,.691591,.585251,.274266,.380392,.784454,.645091,.247332,.505882,.862299,.710383,.27518,.631373,.920863,.782923,.351563,.756863,.955792,.859699,.533541,.882353,.976162,.93433,.780671,1,1,1,.999983]},{ColorSpace:"Lab",Name:"erdc_blue2gold_BW",RGBPoints:[-1,0,0,0,-.87451,.0742735,.0440331,.230013,-.74902,.125276,.0258685,.415826,-.623529,.143879,.0163031,.591346,-.498039,.212261,.0627855,.705239,-.372549,.306048,.141178,.763636,-.247059,.391537,.232286,.773263,-.121569,.461734,.336633,.708321,.00392157,.54209,.427581,.590007,.129412,.61704,.508623,.460978,.254902,.702703,.579586,.309117,.380392,.790336,.644811,.170397,.505882,.870173,.710733,.117134,.631373,.93656,.781991,.157144,.756863,.965672,.862068,.409836,.882353,.985751,.936296,.714162,1,1,1,.999999]},{ColorSpace:"Lab",Name:"erdc_sapphire2gold_BW",RGBPoints:[-1,.107704,.107708,.107694,-.87451,.1851,.112354,.308554,-.74902,.236782,.114233,.48788,-.623529,.28296,.126187,.639464,-.498039,.344787,.171643,.739713,-.372549,.413325,.242371,.76913,-.247059,.481863,.3131,.719841,-.121569,.550402,.383829,.612222,.00392157,.61894,.454558,.51126,.129412,.687478,.525287,.39993,.254902,.756017,.596016,.289923,.380392,.824555,.666745,.255498,.505882,.892979,.736822,.27696,.631373,.938851,.804966,.351734,.756863,.966491,.874853,.53572,.882353,.982105,.94153,.782579,1,1,1,.999986]},{ColorSpace:"Lab",Name:"erdc_red2purple_BW",RGBPoints:[-1,0,0,0,-.87451,.167793,.0166271,.0431278,-.74902,.262608,.0107595,.0791181,-.623529,.351902,.0101858,.100926,-.498039,.441257,.0160835,.131919,-.372549,.5221,.0555972,.195625,-.247059,.593852,.104294,.310234,-.121569,.654628,.158115,.448486,.00392157,.707443,.220914,.570253,.129412,.749504,.293268,.67897,.254902,.781587,.370517,.779269,.380392,.809951,.451099,.855831,.505882,.84424,.531462,.900451,.631373,.865174,.620901,.91606,.756863,.875041,.714054,.910284,.882353,.880764,.80554,.896276,1,.887572,.887591,.887556]},{ColorSpace:"Lab",Name:"erdc_purple2pink_BW",RGBPoints:[-1,0,0,0,-.87451,.117562,.0291202,.175876,-.74902,.178368,.0458476,.285454,-.623529,.237731,.0680173,.387717,-.498039,.300877,.0956291,.484802,-.372549,.370929,.136858,.554985,-.247059,.449033,.189273,.58863,-.121569,.529971,.245796,.598587,.00392157,.609914,.300643,.610244,.129412,.697079,.351286,.616371,.254902,.785858,.401991,.617376,.380392,.862517,.45745,.64463,.505882,.91359,.525462,.705336,.631373,.932583,.61064,.767412,.756863,.922478,.706966,.817522,.882353,.901302,.803071,.856311,1,.887571,.887591,.887549]},{ColorSpace:"Lab",Name:"erdc_pbj_lin",RGBPoints:[-1,0,0,0,-.87451,.091821,.0611476,.10617,-.74902,.160311,.0900022,.192713,-.623529,.22484,.12126,.272128,-.498039,.291263,.157469,.340828,-.372549,.360015,.200388,.388903,-.247059,.437497,.250058,.387201,-.121569,.512636,.304969,.355955,.00392157,.582603,.360874,.33488,.129412,.655126,.416374,.306351,.254902,.725889,.473329,.279051,.380392,.778125,.537928,.302697,.505882,.815894,.606931,.382431,.631373,.839159,.679308,.497608,.756863,.854748,.751666,.631792,.882353,.869483,.822508,.768592,1,.887572,.887589,.887565]},{ColorSpace:"Lab",Name:"erdc_blue2green_muted",RGBPoints:[-1,.107704,.107708,.107695,-.87451,.141522,.13066,.270741,-.74902,.180123,.146119,.42308,-.623529,.210161,.169674,.551795,-.498039,.239701,.212939,.634969,-.372549,.253916,.282947,.653641,-.247059,.242791,.366933,.608521,-.121569,.226302,.446776,.52693,.00392157,.236237,.514689,.458798,.129412,.274641,.577589,.376069,.254902,.349625,.633993,.288131,.380392,.4437,.683677,.260497,.505882,.536247,.731214,.285424,.631373,.628472,.777128,.349151,.756863,.718259,.819287,.496825,.882353,.804768,.856164,.703299,1,.887571,.887591,.887548]},{ColorSpace:"Lab",Name:"erdc_blue2green_BW",RGBPoints:[-1,363578e-12,0,529374e-11,-.87451,.0539915,.0577948,.212806,-.74902,.0620393,.0758942,.388959,-.623529,.0697499,.102032,.54177,-.498039,.113295,.156156,.64334,-.372549,.152047,.243196,.670283,-.247059,.158096,.344084,.622864,-.121569,.151142,.43922,.532767,.00392157,.17155,.521588,.457719,.129412,.225861,.599141,.363997,.254902,.32328,.67007,.259083,.380392,.442344,.733697,.223754,.505882,.558409,.794941,.257411,.631373,.673875,.854344,.340822,.756863,.787244,.909326,.524717,.882353,.896483,.958063,.775914,1,1,1,.999982]},{ColorSpace:"Lab",Name:"GREEN-WHITE_LINEAR",RGBPoints:[-1,0,0,0,-.87451,0,.062745,0,-.74902,0,.12549,0,-.623529,0,.188235,0,-.498039,0,.25098,0,-.372549,0,.313725,0,-.247059,0,.376471,0,-.121569,.094118,.439216,0,.00392157,.196078,.501961,0,.129412,.294118,.564706,0,.254902,.396078,.627451,0,.380392,.498039,.690196,0,.505882,.6,.752941,.145098,.631373,.701961,.815686,.364706,.756863,.8,.878431,.580392,.882353,.901961,.941176,.796078,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_green2yellow_BW",RGBPoints:[-1,0,0,0,-.87451,0,.105542,.0603919,-.74902,0,.159454,.104148,-.623529,0,.219502,.15542,-.498039,0,.282276,.203811,-.372549,0,.346331,.235652,-.247059,0,.411765,.235428,-.121569,0,.477177,.217977,.00392157,.0593644,.541635,.21361,.129412,.233081,.604722,.210591,.254902,.369803,.664942,.226536,.380392,.498446,.722367,.288237,.505882,.601929,.782244,.380815,.631373,.703207,.840497,.512134,.756863,.803186,.896433,.674462,.882353,.903834,.950266,.846715,1,1,1,.999981]},{ColorSpace:"Lab",Name:"blue2cyan",RGBPoints:[-1,0,0,0,-.87451,0,.152941,.364706,-.74902,0,.254902,.470588,-.623529,0,.34902,.572549,-.498039,0,.443137,.670588,-.372549,0,.537255,.772549,-.247059,0,.627451,.870588,-.121569,0,.717647,.964706,.00392157,.0784314,.772549,1,.129412,.207843,.858824,1,.254902,.32549,.941176,1,.380392,.45098,1,1,.505882,.560784,1,1,.631373,.662745,1,1,.756863,.760784,1,1,.882353,.870588,1,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_blue2cyan_BW",RGBPoints:[-1,405298e-12,0,59012e-10,-.87451,.0207526,.0740933,.18093,-.74902,0,.121033,.30343,-.623529,0,.166892,.416095,-.498039,0,.216768,.524796,-.372549,.0164769,.275471,.608585,-.247059,.0544527,.344824,.659267,-.121569,.0880643,.419118,.688675,.00392157,.127938,.492556,.720256,.129412,.149476,.566946,.756918,.254902,.188961,.641333,.792122,.380392,.245482,.715336,.827609,.505882,.329216,.786235,.874761,.631373,.453558,.852803,.918466,.756863,.626281,.910493,.954,.882353,.82257,.958709,.980146,1,1,1,.999989]},{ColorSpace:"Lab",Name:"erdc_blue_BW",RGBPoints:[-1,0,0,0,-.87451,.0425591,.0763529,.150682,-.74902,.0569472,.119154,.275403,-.623529,.0635978,.164772,.395427,-.498039,.0774342,.213851,.510014,-.372549,.106815,.267034,.615102,-.247059,.122093,.324649,.720068,-.121569,.160851,.387068,.806956,.00392157,.213754,.453516,.878012,.129412,.26722,.524656,.932436,.254902,.326844,.599279,.968038,.380392,.403403,.674712,.984784,.505882,.499703,.745519,1,.631373,.615055,.813983,1,.756863,.74405,.879228,1,.882353,.877909,.941913,1,1,1,1,.999996]},{ColorSpace:"Lab",Name:"BLUE-WHITE",RGBPoints:[-1,0,0,0,-.87451,0,0,.082353,-.74902,0,0,.168627,-.623529,0,0,.254902,-.498039,0,0,.337255,-.372549,0,0,.423529,-.247059,0,0,.509804,-.121569,0,.101961,.592157,.00392157,0,.203922,.678431,.129412,0,.301961,.764706,.254902,0,.403922,.85098,.380392,0,.505882,.933333,.505882,0,.603922,1,.631373,.254902,.705882,1,.756863,.509804,.807843,1,.882353,.764706,.905882,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_purple_BW",RGBPoints:[-1,4264e-11,0,620844e-12,-.87451,.100579,.0593111,.145666,-.74902,.167794,.0889224,.254953,-.623529,.231446,.123339,.360511,-.498039,.296699,.163027,.461278,-.372549,.363211,.209286,.55306,-.247059,.431136,.260776,.637195,-.121569,.498202,.320012,.705799,.00392157,.567456,.380459,.778091,.129412,.629381,.445284,.8448,.254902,.688373,.517374,.895694,.380392,.74891,.590906,.93976,.505882,.805017,.667956,.977626,.631373,.850914,.752618,.992396,.756863,.89724,.838454,.994093,.882353,.948461,.922603,.994449,1,1,1,.999967]},{ColorSpace:"Lab",Name:"erdc_magenta_BW",RGBPoints:[-1,0,0,254023e-10,-.87451,.128696,.0456782,.11635,-.74902,.228133,.0476299,.201452,-.623529,.327273,.0374065,.282107,-.498039,.420953,.0408166,.35709,-.372549,.511562,.0642203,.430511,-.247059,.599552,.102686,.504257,-.121569,.684646,.150536,.579429,.00392157,.765817,.205978,.656062,.129412,.839176,.27229,.731807,.254902,.89536,.357594,.797309,.380392,.930238,.457825,.846984,.505882,.945921,.564536,.880571,.631373,.948995,.670753,.902279,.756863,.947124,.772819,.918171,.882353,.947265,.869424,.934352,1,.954719,.95475,.954726]},{ColorSpace:"Lab",Name:"magenta",RGBPoints:[-1,0,0,0,-.87451,.364706,0,.152941,-.74902,.470588,0,.254902,-.623529,.572549,0,.34902,-.498039,.670588,0,.443137,-.372549,.772549,0,.537255,-.247059,.870588,0,.627451,-.121569,.964706,0,.717647,.00392157,1,.0784314,.772549,.129412,1,.207843,.858824,.254902,1,.32549,.941176,.380392,1,.45098,1,.505882,1,.560784,1,.631373,1,.662745,1,.756863,1,.760784,1,.882353,1,.870588,1,1,1,1,1]},{ColorSpace:"Lab",Name:"RED-PURPLE",RGBPoints:[-1,0,0,0,-.87451,.188235,0,.007843,-.74902,.345098,0,.035294,-.623529,.439216,0,.098039,-.498039,.533333,0,.152941,-.372549,.627451,.015686,.211765,-.247059,.721569,.031373,.266667,-.121569,.8,.047059,.329412,.00392157,.862745,.047059,.403922,.129412,.941176,.062745,.466667,.254902,.988235,.078431,.54902,.380392,.988235,.141176,.643137,.505882,.988235,.25098,.729412,.631373,.988235,.376471,.811765,.756863,.988235,.54902,.886275,.882353,.988235,.752941,.952941,1,.996078,.996078,.996078]},{ColorSpace:"Lab",Name:"erdc_red_BW",RGBPoints:[-1,0,0,0,-.87451,.147204,.0480135,.0401815,-.74902,.253411,.0617478,.0301333,-.623529,.356059,.0746331,.0446897,-.498039,.457731,.0934935,.0636931,-.372549,.557199,.122714,.0860013,-.247059,.665179,.144238,.105585,-.121569,.763833,.187056,.138326,.00392157,.847035,.254558,.189407,.129412,.905663,.345937,.258215,.254902,.941431,.447111,.346277,.380392,.962608,.546927,.457571,.505882,.987833,.637276,.569944,.631373,.994202,.732176,.687958,.756863,.993304,.826268,.800567,.882353,.994413,.917205,.906393,1,1,1,.999979]},{ColorSpace:"Lab",Name:"RED_TEMPERATURE",RGBPoints:[-1,0,0,0,-.87451,.090196,0,0,-.74902,.180392,0,0,-.623529,.270588,0,0,-.498039,.360784,0,0,-.372549,.45098,0,0,-.247059,.545098,0,0,-.121569,.635294,0,0,.00392157,.72549,.058824,0,.129412,.815686,.176471,0,.254902,.905882,.294118,0,.380392,1,.411765,0,.505882,1,.533333,.027451,.631373,1,.65098,.27451,.756863,1,.768627,.521569,.882353,1,.886275,.768627,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_orange_BW",RGBPoints:[-1,0,0,253806e-10,-.87451,.135871,.0593824,0,-.74902,.224328,.0907216,0,-.623529,.318083,.119647,0,-.498039,.414443,.150246,0,-.372549,.511077,.184884,0,-.247059,.605501,.226033,0,-.121569,.695274,.275491,0,.00392157,.777826,.334445,0,.129412,.851498,.402441,0,.254902,.915899,.47759,602975e-9,.380392,.971984,.557882,.0361443,.505882,1,.641287,.135967,.631373,1,.725198,.27997,.756863,1,.808205,.438135,.882353,1,.89306,.587036,1,1,.977928,.721599]},{ColorSpace:"Lab",Name:"heated_object",RGBPoints:[-1,0,0,0,-.87451,.34902,.0862745,0,-.74902,.45098,.172549,0,-.623529,.52549,.231373,0,-.498039,.580392,.278431,0,-.372549,.623529,.313725,0,-.247059,.670588,.352941,0,-.121569,.717647,.392157,0,.00392157,.772549,.439216,0,.129412,.839216,.494118,0,.254902,.901961,.541176,0,.380392,.968627,.6,0,.505882,1,.658824,0,.631373,1,.721569,0,.756863,1,.827451,.298039,.882353,1,.976471,.72549,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_gold_BW",RGBPoints:[-1,0,0,190933e-10,-.87451,.128363,.0636265,0,-.74902,.193795,.111057,0,-.623529,.25976,.15987,0,-.498039,.328546,.210589,0,-.372549,.399726,.26332,0,-.247059,.472969,.318261,0,-.121569,.546245,.375827,0,.00392157,.61745,.436719,0,.129412,.685545,.501113,0,.254902,.749578,.568799,0,.380392,.80962,.6394,0,.505882,.865572,.712699,.10257,.631373,.917709,.787569,.233665,.756863,.966914,.863138,.369608,.882353,1,.939405,.496104,1,.999225,1,.612275]},{ColorSpace:"Lab",Name:"erdc_brown_BW",RGBPoints:[-1,33216e-11,0,483629e-11,-.87451,.14693,.0518172,0,-.74902,.225806,.0814996,0,-.623529,.301681,.111452,0,-.498039,.370487,.150664,0,-.372549,.43108,.199477,0,-.247059,.4849,.255107,0,-.121569,.536798,.313486,0,.00392157,.59286,.371167,0,.129412,.653119,.428135,0,.254902,.714589,.485917,.0379541,.380392,.774667,.54565,.116634,.505882,.831222,.608047,.183895,.631373,.880305,.674199,.260298,.756863,.922314,.742472,.367086,.882353,.959408,.811222,.497258,1,.993548,.875183,.622093]},{ColorSpace:"Lab",Name:"copper_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0784314,.0501961,.0313725,-.74902,.156863,.100392,.0627451,-.623529,.235294,.150588,.0941176,-.498039,.313725,.200784,.12549,-.372549,.392157,.25098,.156863,-.247059,.470588,.301176,.188235,-.121569,.54902,.351373,.219608,.00392157,.627451,.401569,.25098,.129412,.705882,.451765,.282353,.254902,.784314,.501961,.313725,.380392,.862745,.552157,.345098,.505882,.941176,.602353,.376471,.631373,1,.652549,.407843,.756863,1,.702745,.439216,.882353,1,.752941,.470588,1,1,.8,.5]},{ColorSpace:"Lab",Name:"pink_Matlab",RGBPoints:[-1,0,0,0,-.87451,.312416,.204524,.204524,-.74902,.441822,.289241,.289241,-.623529,.54112,.354246,.354246,-.498039,.624831,.409048,.409048,-.372549,.698582,.45733,.45733,-.247059,.764404,.502282,.500979,-.121569,.791292,.591516,.54112,.00392157,.817297,.66895,.578481,.129412,.842499,.738308,.613572,.254902,.866968,.801687,.646762,.380392,.890766,.86041,.678329,.505882,.913944,.913944,.711254,.631373,.936549,.936549,.79459,.756863,.958621,.958621,.869979,.882353,.980196,.980196,.939336,1,1,1,1]},{ColorSpace:"Lab",Name:"bone_Matlab",RGBPoints:[-1,0,0,0,-.87451,.054902,.054902,.075817,-.74902,.109804,.109804,.151634,-.623529,.164706,.164706,.227451,-.498039,.219608,.219608,.303268,-.372549,.27451,.27451,.379085,-.247059,.329412,.329902,.454412,-.121569,.384314,.405719,.509314,.00392157,.439216,.481536,.564216,.129412,.494118,.557353,.619118,.254902,.54902,.63317,.67402,.380392,.603922,.708987,.728922,.505882,.660294,.783824,.783824,.631373,.746569,.838725,.838725,.756863,.832843,.893627,.893627,.882353,.919118,.948529,.948529,1,1,1,1]},{ColorSpace:"Lab",Name:"gray_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0627451,.0627451,.0627451,-.74902,.12549,.12549,.12549,-.623529,.188235,.188235,.188235,-.498039,.25098,.25098,.25098,-.372549,.313725,.313725,.313725,-.247059,.376471,.376471,.376471,-.121569,.439216,.439216,.439216,.00392157,.501961,.501961,.501961,.129412,.564706,.564706,.564706,.254902,.627451,.627451,.627451,.380392,.690196,.690196,.690196,.505882,.752941,.752941,.752941,.631373,.815686,.815686,.815686,.756863,.878431,.878431,.878431,.882353,.941176,.941176,.941176,1,1,1,1]},{ColorSpace:"Lab",Name:"Purples",RGBPoints:[-1,.247059,0,.490196,-.87451,.288397,.07677,.525629,-.74902,.32975,.153587,.561092,-.623529,.373057,.236263,.600461,-.498039,.416363,.319,.639923,-.372549,.459669,.405613,.685198,-.247059,.503345,.491534,.730058,-.121569,.562399,.54862,.757616,.00392157,.621453,.606075,.785544,.129412,.680508,.674971,.824914,.254902,.739562,.743406,.863899,.380392,.798616,.800492,.893426,.505882,.85684,.856655,.922491,.631373,.898178,.894056,.942176,.756863,.938654,.930919,.961646,.882353,.964245,.958478,.977393,1,.988235,.984314,.992157]},{ColorSpace:"Lab",Name:"Blues",RGBPoints:[-1,.031373,.188235,.419608,-.87451,.031373,.253195,.516063,-.74902,.031757,.318139,.612149,-.623529,.080969,.38113,.661361,-.498039,.130427,.444152,.710327,-.372549,.195386,.509112,.743791,-.247059,.260715,.573841,.777209,-.121569,.341423,.628958,.808704,.00392157,.422745,.684075,.839892,.129412,.523137,.739193,.861546,.254902,.622684,.793464,.883429,.380392,.701423,.826928,.910988,.505882,.778685,.8603,.937993,.631373,.825928,.891795,.953741,.756863,.87328,.923291,.969489,.882353,.922491,.954787,.985236,1,.968627,.984314,1]},{ColorSpace:"Lab",Name:"Greens",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546082,.271326,-.372549,.197232,.609073,.31857,-.247059,.257255,.671742,.365859,-.121569,.357647,.720953,.415071,.00392157,.45767,.769919,.465021,.129412,.546251,.811257,.537855,.254902,.634295,.852211,.610688,.380392,.709097,.883706,.683522,.505882,.78316,.914833,.755894,.631373,.842215,.938454,.818885,.756863,.899977,.961538,.880692,.882353,.935409,.975317,.92203,1,.968627,.988235,.960784]},{ColorSpace:"Lab",Name:"PuBu",RGBPoints:[-1,.301961,0,.294118,-.87451,.404321,.029527,.390573,-.74902,.50599,.059592,.486782,-.623529,.519769,.158016,.551742,-.498039,.533456,.256194,.616301,-.372549,.54133,.33887,.655671,-.247059,.54902,.421592,.695087,-.121569,.54902,.506236,.736424,.00392157,.550127,.590573,.777701,.129412,.585559,.665375,.81707,.254902,.622145,.739023,.855825,.380392,.687105,.784298,.879446,.505882,.752065,.829758,.903253,.631373,.817024,.87897,.930811,.756863,.880907,.927213,.957832,.882353,.926182,.958708,.975548,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"BuPu",RGBPoints:[-1,.007843,.219608,.345098,-.87451,.01178,.286536,.449427,-.74902,.015702,.35328,.553479,-.623529,.01767,.396586,.622376,-.498039,.021115,.4402,.690688,-.372549,.11757,.503191,.722184,-.247059,.214625,.565859,.753633,-.121569,.336671,.615071,.78316,.00392157,.457978,.663975,.812503,.129412,.556401,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821638,.903068,.631373,.873387,.864944,.92669,.756863,.927536,.907605,.949988,.882353,.964937,.9391,.967705,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGn",RGBPoints:[-1,.031373,.25098,.505882,-.87451,.031373,.329719,.590527,-.74902,.031911,.408397,.674787,-.623529,.100807,.479262,.710219,-.498039,.169704,.550219,.745744,-.372549,.238601,.62699,.787082,-.247059,.307958,.703114,.826759,-.121569,.39654,.752326,.797232,.00392157,.485121,.801046,.767705,.129412,.573702,.83451,.738178,.254902,.661592,.867743,.711034,.380392,.732457,.895302,.74253,.505882,.801845,.922307,.774579,.631373,.841215,.938055,.817885,.756863,.880907,.95391,.861084,.882353,.926182,.971626,.902422,1,.968627,.988235,.941176]},{ColorSpace:"Lab",Name:"GnBu",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546175,.272095,-.372549,.197232,.615071,.368551,-.247059,.256609,.683276,.464867,-.121569,.329443,.722645,.555417,.00392157,.403137,.762138,.645413,.129412,.503529,.805444,.718247,.254902,.603922,.848597,.790465,.380392,.704314,.887966,.847551,.505882,.802307,.926321,.903714,.631373,.851519,.944037,.941115,.756863,.899977,.961538,.976901,.882353,.935409,.975317,.984775,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"GnBuPu",RGBPoints:[-1,.003922,.27451,.211765,-.87451,.003922,.349312,.280661,-.74902,.003937,.423852,.349773,-.623529,.005905,.46519,.446228,-.498039,.009443,.506344,.542837,-.372549,.111803,.535871,.649135,-.247059,.214025,.565859,.753633,-.121569,.310481,.615071,.78316,.00392157,.407797,.663975,.812503,.129412,.531811,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821176,.902884,.631373,.873387,.854641,.922568,.756863,.927536,.888535,.942361,.882353,.964937,.929873,.964014,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGnYl",RGBPoints:[-1,.031373,.113725,.345098,-.87451,.088458,.159,.463206,-.74902,.145052,.204567,.5807,-.623529,.139146,.287243,.620069,-.498039,.13318,.370196,.659562,-.372549,.123337,.470588,.706805,-.247059,.115386,.570335,.753126,-.121569,.186251,.643168,.761,.00392157,.258716,.71514,.768074,.129412,.380761,.760415,.750358,.254902,.503576,.806075,.732795,.380392,.645306,.861192,.719016,.505882,.783899,.91511,.705606,.631373,.858701,.944637,.6997,.756863,.931349,.973303,.698424,.882353,.966782,.987082,.777163,1,1,1,.85098]},{ColorSpace:"Lab",Name:"PuRd",RGBPoints:[-1,.286275,0,.415686,-.87451,.38273,.001968,.441276,-.74902,.479231,.003922,.466774,-.623529,.581592,.003922,.480554,-.498039,.683799,.00549,.494887,-.372549,.776317,.105882,.544098,-.247059,.867866,.206321,.592618,-.121569,.919047,.308681,.612303,.00392157,.968812,.411226,.632603,.129412,.974717,.519493,.671972,.254902,.980546,.626451,.71065,.380392,.984483,.701253,.732303,.505882,.988328,.77504,.755617,.631373,.990296,.828189,.812703,.756863,.992372,.880907,.869035,.882353,.996309,.926182,.912341,1,1,.968627,.952941]},{ColorSpace:"Lab",Name:"RdPu",RGBPoints:[-1,.403922,0,.121569,-.87451,.500377,0,.192434,-.74902,.596909,277e-6,.263037,-.623529,.703206,.035709,.300438,-.498039,.808612,.071296,.338854,-.372549,.857824,.116571,.441215,-.247059,.905513,.163552,.54293,-.121569,.889765,.281661,.617732,.00392157,.873156,.39897,.691611,.129412,.82985,.491488,.736886,.254902,.789081,.583237,.781853,.380392,.810734,.656071,.819254,.505882,.833126,.729181,.85684,.631373,.870527,.80792,.898178,.756863,.907605,.884398,.938331,.882353,.9391,.921799,.958016,1,.968627,.956863,.976471]},{ColorSpace:"Lab",Name:"Oranges",RGBPoints:[-1,.498039,.152941,.015686,-.87451,.57481,.182468,.013718,-.74902,.651765,.212042,.011734,-.623529,.752157,.247474,.007797,-.498039,.851719,.283368,.004475,-.372549,.898962,.348328,.039908,-.247059,.945652,.413426,.076401,-.121569,.969273,.484291,.157109,.00392157,.992157,.554971,.238185,.129412,.992157,.619931,.330704,.254902,.992157,.684967,.423837,.380392,.992157,.751895,.532103,.505882,.992249,.817716,.639354,.631373,.994218,.861023,.725967,.756863,.996186,.903576,.810965,.882353,.998155,.933103,.868051,1,1,.960784,.921569]},{ColorSpace:"Lab",Name:"Reds",RGBPoints:[-1,.403922,0,.05098,-.87451,.525967,.029527,.066728,-.74902,.647643,.058962,.082476,-.623529,.722445,.076678,.098224,-.498039,.797186,.095194,.114187,-.372549,.868051,.164091,.143714,-.247059,.937809,.233541,.173933,-.121569,.96143,.326059,.232987,.00392157,.984375,.418147,.292657,.129412,.986344,.496886,.371396,.254902,.988235,.575702,.450673,.380392,.988235,.656409,.543191,.505882,.98842,.736747,.635894,.631373,.992357,.809581,.732349,.756863,.996186,.880692,.826759,.882353,.998155,.92203,.885813,1,1,.960784,.941176]},{ColorSpace:"Lab",Name:"RdOr",RGBPoints:[-1,.498039,0,0,-.87451,.6004,0,0,-.74902,.702514,738e-6,477e-6,-.623529,.773379,.095225,.061499,-.498039,.843875,.189865,.12283,-.372549,.891119,.294195,.203537,-.247059,.937855,.397924,.283137,-.121569,.963445,.476663,.316601,.00392157,.988297,.555771,.351665,.129412,.990265,.646321,.436309,.254902,.992157,.735256,.519646,.380392,.992157,.784468,.570827,.505882,.992249,.833218,.623483,.631373,.994218,.872587,.706159,.756863,.996186,.911419,.788189,.882353,.998155,.940946,.859054,1,1,.968627,.92549]},{ColorSpace:"Lab",Name:"BrOrYl",RGBPoints:[-1,.4,.145098,.023529,-.87451,.500392,.174625,.019592,-.74902,.600784,.204291,.015656,-.623529,.701176,.251534,.011719,-.498039,.800984,.299146,.008397,-.372549,.863975,.370012,.043829,-.247059,.926321,.441107,.0794,-.121569,.961753,.521815,.120738,.00392157,.996078,.602645,.163122,.129412,.996078,.68729,.237924,.254902,.996078,.771011,.314879,.380392,.996078,.832034,.444798,.505882,.996171,.892042,.572595,.631373,.998139,.931411,.65724,.756863,1,.969489,.741669,.882353,1,.985236,.822376,1,1,1,.898039]},{ColorSpace:"Lab",Name:"RdOrYl",RGBPoints:[-1,.501961,0,.14902,-.87451,.622038,0,.14902,-.74902,.741761,4e-4,.148866,-.623529,.816563,.05158,.129181,-.498039,.890965,.10356,.110235,-.372549,.940177,.205921,.137793,-.247059,.988281,.308789,.165536,-.121569,.99025,.432803,.200969,.00392157,.992218,.555217,.236278,.129412,.994187,.628051,.267774,.254902,.996078,.701038,.301269,.380392,.996078,.777809,.383945,.505882,.996171,.852826,.466621,.631373,.998139,.892195,.549296,.756863,1,.931349,.632188,.882353,1,.966782,.7188,1,1,1,.8]},{ColorSpace:"Lab",Name:"CIELab_blue2red",RGBPoints:[-1,0,.6,.74902,1,.76863,.46667,.34118]},{ColorSpace:"Lab",Name:"blue2yellow",RGBPoints:[-1,0,0,1,0,.5,.5,.5,1,1,1,0]},{ColorSpace:"Lab",Name:"erdc_blue2gold",RGBPoints:[-1,.175119,.0438468,1,-.874016,.22383,.159771,.94557,-.748031,.27254,.233611,.891216,-.622047,.321251,.296526,.836857,-.496063,.369962,.354296,.782359,-.370079,.418672,.409139,.72754,-.244094,.467383,.462152,.672148,-.11811,.51609,.51396,.615825,.00787402,.572863,.55452,.559172,.133858,.630269,.593822,.517729,.259843,.689588,.624668,.47446,.385827,.745394,.656113,.428638,.511811,.798624,.688104,.379105,.637795,.849926,.720593,.323834,.76378,.899765,.753543,.258657,.889764,.948487,.78692,.171778,1,.990413,.816451,.00729848]},{ColorSpace:"Lab",Name:"erdc_blue2yellow",RGBPoints:[-1,.0830122,0,.495617,-.87451,.141973,.0551288,.57363,-.74902,.193048,.110258,.604561,-.623529,.234231,.165386,.57643,-.498039,.275413,.220515,.548299,-.372549,.316596,.275644,.520169,-.247059,.357778,.330773,.492038,-.121569,.398961,.385901,.463908,.00392157,.449929,.438487,.426815,.129412,.511572,.488299,.379944,.254902,.581222,.53603,.325741,.380392,.650871,.583761,.271538,.505882,.720521,.631493,.217335,.631373,.79017,.679224,.163132,.756863,.85982,.726955,.108929,.882353,.910254,.774159,.14112,1,.927513,.81759,.306289]},{ColorSpace:"Lab",Name:"erdc_cyan2orange",RGBPoints:[-1,.0471513,.213874,.414329,-.87451,.0674702,.256648,.439027,-.74902,.0959957,.299331,.462089,-.623529,.132428,.341872,.483212,-.498039,.188743,.38277,.500597,-.372549,.268511,.420229,.512179,-.247059,.352945,.455602,.519101,-.121569,.43893,.489368,.521538,.00392157,.522445,.522495,.522436,.129412,.600089,.555682,.53205,.254902,.67988,.587981,.539163,.380392,.761011,.619586,.544439,.505882,.84278,.650741,.548567,.631373,.910713,.687347,.557822,.756863,.952232,.734972,.577775,.882353,.975642,.789858,.604868,1,.990752,.843643,.632857]},{ColorSpace:"Lab",Name:"erdc_purple2green",RGBPoints:[-1,.235006,.0483128,.530899,-.87451,.302968,.108419,.552391,-.74902,.360241,.166059,.569502,-.623529,.406746,.226782,.579373,-.498039,.444073,.28964,.582094,-.372549,.473648,.353774,.577947,-.247059,.497636,.418154,.567911,-.121569,.519086,.481741,.553968,.00392157,.542884,.542914,.542875,.129412,.566303,.603989,.527499,.254902,.595218,.662965,.516857,.380392,.628641,.720701,.510673,.505882,.665373,.777849,.508165,.631373,.704182,.834921,.508303,.756863,.743846,.892328,.50999,.882353,.783158,.950422,.512181,1,.818617,1,.513888]},{ColorSpace:"Lab",Name:"erdc_purple2green_dark",RGBPoints:[-1,.107656,0,.428682,-.87451,.1924,0,.449799,-.74902,.255118,.0648939,.466726,-.623529,.304256,.133066,.476703,-.498039,.343202,.19716,.479793,-.372549,.373876,.260353,.476241,-.247059,.398497,.322872,.466953,-.121569,.420016,.384252,.453785,.00392157,.44319,.443216,.443186,.129412,.465553,.502139,.428233,.254902,.492959,.559151,.417591,.380392,.524654,.615092,.411016,.505882,.55959,.670583,.40779,.631373,.596614,.726102,.406948,.756863,.634544,.782032,.407439,.882353,.672183,.838703,.408237,1,.706131,.892759,.408452]},{ColorSpace:"Lab",Name:"coolwarm",RGBPoints:[-1,.229806,.298718,.753683,-.875,.303869,.406535,.844959,-.75,.383013,.509419,.917388,-.625,.466667,.604563,.968155,-.5,.552953,.688929,.995376,-.375,.639176,.7596,.998151,-.25,.722193,.813953,.976575,-.125,.798692,.849786,.931689,0,.865395,.86541,.865396,.125,.924128,.827385,.774508,.25,.958853,.769768,.678008,.375,.969954,.694267,.579375,.5,.958003,.602842,.481776,.625,.923945,.497309,.38797,.75,.869187,.378313,.300267,.875,.795632,.241284,.220526,1,.705673,.0155562,.150233]},{ColorSpace:"Lab",Name:"BuRd",RGBPoints:[-1,.019608,.188235,.380392,-.87451,.088504,.321107,.564937,-.74902,.163399,.444983,.697501,-.623529,.247059,.555709,.754095,-.498039,.420684,.676432,.818685,-.372549,.606459,.789773,.880277,-.247059,.761476,.868512,.924567,-.121569,.878047,.925721,.951942,.00392157,.969089,.966474,.964937,.129412,.983852,.897578,.846828,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"Spectral_lowBlue",RGBPoints:[-1,.368627,.309804,.635294,-.87451,.260361,.450058,.70173,-.74902,.248058,.591311,.717186,-.623529,.376009,.734025,.658132,-.498039,.537947,.814764,.64506,-.372549,.702345,.879585,.636678,-.247059,.84752,.938639,.607151,-.121569,.940408,.976163,.656055,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.937793,.398539,.270127,.756863,.861515,.282891,.299654,.882353,.746482,.144637,.288812,1,.619608,.003922,.258824]},{ColorSpace:"Lab",Name:"GnRP",RGBPoints:[-1,0,.266667,.105882,-.87451,.066436,.394617,.174779,-.74902,.168858,.524567,.25767,-.623529,.323875,.657439,.361015,-.498039,.504883,.772318,.506344,-.372549,.678431,.870127,.654902,-.247059,.803922,.921799,.780392,-.121569,.897116,.951942,.882814,.00392157,.967397,.965936,.967474,.129412,.928028,.879815,.930565,.254902,.866052,.780777,.882891,.380392,.77501,.665129,.821376,.505882,.675663,.537024,.737024,.631373,.57847,.396155,.645982,.756863,.492349,.223914,.547559,.882353,.375548,.096886,.423299,1,.25098,0,.294118]},{ColorSpace:"Lab",Name:"GYPi",RGBPoints:[-1,.152941,.392157,.098039,-.87451,.246444,.505344,.117724,-.74902,.351942,.614533,.161399,-.623529,.474971,.717878,.240138,-.498039,.611995,.811226,.392849,-.372549,.746328,.893118,.565321,-.247059,.859516,.94233,.747405,-.121569,.928105,.96386,.875663,.00392157,.969089,.966859,.968012,.129412,.983852,.910265,.948328,.254902,.979239,.833218,.914648,.380392,.949712,.729873,.862976,.505882,.905652,.58293,.763552,.631373,.85521,.410073,.652211,.756863,.793695,.183699,.531642,.882353,.683737,.063899,.420761,1,.556863,.003922,.321569]},{ColorSpace:"Lab",Name:"GnYlRd",RGBPoints:[-1,0,.407843,.215686,-.87451,.063975,.525952,.277201,-.74902,.177932,.633064,.332718,-.623529,.364937,.724106,.379469,-.498039,.527951,.797155,.40223,-.372549,.678431,.862822,.433449,-.247059,.803922,.916955,.514648,-.121569,.909419,.961861,.625067,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.939023,.389927,.245521,.756863,.867666,.239831,.176624,.882353,.762399,.110727,.151326,1,.647059,0,.14902]},{ColorSpace:"Lab",Name:"GBBr",RGBPoints:[-1,0,.235294,.188235,-.87451,.002461,.338639,.301423,-.74902,.055902,.448981,.417609,-.623529,.183852,.56955,.538178,-.498039,.357785,.700115,.660746,-.372549,.540177,.819531,.77624,-.247059,.714879,.890888,.864821,-.121569,.851134,.934564,.922645,.00392157,.960861,.959785,.95694,.129412,.963322,.927797,.83391,.254902,.939946,.868897,.68935,.380392,.883353,.775394,.517109,.505882,.808074,.625836,.324106,.631373,.717647,.476355,.15494,.756863,.592157,.358247,.06882,.882353,.458593,.26436,.031142,1,.329412,.188235,.019608]},{ColorSpace:"Lab",Name:"PuOr",RGBPoints:[-1,.498039,.231373,.031373,-.87451,.62599,.30273,.026451,-.74902,.746943,.387082,.037524,-.623529,.85767,.490427,.071972,-.498039,.936409,.617762,.236371,-.372549,.992695,.743099,.43291,-.247059,.995156,.841523,.63714,-.121569,.985313,.913802,.813687,.00392157,.966244,.966398,.967705,.129412,.889965,.89504,.938178,.254902,.806151,.804306,.894656,.380392,.712649,.688658,.833141,.505882,.594233,.554325,.744637,.631373,.474894,.404229,.652364,.756863,.366628,.217224,.563783,.882353,.266436,.089965,.434833,1,.176471,0,.294118]},{ColorSpace:"Lab",Name:"PRGn",RGBPoints:[-1,.25098,0,.294118,-.87451,.383852,.103345,.431911,-.74902,.497732,.234679,.55371,-.623529,.583852,.40692,.652134,-.498039,.681968,.545175,.742561,-.372549,.7807,.672357,.825221,-.247059,.871742,.788005,.886736,-.121569,.930488,.885198,.932872,.00392157,.966321,.968089,.965859,.129412,.892503,.950865,.877278,.254902,.796078,.91857,.772549,.380392,.670588,.866897,.647059,.505882,.493195,.765398,.496655,.631373,.314187,.649135,.354556,.756863,.15917,.516263,.251211,.882353,.062284,.386621,.170473,1,0,.266667,.105882]},{ColorSpace:"Lab",Name:"PiYG",RGBPoints:[-1,.556863,.003922,.321569,-.87451,.692195,.067897,.427374,-.74902,.797539,.197847,.539177,-.623529,.859054,.424221,.659746,-.498039,.908574,.592618,.770319,-.372549,.951557,.736332,.866205,-.247059,.981084,.839677,.917878,-.121569,.98293,.913802,.949558,.00392157,.96732,.968474,.965629,.129412,.92549,.963552,.869666,.254902,.852441,.939254,.736025,.380392,.739254,.890042,.553941,.505882,.60323,.805536,.382238,.631373,.467282,.711419,.235217,.756863,.344252,.608074,.156478,.882353,.2406,.49827,.116494,1,.152941,.392157,.098039]},{ColorSpace:"Lab",Name:"OrPu",RGBPoints:[-1,.176471,0,.294118,-.87451,.272434,.095963,.444214,-.74902,.373395,.228912,.56932,-.623529,.481661,.415917,.657901,-.498039,.601922,.562937,.750481,-.372549,.718493,.695886,.836986,-.247059,.811995,.811534,.898501,-.121569,.894733,.8995,.940023,.00392157,.969166,.966859,.963629,.129412,.98639,.910265,.803691,.254902,.995002,.835371,.624375,.380392,.992541,.736947,.420146,.505882,.931949,.609458,.224221,.631373,.85075,.483968,.069819,.756863,.740023,.380623,.035371,.882353,.617993,.29827,.026759,1,.498039,.231373,.031373]},{ColorSpace:"Lab",Name:"BrBG",RGBPoints:[-1,.329412,.188235,.019608,-.87451,.467205,.269435,.031911,-.74902,.6,.365629,.074202,-.623529,.72549,.483737,.160323,-.498039,.812995,.635832,.336409,-.372549,.88689,.781238,.527874,-.247059,.943483,.87474,.700115,-.121569,.963168,.929796,.841599,.00392157,.957247,.959938,.959554,.129412,.84406,.932872,.920185,.254902,.70396,.886428,.859285,.380392,.529258,.815071,.770704,.505882,.346251,.691811,.653057,.631373,.175855,.562015,.530642,.756863,.047905,.441446,.410073,.882353,.002307,.33218,.294348,1,0,.235294,.188235]},{ColorSpace:"Lab",Name:"GyRd",RGBPoints:[-1,.101961,.101961,.101961,-.87451,.227451,.227451,.227451,-.74902,.359939,.359939,.359939,-.623529,.502653,.502653,.502653,-.498039,.631373,.631373,.631373,-.372549,.749865,.749865,.749865,-.247059,.843368,.843368,.843368,-.121569,.926105,.926105,.926105,.00392157,.999846,.997232,.995694,.129412,.994925,.908651,.857901,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen",RGBPoints:[-1,.297553,0,.489074,-.87451,.40259,.151146,.567754,-.74902,.516038,.284843,.658231,-.623529,.629783,.423646,.750938,-.498039,.735198,.563697,.835956,-.372549,.82408,.695541,.903582,-.247059,.889091,.807454,.944862,-.121569,.92334,.886917,.951839,.00392157,.921045,.921084,.921003,.129412,.877324,.907455,.845381,.254902,.797649,.849713,.734695,.380392,.691646,.75964,.600532,.505882,.568981,.649159,.453807,.631373,.438945,.529756,.304259,.756863,.30973,.412001,.158303,.882353,.187078,.305111,.00251458,1,.101655,.220836,0]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen_dim",RGBPoints:[-1,.404088,.131038,.592767,-.87451,.486469,.230957,.651243,-.74902,.575165,.339335,.717723,-.623529,.662741,.454332,.784263,-.498039,.742071,.570213,.842918,-.372549,.806935,.678992,.886227,-.247059,.852219,.771315,.90763,-.121569,.873345,.837327,.901572,.00392157,.866783,.86682,.866745,.129412,.82839,.858225,.796812,.254902,.762578,.814287,.700202,.380392,.676429,.744229,.585735,.505882,.577033,.65732,.461526,.631373,.47128,.562476,.33476,.756863,.365461,.467957,.21076,.882353,.264758,.381138,.0878313,1,.182591,.312249,0]},{ColorSpace:"Lab",Name:"erdc_divLow_icePeach",RGBPoints:[-1,.480048,.817441,.998056,-.87451,.425898,.726921,.883187,-.74902,.366682,.629445,.761936,-.623529,.308756,.531002,.640217,-.498039,.258021,.43705,.523433,-.372549,.219244,.352381,.416348,-.247059,.195127,.281032,.322979,-.121569,.186286,.22627,.246525,.00392157,.192352,.19236,.192364,.129412,.255927,.214469,.191756,.254902,.340459,.254426,.206666,.380392,.444655,.309315,.234029,.505882,.565353,.376004,.270969,.631373,.697917,.450748,.314293,.756863,.836657,.529064,.360227,.882353,.972695,.614884,.413123,1,1,.705904,.472699]},{ColorSpace:"Lab",Name:"erdc_divLow_purpleGreen",RGBPoints:[-1,.956034,.666487,.952663,-.87451,.874457,.572698,.936352,-.74902,.753465,.488253,.909063,-.623529,.63309,.413507,.763833,-.498039,.514491,.345878,.620015,-.372549,.405008,.288141,.484376,-.247059,.311388,.241986,.363556,-.121569,.238722,.209044,.263449,.00392157,.192352,.192366,.192362,.129412,.200379,.233201,.168618,.254902,.230151,.291737,.165227,.380392,.279481,.366076,.178607,.505882,.344927,.453267,.205703,.631373,.421554,.549449,.242643,.756863,.503334,.649999,.284377,.882353,.583497,.749672,.324969,1,.650705,.837228,.356264]},{ColorSpace:"Lab",Name:"Haze_green",RGBPoints:[-1,1,.835294,.886275,-.87451,.937255,.756863,.870443,-.74902,.875817,.666376,.857807,-.623529,.778359,.583007,.808134,-.498039,.676253,.494118,.745098,-.372549,.561365,.390123,.682353,-.247059,.438344,.262745,.621496,-.121569,.321133,.141031,.558751,.00392157,.203922,.0217865,.495861,.129412,.265505,.129412,.433261,.254902,.311692,.255338,.37008,.380392,.356282,.377342,.310821,.505882,.39971,.488889,.258243,.631373,.442556,.604357,.205519,.756863,.48671,.71968,.152941,.882353,.529847,.830356,.100944,1,.572549,.933333,.054902]},{ColorSpace:"Lab",Name:"Haze_lime",RGBPoints:[-1,.704034,.784196,1,-.87451,.633111,.691418,.956078,-.74902,.564021,.600606,.912157,-.623529,.496827,.51189,.868235,-.498039,.43157,.425416,.824314,-.372549,.368248,.341347,.780392,-.247059,.306767,.259855,.736471,-.121569,.246862,.181069,.692549,.00392157,.191619,.109542,.648627,.129412,.257404,.194031,.604706,.254902,.321794,.278775,.560784,.380392,.387909,.364617,.516863,.505882,.456569,.451881,.472941,.631373,.527424,.540773,.42902,.756863,.599759,.631427,.385098,.882353,.673065,.723898,.341176,1,.742751,.812252,.3]},{ColorSpace:"RGB",Name:"Haze",RGBPoints:[-1,1,.835294,.996078,-.00392157,.023529,.141176,.498039,.00392157,.015686,.137255,.494118,1,.984314,.764706,0]},{ColorSpace:"Lab",Name:"Haze_cyan",RGBPoints:[-1,.956863,1,.835294,-.87451,.933188,.921714,.760784,-.74902,.870588,.803486,.671605,-.623529,.807843,.684096,.583297,-.498039,.745098,.569208,.494118,-.372549,.682353,.437763,.390123,-.247059,.621496,.288163,.262745,-.121569,.558751,.144517,.141031,.00392157,.495861,.0217865,.0413943,.129412,.433261,.137255,.129412,.254902,.37008,.263181,.255338,.380392,.306318,.381845,.372694,.505882,.243137,.503994,.494263,.631373,.180392,.629484,.619753,.756863,.117647,.754975,.747131,.882353,.054902,.876398,.866812,1,0,.988235,.976471]},{ColorSpace:"Lab",Name:"nic_Edge",RGBPoints:[-1,.191208,.191208,.191208,-.87451,.239484,.00545035,.614821,-.74902,.220593,.0617459,.863547,-.623529,.17509,.278988,.97794,-.498039,.143526,.576069,.998553,-.372549,.166456,.871883,.96594,-.247059,.376202,.993555,.981833,-.121569,.681996,.991297,.999239,.00392157,.954172,.952734,.94374,.129412,.999735,.99301,.662896,.254902,.979399,.991466,.357973,.380392,.968771,.854967,.162659,.505882,.999245,.556697,.144323,.631373,.973959,.26223,.177946,.756863,.852358,.0526707,.222974,.882353,.593889,.00912724,.238855,1,.191208,.191208,.191208]},{ColorSpace:"Lab",Name:"erdc_iceFire_H",RGBPoints:[-1,405432e-12,0,590122e-11,-.87451,0,.120401,.302675,-.74902,0,.216583,.524574,-.623529,.0552475,.345025,.6595,-.498039,.128047,.492588,.720288,-.372549,.188955,.641309,.792092,-.247059,.327673,.784935,.873434,-.121569,.60824,.892164,.935547,.00392157,.881371,.912178,.818099,.129412,.951407,.835621,.449279,.254902,.904481,.690489,0,.380392,.85407,.510864,0,.505882,.777093,.33018,88199e-8,.631373,.672862,.139087,.00269398,.756863,.508815,0,0,.882353,.299417,366289e-9,547829e-9,1,.0157519,.00332021,455569e-13]},{ColorSpace:"Lab",Name:"erdc_iceFire_L",RGBPoints:[-1,.870485,.913768,.832905,-.87451,.586919,.887865,.934003,-.74902,.31583,.776442,.867858,-.623529,.18302,.632034,.787722,-.498039,.117909,.484134,.713825,-.372549,.0507239,.335979,.654741,-.247059,0,.209874,.511832,-.121569,0,.114689,.28935,.00392157,.0157519,.00332021,455569e-13,.129412,.312914,0,0,.254902,.520865,0,0,.380392,.680105,.15255,.0025996,.505882,.785109,.339479,797922e-9,.631373,.857354,.522494,0,.756863,.910974,.699774,0,.882353,.951921,.842817,.478545,1,.881371,.912178,.818099]},{ColorSpace:"RGB",Name:"hsv",RGBPoints:[-1,1,0,0,-.666666,1,0,1,-.333333,0,0,1,0,0,1,1,.33333,0,1,0,.66666,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"hue_L60",RGBPoints:[-1,.964784,.400592,.349549,-.87451,.964915,.372498,.53785,-.74902,.892353,.401039,.759569,-.623529,.79263,.446956,.903017,-.498039,.682208,.49954,.966673,-.372549,.56392,.553082,.968836,-.247059,.442031,.606396,.901601,-.121569,.305499,.65701,.765784,.00392157,.197251,.687914,.620914,.129412,.193882,.701887,.472654,.254902,.249866,.706123,.320005,.380392,.35132,.697417,.202919,.505882,.498097,.669467,.125232,.631373,.637477,.626239,.107431,.756863,.762115,.56872,.155812,.882353,.889434,.481116,.240445,1,.964784,.400592,.349549]},{IndexedColors:[0,0,0,.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,.6509803921568628,.3372549019607843,.1568627450980392],Name:"Spectrum",NanColor:[.6509803921568628,.3372549019607843,.1568627450980392]},{IndexedColors:[.4745098039215686,.09019607843137255,.09019607843137255,.7098039215686275,.00392156862745098,.00392156862745098,.9372549019607843,.2784313725490196,.09803921568627451,.9764705882352941,.5137254901960784,.1411764705882353,1,.7058823529411765,0,1,.8980392156862745,.02352941176470588],Name:"Warm",NanColor:[1,.8980392156862745,.02352941176470588]},{IndexedColors:[.4588235294117647,.6941176470588235,.00392156862745098,.3450980392156863,.5019607843137255,.1607843137254902,.3137254901960784,.8431372549019608,.7490196078431373,.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.6039215686274509,.407843137254902,1,.3725490196078431,.2,.5019607843137255],Name:"Cool",NanColor:[.3725490196078431,.2,.5019607843137255]},{IndexedColors:[.2313725490196079,.407843137254902,.6705882352941176,.1098039215686274,.5843137254901961,.803921568627451,.3058823529411765,.8509803921568627,.9176470588235294,.4509803921568628,.6039215686274509,.8352941176470589,.2588235294117647,.2392156862745098,.6627450980392157,.3137254901960784,.3294117647058823,.5294117647058824,.06274509803921569,.1647058823529412,.3215686274509804],Name:"Blues",NanColor:[.06274509803921569,.1647058823529412,.3215686274509804]},{IndexedColors:[.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.4,.2431372549019608,.7176470588235294,.6352941176470588,.3294117647058823,.8117647058823529,.8705882352941177,.3803921568627451,.807843137254902,.8627450980392157,.3803921568627451,.5843137254901961,.2392156862745098,.06274509803921569,.3215686274509804],Name:"Wild Flower",NanColor:[.2392156862745098,.06274509803921569,.3215686274509804]},{IndexedColors:[.396078431372549,.4862745098039216,.2156862745098039,.4588235294117647,.6941176470588235,.00392156862745098,.6980392156862745,.7294117647058823,.1882352941176471,1,.8980392156862745,.02352941176470588,1,.7058823529411765,0,.9764705882352941,.5137254901960784,.1411764705882353],Name:"Citrus",NanColor:[.9764705882352941,.5137254901960784,.1411764705882353]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (11)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (10)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (9)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (8)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (7)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (6)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.9686274509803922,.9686274509803922,.9686274509803922,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (5)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (4)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9450980392156862,.6392156862745098,.2509803921568627,.9686274509803922,.9686274509803922,.9686274509803922,.6,.5568627450980392,.7647058823529411],Name:"Brewer Diverging Purple-Orange (3)",NanColor:[.6,.5568627450980392,.7647058823529411]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (11)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (10)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (9)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (8)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (7)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (6)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,1,1,.7490196078431373,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (5)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (4)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.9882352941176471,.5529411764705883,.3490196078431372,1,1,.7490196078431373,.6,.8352941176470589,.5803921568627451],Name:"Brewer Diverging Spectral (3)",NanColor:[.6,.8352941176470589,.5803921568627451]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (11)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (10)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (9)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (8)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (7)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (6)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.9607843137254902,.9607843137254902,.9607843137254902,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (5)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (4)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.8470588235294118,.7019607843137254,.396078431372549,.9607843137254902,.9607843137254902,.9607843137254902,.3529411764705883,.7058823529411765,.6745098039215687],Name:"Brewer Diverging Brown-Blue-Green (3)",NanColor:[.3529411764705883,.7058823529411765,.6745098039215687]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.4274509803921568,.1725490196078431,0,.2666666666666667,.1058823529411765],Name:"Brewer Sequential Blue-Green (9)",NanColor:[0,.2666666666666667,.1058823529411765]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (8)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.8,.9254901960784314,.9019607843137255,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (7)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (6)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (5)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1372549019607843,.5450980392156862,.2705882352941176],Name:"Brewer Sequential Blue-Green (4)",NanColor:[.1372549019607843,.5450980392156862,.2705882352941176]},{IndexedColors:[.8980392156862745,.9607843137254902,.9764705882352941,.6,.8470588235294118,.788235294117647,.1725490196078431,.6352941176470588,.3725490196078431],Name:"Brewer Sequential Blue-Green (3)",NanColor:[.1725490196078431,.6352941176470588,.3725490196078431]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.6,.203921568627451,.01568627450980392,.4,.1450980392156863,.02352941176470588],Name:"Brewer Sequential Yellow-Orange-Brown (9)",NanColor:[.4,.1450980392156863,.02352941176470588]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (8)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (7)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (6)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (5)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8,.2980392156862745,.00784313725490196],Name:"Brewer Sequential Yellow-Orange-Brown (4)",NanColor:[.8,.2980392156862745,.00784313725490196]},{IndexedColors:[1,.9686274509803922,.7372549019607844,.996078431372549,.7686274509803922,.3098039215686275,.8509803921568627,.3725490196078431,.05490196078431372],Name:"Brewer Sequential Yellow-Orange-Brown (3)",NanColor:[.8509803921568627,.3725490196078431,.05490196078431372]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.5058823529411764,.05882352941176471,.4862745098039216,.3019607843137255,0,.2941176470588235],Name:"Brewer Sequential Blue-Purple (9)",NanColor:[.3019607843137255,0,.2941176470588235]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (8)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (7)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (6)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (5)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.2549019607843137,.615686274509804],Name:"Brewer Sequential Blue-Purple (4)",NanColor:[.5333333333333333,.2549019607843137,.615686274509804]},{IndexedColors:[.8784313725490196,.9254901960784314,.9568627450980393,.6196078431372549,.7372549019607844,.8549019607843137,.5333333333333333,.3372549019607843,.6549019607843137],Name:"Brewer Sequential Blue-Purple (3)",NanColor:[.5333333333333333,.3372549019607843,.6549019607843137]},{IndexedColors:[.4980392156862745,.788235294117647,.4980392156862745,.7450980392156863,.6823529411764706,.8313725490196079,.9921568627450981,.7529411764705882,.5254901960784314,1,1,.6,.2196078431372549,.4235294117647059,.6901960784313725,.9411764705882353,.00784313725490196,.4980392156862745,.7490196078431373,.3568627450980392,.09019607843137255,.4,.4,.4],Name:"Brewer Qualitative Accent",NanColor:[.4,.4,.4]},{IndexedColors:[.1058823529411765,.6196078431372549,.4666666666666667,.8509803921568627,.3725490196078431,.00784313725490196,.4588235294117647,.4392156862745098,.7019607843137254,.9058823529411765,.1607843137254902,.5411764705882353,.4,.6509803921568628,.1176470588235294,.9019607843137255,.6705882352941176,.00784313725490196,.6509803921568628,.4627450980392157,.1137254901960784,.4,.4,.4],Name:"Brewer Qualitative Dark2",NanColor:[.4,.4,.4]},{IndexedColors:[.4,.7607843137254902,.6470588235294118,.9882352941176471,.5529411764705883,.3843137254901961,.5529411764705883,.6274509803921569,.796078431372549,.9058823529411765,.5411764705882353,.7647058823529411,.6509803921568628,.8470588235294118,.3294117647058823,1,.8509803921568627,.1843137254901961,.8980392156862745,.7686274509803922,.5803921568627451,.7019607843137254,.7019607843137254,.7019607843137254],Name:"Brewer Qualitative Set2",NanColor:[.7019607843137254,.7019607843137254,.7019607843137254]},{IndexedColors:[.7019607843137254,.8862745098039215,.803921568627451,.9921568627450981,.803921568627451,.6745098039215687,.796078431372549,.8352941176470589,.9098039215686274,.9568627450980393,.792156862745098,.8941176470588236,.9019607843137255,.9607843137254902,.788235294117647,1,.9490196078431372,.6823529411764706,.9450980392156862,.8862745098039215,.8,.8,.8,.8],Name:"Brewer Qualitative Pastel2",NanColor:[.8,.8,.8]},{IndexedColors:[.984313725490196,.7058823529411765,.6823529411764706,.7019607843137254,.803921568627451,.8901960784313725,.8,.9215686274509803,.7725490196078432,.8705882352941177,.796078431372549,.8941176470588236,.996078431372549,.8509803921568627,.6509803921568628,1,1,.8,.8980392156862745,.8470588235294118,.7411764705882353,.9921568627450981,.8549019607843137,.9254901960784314,.9490196078431372,.9490196078431372,.9490196078431372],Name:"Brewer Qualitative Pastel1",NanColor:[.9490196078431372,.9490196078431372,.9490196078431372]},{IndexedColors:[.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,1,1,.2,.6509803921568628,.3372549019607843,.1568627450980392,.9686274509803922,.5058823529411764,.7490196078431373,.6,.6,.6],Name:"Brewer Qualitative Set1",NanColor:[.6,.6,.6]},{IndexedColors:[.6509803921568628,.807843137254902,.8901960784313725,.1215686274509804,.4705882352941176,.7058823529411765,.6980392156862745,.8745098039215686,.5411764705882353,.2,.6274509803921569,.1725490196078431,.984313725490196,.6039215686274509,.6,.8901960784313725,.1019607843137255,.1098039215686274,.9921568627450981,.7490196078431373,.4352941176470588,1,.4980392156862745,0,.792156862745098,.6980392156862745,.8392156862745098,.4156862745098039,.2392156862745098,.6039215686274509,1,1,.6],Name:"Brewer Qualitative Paired",NanColor:[1,1,.6]},{IndexedColors:[.5529411764705883,.8274509803921568,.7803921568627451,1,1,.7019607843137254,.7450980392156863,.7294117647058823,.8549019607843137,.984313725490196,.5019607843137255,.4470588235294118,.5019607843137255,.6941176470588235,.8274509803921568,.9921568627450981,.7058823529411765,.3843137254901961,.7019607843137254,.8705882352941177,.4117647058823529,.9882352941176471,.803921568627451,.8980392156862745,.8509803921568627,.8509803921568627,.8509803921568627,.7372549019607844,.5019607843137255,.7411764705882353,.8,.9215686274509803,.7725490196078432,1,.9294117647058824,.4352941176470588],Name:"Brewer Qualitative Set3",NanColor:[1,.9294117647058824,.4352941176470588]},{IndexedColors:[1,0,0,1,.862745,0,0,.695201,0],Name:"Traffic Lights",NanColor:[.803922,0,.803922]},{IndexedColors:[.908659,.604013,.581857,1,.862745,0,0,.695201,0],Name:"Traffic Lights For Deuteranopes",NanColor:[.803922,0,.803922]},{IndexedColors:[.4196078431372549,0,.07058823529411765,.9019607843137255,.9411764705882353,.0196078431372549,.01568627450980392,.6196078431372549,.00784313725490196],Name:"Traffic Lights For Deuteranopes 2",NanColor:[.803922,0,.803922]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Muted Blue-Green",NanColor:[.25,0,0],RGBPoints:[0,.109804,.27451,.301961,.02,.129412,.309804,.341176,.05,.14902,.341176,.380392,.1,.188235,.403922,.458824,.15,.227451,.447059,.521569,.2,.290196,.494118,.588235,.25,.368627,.552941,.670588,.3,.458824,.619608,.74902,.35,.588235,.713725,.85098,.4,.72549,.815686,.941176,.45,.831373,.882353,.980392,.475,.909804,.933333,1,.5,.980392,.984314,1,.5,.996078,1,.94902,.5,1,1,.980392,.5,.980392,.984314,1,.525,.972549,.988235,.890196,.55,.917647,.960784,.835294,.6,.835294,.921569,.772549,.65,.768627,.901961,.737255,.7,.670588,.831373,.654902,.75,.576471,.760784,.584314,.8,.498039,.678431,.521569,.85,.392157,.560784,.427451,.9,.294118,.45098,.333333,.95,.211765,.34902,.254902,1,.152941,.278431,.196078]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Green-Blue Asymmetric Divergent (62Blbc)",NanColor:[.25,0,0],RGBPoints:[0,.121569,.2,.145098,.05,.196078,.301961,.223529,.1,.258824,.4,.278431,.2,.341176,.54902,.341176,.25,.419608,.619608,.376471,.3,.545098,.701961,.392157,.35,.643137,.780392,.403922,.4,.729412,.819608,.45098,.45,.811765,.870588,.521569,.5,.898039,.909804,.564706,.55,.941176,.92549,.686275,.6,.960784,.94902,.776471,.64,1,1,1,.65,.890196,.988235,.972549,.7,.721569,.894118,.901961,.75,.631373,.823529,.839216,.8,.517647,.662745,.701961,.85,.384314,.494118,.54902,.9,.298039,.360784,.45098,.95,.223529,.25098,.34902,.99,.156863,.172549,.25098,1,.137255,.137255,.188235]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Asymmtrical Earth Tones (6_21b)",NanColor:[.25,0,0],RGBPoints:[0,.141176,.14902,.2,.05,.215686,.258824,.321569,.1,.243137,.368627,.380392,.15,.27451,.439216,.4,.2,.32549,.501961,.384314,.25,.403922,.6,.419608,.3,.486275,.701961,.454902,.35,.556863,.74902,.494118,.4,.670588,.8,.545098,.5,.854902,.901961,.631373,.55,.92549,.941176,.694118,.6,.960784,.94902,.776471,.65,.988235,.968627,.909804,.7,.839216,.815686,.772549,.75,.701961,.662745,.615686,.8,.6,.529412,.478431,.85,.501961,.403922,.360784,.9,.439216,.313725,.290196,1,.301961,.164706,.176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Yellow 15",NanColor:[.25,0,0],RGBPoints:[0,1,1,.988235,.002,1,1,.988235,.05,.984314,.988235,.843137,.1,.988235,.988235,.741176,.15,.980392,.968627,.654902,.2,.980392,.945098,.576471,.25,.968627,.905882,.486275,.3,.968627,.862745,.388235,.35,.960784,.803922,.286275,.4,.94902,.741176,.219608,.45,.941176,.678431,.14902,.5,.929412,.607843,.094118,.55,.921569,.545098,.054902,.6,.909804,.486275,.035294,.65,.890196,.411765,.019608,.7,.8,.305882,0,.75,.760784,.239216,0,.8,.678431,.180392,.011765,.85,.6,.121569,.023529,.9,.501961,.054902,.031373,.95,.4,.039216,.058824,1,.301961,.047059,.090196]},{ColorSpace:"Diverging",Name:"Magma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002258,.001295,.018331,.007843,.003279,.002305,.023708,.011765,.004512,.00349,.029965,.015686,.00595,.004843,.03713,.019608,.007588,.006356,.044973,.023529,.009426,.008022,.052844,.027451,.011465,.009828,.06075,.031373,.013708,.011771,.068667,.035294,.016156,.01384,.076603,.039216,.018815,.016026,.084584,.043137,.021692,.01832,.09261,.047059,.024792,.020715,.100676,.05098,.028123,.023201,.108787,.054902,.031696,.025765,.116965,.058824,.03552,.028397,.125209,.062745,.039608,.03109,.133515,.066667,.04383,.03383,.141886,.070588,.048062,.036607,.150327,.07451,.05232,.039407,.158841,.078431,.056615,.04216,.167446,.082353,.060949,.044794,.176129,.086275,.06533,.047318,.184892,.090196,.069764,.049726,.193735,.094118,.074257,.052017,.20266,.098039,.078815,.054184,.211667,.101961,.083446,.056225,.220755,.105882,.088155,.058133,.229922,.109804,.092949,.059904,.239164,.113725,.097833,.061531,.248477,.117647,.102815,.06301,.257854,.121569,.107899,.064335,.267289,.12549,.113094,.065492,.276784,.129412,.118405,.066479,.286321,.133333,.123833,.067295,.295879,.137255,.12938,.067935,.305443,.141176,.135053,.068391,.315,.145098,.140858,.068654,.324538,.14902,.146785,.068738,.334011,.152941,.152839,.068637,.343404,.156863,.159018,.068354,.352688,.160784,.165308,.067911,.361816,.164706,.171713,.067305,.370771,.168627,.178212,.066576,.379497,.172549,.184801,.065732,.387973,.176471,.19146,.064818,.396152,.180392,.198177,.063862,.404009,.184314,.204935,.062907,.411514,.188235,.211718,.061992,.418647,.192157,.218512,.061158,.425392,.196078,.225302,.060445,.431742,.2,.232077,.059889,.437695,.203922,.238826,.059517,.443256,.207843,.245543,.059352,.448436,.211765,.25222,.059415,.453248,.215686,.258857,.059706,.45771,.219608,.265447,.060237,.46184,.223529,.271994,.060994,.46566,.227451,.278493,.061978,.46919,.231373,.284951,.063168,.472451,.235294,.291366,.064553,.475462,.239216,.29774,.066117,.478243,.243137,.304081,.067835,.480812,.247059,.310382,.069702,.483186,.25098,.316654,.07169,.48538,.254902,.322899,.073782,.487408,.258824,.329114,.075972,.489287,.262745,.335308,.078236,.491024,.266667,.341482,.080564,.492631,.270588,.347636,.082946,.494121,.27451,.353773,.085373,.495501,.278431,.359898,.087831,.496778,.282353,.366012,.090314,.49796,.286275,.372116,.092816,.499053,.290196,.378211,.095332,.500067,.294118,.384299,.097855,.501002,.298039,.390384,.100379,.501864,.301961,.396467,.102902,.502658,.305882,.402548,.10542,.503386,.309804,.408629,.10793,.504052,.313725,.414709,.110431,.504662,.317647,.420791,.11292,.505215,.321569,.426877,.115395,.505714,.32549,.432967,.117855,.50616,.329412,.439062,.120298,.506555,.333333,.445163,.122724,.506901,.337255,.451271,.125132,.507198,.341176,.457386,.127522,.507448,.345098,.463508,.129893,.507652,.34902,.46964,.132245,.507809,.352941,.47578,.134577,.507921,.356863,.481929,.136891,.507989,.360784,.488088,.139186,.508011,.364706,.494258,.141462,.507988,.368627,.500438,.143719,.50792,.372549,.506629,.145958,.507806,.376471,.512831,.148179,.507648,.380392,.519045,.150383,.507443,.384314,.52527,.152569,.507192,.388235,.531507,.154739,.506895,.392157,.537755,.156894,.506551,.396078,.544015,.159033,.506159,.4,.550287,.161158,.505719,.403922,.556571,.163269,.50523,.407843,.562866,.165368,.504692,.411765,.569172,.167454,.504105,.415686,.57549,.16953,.503466,.419608,.581819,.171596,.502777,.423529,.588158,.173652,.502035,.427451,.594508,.175701,.501241,.431373,.600868,.177743,.500394,.435294,.607238,.179779,.499492,.439216,.613617,.181811,.498536,.443137,.620005,.18384,.497524,.447059,.626401,.185867,.496456,.45098,.632805,.187893,.495332,.454902,.639216,.189921,.49415,.458824,.645633,.191952,.49291,.462745,.652056,.193986,.491611,.466667,.658483,.196027,.490253,.470588,.664915,.198075,.488836,.47451,.671349,.200133,.487358,.478431,.677786,.202203,.485819,.482353,.684224,.204286,.484219,.486275,.690661,.206384,.482558,.490196,.697098,.208501,.480835,.494118,.703532,.210638,.479049,.498039,.709962,.212797,.477201,.501961,.716387,.214982,.47529,.505882,.722805,.217194,.473316,.509804,.729216,.219437,.471279,.513725,.735616,.221713,.46918,.517647,.742004,.224025,.467018,.521569,.748378,.226377,.464794,.52549,.754737,.228772,.462509,.529412,.761077,.231214,.460162,.533333,.767398,.233705,.457755,.537255,.773695,.236249,.455289,.541176,.779968,.238851,.452765,.545098,.786212,.241514,.450184,.54902,.792427,.244242,.447543,.552941,.798608,.24704,.444848,.556863,.804752,.249911,.442102,.560784,.810855,.252861,.439305,.564706,.816914,.255895,.436461,.568627,.822926,.259016,.433573,.572549,.828886,.262229,.430644,.576471,.834791,.26554,.427671,.580392,.840636,.268953,.424666,.584314,.846416,.272473,.421631,.588235,.852126,.276106,.418573,.592157,.857763,.279857,.415496,.596078,.86332,.283729,.412403,.6,.868793,.287728,.409303,.603922,.874176,.291859,.406205,.607843,.879464,.296125,.403118,.611765,.884651,.30053,.400047,.615686,.889731,.305079,.397002,.619608,.8947,.309773,.393995,.623529,.899552,.314616,.391037,.627451,.904281,.31961,.388137,.631373,.908884,.324755,.385308,.635294,.913354,.330052,.382563,.639216,.917689,.3355,.379915,.643137,.921884,.341098,.377376,.647059,.925937,.346844,.374959,.65098,.929845,.352734,.372677,.654902,.933606,.358764,.370541,.658824,.937221,.364929,.368567,.662745,.940687,.371224,.366762,.666667,.944006,.377643,.365136,.670588,.94718,.384178,.363701,.67451,.95021,.39082,.362468,.678431,.953099,.397563,.361438,.682353,.955849,.4044,.360619,.686275,.958464,.411324,.360014,.690196,.960949,.418323,.35963,.694118,.96331,.42539,.359469,.698039,.965549,.432519,.359529,.701961,.967671,.439703,.35981,.705882,.96968,.446936,.360311,.709804,.971582,.45421,.36103,.713725,.973381,.46152,.361965,.717647,.975082,.468861,.363111,.721569,.97669,.476226,.364466,.72549,.97821,.483612,.366025,.729412,.979645,.491014,.367783,.733333,.981,.498428,.369734,.737255,.982279,.505851,.371874,.741176,.983485,.51328,.374198,.745098,.984622,.520713,.376698,.74902,.985693,.528148,.379371,.752941,.9867,.535582,.38221,.756863,.987646,.543015,.38521,.760784,.988533,.550446,.388365,.764706,.989363,.557873,.391671,.768627,.990138,.565296,.395122,.772549,.990871,.572706,.398714,.776471,.991558,.580107,.402441,.780392,.992196,.587502,.406299,.784314,.992785,.594891,.410283,.788235,.993326,.602275,.41439,.792157,.993834,.609644,.418613,.796078,.994309,.616999,.42295,.8,.994738,.62435,.427397,.803922,.995122,.631696,.431951,.807843,.99548,.639027,.436607,.811765,.99581,.646344,.441361,.815686,.996096,.653659,.446213,.819608,.996341,.660969,.45116,.823529,.99658,.668256,.456192,.827451,.996775,.675541,.461314,.831373,.996925,.682828,.466526,.835294,.997077,.690088,.471811,.839216,.997186,.697349,.477182,.843137,.997254,.704611,.482635,.847059,.997325,.711848,.488154,.85098,.997351,.719089,.493755,.854902,.997351,.726324,.499428,.858824,.997341,.733545,.505167,.862745,.997285,.740772,.510983,.866667,.997228,.747981,.516859,.870588,.997138,.75519,.522806,.87451,.997019,.762398,.528821,.878431,.996898,.769591,.534892,.882353,.996727,.776795,.541039,.886275,.996571,.783977,.547233,.890196,.996369,.791167,.553499,.894118,.996162,.798348,.55982,.898039,.995932,.805527,.566202,.901961,.99568,.812706,.572645,.905882,.995424,.819875,.57914,.909804,.995131,.827052,.585701,.913725,.994851,.834213,.592307,.917647,.994524,.841387,.598983,.921569,.994222,.84854,.605696,.92549,.993866,.855711,.612482,.929412,.993545,.862859,.619299,.933333,.99317,.870024,.626189,.937255,.992831,.877168,.633109,.941176,.99244,.88433,.640099,.945098,.992089,.89147,.647116,.94902,.991688,.898627,.654202,.952941,.991332,.905763,.661309,.956863,.99093,.912915,.668481,.960784,.99057,.920049,.675675,.964706,.990175,.927196,.682926,.968627,.989815,.934329,.690198,.972549,.989434,.94147,.697519,.976471,.989077,.948604,.704863,.980392,.988717,.955742,.712242,.984314,.988367,.962878,.719649,.988235,.988033,.970012,.727077,.992157,.987691,.977154,.734536,.996078,.987387,.984288,.742002,1,.987053,.991438,.749504]},{ColorSpace:"Diverging",Name:"Inferno (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002267,.00127,.01857,.007843,.003299,.002249,.024239,.011765,.004547,.003392,.030909,.015686,.006006,.004692,.038558,.019608,.007676,.006136,.046836,.023529,.009561,.007713,.055143,.027451,.011663,.009417,.06346,.031373,.013995,.011225,.071862,.035294,.016561,.013136,.080282,.039216,.019373,.015133,.088767,.043137,.022447,.017199,.097327,.047059,.025793,.019331,.10593,.05098,.029432,.021503,.114621,.054902,.033385,.023702,.123397,.058824,.037668,.025921,.132232,.062745,.042253,.028139,.141141,.066667,.046915,.030324,.150164,.070588,.051644,.032474,.159254,.07451,.056449,.034569,.168414,.078431,.06134,.03659,.177642,.082353,.066331,.038504,.186962,.086275,.071429,.040294,.196354,.090196,.076637,.041905,.205799,.094118,.081962,.043328,.215289,.098039,.087411,.044556,.224813,.101961,.09299,.045583,.234358,.105882,.098702,.046402,.243904,.109804,.104551,.047008,.25343,.113725,.110536,.047399,.262912,.117647,.116656,.047574,.272321,.121569,.122908,.047536,.281624,.12549,.129285,.047293,.290788,.129412,.135778,.046856,.299776,.133333,.142378,.046242,.308553,.137255,.149073,.045468,.317085,.141176,.15585,.044559,.325338,.145098,.162689,.043554,.333277,.14902,.169575,.042489,.340874,.152941,.176493,.041402,.348111,.156863,.183429,.040329,.354971,.160784,.190367,.039309,.361447,.164706,.197297,.0384,.367535,.168627,.204209,.037632,.373238,.172549,.211095,.03703,.378563,.176471,.217949,.036615,.383522,.180392,.224763,.036405,.388129,.184314,.231538,.036405,.3924,.188235,.238273,.036621,.396353,.192157,.244967,.037055,.400007,.196078,.25162,.037705,.403378,.2,.258234,.038571,.406485,.203922,.26481,.039647,.409345,.207843,.271347,.040922,.411976,.211765,.27785,.042353,.414392,.215686,.284321,.043933,.416608,.219608,.290763,.045644,.418637,.223529,.297178,.04747,.420491,.227451,.303568,.049396,.422182,.231373,.309935,.051407,.423721,.235294,.316282,.05349,.425116,.239216,.32261,.055634,.426377,.243137,.328921,.057827,.427511,.247059,.335217,.06006,.428524,.25098,.3415,.062325,.429425,.254902,.347771,.064616,.430217,.258824,.354032,.066925,.430906,.262745,.360284,.069247,.431497,.266667,.366529,.071579,.431994,.270588,.372768,.073915,.4324,.27451,.379001,.076253,.432719,.278431,.385228,.078591,.432955,.282353,.391453,.080927,.433109,.286275,.397674,.083257,.433183,.290196,.403894,.08558,.433179,.294118,.410113,.087896,.433098,.298039,.416331,.090203,.432943,.301961,.422549,.092501,.432714,.305882,.428768,.09479,.432412,.309804,.434987,.097069,.432039,.313725,.441207,.099338,.431594,.317647,.447428,.101597,.43108,.321569,.453651,.103848,.430498,.32549,.459875,.106089,.429846,.329412,.4661,.108322,.429125,.333333,.472328,.110547,.428334,.337255,.478558,.112764,.427475,.341176,.484789,.114974,.426548,.345098,.491022,.117179,.425552,.34902,.497257,.119379,.424488,.352941,.503493,.121575,.423356,.356863,.50973,.123769,.422156,.360784,.515967,.12596,.420887,.364706,.522206,.12815,.419549,.368627,.528444,.130341,.418142,.372549,.534683,.132534,.416667,.376471,.54092,.134729,.415123,.380392,.547157,.136929,.413511,.384314,.553392,.139134,.411829,.388235,.559624,.141346,.410078,.392157,.565854,.143567,.408258,.396078,.572081,.145797,.406369,.4,.578304,.148039,.404411,.403922,.584521,.150294,.402385,.407843,.590734,.152563,.40029,.411765,.59694,.154848,.398125,.415686,.603139,.157151,.395891,.419608,.60933,.159474,.393589,.423529,.615513,.161817,.391219,.427451,.621685,.164184,.388781,.431373,.627847,.166575,.386276,.435294,.633998,.168992,.383704,.439216,.640135,.171438,.381065,.443137,.64626,.173914,.378359,.447059,.652369,.176421,.375586,.45098,.658463,.178962,.372748,.454902,.66454,.181539,.369846,.458824,.670599,.184153,.366879,.462745,.676638,.186807,.363849,.466667,.682656,.189501,.360757,.470588,.688653,.192239,.357603,.47451,.694627,.195021,.354388,.478431,.700576,.197851,.351113,.482353,.7065,.200728,.347777,.486275,.712396,.203656,.344383,.490196,.718264,.206636,.340931,.494118,.724103,.20967,.337424,.498039,.729909,.212759,.333861,.501961,.735683,.215906,.330245,.505882,.741423,.219112,.326576,.509804,.747127,.222378,.322856,.513725,.752794,.225706,.319085,.517647,.758422,.229097,.315266,.521569,.76401,.232554,.311399,.52549,.769556,.236077,.307485,.529412,.775059,.239667,.303526,.533333,.780517,.243327,.299523,.537255,.785929,.247056,.295477,.541176,.791293,.250856,.29139,.545098,.796607,.254728,.287264,.54902,.801871,.258674,.283099,.552941,.807082,.262692,.278898,.556863,.812239,.266786,.274661,.560784,.817341,.270954,.27039,.564706,.822386,.275197,.266085,.568627,.827372,.279517,.26175,.572549,.832299,.283913,.257383,.576471,.837165,.288385,.252988,.580392,.841969,.292933,.248564,.584314,.846709,.297559,.244113,.588235,.851384,.30226,.239636,.592157,.855992,.307038,.235133,.596078,.860533,.311892,.230606,.6,.865006,.316822,.226055,.603922,.869409,.321827,.221482,.607843,.873741,.326906,.216886,.611765,.878001,.33206,.212268,.615686,.882188,.337287,.207628,.619608,.886302,.342586,.202968,.623529,.890341,.347957,.198286,.627451,.894305,.353399,.193584,.631373,.898192,.358911,.18886,.635294,.902003,.364492,.184116,.639216,.905735,.37014,.17935,.643137,.90939,.375856,.174563,.647059,.912966,.381636,.169755,.65098,.916462,.387481,.164924,.654902,.919879,.393389,.16007,.658824,.923215,.399359,.155193,.662745,.92647,.405389,.150292,.666667,.929644,.411479,.145367,.670588,.932737,.417627,.140417,.67451,.935747,.423831,.13544,.678431,.938675,.430091,.130438,.682353,.941521,.436405,.125409,.686275,.944285,.442772,.120354,.690196,.946965,.449191,.115272,.694118,.949562,.45566,.110164,.698039,.952075,.462178,.105031,.701961,.954506,.468744,.099874,.705882,.956852,.475356,.094695,.709804,.959114,.482014,.089499,.713725,.961293,.488716,.084289,.717647,.963387,.495462,.079073,.721569,.965397,.502249,.073859,.72549,.967322,.509078,.068659,.729412,.969163,.515946,.063488,.733333,.970919,.522853,.058367,.737255,.97259,.529798,.053324,.741176,.974176,.53678,.048392,.745098,.975677,.543798,.043618,.74902,.977092,.55085,.03905,.752941,.978422,.557937,.034931,.756863,.979666,.565057,.031409,.760784,.980824,.572209,.028508,.764706,.981895,.579392,.02625,.768627,.982881,.586606,.024661,.772549,.983779,.593849,.02377,.776471,.984591,.601122,.023606,.780392,.985315,.608422,.024202,.784314,.985952,.61575,.025592,.788235,.986502,.623105,.027814,.792157,.986964,.630485,.030908,.796078,.987337,.63789,.034916,.8,.987622,.64532,.039886,.803922,.987819,.652773,.045581,.807843,.987926,.66025,.05175,.811765,.987945,.667748,.058329,.815686,.987874,.675267,.065257,.819608,.987714,.682807,.072489,.823529,.987464,.690366,.07999,.827451,.987124,.697944,.087731,.831373,.986694,.70554,.095694,.835294,.986175,.713153,.103863,.839216,.985566,.720782,.112229,.843137,.984865,.728427,.120785,.847059,.984075,.736087,.129527,.85098,.983196,.743758,.138453,.854902,.982228,.751442,.147565,.858824,.981173,.759135,.156863,.862745,.980032,.766837,.166353,.866667,.978806,.774545,.176037,.870588,.977497,.782258,.185923,.87451,.976108,.789974,.196018,.878431,.974638,.797692,.206332,.882353,.973088,.805409,.216877,.886275,.971468,.813122,.227658,.890196,.969783,.820825,.238686,.894118,.968041,.828515,.249972,.898039,.966243,.836191,.261534,.901961,.964394,.843848,.273391,.905882,.962517,.851476,.285546,.909804,.960626,.859069,.29801,.913725,.95872,.866624,.31082,.917647,.956834,.874129,.323974,.921569,.954997,.881569,.337475,.92549,.953215,.888942,.351369,.929412,.951546,.896226,.365627,.933333,.950018,.903409,.380271,.937255,.948683,.910473,.395289,.941176,.947594,.917399,.410665,.945098,.946809,.924168,.426373,.94902,.946392,.930761,.442367,.952941,.946403,.937159,.458592,.956863,.946903,.943348,.47497,.960784,.947937,.949318,.491426,.964706,.949545,.955063,.50786,.968627,.95174,.960587,.524203,.972549,.954529,.965896,.540361,.976471,.957896,.971003,.556275,.980392,.961812,.975924,.571925,.984314,.966249,.980678,.587206,.988235,.971162,.985282,.602154,.992157,.976511,.989753,.61676,.996078,.982257,.994109,.631017,1,.988362,.998364,.644924]},{ColorSpace:"Diverging",Name:"Plasma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.050383,.029803,.527975,.003922,.063536,.028426,.533124,.007843,.075353,.027206,.538007,.011765,.086222,.026125,.542658,.015686,.096379,.025165,.547103,.019608,.10598,.024309,.551368,.023529,.115124,.023556,.555468,.027451,.123903,.022878,.559423,.031373,.132381,.022258,.56325,.035294,.140603,.021687,.566959,.039216,.148607,.021154,.570562,.043137,.156421,.020651,.574065,.047059,.16407,.020171,.577478,.05098,.171574,.019706,.580806,.054902,.17895,.019252,.584054,.058824,.186213,.018803,.587228,.062745,.193374,.018354,.59033,.066667,.200445,.017902,.593364,.070588,.207435,.017442,.596333,.07451,.21435,.016973,.599239,.078431,.221197,.016497,.602083,.082353,.227983,.016007,.604867,.086275,.234715,.015502,.607592,.090196,.241396,.014979,.610259,.094118,.248032,.014439,.612868,.098039,.254627,.013882,.615419,.101961,.261183,.013308,.617911,.105882,.267703,.012716,.620346,.109804,.274191,.012109,.622722,.113725,.280648,.011488,.625038,.117647,.287076,.010855,.627295,.121569,.293478,.010213,.62949,.12549,.299855,.009561,.631624,.129412,.30621,.008902,.633694,.133333,.312543,.008239,.6357,.137255,.318856,.007576,.63764,.141176,.32515,.006915,.639512,.145098,.331426,.006261,.641316,.14902,.337683,.005618,.643049,.152941,.343925,.004991,.64471,.156863,.35015,.004382,.646298,.160784,.356359,.003798,.64781,.164706,.362553,.003243,.649245,.168627,.368733,.002724,.650601,.172549,.374897,.002245,.651876,.176471,.381047,.001814,.653068,.180392,.387183,.001434,.654177,.184314,.393304,.001114,.655199,.188235,.399411,859e-6,.656133,.192157,.405503,678e-6,.656977,.196078,.41158,577e-6,.65773,.2,.417642,564e-6,.65839,.203922,.423689,646e-6,.658956,.207843,.429719,831e-6,.659425,.211765,.435734,.001127,.659797,.215686,.441732,.00154,.660069,.219608,.447714,.00208,.66024,.223529,.453677,.002755,.66031,.227451,.459623,.003574,.660277,.231373,.46555,.004545,.660139,.235294,.471457,.005678,.659897,.239216,.477344,.00698,.659549,.243137,.48321,.00846,.659095,.247059,.489055,.010127,.658534,.25098,.494877,.01199,.657865,.254902,.500678,.014055,.657088,.258824,.506454,.016333,.656202,.262745,.512206,.018833,.655209,.266667,.517933,.021563,.654109,.270588,.523633,.024532,.652901,.27451,.529306,.027747,.651586,.278431,.534952,.031217,.650165,.282353,.54057,.03495,.64864,.286275,.546157,.038954,.64701,.290196,.551715,.043136,.645277,.294118,.557243,.047331,.643443,.298039,.562738,.051545,.641509,.301961,.568201,.055778,.639477,.305882,.573632,.060028,.637349,.309804,.579029,.064296,.635126,.313725,.584391,.068579,.632812,.317647,.589719,.072878,.630408,.321569,.595011,.07719,.627917,.32549,.600266,.081516,.625342,.329412,.605485,.085854,.622686,.333333,.610667,.090204,.619951,.337255,.615812,.094564,.61714,.341176,.620919,.098934,.614257,.345098,.625987,.103312,.611305,.34902,.631017,.107699,.608287,.352941,.636008,.112092,.605205,.356863,.640959,.116492,.602065,.360784,.645872,.120898,.598867,.364706,.650746,.125309,.595617,.368627,.65558,.129725,.592317,.372549,.660374,.134144,.588971,.376471,.665129,.138566,.585582,.380392,.669845,.142992,.582154,.384314,.674522,.147419,.578688,.388235,.67916,.151848,.575189,.392157,.683758,.156278,.57166,.396078,.688318,.160709,.568103,.4,.69284,.165141,.564522,.403922,.697324,.169573,.560919,.407843,.701769,.174005,.557296,.411765,.706178,.178437,.553657,.415686,.710549,.182868,.550004,.419608,.714883,.187299,.546338,.423529,.719181,.191729,.542663,.427451,.723444,.196158,.538981,.431373,.72767,.200586,.535293,.435294,.731862,.205013,.531601,.439216,.736019,.209439,.527908,.443137,.740143,.213864,.524216,.447059,.744232,.218288,.520524,.45098,.748289,.222711,.516834,.454902,.752312,.227133,.513149,.458824,.756304,.231555,.509468,.462745,.760264,.235976,.505794,.466667,.764193,.240396,.502126,.470588,.76809,.244817,.498465,.47451,.771958,.249237,.494813,.478431,.775796,.253658,.491171,.482353,.779604,.258078,.487539,.486275,.783383,.2625,.483918,.490196,.787133,.266922,.480307,.494118,.790855,.271345,.476706,.498039,.794549,.27577,.473117,.501961,.798216,.280197,.469538,.505882,.801855,.284626,.465971,.509804,.805467,.289057,.462415,.513725,.809052,.293491,.45887,.517647,.812612,.297928,.455338,.521569,.816144,.302368,.451816,.52549,.819651,.306812,.448306,.529412,.823132,.311261,.444806,.533333,.826588,.315714,.441316,.537255,.830018,.320172,.437836,.541176,.833422,.324635,.434366,.545098,.836801,.329105,.430905,.54902,.840155,.33358,.427455,.552941,.843484,.338062,.424013,.556863,.846788,.342551,.420579,.560784,.850066,.347048,.417153,.564706,.853319,.351553,.413734,.568627,.856547,.356066,.410322,.572549,.85975,.360588,.406917,.576471,.862927,.365119,.403519,.580392,.866078,.36966,.400126,.584314,.869203,.374212,.396738,.588235,.872303,.378774,.393355,.592157,.875376,.383347,.389976,.596078,.878423,.387932,.3866,.6,.881443,.392529,.383229,.603922,.884436,.397139,.37986,.607843,.887402,.401762,.376494,.611765,.89034,.406398,.37313,.615686,.89325,.411048,.369768,.619608,.896131,.415712,.366407,.623529,.898984,.420392,.363047,.627451,.901807,.425087,.359688,.631373,.904601,.429797,.356329,.635294,.907365,.434524,.35297,.639216,.910098,.439268,.34961,.643137,.9128,.444029,.346251,.647059,.915471,.448807,.34289,.65098,.918109,.453603,.339529,.654902,.920714,.458417,.336166,.658824,.923287,.463251,.332801,.662745,.925825,.468103,.329435,.666667,.928329,.472975,.326067,.670588,.930798,.477867,.322697,.67451,.933232,.48278,.319325,.678431,.93563,.487712,.315952,.682353,.93799,.492667,.312575,.686275,.940313,.497642,.309197,.690196,.942598,.502639,.305816,.694118,.944844,.507658,.302433,.698039,.947051,.512699,.299049,.701961,.949217,.517763,.295662,.705882,.951344,.52285,.292275,.709804,.953428,.52796,.288883,.713725,.95547,.533093,.28549,.717647,.957469,.53825,.282096,.721569,.959424,.543431,.278701,.72549,.961336,.548636,.275305,.729412,.963203,.553865,.271909,.733333,.965024,.559118,.268513,.737255,.966798,.564396,.265118,.741176,.968526,.5697,.261721,.745098,.970205,.575028,.258325,.74902,.971835,.580382,.254931,.752941,.973416,.585761,.25154,.756863,.974947,.591165,.248151,.760784,.976428,.596595,.244767,.764706,.977856,.602051,.241387,.768627,.979233,.607532,.238013,.772549,.980556,.613039,.234646,.776471,.981826,.618572,.231287,.780392,.983041,.624131,.227937,.784314,.984199,.629718,.224595,.788235,.985301,.63533,.221265,.792157,.986345,.640969,.217948,.796078,.987332,.646633,.214648,.8,.98826,.652325,.211364,.803922,.989128,.658043,.2081,.807843,.989935,.663787,.204859,.811765,.990681,.669558,.201642,.815686,.991365,.675355,.198453,.819608,.991985,.681179,.195295,.823529,.992541,.68703,.19217,.827451,.993032,.692907,.189084,.831373,.993456,.69881,.186041,.835294,.993814,.704741,.183043,.839216,.994103,.710698,.180097,.843137,.994324,.716681,.177208,.847059,.994474,.722691,.174381,.85098,.994553,.728728,.171622,.854902,.994561,.734791,.168938,.858824,.994495,.74088,.166335,.862745,.994355,.746995,.163821,.866667,.994141,.753137,.161404,.870588,.993851,.759304,.159092,.87451,.993482,.765499,.156891,.878431,.993033,.77172,.154808,.882353,.992505,.777967,.152855,.886275,.991897,.784239,.151042,.890196,.991209,.790537,.149377,.894118,.990439,.796859,.14787,.898039,.989587,.803205,.146529,.901961,.988648,.809579,.145357,.905882,.987621,.815978,.144363,.909804,.986509,.822401,.143557,.913725,.985314,.828846,.142945,.917647,.984031,.835315,.142528,.921569,.982653,.841812,.142303,.92549,.98119,.848329,.142279,.929412,.979644,.854866,.142453,.933333,.977995,.861432,.142808,.937255,.976265,.868016,.143351,.941176,.974443,.874622,.144061,.945098,.97253,.88125,.144923,.94902,.970533,.887896,.145919,.952941,.968443,.894564,.147014,.956863,.966271,.901249,.14818,.960784,.964021,.90795,.14937,.964706,.961681,.914672,.15052,.968627,.959276,.921407,.151566,.972549,.956808,.928152,.152409,.976471,.954287,.934908,.152921,.980392,.951726,.941671,.152925,.984314,.949151,.948435,.152178,.988235,.946602,.95519,.150328,.992157,.944152,.961916,.146861,.996078,.941896,.96859,.140956,1,.940015,.975158,.131326]},{ColorSpace:"Diverging",Name:"Viridis (matplotlib)",NanColor:[1,0,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Eric Firing",RGBPoints:[0,.267004,.004874,.329415,.003922,.26851,.009605,.335427,.007843,.269944,.014625,.341379,.011765,.271305,.019942,.347269,.015686,.272594,.025563,.353093,.019608,.273809,.031497,.358853,.023529,.274952,.037752,.364543,.027451,.276022,.044167,.370164,.031373,.277018,.050344,.375715,.035294,.277941,.056324,.381191,.039216,.278791,.062145,.386592,.043137,.279566,.067836,.391917,.047059,.280267,.073417,.397163,.05098,.280894,.078907,.402329,.054902,.281446,.08432,.407414,.058824,.281924,.089666,.412415,.062745,.282327,.094955,.417331,.066667,.282656,.100196,.42216,.070588,.28291,.105393,.426902,.07451,.283091,.110553,.431554,.078431,.283197,.11568,.436115,.082353,.283229,.120777,.440584,.086275,.283187,.125848,.44496,.090196,.283072,.130895,.449241,.094118,.282884,.13592,.453427,.098039,.282623,.140926,.457517,.101961,.28229,.145912,.46151,.105882,.281887,.150881,.465405,.109804,.281412,.155834,.469201,.113725,.280868,.160771,.472899,.117647,.280255,.165693,.476498,.121569,.279574,.170599,.479997,.12549,.278826,.17549,.483397,.129412,.278012,.180367,.486697,.133333,.277134,.185228,.489898,.137255,.276194,.190074,.493001,.141176,.275191,.194905,.496005,.145098,.274128,.199721,.498911,.14902,.273006,.20452,.501721,.152941,.271828,.209303,.504434,.156863,.270595,.214069,.507052,.160784,.269308,.218818,.509577,.164706,.267968,.223549,.512008,.168627,.26658,.228262,.514349,.172549,.265145,.232956,.516599,.176471,.263663,.237631,.518762,.180392,.262138,.242286,.520837,.184314,.260571,.246922,.522828,.188235,.258965,.251537,.524736,.192157,.257322,.25613,.526563,.196078,.255645,.260703,.528312,.2,.253935,.265254,.529983,.203922,.252194,.269783,.531579,.207843,.250425,.27429,.533103,.211765,.248629,.278775,.534556,.215686,.246811,.283237,.535941,.219608,.244972,.287675,.53726,.223529,.243113,.292092,.538516,.227451,.241237,.296485,.539709,.231373,.239346,.300855,.540844,.235294,.237441,.305202,.541921,.239216,.235526,.309527,.542944,.243137,.233603,.313828,.543914,.247059,.231674,.318106,.544834,.25098,.229739,.322361,.545706,.254902,.227802,.326594,.546532,.258824,.225863,.330805,.547314,.262745,.223925,.334994,.548053,.266667,.221989,.339161,.548752,.270588,.220057,.343307,.549413,.27451,.21813,.347432,.550038,.278431,.21621,.351535,.550627,.282353,.214298,.355619,.551184,.286275,.212395,.359683,.55171,.290196,.210503,.363727,.552206,.294118,.208623,.367752,.552675,.298039,.206756,.371758,.553117,.301961,.204903,.375746,.553533,.305882,.203063,.379716,.553925,.309804,.201239,.38367,.554294,.313725,.19943,.387607,.554642,.317647,.197636,.391528,.554969,.321569,.19586,.395433,.555276,.32549,.1941,.399323,.555565,.329412,.192357,.403199,.555836,.333333,.190631,.407061,.556089,.337255,.188923,.41091,.556326,.341176,.187231,.414746,.556547,.345098,.185556,.41857,.556753,.34902,.183898,.422383,.556944,.352941,.182256,.426184,.55712,.356863,.180629,.429975,.557282,.360784,.179019,.433756,.55743,.364706,.177423,.437527,.557565,.368627,.175841,.44129,.557685,.372549,.174274,.445044,.557792,.376471,.172719,.448791,.557885,.380392,.171176,.45253,.557965,.384314,.169646,.456262,.55803,.388235,.168126,.459988,.558082,.392157,.166617,.463708,.558119,.396078,.165117,.467423,.558141,.4,.163625,.471133,.558148,.403922,.162142,.474838,.55814,.407843,.160665,.47854,.558115,.411765,.159194,.482237,.558073,.415686,.157729,.485932,.558013,.419608,.15627,.489624,.557936,.423529,.154815,.493313,.55784,.427451,.153364,.497,.557724,.431373,.151918,.500685,.557587,.435294,.150476,.504369,.55743,.439216,.149039,.508051,.55725,.443137,.147607,.511733,.557049,.447059,.14618,.515413,.556823,.45098,.144759,.519093,.556572,.454902,.143343,.522773,.556295,.458824,.141935,.526453,.555991,.462745,.140536,.530132,.555659,.466667,.139147,.533812,.555298,.470588,.13777,.537492,.554906,.47451,.136408,.541173,.554483,.478431,.135066,.544853,.554029,.482353,.133743,.548535,.553541,.486275,.132444,.552216,.553018,.490196,.131172,.555899,.552459,.494118,.129933,.559582,.551864,.498039,.128729,.563265,.551229,.501961,.127568,.566949,.550556,.505882,.126453,.570633,.549841,.509804,.125394,.574318,.549086,.513725,.124395,.578002,.548287,.517647,.123463,.581687,.547445,.521569,.122606,.585371,.546557,.52549,.121831,.589055,.545623,.529412,.121148,.592739,.544641,.533333,.120565,.596422,.543611,.537255,.120092,.600104,.54253,.541176,.119738,.603785,.5414,.545098,.119512,.607464,.540218,.54902,.119423,.611141,.538982,.552941,.119483,.614817,.537692,.556863,.119699,.61849,.536347,.560784,.120081,.622161,.534946,.564706,.120638,.625828,.533488,.568627,.12138,.629492,.531973,.572549,.122312,.633153,.530398,.576471,.123444,.636809,.528763,.580392,.12478,.640461,.527068,.584314,.126326,.644107,.525311,.588235,.128087,.647749,.523491,.592157,.130067,.651384,.521608,.596078,.132268,.655014,.519661,.6,.134692,.658636,.517649,.603922,.137339,.662252,.515571,.607843,.14021,.665859,.513427,.611765,.143303,.669459,.511215,.615686,.146616,.67305,.508936,.619608,.150148,.676631,.506589,.623529,.153894,.680203,.504172,.627451,.157851,.683765,.501686,.631373,.162016,.687316,.499129,.635294,.166383,.690856,.496502,.639216,.170948,.694384,.493803,.643137,.175707,.6979,.491033,.647059,.180653,.701402,.488189,.65098,.185783,.704891,.485273,.654902,.19109,.708366,.482284,.658824,.196571,.711827,.479221,.662745,.202219,.715272,.476084,.666667,.20803,.718701,.472873,.670588,.214,.722114,.469588,.67451,.220124,.725509,.466226,.678431,.226397,.728888,.462789,.682353,.232815,.732247,.459277,.686275,.239374,.735588,.455688,.690196,.24607,.73891,.452024,.694118,.252899,.742211,.448284,.698039,.259857,.745492,.444467,.701961,.266941,.748751,.440573,.705882,.274149,.751988,.436601,.709804,.281477,.755203,.432552,.713725,.288921,.758394,.428426,.717647,.296479,.761561,.424223,.721569,.304148,.764704,.419943,.72549,.311925,.767822,.415586,.729412,.319809,.770914,.411152,.733333,.327796,.77398,.40664,.737255,.335885,.777018,.402049,.741176,.344074,.780029,.397381,.745098,.35236,.783011,.392636,.74902,.360741,.785964,.387814,.752941,.369214,.788888,.382914,.756863,.377779,.791781,.377939,.760784,.386433,.794644,.372886,.764706,.395174,.797475,.367757,.768627,.404001,.800275,.362552,.772549,.412913,.803041,.357269,.776471,.421908,.805774,.35191,.780392,.430983,.808473,.346476,.784314,.440137,.811138,.340967,.788235,.449368,.813768,.335384,.792157,.458674,.816363,.329727,.796078,.468053,.818921,.323998,.8,.477504,.821444,.318195,.803922,.487026,.823929,.312321,.807843,.496615,.826376,.306377,.811765,.506271,.828786,.300362,.815686,.515992,.831158,.294279,.819608,.525776,.833491,.288127,.823529,.535621,.835785,.281908,.827451,.545524,.838039,.275626,.831373,.555484,.840254,.269281,.835294,.565498,.84243,.262877,.839216,.575563,.844566,.256415,.843137,.585678,.846661,.249897,.847059,.595839,.848717,.243329,.85098,.606045,.850733,.236712,.854902,.616293,.852709,.230052,.858824,.626579,.854645,.223353,.862745,.636902,.856542,.21662,.866667,.647257,.8584,.209861,.870588,.657642,.860219,.203082,.87451,.668054,.861999,.196293,.878431,.678489,.863742,.189503,.882353,.688944,.865448,.182725,.886275,.699415,.867117,.175971,.890196,.709898,.868751,.169257,.894118,.720391,.87035,.162603,.898039,.730889,.871916,.156029,.901961,.741388,.873449,.149561,.905882,.751884,.874951,.143228,.909804,.762373,.876424,.137064,.913725,.772852,.877868,.131109,.917647,.783315,.879285,.125405,.921569,.79376,.880678,.120005,.92549,.804182,.882046,.114965,.929412,.814576,.883393,.110347,.933333,.82494,.88472,.106217,.937255,.83527,.886029,.102646,.941176,.845561,.887322,.099702,.945098,.85581,.888601,.097452,.94902,.866013,.889868,.095953,.952941,.876168,.891125,.09525,.956863,.886271,.892374,.095374,.960784,.89632,.893616,.096335,.964706,.906311,.894855,.098125,.968627,.916242,.896091,.100717,.972549,.926106,.89733,.104071,.976471,.935904,.89857,.108131,.980392,.945636,.899815,.112838,.984314,.9553,.901065,.118128,.988235,.964894,.902323,.123941,.992157,.974417,.90359,.130215,.996078,.983868,.904867,.136897,1,.993248,.906157,.143936]},{ShowIndexedColorActiveValues:1,IndexedColors:[.07,.5,.7,1,1,1,.85,1,1,.8,.5,1,.76,1,0,1,.71,.71,.5,.5,.5,.05,.05,1,1,.05,.05,.7,1,1,.7,.89,.96,.67,.36,.95,.54,1,0,.75,.65,.65,.5,.6,.6,1,.5,0,1,1,.19,.12,.94,.12,.5,.82,.89,.56,.25,.83,.24,1,0,.9,.9,.9,.75,.76,.78,.65,.65,.67,.54,.6,.78,.61,.48,.78,.5,.48,.78,.44,.48,.78,.36,.48,.76,1,.48,.38,.49,.5,.69,.76,.56,.56,.4,.56,.56,.74,.5,.89,1,.63,0,.65,.16,.16,.36,.72,.82,.44,.18,.69,0,1,0,.58,1,1,.58,.88,.88,.45,.76,.79,.33,.71,.71,.23,.62,.62,.14,.56,.56,.04,.49,.55,0,.41,.52,.88,.88,1,1,.85,.56,.65,.46,.45,.4,.5,.5,.62,.39,.71,.83,.48,0,.58,0,.58,.26,.62,.69,.34,.09,.56,0,.79,0,.44,.83,1,1,1,.78,.85,1,.78,.78,1,.78,.64,1,.78,.56,1,.78,.38,1,.78,.27,1,.78,.19,1,.78,.12,1,.78,0,1,.61,0,.9,.46,0,.83,.32,0,.75,.22,0,.67,.14,.3,.76,1,.3,.65,1,.13,.58,.84,.15,.49,.67,.15,.4,.59,.09,.33,.53,.96,.93,.82,.8,.82,.12,.71,.71,.76,.65,.33,.3,.34,.35,.38,.62,.31,.71,.67,.36,0,.46,.31,.27,.26,.51,.59,.26,0,.4,0,.49,0,.44,.67,.98,0,.73,1,0,.63,1,0,.56,1,0,.5,1,0,.42,1,.33,.36,.95,.47,.36,.89,.54,.31,.89,.63,.21,.83,.7,.12,.83,.7,.12,.73,.7,.05,.65,.74,.05,.53,.78,0,.4,.8,0,.35,.82,0,.31,.85,0,.27,.88,0,.22,.9,0,.18,.91,0,.15,.92,0,.14,.93,0,.13,.94,0,.12,.95,0,.11,.96,0,.1,.97,0,.09,.98,0,.08,.99,0,.07,1,0,.06],Annotations:[0,"Xx",1,"H",2,"He",3,"Li",4,"Be",5,"B",6,"C",7,"N",8,"O",9,"F",10,"Ne",11,"Na",12,"Mg",13,"Al",14,"Si",15,"P",16,"S",17,"Cl",18,"Ar",19,"K",20,"Ca",21,"Sc",22,"Ti",23,"V",24,"Cr",25,"Mn",26,"Fe",27,"Co",28,"Ni",29,"Cu",30,"Zn",31,"Ga",32,"Ge",33,"As",34,"Se",35,"Br",36,"Kr",37,"Rb",38,"Sr",39,"Y",40,"Zr",41,"Nb",42,"Mo",43,"Tc",44,"Ru",45,"Rh",46,"Pd",47,"Ag",48,"Cd",49,"In",50,"Sn",51,"Sb",52,"Te",53,"I",54,"Xe",55,"Cs",56,"Ba",57,"La",58,"Ce",59,"Pr",60,"Nd",61,"Pm",62,"Sm",63,"Eu",64,"Gd",65,"Tb",66,"Dy",67,"Ho",68,"Er",69,"Tm",70,"Yb",71,"Lu",72,"Hf",73,"Ta",74,"W",75,"Re",76,"Os",77,"Ir",78,"Pt",79,"Au",80,"Hg",81,"Tl",82,"Pb",83,"Bi",84,"Po",85,"At",86,"Rn",87,"Fr",88,"Ra",89,"Ac",90,"Th",91,"Pa",92,"U",93,"Np",94,"Pu",95,"Am",96,"Cm",97,"Bk",98,"Cf",99,"Es",100,"Fm",101,"Md",102,"No",103,"Lr",104,"Rf",105,"Db",106,"Sg",107,"Bh",108,"Hs",109,"Mt",110,"Ds",111,"Rg",112,"Cn",113,"Uut",114,"Uuq",115,"Uup",116,"Uuh",117,"Uus",118,"Uuo"],Name:"BlueObeliskElements"}];const er=Object.create(null);l8.filter(t=>t.RGBPoints).filter(t=>t.ColorSpace!=="CIELAB").forEach(t=>{er[t.Name]=t});const tr=Object.keys(er);tr.sort();function u8(t){return er[t]}function f8(t){!t.RGBPoints||t.ColorSpace==="CIELAB"||(er[t.Name]||(tr.push(t.Name),tr.sort()),er[t.Name]=t)}function g8(t){const e=tr.indexOf(t);e>-1&&tr.splice(e,1),delete er[t]}var zr={addPreset:f8,removePresetByName:g8,getPresetByName:u8,rgbPresetNames:tr};function su(t,e,n){return Math.abs(t-e)<=n}function h8(t,e,n=1e-5){if(t.length!==e.length)return!1;for(let r=0;r0&&typeof t[0]=="number"}function Oe(t,e,n=1e-5){return typeof t!=typeof e||t===null||e===null?!1:Jo(t)&&Jo(e)?su(t,e,n):Qo(t)&&Qo(e)?h8(t,e,n):!1}const ou=t=>typeof t=="number"?-t:t!=null&&t.map?t.map(ou):!t,Is=t=>typeof t=="number"?Math.abs(t):t!=null&&t.map?t.map(Is):t,cu=(t,e,n=void 0)=>Oe(t,ou(e),n),d8=(t,e,n=void 0)=>Oe(Is(t),Is(e),n);function lu(t){return Array.isArray(t)?lu(t[0]):isFinite(t)&&!isNaN(t)}const U0=new Map;function p8(t){t.name=t.name||t.Name,U0.set(t.name,t)}function $r(t){return U0.get(t)}function uu(){return Array.from(U0.keys())}function k0(t,e){const n=zr.rgbPresetNames.map(o=>zr.getPresetByName(o)),r=uu().map(o=>$r(o)),a=n.concat(r).find(o=>{const{RGBPoints:c}=o;if(c.length!==t.length)return!1;for(let l=0;l0)return a}return null}function B0(t){const e=t.getProperty().getScalarOpacity(0);if(!e)return 1;const n=e.getDataPointer();if(!n||n.length===0)return 1;let r=0;for(let i=1;ir&&(r=n[i]);return r}var v8=Object.freeze({__proto__:null,findMatchingColormap:k0,getColormap:$r,getColormapNames:uu,getMaxOpacity:B0,getThresholdValue:G0,registerColormap:p8,setColorMapTransferFunctionForVolumeActor:m8,updateOpacity:fu,updateThreshold:gu});function Lr(t){if(!t)return;const e=t.getSize();for(let n=0;ne-n/4*Math.log((1-t)/t);function A0(t,e){const n=Math.abs(e-t)+1,r=(t+e+1)/2;return{windowWidth:n,windowCenter:r}}function Nr(t,e,n=Ae.LINEAR){if(n===Ae.LINEAR)return{lower:e-.5-(t-1)/2,upper:e-.5+(t-1)/2};if(n===Ae.LINEAR_EXACT)return{lower:e-t/2,upper:e+t/2};if(n===Ae.SAMPLED_SIGMOID){const r=Ls(.01,e,t),i=Ls(.99,e,t);return{lower:r,upper:i}}else throw new Error("Invalid VOI LUT function")}var y8=Object.freeze({__proto__:null,toLowHighRange:Nr,toWindowLevel:A0});function W0(t,e=1024){const{windowWidth:n,windowCenter:r}=A0(t.lower,t.upper),a=Array.from({length:e},(o,c)=>(c+1)/(e+2)).flatMap(o=>[Ls(o,r,n),o,o,o,.5,0]),s=ln.newInstance();return s.buildFunctionFromArray(ie.newInstance({values:a,numberOfComponents:6})),s}function ba(t,e){return t.worldToIndex(e).map(Math.round)}function Fi(t,e){return t.worldToIndex(e)}function oa(t){const e=t.getSize(),n=[];for(let r=0;r{t.addRGBPoint(...n)}))}var T8=Object.freeze({__proto__:null,getTransferFunctionNodes:oa,setTransferFunctionNodes:Fa});const{InterpolationType:Mr,OpacityMode:C8}=D2,{vtkErrorMacro:Xa}=M,_i=4;function x8(t,e){e.classHierarchy.push("vtkVolumeProperty"),t.getMTime=()=>{let i=e.mtime,a;for(let s=0;s<_i;s++)e.componentData[s].colorChannels===1?e.componentData[s].grayTransferFunction&&(a=e.componentData[s].grayTransferFunction.getMTime(),i=i>a?i:a):e.componentData[s].colorChannels===3&&e.componentData[s].rGBTransferFunction&&(a=e.componentData[s].rGBTransferFunction.getMTime(),i=i>a?i:a),e.componentData[s].scalarOpacity&&(a=e.componentData[s].scalarOpacity.getMTime(),i=i>a?i:a),e.componentData[s].gradientOpacity&&(e.componentData[s].disableGradientOpacity||(a=e.componentData[s].gradientOpacity.getMTime(),i=i>a?i:a));return i},t.getColorChannels=i=>i<0||i>3?(Xa("Bad index - must be between 0 and 3"),0):e.componentData[i].colorChannels,t.setGrayTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,s=!1;return e.componentData[i].grayTransferFunction!==a&&(e.componentData[i].grayTransferFunction=a,s=!0),e.componentData[i].colorChannels!==1&&(e.componentData[i].colorChannels=1,s=!0),s&&t.modified(),s},t.getGrayTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].grayTransferFunction===null&&(e.componentData[i].grayTransferFunction=Qn.newInstance(),e.componentData[i].grayTransferFunction.addPoint(0,0),e.componentData[i].grayTransferFunction.addPoint(1024,1),e.componentData[i].colorChannels!==1&&(e.componentData[i].colorChannels=1),t.modified()),e.componentData[i].grayTransferFunction},t.setRGBTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,s=!1;return e.componentData[i].rGBTransferFunction!==a&&(e.componentData[i].rGBTransferFunction=a,s=!0),e.componentData[i].colorChannels!==3&&(e.componentData[i].colorChannels=3,s=!0),s&&t.modified(),s},t.getRGBTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].rGBTransferFunction===null&&(e.componentData[i].rGBTransferFunction=ln.newInstance(),e.componentData[i].rGBTransferFunction.addRGBPoint(0,0,0,0),e.componentData[i].rGBTransferFunction.addRGBPoint(1024,1,1,1),e.componentData[i].colorChannels!==3&&(e.componentData[i].colorChannels=3),t.modified()),e.componentData[i].rGBTransferFunction},t.setScalarOpacity=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return e.componentData[i].scalarOpacity!==a?(e.componentData[i].scalarOpacity=a,t.modified(),!0):!1},t.getScalarOpacity=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].scalarOpacity===null&&(e.componentData[i].scalarOpacity=Qn.newInstance(),e.componentData[i].scalarOpacity.addPoint(0,1),e.componentData[i].scalarOpacity.addPoint(1024,1),t.modified()),e.componentData[i].scalarOpacity},t.setComponentWeight=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(i<0||i>=_i)return Xa("Invalid index"),!1;const s=Math.min(1,Math.max(0,a));return e.componentData[i].componentWeight!==s?(e.componentData[i].componentWeight=s,t.modified(),!0):!1},t.getComponentWeight=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return i<0||i>=_i?(Xa("Invalid index"),0):e.componentData[i].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Mr.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Mr.LINEAR),t.setInterpolationTypeToFastLinear=()=>t.setInterpolationType(Mr.FAST_LINEAR),t.getInterpolationTypeAsString=()=>M.enumToString(Mr,e.interpolationType),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const a=M.capitalize(i);t[`set${a}`]=(s,o)=>e.componentData[s][`${i}`]!==o?(e.componentData[s][`${i}`]=o,t.modified(),!0):!1}),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const a=M.capitalize(i);t[`get${a}`]=s=>e.componentData[s][`${i}`]})}const w8={colorMixPreset:null,independentComponents:!0,interpolationType:Mr.FAST_LINEAR,shade:!1,ambient:.1,diffuse:.7,specular:.2,specularPower:10,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function S8(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,w8,n),M.obj(t,e),!e.componentData){e.componentData=[];for(let r=0;r<_i;++r)e.componentData.push({colorChannels:1,grayTransferFunction:null,rGBTransferFunction:null,scalarOpacity:null,scalarOpacityUnitDistance:1,opacityMode:C8.FRACTIONAL,gradientOpacityMinimumValue:0,gradientOpacityMinimumOpacity:0,gradientOpacityMaximumValue:1,gradientOpacityMaximumOpacity:1,useGradientOpacity:!1,componentWeight:1,forceNearestInterpolation:!1})}M.setGet(t,e,["colorMixPreset","independentComponents","interpolationType","shade","ambient","diffuse","specular","specularPower","useLabelOutline","labelOutlineOpacity"]),M.setGetArray(t,e,["labelOutlineThickness"]),x8(t,e)}const M8=M.newInstance(S8,"vtkVolumeProperty");var E8={newInstance:M8,...D2};const{vtkDebugMacro:R8}=M;function O8(t,e){e.classHierarchy.push("vtkVolume"),t.getVolumes=()=>t,t.makeProperty=E8.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const n=e.mapper.getBounds();if(!n||n.length!==6)return n;if(n[0]>n[1])return e.mapperBounds=n.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),n;const r=i=>i[0].map((a,s)=>i.map(o=>o[s]));if(!e.mapperBounds||!r([n,e.mapperBounds]).reduce((i,a)=>i&&a[0]===a[1],!0)||t.getMTime()>e.boundsMTime.getMTime()){R8("Recomputing bounds..."),e.mapperBounds=n.map(s=>s);const i=[];_e.getCorners(n,i),t.computeMatrix();const a=new Float64Array(16);fe(a,e.matrix),i.forEach(s=>ue(s,s,a)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((s,o)=>o%2===0?i.reduce((c,l)=>c>l[o/2]?l[o/2]:c,s):i.reduce((c,l)=>c{let n=e.mtime;if(e.property!==null){const r=e.property.getMTime();n=r>n?r:n}return n},t.getRedrawMTime=()=>{let n=e.mtime;if(e.mapper!==null){let r=e.mapper.getMTime();n=r>n?r:n,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),r=e.mapper.getInput().getMTime(),n=r>n?r:n)}return n}}const D8={mapper:null,property:null,bounds:[1,-1,1,-1,1,-1]};function hu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,D8,n),K2.extend(t,e,n),e.boundsMTime={},M.obj(e.boundsMTime),M.set(t,e,["property"]),M.setGet(t,e,["mapper"]),M.getArray(t,e,["bounds"],6),O8(t,e)}const V8=M.newInstance(hu,"vtkVolume");var I8={newInstance:V8,extend:hu};const{vtkErrorMacro:L8}=M;class N8{constructor(){this.segmentMapping={},this.segments=[null],this.faces=[]}addSegment(e){const n=e[0],r=e[e.length-1];if(n===r||e.length<2)return;const i=this.segmentMapping[n],a=this.segmentMapping[r];if(i!==void 0&&a!==void 0)if(Math.abs(i)===Math.abs(a)){const s=i0)for(let c=1;c0){const s=this.segments[i];for(let o=1;o0){const s=this.segments[a];for(let o=1;o{const i=n[0];if(!i){L8("Invalid or missing input");return}const a=sn.newInstance();a.shallowCopy(i);const s=new N8,o=i.getLines().getData();let c=0;for(;c2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,F8,n),M.obj(t,e),M.algo(t,e,1,1),b8(t,e)}const _8=M.newInstance(du,"vtkClosedPolyLineToSurfaceFilter");var U8={newInstance:_8,extend:du};const{vtkErrorMacro:ec}=Lt;function k8(t){const e=t.getPolys().getData(),n=t.getStrips().getData(),r={cellSize:0,cell:[],done:!1,polyIdx:0,stripIdx:0,remainingStripLength:0,next(){if(r.polyIdx{let i=n.getMTime();return e.cutFunction&&(i=Math.max(i,e.cutFunction.getMTime())),i};function r(i,a){const s=i.getPoints(),o=s.getData(),c=s.getNumberOfPoints(),l=[],u=[],f=[];(!e.cutScalars||e.cutScalars.length0;let x=!0;for(let R=1;R0!==y){x=!1;break}if(x)continue;const w=[];for(let R=0;R0;if(v[D]>0===S)continue;let V=R,L=D,b=v[L]-v[V];b<=0&&(V=D,L=R,b*=-1);let U=0;b!==0&&(U=(e.cutValue-v[V])/b);const I=C.cell[V],P=C.cell[L];m[0]=o[I*3],m[1]=o[I*3+1],m[2]=o[I*3+2],p[0]=o[P*3],p[1]=o[P*3+1],p[2]=o[P*3+2];const k=[m[0]+U*(p[0]-m[0]),m[1]+U*(p[1]-m[1]),m[2]+U*(p[2]-m[2])];w.push({pointEdge1:I,pointEdge2:P,intersectedPoint:k,newPointID:-1})}for(let R=0;R2&&(f.push(E),w.forEach(R=>{f.push(R.newPointID)}))}a.getPoints().setData(ma(s.getDataType(),l),3),u.length!==0&&a.getLines().setData(Uint16Array.from(u)),f.length!==0&&a.getPolys().setData(Uint16Array.from(f))}t.requestData=(i,a)=>{const s=i[0];if(!s){ec("Invalid or missing input");return}if(!e.cutFunction){ec("Missing cut function");return}const o=sn.newInstance();r(s,o),a[0]=o}}const G8={cutFunction:null,cutScalars:null,cutValue:0};function pu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,G8,n),Ve(t,e),Hs(t,e,1,1),Xe(t,e,["cutFunction","cutValue"]),P8(t,e)}const B8=Ue(pu,"vtkCutter");var A8={newInstance:B8,extend:pu};const W8=[2,0,1,2,2,3,2,4,5,2,6,7,2,0,2,2,1,3,2,4,6,2,5,7,2,0,4,2,1,5,2,2,6,2,3,7],z8=[4,0,1,3,2,4,4,6,7,5,4,8,10,11,9,4,12,13,15,14,4,16,18,19,17,4,20,21,23,22];function $8(t,e){e.classHierarchy.push("vtkCubeSource");function n(r,i){if(e.deleted)return;const a=sn.newInstance();i[0]=a;const s=24,o=M.newTypedArray(e.pointType,s*3);a.getPoints().setData(o,3);const c=M.newTypedArray(e.pointType,s*3),l=ie.newInstance({name:"Normals",values:c,numberOfComponents:3});a.getPointData().setNormals(l);let u=2;e.generate3DTextureCoordinates===!0&&(u=3);const f=M.newTypedArray(e.pointType,s*u),g=ie.newInstance({name:"TextureCoordinates",values:f,numberOfComponents:u});a.getPointData().setTCoords(g);const h=[0,0,0],d=[0,0,0],m=[0,0];let p=0;h[0]=-e.xLength/2,d[0]=-1,d[1]=0,d[2]=0;for(let v=0;v<2;v++){h[1]=-e.yLength/2;for(let T=0;T<2;T++){m[1]=h[1]+.5,h[2]=-e.zLength/2;for(let C=0;C<2;C++)m[0]=(h[2]+.5)*(1-2*v),o[p*3]=h[0],o[p*3+1]=h[1],o[p*3+2]=h[2],c[p*3]=d[0],c[p*3+1]=d[1],c[p*3+2]=d[2],u===2?(f[p*u]=m[0],f[p*u+1]=m[1]):(f[p*u]=2*v-1,f[p*u+1]=2*T-1,f[p*u+2]=2*C-1),p++,h[2]+=e.zLength;h[1]+=e.yLength}h[0]+=e.xLength,d[0]+=2}h[1]=-e.yLength/2,d[1]=-1,d[0]=0,d[2]=0;for(let v=0;v<2;v++){h[0]=-e.xLength/2;for(let T=0;T<2;T++){m[0]=(h[0]+.5)*(2*v-1),h[2]=-e.zLength/2;for(let C=0;C<2;C++)m[1]=(h[2]+.5)*-1,o[p*3]=h[0],o[p*3+1]=h[1],o[p*3+2]=h[2],c[p*3]=d[0],c[p*3+1]=d[1],c[p*3+2]=d[2],u===2?(f[p*u]=m[0],f[p*u+1]=m[1]):(f[p*u]=2*T-1,f[p*u+1]=2*v-1,f[p*u+2]=2*C-1),p++,h[2]+=e.zLength;h[0]+=e.xLength}h[1]+=e.yLength,d[1]+=2}h[2]=-e.zLength/2,d[2]=-1,d[0]=0,d[1]=0;for(let v=0;v<2;v++){h[1]=-e.yLength/2;for(let T=0;T<2;T++){m[1]=h[1]+.5,h[0]=-e.xLength/2;for(let C=0;C<2;C++)m[0]=(h[0]+.5)*(2*v-1),o[p*3]=h[0],o[p*3+1]=h[1],o[p*3+2]=h[2],c[p*3]=d[0],c[p*3+1]=d[1],c[p*3+2]=d[2],u===2?(f[p*u]=m[0],f[p*u+1]=m[1]):(f[p*u]=2*C-1,f[p*u+1]=2*T-1,f[p*u+2]=2*v-1),p++,h[0]+=e.xLength;h[1]+=e.yLength}h[2]+=e.zLength,d[2]+=2}if(e.rotations&&En.buildFromDegree().rotateX(e.rotations[0]).rotateY(e.rotations[1]).rotateZ(e.rotations[2]).apply(o).apply(c),e.center&&En.buildFromRadian().translate(...e.center).apply(o),e.matrix){En.buildFromRadian().setMatrix(e.matrix).apply(o);const v=[e.matrix[0],e.matrix[1],e.matrix[2],0,e.matrix[4],e.matrix[5],e.matrix[6],0,e.matrix[8],e.matrix[9],e.matrix[10],0,0,0,0,1];En.buildFromRadian().setMatrix(v).apply(c)}e.generateFaces?a.getPolys().deepCopy(e._polys):a.getPolys().initialize(),e.generateLines?(a.getLines().deepCopy(e._lineCells),a.getPointData().setNormals(null)):a.getLines().initialize(),a.modified()}t.setBounds=function(){let r=[];if(Array.isArray(arguments.length<=0?void 0:arguments[0]))r=arguments.length<=0?void 0:arguments[0];else for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,j8,n),M.obj(t,e),M.setGet(t,e,["xLength","yLength","zLength","generate3DTextureCoordinates","generateFaces","generateLines"]),M.setGetArray(t,e,["center","rotations"],3),M.setGetArray(t,e,["matrix"],16),e._polys=Wr.newInstance({values:Uint16Array.from(z8)}),e._lineCells=Wr.newInstance({values:Uint16Array.from(W8)}),M.moveToProtected(t,e,["polys","lineCells"]),M.algo(t,e,0,1),$8(t,e)}const H8=M.newInstance(mu,"vtkCubeSource");var K8={newInstance:H8,extend:mu};const{vtkErrorMacro:tc}=M;function q8(t,e){e.classHierarchy.push("vtkImageDataOutlineFilter");const n={...t};t.requestData=(r,i)=>{const a=r[0];if(!a||!a.isA("vtkImageData")){tc("Invalid or missing input");return}const s=a.getSpatialExtent();if(!s){tc("Unable to fetch spatial extents of input image.");return}e._cubeSource.setBounds(s),e._cubeSource.setMatrix(a.getIndexToWorld()),i[0]=e._cubeSource.getOutputData()},t.getMTime=()=>Math.max(n.getMTime(),e._cubeSource.getMTime()),t.setGenerateFaces=e._cubeSource.setGenerateFaces,t.setGenerateLines=e._cubeSource.setGenerateLines,t.getGenerateFaces=e._cubeSource.getGenerateFaces,t.getGenerateLines=e._cubeSource.getGenerateLines}const Y8={};function vu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Y8,n),M.obj(t,e),M.algo(t,e,1,1),e._cubeSource=K8.newInstance(),M.moveToProtected(t,e,["cubeSource","tmpOut"]),q8(t,e)}const X8=M.newInstance(vu,"vtkImageDataOutlineFilter");var Z8={newInstance:X8,extend:vu};let z0;function J8(t,e){e.classHierarchy.push("vtkAbstractTransform","vtkHomogeneousTransform","vtkTransform"),t.transformPoint=(n,r)=>(ue(r,n,e.matrix),r),t.transformPoints=(n,r)=>{const i=new Float64Array(3),a=new Float64Array(3);for(let s=0;s{t.setPreMultiplyFlag(!0)},t.postMultiply=()=>{t.setPreMultiplyFlag(!1)},t.transformMatrix=(n,r)=>(e.preMultiplyFlag?ae(r,e.matrix,n):ae(r,n,e.matrix),r),t.transformMatrices=(n,r)=>{const i=new Float64Array(16),a=new Float64Array(16),s=e.preMultiplyFlag?()=>ae(a,e.matrix,i):()=>ae(a,i,e.matrix);for(let o=0;oz0({matrix:ht.invertMatrix(Array.from(e.matrix),[],4),preMultiplyFlag:e.preMultiplyFlag})}const Q8={preMultiplyFlag:!1,matrix:[...n0]};function yu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Q8,n),M.obj(t,e),M.setGet(t,e,["preMultiplyFlag"]),M.setGetArray(t,e,["matrix"],16),J8(t,e)}z0=M.newInstance(yu,"vtkTransform");var e6={newInstance:z0,extend:yu},t6=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkImageResliceMapperVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +// all variables that represent positions or directions have a suffix +// indicating the coordinate system they are in. The possible values are +// MC - Model coordinates +// WC - World coordinates +// VC - View coordinates +// DC - Display coordinates +// TC - Texture coordinates + +// frag position in VC +//VTK::PositionVC::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +void main() +{ + //VTK::PositionVC::Impl + + //VTK::TCoord::Impl + + //VTK::Picking::Impl +} +`,n6=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkImageResliceMapperFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the gpu image mapper fragment shader + +// VC position of this fragment +//VTK::PositionVC::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// handle coincident offsets +//VTK::Coincident::Dec + +//VTK::ZBuffer::Dec + +// the output of this shader +//VTK::Output::Dec + +void main() +{ + // VC position of this fragment. This should not branch/return/discard. + //VTK::PositionVC::Impl + + // Place any calls that require uniform flow (e.g. dFdx) here. + //VTK::UniformFlow::Impl + + // Set gl_FragDepth here (gl_FragCoord.z by default) + //VTK::Depth::Impl + + // Early depth peeling abort: + //VTK::DepthPeeling::PreColor + + //VTK::TCoord::Impl + + if (gl_FragData[0].a <= 0.0) + { + discard; + } + + //VTK::DepthPeeling::Impl + + //VTK::Picking::Impl + + // handle coincident offsets + //VTK::Coincident::Impl + + //VTK::ZBuffer::Impl + + //VTK::RenderPassFragmentShader::Impl +} +`;const{vtkErrorMacro:hn}=Lt;function nc(t,e,n){return e.identity(n),t.reduce((r,i,a)=>a===0?i?e.copy(r,i):e.identity(r):i?e.multiply(r,r,i):r,n)}function r6(t,e){e.classHierarchy.push("vtkOpenGLImageResliceMapper");function n(i){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(a=>i.unregisterGraphicsResourceUser(a,t))}t.buildPass=i=>{if(i){e.currentRenderPass=null,e._openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const a=e._openGLRenderer.getRenderable();e._openGLCamera=e._openGLRenderer.getViewNodeFor(a.getActiveCamera());const s=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),s&&!s.isDeleted()&&s!==e._openGLRenderWindow&&n(s),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},t.translucentPass=(i,a)=>{i&&(e.currentRenderPass=a,t.render())},t.zBufferPass=i=>{i&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=i=>t.zBufferPass(i),t.opaquePass=i=>{i&&t.render()},t.getCoincidentParameters=(i,a)=>e.renderable.getResolveCoincidentTopology()==bt.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const i=e._openGLImageSlice.getRenderable(),a=e._openGLRenderer.getRenderable();t.renderPiece(a,i)},t.renderPiece=(i,a)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),!e.currentInput){hn("No input!");return}t.updateResliceGeometry(),t.renderPieceStart(i,a),t.renderPieceDraw(i,a),t.renderPieceFinish(i,a),t.invokeEvent({type:"EndEvent"})},t.renderPieceStart=(i,a)=>{t.updateBufferObjects(i,a),a.getProperty().getInterpolationType()===Rn.NEAREST?(e.openGLTexture.setMinificationFilter(H.NEAREST),e.openGLTexture.setMagnificationFilter(H.NEAREST),e.colorTexture.setMinificationFilter(H.NEAREST),e.colorTexture.setMagnificationFilter(H.NEAREST),e.pwfTexture.setMinificationFilter(H.NEAREST),e.pwfTexture.setMagnificationFilter(H.NEAREST)):(e.openGLTexture.setMinificationFilter(H.LINEAR),e.openGLTexture.setMagnificationFilter(H.LINEAR),e.colorTexture.setMinificationFilter(H.LINEAR),e.colorTexture.setMagnificationFilter(H.LINEAR),e.pwfTexture.setMinificationFilter(H.LINEAR),e.pwfTexture.setMagnificationFilter(H.LINEAR)),e.lastBoundBO=null},t.renderPieceDraw=(i,a)=>{const s=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),t.updateShaders(e.tris,i,a),s.drawArrays(s.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(i,a)=>{},t.updateBufferObjects=(i,a)=>{t.getNeedToRebuildBufferObjects(i,a)&&t.buildBufferObjects(i,a)},t.getNeedToRebuildBufferObjects=(i,a)=>{var s,o,c;return e.VBOBuildTime.getMTime(){var D,S,O,V;const s=e.currentInput;if(!s)return;const o=(D=s.getPointData())==null?void 0:D.getScalars();if(!o)return;const c=o.getNumberOfComponents();let l=O0(s,o);const u=e._openGLRenderWindow.getGraphicsResourceForObject(o),f=!((S=u==null?void 0:u.oglObject)!=null&&S.getHandle())||(u==null?void 0:u.hash)!==l,g=e.renderable.getUpdatedExtents(),h=!!g.length;if(f&&!h){e.openGLTexture=We.newInstance(),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.openGLTexture.resetFormatAndType();const L=s.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(L[0],L[1],L[2],o,!1,g),e._openGLRenderWindow.setGraphicsResourceForObject(o,e.openGLTexture,l),o!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(o,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,t)),e._scalars=o}else e.openGLTexture=u.oglObject;if(h){e.renderable.setUpdatedExtents([]);const L=s.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(L[0],L[1],L[2],o,!1,g)}const d=a.getProperty(),m=d.getIndependentComponents(),p=m?c:1,v=m?2*p:1,T=d.getRGBTransferFunction();l=cn(T,m,p);const C=e._openGLRenderWindow.getGraphicsResourceForObject(T);if(!((O=C==null?void 0:C.oglObject)!=null&&O.getHandle())||(C==null?void 0:C.hash)!==l){const b=1024*v*3,U=new Uint8ClampedArray(b);if(e.colorTexture=We.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),T){const I=new Float32Array(3072);for(let P=0;P0){const I=e.resliceGeom.getPointData().getNormals();I?U.normals=I:hn("Slab mode requested without normals")}e.tris.getCABO().createVBO(b,"polys",Rt.SURFACE,U)}e.VBOBuildString=R,e.VBOBuildTime.modified()},t.updateShaders=(i,a,s)=>{if(e.lastBoundBO=i,t.getNeedToRebuildShaders(i,a,s)){const o={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(o,a,s);const c=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(o.Vertex,o.Fragment,o.Geometry);c!==i.getProgram()&&(i.setProgram(c),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),t.setMapperShaderParameters(i,a,s),t.setCameraShaderParameters(i,a,s),t.setPropertyShaderParameters(i,a,s)},t.setMapperShaderParameters=(i,a,s)=>{const o=i.getProgram();if(i.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())){o.isUniformUsed("texture1")&&o.setUniformi("texture1",e.openGLTexture.getTextureUnit()),o.isAttributeUsed("vertexWC")&&(i.getVAO().addAttributeArray(o,i.getCABO(),"vertexWC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||hn("Error setting vertexWC in shader VAO.")),o.isAttributeUsed("normalWC")&&(i.getVAO().addAttributeArray(o,i.getCABO(),"normalWC",i.getCABO().getNormalOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||hn("Error setting normalWC in shader VAO.")),o.isUniformUsed("slabThickness")&&o.setUniformf("slabThickness",e.renderable.getSlabThickness()),o.isUniformUsed("spacing")&&o.setUniform3fv("spacing",e.currentInput.getSpacing()),o.isUniformUsed("slabType")&&o.setUniformi("slabType",e.renderable.getSlabType()),o.isUniformUsed("slabType")&&o.setUniformi("slabType",e.renderable.getSlabType()),o.isUniformUsed("slabTrapezoid")&&o.setUniformi("slabTrapezoid",e.renderable.getSlabTrapezoidIntegration());const l=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null;if(o.isUniformUsed("WCTCMatrix")){const u=e.currentInput,f=u.getDimensions();Fe(e.tmpMat4,u.getIndexToWorld()),Re(e.tmpMat4,e.tmpMat4,[-.5,-.5,-.5]),Vt(e.tmpMat4,e.tmpMat4,f),Be(e.tmpMat4,e.tmpMat4),l&&ae(e.tmpMat4,e.tmpMat4,l),o.setUniformMatrix("WCTCMatrix",e.tmpMat4)}o.isUniformUsed("vboScaling")&&o.setUniform3fv("vboScaling",i.getCABO().getCoordScale()??[1,1,1]),i.getAttributeUpdateTime().modified()}if(e.haveSeenDepthRequest&&i.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),i.getProgram().isUniformUsed("coffset")){const c=t.getCoincidentParameters(a,s);i.getProgram().setUniformf("coffset",c.offset),i.getProgram().isUniformUsed("cfactor")&&i.getProgram().setUniformf("cfactor",c.factor)}},t.setCameraShaderParameters=(i,a,s)=>{const o=e._openGLCamera.getKeyMatrices(a),c=e._openGLImageSlice.getKeyMatrices(),u=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null,f=i.getProgram();f.isUniformUsed("MCPCMatrix")&&(q(e.tmpMat4),f.setUniformMatrix("MCPCMatrix",nc([o.wcpc,c.mcwc,u],Ro,e.tmpMat4))),f.isUniformUsed("MCVCMatrix")&&(q(e.tmpMat4),f.setUniformMatrix("MCVCMatrix",nc([o.wcvc,c.mcwc,u],Ro,e.tmpMat4)))},t.setPropertyShaderParameters=(i,a,s)=>{const o=i.getProgram(),c=s.getProperty(),l=c.getOpacity();o.setUniformf("opacity",l);const u=e.openGLTexture.getComponents(),f=c.getIndependentComponents();if(f)for(let m=0;m{var h;const o=e.openGLTexture.getComponents(),c=s.getProperty().getIndependentComponents(),l=e.renderable.getSlabThickness(),u=e.renderable.getSlabType(),f=e.renderable.getSlabTrapezoidIntegration();let g=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(g=!0),g||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((h=i.getProgram())==null?void 0:h.getHandle())===0||e.lastTextureComponents!==o||e.lastIndependentComponents!==c||e.lastSlabThickness!==l||e.lastSlabType!==u||e.lastSlabTrapezoidIntegration!==f?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=o,e.lastIndependentComponents=c,e.lastSlabThickness=l,e.lastSlabType=u,e.lastSlabTrapezoidIntegration=f,!0):!1},t.getShaderTemplate=(i,a,s)=>{i.Vertex=t6,i.Fragment=n6,i.Geometry=""},t.replaceShaderValues=(i,a,s)=>{if(t.replaceShaderTCoord(i,a,s),t.replaceShaderPositionVC(i,a,s),e.haveSeenDepthRequest){let o=i.Fragment;o=W.substitute(o,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,o=W.substitute(o,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,i.Fragment=o}t.replaceShaderCoincidentOffset(i,a,s)},t.replaceShaderTCoord=(i,a,s)=>{let o=i.Vertex;const c=i.Geometry;let l=i.Fragment;const u=["uniform mat4 WCTCMatrix;","out vec3 fragTexCoord;"],f=e.renderable.getSlabThickness();o=W.substitute(o,"//VTK::TCoord::Dec",u).result;const g=["fragTexCoord = (WCTCMatrix * vertexWC).xyz;"];o=W.substitute(o,"//VTK::TCoord::Impl",g).result;const h=e.openGLTexture.getComponents(),d=s.getProperty().getIndependentComponents();let m=["in vec3 fragTexCoord;","uniform highp sampler3D texture1;","uniform mat4 WCTCMatrix;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;"];if(d){for(let v=1;v0&&(m=m.concat(["uniform vec3 spacing;","uniform float slabThickness;","uniform int slabType;","uniform int slabTrapezoid;","uniform vec3 vboScaling;"]),m=m.concat(["vec4 compositeValue(vec4 currVal, vec4 valToComp, int trapezoid)","{"," vec4 retVal = vec4(1.0);"," if (slabType == 0) // min"," {"," retVal = min(currVal, valToComp);"," }"," else if (slabType == 1) // max"," {"," retVal = max(currVal, valToComp);"," }"," else if (slabType == 3) // sum"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," else // mean"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," return retVal;","}"])),l=W.substitute(l,"//VTK::TCoord::Dec",m).result;let p=["if (any(greaterThan(fragTexCoord, vec3(1.0))) || any(lessThan(fragTexCoord, vec3(0.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}","vec4 tvalue = texture(texture1, fragTexCoord);"];if(f>0&&(p=p.concat(["// Get the first and last samples","int numSlices = 1;","float scaling = min(min(spacing.x, spacing.y), spacing.z) * 0.5;","vec3 normalxspacing = scaling * normalWCVSOutput;","float distTraveled = length(normalxspacing);","int trapezoid = 0;","while (distTraveled < slabThickness * 0.5)","{"," distTraveled += length(normalxspacing);"," float fnumSlices = float(numSlices);"," if (distTraveled > slabThickness * 0.5)"," {"," // Before stepping outside the slab, sample at the boundaries"," normalxspacing = normalWCVSOutput * slabThickness * 0.5 / fnumSlices;"," trapezoid = slabTrapezoid;"," }"," vec3 fragTCoordNeg = (WCTCMatrix * vec4(vertexWCVSOutput.xyz - fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordNeg);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }"," vec3 fragTCoordPos = (WCTCMatrix * vec4(vertexWCVSOutput.xyz + fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordPos);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }","}","// Finally, if slab type is *mean*, divide the sum by the numSlices","if (slabType == 2)","{"," tvalue = tvalue / float(numSlices);","}"])),d){const v=["r","g","b","a"];for(let T=0;T{let o=i.Vertex;const c=i.Geometry;let l=i.Fragment;const u=e.renderable.getSlabThickness();let f=["attribute vec4 vertexWC;"];f=f.concat([`//${t.getMTime()}${e.resliceGeomUpdateString}`]),u>0&&(f=f.concat(["attribute vec3 normalWC;","varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),o=W.substitute(o,"//VTK::PositionVC::Dec",f).result;let g=["gl_Position = MCPCMatrix * vertexWC;"];u>0&&(g=g.concat(["normalWCVSOutput = normalWC;","vertexWCVSOutput = vertexWC;"])),o=W.substitute(o,"//VTK::PositionVC::Impl",g).result,o=W.substitute(o,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result;let h=[];u>0&&(h=h.concat(["varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),l=W.substitute(l,"//VTK::PositionVC::Dec",h).result,i.Vertex=o,i.Geometry=c,i.Fragment=l};function r(i){ht.normalize(i);const a=[0,0,0];for(let s=0;s<3;++s){Eh(a),a[s]=1;const o=ht.dot(i,a);if(o<-.999999||o>.999999)return[!0,s]}return[!1,2]}t.updateResliceGeometry=()=>{var f;let i="";const a=e.currentInput,s=a==null?void 0:a.getBounds();let o=!0,c=2;const l=e.renderable.getSlicePolyData(),u=e.renderable.getSlicePlane();if(l)i=i.concat(`PolyData${l.getMTime()}`);else if(u){i=i.concat(`Plane${u.getMTime()}`);const g=ll();a&&(i=i.concat(`Image${a.getMTime()}`),q3(g,...a.getDirection()),l0(g,g));const h=[...u.getNormal()];Vi(h,h,g),[o,c]=r(h)}else{const g=$e.newInstance();g.setNormal(0,0,1);let h=[0,1,0,1,0,1];a&&(h=s),g.setOrigin(h[0],h[2],.5*(h[5]+h[4])),e.renderable.setSlicePlane(g),i=i.concat(`Plane${u==null?void 0:u.getMTime()}`),a&&(i=i.concat(`Image${a.getMTime()}`))}if(!e.resliceGeom||e.resliceGeomUpdateString!==i){if(l)e.resliceGeom||(e.resliceGeom=sn.newInstance()),e.resliceGeom.getPoints().setData(l.getPoints().getData(),3),e.resliceGeom.getPolys().setData(l.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(l.getPointData().getNormals());else if(u)if(o){const g=new Float32Array(12),h=a.worldToIndex(u.getOrigin(),[0,0,0]),d=[(c+1)%3,(c+2)%3].sort(),m=a.getSpatialExtent();let p=0;for(let x=0;x<2;++x)for(let w=0;w<2;++w)g[p+c]=h[c],g[p+d[0]]=m[2*d[0]+w],g[p+d[1]]=m[2*d[1]+x],p+=3;e.transform.setMatrix(a.getIndexToWorld()),e.transform.transformPoints(g,g);const v=new Uint16Array(8);v[0]=3,v[1]=0,v[2]=1,v[3]=3,v[4]=3,v[5]=0,v[6]=3,v[7]=2;const T=u.getNormal();ht.normalize(T);const C=new Float32Array(12);for(let x=0;x<4;++x)C[3*x]=T[0],C[3*x+1]=T[1],C[3*x+2]=T[2];e.resliceGeom||(e.resliceGeom=sn.newInstance()),e.resliceGeom.getPoints().setData(g,3),e.resliceGeom.getPolys().setData(v,1);const y=ie.newInstance({numberOfComponents:3,values:C,name:"Normals"});e.resliceGeom.getPointData().setNormals(y)}else{e.outlineFilter.setInputData(a),e.cutter.setInputConnection(e.outlineFilter.getOutputPort()),e.cutter.setCutFunction(u),e.lineToSurfaceFilter.setInputConnection(e.cutter.getOutputPort()),e.lineToSurfaceFilter.update(),e.resliceGeom||(e.resliceGeom=sn.newInstance());const g=e.lineToSurfaceFilter.getOutputData();e.resliceGeom.getPoints().setData(g.getPoints().getData(),3),e.resliceGeom.getPolys().setData(g.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(g.getPointData().getNormals());const h=u.getNormal(),d=e.resliceGeom.getNumberOfPoints();ht.normalize(h);const m=new Float32Array(d*3);for(let v=0;v{i&&(e.openGLTexture=i,e._externalOpenGLTexture=!0)},t.delete=Jr(()=>{e._openGLRenderWindow&&n(e._openGLRenderWindow)},t.delete)}const i6={VBOBuildTime:{},VBOBuildString:null,haveSeenDepthRequest:!1,lastHaveSeenDepthRequest:!1,lastIndependentComponents:!1,lastTextureComponents:0,lastSlabThickness:0,lastSlabTrapezoidIntegration:0,lastSlabType:-1,openGLTexture:null,colorTextureString:null,pwfTextureString:null,resliceGeom:null,resliceGeomUpdateString:null,tris:null,colorTexture:null,pwfTexture:null,_externalOpenGLTexture:!1};function a6(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,i6,n),He.extend(t,e,n),Jn.implementReplaceShaderCoincidentOffset(t,e,n),Jn.implementBuildShadersWithReplacements(t,e,n),e.tris=Sa.newInstance(),e.openGLTexture=null,e.colorTexture=null,e.pwfTexture=null,e.VBOBuildTime={},Ve(e.VBOBuildTime),e.tmpMat4=q(new Float64Array(16)),e.outlineFilter=Z8.newInstance(),e.outlineFilter.setGenerateFaces(!0),e.outlineFilter.setGenerateLines(!1),e.cubePolyData=sn.newInstance(),e.cutter=A8.newInstance(),e.lineToSurfaceFilter=U8.newInstance(),e.transform=e6.newInstance(),Tt(t,e,["openGLTexture"]),r6(t,e)}const s6=Ue(a6,"vtkOpenGLImageResliceMapper");Nt("vtkImageResliceMapper",s6);const Tu=Object.create(null);function cr(t,e){Tu[t]=e}function o6(t,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const c6={};function l6(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,c6,n),e.overrides=Tu,il.extend(t,e,n),o6(t,e)}M.newInstance(l6,"vtkWebGPUViewNodeFactory");function u6(t,e){e.classHierarchy.push("vtkWebGPUCamera"),t.getProjectionMatrix=(n,r,i,a)=>{if(q(n),e.renderable.getParallelProjection()){const s=e.renderable.getParallelScale(),o=s*r,c=s,l=(a[0]-1)*o,u=(a[0]+1)*o,f=(a[1]-1)*c,g=(a[1]+1)*c,h=1/(u-l),d=1/(g-f);n[0]=2*h,n[5]=2*d,n[10]=1/(i[1]-i[0]),n[12]=(u+l)*h,n[13]=(g+f)*d,n[14]=i[1]/(i[1]-i[0])}else{const s=Math.tan(Math.PI*e.renderable.getViewAngle()/360);let o,c;e.renderable.getUseHorizontalViewAngle()===!0?(o=i[0]*s,c=i[0]*s/r):(o=i[0]*s*r,c=i[0]*s);const l=(a[0]-1)*o,u=(a[0]+1)*o,f=(a[1]-1)*c,g=(a[1]+1)*c;n[0]=2*i[0]/(u-l),n[5]=2*i[0]/(g-f),n[12]=(l+u)/(u-l),n[13]=(f+g)/(g-f),n[10]=0,n[14]=i[0],n[11]=-1,n[15]=0}},t.convertToOpenGLDepth=n=>{if(e.renderable.getParallelProjection())return 1-n;const r=e.renderable.getClippingRangeByReference();let i=-r[0]/n;return i=(r[0]+r[1])/(r[1]-r[0])+2*r[0]*r[1]/(i*(r[1]-r[0])),.5*i+.5},t.getKeyMatrices=n=>{const r=n.getRenderable(),i=n.getParent();if(Math.max(i.getMTime(),t.getMTime(),r.getMTime(),e.renderable.getMTime(),n.getStabilizedTime())>e.keyMatrixTime.getMTime()){const a=e.renderable.getViewMatrix();Fe(e.keyMatrices.normalMatrix,a),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,Be(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),fe(e.keyMatrices.wcvc,a);const s=n.getStabilizedCenterByReference();Re(e.keyMatrices.scvc,e.keyMatrices.wcvc,s);const o=n.getAspectRatio(),c=e.renderable.getClippingRangeByReference();t.getProjectionMatrix(e.keyMatrices.vcpc,o,c,e.renderable.getWindowCenterByReference()),ae(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),Be(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const f6={keyMatrixTime:null,keyMatrices:null};function g6(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,f6,n),He.extend(t,e,n),e.keyMatrixTime={},M.obj(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(16),vcpc:new Float64Array(16),pcsc:new Float64Array(16),wcvc:new Float64Array(16),scpc:new Float64Array(16),scvc:new Float64Array(16)},M.setGet(t,e,["keyMatrixTime"]),u6(t,e)}const h6=M.newInstance(g6);cr("vtkCamera",h6);function d6(t,e){e.classHierarchy.push("vtkWebGPUBindGroup"),t.setBindables=n=>{if(e.bindables.length===n.length){let r=!0;for(let i=0;i{const r=[];for(let i=0;i{let r=t.getMTime();for(let a=0;ar?s:r}if(r{const r=[],i=n.getBindGroupLayoutCount(e.label);for(let a=0;a2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,p6,n),M.obj(t,e),e.bindables=[],e.bindGroupTime={},M.obj(e.bindGroupTime,{mtime:0}),M.get(t,e,["bindGroupTime","handle","sizeInBytes","usage"]),M.setGet(t,e,["label","device","arrayInformation"]),d6(t,e)}const m6=M.newInstance(Cu);var xu={newInstance:m6,extend:Cu};function v6(t,e){e.classHierarchy.push("vtkWebGPUShaderModule"),t.initialize=(n,r)=>{e.device=n,e.handle=e.device.getHandle().createShaderModule({code:r.getCode()})}}const y6={device:null,handle:null};function wu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,y6,n),M.obj(t,e),M.get(t,e,["lastCameraMTime"]),M.setGet(t,e,["device","handle"]),v6(t,e)}const T6=M.newInstance(wu,"vtkWebGPUShaderModule");var C6={newInstance:T6,extend:wu};function x6(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const i=Array.isArray(n)?n.join(` +`):n;let a=!1;t.search(e)!==-1&&(a=!0);let s="";r&&(s="g");const o=new RegExp(e,s),c=t.replace(o,i);return{replace:a,result:c}}function w6(t,e){e.classHierarchy.push("vtkWebGPUShaderCache"),t.getShaderModule=n=>{const r=n.getType(),i=n.getHash(),a=e._shaderModules.keys();for(let o=0;o2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,S6,n),e._shaderModules=new Map,M.obj(t,e),M.setGet(t,e,["device","window"]),w6(t,e)}const M6=M.newInstance(Su,"vtkWebGPUShaderCache");var nt={newInstance:M6,extend:Su,substitute:x6};function E6(t,e){e.classHierarchy.push("vtkWebGPUPipeline"),t.getShaderDescriptions=()=>e.shaderDescriptions,t.initialize=(n,r)=>{e.pipelineDescription=e.renderEncoder.getPipelineSettings(),e.pipelineDescription.primitive.topology=e.topology,e.pipelineDescription.vertex=e.vertexState,e.pipelineDescription.label=r;const i=[];for(let a=0;a{for(let r=0;r{n&&e.layouts.push({layout:n.getBindGroupLayout(e.device),label:n.getLabel()})},t.getBindGroupLayout=n=>e.layouts[n].layout,t.getBindGroupLayoutCount=n=>{for(let r=0;r{r.bindBuffers(n)}}const R6={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function Mu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,R6,n),Ve(t,e),e.layouts=[],e.shaderDescriptions=[],Tt(t,e,["handle","pipelineDescription"]),Xe(t,e,["device","renderEncoder","topology","vertexState"]),E6(t,e)}const O6=Ue(Mu,"vtkWebGPUPipeline");var D6={newInstance:O6,extend:Mu};function V6(t,e){e.classHierarchy.push("vtkWebGPUShaderDescription"),t.hasOutput=n=>e.outputNames.includes(n),t.addOutput=function(n,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;e.outputTypes.push(n),e.outputNames.push(r),e.outputInterpolations.push(i)},t.addBuiltinOutput=(n,r)=>{e.builtinOutputTypes.push(n),e.builtinOutputNames.push(r)},t.addBuiltinInput=(n,r)=>{e.builtinInputTypes.push(n),e.builtinInputNames.push(r)},t.replaceShaderCode=(n,r)=>{const i=[];let a=[];if(r&&i.push(r.getShaderCode()),n||e.builtinInputNames.length){const s=[];if(s.push(`struct ${e.type}Input +{`),n){const o=n.getOutputNamesByReference(),c=n.getOutputTypesByReference(),l=n.getOutputInterpolationsByReference();for(let u=0;u1&&(s.push("};"),a=s,i[i.length-1]+=",",i.push(`input: ${e.type}Input`))}if(i.length&&(e.code=nt.substitute(e.code,"//VTK::IOStructs::Input",i).result),e.outputNames.length+e.builtinOutputNames.length){const s=[`struct ${e.type}Output +{`];for(let o=0;o ${e.type}Output`]).result}e.code=nt.substitute(e.code,"//VTK::IOStructs::Dec",a).result}}const I6={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function Eu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,I6,n),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],M.obj(t,e),M.setGet(t,e,["type","hash","code"]),M.getArray(t,e,["outputTypes","outputNames","outputInterpolations"]),V6(t,e)}const L6=M.newInstance(Eu,"vtkWebGPUShaderDescription");var rc={newInstance:L6,extend:Eu};const ic={r8unorm:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"float"},r8snorm:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"float"},r8uint:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},r8sint:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"sint"},r16uint:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"uint"},r16sint:{numComponents:1,nativeType:Int16Array,stride:2,elementSize:2,sampleType:"sint"},r16float:{numComponents:1,nativeType:Float32Array,stride:2,elementSize:2,sampleType:"float"},rg8unorm:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"float"},rg8snorm:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"float"},rg8uint:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"uint"},rg8sint:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"sint"},r32uint:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:4,sampleType:"uint"},r32sint:{numComponents:1,nativeType:Int32Array,stride:4,elementSize:4,sampleType:"sint"},r32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"unfilterable-float"},rg16uint:{numComponents:2,nativeType:Uint16Array,stride:4,elementSize:2,sampleType:"uint"},rg16sint:{numComponents:2,nativeType:Int16Array,stride:4,elementSize:2,sampleType:"sint"},rg16float:{numComponents:2,nativeType:Float32Array,stride:4,elementSize:2,sampleType:"float"},rgba8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"rgba8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgba8snorm:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"float"},rgba8uint:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"uint"},rgba8sint:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"sint"},bgra8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"bgra8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgb9e5ufloat:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rgb10a2unorm:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rg11b10ufloat:{numComponents:4,nativeType:Float32Array,stride:4,sampleType:"float"},rg32uint:{numComponents:2,nativeType:Uint32Array,stride:8,elementSize:4,sampleType:"uint"},rg32sint:{numComponents:2,nativeType:Int32Array,stride:8,elementSize:4,sampleType:"sint"},rg32float:{numComponents:2,nativeType:Float32Array,stride:8,elementSize:4,sampleType:"unfilterable-float"},rgba16uint:{numComponents:4,nativeType:Uint16Array,stride:8,elementSize:2,sampleType:"uint"},rgba16sint:{numComponents:4,nativeType:Int16Array,stride:8,elementSize:2,sampleType:"sint"},rgba16float:{numComponents:4,nativeType:Float32Array,stride:8,elementSize:2,sampleType:"float"},rgba32uint:{numComponents:4,nativeType:Uint32Array,stride:16,elementSize:4,sampleType:"uint"},rgba32sint:{numComponents:4,nativeType:Int32Array,stride:16,elementSize:4,sampleType:"sint"},rgba32float:{numComponents:4,nativeType:Float32Array,stride:16,elementSize:4,sampleType:"unfilterable-float"},stencil8:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},depth16unorm:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"depth"},depth24plus:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:3,sampleType:"depth"},"depth24plus-stencil8":{numComponents:2,nativeType:Uint32Array,stride:4,sampleType:"mixed"},depth32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"depth"}};function N6(t){return!t||t.length<6?0:t in ic?ic[t]:(J(`unknown format ${t}`),null)}function b6(t){if(!t||t.length<5)return 0;let e=1;t[t.length-2]==="x"&&(e=Number(t[t.length-1]));const n=e===1?t.length-1:t.length-3,r=Number(t[n]);if(Number.isNaN(r))return J(`unknown format ${t}`),0;const i=5-r/2;return e*i}function F6(t){if(!t||t.length<5)return 0;let e=1;return t[t.length-2]==="x"&&(e=Number(t[t.length-1])),e}function _6(t){if(!t||t.length<5)return 0;let e;if(t[0]==="f")e="Float";else if(t[0]==="s")e="Int";else if(t[0]==="u")e="Uint";else{J(`unknown format ${t}`);return}const n=t.split("x")[0],r=Number(n[n.length-1]);if(Number.isNaN(r)){J(`unknown format ${t}`);return}return e+=8*(5-r/2),e+="Array",e}function U6(t){let e;if(t[0]==="f"||t[1]==="n")e="f32";else if(t[0]==="s"&&t[1]==="i")e="i32";else if(t[0]==="u"&&t[1]==="i")e="u32";else{J(`unknown format ${t}`);return}let n=1;return t[t.length-2]==="x"&&(n=Number(t[t.length-1])),n===4?`vec4<${e}>`:n===3?`vec3<${e}>`:n===2?`vec2<${e}>`:e}function k6(t){if(!t)return 0;let e=1;return t.substring(0,3)==="vec"?e=Number(t[3]):t.substring(0,3)==="mat"&&(e=t[3]*t[5]),e*4}function P6(t){if(t){if(t.includes("f32"))return"Float32Array";if(t.includes("i32"))return"Int32Array";if(t.includes("u32"))return"Uint32Array";J(`unknown format ${t}`)}}var Et={getDetailsFromTextureFormat:N6,getByteStrideFromBufferFormat:b6,getNumberOfComponentsFromBufferFormat:F6,getNativeTypeFromBufferFormat:_6,getShaderTypeFromBufferFormat:U6,getByteStrideFromShaderFormat:k6,getNativeTypeFromShaderFormat:P6};function G6(t,e){if(t===e)return!0;if(t==null||e==null||t.length!==e.length)return!1;for(let n=0;n2&&arguments[2]!==void 0?arguments[2]:"vertex",a=r;Array.isArray(a)||(a=[a]);for(let s=0;ss.names[0]o.names[0]?1:0)},t.removeBufferIfPresent=n=>{for(let r=0;r{for(let r=0;r{for(let r=0;r{for(let r=0;r{let n="",r=0;for(let i=0;i0&&(n+=`, +`),n=`${n} @location(${r}) ${e.inputs[i].names[a]} : ${o}`,r++}return n},t.getVertexInputInformation=()=>{const n={};if(e.inputs.length){const r=[];let i=0;for(let a=0;a{for(let r=0;r{},t.releaseGraphicsResources=()=>{e.created&&(e.inputs=[],e.bindingDescriptions=[],e.attributeDescriptions=[])}}const A6={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function Ru(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,A6,n),Ve(t,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],Xe(t,e,["created","device","handle","indexBuffer"]),B6(t,e)}const W6=Ue(Ru,"vtkWebGPUVertexInput");var z6={newInstance:W6,extend:Ru};const $6=` +//VTK::Renderer::Dec + +//VTK::Color::Dec + +//VTK::Normal::Dec + +//VTK::TCoord::Dec + +//VTK::Select::Dec + +//VTK::Mapper::Dec + +//VTK::IOStructs::Dec + +@vertex +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output : vertexOutput; + + // var vertex: vec4 = vertexBC; + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Select::Impl + + //VTK::Position::Impl + + return output; +} +`,j6=` +//VTK::Renderer::Dec + +//VTK::Color::Dec + +//VTK::Normal::Dec + +//VTK::TCoord::Dec + +//VTK::Select::Dec + +//VTK::RenderEncoder::Dec + +//VTK::Mapper::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output : fragmentOutput; + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::Light::Impl + + //VTK::TCoord::Impl + + //VTK::Select::Impl + + // var computedColor:vec4 = vec4(1.0,0.5,0.5,1.0); + + //VTK::RenderEncoder::Impl + return output; +} +`;function H6(t,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),t.generateShaderDescriptions=(n,r,i)=>{const a=rc.newInstance({type:"vertex",hash:n,code:e.vertexShaderTemplate}),s=rc.newInstance({type:"fragment",hash:n,code:e.fragmentShaderTemplate}),o=r.getShaderDescriptions();o.push(a),o.push(s);const c=e.vertexShaderTemplate+e.fragmentShaderTemplate,l=new RegExp("//VTK::[^:]*::","g"),f=c.match(l).filter((g,h,d)=>d.indexOf(g)===h).map(g=>`replaceShader${g.substring(7,g.length-2)}`);for(let g=0;g{const a=r.getShaderDescription("vertex");a.replaceShaderCode(null,i),r.getShaderDescription("fragment").replaceShaderCode(a)},t.replaceShaderRenderEncoder=(n,r,i)=>{e.renderEncoder.replaceShaderCode(r)},e.shaderReplacements.set("replaceShaderRenderEncoder",t.replaceShaderRenderEncoder),t.replaceShaderRenderer=(n,r,i)=>{if(!e.WebGPURenderer)return;const a=e.WebGPURenderer.getBindGroup().getShaderCode(r),s=r.getShaderDescription("vertex");let o=s.getCode();o=nt.substitute(o,"//VTK::Renderer::Dec",[a]).result,s.setCode(o);const c=r.getShaderDescription("fragment");o=c.getCode(),o=nt.substitute(o,"//VTK::Renderer::Dec",[a]).result,c.setCode(o)},e.shaderReplacements.set("replaceShaderRenderer",t.replaceShaderRenderer),t.replaceShaderMapper=(n,r,i)=>{const a=e.bindGroup.getShaderCode(r),s=r.getShaderDescription("vertex");let o=s.getCode();o=nt.substitute(o,"//VTK::Mapper::Dec",[a]).result,s.setCode(o);const c=r.getShaderDescription("fragment");c.addBuiltinInput("bool","@builtin(front_facing) frontFacing"),o=c.getCode(),o=nt.substitute(o,"//VTK::Mapper::Dec",[a]).result,c.setCode(o)},e.shaderReplacements.set("replaceShaderMapper",t.replaceShaderMapper),t.replaceShaderPosition=(n,r,i)=>{const a=r.getShaderDescription("vertex");a.addBuiltinOutput("vec4","@builtin(position) Position");let s=a.getCode();s=nt.substitute(s,"//VTK::Position::Impl",[" output.Position = rendererUBO.SCPCMatrix*vertexBC;"]).result,a.setCode(s)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderTCoord=(n,r,i)=>{r.getShaderDescription("vertex").addOutput("vec2","tcoordVS")},e.shaderReplacements.set("replaceShaderTCoord",t.replaceShaderTCoord),t.addTextureView=n=>{e.textureViews.includes(n)||e.textureViews.push(n)},t.prepareToDraw=n=>{e.renderEncoder=n,t.updateInput(),t.updateBuffers(),t.updateBindings(),t.updatePipeline()},t.updateInput=()=>{},t.updateBuffers=()=>{},t.updateBindings=()=>{e.bindGroup.setBindables(t.getBindables())},t.computePipelineHash=()=>{},t.registerDrawCallback=n=>{n.registerDrawCallback(e.pipeline,t.draw)},t.prepareAndDraw=n=>{t.prepareToDraw(n),n.setPipeline(e.pipeline),t.draw(n)},t.draw=n=>{const r=n.getBoundPipeline();n.activateBindGroup(e.bindGroup),e.WebGPURenderer&&e.WebGPURenderer.bindUBO(n),r.bindVertexInput(n,e.vertexInput);const i=e.vertexInput.getIndexBuffer();i?n.drawIndexed(i.getIndexCount(),e.numberOfInstances,0,0,0):n.draw(e.numberOfVertices,e.numberOfInstances,0,0)},t.getBindables=()=>{const n=[...e.additionalBindables];e.UBO&&n.push(e.UBO),e.SSBO&&n.push(e.SSBO);for(let r=0;r{t.computePipelineHash(),e.pipeline=e.device.getPipeline(e.pipelineHash),e.pipeline||(e.pipeline=D6.newInstance(),e.pipeline.setDevice(e.device),e.WebGPURenderer&&e.pipeline.addBindGroupLayout(e.WebGPURenderer.getBindGroup()),e.pipeline.addBindGroupLayout(e.bindGroup),t.generateShaderDescriptions(e.pipelineHash,e.pipeline,e.vertexInput),e.pipeline.setTopology(e.topology),e.pipeline.setRenderEncoder(e.renderEncoder),e.pipeline.setVertexState(e.vertexInput.getVertexInputInformation()),e.device.createPipeline(e.pipelineHash,e.pipeline))}}const K6={additionalBindables:void 0,bindGroup:null,device:null,fragmentShaderTemplate:null,numberOfInstances:1,numberOfVertices:0,pipelineHash:null,shaderReplacements:null,SSBO:null,textureViews:null,topology:"triangle-list",UBO:null,vertexShaderTemplate:null,WebGPURenderer:null};function Ou(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,K6,n),He.extend(t,e,n),e.textureViews=[],e.vertexInput=z6.newInstance(),e.bindGroup=xu.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||j6,e.vertexShaderTemplate=e.vertexShaderTemplate||$6,e.shaderReplacements=new Map,M.get(t,e,["pipeline","vertexInput"]),M.setGet(t,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),H6(t,e)}const q6=M.newInstance(Ou,"vtkWebGPUSimpleMapper");var Y6={newInstance:q6,extend:Ou};function X6(t,e){e.classHierarchy.push("vtkWebGPUFullScreenQuad"),t.replaceShaderPosition=(n,r,i)=>{const a=r.getShaderDescription("vertex");a.addBuiltinOutput("vec4","@builtin(position) Position"),a.addOutput("vec4","vertexVC");let s=a.getCode();s=nt.substitute(s,"//VTK::Position::Impl",["output.tcoordVS = vec2(vertexBC.x * 0.5 + 0.5, 1.0 - vertexBC.y * 0.5 - 0.5);","output.Position = vec4(vertexBC, 1.0);","output.vertexVC = vec4(vertexBC, 1);"]).result,a.setCode(s)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.updateBuffers=()=>{const n=e.device.getBufferManager().getFullScreenQuadBuffer();e.vertexInput.addBuffer(n,["vertexBC"]),e.numberOfVertices=6}}const Z6={};function Du(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Z6,n),Y6.extend(t,e,n),X6(t,e)}const J6=M.newInstance(Du,"vtkWebGPUFullScreenQuad");var Ns={newInstance:J6,extend:Du};const Q6={Verts:0,Lines:1,Triangles:2,Strips:3,LinesFromStrips:4,LinesFromTriangles:5,Points:6,UniformArray:7,PointArray:8,NormalsFromPoints:9,Texture:10,RawVertex:11,Storage:12,Index:13},e7={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var ii={BufferUsage:Q6,PrimitiveTypes:e7};const Za=["getMappedRange","mapAsync","unmap"];function t7(t,e,n,r){const i=r.byteLength,a=t.createBuffer({size:i,usage:GPUBufferUsage.COPY_SRC,mappedAtCreation:!0}),s=a.getMappedRange(0,i);new Uint8Array(s).set(new Uint8Array(r)),a.unmap();const o=t.createCommandEncoder();o.copyBufferToBuffer(a,0,e,n,i);const c=o.finish();t.queue.submit([c]),a.destroy()}function n7(t,e){e.classHierarchy.push("vtkWebGPUBuffer"),t.create=(n,r)=>{e.handle=e.device.getHandle().createBuffer({size:n,usage:r,label:e.label}),e.sizeInBytes=n,e.usage=r},t.write=n=>{t7(e.device.getHandle(),e.handle,0,n.buffer)},t.createAndWrite=(n,r)=>{e.handle=e.device.getHandle().createBuffer({size:n.byteLength,usage:r,mappedAtCreation:!0,label:e.label}),e.sizeInBytes=n.byteLength,e.usage=r,new Uint8Array(e.handle.getMappedRange()).set(new Uint8Array(n.buffer)),e.handle.unmap()};for(let n=0;n2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,r7,n),M.obj(t,e),M.get(t,e,["handle","sizeInBytes","usage"]),M.setGet(t,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),n7(t,e)}const i7=M.newInstance(Vu);var bs={newInstance:i7,extend:Vu,...ii};const{Representation:ac}=o4,{PrimitiveTypes:Qt}=ii;class a7{constructor(){this.keys=new Uint32Array(10),this.values=new Uint32Array(10),this.count=0}clear(){this.count=0}has(e){for(let n=0;n2)for(let a=0;a2){for(let a=0;a{const r=n.cells,i=n.primitiveType,a=n.representation,s=n.cellOffset,o=r.getData(),c=o.length,l=s7(i),u=n.numberOfPoints,f={provokedPointIds:new Uint8Array(u),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new a7};let g=null;a===ac.POINTS||i===Qt.Points?g=Ja.anythingToPoints:a===ac.WIREFRAME||i===Qt.Lines?g=Ja[`${l}ToWireframe`]:g=Ja[`${l}ToSurface`],kt=c7;let h=s||0;for(let d=0;d2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,u7,n),bs.extend(t,e,n),M.setGet(t,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),l7(t,e)}const f7=M.newInstance(Iu);var g7={newInstance:f7,extend:Iu,...ii};const{BufferUsage:Yt}=ii,{vtkErrorMacro:h7}=Lt,{VtkDataTypes:dn}=ie,d7={};function p7(t){let e;switch(t.getDataType()){case dn.UNSIGNED_CHAR:e="uint8";break;case dn.FLOAT:e="float32";break;case dn.UNSIGNED_INT:e="uint32";break;case dn.INT:e="sint32";break;case dn.DOUBLE:e="float32";break;case dn.UNSIGNED_SHORT:e="uint16";break;case dn.SHORT:e="sin16";break;default:e="float32";break}switch(t.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||h7(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function oc(t,e,n,r,i){const a={},s=t.getFlatSize();if(!s)return a;let o=[0,0,0,0];i.shift&&(i.shift.length?o=i.shift:o.fill(i.shift));let c=[1,1,1,1];i.scale&&(i.scale.length?c=i.scale:c.fill(i.scale));const l=Object.prototype.hasOwnProperty.call(i,"packExtra")?i.packExtra:!1;let u,f=0;const g=n+(l?1:0),h=sr(r,s*g);let d=t.getFlatIdToPointId();i.cellData&&(d=t.getFlatIdToCellId()),n===1?u=function(p){h[f++]=c[0]*e[p]+o[0]}:n===2?u=function(p){h[f++]=c[0]*e[p]+o[0],h[f++]=c[1]*e[p+1]+o[1]}:n===3&&!l?u=function(p){h[f++]=c[0]*e[p]+o[0],h[f++]=c[1]*e[p+1]+o[1],h[f++]=c[2]*e[p+2]+o[2]}:n===3&&l?u=function(p){h[f++]=c[0]*e[p]+o[0],h[f++]=c[1]*e[p+1]+o[1],h[f++]=c[2]*e[p+2]+o[2],h[f++]=c[3]*1+o[3]}:n===4&&(u=function(p){h[f++]=c[0]*e[p]+o[0],h[f++]=c[1]*e[p+1]+o[1],h[f++]=c[2]*e[p+2]+o[2],h[f++]=c[3]*e[p+3]+o[3]});for(let m=0;me.device.hasCachedObject(r),t.getBuffer=r=>r.hash?e.device.getCachedObject(r.hash,n,r):n(r),t.getBufferForPointArray=(r,i)=>{const a=p7(r),s={hash:`${r.getMTime()}I${i.getMTime()}${a}`,usage:Yt.PointArray,format:a,dataArray:r,indexBuffer:i};return t.getBuffer(s)},t.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=bs.newInstance(),e.fullScreenQuadBuffer.setDevice(e.device);const r=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0]);return e.fullScreenQuadBuffer.createAndWrite(r,GPUBufferUsage.VERTEX),e.fullScreenQuadBuffer.setStrideInBytes(12),e.fullScreenQuadBuffer.setArrayInformation([{offset:0,format:"float32x3"}]),e.fullScreenQuadBuffer}}const T7={device:null,fullScreenQuadBuffer:null};function C7(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,T7,n),Ve(t,e),Xe(t,e,["device"]),y7(t,e)}Ue(C7);var Lu={...d7,...ii};const{BufferUsage:x7}=Lu,{vtkErrorMacro:Un}=M;function w7(t,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),t.addEntry=(n,r)=>{if(e._bufferEntryNames.has(n)){Un(`entry named ${n} already exists`);return}e._bufferEntryNames.set(n,e.bufferEntries.length);const i=Et.getByteStrideFromShaderFormat(r);e.bufferEntries.push({name:n,type:r,sizeInBytes:i,offset:e.sizeInBytes,nativeType:Et.getNativeTypeFromShaderFormat(r)}),e.sizeInBytes+=i},t.send=n=>{if(!e._buffer){const r={nativeArray:e.Float32Array,usage:x7.Storage,label:e.label};e._buffer=n.getBufferManager().getBuffer(r),e.bindGroupTime.modified(),e._sendTime.modified();return}n.getHandle().queue.writeBuffer(e._buffer.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes*e.numberOfInstances),e._sendTime.modified()},t.createView=n=>{n in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes*e.numberOfInstances)),e[n]=M.newTypedArray(n,e.arrayBuffer))},t.setValue=(n,r,i)=>{const a=e._bufferEntryNames.get(n);if(a===void 0){Un(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const o=e[s.nativeType];o[(s.offset+r*e.sizeInBytes)/o.BYTES_PER_ELEMENT]=i},t.setArray=(n,r,i)=>{const a=e._bufferEntryNames.get(n);if(a===void 0){Un(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const o=e[s.nativeType],c=(s.offset+r*e.sizeInBytes)/o.BYTES_PER_ELEMENT;for(let l=0;l{const i=e._bufferEntryNames.get(n);if(i===void 0){Un(`entry named ${n} not found in UBO`);return}const a=e.bufferEntries[i];t.createView(a.nativeType);const s=e[a.nativeType],o=r.length/e.numberOfInstances;for(let c=0;c{const i=e._bufferEntryNames.get(n);if(i===void 0){Un(`entry named ${n} not found in UBO`);return}const a=e.bufferEntries[i];t.createView(a.nativeType);const s=e[a.nativeType],o=r.length/e.numberOfInstances;for(let c=0;c{const i=e._bufferEntryNames.get(n);if(i===void 0){Un(`entry named ${n} not found in UBO`);return}const a=e.bufferEntries[i];t.createView(a.nativeType);const s=e[a.nativeType],o=9;for(let c=0;ce._sendTime.getMTime(),t.getShaderCode=(n,r)=>{const i=[`struct ${e.label}StructEntry +{`];for(let a=0;a, +}; +@binding(${n}) @group(${r}) var ${e.label}: ${e.label}Struct; +`),i.join(` +`)},t.getBindGroupEntry=()=>({resource:{buffer:e._buffer.getHandle()}}),t.clearData=()=>{e.numberOfInstances=0,e.sizeInBytes=0,e.bufferEntries=[],e._bufferEntryNames=new Map,e._buffer=null,delete e.arrayBuffer,delete e.Float32Array}}const S7={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function Nu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,S7,n),M.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},M.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},M.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},M.get(t,e,["bindGroupTime"]),M.setGet(t,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),w7(t,e)}const M7=M.newInstance(Nu,"vtkWebGPUStorageBuffer");var E7={newInstance:M7,extend:Nu};const{BufferUsage:R7}=Lu,{vtkErrorMacro:Qa}=M;function O7(t,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),t.addEntry=(n,r)=>{if(e._bufferEntryNames.has(n)){Qa(`entry named ${n} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(n,e.bufferEntries.length),e.bufferEntries.push({name:n,type:r,sizeInBytes:Et.getByteStrideFromShaderFormat(r),offset:-1,nativeType:Et.getNativeTypeFromShaderFormat(r),packed:!1})},t.sortBufferEntries=()=>{if(!e.sortDirty)return;let n=0;const r=[];let i=4;for(let a=0;a4&&(s.packed=!0,s.offset=n,r.push(s),n+=s.sizeInBytes)}for(let a=0;a{if(!e.UBO){const r={nativeArray:e.Float32Array,usage:R7.UniformArray,label:e.label};e.UBO=n.getBufferManager().getBuffer(r),e.bindGroupTime.modified(),e.sendDirty=!1}e.sendDirty&&(n.getHandle().queue.writeBuffer(e.UBO.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes),e.sendDirty=!1),e.sendTime.modified()},t.createView=n=>{n in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes)),e[n]=M.newTypedArray(n,e.arrayBuffer))},t.setValue=(n,r)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(n);if(i===void 0){Qa(`entry named ${n} not found in UBO`);return}const a=e.bufferEntries[i];t.createView(a.nativeType);const s=e[a.nativeType];a.lastValue!==r&&(s[a.offset/s.BYTES_PER_ELEMENT]=r,e.sendDirty=!0),a.lastValue=r},t.setArray=(n,r)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(n);if(i===void 0){Qa(`entry named ${n} not found in UBO`);return}const a=e.bufferEntries[i];t.createView(a.nativeType);const s=e[a.nativeType];let o=!1;for(let c=0;c({resource:{buffer:e.UBO.getHandle()}}),t.getSendTime=()=>e.sendTime.getMTime(),t.getShaderCode=(n,r)=>{t.sortBufferEntries();const i=[`struct ${e.label}Struct +{`];for(let a=0;a ${e.label}: ${e.label}Struct;`),i.join(` +`)}}const D7={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function bu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,D7,n),M.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},M.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},M.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,M.get(t,e,["binding","bindGroupTime"]),M.setGet(t,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),O7(t,e)}const V7=M.newInstance(bu,"vtkWebGPUUniformBuffer");var br={newInstance:V7,extend:bu};const{vtkDebugMacro:I7}=Lt,cc=` +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + var computedColor: vec4 = mapperUBO.BackgroundColor; + + //VTK::RenderEncoder::Impl + return output; +} +`,L7=` +fn vecToRectCoord(dir: vec3) -> vec2 { + var tau: f32 = 6.28318530718; + var pi: f32 = 3.14159265359; + var out: vec2 = vec2(0.0); + + out.x = atan2(dir.z, dir.x) / tau; + out.x += 0.5; + + var phix: f32 = length(vec2(dir.x, dir.z)); + out.y = atan2(dir.y, phix) / pi + 0.5; + + return out; +} + +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + var tcoord: vec4 = vec4(input.vertexVC.xy, -1, 1); + var V: vec4 = normalize(mapperUBO.FSQMatrix * tcoord); // vec2((input.tcoordVS.x - 0.5) * 2, -(input.tcoordVS.y - 0.5) * 2); + // textureSampleLevel gets rid of some ugly artifacts + var background = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, vecToRectCoord(V.xyz), 0.0); + var computedColor: vec4 = vec4(background.rgb, 1); + + //VTK::RenderEncoder::Impl + return output; +} +`,vi=new Float64Array(16),lc=new Float64Array(16);function N7(t){return t.getPositional()?t.getConeAngle()>=90?0:2:1}function b7(t,e){e.classHierarchy.push("vtkWebGPURenderer"),t.buildPass=n=>{if(n){if(!e.renderable)return;e.camera=e.renderable.getActiveCamera(),t.updateLights(),t.prepareNodes(),t.addMissingNode(e.camera),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes(),e.webgpuCamera=t.getViewNodeFor(e.camera),t.updateStabilizedMatrix()}},t.updateStabilizedMatrix=()=>{const n=e.camera.getClippingRange(),r=e.camera.getPositionByReference(),i=e.camera.getDirectionOfProjectionByReference(),a=[],s=[];vt(s,i,.5*(n[0]+n[1])),zt(a,r,s),De(s,a,e.stabilizedCenter),wl(s)/(n[1]-n[0])>e.recenterThreshold&&(e.stabilizedCenter=a,e.stabilizedTime.modified())},t.updateLights=()=>{let n=0;const r=e.renderable.getLightsByReference();for(let i=0;i0&&n++;return n||(I7("No lights are on, creating one."),e.renderable.createLight()),n},t.updateUBO=()=>{var r;const n=e.UBO.getSendTime();if(e._parent.getMTime()>n||t.getMTime()>n||e.camera.getMTime()>n||e.renderable.getMTime()>n){const i=e.webgpuCamera.getKeyMatrices(t);e.UBO.setArray("WCVCMatrix",i.wcvc),e.UBO.setArray("SCPCMatrix",i.scpc),e.UBO.setArray("PCSCMatrix",i.pcsc),e.UBO.setArray("SCVCMatrix",i.scvc),e.UBO.setArray("VCPCMatrix",i.vcpc),e.UBO.setArray("WCVCNormals",i.normalMatrix),e.UBO.setValue("LightCount",e.renderable.getLights().length),e.UBO.setValue("MaxEnvironmentMipLevel",(r=e.renderable.getEnvironmentTexture())==null?void 0:r.getMipLevel()),e.UBO.setValue("BackgroundDiffuseStrength",e.renderable.getEnvironmentTextureDiffuseStrength()),e.UBO.setValue("BackgroundSpecularStrength",e.renderable.getEnvironmentTextureSpecularStrength());const a=t.getYInvertedTiledSizeAndOrigin();e.UBO.setArray("viewportSize",[a.usize,a.vsize]),e.UBO.setValue("cameraParallel",e.camera.getParallelProjection());const s=e._parent.getDevice();e.UBO.sendIfNeeded(s)}},t.updateSSBO=()=>{const n=e.renderable.getLights(),r=e.webgpuCamera.getKeyMatrices(t);let i=`${e.renderable.getMTime()}`;for(let a=0;a"),e.SSBO.addEntry("LightDir","vec4"),e.SSBO.addEntry("LightColor","vec4"),e.SSBO.addEntry("LightData","vec4"),e.SSBO.setAllInstancesFromArray("LightPos",a),e.SSBO.setAllInstancesFromArray("LightDir",s),e.SSBO.setAllInstancesFromArray("LightColor",o),e.SSBO.setAllInstancesFromArray("LightData",c);const l=e._parent.getDevice();e.SSBO.send(l)}e.lightTimeString=i},t.scissorAndViewport=n=>{const r=t.getYInvertedTiledSizeAndOrigin();n.getHandle().setViewport(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize,0,1),n.getHandle().setScissorRect(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize)},t.bindUBO=n=>{n.activateBindGroup(e.bindGroup)},t.opaquePass=n=>{n?(e.renderEncoder.begin(e._parent.getCommandEncoder()),t.updateUBO(),t.updateSSBO()):(t.scissorAndViewport(e.renderEncoder),t.clear(),e.renderEncoder.end())},t.clear=()=>{var a;if(e.renderable.getTransparent()||e.suppressClear)return;const n=e._parent.getDevice();if(!e.clearFSQ){e.clearFSQ=Ns.newInstance(),e.clearFSQ.setDevice(n),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(cc);const s=br.newInstance({label:"mapperUBO"});s.addEntry("FSQMatrix","mat4x4"),s.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(s),e.backgroundTex=e.renderable.getEnvironmentTexture()}if(e.clearFSQ.getPipelineHash()!=="clearfsqwithtexture"&&e.renderable.getUseEnvironmentTextureAsBackground()&&((a=e.backgroundTex)!=null&&a.getImageLoaded())){e.clearFSQ.setFragmentShaderTemplate(L7);const s=br.newInstance({label:"mapperUBO"});s.addEntry("FSQMatrix","mat4x4"),s.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(s);const o=n.getTextureManager().getTextureForVTKTexture(e.backgroundTex);if(o.getReady()){const c=o.createView("EnvironmentTexture");e.clearFSQ.setTextureViews([c]),e.backgroundTexLoaded=!0;const l=e.backgroundTex.getInterpolate()?"linear":"nearest";c.addSampler(n,{addressModeU:"repeat",addressModeV:"clamp-to-edge",addressModeW:"repeat",minFilter:l,magFilter:l,mipmapFilter:"linear"})}e.clearFSQ.setPipelineHash("clearfsqwithtexture")}else if(e.clearFSQ.getPipelineHash()==="clearfsqwithtexture"&&!e.renderable.getUseEnvironmentTextureAsBackground()){e.clearFSQ=Ns.newInstance(),e.clearFSQ.setDevice(n),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(cc);const s=br.newInstance({label:"mapperUBO"});s.addEntry("FSQMatrix","mat4x4"),s.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(s)}const r=e.webgpuCamera.getKeyMatrices(t),i=e.renderable.getBackgroundByReference();e.clearFSQ.getUBO().setArray("BackgroundColor",i),fe(lc,r.normalMatrix),Yi(vi,r.scvc,r.pcsc),Yi(vi,lc,vi),e.clearFSQ.getUBO().setArray("FSQMatrix",vi),e.clearFSQ.getUBO().sendIfNeeded(n),e.clearFSQ.prepareAndDraw(e.renderEncoder)},t.translucentPass=n=>{n?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.volumeDepthRangePass=n=>{n?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.getAspectRatio=()=>{const n=e._parent.getSizeByReference(),r=e.renderable.getViewportByReference();return n[0]*(r[2]-r[0])/((r[3]-r[1])*n[1])},t.convertToOpenGLDepth=n=>e.webgpuCamera.convertToOpenGLDepth(n),t.getYInvertedTiledSizeAndOrigin=()=>{const n=t.getTiledSizeAndOrigin(),r=e._parent.getSizeByReference();return n.lowerLeftV=r[1]-n.vsize-n.lowerLeftV,n},t.getTiledSizeAndOrigin=()=>{const n=e.renderable.getViewportByReference(),r=[0,0,1,1],i=n[0]-r[0],a=n[1]-r[1],s=e._parent.normalizedDisplayToDisplay(i,a),o=Math.round(s[0]),c=Math.round(s[1]),l=n[2]-r[0],u=n[3]-r[1],f=e._parent.normalizedDisplayToDisplay(l,u);let g=Math.round(f[0])-o,h=Math.round(f[1])-c;return g<0&&(g=0),h<0&&(h=0),{usize:g,vsize:h,lowerLeftU:o,lowerLeftV:c}},t.getPropFromID=n=>{for(let r=0;re.stabilizedTime.getMTime(),t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources()}}const F7={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function _7(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,F7,n),He.extend(t,e,n),e.UBO=br.newInstance({label:"rendererUBO"}),e.UBO.addEntry("WCVCMatrix","mat4x4"),e.UBO.addEntry("SCPCMatrix","mat4x4"),e.UBO.addEntry("PCSCMatrix","mat4x4"),e.UBO.addEntry("SCVCMatrix","mat4x4"),e.UBO.addEntry("VCPCMatrix","mat4x4"),e.UBO.addEntry("WCVCNormals","mat4x4"),e.UBO.addEntry("viewportSize","vec2"),e.UBO.addEntry("LightCount","i32"),e.UBO.addEntry("MaxEnvironmentMipLevel","f32"),e.UBO.addEntry("BackgroundDiffuseStrength","f32"),e.UBO.addEntry("BackgroundSpecularStrength","f32"),e.UBO.addEntry("cameraParallel","u32"),e.SSBO=E7.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=xu.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=q(new Float64Array(16)),e.stabilizedTime={},Ve(e.stabilizedTime,{mtime:0}),Tt(t,e,["bindGroup","stabilizedTime"]),Zr(t,e,["stabilizedCenter"]),Xe(t,e,["renderEncoder","selector","suppressClear","UBO"]),b7(t,e)}const U7=Ue(_7,"vtkWebGPURenderer");cr("vtkRenderer",U7);function k7(t,e){e.classHierarchy.push("vtkWebGPUSampler"),t.create=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.device=n,e.options.addressModeU=r.addressModeU?r.addressModeU:"clamp-to-edge",e.options.addressModeV=r.addressModeV?r.addressModeV:"clamp-to-edge",e.options.addressModeW=r.addressModeW?r.addressModeW:"clamp-to-edge",e.options.magFilter=r.magFilter?r.magFilter:"nearest",e.options.minFilter=r.minFilter?r.minFilter:"nearest",e.options.mipmapFilter=r.mipmapFilter?r.mipmapFilter:"nearest",e.options.label=e.label,e.handle=e.device.getHandle().createSampler(e.options),e.bindGroupTime.modified()},t.getShaderCode=(n,r)=>`@binding(${n}) @group(${r}) var ${e.label}: sampler;`,t.getBindGroupEntry=()=>({resource:e.handle})}const P7={device:null,handle:null,label:null,options:null};function Fu(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,P7,n),M.obj(t,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},M.obj(e.bindGroupTime,{mtime:0}),M.get(t,e,["bindGroupTime","handle","options"]),M.setGet(t,e,["bindGroupLayoutEntry","device","label"]),k7(t,e)}const G7=M.newInstance(Fu);var B7={newInstance:G7,extend:Fu};const{SlicingMode:uc}=Oa,A7=` +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::Image::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + //VTK::Image::Sample + + // var computedColor: vec4 = vec4(1.0,0.7, 0.5, 1.0); + +//VTK::RenderEncoder::Impl + + return output; +} +`;function W7(t,e,n){if(e.apply(t)){const i=t.getIndependentComponents();return`${t.getMTime()}-${i}-${n}`}return"0"}const et=new Float64Array(16),xt=new Float64Array(16),yi=new Float64Array(16),Ut=new Float64Array(4),Ne=new Float64Array(4);function z7(t,e){e.classHierarchy.push("vtkWebGPUImageMapper"),t.buildPass=i=>{if(i){e.WebGPUImageSlice=t.getFirstAncestorOfType("vtkWebGPUImageSlice"),e.WebGPURenderer=e.WebGPUImageSlice.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.device=e.WebGPURenderWindow.getDevice();const a=e.WebGPURenderer.getRenderable();e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(a.getActiveCamera())}},t.translucentPass=i=>{i&&t.render()},t.opaquePass=i=>{i&&t.render()},t.render=()=>{e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw)},t.computePipelineHash=()=>{const i=e.currentInput.getExtent();i[0]===i[1]||i[2]===i[3]||i[4]===i[5]?(e.dimensions=2,e.pipelineHash="img2"):(e.dimensions=3,e.pipelineHash="img3")},t.updateUBO=()=>{const i=e.UBO.getSendTime(),a=e.WebGPUImageSlice.getRenderable(),s=a.getMapper();if(t.getMTime()>i||e.renderable.getMTime()>i||a.getProperty().getMTime()>i){const o=s.getInputData(),c=e.WebGPURenderer.getStabilizedCenterByReference();q(et),Re(et,et,c);const l=a.getMatrix();fe(xt,l),Be(xt,xt),ae(et,xt,et);const u=o.getWorldToIndex();ae(et,u,et),Be(yi,et),ni(xt,[.5,.5,.5]),ae(et,xt,et);const f=o.getDimensions();q(xt),Vt(xt,xt,[1/f[0],1/f[1],1/f[2]]),ae(et,xt,et),e.UBO.setArray("SCTCMatrix",et);const g=e.currentInput.getExtent(),{ijkMode:h}=e.renderable.getClosestIJKAxis();let d=e.renderable.getSlice();h!==e.renderable.getSlicingMode()&&(d=e.renderable.getSliceAtPosition(d));let m=2,p=0,v=1;h===uc.I?(m=0,p=1,v=2):h===uc.J&&(m=1,p=2,v=0),Ut[m]=d,Ut[p]=g[p*2]-.5,Ut[v]=g[v*2]-.5,Ut[3]=1,Mn(Ut,Ut,yi),e.UBO.setArray("Origin",Ut),Ne[m]=d,Ne[p]=g[p*2+1]+.5,Ne[v]=g[v*2]-.5,Ne[3]=1,Mn(Ne,Ne,yi),Io(Ne,Ne,Ut),Ne[3]=1,e.UBO.setArray("Axis1",Ne),Ne[m]=d,Ne[p]=g[p*2]-.5,Ne[v]=g[v*2+1]+.5,Ne[3]=1,Mn(Ne,Ne,yi),Io(Ne,Ne,Ut),Ne[3]=1,e.UBO.setArray("Axis2",Ne);const T=[1,1,1,1],C=[0,0,0,0],y=e.textureViews[0],x=y.getTexture().getScale(),w=y.getTexture().getNumberOfComponents();for(let E=0;E{const i=e.WebGPUImageSlice.getRenderable().getProperty();t.getTextureViews()[0].getTexture().getNumberOfComponents();const s=1,o=W7(i,i.getRGBTransferFunction,s);if(e.colorTextureString!==o){e.numRows=s;const c=new Uint8ClampedArray(e.numRows*2*e.rowLength*4);let l=i.getRGBTransferFunction();if(l){const u=new Float32Array(e.rowLength*3);for(let f=0;f{n();const i=e.device.getTextureManager().getTextureForImageData(e.currentInput),a=e.textureViews;if(!a[0]||a[0].getTexture()!==i){const c=i.createView("imgTexture");a[0]=c}t.updateLUTImage(),t.updateUBO();const o=e.WebGPUImageSlice.getRenderable().getProperty().getInterpolationType()===Rn.NEAREST?"nearest":"linear";(!e.clampSampler||o!==e.clampSampler.getOptions().minFilter)&&(e.clampSampler=B7.newInstance({label:"clampSampler"}),e.clampSampler.create(e.device,{minFilter:o,magFilter:o}),e.additionalBindables=[e.clampSampler])};const r=t.getShaderReplacements();t.replaceShaderPosition=(i,a,s)=>{const o=a.getShaderDescription("vertex");o.addBuiltinOutput("vec4","@builtin(position) Position");let c=o.getCode();const l=["var pos: vec4 = mapperUBO.Origin +"," (vertexBC.x * 0.5 + 0.5) * mapperUBO.Axis1 + (vertexBC.y * 0.5 + 0.5) * mapperUBO.Axis2;","pos.w = 1.0;"];e.dimensions===2?l.push("var tcoord : vec2 = (mapperUBO.SCTCMatrix * pos).xy;"):l.push("var tcoord : vec3 = (mapperUBO.SCTCMatrix * pos).xyz;"),l.push("output.tcoordVS = tcoord;","output.Position = rendererUBO.SCPCMatrix * pos;"),c=nt.substitute(c,"//VTK::Position::Impl",l).result,o.setCode(c)},r.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderTCoord=(i,a,s)=>{const o=a.getShaderDescription("vertex");e.dimensions===2?o.addOutput("vec2","tcoordVS"):o.addOutput("vec3","tcoordVS")},r.set("replaceShaderTCoord",t.replaceShaderTCoord),t.replaceShaderImage=(i,a,s)=>{const o=a.getShaderDescription("fragment");let c=o.getCode();e.dimensions===3?c=nt.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result:c=nt.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result,c=nt.substitute(c,"//VTK::Image::Sample",[" var coord: vec2 ="," vec2(computedColor.r * mapperUBO.cScale.r + mapperUBO.cShift.r, 0.5);"," computedColor = textureSampleLevel(tfunTexture, clampSampler, coord, 0.0);"]).result,o.setCode(c)},r.set("replaceShaderImage",t.replaceShaderImage)}const $7={rowLength:1024};function j7(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$7,n),Ns.extend(t,e,n),t.setFragmentShaderTemplate(A7),e.UBO=br.newInstance({label:"mapperUBO"}),e.UBO.addEntry("SCTCMatrix","mat4x4"),e.UBO.addEntry("Origin","vec4"),e.UBO.addEntry("Axis2","vec4"),e.UBO.addEntry("Axis1","vec4"),e.UBO.addEntry("cScale","vec4"),e.UBO.addEntry("cShift","vec4"),e.lutBuildTime={},Ve(e.lutBuildTime,{mtime:0}),e.imagemat=q(new Float64Array(16)),e.imagematinv=q(new Float64Array(16)),e.VBOBuildTime={},Ve(e.VBOBuildTime),z7(t,e)}const H7=Ue(j7,"vtkWebGPUImageMapper");cr("vtkImageMapper",H7);function K7(t,e){e.classHierarchy.push("vtkWebGPUImageSlice"),t.buildPass=n=>{if(!(!e.renderable||!e.renderable.getVisibility())&&n){if(!e.renderable)return;e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes()}},t.traverseOpaquePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children.forEach(r=>{r.traverse(n)}),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children.forEach(r=>{r.traverse(n)}),t.apply(n,!1))},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?r.incrementOpaqueActorCount():r.incrementTranslucentActorCount()}},t.getBufferShift=n=>(t.getKeyMatrices(n),e.bufferShift),t.getKeyMatrices=n=>{if(Math.max(e.renderable.getMTime(),n.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const r=e.renderable.getMatrix(),i=n.getStabilizedCenterByReference();e.bufferShift[0]=r[3]-i[0],e.bufferShift[1]=r[7]-i[1],e.bufferShift[2]=r[11]-i[2],fe(e.keyMatrices.bcwc,r),e.renderable.getIsIdentity()?q(e.keyMatrices.normalMatrix):(Fe(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,Be(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),fe(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),Re(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),Re(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const q7={bufferShift:void 0,keyMatrixTime:null,keyMatrices:null,propID:void 0};function Y7(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,q7,n),He.extend(t,e,n),e.keyMatricesTime={},Ve(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},e.keyMatrixTime={},Ve(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:q(new Float64Array(16))},e.bufferShift=[0,0,0,0],Tt(t,e,["propID","keyMatricesTime"]),K7(t,e)}const X7=Ue(Y7,"vtkWebGPUImageSlice");cr("vtkImageSlice",X7);function Z7(t,e){e.classHierarchy.push("vtkWebGPUVolume"),t.buildPass=i=>{!e.renderable||!e.renderable.getVisibility()||i&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),e.renderable.getMapper().update())},t.queryPass=(i,a)=>{if(i){if(!e.renderable||!e.renderable.getVisibility())return;const s=e.renderable.getMapper().getBounds();if(!s||s.length!==6||s[0]>s[1])return;a.addVolume(t)}};const n=new Float64Array(3),r=new Float64Array(3);t.getBoundingCubePoints=(i,a)=>{const s=e.renderable.getMapper().getInputData();if(!s)return;const o=s.getExtent(),c=e.renderable.getMatrix();let l=0;for(let u=4;u<6;u++){n[2]=o[u];for(let f=2;f<4;f++){n[1]=o[f];for(let g=0;g<2;g++){n[0]=o[g],s.indexToWorld(n,r);let h=a+l*3;i[h++]=c[0]*r[0]+c[1]*r[1]+c[2]*r[2]+c[3],i[h++]=c[4]*r[0]+c[5]*r[1]+c[6]*r[2]+c[7],i[h++]=c[8]*r[0]+c[9]*r[1]+c[10]*r[2]+c[11],l++}}}},t.getKeyMatrices=i=>{if(Math.max(e.renderable.getMTime(),i.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const a=e.renderable.getMatrix(),s=i.getStabilizedCenterByReference();fe(e.keyMatrices.bcwc,a),Re(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-s[0],-s[1],-s[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const J7={propID:void 0,keyMatricesTime:null};function Q7(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,J7,n),He.extend(t,e,n),e.keyMatricesTime={},M.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={bcwc:new Float64Array(16),bcsc:new Float64Array(16)},M.get(t,e,["propID","keyMatricesTime"]),Z7(t,e)}const em=M.newInstance(Q7,"vtkWebGPUVolume");cr("vtkVolume",em);function tm(t,e){e.classHierarchy.push("vtkWebGPUPixelSpaceCallbackMapper"),t.opaquePass=(n,r)=>{e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent();const i=e.WebGPURenderer.getAspectRatio(),a=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,s=e.WebGPURenderer.getTiledSizeAndOrigin(),o=null;e.renderable.getUseZValues(),e.renderable.invokeCallback(e.renderable.getInputData(),a,i,s,o)}}const nm={};function rm(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nm,n),He.extend(t,e,n),tm(t,e)}const im=M.newInstance(rm,"vtkWebGPUPixelSpaceCallbackMapper");cr("vtkPixelSpaceCallbackMapper",im);const fc=[[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],gc=[[0,-1,0],[0,1,0]],am=[[0,-1,0],[0,1,0],[0,0,-1]],sm=[[0,-1,0],[0,1,0],[0,0,1]],to=class to{static copyMap(e,n){for(const[r,i]of n.rows)e.rows.set(r,structuredClone(i))}constructor(e,n,r=1){this.rows=new Map,this.height=1,this.width=1,this.depth=1,this.jMultiple=1,this.kMultiple=1,this.numComps=1,this.pixelDataConstructor=Uint8Array,this.updateScalarData=function(i){i.fill(0);const a=(s,o,c)=>{const{start:l,end:u,value:f}=o;for(let g=l;g{const a=i%this.jMultiple,s=(i-a)/this.jMultiple,o=this.getRLE(a,s);return(o==null?void 0:o.value)??this.defaultValue},this.getRun=(i,a)=>{const s=i+a*this.height;return this.rows.get(s)},this.set=(i,a)=>{if(a===void 0)return;const s=i%this.width,o=(i-s)/this.width,c=this.rows.get(o);if(!c){this.rows.set(o,[{start:s,end:s+1,value:a}]);return}const l=this.findIndex(c,s),u=c[l],f=c[l-1];if(!u){if(!f||f.value!==a||f.end!==s){c[l]={start:s,end:s+1,value:a};return}f.end++;return}const{start:g,end:h,value:d}=u;if(a===d&&s>=g)return;const m={start:s,end:s+1,value:a},p=s>g,v=p?l+1:l,T=p?u:f;let C=p?c[l+1]:u;if((T==null?void 0:T.value)===a&&(T==null?void 0:T.end)===s){T.end++,(C==null?void 0:C.value)===a&&C.start===s+1?(T.end=C.end,c.splice(l,1)):(C==null?void 0:C.start)===s&&(C.start++,C.start===C.end&&(c.splice(l,1),C=c[l],(C==null?void 0:C.start)===s+1&&C.value===a&&(T.end=C.end,c.splice(l,1))));return}if((C==null?void 0:C.value)===a&&C.start===s+1){C.start--,(T==null?void 0:T.end)>s&&(T.end=s,T.end===T.start&&c.splice(l,1));return}if((C==null?void 0:C.start)===s&&C.end===s+1){C.value=a;const y=c[l+1];(y==null?void 0:y.start)==s+1&&y.value===a&&(c.splice(l+1,1),C.end=y.end);return}s===(C==null?void 0:C.start)&&C.start++,p&&h>s+1?c.splice(v,0,m,{start:s+1,end:T.end,value:T.value}):c.splice(v,0,m),(T==null?void 0:T.end)>s&&(T.end=s)},this.width=e,this.height=n,this.depth=r,this.jMultiple=e,this.kMultiple=this.jMultiple*n}toIJK(e){const n=e%this.jMultiple,r=(e-n)/this.jMultiple%this.height,i=Math.floor(e/this.kMultiple);return[n,r,i]}toIndex([e,n,r]){return e+r*this.kMultiple+n*this.jMultiple}getRLE(e,n,r=0){const i=this.rows.get(n+r*this.height);if(!i)return;const a=this.findIndex(i,e),s=i[a];return e>=(s==null?void 0:s.start)?s:void 0}has(e){const n=e%this.jMultiple,r=(e-n)/this.jMultiple,i=this.getRLE(n,r);return(i==null?void 0:i.value)!==void 0}delete(e){const n=e%this.width,r=(e-n)/this.width,i=this.rows.get(r);if(!i)return;const a=this.findIndex(i,n),s=i[a];if(!s||s.start>n)return;if(s.end===n+1){s.end--,s.start>=s.end&&(i.splice(a,1),i.length||this.rows.delete(r));return}if(s.start===n){s.start++;return}const o={value:s.value,start:n+1,end:s.end};s.end=n,i.splice(a+1,0,o)}findIndex(e,n){for(let r=0;rh&&h[0].value===n);e.push(...g)}return a}fillFrom(e,n){for(let r=n[2][0];r<=n[2][1];r++)for(let i=n[1][0];i<=n[1][1];i++){let a,s;for(let o=n[0][0];o<=n[0][1];o++){const c=e(o,i,r);if(c===void 0){a=void 0;continue}s||(s=[],this.rows.set(i+r*this.height,s)),a&&a.value!==c&&(a=void 0),a||(a={start:o,end:o,value:c},s.push(a)),a.end++}}}findAdjacents(e,{diagonals:n=!0,planar:r=!0,singlePlane:i=!1}){const[a,s,o,c]=e,{start:l,end:u}=a,f=l>0&&this.getRLE(l-1,s,o),g=u0?l-1:l,u=this.height||C<0||C>=this.depth)continue;const y=this.getRun(T,C);if(y)for(const x of y){const w=c||i&&gc||r&&v>0&&sm||r&&v<0&&am||fc;x.end<=h[0]||x.start>=h[1]||d.push([x,T,C,w])}}return d}};to.getScalarData=function(e=Uint8ClampedArray){const n=new e(this.frameSize);return this.map.updateScalarData(n),n};let en=to,Ui=class Er{constructor(e={}){this._dimensions=3,this._length=0,this._byteSize=4,this.growSize=128;const{initialSize:n=1024,dimensions:r=3,growSize:i=128}=e,a=n*r;this.growSize=i,this.array=new ArrayBuffer(a*this._byteSize),this.data=new Float32Array(this.array),this._dimensions=r}forEach(e){for(let n=0;n=this._length)return;const n=this._dimensions*e;return this.data.subarray(n,n+this._dimensions)}getPointArray(e){const n=[];if(e<0&&(e+=this._length),e<0||e>=this._length)return;const r=this._dimensions*e;for(let i=0;ie)}toXYZ(){const e={x:[],y:[]};this._dimensions>=3&&(e.z=[]);const{x:n,y:r,z:i}=e;return this.forEach(a=>{n.push(a[0]),r.push(a[1]),i&&i.push(a[2])}),e}static fromXYZ({x:e,y:n,z:r}){const i=Er.create3(e.length);let a=0;for(let s=0;sr.push(i)),r}static create2(e=128){return new Er({initialSize:e,dimensions:2})}};function _u(t){const e=z(),n=t.getDimensions(),r=Ui.create3(n[0]),i=Ui.create3(n[1]),a=Ui.create3(n[2]),s=t.getDirection(),o=s.slice(0,3),c=s.slice(3,6),l=s.slice(6,9),u=t.getSpacing(),[f,g,h]=u,d=t.indexToWorld([0,0,0]),m=Me(o[0]*f,o[1]*f,o[2]*f),p=Me(c[0]*g,c[1]*g,c[2]*g),v=Me(l[0]*h,l[1]*h,l[2]*h),T=z();for(let w=0;w{const[R,D,S]=w,O=R*3,V=D*3,L=S*3;return E[0]=C[O]+y[V]+x[L],E[1]=C[O+1]+y[V+1]+x[L+1],E[2]=C[O+2]+y[V+2]+x[L+2],E}}function Uu(t,e){const{pointInShapeFn:n,callback:r,boundsIJK:i,returnPoints:a=!1}=e;let s;if(t.getScalarData)s=t.getScalarData();else{const f=t.getPointData().getScalars();if(f)s=f.getData();else{const{voxelManager:g}=t.get("voxelManager")||{};g&&(s=g.getCompleteScalarDataArray())}}const o=t.getDimensions(),c=[[0,o[0]],[0,o[1]],[0,o[2]]],u=om({imageData:t,bounds:i||c,scalarData:s,pointInShapeFn:n,callback:r});return a?u:void 0}function om({imageData:t,bounds:e,scalarData:n,pointInShapeFn:r,callback:i}){const[[a,s],[o,c],[l,u]]=e,{numComps:f}=t,g=t.getDimensions(),h=_u(t),d=[0,0,0],m=f||n.length/g[2]/g[1]/g[0],p=g[0]*m,v=g[1]*p,T=[];for(let C=l;C<=u;C++){d[2]=C;const y=C*v;for(let x=o;x<=c;x++){d[1]=x;const w=y+x*p;for(let E=a;E<=s;E++){d[0]=E;const R=h(d);if(r(R,d)){const D=w+E*m;let S;m>2?S=[n[D],n[D+1],n[D+2]]:S=n[D],T.push({value:S,index:D,pointIJK:d,pointLPS:R.slice()}),i({value:S,index:D,pointIJK:d,pointLPS:R})}}}}return T}function cm({voxelManager:t,bounds:e,imageData:n,pointInShapeFn:r,callback:i,returnPoints:a}){const[[s,o],[c,l],[u,f]]=e,g=_u(n),h=[0,0,0],d=[];for(let m=u;m<=f;m++){h[2]=m;for(let p=c;p<=l;p++){h[1]=p;for(let v=s;v<=o;v++){h[0]=v;const T=g(h);if(r(T,h)){const C=t.toIndex(h),y=t.getAtIndex(C);a&&d.push({value:y,index:C,pointIJK:[...h],pointLPS:T.slice()}),i==null||i({value:y,index:C,pointIJK:h,pointLPS:T})}}}}return d}const lm=5*1024;let nr=class be{get id(){return this._id}constructor(e,n){this.modifiedSlices=new Set,this.boundsIJK=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],this.scalarData=null,this._sliceDataCache=null,this.getAtIJK=(r,i,a)=>{const s=this.toIndex([r,i,a]);return this._get(s)},this.setAtIJK=(r,i,a,s)=>{const o=this.toIndex([r,i,a]),c=this._set(o,s);return c!==!1&&(this.modifiedSlices.add(a),be.addBounds(this.boundsIJK,[r,i,a])),c},this.getAtIJKPoint=([r,i,a])=>this.getAtIJK(r,i,a),this.setAtIJKPoint=([r,i,a],s)=>{this.setAtIJK(r,i,a,s)},this.getAtIndex=r=>this._get(r),this.setAtIndex=(r,i)=>{const a=this._set(r,i);if(a!==!1){const s=this.toIJK(r);this.modifiedSlices.add(s[2]),be.addBounds(this.boundsIJK,s)}return a},this.getMiddleSliceData=()=>{const r=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:r,slicePlane:2})},this.forEach=(r,i={})=>{const a=i.boundsIJK||this.getBoundsIJK(),s=i.isInObject||this.isInObject||(()=>!0),o=i.returnPoints||!1,c=i.imageData,l=Math.min(a[0][0],a[0][1]),u=Math.max(a[0][0],a[0][1]),f=Math.min(a[1][0],a[1][1]),g=Math.max(a[1][0],a[1][1]),h=Math.min(a[2][0],a[2][1]),d=Math.max(a[2][0],a[2][1]),m=[];if(c)return cm({voxelManager:this,imageData:i.imageData,bounds:[[l,u],[f,g],[h,d]],pointInShapeFn:s,callback:r,returnPoints:o});if(this.map){if(this.map instanceof en)return this.rleForEach(r,i);for(const p of this.map.keys()){const v=this.toIJK(p);if(!s(null,v))continue;const T=this._get(p);o&&m.push({value:T,index:p,pointIJK:v,pointLPS:null}),r({value:T,index:p,pointIJK:v,pointLPS:null})}return m}else{for(let p=h;p<=d;p++){const v=p*this.frameSize;for(let T=f;T<=g;T++){const C=v+T*this.width;for(let y=l,x=C+y;y<=u;y++,x++){const w=this.getAtIndex(x),E=[y,T,p];s(null,E)&&(o&&m.push({value:w,index:x,pointIJK:E,pointLPS:null}),r({value:w,index:x,pointIJK:[y,T,p],pointLPS:null}))}}}return m}},this.getSliceData=({sliceIndex:r,slicePlane:i})=>{const[a,s,o]=this.dimensions,c=a*s,l=r*c;let u;const f=this.getConstructor();function g(d){return typeof d=="function"}if(!g(f))return new Uint8Array(0);let h;switch(i){case 0:u=s*o,h=new f(u);for(let d=0;d{const a=Array.isArray(i);if(e===void 0&&(e=a?[...i]:i,n=a?[...i]:i),a)for(let s=0;s[0,e-1])}getBoundsIJK(){return this.boundsIJK[0][0]{e[0]=1/0,e[1]=-1/0})}clear(){var e,n;(e=this.map)==null||e.clear(),this.clearBounds(),this.modifiedSlices.clear(),(n=this.points)==null||n.clear()}getConstructor(){return this.scalarData?this.scalarData.constructor:this._getConstructor?this._getConstructor():(console.warn("No scalar data available or can be used to get the constructor"),Float32Array)}getArrayOfModifiedSlices(){return Array.from(this.modifiedSlices)}resetModifiedSlices(){this.modifiedSlices.clear()}setBounds(e){this.boundsIJK=e}static addBounds(e,n){e||(e=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]]),e[0][0]=Math.min(n[0],e[0][0]),e[0][1]=Math.max(n[0],e[0][1]),e[1][0]=Math.min(n[1],e[1][0]),e[1][1]=Math.max(n[1],e[1][1]),e[2][0]=Math.min(n[2],e[2][0]),e[2][1]=Math.max(n[2],e[2][1])}addPoint(e){const n=Array.isArray(e)?e[0]+this.width*e[1]+this.frameSize*e[2]:e;this.points||(this.points=new Set),this.points.add(n)}getPoints(){return this.points?[...this.points].map(e=>this.toIJK(e)):[]}setSliceDataValue(e,n,r){if(Array.isArray(r))for(let i=0;i(s*=r,[n[s++],n[s++],n[s++]]),_id:i||"_createRGBScalarVolumeVoxelManager",_set:(s,o)=>{s*=3;const c=!Oe(n[s],o);return n[s++]=o[0],n[s++]=o[1],n[s++]=o[2],c},numberOfComponents:r,scalarData:n});return a.clear=()=>{n.fill(0)},a}static createImageVolumeVoxelManager({dimensions:e,imageIds:n,numberOfComponents:r=1,id:i}){const a=e[0]*e[1];function s(f){const g=Math.floor(f/a);if(g<0||g>=e[2])return{};const h=n[g];if(!h)return console.warn(`ImageId not found for sliceIndex: ${g}`),{pixelData:null,pixelIndex:null};const d=K.getImage(h);if(!d)return console.warn(`Image not found for imageId: ${h}`),{pixelData:null,pixelIndex:null};const m=d.voxelManager,p=f%a;return{voxelManager:m,pixelIndex:p}}function o(f){const{voxelManager:g,pixelIndex:h}=s(f);return!g||h===null?null:g.getAtIndex(h)}function c(f,g){const{voxelManager:h,pixelIndex:d}=s(f);if(!h||d===null)return!1;const m=h.getAtIndex(d),p=!Oe(g,m);return p&&(h.setAtIndex(d,g),!0)}const l=()=>{const{voxelManager:f,pixelIndex:g}=s(0);return!f||g===null?null:f.getConstructor()},u=new be(e,{_get:o,_set:c,numberOfComponents:r,_getConstructor:l,_id:i||"createImageVolumeVoxelManager"});return u.getMiddleSliceData=()=>{const f=Math.floor(e[2]/2);return u.getSliceData({sliceIndex:f,slicePlane:2})},u.clear=()=>{for(const f of n)K.getImage(f).voxelManager.clear()},u.getRange=()=>{let f=1/0,g=-1/0;for(const h of n){const d=K.getImage(h);d&&(d.minPixelValueg&&(g=d.maxPixelValue))}return f===1/0&&g===-1/0?[0,0]:[f,g]},u._getScalarDataLength=()=>{const{voxelManager:f,pixelIndex:g}=s(0);return!f||g===null?0:f.getScalarDataLength()*e[2]},u.getCompleteScalarDataArray=()=>{const f=u._getConstructor();if(!f)return new Uint8Array(0);const g=u.getScalarDataLength(),h=new f(g),d=e[0]*e[1]*r;for(let m=0;m{const g=e[0]*e[1]*r,h=u._getConstructor();let d=1/0,m=-1/0;for(let p=0;p4||r<1||r===2))throw new Error(`Number of components ${r} must be 1, 3 or 4`);return r>1?be._createRGBScalarVolumeVoxelManager({dimensions:e,scalarData:n,numberOfComponents:r,id:i}):be._createNumberVolumeVoxelManager({dimensions:e,scalarData:n,id:i})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:e,dimensions:n,dimensionGroupNumber:r=1,timePoint:i=0,numberOfComponents:a=1,id:s}){let o=0;if(r!==void 0?o=r-1:i!==void 0&&(console.warn("Warning: timePoint parameter is deprecated. Please use dimensionGroupNumber instead. timePoint is zero-based while dimensionGroupNumber starts at 1."),o=i),!a){const u=K.getImage(e[0][0]);if(!u)throw new Error("Unable to determine number of components: No image found");if(a=u.getPixelData().length/(n[0]*n[1]),a>4||a<1||a===2)throw new Error(`Number of components ${a} must be 1, 3 or 4`)}const c=e.map(u=>be.createImageVolumeVoxelManager({dimensions:n,imageIds:u,numberOfComponents:a,id:s})),l=new be(n,{_get:u=>c[o]._get(u),_set:(u,f)=>c[o]._set(u,f),numberOfComponents:a,_id:s||"createScalarDynamicVolumeVoxelManager"});return l.getScalarDataLength=()=>c[o].getScalarDataLength(),l.getConstructor=()=>c[o].getConstructor(),l.getRange=()=>c[o].getRange(),l.getMiddleSliceData=()=>c[o].getMiddleSliceData(),l.setTimePoint=u=>{console.warn("Warning: setTimePoint is deprecated. Please use setDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.setDimensionGroupNumber(u+1)},l.setDimensionGroupNumber=u=>{o=u-1,l._get=f=>c[o]._get(f),l._set=(f,g)=>c[o]._set(f,g)},l.getAtIndexAndTimePoint=(u,f)=>(console.warn("Warning: getAtIndexAndTimePoint is deprecated. Please use getAtIndexAndDimensionGroup instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getAtIndexAndDimensionGroup(u,f+1)),l.getAtIndexAndDimensionGroup=(u,f)=>c[f-1]._get(u),l.getTimePointScalarData=u=>(console.warn("Warning: getTimePointScalarData is deprecated. Please use getDimensionGroupScalarData instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),l.getDimensionGroupScalarData(u+1)),l.getDimensionGroupScalarData=u=>c[u-1].getCompleteScalarDataArray(),l.getCurrentTimePointScalarData=()=>(console.warn("Warning: getCurrentTimePointScalarData is deprecated. Please use getCurrentDimensionGroupScalarData instead."),l.getCurrentDimensionGroupScalarData()),l.getCurrentDimensionGroupScalarData=()=>c[o].getCompleteScalarDataArray(),l.getCurrentTimePoint=()=>(console.warn("Warning: getCurrentTimePoint is deprecated. Please use getCurrentDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),o),l.getCurrentDimensionGroupNumber=()=>o+1,l}static createImageVoxelManager({width:e,height:n,scalarData:r,numberOfComponents:i=1,id:a}){const s=[e,n,1];if(!i&&(i=r.length/e/n,i>4||i<1||i===2))throw new Error(`Number of components ${i} must be 1, 3 or 4`);return i>1?be._createRGBScalarVolumeVoxelManager({dimensions:s,scalarData:r,numberOfComponents:i,id:a}):be._createNumberVolumeVoxelManager({dimensions:s,scalarData:r,id:a})}static _createNumberVolumeVoxelManager({dimensions:e,scalarData:n,id:r}){const i=new be(e,{_get:a=>n[a],_set:(a,s)=>{const o=n[a]!==s;return n[a]=s,o},_getConstructor:()=>n.constructor,_id:r||"_createNumberVolumeVoxelManager"});return i.scalarData=n,i.clear=()=>{i.scalarData.fill(0)},i.getMiddleSliceData=()=>{const a=Math.floor(e[2]/2);return i.getSliceData({sliceIndex:a,slicePlane:2})},i}static createMapVoxelManager({dimension:e,id:n}){const r=new Map,i=new be(e,{_get:r.get.bind(r),_set:(a,s)=>r.set(a,s)&&!0,_id:n||"createMapVoxelManager"});return i.map=r,i}static createHistoryVoxelManager(e,n){const r=new Map,{dimensions:i}=e,a=new be(i,{_get:s=>r.get(s),_set:function(s,o){if(r.has(s))o===r.get(s)&&r.delete(s);else{const c=this.sourceVoxelManager.getAtIndex(s);if(c===o)return!1;r.set(s,c)}this.sourceVoxelManager.setAtIndex(s,o)},_id:n||"createHistoryVoxelManager"});return a.map=r,a.scalarData=e.scalarData,a.sourceVoxelManager=e,a}static createRLEHistoryVoxelManager(e,n){const{dimensions:r}=e,i=new en(r[0],r[1],r[2]),a=new be(r,{_get:s=>i.get(s),_set:function(s,o){const c=i.get(s);if(c===void 0){const l=this.sourceVoxelManager.getAtIndex(s);if(l===o||l===void 0&&o===0||o===null)return!1;i.set(s,l??0)}else(o===c||o===null)&&(i.delete(s),o=c);this.sourceVoxelManager.setAtIndex(s,o)},_getScalarData:en.getScalarData,_updateScalarData:s=>(i.updateScalarData(s),s),_id:n||"createRLEHistoryVoxelManager"});return a.map=i,a.sourceVoxelManager=e,a}static createLazyVoxelManager({dimensions:e,planeFactory:n,id:r}){const i=new Map,[a,s]=e,o=a*s,c=new be(e,{_get:l=>i.get(Math.floor(l/o))[l%o],_set:(l,u)=>{const f=Math.floor(l/o);let g=i.get(f);return g||(g=n(a,s),i.set(f,g)),g[l%o]=u,!0},_id:r||"createLazyVoxelManager"});return c.map=i,c}static createRLEVolumeVoxelManager({dimensions:e,id:n}){const[r,i,a]=e,s=new en(r,i,a),o=new be(e,{_get:c=>s.get(c),_set:(c,l)=>(s.set(c,l),!0),_getScalarData:en.getScalarData,_updateScalarData:c=>(s.updateScalarData(c),c),_id:n||"createRLEVolumeVoxelManager"});return o.map=s,o.getPixelData=s.getPixelData.bind(s),o}static createRLEImageVoxelManager({dimensions:e,id:n}){const[r,i]=e;return be.createRLEVolumeVoxelManager({dimensions:[r,i,1],id:n})}static addInstanceToImage(e){const{width:n,height:r}=e,i=e.voxelManager.getScalarData();if(i.length>=n*r){e.voxelManager=be.createScalarVolumeVoxelManager({dimensions:[n,r,1],scalarData:i});return}e.voxelManager=be.createRLEVolumeVoxelManager({dimensions:[n,r,1]}),e.getPixelData=e.voxelManager.getPixelData,e.sizeInBytes=lm}};class $0{constructor(e){this._imageIdsIndexMap=new Map,this._imageURIsIndexMap=new Map,this.cornerstoneImageMetaData=null,this.isPreScaled=!1,this.numTimePoints=null,this.numFrames=null;const{imageIds:n,scaling:r,dimensions:i,spacing:a,origin:s,direction:o,dataType:c,volumeId:l,referencedVolumeId:u,metadata:f,referencedImageIds:g,additionalDetails:h,voxelManager:d,numberOfComponents:m}=e;if(!c)throw new Error('Data type is required, please provide a data type as string such as "Uint8Array", "Float32Array", etc.');let{imageData:p}=e;this.imageIds=n,this.volumeId=l,this.metadata=f,this.dimensions=i,this.spacing=a,this.origin=s,this.direction=o,this.dataType=c,this.vtkOpenGLTexture=_p.newInstance(),this.vtkOpenGLTexture.setVolumeId(l),this.voxelManager=d??nr.createImageVolumeVoxelManager({dimensions:i,imageIds:n,numberOfComponents:m}),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],p||(p=ta.newInstance(),p.setDimensions(i),p.setSpacing(a),p.setDirection(o),p.setOrigin(s)),p.set({dataType:c,voxelManager:this.voxelManager,id:l,numberOfComponents:m||1}),p.set({hasScalarVolume:!1}),this.imageData=p,this.numFrames=this._getNumFrames(),this._reprocessImageIds(),r&&(this.scaling=r),u&&(this.referencedVolumeId=u),g&&(this.referencedImageIds=g),h&&(this.additionalDetails=h)}get sizeInBytes(){return this.voxelManager.sizeInBytes}get imageIds(){return this._imageIds}set imageIds(e){this._imageIds=e,this._reprocessImageIds()}_reprocessImageIds(){this._imageIdsIndexMap.clear(),this._imageURIsIndexMap.clear(),this._imageIds.forEach((e,n)=>{const r=ot(e);this._imageIdsIndexMap.set(e,n),this._imageURIsIndexMap.set(r,n)})}isDynamicVolume(){return this.numTimePoints>1}getImageIdIndex(e){return this._imageIdsIndexMap.get(e)}getImageIdByIndex(e){return this._imageIds[e]}getImageURIIndex(e){return this._imageURIsIndexMap.get(e)}load(e){}destroy(){this.imageData.delete(),this.imageData=null,this.voxelManager.clear(),this.vtkOpenGLTexture.releaseGraphicsResources(),this.vtkOpenGLTexture.delete()}invalidate(){for(let e=0;eK.getImage(n))}}let hr={};const _a={add:(t,e)=>{_a.addRaw(t,{...e,metadata:structuredClone(e.metadata)})},addRaw:(t,e)=>{const n=e.type;hr[t]||(hr[t]={}),hr[t][n]=e.metadata},get:(t,e)=>{var n;return(n=hr[e])==null?void 0:n[t]},clear:()=>{hr={}}};N0(_a.get);const It=new md("imageLoadPool");It.grabDelay=0;It.setMaxSimultaneousRequests(Z.Interaction,1e3);It.setMaxSimultaneousRequests(Z.Thumbnail,1e3);It.setMaxSimultaneousRequests(Z.Prefetch,1e3);const um={};let fm;function ku(t,e){const n=K.getImageLoadObject(t);if(n)return hc(n.promise,t),n;const r=t.split(":")[0],i=um[r]||fm;if(!i)throw new Error(`loadImageFromImageLoader: No image loader found for scheme '${r}'`);const a=i(t,e);return hc(a.promise,t),a}function hc(t,e){Promise.resolve(t).then(n=>{gm(n),$(ne,A.IMAGE_LOADED,{image:n})}).catch(n=>{const r={imageId:e,error:n};$(ne,A.IMAGE_LOAD_FAILED,r)})}function gm(t){if(!t.voxelManager){const{width:e,height:n,numberOfComponents:r}=t,i=nr.createImageVoxelManager({scalarData:t.getPixelData(),width:e,height:n,numberOfComponents:r});t.voxelManager=i,t.getPixelData=()=>i.getScalarData(),delete t.imageFrame.pixelData}}function hm(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadImage: parameter imageId must not be undefined");return ku(t,e).promise}function rr(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const n=ku(t,e);return K.getImageLoadObject(t)||K.putImageLoadObject(t,n),n.promise}function dm(t,e){const{scalarData:n,origin:r,direction:i,targetBuffer:a,skipCreateBuffer:s,onCacheAdd:o,frameOfReferenceUID:c,voxelRepresentation:l,referencedImageId:u}=e,f=e.dimensions,g=e.spacing;if(!f||!g)throw new Error("createAndCacheLocalImage: dimensions and spacing are required");const h=f[0],d=f[1],m=g[0],p=g[1],v={frameOfReferenceUID:c,rows:d,columns:h,imageOrientationPatient:i??[1,0,0,0,1,0],rowCosines:i?i.slice(0,3):[1,0,0],columnCosines:i?i.slice(3,6):[0,1,0],imagePositionPatient:r??[0,0,0],pixelSpacing:[p,m],rowPixelSpacing:p,columnPixelSpacing:m},T=h*d,C=n.length/T;let y;if(n){if(!(n instanceof Uint8Array||n instanceof Float32Array||n instanceof Uint16Array||n instanceof Int16Array))throw new Error("createAndCacheLocalImage: scalarData must be of type Uint8Array, Uint16Array, Int16Array or Float32Array");y=n}else if(!s){const{TypedArrayConstructor:U}=V2(a==null?void 0:a.type,T);y=new U(T)}let x,w,E;if(y instanceof Uint8Array)x=8,w=8,E=7;else if(y instanceof Uint16Array)x=16,w=16,E=15;else if(y instanceof Int16Array)x=16,w=16,E=15;else if(y instanceof Float32Array)x=32,w=32,E=31;else throw new Error("Unsupported scalarData type");const R={samplesPerPixel:1,photometricInterpretation:y.length>f[0]*f[1]?"RGB":"MONOCHROME2",rows:d,columns:h,bitsAllocated:x,bitsStored:w,highBit:E},D={imagePlaneModule:v,imagePixelModule:R};["imagePlaneModule","imagePixelModule"].forEach(U=>{_a.add(t,{type:U,metadata:D[U]||{}})});const S=t,O=l===zi.RLE&&nr.createRLEImageVoxelManager({dimensions:f,id:S})||nr.createImageVoxelManager({height:d,width:h,numberOfComponents:C,scalarData:y,id:S});let V=y[0],L=y[0];for(let U=1;UL&&(L=y[U]);const b={imageId:t,intercept:0,windowCenter:0,windowWidth:0,color:R.photometricInterpretation==="RGB",numberOfComponents:R.samplesPerPixel,dataType:a==null?void 0:a.type,slope:1,minPixelValue:V,maxPixelValue:L,rows:R.rows,columns:R.columns,getCanvas:void 0,height:R.rows,width:R.columns,rgba:void 0,columnPixelSpacing:v.columnPixelSpacing,rowPixelSpacing:v.rowPixelSpacing,FrameOfReferenceUID:v.frameOfReferenceUID,invert:!1,getPixelData:()=>O.getScalarData(),voxelManager:O,sizeInBytes:n.byteLength,referencedImageId:u};return o==null||o(b),K.putImageSync(b.imageId,b),b}function Pu(t){const e=t[0],{pixelRepresentation:n,bitsAllocated:r,bitsStored:i,highBit:a,photometricInterpretation:s,samplesPerPixel:o}=j("imagePixelModule",e),c=[],l=j("voiLutModule",e);let u;if(l){const{windowWidth:T,windowCenter:C}=l;if(u=l==null?void 0:l.voiLUTFunction,Array.isArray(T))for(let y=0;y({distance:l(m),imageId:m}));h.sort((m,p)=>p.distance-m.distance);const d=h.length;c=Math.abs(h[d-1].distance-h[0].distance)/(d-1)}const{sliceThickness:u,spacingBetweenSlices:f}=j("imagePlaneModule",t[0]),{strictZSpacingForVolumeViewport:g}=I0().rendering;return(c===0||isNaN(c))&&!g&&(f?(console.debug("Could not calculate spacing. Using spacingBetweenSlices"),c=f):u?(console.debug("Could not calculate spacing and no spacingBetweenSlices. Using sliceThickness"),c=u):(console.debug("Could not calculate spacing. The VolumeViewport visualization is compromised. Setting spacing to 1 to render"),c=1)),c}function Bu(t,e){const{imagePositionPatient:n,imageOrientationPatient:r}=j("imagePlaneModule",t[0]);if(!e){const u=Me(r[0],r[1],r[2]),f=Me(r[3],r[4],r[5]);e=z(),ye(e,u,f)}const i=t[0].split(":")[0]==="wadouri",a=Gu(t);let s;function o(u){const{imagePositionPatient:f}=j("imagePlaneModule",u),g=z();return De(g,n,f),le(g,e)}if(i){const u=[t[0],t[Math.floor(t.length/2)]];s=t;const f=o(u[0]),g=o(u[1]);f-g<0&&s.reverse()}else{const u=t.map(f=>({distance:o(f),imageId:f}));u.sort((f,g)=>g.distance-f.distance),s=u.map(f=>f.imageId)}const{imagePositionPatient:c}=j("imagePlaneModule",s[0]);return{zSpacing:a,origin:c,sortedImageIds:s}}function Au(t){const e=j("modalityLutModule",t)||{},n=j("generalSeriesModule",t)||{},{modality:r}=n,i={rescaleSlope:e.rescaleSlope||1,rescaleIntercept:e.rescaleIntercept??0,modality:r},a=j("scalingModule",t)||{};return{...i,...r==="PT"&&{suvbw:a.suvbw,suvbsa:a.suvbsa,suvlbm:a.suvlbm},...r==="RTDOSE"&&{doseGridScaling:a.DoseGridScaling,doseSummation:a.DoseSummation,doseType:a.DoseType,doseUnit:a.DoseUnit}}}const j0=t=>Object.values(t).some(n=>typeof n=="number"&&!Number.isInteger(n)),dc={Uint8Array:"Uint8Array",Int16Array:"Int16Array",Uint16Array:"Uint16Array",Float32Array:"Float32Array"};function Wu(t,e){const n=Pu(t),{ImageOrientationPatient:r,PixelSpacing:i,Columns:a,Rows:s}=n,o=Me(r[0],r[1],r[2]),c=Me(r[3],r[4],r[5]),l=z();ye(l,o,c);const{zSpacing:u,origin:f,sortedImageIds:g}=Bu(t,l),h=t.length,d=[i[1],i[0],u],m=[a,s,h].map(v=>Math.floor(v)),p=[...o,...c,...l];return{dimensions:m,spacing:d,origin:f,dataType:pm(g,n),direction:p,metadata:n,imageIds:g,volumeId:e,voxelManager:null,numberOfComponents:n.PhotometricInterpretation==="RGB"?3:1}}function pm(t,e){const{BitsAllocated:n,PixelRepresentation:r}=e,i=r===1,a=mm(t);if(a)return a;const[s,o,c]=[0,Math.floor(t.length/2),t.length-1],l=[s,o,c].map(h=>Au(t[h])),u=l.some(h=>h.rescaleIntercept<0||h.rescaleSlope<0),f=l.some(h=>j0(h)),g=I2();switch(n){case 8:return"Uint8Array";case 16:return g&&f?"Float32Array":i||u?"Int16Array":!i&&!u?"Uint16Array":"Float32Array";case 24:return"Uint8Array";case 32:return"Float32Array";default:throw new Error(`Bits allocated of ${n} is not defined to generate scalarData for the volume.`)}}function mm(t){const n=[0,Math.floor(t.length/2),t.length-1].map(i=>K.getImage(t[i]));if(!n.every(Boolean))return null;const r=n[0].getPixelData().constructor.name;return n.every(i=>i.getPixelData().constructor.name===r)&&r in dc?dc[r]:null}class ir{constructor(e){this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const n=new ir("as iterator");return e.then(r=>{try{n.add(r,!0)}catch(i){n.reject(i)}},r=>{n.reject(r)}),n}add(e,n=!1){this.nextValue=e,this.done||(this.done=n),this.waiting&&(this.waiting.resolve(e),this.waiting=void 0)}resolve(){this.done=!0,this.waiting&&(this.waiting.resolve(this.nextValue),this.waiting=void 0)}reject(e){var n;this.rejectReason=e,(n=this.waiting)==null||n.reject(e)}getRecent(){if(this.rejectReason)throw this.rejectReason;return this.nextValue}async*[Symbol.asyncIterator](){for(;!this.done;){if(this.rejectReason)throw this.rejectReason;if(this.nextValue!==void 0&&(yield this.nextValue,this.done))break;this.waiting||(this.waiting={},this.waiting.promise=new Promise((e,n)=>{this.waiting.resolve=e,this.waiting.reject=n})),await this.waiting.promise}yield this.nextValue}async forEach(e,n){let r=0;try{for await(const i of this){const{done:a}=this;try{await e(i,a,r),r++}catch(s){if(!a){console.warn("Caught exception in intermediate value",s);continue}if(n)n(s,a);else throw s}}}catch(i){if(n)n(i,!0);else throw i}}generate(e,n){return e(this,this.reject.bind(this)).then(()=>{this.done||this.resolve()},r=>{this.reject(r),n?n(r):console.warn("Couldn't process because",r)})}async nextPromise(){for await(const e of this)if(e)return e;return this.nextValue}async donePromise(){for await(const e of this);return this.nextValue}getNextPromise(){const e=this.nextPromise();return e.iterator=this,e}getDonePromise(){const e=this.donePromise();return e.iterator=this,e}}const kn=new Map,pc="imageRetrieveConfiguration",jr={IMAGE_RETRIEVE_CONFIGURATION:pc,clear:()=>{kn.clear()},add:(t,e)=>{kn.set(t,e)},clone:()=>new Map(kn),restore:t=>{kn.clear(),t.forEach((e,n)=>{kn.set(n,e)})},get:(t,...e)=>{if(t===pc)return e.map(n=>kn.get(n)).find(n=>n!==void 0)}};N0(jr.get.bind(jr));function zu(t){const e=Va(),n=[];return e.forEach(r=>{const a=r.getVolumeViewports().filter(s=>s.hasVolumeId(t));n.push(...a)}),n}const Fs=t=>{const e=vm(t);e!=null&&e.length&&e.forEach(({renderingEngine:n,viewportIds:r})=>{n.hasBeenDestroyed||n.renderViewports(r)})};function vm(t){const e=Va(),n=[];return e.forEach(r=>{const i=zu(t);i.length&&n.push({renderingEngine:r,viewportIds:i.map(a=>a.id)})}),n}const mc=[{id:"initialImages",retrieveType:"single"}],ym=[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}],es=[{offset:-1,imageQualityStatus:rt.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:rt.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:rt.FAR_REPLICATE}],Tm=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:Z.Thumbnail,priority:5,nearbyFrames:es},{id:"quarterThumb",decimate:4,offset:3,requestType:Z.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:es},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:Z.Thumbnail,retrieveType:"multipleFast",nearbyFrames:es},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:Z.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:Z.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:Z.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:Z.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function $u(t,e,n=0){const r=[];for(let i=n;i=s)continue;const c={...n,imageId:a,imageQualityStatus:s};K.setPartialImage(a,c),t.successCallback(a,c)}catch(a){console.warn("Couldn't fill nearby item ",i.itemId,a)}}const jn=class jn{constructor(e){this.stages=e.stages||mc,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,n){return new xm(this,e,n).loadImages()}};jn.createProgressive=ju,jn.interleavedRetrieveStages={stages:Tm},jn.singleRetrieveStages={stages:mc},jn.sequentialRetrieveStages={stages:ym};let ca=jn;class xm{constructor(e,n,r){this.outstandingRequests=0,this.stageStatusMap=new Map,this.displayedIterator=new ir("displayed"),this.stages=e.stages,this.retrieveOptions=e.retrieveOptions,this.imageIds=n,this.listener=r}async loadImages(){const e=this.createStageRequests();this.outstandingRequests=e.length;for(const n of e)this.addRequest(n);return this.outstandingRequests===0?Promise.resolve(null):this.displayedIterator.getDonePromise()}sendRequest(e,n){const{imageId:r,next:i}=e,a=(u,f)=>{this.listener.errorCallback(r,c||!i,u),f&&this.updateStageStatus(e.stage,u)},s=(n.loader||rr)(r,n),o=ir.as(s);let c=!1;return o.forEach(async(u,f)=>{const g=K.getImageQuality(r);if(!u){console.warn("No image retrieved",r);return}const{imageQualityStatus:h}=u;if(c||(c=h===rt.FULL_RESOLUTION),g!==void 0&&g>h){this.updateStageStatus(e.stage,null,!0);return}this.listener.successCallback(r,u),this.displayedIterator.add(u),f&&this.updateStageStatus(e.stage),Cm(this.listener,e,u)},a).finally(()=>{if(!c&&i)K.setPartialImage(r),this.addRequest(i,n.streamingData);else{c||this.listener.errorCallback(r,!0,"Couldn't decode"),this.outstandingRequests--;for(let u=i;u;u=u.next)this.updateStageStatus(u.stage,null,!0)}this.outstandingRequests<=0&&this.displayedIterator.resolve()}),o.getDonePromise().catch(u=>null)}addRequest(e,n={}){const{imageId:r,stage:i}=e,a=this.listener.getLoaderImageOptions(r);if(!a)return;const{retrieveType:s="default"}=i,{retrieveOptions:o}=this,c=o[s]||o.default,l={...a,retrieveType:s,retrieveOptions:c,streamingData:n},u=i.priority??-5,f=i.requestType||Z.Interaction,g={imageId:r};It.addRequest(this.sendRequest.bind(this,e,l),f,g,u)}updateStageStatus(e,n,r=!1){const{id:i}=e,a=this.stageStatusMap.get(i);if(a&&(a.imageLoadPendingCount--,n?a.imageLoadFailedCount++:r||a.totalImageCount++,!r&&!a.stageStartTime&&(a.stageStartTime=Date.now()),!a.imageLoadPendingCount)){const{imageLoadFailedCount:s,totalImageCount:o,stageStartTime:c=Date.now(),startTime:l}=a,u={stageId:i,numberOfFailures:s,numberOfImages:o,stageDurationInMS:c?Date.now()-c:null,startDurationInMS:Date.now()-l};$(ne,A.IMAGE_RETRIEVAL_STAGE,u),this.stageStatusMap.delete(i)}}createStageRequests(){const e=new Array,n=new Map,r=(i,a)=>{const s=a<0?this.imageIds.length+a:a<1?Math.floor((this.imageIds.length-1)*a):a,o=this.imageIds[s];if(!o)throw new Error(`No value found to add to requests at ${a}`);const c={imageId:o,stage:i,index:s,nearbyRequests:this.findNearbyRequests(s,i)};this.addStageStatus(i);const l=n.get(o);l?l.next=c:e.push(c),n.set(o,c)};for(const i of this.stages)(i.positions||$u(this.imageIds,i.decimate||1,i.offset??0)).forEach(s=>{r(i,s)});return e}findNearbyRequests(e,n){const r=new Array;if(!n.nearbyFrames)return r;for(const i of n.nearbyFrames){const a=e+i.offset;a<0||a>=this.imageIds.length||r.push({itemId:this.imageIds[a],imageQualityStatus:i.imageQualityStatus,index:a})}return r}addStageStatus(e){const{id:n}=e,r=this.stageStatusMap.get(n)||{stageId:n,startTime:Date.now(),stageStartTime:null,totalImageCount:0,imageLoadFailedCount:0,imageLoadPendingCount:0};return r.imageLoadPendingCount++,this.stageStatusMap.set(n,r),r}}function ju(t){return new ca(t)}const vc=Z.Prefetch;class wm extends $0{constructor(e,n){super(e),this.framesLoaded=0,this.framesProcessed=0,this.framesUpdated=0,this.autoRenderOnLoad=!0,this.cachedFrames=[],this.reRenderTarget=0,this.reRenderFraction=2,this.imagesLoader=this,this.cancelLoading=()=>{const{loadStatus:r}=this;if(!r||!r.loading)return;r.loading=!1,r.cancelled=!0,this.clearLoadCallbacks();const i=({additionalDetails:a})=>a.volumeId!==this.volumeId;It.filterRequests(i)},this.loadStatus=n.loadStatus}invalidateVolume(e){const{vtkOpenGLTexture:n}=this,{numFrames:r}=this;for(let i=0;ithis.reRenderTarget||r===i)&&(this.reRenderTarget+=s,Fs(a)),r===i){o.callbacks.forEach(f=>f(e));const u={FrameOfReferenceUID:l,volumeId:a};$(ne,A.IMAGE_VOLUME_LOADING_COMPLETED,u)}}updateTextureAndTriggerEvents(e,n,r=rt.FULL_RESOLUTION){const i=this.imageIdIndexToFrameIndex(e),{cachedFrames:a,numFrames:s,totalNumFrames:o}=this,{FrameOfReferenceUID:c}=this.metadata;if(a[i]>r||a[i]===rt.FULL_RESOLUTION)return;const u=r===rt.FULL_RESOLUTION;a[e]=r,this.framesUpdated++,u&&(this.framesLoaded++,this.framesProcessed++);const f={FrameOfReferenceUID:c,volumeId:this.volumeId,numberOfFrames:s,framesProcessed:this.framesProcessed};$(ne,A.IMAGE_VOLUME_MODIFIED,f),u&&this.framesProcessed===this.totalNumFrames&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!0,imageIdIndex:e,imageId:n,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:s,totalNumFrames:o,complete:u,imageQualityStatus:r}),this.vtkOpenGLTexture.setUpdatedFrame(i),this.loadStatus.loaded&&(this.loadStatus.callbacks=[])}successCallback(e,n){const r=this.getImageIdIndex(e),{imageQualityStatus:i}=n;if(this.loadStatus.cancelled){console.warn("volume load cancelled, returning for imageIdIndex: ",r);return}this.updateTextureAndTriggerEvents(r,e,i),this.isDynamicVolume()&&this.checkDimensionGroupCompletion(r)}errorCallback(e,n,r){if(!n)return;const{totalNumFrames:i,numFrames:a}=this,s=this.getImageIdIndex(e);this.framesProcessed++,this.framesProcessed===i&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!1,imageId:e,imageIdIndex:s,error:r,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:a,totalNumFrames:i}),this.loadStatus.loaded&&(this.loadStatus.callbacks=[]);const o={error:r,imageIdIndex:s,imageId:e};$(ne,A.IMAGE_LOAD_ERROR,o)}load(e){const{imageIds:n,loadStatus:r,numFrames:i}=this,{transferSyntaxUID:a}=j("transferSyntax",n[0])||{},s=j(jr.IMAGE_RETRIEVE_CONFIGURATION,this.volumeId,a,"volume");if(this.imagesLoader=this.isDynamicVolume()?this:s?(s.create||ca.createProgressive)(s):this,r.loading===!0)return;const{loaded:o}=this.loadStatus,c=n.length;if(o){e&&e({success:!0,framesLoaded:c,framesProcessed:c,numFrames:i,totalNumFrames:c});return}e&&this.loadStatus.callbacks.push(e),this._prefetchImageIds()}getLoaderImageOptions(e){const{transferSyntaxUID:n}=j("transferSyntax",e)||{},r=j("imagePlaneModule",e)||{},{rows:i,columns:a}=r,s=this.getImageIdIndex(e),o=j("modalityLutModule",e)||{},c=j("generalSeriesModule",e)||{},l={rescaleSlope:o.rescaleSlope,rescaleIntercept:o.rescaleIntercept,modality:c.modality},u=l.modality;if(u==="PT"||u==="RTDOSE"){const d=j("scalingModule",e);d&&(this._addScalingToVolume(d),Object.assign(l,d))}const f=j0(l),g=I2();if(this.isPreScaled=!0,l&&l.rescaleSlope!==void 0&&l.rescaleIntercept!==void 0){const{rescaleSlope:d,rescaleIntercept:m}=l;this.isPreScaled=typeof d=="number"&&typeof m=="number"}return!g&&f&&(this.isPreScaled=!1),{targetBuffer:{type:this.dataType,rows:i,columns:a},allowFloatRendering:g,preScale:{enabled:this.isPreScaled,scalingParameters:l},transferPixelData:!0,requestType:vc,transferSyntaxUID:n,additionalDetails:{imageId:e,imageIdIndex:s,volumeId:this.volumeId}}}callLoadImage(e,n,r){const{cachedFrames:i}=this;if(i[n]===rt.FULL_RESOLUTION)return;const a=o=>{const{image:c}=o.detail;c.imageId===e&&(this.vtkOpenGLTexture.setUpdatedFrame(n),ne.removeEventListener(A.IMAGE_CACHE_IMAGE_ADDED,a))};return ne.addEventListener(A.IMAGE_CACHE_IMAGE_ADDED,a),ir.as(rr(e,r)).forEach(o=>{this.successCallback(e,o)},this.errorCallback.bind(this,n,e))}getImageIdsRequests(e,n){this.totalNumFrames=this.imageIds.length;const r=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(r/100),this.reRenderTarget=this.reRenderFraction),e.map(a=>{const s=this.getImageIdIndex(a),o=vc,c=n,l=this.getLoaderImageOptions(a);return{callLoadImage:this.callLoadImage.bind(this),imageId:a,imageIdIndex:s,options:l,priority:c,requestType:o,additionalDetails:{volumeId:this.volumeId}}})}getImageLoadRequests(e){throw new Error("Abstract method")}getImageIdsToLoad(){throw new Error("Abstract method")}loadImages(){return this.loadStatus.loading=!0,this.getImageLoadRequests(5).reverse().forEach(n=>{if(!n)return;const{callLoadImage:r,imageId:i,imageIdIndex:a,options:s,priority:o,requestType:c,additionalDetails:l}=n;It.addRequest(r.bind(this,i,a,s),c,l,o)}),Promise.resolve(!0)}_prefetchImageIds(){this.loadStatus.loading=!0;const e=[...this.getImageIdsToLoad()];this.totalNumFrames=this.imageIds.length;const n=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(n/100),this.reRenderTarget=this.reRenderFraction),this.imagesLoader.loadImages(e,this).catch(r=>{console.debug("progressive loading failed to complete",r)})}_addScalingToVolume(e){if(this.scaling)return;const{suvbw:n,suvlbm:r,suvbsa:i}=e,a={};r&&(a.suvbwToSuvlbm=r/n),i&&(a.suvbwToSuvbsa=i/n),n&&(a.suvbw=n),this.scaling={PT:a}}checkDimensionGroupCompletion(e){}}class Sm extends wm{constructor(e,n){e.imageIds||(e.imageIds=n.imageIds),super(e,n),this.getImageIdsToLoad=()=>{const{imageIds:r}=this;return this.numFrames=r.length,r}}getScalarData(){return this.voxelManager.getScalarData()}getImageLoadRequests(e){const{imageIds:n}=this;return this.getImageIdsRequests(n,e)}}function Mm(t,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a streaming image volume");async function n(){if(e.imageIds[0].split(":")[0]==="wadouri"){const[d,m]=[Math.floor(e.imageIds.length/2),e.imageIds.length-1],p=[0,d,m];await Promise.all(p.map(v=>K.isLoaded(e.imageIds[v])?Promise.resolve(!0):new Promise((T,C)=>{const y=e.imageIds[v];It.addRequest(async()=>{hm(y).then(()=>{console.log(`Prefetched imageId: ${y}`),T(!0)}).catch(x=>{C(x)})},Z.Prefetch,{volumeId:t},1)}))).catch(console.error)}const i=Wu(e.imageIds,t),{dimensions:a,spacing:s,origin:o,direction:c,metadata:l,imageIds:u,dataType:f,numberOfComponents:g}=i;return new Sm({volumeId:t,metadata:l,dimensions:a,spacing:s,origin:o,direction:c,imageIds:u,dataType:f,numberOfComponents:g},{imageIds:u,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}})}const r=n();return{promise:r,decache:()=>{r.then(i=>{i.destroy(),i=null})},cancel:()=>{r.then(i=>{i.cancelLoading()})}}}const Hu={};let ki=Mm;function Ku(t,e){const n=t.indexOf(":"),r=t.substring(0,n);let i=Hu[r];if(i==null){if(ki==null||typeof ki!="function")throw new Error(`No volume loader for scheme ${r} has been registered`);i=ki}const a=i(t,e);return a.promise.then(function(s){$(ne,A.VOLUME_LOADED,{volume:s})},function(s){const o={volumeId:t,error:s};$(ne,A.VOLUME_LOADED_FAILED,o)}),a}function Em(t,e={imageIds:[]}){if(t===void 0)throw new Error("loadVolume: parameter volumeId must not be undefined");let n=K.getVolumeLoadObject(t);return n!==void 0?n.promise:(n=Ku(t,e),n.promise.then(r=>r))}async function Rm(t,e){if(t===void 0)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let n=K.getVolumeLoadObject(t);return n!==void 0||(n=Ku(t,e),K.putVolumeLoadObject(t,n)),n.promise}function Om(t,e={}){const{metadata:n,dimensions:r,spacing:i,origin:a,direction:s,scalarData:o,targetBuffer:c,preventCache:l=!1}=e,u=K.getVolume(t);if(u)return u;const f=r[0]*r[1],g=o?o.constructor.name:(c==null?void 0:c.type)??"Float32Array",h=f*r[2];let d;switch(g){case"Uint8Array":case"Int8Array":d=h;break;case"Uint16Array":case"Int16Array":d=h*2;break;case"Float32Array":d=h*4;break}if(!K.isCacheable(d))throw new Error(`Cannot created derived volume: Volume with id ${t} is not cacheable.`);const p=[];for(let C=0;C1&&(f=Math.min(...f),g=Math.max(...g)),{lower:f,upper:g}}function Um(t,e){var n;return!(t!=="PT"||!e.isPreScaled||!((n=e.scaling)!=null&&n.PT.suvbw))}async function yc(t,e,n,r=!1){const{volumeId:i,callback:a,blendMode:s}=t,o=await Em(i);if(!o)throw new Error(`imageVolume with id: ${o.volumeId} does not exist`);const{imageData:c,vtkOpenGLTexture:l}=o,u=Im(c,l);s&&u.setBlendMode(s);const f=I8.newInstance();f.setMapper(u);const{numberOfComponents:g}=c.get("numberOfComponents");return f.getProperty().set({viewportId:n}),g===3&&f.getProperty().setIndependentComponents(!1),await H0(f,o),a&&a({volumeActor:f,volumeId:i}),r||km(e,n,f,i),f}function km(t,e,n,r){const i=n.getProperty().getRGBTransferFunction(0).getRange(),a={viewportId:e,range:{lower:i[0],upper:i[1]},volumeId:r};$(t,A.VOI_MODIFIED,a)}const qu=t=>{const e="volumeId:",n=t.includes(e)?t.substring(e.length):t,r=n.indexOf("sliceIndex=");return r===-1?n:n.substring(0,r-1)},Pm=1+yt,Gm=(t,e)=>e===t.substring(0,Math.min(t.length,e.length)),Tc=t=>!!Dm().find(e=>Gm(t.volumeId,e));function K0(t,e,n,r=!1){const{viewPlaneNormal:i}=e,a=t.getActors();if(!a.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const s=a.map(l=>{const u=l.referencedId??l.uid;return K.getVolume(u)}).filter(l=>!!l);if(n){const l=qu(n),u=s.findIndex(d=>l.includes(d.volumeId)),f=s[u],{uid:g}=a[u],h=Cc(f,i,t,r);return{imageVolume:f,spacingInNormalDirection:h,actorUID:g}}if(!s.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const o={spacingInNormalDirection:1/0,imageVolume:null,actorUID:null},c=s.find(Tc);for(let l=0;ld.referencedId===r.volumeId||d.uid===r.volumeId);s||console.warn("No actor found for with actorUID of",r.volumeId);const o=s.actor,c=Na(o,i,a),{min:l,max:u,current:f}=c,g=Math.round((u-l)/n)+1;let h=(f-l)/(u-l)*g;return h=Math.floor(h),h>g-1?h=g-1:h<0&&(h=0),{numberOfSlices:g,imageIndex:h}}const $n={};function Bm(t){$n[t]!==void 0&&delete $n[t]}function Am(t){const{renderingEngineId:e,viewportId:n}=t.detail,i=Da(e).getViewport(n);if(!("setVolumes"in i))throw new Error("volumeNewImageEventDispatcher: viewport does not have setVolumes method");$n[i.id]===void 0&&($n[i.id]=0);const a=la(i);if(!a){console.warn(`volumeNewImageEventDispatcher: sliceData is undefined for viewport ${i.id}`);return}const{numberOfSlices:s,imageIndex:o}=a;if($n[i.id]===o)return;$n[i.id]=o;const c={imageIndex:o,viewportId:n,renderingEngineId:e,numberOfSlices:s};$(i.element,A.VOLUME_NEW_IMAGE,c)}function Yu(t,e,n){const[r,i,a]=t,[s,o,c]=e,[l,u,f,g]=n,h=s-r,d=o-i,m=c-a,p=-1*(l*r+u*i+f*a-g)/(l*h+u*d+f*m),v=h*p+r,T=d*p+i,C=m*p+a;return[v,T,C]}function Xu(t,e,n=!1){const[r,i,a]=t,s=r*e[0]+i*e[1]+a*e[2];if(n){const o=Math.sqrt(r*r+i*i+a*a);return[r/o,i/o,a/o,s/o]}return[r,i,a,s]}function Wm(t,e,n){const[r,i,a,s]=t,[o,c,l,u]=e,[f,g,h,d]=n,m=ci(r,o,f,i,c,g,a,l,h),p=ci(s,u,d,i,c,g,a,l,h),v=ci(r,o,f,s,u,d,a,l,h),T=ci(r,o,f,i,c,g,s,u,d),C=Fn(p)/Fn(m),y=Fn(v)/Fn(m),x=Fn(T)/Fn(m);return[C,y,x]}function q0(t,e,n=!1){const[r,i,a,s]=t,[o,c,l]=e,u=r*o+i*c+a*l-s,f=Math.abs(u)/Math.sqrt(r*r+i*i+a*a);return(n?Math.sign(u):1)*f}function zm(t,e,n=yt){return q0(e,t)Number.isNaN(e)):Number.isNaN(t)}function Hr(t){if(t===null||typeof t!="object"||typeof t=="function"||typeof structuredClone=="function")return t;if(Array.isArray(t))return t.map(Hr);{const e={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=Hr(t[n]));return e}}const _r=class _r{constructor(e){this.insetImageMultiplier=1.1,this.flipHorizontal=!1,this.flipVertical=!1,this.viewportStatus=Ke.NO_DATA,this._suppressCameraModifiedEvents=!1,this.hasPixelSpacing=!0,this.getProperties=()=>({}),this.setRotation=n=>{},this.viewportWidgets=new Map,this.addWidget=(n,r)=>{this.viewportWidgets.set(n,r)},this.getWidget=n=>this.viewportWidgets.get(n),this.getWidgets=()=>Array.from(this.viewportWidgets.values()),this.removeWidgets=()=>{this.getWidgets().forEach(r=>{if(r.getEnabled()&&r.setEnabled(!1),r.getActor&&r.getRenderer){const i=r.getActor(),a=r.getRenderer();a&&i&&a.removeActor(i)}})},this.id=e.id,this.renderingEngineId=e.renderingEngineId,this.type=e.type,this.element=e.element,this.canvas=e.canvas,this.sx=e.sx,this.sy=e.sy,this.sWidth=e.sWidth,this.sHeight=e.sHeight,this._actors=new Map,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.defaultOptions=Hr(e.defaultOptions),this.suppressEvents=e.defaultOptions.suppressEvents?e.defaultOptions.suppressEvents:!1,this.options=Hr(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus===Ke.NO_DATA||this.viewportStatus===Ke.LOADING||(this.viewportStatus=Ke.RENDERED)}setColorTransform(e,n){let r=null;if(!e&&!n)return;const i=n||[255,255,255],a=Math.max(...i),s=i.map(f=>a/f),{lower:o=0,upper:c=255}=e||{},l=(c-o+1)/255,u=o/255;return r=`url('data:image/svg+xml, #colour')`,r}getRenderingEngine(){return Gr.get(this.renderingEngineId)}getRenderer(){var n;const e=this.getRenderingEngine();if(!e||e.hasBeenDestroyed)throw new Error("Rendering engine has been destroyed");return(n=e.offscreenMultiRenderWindow)==null?void 0:n.getRenderer(this.id)}render(){this.getRenderingEngine().renderViewport(this.id)}setOptions(e,n=!1){var r,i;this.options=structuredClone(e),(r=this.options)!=null&&r.displayArea&&this.setDisplayArea((i=this.options)==null?void 0:i.displayArea),n&&this.render()}reset(e=!1){this.options=structuredClone(this.defaultOptions),e&&this.render()}getSliceViewInfo(){throw new Error("Method not implemented.")}flip({flipHorizontal:e,flipVertical:n}){const r=this.getDefaultImageData();if(!r)return;const i=this.getCamera(),{viewPlaneNormal:a,viewUp:s,focalPoint:o,position:c}=i,l=ye(z(),a,s);let u=xh(z(),s);const f=an(z(),a),g=Tl(c,o),d=r.getDimensions().map(x=>Math.floor(x/2)),m=[d[0],d[1],d[2]],p=r.indexToWorld(m,z()),v=this._getFocalPointForResetCamera(p,i,{resetPan:!0,resetToCenter:!1}),T=ze(z(),o,v),C=rn(T),y=x=>{const w=vt(z(),x,2*le(T,x));return ze(w,w,T),Pe(w,w),w};if(e){const x=y(u),w=qe(z(),v,x,C),E=qe(z(),w,f,g);this.setCamera({viewPlaneNormal:f,position:E,focalPoint:w}),this.flipHorizontal=!this.flipHorizontal}if(n){u=an(u,s);const x=y(l),w=qe(z(),v,x,C),E=qe(z(),w,f,g);this.setCamera({focalPoint:w,viewPlaneNormal:f,viewUp:u,position:E}),this.flipVertical=!this.flipVertical}this.render()}getDefaultImageData(){const e=this.getDefaultActor();if(e&&dt(e))return e.actor.getMapper().getInputData()}getDefaultActor(){return this.getActors()[0]}getActors(){return Array.from(this._actors.values())}getActorUIDs(){return Array.from(this._actors.keys())}getActor(e){return this._actors.get(e)}getImageActor(e){const n=this.getActors();let r=n[0];return e&&(r=n.find(a=>a.referencedId===e)),!r||!dt(r)?null:r.actor}getActorUIDByIndex(e){const n=this.getActors()[e];if(n)return n.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){const n=this.getActors();this.removeAllActors(),this.addActors(e,{resetCamera:!0}),$(this.element,A.ACTORS_CHANGED,{viewportId:this.id,removedActors:n,addedActors:e,currentActors:e})}_removeActor(e){const n=this.getActor(e);if(!n){console.warn(`Actor ${e} does not exist in ${this.id}, can't remove`);return}return this.getRenderer().removeActor(n.actor),this._actors.delete(e),n}removeActors(e){const n=[];e.forEach(i=>{const a=this._removeActor(i);a&&n.push(a)});const r=this.getActors();$(this.element,A.ACTORS_CHANGED,{viewportId:this.id,removedActors:n,addedActors:[],currentActors:r})}addActors(e,n={}){const{resetCamera:r=!1}=n,i=this.getRenderingEngine();if(!i||i.hasBeenDestroyed){console.warn("Viewport::addActors::Rendering engine has not been initialized or has been destroyed");return}e.forEach(o=>{this.addActor(o)});const a=this.getViewPresentation(),s=this.getViewReference();this.resetCamera(),r||(this.setViewReference(s),this.setViewPresentation(a)),$(this.element,A.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:e,currentActors:this.getActors()})}addActor(e){const{uid:n,actor:r}=e,i=this.getRenderingEngine();if(!i||i.hasBeenDestroyed){console.warn(`Cannot add actor UID of ${n} Rendering Engine has been destroyed`);return}if(!n||!r)throw new Error("Actors should have uid and vtk Actor properties");if(this.getActor(n)){console.warn(`Actor ${n} already exists for this viewport`);return}const a=this.getRenderer();a==null||a.addActor(r),this._actors.set(n,Object.assign({},e)),this.updateCameraClippingPlanesAndRange(),$(this.element,A.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:[e],currentActors:this.getActors()})}removeAllActors(){var n;const e=this.getActors();(n=this.getRenderer())==null||n.removeAllViewProps(),this._actors=new Map,$(this.element,A.ACTORS_CHANGED,{viewportId:this.id,removedActors:e,addedActors:[],currentActors:[]})}resetCameraNoEvent(){this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=!1}setCameraNoEvent(e){this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=!1}_getViewImageDataIntersections(e,n,r){const i=r[0],a=r[1],s=r[2],o=i*n[0]+a*n[1]+s*n[2],c=e.getBounds(),l=this._getEdges(c),u=[];for(const f of l){const[[g,h,d],[m,p,v]]=f;if(i*(m-g)+a*(p-h)+s*(v-d)===0)continue;const T=Yu([g,h,d],[m,p,v],[i,a,s,o]);this._isInBounds(T,c)&&u.push(T)}return u}setInterpolationType(e,n){}setDisplayArea(e,n=!1){var s;if(!e)return;const{storeAsInitialCamera:r,type:i}=e;r&&(this.options.displayArea=e);const{_suppressCameraModifiedEvents:a}=this;if(this._suppressCameraModifiedEvents=!0,this.setCamera(this.fitToCanvasCamera),i==="SCALE"?this.setDisplayAreaScale(e):(this.setInterpolationType(((s=this.getProperties())==null?void 0:s.interpolationType)??Bt.LINEAR),this.setDisplayAreaFit(e)),r&&(this.initialCamera=this.getCamera()),this._suppressCameraModifiedEvents=a,!n&&!a){const o={viewportId:this.id,displayArea:e,storeAsInitialCamera:r};$(this.element,A.DISPLAY_AREA_MODIFIED,o),this.setCamera(this.getCamera())}}setDisplayAreaScale(e){const{scale:n=1}=e,r=this.canvas,i=r.height,a=r.width;if(i<8||a<8)return;const c=this.getDefaultImageData().getSpacing()[1];this.setInterpolationType(Bt.NEAREST),this.setCamera({parallelScale:i*c/(2*n)}),delete e.imageArea,this.setDisplayAreaFit(e);const{focalPoint:l,position:u,viewUp:f,viewPlaneNormal:g}=this.getCamera(),h=z();if(r.height%2&&qe(h,h,f,n*.5*c),r.width%2){const d=ye(z(),f,g);qe(h,h,d,n*.5*c)}!h[0]&&!h[1]&&!h[2]||this.setCamera({focalPoint:zt(z(),l,h),position:zt(z(),u,h)})}setDisplayAreaFit(e){const{imageArea:n,imageCanvasPoint:r}=e,i=(window==null?void 0:window.devicePixelRatio)||1,a=this.getDefaultImageData();if(!a)return;const s=this.sWidth/i,o=this.sHeight/i,c=a.getDimensions(),l=this.worldToCanvas(a.indexToWorld([0,0,0])),u=this.worldToCanvas(a.indexToWorld([c[0],c[1],c[2]])),f=[Math.abs(u[0]-l[0]),Math.abs(u[1]-l[1])],[g,h]=f;let d=this.getZoom()/this.insetImageMultiplier;if(n){const[m,p]=n,v=Math.max(Math.abs(g/s),Math.abs(h/o)),T=Math.abs(m*g/s),C=Math.abs(p*h/o),y=this.getZoom(),x=this.getZoom(this.fitToCanvasCamera);d=(T>C?v/T:v/C)*y/x,this.setZoom(this.insetImageMultiplier*d,!1)}if(r){const{imagePoint:m,canvasPoint:p=m||[.5,.5]}=r,[v,T]=p,C=s*(v-.5),y=o*(T-.5),[x,w]=m||p,E=d,R=this.insetImageMultiplier*E*g*(.5-x),D=this.insetImageMultiplier*E*h*(.5-w),S=R+C,O=D+y,V=[S,O];v0(V,V,this.getPan()),this.setPan(V,!1)}}getDisplayArea(){var e;return(e=this.options)==null?void 0:e.displayArea}resetCamera(e){const{resetPan:n=!0,resetZoom:r=!0,resetToCenter:i=!0,storeAsInitialCamera:a=!0}=e||{},s=this.getRenderer();this.setCameraNoEvent({flipHorizontal:!1,flipVertical:!1});const o=this.getCamera();let c;const l=this.getDefaultActor();l&&dt(l)?c=l.actor.getMapper().getInputData().getBounds():c=s.computeVisiblePropBounds();const u=[0,0,0],f=this.getDefaultImageData();if(f){const b=f.getSpacing();c[0]=c[0]+b[0]/2,c[1]=c[1]-b[0]/2,c[2]=c[2]+b[1]/2,c[3]=c[3]-b[1]/2,c[4]=c[4]+b[2]/2,c[5]=c[5]-b[2]/2}const g=this.getVtkActiveCamera(),h=g.getViewPlaneNormal(),d=g.getViewUp();if(u[0]=(c[0]+c[1])/2,u[1]=(c[2]+c[3])/2,u[2]=(c[4]+c[5])/2,f){const U=f.getDimensions().map(P=>Math.floor(P/2)),I=[U[0],U[1],U[2]];f.indexToWorld(I,u)}const{widthWorld:m,heightWorld:p}=this._getWorldDistanceViewUpAndViewRight(c,d,h),v=[this.sWidth,this.sHeight],T=m/p,C=v[0]/v[1],y=T/C,x=y<1?this.insetImageMultiplier*p/2:this.insetImageMultiplier*p*y/2,w=_r.boundsRadius(c)*(this.type===xe.VOLUME_3D?10:1),E=this.insetImageMultiplier*w,R=Math.abs(ht.dot(d,h))>.999?[-d[2],d[0],d[1]]:d,D=this._getFocalPointForResetCamera(u,o,{resetPan:n,resetToCenter:i}),S=[D[0]+E*h[0],D[1]+E*h[1],D[2]+E*h[2]];s.resetCameraClippingRange(c);const O=[-Se.MAXIMUM_RAY_DISTANCE,Se.MAXIMUM_RAY_DISTANCE];g.setPhysicalScale(w),g.setPhysicalTranslation(-D[0],-D[1],-D[2]),this.setCamera({parallelScale:r?x:o.parallelScale,focalPoint:D,position:S,viewAngle:90,viewUp:R,clippingRange:O});const V=this.getCamera();this.setFitToCanvasCamera(this.getCamera()),a&&this.setInitialCamera(V),r&&this.setZoom(1,a);const L={type:"ResetCameraEvent",renderer:s};return s.invokeEvent(L),this.triggerCameraModifiedEventIfNecessary(o,V),f&&this.options.displayArea&&r&&n&&i&&this.setDisplayArea(this.options.displayArea),!0}setInitialCamera(e){this.initialCamera=e}setFitToCanvasCamera(e){this.fitToCanvasCamera=e}getPan(e=this.initialCamera){if(!e)return[0,0];const r=this.getVtkActiveCamera().getFocalPoint(),i=this.canvasToWorld([0,0]),a=this.worldToCanvas(ze([0,0,0],e.focalPoint,i)),s=this.worldToCanvas(ze([0,0,0],r,i));return Xi([0,0],a,s)}getCurrentImageIdIndex(){throw new Error("Not implemented")}getSliceIndex(){throw new Error("Not implemented")}getImageData(){throw new Error("Not implemented")}getViewReferenceId(e){return null}setPan(e,n=!1){const r=this.getCamera(),{focalPoint:i,position:a}=r,s=this.canvasToWorld([0,0]),o=Xi([0,0],e,this.getPan());if(Math.abs(o[0])<1&&Math.abs(o[1])<1&&!n)return;const c=ze(z(),this.canvasToWorld(o),s),l=ze(z(),i,c),u=ze(z(),a,c);this.setCamera({...r,focalPoint:l,position:u},n)}getZoom(e=this.initialCamera){if(!e)return 1;const n=this.getVtkActiveCamera(),{parallelScale:r}=e;return r/n.getParallelScale()}setZoom(e,n=!1){const r=this.getCamera(),{parallelScale:i}=this.initialCamera,a=i/e;r.parallelScale===a&&!n||this.setCamera({...r,parallelScale:a},n)}_getFocalPointForViewPlaneReset(e){const{focalPoint:n,viewPlaneNormal:r}=this.getCamera(),i=this._getViewImageDataIntersections(e,n,r);let a=0,s=0,o=0;return i.forEach(([l,u,f])=>{a+=l,s+=u,o+=f}),[a/i.length,s/i.length,o/i.length]}getCanvas(){return this.canvas}getVtkActiveCamera(){const e=this.getRenderer();return e?e.getActiveCamera():(console.warn("No renderer found for the viewport"),null)}getCameraNoRotation(){const e=this.getVtkActiveCamera(),n=(o,c)=>o.some(l=>isNaN(l))?c:o,r=n([...e.getViewUp()],[0,1,0]),i=n([...e.getViewPlaneNormal()],[0,0,-1]),a=n([...e.getPosition()],[0,0,1]),s=n([...e.getFocalPoint()],[0,0,0]);return{viewUp:r,viewPlaneNormal:i,position:a,focalPoint:s,parallelProjection:e.getParallelProjection(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle(),flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}getCamera(){return{...this.getCameraNoRotation(),rotation:this.getRotation()}}setCamera(e,n=!1){const r=this.getVtkActiveCamera(),i=this.getCamera(),a=Object.assign({},i,e),{viewUp:s,viewPlaneNormal:o,position:c,focalPoint:l,parallelScale:u,viewAngle:f,flipHorizontal:g,flipVertical:h,clippingRange:d}=e;if(g!==void 0){const v=g&&!this.flipHorizontal||!g&&this.flipHorizontal;v&&this.flip({flipHorizontal:v})}if(h!==void 0){const v=h&&!this.flipVertical||!h&&this.flipVertical;v&&this.flip({flipVertical:v})}s!==void 0&&r.setViewUp(s),o!==void 0&&r.setDirectionOfProjection(-o[0],-o[1],-o[2]),c!==void 0&&r.setPosition(...c),l!==void 0&&r.setFocalPoint(...l),u!==void 0&&r.setParallelScale(u),f!==void 0&&r.setViewAngle(f),d!==void 0&&r.setClippingRange(d);const m=i.focalPoint,p=i.viewUp;if(m&&l||p&&s){const v=r.getViewPlaneNormal(),T=r.getViewUp();let C=!1,y=!1;if(l){const x=[l[0]-m[0],l[1]-m[1],l[2]-m[2]];C=Math.abs(ht.dot(x,v))>0}if(s&&(y=!Oe(T,p)),C||y){const x=this.getDefaultActor();if(!(x!=null&&x.actor))return;Je(x,"vtkActor")||this.updateClippingPlanesForActors(a),(Je(x,"vtkImageSlice")||this.type===xe.VOLUME_3D)&&this.getRenderer().resetCameraClippingRange()}}n&&this.setInitialCamera(a),this.triggerCameraModifiedEventIfNecessary(i,this.getCamera())}triggerCameraModifiedEventIfNecessary(e,n){if(!this._suppressCameraModifiedEvents&&!this.suppressEvents){const r={previousCamera:e,camera:n,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.CAMERA_MODIFIED,r)}}updateCameraClippingPlanesAndRange(){const e=this.getCamera();this.updateClippingPlanesForActors(e),this.getRenderer().resetCameraClippingRange()}async updateClippingPlanesForActors(e){this.getActors().map(r=>{if(!r.actor)return;const i=r.actor.getMapper();let a=r!=null&&r.clippingFilter?r==null?void 0:r.clippingFilter.getClippingPlanes():i.getClippingPlanes();a.length===0&&(r!=null&&r.clippingFilter)&&(a=[$e.newInstance(),$e.newInstance()]);let s=Se.MINIMUM_SLAB_THICKNESS;r.slabThickness&&(s=r.slabThickness);const{viewPlaneNormal:o,focalPoint:c}=e;this.setOrientationOfClippingPlanes(a,s,o,c),$(this.element,A.CLIPPING_PLANES_UPDATED,{actorEntry:r,focalPoint:c,vtkPlanes:a,viewport:this})})}setOrientationOfClippingPlanes(e,n,r,i){if(e.length<2)return;const a=[r[0],r[1],r[2]];ht.multiplyScalar(a,n),e[0].setNormal(r);const s=[0,0,0];ht.subtract(i,a,s),e[0].setOrigin(s),e[1].setNormal(-r[0],-r[1],-r[2]);const o=[0,0,0];ht.add(i,a,o),e[1].setOrigin(o)}getClippingPlanesForActor(e){if(e||(e=this.getDefaultActor()),!e.actor)throw new Error("Invalid actor entry: Actor is undefined");const n=e.actor.getMapper();let r=e!=null&&e.clippingFilter?e==null?void 0:e.clippingFilter.getClippingPlanes():n.getClippingPlanes();return r.length===0&&(e!=null&&e.clippingFilter)&&(r=[$e.newInstance(),$e.newInstance()]),r}_getWorldDistanceViewUpAndViewRight(e,n,r){const i=this._getCorners(e),a=this._getCorners(e),s=ye(z(),n,r);let o=En.buildFromDegree().identity().rotateFromDirections(n,[1,0,0]);i.forEach(g=>o.apply(g));let c=1/0,l=-1/0;for(let g=0;g<8;g++){const h=i[g][0];h>l&&(l=h),ho.apply(g));let u=1/0,f=-1/0;for(let g=0;g<8;g++){const h=a[g][0];h>f&&(f=h),h=0&&this.setRotation(a)}_getCorners(e){return[[e[0],e[2],e[4]],[e[0],e[2],e[5]],[e[0],e[3],e[4]],[e[0],e[3],e[5]],[e[1],e[2],e[4]],[e[1],e[2],e[5]],[e[1],e[3],e[4]],[e[1],e[3],e[5]]]}_getFocalPointForResetCamera(e,n,{resetPan:r=!0,resetToCenter:i=!0}){if(i&&r)return e;if(i&&!r)return _s(n.focalPoint)?e:n.focalPoint;if(!i&&r){const a=n,s=a.focalPoint,o=a.viewPlaneNormal,c=ze(z(),e,s),l=le(c,o),u=qe(z(),e,o,-1*l);return[u[0],u[1],u[2]]}if(!r&&!i)return _s(n.focalPoint)?e:n.focalPoint}_isInBounds(e,n){const[r,i,a,s,o,c]=n,[l,u,f]=e;return!(li||us||fc)}_getEdges(e){const[n,r,i,a,s,o,c,l]=this._getCorners(e);return[[n,r],[n,s],[n,i],[r,a],[r,o],[i,a],[i,c],[a,l],[s,c],[s,o],[o,l],[c,l]]}static boundsRadius(e){const n=(e[1]-e[0])**2,r=(e[3]-e[2])**2,i=(e[5]-e[4])**2;return Math.sqrt(n+r+i||1)*.5}setDataIds(e,n){throw new Error("Unsupported operatoin setDataIds")}};_r.CameraViewPresentation={rotation:!0,pan:!0,zoom:!0,displayArea:!0},_r.TransferViewPresentation={windowLevel:!0,paletteLut:!0};let ar=_r;function Zu(t,e,n=!1){const r=t.getCamera(),{focalPoint:i,viewPlaneNormal:a}=r,{spacingInNormalDirection:s,actorUID:o}=K0(t,r,e,n);if(!o)throw new Error(`Could not find image volume with id ${e} in the viewport`);const c=t.getActor(o);if(!c)return console.warn("No actor found for with actorUID of",o),null;const l=c.actor;return{sliceRange:Na(l,a,i),spacingInNormalDirection:s,camera:r}}function Yn(t,e,n=!1){const{sliceRange:r,spacingInNormalDirection:i,camera:a}=Zu(t,e,n),{min:s,max:o,current:c}=r,l=Math.round((o-s)/i),f=(c-s)/(o-s)*l,g=Math.round(f);return{numScrollSteps:l,currentStepIndex:g,sliceRangeInfo:{sliceRange:r,spacingInNormalDirection:i,camera:a}}}function Ju(t){let e=[];const[n,r]=t.getRange();t.getTable(n,r,1024,e),e=e.filter((h,d)=>d%3===0);const i=[...Array(1024).keys()].map((h,d)=>n+(r-n)/1023*d),a=e[256],s=Math.log((1-a)/a),o=i[256],c=e[256*3],l=Math.log((1-c)/c),u=i[256*3],f=Math.round(4*(u-o)/(s-l)),g=Math.round(o+f*s/4);return[Math.round(g-f/2),Math.round(g+f/2)]}function Qu(t,e){const n=e.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:r}=jm(n),i=r[0],a=r[1]-r[0],s=ln.newInstance(),o=[];for(let y=0;y[a*r+e[0],s,o,c]);return n.removeAllPoints(),i.forEach(([a,s,o,c])=>n.addRGBPoint(a,s,o,c)),i}function Km(t,e,n){const r=e[1]-e[0],i=t.map(([a,s])=>[a*r+e[0],s]);return n.removeAllPoints(),i.forEach(([a,s])=>n.addPoint(a,s)),i}class Ua extends ar{constructor(e){if(super(e),this.useCPURendering=!1,this.perVolumeIdDefaultProperties=new Map,this.viewportProperties={},this.volumeIds=new Set,this.setRotation=i=>{const a=this.getPan(this.fitToCanvasCamera),s=this.getPan(),o=this.getCamera(),c=Zi([0,0],a,s);this.setPan(c,!1);const{flipVertical:l}=this.getCamera(),u=l?an([0,0,0],this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:u}),this.rotateCamera(i);const f=this.getPan(),g=this.getPan(this.fitToCanvasCamera),h=Zi([0,0],f,g),d=v0([0,0],a,h);if(this.setPan(d,!1),this._suppressCameraModifiedEvents)return;const m=this.getCamera(),p={previousCamera:o,camera:m,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.CAMERA_MODIFIED,p)},this.getDefaultProperties=i=>{let a;return i!==void 0&&(a=this.perVolumeIdDefaultProperties.get(i)),a!==void 0?a:{...this.globalDefaultProperties}},this.getProperties=i=>{var x;if(!this._getApplicableVolumeActor(i))return;const{colormap:s,VOILUTFunction:o,interpolationType:c,invert:l,slabThickness:u,preset:f}=this.viewportProperties;if(i||(i=this.getVolumeId()),!K.getVolume(i))return null;const h=this.getActors().find(w=>w.referencedId===i);if(!h)return;const m=h.actor.getProperty().getRGBTransferFunction(0),[p,v]=((x=this.viewportProperties)==null?void 0:x.VOILUTFunction)==="SIGMOID"?Ju(m):m.getRange(),T={lower:p,upper:v},C=this.getColormap(i);return{colormap:i&&C?C:s,voiRange:T,VOILUTFunction:o,interpolationType:c,invert:l,slabThickness:u,preset:f}},this.getColormap=i=>{const a=this._getApplicableVolumeActor(i);if(!a)return;const{volumeActor:s}=a,o=this._getOrCreateColorTransferFunction(i),{nodes:c}=o.getState(),l=c.reduce((h,d)=>(h.push(d.x,d.r,d.g,d.b),h),[]),u=k0(l,s)||{},f=G0(s),g=B0(s);return u.threshold=f,u.opacity=g,u},this.getRotation=()=>{const{viewUp:i,viewPlaneNormal:a,flipVertical:s}=this.getCameraNoRotation(),o=s?an([0,0,0],this.initialViewUp):this.initialViewUp;if(!o)return 0;const c=xl(o,i)*180/Math.PI,l=ye([0,0,0],o,i);return le(l,a)>=0?c:(360-c)%360},this.getFrameOfReferenceUID=()=>this._FrameOfReferenceUID,this.canvasToWorld=i=>{var f,g;const a=this.getVtkActiveCamera();(f=a.setIsPerformingCoordinateTransformation)==null||f.call(a,!0);const s=this.getRenderer(),o=this.getVtkDisplayCoords(i),u=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().displayToWorld(o[0],o[1],o[2],s);return(g=a.setIsPerformingCoordinateTransformation)==null||g.call(a,!1),[u[0],u[1],u[2]]},this.getVtkDisplayCoords=i=>{const a=window.devicePixelRatio||1,s=[i[0]*a,i[1]*a],l=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().getSize(),u=[s[0]+this.sx,s[1]+this.sy];return u[1]=l[1]-u[1],[u[0],u[1],0]},this.worldToCanvas=i=>{var d;const a=this.getVtkActiveCamera();(d=a.setIsPerformingCoordinateTransformation)==null||d.call(a,!0);const s=this.getRenderer(),c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),u=c.worldToDisplay(...i,s);u[1]=l[1]-u[1];const f=[u[0]-this.sx,u[1]-this.sy],g=window.devicePixelRatio||1,h=[f[0]/g,f[1]/g];return a.setIsPerformingCoordinateTransformation(!1),h},this.hasImageURI=i=>this.getActors().filter(s=>Je(s,"vtkVolume")).some(({uid:s,referencedId:o})=>{const c=K.getVolume(o||s);return c!=null&&c.imageIds?c.imageIds.map(ot).includes(i):!1}),this.getImageIds=i=>{const a=this._getApplicableVolumeActor(i);if(!a)throw new Error(`No actor found for the given volumeId: ${i}`);const s=a.volumeId,o=K.getVolume(s);if(!o)throw new Error(`imageVolume with id: ${s} does not exist in cache`);return o.imageIds},this.useCPURendering=Vr(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");const n=this.getRenderer(),r=Gp.newInstance();switch(n.setActiveCamera(r),this.type){case xe.ORTHOGRAPHIC:r.setParallelProjection(!0);break;case xe.VOLUME_3D:r.setParallelProjection(!0);break;case xe.PERSPECTIVE:r.setParallelProjection(!1);break;default:throw new Error(`Unrecognized viewport type: ${this.type}`)}this.initializeVolumeNewImageEventDispatcher()}static get useCustomRenderingPipeline(){return!1}getSliceViewInfo(){throw new Error("Method not implemented.")}applyViewOrientation(e,n=!0){const{viewPlaneNormal:r,viewUp:i}=this._getOrientationVectors(e),a=this.getVtkActiveCamera();a.setDirectionOfProjection(-r[0],-r[1],-r[2]),a.setViewUpFrom(i),this.initialViewUp=i,n&&this.resetCamera({resetOrientation:!1,resetRotation:!1})}initializeVolumeNewImageEventDispatcher(){const e=r.bind(this),n=i.bind(this);function r(a){const{viewportId:s}=a.detail;s!==this.id||this.isDisabled||!this.getImageData()||Am(a)}function i(a){const{viewportId:s}=a.detail;s===this.id&&(this.element.removeEventListener(A.CAMERA_MODIFIED,e),ne.removeEventListener(A.ELEMENT_DISABLED,n),Bm(s))}this.element.removeEventListener(A.CAMERA_MODIFIED,e),this.element.addEventListener(A.CAMERA_MODIFIED,e),ne.addEventListener(A.ELEMENT_DISABLED,n)}setVOILUTFunction(e,n,r){Object.values(Ae).includes(e)||(e=Ae.LINEAR);const{voiRange:i}=this.getProperties();this.setVOI(i,n,r),this.viewportProperties.VOILUTFunction=e}setColormap(e,n,r){const i=this._getApplicableVolumeActor(n);if(!i)return;const{volumeActor:a}=i,s=ln.newInstance();let o=$r(e.name);const{name:c}=e;if(o||(o=zr.getPresetByName(c)),!o)throw new Error(`Colormap ${e} not found`);const l=a.getProperty().getRGBTransferFunction(0).getRange();if(s.applyColorMap(o),s.setMappingRange(l[0],l[1]),a.getProperty().setRGBTransferFunction(0,s),this.viewportProperties.colormap=e,!r){const u=this.getColormap(n),f={viewportId:this.id,colormap:u,volumeId:n};$(this.element,A.VOI_MODIFIED,f),$(this.element,A.COLORMAP_MODIFIED,f)}}setOpacity(e,n){const r=this._getApplicableVolumeActor(n);if(!r)return;const{volumeActor:i}=r,a=Qn.newInstance();typeof e.opacity=="number"?fu(i,e.opacity):(e.opacity.forEach(({opacity:c,value:l})=>{a.addPoint(l,c)}),i.getProperty().setScalarOpacity(0,a)),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.opacity=e.opacity;const s=this.getColormap(n),o={viewportId:this.id,colormap:s,volumeId:n};$(this.element,A.COLORMAP_MODIFIED,o)}setInvert(e,n,r){const i=this._getApplicableVolumeActor(n);if(!i)return;const a=i.volumeId,s=this._getOrCreateColorTransferFunction(a);if(Lr(s),this.viewportProperties.invert=e,!r){const o={...this.getVOIModifiedEventDetail(a),invertStateChanged:!0};$(this.element,A.VOI_MODIFIED,o)}}getVOIModifiedEventDetail(e){const n=this._getApplicableVolumeActor(e);if(!n)throw new Error(`No actor found for the given volumeId: ${e}`);const a=n.volumeActor.getProperty().getRGBTransferFunction(0).getMappingRange(),s=this.getColormap(e),{VOILUTFunction:o,invert:c}=this.getProperties(e);return{viewportId:this.id,range:{lower:a[0],upper:a[1]},volumeId:n.volumeId,VOILUTFunction:o,colormap:s,invert:c}}_getOrCreateColorTransferFunction(e){const n=this._getApplicableVolumeActor(e);if(!n)return null;const{volumeActor:r}=n,i=r.getProperty().getRGBTransferFunction(0);if(i)return i;const a=ln.newInstance();return r.getProperty().setRGBTransferFunction(0,a),a}setInterpolationType(e,n){const r=this._getApplicableVolumeActor(n);if(!r)return;const{volumeActor:i}=r;i.getProperty().setInterpolationType(e),this.viewportProperties.interpolationType=e}setVOI(e,n,r=!1){const i=this._getApplicableVolumeActor(n);if(!i)return;const{volumeActor:a}=i,s=i.volumeId,o=e;if(typeof o>"u")throw new Error("voiRangeToUse is undefined, need to implement this in the new volume model");const{VOILUTFunction:c}=this.getProperties(s);if(c===Ae.SAMPLED_SIGMOID){const l=W0(o);a.getProperty().setRGBTransferFunction(0,l)}else{const{lower:l,upper:u}=o;a.getProperty().getRGBTransferFunction(0).setRange(l,u)}if(!r){const l={...this.getVOIModifiedEventDetail(s)};$(this.element,A.VOI_MODIFIED,l)}this.viewportProperties.voiRange=o}rotateCamera(e){const n=e-this.getRotation();this.getVtkActiveCamera().roll(-n)}setDefaultProperties(e,n){n==null?this.globalDefaultProperties=e:this.perVolumeIdDefaultProperties.set(n,e)}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perVolumeIdDefaultProperties.delete(e),this.resetToDefaultProperties(e))}getViewReference(e={}){const n=super.getViewReference(e),r=this.getVolumeId(e);if((e==null?void 0:e.forFrameOfReference)!==!1&&(n.volumeId=r),typeof(e==null?void 0:e.sliceIndex)!="number")return n;const{viewPlaneNormal:i}=n,a=(e==null?void 0:e.sliceIndex)-this.getSliceIndex(),{sliceRangeInfo:s}=Yn(this,r,!0),{sliceRange:o,spacingInNormalDirection:c,camera:l}=s,{focalPoint:u,position:f}=l,{newFocalPoint:g}=qn(u,f,o,i,c,a);return n.cameraFocalPoint=g,n}isReferenceViewable(e,n){if(!e.FrameOfReferenceUID||!super.isReferenceViewable(e,n))return!1;if(n!=null&&n.withNavigation)return!0;const r=this.getSliceIndex(),{sliceIndex:i}=e;return Array.isArray(i)?i[0]<=r&&r<=i[1]:i===void 0||i===r}scroll(e=1){const n=this.getVolumeId(),{sliceRangeInfo:r}=Yn(this,n,!0);if(!r)return;const{sliceRange:i,spacingInNormalDirection:a,camera:s}=r,{focalPoint:o,viewPlaneNormal:c,position:l}=s,{newFocalPoint:u,newPosition:f}=qn(o,l,i,c,a,e);this.setCamera({focalPoint:u,position:f}),this.render()}setViewReference(e){if(!e)return;const n=this.getVolumeId(),{viewPlaneNormal:r,FrameOfReferenceUID:i,cameraFocalPoint:a,referencedImageId:s,viewUp:o}=e;let{sliceIndex:c}=e;const{focalPoint:l,viewPlaneNormal:u,position:f}=this.getCamera(),g=cu(u,r),h=Oe(u,r);if(typeof c=="number"&&n!==void 0&&e.volumeId===n&&(g||h)){const{currentStepIndex:d,sliceRangeInfo:m,numScrollSteps:p}=Yn(this,n,!0),{sliceRange:v,spacingInNormalDirection:T}=m;g&&(c=p-c-1);const C=c-d,{newFocalPoint:y,newPosition:x}=qn(l,f,v,u,T,C);this.setCamera({focalPoint:y,position:x})}else if(i===this.getFrameOfReferenceUID()){if(r&&!g&&!h){this.setOrientation({viewPlaneNormal:r,viewUp:o}),this.setViewReference(e);return}if(s&&this.isInAcquisitionPlane()){const d=j(Ye.IMAGE_PLANE,s),{imagePositionPatient:m}=d,{focalPoint:p}=this.getCamera(),v=ze(z(),p,m),T=le(v,u),C=qe(z(),p,[-u[0],-u[1],-u[2]],T);this.setCamera({focalPoint:C}),this.render();return}if(a){const d=ze([0,0,0],a,l),m=r??u,p=le(d,m);Oe(p,0)||vt(d,m,p);const v=zt([0,0,0],l,d),T=zt([0,0,0],f,d);this.setCamera({focalPoint:v,position:T})}}else throw new Error(`Incompatible view refs: ${i}!==${this.getFrameOfReferenceUID()}`)}setThreshold(e,n){const r=this._getApplicableVolumeActor(n);if(!r)return;const{volumeActor:i}=r;gu(i,e.threshold),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.threshold=e.threshold;const a=this.getColormap(n),s={viewportId:this.id,colormap:a,volumeId:n};$(this.element,A.COLORMAP_MODIFIED,s)}setProperties({voiRange:e,VOILUTFunction:n,invert:r,colormap:i,preset:a,interpolationType:s,slabThickness:o}={},c,l=!1){this.globalDefaultProperties==null&&this.setDefaultProperties({voiRange:e,VOILUTFunction:n,invert:r,colormap:i,preset:a,slabThickness:o}),r!==void 0&&this.viewportProperties.invert!==r&&this.setInvert(r,c,l),i!=null&&i.name&&this.setColormap(i,c,l),(i==null?void 0:i.opacity)!=null&&this.setOpacity(i,c),(i==null?void 0:i.threshold)!=null&&this.setThreshold(i,c),e!==void 0&&this.setVOI(e,c,l),typeof s<"u"&&this.setInterpolationType(s),n!==void 0&&this.setVOILUTFunction(n,c,l),a!==void 0&&this.setPreset(a,c,l),o!==void 0&&this.setSlabThickness(o)}resetToDefaultProperties(e){var r,i;const n=this.globalDefaultProperties;(r=n.colormap)!=null&&r.name&&this.setColormap(n.colormap,e),((i=n.colormap)==null?void 0:i.opacity)!=null&&this.setOpacity(n.colormap,e),n.voiRange!==void 0&&this.setVOI(n.voiRange,e),n.VOILUTFunction!==void 0&&this.setVOILUTFunction(n.VOILUTFunction,e),n.invert!==void 0&&this.setInvert(n.invert,e),n.slabThickness!==void 0&&(this.setSlabThickness(n.slabThickness),this.viewportProperties.slabThickness=n.slabThickness),n.preset!==void 0&&this.setPreset(n.preset,e,!1),n.preset!==void 0&&this.setPreset(n.preset,e,!1),this.render()}setPreset(e,n,r){const i=this._getApplicableVolumeActor(n);if(!i)return;const{volumeActor:a}=i;let s=e;typeof s=="string"&&(s=o5.find(o=>o.name===e)),s&&(Qu(a,s),this.viewportProperties.preset=s,this.render(),r||$(this.element,A.PRESET_MODIFIED,{viewportId:this.id,volumeId:i.volumeId,actor:a,presetName:s.name}))}async setVolumes(e,n=!1,r=!1){const i=K.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist, you need to create/allocate the volume first`);const a=i.metadata.FrameOfReferenceUID;this._isValidVolumeInputArray(e,a),this._FrameOfReferenceUID=a,e.forEach(o=>{this._addVolumeId(o.volumeId)});const s=[];for(let o=0;o{this._addVolumeId(s.volumeId)});for(let s=0;sa.referencedId===e);return i?{volumeActor:i.actor,volumeId:e,actorUID:i.uid}:void 0}const r=n[0];return{volumeActor:r.actor,volumeId:r.referencedId,actorUID:r.uid}}async _isValidVolumeInputArray(e,n){const r=e.length;for(let i=1;iu.referencedId===e);if(!Je(r,"vtkVolume"))return;const i=r.actor,a=K.getVolume(e),s=i.getMapper().getInputData();return{dimensions:s.getDimensions(),spacing:s.getSpacing(),origin:s.getOrigin(),direction:s.getDirection(),imageData:i.getMapper().getInputData(),metadata:{Modality:(c=a==null?void 0:a.metadata)==null?void 0:c.Modality,FrameOfReferenceUID:(l=a==null?void 0:a.metadata)==null?void 0:l.FrameOfReferenceUID},get scalarData(){var u;return(u=a==null?void 0:a.voxelManager)==null?void 0:u.getScalarData()},scaling:a==null?void 0:a.scaling,hasPixelSpacing:!0,voxelManager:a==null?void 0:a.voxelManager}}setCameraClippingRange(){throw new Error("Method not implemented.")}getSliceIndex(){throw new Error("Method not implemented.")}setCamera(e,n){super.setCamera(e,n),this.setCameraClippingRange()}_setVolumeActors(e){for(let n=0;n-o),s=i.slice(3,6).map(o=>-o);return{viewPlaneNormal:a,viewUp:s}}getSlabThickness(){const e=this.getActors();let n=Se.MINIMUM_SLAB_THICKNESS;return e.forEach(r=>{r.slabThickness>n&&(n=r.slabThickness)}),n}getIntensityFromWorld(e){const n=this.getDefaultActor();if(!Je(n,"vtkVolume"))return;const{actor:r}=n,i=r.getMapper().getInputData(),a=K.getVolume(this.getVolumeId()),s=ba(i,e);return a.voxelManager.getAtIJKPoint(s)}getVolumeId(e){const n=this.getActors();if(!n)return;if(!(e!=null&&e.volumeId)){const i=n.find(a=>a.actor.getClassName()==="vtkVolume");return(i==null?void 0:i.referencedId)||(i==null?void 0:i.uid)}const r=n.find(i=>i.actor.getClassName()==="vtkVolume"&&i.referencedId===(e==null?void 0:e.volumeId));return(r==null?void 0:r.referencedId)||(r==null?void 0:r.uid)}getViewReferenceId(e={}){var c;let{volumeId:n,sliceIndex:r}=e;if(!n){const l=this.getActors();if(!l)return;n=(c=l.find(u=>u.actor.getClassName()==="vtkVolume"))==null?void 0:c.referencedId}const i=this.getSliceIndex();r??(r=i);const{viewPlaneNormal:a,focalPoint:s}=this.getCamera(),o=n.includes("?")?"&":"?";return`volumeId:${n}${o}sliceIndex=${r}&viewPlaneNormal=${a.join(",")}`}_addVolumeId(e){this.volumeIds.add(e)}getAllVolumeIds(){return Array.from(this.volumeIds)}}function tn(t,e){const{imageData:n}=t.getImageData(),r=t.canvasToWorld(e);return ba(n,r)}function ua(t,e){return t.indexToWorld(e)}function qm(t,e){const{imageData:n}=t.getImageData(),r=ua(n,e);return t.worldToCanvas(r)}class Kr extends Ua{constructor(e){super(e),this._useAcquisitionPlaneForViewPlane=!1,this.getNumberOfSlices=()=>{const{numberOfSlices:r}=la(this)||{};return r},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!1,suppressEvents:!0}),this.getCurrentImageIdIndex=(r,i=!0)=>{const{currentStepIndex:a}=Yn(this,r||this.getVolumeId(),i);return a},this.getSliceIndex=()=>{const{imageIndex:r}=la(this)||{};return r},this.getCurrentImageId=()=>{const r=this.getDefaultActor();if(!r||!Je(r,"vtkVolume"))return;const i=K.getVolume(this.getVolumeId());if(!i)return;const{viewPlaneNormal:a,focalPoint:s}=this.getCamera();return sa(i,s,a)},this.getSlicePlaneCoordinates=()=>{const r=this.getDefaultActor();if(!(r!=null&&r.actor))return console.warn("No image data found for calculating vtkPlanes."),[];const i=this.getVolumeId(),a=K.getVolume(i),s=this.getCamera(),{focalPoint:o,position:c,viewPlaneNormal:l}=s,u=ri(a,l),f=Na(r.actor,l,o),g=Math.round((f.current-f.min)/u),h=Math.round((f.max-f.current)/u),d=this.getSliceIndex(),m=[];for(let p=-g;p<=h;p++){const{newFocalPoint:v}=qn(o,c,f,l,u,p);m.push({sliceIndex:d+p,point:v})}return m};const{orientation:n}=this.options;if(n&&n!==Dn.ACQUISITION){this.applyViewOrientation(n);return}this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e,n=!1,r=!1){const i=K.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),super.setVolumes(e,n,r)}async addVolumes(e,n=!1,r=!1){const i=K.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),super.addVolumes(e,n,r)}jumpToWorld(e){const{focalPoint:n}=this.getCamera(),r=[0,0,0];De(r,e,n);const i=this.getCamera(),a=i.viewPlaneNormal,s=le(r,a),o=Me(a[0],a[1],a[2]);if(vt(o,o,s),Math.abs(o[0])>.001||Math.abs(o[1])>.001||Math.abs(o[2])>.001){const c=[0,0,0],l=[0,0,0];zt(c,i.focalPoint,o),zt(l,i.position,o),this.setCamera({focalPoint:c,position:l}),this.render()}return!0}setOrientation(e,n=!0){let r,i;if(typeof e=="string"){if(e===Dn.ACQUISITION)({viewPlaneNormal:r,viewUp:i}=super._getAcquisitionPlaneOrientation());else if(wn[e])({viewPlaneNormal:r,viewUp:i}=wn[e]);else throw new Error(`Invalid orientation: ${e}. Use Enums.OrientationAxis instead.`);this.setCamera({viewPlaneNormal:r,viewUp:i}),this.viewportProperties.orientation=e,this.resetCamera()}else({viewPlaneNormal:r,viewUp:i}=e),this.applyViewOrientation(e);n&&this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();if(!e){console.warn("No active camera found");return}e.getParallelProjection()?e.setClippingRange(-Se.MAXIMUM_RAY_DISTANCE,Se.MAXIMUM_RAY_DISTANCE):e.setClippingRange(Se.MINIMUM_SLAB_THICKNESS,Se.MAXIMUM_RAY_DISTANCE)}_setViewPlaneToAcquisitionPlane(e){let n,r;if(e){const{direction:i}=e;n=i.slice(6,9).map(a=>-a),r=i.slice(3,6).map(a=>-a)}else({viewPlaneNormal:n,viewUp:r}=this._getAcquisitionPlaneOrientation());this.setCamera({viewPlaneNormal:n,viewUp:r}),this.initialViewUp=r,this.resetCamera()}getBlendMode(e){const n=this.getActors(),r=(e==null?void 0:e.length)>0?n.find(i=>e.includes(i.uid)):n[0];return(r==null?void 0:r.blendMode)||(r==null?void 0:r.actor.getMapper().getBlendMode())}setBlendMode(e,n=[],r=!1){let i=this.getActors();(n==null?void 0:n.length)>0&&(i=i.filter(a=>n.includes(a.uid))),i.forEach(a=>{var c;const{actor:s}=a,o=s.getMapper();(c=o.setBlendMode)==null||c.call(o,e),a.blendMode=e}),r&&this.render()}resetCamera(e){const{resetPan:n=!0,resetZoom:r=!0,resetRotation:i=!0,resetToCenter:a=!0,suppressEvents:s=!1,resetOrientation:o=!0}=e||{},{orientation:c}=this.viewportProperties;c&&o&&this.applyViewOrientation(c,!1),super.resetCamera({resetPan:n,resetZoom:r,resetToCenter:a});const l=this.getVtkActiveCamera(),u=l.getViewPlaneNormal(),f=l.getFocalPoint();if(this.getActors().forEach(h=>{if(!h.actor)return;const d=h.actor.getMapper();if(d.getClippingPlanes().length===0&&!(h!=null&&h.clippingFilter)){const p=$e.newInstance(),v=$e.newInstance(),T=[p,v];let C=Se.MINIMUM_SLAB_THICKNESS;h.slabThickness&&(C=h.slabThickness),this.setOrientationOfClippingPlanes(T,C,u,f),d.addClippingPlane(p),d.addClippingPlane(v)}}),i&&wn[this.viewportProperties.orientation]!==void 0){const h=wn[this.viewportProperties.orientation];this.setCameraNoEvent({viewUp:h.viewUp,viewPlaneNormal:h.viewPlaneNormal})}if(!s){const h={viewportId:this.id,camera:this.getCamera(),renderingEngineId:this.renderingEngineId,element:this.element};$(this.element,A.CAMERA_RESET,h)}return!0}setSlabThickness(e,n=[]){e<.1&&(e=.1);let r=this.getActors();(n==null?void 0:n.length)>0&&(r=r.filter(a=>n.includes(a.uid))),r.forEach(a=>{Je(a,"vtkVolume")&&(a.slabThickness=e)});const i=this.getCamera();this.updateClippingPlanesForActors(i),this.triggerCameraModifiedEventIfNecessary(i,i),this.viewportProperties.slabThickness=e}resetSlabThickness(){this.getActors().forEach(r=>{Je(r,"vtkVolume")&&(r.slabThickness=Se.MINIMUM_SLAB_THICKNESS)});const n=this.getCamera();this.updateClippingPlanesForActors(n),this.triggerCameraModifiedEventIfNecessary(n,n),this.viewportProperties.slabThickness=void 0}isInAcquisitionPlane(){const e=this.getImageData();if(!e)return!1;const{direction:n}=e,{viewPlaneNormal:r}=this.getCamera(),i=[n[6],n[7],n[8]];return Math.abs(le(r,i))>.99}getSliceViewInfo(){const{width:e,height:n}=this.getCanvas(),r=tn(this,[0,0]),i=tn(this,[e-1,0]),a=tn(this,[0,n-1]),s=De(z(),i,r),o=De(z(),a,r),c=ye(z(),s,o);Pe(s,s),Pe(o,o),Pe(c,c);const{dimensions:l}=this.getImageData(),[u,f,g]=l,m=[[0,0,0],[u-1,0,0],[0,f-1,0],[u-1,f-1,0],[0,0,g-1],[u-1,0,g-1],[0,f-1,g-1],[u-1,f-1,g-1]].map(S=>qm(this,S)).reduce((S,O)=>(S.minX=Math.min(S.minX,O[0]),S.minY=Math.min(S.minY,O[1]),S.maxX=Math.max(S.maxX,O[0]),S.maxY=Math.max(S.maxY,O[1]),S),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),p=tn(this,[m.minX,m.minY]),v=fl(s[0],s[1],s[2],0,o[0],o[1],o[2],0,c[0],c[1],c[2],0,p[0],p[1],p[2],1),T=tn(this,[m.maxX,m.maxY]),C=De(z(),T,p),y=Be(Wt(),v),{viewPlaneNormal:x}=this.getCamera();if(x.filter(S=>Math.abs(S)>yt).length>1)throw new Error("getSliceInfo is not supported for oblique views");const E=x.findIndex(S=>Math.abs(S)>1-yt);if(E===-1)throw new Error("Unable to determine slice axis");const R=le(s,C)+1,D=le(o,C)+1;return{sliceIndex:this.getSliceIndex(),width:R,height:D,slicePlane:E,sliceToIndexMatrix:v,indexToSliceMatrix:y}}getCurrentSlicePixelData(){const{voxelManager:e}=this.getImageData();return e.getSliceData(this.getSliceViewInfo())}getViewReference(e={}){const n=super.getViewReference(e);if(!(n!=null&&n.volumeId))return;const r=K.getVolume(n.volumeId);return n.referencedImageId=sa(r,n.cameraFocalPoint,n.viewPlaneNormal),n}resetProperties(e){this._resetProperties(e)}_resetProperties(e){const n=e?this.getActor(e):this.getDefaultActor();if(!n)throw new Error(`No actor found for the given volumeId: ${e}`);n.slabThickness&&(n.slabThickness=Se.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const r=K.getVolume(e);if(!r)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(H0(n.actor,r),dt(n)){const l=n.actor.getProperty().getRGBTransferFunction(0);Fa(l,this.initialTransferFunctionNodes)}const i={...super.getVOIModifiedEventDetail(e)};this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetCameraRotation:!0}),$(this.element,A.VOI_MODIFIED,i)}getSlicesClippingPlanes(){const e=this.getSlicePlaneCoordinates(),{viewPlaneNormal:n}=this.getCamera(),r=Se.MINIMUM_SLAB_THICKNESS;return e.map(({point:i,sliceIndex:a})=>{const s=[$e.newInstance(),$e.newInstance()];return this.setOrientationOfClippingPlanes(s,r,n,i),{sliceIndex:a,planes:s.map(o=>({normal:o.getNormal(),origin:o.getOrigin()}))}})}}function Ym(t,e){e.classHierarchy.push("vtkAbstractImageMapper"),t.getIsOpaque=()=>!0,t.getCurrentImage=()=>null,t.getBoundsForSlice=()=>(M.vtkErrorMacro("vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED"),Zn())}const Xm={slice:0,customDisplayExtent:[0,0,0,0,0,0],useCustomExtents:!1,backgroundColor:[0,0,0,1]};function Zm(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xm,n),p2.extend(t,e,n),M.setGet(t,e,["slice","useCustomExtents"]),M.setGetArray(t,e,["customDisplayExtent"],6),M.setGetArray(t,e,["backgroundColor"],4),Ym(t,e)}var Jm={extend:Zm};function ef(t,e,n){const r=n.getCurrentImage(),i=r.getExtent(),a=[i[0],i[2],i[4]],{ijkMode:s}=n.getClosestIJKAxis();let o=n.isA("vtkImageArrayMapper")?n.getSubSlice():n.getSlice();s!==n.getSlicingMode()&&(o=n.getSliceAtPosition(o)),a[s]+=o;const c=[0,0,0];r.indexToWorld(a,c),a[s]+=1;const l=[0,0,0];r.indexToWorld(a,l),l[0]-=c[0],l[1]-=c[1],l[2]-=c[2],Pe(l,l);const u=$e.intersectWithLine(t,e,c,l);if(u.intersection){const f=u.x,g=[0,0,0];return r.worldToIndex(f,g),{t:u.t,absoluteIJK:g}}return null}function Qm(t,e,n){const r=ef(t,e,n);if(r){const a=n.getCurrentImage().getExtent(),s=[Math.round(r.absoluteIJK[0]),Math.round(r.absoluteIJK[1]),Math.round(r.absoluteIJK[2])];return s[0]a[1]||s[1]a[3]||s[2]a[5]?null:{t:r.t,ijk:s}}return null}function ev(t,e,n){const r=ef(t,e,n);if(r){const a=n.getCurrentImage().getExtent(),s=r.absoluteIJK,o=[Math.floor(s[0]),Math.floor(s[1]),Math.floor(s[2])];if(o[0]a[1]-1||o[1]a[3]-1||o[2](a[5]?a[5]-1:a[5]))return null;const c=[s[0]-o[0],s[1]-o[1],s[2]-o[2]];return{t:r.t,ijk:o,pCoords:c}}return null}const{staticOffsetAPI:tv,otherStaticMethods:nv}=w2,{SlicingMode:te}=Oa;function rv(t,e){e.classHierarchy.push("vtkImageMapper"),t.getSliceAtPosition=r=>{const i=t.getCurrentImage();let a;if(r.length===3)a=r;else if(Number.isFinite(r)){const u=i.getBounds();switch(e.slicingMode){case te.X:a=[r,(u[3]+u[2])/2,(u[5]+u[4])/2];break;case te.Y:a=[(u[1]+u[0])/2,r,(u[5]+u[4])/2];break;case te.Z:a=[(u[1]+u[0])/2,(u[3]+u[2])/2,r];break}}const s=[0,0,0];i.worldToIndex(a,s);const o=i.getExtent(),{ijkMode:c}=t.getClosestIJKAxis();let l=0;switch(c){case te.I:l=mt(s[0],o[0],o[1]);break;case te.J:l=mt(s[1],o[2],o[3]);break;case te.K:l=mt(s[2],o[4],o[5]);break;default:return 0}return l},t.setSliceFromCamera=r=>{const i=r.getFocalPoint();switch(e.slicingMode){case te.I:case te.J:case te.K:{const a=t.getSliceAtPosition(i);t.setSlice(a)}break;case te.X:t.setSlice(i[0]);break;case te.Y:t.setSlice(i[1]);break;case te.Z:t.setSlice(i[2]);break}},t.setXSlice=r=>{t.setSlicingMode(te.X),t.setSlice(r)},t.setYSlice=r=>{t.setSlicingMode(te.Y),t.setSlice(r)},t.setZSlice=r=>{t.setSlicingMode(te.Z),t.setSlice(r)},t.setISlice=r=>{t.setSlicingMode(te.I),t.setSlice(r)},t.setJSlice=r=>{t.setSlicingMode(te.J),t.setSlice(r)},t.setKSlice=r=>{t.setSlicingMode(te.K),t.setSlice(r)},t.getSlicingModeNormal=()=>{const r=[0,0,0],i=t.getCurrentImage().getDirection();switch(e.slicingMode){case te.X:r[0]=1;break;case te.Y:r[1]=1;break;case te.Z:r[2]=1;break;case te.I:Oi(i,[1,0,0],r);break;case te.J:Oi(i,[0,1,0],r);break;case te.K:Oi(i,[0,0,1],r);break}return r};function n(){let r;switch(e.slicingMode){case te.X:r=0;break;case te.Y:r=1;break;case te.Z:r=2;break;default:e.closestIJKAxis={ijkMode:e.slicingMode,flip:!1};return}const i=t.getCurrentImage().getDirection(),a=Z1(i);let s=0;for(;s<3&&a[r+3*s]===0;++s);const o=a[r+3*s]<0;e.closestIJKAxis={ijkMode:s,flip:o}}t.setSlicingMode=r=>{e.slicingMode!==r&&(e.slicingMode=r,t.getCurrentImage()&&n(),t.modified())},t.getClosestIJKAxis=()=>((e.closestIJKAxis===void 0||e.closestIJKAxis.ijkMode===te.NONE)&&t.getCurrentImage()&&n(),e.closestIJKAxis),t.getBounds=()=>{const r=t.getCurrentImage();if(!r)return Zn();if(!e.useCustomExtents)return r.getBounds();const i=e.customDisplayExtent.slice(),{ijkMode:a}=t.getClosestIJKAxis();let s=e.slice;switch(a!==e.slicingMode&&(s=t.getSliceAtPosition(e.slice)),a){case te.I:i[0]=s,i[1]=s;break;case te.J:i[2]=s,i[3]=s;break;case te.K:i[4]=s,i[5]=s;break}return r.extentToBounds(i)},t.getBoundsForSlice=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.slice,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const a=t.getCurrentImage();if(!a)return Zn();const s=a.getSpatialExtent(),{ijkMode:o}=t.getClosestIJKAxis();let c=r;switch(o!==e.slicingMode&&(c=t.getSliceAtPosition(r)),o){case te.I:s[0]=c-i,s[1]=c+i;break;case te.J:s[2]=c-i,s[3]=c+i;break;case te.K:s[4]=c-i,s[5]=c+i;break}return a.extentToBounds(s)},t.intersectWithLineForPointPicking=(r,i)=>Qm(r,i,t),t.intersectWithLineForCellPicking=(r,i)=>ev(r,i,t),t.getCurrentImage=()=>t.getInputData()}const iv={slicingMode:te.NONE,closestIJKAxis:{ijkMode:te.NONE,flip:!1},renderToRectangle:!1,sliceAtFocalPoint:!1,preferSizeOverAccuracy:!1};function tf(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,iv,n),Jm.extend(t,e,n),M.get(t,e,["slicingMode"]),M.setGet(t,e,["closestIJKAxis","renderToRectangle","sliceAtFocalPoint","preferSizeOverAccuracy"]),w2.implementCoincidentTopologyMethods(t,e),rv(t,e)}const av=M.newInstance(tf,"vtkImageMapper");var sv={newInstance:av,extend:tf,...tv,...nv,...Oa};const{InterpolationType:Pi}=N9,{vtkErrorMacro:xc}=M,Gi=4;function ov(t,e){e.classHierarchy.push("vtkImageProperty"),t.getMTime=()=>{let n=e.mtime,r;for(let i=0;ir?n:r),e.componentData[i].piecewiseFunction&&(r=e.componentData[i].piecewiseFunction.getMTime(),n=n>r?n:r);return n},t.setRGBTransferFunction=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=n,a=r;return Number.isInteger(n)||(a=n,i=0),e.componentData[i].rGBTransferFunction!==a?(e.componentData[i].rGBTransferFunction=a,t.modified(),!0):!1},t.getRGBTransferFunction=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[n].rGBTransferFunction},t.setPiecewiseFunction=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=n,a=r;return Number.isInteger(n)||(a=n,i=0),e.componentData[i].piecewiseFunction!==a?(e.componentData[i].piecewiseFunction=a,t.modified(),!0):!1},t.getPiecewiseFunction=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[n].piecewiseFunction},t.setScalarOpacity=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=n,a=r;return Number.isInteger(n)||(a=n,i=0),t.setPiecewiseFunction(i,a)},t.getScalarOpacity=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.getPiecewiseFunction(n)},t.setComponentWeight=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(n<0||n>=Gi)return xc("Invalid index"),!1;const i=Math.min(1,Math.max(0,r));return e.componentData[n].componentWeight!==i?(e.componentData[n].componentWeight=i,t.modified(),!0):!1},t.getComponentWeight=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return n<0||n>=Gi?(xc("Invalid index"),0):e.componentData[n].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Pi.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Pi.LINEAR),t.getInterpolationTypeAsString=()=>M.enumToString(Pi,e.interpolationType)}const cv={independentComponents:!1,interpolationType:Pi.LINEAR,colorWindow:255,colorLevel:127.5,ambient:1,diffuse:0,opacity:1,useLookupTableScalarRange:!1,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function lv(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,cv,n),M.obj(t,e),!e.componentData){e.componentData=[];for(let r=0;rt,t.getImages=()=>t,t.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||t.getProperty();let n=e.property.getOpacity()>=1;return n=n&&(!e.mapper||e.mapper.getIsOpaque()),n},t.hasTranslucentPolygonalGeometry=()=>!1,t.makeProperty=fv.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const n=e.mapper.getBounds();if(!n||n.length!==6)return n;if(n[0]>n[1])return e.mapperBounds=n.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),n;const r=i=>i[0].map((a,s)=>i.map(o=>o[s]));if(!e.mapperBounds||!r([n,e.mapperBounds]).reduce((i,a)=>i&&a[0]===a[1],!0)||t.getMTime()>e.boundsMTime.getMTime()){gv("Recomputing bounds..."),e.mapperBounds=n.map(a=>a),t.computeMatrix();const i=new Float64Array(16);fe(i,e.matrix),_e.transformBounds(n,i,e.bounds),e.boundsMTime.modified()}return e.bounds},t.getBoundsForSlice=(n,r)=>{const i=e.mapper.getBoundsForSlice(n,r);if(!_e.isValid(i))return i;t.computeMatrix();const a=new Float64Array(16);return fe(a,e.matrix),_e.transformBounds(i,a)},t.getMinXBound=()=>t.getBounds()[0],t.getMaxXBound=()=>t.getBounds()[1],t.getMinYBound=()=>t.getBounds()[2],t.getMaxYBound=()=>t.getBounds()[3],t.getMinZBound=()=>t.getBounds()[4],t.getMaxZBound=()=>t.getBounds()[5],t.getMTime=()=>{let n=e.mtime;if(e.property!==null){const r=e.property.getMTime();n=r>n?r:n}return n},t.getRedrawMTime=()=>{let n=e.mtime;if(e.mapper!==null){let r=e.mapper.getMTime();n=r>n?r:n,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),r=e.mapper.getInput().getMTime(),n=r>n?r:n)}if(e.property!==null){let r=e.property.getMTime();n=r>n?r:n,e.property.getRGBTransferFunction()!==null&&(r=e.property.getRGBTransferFunction().getMTime(),n=r>n?r:n)}return n},t.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1}const dv={mapper:null,property:null,forceOpaque:!1,forceTranslucent:!1,bounds:[..._e.INIT_BOUNDS]};function nf(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dv,n),K2.extend(t,e,n),e.boundsMTime={},M.obj(e.boundsMTime),M.set(t,e,["property"]),M.setGet(t,e,["mapper","forceOpaque","forceTranslucent"]),M.getArray(t,e,["bounds"],6),hv(t,e)}const pv=M.newInstance(nf,"vtkImageSlice");var mv={newInstance:pv,extend:nf};function vv(t){return Object.values(Ae).includes(t)?t:Ae.LINEAR}function rf(t){const n={...j(Ye.IMAGE_PLANE,t)};return n.columnPixelSpacing||(n.columnPixelSpacing=1),n.rowPixelSpacing||(n.rowPixelSpacing=1),n.columnCosines||(n.columnCosines=[0,1,0]),n.rowCosines||(n.rowCosines=[1,0,0]),n.imagePositionPatient||(n.imagePositionPatient=[0,0,0]),n.imageOrientationPatient||(n.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),n}function af(t){const e=t.imageId,{pixelRepresentation:n,bitsAllocated:r,bitsStored:i,highBit:a,photometricInterpretation:s,samplesPerPixel:o}=j("imagePixelModule",e),{windowWidth:c,windowCenter:l,voiLUTFunction:u}=t,{modality:f}=j("generalSeriesModule",e),g=j("scalingModule",e),h=j(Ye.CALIBRATION,e),d=vv(u),m=rf(e);return{calibration:h,scalingFactor:g,voiLUTFunction:d,modality:f,imagePlaneModule:m,imagePixelModule:{bitsAllocated:r,bitsStored:i,samplesPerPixel:o,highBit:a,photometricInterpretation:s,pixelRepresentation:n,windowWidth:c,windowCenter:l,modality:f,voiLUTFunction:d}}}function sf(t){const{imagePlaneModule:e,imagePixelModule:n,voiLUTFunction:r,modality:i,scalingFactor:a,calibration:s}=af(t);let{rowCosines:o,columnCosines:c}=e;(o==null||c==null)&&(o=[1,0,0],c=[0,1,0]);const l=Me(o[0],o[1],o[2]),u=Me(c[0],c[1],c[2]),f=z();ye(f,l,u);let g=e.imagePositionPatient;g==null&&(g=[0,0,0]);const h=e.columnPixelSpacing||t.columnPixelSpacing,d=e.rowPixelSpacing||t.rowPixelSpacing,m=t.columns,p=t.rows,v=yt,T=1;return!n.photometricInterpretation&&t.sizeInBytes===3*t.width*t.height&&(t.numberOfComponents=3),{numberOfComponents:t.numberOfComponents||yv(n.photometricInterpretation),origin:g,direction:[...l,...u,...f],dimensions:[m,p,T],spacing:[h,d,v],numVoxels:m*p*T,imagePlaneModule:e,imagePixelModule:n,bitsAllocated:n.bitsAllocated,voiLUTFunction:r,modality:i,scalingFactor:a,calibration:s,scanAxisNormal:f}}function yv(t){let e=1;return(t==="RGB"||t!=null&&t.includes("YBR")||t==="PALETTE COLOR")&&(e=3),e}function of(t){const e=ln.newInstance();let n=0,r=1024;return t.lower!==void 0&&t.upper!==void 0&&(n=t.lower,r=t.upper),e.addRGBPoint(n,0,0,0),e.addRGBPoint(r,1,1,1),e}function cf(t,e){const n=e.voxelManager.getScalarData();if(!t.getPointData)return;const r=t.getPointData().getScalars().getData();if(e.color&&e.rgba){const i=new Uint8Array(e.columns*e.rows*3);for(let a=0;ai,r.set(i)}else r.set(n);t.modified()}function X(){return window.performance?performance.now():Date.now()}function Tv(t,e){return function(n){const r=((n-(e-.5))/(t-1)+.5)*255;return Math.min(Math.max(r,0),255)}}function Cv(t){const n=Math.max(...t.lut).toString(2).length-8,r=t.lut[0]>>n,i=t.lut[t.lut.length-1]>>n,a=t.firstValueMapped+t.lut.length-1;return function(s){return s=a?i:t.lut[s-t.firstValueMapped]>>n}}function lf(t,e,n){return n?Cv(n):Tv(t,e)}function xv(t,e,n,r,i){const a=t.maxPixelValue,s=t.minPixelValue,o=Math.min(s,0);if(t.cachedLut===void 0){const u=a-o+1;t.cachedLut={},t.cachedLut.lutArray=new Uint8ClampedArray(u)}const c=t.cachedLut.lutArray,l=lf(Array.isArray(e)?e[0]:e,Array.isArray(n)?n[0]:n,i);if(r)for(let u=s;u<=a;u++)c[u+-o]=255-l(u);else for(let u=s;u<=a;u++)c[u+-o]=l(u);return c}function wv(t,e,n){let r=X();const i=t.voxelManager.getScalarData();t.stats.lastGetPixelDataTime=X()-r;const a=t.minPixelValue;let s=0,o=0;const c=i.length;if(r=X(),a<0)for(;o0||t.voi.windowWidth!==void 0&&t.voi.windowCenter!==void 0}function Sc(t,e){return!t&&!e?!0:!t||!e?!1:t.id===e.id}function bv(t,e){return n=>n*t+e}function Fv(t){const e=t.lut[0],n=t.lut[t.lut.length-1],r=t.firstValueMapped+t.lut.length;return i=>i=r?n:t.lut[i]}function _v(t,e,n){return n?Fv(n):bv(t,e)}function Uv(t,e,n,r,i,a){const s=t.maxPixelValue,o=t.minPixelValue,c=Math.min(o,0);if(t.cachedLut===void 0){const g=s-c+1;t.cachedLut={},t.cachedLut.lutArray=new Uint8ClampedArray(g)}const l=t.cachedLut.lutArray,u=_v(t.slope,t.intercept,i),f=lf(e,n,a);if(t.isPreScaled)if(r)for(let g=o;g<=s;g++)l[g+-c]=255-f(g);else for(let g=o;g<=s;g++)l[g+-c]=f(g);else if(r)for(let g=o;g<=s;g++)l[g+-c]=255-f(u(g));else for(let g=o;g<=s;g++)l[g+-c]=f(u(g));return l}function gf(t,e,n){return t.cachedLut!==void 0&&t.cachedLut.windowCenter===e.voi.windowCenter&&t.cachedLut.windowWidth===e.voi.windowWidth&&Sc(t.cachedLut.modalityLUT,e.modalityLUT)&&Sc(t.cachedLut.voiLUT,e.voiLUT)&&t.cachedLut.invert===e.invert&&!n||(Lv(e,t),Uv(t,e.voi.windowWidth,e.voi.windowCenter,e.invert,e.modalityLUT,e.voiLUT),t.cachedLut.windowWidth=e.voi.windowWidth,t.cachedLut.windowCenter=e.voi.windowCenter,t.cachedLut.invert=e.invert,t.cachedLut.voiLUT=e.voiLUT,t.cachedLut.modalityLUT=e.modalityLUT),t.cachedLut.lutArray}function kv(t,e,n,r=!0){const i=t.renderingTools.lastRenderedIsColor;(!t.renderingTools.renderCanvas||i)&&(t.renderingTools.renderCanvas=ka(null,e.width,e.height),fa(t,e));const a=t.renderingTools.renderCanvas;if(!X0(t,e)&&!n)return a;(a.width!==e.width||a.height!==e.height)&&fa(t,e),e.stats=e.stats||{};const s=t.renderingTools.renderCanvasData,o=t.renderingTools.renderCanvasContext;let c=X();e.stats.lastLutGenerateTime=X()-c;const{viewport:l}=t;if(l.modality==="PT"&&e.isPreScaled){const{windowWidth:u,windowCenter:f}=l.voi,g=f-u/2,m=255/(f+u/2-g);let p;l.invert?p=v=>255-(v-g)*m:p=v=>(v-g)*m,Vv(e,p,s.data)}else{const u=gf(e,l,n);r?Dv(e,u,s.data):Iv(e,u,s.data)}return c=X(),o.putImageData(s,0,0),e.stats.lastPutImageDataTime=X()-c,a}function Pv(t,e){if(t===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const n=t.image;if(n===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const r=t.canvas.getContext("2d");r.setTransform(1,0,0,1,0,0),r.fillStyle="black",r.fillRect(0,0,t.canvas.width,t.canvas.height),r.imageSmoothingEnabled=!t.viewport.pixelReplication,Y0(t,r);const i=kv(t,n,e),a=t.viewport.displayedArea.tlhc.x-1,s=t.viewport.displayedArea.tlhc.y-1,o=t.viewport.displayedArea.brhc.x-a,c=t.viewport.displayedArea.brhc.y-s;r.drawImage(i,a,s,o,c,0,0,o,c),t.renderingTools=Z0(t)}const Us=0,ks=1,Gv=2;function Bv(t,e,n){if(t>1)throw new Error("HSVToRGB expects hue < 1");const r=[];if(e===0)return r[0]=n,r[1]=n,r[2]=n,r;const i=Math.floor(t*6),a=6*t-i,s=n*(1-e),o=n*(1-e*a),c=n*(1-e*(1-a));switch(i){case 0:case 6:r[0]=n,r[1]=c,r[2]=s;break;case 1:r[0]=o,r[1]=n,r[2]=s;break;case 2:r[0]=s,r[1]=n,r[2]=c;break;case 3:r[0]=s,r[1]=o,r[2]=n;break;case 4:r[0]=c,r[1]=s,r[2]=n;break;case 5:r[0]=n,r[1]=s,r[2]=o;break}return r}function Av(t,e){let n;return te.Range[1]?n=e.MaxIndex+ks+1.5:n=(t+e.Shift)*e.Scale,Math.floor(n)}class J0{constructor(){this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}setNumberOfTableValues(e){this.NumberOfColors=e}setRamp(e){this.Ramp=e}setTableRange(e,n){this.TableRange[0]=e,this.TableRange[1]=n}setHueRange(e,n){this.HueRange[0]=e,this.HueRange[1]=n}setSaturationRange(e,n){this.SaturationRange[0]=e,this.SaturationRange[1]=n}setValueRange(e,n){this.ValueRange[0]=e,this.ValueRange[1]=n}setRange(e,n){this.InputRange[0]=e,this.InputRange[1]=n}setAlphaRange(e,n){this.AlphaRange[0]=e,this.AlphaRange[1]=n}getColor(e){return this.mapValue(e)}build(e){if(this.Table.length>1&&!e)return;this.Table=[];const n=this.NumberOfColors-1;let r,i,a,s;n?(r=(this.HueRange[1]-this.HueRange[0])/n,i=(this.SaturationRange[1]-this.SaturationRange[0])/n,a=(this.ValueRange[1]-this.ValueRange[0])/n,s=(this.AlphaRange[1]-this.AlphaRange[0])/n):r=i=a=s=0;for(let o=0;o<=n;o++){const c=this.HueRange[0]+o*r,l=this.SaturationRange[0]+o*i,u=this.ValueRange[0]+o*a,f=this.AlphaRange[0]+o*s,g=Bv(c,l,u),h=[0,0,0,0];switch(this.Ramp){case"scurve":h[0]=Math.floor(127.5*(1+Math.cos((1-g[0])*Math.PI))),h[1]=Math.floor(127.5*(1+Math.cos((1-g[1])*Math.PI))),h[2]=Math.floor(127.5*(1+Math.cos((1-g[2])*Math.PI))),h[3]=Math.floor(f*255);break;case"linear":h[0]=Math.floor(g[0]*255+.5),h[1]=Math.floor(g[1]*255+.5),h[2]=Math.floor(g[2]*255+.5),h[3]=Math.floor(f*255+.5);break;case"sqrt":h[0]=Math.floor(Math.sqrt(g[0])*255+.5),h[1]=Math.floor(Math.sqrt(g[1])*255+.5),h[2]=Math.floor(Math.sqrt(g[2])*255+.5),h[3]=Math.floor(Math.sqrt(f)*255+.5);break;default:throw new Error(`Invalid Ramp value (${this.Ramp})`)}this.Table.push(h)}this.buildSpecialColors()}buildSpecialColors(){const e=this.NumberOfColors,n=e+Us,r=e+ks,i=e+Gv;this.UseBelowRangeColor||e===0?this.Table[n]=this.BelowRangeColor:this.Table[n]=this.Table[0],this.UseAboveRangeColor||e===0?this.Table[r]=this.AboveRangeColor:this.Table[r]=this.Table[e-1],this.Table[i]=this.NaNColor}mapValue(e){const n=this.getIndex(e);if(n<0)return this.NaNColor;if(n===0){if(this.UseBelowRangeColor&&ethis.TableRange[1])return this.AboveRangeColor;return this.Table[n]}getIndex(e){const n={Range:[],MaxIndex:this.NumberOfColors-1,Shift:-this.TableRange[0],Scale:1};if(this.TableRange[1]<=this.TableRange[0]?n.Scale=Number.MAX_VALUE:n.Scale=n.MaxIndex/(this.TableRange[1]-this.TableRange[0]),n.Range[0]=this.TableRange[0],n.Range[1]=this.TableRange[1],isNaN(e))return-1;let r=Av(e,n);return r===this.NumberOfColors+Us?r=0:r===this.NumberOfColors+ks&&(r=this.NumberOfColors-1),r}setTableValue(e,n,r,i,a){let s;if(typeof n=="number"&&r!==void 0&&i!==void 0&&a!==void 0)s=[n,r,i,a];else if(Array.isArray(n))s=n;else throw new Error("Invalid arguments for setTableValue");if(e<0)throw new Error(`Can't set the table value for negative index (${e})`);if(e>=this.NumberOfColors)throw new Error(`Index ${e} is greater than the number of colors ${this.NumberOfColors}`);this.Table[e]=s,(e===0||e===this.NumberOfColors-1)&&this.buildSpecialColors()}}const Mc=[0,0,0,0];function Wv(t,e,n){n=n===null?100:n;const r=(e-t)/(n-1),i=[];for(;n-- >0;)i.push(t),t+=r;return i[i.length-1]=e,i}function zv(t,e){let n=0,r=t.length-1;for(;n<=r;){const i=n+Math.floor((r-n)/2),a=t[i];if(a===e)return i;e=0&&iPs(Math.floor(255-(T-h)*p),0,255):v=T=>Ps(Math.floor((T-h)*p),0,255),qv(e,v,u,o.data)}else{const f=gf(e,t.viewport,n);e.stats=e.stats||{},e.stats.lastLutGenerateTime=X()-s,Kv(e,f,u,o.data)}return s=X(),c.putImageData(o,0,0),e.stats.lastPutImageDataTime=X()-s,r}function Xv(t,e){if(t===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const n=t.image;if(n===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const r=t.canvas.getContext("2d");r.setTransform(1,0,0,1,0,0),r.fillStyle="black",r.fillRect(0,0,t.canvas.width,t.canvas.height),r.imageSmoothingEnabled=!t.viewport.pixelReplication,Y0(t,r);const i=Yv(t,n,e),a=t.viewport.displayedArea.tlhc.x-1,s=t.viewport.displayedArea.tlhc.y-1,o=t.viewport.displayedArea.brhc.x-a,c=t.viewport.displayedArea.brhc.y-s;r.drawImage(i,a,s,o,c,0,0,o,c),t.renderingTools=Z0(t)}function hf(t,e){const n=t.image;if(!t.canvas||!t.image)return;const r=X();if(n.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},n){let a=n.render;a||(t.viewport.colormap?a=Xv:n.color?a=Ov:a=Pv),a(t,e)}const i=X()-r;n.stats.lastRenderTime=i,t.invalid=!1,t.needsRedraw=!1}function df(t){return qr(t)}function Ti(t,e){const n=df(t);return n.invert(),n.transformPoint(e)}const Zv={viewport:{}};function Jv(){return{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}}function Qv(){const t=Jv(),e={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0,voiLUTFunction:Ae.LINEAR},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:t};return Object.assign({},e,Zv.viewport)}function Fr(t,e){if(t==null)throw new Error(e)}function ey(t){return!(t==null||t===0||t===180)}function pf(t,e=null){return Fr(t,"getImageSize: parameter image must not be undefined"),Fr(t.width,"getImageSize: parameter image must have width"),Fr(t.height,"getImageSize: parameter image must have height"),ey(e)?{height:t.width,width:t.height}:{width:t.width,height:t.height}}function Q0(t,e,n=null){Fr(t,"getImageScale: parameter canvas must not be undefined"),Fr(e,"getImageScale: parameter image must not be undefined");const r=pf(e,n),i=e.rowPixelSpacing||1,a=e.columnPixelSpacing||1;let s=1,o=1;i{this._configureRenderingPipeline()},this.resize=()=>{this.useCPURendering&&this._resizeCPU()},this._resizeCPU=()=>{this._cpuFallbackEnabledElement.viewport&&ay(this._cpuFallbackEnabledElement)},this.getFrameOfReferenceUID=n=>{var r;return(r=this.getImagePlaneReferenceData(n))==null?void 0:r.FrameOfReferenceUID},this.getCornerstoneImage=()=>this.csImage,this.createActorMapper=n=>{const r=sv.newInstance();r.setInputData(n);const i=mv.newInstance();i.setMapper(r);const{preferSizeOverAccuracy:a}=I0().rendering;return a&&r.setPreferSizeOverAccuracy(!0),n.getPointData().getScalars().getNumberOfComponents()>1&&i.getProperty().setIndependentComponents(!1),i},this.getNumberOfSlices=()=>this.imageIds.length,this.getDefaultProperties=n=>{let r;return n!==void 0&&(r=this.perImageIdDefaultProperties.get(n)),r!==void 0?r:{...this.globalDefaultProperties}},this.getProperties=()=>{const{colormap:n,voiRange:r,VOILUTFunction:i,interpolationType:a,invert:s,voiUpdatedWithSetProperties:o}=this;return{colormap:n,voiRange:r,VOILUTFunction:i,interpolationType:a,invert:s,isComputedVOI:!o}},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,suppressEvents:!0}),this.getRotationCPU=()=>{const{viewport:n}=this._cpuFallbackEnabledElement;return n.rotation},this.getRotationGPU=()=>{const{viewUp:n,viewPlaneNormal:r,flipVertical:i,flipHorizontal:a}=this.getCameraNoRotation(),s=Rc(this.initialViewUp,a,i,r),c=xl(s,n)*180/Math.PI,l=ye(z(),s,n);return le(l,r)>=0?c:(360-c)%360},this.setRotation=n=>{const r=this.getCamera();if(this.useCPURendering?this.setRotationCPU(n):this.setRotationGPU(n),this._suppressCameraModifiedEvents)return;const i=this.getCamera(),a={previousCamera:r,camera:i,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.CAMERA_MODIFIED,a)},this.renderImageObject=n=>{this._setCSImage(n),(this.useCPURendering?this._updateToDisplayImageCPU:this._updateActorToDisplayImageId).call(this,n)},this._setCSImage=n=>{var r;n.isPreScaled=(r=n.preScale)==null?void 0:r.scaled,this.csImage=n},this.canvasToWorldCPU=(n,r=[0,0,0])=>{if(!this._cpuFallbackEnabledElement.image)return;const[i,a]=Ti(this._cpuFallbackEnabledElement,n),{origin:s,spacing:o,direction:c}=this.getImageData(),l=c.slice(0,3),u=c.slice(3,6);return qe(r,s,l,i*o[0]),qe(r,r,u,a*o[1]),r},this.worldToCanvasCPU=n=>{const{spacing:r,direction:i,origin:a}=this.getImageData(),s=i.slice(0,3),o=i.slice(3,6),c=ze(z(),n,a),l=[le(c,s)/r[0],le(c,o)/r[1]];return Ec(this._cpuFallbackEnabledElement,l)},this.canvasToWorldGPU=n=>{const r=this.getRenderer(),i=this.getVtkActiveCamera(),a=i.getClippingRange(),s=i.getDistance();i.setClippingRange(s,s+.1);const c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),u=window.devicePixelRatio||1,f=[n[0]*u,n[1]*u],g=[f[0]+this.sx,f[1]+this.sy];g[1]=l[1]-g[1];const h=c.displayToWorld(g[0],g[1],0,r);return i.setClippingRange(a[0],a[1]),[h[0],h[1],h[2]]},this.worldToCanvasGPU=n=>{const r=this.getRenderer(),i=this.getVtkActiveCamera(),a=i.getClippingRange(),s=i.getDistance();i.setClippingRange(s,s+.1);const c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),u=c.worldToDisplay(...n,r);u[1]=l[1]-u[1];const f=[u[0]-this.sx,u[1]-this.sy];i.setClippingRange(a[0],a[1]);const g=window.devicePixelRatio||1;return[f[0]/g,f[1]/g]},this.getCurrentImageIdIndex=()=>this.currentImageIdIndex,this.getSliceIndex=()=>this.currentImageIdIndex,this.getTargetImageIdIndex=()=>this.targetImageIdIndex,this.getImageIds=()=>this.imageIds,this.getCurrentImageId=(n=this.getCurrentImageIdIndex())=>this.imageIds[n],this.hasImageId=n=>this.imageKeyToIndexMap.has(n),this.hasImageURI=n=>this.imageKeyToIndexMap.has(n),this.customRenderViewportToCanvas=()=>{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?(hf(this._cpuFallbackEnabledElement,this.cpuRenderingInvalidated),this.cpuRenderingInvalidated=!1):this.fillWithBackgroundColor(),{canvas:this.canvas,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,viewportStatus:this.viewportStatus}},this.renderingPipelineFunctions={getImageData:{cpu:this.getImageDataCPU,gpu:this.getImageDataGPU},setColormap:{cpu:this.setColormapCPU,gpu:this.setColormapGPU},getCamera:{cpu:this.getCameraCPU,gpu:super.getCamera},setCamera:{cpu:this.setCameraCPU,gpu:super.setCamera},getPan:{cpu:this.getPanCPU,gpu:super.getPan},setPan:{cpu:this.setPanCPU,gpu:super.setPan},getZoom:{cpu:this.getZoomCPU,gpu:super.getZoom},setZoom:{cpu:this.setZoomCPU,gpu:super.setZoom},setVOI:{cpu:this.setVOICPU,gpu:this.setVOIGPU},getRotation:{cpu:this.getRotationCPU,gpu:this.getRotationGPU},setInterpolationType:{cpu:this.setInterpolationTypeCPU,gpu:this.setInterpolationTypeGPU},setInvertColor:{cpu:this.setInvertColorCPU,gpu:this.setInvertColorGPU},resetCamera:{cpu:(n={})=>{const{resetPan:r=!0,resetZoom:i=!0}=n;return this.resetCameraCPU({resetPan:r,resetZoom:i}),!0},gpu:(n={})=>{const{resetPan:r=!0,resetZoom:i=!0}=n;return this.resetCameraGPU({resetPan:r,resetZoom:i}),!0}},canvasToWorld:{cpu:this.canvasToWorldCPU,gpu:this.canvasToWorldGPU},worldToCanvas:{cpu:this.worldToCanvasCPU,gpu:this.worldToCanvasGPU},getRenderer:{cpu:()=>this.getCPUFallbackError("getRenderer"),gpu:super.getRenderer},getDefaultActor:{cpu:()=>this.getCPUFallbackError("getDefaultActor"),gpu:super.getDefaultActor},getActors:{cpu:()=>this.getCPUFallbackError("getActors"),gpu:super.getActors},getActor:{cpu:()=>this.getCPUFallbackError("getActor"),gpu:super.getActor},setActors:{cpu:()=>this.getCPUFallbackError("setActors"),gpu:super.setActors},addActors:{cpu:()=>this.getCPUFallbackError("addActors"),gpu:super.addActors},addActor:{cpu:()=>this.getCPUFallbackError("addActor"),gpu:super.addActor},removeAllActors:{cpu:()=>this.getCPUFallbackError("removeAllActors"),gpu:super.removeAllActors},unsetColormap:{cpu:this.unsetColormapCPU,gpu:this.unsetColormapGPU}},this.scaling={},this.modality=null,this.useCPURendering=Vr(),this._configureRenderingPipeline(),this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport(),this.currentImageIdIndex=0,this.targetImageIdIndex=0,this.resetCamera(),this.initializeElementDisabledHandler()}setUseCPURendering(e){this.useCPURendering=e,this._configureRenderingPipeline(e)}static get useCustomRenderingPipeline(){return Vr()}_configureRenderingPipeline(e){this.useCPURendering=e??Vr();for(const n in this.renderingPipelineFunctions)if(Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions,n)){const r=this.renderingPipelineFunctions[n];this[n]=this.useCPURendering?r.cpu:r.gpu}this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}_resetCPUFallbackElement(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new lr,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),n=N2.newInstance();e.setActiveCamera(n),this.initialViewUp=[0,-1,0],n.setDirectionOfProjection(-0,-0,1),n.setViewUp(...this.initialViewUp),n.setParallelProjection(!0),n.setThicknessFromFocalPoint(.1),n.setFreezeFocalPoint(!0)}initializeElementDisabledHandler(){ne.addEventListener(A.ELEMENT_DISABLED,function e(){clearTimeout(this.debouncedTimeout),ne.removeEventListener(A.ELEMENT_DISABLED,e)})}getImageDataGPU(){const e=this.getDefaultActor();if(!e||!dt(e))return;const{actor:n}=e,r=n.getMapper().getInputData(),i=this.csImage;return{dimensions:r.getDimensions(),spacing:r.getSpacing(),origin:r.getOrigin(),direction:r.getDirection(),get scalarData(){return i==null?void 0:i.voxelManager.getScalarData()},imageData:n.getMapper().getInputData(),metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,hasPixelSpacing:this.hasPixelSpacing,calibration:{...i==null?void 0:i.calibration,...this.calibration},preScale:{...i==null?void 0:i.preScale},voxelManager:i==null?void 0:i.voxelManager}}getImageDataCPU(){const{metadata:e}=this._cpuFallbackEnabledElement;if(!e)return;const n=e.spacing,r=this.csImage;return{dimensions:e.dimensions,spacing:n,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,imageData:{getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getScalarData:()=>this.cpuImagePixelData,getSpacing:()=>n,worldToIndex:i=>{const a=this.worldToCanvasCPU(i),s=Ti(this._cpuFallbackEnabledElement,a);return[s[0],s[1],0]},indexToWorld:(i,a)=>{const s=Ec(this._cpuFallbackEnabledElement,[i[0],i[1]]);return this.canvasToWorldCPU(s,a)}},scalarData:this.cpuImagePixelData,hasPixelSpacing:this.hasPixelSpacing,calibration:{...r==null?void 0:r.calibration,...this.calibration},preScale:{...r==null?void 0:r.preScale},voxelManager:r==null?void 0:r.voxelManager}}calibrateIfNecessary(e,n){const r=j("calibratedPixelSpacing",e),i=this.calibration!==r,{scale:a}=r||{};return this.hasPixelSpacing=a>0||n.rowPixelSpacing>0,n.calibration=r,i&&(this.calibration=r,this._publishCalibratedEvent=!0,this._calibrationEvent={scale:a,calibration:r}),n}setDefaultProperties(e,n){n==null?this.globalDefaultProperties=e:(this.perImageIdDefaultProperties.set(n,e),this.getCurrentImageId()===n&&this.setProperties(e))}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perImageIdDefaultProperties.delete(e),this.resetToDefaultProperties())}setProperties({colormap:e,voiRange:n,VOILUTFunction:r,invert:i,interpolationType:a}={},s=!1){this.viewportStatus=this.csImage?Ke.PRE_RENDER:Ke.LOADING,this.globalDefaultProperties={colormap:this.globalDefaultProperties.colormap??e,voiRange:this.globalDefaultProperties.voiRange??n,VOILUTFunction:this.globalDefaultProperties.VOILUTFunction??r,invert:this.globalDefaultProperties.invert??i,interpolationType:this.globalDefaultProperties.interpolationType??a},typeof e<"u"&&this.setColormap(e),typeof n<"u"&&this.setVOI(n,{suppressEvents:s,voiUpdatedWithSetProperties:!0}),typeof r<"u"&&this.setVOILUTFunction(r,s),typeof i<"u"&&this.setInvertColor(i),typeof a<"u"&&this.setInterpolationType(a)}resetProperties(){this.cpuRenderingInvalidated=!0,this.voiUpdatedWithSetProperties=!1,this.viewportStatus=Ke.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={}),this._resetProperties(),this.render()}_resetProperties(){let e;if(this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage(),this.setVOI(e),this.setInvertColor(this.initialInvert),this.setInterpolationType(Bt.LINEAR),!this.useCPURendering){const n=this.getTransferFunction();Fa(n,this.initialTransferFunctionNodes);const i=oa(n).reduce((o,c)=>(o.push(c[0],c[1],c[2],c[3]),o),[]),a=this.getDefaultActor(),s=k0(i,a.actor);this.setColormap(s)}}resetToDefaultProperties(){var i;this.cpuRenderingInvalidated=!0,this.viewportStatus=Ke.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={});const e=this.getCurrentImageId(),n=this.perImageIdDefaultProperties.get(e)||this.globalDefaultProperties;(i=n.colormap)!=null&&i.name&&this.setColormap(n.colormap);let r;n.voiRange==null?r=this._getVOIRangeForCurrentImage():r=n.voiRange,this.setVOI(r),this.setInterpolationType(Bt.LINEAR),this.setInvertColor(!1),this.render()}_getVOIFromCache(){let e;return this.voiUpdatedWithSetProperties?e=this.voiRange:this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage()??this.voiRange,e}_setPropertiesFromCache(){const e=this._getVOIFromCache(),{interpolationType:n,invert:r}=this;this.setVOI(e),this.setInterpolationType(n),this.setInvertColor(r)}getCameraCPU(){const{metadata:e,viewport:n}=this._cpuFallbackEnabledElement;if(!e)return{};const{direction:r}=e,i=r.slice(6,9).map(f=>-f);let a=r.slice(3,6).map(f=>-f);if(n.rotation){const f=d0(Wt(),n.rotation*Math.PI/180,i);a=ue(z(),a,f)}const s=[this.element.clientWidth/2,this.element.clientHeight/2],o=this.canvasToWorld(s),c=this.canvasToWorld([0,0]),l=this.canvasToWorld([0,this.element.clientHeight]),u=Tl(c,l)/2;return{parallelProjection:!0,focalPoint:o,position:[0,0,0],parallelScale:u,scale:n.scale,viewPlaneNormal:[i[0],i[1],i[2]],viewUp:[a[0],a[1],a[2]],flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}setCameraCPU(e){const{viewport:n,image:r}=this._cpuFallbackEnabledElement,i=this.getCameraCPU(),{focalPoint:a,parallelScale:s,scale:o,flipHorizontal:c,flipVertical:l}=e,{clientHeight:u}=this.element;if(a){const g=this.worldToCanvasCPU(a),h=Ti(this._cpuFallbackEnabledElement,g),d=this.worldToCanvasCPU(i.focalPoint),m=Ti(this._cpuFallbackEnabledElement,d),p=Ml();Xi(p,bo(h[0],h[1]),bo(m[0],m[1]));const v=sy({x:p[0],y:p[1]},n);n.translation.x-=v.x,n.translation.y-=v.y}if(s){const{rowPixelSpacing:g}=r,h=u*g*.5/s;n.scale=h,n.parallelScale=s}if(o){const{rowPixelSpacing:g}=r;n.scale=o,n.parallelScale=u*g*.5/o}(c!==void 0||l!==void 0)&&this.setFlipCPU({flipHorizontal:c,flipVertical:l}),this._cpuFallbackEnabledElement.transform=qr(this._cpuFallbackEnabledElement);const f={previousCamera:i,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.CAMERA_MODIFIED,f)}getPanCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return[e.translation.x,e.translation.y]}setPanCPU(e){const n=this.getCameraCPU();this.setCameraCPU({...n,focalPoint:[...e.map(r=>-r),0]})}getZoomCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return e.scale}setZoomCPU(e){const n=this.getCameraCPU();this.setCameraCPU({...n,scale:e})}setFlipCPU({flipHorizontal:e,flipVertical:n}){const{viewport:r}=this._cpuFallbackEnabledElement;e!==void 0&&(r.hflip=e,this.flipHorizontal=r.hflip),n!==void 0&&(r.vflip=n,this.flipVertical=r.vflip)}setVOILUTFunction(e,n){if(this.useCPURendering)throw new Error("VOI LUT function is not supported in CPU rendering");const r=this._getValidVOILUTFunction(e);let i=!1;this.VOILUTFunction!==r&&(i=!0),this.VOILUTFunction=r;const{voiRange:a}=this.getProperties();this.setVOI(a,{suppressEvents:n,forceRecreateLUTFunction:i})}setRotationCPU(e){const{viewport:n}=this._cpuFallbackEnabledElement;n.rotation=e}setRotationGPU(e){const n=this.getPan(this.fitToCanvasCamera),r=this.getPan(),i=Zi([0,0],n,r);this.setPan(i,!1);const{flipVertical:a,flipHorizontal:s,viewPlaneNormal:o}=this.getCamera(),c=Rc(this.initialViewUp,s,a,o);this.setCameraNoEvent({viewUp:c}),this.getVtkActiveCamera().roll(-e);const l=this.getPan(),u=this.getPan(this.fitToCanvasCamera),f=Zi([0,0],l,u),g=v0([0,0],n,f);this.setPan(g,!1)}setInterpolationTypeGPU(e){const n=this.getDefaultActor();if(!n||!dt(n))return;const{actor:r}=n;r.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:n}=this._cpuFallbackEnabledElement;n.pixelReplication=e!==Bt.LINEAR,this.interpolationType=e}setInvertColorCPU(e){const{viewport:n}=this._cpuFallbackEnabledElement;n&&(n.invert=e,this.invert=e)}setInvertColorGPU(e){const n=this.getDefaultActor();if(n&&dt(n)){if(Je(n,"vtkVolume")){const i=n.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Lr(i),this.invert=e}else if(Je(n,"vtkImageSlice")){const i=n.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Lr(i),this.invert=e}}}setVOICPU(e,n={}){const{suppressEvents:r=!1}=n,{viewport:i,image:a}=this._cpuFallbackEnabledElement;if(!i||!a)return;if(typeof e>"u"){const{windowWidth:o,windowCenter:c}=a,l=Array.isArray(o)?o[0]:o,u=Array.isArray(c)?c[0]:c;i.voi={windowWidth:l,windowCenter:u,voiLUTFunction:a.voiLUTFunction};const{lower:f,upper:g}=Nr(l,u,a.voiLUTFunction);e={lower:f,upper:g}}else{const{lower:o,upper:c}=e,{windowCenter:l,windowWidth:u}=A0(o,c);i.voi||(i.voi={windowWidth:0,windowCenter:0,voiLUTFunction:a.voiLUTFunction}),i.voi.windowWidth=u,i.voi.windowCenter=l}this.voiRange=e;const s={viewportId:this.id,range:e};r||$(this.element,A.VOI_MODIFIED,s)}getTransferFunction(){const e=this.getDefaultActor();return!e||!dt(e)?void 0:e.actor.getProperty().getRGBTransferFunction(0)}setVOIGPU(e,n={}){const{suppressEvents:r=!1,forceRecreateLUTFunction:i=!1,voiUpdatedWithSetProperties:a=!1}=n;if(e&&this.voiRange&&this.voiRange.lower===e.lower&&this.voiRange.upper===e.upper&&!i&&!this.stackInvalidated)return;const s=this.getDefaultActor();if(!s||!dt(s))return;const o=s.actor;let c=e;if(typeof c>"u"){const h=o.getMapper().getInputData().getPointData().getScalars().getRange();c={lower:h[0],upper:h[1]}}o.getProperty().setUseLookupTableScalarRange(!0);let l=o.getProperty().getRGBTransferFunction(0);const u=this.VOILUTFunction===Ae.SAMPLED_SIGMOID;if((u||!l||i)&&(l=(u?W0:of)(c),this.invert&&Lr(l),o.getProperty().setRGBTransferFunction(0,l),this.initialTransferFunctionNodes=oa(l)),u||l.setRange(c.lower,c.upper),this.voiRange=c,this.voiUpdatedWithSetProperties||(this.voiUpdatedWithSetProperties=a),r)return;const f={viewportId:this.id,range:c,VOILUTFunction:this.VOILUTFunction};$(this.element,A.VOI_MODIFIED,f)}_addScalingToViewport(e){if(this.scaling.PT)return;const{suvbw:n,suvlbm:r,suvbsa:i}=e,a={};r&&(a.suvbwToSuvlbm=r/n),i&&(a.suvbwToSuvbsa=i/n),this.scaling.PT=a}getImageDataMetadata(e){const n=e.imageId,r=sf(e),{numberOfComponents:i,origin:a,direction:s,dimensions:o,spacing:c,numVoxels:l,imagePixelModule:u,voiLUTFunction:f,modality:g,scalingFactor:h,calibration:d}=r;g==="PT"&&h&&this._addScalingToViewport(h),this.modality=g;const m=this._getValidVOILUTFunction(f);this.VOILUTFunction=m,this.calibration=d;let p=this._getImagePlaneModule(n);return this.useCPURendering||(p=this.calibrateIfNecessary(n,p)),{bitsAllocated:u.bitsAllocated,numberOfComponents:i,origin:a,direction:s,dimensions:o,spacing:c,numVoxels:l,imagePlaneModule:p,imagePixelModule:u}}matchImagesForOverlay(e,n){return(i=>{const a=j(Ye.IMAGE_PLANE,n),s=j(Ye.IMAGE_PLANE,i),o=a.imageOrientationPatient,c=s.imageOrientationPatient;if(o&&c){if(Oe(a.imageOrientationPatient,s.imageOrientationPatient)){const u=a.imagePositionPatient,f=s.imagePositionPatient;if(u&&f&&Oe(u,f)){const h=a.rows,d=a.columns,m=s.rows,p=s.columns;if(h===m&&d===p)return i}}}else{const l=a.rows,u=a.columns,f=s.rows,g=s.columns;if(l===f&&u===g)return i}})(e)}getImagePlaneReferenceData(e=this.getCurrentImageIdIndex()){const n=this.imageIds[e];if(!n)return;const r=j(Ye.IMAGE_PLANE,n);if(!r)return;const{imagePositionPatient:i,frameOfReferenceUID:a}=r;let{rowCosines:s,columnCosines:o}=r;s||(s=[1,0,0]),o||(o=[0,1,0]);const c=ye([0,0,0],o,s);return{FrameOfReferenceUID:a,viewPlaneNormal:c,cameraFocalPoint:i,referencedImageId:n,sliceIndex:e}}_getCameraOrientation(e){const n=e.slice(6,9).map(i=>-i),r=e.slice(3,6).map(i=>-i);return{viewPlaneNormal:[n[0],n[1],n[2]],viewUp:[r[0],r[1],r[2]]}}createVTKImageData({origin:e,direction:n,dimensions:r,spacing:i,numberOfComponents:a,pixelArray:s}){const o=new s.constructor(s.length),c=ie.newInstance({name:"Pixels",numberOfComponents:a,values:o}),l=ta.newInstance();return l.setDimensions(r),l.setSpacing(i),l.setDirection(n),l.setOrigin(e),l.getPointData().setScalars(c),l}_createVTKImageData({origin:e,direction:n,dimensions:r,spacing:i,numberOfComponents:a,pixelArray:s}){try{this._imageData=this.createVTKImageData({origin:e,direction:n,dimensions:r,spacing:i,numberOfComponents:a,pixelArray:s})}catch(o){Oc.error(o)}}async setStack(e,n=0){if(this._throwIfDestroyed(),this.imageIds=e,n>e.length)throw new Error("Current image index is greater than the number of images in the stack");this.imageKeyToIndexMap.clear(),e.forEach((s,o)=>{this.imageKeyToIndexMap.set(s,o),this.imageKeyToIndexMap.set(ot(s),o)}),this.currentImageIdIndex=n,this.targetImageIdIndex=n;const r=j(jr.IMAGE_RETRIEVE_CONFIGURATION,e[n],"stack");this.imagesLoader=r?(r.create||ju)(r):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=Bt.LINEAR,this.invert=!1,this.viewportStatus=Ke.LOADING,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={},delete this._cpuFallbackEnabledElement.viewport.colormap);const i=await this._setImageIdIndex(n),a={imageIds:e,viewportId:this.id,element:this.element,currentImageIdIndex:n};return $(this.element,A.VIEWPORT_NEW_IMAGE_SET,a),i}_throwIfDestroyed(){if(this.isDisabled)throw new Error("The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you are using the same viewportId and have re-enabled the viewport, you need to grab the new viewport instance using renderingEngine.getViewport(viewportId), instead of using your lexical scoped reference to the viewport instance.")}_checkVTKImageDataMatchesCornerstoneImage(e,n){if(!n)return!1;const[r,i]=n.getSpacing(),[a,s]=n.getDimensions(),o=this._getImagePlaneModule(e.imageId),c=n.getDirection(),l=c.slice(0,3),u=c.slice(3,6),f=n.getPointData().getScalars().getDataType(),g=Oe(r,e.columnPixelSpacing),h=Oe(i,e.rowPixelSpacing),d=g||e.columnPixelSpacing===null&&r===1,m=h||e.rowPixelSpacing===null&&i===1,p=a===e.columns,v=s===e.rows,T=Oe(o.rowCosines,l),C=Oe(o.columnCosines,u),y=f===e.voxelManager.getScalarData().constructor.name;return d&&m&&p&&v&&T&&C&&y}_updateVTKImageDataFromCornerstoneImage(e){let r=this._getImagePlaneModule(e.imageId).imagePositionPatient;r==null&&(r=[0,0,0]),this._imageData.setOrigin(r);const i=this.getActor(this.id);i&&(i.referencedId=e.imageId),cf(this._imageData,e)}_loadAndDisplayImage(e,n){return this.useCPURendering?this._loadAndDisplayImageCPU(e,n):this._loadAndDisplayImageGPU(e,n)}_loadAndDisplayImageCPU(e,n){return new Promise((r,i)=>{function a(h,d,m){if(this.currentImageIdIndex!==d)return;const p=h.voxelManager.getScalarData(),v=h.preScale,T=v==null?void 0:v.scalingParameters,C=(v==null?void 0:v.scaled)&&(T==null?void 0:T.rescaleIntercept)%1!==0||(T==null?void 0:T.rescaleSlope)%1!==0;if(p instanceof Float32Array&&C){const x={min:h.minPixelValue,max:h.maxPixelValue},R=Math.abs(x.max-x.min)/65535,D=x.min,S=p.length,O=new Uint16Array(S);let V=65535,L=0;for(let b=0;bO:h.getPixelData=()=>O,h.preScale={...h.preScale,scaled:!1}}this._setCSImage(h),this.viewportStatus=Ke.PRE_RENDER;const y={image:h,imageId:m,imageIdIndex:d,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.STACK_NEW_IMAGE,y),this._updateToDisplayImageCPU(h),this.render(),this.currentImageIdIndex=d,r(m)}function s(h,d,m){const p={error:h,imageIdIndex:d,imageId:m};this.suppressEvents||$(ne,A.IMAGE_LOAD_ERROR,p),i(h)}function o(h,d,m){return rr(h,m).then(p=>{a.call(this,p,d,h)},p=>{s.call(this,p,d,h)})}const c=-5,l=Z.Interaction,u={imageId:e,imageIdIndex:n},f={useRGBA:!0,requestType:l},g={imageId:e,imageIdIndex:n,viewportId:this.id,renderingEngineId:this.renderingEngineId};$(this.element,A.PRE_STACK_NEW_IMAGE,g),It.addRequest(o.bind(this,e,n,f),l,u,c)})}successCallback(e,n){var l,u;const r=this.imageIds.indexOf(e);if(this.currentImageIdIndex!==r)return;const i=(l=this.csImage)==null?void 0:l.imageFrame,a=n==null?void 0:n.imageFrame,s=(i==null?void 0:i.photometricInterpretation)||((u=this.csImage)==null?void 0:u.photometricInterpretation),o=(a==null?void 0:a.photometricInterpretation)||(n==null?void 0:n.photometricInterpretation);s!==o&&(this.stackInvalidated=!0),this._setCSImage(n);const c={image:n,imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};this._updateActorToDisplayImageId(n),$(this.element,A.STACK_NEW_IMAGE,c),this.render(),this.currentImageIdIndex=r}errorCallback(e,n,r){if(!n)return;const i=this.imageIds.indexOf(e),a={error:r,imageIdIndex:i,imageId:e};$(ne,A.IMAGE_LOAD_ERROR,a)}getLoaderImageOptions(e){const n=this.imageIds.indexOf(e),{transferSyntaxUID:r}=j("transferSyntax",e)||{};return{useRGBA:!1,transferSyntaxUID:r,priority:5,requestType:Z.Interaction,additionalDetails:{imageId:e,imageIdIndex:n}}}async loadImages(e,n){const r=await Promise.allSettled(e.map(a=>{const s=this.getLoaderImageOptions(a);return rr(a,s).then(o=>(n.successCallback(a,o),a),o=>(n.errorCallback(a,!0,o),a))})),i=r.filter(a=>a.status==="rejected");if(i&&i.length){const a=new CustomEvent(A.IMAGE_LOAD_ERROR,{detail:i,cancelable:!0});ne.dispatchEvent(a)}return r}_loadAndDisplayImageGPU(e,n){if(!e){console.warn("No image id set yet to load");return}const r={imageId:e,imageIdIndex:n,viewportId:this.id,renderingEngineId:this.renderingEngineId};return $(this.element,A.PRE_STACK_NEW_IMAGE,r),this.imagesLoader.loadImages([e],this).then(i=>e)}_updateToDisplayImageCPU(e){const n=this.getImageDataMetadata(e),r=mf(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:i,windowWidth:a,voiLUTFunction:s}=r.voi;this.voiRange=Nr(a,i,s),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...n},this.cpuImagePixelData=e.voxelManager.getScalarData();const o=Object.assign({},r,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?r:o,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=qr(this._cpuFallbackEnabledElement)}getSliceViewInfo(){throw new Error("Method not implemented.")}addImages(e){const n=[];e.forEach(r=>{const{imageId:i,...a}=r,s=K.getImage(i),{origin:o,dimensions:c,direction:l,spacing:u,numberOfComponents:f}=this.getImageDataMetadata(s),g=this.createVTKImageData({origin:o,dimensions:c,direction:l,spacing:u,numberOfComponents:f,pixelArray:s.voxelManager.getScalarData()}),h=this.createActorMapper(g);h&&(n.push({uid:r.actorUID??Ot(),actor:h,referencedId:i,...a}),r.callback&&r.callback({imageActor:h,imageId:r.imageId}))}),this.addActors(n)}_updateActorToDisplayImageId(e){const n=this._checkVTKImageDataMatchesCornerstoneImage(e,this._imageData),r=this.getViewPresentation();if(n&&!this.stackInvalidated){this._updateVTKImageDataFromCornerstoneImage(e),this.resetCameraNoEvent(),this.setViewPresentation(r),this._setPropertiesFromCache(),this.stackActorReInitialized=!1;return}const{origin:i,direction:a,dimensions:s,spacing:o,numberOfComponents:c,imagePixelModule:l}=this.getImageDataMetadata(e),u=e.voxelManager.getScalarData();this._createVTKImageData({origin:i,direction:a,dimensions:s,spacing:o,numberOfComponents:c,pixelArray:u}),this._updateVTKImageDataFromCornerstoneImage(e);const f=this.createActorMapper(this._imageData),g=this.getActors();g.length&&g[0].uid===this.id?g[0].actor=f:g.unshift({uid:this.id,actor:f,referencedId:e.imageId}),this.setActors(g);const{viewPlaneNormal:h,viewUp:d}=this._getCameraOrientation(a),m=this.getCamera();this.setCameraNoEvent({viewUp:d,viewPlaneNormal:h}),this.initialViewUp=d,this.resetCameraNoEvent(),this.setViewPresentation(r),this.triggerCameraEvent(this.getCamera(),m);const p=l.photometricInterpretation==="MONOCHROME1";this.stackInvalidated=!0;const v=this._getInitialVOIRange(e);this.setVOI(v,{forceRecreateLUTFunction:!!p}),this.initialInvert=!!p,this.setInvertColor(this.invert||this.initialInvert),this.stackInvalidated=!1,this.stackActorReInitialized=!0,this._publishCalibratedEvent&&this.triggerCalibrationEvent()}_getInitialVOIRange(e){if(this.voiRange&&this.voiUpdatedWithSetProperties)return this.voiRange;const{windowCenter:n,windowWidth:r,voiLUTFunction:i}=e;let a=this._getVOIRangeFromWindowLevel(r,n,i);return a=this._getPTPreScaledRange()||a,a}_getPTPreScaledRange(){if(this._isCurrentImagePTPrescaled())return this._getDefaultPTPrescaledVOIRange()}_isCurrentImagePTPrescaled(){var e;return!(this.modality!=="PT"||!this.csImage.isPreScaled||!((e=this.csImage.preScale)!=null&&e.scalingParameters.suvbw))}_getDefaultPTPrescaledVOIRange(){return{lower:0,upper:5}}_getVOIRangeFromWindowLevel(e,n,r=Ae.LINEAR){let i,a;if(typeof n=="number"&&typeof e=="number"?(i=n,a=e):Array.isArray(n)&&Array.isArray(e)&&(i=n[0],a=e[0]),i!==void 0&&a!==void 0)return Nr(a,i,r)}async _setImageIdIndex(e){if(e>=this.imageIds.length)throw new Error(`ImageIdIndex provided ${e} is invalid, the stack only has ${this.imageIds.length} elements`);this.currentImageIdIndex=e,this.hasPixelSpacing=!0,this.viewportStatus=Ke.PRE_RENDER;const n=await this._loadAndDisplayImage(this.imageIds[e],e);if(this.perImageIdDefaultProperties.size>=1){const r=this.perImageIdDefaultProperties.get(n);r!==void 0?this.setProperties(r):this.globalDefaultProperties!==void 0&&this.setProperties(this.globalDefaultProperties)}return n}resetCameraCPU({resetPan:e=!0,resetZoom:n=!0}){const{image:r}=this._cpuFallbackEnabledElement;if(!r)return;oy(this._cpuFallbackEnabledElement,e,n);const{scale:i}=this._cpuFallbackEnabledElement.viewport,{clientWidth:a,clientHeight:s}=this.element,o=[a/2,s/2],c=this.canvasToWorldCPU(o);this.setCameraCPU({focalPoint:c,scale:i})}resetCameraGPU({resetPan:e,resetZoom:n}){return this.setCamera({flipHorizontal:!1,flipVertical:!1,viewUp:this.initialViewUp}),super.resetCamera({resetPan:e,resetZoom:n,resetToCenter:!0})}scroll(e,n=!0,r=!1){const i=this.imageIds;if(isNaN(this.targetImageIdIndex))return;const a=this.targetImageIdIndex,s=i.length;let o=a+e;r?o=(o+s)%s:o=Math.max(0,Math.min(s-1,o)),this.targetImageIdIndex=o;const c=i[o];K.isLoaded(c)||!n?this.setImageIdIndex(o):(clearTimeout(this.debouncedTimeout),this.debouncedTimeout=window.setTimeout(()=>{this.setImageIdIndex(o)},40));const u={newImageIdIndex:o,imageId:c,direction:e};o!==a&&$(this.element,A.STACK_VIEWPORT_SCROLL,u)}setImageIdIndex(e){if(this._throwIfDestroyed(),this.currentImageIdIndex===e)return Promise.resolve(this.getCurrentImageId());const n=this._setImageIdIndex(e);return this.targetImageIdIndex=e,n}calibrateSpacing(e){const n=this.getImageIds().indexOf(e);this.stackInvalidated=!0,this._loadAndDisplayImage(e,n)}triggerCameraEvent(e,n){const r={previousCamera:n,camera:e,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};this.suppressEvents||$(this.element,A.CAMERA_MODIFIED,r)}triggerCalibrationEvent(){const{imageData:e}=this.getImageData(),n={element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,imageId:this.getCurrentImageId(),imageData:e,worldToIndex:e.getWorldToIndex(),...this._calibrationEvent};this.suppressEvents||$(this.element,A.IMAGE_SPACING_CALIBRATED,n),this._publishCalibratedEvent=!1}jumpToWorld(e){const n=this.getImageIds(),r=this.getImageData(),{direction:i,spacing:a}=r,s=sa({direction:i,spacing:a,imageIds:n},e,this.getCamera().viewPlaneNormal,{ignoreSpacing:!0}),o=n.indexOf(s);return o===-1?!1:(this.setImageIdIndex(o),this.render(),!0)}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:n,voiLUTFunction:r}=this.csImage;return this._getVOIRangeFromWindowLevel(n,e,r)}_getValidVOILUTFunction(e){return Object.values(Ae).includes(e)?e:Ae.LINEAR}getSliceInfo(){const e=this.getSliceIndex(),{dimensions:n}=this.getImageData();return{width:n[0],height:n[1],sliceIndex:e,slicePlane:2}}isReferenceViewable(e,n={}){const r=this.getCurrentImageIdIndex(),i=this.imageIds[r];if(!i||!e)return!1;const{referencedImageId:a,multiSliceReference:s}=e;if(a){if(a===i)return!0;e.referencedImageURI||(e.referencedImageURI=ot(a));const{referencedImageURI:c}=e,l=this.imageKeyToIndexMap.get(c);if(n.asOverlay&&this.matchImagesForOverlay(i,a))return!0;if(l===void 0)return!1;if(n.withNavigation)return!0;const u=s&&this.imageKeyToIndexMap.get(s.referencedImageId);return r<=u&&r>=l}if(!super.isReferenceViewable(e,n))return!1;if(e.volumeId)return n.asVolume;const{cameraFocalPoint:o}=e;if(n.asNearbyProjection&&o){const{spacing:c,direction:l,origin:u}=this.getImageData(),f=l.slice(6,9),g=ri({direction:l,spacing:c},f),h=ze(z(),o,u),d=le(h,f),m=g/2;if(Math.abs(d)<=m)return!0}return!1}getViewReference(e={}){const{sliceIndex:n=this.getCurrentImageIdIndex()}=e,r=super.getViewReference(e),i=this.getCurrentImageId(n);if(i){if(r.referencedImageId=i,this.getCurrentImageIdIndex()!==n){const a=this.getImagePlaneReferenceData(n);if(!a)return;Object.assign(r,a)}return r}}setViewReference(e){if(!(e!=null&&e.referencedImageId)){(e==null?void 0:e.sliceIndex)!==void 0&&this.scroll(e.sliceIndex-this.targetImageIdIndex);return}const{referencedImageId:n}=e;e.referencedImageURI||(e.referencedImageURI=ot(n));const{referencedImageURI:r}=e,i=this.imageKeyToIndexMap.get(r);if(i===void 0){Oc.error(`No image URI found for ${r}`);return}this.scroll(i-this.targetImageIdIndex)}getViewReferenceId(e={}){const{sliceIndex:n=this.currentImageIdIndex}=e;return`imageId:${this.imageIds[n]}`}getSliceIndexForImage(e){if(e){if(typeof e=="string")return this.imageKeyToIndexMap.get(e);if(e.referencedImageId)return this.imageKeyToIndexMap.get(e.referencedImageId)}}getCPUFallbackError(e){return new Error(`method ${e} cannot be used during CPU Fallback mode`)}fillWithBackgroundColor(){const e=this.getRenderingEngine();e&&e.fillCanvasWithBackgroundColor(this.canvas,this.options.background)}unsetColormapCPU(){delete this._cpuFallbackEnabledElement.viewport.colormap,this._cpuFallbackEnabledElement.renderingTools={},this.cpuRenderingInvalidated=!0,this.fillWithBackgroundColor(),this.render()}setColormapCPU(e){this.colormap=e;const n=$r(e.name);this._cpuFallbackEnabledElement.viewport.colormap=n,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render();const r={viewportId:this.id,colormap:e};$(this.element,A.COLORMAP_MODIFIED,r)}setColormapGPU(e){const i=this.getDefaultActor().actor.getProperty(),a=i.getRGBTransferFunction(),s=$r(e.name)||zr.getPresetByName(e.name);if(a)a.applyColorMap(s),a.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,a);else{const c=ln.newInstance();c.applyColorMap(s),c.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,c)}this.colormap=e,this.render();const o={viewportId:this.id,colormap:e};$(this.element,A.COLORMAP_MODIFIED,o)}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){var r,i;const n=rf(e);return this.hasPixelSpacing=!n.usingDefaultValues||((r=this.calibration)==null?void 0:r.scale)>0||((i=this.calibration)==null?void 0:i.rowPixelSpacing)>0,this.calibration||(this.calibration=n.calibration),n}isInAcquisitionPlane(){return!0}}class vf extends Ua{constructor(e){super(e),this.getNumberOfSlices=()=>1,this.getRotation=()=>0,this.getCurrentImageIdIndex=()=>0,this.getCurrentImageId=()=>null,this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0});const{parallelProjection:n,orientation:r}=this.options,i=this.getVtkActiveCamera();n!=null&&i.setParallelProjection(n),r&&r!==Dn.ACQUISITION&&this.applyViewOrientation(r)}isInAcquisitionPlane(){return!1}resetCamera({resetPan:e=!0,resetZoom:n=!0,resetToCenter:r=!0}={}){super.resetCamera({resetPan:e,resetZoom:n,resetToCenter:r});const i=this.getVtkActiveCamera();return i.getParallelProjection()?i.setClippingRange(-Se.MAXIMUM_RAY_DISTANCE,Se.MAXIMUM_RAY_DISTANCE):i.setClippingRange(Se.MINIMUM_SLAB_THICKNESS,Se.MAXIMUM_RAY_DISTANCE),this.getRenderer().resetCameraClippingRange(),!0}setSlabThickness(e,n){return null}setBlendMode(e,n,r){return null}resetProperties(e){const n=e?this.getActor(e):this.getDefaultActor();if(!n)throw new Error(`No actor found for the given volumeId: ${e}`);n.slabThickness&&(n.slabThickness=Se.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const r=K.getVolume(e);if(!r)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(H0(n.actor,r),dt(n)){const i=n.actor.getProperty().getRGBTransferFunction(0);Fa(i,this.initialTransferFunctionNodes)}this.setCamera(this.initialCamera),$(this.element,A.VOI_MODIFIED,super.getVOIModifiedEventDetail(e))}getSliceIndex(){return null}setCamera(e){super.setCamera(e),this.getRenderer().resetCameraClippingRange(),this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(-Se.MAXIMUM_RAY_DISTANCE,Se.MAXIMUM_RAY_DISTANCE):e.setClippingRange(Se.MINIMUM_SLAB_THICKNESS,Se.MAXIMUM_RAY_DISTANCE)}resetSlabThickness(){return null}}async function ly(t,e,n,r=!1,i=!1){n.forEach(s=>{const o=t.getViewport(s);if(!o)throw new Error(`Viewport with Id ${s} does not exist`);if(!(o instanceof Ua))throw new Error("setVolumesForViewports only supports VolumeViewport and VolumeViewport3D")});const a=n.map(async s=>{await t.getViewport(s).setVolumes(e,r,i)});await Promise.all(a)}class uy{constructor(e){this.opacity=.4,this.outlineOpacity=.4,this.transferFunction=[],this.actor=e}setRGBTransferFunction(e,n){this.transferFunction[e]=n}setScalarOpacity(e){}setInterpolationTypeToNearest(){}setUseLabelOutline(){}setLabelOutlineOpacity(e){this.outlineOpacity=e}setLabelOutlineThickness(){}getColor(e){const n=this.transferFunction[0],r=n.getRedValue(e),i=n.getGreenValue(e),a=n.getBlueValue(e);return[r,i,a,this.opacity]}}class fy{constructor(e){this.actor=e}getInputData(){return this.actor.getImage()}}class gy{constructor(e,n){this.canvasProperties=new uy(this),this.visibility=!1,this.mapper=new fy(this),this.className="CanvasActor",this.derivedImage=n,this.viewport=e}renderRLE(e,n,r){const{width:i,height:a}=this.image;let{canvas:s}=this;(!s||s.width!==i||s.height!==a)&&(this.canvas=s=new window.OffscreenCanvas(i,a));const o=s.getContext("2d"),c=o.createImageData(i,a),{data:l}=c;l.fill(0);const{map:u}=r;let f=1/0,g=1/0,h=-1/0,d=-1/0;for(let v=0;vO*255);let S=C+(w<<2);for(let O=w;Oi)return;const m=h-f,p=d-g;o.putImageData(c,0,0,f-1,g-1,m+2,p+2),n.drawImage(s,f,g,m,p,f,g,m,p)}setMapper(e){this.mapper=e}render(e,n){if(!this.visibility)return;const r=this.image||this.getImage(),{width:i,height:a}=r,s=r.getScalarData();if(!s)return;const{voxelManager:o}=r;if(o&&o.map.getRun){this.renderRLE(e,n,o);return}let{canvas:c}=this;(!c||c.width!==i||c.height!==a)&&(this.canvas=c=new window.OffscreenCanvas(i,a));const l=c.getContext("2d"),u=l.createImageData(i,a),{data:f}=u;let g=0,h=0,d=1/0,m=1/0,p=-1/0,v=-1/0;for(let y=0;yi)return;const T=p-d+1,C=v-m+1;l.putImageData(u,0,0,d,m,T,C),n.drawImage(c,d,m,T,C,d,m,T,C)}getClassName(){return this.className}getProperty(){return this.canvasProperties}setVisibility(e){this.visibility=e}getMapper(){return this.mapper}isA(e){return e===this.className}getImage(){if(this.image)return this.image;this.image={...this.derivedImage};const e=this.viewport.getImageData();return Object.assign(this.image,{worldToIndex:n=>e.imageData.worldToIndex(n),indexToWorld:(n,r)=>e.imageData.indexToWorld(n,r),getDimensions:()=>e.dimensions,getScalarData:()=>{var n;return(n=this.derivedImage)==null?void 0:n.getPixelData()},getDirection:()=>e.direction,getSpacing:()=>e.spacing,setOrigin:()=>null,setDerivedImage:n=>{this.derivedImage=n,this.image=null},modified:()=>null}),this.image}}const no=class no{static imageIdToFrames(e){const n=e.match(this.frameRangeExtractor);if(!n||!n[2])return null;const r=n[2].split("-").map(i=>Number(i));return r.length===1?r[0]:r}static imageIdToFrameEnd(e){const n=this.imageIdToFrames(e);return Array.isArray(n)?n[1]:n}static imageIdToFrameStart(e){const n=this.imageIdToFrames(e);return Array.isArray(n)?n[0]:n}static framesToString(e){return Array.isArray(e)?`${e[0]}-${e[1]}`:String(e)}static framesToImageId(e,n){const r=e.match(this.frameRangeExtractor);if(!r||!r[2])return null;const i=this.framesToString(n);return e.replace(this.frameRangeExtractor,`${r[1]}${i}`)}};no.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let Xn=no;const Ur=class Ur extends ar{constructor(e){super({...e,canvas:e.canvas||Gt(e.element)}),this.videoWidth=0,this.videoHeight=0,this.loop=!0,this.mute=!0,this.isPlaying=!1,this.scrollSpeed=1,this.playbackRate=1,this.frameRange=[0,0],this.fps=30,this.videoCamera={panWorld:[0,0],parallelScale:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({loop:this.videoElement.loop,muted:this.videoElement.muted,playbackRate:this.playbackRate,scrollSpeed:this.scrollSpeed,voiRange:{...this.voiRange}}),this.getMiddleSliceData=()=>{throw new Error("Method not implemented.")},this.useCustomRenderingPipeline=!0,this.resetCamera=()=>(this.refreshRenderValues(),this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame(),!0),this.getNumberOfSlices=()=>{const n=Math.round(this.videoElement.duration*this.fps/this.scrollSpeed);return isNaN(n)?this.numberOfFrames:n},this.getFrameOfReferenceUID=()=>this.videoElement.src,this.resize=()=>{const n=this.canvas,{clientWidth:r,clientHeight:i}=n;(n.width!==r||n.height!==i)&&(n.width=r,n.height=i),this.refreshRenderValues(),this.isPlaying||this.renderFrame()},this.canvasToWorld=(n,r=[0,0,0])=>{const i=this.videoCamera.panWorld,a=this.getWorldToCanvasRatio(),s=[i[0]*a,i[1]*a],o=[n[0]-s[0],n[1]-s[1]];return r.splice(0,2,o[0]/a,o[1]/a),r},this.worldToCanvas=n=>{const r=this.videoCamera.panWorld,i=this.getWorldToCanvasRatio();return[(n[0]+r[0])*i,(n[1]+r[1])*i]},this.getRotation=()=>0,this.canvasToIndex=n=>{const r=this.getTransform();return r.invert(),r.transformPoint(n.map(i=>i*devicePixelRatio))},this.indexToCanvas=n=>this.getTransform().transformPoint(n).map(i=>i/devicePixelRatio),this.customRenderViewportToCanvas=()=>{this.renderFrame()},this.renderFrame=()=>{var o;const n=window.devicePixelRatio||1,i=this.getTransform().getMatrix(),a=this.canvasContext;a.resetTransform(),a.clearRect(0,0,this.canvas.width,this.canvas.height),a.transform(i[0]/n,i[1]/n,i[2]/n,i[3]/n,i[4]/n,i[5]/n),a.drawImage(this.videoElement,0,0,this.videoWidth,this.videoHeight);for(const c of this.getActors())c.actor.render(this,this.canvasContext);this.canvasContext.resetTransform(),$(this.element,A.STACK_NEW_IMAGE,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),$(this.element,A.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,imageIndex:this.getCurrentImageIdIndex(),numberOfSlices:this.numberOfFrames,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),(o=this.initialRender)==null||o.call(this);const s=this.getFrameNumber();this.isPlaying&&(sthis.frameRange[1]&&(this.loop?this.setFrameNumber(this.frameRange[0]):this.pause()))},this.renderWhilstPlaying=()=>{this.renderFrame(),this.isPlaying&&requestAnimationFrame(this.renderWhilstPlaying)},this.canvasContext=this.canvas.getContext("2d"),this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.videoElement=document.createElement("video"),this.videoElement.muted=this.mute,this.videoElement.loop=this.loop,this.videoElement.autoplay=!0,this.videoElement.crossOrigin="anonymous",this.addEventListeners(),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(A.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(A.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}getImageDataMetadata(e){const n=typeof e=="string"?e:e.imageId,r=j(Ye.IMAGE_PLANE,n);let i=r.rowCosines,a=r.columnCosines;(r.usingDefaultValues||i==null||a==null)&&(i=[1,0,0],a=[0,1,0]);const o=Me(i[0],i[1],i[2]),c=Me(a[0],a[1],a[2]),{rows:l,columns:u}=r,f=z();ye(f,o,c);let g=r.imagePositionPatient;g==null&&(g=[0,0,0]);const h=r.columnPixelSpacing||1,d=r.rowPixelSpacing||1,m=r.columns,p=r.rows,v=1,T=1;return this.hasPixelSpacing=!!r.columnPixelSpacing,{bitsAllocated:8,numberOfComponents:3,origin:g,rows:l,columns:u,direction:[...o,...c,...f],dimensions:[m,p,T],spacing:[h,d,v],hasPixelSpacing:this.hasPixelSpacing,numVoxels:m*p*T,imagePlaneModule:r}}setDataIds(e,n){var r;this.setVideo(e[0],(((r=n.viewReference)==null?void 0:r.sliceIndex)||0)+1)}setVideo(e,n){this.imageId=Array.isArray(e)?e[0]:e;const r=j(Ye.IMAGE_URL,e);if(!(r!=null&&r.rendered))throw new Error(`Video Image ID ${e} does not have a rendered video view`);const{rendered:i}=r,a=j(Ye.GENERAL_SERIES,e);this.modality=a==null?void 0:a.Modality,this.metadata=this.getImageDataMetadata(e);let{cineRate:s,numberOfFrames:o}=j(Ye.CINE,e);return this.numberOfFrames=o,this.setVideoURL(i).then(()=>((!o||o===1)&&(o=Math.round(this.videoElement.duration*(s||30))),s||(s=Math.round(o/this.videoElement.duration)),this.fps=s,this.numberOfFrames=o,this.setFrameRange([1,o]),this.initialRender=()=>{this.initialRender=null,this.pause(),this.setFrameNumber(n||1)},new Promise(c=>{window.setTimeout(()=>{this.setFrameNumber(n||1),c(this)},25)})))}async setVideoURL(e){return new Promise(n=>{this.videoElement.src=e,this.videoElement.preload="auto";const r=()=>{this.videoWidth=this.videoElement.videoWidth,this.videoHeight=this.videoElement.videoHeight,this.videoElement.removeEventListener("loadedmetadata",r),this.refreshRenderValues(),n(!0)};this.videoElement.addEventListener("loadedmetadata",r)})}getImageIds(){const e=new Array(this.numberOfFrames),n=this.imageId.replace(/[0-9]+$/,"");for(let r=0;r{r(),n.removeEventListener("seeked",s)};n.addEventListener("seeked",s)}async start(){const e=this.videoElement,n=this.renderFrame;if(e.currentTime=0,e.paused){const r=i=>{n(),e.removeEventListener("seeked",r)};e.addEventListener("seeked",r)}}async end(){const e=this.videoElement,n=this.renderFrame;if(e.currentTime=e.duration,e.paused){const r=i=>{n(),e.removeEventListener("seeked",r)};e.addEventListener("seeked",r)}}async setTime(e){const n=this.videoElement,r=this.renderFrame;if(n.currentTime=e,n.paused){const i=a=>{r(),n.removeEventListener("seeked",i)};n.addEventListener("seeked",i)}}getSliceViewInfo(){throw new Error("Method not implemented.")}async setFrameNumber(e){this.setTime((e-1)/this.fps)}setFrameRange(e){if(!e){this.frameRange=[1,this.numberOfFrames];return}e.length!==2||e[0]===e[1]||(this.frameRange=[e[0],e[1]])}getSliceIndexForImage(e){if(e){if(typeof e=="string")return Xn.imageIdToFrameStart(e);if(e.referencedImageId)return Xn.imageIdToFrameStart(e.referencedImageId)}}getFrameRange(){return this.frameRange}setProperties(e){e.loop!==void 0&&(this.videoElement.loop=e.loop),e.muted!==void 0&&(this.videoElement.muted=e.muted),e.playbackRate!==void 0&&this.setPlaybackRate(e.playbackRate),e.scrollSpeed!==void 0&&this.setScrollSpeed(e.scrollSpeed),e.voiRange&&this.setVOI(e.voiRange)}setPlaybackRate(e=1){if(this.playbackRate=e,e<.0625){this.pause();return}this.videoElement&&(this.videoElement.playbackRate=e,this.play())}setScrollSpeed(e=1,n=Pr.FRAME){this.scrollSpeed=n===Pr.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0,voiRange:{lower:0,upper:255}})}getScalarData(){var a;if(((a=this.scalarData)==null?void 0:a.frameNumber)===this.getFrameNumber())return this.scalarData;if(!this.videoElement||!this.videoElement.videoWidth||!this.videoElement.videoHeight){console.debug("Video not ready yet, returning empty scalar data");const s=new Uint8ClampedArray;return s.getRange=()=>[0,255],s.frameNumber=-1,s}const e=document.createElement("canvas");e.width=this.videoElement.videoWidth,e.height=this.videoElement.videoHeight;const n=e.getContext("2d");n.drawImage(this.videoElement,0,0);const i=n.getImageData(0,0,e.width,e.height).data;return i.getRange=()=>[0,255],i.frameNumber=this.getFrameNumber(),this.scalarData=i,i}getImageData(){const{metadata:e}=this,n=e.spacing,r={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:a=>{const s=this.worldToCanvas(a),o=this.canvasToIndex(s);return[o[0],o[1],0]},indexToWorld:(a,s)=>{const o=this.indexToCanvas([a[0],a[1]]);return this.canvasToWorld(o,s)}},i={dimensions:e.dimensions,spacing:n,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:e.FrameOfReferenceUID},getScalarData:()=>this.getScalarData(),scalarData:this.getScalarData(),imageData:r,voxelManager:{forEach:(a,s)=>Uu(s.imageData,{pointInShapeFn:s.isInObject??(()=>!0),callback:a,boundsIJK:s.boundsIJK,returnPoints:s.returnPoints??!1})},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1}};return Object.defineProperty(r,"scalarData",{get:()=>this.getScalarData(),enumerable:!0}),i}hasImageURI(e){const n=e.match(Ur.frameRangeExtractor),r=n?e.substring(0,n.index):e;return this.imageId.includes(r)}setVOI(e){this.voiRange=e;const n=this.setColorTransform(e,this.averageWhite);this.canvas.style.filter=n}setWindowLevel(e=256,n=128){const r=n-e/2,i=n+e/2-1;this.setVOI({lower:r,upper:i}),this.setColorTransform({lower:r,upper:i},this.averageWhite)}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}setCamera(e){const{parallelScale:n,focalPoint:r}=e;if(n&&(this.videoCamera.parallelScale=this.element.clientHeight/2/n),r!==void 0){const i=this.worldToCanvas(r),a=[this.element.clientWidth/2,this.element.clientHeight/2],s=[(i[0]-a[0])/this.videoCamera.parallelScale,(i[1]-a[1])/this.videoCamera.parallelScale];this.videoCamera.panWorld=[this.videoCamera.panWorld[0]-s[0],this.videoCamera.panWorld[1]-s[1]]}this.canvasContext.fillStyle="rgba(0,0,0,1)",this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame()}getCurrentImageId(e=this.getCurrentImageIdIndex()){return this.imageId.replace("/frames/1",`/frames/${e+1}`)}getViewReferenceId(e={}){const{sliceIndex:n}=e;return n===void 0?`videoId:${this.getCurrentImageId()}`:Array.isArray(n)?`videoId:${this.imageId.substring(0,this.imageId.length-1)}${n[0]+1}-${n[1]+1}`:`videoId:${this.imageId.replace("/frames/1",`/frames/${1+n}`)}`}isReferenceViewable(e,n={}){let{imageURI:r}=n;const{referencedImageId:i,sliceIndex:a,multiSliceReference:s}=e;if(!super.isReferenceViewable(e))return!1;const o=this.getCurrentImageId();if(!r){const g=o.indexOf(":");r=o.substring(g+1,o.length-1)}if(n.withNavigation)return!0;const c=this.getSliceIndex();if(s){const g=Xn.imageIdToFrameEnd(s.referencedImageId);return c>=a&&c<=g}if(a!==void 0)return c===a;if(!i)return!1;const l=i.match(Ur.frameRangeExtractor);if(!l||!l[2])return!0;const u=l[2].split("-").map(g=>Number(g)),f=c+1;return u[0]<=f&&f<=(u[1]??u[0])}setViewReference(e){typeof e.sliceIndex=="number"?this.setFrameNumber(e.sliceIndex+1):Array.isArray(e.sliceIndex)&&this.setFrameRange(e.sliceIndex)}getViewReference(e){const n=(e==null?void 0:e.sliceIndex)??(this.isPlaying?this.frameRange[0]:this.getCurrentImageIdIndex()),r=(e==null?void 0:e.rangeEndSliceIndex)??(this.isPlaying?this.frameRange[1]-1:void 0),i=r>n?{sliceIndex:r,referencedImageId:this.getCurrentImageId(r)}:void 0;return{...super.getViewReference(e),referencedImageId:this.getViewReferenceId(e),sliceIndex:n,multiSliceReference:i}}getFrameNumber(){return 1+this.getCurrentImageIdIndex()}getCurrentImageIdIndex(){return Math.round(this.videoElement.currentTime*this.fps)}getSliceIndex(){return this.getCurrentImageIdIndex()/this.scrollSpeed}getCamera(){const{parallelScale:e}=this.videoCamera,n=[this.element.clientWidth/2,this.element.clientHeight/2];return{parallelProjection:!0,focalPoint:this.canvasToWorld(n),position:[0,0,0],viewUp:[0,-1,0],parallelScale:this.element.clientHeight/2/e,viewPlaneNormal:[0,0,1]}}getFrameRate(){return this.fps}getPan(){const e=this.videoCamera.panWorld;return[e[0],e[1]]}refreshRenderValues(){let e=this.canvas.offsetWidth/this.videoWidth;this.videoHeight*e>this.canvas.height&&(e=this.canvas.offsetHeight/this.videoHeight);const n=Math.floor(this.videoWidth*e),r=Math.floor(this.videoHeight*e),i=(this.canvas.offsetWidth-n)/2,a=(this.canvas.offsetHeight-r)/2,s=i/e,o=a/e;this.videoCamera.panWorld=[s,o],this.videoCamera.parallelScale=e}getWorldToCanvasRatio(){return this.videoCamera.parallelScale}getCanvasToWorldRatio(){return 1/this.videoCamera.parallelScale}getTransform(){const e=this.videoCamera.panWorld,n=window.devicePixelRatio||1,r=this.getWorldToCanvasRatio(),i=this.getCanvasToWorldRatio(),a=[this.canvas.offsetWidth/2,this.canvas.offsetHeight/2],s=[a[0]*i,a[1]*i],o=new lr;return o.scale(n,n),o.translate(a[0],a[1]),o.scale(r,r),o.translate(e[0],e[1]),o.translate(-s[0],-s[1]),o}updateCameraClippingPlanesAndRange(){}addImages(e){const n=this.getActors();e.forEach(r=>{const{imageId:i,...a}=r,s=K.getImage(i),o=this.createActorMapper(s),c=r.actorUID??Ot();o&&(n.push({uid:c,actor:o,referencedId:i,...a}),r.callback&&r.callback({imageActor:o,imageId:i}))}),this.setActors(n)}createActorMapper(e){return new gy(this,e)}};Ur.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let Gs=Ur;const hy=` +.DicomMicroscopyViewer { + --ol-partial-background-color: rgba(127, 127, 127, 0.7); + --ol-foreground-color: #000000; + --ol-subtle-foreground-color: #000; + --ol-subtle-background-color: rgba(78, 78, 78, 0.5); +} + +.DicomMicroscopyViewer .ol-box { + box-sizing: border-box; + border-radius: 2px; + border: 1.5px solid var(--ol-background-color); + background-color: var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-mouse-position { + top: 8px; + right: 8px; + position: absolute; +} + +.DicomMicroscopyViewer .ol-scale-line { + background: var(--ol-partial-background-color); + border-radius: 4px; + bottom: 8px; + left: 8px; + padding: 2px; + position: absolute; +} + +.DicomMicroscopyViewer .ol-scale-line-inner { + border: 1px solid var(--ol-subtle-foreground-color); + border-top: none; + color: var(--ol-foreground-color); + font-size: 10px; + text-align: center; + margin: 1px; + will-change: contents, width; + transition: all 0.25s; +} + +.DicomMicroscopyViewer .ol-scale-bar { + position: absolute; + bottom: 8px; + left: 8px; +} + +.DicomMicroscopyViewer .ol-scale-bar-inner { + display: flex; +} + +.DicomMicroscopyViewer .ol-scale-step-marker { + width: 1px; + height: 15px; + background-color: var(--ol-foreground-color); + float: right; + z-index: 10; +} + +.DicomMicroscopyViewer .ol-scale-step-text { + position: absolute; + bottom: -5px; + font-size: 10px; + z-index: 11; + color: var(--ol-foreground-color); + text-shadow: + -1.5px 0 var(--ol-partial-background-color), + 0 1.5px var(--ol-partial-background-color), + 1.5px 0 var(--ol-partial-background-color), + 0 -1.5px var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-scale-text { + position: absolute; + font-size: 12px; + text-align: center; + bottom: 25px; + color: var(--ol-foreground-color); + text-shadow: + -1.5px 0 var(--ol-partial-background-color), + 0 1.5px var(--ol-partial-background-color), + 1.5px 0 var(--ol-partial-background-color), + 0 -1.5px var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar { + position: relative; + height: 10px; + z-index: 9; + box-sizing: border-box; + border: 1px solid var(--ol-foreground-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar-even { + background-color: var(--ol-subtle-foreground-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar-odd { + background-color: var(--ol-background-color); +} + +.DicomMicroscopyViewer .ol-unsupported { + display: none; +} + +.DicomMicroscopyViewer .ol-viewport, +.DicomMicroscopyViewer .ol-unselectable { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} + +.DicomMicroscopyViewer .ol-viewport canvas { + all: unset; +} + +.DicomMicroscopyViewer .ol-selectable { + -webkit-touch-callout: default; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} + +.DicomMicroscopyViewer .ol-grabbing { + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +.DicomMicroscopyViewer .ol-grab { + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.DicomMicroscopyViewer .ol-control { + position: absolute; + background-color: var(--ol-subtle-background-color); + border-radius: 4px; +} + +.DicomMicroscopyViewer .ol-zoom { + top: 0.5em; + left: 0.5em; +} + +.DicomMicroscopyViewer .ol-rotate { + top: 0.5em; + right: 0.5em; + transition: + opacity 0.25s linear, + visibility 0s linear; +} + +.DicomMicroscopyViewer .ol-rotate.ol-hidden { + opacity: 0; + visibility: hidden; + transition: + opacity 0.25s linear, + visibility 0s linear 0.25s; +} + +.DicomMicroscopyViewer .ol-zoom-extent { + top: 4.643em; + left: 0.5em; +} + +.DicomMicroscopyViewer .ol-full-screen { + right: 0.5em; + top: 0.5em; +} + +.DicomMicroscopyViewer .ol-control button { + display: block; + margin: 1px; + padding: 0; + color: var(--ol-subtle-foreground-color); + font-weight: bold; + text-decoration: none; + font-size: inherit; + text-align: center; + height: 1.375em; + width: 1.375em; + line-height: 0.4em; + background-color: var(--ol-background-color); + border: none; + border-radius: 2px; +} + +.DicomMicroscopyViewer .ol-control button::-moz-focus-inner { + border: none; + padding: 0; +} + +.DicomMicroscopyViewer .ol-zoom-extent button { + line-height: 1.4em; +} + +.DicomMicroscopyViewer .ol-compass { + display: block; + font-weight: normal; + will-change: transform; +} + +.DicomMicroscopyViewer .ol-touch .ol-control button { + font-size: 1.5em; +} + +.DicomMicroscopyViewer .ol-touch .ol-zoom-extent { + top: 5.5em; +} + +.DicomMicroscopyViewer .ol-control button:hover, +.DicomMicroscopyViewer .ol-control button:focus { + text-decoration: none; + outline: 1px solid var(--ol-subtle-foreground-color); + color: var(--ol-foreground-color); +} + +.DicomMicroscopyViewer .ol-zoom .ol-zoom-in { + border-radius: 2px 2px 0 0; +} + +.DicomMicroscopyViewer .ol-zoom .ol-zoom-out { + border-radius: 0 0 2px 2px; +} + +.DicomMicroscopyViewer .ol-attribution { + text-align: right; + bottom: 0.5em; + right: 0.5em; + max-width: calc(100% - 1.3em); + display: flex; + flex-flow: row-reverse; + align-items: center; +} + +.DicomMicroscopyViewer .ol-attribution a { + color: var(--ol-subtle-foreground-color); + text-decoration: none; +} + +.DicomMicroscopyViewer .ol-attribution ul { + margin: 0; + padding: 1px 0.5em; + color: var(--ol-foreground-color); + text-shadow: 0 0 2px var(--ol-background-color); + font-size: 12px; +} + +.DicomMicroscopyViewer .ol-attribution li { + display: inline; + list-style: none; +} + +.DicomMicroscopyViewer .ol-attribution li:not(:last-child):after { + content: ' '; +} + +.DicomMicroscopyViewer .ol-attribution img { + max-height: 2em; + max-width: inherit; + vertical-align: middle; +} + +.DicomMicroscopyViewer .ol-attribution button { + flex-shrink: 0; +} + +.DicomMicroscopyViewer .ol-attribution.ol-collapsed ul { + display: none; +} + +.DicomMicroscopyViewer .ol-attribution:not(.ol-collapsed) { + background: var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible { + bottom: 0; + right: 0; + border-radius: 4px 0 0; +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible img { + margin-top: -0.2em; + max-height: 1.6em; +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible button { + display: none; +} + +.DicomMicroscopyViewer .ol-zoomslider { + top: 4.5em; + left: 0.5em; + height: 200px; +} + +.DicomMicroscopyViewer .ol-zoomslider button { + position: relative; + height: 10px; +} + +.DicomMicroscopyViewer .ol-touch .ol-zoomslider { + top: 5.5em; +} + +.DicomMicroscopyViewer .ol-overviewmap { + left: 0.5em; + bottom: 0.5em; +} + +.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible { + bottom: 0; + left: 0; + border-radius: 0 4px 0 0; +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map, +.DicomMicroscopyViewer .ol-overviewmap button { + display: block; +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map { + border: 1px solid var(--ol-subtle-foreground-color); + height: 150px; + width: 150px; +} + +.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) button { + bottom: 0; + left: 0; + position: absolute; +} + +.DicomMicroscopyViewer .ol-overviewmap.ol-collapsed .ol-overviewmap-map, +.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible button { + display: none; +} + +.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) { + background: var(--ol-subtle-background-color); +} + +.DicomMicroscopyViewer .ol-overviewmap-box { + border: 0.5px dotted var(--ol-subtle-foreground-color); +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-box:hover { + cursor: move; +} + +@layout-header-background: #007ea3; +@primary-color: #007ea3; +@processing-color: #8cb8c6; +@success-color: #3f9c35; +@warning-color: #eeaf30; +@error-color: #96172e; +@font-size-base: 14px; + +.DicomMicroscopyViewer .ol-tooltip { + font-size: 16px !important; +} +`;let dr=null;const Dc=Symbol.for("map"),Vc=Symbol.for("affine"),dy="postrender",Hn=class Hn extends ar{constructor(e){super({...e,canvas:e.canvas||Gt(e.element)}),this.internalCamera={rotation:0,centerIndex:[0,0],extent:[0,-2,1,-1],xSpacing:1,ySpacing:1,resolution:1,zoom:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({voiRange:{...this.voiRange}}),this.resetCamera=()=>!0,this.getNumberOfSlices=()=>1,this.getFrameOfReferenceUID=()=>this.frameOfReferenceUID,this.resize=()=>{const r=this.canvas,{clientWidth:i,clientHeight:a}=r;(r.width!==i||r.height!==a)&&(r.width=i,r.height=a),this.refreshRenderValues()},this.canvasToWorld=r=>{if(!this.metadata)return;const i=this.canvasToIndex(r);return i[1]=-i[1],this.indexToWorld(i)},this.worldToCanvas=r=>{if(!this.metadata)return;const i=this.worldToIndex(r);return i[1]=-i[1],this.indexToCanvas([i[0],i[1],0])},this.postrender=()=>{this.refreshRenderValues(),$(this.element,A.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId})},this.getRotation=()=>0,this.canvasToIndex=r=>{const i=this.getTransform();i.invert();const a=i.transformPoint(r.map(s=>s*devicePixelRatio));return[a[0],a[1],0]},this.indexToCanvas=r=>this.getTransform().transformPoint([r[0],r[1]]).map(a=>a/devicePixelRatio),this.customRenderViewportToCanvas=()=>{},this.getImageIds=()=>[this.imageIds[0]],this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.element.style.position="relative",this.microscopyElement=document.createElement("div"),this.microscopyElement.setAttribute("class","DicomMicroscopyViewer"),this.microscopyElement.id=Ot(),this.microscopyElement.innerText="Initial",this.microscopyElement.style.background="grey",this.microscopyElement.style.width="100%",this.microscopyElement.style.height="100%",this.microscopyElement.style.position="absolute",this.microscopyElement.style.left="0",this.microscopyElement.style.top="0";const n=this.element.firstElementChild;n.insertBefore(this.microscopyElement,n.childNodes[1]),this.addEventListeners(),this.addWidget("DicomMicroscopyViewer",{getEnabled:()=>!!this.viewer,setEnabled:()=>{this.elementDisabledHandler()}}),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(A.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(A.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){var n;this.removeEventListeners(),(n=this.viewer)==null||n.cleanup(),this.viewer=null,this.element.firstElementChild.removeChild(this.microscopyElement),this.microscopyElement=null}getImageDataMetadata(e=0){var D;const n=this.metadataDicomweb.reduce((S,O)=>(S==null?void 0:S.NumberOfFrames){i.style.filter=n})}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}getScalarData(){return null}computeTransforms(){const e=Wt(),n=Wt();return ni(e,this.metadata.origin),e[0]=this.metadata.direction[0],e[1]=this.metadata.direction[1],e[2]=this.metadata.direction[2],e[4]=this.metadata.direction[3],e[5]=this.metadata.direction[4],e[6]=this.metadata.direction[5],e[8]=this.metadata.direction[6],e[9]=this.metadata.direction[7],e[10]=this.metadata.direction[8],Vt(e,e,this.metadata.spacing),Be(n,e),{indexToWorld:e,worldToIndex:n}}getImageData(){const{metadata:e}=this;if(!e)return null;const{spacing:n}=e,r={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:a=>this.worldToIndex(a),indexToWorld:a=>this.indexToWorld(a)};return{dimensions:e.dimensions,spacing:n,numberOfComponents:3,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.frameOfReferenceUID},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1},scalarData:this.getScalarData(),imageData:r}}hasImageURI(e){return!0}setCamera(e){const n=this.getCamera(),{parallelScale:r,focalPoint:i}=e,a=this.getView(),{xSpacing:s}=this.internalCamera;if(r){const c=this.element.clientHeight/r,l=1/s/c;a.setResolution(l)}if(i){const c=this.worldToCanvas(i),l=this.canvasToIndex(c);a.setCenter(l)}const o=this.getCamera();this.triggerCameraModifiedEventIfNecessary(n,o)}getCurrentImageId(){return this.imageIds[0]}getFrameNumber(){return 1}getCamera(){this.refreshRenderValues();const{resolution:e,xSpacing:n,centerIndex:r}=this.internalCamera,i=e*n,a=this.indexToCanvas([r[0],r[1],0]),s=this.canvasToWorld(a);return{parallelProjection:!0,focalPoint:s,position:s,viewUp:[0,-1,0],parallelScale:this.element.clientHeight*i,viewPlaneNormal:[0,0,1]}}worldToIndexWSI(e){if(!dr)return;const n=this.viewer[Vc],r=dr.applyInverseTransform({coordinate:[e[0],e[1]],affine:n});return[r[0],r[1]]}indexToWorldWSI(e){if(!dr)return;const n=dr.applyTransform({coordinate:[e[0],e[1]],affine:this.viewer[Vc]});return[n[0],n[1],0]}worldToIndex(e){const{worldToIndex:n}=this.computeTransforms(),r=z();return ue(r,e,n),r}indexToWorld(e){const{indexToWorld:n}=this.computeTransforms(),r=z(),i=Me(...e);return ue(r,i,n),[r[0],r[1],r[2]]}setDataIds(e,n){(n==null?void 0:n.miniNavigationOverlay)!==!1&&Hn.addMiniNavigationOverlayCss();const r=(n==null?void 0:n.webClient)||j(Ye.WADO_WEB_CLIENT,e[0]);if(!r)throw new Error(`To use setDataIds on WSI data, you must provide metaData.webClient for ${e[0]}`);return this.setWSI(e,r)}async setWSI(e,n){this.microscopyElement.style.background="black",this.microscopyElement.innerText="Loading",this.imageIds=e;const r=await Hn.getDicomMicroscopyViewer();dr||(dr=r.utils),this.frameOfReferenceUID=null;const i=this.imageIds.map(o=>{var f,g,h;const c=n.getDICOMwebMetadata(o);Object.defineProperty(c,"isMultiframe",{value:c.isMultiframe,enumerable:!1}),Object.defineProperty(c,"frameNumber",{value:void 0,enumerable:!1});const l=(f=c["00080008"])==null?void 0:f.Value;(l==null?void 0:l.length)===1&&(c["00080008"].Value=l[0].split("\\"));const u=(h=(g=c["00200052"])==null?void 0:g.Value)==null?void 0:h[0];return this.frameOfReferenceUID?u!==this.frameOfReferenceUID&&(c["00200052"].Value=[this.frameOfReferenceUID]):this.frameOfReferenceUID=u,c}),a=[];i.forEach(o=>{const c=new r.metadata.VLWholeSlideMicroscopyImage({metadata:o}),l=c.ImageType[2];l==="VOLUME"||l==="THUMBNAIL"?a.push(c):console.log("Unknown image type",c.ImageType)}),this.metadataDicomweb=a;const s=new r.viewer.VolumeImageViewer({client:n,metadata:a,controls:["overview","position"],retrieveRendered:!1,bindings:{}});s.render({container:this.microscopyElement}),this.metadata=this.getImageDataMetadata(),s.deactivateDragPanInteraction(),this.viewer=s,this.map=s[Dc],this.map.on(dy,this.postrender),this.resize(),this.microscopyElement.innerText="",Object.assign(this.microscopyElement.style,{"--ol-partial-background-color":"rgba(127, 127, 127, 0.7)","--ol-foreground-color":"#000000","--ol-subtle-foreground-color":"#000","--ol-subtle-background-color":"rgba(78, 78, 78, 0.5)",background:"none"})}scroll(e){const n=this.getCamera();this.setCamera({parallelScale:n.parallelScale*(1+.1*e)})}getSliceIndex(){return 0}getView(){if(!this.viewer)return;const e=this.viewer[Dc],n=window;return n.map=e,n.viewer=this.viewer,n.view=e==null?void 0:e.getView(),n.wsi=this,e==null?void 0:e.getView()}refreshRenderValues(){const e=this.getView();if(!e)return;const n=e.getResolution();if(!n||nyd("dicom-microscopy-viewer"),Hn.overlayCssId="overlayCss";let Bs=Hn;const yf={[xe.ORTHOGRAPHIC]:Kr,[xe.PERSPECTIVE]:Kr,[xe.STACK]:On,[xe.VOLUME_3D]:vf,[xe.VIDEO]:Gs,[xe.WHOLE_SLIDE]:Bs};function Pn(t){return yf[t].useCustomRenderingPipeline}const Ic=2;class py{constructor(e){throw this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this.renderFrameOfReference=n=>{const i=this._getViewportsAsArray().map(a=>{if(a.getFrameOfReferenceUID()===n)return a.id});this.renderViewports(i)},this._renderFlaggedViewports=()=>{this._throwIfDestroyed(),this.useCPURendering||this.performVtkDrawCall();const n=this._getViewportsAsArray(),r=[];for(let i=0;i{i!=null&&i.element&&$(i.element,A.IMAGE_RENDERED,i)})},this.id=e||Ot(),this.useCPURendering=Vr(),Gr.set(this),new Error("@cornerstonejs/core is not initialized, run init() first")}enableElement(e){const n=this._normalizeViewportInputEntry(e);this._throwIfDestroyed();const{element:r,viewportId:i}=n;if(!r)throw new Error("No element provided");this.getViewport(i)&&this.disableElement(i);const{type:s}=n,o=Pn(s);!this.useCPURendering&&!o?this.enableVTKjsDrivenViewport(n):this.addCustomViewport(n);const c=Gt(r),{background:l}=n.defaultOptions;this.fillCanvasWithBackgroundColor(c,l)}disableElement(e){this._throwIfDestroyed();const n=this.getViewport(e);if(!n){console.warn(`viewport ${e} does not exist`);return}this._resetViewport(n),!Pn(n.type)&&!this.useCPURendering&&this.offscreenMultiRenderWindow.removeRenderer(e),this._removeViewport(e),n.isDisabled=!0,this._needsRender.delete(e),this.getViewports().length||this._clearAnimationFrame()}setViewports(e){const n=this._normalizeViewportInputEntries(e);this._throwIfDestroyed(),this._reset();const r=[],i=[];n.forEach(a=>{!this.useCPURendering&&!Pn(a.type)?r.push(a):i.push(a)}),this.setVtkjsDrivenViewports(r),this.setCustomViewports(i),n.forEach(a=>{const s=Gt(a.element),{background:o}=a.defaultOptions;this.fillCanvasWithBackgroundColor(s,o)})}resize(e=!0,n=!0){this._throwIfDestroyed();const r=this._getViewportsAsArray(),i=[],a=[];r.forEach(s=>{Pn(s.type)?a.push(s):i.push(s)}),i.length&&this._resizeVTKViewports(i,n,e),a.length&&this._resizeUsingCustomResizeHandler(a,n,e)}getViewport(e){var n;return(n=this._viewports)==null?void 0:n.get(e)}getViewports(){return this._throwIfDestroyed(),this._getViewportsAsArray()}getStackViewport(e){this._throwIfDestroyed();const n=this.getViewport(e);if(!n)throw new Error(`Viewport with Id ${e} does not exist`);if(!(n instanceof On))throw new Error(`Viewport with Id ${e} is not a StackViewport.`);return n}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter(n=>n instanceof On)}getVolumeViewports(){this._throwIfDestroyed();const e=this.getViewports(),n=r=>r instanceof Ua;return e.filter(n)}render(){const n=this.getViewports().map(r=>r.id);this._setViewportsToBeRenderedNextFrame(n)}renderViewports(e){this._setViewportsToBeRenderedNextFrame(e)}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}destroy(){this.hasBeenDestroyed||(this.useCPURendering||(this._getViewportsAsArray().forEach(n=>{this.offscreenMultiRenderWindow.removeRenderer(n.id)}),this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),Gr.delete(this.id),this.hasBeenDestroyed=!0)}fillCanvasWithBackgroundColor(e,n){const r=e.getContext("2d");let i;if(n){const a=n.map(s=>Math.floor(255*s));i=`rgb(${a[0]}, ${a[1]}, ${a[2]})`}else i="black";r.fillStyle=i,r.fillRect(0,0,e.width,e.height)}_normalizeViewportInputEntry(e){const{type:n,defaultOptions:r}=e;let i=r;return(!i||Object.keys(i).length===0)&&(i={background:[0,0,0],orientation:null,displayArea:null},n===xe.ORTHOGRAPHIC&&(i={...i,orientation:Dn.AXIAL})),{...e,defaultOptions:i}}_normalizeViewportInputEntries(e){const n=[];return e.forEach(r=>{n.push(this._normalizeViewportInputEntry(r))}),n}_resizeUsingCustomResizeHandler(e,n=!0,r=!0){e.forEach(i=>{typeof i.resize=="function"&&i.resize()}),e.forEach(i=>{const a=i.getCamera();i.resetCamera(),n&&i.setCamera(a)}),r&&this.render()}_resizeVTKViewports(e,n=!0,r=!0){const i=e.map(a=>Gt(a.element));if(i.forEach(a=>{const s=window.devicePixelRatio||1;a.width=a.clientWidth*s,a.height=a.clientHeight*s}),i.length){const{offScreenCanvasWidth:a,offScreenCanvasHeight:s}=this._resizeOffScreenCanvas(i);this._resize(e,a,s)}e.forEach(a=>{const s=a.getCamera(),o=a.getRotation(),{flipHorizontal:c}=s;a.resetCameraForResize();const l=a.getDisplayArea();n&&(l?(c&&a.setCamera({flipHorizontal:c}),o&&a.setViewPresentation({rotation:o})):a.setCamera(s))}),r&&this.render()}enableVTKjsDrivenViewport(e){const r=this._getViewportsAsArray().filter(u=>Pn(u.type)===!1),i=r.map(u=>u.canvas),a=Gt(e.element);i.push(a);const{offScreenCanvasWidth:s,offScreenCanvasHeight:o}=this._resizeOffScreenCanvas(i),c=this._resize(r,s,o),l={...e,canvas:a};this.addVtkjsDrivenViewport(l,{offScreenCanvasWidth:s,offScreenCanvasHeight:o,xOffset:c})}_removeViewport(e){if(!this.getViewport(e)){console.warn(`viewport ${e} does not exist`);return}this._viewports.delete(e)}addVtkjsDrivenViewport(e,n){const{element:r,canvas:i,viewportId:a,type:s,defaultOptions:o}=e;r.tabIndex=-1;const{offScreenCanvasWidth:c,offScreenCanvasHeight:l,xOffset:u}=n,{sxStartDisplayCoords:f,syStartDisplayCoords:g,sxEndDisplayCoords:h,syEndDisplayCoords:d,sx:m,sy:p,sWidth:v,sHeight:T}=this._getViewportCoordsOnOffScreenCanvas(e,c,l,u);this.offscreenMultiRenderWindow.addRenderer({viewport:[f,g,h,d],id:a,background:o.background?o.background:[0,0,0]});const C={id:a,element:r,renderingEngineId:this.id,type:s,canvas:i,sx:m,sy:p,sWidth:v,sHeight:T,defaultOptions:o||{}};let y;if(s===xe.STACK)y=new On(C);else if(s===xe.ORTHOGRAPHIC||s===xe.PERSPECTIVE)y=new Kr(C);else if(s===xe.VOLUME_3D)y=new vf(C);else throw new Error(`Viewport Type ${s} is not supported`);this._viewports.set(a,y);const x={element:r,viewportId:a,renderingEngineId:this.id};y.suppressEvents||$(ne,A.ELEMENT_ENABLED,x)}addCustomViewport(e){const{element:n,viewportId:r,type:i,defaultOptions:a}=e;n.tabIndex=-1;const s=Gt(n),{clientWidth:o,clientHeight:c}=s;(s.width!==o||s.height!==c)&&(s.width=o,s.height=c);const l={id:r,renderingEngineId:this.id,element:n,type:i,canvas:s,sx:0,sy:0,sWidth:o,sHeight:c,defaultOptions:a||{}},u=yf[i],f=new u(l);this._viewports.set(r,f);const g={element:n,viewportId:r,renderingEngineId:this.id};$(ne,A.ELEMENT_ENABLED,g)}setCustomViewports(e){e.forEach(n=>{this.addCustomViewport(n)})}setVtkjsDrivenViewports(e){if(e.length){const n=e.map(s=>Gt(s.element));n.forEach(s=>{const o=window.devicePixelRatio||1,c=s.getBoundingClientRect();s.width=c.width*o,s.height=c.height*o});const{offScreenCanvasWidth:r,offScreenCanvasHeight:i}=this._resizeOffScreenCanvas(n);let a=0;for(let s=0;ss.height));let a=0;return e.forEach(s=>{a+=s.width}),n.width=a,n.height=i,r.resize(),{offScreenCanvasWidth:a,offScreenCanvasHeight:i}}_resize(e,n,r){let i=0;for(let a=0;a{this._needsRender.add(n)}),this._render()}_render(){this._needsRender.size>0&&!this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}performVtkDrawCall(){const{offscreenMultiRenderWindow:e}=this,n=e.getRenderWindow(),r=e.getRenderers();if(r.length){for(let i=0;i{this._resetViewport(n)}),this._clearAnimationFrame(),this._viewports=new Map}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_downloadOffScreenCanvas(){const e=this._debugRender();my(e)}_debugRender(){const{offscreenMultiRenderWindow:e}=this,n=e.getRenderWindow(),r=e.getRenderers();for(let c=0;c{const{sx:l,sy:u,sWidth:f,sHeight:g}=c,h=c.canvas,{width:d,height:m}=h;h.getContext("2d").drawImage(s,l,u,f,g,0,0,d,m)}),o}}function my(t){const e=document.createElement("a");e.download="viewport.png",e.href=t,document.body.appendChild(e),e.click(),document.body.removeChild(e)}var ft;(function(t){t[t.None=0]="None",t[t.Capture=1]="Capture",t[t.Bubble=2]="Bubble"})(ft||(ft={}));class Pa{constructor(e){this._eventListeners=new Map,this._children=new Map,this._target=e}get isEmpty(){return this._eventListeners.size===0&&this._children.size===0}addEventListener(e,n,r){const i=e.indexOf(".");if(i!==-1){const s=e.substring(0,i);let o=this._children.get(s);o||(o=new Pa(this._target),this._children.set(s,o)),e=e.substring(i+1),o.addEventListener(e,n,r)}else this._addEventListener(e,n,r)}removeEventListener(e,n,r){const i=e.indexOf(".");if(i!==-1){const s=e.substring(0,i),o=this._children.get(s);if(!o)return;e=e.substring(i+1),o.removeEventListener(e,n,r),o.isEmpty&&this._children.delete(s)}else this._removeEventListener(e,n,r)}reset(){Array.from(this._children.entries()).forEach(([e,n])=>{if(n.reset(),n.isEmpty)this._children.delete(e);else throw new Error("Child is not empty and cannot be removed")}),this._unregisterAllEvents()}_addEventListener(e,n,r){let i=this._eventListeners.get(e);i||(i=new Map,this._eventListeners.set(e,i));const s=(r==null?void 0:r.capture)??!1?ft.Capture:ft.Bubble,o=i.get(n)??ft.None;if(o&s){console.warn("A listener is already registered for this phase");return}i.set(n,o|s),this._target.addEventListener(e,n,r)}_removeEventListener(e,n,r){const a=(r==null?void 0:r.capture)??!1?ft.Capture:ft.Bubble,s=this._eventListeners.get(e);if(!s)return;(n?[n]:Array.from(s.keys())).forEach(c=>{const l=s.get(c)??ft.None;if(!!!(l&a))return;this._target.removeEventListener(e,c,r);const f=l^a;f===ft.None?s.delete(c):s.set(c,f)}),s.size||this._eventListeners.delete(e)}_unregisterAllListeners(e,n){Array.from(n.entries()).forEach(([r,i])=>{const a=ft.Capture;for(let s=a;i;s<<=1){if(!(i&s))continue;const o=s===ft.Capture;this.removeEventListener(e,r,{capture:o}),i^=s}})}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach(([e,n])=>{this._unregisterAllListeners(e,n)})}}class vy{constructor(){this._targetsEventListeners=new Map}addEventListener(e,n,r,i){let a=this._targetsEventListeners.get(e);a||(a=new Pa(e),this._targetsEventListeners.set(e,a)),a.addEventListener(n,r,i)}removeEventListener(e,n,r,i){const a=this._targetsEventListeners.get(e);a&&(a.removeEventListener(n,r,i),a.isEmpty&&this._targetsEventListeners.delete(e))}reset(){Array.from(this._targetsEventListeners.entries()).forEach(([e,n])=>{n.reset(),this._targetsEventListeners.delete(e)})}}var yy=Object.freeze({__proto__:null,MultiTargetEventListenerManager:vy,TargetEventListeners:Pa});function Ty(t,e){const n=t.getSize();for(let r=0;r0?n:Sy)>>>0).join(typeof e=="string"?e:My)}function Ry(t,e,n){let r=t[e];r instanceof Array||(r=[0],Object.defineProperty(t,e,{value:r}));for(let i=!0,a=0;i&&a{const n=ot(t);Lc[n]=e},get:(t,e)=>{if(t==="calibratedPixelSpacing"){const n=ot(e);return Lc[n]}}};function Dy(t,e,n=1e-5){return Math.abs(t[0]+e[0])=e[0]||t[1]<0||t[1]>=e[1]||t[2]<0||t[2]>=e[2])}function Iy(t,e){let n;e?n=[Da(e)]:n=Va();const r=[];return n.forEach(i=>{const a=t.getActors(),s=i.getVolumeViewports();for(const o of s){const c=o.getActors();if(c.length!==a.length)continue;a.every(({uid:u})=>c.find(f=>u===f.uid))&&r.push(o)}}),r}const Tf=t=>t.preScale.scaled&&t.preScale.scalingParameters.suvbw;function Cf(t,e,n=void 0,r="_thumbnails",i={displayArea:{imageArea:[1,1]}}){if(!t||!(t instanceof HTMLCanvasElement))throw new Error("canvas element is required");const a=!e.imageId,s=!a&&e,o=a&&e,l=`renderGPUViewport-${s.imageId||o.volumeId}`,u=document.createElement("div"),f=window.devicePixelRatio||1;i.displayArea||(i.displayArea={imageArea:[1,1]});const g=t.width,h=t.height;u.style.width=`${g/f+wc}px`,u.style.height=`${h/f+wc}px`,u.style.visibility="hidden",u.style.position="absolute",document.body.appendChild(u);const d=l.split(":").join("-");u.setAttribute("viewport-id-for-remove",d);const m=Gt(u),p=Da(r)||new py(r);let v=p.getViewport(l);if(!v){const T={viewportId:l,type:a?xe.ORTHOGRAPHIC:xe.STACK,element:u,defaultOptions:{...i,suppressEvents:!0}};p.enableElement(T),v=p.getViewport(l)}return new Promise(T=>{let C=!1,{viewReference:y}=i;const x=w=>{if(C)return;if(y){const b=y;y=null,v.setViewReference(b),v.render();return}t.getContext("2d").drawImage(m,0,0,m.width,m.height,0,0,t.width,t.height);const R=v.canvasToWorld([0,0]),D=v.canvasToWorld([m.width/f,0]),S=v.canvasToWorld([0,m.height/f]),O=De([0,0,0],v.canvasToWorld([1/f,0]),R),V=De([0,0,0],v.canvasToWorld([0,1/f]),R),L=1;C=!0,u.removeEventListener(A.IMAGE_RENDERED,x),setTimeout(()=>{p.disableElement(l),document.querySelectorAll(`[viewport-id-for-remove="${d}"]`).forEach(U=>{U.remove()})},0),T({origin:R,bottomLeft:S,topRight:D,thicknessMm:L,rightVector:O,downVector:V})};u.addEventListener(A.IMAGE_RENDERED,x),a?v.setVolumes([o],!1,!0):v.renderImageObject(e),v.resetCamera(),n==="PT"&&!Tf(s)&&v.setProperties({voiRange:{lower:s.minPixelValue,upper:s.maxPixelValue}}),v.render()})}function xf(t,e,n,r,i){if(e.volumeId)throw new Error("Unsupported volume rendering for CPU");const s=e,o=mf(t,s,n),c={canvas:t,viewport:o,image:s,renderingTools:{}};c.transform=qr(c);const l=!0;return new Promise((u,f)=>{hf(c,l),u(null)})}function Ly(t){const{canvas:e,imageId:n,viewReference:r,requestType:i=Z.Thumbnail,priority:a=-5,renderingEngineId:s="_thumbnails",useCPURendering:o=!1,thumbnail:c=!1,imageAspect:l=!1,viewportOptions:u}=t,f=r==null?void 0:r.volumeId,g=f&&!n,h=r&&u?{...u,viewReference:r}:u,d=o?xf:Cf;return new Promise((m,p)=>{function v(x,w){var S;const{modality:E}=j("generalSeriesModule",w)||{},R=!g&&x,D=g&&x;R&&(R.isPreScaled=R.isPreScaled||((S=R.preScale)==null?void 0:S.scaled)),c&&(e.height=256,e.width=256),l&&R&&(e.width=R&&e.height*R.width/R.height),e.style.width=`${e.width/devicePixelRatio}px`,e.style.height=`${e.height/devicePixelRatio}px`,D&&o&&p(new Error("CPU rendering of volume not supported")),d(e,x,E,s,h).then(m)}function T(x,w){console.error(x,w),p(x)}function C(x,w,E){return rr(x,E).then(R=>{v.call(this,R,x)},R=>{T.call(this,R,x)})}const y={useRGBA:!!o,requestType:i};if(f){const x=K.getVolume(f);x||p(new Error(`Volume id ${f} not found in cache`));const w=x.imageIds[0];v(x,w)}else It.addRequest(C.bind(null,n,null,y),i,{imageId:n},a)})}const Nc={HISTORY_UNDO:"CORNERSTONE_TOOLS_HISTORY_UNDO",HISTORY_REDO:"CORNERSTONE_TOOLS_HISTORY_REDO"};class wf{constructor(e="Tools",n=50){this.position=-1,this.redoAvailable=0,this.undoAvailable=0,this.ring=new Array,this.label=e,this._size=n}get size(){return this._size}set size(e){this.ring=new Array(e),this._size=e,this.position=-1,this.redoAvailable=0,this.undoAvailable=0}undo(e=1){for(;e>0&&this.undoAvailable>0;){const n=this.ring[this.position];n.restoreMemo(!0),n.id&&ne.dispatchEvent(new CustomEvent(Nc.HISTORY_UNDO,{detail:{isUndo:!0,id:n.id,operationType:n.operationType||"annotation",memo:n}})),e--,this.redoAvailable++,this.undoAvailable--,this.position=(this.position-1+this.size)%this.size}}undoIf(e){return this.undoAvailable>0&&e(this.ring[this.position])?(this.undo(),!0):!1}redo(e=1){for(;e>0&&this.redoAvailable>0;){const n=(this.position+1)%this.size,r=this.ring[n];r.restoreMemo(!1),r.id&&ne.dispatchEvent(new CustomEvent(Nc.HISTORY_REDO,{detail:{isUndo:!1,id:r.id,operationType:r.operationType||"annotation",memo:r}})),e--,this.position=n,this.undoAvailable++,this.redoAvailable--}}push(e){var r;if(!e)return;const n=e.restoreMemo?e:(r=e.createMemo)==null?void 0:r.call(e);if(n)return this.redoAvailable=0,this.undoAvailable{r.getViewports().forEach(a=>{a.hasImageURI(t)&&n.push(a)})}),n}function ky(t,e){const n=Py(t,e);return n?n.index:null}function Py(t,e){const n=e.getImageIds(),r=e.getCurrentImageIdIndex();if(n.length===0)return null;const i=c=>{const l=Gy(c);if(!l)return null;const u=Xu(l.planeNormal,l.imagePositionPatient);return q0(u,t)},a={distance:i(n[r])??1/0,index:r},s=n.slice(r+1);for(let c=0;c=0;c--){const l=o[c],u=i(l);if(!(u===null||u===a.distance))if(u{const[n,r]=t,i=`${n}_${r}`;pn[i]||(pn[i]={}),pn[i]=e},get:(t,e,n)=>{if(t!=="spatialRegistrationModule")return;const r=`${e}_${n}`;if(pn[r])return pn[r];const i=`${n}_${e}`;if(pn[i])return Be(Wt(),pn[i])}};N0(ga.get.bind(ga));const Ay=.05;function Wy(t,e){const n=t.getSliceIndex(),r=e.getSliceIndex(),i=j("imagePlaneModule",n.toString()),a=j("imagePlaneModule",r.toString());if(!i||!a){console.log("Viewport spatial registration requires image plane module");return}const{imageOrientationPatient:s}=a;if(!i.imageOrientationPatient.every((g,h)=>Math.abs(g-s[h])0||t[0]0||t[1]0||t[2]qy.has(n)):!1}async function Xy({viewport:t,options:e={}}){const n=t.getRenderingEngine();let r=e.volumeId||`${Ot()}`;r.split(":").length===0&&(r=`${Vm()}:${r}`);const{id:i,element:a}=t,s=e.viewportId||i,o=t.getImageIds(),c=t.getViewPresentation(),l=t.getViewReference();n.enableElement({viewportId:s,type:xe.ORTHOGRAPHIC,element:a,defaultOptions:{background:e.background,orientation:e.orientation}}),(await Rm(r,{imageIds:o})).load();const f=n.getViewport(s);await ly(n,[{volumeId:r}],[s]);const g=()=>{f.render(),a.removeEventListener(A.VOLUME_VIEWPORT_NEW_VOLUME,g)};return(()=>{a.addEventListener(A.VOLUME_VIEWPORT_NEW_VOLUME,g)})(),f.setViewPresentation(c),f.setViewReference(l),f.render(),f}async function Zy({viewport:t,options:e}){const n=t,{id:r,element:i}=n,a=t.getRenderingEngine(),{background:s}=e,o=e.viewportId||r,c=K.getVolume(n.getVolumeId());if(!(c instanceof $0))throw new Error("Currently, you cannot decache a volume that is not an ImageVolume. So, unfortunately, volumes such as nifti (which are basic Volume, without imageIds) cannot be decached.");const l={viewportId:o,type:xe.STACK,element:i,defaultOptions:{background:s}},u=n.getViewReference();a.enableElement(l);const f=a.getViewport(o);return await f.setStack(c.imageIds),f.setViewReference(u),f.render(),f}function Sf(t,e=2){if(Array.isArray(t))return t.map(i=>Sf(i,e)).join(", ");if(t==null||t==="")return"NaN";t=Number(t);const n=Math.abs(t);if(n<1e-4)return`${t}`;const r=n>=100?e-2:n>=10?e-1:n>=1?e:n>=.1?e+1:n>=.01?e+2:n>=.001?e+3:e+4;return t.toFixed(r)}function Jy(t){return Math.round(t/yt)*yt}function Qy(t,e,n){const r=t.length===e*n*4,i=t.length===e*n*3;if(r||i){const a=new Float32Array(e*n);let s=0,o=0;const c=r?4:3;for(let l=0;l=n.length?(bc(n),n):(bc(n),n.slice(0,e))}function bc(t){for(let e=t.length-1;e>0;e--){const n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}}function ns(t){const e=t.toString(16);return e.length==1?"0"+e:e}function nT(t,e,n){return"#"+ns(t)+ns(e)+ns(n)}function rT(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var iT=Object.freeze({__proto__:null,hexToRgb:rT,rgbToHex:nT});function aT(t,e){if(t===e)return!0;if(t==null||e==null)return!1;try{return JSON.stringify(t)===JSON.stringify(e)}catch(n){return console.debug("Error in JSON.stringify during deep comparison:",n),t===e}}function sT(t,e,n){if(!n)throw new Error("getVolume is required, use the utilities export instead ");if(t.modality)return t.modality;if(t.setVolumes)return e=e??t.getVolumeId(),!e||!n?void 0:n(e).metadata.Modality;throw new Error("Invalid viewport type")}const oT=(t,e)=>t.reduce((n,r)=>((n[r[e]]=n[r[e]]||[]).push(r),n),{});function cT(t){const e=t.map(s=>{const{imagePositionPatient:o}=j("imagePlaneModule",s)||{};return{imageId:s,imagePositionPatient:o}});if(!e.every(s=>s.imagePositionPatient))return null;const n=oT(e,"imagePositionPatient"),r=Object.keys(n),i=n[r[0]].length;return i===1||!r.every(s=>n[s].length===i)?null:n}function lT(t,e){const n={};let r=[];const i=Object.keys(t);for(let a=0;apr(i,n[0]),i=>pr(i,n[1]),i=>pr(i,n[2]),i=>pr(i,n[3]),i=>pr(i,n[4]),uT,fT,gT,dT];for(let i=0;ic-l).map(c=>a[c].map(l=>l.imageId)),splittingTag:n[i]}}return{imageIdGroups:[t],splittingTag:null}}function pT(t){const{imageIdGroups:e,splittingTag:n}=Mf(t);return{isDynamicVolume:e.length>1,timePoints:e,splittingTag:n}}function mT(t,e){const n=t.length,{rescaleSlope:r,rescaleIntercept:i,suvbw:a}=e;if(e.modality==="PT"&&typeof a=="number")for(let s=0;st.getImageIds().length-1||s+i<0){const o={imageIdIndex:s,direction:i};$(ne,A.STACK_SCROLL_OUT_OF_BOUNDS,o)}t.scroll(i,e.debounceLoading,e.loop)}}function vT(t,e,n,r=!1){const i=r,{numScrollSteps:a,currentStepIndex:s,sliceRangeInfo:o}=Yn(t,e,i);if(!o)return;const{sliceRange:c,spacingInNormalDirection:l,camera:u}=o,{focalPoint:f,viewPlaneNormal:g,position:h}=u,{newFocalPoint:d,newPosition:m}=qn(f,h,c,g,l,n);t.setCamera({focalPoint:d,position:m}),t.render();const p=s+n,v={volumeId:e,viewport:t,delta:n,desiredStepIndex:p,currentStepIndex:s,numScrollSteps:a,currentImageId:t.getCurrentImageId()};(p>a||p<0)&&t.getCurrentImageId()?$(ne,A.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,v):$(ne,A.VOLUME_VIEWPORT_SCROLL,v)}async function yT(t,e={}){const{imageIndex:n,debounceLoading:r,volumeId:i}=e,a=eo(t);if(!a)throw new Error("Element has been disabled");const{viewport:s}=a,{imageIndex:o,numberOfSlices:c}=TT(s,r),u=CT(c,n)-o;Rf(s,{delta:u,debounceLoading:r,volumeId:i})}function TT(t,e){return t instanceof On?{numberOfSlices:t.getImageIds().length,imageIndex:e?t.getTargetImageIdIndex():t.getCurrentImageIdIndex()}:{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getSliceIndex()}}function CT(t,e){const n=t-1;return Ef(e,0,n)}function xT(t,e,n={}){const r=K.getVolume(t);if(!r)throw new Error(`Referenced volume with id ${t} does not exist.`);const{metadata:i,spacing:a,direction:s,dimensions:o}=r,{minX:c,maxX:l,minY:u,maxY:f,minZ:g,maxZ:h}=e,d=[Math.min(c,l),Math.min(u,f),Math.min(g,h)],m=ua(r.imageData,d),p=[Math.abs(l-c)+1,Math.abs(f-u)+1,Math.abs(h-g)+1],{targetBuffer:v}=n,T={metadata:i,dimensions:p,spacing:a,origin:m,direction:s,targetBuffer:v,scalarData:(v==null?void 0:v.type)==="Float32Array"?new Float32Array(p[0]*p[1]*p[2]):void 0},C=Om(Ot(),T),y=C.voxelManager.getCompleteScalarDataArray(),x=p[0]*p[1],w=o[0]*o[1],E=r.voxelManager.getCompleteScalarDataArray();for(let R=0;R=s)){for(let T=g-r;T<=g+r;T++)if(!(T<0||T>=a))for(let C=f-r;C<=f+r;C++){if(C<0||C>=i)continue;const y=v*o+T*i+C,x=t[y];c+=x,l+=x*x,u++}}if(u===0){const v=h*o+g*i+f;return v>=0&&vc/r),type:Mt.ERMF,isProjection:s}:(console.warn("EstimatedRadiographicMagnificationFactor was not present. Unable to correct ImagerPixelSpacing."),{PixelSpacing:n,type:Mt.PROJECTION,isProjection:s}):{PixelSpacing:e,type:Mt.UNKNOWN,isProjection:s}}function RT(t){const{SequenceOfUltrasoundRegions:e}=t,n=Array.isArray(e);if(n&&e.length>1){console.warn("Sequence of Ultrasound Regions > one entry. This is not yet implemented, all measurements will be shown in pixels.");return}const{PhysicalDeltaX:r,PhysicalDeltaY:i}=n?e[0]:e;return{PixelSpacing:[r*10,i*10]}}function OT(t){const{PixelSpacing:e,SOPClassUID:n,SequenceOfUltrasoundRegions:r}=t;return r?RT(t):MT.has(n)?ET(t):{PixelSpacing:e,type:Mt.NOT_APPLICABLE,isProjection:!1}}const DT=(t,e)=>sT(t,e,K.getVolume);var Of=Object.freeze({__proto__:null,FrameRange:Xn,HistoryMemo:by,PointsManager:Ui,ProgressiveIterator:ir,RLEVoxelMap:en,VoxelManager:nr,actorIsA:Je,applyPreset:Qu,autoLoad:Fs,buildMetadata:af,calculateNeighborhoodStats:ST,calculateSpacingBetweenImageIds:Gu,calculateViewportsSpatialRegistration:Wy,calibratedPixelSpacingMetadataProvider:Oy,clamp:Ps,clip:Ef,color:iT,colormap:v8,convertStackToVolumeViewport:Xy,convertToGrayscale:Qy,convertVolumeToStackViewport:Zy,createLinearRGBTransferFunction:of,createSigmoidRGBTransferFunction:W0,createSubVolume:xT,decimate:$u,deepClone:Hr,deepEqual:aT,deepMerge:Ia,eventListener:yy,fnv1aHash:Z2,generateVolumePropsFromImageIds:Wu,genericMetadataProvider:_a,getBufferConfiguration:V2,getClosestImageId:sa,getClosestStackImageIndexForPoint:ky,getCurrentVolumeViewportSlice:By,getDynamicVolumeInfo:pT,getImageDataMetadata:sf,getImageLegacy:Hy,getImageSliceDataForVolumeViewport:la,getMinMax:Cy,getPixelSpacingInformation:OT,getRandomSampleFromArray:tT,getRuntimeId:Ey,getScalingParameters:Au,getSliceRange:Na,getSpacingInNormalDirection:ri,getTargetVolumeAndSpacingInNormalDir:K0,getViewportImageCornersInWorld:zy,getViewportImageIds:eT,getViewportModality:DT,getViewportsWithImageURI:Uy,getViewportsWithVolumeId:zu,getVoiFromSigmoidRGBTransferFunction:Ju,getVolumeActorCorners:ru,getVolumeDirectionVectors:wT,getVolumeId:qu,getVolumeSliceRangeInfo:Zu,getVolumeViewportScrollInfo:Yn,getVolumeViewportsContainingSameVolumes:Iy,hasFloatScalingParameters:j0,hasNaNValues:_s,imageIdToURI:ot,imageRetrieveMetadataProvider:jr,imageToWorldCoords:_y,indexWithinDimensions:Vy,invertRgbTransferFunction:Lr,isEqual:Oe,isEqualAbs:d8,isEqualNegative:cu,isImageActor:dt,isNumber:lu,isOpposite:Dy,isPTPrescaledWithSUV:Tf,isValidVolume:Ky,isVideoTransferSyntax:Yy,jumpToSlice:yT,loadImageToCanvas:Ly,logger:qp,makeVolumeMetadata:Pu,planar:$m,pointInShapeCallback:Uu,renderToCanvasCPU:xf,renderToCanvasGPU:Cf,roundNumber:Sf,roundToPrecision:Jy,scaleArray:mT,scaleRgbTransferFunction:Ty,scroll:Rf,snapFocalPointToSlice:qn,sortImageIdsAndGetSpacing:Bu,spatialRegistrationMetadataProvider:ga,splitImageIdsBy4DTags:Mf,transferFunctionUtils:T8,transformIndexToWorld:ua,transformWorldToIndex:ba,transformWorldToIndexContinuous:Fi,triggerEvent:$,updateVTKImageDataWithCornerstoneImage:cf,uuidv4:Ot,windowLevel:y8,worldToImageCoords:Fy});class VT{}class IT{constructor(e){this.storePointData=e.storePointData}getStatistics(){console.debug("InstanceCalculator getStatistics called")}}const{PointsManager:LT}=Of;function Yr(t){return{max:[-1/0],min:[1/0],sum:[0],count:0,maxIJK:null,maxLPS:null,minIJK:null,minLPS:null,runMean:[0],m2:[0],m3:[0],m4:[0],allValues:[[]],pointsInShape:t?LT.create3(1024):null,sumLPS:[0,0,0]}}function Df(t,e,n=null,r=null){Array.isArray(e)&&e.length>1&&t.max.length===1&&(t.max.push(t.max[0],t.max[0]),t.min.push(t.min[0],t.min[0]),t.sum.push(t.sum[0],t.sum[0]),t.runMean.push(0,0),t.m2.push(t.m2[0],t.m2[0]),t.m3.push(t.m3[0],t.m3[0]),t.m4.push(t.m4[0],t.m4[0]),t.allValues.push([],[])),t!=null&&t.pointsInShape&&n&&t.pointsInShape.push(n);const i=Array.isArray(e)?e:[e];t.count+=1,n&&(t.sumLPS[0]+=n[0],t.sumLPS[1]+=n[1],t.sumLPS[2]+=n[2]),t.max.forEach((a,s)=>{const o=i[s];t.allValues[s].push(o);const c=t.count,l=o-t.runMean[s],u=l/c,f=l*u*(c-1);t.sum[s]+=o,t.runMean[s]+=u,t.m4[s]+=f*u*u*(c*c-3*c+3)+6*u*u*t.m2[s]-4*u*t.m3[s],t.m3[s]+=f*u*(c-2)-3*u*t.m2[s],t.m2[s]+=f,ot.max[s]&&(t.max[s]=o,s===0&&(t.maxIJK=r?[...r]:null,t.maxLPS=n?[...n]:null))})}function NT(t){if(t.length===0)return 0;const e=[...t].sort((r,i)=>r-i),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function Vf(t,e){const n=t.sum.map(f=>f/t.count),r=t.m2.map(f=>Math.sqrt(f/t.count)),i=t.sumLPS.map(f=>f/t.count),a=t.m3.map((f,g)=>{const h=t.m2[g]/t.count;return h===0?0:f/(t.count*Math.pow(h,1.5))}),s=t.m4.map((f,g)=>{const h=t.m2[g]/t.count;return h===0?0:f/(t.count*h*h)-3}),o=t.allValues.map(f=>NT(f)),c={max:{name:"max",label:"Max Pixel",value:t.max.length===1?t.max[0]:t.max,unit:e,pointIJK:t.maxIJK?[...t.maxIJK]:null,pointLPS:t.maxLPS?[...t.maxLPS]:null},min:{name:"min",label:"Min Pixel",value:t.min.length===1?t.min[0]:t.min,unit:e,pointIJK:t.minIJK?[...t.minIJK]:null,pointLPS:t.minLPS?[...t.minLPS]:null},mean:{name:"mean",label:"Mean Pixel",value:n.length===1?n[0]:n,unit:e},stdDev:{name:"stdDev",label:"Standard Deviation",value:r.length===1?r[0]:r,unit:e},count:{name:"count",label:"Voxel Count",value:t.count,unit:null},median:{name:"median",label:"Median",value:o.length===1?o[0]:o,unit:e},skewness:{name:"skewness",label:"Skewness",value:a.length===1?a[0]:a,unit:null},kurtosis:{name:"kurtosis",label:"Kurtosis",value:s.length===1?s[0]:s,unit:null},maxLPS:{name:"maxLPS",label:"Max LPS",value:t.maxLPS?Array.from(t.maxLPS):null,unit:null},minLPS:{name:"minLPS",label:"Min LPS",value:t.minLPS?Array.from(t.minLPS):null,unit:null},pointsInShape:t.pointsInShape,center:{name:"center",label:"Center",value:i?[...i]:null,unit:null},array:[]};c.array.push(c.min,c.max,c.mean,c.stdDev,c.median,c.skewness,c.kurtosis,c.count,c.maxLPS,c.minLPS),c.center.value&&c.array.push(c.center);const l=t.pointsInShape!==null,u=Yr(l);return t.max=u.max,t.min=u.min,t.sum=u.sum,t.count=u.count,t.maxIJK=u.maxIJK,t.maxLPS=u.maxLPS,t.minIJK=u.minIJK,t.minLPS=u.minLPS,t.runMean=u.runMean,t.m2=u.m2,t.m3=u.m3,t.m4=u.m4,t.allValues=u.allValues,t.pointsInShape=u.pointsInShape,t.sumLPS=u.sumLPS,c}const xn=class xn extends VT{static statsInit(e){e.storePointData||(this.state.pointsInShape=null),this.state=Yr(e.storePointData)}};xn.state=Yr(!0),xn.statsCallback=({value:e,pointLPS:n=null,pointIJK:r=null})=>{Df(xn.state,e,n,r)},xn.getStatistics=e=>Vf(xn.state,e==null?void 0:e.unit);let As=xn;class bT extends IT{constructor(e){super(e),this.state=Yr(e.storePointData)}statsInit(e){this.state=Yr(e.storePointData)}statsCallback(e){Df(this.state,e.value,e.pointLPS,e.pointIJK)}getStatistics(e){return Vf(this.state,e==null?void 0:e.unit)}}const{CalibrationTypes:mn}=a5,Gn="px",rs="voxels",FT=[1,2,3,4],_T=["3,3","4,7"],UT={0:"px",1:"percent",2:"dB",3:"cm",4:"seconds",5:"hertz",6:"dB/seconds",7:"cm/sec",8:"cm²",9:"cm²/s",12:"degrees"},kT=.001,mr="²",PT=(t,e)=>{const{calibration:n}=t;let r="mm";const i="mm³";let a=r+mr,s=1,o="";if(!n||!n.type&&!n.sequenceOfUltrasoundRegions)return{unit:r,areaUnit:a,scale:s,volumeUnit:i};if(n.type===mn.UNCALIBRATED)return{unit:Gn,areaUnit:Gn+mr,scale:s,volumeUnit:rs};if(n.sequenceOfUltrasoundRegions){let l,u;if(Array.isArray(e)&&e.length===2)[l,u]=e;else if(typeof e=="function"){const p=e();l=p[0],u=p[1]}let f=n.sequenceOfUltrasoundRegions.filter(p=>l[0]>=p.regionLocationMinX0&&l[0]<=p.regionLocationMaxX1&&l[1]>=p.regionLocationMinY0&&l[1]<=p.regionLocationMaxY1&&u[0]>=p.regionLocationMinX0&&u[0]<=p.regionLocationMaxX1&&u[1]>=p.regionLocationMinY0&&u[1]<=p.regionLocationMaxY1);if(!(f!=null&&f.length))return{unit:r,areaUnit:a,scale:s,volumeUnit:i};if(f=f.filter(p=>FT.includes(p.regionDataType)&&_T.includes(`${p.physicalUnitsXDirection},${p.physicalUnitsYDirection}`)),!f.length)return{unit:Gn,areaUnit:Gn+mr,scale:s,volumeUnit:rs};const g=f[0],h=Math.abs(g.physicalDeltaX),d=Math.abs(g.physicalDeltaY);if(Oe(h,d,kT))s=1/h,o="US Region",r=UT[g.physicalUnitsXDirection]||"unknown",a=r+mr;else return{unit:Gn,areaUnit:Gn+mr,scale:s,volumeUnit:rs}}else n.scale&&(s=n.scale);return[mn.ERMF,mn.USER,mn.ERROR,mn.PROJECTION,mn.CALIBRATED,mn.UNKNOWN].includes(n==null?void 0:n.type)&&(o=n.type),{unit:r+(o?` ${o}`:""),areaUnit:a+(o?` ${o}`:""),scale:s,volumeUnit:i+(o?` ${o}`:"")}},Fc=10;function ha(){return{maxIJKs:[]}}function If(t,e){const{value:n}=e,{maxIJKs:r}=t,i=r.length;if(typeof n!="number"||i>=Fc&&n=r[i-1].value)r.push(a);else for(let s=0;s=Fc&&r.splice(0,1)}function Lf(t,e,n){const{spacing:r,calibration:i}=n,{volumeUnit:a}=PT({calibration:i},[]),s=r?r[0]*r[1]*r[2]:1;return e.volume={value:Array.isArray(e.count.value)?e.count.value.map(o=>o*s):e.count.value*s,unit:a,name:"volume",label:"Volume"},e.maxIJKs=t.maxIJKs.filter(o=>o.pointIJK!==void 0),e.array.push(e.volume),t.maxIJKs=[],e}const ro=class ro extends As{static statsInit(e){super.statsInit(e),this.volumetricState=ha()}static statsCallback(e){super.statsCallback(e),If(this.volumetricState,e)}static getStatistics(e){const n={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},r=super.getStatistics(n);return Lf(this.volumetricState,r,n)}};ro.volumetricState=ha();let _c=ro;class Uc extends bT{constructor(e){super(e),this.volumetricState=ha()}statsInit(e){super.statsInit(e),this.volumetricState=ha()}statsCallback(e){super.statsCallback(e),If(this.volumetricState,e)}getStatistics(e){const n={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},r=super.getStatistics(n);return Lf(this.volumetricState,r,n)}}const kr=class kr{static statsInit(e){const{storePointData:n,indices:r,mode:i}=e;this.mode=i,this.indices=r,this.calculators.clear(),this.mode==="individual"?r.forEach(a=>{this.calculators.set(a,new Uc({storePointData:n}))}):this.calculators.set(r,new Uc({storePointData:n}))}static statsCallback(e){const{segmentIndex:n,...r}=e;if(!n)throw new Error("Segment index is required for stats calculation");const i=this.mode==="individual"?this.calculators.get(n):this.calculators.get(this.indices);if(!i)throw new Error(`No calculator found for segment ${n}`);i.statsCallback(r)}static getStatistics(e){if(this.mode==="individual"){const r={};return this.calculators.forEach((i,a)=>{r[a]=i.getStatistics(e)}),r}return this.calculators.get(this.indices).getStatistics(e)}};kr.calculators=new Map,kr.indices=[],kr.mode="collective";let Cn=kr;function Nf(t,e,n){let r=-1;if(e.forEach((i,a)=>{r>=0||i.a==t.b&&(r=a)}),r>=0){const i=e[r];return e.splice(r,1),n.push(i.b),n[0]==i.b?{remainingLines:e,contourPoints:n,type:"CLOSED_PLANAR"}:Nf(i,e,n)}return{remainingLines:e,contourPoints:n,type:"OPEN_PLANAR"}}function bf(t){if(t.length==0)return[];const e=[],n=t.shift();e.push(n.a),e.push(n.b);const r=Nf(n,t,e);if(r.remainingLines.length==0)return[{type:r.type,contourPoints:r.contourPoints}];{const i=bf(r.remainingLines);return i.push({type:r.type,contourPoints:r.contourPoints}),i}}function GT(t){return bf(t)}function BT(t,e=!1){const n=t.getPoints(),r=t.getLines(),i=new Array(n.getNumberOfPoints()).fill(0).map((c,l)=>n.getPoint(l).slice()),a=new Array(r.getNumberOfCells()).fill(0).map((c,l)=>{const u=r.getCell(l*3).slice();return{a:u[0],b:u[1]}});if(e)return{points:i,lines:a};const s=[];for(const[c,l]of i.entries()){const u=s.findIndex(f=>f[0]===l[0]&&f[1]===l[1]&&f[2]===l[2]);if(u>=0)a.map(f=>(f.a===c&&(f.a=u),f.b===c&&(f.b=u),f));else{const f=s.length;s.push(l),a.map(g=>(g.a===c&&(g.a=f),g.b===c&&(g.b=f),g))}}const o=a.filter(c=>c.a!==c.b);return{points:s,lines:o}}function kc(t,e,n){const r=n.toIJK(t),i=n.toIJK(e),a=z(),{testIJK:s}=n,o=De(z(),r,i),c=Math.round(Math.max(...o.map(Math.abs)));if(c<2)return!0;const l=vt(z(),o,1/c);for(let u=1;u{const l=zt(z(),o,c).map(p=>p/2),u=e.worldToIndex(l).map(Math.round),[f,g,h]=u,d=f+g*a+h*s,m=n.getAtIndex(d);return m===r||(i==null?void 0:i.has(m))},toIJK:o=>e.worldToIndex(o),testIJK:o=>{const[c,l,u]=o,f=Math.round(c)+Math.round(l)*a+Math.round(u)*s,g=n.getAtIndex(f);return g===r||(i==null?void 0:i.has(g))}}}const vr=.01;function AT(t,e,n={maxMajor:0,maxMinor:0}){const{points:r}=t.polyData,{maxMinor:i,maxMajor:a}=n;let s=a*a,o=i*i,c;for(let p=0;pvr||e.testCenter(T,C)&&kc(T,C,e)&&(o=y,g=[p,v])}if(!g)return;o=Math.sqrt(o);const h=r[g[0]],d=r[g[1]];return{majorAxis:[l,u],minorAxis:[h,d],maxMajor:s,maxMinor:o,...t}}class WT{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.oriented=e,this.edgeMap=new Map}initialize(){this.edgeMap.clear()}computeEdgeKey(e,n){return this.oriented||e0&&arguments[0]!==void 0?arguments[0]:{};return new WT(t.oriented)}var $T={newInstance:zT};const jT=[[-1,-1,-1,-1,-1],[0,3,-1,-1,-1],[1,0,-1,-1,-1],[1,3,-1,-1,-1],[2,1,-1,-1,-1],[0,3,2,1,-1],[2,0,-1,-1,-1],[2,3,-1,-1,-1],[3,2,-1,-1,-1],[0,2,-1,-1,-1],[1,0,3,2,-1],[1,2,-1,-1,-1],[3,1,-1,-1,-1],[0,1,-1,-1,-1],[3,0,-1,-1,-1],[-1,-1,-1,-1,-1]],HT=[[0,1],[1,3],[2,3],[0,2]];function KT(t){return jT[t]}function qT(t){return HT[t]}var Gc={getCase:KT,getEdge:qT};const{vtkErrorMacro:Bc,vtkDebugMacro:YT}=M;function XT(t,e){function n(){let o=0,c=1;return e.slicingMode===1?(o=0,c=2):e.slicingMode===0&&(o=1,c=2),[o,c]}e.classHierarchy.push("vtkImageMarchingSquares"),t.getContourValues=()=>e.contourValues,t.setContourValues=o=>{e.contourValues=o,t.modified()};const r=[],i=[],a=[],s=$T.newInstance();t.getPixelScalars=(o,c,l,u,f,g)=>{const[h,d,m]=o;r[0]=m*c[1]*c[0]+d*c[0]+h,r[1]=r[0]+u[f],r[2]=r[0]+u[g],r[3]=r[2]+u[f];for(let p=0;p<4;++p)i[p]=l[r[p]]},t.getPixelPoints=(o,c,l,u,f)=>{const g=o[u],h=o[f];a[0]=c[u]+g*l[u],a[1]=c[f]+h*l[f],a[2]=a[0]+l[u],a[3]=a[1],a[4]=a[0],a[5]=a[1]+l[f],a[6]=a[2],a[7]=a[5]},t.produceLines=(o,c,l,u,f,g,h,d,m,p,v)=>{var D;const T=c[e.slicingMode],C=[1,2,8,4],y=[];let x;t.getPixelScalars(c,l,g,m,p,v);let w=0;for(let S=0;S<4;S++)i[S]>=o&&(w|=C[S]);const E=Gc.getCase(w);if(E[0]<0)return;t.getPixelPoints(c,u,f,p,v);const R=u[e.slicingMode]+T*f[e.slicingMode];for(let S=0;E[S]>=0;S+=2){d.push(2);for(let O=0;O<2;O++){const V=Gc.getEdge(E[S+O]);if(x=void 0,e.mergePoints&&(x=(D=s.isInsertedEdge(r[V[0]],r[V[1]]))==null?void 0:D.value),x===void 0){const L=(o-i[V[0]])/(i[V[1]]-i[V[0]]),b=a.slice(V[0]*2,(V[0]+1)*2),U=a.slice(V[1]*2,(V[1]+1)*2);y[p]=b[0]+L*(U[0]-b[0]),y[v]=b[1]+L*(U[1]-b[1]),y[e.slicingMode]=R,x=h.length/3,h.push(y[0],y[1],y[2]),e.mergePoints&&s.insertEdge(r[V[0]],r[V[1]],x)}d.push(x)}}},t.requestData=(o,c)=>{const l=o[0];if(!l){Bc("Invalid or missing input");return}if(e.slicingMode==null||e.slicingMode<0||e.slicingMode>2){Bc("Invalid or missing slicing mode");return}console.time("msquares");const u=l.getOrigin(),f=l.getSpacing(),g=l.getDimensions(),h=l.getExtent(),d=l.computeIncrements(h),m=l.getPointData().getScalars().getData(),[p,v]=n(),T=[],C=[];let y=Math.round(e.slice);y>=g[e.slicingMode]&&(y=0);const x=[0,0,0];x[e.slicingMode]=y;for(let E=0;E2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZT,n),M.obj(t,e),M.algo(t,e,1,1),M.setGet(t,e,["slicingMode","slice","mergePoints"]),M.algo(t,e,1,1),XT(t,e)}const JT=M.newInstance(Ff,"vtkImageMarchingSquares");var QT={newInstance:JT,extend:Ff};const{VoxelManager:eC}=Of,oe={createVoxelManager:(t,e)=>eC.createScalarVolumeVoxelManager({dimensions:t,scalarData:e}),createDataStructure:t=>{const{scalarData:e,dimensions:n,spacing:r,origin:i,direction:a}=t;return{voxelManager:oe.createVoxelManager(n,e),dimensions:n,spacing:r,origin:i,direction:a,scalarData:e}},createVTKImageData:(t,e,n,r,i)=>{const a=ta.newInstance();if(a.setDimensions(t),a.setOrigin(e),a.setDirection(n),a.setSpacing(r),!i)return a;const s=ie.newInstance({name:"Scalars",numberOfComponents:1,values:i});return a.getPointData().setScalars(s),a},processSegmentStatistics:({segVoxelManager:t,imageVoxelManager:e,indices:n,bounds:r,imageData:i})=>{t.forEach(({value:a,pointIJK:s,pointLPS:o,index:c})=>{if(n.indexOf(a)===-1)return;const l=e.getAtIndex(c);Cn.statsCallback({segmentIndex:a,value:l,pointIJK:s,pointLPS:o})},{boundsIJK:r||e.getDefaultBounds(),imageData:i})},performMarchingSquares:(t,e=null,n=null)=>{const r={};e!==null&&(r.slice=e),n!==null&&(r.slicingMode=n);const i=QT.newInstance(r);return i.setInputData(t),i.setContourValues([1]),i.setMergePoints(!1),i.getOutputData()},createContoursFromPolyData:(t,e=null)=>{var r;const n=BT(t);return(r=n.points)!=null&&r.length?{contours:GT(n.lines),polyData:n}:null},createSegmentsFromIndices:t=>[null,...t.map(e=>({segmentIndex:e}))],getArgsFromInfo:t=>{const{segmentationInfo:e,imageInfo:n}=t,r=()=>oe.createDataStructure(e),i=()=>oe.createDataStructure(n);return{segmentation:e&&r(),image:n&&i()}},calculateSegmentsStatisticsVolume:t=>{const{mode:e,indices:n,unit:r}=t,{segmentation:i,image:a}=oe.getArgsFromInfo(t),{voxelManager:s,spacing:o}=i,{voxelManager:c}=a,l=oe.createVTKImageData(i.dimensions,i.origin,i.direction,i.spacing);return Cn.statsInit({storePointData:!1,indices:n,mode:e}),oe.processSegmentStatistics({segVoxelManager:s,imageVoxelManager:c,indices:n,imageData:l}),Cn.getStatistics({spacing:o,mode:e,unit:r})},computeMetabolicStats({segmentationInfo:t,imageInfo:e}){const{scalarData:n,dimensions:r,spacing:i,origin:a,direction:s}=t,{spacing:o,dimensions:c,direction:l,origin:u,scalarData:f}=e,g=oe.createVoxelManager(t.dimensions,t.scalarData),h=oe.createVoxelManager(c,f);let d=0,m=0;const p=g.getScalarDataLength();for(let y=0;y0?d/m:0)*m*o[0]*o[1]*o[2]*.001;return{tmtv:v,tlg:C}},calculateSegmentsStatisticsStack:t=>{const{segmentationInfo:e,imageInfo:n,indices:r,mode:i}=t;Cn.statsInit({storePointData:!0,indices:r,mode:i});for(let o=0;o{const{segmentationInfo:e,imageInfo:n,indices:r,mode:i,isStack:a}=t;let s;return a?{segmentation:s}=oe.getArgsFromInfo({segmentationInfo:e[0]}):{segmentation:s}=oe.getArgsFromInfo(t),a?oe.calculateBidirectionalStack({segmentationInfo:e,indices:r,mode:i}):oe.calculateVolumetricBidirectional({segmentation:s,indices:r,mode:i})},findLargestBidirectionalFromContours:(t,e,n)=>{let r;for(const i of t){const a=AT(i,e,r);a&&(r=a)}return r?{segmentIndex:n,majorAxis:r.majorAxis,minorAxis:r.minorAxis,maxMajor:r.maxMajor,maxMinor:r.maxMinor}:null},calculateBidirectionalStack:({segmentationInfo:t,indices:e,mode:n})=>{const r=oe.createSegmentsFromIndices(e);let i=[];for(let a=0;a{const{voxelManager:r,dimensions:i,origin:a,direction:s,spacing:o}=t,c=oe.createVTKImageData(i,a,s,o),l=oe.generateContourSetsFromLabelmapVolume({segmentation:t,indices:e,imageData:c,mode:n}),u=[];for(let f=0;f{const{segmentation:e,indices:n}=t,{dimensions:r,scalarData:i,origin:a,direction:s,spacing:o}=e;let c=t.imageData;c||(c=oe.createVTKImageData(r,a,s,o));const l=r[2],u=r[0]*r[1],f=oe.createSegmentsFromIndices(n);for(let d=0;d{const i=t*n,a=i+n;for(let s=i;stypeof c=="object"&&c!==null||typeof c=="function",wi={canHandle:c=>oi(c)&&c[ii],serialize(c){const{port1:y,port2:_}=new MessageChannel;return Xn(c,y),[_,[_]]},deserialize(c){return c.start(),Ai(c)}},Pi={canHandle:c=>oi(c)&&Mn in c,serialize({value:c}){let y;return c instanceof Error?y={isError:!0,value:{message:c.message,name:c.name,stack:c.stack}}:y={isError:!1,value:c},[y,[]]},deserialize(c){throw c.isError?Object.assign(new Error(c.value.message),c.value):c.value}},ai=new Map([["proxy",wi],["throw",Pi]]);function Ti(c,y){for(const _ of c)if(y===_||_==="*"||_ instanceof RegExp&&_.test(y))return!0;return!1}function Xn(c,y=globalThis,_=["*"]){y.addEventListener("message",function R($){if(!$||!$.data)return;if(!Ti(_,$.origin)){console.warn(`Invalid origin '${$.origin}' for comlink proxy`);return}const{id:r,type:L,path:U}=Object.assign({path:[]},$.data),W=($.data.argumentList||[]).map(Fn);let N;try{const M=U.slice(0,-1).reduce((H,X)=>H[X],c),z=U.reduce((H,X)=>H[X],c);switch(L){case"GET":N=z;break;case"SET":M[U.slice(-1)[0]]=Fn($.data.value),N=!0;break;case"APPLY":N=z.apply(M,W);break;case"CONSTRUCT":{const H=new z(...W);N=Fi(H)}break;case"ENDPOINT":{const{port1:H,port2:X}=new MessageChannel;Xn(c,X),N=Si(H,[H])}break;case"RELEASE":N=void 0;break;default:return}}catch(M){N={value:M,[Mn]:0}}Promise.resolve(N).catch(M=>({value:M,[Mn]:0})).then(M=>{const[z,H]=Nn(M);y.postMessage(Object.assign(Object.assign({},z),{id:r}),H),L==="RELEASE"&&(y.removeEventListener("message",R),si(y),qn in c&&typeof c[qn]=="function"&&c[qn]())}).catch(M=>{const[z,H]=Nn({value:new TypeError("Unserializable return value"),[Mn]:0});y.postMessage(Object.assign(Object.assign({},z),{id:r}),H)})}),y.start&&y.start()}function Ci(c){return c.constructor.name==="MessagePort"}function si(c){Ci(c)&&c.close()}function Ai(c,y){const _=new Map;return c.addEventListener("message",function($){const{data:r}=$;if(!r||!r.id)return;const L=_.get(r.id);if(L)try{L(r)}finally{_.delete(r.id)}}),Gn(c,_,[],y)}function Hn(c){if(c)throw new Error("Proxy has been released and is not useable")}function ui(c){return kn(c,new Map,{type:"RELEASE"}).then(()=>{si(c)})}const Vn=new WeakMap,Bn="FinalizationRegistry"in globalThis&&new FinalizationRegistry(c=>{const y=(Vn.get(c)||0)-1;Vn.set(c,y),y===0&&ui(c)});function $i(c,y){const _=(Vn.get(y)||0)+1;Vn.set(y,_),Bn&&Bn.register(c,y,c)}function Ri(c){Bn&&Bn.unregister(c)}function Gn(c,y,_=[],R=function(){}){let $=!1;const r=new Proxy(R,{get(L,U){if(Hn($),U===bi)return()=>{Ri(r),ui(c),y.clear(),$=!0};if(U==="then"){if(_.length===0)return{then:()=>r};const W=kn(c,y,{type:"GET",path:_.map(N=>N.toString())}).then(Fn);return W.then.bind(W)}return Gn(c,y,[..._,U])},set(L,U,W){Hn($);const[N,M]=Nn(W);return kn(c,y,{type:"SET",path:[..._,U].map(z=>z.toString()),value:N},M).then(Fn)},apply(L,U,W){Hn($);const N=_[_.length-1];if(N===mi)return kn(c,y,{type:"ENDPOINT"}).then(Fn);if(N==="bind")return Gn(c,y,_.slice(0,-1));const[M,z]=Qn(W);return kn(c,y,{type:"APPLY",path:_.map(H=>H.toString()),argumentList:M},z).then(Fn)},construct(L,U){Hn($);const[W,N]=Qn(U);return kn(c,y,{type:"CONSTRUCT",path:_.map(M=>M.toString()),argumentList:W},N).then(Fn)}});return $i(r,c),r}function Ei(c){return Array.prototype.concat.apply([],c)}function Qn(c){const y=c.map(Nn);return[y.map(_=>_[0]),Ei(y.map(_=>_[1]))]}const fi=new WeakMap;function Si(c,y){return fi.set(c,y),c}function Fi(c){return Object.assign(c,{[ii]:!0})}function Nn(c){for(const[y,_]of ai)if(_.canHandle(c)){const[R,$]=_.serialize(c);return[{type:"HANDLER",name:y,value:R},$]}return[{type:"RAW",value:c},fi.get(c)||[]]}function Fn(c){switch(c.type){case"HANDLER":return ai.get(c.name).deserialize(c.value);case"RAW":return c.value}}function kn(c,y,_,R){return new Promise($=>{const r=ki();y.set(r,$),c.start&&c.start(),c.postMessage(Object.assign({id:r},_),R)})}function ki(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}async function Zn(c,y){let _=y.buffer,R=y.byteOffset;const $=y.length;if(c.bitsAllocated===16)R%2&&(_=_.slice(R),R=0),c.pixelRepresentation===0?c.pixelData=new Uint16Array(_,R,$/2):c.pixelData=new Int16Array(_,R,$/2);else if(c.bitsAllocated===8||c.bitsAllocated===1)c.pixelData=y;else if(c.bitsAllocated===32){if(R%2&&(_=_.slice(R),R=0),c.floatPixelData||c.doubleFloatPixelData)throw new Error("Float pixel data is not supported for parsing into ImageFrame");c.pixelRepresentation===0?c.pixelData=new Uint32Array(_,R,$/4):c.pixelRepresentation===1?c.pixelData=new Int32Array(_,R,$/4):c.pixelData=new Float32Array(_,R,$/4)}return c}function Di(c){return(c&255)<<8|c>>8&255}async function xi(c,y){if(c.bitsAllocated===16){let _=y.buffer,R=y.byteOffset;const $=y.length;R%2&&(_=_.slice(R),R=0),c.pixelRepresentation===0?c.pixelData=new Uint16Array(_,R,$/2):c.pixelData=new Int16Array(_,R,$/2);for(let r=0;r=0&&q<=127)for(let ee=0;ee=-127){const ee=L[z++];for(let fe=0;fe<-q+1&&W=0&&q<=127)for(let ee=0;ee=-127){const ee=L[z++];for(let fe=0;fe<-q+1&&W=0&&q<=127)for(let ee=0;ee=-127){const ee=L[H++];for(let fe=0;fe<-q+1&&M{var R=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(R=R||__filename),function($){$=$||{};var r=typeof $<"u"?$:{},L,U;r.ready=new Promise(function(e,t){L=e,U=t});var W=Object.assign({},r),N="./this.program",M=(e,t)=>{throw t},z=typeof window=="object",H=typeof importScripts=="function",X=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",q="";function ee(e){return r.locateFile?r.locateFile(e,q):q+e}var fe,$e,pe;if(X){var we=rn,ye=rn;H?q=ye.dirname(q)+"/":q=__dirname+"/",fe=(e,t)=>(e=Ce(e)?new URL(e):ye.normalize(e),we.readFileSync(e,t?void 0:"utf8")),pe=e=>{var t=fe(e,!0);return t.buffer||(t=new Uint8Array(t)),t},$e=(e,t,o)=>{e=Ce(e)?new URL(e):ye.normalize(e),we.readFile(e,function(l,p){l?o(l):t(p.buffer)})},process.argv.length>1&&(N=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(e){if(!(e instanceof ar))throw e}),process.on("unhandledRejection",function(e){throw e}),M=(e,t)=>{throw process.exitCode=e,t},r.inspect=function(){return"[Emscripten Module object]"}}else(z||H)&&(H?q=self.location.href:typeof document<"u"&&document.currentScript&&(q=document.currentScript.src),R&&(q=R),q.indexOf("blob:")!==0?q=q.substr(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1):q="",fe=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},H&&(pe=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),$e=(e,t,o)=>{var l=new XMLHttpRequest;l.open("GET",e,!0),l.responseType="arraybuffer",l.onload=()=>{if(l.status==200||l.status==0&&l.response){t(l.response);return}o()},l.onerror=o,l.send(null)});var se=r.print||console.log.bind(console),_e=r.printErr||console.warn.bind(console);Object.assign(r,W),W=null,r.arguments&&r.arguments,r.thisProgram&&(N=r.thisProgram),r.quit&&(M=r.quit);var Re;r.wasmBinary&&(Re=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&at("no native wasm support detected");var it,Vt=!1;function xt(e,t){e||at(t)}var Tt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function nr(e,t,o){for(var l=t+o,p=t;e[p]&&!(p>=l);)++p;if(p-t>16&&e.buffer&&Tt)return Tt.decode(e.subarray(t,p));for(var h="";t>10,56320|S&1023)}}return h}function vr(e,t){return e?nr(ue,e,t):""}function ir(e,t,o,l){if(!(l>0))return 0;for(var p=o,h=o+l-1,g=0;g=55296&&m<=57343){var P=e.charCodeAt(++g);m=65536+((m&1023)<<10)|P&1023}if(m<=127){if(o>=h)break;t[o++]=m}else if(m<=2047){if(o+1>=h)break;t[o++]=192|m>>6,t[o++]=128|m&63}else if(m<=65535){if(o+2>=h)break;t[o++]=224|m>>12,t[o++]=128|m>>6&63,t[o++]=128|m&63}else{if(o+3>=h)break;t[o++]=240|m>>18,t[o++]=128|m>>12&63,t[o++]=128|m>>6&63,t[o++]=128|m&63}}return t[o]=0,o-p}function Ge(e,t,o){return ir(e,ue,t,o)}function me(e){for(var t=0,o=0;o=55296&&l<=57343?(t+=4,++o):t+=3}return t}var le,ce,ue,ne,oe,ie,he,Bt,Nt;function zt(e){le=e,r.HEAP8=ce=new Int8Array(e),r.HEAP16=ne=new Int16Array(e),r.HEAP32=ie=new Int32Array(e),r.HEAPU8=ue=new Uint8Array(e),r.HEAPU16=oe=new Uint16Array(e),r.HEAPU32=he=new Uint32Array(e),r.HEAPF32=Bt=new Float32Array(e),r.HEAPF64=Nt=new Float64Array(e)}r.INITIAL_MEMORY;var qt,or=[],hr=[],kr=[];function nn(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Ct(r.preRun.shift());At(or)}function on(){At(hr)}function an(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Xe(r.postRun.shift());At(kr)}function Ct(e){or.unshift(e)}function Je(e){hr.unshift(e)}function Xe(e){kr.unshift(e)}var Ye=0,ot=null;function Ot(e){Ye++,r.monitorRunDependencies&&r.monitorRunDependencies(Ye)}function Ut(e){if(Ye--,r.monitorRunDependencies&&r.monitorRunDependencies(Ye),Ye==0&&ot){var t=ot;ot=null,t()}}function at(e){r.onAbort&&r.onAbort(e),e="Aborted("+e+")",_e(e),Vt=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw U(t),t}var Te="data:application/octet-stream;base64,";function Pe(e){return e.startsWith(Te)}function Ce(e){return e.startsWith("file://")}var Fe;Fe="libjpegturbowasm_decode.wasm",Pe(Fe)||(Fe=ee(Fe));function Dr(e){try{if(e==Fe&&Re)return new Uint8Array(Re);if(pe)return pe(e);throw"both async and sync fetching of the wasm failed"}catch(t){at(t)}}function gr(){if(!Re&&(z||H)){if(typeof fetch=="function"&&!Ce(Fe))return fetch(Fe,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Fe+"'";return e.arrayBuffer()}).catch(function(){return Dr(Fe)});if($e)return new Promise(function(e,t){$e(Fe,function(o){e(new Uint8Array(o))},t)})}return Promise.resolve().then(function(){return Dr(Fe)})}function yr(){var e={a:A};function t(g,m){var P=g.exports;r.asm=P,it=r.asm.K,zt(it.buffer),qt=r.asm.M,Je(r.asm.L),Ut()}Ot();function o(g){t(g.instance)}function l(g){return gr().then(function(m){return WebAssembly.instantiate(m,e)}).then(function(m){return m}).then(g,function(m){_e("failed to asynchronously prepare wasm: "+m),at(m)})}function p(){return!Re&&typeof WebAssembly.instantiateStreaming=="function"&&!Pe(Fe)&&!Ce(Fe)&&!X&&typeof fetch=="function"?fetch(Fe,{credentials:"same-origin"}).then(function(g){var m=WebAssembly.instantiateStreaming(g,e);return m.then(o,function(P){return _e("wasm streaming compile failed: "+P),_e("falling back to ArrayBuffer instantiation"),l(o)})}):l(o)}if(r.instantiateWasm)try{var h=r.instantiateWasm(e,t);return h}catch(g){_e("Module.instantiateWasm callback failed with error: "+g),U(g)}return p().catch(U),{}}function ar(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function At(e){for(;e.length>0;)e.shift()(r)}function xr(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){he[this.ptr+4>>2]=t},this.get_type=function(){return he[this.ptr+4>>2]},this.set_destructor=function(t){he[this.ptr+8>>2]=t},this.get_destructor=function(){return he[this.ptr+8>>2]},this.set_refcount=function(t){ie[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,ce[this.ptr+12>>0]=t},this.get_caught=function(){return ce[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,ce[this.ptr+13>>0]=t},this.get_rethrown=function(){return ce[this.ptr+13>>0]!=0},this.init=function(t,o){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(o),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=ie[this.ptr>>2];ie[this.ptr>>2]=t+1},this.release_ref=function(){var t=ie[this.ptr>>2];return ie[this.ptr>>2]=t-1,t===1},this.set_adjusted_ptr=function(t){he[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return he[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=d(this.get_type());if(t)return he[this.excPtr>>2];var o=this.get_adjusted_ptr();return o!==0?o:this.excPtr}}function _t(e,t,o){var l=new xr(e);throw l.init(t,o),e}var ke={};function De(e){for(;e.length;){var t=e.pop(),o=e.pop();o(t)}}function ge(e){return this.fromWireType(ie[e>>2])}var Ne={},tt={},st={},_r=48,Gt=57;function It(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=_r&&t<=Gt?"_"+e:e}function mt(e,t){return e=It(e),new Function("body","return function "+e+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(t)}function He(e,t){var o=mt(t,function(l){this.name=t,this.message=l;var p=new Error(l).stack;p!==void 0&&(this.stack=this.toString()+` +`+p.replace(/^Error(:[^\n]*)?\n/,""))});return o.prototype=Object.create(e.prototype),o.prototype.constructor=o,o.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},o}var jt=void 0;function Me(e){throw new jt(e)}function Le(e,t,o){e.forEach(function(m){st[m]=t});function l(m){var P=o(m);P.length!==e.length&&Me("Mismatched type converter count");for(var S=0;S{tt.hasOwnProperty(m)?p[P]=tt[m]:(h.push(m),Ne.hasOwnProperty(m)||(Ne[m]=[]),Ne[m].push(()=>{p[P]=tt[m],++g,g===h.length&&l(p)}))}),h.length===0&&l(p)}function $t(e){var t=ke[e];delete ke[e];var o=t.rawConstructor,l=t.rawDestructor,p=t.fields,h=p.map(g=>g.getterReturnType).concat(p.map(g=>g.setterArgumentType));Le([e],h,g=>{var m={};return p.forEach((P,S)=>{var I=P.fieldName,B=g[S],V=P.getter,te=P.getterContext,Z=g[S+p.length],ve=P.setter,Oe=P.setterContext;m[I]={read:We=>B.fromWireType(V(te,We)),write:(We,Sn)=>{var Lt=[];ve(Oe,We,Z.toWireType(Lt,Sn)),De(Lt)}}}),[{name:t.name,fromWireType:function(P){var S={};for(var I in m)S[I]=m[I].read(P);return l(P),S},toWireType:function(P,S){for(var I in m)if(!(I in S))throw new TypeError('Missing field: "'+I+'"');var B=o();for(I in m)m[I].write(B,S[I]);return P!==null&&P.push(l,B),B},argPackAdvance:8,readValueFromPointer:ge,destructorFunction:l}]})}function Rt(e,t,o,l,p){}function Ae(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function Et(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Y=e}var Y=void 0;function de(e){for(var t="",o=e;ue[o];)t+=Y[ue[o++]];return t}var re=void 0;function Q(e){throw new re(e)}function ze(e,t,o={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var l=t.name;if(e||Q('type "'+l+'" must have a positive integer typeid pointer'),tt.hasOwnProperty(e)){if(o.ignoreDuplicateRegistrations)return;Q("Cannot register type '"+l+"' twice")}if(tt[e]=t,delete st[e],Ne.hasOwnProperty(e)){var p=Ne[e];delete Ne[e],p.forEach(h=>h())}}function ut(e,t,o,l,p){var h=Ae(o);t=de(t),ze(e,{name:t,fromWireType:function(g){return!!g},toWireType:function(g,m){return m?l:p},argPackAdvance:8,readValueFromPointer:function(g){var m;if(o===1)m=ce;else if(o===2)m=ne;else if(o===4)m=ie;else throw new TypeError("Unknown boolean type size: "+t);return this.fromWireType(m[g>>h])},destructorFunction:null})}function mr(e){if(!(this instanceof vt)||!(e instanceof vt))return!1;for(var t=this.$$.ptrType.registeredClass,o=this.$$.ptr,l=e.$$.ptrType.registeredClass,p=e.$$.ptr;t.baseClass;)o=t.upcast(o),t=t.baseClass;for(;l.baseClass;)p=l.upcast(p),l=l.baseClass;return t===l&&o===p}function sr(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function St(e){function t(o){return o.$$.ptrType.registeredClass.name}Q(t(e)+" instance already deleted")}var Jt=!1;function ur(e){}function Ee(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}function bt(e){e.count.value-=1;var t=e.count.value===0;t&&Ee(e)}function ae(e,t,o){if(t===o)return e;if(o.baseClass===void 0)return null;var l=ae(e,t,o.baseClass);return l===null?null:o.downcast(l)}var Ue={};function br(){return Object.keys(lt).length}function ft(){var e=[];for(var t in lt)lt.hasOwnProperty(t)&&e.push(lt[t]);return e}var Ft=[];function ct(){for(;Ft.length;){var e=Ft.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ke=void 0;function Or(e){Ke=e,Ft.length&&Ke&&Ke(ct)}function Xt(){r.getInheritedInstanceCount=br,r.getLiveInheritedInstances=ft,r.flushPendingDeletes=ct,r.setDelayFunction=Or}var lt={};function Ur(e,t){for(t===void 0&&Q("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}function dt(e,t){return t=Ur(e,t),lt[t]}function fr(e,t){(!t.ptrType||!t.ptr)&&Me("makeClassHandle requires ptr and ptrType");var o=!!t.smartPtrType,l=!!t.smartPtr;return o!==l&&Me("Both smartPtrType and smartPtr must be specified"),t.count={value:1},pt(Object.create(e,{$$:{value:t}}))}function Yt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var o=dt(this.registeredClass,t);if(o!==void 0){if(o.$$.count.value===0)return o.$$.ptr=t,o.$$.smartPtr=e,o.clone();var l=o.clone();return this.destructor(e),l}function p(){return this.isSmartPointer?fr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):fr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var h=this.registeredClass.getActualType(t),g=Ue[h];if(!g)return p.call(this);var m;this.isConst?m=g.constPointerType:m=g.pointerType;var P=ae(t,this.registeredClass,m.registeredClass);return P===null?p.call(this):this.isSmartPointer?fr(m.registeredClass.instancePrototype,{ptrType:m,ptr:P,smartPtrType:this,smartPtr:e}):fr(m.registeredClass.instancePrototype,{ptrType:m,ptr:P})}function pt(e){return typeof FinalizationRegistry>"u"?(pt=t=>t,e):(Jt=new FinalizationRegistry(t=>{bt(t.$$)}),pt=t=>{var o=t.$$,l=!!o.smartPtr;if(l){var p={$$:o};Jt.register(t,p,t)}return t},ur=t=>Jt.unregister(t),pt(e))}function wr(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=pt(Object.create(Object.getPrototypeOf(this),{$$:{value:sr(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function Kt(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Q("Object already scheduled for deletion"),ur(this),bt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function wt(){return!this.$$.ptr}function Ir(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Q("Object already scheduled for deletion"),Ft.push(this),Ft.length===1&&Ke&&Ke(ct),this.$$.deleteScheduled=!0,this}function Ve(){vt.prototype.isAliasOf=mr,vt.prototype.clone=wr,vt.prototype.delete=Kt,vt.prototype.isDeleted=wt,vt.prototype.deleteLater=Ir}function vt(){}function cr(e,t,o){if(e[t].overloadTable===void 0){var l=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Q("Function '"+o+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[l.argCount]=l}}function lr(e,t,o){r.hasOwnProperty(e)?(Q("Cannot register public name '"+e+"' twice"),cr(r,e,e),r.hasOwnProperty(o)&&Q("Cannot register multiple overloads of a function with the same number of arguments ("+o+")!"),r[e].overloadTable[o]=t):r[e]=t}function Pr(e,t,o,l,p,h,g,m){this.name=e,this.constructor=t,this.instancePrototype=o,this.rawDestructor=l,this.baseClass=p,this.getActualType=h,this.upcast=g,this.downcast=m,this.pureVirtualFunctions=[]}function kt(e,t,o){for(;t!==o;)t.upcast||Q("Expected null or instance of "+o.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function sn(e,t){if(t===null)return this.isReference&&Q("null is not a valid "+this.name),0;t.$$||Q('Cannot pass "'+tr(t)+'" as a '+this.name),t.$$.ptr||Q("Cannot pass deleted object as a pointer of type "+this.name);var o=t.$$.ptrType.registeredClass,l=kt(t.$$.ptr,o,this.registeredClass);return l}function un(e,t){var o;if(t===null)return this.isReference&&Q("null is not a valid "+this.name),this.isSmartPointer?(o=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,o),o):0;t.$$||Q('Cannot pass "'+tr(t)+'" as a '+this.name),t.$$.ptr||Q("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Q("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var l=t.$$.ptrType.registeredClass;if(o=kt(t.$$.ptr,l,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&Q("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?o=t.$$.smartPtr:Q("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:o=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)o=t.$$.smartPtr;else{var p=t.clone();o=this.rawShare(o,Pt.toHandle(function(){p.delete()})),e!==null&&e.push(this.rawDestructor,o)}break;default:Q("Unsupporting sharing policy")}return o}function fn(e,t){if(t===null)return this.isReference&&Q("null is not a valid "+this.name),0;t.$$||Q('Cannot pass "'+tr(t)+'" as a '+this.name),t.$$.ptr||Q("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Q("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var o=t.$$.ptrType.registeredClass,l=kt(t.$$.ptr,o,this.registeredClass);return l}function cn(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function ht(e){this.rawDestructor&&this.rawDestructor(e)}function gt(e){e!==null&&e.delete()}function rt(){Be.prototype.getPointee=cn,Be.prototype.destructor=ht,Be.prototype.argPackAdvance=8,Be.prototype.readValueFromPointer=ge,Be.prototype.deleteObject=gt,Be.prototype.fromWireType=Yt}function Be(e,t,o,l,p,h,g,m,P,S,I){this.name=e,this.registeredClass=t,this.isReference=o,this.isConst=l,this.isSmartPointer=p,this.pointeeType=h,this.sharingPolicy=g,this.rawGetPointee=m,this.rawConstructor=P,this.rawShare=S,this.rawDestructor=I,!p&&t.baseClass===void 0?l?(this.toWireType=sn,this.destructorFunction=null):(this.toWireType=fn,this.destructorFunction=null):this.toWireType=un}function jr(e,t,o){r.hasOwnProperty(e)||Me("Replacing nonexistant public symbol"),r[e].overloadTable!==void 0&&o!==void 0||(r[e]=t,r[e].argCount=o)}function Wt(e,t,o){var l=r["dynCall_"+e];return o&&o.length?l.apply(null,[t].concat(o)):l.call(null,t)}var Qt=[];function Se(e){var t=Qt[e];return t||(e>=Qt.length&&(Qt.length=e+1),Qt[e]=t=qt.get(e)),t}function Wr(e,t,o){if(e.includes("j"))return Wt(e,t,o);var l=Se(t).apply(null,o);return l}function Qe(e,t){var o=[];return function(){return o.length=0,Object.assign(o,arguments),Wr(e,t,o)}}function Ie(e,t){e=de(e);function o(){return e.includes("j")?Qe(e,t):Se(t)}var l=o();return typeof l!="function"&&Q("unknown function pointer with signature "+e+": "+t),l}var Tr=void 0;function Ht(e){var t=G(e),o=de(t);return j(t),o}function Ze(e,t){var o=[],l={};function p(h){if(!l[h]&&!tt[h]){if(st[h]){st[h].forEach(p);return}o.push(h),l[h]=!0}}throw t.forEach(p),new Tr(e+": "+o.map(Ht).join([", "]))}function Zt(e,t,o,l,p,h,g,m,P,S,I,B,V){I=de(I),h=Ie(p,h),m&&(m=Ie(g,m)),S&&(S=Ie(P,S)),V=Ie(B,V);var te=It(I);lr(te,function(){Ze("Cannot construct "+I+" due to unbound types",[l])}),Le([e,t,o],l?[l]:[],function(Z){Z=Z[0];var ve,Oe;l?(ve=Z.registeredClass,Oe=ve.instancePrototype):Oe=vt.prototype;var We=mt(te,function(){if(Object.getPrototypeOf(this)!==Sn)throw new re("Use 'new' to construct "+I);if(Lt.constructor_body===void 0)throw new re(I+" has no accessible constructor");var Kn=Lt.constructor_body[arguments.length];if(Kn===void 0)throw new re("Tried to invoke ctor of "+I+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Lt.constructor_body).toString()+") parameters instead!");return Kn.apply(this,arguments)}),Sn=Object.create(Oe,{constructor:{value:We}});We.prototype=Sn;var Lt=new Pr(I,We,Sn,V,ve,h,m,S),Wn=new Be(I,Lt,!0,!1,!1),xn=new Be(I+"*",Lt,!1,!1,!1),Yn=new Be(I+" const*",Lt,!1,!0,!1);return Ue[e]={pointerType:xn,constPointerType:Yn},jr(te,We),[Wn,xn,Yn]})}function Hr(e,t){for(var o=[],l=0;l>2]);return o}function Mr(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var o=mt(e.name||"unknownFunctionName",function(){});o.prototype=e.prototype;var l=new o,p=e.apply(l,t);return p instanceof Object?p:l}function dr(e,t,o,l,p){var h=t.length;h<2&&Q("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var g=t[1]!==null&&o!==null,m=!1,P=1;P0?", ":"")+B),V+=(S?"var rv = ":"")+"invoker(fn"+(B.length>0?", ":"")+B+`); +`,m)V+=`runDestructors(destructors); +`;else for(var P=g?1:2;P0);var g=Hr(t,o);p=Ie(l,p),Le([],[e],function(m){m=m[0];var P="constructor "+m.name;if(m.registeredClass.constructor_body===void 0&&(m.registeredClass.constructor_body=[]),m.registeredClass.constructor_body[t-1]!==void 0)throw new re("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+m.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return m.registeredClass.constructor_body[t-1]=()=>{Ze("Cannot construct "+m.name+" due to unbound types",g)},Le([],g,function(S){return S.splice(1,0,null),m.registeredClass.constructor_body[t-1]=dr(P,S,null,p,h),[]}),[]})}function er(e,t,o,l,p,h,g,m){var P=Hr(o,l);t=de(t),h=Ie(p,h),Le([],[e],function(S){S=S[0];var I=S.name+"."+t;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),m&&S.registeredClass.pureVirtualFunctions.push(t);function B(){Ze("Cannot call "+I+" due to unbound types",P)}var V=S.registeredClass.instancePrototype,te=V[t];return te===void 0||te.overloadTable===void 0&&te.className!==S.name&&te.argCount===o-2?(B.argCount=o-2,B.className=S.name,V[t]=B):(cr(V,t,I),V[t].overloadTable[o-2]=B),Le([],P,function(Z){var ve=dr(I,Z,S,h,g);return V[t].overloadTable===void 0?(ve.argCount=o-2,V[t]=ve):V[t].overloadTable[o-2]=ve,[]}),[]})}var je=[],xe=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Lr(e){e>4&&--xe[e].refcount===0&&(xe[e]=void 0,je.push(e))}function nt(){for(var e=0,t=5;t(e||Q("Cannot use deleted val. handle = "+e),xe[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var t=je.length?je.pop():xe.length;return xe[t]={refcount:1,value:e},t}}}};function Cr(e,t){t=de(t),ze(e,{name:t,fromWireType:function(o){var l=Pt.toValue(o);return Lr(o),l},toWireType:function(o,l){return Pt.toHandle(l)},argPackAdvance:8,readValueFromPointer:ge,destructorFunction:null})}function tr(e){if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e}function et(e,t){switch(t){case 2:return function(o){return this.fromWireType(Bt[o>>2])};case 3:return function(o){return this.fromWireType(Nt[o>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Vr(e,t,o){var l=Ae(o);t=de(t),ze(e,{name:t,fromWireType:function(p){return p},toWireType:function(p,h){return h},argPackAdvance:8,readValueFromPointer:et(t,l),destructorFunction:null})}function dn(e,t,o){switch(t){case 0:return o?function(p){return ce[p]}:function(p){return ue[p]};case 1:return o?function(p){return ne[p>>1]}:function(p){return oe[p>>1]};case 2:return o?function(p){return ie[p>>2]}:function(p){return he[p>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function pn(e,t,o,l,p){t=de(t);var h=Ae(o),g=B=>B;if(l===0){var m=32-8*o;g=B=>B<>>m}var P=t.includes("unsigned"),S=(B,V)=>{},I;P?I=function(B,V){return S(V,this.name),V>>>0}:I=function(B,V){return S(V,this.name),V},ze(e,{name:t,fromWireType:g,toWireType:I,argPackAdvance:8,readValueFromPointer:dn(t,h,l!==0),destructorFunction:null})}function Br(e,t,o){var l=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],p=l[t];function h(g){g=g>>2;var m=he,P=m[g],S=m[g+1];return new p(le,S,P)}o=de(o),ze(e,{name:o,fromWireType:h,argPackAdvance:8,readValueFromPointer:h},{ignoreDuplicateRegistrations:!0})}function rr(e,t){t=de(t);var o=t==="std::string";ze(e,{name:t,fromWireType:function(l){var p=he[l>>2],h=l+4,g;if(o)for(var m=h,P=0;P<=p;++P){var S=h+P;if(P==p||ue[S]==0){var I=S-m,B=vr(m,I);g===void 0?g=B:(g+="\0",g+=B),m=S+1}}else{for(var V=new Array(p),P=0;P>2]=h,o&&g)Ge(p,P,h+1);else if(g)for(var S=0;S255&&(j(P),Q("String has UTF-16 code units that do not fit in 8 bits")),ue[P+S]=I}else for(var S=0;S>1,p=l+t/2;!(l>=p)&&oe[l];)++l;if(o=l<<1,o-e>32&&Nr)return Nr.decode(ue.subarray(e,o));for(var h="",g=0;!(g>=t/2);++g){var m=ne[e+g*2>>1];if(m==0)break;h+=String.fromCharCode(m)}return h}function vn(e,t,o){if(o===void 0&&(o=2147483647),o<2)return 0;o-=2;for(var l=t,p=o>1]=g,t+=2}return ne[t>>1]=0,t-l}function hn(e){return e.length*2}function gn(e,t){for(var o=0,l="";!(o>=t/4);){var p=ie[e+o*4>>2];if(p==0)break;if(++o,p>=65536){var h=p-65536;l+=String.fromCharCode(55296|h>>10,56320|h&1023)}else l+=String.fromCharCode(p)}return l}function yn(e,t,o){if(o===void 0&&(o=2147483647),o<4)return 0;for(var l=t,p=l+o-4,h=0;h=55296&&g<=57343){var m=e.charCodeAt(++h);g=65536+((g&1023)<<10)|m&1023}if(ie[t>>2]=g,t+=4,t+4>p)break}return ie[t>>2]=0,t-l}function _n(e){for(var t=0,o=0;o=55296&&l<=57343&&++o,t+=4}return t}function mn(e,t,o){o=de(o);var l,p,h,g,m;t===2?(l=Ar,p=vn,g=hn,h=()=>oe,m=1):t===4&&(l=gn,p=yn,g=_n,h=()=>he,m=2),ze(e,{name:o,fromWireType:function(P){for(var S=he[P>>2],I=h(),B,V=P+4,te=0;te<=S;++te){var Z=P+4+te*t;if(te==S||I[Z>>m]==0){var ve=Z-V,Oe=l(V,ve);B===void 0?B=Oe:(B+="\0",B+=Oe),V=Z+t}}return j(P),B},toWireType:function(P,S){typeof S!="string"&&Q("Cannot pass non-string to C++ string type "+o);var I=g(S),B=x(4+I+t);return he[B>>2]=I>>m,p(S,B+4,I+t),P!==null&&P.push(j,B),B},argPackAdvance:8,readValueFromPointer:ge,destructorFunction:function(P){j(P)}})}function bn(e,t,o,l,p,h){ke[e]={name:de(t),rawConstructor:Ie(o,l),rawDestructor:Ie(p,h),fields:[]}}function zr(e,t,o,l,p,h,g,m,P,S){ke[e].fields.push({fieldName:de(t),getterReturnType:o,getter:Ie(l,p),getterContext:h,setterArgumentType:g,setter:Ie(m,P),setterContext:S})}function wn(e,t){t=de(t),ze(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:function(){},toWireType:function(o,l){}})}function qr(){throw 1/0}var Gr={};function Pn(e){var t=Gr[e];return t===void 0?de(e):t}function $r(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Jr(e){return e===0?Pt.toHandle($r()):(e=Pn(e),Pt.toHandle($r()[e]))}function Xr(e){e>4&&(xe[e].refcount+=1)}function Rr(e,t){var o=tt[e];return o===void 0&&Q(t+" has unknown type "+Ht(e)),o}function Tn(e){for(var t="",o=0;ohe,p="return function emval_allocator_"+e+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,o=0;o>2)], 'parameter "+o+`'); +var arg`+o+" = argType"+o+`.readValueFromPointer(args); +args += argType`+o+`['argPackAdvance']; +argTypes += 4; +`;return p+="var obj = new constructor("+t+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",p)(Rr,r,Pt.toHandle,l)}var Yr={};function Cn(e,t,o,l){e=Pt.toValue(e);var p=Yr[t];return p||(p=Tn(t),Yr[t]=p),p(e,o,l)}function Kr(e,t){e=Rr(e,"_emval_take_value");var o=e.readValueFromPointer(t);return Pt.toHandle(o)}function An(){at("")}function $n(e,t,o){ue.copyWithin(e,t,t+o)}function Rn(){return 2147483648}function En(e){try{return it.grow(e-le.byteLength+65535>>>16),zt(it.buffer),1}catch{}}function Er(e){var t=ue.length;e=e>>>0;var o=Rn();if(e>o)return!1;let l=(P,S)=>P+(S-P%S)%S;for(var p=1;p<=4;p*=2){var h=t*(1+.2/p);h=Math.min(h,e+100663296);var g=Math.min(o,l(Math.max(e,h),65536)),m=En(g);if(m)return!0}return!1}var Sr={};function Dt(){return N||"./this.program"}function Mt(){if(!Mt.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Dt()};for(var o in Sr)Sr[o]===void 0?delete t[o]:t[o]=Sr[o];var l=[];for(var o in t)l.push(o+"="+t[o]);Mt.strings=l}return Mt.strings}function yt(e,t,o){for(var l=0;l>0]=e.charCodeAt(l);ce[t>>0]=0}function Qr(e,t){var o=0;return Mt().forEach(function(l,p){var h=t+o;he[e+p*4>>2]=h,yt(l,h),o+=l.length+1}),0}function Zr(e,t){var o=Mt();he[e>>2]=o.length;var l=0;return o.forEach(function(p){l+=p.length+1}),he[t>>2]=l,0}function Fr(e){M(e,new ar(e))}function en(e,t){Fr(e)}var pr=en;function tn(e){return 52}function u(e,t,o,l,p){return 70}var f=[null,[],[]];function v(e,t){var o=f[e];t===0||t===10?((e===1?se:_e)(nr(o,0)),o.length=0):o.push(t)}function w(e,t,o,l){for(var p=0,h=0;h>2],m=he[t+4>>2];t+=8;for(var P=0;P>2]=p,0}function C(e){var t=r["_"+e];return t}function F(e,t){ce.set(e,t)}function k(e,t,o,l,p){var h={string:Z=>{var ve=0;if(Z!=null&&Z!==0){var Oe=(Z.length<<2)+1;ve=a(Oe),Ge(Z,ve,Oe)}return ve},array:Z=>{var ve=a(Z.length);return F(Z,ve),ve}};function g(Z){return t==="string"?vr(Z):t==="boolean"?!!Z:Z}var m=C(e),P=[],S=0;if(l)for(var I=0;I0||(nn(),Ye>0))return;function t(){n||(n=!0,r.calledRun=!0,!Vt&&(on(),L(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),an()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return i(),$.ready}})();c.exports=_})(ci);var Li=ci.exports,Vi=zn(Li);const Bi=new URL("/static/dv3d/assets/libjpegturbowasm_decode-daqMmuVl.wasm",import.meta.url),Ln={codec:void 0,decoder:void 0};function Ni(){if(Ln.codec)return Promise.resolve();const c=Vi({locateFile:y=>y.endsWith(".wasm")?Bi.toString():y});return new Promise((y,_)=>{c.then(R=>{Ln.codec=R,Ln.decoder=new R.JPEGDecoder,y()},_)})}async function zi(c,y){await Ni();const _=Ln.decoder;_.getEncodedBuffer(c.length).set(c),_.decode();const $=_.getFrameInfo(),r=_.getDecodedBuffer(),L={columns:$.width,rows:$.height,bitsPerPixel:$.bitsPerSample,signed:y.signed,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:$.componentCount},U=qi($,r),W={frameInfo:$};return{...y,pixelData:U,imageInfo:L,encodeOptions:W,...W,...L}}function qi(c,y){return c.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}const In={JpegImage:void 0,decodeConfig:{}};function Gi(c){return In.decodeConfig=c,In.JpegImage?Promise.resolve():new Promise((y,_)=>{import("./jpeg-BQEpTZHd.js").then(R=>{In.JpegImage=R.default,y()}).catch(_)})}async function Ji(c,y){if(await Gi(),typeof In.JpegImage>"u")throw new Error("No JPEG Baseline decoder loaded");const _=new In.JpegImage;if(_.parse(y),_.colorTransform=!1,c.bitsAllocated===8)return c.pixelData=_.getData(c.columns,c.rows),c;if(c.bitsAllocated===16)return c.pixelData=_.getData16(c.columns,c.rows),c}const jn={jpeg:void 0,decodeConfig:{}};function Xi(c){return jn.decodeConfig=c,jn.jpeg?Promise.resolve():new Promise((y,_)=>{import("./lossless-BIYWXcdg.js").then(({Decoder:R})=>{const $=new R;jn.jpeg=$,y()},_)})}async function ei(c,y){if(await Xi(),typeof jn.jpeg>"u")throw new Error("No JPEG Lossless decoder loaded");const _=c.bitsAllocated<=8?1:2,R=y.buffer,$=jn.jpeg.decode(R,y.byteOffset,y.length,_);return c.pixelRepresentation===0?c.bitsAllocated===16?(c.pixelData=new Uint16Array($.buffer),c):(c.pixelData=new Uint8Array($.buffer),c):(c.pixelData=new Int16Array($.buffer),c)}var li={exports:{}};(function(c,y){var _=(()=>{var R=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(R=R||__filename),function($){$=$||{};var r=typeof $<"u"?$:{},L,U;r.ready=new Promise(function(u,f){L=u,U=f});var W=Object.assign({},r),N=typeof window=="object",M=typeof importScripts=="function",z=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",H="";function X(u){return r.locateFile?r.locateFile(u,H):H+u}var q,ee,fe;if(z){var $e=rn,pe=rn;M?H=pe.dirname(H)+"/":H=__dirname+"/",q=(u,f)=>(u=at(u)?new URL(u):pe.normalize(u),$e.readFileSync(u,f?void 0:"utf8")),fe=u=>{var f=q(u,!0);return f.buffer||(f=new Uint8Array(f)),f},ee=(u,f,v)=>{u=at(u)?new URL(u):pe.normalize(u),$e.readFile(u,function(w,C){w?v(w):f(C.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(u){if(!(u instanceof Dr))throw u}),process.on("unhandledRejection",function(u){throw u}),r.inspect=function(){return"[Emscripten Module object]"}}else(N||M)&&(M?H=self.location.href:typeof document<"u"&&document.currentScript&&(H=document.currentScript.src),R&&(H=R),H.indexOf("blob:")!==0?H=H.substr(0,H.replace(/[?#].*/,"").lastIndexOf("/")+1):H="",q=u=>{var f=new XMLHttpRequest;return f.open("GET",u,!1),f.send(null),f.responseText},M&&(fe=u=>{var f=new XMLHttpRequest;return f.open("GET",u,!1),f.responseType="arraybuffer",f.send(null),new Uint8Array(f.response)}),ee=(u,f,v)=>{var w=new XMLHttpRequest;w.open("GET",u,!0),w.responseType="arraybuffer",w.onload=()=>{if(w.status==200||w.status==0&&w.response){f(w.response);return}v()},w.onerror=v,w.send(null)});r.print||console.log.bind(console);var we=r.printErr||console.warn.bind(console);Object.assign(r,W),W=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit;var ye;r.wasmBinary&&(ye=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&ot("no native wasm support detected");var se,_e=!1;function Re(u,f){u||ot(f)}var it=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Vt(u,f,v){for(var w=f+v,C=f;u[C]&&!(C>=w);)++C;if(C-f>16&&u.buffer&&it)return it.decode(u.subarray(f,C));for(var F="";f>10,56320|j&1023)}}return F}function xt(u,f){return u?Vt(me,u,f):""}function Tt(u,f,v,w){if(!(w>0))return 0;for(var C=v,F=v+w-1,k=0;k=55296&&A<=57343){var x=u.charCodeAt(++k);A=65536+((A&1023)<<10)|x&1023}if(A<=127){if(v>=F)break;f[v++]=A}else if(A<=2047){if(v+1>=F)break;f[v++]=192|A>>6,f[v++]=128|A&63}else if(A<=65535){if(v+2>=F)break;f[v++]=224|A>>12,f[v++]=128|A>>6&63,f[v++]=128|A&63}else{if(v+3>=F)break;f[v++]=240|A>>18,f[v++]=128|A>>12&63,f[v++]=128|A>>6&63,f[v++]=128|A&63}}return f[v]=0,v-C}function nr(u,f,v){return Tt(u,me,f,v)}function vr(u){for(var f=0,v=0;v=55296&&w<=57343?(f+=4,++v):f+=3}return f}var ir,Ge,me,le,ce,ue,ne,oe,ie;function he(u){ir=u,r.HEAP8=Ge=new Int8Array(u),r.HEAP16=le=new Int16Array(u),r.HEAP32=ue=new Int32Array(u),r.HEAPU8=me=new Uint8Array(u),r.HEAPU16=ce=new Uint16Array(u),r.HEAPU32=ne=new Uint32Array(u),r.HEAPF32=oe=new Float32Array(u),r.HEAPF64=ie=new Float64Array(u)}r.INITIAL_MEMORY;var Bt,Nt=[],zt=[],qt=[];function or(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)nn(r.preRun.shift());gr(Nt)}function hr(){gr(zt)}function kr(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)an(r.postRun.shift());gr(qt)}function nn(u){Nt.unshift(u)}function on(u){zt.unshift(u)}function an(u){qt.unshift(u)}var Ct=0,Je=null;function Xe(u){Ct++,r.monitorRunDependencies&&r.monitorRunDependencies(Ct)}function Ye(u){if(Ct--,r.monitorRunDependencies&&r.monitorRunDependencies(Ct),Ct==0&&Je){var f=Je;Je=null,f()}}function ot(u){r.onAbort&&r.onAbort(u),u="Aborted("+u+")",we(u),_e=!0,u+=". Build with -sASSERTIONS for more info.";var f=new WebAssembly.RuntimeError(u);throw U(f),f}var Ot="data:application/octet-stream;base64,";function Ut(u){return u.startsWith(Ot)}function at(u){return u.startsWith("file://")}var Te;Te="charlswasm_decode.wasm",Ut(Te)||(Te=X(Te));function Pe(u){try{if(u==Te&&ye)return new Uint8Array(ye);if(fe)return fe(u);throw"both async and sync fetching of the wasm failed"}catch(f){ot(f)}}function Ce(){if(!ye&&(N||M)){if(typeof fetch=="function"&&!at(Te))return fetch(Te,{credentials:"same-origin"}).then(function(u){if(!u.ok)throw"failed to load wasm binary file at '"+Te+"'";return u.arrayBuffer()}).catch(function(){return Pe(Te)});if(ee)return new Promise(function(u,f){ee(Te,function(v){u(new Uint8Array(v))},f)})}return Promise.resolve().then(function(){return Pe(Te)})}function Fe(){var u={a:Sr};function f(k,A){var x=k.exports;r.asm=x,se=r.asm.z,he(se.buffer),Bt=r.asm.C,on(r.asm.A),Ye()}Xe();function v(k){f(k.instance)}function w(k){return Ce().then(function(A){return WebAssembly.instantiate(A,u)}).then(function(A){return A}).then(k,function(A){we("failed to asynchronously prepare wasm: "+A),ot(A)})}function C(){return!ye&&typeof WebAssembly.instantiateStreaming=="function"&&!Ut(Te)&&!at(Te)&&!z&&typeof fetch=="function"?fetch(Te,{credentials:"same-origin"}).then(function(k){var A=WebAssembly.instantiateStreaming(k,u);return A.then(v,function(x){return we("wasm streaming compile failed: "+x),we("falling back to ArrayBuffer instantiation"),w(v)})}):w(v)}if(r.instantiateWasm)try{var F=r.instantiateWasm(u,f);return F}catch(k){we("Module.instantiateWasm callback failed with error: "+k),U(k)}return C().catch(U),{}}function Dr(u){this.name="ExitStatus",this.message="Program terminated with exit("+u+")",this.status=u}function gr(u){for(;u.length>0;)u.shift()(r)}function yr(u){this.excPtr=u,this.ptr=u-24,this.set_type=function(f){ne[this.ptr+4>>2]=f},this.get_type=function(){return ne[this.ptr+4>>2]},this.set_destructor=function(f){ne[this.ptr+8>>2]=f},this.get_destructor=function(){return ne[this.ptr+8>>2]},this.set_refcount=function(f){ue[this.ptr>>2]=f},this.set_caught=function(f){f=f?1:0,Ge[this.ptr+12>>0]=f},this.get_caught=function(){return Ge[this.ptr+12>>0]!=0},this.set_rethrown=function(f){f=f?1:0,Ge[this.ptr+13>>0]=f},this.get_rethrown=function(){return Ge[this.ptr+13>>0]!=0},this.init=function(f,v){this.set_adjusted_ptr(0),this.set_type(f),this.set_destructor(v),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var f=ue[this.ptr>>2];ue[this.ptr>>2]=f+1},this.release_ref=function(){var f=ue[this.ptr>>2];return ue[this.ptr>>2]=f-1,f===1},this.set_adjusted_ptr=function(f){ne[this.ptr+16>>2]=f},this.get_adjusted_ptr=function(){return ne[this.ptr+16>>2]},this.get_exception_ptr=function(){var f=en(this.get_type());if(f)return ne[this.excPtr>>2];var v=this.get_adjusted_ptr();return v!==0?v:this.excPtr}}function ar(u,f,v){var w=new yr(u);throw w.init(f,v),u}var At={};function xr(u){for(;u.length;){var f=u.pop(),v=u.pop();v(f)}}function _t(u){return this.fromWireType(ue[u>>2])}var ke={},De={},ge={},Ne=48,tt=57;function st(u){if(u===void 0)return"_unknown";u=u.replace(/[^a-zA-Z0-9_]/g,"$");var f=u.charCodeAt(0);return f>=Ne&&f<=tt?"_"+u:u}function _r(u,f){return u=st(u),new Function("body","return function "+u+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(f)}function Gt(u,f){var v=_r(f,function(w){this.name=f,this.message=w;var C=new Error(w).stack;C!==void 0&&(this.stack=this.toString()+` +`+C.replace(/^Error(:[^\n]*)?\n/,""))});return v.prototype=Object.create(u.prototype),v.prototype.constructor=v,v.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},v}var It=void 0;function mt(u){throw new It(u)}function He(u,f,v){u.forEach(function(A){ge[A]=f});function w(A){var x=v(A);x.length!==u.length&&mt("Mismatched type converter count");for(var j=0;j{De.hasOwnProperty(A)?C[x]=De[A]:(F.push(A),ke.hasOwnProperty(A)||(ke[A]=[]),ke[A].push(()=>{C[x]=De[A],++k,k===F.length&&w(C)}))}),F.length===0&&w(C)}function jt(u){var f=At[u];delete At[u];var v=f.rawConstructor,w=f.rawDestructor,C=f.fields,F=C.map(k=>k.getterReturnType).concat(C.map(k=>k.setterArgumentType));He([u],F,k=>{var A={};return C.forEach((x,j)=>{var G=x.fieldName,J=k[j],K=x.getter,s=x.getterContext,a=k[j+C.length],d=x.setter,b=x.setterContext;A[G]={read:T=>J.fromWireType(K(s,T)),write:(T,O)=>{var D=[];d(b,T,a.toWireType(D,O)),xr(D)}}}),[{name:f.name,fromWireType:function(x){var j={};for(var G in A)j[G]=A[G].read(x);return w(x),j},toWireType:function(x,j){for(var G in A)if(!(G in j))throw new TypeError('Missing field: "'+G+'"');var J=v();for(G in A)A[G].write(J,j[G]);return x!==null&&x.push(w,J),J},argPackAdvance:8,readValueFromPointer:_t,destructorFunction:w}]})}function Me(u,f,v,w,C){}function Le(u){switch(u){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+u)}}function $t(){for(var u=new Array(256),f=0;f<256;++f)u[f]=String.fromCharCode(f);Rt=u}var Rt=void 0;function Ae(u){for(var f="",v=u;me[v];)f+=Rt[me[v++]];return f}var Et=void 0;function Y(u){throw new Et(u)}function de(u,f,v={}){if(!("argPackAdvance"in f))throw new TypeError("registerType registeredInstance requires argPackAdvance");var w=f.name;if(u||Y('type "'+w+'" must have a positive integer typeid pointer'),De.hasOwnProperty(u)){if(v.ignoreDuplicateRegistrations)return;Y("Cannot register type '"+w+"' twice")}if(De[u]=f,delete ge[u],ke.hasOwnProperty(u)){var C=ke[u];delete ke[u],C.forEach(F=>F())}}function re(u,f,v,w,C){var F=Le(v);f=Ae(f),de(u,{name:f,fromWireType:function(k){return!!k},toWireType:function(k,A){return A?w:C},argPackAdvance:8,readValueFromPointer:function(k){var A;if(v===1)A=Ge;else if(v===2)A=le;else if(v===4)A=ue;else throw new TypeError("Unknown boolean type size: "+f);return this.fromWireType(A[k>>F])},destructorFunction:null})}function Q(u){if(!(this instanceof wt)||!(u instanceof wt))return!1;for(var f=this.$$.ptrType.registeredClass,v=this.$$.ptr,w=u.$$.ptrType.registeredClass,C=u.$$.ptr;f.baseClass;)v=f.upcast(v),f=f.baseClass;for(;w.baseClass;)C=w.upcast(C),w=w.baseClass;return f===w&&v===C}function ze(u){return{count:u.count,deleteScheduled:u.deleteScheduled,preservePointerOnDelete:u.preservePointerOnDelete,ptr:u.ptr,ptrType:u.ptrType,smartPtr:u.smartPtr,smartPtrType:u.smartPtrType}}function ut(u){function f(v){return v.$$.ptrType.registeredClass.name}Y(f(u)+" instance already deleted")}var mr=!1;function sr(u){}function St(u){u.smartPtr?u.smartPtrType.rawDestructor(u.smartPtr):u.ptrType.registeredClass.rawDestructor(u.ptr)}function Jt(u){u.count.value-=1;var f=u.count.value===0;f&&St(u)}function ur(u,f,v){if(f===v)return u;if(v.baseClass===void 0)return null;var w=ur(u,f,v.baseClass);return w===null?null:v.downcast(w)}var Ee={};function bt(){return Object.keys(Ke).length}function ae(){var u=[];for(var f in Ke)Ke.hasOwnProperty(f)&&u.push(Ke[f]);return u}var Ue=[];function br(){for(;Ue.length;){var u=Ue.pop();u.$$.deleteScheduled=!1,u.delete()}}var ft=void 0;function Ft(u){ft=u,Ue.length&&ft&&ft(br)}function ct(){r.getInheritedInstanceCount=bt,r.getLiveInheritedInstances=ae,r.flushPendingDeletes=br,r.setDelayFunction=Ft}var Ke={};function Or(u,f){for(f===void 0&&Y("ptr should not be undefined");u.baseClass;)f=u.upcast(f),u=u.baseClass;return f}function Xt(u,f){return f=Or(u,f),Ke[f]}function lt(u,f){(!f.ptrType||!f.ptr)&&mt("makeClassHandle requires ptr and ptrType");var v=!!f.smartPtrType,w=!!f.smartPtr;return v!==w&&mt("Both smartPtrType and smartPtr must be specified"),f.count={value:1},dt(Object.create(u,{$$:{value:f}}))}function Ur(u){var f=this.getPointee(u);if(!f)return this.destructor(u),null;var v=Xt(this.registeredClass,f);if(v!==void 0){if(v.$$.count.value===0)return v.$$.ptr=f,v.$$.smartPtr=u,v.clone();var w=v.clone();return this.destructor(u),w}function C(){return this.isSmartPointer?lt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:f,smartPtrType:this,smartPtr:u}):lt(this.registeredClass.instancePrototype,{ptrType:this,ptr:u})}var F=this.registeredClass.getActualType(f),k=Ee[F];if(!k)return C.call(this);var A;this.isConst?A=k.constPointerType:A=k.pointerType;var x=ur(f,this.registeredClass,A.registeredClass);return x===null?C.call(this):this.isSmartPointer?lt(A.registeredClass.instancePrototype,{ptrType:A,ptr:x,smartPtrType:this,smartPtr:u}):lt(A.registeredClass.instancePrototype,{ptrType:A,ptr:x})}function dt(u){return typeof FinalizationRegistry>"u"?(dt=f=>f,u):(mr=new FinalizationRegistry(f=>{Jt(f.$$)}),dt=f=>{var v=f.$$,w=!!v.smartPtr;if(w){var C={$$:v};mr.register(f,C,f)}return f},sr=f=>mr.unregister(f),dt(u))}function fr(){if(this.$$.ptr||ut(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var u=dt(Object.create(Object.getPrototypeOf(this),{$$:{value:ze(this.$$)}}));return u.$$.count.value+=1,u.$$.deleteScheduled=!1,u}function Yt(){this.$$.ptr||ut(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Y("Object already scheduled for deletion"),sr(this),Jt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function pt(){return!this.$$.ptr}function wr(){return this.$$.ptr||ut(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Y("Object already scheduled for deletion"),Ue.push(this),Ue.length===1&&ft&&ft(br),this.$$.deleteScheduled=!0,this}function Kt(){wt.prototype.isAliasOf=Q,wt.prototype.clone=fr,wt.prototype.delete=Yt,wt.prototype.isDeleted=pt,wt.prototype.deleteLater=wr}function wt(){}function Ir(u,f,v){if(u[f].overloadTable===void 0){var w=u[f];u[f]=function(){return u[f].overloadTable.hasOwnProperty(arguments.length)||Y("Function '"+v+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+u[f].overloadTable+")!"),u[f].overloadTable[arguments.length].apply(this,arguments)},u[f].overloadTable=[],u[f].overloadTable[w.argCount]=w}}function Ve(u,f,v){r.hasOwnProperty(u)?((v===void 0||r[u].overloadTable!==void 0&&r[u].overloadTable[v]!==void 0)&&Y("Cannot register public name '"+u+"' twice"),Ir(r,u,u),r.hasOwnProperty(v)&&Y("Cannot register multiple overloads of a function with the same number of arguments ("+v+")!"),r[u].overloadTable[v]=f):(r[u]=f,v!==void 0&&(r[u].numArguments=v))}function vt(u,f,v,w,C,F,k,A){this.name=u,this.constructor=f,this.instancePrototype=v,this.rawDestructor=w,this.baseClass=C,this.getActualType=F,this.upcast=k,this.downcast=A,this.pureVirtualFunctions=[]}function cr(u,f,v){for(;f!==v;)f.upcast||Y("Expected null or instance of "+v.name+", got an instance of "+f.name),u=f.upcast(u),f=f.baseClass;return u}function lr(u,f){if(f===null)return this.isReference&&Y("null is not a valid "+this.name),0;f.$$||Y('Cannot pass "'+qe(f)+'" as a '+this.name),f.$$.ptr||Y("Cannot pass deleted object as a pointer of type "+this.name);var v=f.$$.ptrType.registeredClass,w=cr(f.$$.ptr,v,this.registeredClass);return w}function Pr(u,f){var v;if(f===null)return this.isReference&&Y("null is not a valid "+this.name),this.isSmartPointer?(v=this.rawConstructor(),u!==null&&u.push(this.rawDestructor,v),v):0;f.$$||Y('Cannot pass "'+qe(f)+'" as a '+this.name),f.$$.ptr||Y("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&f.$$.ptrType.isConst&&Y("Cannot convert argument of type "+(f.$$.smartPtrType?f.$$.smartPtrType.name:f.$$.ptrType.name)+" to parameter type "+this.name);var w=f.$$.ptrType.registeredClass;if(v=cr(f.$$.ptr,w,this.registeredClass),this.isSmartPointer)switch(f.$$.smartPtr===void 0&&Y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:f.$$.smartPtrType===this?v=f.$$.smartPtr:Y("Cannot convert argument of type "+(f.$$.smartPtrType?f.$$.smartPtrType.name:f.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:v=f.$$.smartPtr;break;case 2:if(f.$$.smartPtrType===this)v=f.$$.smartPtr;else{var C=f.clone();v=this.rawShare(v,nt.toHandle(function(){C.delete()})),u!==null&&u.push(this.rawDestructor,v)}break;default:Y("Unsupporting sharing policy")}return v}function kt(u,f){if(f===null)return this.isReference&&Y("null is not a valid "+this.name),0;f.$$||Y('Cannot pass "'+qe(f)+'" as a '+this.name),f.$$.ptr||Y("Cannot pass deleted object as a pointer of type "+this.name),f.$$.ptrType.isConst&&Y("Cannot convert argument of type "+f.$$.ptrType.name+" to parameter type "+this.name);var v=f.$$.ptrType.registeredClass,w=cr(f.$$.ptr,v,this.registeredClass);return w}function sn(u){return this.rawGetPointee&&(u=this.rawGetPointee(u)),u}function un(u){this.rawDestructor&&this.rawDestructor(u)}function fn(u){u!==null&&u.delete()}function cn(){ht.prototype.getPointee=sn,ht.prototype.destructor=un,ht.prototype.argPackAdvance=8,ht.prototype.readValueFromPointer=_t,ht.prototype.deleteObject=fn,ht.prototype.fromWireType=Ur}function ht(u,f,v,w,C,F,k,A,x,j,G){this.name=u,this.registeredClass=f,this.isReference=v,this.isConst=w,this.isSmartPointer=C,this.pointeeType=F,this.sharingPolicy=k,this.rawGetPointee=A,this.rawConstructor=x,this.rawShare=j,this.rawDestructor=G,!C&&f.baseClass===void 0?w?(this.toWireType=lr,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null):this.toWireType=Pr}function gt(u,f,v){r.hasOwnProperty(u)||mt("Replacing nonexistant public symbol"),r[u].overloadTable!==void 0&&v!==void 0?r[u].overloadTable[v]=f:(r[u]=f,r[u].argCount=v)}function rt(u,f,v){var w=r["dynCall_"+u];return v&&v.length?w.apply(null,[f].concat(v)):w.call(null,f)}var Be=[];function jr(u){var f=Be[u];return f||(u>=Be.length&&(Be.length=u+1),Be[u]=f=Bt.get(u)),f}function Wt(u,f,v){if(u.includes("j"))return rt(u,f,v);var w=jr(f).apply(null,v);return w}function Qt(u,f){var v=[];return function(){return v.length=0,Object.assign(v,arguments),Wt(u,f,v)}}function Se(u,f){u=Ae(u);function v(){return u.includes("j")?Qt(u,f):jr(f)}var w=v();return typeof w!="function"&&Y("unknown function pointer with signature "+u+": "+f),w}var Wr=void 0;function Qe(u){var f=Mt(u),v=Ae(f);return yt(f),v}function Ie(u,f){var v=[],w={};function C(F){if(!w[F]&&!De[F]){if(ge[F]){ge[F].forEach(C);return}v.push(F),w[F]=!0}}throw f.forEach(C),new Wr(u+": "+v.map(Qe).join([", "]))}function Tr(u,f,v,w,C,F,k,A,x,j,G,J,K){G=Ae(G),F=Se(C,F),A&&(A=Se(k,A)),j&&(j=Se(x,j)),K=Se(J,K);var s=st(G);Ve(s,function(){Ie("Cannot construct "+G+" due to unbound types",[w])}),He([u,f,v],w?[w]:[],function(a){a=a[0];var d,b;w?(d=a.registeredClass,b=d.instancePrototype):b=wt.prototype;var T=_r(s,function(){if(Object.getPrototypeOf(this)!==O)throw new Et("Use 'new' to construct "+G);if(D.constructor_body===void 0)throw new Et(G+" has no accessible constructor");var e=D.constructor_body[arguments.length];if(e===void 0)throw new Et("Tried to invoke ctor of "+G+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(D.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)}),O=Object.create(b,{constructor:{value:T}});T.prototype=O;var D=new vt(G,T,O,K,d,F,A,j),E=new ht(G,D,!0,!1,!1),n=new ht(G+"*",D,!1,!1,!1),i=new ht(G+" const*",D,!1,!0,!1);return Ee[u]={pointerType:n,constPointerType:i},gt(s,T),[E,n,i]})}function Ht(u,f){for(var v=[],w=0;w>2]);return v}function Ze(u,f){if(!(u instanceof Function))throw new TypeError("new_ called with constructor type "+typeof u+" which is not a function");var v=_r(u.name||"unknownFunctionName",function(){});v.prototype=u.prototype;var w=new v,C=u.apply(w,f);return C instanceof Object?C:w}function Zt(u,f,v,w,C){var F=f.length;F<2&&Y("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var k=f[1]!==null&&v!==null,A=!1,x=1;x0?", ":"")+J),K+=(j?"var rv = ":"")+"invoker(fn"+(J.length>0?", ":"")+J+`); +`,A)K+=`runDestructors(destructors); +`;else for(var x=k?1:2;x0);var k=Ht(f,v);C=Se(w,C),He([],[u],function(A){A=A[0];var x="constructor "+A.name;if(A.registeredClass.constructor_body===void 0&&(A.registeredClass.constructor_body=[]),A.registeredClass.constructor_body[f-1]!==void 0)throw new Et("Cannot register multiple constructors with identical number of parameters ("+(f-1)+") for class '"+A.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return A.registeredClass.constructor_body[f-1]=()=>{Ie("Cannot construct "+A.name+" due to unbound types",k)},He([],k,function(j){return j.splice(1,0,null),A.registeredClass.constructor_body[f-1]=Zt(x,j,null,C,F),[]}),[]})}function Mr(u,f,v,w,C,F,k,A){var x=Ht(v,w);f=Ae(f),F=Se(C,F),He([],[u],function(j){j=j[0];var G=j.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]),A&&j.registeredClass.pureVirtualFunctions.push(f);function J(){Ie("Cannot call "+G+" due to unbound types",x)}var K=j.registeredClass.instancePrototype,s=K[f];return s===void 0||s.overloadTable===void 0&&s.className!==j.name&&s.argCount===v-2?(J.argCount=v-2,J.className=j.name,K[f]=J):(Ir(K,f,G),K[f].overloadTable[v-2]=J),He([],x,function(a){var d=Zt(G,a,j,F,k);return K[f].overloadTable===void 0?(d.argCount=v-2,K[f]=d):K[f].overloadTable[v-2]=d,[]}),[]})}var dr=[],be=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function er(u){u>4&&--be[u].refcount===0&&(be[u]=void 0,dr.push(u))}function je(){for(var u=0,f=5;f(u||Y("Cannot use deleted val. handle = "+u),be[u].value),toHandle:u=>{switch(u){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var f=dr.length?dr.pop():be.length;return be[f]={refcount:1,value:u},f}}}};function ln(u,f){f=Ae(f),de(u,{name:f,fromWireType:function(v){var w=nt.toValue(v);return er(v),w},toWireType:function(v,w){return nt.toHandle(w)},argPackAdvance:8,readValueFromPointer:_t,destructorFunction:null})}function qe(u){if(u===null)return"null";var f=typeof u;return f==="object"||f==="array"||f==="function"?u.toString():""+u}function Pt(u,f){switch(f){case 2:return function(v){return this.fromWireType(oe[v>>2])};case 3:return function(v){return this.fromWireType(ie[v>>3])};default:throw new TypeError("Unknown float type: "+u)}}function Cr(u,f,v){var w=Le(v);f=Ae(f),de(u,{name:f,fromWireType:function(C){return C},toWireType:function(C,F){return F},argPackAdvance:8,readValueFromPointer:Pt(f,w),destructorFunction:null})}function tr(u,f,v,w,C,F){var k=Ht(f,v);u=Ae(u),C=Se(w,C),Ve(u,function(){Ie("Cannot call "+u+" due to unbound types",k)},f-1),He([],k,function(A){var x=[A[0],null].concat(A.slice(1));return gt(u,Zt(u,x,null,C,F),f-1),[]})}function et(u,f,v){switch(f){case 0:return v?function(C){return Ge[C]}:function(C){return me[C]};case 1:return v?function(C){return le[C>>1]}:function(C){return ce[C>>1]};case 2:return v?function(C){return ue[C>>2]}:function(C){return ne[C>>2]};default:throw new TypeError("Unknown integer type: "+u)}}function Vr(u,f,v,w,C){f=Ae(f);var F=Le(v),k=J=>J;if(w===0){var A=32-8*v;k=J=>J<>>A}var x=f.includes("unsigned"),j=(J,K)=>{},G;x?G=function(J,K){return j(K,this.name),K>>>0}:G=function(J,K){return j(K,this.name),K},de(u,{name:f,fromWireType:k,toWireType:G,argPackAdvance:8,readValueFromPointer:et(f,F,w!==0),destructorFunction:null})}function dn(u,f,v){var w=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],C=w[f];function F(k){k=k>>2;var A=ne,x=A[k],j=A[k+1];return new C(ir,j,x)}v=Ae(v),de(u,{name:v,fromWireType:F,argPackAdvance:8,readValueFromPointer:F},{ignoreDuplicateRegistrations:!0})}function pn(u,f){f=Ae(f);var v=f==="std::string";de(u,{name:f,fromWireType:function(w){var C=ne[w>>2],F=w+4,k;if(v)for(var A=F,x=0;x<=C;++x){var j=F+x;if(x==C||me[j]==0){var G=j-A,J=xt(A,G);k===void 0?k=J:(k+="\0",k+=J),A=j+1}}else{for(var K=new Array(C),x=0;x>2]=F,v&&k)nr(C,x,F+1);else if(k)for(var j=0;j255&&(yt(x),Y("String has UTF-16 code units that do not fit in 8 bits")),me[x+j]=G}else for(var j=0;j>1,C=w+f/2;!(w>=C)&&ce[w];)++w;if(v=w<<1,v-u>32&&Br)return Br.decode(me.subarray(u,v));for(var F="",k=0;!(k>=f/2);++k){var A=le[u+k*2>>1];if(A==0)break;F+=String.fromCharCode(A)}return F}function Nr(u,f,v){if(v===void 0&&(v=2147483647),v<2)return 0;v-=2;for(var w=f,C=v>1]=k,f+=2}return le[f>>1]=0,f-w}function Ar(u){return u.length*2}function vn(u,f){for(var v=0,w="";!(v>=f/4);){var C=ue[u+v*4>>2];if(C==0)break;if(++v,C>=65536){var F=C-65536;w+=String.fromCharCode(55296|F>>10,56320|F&1023)}else w+=String.fromCharCode(C)}return w}function hn(u,f,v){if(v===void 0&&(v=2147483647),v<4)return 0;for(var w=f,C=w+v-4,F=0;F=55296&&k<=57343){var A=u.charCodeAt(++F);k=65536+((k&1023)<<10)|A&1023}if(ue[f>>2]=k,f+=4,f+4>C)break}return ue[f>>2]=0,f-w}function gn(u){for(var f=0,v=0;v=55296&&w<=57343&&++v,f+=4}return f}function yn(u,f,v){v=Ae(v);var w,C,F,k,A;f===2?(w=rr,C=Nr,k=Ar,F=()=>ce,A=1):f===4&&(w=vn,C=hn,k=gn,F=()=>ne,A=2),de(u,{name:v,fromWireType:function(x){for(var j=ne[x>>2],G=F(),J,K=x+4,s=0;s<=j;++s){var a=x+4+s*f;if(s==j||G[a>>A]==0){var d=a-K,b=w(K,d);J===void 0?J=b:(J+="\0",J+=b),K=a+f}}return yt(x),J},toWireType:function(x,j){typeof j!="string"&&Y("Cannot pass non-string to C++ string type "+v);var G=k(j),J=Dt(4+G+f);return ne[J>>2]=G>>A,C(j,J+4,G+f),x!==null&&x.push(yt,J),J},argPackAdvance:8,readValueFromPointer:_t,destructorFunction:function(x){yt(x)}})}function _n(u,f,v,w,C,F){At[u]={name:Ae(f),rawConstructor:Se(v,w),rawDestructor:Se(C,F),fields:[]}}function mn(u,f,v,w,C,F,k,A,x,j){At[u].fields.push({fieldName:Ae(f),getterReturnType:v,getter:Se(w,C),getterContext:F,setterArgumentType:k,setter:Se(A,x),setterContext:j})}function bn(u,f){f=Ae(f),de(u,{isVoid:!0,name:f,argPackAdvance:0,fromWireType:function(){},toWireType:function(v,w){}})}var zr={};function wn(u){var f=zr[u];return f===void 0?Ae(u):f}function qr(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Gr(u){return u===0?nt.toHandle(qr()):(u=wn(u),nt.toHandle(qr()[u]))}function Pn(u){u>4&&(be[u].refcount+=1)}function $r(u,f){var v=De[u];return v===void 0&&Y(f+" has unknown type "+Qe(u)),v}function Jr(u){for(var f="",v=0;vne,C="return function emval_allocator_"+u+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,v=0;v>2)], 'parameter "+v+`'); +var arg`+v+" = argType"+v+`.readValueFromPointer(args); +args += argType`+v+`['argPackAdvance']; +argTypes += 4; +`;return C+="var obj = new constructor("+f+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",C)($r,r,nt.toHandle,w)}var Xr={};function Rr(u,f,v,w){u=nt.toValue(u);var C=Xr[f];return C||(C=Jr(f),Xr[f]=C),C(u,v,w)}function Tn(u,f){u=$r(u,"_emval_take_value");var v=u.readValueFromPointer(f);return nt.toHandle(v)}function Yr(){ot("")}function Cn(u,f,v){me.copyWithin(u,f,f+v)}function Kr(){return 2147483648}function An(u){try{return se.grow(u-ir.byteLength+65535>>>16),he(se.buffer),1}catch{}}function $n(u){var f=me.length;u=u>>>0;var v=Kr();if(u>v)return!1;let w=(x,j)=>x+(j-x%j)%j;for(var C=1;C<=4;C*=2){var F=f*(1+.2/C);F=Math.min(F,u+100663296);var k=Math.min(v,w(Math.max(u,F),65536)),A=An(k);if(A)return!0}return!1}function Rn(u){var f=r["_"+u];return f}function En(u,f){Ge.set(u,f)}function Er(u,f,v,w,C){var F={string:a=>{var d=0;if(a!=null&&a!==0){var b=(a.length<<2)+1;d=Fr(b),nr(a,d,b)}return d},array:a=>{var d=Fr(a.length);return En(a,d),d}};function k(a){return f==="string"?xt(a):f==="boolean"?!!a:a}var A=Rn(u),x=[],j=0;if(w)for(var G=0;G0||(or(),Ct>0))return;function f(){pr||(pr=!0,r.calledRun=!0,!_e&&(hr(),L(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),kr()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),f()},1)):f()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return tn(),$.ready}})();c.exports=_})(li);var Yi=li.exports,Ki=zn(Yi);const Qi=new URL("/static/dv3d/assets/charlswasm_decode-484ovEoR.wasm",import.meta.url),Dn={codec:void 0,decoder:void 0,decodeConfig:{}};function Zi(c){return typeof c=="number"?Dn.codec.getExceptionMessage(c):c}function eo(c){if(Dn.decodeConfig=c,Dn.codec)return Promise.resolve();const y=Ki({locateFile:_=>_.endsWith(".wasm")?Qi.toString():_});return new Promise((_,R)=>{y.then($=>{Dn.codec=$,Dn.decoder=new $.JpegLSDecoder,_()},R)})}async function ti(c,y){try{await eo();const _=Dn.decoder;_.getEncodedBuffer(c.length).set(c),_.decode();const $=_.getFrameInfo(),r=_.getInterleaveMode(),L=_.getNearLossless(),U=_.getDecodedBuffer(),W={columns:$.width,rows:$.height,bitsPerPixel:$.bitsPerSample,signed:y.signed,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:$.componentCount},N=to($,U,y.signed),M={nearLossless:L,interleaveMode:r,frameInfo:$};return{...y,pixelData:N,imageInfo:W,encodeOptions:M,...M,...W}}catch(_){throw Zi(_)}}function to(c,y,_){return c.bitsPerSample>8?_?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):_?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}var di={exports:{}};(function(c,y){var _=(()=>{var R=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(R=R||__filename),function($){$=$||{};var r=typeof $<"u"?$:{},L,U;r.ready=new Promise(function(s,a){L=s,U=a});var W=Object.assign({},r),N="./this.program",M=typeof window=="object",z=typeof importScripts=="function",H=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",X="";function q(s){return r.locateFile?r.locateFile(s,X):X+s}var ee,fe,$e;if(H){var pe=rn,we=rn;z?X=we.dirname(X)+"/":X=__dirname+"/",ee=(s,a)=>(s=Pe(s)?new URL(s):we.normalize(s),pe.readFileSync(s,a?void 0:"utf8")),$e=s=>{var a=ee(s,!0);return a.buffer||(a=new Uint8Array(a)),a},fe=(s,a,d)=>{s=Pe(s)?new URL(s):we.normalize(s),pe.readFile(s,function(b,T){b?d(b):a(T.buffer)})},process.argv.length>1&&(N=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(s){if(!(s instanceof yr))throw s}),process.on("unhandledRejection",function(s){throw s}),r.inspect=function(){return"[Emscripten Module object]"}}else(M||z)&&(z?X=self.location.href:typeof document<"u"&&document.currentScript&&(X=document.currentScript.src),R&&(X=R),X.indexOf("blob:")!==0?X=X.substr(0,X.replace(/[?#].*/,"").lastIndexOf("/")+1):X="",ee=s=>{var a=new XMLHttpRequest;return a.open("GET",s,!1),a.send(null),a.responseText},z&&($e=s=>{var a=new XMLHttpRequest;return a.open("GET",s,!1),a.responseType="arraybuffer",a.send(null),new Uint8Array(a.response)}),fe=(s,a,d)=>{var b=new XMLHttpRequest;b.open("GET",s,!0),b.responseType="arraybuffer",b.onload=()=>{if(b.status==200||b.status==0&&b.response){a(b.response);return}d()},b.onerror=d,b.send(null)});var ye=r.print||console.log.bind(console),se=r.printErr||console.warn.bind(console);Object.assign(r,W),W=null,r.arguments&&r.arguments,r.thisProgram&&(N=r.thisProgram),r.quit&&r.quit;var _e;r.wasmBinary&&(_e=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&Ut("no native wasm support detected");var Re,it=!1;function Vt(s,a){s||Ut(a)}var xt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Tt(s,a,d){for(var b=a+d,T=a;s[T]&&!(T>=b);)++T;if(T-a>16&&s.buffer&&xt)return xt.decode(s.subarray(a,T));for(var O="";a>10,56320|i&1023)}}return O}function nr(s,a){return s?Tt(ce,s,a):""}function vr(s,a,d,b){if(!(b>0))return 0;for(var T=d,O=d+b-1,D=0;D=55296&&E<=57343){var n=s.charCodeAt(++D);E=65536+((E&1023)<<10)|n&1023}if(E<=127){if(d>=O)break;a[d++]=E}else if(E<=2047){if(d+1>=O)break;a[d++]=192|E>>6,a[d++]=128|E&63}else if(E<=65535){if(d+2>=O)break;a[d++]=224|E>>12,a[d++]=128|E>>6&63,a[d++]=128|E&63}else{if(d+3>=O)break;a[d++]=240|E>>18,a[d++]=128|E>>12&63,a[d++]=128|E>>6&63,a[d++]=128|E&63}}return a[d]=0,d-T}function ir(s,a,d){return vr(s,ce,a,d)}function Ge(s){for(var a=0,d=0;d=55296&&b<=57343?(a+=4,++d):a+=3}return a}var me,le,ce,ue,ne,oe,ie,he,Bt;function Nt(s){me=s,r.HEAP8=le=new Int8Array(s),r.HEAP16=ue=new Int16Array(s),r.HEAP32=oe=new Int32Array(s),r.HEAPU8=ce=new Uint8Array(s),r.HEAPU16=ne=new Uint16Array(s),r.HEAPU32=ie=new Uint32Array(s),r.HEAPF32=he=new Float32Array(s),r.HEAPF64=Bt=new Float64Array(s)}r.INITIAL_MEMORY;var zt,qt=[],or=[],hr=[];function kr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)an(r.preRun.shift());ar(qt)}function nn(){ar(or)}function on(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Je(r.postRun.shift());ar(hr)}function an(s){qt.unshift(s)}function Ct(s){or.unshift(s)}function Je(s){hr.unshift(s)}var Xe=0,Ye=null;function ot(s){Xe++,r.monitorRunDependencies&&r.monitorRunDependencies(Xe)}function Ot(s){if(Xe--,r.monitorRunDependencies&&r.monitorRunDependencies(Xe),Xe==0&&Ye){var a=Ye;Ye=null,a()}}function Ut(s){r.onAbort&&r.onAbort(s),s="Aborted("+s+")",se(s),it=!0,s+=". Build with -sASSERTIONS for more info.";var a=new WebAssembly.RuntimeError(s);throw U(a),a}var at="data:application/octet-stream;base64,";function Te(s){return s.startsWith(at)}function Pe(s){return s.startsWith("file://")}var Ce;Ce="openjpegwasm_decode.wasm",Te(Ce)||(Ce=q(Ce));function Fe(s){try{if(s==Ce&&_e)return new Uint8Array(_e);if($e)return $e(s);throw"both async and sync fetching of the wasm failed"}catch(a){Ut(a)}}function Dr(){if(!_e&&(M||z)){if(typeof fetch=="function"&&!Pe(Ce))return fetch(Ce,{credentials:"same-origin"}).then(function(s){if(!s.ok)throw"failed to load wasm binary file at '"+Ce+"'";return s.arrayBuffer()}).catch(function(){return Fe(Ce)});if(fe)return new Promise(function(s,a){fe(Ce,function(d){s(new Uint8Array(d))},a)})}return Promise.resolve().then(function(){return Fe(Ce)})}function gr(){var s={a:w};function a(D,E){var n=D.exports;r.asm=n,Re=r.asm.E,Nt(Re.buffer),zt=r.asm.G,Ct(r.asm.F),Ot()}ot();function d(D){a(D.instance)}function b(D){return Dr().then(function(E){return WebAssembly.instantiate(E,s)}).then(function(E){return E}).then(D,function(E){se("failed to asynchronously prepare wasm: "+E),Ut(E)})}function T(){return!_e&&typeof WebAssembly.instantiateStreaming=="function"&&!Te(Ce)&&!Pe(Ce)&&!H&&typeof fetch=="function"?fetch(Ce,{credentials:"same-origin"}).then(function(D){var E=WebAssembly.instantiateStreaming(D,s);return E.then(d,function(n){return se("wasm streaming compile failed: "+n),se("falling back to ArrayBuffer instantiation"),b(d)})}):b(d)}if(r.instantiateWasm)try{var O=r.instantiateWasm(s,a);return O}catch(D){se("Module.instantiateWasm callback failed with error: "+D),U(D)}return T().catch(U),{}}function yr(s){this.name="ExitStatus",this.message="Program terminated with exit("+s+")",this.status=s}function ar(s){for(;s.length>0;)s.shift()(r)}function At(s){this.excPtr=s,this.ptr=s-24,this.set_type=function(a){ie[this.ptr+4>>2]=a},this.get_type=function(){return ie[this.ptr+4>>2]},this.set_destructor=function(a){ie[this.ptr+8>>2]=a},this.get_destructor=function(){return ie[this.ptr+8>>2]},this.set_refcount=function(a){oe[this.ptr>>2]=a},this.set_caught=function(a){a=a?1:0,le[this.ptr+12>>0]=a},this.get_caught=function(){return le[this.ptr+12>>0]!=0},this.set_rethrown=function(a){a=a?1:0,le[this.ptr+13>>0]=a},this.get_rethrown=function(){return le[this.ptr+13>>0]!=0},this.init=function(a,d){this.set_adjusted_ptr(0),this.set_type(a),this.set_destructor(d),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var a=oe[this.ptr>>2];oe[this.ptr>>2]=a+1},this.release_ref=function(){var a=oe[this.ptr>>2];return oe[this.ptr>>2]=a-1,a===1},this.set_adjusted_ptr=function(a){ie[this.ptr+16>>2]=a},this.get_adjusted_ptr=function(){return ie[this.ptr+16>>2]},this.get_exception_ptr=function(){var a=G(this.get_type());if(a)return ie[this.excPtr>>2];var d=this.get_adjusted_ptr();return d!==0?d:this.excPtr}}function xr(s,a,d){var b=new At(s);throw b.init(a,d),s}var _t={};function ke(s){for(;s.length;){var a=s.pop(),d=s.pop();d(a)}}function De(s){return this.fromWireType(oe[s>>2])}var ge={},Ne={},tt={},st=48,_r=57;function Gt(s){if(s===void 0)return"_unknown";s=s.replace(/[^a-zA-Z0-9_]/g,"$");var a=s.charCodeAt(0);return a>=st&&a<=_r?"_"+s:s}function It(s,a){return s=Gt(s),new Function("body","return function "+s+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(a)}function mt(s,a){var d=It(a,function(b){this.name=a,this.message=b;var T=new Error(b).stack;T!==void 0&&(this.stack=this.toString()+` +`+T.replace(/^Error(:[^\n]*)?\n/,""))});return d.prototype=Object.create(s.prototype),d.prototype.constructor=d,d.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},d}var He=void 0;function jt(s){throw new He(s)}function Me(s,a,d){s.forEach(function(E){tt[E]=a});function b(E){var n=d(E);n.length!==s.length&&jt("Mismatched type converter count");for(var i=0;i{Ne.hasOwnProperty(E)?T[n]=Ne[E]:(O.push(E),ge.hasOwnProperty(E)||(ge[E]=[]),ge[E].push(()=>{T[n]=Ne[E],++D,D===O.length&&b(T)}))}),O.length===0&&b(T)}function Le(s){var a=_t[s];delete _t[s];var d=a.rawConstructor,b=a.rawDestructor,T=a.fields,O=T.map(D=>D.getterReturnType).concat(T.map(D=>D.setterArgumentType));Me([s],O,D=>{var E={};return T.forEach((n,i)=>{var e=n.fieldName,t=D[i],o=n.getter,l=n.getterContext,p=D[i+T.length],h=n.setter,g=n.setterContext;E[e]={read:m=>t.fromWireType(o(l,m)),write:(m,P)=>{var S=[];h(g,m,p.toWireType(S,P)),ke(S)}}}),[{name:a.name,fromWireType:function(n){var i={};for(var e in E)i[e]=E[e].read(n);return b(n),i},toWireType:function(n,i){for(var e in E)if(!(e in i))throw new TypeError('Missing field: "'+e+'"');var t=d();for(e in E)E[e].write(t,i[e]);return n!==null&&n.push(b,t),t},argPackAdvance:8,readValueFromPointer:De,destructorFunction:b}]})}function $t(s,a,d,b,T){}function Rt(s){switch(s){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+s)}}function Ae(){for(var s=new Array(256),a=0;a<256;++a)s[a]=String.fromCharCode(a);Et=s}var Et=void 0;function Y(s){for(var a="",d=s;ce[d];)a+=Et[ce[d++]];return a}var de=void 0;function re(s){throw new de(s)}function Q(s,a,d={}){if(!("argPackAdvance"in a))throw new TypeError("registerType registeredInstance requires argPackAdvance");var b=a.name;if(s||re('type "'+b+'" must have a positive integer typeid pointer'),Ne.hasOwnProperty(s)){if(d.ignoreDuplicateRegistrations)return;re("Cannot register type '"+b+"' twice")}if(Ne[s]=a,delete tt[s],ge.hasOwnProperty(s)){var T=ge[s];delete ge[s],T.forEach(O=>O())}}function ze(s,a,d,b,T){var O=Rt(d);a=Y(a),Q(s,{name:a,fromWireType:function(D){return!!D},toWireType:function(D,E){return E?b:T},argPackAdvance:8,readValueFromPointer:function(D){var E;if(d===1)E=le;else if(d===2)E=ue;else if(d===4)E=oe;else throw new TypeError("Unknown boolean type size: "+a);return this.fromWireType(E[D>>O])},destructorFunction:null})}function ut(s){if(!(this instanceof Ve)||!(s instanceof Ve))return!1;for(var a=this.$$.ptrType.registeredClass,d=this.$$.ptr,b=s.$$.ptrType.registeredClass,T=s.$$.ptr;a.baseClass;)d=a.upcast(d),a=a.baseClass;for(;b.baseClass;)T=b.upcast(T),b=b.baseClass;return a===b&&d===T}function mr(s){return{count:s.count,deleteScheduled:s.deleteScheduled,preservePointerOnDelete:s.preservePointerOnDelete,ptr:s.ptr,ptrType:s.ptrType,smartPtr:s.smartPtr,smartPtrType:s.smartPtrType}}function sr(s){function a(d){return d.$$.ptrType.registeredClass.name}re(a(s)+" instance already deleted")}var St=!1;function Jt(s){}function ur(s){s.smartPtr?s.smartPtrType.rawDestructor(s.smartPtr):s.ptrType.registeredClass.rawDestructor(s.ptr)}function Ee(s){s.count.value-=1;var a=s.count.value===0;a&&ur(s)}function bt(s,a,d){if(a===d)return s;if(d.baseClass===void 0)return null;var b=bt(s,a,d.baseClass);return b===null?null:d.downcast(b)}var ae={};function Ue(){return Object.keys(Xt).length}function br(){var s=[];for(var a in Xt)Xt.hasOwnProperty(a)&&s.push(Xt[a]);return s}var ft=[];function Ft(){for(;ft.length;){var s=ft.pop();s.$$.deleteScheduled=!1,s.delete()}}var ct=void 0;function Ke(s){ct=s,ft.length&&ct&&ct(Ft)}function Or(){r.getInheritedInstanceCount=Ue,r.getLiveInheritedInstances=br,r.flushPendingDeletes=Ft,r.setDelayFunction=Ke}var Xt={};function lt(s,a){for(a===void 0&&re("ptr should not be undefined");s.baseClass;)a=s.upcast(a),s=s.baseClass;return a}function Ur(s,a){return a=lt(s,a),Xt[a]}function dt(s,a){(!a.ptrType||!a.ptr)&&jt("makeClassHandle requires ptr and ptrType");var d=!!a.smartPtrType,b=!!a.smartPtr;return d!==b&&jt("Both smartPtrType and smartPtr must be specified"),a.count={value:1},Yt(Object.create(s,{$$:{value:a}}))}function fr(s){var a=this.getPointee(s);if(!a)return this.destructor(s),null;var d=Ur(this.registeredClass,a);if(d!==void 0){if(d.$$.count.value===0)return d.$$.ptr=a,d.$$.smartPtr=s,d.clone();var b=d.clone();return this.destructor(s),b}function T(){return this.isSmartPointer?dt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:a,smartPtrType:this,smartPtr:s}):dt(this.registeredClass.instancePrototype,{ptrType:this,ptr:s})}var O=this.registeredClass.getActualType(a),D=ae[O];if(!D)return T.call(this);var E;this.isConst?E=D.constPointerType:E=D.pointerType;var n=bt(a,this.registeredClass,E.registeredClass);return n===null?T.call(this):this.isSmartPointer?dt(E.registeredClass.instancePrototype,{ptrType:E,ptr:n,smartPtrType:this,smartPtr:s}):dt(E.registeredClass.instancePrototype,{ptrType:E,ptr:n})}function Yt(s){return typeof FinalizationRegistry>"u"?(Yt=a=>a,s):(St=new FinalizationRegistry(a=>{Ee(a.$$)}),Yt=a=>{var d=a.$$,b=!!d.smartPtr;if(b){var T={$$:d};St.register(a,T,a)}return a},Jt=a=>St.unregister(a),Yt(s))}function pt(){if(this.$$.ptr||sr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var s=Yt(Object.create(Object.getPrototypeOf(this),{$$:{value:mr(this.$$)}}));return s.$$.count.value+=1,s.$$.deleteScheduled=!1,s}function wr(){this.$$.ptr||sr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&re("Object already scheduled for deletion"),Jt(this),Ee(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Kt(){return!this.$$.ptr}function wt(){return this.$$.ptr||sr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&re("Object already scheduled for deletion"),ft.push(this),ft.length===1&&ct&&ct(Ft),this.$$.deleteScheduled=!0,this}function Ir(){Ve.prototype.isAliasOf=ut,Ve.prototype.clone=pt,Ve.prototype.delete=wr,Ve.prototype.isDeleted=Kt,Ve.prototype.deleteLater=wt}function Ve(){}function vt(s,a,d){if(s[a].overloadTable===void 0){var b=s[a];s[a]=function(){return s[a].overloadTable.hasOwnProperty(arguments.length)||re("Function '"+d+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+s[a].overloadTable+")!"),s[a].overloadTable[arguments.length].apply(this,arguments)},s[a].overloadTable=[],s[a].overloadTable[b.argCount]=b}}function cr(s,a,d){r.hasOwnProperty(s)?(re("Cannot register public name '"+s+"' twice"),vt(r,s,s),r.hasOwnProperty(d)&&re("Cannot register multiple overloads of a function with the same number of arguments ("+d+")!"),r[s].overloadTable[d]=a):r[s]=a}function lr(s,a,d,b,T,O,D,E){this.name=s,this.constructor=a,this.instancePrototype=d,this.rawDestructor=b,this.baseClass=T,this.getActualType=O,this.upcast=D,this.downcast=E,this.pureVirtualFunctions=[]}function Pr(s,a,d){for(;a!==d;)a.upcast||re("Expected null or instance of "+d.name+", got an instance of "+a.name),s=a.upcast(s),a=a.baseClass;return s}function kt(s,a){if(a===null)return this.isReference&&re("null is not a valid "+this.name),0;a.$$||re('Cannot pass "'+Cr(a)+'" as a '+this.name),a.$$.ptr||re("Cannot pass deleted object as a pointer of type "+this.name);var d=a.$$.ptrType.registeredClass,b=Pr(a.$$.ptr,d,this.registeredClass);return b}function sn(s,a){var d;if(a===null)return this.isReference&&re("null is not a valid "+this.name),this.isSmartPointer?(d=this.rawConstructor(),s!==null&&s.push(this.rawDestructor,d),d):0;a.$$||re('Cannot pass "'+Cr(a)+'" as a '+this.name),a.$$.ptr||re("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&a.$$.ptrType.isConst&&re("Cannot convert argument of type "+(a.$$.smartPtrType?a.$$.smartPtrType.name:a.$$.ptrType.name)+" to parameter type "+this.name);var b=a.$$.ptrType.registeredClass;if(d=Pr(a.$$.ptr,b,this.registeredClass),this.isSmartPointer)switch(a.$$.smartPtr===void 0&&re("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:a.$$.smartPtrType===this?d=a.$$.smartPtr:re("Cannot convert argument of type "+(a.$$.smartPtrType?a.$$.smartPtrType.name:a.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:d=a.$$.smartPtr;break;case 2:if(a.$$.smartPtrType===this)d=a.$$.smartPtr;else{var T=a.clone();d=this.rawShare(d,qe.toHandle(function(){T.delete()})),s!==null&&s.push(this.rawDestructor,d)}break;default:re("Unsupporting sharing policy")}return d}function un(s,a){if(a===null)return this.isReference&&re("null is not a valid "+this.name),0;a.$$||re('Cannot pass "'+Cr(a)+'" as a '+this.name),a.$$.ptr||re("Cannot pass deleted object as a pointer of type "+this.name),a.$$.ptrType.isConst&&re("Cannot convert argument of type "+a.$$.ptrType.name+" to parameter type "+this.name);var d=a.$$.ptrType.registeredClass,b=Pr(a.$$.ptr,d,this.registeredClass);return b}function fn(s){return this.rawGetPointee&&(s=this.rawGetPointee(s)),s}function cn(s){this.rawDestructor&&this.rawDestructor(s)}function ht(s){s!==null&&s.delete()}function gt(){rt.prototype.getPointee=fn,rt.prototype.destructor=cn,rt.prototype.argPackAdvance=8,rt.prototype.readValueFromPointer=De,rt.prototype.deleteObject=ht,rt.prototype.fromWireType=fr}function rt(s,a,d,b,T,O,D,E,n,i,e){this.name=s,this.registeredClass=a,this.isReference=d,this.isConst=b,this.isSmartPointer=T,this.pointeeType=O,this.sharingPolicy=D,this.rawGetPointee=E,this.rawConstructor=n,this.rawShare=i,this.rawDestructor=e,!T&&a.baseClass===void 0?b?(this.toWireType=kt,this.destructorFunction=null):(this.toWireType=un,this.destructorFunction=null):this.toWireType=sn}function Be(s,a,d){r.hasOwnProperty(s)||jt("Replacing nonexistant public symbol"),r[s].overloadTable!==void 0&&d!==void 0||(r[s]=a,r[s].argCount=d)}function jr(s,a,d){var b=r["dynCall_"+s];return d&&d.length?b.apply(null,[a].concat(d)):b.call(null,a)}var Wt=[];function Qt(s){var a=Wt[s];return a||(s>=Wt.length&&(Wt.length=s+1),Wt[s]=a=zt.get(s)),a}function Se(s,a,d){if(s.includes("j"))return jr(s,a,d);var b=Qt(a).apply(null,d);return b}function Wr(s,a){var d=[];return function(){return d.length=0,Object.assign(d,arguments),Se(s,a,d)}}function Qe(s,a){s=Y(s);function d(){return s.includes("j")?Wr(s,a):Qt(a)}var b=d();return typeof b!="function"&&re("unknown function pointer with signature "+s+": "+a),b}var Ie=void 0;function Tr(s){var a=k(s),d=Y(a);return F(a),d}function Ht(s,a){var d=[],b={};function T(O){if(!b[O]&&!Ne[O]){if(tt[O]){tt[O].forEach(T);return}d.push(O),b[O]=!0}}throw a.forEach(T),new Ie(s+": "+d.map(Tr).join([", "]))}function Ze(s,a,d,b,T,O,D,E,n,i,e,t,o){e=Y(e),O=Qe(T,O),E&&(E=Qe(D,E)),i&&(i=Qe(n,i)),o=Qe(t,o);var l=Gt(e);cr(l,function(){Ht("Cannot construct "+e+" due to unbound types",[b])}),Me([s,a,d],b?[b]:[],function(p){p=p[0];var h,g;b?(h=p.registeredClass,g=h.instancePrototype):g=Ve.prototype;var m=It(l,function(){if(Object.getPrototypeOf(this)!==P)throw new de("Use 'new' to construct "+e);if(S.constructor_body===void 0)throw new de(e+" has no accessible constructor");var te=S.constructor_body[arguments.length];if(te===void 0)throw new de("Tried to invoke ctor of "+e+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(S.constructor_body).toString()+") parameters instead!");return te.apply(this,arguments)}),P=Object.create(g,{constructor:{value:m}});m.prototype=P;var S=new lr(e,m,P,o,h,O,E,i),I=new rt(e,S,!0,!1,!1),B=new rt(e+"*",S,!1,!1,!1),V=new rt(e+" const*",S,!1,!0,!1);return ae[s]={pointerType:B,constPointerType:V},Be(l,m),[I,B,V]})}function Zt(s,a){for(var d=[],b=0;b>2]);return d}function Hr(s,a){if(!(s instanceof Function))throw new TypeError("new_ called with constructor type "+typeof s+" which is not a function");var d=It(s.name||"unknownFunctionName",function(){});d.prototype=s.prototype;var b=new d,T=s.apply(b,a);return T instanceof Object?T:b}function Mr(s,a,d,b,T){var O=a.length;O<2&&re("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var D=a[1]!==null&&d!==null,E=!1,n=1;n0?", ":"")+t),o+=(i?"var rv = ":"")+"invoker(fn"+(t.length>0?", ":"")+t+`); +`,E)o+=`runDestructors(destructors); +`;else for(var n=D?1:2;n0);var D=Zt(a,d);T=Qe(b,T),Me([],[s],function(E){E=E[0];var n="constructor "+E.name;if(E.registeredClass.constructor_body===void 0&&(E.registeredClass.constructor_body=[]),E.registeredClass.constructor_body[a-1]!==void 0)throw new de("Cannot register multiple constructors with identical number of parameters ("+(a-1)+") for class '"+E.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return E.registeredClass.constructor_body[a-1]=()=>{Ht("Cannot construct "+E.name+" due to unbound types",D)},Me([],D,function(i){return i.splice(1,0,null),E.registeredClass.constructor_body[a-1]=Mr(n,i,null,T,O),[]}),[]})}function be(s,a,d,b,T,O,D,E){var n=Zt(d,b);a=Y(a),O=Qe(T,O),Me([],[s],function(i){i=i[0];var e=i.name+"."+a;a.startsWith("@@")&&(a=Symbol[a.substring(2)]),E&&i.registeredClass.pureVirtualFunctions.push(a);function t(){Ht("Cannot call "+e+" due to unbound types",n)}var o=i.registeredClass.instancePrototype,l=o[a];return l===void 0||l.overloadTable===void 0&&l.className!==i.name&&l.argCount===d-2?(t.argCount=d-2,t.className=i.name,o[a]=t):(vt(o,a,e),o[a].overloadTable[d-2]=t),Me([],n,function(p){var h=Mr(e,p,i,O,D);return o[a].overloadTable===void 0?(h.argCount=d-2,o[a]=h):o[a].overloadTable[d-2]=h,[]}),[]})}var er=[],je=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function xe(s){s>4&&--je[s].refcount===0&&(je[s]=void 0,er.push(s))}function Lr(){for(var s=0,a=5;a(s||re("Cannot use deleted val. handle = "+s),je[s].value),toHandle:s=>{switch(s){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var a=er.length?er.pop():je.length;return je[a]={refcount:1,value:s},a}}}};function Pt(s,a){a=Y(a),Q(s,{name:a,fromWireType:function(d){var b=qe.toValue(d);return xe(d),b},toWireType:function(d,b){return qe.toHandle(b)},argPackAdvance:8,readValueFromPointer:De,destructorFunction:null})}function Cr(s){if(s===null)return"null";var a=typeof s;return a==="object"||a==="array"||a==="function"?s.toString():""+s}function tr(s,a){switch(a){case 2:return function(d){return this.fromWireType(he[d>>2])};case 3:return function(d){return this.fromWireType(Bt[d>>3])};default:throw new TypeError("Unknown float type: "+s)}}function et(s,a,d){var b=Rt(d);a=Y(a),Q(s,{name:a,fromWireType:function(T){return T},toWireType:function(T,O){return O},argPackAdvance:8,readValueFromPointer:tr(a,b),destructorFunction:null})}function Vr(s,a,d){switch(a){case 0:return d?function(T){return le[T]}:function(T){return ce[T]};case 1:return d?function(T){return ue[T>>1]}:function(T){return ne[T>>1]};case 2:return d?function(T){return oe[T>>2]}:function(T){return ie[T>>2]};default:throw new TypeError("Unknown integer type: "+s)}}function dn(s,a,d,b,T){a=Y(a);var O=Rt(d),D=t=>t;if(b===0){var E=32-8*d;D=t=>t<>>E}var n=a.includes("unsigned"),i=(t,o)=>{},e;n?e=function(t,o){return i(o,this.name),o>>>0}:e=function(t,o){return i(o,this.name),o},Q(s,{name:a,fromWireType:D,toWireType:e,argPackAdvance:8,readValueFromPointer:Vr(a,O,b!==0),destructorFunction:null})}function pn(s,a,d){var b=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],T=b[a];function O(D){D=D>>2;var E=ie,n=E[D],i=E[D+1];return new T(me,i,n)}d=Y(d),Q(s,{name:d,fromWireType:O,argPackAdvance:8,readValueFromPointer:O},{ignoreDuplicateRegistrations:!0})}function Br(s,a){a=Y(a);var d=a==="std::string";Q(s,{name:a,fromWireType:function(b){var T=ie[b>>2],O=b+4,D;if(d)for(var E=O,n=0;n<=T;++n){var i=O+n;if(n==T||ce[i]==0){var e=i-E,t=nr(E,e);D===void 0?D=t:(D+="\0",D+=t),E=i+1}}else{for(var o=new Array(T),n=0;n>2]=O,d&&D)ir(T,n,O+1);else if(D)for(var i=0;i255&&(F(n),re("String has UTF-16 code units that do not fit in 8 bits")),ce[n+i]=e}else for(var i=0;i>1,T=b+a/2;!(b>=T)&&ne[b];)++b;if(d=b<<1,d-s>32&&rr)return rr.decode(ce.subarray(s,d));for(var O="",D=0;!(D>=a/2);++D){var E=ue[s+D*2>>1];if(E==0)break;O+=String.fromCharCode(E)}return O}function Ar(s,a,d){if(d===void 0&&(d=2147483647),d<2)return 0;d-=2;for(var b=a,T=d>1]=D,a+=2}return ue[a>>1]=0,a-b}function vn(s){return s.length*2}function hn(s,a){for(var d=0,b="";!(d>=a/4);){var T=oe[s+d*4>>2];if(T==0)break;if(++d,T>=65536){var O=T-65536;b+=String.fromCharCode(55296|O>>10,56320|O&1023)}else b+=String.fromCharCode(T)}return b}function gn(s,a,d){if(d===void 0&&(d=2147483647),d<4)return 0;for(var b=a,T=b+d-4,O=0;O=55296&&D<=57343){var E=s.charCodeAt(++O);D=65536+((D&1023)<<10)|E&1023}if(oe[a>>2]=D,a+=4,a+4>T)break}return oe[a>>2]=0,a-b}function yn(s){for(var a=0,d=0;d=55296&&b<=57343&&++d,a+=4}return a}function _n(s,a,d){d=Y(d);var b,T,O,D,E;a===2?(b=Nr,T=Ar,D=vn,O=()=>ne,E=1):a===4&&(b=hn,T=gn,D=yn,O=()=>ie,E=2),Q(s,{name:d,fromWireType:function(n){for(var i=ie[n>>2],e=O(),t,o=n+4,l=0;l<=i;++l){var p=n+4+l*a;if(l==i||e[p>>E]==0){var h=p-o,g=b(o,h);t===void 0?t=g:(t+="\0",t+=g),o=p+a}}return F(n),t},toWireType:function(n,i){typeof i!="string"&&re("Cannot pass non-string to C++ string type "+d);var e=D(i),t=C(4+e+a);return ie[t>>2]=e>>E,T(i,t+4,e+a),n!==null&&n.push(F,t),t},argPackAdvance:8,readValueFromPointer:De,destructorFunction:function(n){F(n)}})}function mn(s,a,d,b,T,O){_t[s]={name:Y(a),rawConstructor:Qe(d,b),rawDestructor:Qe(T,O),fields:[]}}function bn(s,a,d,b,T,O,D,E,n,i){_t[s].fields.push({fieldName:Y(a),getterReturnType:d,getter:Qe(b,T),getterContext:O,setterArgumentType:D,setter:Qe(E,n),setterContext:i})}function zr(s,a){a=Y(a),Q(s,{isVoid:!0,name:a,argPackAdvance:0,fromWireType:function(){},toWireType:function(d,b){}})}var wn={};function qr(s){var a=wn[s];return a===void 0?Y(s):a}function Gr(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Pn(s){return s===0?qe.toHandle(Gr()):(s=qr(s),qe.toHandle(Gr()[s]))}function $r(s){s>4&&(je[s].refcount+=1)}function Jr(s,a){var d=Ne[s];return d===void 0&&re(a+" has unknown type "+Tr(s)),d}function Xr(s){for(var a="",d=0;die,T="return function emval_allocator_"+s+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,d=0;d>2)], 'parameter "+d+`'); +var arg`+d+" = argType"+d+`.readValueFromPointer(args); +args += argType`+d+`['argPackAdvance']; +argTypes += 4; +`;return T+="var obj = new constructor("+a+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",T)(Jr,r,qe.toHandle,b)}var Rr={};function Tn(s,a,d,b){s=qe.toValue(s);var T=Rr[a];return T||(T=Xr(a),Rr[a]=T),T(s,d,b)}function Yr(s,a){s=Jr(s,"_emval_take_value");var d=s.readValueFromPointer(a);return qe.toHandle(d)}function Cn(){Ut("")}function Kr(){return 2147483648}function An(){return Kr()}function $n(s,a,d){ce.copyWithin(s,a,a+d)}function Rn(s){try{return Re.grow(s-me.byteLength+65535>>>16),Nt(Re.buffer),1}catch{}}function En(s){var a=ce.length;s=s>>>0;var d=Kr();if(s>d)return!1;let b=(n,i)=>n+(i-n%i)%i;for(var T=1;T<=4;T*=2){var O=a*(1+.2/T);O=Math.min(O,s+100663296);var D=Math.min(d,b(Math.max(s,O),65536)),E=Rn(D);if(E)return!0}return!1}var Er={};function Sr(){return N||"./this.program"}function Dt(){if(!Dt.strings){var s=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:s,_:Sr()};for(var d in Er)Er[d]===void 0?delete a[d]:a[d]=Er[d];var b=[];for(var d in a)b.push(d+"="+a[d]);Dt.strings=b}return Dt.strings}function Mt(s,a,d){for(var b=0;b>0]=s.charCodeAt(b);le[a>>0]=0}function yt(s,a){var d=0;return Dt().forEach(function(b,T){var O=a+d;ie[s+T*4>>2]=O,Mt(b,O),d+=b.length+1}),0}function Qr(s,a){var d=Dt();ie[s>>2]=d.length;var b=0;return d.forEach(function(T){b+=T.length+1}),ie[a>>2]=b,0}function Zr(s){return 52}function Fr(s,a,d,b,T){return 70}var en=[null,[],[]];function pr(s,a){var d=en[s];a===0||a===10?((s===1?ye:se)(Tt(d,0)),d.length=0):d.push(a)}function tn(s,a,d,b){for(var T=0,O=0;O>2],E=ie[a+4>>2];a+=8;for(var n=0;n>2]=T,0}function u(s){var a=r["_"+s];return a}function f(s,a){le.set(s,a)}function v(s,a,d,b,T){var O={string:p=>{var h=0;if(p!=null&&p!==0){var g=(p.length<<2)+1;h=j(g),ir(p,h,g)}return h},array:p=>{var h=j(p.length);return f(p,h),h}};function D(p){return a==="string"?nr(p):a==="boolean"?!!p:p}var E=u(s),n=[],i=0;if(b)for(var e=0;e0||(kr(),Xe>0))return;function a(){J||(J=!0,r.calledRun=!0,!it&&(nn(),L(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),on()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),a()},1)):a()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return K(),$.ready}})();c.exports=_})(di);var ro=di.exports,no=zn(ro);const io=new URL("/static/dv3d/assets/openjpegwasm_decode-C4nnCcr6.wasm",import.meta.url),On={codec:void 0,decoder:void 0,decodeConfig:{}};function oo(c){if(On.decodeConfig=c,On.codec)return Promise.resolve();const y=no({locateFile:_=>_.endsWith(".wasm")?io.toString():_});return new Promise((_,R)=>{y.then($=>{On.codec=$,On.decoder=new $.J2KDecoder,_()},R)})}async function ri(c,y){await oo();const _=On.decoder,R=_.getEncodedBuffer(c.length);R.set(c),_.decode();const $=_.getFrameInfo(),r=_.getDecodedBuffer();new Uint8Array(r.length).set(r);const U=`x: ${_.getImageOffset().x}, y: ${_.getImageOffset().y}`,W=_.getNumDecompositions(),N=_.getNumLayers(),M=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][_.getProgressionOrder()+1],z=_.getIsReversible(),H=`${_.getBlockDimensions().width} x ${_.getBlockDimensions().height}`,X=`${_.getTileSize().width} x ${_.getTileSize().height}`,q=`${_.getTileOffset().x}, ${_.getTileOffset().y}`,ee=_.getColorSpace(),fe=`${r.length.toLocaleString()} bytes`,$e=`${(r.length/R.length).toFixed(2)}:1`,pe={columns:$.width,rows:$.height,bitsPerPixel:$.bitsPerSample,signed:$.isSigned,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:$.componentCount},we=ao($,r),ye={imageOffset:U,numDecompositions:W,numLayers:N,progessionOrder:M,reversible:z,blockDimensions:H,tileSize:X,tileOffset:q,colorTransform:ee,decodedSize:fe,compressionRatio:$e};return{...y,pixelData:we,imageInfo:pe,encodeOptions:ye,...ye,...pe}}function ao(c,y){return c.bitsPerSample>8?c.isSigned?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):c.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}var pi={exports:{}};(function(c,y){var _=(()=>{var R=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(R=R||__filename),function(r){r=r||{};var r=typeof r<"u"?r:{},L,U;r.ready=new Promise(function(n,i){L=n,U=i});var W=Object.assign({},r),N=typeof window=="object",M=typeof importScripts=="function",z=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",H="";function X(n){return r.locateFile?r.locateFile(n,H):H+n}var q,ee,fe;if(z){var $e=rn,pe=rn;M?H=pe.dirname(H)+"/":H=__dirname+"/",q=(n,i)=>(n=Te(n)?new URL(n):pe.normalize(n),$e.readFileSync(n,i?void 0:"utf8")),fe=n=>{var i=q(n,!0);return i.buffer||(i=new Uint8Array(i)),i},ee=(n,i,e)=>{n=Te(n)?new URL(n):pe.normalize(n),$e.readFile(n,function(t,o){t?e(t):i(o.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(n){if(!(n instanceof gr))throw n}),process.on("unhandledRejection",function(n){throw n}),r.inspect=function(){return"[Emscripten Module object]"}}else(N||M)&&(M?H=self.location.href:typeof document<"u"&&document.currentScript&&(H=document.currentScript.src),R&&(H=R),H.indexOf("blob:")!==0?H=H.substr(0,H.replace(/[?#].*/,"").lastIndexOf("/")+1):H="",q=n=>{var i=new XMLHttpRequest;return i.open("GET",n,!1),i.send(null),i.responseText},M&&(fe=n=>{var i=new XMLHttpRequest;return i.open("GET",n,!1),i.responseType="arraybuffer",i.send(null),new Uint8Array(i.response)}),ee=(n,i,e)=>{var t=new XMLHttpRequest;t.open("GET",n,!0),t.responseType="arraybuffer",t.onload=()=>{if(t.status==200||t.status==0&&t.response){i(t.response);return}e()},t.onerror=e,t.send(null)});var we=r.print||console.log.bind(console),ye=r.printErr||console.warn.bind(console);Object.assign(r,W),W=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit;var se;r.wasmBinary&&(se=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&Ot("no native wasm support detected");var _e,Re=!1;function it(n,i){n||Ot(i)}var Vt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function xt(n,i,e){for(var t=i+e,o=i;n[o]&&!(o>=t);)++o;if(o-i>16&&n.buffer&&Vt)return Vt.decode(n.subarray(i,o));for(var l="";i>10,56320|m&1023)}}return l}function Tt(n,i){return n?xt(le,n,i):""}function nr(n,i,e,t){if(!(t>0))return 0;for(var o=e,l=e+t-1,p=0;p=55296&&h<=57343){var g=n.charCodeAt(++p);h=65536+((h&1023)<<10)|g&1023}if(h<=127){if(e>=l)break;i[e++]=h}else if(h<=2047){if(e+1>=l)break;i[e++]=192|h>>6,i[e++]=128|h&63}else if(h<=65535){if(e+2>=l)break;i[e++]=224|h>>12,i[e++]=128|h>>6&63,i[e++]=128|h&63}else{if(e+3>=l)break;i[e++]=240|h>>18,i[e++]=128|h>>12&63,i[e++]=128|h>>6&63,i[e++]=128|h&63}}return i[e]=0,e-o}function vr(n,i,e){return nr(n,le,i,e)}function ir(n){for(var i=0,e=0;e=55296&&t<=57343?(i+=4,++e):i+=3}return i}var Ge,me,le,ce,ue,ne,oe,ie,he;function Bt(n){Ge=n,r.HEAP8=me=new Int8Array(n),r.HEAP16=ce=new Int16Array(n),r.HEAP32=ne=new Int32Array(n),r.HEAPU8=le=new Uint8Array(n),r.HEAPU16=ue=new Uint16Array(n),r.HEAPU32=oe=new Uint32Array(n),r.HEAPF32=ie=new Float32Array(n),r.HEAPF64=he=new Float64Array(n)}r.INITIAL_MEMORY;var Nt,zt=[],qt=[],or=[];function hr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)on(r.preRun.shift());yr(zt)}function kr(){yr(qt)}function nn(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Ct(r.postRun.shift());yr(or)}function on(n){zt.unshift(n)}function an(n){qt.unshift(n)}function Ct(n){or.unshift(n)}var Je=0,Xe=null;function Ye(n){Je++,r.monitorRunDependencies&&r.monitorRunDependencies(Je)}function ot(n){if(Je--,r.monitorRunDependencies&&r.monitorRunDependencies(Je),Je==0&&Xe){var i=Xe;Xe=null,i()}}function Ot(n){r.onAbort&&r.onAbort(n),n="Aborted("+n+")",ye(n),Re=!0,n+=". Build with -sASSERTIONS for more info.";var i=new WebAssembly.RuntimeError(n);throw U(i),i}var Ut="data:application/octet-stream;base64,";function at(n){return n.startsWith(Ut)}function Te(n){return n.startsWith("file://")}var Pe;Pe="openjphjs.wasm",at(Pe)||(Pe=X(Pe));function Ce(n){try{if(n==Pe&&se)return new Uint8Array(se);if(fe)return fe(n);throw"both async and sync fetching of the wasm failed"}catch(i){Ot(i)}}function Fe(){if(!se&&(N||M)){if(typeof fetch=="function"&&!Te(Pe))return fetch(Pe,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Pe+"'";return n.arrayBuffer()}).catch(function(){return Ce(Pe)});if(ee)return new Promise(function(n,i){ee(Pe,function(e){n(new Uint8Array(e))},i)})}return Promise.resolve().then(function(){return Ce(Pe)})}function Dr(){var n={env:u,wasi_snapshot_preview1:u};function i(p,h){var g=p.exports;r.asm=g,_e=r.asm.memory,Bt(_e.buffer),Nt=r.asm.__indirect_function_table,an(r.asm.__wasm_call_ctors),ot()}Ye();function e(p){i(p.instance)}function t(p){return Fe().then(function(h){return WebAssembly.instantiate(h,n)}).then(function(h){return h}).then(p,function(h){ye("failed to asynchronously prepare wasm: "+h),Ot(h)})}function o(){return!se&&typeof WebAssembly.instantiateStreaming=="function"&&!at(Pe)&&!Te(Pe)&&!z&&typeof fetch=="function"?fetch(Pe,{credentials:"same-origin"}).then(function(p){var h=WebAssembly.instantiateStreaming(p,n);return h.then(e,function(g){return ye("wasm streaming compile failed: "+g),ye("falling back to ArrayBuffer instantiation"),t(e)})}):t(e)}if(r.instantiateWasm)try{var l=r.instantiateWasm(n,i);return l}catch(p){ye("Module.instantiateWasm callback failed with error: "+p),U(p)}return o().catch(U),{}}function gr(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function yr(n){for(;n.length>0;)n.shift()(r)}function ar(n,i,e,t){Ot("Assertion failed: "+Tt(n)+", at: "+[i?Tt(i):"unknown filename",e,t?Tt(t):"unknown function"])}var At=[];function xr(n){n.add_ref()}function _t(n){var i=new st(n);return i.get_caught()||i.set_caught(!0),i.set_rethrown(!1),At.push(i),xr(i),i.get_exception_ptr()}var ke=0,De=[];function ge(n){var i=De[n];return i||(n>=De.length&&(De.length=n+1),De[n]=i=Nt.get(n)),i}function Ne(n){if(n.release_ref()&&!n.get_rethrown()){var i=n.get_destructor();i&&ge(i)(n.excPtr),w(n.excPtr)}}function tt(){_setThrew(0);var n=At.pop();Ne(n),ke=0}function st(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(i){oe[this.ptr+4>>2]=i},this.get_type=function(){return oe[this.ptr+4>>2]},this.set_destructor=function(i){oe[this.ptr+8>>2]=i},this.get_destructor=function(){return oe[this.ptr+8>>2]},this.set_refcount=function(i){ne[this.ptr>>2]=i},this.set_caught=function(i){i=i?1:0,me[this.ptr+12>>0]=i},this.get_caught=function(){return me[this.ptr+12>>0]!=0},this.set_rethrown=function(i){i=i?1:0,me[this.ptr+13>>0]=i},this.get_rethrown=function(){return me[this.ptr+13>>0]!=0},this.init=function(i,e){this.set_adjusted_ptr(0),this.set_type(i),this.set_destructor(e),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var i=ne[this.ptr>>2];ne[this.ptr>>2]=i+1},this.release_ref=function(){var i=ne[this.ptr>>2];return ne[this.ptr>>2]=i-1,i===1},this.set_adjusted_ptr=function(i){oe[this.ptr+16>>2]=i},this.get_adjusted_ptr=function(){return oe[this.ptr+16>>2]},this.get_exception_ptr=function(){var i=G(this.get_type());if(i)return oe[this.excPtr>>2];var e=this.get_adjusted_ptr();return e!==0?e:this.excPtr}}function _r(n){throw ke||(ke=n),n}function Gt(){var n=ke;if(!n)return F(0),0;var i=new st(n);i.set_adjusted_ptr(n);var e=i.get_type();if(!e)return F(0),n;for(var t=0;t>2])}var Le={},$t={},Rt={},Ae=48,Et=57;function Y(n){if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var i=n.charCodeAt(0);return i>=Ae&&i<=Et?"_"+n:n}function de(n,i){return n=Y(n),new Function("body","return function "+n+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(i)}function re(n,i){var e=de(i,function(t){this.name=i,this.message=t;var o=new Error(t).stack;o!==void 0&&(this.stack=this.toString()+` +`+o.replace(/^Error(:[^\n]*)?\n/,""))});return e.prototype=Object.create(n.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},e}var Q=void 0;function ze(n){throw new Q(n)}function ut(n,i,e){n.forEach(function(h){Rt[h]=i});function t(h){var g=e(h);g.length!==n.length&&ze("Mismatched type converter count");for(var m=0;m{$t.hasOwnProperty(h)?o[g]=$t[h]:(l.push(h),Le.hasOwnProperty(h)||(Le[h]=[]),Le[h].push(()=>{o[g]=$t[h],++p,p===l.length&&t(o)}))}),l.length===0&&t(o)}function mr(n){var i=He[n];delete He[n];var e=i.rawConstructor,t=i.rawDestructor,o=i.fields,l=o.map(p=>p.getterReturnType).concat(o.map(p=>p.setterArgumentType));ut([n],l,p=>{var h={};return o.forEach((g,m)=>{var P=g.fieldName,S=p[m],I=g.getter,B=g.getterContext,V=p[m+o.length],te=g.setter,Z=g.setterContext;h[P]={read:ve=>S.fromWireType(I(B,ve)),write:(ve,Oe)=>{var We=[];te(Z,ve,V.toWireType(We,Oe)),jt(We)}}}),[{name:i.name,fromWireType:function(g){var m={};for(var P in h)m[P]=h[P].read(g);return t(g),m},toWireType:function(g,m){for(var P in h)if(!(P in m))throw new TypeError('Missing field: "'+P+'"');var S=e();for(P in h)h[P].write(S,m[P]);return g!==null&&g.push(t,S),S},argPackAdvance:8,readValueFromPointer:Me,destructorFunction:t}]})}function sr(n,i,e,t,o){}function St(n){switch(n){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+n)}}function Jt(){for(var n=new Array(256),i=0;i<256;++i)n[i]=String.fromCharCode(i);ur=n}var ur=void 0;function Ee(n){for(var i="",e=n;le[e];)i+=ur[le[e++]];return i}var bt=void 0;function ae(n){throw new bt(n)}function Ue(n,i,e={}){if(!("argPackAdvance"in i))throw new TypeError("registerType registeredInstance requires argPackAdvance");var t=i.name;if(n||ae('type "'+t+'" must have a positive integer typeid pointer'),$t.hasOwnProperty(n)){if(e.ignoreDuplicateRegistrations)return;ae("Cannot register type '"+t+"' twice")}if($t[n]=i,delete Rt[n],Le.hasOwnProperty(n)){var o=Le[n];delete Le[n],o.forEach(l=>l())}}function br(n,i,e,t,o){var l=St(e);i=Ee(i),Ue(n,{name:i,fromWireType:function(p){return!!p},toWireType:function(p,h){return h?t:o},argPackAdvance:8,readValueFromPointer:function(p){var h;if(e===1)h=me;else if(e===2)h=ce;else if(e===4)h=ne;else throw new TypeError("Unknown boolean type size: "+i);return this.fromWireType(h[p>>l])},destructorFunction:null})}function ft(n){if(!(this instanceof gt)||!(n instanceof gt))return!1;for(var i=this.$$.ptrType.registeredClass,e=this.$$.ptr,t=n.$$.ptrType.registeredClass,o=n.$$.ptr;i.baseClass;)e=i.upcast(e),i=i.baseClass;for(;t.baseClass;)o=t.upcast(o),t=t.baseClass;return i===t&&e===o}function Ft(n){return{count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}}function ct(n){function i(e){return e.$$.ptrType.registeredClass.name}ae(i(n)+" instance already deleted")}var Ke=!1;function Or(n){}function Xt(n){n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)}function lt(n){n.count.value-=1;var i=n.count.value===0;i&&Xt(n)}function Ur(n,i,e){if(i===e)return n;if(e.baseClass===void 0)return null;var t=Ur(n,i,e.baseClass);return t===null?null:e.downcast(t)}var dt={};function fr(){return Object.keys(Ve).length}function Yt(){var n=[];for(var i in Ve)Ve.hasOwnProperty(i)&&n.push(Ve[i]);return n}var pt=[];function wr(){for(;pt.length;){var n=pt.pop();n.$$.deleteScheduled=!1,n.delete()}}var Kt=void 0;function wt(n){Kt=n,pt.length&&Kt&&Kt(wr)}function Ir(){r.getInheritedInstanceCount=fr,r.getLiveInheritedInstances=Yt,r.flushPendingDeletes=wr,r.setDelayFunction=wt}var Ve={};function vt(n,i){for(i===void 0&&ae("ptr should not be undefined");n.baseClass;)i=n.upcast(i),n=n.baseClass;return i}function cr(n,i){return i=vt(n,i),Ve[i]}function lr(n,i){(!i.ptrType||!i.ptr)&&ze("makeClassHandle requires ptr and ptrType");var e=!!i.smartPtrType,t=!!i.smartPtr;return e!==t&&ze("Both smartPtrType and smartPtr must be specified"),i.count={value:1},kt(Object.create(n,{$$:{value:i}}))}function Pr(n){var i=this.getPointee(n);if(!i)return this.destructor(n),null;var e=cr(this.registeredClass,i);if(e!==void 0){if(e.$$.count.value===0)return e.$$.ptr=i,e.$$.smartPtr=n,e.clone();var t=e.clone();return this.destructor(n),t}function o(){return this.isSmartPointer?lr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:i,smartPtrType:this,smartPtr:n}):lr(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var l=this.registeredClass.getActualType(i),p=dt[l];if(!p)return o.call(this);var h;this.isConst?h=p.constPointerType:h=p.pointerType;var g=Ur(i,this.registeredClass,h.registeredClass);return g===null?o.call(this):this.isSmartPointer?lr(h.registeredClass.instancePrototype,{ptrType:h,ptr:g,smartPtrType:this,smartPtr:n}):lr(h.registeredClass.instancePrototype,{ptrType:h,ptr:g})}function kt(n){return typeof FinalizationRegistry>"u"?(kt=i=>i,n):(Ke=new FinalizationRegistry(i=>{lt(i.$$)}),kt=i=>{var e=i.$$,t=!!e.smartPtr;if(t){var o={$$:e};Ke.register(i,o,i)}return i},Or=i=>Ke.unregister(i),kt(n))}function sn(){if(this.$$.ptr||ct(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=kt(Object.create(Object.getPrototypeOf(this),{$$:{value:Ft(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n}function un(){this.$$.ptr||ct(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),Or(this),lt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function fn(){return!this.$$.ptr}function cn(){return this.$$.ptr||ct(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),pt.push(this),pt.length===1&&Kt&&Kt(wr),this.$$.deleteScheduled=!0,this}function ht(){gt.prototype.isAliasOf=ft,gt.prototype.clone=sn,gt.prototype.delete=un,gt.prototype.isDeleted=fn,gt.prototype.deleteLater=cn}function gt(){}function rt(n,i,e){if(n[i].overloadTable===void 0){var t=n[i];n[i]=function(){return n[i].overloadTable.hasOwnProperty(arguments.length)||ae("Function '"+e+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+n[i].overloadTable+")!"),n[i].overloadTable[arguments.length].apply(this,arguments)},n[i].overloadTable=[],n[i].overloadTable[t.argCount]=t}}function Be(n,i,e){r.hasOwnProperty(n)?((e===void 0||r[n].overloadTable!==void 0&&r[n].overloadTable[e]!==void 0)&&ae("Cannot register public name '"+n+"' twice"),rt(r,n,n),r.hasOwnProperty(e)&&ae("Cannot register multiple overloads of a function with the same number of arguments ("+e+")!"),r[n].overloadTable[e]=i):(r[n]=i,e!==void 0&&(r[n].numArguments=e))}function jr(n,i,e,t,o,l,p,h){this.name=n,this.constructor=i,this.instancePrototype=e,this.rawDestructor=t,this.baseClass=o,this.getActualType=l,this.upcast=p,this.downcast=h,this.pureVirtualFunctions=[]}function Wt(n,i,e){for(;i!==e;)i.upcast||ae("Expected null or instance of "+e.name+", got an instance of "+i.name),n=i.upcast(n),i=i.baseClass;return n}function Qt(n,i){if(i===null)return this.isReference&&ae("null is not a valid "+this.name),0;i.$$||ae('Cannot pass "'+Ar(i)+'" as a '+this.name),i.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name);var e=i.$$.ptrType.registeredClass,t=Wt(i.$$.ptr,e,this.registeredClass);return t}function Se(n,i){var e;if(i===null)return this.isReference&&ae("null is not a valid "+this.name),this.isSmartPointer?(e=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,e),e):0;i.$$||ae('Cannot pass "'+Ar(i)+'" as a '+this.name),i.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&i.$$.ptrType.isConst&&ae("Cannot convert argument of type "+(i.$$.smartPtrType?i.$$.smartPtrType.name:i.$$.ptrType.name)+" to parameter type "+this.name);var t=i.$$.ptrType.registeredClass;if(e=Wt(i.$$.ptr,t,this.registeredClass),this.isSmartPointer)switch(i.$$.smartPtr===void 0&&ae("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:i.$$.smartPtrType===this?e=i.$$.smartPtr:ae("Cannot convert argument of type "+(i.$$.smartPtrType?i.$$.smartPtrType.name:i.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:e=i.$$.smartPtr;break;case 2:if(i.$$.smartPtrType===this)e=i.$$.smartPtr;else{var o=i.clone();e=this.rawShare(e,rr.toHandle(function(){o.delete()})),n!==null&&n.push(this.rawDestructor,e)}break;default:ae("Unsupporting sharing policy")}return e}function Wr(n,i){if(i===null)return this.isReference&&ae("null is not a valid "+this.name),0;i.$$||ae('Cannot pass "'+Ar(i)+'" as a '+this.name),i.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),i.$$.ptrType.isConst&&ae("Cannot convert argument of type "+i.$$.ptrType.name+" to parameter type "+this.name);var e=i.$$.ptrType.registeredClass,t=Wt(i.$$.ptr,e,this.registeredClass);return t}function Qe(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n}function Ie(n){this.rawDestructor&&this.rawDestructor(n)}function Tr(n){n!==null&&n.delete()}function Ht(){Ze.prototype.getPointee=Qe,Ze.prototype.destructor=Ie,Ze.prototype.argPackAdvance=8,Ze.prototype.readValueFromPointer=Me,Ze.prototype.deleteObject=Tr,Ze.prototype.fromWireType=Pr}function Ze(n,i,e,t,o,l,p,h,g,m,P){this.name=n,this.registeredClass=i,this.isReference=e,this.isConst=t,this.isSmartPointer=o,this.pointeeType=l,this.sharingPolicy=p,this.rawGetPointee=h,this.rawConstructor=g,this.rawShare=m,this.rawDestructor=P,!o&&i.baseClass===void 0?t?(this.toWireType=Qt,this.destructorFunction=null):(this.toWireType=Wr,this.destructorFunction=null):this.toWireType=Se}function Zt(n,i,e){r.hasOwnProperty(n)||ze("Replacing nonexistant public symbol"),r[n].overloadTable!==void 0&&e!==void 0?r[n].overloadTable[e]=i:(r[n]=i,r[n].argCount=e)}function Hr(n,i,e){var t=r["dynCall_"+n];return e&&e.length?t.apply(null,[i].concat(e)):t.call(null,i)}function Mr(n,i,e){if(n.includes("j"))return Hr(n,i,e);var t=ge(i).apply(null,e);return t}function dr(n,i){var e=[];return function(){return e.length=0,Object.assign(e,arguments),Mr(n,i,e)}}function be(n,i){n=Ee(n);function e(){return n.includes("j")?dr(n,i):ge(i)}var t=e();return typeof t!="function"&&ae("unknown function pointer with signature "+n+": "+i),t}var er=void 0;function je(n){var i=C(n),e=Ee(i);return v(i),e}function xe(n,i){var e=[],t={};function o(l){if(!t[l]&&!$t[l]){if(Rt[l]){Rt[l].forEach(o);return}e.push(l),t[l]=!0}}throw i.forEach(o),new er(n+": "+e.map(je).join([", "]))}function Lr(n,i,e,t,o,l,p,h,g,m,P,S,I){P=Ee(P),l=be(o,l),h&&(h=be(p,h)),m&&(m=be(g,m)),I=be(S,I);var B=Y(P);Be(B,function(){xe("Cannot construct "+P+" due to unbound types",[t])}),ut([n,i,e],t?[t]:[],function(V){V=V[0];var te,Z;t?(te=V.registeredClass,Z=te.instancePrototype):Z=gt.prototype;var ve=de(B,function(){if(Object.getPrototypeOf(this)!==Oe)throw new bt("Use 'new' to construct "+P);if(We.constructor_body===void 0)throw new bt(P+" has no accessible constructor");var xn=We.constructor_body[arguments.length];if(xn===void 0)throw new bt("Tried to invoke ctor of "+P+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(We.constructor_body).toString()+") parameters instead!");return xn.apply(this,arguments)}),Oe=Object.create(Z,{constructor:{value:ve}});ve.prototype=Oe;var We=new jr(P,ve,Oe,I,te,l,h,m),Sn=new Ze(P,We,!0,!1,!1),Lt=new Ze(P+"*",We,!1,!1,!1),Wn=new Ze(P+" const*",We,!1,!0,!1);return dt[n]={pointerType:Lt,constPointerType:Wn},Zt(B,ve),[Sn,Lt,Wn]})}function nt(n,i){for(var e=[],t=0;t>2]);return e}function ln(n,i){if(!(n instanceof Function))throw new TypeError("new_ called with constructor type "+typeof n+" which is not a function");var e=de(n.name||"unknownFunctionName",function(){});e.prototype=n.prototype;var t=new e,o=n.apply(t,i);return o instanceof Object?o:t}function qe(n,i,e,t,o){var l=i.length;l<2&&ae("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var p=i[1]!==null&&e!==null,h=!1,g=1;g0?", ":"")+S),I+=(m?"var rv = ":"")+"invoker(fn"+(S.length>0?", ":"")+S+`); +`,h)I+=`runDestructors(destructors); +`;else for(var g=p?1:2;g0);var p=nt(i,e);o=be(t,o),ut([],[n],function(h){h=h[0];var g="constructor "+h.name;if(h.registeredClass.constructor_body===void 0&&(h.registeredClass.constructor_body=[]),h.registeredClass.constructor_body[i-1]!==void 0)throw new bt("Cannot register multiple constructors with identical number of parameters ("+(i-1)+") for class '"+h.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return h.registeredClass.constructor_body[i-1]=()=>{xe("Cannot construct "+h.name+" due to unbound types",p)},ut([],p,function(m){return m.splice(1,0,null),h.registeredClass.constructor_body[i-1]=qe(g,m,null,o,l),[]}),[]})}function Cr(n,i,e,t,o,l,p,h){var g=nt(e,t);i=Ee(i),l=be(o,l),ut([],[n],function(m){m=m[0];var P=m.name+"."+i;i.startsWith("@@")&&(i=Symbol[i.substring(2)]),h&&m.registeredClass.pureVirtualFunctions.push(i);function S(){xe("Cannot call "+P+" due to unbound types",g)}var I=m.registeredClass.instancePrototype,B=I[i];return B===void 0||B.overloadTable===void 0&&B.className!==m.name&&B.argCount===e-2?(S.argCount=e-2,S.className=m.name,I[i]=S):(rt(I,i,P),I[i].overloadTable[e-2]=S),ut([],g,function(V){var te=qe(P,V,m,l,p);return I[i].overloadTable===void 0?(te.argCount=e-2,I[i]=te):I[i].overloadTable[e-2]=te,[]}),[]})}var tr=[],et=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Vr(n){n>4&&--et[n].refcount===0&&(et[n]=void 0,tr.push(n))}function dn(){for(var n=0,i=5;i(n||ae("Cannot use deleted val. handle = "+n),et[n].value),toHandle:n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var i=tr.length?tr.pop():et.length;return et[i]={refcount:1,value:n},i}}}};function Nr(n,i){i=Ee(i),Ue(n,{name:i,fromWireType:function(e){var t=rr.toValue(e);return Vr(e),t},toWireType:function(e,t){return rr.toHandle(t)},argPackAdvance:8,readValueFromPointer:Me,destructorFunction:null})}function Ar(n){if(n===null)return"null";var i=typeof n;return i==="object"||i==="array"||i==="function"?n.toString():""+n}function vn(n,i){switch(i){case 2:return function(e){return this.fromWireType(ie[e>>2])};case 3:return function(e){return this.fromWireType(he[e>>3])};default:throw new TypeError("Unknown float type: "+n)}}function hn(n,i,e){var t=St(e);i=Ee(i),Ue(n,{name:i,fromWireType:function(o){return o},toWireType:function(o,l){return l},argPackAdvance:8,readValueFromPointer:vn(i,t),destructorFunction:null})}function gn(n,i,e,t,o,l){var p=nt(i,e);n=Ee(n),o=be(t,o),Be(n,function(){xe("Cannot call "+n+" due to unbound types",p)},i-1),ut([],p,function(h){var g=[h[0],null].concat(h.slice(1));return Zt(n,qe(n,g,null,o,l),i-1),[]})}function yn(n,i,e){switch(i){case 0:return e?function(o){return me[o]}:function(o){return le[o]};case 1:return e?function(o){return ce[o>>1]}:function(o){return ue[o>>1]};case 2:return e?function(o){return ne[o>>2]}:function(o){return oe[o>>2]};default:throw new TypeError("Unknown integer type: "+n)}}function _n(n,i,e,t,o){i=Ee(i);var l=St(e),p=S=>S;if(t===0){var h=32-8*e;p=S=>S<>>h}var g=i.includes("unsigned"),m=(S,I)=>{},P;g?P=function(S,I){return m(I,this.name),I>>>0}:P=function(S,I){return m(I,this.name),I},Ue(n,{name:i,fromWireType:p,toWireType:P,argPackAdvance:8,readValueFromPointer:yn(i,l,t!==0),destructorFunction:null})}function mn(n,i,e){var t=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],o=t[i];function l(p){p=p>>2;var h=oe,g=h[p],m=h[p+1];return new o(Ge,m,g)}e=Ee(e),Ue(n,{name:e,fromWireType:l,argPackAdvance:8,readValueFromPointer:l},{ignoreDuplicateRegistrations:!0})}function bn(n,i){i=Ee(i);var e=i==="std::string";Ue(n,{name:i,fromWireType:function(t){var o=oe[t>>2],l=t+4,p;if(e)for(var h=l,g=0;g<=o;++g){var m=l+g;if(g==o||le[m]==0){var P=m-h,S=Tt(h,P);p===void 0?p=S:(p+="\0",p+=S),h=m+1}}else{for(var I=new Array(o),g=0;g>2]=l,e&&p)vr(o,g,l+1);else if(p)for(var m=0;m255&&(v(g),ae("String has UTF-16 code units that do not fit in 8 bits")),le[g+m]=P}else for(var m=0;m>1,o=t+i/2;!(t>=o)&&ue[t];)++t;if(e=t<<1,e-n>32&&zr)return zr.decode(le.subarray(n,e));for(var l="",p=0;!(p>=i/2);++p){var h=ce[n+p*2>>1];if(h==0)break;l+=String.fromCharCode(h)}return l}function qr(n,i,e){if(e===void 0&&(e=2147483647),e<2)return 0;e-=2;for(var t=i,o=e>1]=p,i+=2}return ce[i>>1]=0,i-t}function Gr(n){return n.length*2}function Pn(n,i){for(var e=0,t="";!(e>=i/4);){var o=ne[n+e*4>>2];if(o==0)break;if(++e,o>=65536){var l=o-65536;t+=String.fromCharCode(55296|l>>10,56320|l&1023)}else t+=String.fromCharCode(o)}return t}function $r(n,i,e){if(e===void 0&&(e=2147483647),e<4)return 0;for(var t=i,o=t+e-4,l=0;l=55296&&p<=57343){var h=n.charCodeAt(++l);p=65536+((p&1023)<<10)|h&1023}if(ne[i>>2]=p,i+=4,i+4>o)break}return ne[i>>2]=0,i-t}function Jr(n){for(var i=0,e=0;e=55296&&t<=57343&&++e,i+=4}return i}function Xr(n,i,e){e=Ee(e);var t,o,l,p,h;i===2?(t=wn,o=qr,p=Gr,l=()=>ue,h=1):i===4&&(t=Pn,o=$r,p=Jr,l=()=>oe,h=2),Ue(n,{name:e,fromWireType:function(g){for(var m=oe[g>>2],P=l(),S,I=g+4,B=0;B<=m;++B){var V=g+4+B*i;if(B==m||P[V>>h]==0){var te=V-I,Z=t(I,te);S===void 0?S=Z:(S+="\0",S+=Z),I=V+i}}return v(g),S},toWireType:function(g,m){typeof m!="string"&&ae("Cannot pass non-string to C++ string type "+e);var P=p(m),S=f(4+P+i);return oe[S>>2]=P>>h,o(m,S+4,P+i),g!==null&&g.push(v,S),S},argPackAdvance:8,readValueFromPointer:Me,destructorFunction:function(g){v(g)}})}function Rr(n,i,e,t,o,l){He[n]={name:Ee(i),rawConstructor:be(e,t),rawDestructor:be(o,l),fields:[]}}function Tn(n,i,e,t,o,l,p,h,g,m){He[n].fields.push({fieldName:Ee(i),getterReturnType:e,getter:be(t,o),getterContext:l,setterArgumentType:p,setter:be(h,g),setterContext:m})}function Yr(n,i){i=Ee(i),Ue(n,{isVoid:!0,name:i,argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})}function Cn(n){n>4&&(et[n].refcount+=1)}function Kr(n,i){var e=$t[n];return e===void 0&&ae(i+" has unknown type "+je(n)),e}function An(n,i){n=Kr(n,"_emval_take_value");var e=n.readValueFromPointer(i);return rr.toHandle(e)}function $n(){Ot("")}function Rn(n,i,e){le.copyWithin(n,i,i+e)}function En(){return 2147483648}function Er(n){try{return _e.grow(n-Ge.byteLength+65535>>>16),Bt(_e.buffer),1}catch{}}function Sr(n){var i=le.length;n=n>>>0;var e=En();if(n>e)return!1;let t=(g,m)=>g+(m-g%m)%m;for(var o=1;o<=4;o*=2){var l=i*(1+.2/o);l=Math.min(l,n+100663296);var p=Math.min(e,t(Math.max(n,l),65536)),h=Er(p);if(h)return!0}return!1}function Dt(n){return 52}function Mt(n,i,e,t,o){return 70}var yt=[null,[],[]];function Qr(n,i){var e=yt[n];i===0||i===10?((n===1?we:ye)(xt(e,0)),e.length=0):e.push(i)}function Zr(n,i,e,t){for(var o=0,l=0;l>2],h=oe[i+4>>2];i+=8;for(var g=0;g>2]=o,0}function Fr(n){return n}function en(n){var i=r["_"+n];return i}function pr(n,i){me.set(n,i)}function tn(n,i,e,t,o){var l={string:V=>{var te=0;if(V!=null&&V!==0){var Z=(V.length<<2)+1;te=x(Z),vr(V,te,Z)}return te},array:V=>{var te=x(V.length);return pr(V,te),te}};function p(V){return i==="string"?Tt(V):i==="boolean"?!!V:V}var h=en(n),g=[],m=0;if(t)for(var P=0;P0||(hr(),Je>0))return;function i(){D||(D=!0,r.calledRun=!0,!Re&&(kr(),L(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),nn()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),i()},1)):i()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return E(),r.ready}})();c.exports=_})(pi);var so=pi.exports,uo=zn(so);const fo=new URL("/static/dv3d/assets/openjphjs-C-BUUy4a.wasm",import.meta.url),Un={codec:void 0,decoder:void 0,decodeConfig:{}};function co(c,y,_){const R={width:y,height:_};for(;c>0;)R.width=Math.ceil(R.width/2),R.height=Math.ceil(R.height/2),c--;return R}function lo(c){if(Un.decodeConfig=c,Un.codec)return Promise.resolve();const y=uo({locateFile:_=>_.endsWith(".wasm")?fo.toString():_});return new Promise((_,R)=>{y.then($=>{Un.codec=$,Un.decoder=new $.HTJ2KDecoder,_()},R)})}async function po(c,y){await lo();const _=new Un.codec.HTJ2KDecoder,R=_.getEncodedBuffer(c.length);R.set(c);const $=y.decodeLevel||0;_.decodeSubResolution($);const r=_.getFrameInfo();if(y.decodeLevel>0){const{width:Vt,height:xt}=co(y.decodeLevel,r.width,r.height);r.width=Vt,r.height=xt}const L=_.getDecodedBuffer();new Uint8Array(L.length).set(L);const W=`x: ${_.getImageOffset().x}, y: ${_.getImageOffset().y}`,N=_.getNumDecompositions(),M=_.getNumLayers(),z=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][_.getProgressionOrder()+1],H=_.getIsReversible(),X=`${_.getBlockDimensions().width} x ${_.getBlockDimensions().height}`,q=`${_.getTileSize().width} x ${_.getTileSize().height}`,ee=`${_.getTileOffset().x}, ${_.getTileOffset().y}`,fe=`${L.length.toLocaleString()} bytes`,$e=`${(L.length/R.length).toFixed(2)}:1`,pe={columns:r.width,rows:r.height,bitsPerPixel:r.bitsPerSample,signed:r.isSigned,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:r.componentCount};let we=vo(r,L);const{buffer:ye,byteOffset:se,byteLength:_e}=we,Re=ye.slice(se,se+_e);we=new we.constructor(Re);const it={imageOffset:W,numDecompositions:N,numLayers:M,progessionOrder:z,reversible:H,blockDimensions:X,tileSize:q,tileOffset:ee,decodedSize:fe,compressionRatio:$e};return{...y,pixelData:we,imageInfo:pe,encodeOptions:it,...it,...pe}}function vo(c,y){return c.bitsPerSample>8?c.isSigned?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):c.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}function ho(c,y){const _=c.length,{rescaleSlope:R,rescaleIntercept:$,suvbw:r,doseGridScaling:L}=y;if(y.modality==="PT"&&typeof r=="number"&&!isNaN(r))for(let U=0;U<_;U++)c[U]=r*(c[U]*R+$);else if(y.modality==="RTDOSE"&&typeof L=="number"&&!isNaN(L))for(let U=0;U<_;U++)c[U]=c[U]*L;else for(let U=0;U<_;U++)c[U]=c[U]*R+$;return!0}function go(c){let y=c[0],_=c[0],R;const $=c.length;for(let r=1;r<$;r++)R=c[r],y=Math.min(y,R),_=Math.max(_,R);return{min:y,max:_}}function vi(c,y){let _;return Number.isInteger(c)&&Number.isInteger(y)&&(c>=0?y<=255?_=Uint8Array:y<=65535?_=Uint16Array:y<=4294967295&&(_=Uint32Array):c>=-128&&y<=127?_=Int8Array:c>=-32768&&y<=32767&&(_=Int16Array)),_||Float32Array}function yo(c,y,_){return vi(c,y)===_}function _o(c){return c==="RGB"||c==="PALETTE COLOR"||c==="YBR_FULL"||c==="YBR_FULL_422"||c==="YBR_PARTIAL_422"||c==="YBR_PARTIAL_420"||c==="YBR_RCT"||c==="YBR_ICT"}const mo={bilinear:yi,replicate:_i},ni={Uint8Array,Uint16Array,Int16Array,Float32Array,Uint32Array};function bo(c,y,_,R){var pe,we,ye;const $=c.pixelRepresentation!==void 0&&c.pixelRepresentation===1,r=$&&c.bitsStored!==void 0?32-c.bitsStored:void 0;if($&&r!==void 0)for(let se=0;se>r;let L=c.pixelData;c.pixelDataLength=c.pixelData.length;const{min:U,max:W}=go(c.pixelData),N=typeof y.allowFloatRendering<"u"?y.allowFloatRendering:!0;let M=_o(c.photometricInterpretation)&&((pe=y.targetBuffer)==null?void 0:pe.offset)===void 0;const H=((we=y.preScale)==null?void 0:we.enabled)&&Object.values(y.preScale.scalingParameters).some(se=>typeof se=="number"&&!Number.isInteger(se)),X=!y.preScale.enabled||!N&&H,q=(ye=y.targetBuffer)==null?void 0:ye.type;if(q&&y.preScale.enabled&&!X){const se=y.preScale.scalingParameters,_e=Jn(U,W,se);M=!yo(_e.min,_e.max,ni[q])}q&&!M?L=Po(y,c,ni,L):y.preScale.enabled&&!X?L=To(y,U,W,c):L=hi(U,W,c);let ee=U,fe=W;if(y.preScale.enabled&&!X){const se=y.preScale.scalingParameters;if(gi(se),wo(se)){ho(L,se),c.preScale={...y.preScale,scaled:!0};const Re=Jn(U,W,se);ee=Re.min,fe=Re.max}}else X&&(c.preScale={enabled:!0,scaled:!1},ee=U,fe=W);c.pixelData=L,c.smallestPixelValue=ee,c.largestPixelValue=fe;const $e=new Date().getTime();return c.decodeTimeInMS=$e-_,c}function wo(c){const{rescaleSlope:y,rescaleIntercept:_,modality:R,doseGridScaling:$,suvbw:r}=c;return typeof y=="number"&&typeof _=="number"||R==="RTDOSE"&&typeof $=="number"||R==="PT"&&typeof r=="number"}function Po(c,y,_,R){const{arrayBuffer:$,type:r,offset:L=0,length:U,rows:W}=c.targetBuffer,N=_[r];if(!N)throw new Error(`target array ${r} is not supported, or doesn't exist.`);W&&W!=y.rows&&Ao(y,c.targetBuffer,N);const M=y.pixelDataLength,z=L,H=U??M-z,X=y.pixelData;if(H!==X.length)throw new Error(`target array for image does not have the same length (${H}) as the decoded image length (${X.length}).`);const q=$?new N($,z,H):new N(H);return q.set(X,0),R=q,R}function To(c,y,_,R){const $=c.preScale.scalingParameters;gi($);const r=Jn(y,_,$);return hi(r.min,r.max,R)}function hi(c,y,_){const R=vi(c,y),$=new R(_.pixelData.length);return $.set(_.pixelData,0),$}function Jn(c,y,_){const{rescaleSlope:R,rescaleIntercept:$,modality:r,doseGridScaling:L,suvbw:U}=_;return r==="PT"&&typeof U=="number"&&!isNaN(U)?{min:U*(c*R+$),max:U*(y*R+$)}:r==="RTDOSE"&&typeof L=="number"&&!isNaN(L)?{min:c*L,max:y*L}:typeof R=="number"&&typeof $=="number"?{min:R*c+$,max:R*y+$}:{min:c,max:y}}function gi(c){if(!c)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}function Co(c,y,_){const{samplesPerPixel:R}=c,{rows:$,columns:r}=y,L=$*r*R,U=new _(L),W=U.byteLength/L;return{pixelData:U,rows:$,columns:r,frameInfo:{...c.frameInfo,rows:$,columns:r},imageInfo:{...c.imageInfo,rows:$,columns:r,bytesPerPixel:W}}}function Ao(c,y,_){const R=Co(c,y,_),{scalingType:$="replicate"}=y;return mo[$](c,R),Object.assign(c,R),c.pixelDataLength=c.pixelData.length,c}async function $o(c,y,_,R,$,r){const L=new Date().getTime();let U=null,W;switch(y){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":U=Zn(c,_);break;case"1.2.840.10008.1.2.2":U=xi(c,_);break;case"1.2.840.10008.1.2.1.99":U=Zn(c,_);break;case"1.2.840.10008.1.2.5":U=Oi(c,_);break;case"1.2.840.10008.1.2.4.50":W={...c},U=zi(_,W);break;case"1.2.840.10008.1.2.4.51":U=Ji(c,_);break;case"1.2.840.10008.1.2.4.57":U=ei(c,_);break;case"1.2.840.10008.1.2.4.70":U=ei(c,_);break;case"1.2.840.10008.1.2.4.80":W={signed:c.pixelRepresentation===1,bytesPerPixel:c.bitsAllocated<=8?1:2,...c},U=ti(_,W);break;case"1.2.840.10008.1.2.4.81":W={signed:c.pixelRepresentation===1,bytesPerPixel:c.bitsAllocated<=8?1:2,...c},U=ti(_,W);break;case"1.2.840.10008.1.2.4.90":W={...c},U=ri(_,W);break;case"1.2.840.10008.1.2.4.91":W={...c},U=ri(_,W);break;case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":W={...c},U=po(_,W);break;default:throw new Error(`no decoder for transfer syntax ${y}`)}if(!U)throw new Error("decodePromise not defined");const N=await U,M=bo(N,$,L);return r==null||r(M),M}const Ro={decodeTask({imageFrame:c,transferSyntax:y,decodeConfig:_,options:R,pixelData:$,callbackFn:r}){return $o(c,y,$,_,R,r)}};Xn(Ro); diff --git a/rad/static/dv3d/assets/decodeImageFrameWorker-pUTBwvad.js b/rad/static/dv3d/assets/decodeImageFrameWorker-pUTBwvad.js deleted file mode 100644 index 12e24914..00000000 --- a/rad/static/dv3d/assets/decodeImageFrameWorker-pUTBwvad.js +++ /dev/null @@ -1,100 +0,0 @@ -function yi(d,y){const{rows:w,columns:k,data:O}=d,{rows:r,columns:W,data:H}=y,M=[],z=[],B=[];for(let q=0;qtypeof d=="object"&&d!==null||typeof d=="function",bi={canHandle:d=>oi(d)&&d[ii],serialize(d){const{port1:y,port2:w}=new MessageChannel;return Xn(d,y),[w,[w]]},deserialize(d){return d.start(),Ai(d)}},Pi={canHandle:d=>oi(d)&&Ln in d,serialize({value:d}){let y;return d instanceof Error?y={isError:!0,value:{message:d.message,name:d.name,stack:d.stack}}:y={isError:!1,value:d},[y,[]]},deserialize(d){throw d.isError?Object.assign(new Error(d.value.message),d.value):d.value}},ai=new Map([["proxy",bi],["throw",Pi]]);function Ti(d,y){for(const w of d)if(y===w||w==="*"||w instanceof RegExp&&w.test(y))return!0;return!1}function Xn(d,y=globalThis,w=["*"]){y.addEventListener("message",function k(O){if(!O||!O.data)return;if(!Ti(w,O.origin)){console.warn(`Invalid origin '${O.origin}' for comlink proxy`);return}const{id:r,type:W,path:H}=Object.assign({path:[]},O.data),M=(O.data.argumentList||[]).map(On);let z;try{const B=H.slice(0,-1).reduce((V,ee)=>V[ee],d),q=H.reduce((V,ee)=>V[ee],d);switch(W){case"GET":z=q;break;case"SET":B[H.slice(-1)[0]]=On(O.data.value),z=!0;break;case"APPLY":z=q.apply(B,M);break;case"CONSTRUCT":{const V=new q(...M);z=ki(V)}break;case"ENDPOINT":{const{port1:V,port2:ee}=new MessageChannel;Xn(d,ee),z=Si(V,[V])}break;case"RELEASE":z=void 0;break;default:return}}catch(B){z={value:B,[Ln]:0}}Promise.resolve(z).catch(B=>({value:B,[Ln]:0})).then(B=>{const[q,V]=zn(B);y.postMessage(Object.assign(Object.assign({},q),{id:r}),V),W==="RELEASE"&&(y.removeEventListener("message",k),si(y),Gn in d&&typeof d[Gn]=="function"&&d[Gn]())}).catch(B=>{const[q,V]=zn({value:new TypeError("Unserializable return value"),[Ln]:0});y.postMessage(Object.assign(Object.assign({},q),{id:r}),V)})}),y.start&&y.start()}function Ci(d){return d.constructor.name==="MessagePort"}function si(d){Ci(d)&&d.close()}function Ai(d,y){return Jn(d,[],y)}function Mn(d){if(d)throw new Error("Proxy has been released and is not useable")}function ui(d){return Un(d,{type:"RELEASE"}).then(()=>{si(d)})}const Bn=new WeakMap,Nn="FinalizationRegistry"in globalThis&&new FinalizationRegistry(d=>{const y=(Bn.get(d)||0)-1;Bn.set(d,y),y===0&&ui(d)});function $i(d,y){const w=(Bn.get(y)||0)+1;Bn.set(y,w),Nn&&Nn.register(d,y,d)}function Ri(d){Nn&&Nn.unregister(d)}function Jn(d,y=[],w=function(){}){let k=!1;const O=new Proxy(w,{get(r,W){if(Mn(k),W===wi)return()=>{Ri(O),ui(d),k=!0};if(W==="then"){if(y.length===0)return{then:()=>O};const H=Un(d,{type:"GET",path:y.map(M=>M.toString())}).then(On);return H.then.bind(H)}return Jn(d,[...y,W])},set(r,W,H){Mn(k);const[M,z]=zn(H);return Un(d,{type:"SET",path:[...y,W].map(B=>B.toString()),value:M},z).then(On)},apply(r,W,H){Mn(k);const M=y[y.length-1];if(M===mi)return Un(d,{type:"ENDPOINT"}).then(On);if(M==="bind")return Jn(d,y.slice(0,-1));const[z,B]=Zn(H);return Un(d,{type:"APPLY",path:y.map(q=>q.toString()),argumentList:z},B).then(On)},construct(r,W){Mn(k);const[H,M]=Zn(W);return Un(d,{type:"CONSTRUCT",path:y.map(z=>z.toString()),argumentList:H},M).then(On)}});return $i(O,d),O}function Ei(d){return Array.prototype.concat.apply([],d)}function Zn(d){const y=d.map(zn);return[y.map(w=>w[0]),Ei(y.map(w=>w[1]))]}const fi=new WeakMap;function Si(d,y){return fi.set(d,y),d}function ki(d){return Object.assign(d,{[ii]:!0})}function zn(d){for(const[y,w]of ai)if(w.canHandle(d)){const[k,O]=w.serialize(d);return[{type:"HANDLER",name:y,value:k},O]}return[{type:"RAW",value:d},fi.get(d)||[]]}function On(d){switch(d.type){case"HANDLER":return ai.get(d.name).deserialize(d.value);case"RAW":return d.value}}function Un(d,y,w){return new Promise(k=>{const O=Fi();d.addEventListener("message",function r(W){!W.data||!W.data.id||W.data.id!==O||(d.removeEventListener("message",r),k(W.data))}),d.start&&d.start(),d.postMessage(Object.assign({id:O},y),w)})}function Fi(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}async function ei(d,y){let w=y.buffer,k=y.byteOffset;const O=y.length;return d.bitsAllocated===16?(k%2&&(w=w.slice(k),k=0),d.pixelRepresentation===0?d.pixelData=new Uint16Array(w,k,O/2):d.pixelData=new Int16Array(w,k,O/2)):d.bitsAllocated===8||d.bitsAllocated===1?d.pixelData=y:d.bitsAllocated===32&&(k%2&&(w=w.slice(k),k=0),d.pixelData=new Float32Array(w,k,O/4)),d}function Di(d){return(d&255)<<8|d>>8&255}async function Oi(d,y){if(d.bitsAllocated===16){let w=y.buffer,k=y.byteOffset;const O=y.length;k%2&&(w=w.slice(k),k=0),d.pixelRepresentation===0?d.pixelData=new Uint16Array(w,k,O/2):d.pixelData=new Int16Array(w,k,O/2);for(let r=0;r=0&&G<=127)for(let re=0;re=-127){const re=W[q++];for(let se=0;se<-G+1&&M=0&&G<=127)for(let re=0;re=-127){const re=W[q++];for(let se=0;se<-G+1&&M=0&&G<=127)for(let re=0;re=-127){const re=W[V++];for(let se=0;se<-G+1&&B{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(k=k||__filename),function(O){O=O||{};var r=typeof O<"u"?O:{},W,H;r.ready=new Promise(function(t,e){W=t,H=e});var M=Object.assign({},r),z="./this.program",B=(t,e)=>{throw e},q=typeof window=="object",V=typeof importScripts=="function",ee=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",G="";function re(t){return r.locateFile?r.locateFile(t,G):G+t}var se,me,le;function Ce(t){if(t instanceof Ue)return;$e("exiting due to exception: "+t)}if(ee){var we=fn,ve=fn;V?G=ve.dirname(G)+"/":G=__dirname+"/",se=(t,e)=>(t=Vt(t)?new URL(t):ve.normalize(t),we.readFileSync(t,e?void 0:"utf8")),le=t=>{var e=se(t,!0);return e.buffer||(e=new Uint8Array(e)),e},me=(t,e,s)=>{t=Vt(t)?new URL(t):ve.normalize(t),we.readFile(t,function(l,g){l?s(l):e(g.buffer)})},process.argv.length>1&&(z=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(t){if(!(t instanceof Ue))throw t}),process.on("unhandledRejection",function(t){throw t}),B=(t,e)=>{if(Ur())throw process.exitCode=t,e;Ce(e),process.exit(t)},r.inspect=function(){return"[Emscripten Module object]"}}else(q||V)&&(V?G=self.location.href:typeof document<"u"&&document.currentScript&&(G=document.currentScript.src),k&&(G=k),G.indexOf("blob:")!==0?G=G.substr(0,G.replace(/[?#].*/,"").lastIndexOf("/")+1):G="",se=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.send(null),e.responseText},V&&(le=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),me=(t,e,s)=>{var l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="arraybuffer",l.onload=()=>{if(l.status==200||l.status==0&&l.response){e(l.response);return}s()},l.onerror=s,l.send(null)});var de=r.print||console.log.bind(console),$e=r.printErr||console.warn.bind(console);Object.assign(r,M),M=null,r.arguments&&r.arguments,r.thisProgram&&(z=r.thisProgram),r.quit&&(B=r.quit);var qe;r.wasmBinary&&(qe=r.wasmBinary);var Jt=r.noExitRuntime||!0;typeof WebAssembly!="object"&&Ae("no native wasm support detected");var Ge,$t=!1;function Ot(t,e){t||Ae(e)}var mr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Xt(t,e,s){for(var l=e+s,g=e;t[g]&&!(g>=l);)++g;if(g-e>16&&t.buffer&&mr)return mr.decode(t.subarray(e,g));for(var b="";e>10,56320|x&1023)}}return b}function Qe(t,e){return t?Xt(te,t,e):""}function he(t,e,s,l){if(!(l>0))return 0;for(var g=s,b=s+l-1,C=0;C=55296&&T<=57343){var E=t.charCodeAt(++C);T=65536+((T&1023)<<10)|E&1023}if(T<=127){if(s>=b)break;e[s++]=T}else if(T<=2047){if(s+1>=b)break;e[s++]=192|T>>6,e[s++]=128|T&63}else if(T<=65535){if(s+2>=b)break;e[s++]=224|T>>12,e[s++]=128|T>>6&63,e[s++]=128|T&63}else{if(s+3>=b)break;e[s++]=240|T>>18,e[s++]=128|T>>12&63,e[s++]=128|T>>6&63,e[s++]=128|T&63}}return e[s]=0,s-g}function ce(t,e,s){return he(t,te,e,s)}function ge(t){for(var e=0,s=0;s=55296&&l<=57343?(e+=4,++s):e+=3}return e}var ye,ne,te,fe,It,Ie,pe,Yt,Kt;function cr(t){ye=t,r.HEAP8=ne=new Int8Array(t),r.HEAP16=fe=new Int16Array(t),r.HEAP32=Ie=new Int32Array(t),r.HEAPU8=te=new Uint8Array(t),r.HEAPU16=It=new Uint16Array(t),r.HEAPU32=pe=new Uint32Array(t),r.HEAPF32=Yt=new Float32Array(t),r.HEAPF64=Kt=new Float64Array(t)}r.INITIAL_MEMORY;var wr,Dr=[],Or=[],Ir=[];function Ur(){return Jt}function Ut(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Qt(r.preRun.shift());Xe(Dr)}function Ze(){Xe(Or)}function et(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)er(r.postRun.shift());Xe(Ir)}function Qt(t){Dr.unshift(t)}function Zt(t){Or.unshift(t)}function er(t){Ir.unshift(t)}var Je=0,yt=null;function Re(t){Je++,r.monitorRunDependencies&&r.monitorRunDependencies(Je)}function Ee(t){if(Je--,r.monitorRunDependencies&&r.monitorRunDependencies(Je),Je==0&&yt){var e=yt;yt=null,e()}}function Ae(t){r.onAbort&&r.onAbort(t),t="Aborted("+t+")",$e(t),$t=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw H(e),e}var jr="data:application/octet-stream;base64,";function xr(t){return t.startsWith(jr)}function Vt(t){return t.startsWith("file://")}var Fe;Fe="libjpegturbowasm_decode.wasm",xr(Fe)||(Fe=re(Fe));function tr(t){try{if(t==Fe&&qe)return new Uint8Array(qe);if(le)return le(t);throw"both async and sync fetching of the wasm failed"}catch(e){Ae(e)}}function lr(){if(!qe&&(q||V)){if(typeof fetch=="function"&&!Vt(Fe))return fetch(Fe,{credentials:"same-origin"}).then(function(t){if(!t.ok)throw"failed to load wasm binary file at '"+Fe+"'";return t.arrayBuffer()}).catch(function(){return tr(Fe)});if(me)return new Promise(function(t,e){me(Fe,function(s){t(new Uint8Array(s))},e)})}return Promise.resolve().then(function(){return tr(Fe)})}function Wr(){var t={a:J};function e(C,T){var E=C.exports;r.asm=E,Ge=r.asm.K,cr(Ge.buffer),wr=r.asm.M,Zt(r.asm.L),Ee()}Re();function s(C){e(C.instance)}function l(C){return lr().then(function(T){return WebAssembly.instantiate(T,t)}).then(function(T){return T}).then(C,function(T){$e("failed to asynchronously prepare wasm: "+T),Ae(T)})}function g(){return!qe&&typeof WebAssembly.instantiateStreaming=="function"&&!xr(Fe)&&!Vt(Fe)&&!ee&&typeof fetch=="function"?fetch(Fe,{credentials:"same-origin"}).then(function(C){var T=WebAssembly.instantiateStreaming(C,t);return T.then(s,function(E){return $e("wasm streaming compile failed: "+E),$e("falling back to ArrayBuffer instantiation"),l(s)})}):l(s)}if(r.instantiateWasm)try{var b=r.instantiateWasm(t,e);return b}catch(C){$e("Module.instantiateWasm callback failed with error: "+C),H(C)}return g().catch(H),{}}function Ue(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}function Xe(t){for(;t.length>0;)t.shift()(r)}function _e(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){pe[this.ptr+4>>2]=e},this.get_type=function(){return pe[this.ptr+4>>2]},this.set_destructor=function(e){pe[this.ptr+8>>2]=e},this.get_destructor=function(){return pe[this.ptr+8>>2]},this.set_refcount=function(e){Ie[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,ne[this.ptr+12>>0]=e},this.get_caught=function(){return ne[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,ne[this.ptr+13>>0]=e},this.get_rethrown=function(){return ne[this.ptr+13>>0]!=0},this.init=function(e,s){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(s),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=Ie[this.ptr>>2];Ie[this.ptr>>2]=e+1},this.release_ref=function(){var e=Ie[this.ptr>>2];return Ie[this.ptr>>2]=e-1,e===1},this.set_adjusted_ptr=function(e){pe[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return pe[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=j(this.get_type());if(e)return pe[this.excPtr>>2];var s=this.get_adjusted_ptr();return s!==0?s:this.excPtr}}function _t(t,e,s){var l=new _e(t);throw l.init(e,s),t}var ct={};function Rt(t){for(;t.length;){var e=t.pop(),s=t.pop();s(e)}}function jt(t){return this.fromWireType(Ie[t>>2])}var Et={},tt={},xt={},mt=48,wt=57;function lt(t){if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=mt&&e<=wt?"_"+t:t}function Me(t,e){return t=lt(t),new Function("body","return function "+t+`() { - "use strict"; return body.apply(this, arguments); -}; -`)(e)}function rt(t,e){var s=Me(e,function(l){this.name=e,this.message=l;var g=new Error(l).stack;g!==void 0&&(this.stack=this.toString()+` -`+g.replace(/^Error(:[^\n]*)?\n/,""))});return s.prototype=Object.create(t.prototype),s.prototype.constructor=s,s.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},s}var rr=void 0;function Wt(t){throw new rr(t)}function be(t,e,s){t.forEach(function(T){xt[T]=e});function l(T){var E=s(T);E.length!==t.length&&Wt("Mismatched type converter count");for(var x=0;x{tt.hasOwnProperty(T)?g[E]=tt[T]:(b.push(T),Et.hasOwnProperty(T)||(Et[T]=[]),Et[T].push(()=>{g[E]=tt[T],++C,C===b.length&&l(g)}))}),b.length===0&&l(g)}function bt(t){var e=ct[t];delete ct[t];var s=e.rawConstructor,l=e.rawDestructor,g=e.fields,b=g.map(C=>C.getterReturnType).concat(g.map(C=>C.setterArgumentType));be([t],b,C=>{var T={};return g.forEach((E,x)=>{var N=E.fieldName,X=C[x],Z=E.getter,Te=E.getterContext,oe=C[x+g.length],ke=E.setter,Ke=E.setterContext;T[N]={read:Lt=>X.fromWireType(Z(Te,Lt)),write:(Lt,un)=>{var Fr=[];ke(Ke,Lt,oe.toWireType(Fr,un)),Rt(Fr)}}}),[{name:e.name,fromWireType:function(E){var x={};for(var N in T)x[N]=T[N].read(E);return l(E),x},toWireType:function(E,x){for(var N in T)if(!(N in x))throw new TypeError('Missing field: "'+N+'"');var X=s();for(N in T)T[N].write(X,x[N]);return E!==null&&E.push(l,X),X},argPackAdvance:8,readValueFromPointer:jt,destructorFunction:l}]})}function K(t,e,s,l,g){}function Se(t){switch(t){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+t)}}function ue(){for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);Le=t}var Le=void 0;function Pe(t){for(var e="",s=t;te[s];)e+=Le[te[s++]];return e}var St=void 0;function ae(t){throw new St(t)}function xe(t,e,s={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");var l=e.name;if(t||ae('type "'+l+'" must have a positive integer typeid pointer'),tt.hasOwnProperty(t)){if(s.ignoreDuplicateRegistrations)return;ae("Cannot register type '"+l+"' twice")}if(tt[t]=e,delete xt[t],Et.hasOwnProperty(t)){var g=Et[t];delete Et[t],g.forEach(b=>b())}}function br(t,e,s,l,g){var b=Se(s);e=Pe(e),xe(t,{name:e,fromWireType:function(C){return!!C},toWireType:function(C,T){return T?l:g},argPackAdvance:8,readValueFromPointer:function(C){var T;if(s===1)T=ne;else if(s===2)T=fe;else if(s===4)T=Ie;else throw new TypeError("Unknown boolean type size: "+e);return this.fromWireType(T[C>>b])},destructorFunction:null})}function dr(t){if(!(this instanceof We)||!(t instanceof We))return!1;for(var e=this.$$.ptrType.registeredClass,s=this.$$.ptr,l=t.$$.ptrType.registeredClass,g=t.$$.ptr;e.baseClass;)s=e.upcast(s),e=e.baseClass;for(;l.baseClass;)g=l.upcast(g),l=l.baseClass;return e===l&&s===g}function De(t){return{count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}}function dt(t){function e(s){return s.$$.ptrType.registeredClass.name}ae(e(t)+" instance already deleted")}var ie=!1;function nt(t){}function nr(t){t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)}function pr(t){t.count.value-=1;var e=t.count.value===0;e&&nr(t)}function pt(t,e,s){if(e===s)return t;if(s.baseClass===void 0)return null;var l=pt(t,e,s.baseClass);return l===null?null:s.downcast(l)}var Bt={};function Ht(){return Object.keys(or).length}function Nt(){var t=[];for(var e in or)or.hasOwnProperty(e)&&t.push(or[e]);return t}var ir=[];function kt(){for(;ir.length;){var t=ir.pop();t.$$.deleteScheduled=!1,t.delete()}}var Pt=void 0;function Hr(t){Pt=t,ir.length&&Pt&&Pt(kt)}function Ft(){r.getInheritedInstanceCount=Ht,r.getLiveInheritedInstances=Nt,r.flushPendingDeletes=kt,r.setDelayFunction=Hr}var or={};function Tt(t,e){for(e===void 0&&ae("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e}function Pr(t,e){return e=Tt(t,e),or[e]}function Dt(t,e){(!e.ptrType||!e.ptr)&&Wt("makeClassHandle requires ptr and ptrType");var s=!!e.smartPtrType,l=!!e.smartPtr;return s!==l&&Wt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ye(Object.create(t,{$$:{value:e}}))}function cn(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var s=Pr(this.registeredClass,e);if(s!==void 0){if(s.$$.count.value===0)return s.$$.ptr=e,s.$$.smartPtr=t,s.clone();var l=s.clone();return this.destructor(t),l}function g(){return this.isSmartPointer?Dt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):Dt(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var b=this.registeredClass.getActualType(e),C=Bt[b];if(!C)return g.call(this);var T;this.isConst?T=C.constPointerType:T=C.pointerType;var E=pt(e,this.registeredClass,T.registeredClass);return E===null?g.call(this):this.isSmartPointer?Dt(T.registeredClass.instancePrototype,{ptrType:T,ptr:E,smartPtrType:this,smartPtr:t}):Dt(T.registeredClass.instancePrototype,{ptrType:T,ptr:E})}function Ye(t){return typeof FinalizationRegistry>"u"?(Ye=e=>e,t):(ie=new FinalizationRegistry(e=>{pr(e.$$)}),Ye=e=>{var s=e.$$,l=!!s.smartPtr;if(l){var g={$$:s};ie.register(e,g,e)}return e},nt=e=>ie.unregister(e),Ye(t))}function zt(){if(this.$$.ptr||dt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=Ye(Object.create(Object.getPrototypeOf(this),{$$:{value:De(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ct(){this.$$.ptr||dt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),nt(this),pr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Mr(){return!this.$$.ptr}function qt(){return this.$$.ptr||dt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),ir.push(this),ir.length===1&&Pt&&Pt(kt),this.$$.deleteScheduled=!0,this}function ln(){We.prototype.isAliasOf=dr,We.prototype.clone=zt,We.prototype.delete=Ct,We.prototype.isDeleted=Mr,We.prototype.deleteLater=qt}function We(){}function Lr(t,e,s){if(t[e].overloadTable===void 0){var l=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||ae("Function '"+s+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+t[e].overloadTable+")!"),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[l.argCount]=l}}function dn(t,e,s){r.hasOwnProperty(t)?(ae("Cannot register public name '"+t+"' twice"),Lr(r,t,t),r.hasOwnProperty(s)&&ae("Cannot register multiple overloads of a function with the same number of arguments ("+s+")!"),r[t].overloadTable[s]=e):r[t]=e}function pn(t,e,s,l,g,b,C,T){this.name=t,this.constructor=e,this.instancePrototype=s,this.rawDestructor=l,this.baseClass=g,this.getActualType=b,this.upcast=C,this.downcast=T,this.pureVirtualFunctions=[]}function Tr(t,e,s){for(;e!==s;)e.upcast||ae("Expected null or instance of "+s.name+", got an instance of "+e.name),t=e.upcast(t),e=e.baseClass;return t}function vn(t,e){if(e===null)return this.isReference&&ae("null is not a valid "+this.name),0;e.$$||ae('Cannot pass "'+$r(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name);var s=e.$$.ptrType.registeredClass,l=Tr(e.$$.ptr,s,this.registeredClass);return l}function Oe(t,e){var s;if(e===null)return this.isReference&&ae("null is not a valid "+this.name),this.isSmartPointer?(s=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,s),s):0;e.$$||ae('Cannot pass "'+$r(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&e.$$.ptrType.isConst&&ae("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);var l=e.$$.ptrType.registeredClass;if(s=Tr(e.$$.ptr,l,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&ae("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?s=e.$$.smartPtr:ae("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:s=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)s=e.$$.smartPtr;else{var g=e.clone();s=this.rawShare(s,At.toHandle(function(){g.delete()})),t!==null&&t.push(this.rawDestructor,s)}break;default:ae("Unsupporting sharing policy")}return s}function Cr(t,e){if(e===null)return this.isReference&&ae("null is not a valid "+this.name),0;e.$$||ae('Cannot pass "'+$r(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),e.$$.ptrType.isConst&&ae("Cannot convert argument of type "+e.$$.ptrType.name+" to parameter type "+this.name);var s=e.$$.ptrType.registeredClass,l=Tr(e.$$.ptr,s,this.registeredClass);return l}function vt(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t}function vr(t){this.rawDestructor&&this.rawDestructor(t)}function hr(t){t!==null&&t.delete()}function gr(){ht.prototype.getPointee=vt,ht.prototype.destructor=vr,ht.prototype.argPackAdvance=8,ht.prototype.readValueFromPointer=jt,ht.prototype.deleteObject=hr,ht.prototype.fromWireType=cn}function ht(t,e,s,l,g,b,C,T,E,x,N){this.name=t,this.registeredClass=e,this.isReference=s,this.isConst=l,this.isSmartPointer=g,this.pointeeType=b,this.sharingPolicy=C,this.rawGetPointee=T,this.rawConstructor=E,this.rawShare=x,this.rawDestructor=N,!g&&e.baseClass===void 0?l?(this.toWireType=vn,this.destructorFunction=null):(this.toWireType=Cr,this.destructorFunction=null):this.toWireType=Oe}function it(t,e,s){r.hasOwnProperty(t)||Wt("Replacing nonexistant public symbol"),r[t].overloadTable!==void 0&&s!==void 0?r[t].overloadTable[s]=e:(r[t]=e,r[t].argCount=s)}function Vr(t,e,s){var l=r["dynCall_"+t];return s&&s.length?l.apply(null,[e].concat(s)):l.call(null,e)}var He=[];function ot(t){var e=He[t];return e||(t>=He.length&&(He.length=t+1),He[t]=e=wr.get(t)),e}function Br(t,e,s){if(t.includes("j"))return Vr(t,e,s);var l=ot(e).apply(null,s);return l}function Ve(t,e){var s=[];return function(){return s.length=0,Object.assign(s,arguments),Br(t,e,s)}}function at(t,e){t=Pe(t);function s(){return t.includes("j")?Ve(t,e):ot(e)}var l=s();return typeof l!="function"&&ae("unknown function pointer with signature "+t+": "+e),l}var ar=void 0;function Nr(t){var e=a(t),s=Pe(e);return Y(e),s}function yr(t,e){var s=[],l={};function g(b){if(!l[b]&&!tt[b]){if(xt[b]){xt[b].forEach(g);return}s.push(b),l[b]=!0}}throw e.forEach(g),new ar(t+": "+s.map(Nr).join([", "]))}function Be(t,e,s,l,g,b,C,T,E,x,N,X,Z){N=Pe(N),b=at(g,b),T&&(T=at(C,T)),x&&(x=at(E,x)),Z=at(X,Z);var Te=lt(N);dn(Te,function(){yr("Cannot construct "+N+" due to unbound types",[l])}),be([t,e,s],l?[l]:[],function(oe){oe=oe[0];var ke,Ke;l?(ke=oe.registeredClass,Ke=ke.instancePrototype):Ke=We.prototype;var Lt=Me(Te,function(){if(Object.getPrototypeOf(this)!==un)throw new St("Use 'new' to construct "+N);if(Fr.constructor_body===void 0)throw new St(N+" has no accessible constructor");var Qn=Fr.constructor_body[arguments.length];if(Qn===void 0)throw new St("Tried to invoke ctor of "+N+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Fr.constructor_body).toString()+") parameters instead!");return Qn.apply(this,arguments)}),un=Object.create(Ke,{constructor:{value:Lt}});Lt.prototype=un;var Fr=new pn(N,Lt,un,Z,ke,b,T,x),gi=new ht(N,Fr,!0,!1,!1),Yn=new ht(N+"*",Fr,!1,!1,!1),Kn=new ht(N+" const*",Fr,!1,!0,!1);return Bt[t]={pointerType:Yn,constPointerType:Kn},it(Te,Lt),[gi,Yn,Kn]})}function Ne(t,e){for(var s=[],l=0;l>2]);return s}function sr(t,e){if(!(t instanceof Function))throw new TypeError("new_ called with constructor type "+typeof t+" which is not a function");var s=Me(t.name||"unknownFunctionName",function(){});s.prototype=t.prototype;var l=new s,g=t.apply(l,e);return g instanceof Object?g:l}function je(t,e,s,l,g){var b=e.length;b<2&&ae("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var C=e[1]!==null&&s!==null,T=!1,E=1;E0?", ":"")+X),Z+=(x?"var rv = ":"")+"invoker(fn"+(X.length>0?", ":"")+X+`); -`,T)Z+=`runDestructors(destructors); -`;else for(var E=C?1:2;E0);var C=Ne(e,s);g=at(l,g),be([],[t],function(T){T=T[0];var E="constructor "+T.name;if(T.registeredClass.constructor_body===void 0&&(T.registeredClass.constructor_body=[]),T.registeredClass.constructor_body[e-1]!==void 0)throw new St("Cannot register multiple constructors with identical number of parameters ("+(e-1)+") for class '"+T.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return T.registeredClass.constructor_body[e-1]=()=>{yr("Cannot construct "+T.name+" due to unbound types",C)},be([],C,function(x){return x.splice(1,0,null),T.registeredClass.constructor_body[e-1]=je(E,x,null,g,b),[]}),[]})}function Ar(t,e,s,l,g,b,C,T){var E=Ne(s,l);e=Pe(e),b=at(g,b),be([],[t],function(x){x=x[0];var N=x.name+"."+e;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),T&&x.registeredClass.pureVirtualFunctions.push(e);function X(){yr("Cannot call "+N+" due to unbound types",E)}var Z=x.registeredClass.instancePrototype,Te=Z[e];return Te===void 0||Te.overloadTable===void 0&&Te.className!==x.name&&Te.argCount===s-2?(X.argCount=s-2,X.className=x.name,Z[e]=X):(Lr(Z,e,N),Z[e].overloadTable[s-2]=X),be([],E,function(oe){var ke=je(N,oe,x,b,C);return Z[e].overloadTable===void 0?(ke.argCount=s-2,Z[e]=ke):Z[e].overloadTable[s-2]=ke,[]}),[]})}var gt=[],ze=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function st(t){t>4&&--ze[t].refcount===0&&(ze[t]=void 0,gt.push(t))}function hn(){for(var t=0,e=5;e(t||ae("Cannot use deleted val. handle = "+t),ze[t].value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var e=gt.length?gt.pop():ze.length;return ze[e]={refcount:1,value:t},e}}}};function gn(t,e){e=Pe(e),xe(t,{name:e,fromWireType:function(s){var l=At.toValue(s);return st(s),l},toWireType:function(s,l){return At.toHandle(l)},argPackAdvance:8,readValueFromPointer:jt,destructorFunction:null})}function $r(t){if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t}function yn(t,e){switch(e){case 2:return function(s){return this.fromWireType(Yt[s>>2])};case 3:return function(s){return this.fromWireType(Kt[s>>3])};default:throw new TypeError("Unknown float type: "+t)}}function fr(t,e,s){var l=Se(s);e=Pe(e),xe(t,{name:e,fromWireType:function(g){return g},toWireType:function(g,b){return b},argPackAdvance:8,readValueFromPointer:yn(e,l),destructorFunction:null})}function qr(t,e,s){switch(e){case 0:return s?function(g){return ne[g]}:function(g){return te[g]};case 1:return s?function(g){return fe[g>>1]}:function(g){return It[g>>1]};case 2:return s?function(g){return Ie[g>>2]}:function(g){return pe[g>>2]};default:throw new TypeError("Unknown integer type: "+t)}}function Rr(t,e,s,l,g){e=Pe(e);var b=Se(s),C=X=>X;if(l===0){var T=32-8*s;C=X=>X<>>T}var E=e.includes("unsigned"),x=(X,Z)=>{},N;E?N=function(X,Z){return x(Z,this.name),Z>>>0}:N=function(X,Z){return x(Z,this.name),Z},xe(t,{name:e,fromWireType:C,toWireType:N,argPackAdvance:8,readValueFromPointer:qr(e,b,l!==0),destructorFunction:null})}function _n(t,e,s){var l=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],g=l[e];function b(C){C=C>>2;var T=pe,E=T[C],x=T[C+1];return new g(ye,x,E)}s=Pe(s),xe(t,{name:s,fromWireType:b,argPackAdvance:8,readValueFromPointer:b},{ignoreDuplicateRegistrations:!0})}function mn(t,e){e=Pe(e);var s=e==="std::string";xe(t,{name:e,fromWireType:function(l){var g=pe[l>>2],b=l+4,C;if(s)for(var T=b,E=0;E<=g;++E){var x=b+E;if(E==g||te[x]==0){var N=x-T,X=Qe(T,N);C===void 0?C=X:(C+="\0",C+=X),T=x+1}}else{for(var Z=new Array(g),E=0;E>2]=b,s&&C)ce(g,E,b+1);else if(C)for(var x=0;x255&&(Y(E),ae("String has UTF-16 code units that do not fit in 8 bits")),te[E+x]=N}else for(var x=0;x>1,g=l+e/2;!(l>=g)&&It[l];)++l;if(s=l<<1,s-t>32&&Gr)return Gr.decode(te.subarray(t,s));for(var b="",C=0;!(C>=e/2);++C){var T=fe[t+C*2>>1];if(T==0)break;b+=String.fromCharCode(T)}return b}function bn(t,e,s){if(s===void 0&&(s=2147483647),s<2)return 0;s-=2;for(var l=e,g=s>1]=C,e+=2}return fe[e>>1]=0,e-l}function Pn(t){return t.length*2}function Tn(t,e){for(var s=0,l="";!(s>=e/4);){var g=Ie[t+s*4>>2];if(g==0)break;if(++s,g>=65536){var b=g-65536;l+=String.fromCharCode(55296|b>>10,56320|b&1023)}else l+=String.fromCharCode(g)}return l}function Jr(t,e,s){if(s===void 0&&(s=2147483647),s<4)return 0;for(var l=e,g=l+s-4,b=0;b=55296&&C<=57343){var T=t.charCodeAt(++b);C=65536+((C&1023)<<10)|T&1023}if(Ie[e>>2]=C,e+=4,e+4>g)break}return Ie[e>>2]=0,e-l}function Cn(t){for(var e=0,s=0;s=55296&&l<=57343&&++s,e+=4}return e}function An(t,e,s){s=Pe(s);var l,g,b,C,T;e===2?(l=wn,g=bn,C=Pn,b=()=>It,T=1):e===4&&(l=Tn,g=Jr,C=Cn,b=()=>pe,T=2),xe(t,{name:s,fromWireType:function(E){for(var x=pe[E>>2],N=b(),X,Z=E+4,Te=0;Te<=x;++Te){var oe=E+4+Te*e;if(Te==x||N[oe>>T]==0){var ke=oe-Z,Ke=l(Z,ke);X===void 0?X=Ke:(X+="\0",X+=Ke),Z=oe+e}}return Y(E),X},toWireType:function(E,x){typeof x!="string"&&ae("Cannot pass non-string to C++ string type "+s);var N=C(x),X=Q(4+N+e);return pe[X>>2]=N>>T,g(x,X+4,N+e),E!==null&&E.push(Y,X),X},argPackAdvance:8,readValueFromPointer:jt,destructorFunction:function(E){Y(E)}})}function Xr(t,e,s,l,g,b){ct[t]={name:Pe(e),rawConstructor:at(s,l),rawDestructor:at(g,b),fields:[]}}function Yr(t,e,s,l,g,b,C,T,E,x){ct[t].fields.push({fieldName:Pe(e),getterReturnType:s,getter:at(l,g),getterContext:b,setterArgumentType:C,setter:at(T,E),setterContext:x})}function $n(t,e){e=Pe(e),xe(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:function(){},toWireType:function(s,l){}})}function Kr(){throw 1/0}var Qr={};function Zr(t){var e=Qr[t];return e===void 0?Pe(t):e}function Er(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Rn(t){return t===0?At.toHandle(Er()):(t=Zr(t),At.toHandle(Er()[t]))}function En(t){t>4&&(ze[t].refcount+=1)}function en(t,e){var s=tt[t];return s===void 0&&ae(e+" has unknown type "+Nr(t)),s}function tn(t){for(var e="",s=0;spe,g="return function emval_allocator_"+t+`(constructor, argTypes, args) { - var HEAPU32 = getMemory(); -`,s=0;s>2)], 'parameter "+s+`'); -var arg`+s+" = argType"+s+`.readValueFromPointer(args); -args += argType`+s+`['argPackAdvance']; -argTypes += 4; -`;return g+="var obj = new constructor("+e+`); -return valueToHandle(obj); -} -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",g)(en,r,At.toHandle,l)}var rn={};function Sn(t,e,s,l){t=At.toValue(t);var g=rn[e];return g||(g=tn(e),rn[e]=g),g(t,s,l)}function kn(t,e){t=en(t,"_emval_take_value");var s=t.readValueFromPointer(e);return At.toHandle(s)}function Fn(){Ae("")}function Sr(t,e,s){te.copyWithin(t,e,e+s)}function Dn(){return 2147483648}function Mt(t){try{return Ge.grow(t-ye.byteLength+65535>>>16),cr(Ge.buffer),1}catch{}}function nn(t){var e=te.length;t=t>>>0;var s=Dn();if(t>s)return!1;let l=(E,x)=>E+(x-E%x)%x;for(var g=1;g<=4;g*=2){var b=e*(1+.2/g);b=Math.min(b,t+100663296);var C=Math.min(s,l(Math.max(t,b),65536)),T=Mt(C);if(T)return!0}return!1}var ft={};function on(){return z||"./this.program"}function Gt(){if(!Gt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:on()};for(var s in ft)ft[s]===void 0?delete e[s]:e[s]=ft[s];var l=[];for(var s in e)l.push(s+"="+e[s]);Gt.strings=l}return Gt.strings}function kr(t,e,s){for(var l=0;l>0]=t.charCodeAt(l);ne[e>>0]=0}function an(t,e){var s=0;return Gt().forEach(function(l,g){var b=e+s;pe[t+g*4>>2]=b,kr(l,b),s+=l.length+1}),0}function _r(t,e){var s=Gt();pe[t>>2]=s.length;var l=0;return s.forEach(function(g){l+=g.length+1}),pe[e>>2]=l,0}function sn(t){Ur()||(r.onExit&&r.onExit(t),$t=!0),B(t,new Ue(t))}function u(t,e){sn(t)}var f=u;function v(t){return 52}function P(t,e,s,l,g){return 70}var $=[null,[],[]];function F(t,e){var s=$[t];e===0||e===10?((t===1?de:$e)(Xt(s,0)),s.length=0):s.push(e)}function D(t,e,s,l){for(var g=0,b=0;b>2],T=pe[e+4>>2];e+=8;for(var E=0;E>2]=g,0}function R(t){var e=r["_"+t];return e}function U(t,e){ne.set(t,e)}function L(t,e,s,l,g){var b={string:oe=>{var ke=0;if(oe!=null&&oe!==0){var Ke=(oe.length<<2)+1;ke=A(Ke),ce(oe,ke,Ke)}return ke},array:oe=>{var ke=A(oe.length);return U(oe,ke),ke}};function C(oe){return e==="string"?Qe(oe):e==="boolean"?!!oe:oe}var T=R(t),E=[],x=0;if(l)for(var N=0;N0||(Ut(),Je>0))return;function e(){h||(h=!0,r.calledRun=!0,!$t&&(Ze(),W(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),et()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),e()},1)):e()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return m(),O.ready}})();d.exports=w})(ci);var Li=ci.exports,Vi=qn(Li);const Bi=new URL("/static/dv3d/assets/libjpegturbowasm_decode-daqMmuVl.wasm",import.meta.url),Vn={codec:void 0,decoder:void 0};function Ni(){if(Vn.codec)return Promise.resolve();const d=Vi({locateFile:y=>y.endsWith(".wasm")?Bi.toString():y});return new Promise((y,w)=>{d.then(k=>{Vn.codec=k,Vn.decoder=new k.JPEGDecoder,y()},w)})}async function zi(d,y){await Ni();const w=Vn.decoder;w.getEncodedBuffer(d.length).set(d),w.decode();const O=w.getFrameInfo(),r=w.getDecodedBuffer(),W={columns:O.width,rows:O.height,bitsPerPixel:O.bitsPerSample,signed:y.signed,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:O.componentCount},H=qi(O,r),M={frameInfo:O};return{...y,pixelData:H,imageInfo:W,encodeOptions:M,...M,...W}}function qi(d,y){return d.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}const Hn={JpegImage:void 0,decodeConfig:{}};function Gi(d){return Hn.decodeConfig=d,Hn.JpegImage?Promise.resolve():new Promise((y,w)=>{import("./jpeg-HBGIxCW8.js").then(k=>{Hn.JpegImage=k.default,y()}).catch(w)})}async function Ji(d,y){if(await Gi(),typeof Hn.JpegImage>"u")throw new Error("No JPEG Baseline decoder loaded");const w=new Hn.JpegImage;if(w.parse(y),w.colorTransform=!1,d.bitsAllocated===8)return d.pixelData=w.getData(d.columns,d.rows),d;if(d.bitsAllocated===16)return d.pixelData=w.getData16(d.columns,d.rows),d}const In={jpeg:void 0,decodeConfig:{}};function Xi(d){return In.decodeConfig=d,In.jpeg?Promise.resolve():new Promise((y,w)=>{import("./jpegLossless-B10gQeks.js").then(k=>{In.jpeg=k,y()},w)})}async function ti(d,y){if(await Xi(),typeof In.jpeg>"u"||typeof In.jpeg.lossless>"u"||typeof In.jpeg.lossless.Decoder>"u")throw new Error("No JPEG Lossless decoder loaded");const w=d.bitsAllocated<=8?1:2,k=y.buffer,r=new In.jpeg.lossless.Decoder().decode(k,y.byteOffset,y.length,w);return d.pixelRepresentation===0?d.bitsAllocated===16?(d.pixelData=new Uint16Array(r.buffer),d):(d.pixelData=new Uint8Array(r.buffer),d):(d.pixelData=new Int16Array(r.buffer),d)}var li={exports:{}};(function(d,y){var w=(()=>{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(k=k||__filename),function(O){O=O||{};var r=typeof O<"u"?O:{},W,H;r.ready=new Promise(function(u,f){W=u,H=f});var M=Object.assign({},r),z=typeof window=="object",B=typeof importScripts=="function",q=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",V="";function ee(u){return r.locateFile?r.locateFile(u,V):V+u}var G,re,se;if(q){var me=fn,le=fn;B?V=le.dirname(V)+"/":V=__dirname+"/",G=(u,f)=>(u=yt(u)?new URL(u):le.normalize(u),me.readFileSync(u,f?void 0:"utf8")),se=u=>{var f=G(u,!0);return f.buffer||(f=new Uint8Array(f)),f},re=(u,f,v)=>{u=yt(u)?new URL(u):le.normalize(u),me.readFile(u,function(P,$){P?v(P):f($.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(u){if(!(u instanceof xr))throw u}),process.on("unhandledRejection",function(u){throw u}),r.inspect=function(){return"[Emscripten Module object]"}}else(z||B)&&(B?V=self.location.href:typeof document<"u"&&document.currentScript&&(V=document.currentScript.src),k&&(V=k),V.indexOf("blob:")!==0?V=V.substr(0,V.replace(/[?#].*/,"").lastIndexOf("/")+1):V="",G=u=>{var f=new XMLHttpRequest;return f.open("GET",u,!1),f.send(null),f.responseText},B&&(se=u=>{var f=new XMLHttpRequest;return f.open("GET",u,!1),f.responseType="arraybuffer",f.send(null),new Uint8Array(f.response)}),re=(u,f,v)=>{var P=new XMLHttpRequest;P.open("GET",u,!0),P.responseType="arraybuffer",P.onload=()=>{if(P.status==200||P.status==0&&P.response){f(P.response);return}v()},P.onerror=v,P.send(null)});r.print||console.log.bind(console);var Ce=r.printErr||console.warn.bind(console);Object.assign(r,M),M=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit;var we;r.wasmBinary&&(we=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&Zt("no native wasm support detected");var ve,de=!1;function $e(u,f){u||Zt(f)}var qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Jt(u,f,v){for(var P=f+v,$=f;u[$]&&!($>=P);)++$;if($-f>16&&u.buffer&&qe)return qe.decode(u.subarray(f,$));for(var F="";f<$;){var D=u[f++];if(!(D&128)){F+=String.fromCharCode(D);continue}var R=u[f++]&63;if((D&224)==192){F+=String.fromCharCode((D&31)<<6|R);continue}var U=u[f++]&63;if((D&240)==224?D=(D&15)<<12|R<<6|U:D=(D&7)<<18|R<<12|U<<6|u[f++]&63,D<65536)F+=String.fromCharCode(D);else{var L=D-65536;F+=String.fromCharCode(55296|L>>10,56320|L&1023)}}return F}function Ge(u,f){return u?Jt(he,u,f):""}function $t(u,f,v,P){if(!(P>0))return 0;for(var $=v,F=v+P-1,D=0;D=55296&&R<=57343){var U=u.charCodeAt(++D);R=65536+((R&1023)<<10)|U&1023}if(R<=127){if(v>=F)break;f[v++]=R}else if(R<=2047){if(v+1>=F)break;f[v++]=192|R>>6,f[v++]=128|R&63}else if(R<=65535){if(v+2>=F)break;f[v++]=224|R>>12,f[v++]=128|R>>6&63,f[v++]=128|R&63}else{if(v+3>=F)break;f[v++]=240|R>>18,f[v++]=128|R>>12&63,f[v++]=128|R>>6&63,f[v++]=128|R&63}}return f[v]=0,v-$}function Ot(u,f,v){return $t(u,he,f,v)}function mr(u){for(var f=0,v=0;v=55296&&P<=57343?(f+=4,++v):f+=3}return f}var Xt,Qe,he,ce,ge,ye,ne,te,fe;function It(u){Xt=u,r.HEAP8=Qe=new Int8Array(u),r.HEAP16=ce=new Int16Array(u),r.HEAP32=ye=new Int32Array(u),r.HEAPU8=he=new Uint8Array(u),r.HEAPU16=ge=new Uint16Array(u),r.HEAPU32=ne=new Uint32Array(u),r.HEAPF32=te=new Float32Array(u),r.HEAPF64=fe=new Float64Array(u)}r.INITIAL_MEMORY;var Ie,pe=[],Yt=[],Kt=[];function cr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Or(r.preRun.shift());Vt(pe)}function wr(){Vt(Yt)}function Dr(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Ur(r.postRun.shift());Vt(Kt)}function Or(u){pe.unshift(u)}function Ir(u){Yt.unshift(u)}function Ur(u){Kt.unshift(u)}var Ut=0,Ze=null;function et(u){Ut++,r.monitorRunDependencies&&r.monitorRunDependencies(Ut)}function Qt(u){if(Ut--,r.monitorRunDependencies&&r.monitorRunDependencies(Ut),Ut==0&&Ze){var f=Ze;Ze=null,f()}}function Zt(u){r.onAbort&&r.onAbort(u),u="Aborted("+u+")",Ce(u),de=!0,u+=". Build with -sASSERTIONS for more info.";var f=new WebAssembly.RuntimeError(u);throw H(f),f}var er="data:application/octet-stream;base64,";function Je(u){return u.startsWith(er)}function yt(u){return u.startsWith("file://")}var Re;Re="charlswasm_decode.wasm",Je(Re)||(Re=ee(Re));function Ee(u){try{if(u==Re&&we)return new Uint8Array(we);if(se)return se(u);throw"both async and sync fetching of the wasm failed"}catch(f){Zt(f)}}function Ae(){if(!we&&(z||B)){if(typeof fetch=="function"&&!yt(Re))return fetch(Re,{credentials:"same-origin"}).then(function(u){if(!u.ok)throw"failed to load wasm binary file at '"+Re+"'";return u.arrayBuffer()}).catch(function(){return Ee(Re)});if(re)return new Promise(function(u,f){re(Re,function(v){u(new Uint8Array(v))},f)})}return Promise.resolve().then(function(){return Ee(Re)})}function jr(){var u={a:Dn};function f(D,R){var U=D.exports;r.asm=U,ve=r.asm.z,It(ve.buffer),Ie=r.asm.C,Ir(r.asm.A),Qt()}et();function v(D){f(D.instance)}function P(D){return Ae().then(function(R){return WebAssembly.instantiate(R,u)}).then(function(R){return R}).then(D,function(R){Ce("failed to asynchronously prepare wasm: "+R),Zt(R)})}function $(){return!we&&typeof WebAssembly.instantiateStreaming=="function"&&!Je(Re)&&!yt(Re)&&!q&&typeof fetch=="function"?fetch(Re,{credentials:"same-origin"}).then(function(D){var R=WebAssembly.instantiateStreaming(D,u);return R.then(v,function(U){return Ce("wasm streaming compile failed: "+U),Ce("falling back to ArrayBuffer instantiation"),P(v)})}):P(v)}if(r.instantiateWasm)try{var F=r.instantiateWasm(u,f);return F}catch(D){Ce("Module.instantiateWasm callback failed with error: "+D),H(D)}return $().catch(H),{}}function xr(u){this.name="ExitStatus",this.message="Program terminated with exit("+u+")",this.status=u}function Vt(u){for(;u.length>0;)u.shift()(r)}function Fe(u){this.excPtr=u,this.ptr=u-24,this.set_type=function(f){ne[this.ptr+4>>2]=f},this.get_type=function(){return ne[this.ptr+4>>2]},this.set_destructor=function(f){ne[this.ptr+8>>2]=f},this.get_destructor=function(){return ne[this.ptr+8>>2]},this.set_refcount=function(f){ye[this.ptr>>2]=f},this.set_caught=function(f){f=f?1:0,Qe[this.ptr+12>>0]=f},this.get_caught=function(){return Qe[this.ptr+12>>0]!=0},this.set_rethrown=function(f){f=f?1:0,Qe[this.ptr+13>>0]=f},this.get_rethrown=function(){return Qe[this.ptr+13>>0]!=0},this.init=function(f,v){this.set_adjusted_ptr(0),this.set_type(f),this.set_destructor(v),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var f=ye[this.ptr>>2];ye[this.ptr>>2]=f+1},this.release_ref=function(){var f=ye[this.ptr>>2];return ye[this.ptr>>2]=f-1,f===1},this.set_adjusted_ptr=function(f){ne[this.ptr+16>>2]=f},this.get_adjusted_ptr=function(){return ne[this.ptr+16>>2]},this.get_exception_ptr=function(){var f=an(this.get_type());if(f)return ne[this.excPtr>>2];var v=this.get_adjusted_ptr();return v!==0?v:this.excPtr}}function tr(u,f,v){var P=new Fe(u);throw P.init(f,v),u}var lr={};function Wr(u){for(;u.length;){var f=u.pop(),v=u.pop();v(f)}}function Ue(u){return this.fromWireType(ye[u>>2])}var Xe={},_e={},_t={},ct=48,Rt=57;function jt(u){if(u===void 0)return"_unknown";u=u.replace(/[^a-zA-Z0-9_]/g,"$");var f=u.charCodeAt(0);return f>=ct&&f<=Rt?"_"+u:u}function Et(u,f){return u=jt(u),new Function("body","return function "+u+`() { - "use strict"; return body.apply(this, arguments); -}; -`)(f)}function tt(u,f){var v=Et(f,function(P){this.name=f,this.message=P;var $=new Error(P).stack;$!==void 0&&(this.stack=this.toString()+` -`+$.replace(/^Error(:[^\n]*)?\n/,""))});return v.prototype=Object.create(u.prototype),v.prototype.constructor=v,v.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},v}var xt=void 0;function mt(u){throw new xt(u)}function wt(u,f,v){u.forEach(function(R){_t[R]=f});function P(R){var U=v(R);U.length!==u.length&&mt("Mismatched type converter count");for(var L=0;L{_e.hasOwnProperty(R)?$[U]=_e[R]:(F.push(R),Xe.hasOwnProperty(R)||(Xe[R]=[]),Xe[R].push(()=>{$[U]=_e[R],++D,D===F.length&&P($)}))}),F.length===0&&P($)}function lt(u){var f=lr[u];delete lr[u];var v=f.rawConstructor,P=f.rawDestructor,$=f.fields,F=$.map(D=>D.getterReturnType).concat($.map(D=>D.setterArgumentType));wt([u],F,D=>{var R={};return $.forEach((U,L)=>{var J=U.fieldName,Q=D[L],Y=U.getter,a=U.getterContext,o=D[L+$.length],p=U.setter,_=U.setterContext;R[J]={read:A=>Q.fromWireType(Y(a,A)),write:(A,j)=>{var I=[];p(_,A,o.toWireType(I,j)),Wr(I)}}}),[{name:f.name,fromWireType:function(U){var L={};for(var J in R)L[J]=R[J].read(U);return P(U),L},toWireType:function(U,L){for(var J in R)if(!(J in L))throw new TypeError('Missing field: "'+J+'"');var Q=v();for(J in R)R[J].write(Q,L[J]);return U!==null&&U.push(P,Q),Q},argPackAdvance:8,readValueFromPointer:Ue,destructorFunction:P}]})}function Me(u,f,v,P,$){}function rt(u){switch(u){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+u)}}function rr(){for(var u=new Array(256),f=0;f<256;++f)u[f]=String.fromCharCode(f);Wt=u}var Wt=void 0;function be(u){for(var f="",v=u;he[v];)f+=Wt[he[v++]];return f}var bt=void 0;function K(u){throw new bt(u)}function Se(u,f,v={}){if(!("argPackAdvance"in f))throw new TypeError("registerType registeredInstance requires argPackAdvance");var P=f.name;if(u||K('type "'+P+'" must have a positive integer typeid pointer'),_e.hasOwnProperty(u)){if(v.ignoreDuplicateRegistrations)return;K("Cannot register type '"+P+"' twice")}if(_e[u]=f,delete _t[u],Xe.hasOwnProperty(u)){var $=Xe[u];delete Xe[u],$.forEach(F=>F())}}function ue(u,f,v,P,$){var F=rt(v);f=be(f),Se(u,{name:f,fromWireType:function(D){return!!D},toWireType:function(D,R){return R?P:$},argPackAdvance:8,readValueFromPointer:function(D){var R;if(v===1)R=Qe;else if(v===2)R=ce;else if(v===4)R=ye;else throw new TypeError("Unknown boolean type size: "+f);return this.fromWireType(R[D>>F])},destructorFunction:null})}function Le(u){if(!(this instanceof Ye)||!(u instanceof Ye))return!1;for(var f=this.$$.ptrType.registeredClass,v=this.$$.ptr,P=u.$$.ptrType.registeredClass,$=u.$$.ptr;f.baseClass;)v=f.upcast(v),f=f.baseClass;for(;P.baseClass;)$=P.upcast($),P=P.baseClass;return f===P&&v===$}function Pe(u){return{count:u.count,deleteScheduled:u.deleteScheduled,preservePointerOnDelete:u.preservePointerOnDelete,ptr:u.ptr,ptrType:u.ptrType,smartPtr:u.smartPtr,smartPtrType:u.smartPtrType}}function St(u){function f(v){return v.$$.ptrType.registeredClass.name}K(f(u)+" instance already deleted")}var ae=!1;function xe(u){}function br(u){u.smartPtr?u.smartPtrType.rawDestructor(u.smartPtr):u.ptrType.registeredClass.rawDestructor(u.ptr)}function dr(u){u.count.value-=1;var f=u.count.value===0;f&&br(u)}function De(u,f,v){if(f===v)return u;if(v.baseClass===void 0)return null;var P=De(u,f,v.baseClass);return P===null?null:v.downcast(P)}var dt={};function ie(){return Object.keys(Nt).length}function nt(){var u=[];for(var f in Nt)Nt.hasOwnProperty(f)&&u.push(Nt[f]);return u}var nr=[];function pr(){for(;nr.length;){var u=nr.pop();u.$$.deleteScheduled=!1,u.delete()}}var pt=void 0;function Bt(u){pt=u,nr.length&&pt&&pt(pr)}function Ht(){r.getInheritedInstanceCount=ie,r.getLiveInheritedInstances=nt,r.flushPendingDeletes=pr,r.setDelayFunction=Bt}var Nt={};function ir(u,f){for(f===void 0&&K("ptr should not be undefined");u.baseClass;)f=u.upcast(f),u=u.baseClass;return f}function kt(u,f){return f=ir(u,f),Nt[f]}function Pt(u,f){(!f.ptrType||!f.ptr)&&mt("makeClassHandle requires ptr and ptrType");var v=!!f.smartPtrType,P=!!f.smartPtr;return v!==P&&mt("Both smartPtrType and smartPtr must be specified"),f.count={value:1},Ft(Object.create(u,{$$:{value:f}}))}function Hr(u){var f=this.getPointee(u);if(!f)return this.destructor(u),null;var v=kt(this.registeredClass,f);if(v!==void 0){if(v.$$.count.value===0)return v.$$.ptr=f,v.$$.smartPtr=u,v.clone();var P=v.clone();return this.destructor(u),P}function $(){return this.isSmartPointer?Pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:f,smartPtrType:this,smartPtr:u}):Pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:u})}var F=this.registeredClass.getActualType(f),D=dt[F];if(!D)return $.call(this);var R;this.isConst?R=D.constPointerType:R=D.pointerType;var U=De(f,this.registeredClass,R.registeredClass);return U===null?$.call(this):this.isSmartPointer?Pt(R.registeredClass.instancePrototype,{ptrType:R,ptr:U,smartPtrType:this,smartPtr:u}):Pt(R.registeredClass.instancePrototype,{ptrType:R,ptr:U})}function Ft(u){return typeof FinalizationRegistry>"u"?(Ft=f=>f,u):(ae=new FinalizationRegistry(f=>{dr(f.$$)}),Ft=f=>{var v=f.$$,P=!!v.smartPtr;if(P){var $={$$:v};ae.register(f,$,f)}return f},xe=f=>ae.unregister(f),Ft(u))}function or(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var u=Ft(Object.create(Object.getPrototypeOf(this),{$$:{value:Pe(this.$$)}}));return u.$$.count.value+=1,u.$$.deleteScheduled=!1,u}function Tt(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),xe(this),dr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Pr(){return!this.$$.ptr}function Dt(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&K("Object already scheduled for deletion"),nr.push(this),nr.length===1&&pt&&pt(pr),this.$$.deleteScheduled=!0,this}function cn(){Ye.prototype.isAliasOf=Le,Ye.prototype.clone=or,Ye.prototype.delete=Tt,Ye.prototype.isDeleted=Pr,Ye.prototype.deleteLater=Dt}function Ye(){}function zt(u,f,v){if(u[f].overloadTable===void 0){var P=u[f];u[f]=function(){return u[f].overloadTable.hasOwnProperty(arguments.length)||K("Function '"+v+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+u[f].overloadTable+")!"),u[f].overloadTable[arguments.length].apply(this,arguments)},u[f].overloadTable=[],u[f].overloadTable[P.argCount]=P}}function Ct(u,f,v){r.hasOwnProperty(u)?((v===void 0||r[u].overloadTable!==void 0&&r[u].overloadTable[v]!==void 0)&&K("Cannot register public name '"+u+"' twice"),zt(r,u,u),r.hasOwnProperty(v)&&K("Cannot register multiple overloads of a function with the same number of arguments ("+v+")!"),r[u].overloadTable[v]=f):(r[u]=f,v!==void 0&&(r[u].numArguments=v))}function Mr(u,f,v,P,$,F,D,R){this.name=u,this.constructor=f,this.instancePrototype=v,this.rawDestructor=P,this.baseClass=$,this.getActualType=F,this.upcast=D,this.downcast=R,this.pureVirtualFunctions=[]}function qt(u,f,v){for(;f!==v;)f.upcast||K("Expected null or instance of "+v.name+", got an instance of "+f.name),u=f.upcast(u),f=f.baseClass;return u}function ln(u,f){if(f===null)return this.isReference&&K("null is not a valid "+this.name),0;f.$$||K('Cannot pass "'+st(f)+'" as a '+this.name),f.$$.ptr||K("Cannot pass deleted object as a pointer of type "+this.name);var v=f.$$.ptrType.registeredClass,P=qt(f.$$.ptr,v,this.registeredClass);return P}function We(u,f){var v;if(f===null)return this.isReference&&K("null is not a valid "+this.name),this.isSmartPointer?(v=this.rawConstructor(),u!==null&&u.push(this.rawDestructor,v),v):0;f.$$||K('Cannot pass "'+st(f)+'" as a '+this.name),f.$$.ptr||K("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&f.$$.ptrType.isConst&&K("Cannot convert argument of type "+(f.$$.smartPtrType?f.$$.smartPtrType.name:f.$$.ptrType.name)+" to parameter type "+this.name);var P=f.$$.ptrType.registeredClass;if(v=qt(f.$$.ptr,P,this.registeredClass),this.isSmartPointer)switch(f.$$.smartPtr===void 0&&K("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:f.$$.smartPtrType===this?v=f.$$.smartPtr:K("Cannot convert argument of type "+(f.$$.smartPtrType?f.$$.smartPtrType.name:f.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:v=f.$$.smartPtr;break;case 2:if(f.$$.smartPtrType===this)v=f.$$.smartPtr;else{var $=f.clone();v=this.rawShare(v,gt.toHandle(function(){$.delete()})),u!==null&&u.push(this.rawDestructor,v)}break;default:K("Unsupporting sharing policy")}return v}function Lr(u,f){if(f===null)return this.isReference&&K("null is not a valid "+this.name),0;f.$$||K('Cannot pass "'+st(f)+'" as a '+this.name),f.$$.ptr||K("Cannot pass deleted object as a pointer of type "+this.name),f.$$.ptrType.isConst&&K("Cannot convert argument of type "+f.$$.ptrType.name+" to parameter type "+this.name);var v=f.$$.ptrType.registeredClass,P=qt(f.$$.ptr,v,this.registeredClass);return P}function dn(u){return this.rawGetPointee&&(u=this.rawGetPointee(u)),u}function pn(u){this.rawDestructor&&this.rawDestructor(u)}function Tr(u){u!==null&&u.delete()}function vn(){Oe.prototype.getPointee=dn,Oe.prototype.destructor=pn,Oe.prototype.argPackAdvance=8,Oe.prototype.readValueFromPointer=Ue,Oe.prototype.deleteObject=Tr,Oe.prototype.fromWireType=Hr}function Oe(u,f,v,P,$,F,D,R,U,L,J){this.name=u,this.registeredClass=f,this.isReference=v,this.isConst=P,this.isSmartPointer=$,this.pointeeType=F,this.sharingPolicy=D,this.rawGetPointee=R,this.rawConstructor=U,this.rawShare=L,this.rawDestructor=J,!$&&f.baseClass===void 0?P?(this.toWireType=ln,this.destructorFunction=null):(this.toWireType=Lr,this.destructorFunction=null):this.toWireType=We}function Cr(u,f,v){r.hasOwnProperty(u)||mt("Replacing nonexistant public symbol"),r[u].overloadTable!==void 0&&v!==void 0?r[u].overloadTable[v]=f:(r[u]=f,r[u].argCount=v)}function vt(u,f,v){var P=r["dynCall_"+u];return v&&v.length?P.apply(null,[f].concat(v)):P.call(null,f)}var vr=[];function hr(u){var f=vr[u];return f||(u>=vr.length&&(vr.length=u+1),vr[u]=f=Ie.get(u)),f}function gr(u,f,v){if(u.includes("j"))return vt(u,f,v);var P=hr(f).apply(null,v);return P}function ht(u,f){var v=[];return function(){return v.length=0,Object.assign(v,arguments),gr(u,f,v)}}function it(u,f){u=be(u);function v(){return u.includes("j")?ht(u,f):hr(f)}var P=v();return typeof P!="function"&&K("unknown function pointer with signature "+u+": "+f),P}var Vr=void 0;function He(u){var f=nn(u),v=be(f);return ft(f),v}function ot(u,f){var v=[],P={};function $(F){if(!P[F]&&!_e[F]){if(_t[F]){_t[F].forEach($);return}v.push(F),P[F]=!0}}throw f.forEach($),new Vr(u+": "+v.map(He).join([", "]))}function Br(u,f,v,P,$,F,D,R,U,L,J,Q,Y){J=be(J),F=it($,F),R&&(R=it(D,R)),L&&(L=it(U,L)),Y=it(Q,Y);var a=jt(J);Ct(a,function(){ot("Cannot construct "+J+" due to unbound types",[P])}),wt([u,f,v],P?[P]:[],function(o){o=o[0];var p,_;P?(p=o.registeredClass,_=p.instancePrototype):_=Ye.prototype;var A=Et(a,function(){if(Object.getPrototypeOf(this)!==j)throw new bt("Use 'new' to construct "+J);if(I.constructor_body===void 0)throw new bt(J+" has no accessible constructor");var c=I.constructor_body[arguments.length];if(c===void 0)throw new bt("Tried to invoke ctor of "+J+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(I.constructor_body).toString()+") parameters instead!");return c.apply(this,arguments)}),j=Object.create(_,{constructor:{value:A}});A.prototype=j;var I=new Mr(J,A,j,Y,p,F,R,L),S=new Oe(J,I,!0,!1,!1),n=new Oe(J+"*",I,!1,!1,!1),i=new Oe(J+" const*",I,!1,!0,!1);return dt[u]={pointerType:n,constPointerType:i},Cr(a,A),[S,n,i]})}function Ve(u,f){for(var v=[],P=0;P>2]);return v}function at(u,f){if(!(u instanceof Function))throw new TypeError("new_ called with constructor type "+typeof u+" which is not a function");var v=Et(u.name||"unknownFunctionName",function(){});v.prototype=u.prototype;var P=new v,$=u.apply(P,f);return $ instanceof Object?$:P}function ar(u,f,v,P,$){var F=f.length;F<2&&K("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var D=f[1]!==null&&v!==null,R=!1,U=1;U0?", ":"")+Q),Y+=(L?"var rv = ":"")+"invoker(fn"+(Q.length>0?", ":"")+Q+`); -`,R)Y+=`runDestructors(destructors); -`;else for(var U=D?1:2;U0);var D=Ve(f,v);$=it(P,$),wt([],[u],function(R){R=R[0];var U="constructor "+R.name;if(R.registeredClass.constructor_body===void 0&&(R.registeredClass.constructor_body=[]),R.registeredClass.constructor_body[f-1]!==void 0)throw new bt("Cannot register multiple constructors with identical number of parameters ("+(f-1)+") for class '"+R.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return R.registeredClass.constructor_body[f-1]=()=>{ot("Cannot construct "+R.name+" due to unbound types",D)},wt([],D,function(L){return L.splice(1,0,null),R.registeredClass.constructor_body[f-1]=ar(U,L,null,$,F),[]}),[]})}function yr(u,f,v,P,$,F,D,R){var U=Ve(v,P);f=be(f),F=it($,F),wt([],[u],function(L){L=L[0];var J=L.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]),R&&L.registeredClass.pureVirtualFunctions.push(f);function Q(){ot("Cannot call "+J+" due to unbound types",U)}var Y=L.registeredClass.instancePrototype,a=Y[f];return a===void 0||a.overloadTable===void 0&&a.className!==L.name&&a.argCount===v-2?(Q.argCount=v-2,Q.className=L.name,Y[f]=Q):(zt(Y,f,J),Y[f].overloadTable[v-2]=Q),wt([],U,function(o){var p=ar(J,o,L,F,D);return Y[f].overloadTable===void 0?(p.argCount=v-2,Y[f]=p):Y[f].overloadTable[v-2]=p,[]}),[]})}var Be=[],Ne=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function sr(u){u>4&&--Ne[u].refcount===0&&(Ne[u]=void 0,Be.push(u))}function je(){for(var u=0,f=5;f(u||K("Cannot use deleted val. handle = "+u),Ne[u].value),toHandle:u=>{switch(u){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var f=Be.length?Be.pop():Ne.length;return Ne[f]={refcount:1,value:u},f}}}};function ze(u,f){f=be(f),Se(u,{name:f,fromWireType:function(v){var P=gt.toValue(v);return sr(v),P},toWireType:function(v,P){return gt.toHandle(P)},argPackAdvance:8,readValueFromPointer:Ue,destructorFunction:null})}function st(u){if(u===null)return"null";var f=typeof u;return f==="object"||f==="array"||f==="function"?u.toString():""+u}function hn(u,f){switch(f){case 2:return function(v){return this.fromWireType(te[v>>2])};case 3:return function(v){return this.fromWireType(fe[v>>3])};default:throw new TypeError("Unknown float type: "+u)}}function ur(u,f,v){var P=rt(v);f=be(f),Se(u,{name:f,fromWireType:function($){return $},toWireType:function($,F){return F},argPackAdvance:8,readValueFromPointer:hn(f,P),destructorFunction:null})}function ut(u,f,v,P,$,F){var D=Ve(f,v);u=be(u),$=it(P,$),Ct(u,function(){ot("Cannot call "+u+" due to unbound types",D)},f-1),wt([],D,function(R){var U=[R[0],null].concat(R.slice(1));return Cr(u,ar(u,U,null,$,F),f-1),[]})}function At(u,f,v){switch(f){case 0:return v?function($){return Qe[$]}:function($){return he[$]};case 1:return v?function($){return ce[$>>1]}:function($){return ge[$>>1]};case 2:return v?function($){return ye[$>>2]}:function($){return ne[$>>2]};default:throw new TypeError("Unknown integer type: "+u)}}function gn(u,f,v,P,$){f=be(f);var F=rt(v),D=Q=>Q;if(P===0){var R=32-8*v;D=Q=>Q<>>R}var U=f.includes("unsigned"),L=(Q,Y)=>{},J;U?J=function(Q,Y){return L(Y,this.name),Y>>>0}:J=function(Q,Y){return L(Y,this.name),Y},Se(u,{name:f,fromWireType:D,toWireType:J,argPackAdvance:8,readValueFromPointer:At(f,F,P!==0),destructorFunction:null})}function $r(u,f,v){var P=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],$=P[f];function F(D){D=D>>2;var R=ne,U=R[D],L=R[D+1];return new $(Xt,L,U)}v=be(v),Se(u,{name:v,fromWireType:F,argPackAdvance:8,readValueFromPointer:F},{ignoreDuplicateRegistrations:!0})}function yn(u,f){f=be(f);var v=f==="std::string";Se(u,{name:f,fromWireType:function(P){var $=ne[P>>2],F=P+4,D;if(v)for(var R=F,U=0;U<=$;++U){var L=F+U;if(U==$||he[L]==0){var J=L-R,Q=Ge(R,J);D===void 0?D=Q:(D+="\0",D+=Q),R=L+1}}else{for(var Y=new Array($),U=0;U<$;++U)Y[U]=String.fromCharCode(he[F+U]);D=Y.join("")}return ft(P),D},toWireType:function(P,$){$ instanceof ArrayBuffer&&($=new Uint8Array($));var F,D=typeof $=="string";D||$ instanceof Uint8Array||$ instanceof Uint8ClampedArray||$ instanceof Int8Array||K("Cannot pass non-string to std::string"),v&&D?F=mr($):F=$.length;var R=Mt(4+F+1),U=R+4;if(ne[R>>2]=F,v&&D)Ot($,U,F+1);else if(D)for(var L=0;L255&&(ft(U),K("String has UTF-16 code units that do not fit in 8 bits")),he[U+L]=J}else for(var L=0;L>1,$=P+f/2;!(P>=$)&&ge[P];)++P;if(v=P<<1,v-u>32&&fr)return fr.decode(he.subarray(u,v));for(var F="",D=0;!(D>=f/2);++D){var R=ce[u+D*2>>1];if(R==0)break;F+=String.fromCharCode(R)}return F}function Rr(u,f,v){if(v===void 0&&(v=2147483647),v<2)return 0;v-=2;for(var P=f,$=v>1]=D,f+=2}return ce[f>>1]=0,f-P}function _n(u){return u.length*2}function mn(u,f){for(var v=0,P="";!(v>=f/4);){var $=ye[u+v*4>>2];if($==0)break;if(++v,$>=65536){var F=$-65536;P+=String.fromCharCode(55296|F>>10,56320|F&1023)}else P+=String.fromCharCode($)}return P}function Gr(u,f,v){if(v===void 0&&(v=2147483647),v<4)return 0;for(var P=f,$=P+v-4,F=0;F=55296&&D<=57343){var R=u.charCodeAt(++F);D=65536+((D&1023)<<10)|R&1023}if(ye[f>>2]=D,f+=4,f+4>$)break}return ye[f>>2]=0,f-P}function wn(u){for(var f=0,v=0;v=55296&&P<=57343&&++v,f+=4}return f}function bn(u,f,v){v=be(v);var P,$,F,D,R;f===2?(P=qr,$=Rr,D=_n,F=()=>ge,R=1):f===4&&(P=mn,$=Gr,D=wn,F=()=>ne,R=2),Se(u,{name:v,fromWireType:function(U){for(var L=ne[U>>2],J=F(),Q,Y=U+4,a=0;a<=L;++a){var o=U+4+a*f;if(a==L||J[o>>R]==0){var p=o-Y,_=P(Y,p);Q===void 0?Q=_:(Q+="\0",Q+=_),Y=o+f}}return ft(U),Q},toWireType:function(U,L){typeof L!="string"&&K("Cannot pass non-string to C++ string type "+v);var J=D(L),Q=Mt(4+J+f);return ne[Q>>2]=J>>R,$(L,Q+4,J+f),U!==null&&U.push(ft,Q),Q},argPackAdvance:8,readValueFromPointer:Ue,destructorFunction:function(U){ft(U)}})}function Pn(u,f,v,P,$,F){lr[u]={name:be(f),rawConstructor:it(v,P),rawDestructor:it($,F),fields:[]}}function Tn(u,f,v,P,$,F,D,R,U,L){lr[u].fields.push({fieldName:be(f),getterReturnType:v,getter:it(P,$),getterContext:F,setterArgumentType:D,setter:it(R,U),setterContext:L})}function Jr(u,f){f=be(f),Se(u,{isVoid:!0,name:f,argPackAdvance:0,fromWireType:function(){},toWireType:function(v,P){}})}var Cn={};function An(u){var f=Cn[u];return f===void 0?be(u):f}function Xr(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Yr(u){return u===0?gt.toHandle(Xr()):(u=An(u),gt.toHandle(Xr()[u]))}function $n(u){u>4&&(Ne[u].refcount+=1)}function Kr(u,f){var v=_e[u];return v===void 0&&K(f+" has unknown type "+He(u)),v}function Qr(u){for(var f="",v=0;vne,$="return function emval_allocator_"+u+`(constructor, argTypes, args) { - var HEAPU32 = getMemory(); -`,v=0;v>2)], 'parameter "+v+`'); -var arg`+v+" = argType"+v+`.readValueFromPointer(args); -args += argType`+v+`['argPackAdvance']; -argTypes += 4; -`;return $+="var obj = new constructor("+f+`); -return valueToHandle(obj); -} -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",$)(Kr,r,gt.toHandle,P)}var Zr={};function Er(u,f,v,P){u=gt.toValue(u);var $=Zr[f];return $||($=Qr(f),Zr[f]=$),$(u,v,P)}function Rn(u,f){u=Kr(u,"_emval_take_value");var v=u.readValueFromPointer(f);return gt.toHandle(v)}function En(){Zt("")}function en(u,f,v){he.copyWithin(u,f,f+v)}function tn(){return 2147483648}function rn(u){try{return ve.grow(u-Xt.byteLength+65535>>>16),It(ve.buffer),1}catch{}}function Sn(u){var f=he.length;u=u>>>0;var v=tn();if(u>v)return!1;let P=(U,L)=>U+(L-U%L)%L;for(var $=1;$<=4;$*=2){var F=f*(1+.2/$);F=Math.min(F,u+100663296);var D=Math.min(v,P(Math.max(u,F),65536)),R=rn(D);if(R)return!0}return!1}function kn(u){var f=r["_"+u];return f}function Fn(u,f){Qe.set(u,f)}function Sr(u,f,v,P,$){var F={string:o=>{var p=0;if(o!=null&&o!==0){var _=(o.length<<2)+1;p=kr(_),Ot(o,p,_)}return p},array:o=>{var p=kr(o.length);return Fn(o,p),p}};function D(o){return f==="string"?Ge(o):f==="boolean"?!!o:o}var R=kn(u),U=[],L=0;if(P)for(var J=0;J0||(cr(),Ut>0))return;function f(){_r||(_r=!0,r.calledRun=!0,!de&&(wr(),W(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Dr()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),f()},1)):f()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return sn(),O.ready}})();d.exports=w})(li);var Yi=li.exports,Ki=qn(Yi);const Qi=new URL("/static/dv3d/assets/charlswasm_decode-484ovEoR.wasm",import.meta.url),jn={codec:void 0,decoder:void 0,decodeConfig:{}};function Zi(d){return typeof d=="number"?jn.codec.getExceptionMessage(d):d}function eo(d){if(jn.decodeConfig=d,jn.codec)return Promise.resolve();const y=Ki({locateFile:w=>w.endsWith(".wasm")?Qi.toString():w});return new Promise((w,k)=>{y.then(O=>{jn.codec=O,jn.decoder=new O.JpegLSDecoder,w()},k)})}async function ri(d,y){try{await eo();const w=jn.decoder;w.getEncodedBuffer(d.length).set(d),w.decode();const O=w.getFrameInfo(),r=w.getInterleaveMode(),W=w.getNearLossless(),H=w.getDecodedBuffer(),M={columns:O.width,rows:O.height,bitsPerPixel:O.bitsPerSample,signed:y.signed,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:O.componentCount},z=to(O,H,y.signed),B={nearLossless:W,interleaveMode:r,frameInfo:O};return{...y,pixelData:z,imageInfo:M,encodeOptions:B,...B,...M}}catch(w){throw Zi(w)}}function to(d,y,w){return d.bitsPerSample>8?w?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):w?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}var di={exports:{}};(function(d,y){var w=(()=>{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(k=k||__filename),function(O){O=O||{};var r=typeof O<"u"?O:{},W,H;r.ready=new Promise(function(a,o){W=a,H=o});var M=Object.assign({},r),z="./this.program",B=typeof window=="object",q=typeof importScripts=="function",V=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ee="";function G(a){return r.locateFile?r.locateFile(a,ee):ee+a}var re,se,me;if(V){var le=fn,Ce=fn;q?ee=Ce.dirname(ee)+"/":ee=__dirname+"/",re=(a,o)=>(a=Ee(a)?new URL(a):Ce.normalize(a),le.readFileSync(a,o?void 0:"utf8")),me=a=>{var o=re(a,!0);return o.buffer||(o=new Uint8Array(o)),o},se=(a,o,p)=>{a=Ee(a)?new URL(a):Ce.normalize(a),le.readFile(a,function(_,A){_?p(_):o(A.buffer)})},process.argv.length>1&&(z=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(a){if(!(a instanceof Fe))throw a}),process.on("unhandledRejection",function(a){throw a}),r.inspect=function(){return"[Emscripten Module object]"}}else(B||q)&&(q?ee=self.location.href:typeof document<"u"&&document.currentScript&&(ee=document.currentScript.src),k&&(ee=k),ee.indexOf("blob:")!==0?ee=ee.substr(0,ee.replace(/[?#].*/,"").lastIndexOf("/")+1):ee="",re=a=>{var o=new XMLHttpRequest;return o.open("GET",a,!1),o.send(null),o.responseText},q&&(me=a=>{var o=new XMLHttpRequest;return o.open("GET",a,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),se=(a,o,p)=>{var _=new XMLHttpRequest;_.open("GET",a,!0),_.responseType="arraybuffer",_.onload=()=>{if(_.status==200||_.status==0&&_.response){o(_.response);return}p()},_.onerror=p,_.send(null)});var we=r.print||console.log.bind(console),ve=r.printErr||console.warn.bind(console);Object.assign(r,M),M=null,r.arguments&&r.arguments,r.thisProgram&&(z=r.thisProgram),r.quit&&r.quit;var de;r.wasmBinary&&(de=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&Je("no native wasm support detected");var $e,qe=!1;function Jt(a,o){a||Je(o)}var Ge=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function $t(a,o,p){for(var _=o+p,A=o;a[A]&&!(A>=_);)++A;if(A-o>16&&a.buffer&&Ge)return Ge.decode(a.subarray(o,A));for(var j="";o>10,56320|i&1023)}}return j}function Ot(a,o){return a?$t(ge,a,o):""}function mr(a,o,p,_){if(!(_>0))return 0;for(var A=p,j=p+_-1,I=0;I=55296&&S<=57343){var n=a.charCodeAt(++I);S=65536+((S&1023)<<10)|n&1023}if(S<=127){if(p>=j)break;o[p++]=S}else if(S<=2047){if(p+1>=j)break;o[p++]=192|S>>6,o[p++]=128|S&63}else if(S<=65535){if(p+2>=j)break;o[p++]=224|S>>12,o[p++]=128|S>>6&63,o[p++]=128|S&63}else{if(p+3>=j)break;o[p++]=240|S>>18,o[p++]=128|S>>12&63,o[p++]=128|S>>6&63,o[p++]=128|S&63}}return o[p]=0,p-A}function Xt(a,o,p){return mr(a,ge,o,p)}function Qe(a){for(var o=0,p=0;p=55296&&_<=57343?(o+=4,++p):o+=3}return o}var he,ce,ge,ye,ne,te,fe,It,Ie;function pe(a){he=a,r.HEAP8=ce=new Int8Array(a),r.HEAP16=ye=new Int16Array(a),r.HEAP32=te=new Int32Array(a),r.HEAPU8=ge=new Uint8Array(a),r.HEAPU16=ne=new Uint16Array(a),r.HEAPU32=fe=new Uint32Array(a),r.HEAPF32=It=new Float32Array(a),r.HEAPF64=Ie=new Float64Array(a)}r.INITIAL_MEMORY;var Yt,Kt=[],cr=[],wr=[];function Dr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Ur(r.preRun.shift());tr(Kt)}function Or(){tr(cr)}function Ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Ze(r.postRun.shift());tr(wr)}function Ur(a){Kt.unshift(a)}function Ut(a){cr.unshift(a)}function Ze(a){wr.unshift(a)}var et=0,Qt=null;function Zt(a){et++,r.monitorRunDependencies&&r.monitorRunDependencies(et)}function er(a){if(et--,r.monitorRunDependencies&&r.monitorRunDependencies(et),et==0&&Qt){var o=Qt;Qt=null,o()}}function Je(a){r.onAbort&&r.onAbort(a),a="Aborted("+a+")",ve(a),qe=!0,a+=". Build with -sASSERTIONS for more info.";var o=new WebAssembly.RuntimeError(a);throw H(o),o}var yt="data:application/octet-stream;base64,";function Re(a){return a.startsWith(yt)}function Ee(a){return a.startsWith("file://")}var Ae;Ae="openjpegwasm_decode.wasm",Re(Ae)||(Ae=G(Ae));function jr(a){try{if(a==Ae&&de)return new Uint8Array(de);if(me)return me(a);throw"both async and sync fetching of the wasm failed"}catch(o){Je(o)}}function xr(){if(!de&&(B||q)){if(typeof fetch=="function"&&!Ee(Ae))return fetch(Ae,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+Ae+"'";return a.arrayBuffer()}).catch(function(){return jr(Ae)});if(se)return new Promise(function(a,o){se(Ae,function(p){a(new Uint8Array(p))},o)})}return Promise.resolve().then(function(){return jr(Ae)})}function Vt(){var a={a:P};function o(I,S){var n=I.exports;r.asm=n,$e=r.asm.E,pe($e.buffer),Yt=r.asm.G,Ut(r.asm.F),er()}Zt();function p(I){o(I.instance)}function _(I){return xr().then(function(S){return WebAssembly.instantiate(S,a)}).then(function(S){return S}).then(I,function(S){ve("failed to asynchronously prepare wasm: "+S),Je(S)})}function A(){return!de&&typeof WebAssembly.instantiateStreaming=="function"&&!Re(Ae)&&!Ee(Ae)&&!V&&typeof fetch=="function"?fetch(Ae,{credentials:"same-origin"}).then(function(I){var S=WebAssembly.instantiateStreaming(I,a);return S.then(p,function(n){return ve("wasm streaming compile failed: "+n),ve("falling back to ArrayBuffer instantiation"),_(p)})}):_(p)}if(r.instantiateWasm)try{var j=r.instantiateWasm(a,o);return j}catch(I){ve("Module.instantiateWasm callback failed with error: "+I),H(I)}return A().catch(H),{}}function Fe(a){this.name="ExitStatus",this.message="Program terminated with exit("+a+")",this.status=a}function tr(a){for(;a.length>0;)a.shift()(r)}function lr(a){this.excPtr=a,this.ptr=a-24,this.set_type=function(o){fe[this.ptr+4>>2]=o},this.get_type=function(){return fe[this.ptr+4>>2]},this.set_destructor=function(o){fe[this.ptr+8>>2]=o},this.get_destructor=function(){return fe[this.ptr+8>>2]},this.set_refcount=function(o){te[this.ptr>>2]=o},this.set_caught=function(o){o=o?1:0,ce[this.ptr+12>>0]=o},this.get_caught=function(){return ce[this.ptr+12>>0]!=0},this.set_rethrown=function(o){o=o?1:0,ce[this.ptr+13>>0]=o},this.get_rethrown=function(){return ce[this.ptr+13>>0]!=0},this.init=function(o,p){this.set_adjusted_ptr(0),this.set_type(o),this.set_destructor(p),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var o=te[this.ptr>>2];te[this.ptr>>2]=o+1},this.release_ref=function(){var o=te[this.ptr>>2];return te[this.ptr>>2]=o-1,o===1},this.set_adjusted_ptr=function(o){fe[this.ptr+16>>2]=o},this.get_adjusted_ptr=function(){return fe[this.ptr+16>>2]},this.get_exception_ptr=function(){var o=J(this.get_type());if(o)return fe[this.excPtr>>2];var p=this.get_adjusted_ptr();return p!==0?p:this.excPtr}}function Wr(a,o,p){var _=new lr(a);throw _.init(o,p),a}var Ue={};function Xe(a){for(;a.length;){var o=a.pop(),p=a.pop();p(o)}}function _e(a){return this.fromWireType(te[a>>2])}var _t={},ct={},Rt={},jt=48,Et=57;function tt(a){if(a===void 0)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var o=a.charCodeAt(0);return o>=jt&&o<=Et?"_"+a:a}function xt(a,o){return a=tt(a),new Function("body","return function "+a+`() { - "use strict"; return body.apply(this, arguments); -}; -`)(o)}function mt(a,o){var p=xt(o,function(_){this.name=o,this.message=_;var A=new Error(_).stack;A!==void 0&&(this.stack=this.toString()+` -`+A.replace(/^Error(:[^\n]*)?\n/,""))});return p.prototype=Object.create(a.prototype),p.prototype.constructor=p,p.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},p}var wt=void 0;function lt(a){throw new wt(a)}function Me(a,o,p){a.forEach(function(S){Rt[S]=o});function _(S){var n=p(S);n.length!==a.length&<("Mismatched type converter count");for(var i=0;i{ct.hasOwnProperty(S)?A[n]=ct[S]:(j.push(S),_t.hasOwnProperty(S)||(_t[S]=[]),_t[S].push(()=>{A[n]=ct[S],++I,I===j.length&&_(A)}))}),j.length===0&&_(A)}function rt(a){var o=Ue[a];delete Ue[a];var p=o.rawConstructor,_=o.rawDestructor,A=o.fields,j=A.map(I=>I.getterReturnType).concat(A.map(I=>I.setterArgumentType));Me([a],j,I=>{var S={};return A.forEach((n,i)=>{var c=n.fieldName,h=I[i],m=n.getter,t=n.getterContext,e=I[i+A.length],s=n.setter,l=n.setterContext;S[c]={read:g=>h.fromWireType(m(t,g)),write:(g,b)=>{var C=[];s(l,g,e.toWireType(C,b)),Xe(C)}}}),[{name:o.name,fromWireType:function(n){var i={};for(var c in S)i[c]=S[c].read(n);return _(n),i},toWireType:function(n,i){for(var c in S)if(!(c in i))throw new TypeError('Missing field: "'+c+'"');var h=p();for(c in S)S[c].write(h,i[c]);return n!==null&&n.push(_,h),h},argPackAdvance:8,readValueFromPointer:_e,destructorFunction:_}]})}function rr(a,o,p,_,A){}function Wt(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a)}}function be(){for(var a=new Array(256),o=0;o<256;++o)a[o]=String.fromCharCode(o);bt=a}var bt=void 0;function K(a){for(var o="",p=a;ge[p];)o+=bt[ge[p++]];return o}var Se=void 0;function ue(a){throw new Se(a)}function Le(a,o,p={}){if(!("argPackAdvance"in o))throw new TypeError("registerType registeredInstance requires argPackAdvance");var _=o.name;if(a||ue('type "'+_+'" must have a positive integer typeid pointer'),ct.hasOwnProperty(a)){if(p.ignoreDuplicateRegistrations)return;ue("Cannot register type '"+_+"' twice")}if(ct[a]=o,delete Rt[a],_t.hasOwnProperty(a)){var A=_t[a];delete _t[a],A.forEach(j=>j())}}function Pe(a,o,p,_,A){var j=Wt(p);o=K(o),Le(a,{name:o,fromWireType:function(I){return!!I},toWireType:function(I,S){return S?_:A},argPackAdvance:8,readValueFromPointer:function(I){var S;if(p===1)S=ce;else if(p===2)S=ye;else if(p===4)S=te;else throw new TypeError("Unknown boolean type size: "+o);return this.fromWireType(S[I>>j])},destructorFunction:null})}function St(a){if(!(this instanceof Ct)||!(a instanceof Ct))return!1;for(var o=this.$$.ptrType.registeredClass,p=this.$$.ptr,_=a.$$.ptrType.registeredClass,A=a.$$.ptr;o.baseClass;)p=o.upcast(p),o=o.baseClass;for(;_.baseClass;)A=_.upcast(A),_=_.baseClass;return o===_&&p===A}function ae(a){return{count:a.count,deleteScheduled:a.deleteScheduled,preservePointerOnDelete:a.preservePointerOnDelete,ptr:a.ptr,ptrType:a.ptrType,smartPtr:a.smartPtr,smartPtrType:a.smartPtrType}}function xe(a){function o(p){return p.$$.ptrType.registeredClass.name}ue(o(a)+" instance already deleted")}var br=!1;function dr(a){}function De(a){a.smartPtr?a.smartPtrType.rawDestructor(a.smartPtr):a.ptrType.registeredClass.rawDestructor(a.ptr)}function dt(a){a.count.value-=1;var o=a.count.value===0;o&&De(a)}function ie(a,o,p){if(o===p)return a;if(p.baseClass===void 0)return null;var _=ie(a,o,p.baseClass);return _===null?null:p.downcast(_)}var nt={};function nr(){return Object.keys(kt).length}function pr(){var a=[];for(var o in kt)kt.hasOwnProperty(o)&&a.push(kt[o]);return a}var pt=[];function Bt(){for(;pt.length;){var a=pt.pop();a.$$.deleteScheduled=!1,a.delete()}}var Ht=void 0;function Nt(a){Ht=a,pt.length&&Ht&&Ht(Bt)}function ir(){r.getInheritedInstanceCount=nr,r.getLiveInheritedInstances=pr,r.flushPendingDeletes=Bt,r.setDelayFunction=Nt}var kt={};function Pt(a,o){for(o===void 0&&ue("ptr should not be undefined");a.baseClass;)o=a.upcast(o),a=a.baseClass;return o}function Hr(a,o){return o=Pt(a,o),kt[o]}function Ft(a,o){(!o.ptrType||!o.ptr)&<("makeClassHandle requires ptr and ptrType");var p=!!o.smartPtrType,_=!!o.smartPtr;return p!==_&<("Both smartPtrType and smartPtr must be specified"),o.count={value:1},Tt(Object.create(a,{$$:{value:o}}))}function or(a){var o=this.getPointee(a);if(!o)return this.destructor(a),null;var p=Hr(this.registeredClass,o);if(p!==void 0){if(p.$$.count.value===0)return p.$$.ptr=o,p.$$.smartPtr=a,p.clone();var _=p.clone();return this.destructor(a),_}function A(){return this.isSmartPointer?Ft(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:o,smartPtrType:this,smartPtr:a}):Ft(this.registeredClass.instancePrototype,{ptrType:this,ptr:a})}var j=this.registeredClass.getActualType(o),I=nt[j];if(!I)return A.call(this);var S;this.isConst?S=I.constPointerType:S=I.pointerType;var n=ie(o,this.registeredClass,S.registeredClass);return n===null?A.call(this):this.isSmartPointer?Ft(S.registeredClass.instancePrototype,{ptrType:S,ptr:n,smartPtrType:this,smartPtr:a}):Ft(S.registeredClass.instancePrototype,{ptrType:S,ptr:n})}function Tt(a){return typeof FinalizationRegistry>"u"?(Tt=o=>o,a):(br=new FinalizationRegistry(o=>{dt(o.$$)}),Tt=o=>{var p=o.$$,_=!!p.smartPtr;if(_){var A={$$:p};br.register(o,A,o)}return o},dr=o=>br.unregister(o),Tt(a))}function Pr(){if(this.$$.ptr||xe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var a=Tt(Object.create(Object.getPrototypeOf(this),{$$:{value:ae(this.$$)}}));return a.$$.count.value+=1,a.$$.deleteScheduled=!1,a}function Dt(){this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),dr(this),dt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function cn(){return!this.$$.ptr}function Ye(){return this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),pt.push(this),pt.length===1&&Ht&&Ht(Bt),this.$$.deleteScheduled=!0,this}function zt(){Ct.prototype.isAliasOf=St,Ct.prototype.clone=Pr,Ct.prototype.delete=Dt,Ct.prototype.isDeleted=cn,Ct.prototype.deleteLater=Ye}function Ct(){}function Mr(a,o,p){if(a[o].overloadTable===void 0){var _=a[o];a[o]=function(){return a[o].overloadTable.hasOwnProperty(arguments.length)||ue("Function '"+p+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+a[o].overloadTable+")!"),a[o].overloadTable[arguments.length].apply(this,arguments)},a[o].overloadTable=[],a[o].overloadTable[_.argCount]=_}}function qt(a,o,p){r.hasOwnProperty(a)?(ue("Cannot register public name '"+a+"' twice"),Mr(r,a,a),r.hasOwnProperty(p)&&ue("Cannot register multiple overloads of a function with the same number of arguments ("+p+")!"),r[a].overloadTable[p]=o):r[a]=o}function ln(a,o,p,_,A,j,I,S){this.name=a,this.constructor=o,this.instancePrototype=p,this.rawDestructor=_,this.baseClass=A,this.getActualType=j,this.upcast=I,this.downcast=S,this.pureVirtualFunctions=[]}function We(a,o,p){for(;o!==p;)o.upcast||ue("Expected null or instance of "+p.name+", got an instance of "+o.name),a=o.upcast(a),o=o.baseClass;return a}function Lr(a,o){if(o===null)return this.isReference&&ue("null is not a valid "+this.name),0;o.$$||ue('Cannot pass "'+ur(o)+'" as a '+this.name),o.$$.ptr||ue("Cannot pass deleted object as a pointer of type "+this.name);var p=o.$$.ptrType.registeredClass,_=We(o.$$.ptr,p,this.registeredClass);return _}function dn(a,o){var p;if(o===null)return this.isReference&&ue("null is not a valid "+this.name),this.isSmartPointer?(p=this.rawConstructor(),a!==null&&a.push(this.rawDestructor,p),p):0;o.$$||ue('Cannot pass "'+ur(o)+'" as a '+this.name),o.$$.ptr||ue("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&o.$$.ptrType.isConst&&ue("Cannot convert argument of type "+(o.$$.smartPtrType?o.$$.smartPtrType.name:o.$$.ptrType.name)+" to parameter type "+this.name);var _=o.$$.ptrType.registeredClass;if(p=We(o.$$.ptr,_,this.registeredClass),this.isSmartPointer)switch(o.$$.smartPtr===void 0&&ue("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:o.$$.smartPtrType===this?p=o.$$.smartPtr:ue("Cannot convert argument of type "+(o.$$.smartPtrType?o.$$.smartPtrType.name:o.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:p=o.$$.smartPtr;break;case 2:if(o.$$.smartPtrType===this)p=o.$$.smartPtr;else{var A=o.clone();p=this.rawShare(p,st.toHandle(function(){A.delete()})),a!==null&&a.push(this.rawDestructor,p)}break;default:ue("Unsupporting sharing policy")}return p}function pn(a,o){if(o===null)return this.isReference&&ue("null is not a valid "+this.name),0;o.$$||ue('Cannot pass "'+ur(o)+'" as a '+this.name),o.$$.ptr||ue("Cannot pass deleted object as a pointer of type "+this.name),o.$$.ptrType.isConst&&ue("Cannot convert argument of type "+o.$$.ptrType.name+" to parameter type "+this.name);var p=o.$$.ptrType.registeredClass,_=We(o.$$.ptr,p,this.registeredClass);return _}function Tr(a){return this.rawGetPointee&&(a=this.rawGetPointee(a)),a}function vn(a){this.rawDestructor&&this.rawDestructor(a)}function Oe(a){a!==null&&a.delete()}function Cr(){vt.prototype.getPointee=Tr,vt.prototype.destructor=vn,vt.prototype.argPackAdvance=8,vt.prototype.readValueFromPointer=_e,vt.prototype.deleteObject=Oe,vt.prototype.fromWireType=or}function vt(a,o,p,_,A,j,I,S,n,i,c){this.name=a,this.registeredClass=o,this.isReference=p,this.isConst=_,this.isSmartPointer=A,this.pointeeType=j,this.sharingPolicy=I,this.rawGetPointee=S,this.rawConstructor=n,this.rawShare=i,this.rawDestructor=c,!A&&o.baseClass===void 0?_?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=pn,this.destructorFunction=null):this.toWireType=dn}function vr(a,o,p){r.hasOwnProperty(a)||lt("Replacing nonexistant public symbol"),r[a].overloadTable!==void 0&&p!==void 0?r[a].overloadTable[p]=o:(r[a]=o,r[a].argCount=p)}function hr(a,o,p){var _=r["dynCall_"+a];return p&&p.length?_.apply(null,[o].concat(p)):_.call(null,o)}var gr=[];function ht(a){var o=gr[a];return o||(a>=gr.length&&(gr.length=a+1),gr[a]=o=Yt.get(a)),o}function it(a,o,p){if(a.includes("j"))return hr(a,o,p);var _=ht(o).apply(null,p);return _}function Vr(a,o){var p=[];return function(){return p.length=0,Object.assign(p,arguments),it(a,o,p)}}function He(a,o){a=K(a);function p(){return a.includes("j")?Vr(a,o):ht(o)}var _=p();return typeof _!="function"&&ue("unknown function pointer with signature "+a+": "+o),_}var ot=void 0;function Br(a){var o=D(a),p=K(o);return F(o),p}function Ve(a,o){var p=[],_={};function A(j){if(!_[j]&&!ct[j]){if(Rt[j]){Rt[j].forEach(A);return}p.push(j),_[j]=!0}}throw o.forEach(A),new ot(a+": "+p.map(Br).join([", "]))}function at(a,o,p,_,A,j,I,S,n,i,c,h,m){c=K(c),j=He(A,j),S&&(S=He(I,S)),i&&(i=He(n,i)),m=He(h,m);var t=tt(c);qt(t,function(){Ve("Cannot construct "+c+" due to unbound types",[_])}),Me([a,o,p],_?[_]:[],function(e){e=e[0];var s,l;_?(s=e.registeredClass,l=s.instancePrototype):l=Ct.prototype;var g=xt(t,function(){if(Object.getPrototypeOf(this)!==b)throw new Se("Use 'new' to construct "+c);if(C.constructor_body===void 0)throw new Se(c+" has no accessible constructor");var N=C.constructor_body[arguments.length];if(N===void 0)throw new Se("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(C.constructor_body).toString()+") parameters instead!");return N.apply(this,arguments)}),b=Object.create(l,{constructor:{value:g}});g.prototype=b;var C=new ln(c,g,b,m,s,j,S,i),T=new vt(c,C,!0,!1,!1),E=new vt(c+"*",C,!1,!1,!1),x=new vt(c+" const*",C,!1,!0,!1);return nt[a]={pointerType:E,constPointerType:x},vr(t,g),[T,E,x]})}function ar(a,o){for(var p=[],_=0;_>2]);return p}function Nr(a,o){if(!(a instanceof Function))throw new TypeError("new_ called with constructor type "+typeof a+" which is not a function");var p=xt(a.name||"unknownFunctionName",function(){});p.prototype=a.prototype;var _=new p,A=a.apply(_,o);return A instanceof Object?A:_}function yr(a,o,p,_,A){var j=o.length;j<2&&ue("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var I=o[1]!==null&&p!==null,S=!1,n=1;n0?", ":"")+h),m+=(i?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+`); -`,S)m+=`runDestructors(destructors); -`;else for(var n=I?1:2;n0);var I=ar(o,p);A=He(_,A),Me([],[a],function(S){S=S[0];var n="constructor "+S.name;if(S.registeredClass.constructor_body===void 0&&(S.registeredClass.constructor_body=[]),S.registeredClass.constructor_body[o-1]!==void 0)throw new Se("Cannot register multiple constructors with identical number of parameters ("+(o-1)+") for class '"+S.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return S.registeredClass.constructor_body[o-1]=()=>{Ve("Cannot construct "+S.name+" due to unbound types",I)},Me([],I,function(i){return i.splice(1,0,null),S.registeredClass.constructor_body[o-1]=yr(n,i,null,A,j),[]}),[]})}function Ne(a,o,p,_,A,j,I,S){var n=ar(p,_);o=K(o),j=He(A,j),Me([],[a],function(i){i=i[0];var c=i.name+"."+o;o.startsWith("@@")&&(o=Symbol[o.substring(2)]),S&&i.registeredClass.pureVirtualFunctions.push(o);function h(){Ve("Cannot call "+c+" due to unbound types",n)}var m=i.registeredClass.instancePrototype,t=m[o];return t===void 0||t.overloadTable===void 0&&t.className!==i.name&&t.argCount===p-2?(h.argCount=p-2,h.className=i.name,m[o]=h):(Mr(m,o,c),m[o].overloadTable[p-2]=h),Me([],n,function(e){var s=yr(c,e,i,j,I);return m[o].overloadTable===void 0?(s.argCount=p-2,m[o]=s):m[o].overloadTable[p-2]=s,[]}),[]})}var sr=[],je=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function zr(a){a>4&&--je[a].refcount===0&&(je[a]=void 0,sr.push(a))}function Ar(){for(var a=0,o=5;o(a||ue("Cannot use deleted val. handle = "+a),je[a].value),toHandle:a=>{switch(a){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var o=sr.length?sr.pop():je.length;return je[o]={refcount:1,value:a},o}}}};function hn(a,o){o=K(o),Le(a,{name:o,fromWireType:function(p){var _=st.toValue(p);return zr(p),_},toWireType:function(p,_){return st.toHandle(_)},argPackAdvance:8,readValueFromPointer:_e,destructorFunction:null})}function ur(a){if(a===null)return"null";var o=typeof a;return o==="object"||o==="array"||o==="function"?a.toString():""+a}function ut(a,o){switch(o){case 2:return function(p){return this.fromWireType(It[p>>2])};case 3:return function(p){return this.fromWireType(Ie[p>>3])};default:throw new TypeError("Unknown float type: "+a)}}function At(a,o,p){var _=Wt(p);o=K(o),Le(a,{name:o,fromWireType:function(A){return A},toWireType:function(A,j){return j},argPackAdvance:8,readValueFromPointer:ut(o,_),destructorFunction:null})}function gn(a,o,p){switch(o){case 0:return p?function(A){return ce[A]}:function(A){return ge[A]};case 1:return p?function(A){return ye[A>>1]}:function(A){return ne[A>>1]};case 2:return p?function(A){return te[A>>2]}:function(A){return fe[A>>2]};default:throw new TypeError("Unknown integer type: "+a)}}function $r(a,o,p,_,A){o=K(o);var j=Wt(p),I=h=>h;if(_===0){var S=32-8*p;I=h=>h<>>S}var n=o.includes("unsigned"),i=(h,m)=>{},c;n?c=function(h,m){return i(m,this.name),m>>>0}:c=function(h,m){return i(m,this.name),m},Le(a,{name:o,fromWireType:I,toWireType:c,argPackAdvance:8,readValueFromPointer:gn(o,j,_!==0),destructorFunction:null})}function yn(a,o,p){var _=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],A=_[o];function j(I){I=I>>2;var S=fe,n=S[I],i=S[I+1];return new A(he,i,n)}p=K(p),Le(a,{name:p,fromWireType:j,argPackAdvance:8,readValueFromPointer:j},{ignoreDuplicateRegistrations:!0})}function fr(a,o){o=K(o);var p=o==="std::string";Le(a,{name:o,fromWireType:function(_){var A=fe[_>>2],j=_+4,I;if(p)for(var S=j,n=0;n<=A;++n){var i=j+n;if(n==A||ge[i]==0){var c=i-S,h=Ot(S,c);I===void 0?I=h:(I+="\0",I+=h),S=i+1}}else{for(var m=new Array(A),n=0;n>2]=j,p&&I)Xt(A,n,j+1);else if(I)for(var i=0;i255&&(F(n),ue("String has UTF-16 code units that do not fit in 8 bits")),ge[n+i]=c}else for(var i=0;i>1,A=_+o/2;!(_>=A)&&ne[_];)++_;if(p=_<<1,p-a>32&&qr)return qr.decode(ge.subarray(a,p));for(var j="",I=0;!(I>=o/2);++I){var S=ye[a+I*2>>1];if(S==0)break;j+=String.fromCharCode(S)}return j}function _n(a,o,p){if(p===void 0&&(p=2147483647),p<2)return 0;p-=2;for(var _=o,A=p>1]=I,o+=2}return ye[o>>1]=0,o-_}function mn(a){return a.length*2}function Gr(a,o){for(var p=0,_="";!(p>=o/4);){var A=te[a+p*4>>2];if(A==0)break;if(++p,A>=65536){var j=A-65536;_+=String.fromCharCode(55296|j>>10,56320|j&1023)}else _+=String.fromCharCode(A)}return _}function wn(a,o,p){if(p===void 0&&(p=2147483647),p<4)return 0;for(var _=o,A=_+p-4,j=0;j=55296&&I<=57343){var S=a.charCodeAt(++j);I=65536+((I&1023)<<10)|S&1023}if(te[o>>2]=I,o+=4,o+4>A)break}return te[o>>2]=0,o-_}function bn(a){for(var o=0,p=0;p=55296&&_<=57343&&++p,o+=4}return o}function Pn(a,o,p){p=K(p);var _,A,j,I,S;o===2?(_=Rr,A=_n,I=mn,j=()=>ne,S=1):o===4&&(_=Gr,A=wn,I=bn,j=()=>fe,S=2),Le(a,{name:p,fromWireType:function(n){for(var i=fe[n>>2],c=j(),h,m=n+4,t=0;t<=i;++t){var e=n+4+t*o;if(t==i||c[e>>S]==0){var s=e-m,l=_(m,s);h===void 0?h=l:(h+="\0",h+=l),m=e+o}}return F(n),h},toWireType:function(n,i){typeof i!="string"&&ue("Cannot pass non-string to C++ string type "+p);var c=I(i),h=$(4+c+o);return fe[h>>2]=c>>S,A(i,h+4,c+o),n!==null&&n.push(F,h),h},argPackAdvance:8,readValueFromPointer:_e,destructorFunction:function(n){F(n)}})}function Tn(a,o,p,_,A,j){Ue[a]={name:K(o),rawConstructor:He(p,_),rawDestructor:He(A,j),fields:[]}}function Jr(a,o,p,_,A,j,I,S,n,i){Ue[a].fields.push({fieldName:K(o),getterReturnType:p,getter:He(_,A),getterContext:j,setterArgumentType:I,setter:He(S,n),setterContext:i})}function Cn(a,o){o=K(o),Le(a,{isVoid:!0,name:o,argPackAdvance:0,fromWireType:function(){},toWireType:function(p,_){}})}var An={};function Xr(a){var o=An[a];return o===void 0?K(a):o}function Yr(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function $n(a){return a===0?st.toHandle(Yr()):(a=Xr(a),st.toHandle(Yr()[a]))}function Kr(a){a>4&&(je[a].refcount+=1)}function Qr(a,o){var p=ct[a];return p===void 0&&ue(o+" has unknown type "+Br(a)),p}function Zr(a){for(var o="",p=0;pfe,A="return function emval_allocator_"+a+`(constructor, argTypes, args) { - var HEAPU32 = getMemory(); -`,p=0;p>2)], 'parameter "+p+`'); -var arg`+p+" = argType"+p+`.readValueFromPointer(args); -args += argType`+p+`['argPackAdvance']; -argTypes += 4; -`;return A+="var obj = new constructor("+o+`); -return valueToHandle(obj); -} -`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",A)(Qr,r,st.toHandle,_)}var Er={};function Rn(a,o,p,_){a=st.toValue(a);var A=Er[o];return A||(A=Zr(o),Er[o]=A),A(a,p,_)}function En(a,o){a=Qr(a,"_emval_take_value");var p=a.readValueFromPointer(o);return st.toHandle(p)}function en(){Je("")}function tn(){return 2147483648}function rn(){return tn()}function Sn(a,o,p){ge.copyWithin(a,o,o+p)}function kn(a){try{return $e.grow(a-he.byteLength+65535>>>16),pe($e.buffer),1}catch{}}function Fn(a){var o=ge.length;a=a>>>0;var p=tn();if(a>p)return!1;let _=(n,i)=>n+(i-n%i)%i;for(var A=1;A<=4;A*=2){var j=o*(1+.2/A);j=Math.min(j,a+100663296);var I=Math.min(p,_(Math.max(a,j),65536)),S=kn(I);if(S)return!0}return!1}var Sr={};function Dn(){return z||"./this.program"}function Mt(){if(!Mt.strings){var a=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",o={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:a,_:Dn()};for(var p in Sr)Sr[p]===void 0?delete o[p]:o[p]=Sr[p];var _=[];for(var p in o)_.push(p+"="+o[p]);Mt.strings=_}return Mt.strings}function nn(a,o,p){for(var _=0;_>0]=a.charCodeAt(_);ce[o>>0]=0}function ft(a,o){var p=0;return Mt().forEach(function(_,A){var j=o+p;fe[a+A*4>>2]=j,nn(_,j),p+=_.length+1}),0}function on(a,o){var p=Mt();fe[a>>2]=p.length;var _=0;return p.forEach(function(A){_+=A.length+1}),fe[o>>2]=_,0}function Gt(a){return 52}function kr(a,o,p,_,A){return 70}var an=[null,[],[]];function _r(a,o){var p=an[a];o===0||o===10?((a===1?we:ve)($t(p,0)),p.length=0):p.push(o)}function sn(a,o,p,_){for(var A=0,j=0;j>2],S=fe[o+4>>2];o+=8;for(var n=0;n>2]=A,0}function u(a){var o=r["_"+a];return o}function f(a,o){ce.set(a,o)}function v(a,o,p,_,A){var j={string:e=>{var s=0;if(e!=null&&e!==0){var l=(e.length<<2)+1;s=L(l),Xt(e,s,l)}return s},array:e=>{var s=L(e.length);return f(e,s),s}};function I(e){return o==="string"?Ot(e):o==="boolean"?!!e:e}var S=u(a),n=[],i=0;if(_)for(var c=0;c<_.length;c++){var h=j[p[c]];h?(i===0&&(i=R()),n[c]=h(_[c])):n[c]=_[c]}var m=S.apply(null,n);function t(e){return i!==0&&U(i),I(e)}return m=t(m),m}wt=r.InternalError=mt(Error,"InternalError"),be(),Se=r.BindingError=mt(Error,"BindingError"),zt(),ir(),Cr(),ot=r.UnboundTypeError=mt(Error,"UnboundTypeError"),ze();var P={D:Wr,e:rt,t:rr,B:Pe,r:at,q:Be,b:Ne,A:hn,l:At,d:$r,a:yn,k:fr,f:Pn,g:Tn,c:Jr,C:Cn,h:zr,o:$n,m:Kr,n:Rn,p:En,i:en,v:rn,z:Sn,u:Fn,w:ft,x:on,y:Gt,s:kr,j:sn};Vt(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.F).apply(null,arguments)};var $=r._malloc=function(){return($=r._malloc=r.asm.H).apply(null,arguments)},F=r._free=function(){return(F=r._free=r.asm.I).apply(null,arguments)},D=r.___getTypeName=function(){return(D=r.___getTypeName=r.asm.J).apply(null,arguments)};r.__embind_initialize_bindings=function(){return(r.__embind_initialize_bindings=r.asm.K).apply(null,arguments)};var R=r.stackSave=function(){return(R=r.stackSave=r.asm.L).apply(null,arguments)},U=r.stackRestore=function(){return(U=r.stackRestore=r.asm.M).apply(null,arguments)},L=r.stackAlloc=function(){return(L=r.stackAlloc=r.asm.N).apply(null,arguments)},J=r.___cxa_is_pointer_type=function(){return(J=r.___cxa_is_pointer_type=r.asm.O).apply(null,arguments)};r.dynCall_iji=function(){return(r.dynCall_iji=r.asm.P).apply(null,arguments)},r.dynCall_jji=function(){return(r.dynCall_jji=r.asm.Q).apply(null,arguments)},r.dynCall_iiji=function(){return(r.dynCall_iiji=r.asm.R).apply(null,arguments)},r.dynCall_jiji=function(){return(r.dynCall_jiji=r.asm.S).apply(null,arguments)},r.ccall=v;var Q;Qt=function a(){Q||Y(),Q||(Qt=a)};function Y(a){if(et>0||(Dr(),et>0))return;function o(){Q||(Q=!0,r.calledRun=!0,!qe&&(Or(),W(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),o()},1)):o()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Y(),O.ready}})();d.exports=w})(di);var ro=di.exports,no=qn(ro);const io=new URL("/static/dv3d/assets/openjpegwasm_decode-C4nnCcr6.wasm",import.meta.url),xn={codec:void 0,decoder:void 0,decodeConfig:{}};function oo(d){if(xn.decodeConfig=d,xn.codec)return Promise.resolve();const y=no({locateFile:w=>w.endsWith(".wasm")?io.toString():w});return new Promise((w,k)=>{y.then(O=>{xn.codec=O,xn.decoder=new O.J2KDecoder,w()},k)})}async function ni(d,y){await oo();const w=xn.decoder,k=w.getEncodedBuffer(d.length);k.set(d),w.decode();const O=w.getFrameInfo(),r=w.getDecodedBuffer();new Uint8Array(r.length).set(r);const H=`x: ${w.getImageOffset().x}, y: ${w.getImageOffset().y}`,M=w.getNumDecompositions(),z=w.getNumLayers(),B=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][w.getProgressionOrder()+1],q=w.getIsReversible(),V=`${w.getBlockDimensions().width} x ${w.getBlockDimensions().height}`,ee=`${w.getTileSize().width} x ${w.getTileSize().height}`,G=`${w.getTileOffset().x}, ${w.getTileOffset().y}`,re=w.getColorSpace(),se=`${r.length.toLocaleString()} bytes`,me=`${(r.length/k.length).toFixed(2)}:1`,le={columns:O.width,rows:O.height,bitsPerPixel:O.bitsPerSample,signed:O.isSigned,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:O.componentCount},Ce=ao(O,r),we={imageOffset:H,numDecompositions:M,numLayers:z,progessionOrder:B,reversible:q,blockDimensions:V,tileSize:ee,tileOffset:G,colorTransform:re,decodedSize:se,compressionRatio:me};return{...y,pixelData:Ce,imageInfo:le,encodeOptions:we,...we,...le}}function ao(d,y){return d.bitsPerSample>8?d.isSigned?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):d.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}var pi={exports:{}};(function(d,y){var w=(()=>{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(k=k||__filename),function(r){r=r||{};var r=typeof r<"u"?r:{},W,H;r.ready=new Promise(function(n,i){W=n,H=i});var M=Object.assign({},r),z=typeof window=="object",B=typeof importScripts=="function",q=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",V="";function ee(n){return r.locateFile?r.locateFile(n,V):V+n}var G,re,se;if(q){var me=fn,le=fn;B?V=le.dirname(V)+"/":V=__dirname+"/",G=(n,i)=>(n=Re(n)?new URL(n):le.normalize(n),me.readFileSync(n,i?void 0:"utf8")),se=n=>{var i=G(n,!0);return i.buffer||(i=new Uint8Array(i)),i},re=(n,i,c)=>{n=Re(n)?new URL(n):le.normalize(n),me.readFile(n,function(h,m){h?c(h):i(m.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(n){if(!(n instanceof Vt))throw n}),process.on("unhandledRejection",function(n){throw n}),r.inspect=function(){return"[Emscripten Module object]"}}else(z||B)&&(B?V=self.location.href:typeof document<"u"&&document.currentScript&&(V=document.currentScript.src),k&&(V=k),V.indexOf("blob:")!==0?V=V.substr(0,V.replace(/[?#].*/,"").lastIndexOf("/")+1):V="",G=n=>{var i=new XMLHttpRequest;return i.open("GET",n,!1),i.send(null),i.responseText},B&&(se=n=>{var i=new XMLHttpRequest;return i.open("GET",n,!1),i.responseType="arraybuffer",i.send(null),new Uint8Array(i.response)}),re=(n,i,c)=>{var h=new XMLHttpRequest;h.open("GET",n,!0),h.responseType="arraybuffer",h.onload=()=>{if(h.status==200||h.status==0&&h.response){i(h.response);return}c()},h.onerror=c,h.send(null)});var Ce=r.print||console.log.bind(console),we=r.printErr||console.warn.bind(console);Object.assign(r,M),M=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit;var ve;r.wasmBinary&&(ve=r.wasmBinary),r.noExitRuntime,typeof WebAssembly!="object"&&er("no native wasm support detected");var de,$e=!1;function qe(n,i){n||er(i)}var Jt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Ge(n,i,c){for(var h=i+c,m=i;n[m]&&!(m>=h);)++m;if(m-i>16&&n.buffer&&Jt)return Jt.decode(n.subarray(i,m));for(var t="";i>10,56320|g&1023)}}return t}function $t(n,i){return n?Ge(ce,n,i):""}function Ot(n,i,c,h){if(!(h>0))return 0;for(var m=c,t=c+h-1,e=0;e=55296&&s<=57343){var l=n.charCodeAt(++e);s=65536+((s&1023)<<10)|l&1023}if(s<=127){if(c>=t)break;i[c++]=s}else if(s<=2047){if(c+1>=t)break;i[c++]=192|s>>6,i[c++]=128|s&63}else if(s<=65535){if(c+2>=t)break;i[c++]=224|s>>12,i[c++]=128|s>>6&63,i[c++]=128|s&63}else{if(c+3>=t)break;i[c++]=240|s>>18,i[c++]=128|s>>12&63,i[c++]=128|s>>6&63,i[c++]=128|s&63}}return i[c]=0,c-m}function mr(n,i,c){return Ot(n,ce,i,c)}function Xt(n){for(var i=0,c=0;c=55296&&h<=57343?(i+=4,++c):i+=3}return i}var Qe,he,ce,ge,ye,ne,te,fe,It;function Ie(n){Qe=n,r.HEAP8=he=new Int8Array(n),r.HEAP16=ge=new Int16Array(n),r.HEAP32=ne=new Int32Array(n),r.HEAPU8=ce=new Uint8Array(n),r.HEAPU16=ye=new Uint16Array(n),r.HEAPU32=te=new Uint32Array(n),r.HEAPF32=fe=new Float32Array(n),r.HEAPF64=It=new Float64Array(n)}r.INITIAL_MEMORY;var pe,Yt=[],Kt=[],cr=[];function wr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Ir(r.preRun.shift());Fe(Yt)}function Dr(){Fe(Kt)}function Or(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Ut(r.postRun.shift());Fe(cr)}function Ir(n){Yt.unshift(n)}function Ur(n){Kt.unshift(n)}function Ut(n){cr.unshift(n)}var Ze=0,et=null;function Qt(n){Ze++,r.monitorRunDependencies&&r.monitorRunDependencies(Ze)}function Zt(n){if(Ze--,r.monitorRunDependencies&&r.monitorRunDependencies(Ze),Ze==0&&et){var i=et;et=null,i()}}function er(n){r.onAbort&&r.onAbort(n),n="Aborted("+n+")",we(n),$e=!0,n+=". Build with -sASSERTIONS for more info.";var i=new WebAssembly.RuntimeError(n);throw H(i),i}var Je="data:application/octet-stream;base64,";function yt(n){return n.startsWith(Je)}function Re(n){return n.startsWith("file://")}var Ee;Ee="openjphjs.wasm",yt(Ee)||(Ee=ee(Ee));function Ae(n){try{if(n==Ee&&ve)return new Uint8Array(ve);if(se)return se(n);throw"both async and sync fetching of the wasm failed"}catch(i){er(i)}}function jr(){if(!ve&&(z||B)){if(typeof fetch=="function"&&!Re(Ee))return fetch(Ee,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Ee+"'";return n.arrayBuffer()}).catch(function(){return Ae(Ee)});if(re)return new Promise(function(n,i){re(Ee,function(c){n(new Uint8Array(c))},i)})}return Promise.resolve().then(function(){return Ae(Ee)})}function xr(){var n={a:sn};function i(e,s){var l=e.exports;r.asm=l,de=r.asm.P,Ie(de.buffer),pe=r.asm.T,Ur(r.asm.Q),Zt()}Qt();function c(e){i(e.instance)}function h(e){return jr().then(function(s){return WebAssembly.instantiate(s,n)}).then(function(s){return s}).then(e,function(s){we("failed to asynchronously prepare wasm: "+s),er(s)})}function m(){return!ve&&typeof WebAssembly.instantiateStreaming=="function"&&!yt(Ee)&&!Re(Ee)&&!q&&typeof fetch=="function"?fetch(Ee,{credentials:"same-origin"}).then(function(e){var s=WebAssembly.instantiateStreaming(e,n);return s.then(c,function(l){return we("wasm streaming compile failed: "+l),we("falling back to ArrayBuffer instantiation"),h(c)})}):h(c)}if(r.instantiateWasm)try{var t=r.instantiateWasm(n,i);return t}catch(e){we("Module.instantiateWasm callback failed with error: "+e),H(e)}return m().catch(H),{}}function Vt(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function Fe(n){for(;n.length>0;)n.shift()(r)}var tr=[];function lr(n){n.add_ref()}function Wr(n){var i=new Rt(n);return i.get_caught()||i.set_caught(!0),i.set_rethrown(!1),tr.push(i),lr(i),i.get_exception_ptr()}var Ue=0,Xe=[];function _e(n){var i=Xe[n];return i||(n>=Xe.length&&(Xe.length=n+1),Xe[n]=i=pe.get(n)),i}function _t(n){if(n.release_ref()&&!n.get_rethrown()){var i=n.get_destructor();i&&_e(i)(n.excPtr),f(n.excPtr)}}function ct(){_setThrew(0);var n=tr.pop();_t(n),Ue=0}function Rt(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(i){te[this.ptr+4>>2]=i},this.get_type=function(){return te[this.ptr+4>>2]},this.set_destructor=function(i){te[this.ptr+8>>2]=i},this.get_destructor=function(){return te[this.ptr+8>>2]},this.set_refcount=function(i){ne[this.ptr>>2]=i},this.set_caught=function(i){i=i?1:0,he[this.ptr+12>>0]=i},this.get_caught=function(){return he[this.ptr+12>>0]!=0},this.set_rethrown=function(i){i=i?1:0,he[this.ptr+13>>0]=i},this.get_rethrown=function(){return he[this.ptr+13>>0]!=0},this.init=function(i,c){this.set_adjusted_ptr(0),this.set_type(i),this.set_destructor(c),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var i=ne[this.ptr>>2];ne[this.ptr>>2]=i+1},this.release_ref=function(){var i=ne[this.ptr>>2];return ne[this.ptr>>2]=i-1,i===1},this.set_adjusted_ptr=function(i){te[this.ptr+16>>2]=i},this.get_adjusted_ptr=function(){return te[this.ptr+16>>2]},this.get_exception_ptr=function(){var i=L(this.get_type());if(i)return te[this.excPtr>>2];var c=this.get_adjusted_ptr();return c!==0?c:this.excPtr}}function jt(n){throw Ue||(Ue=n),n}function Et(){var n=Ue;if(!n)return $(0),0;var i=new Rt(n);i.set_adjusted_ptr(n);var c=i.get_type();if(!c)return $(0),n;for(var h=0;h>2])}var Me={},rt={},rr={},Wt=48,be=57;function bt(n){if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var i=n.charCodeAt(0);return i>=Wt&&i<=be?"_"+n:n}function K(n,i){return n=bt(n),new Function("body","return function "+n+`() { - "use strict"; return body.apply(this, arguments); -}; -`)(i)}function Se(n,i){var c=K(i,function(h){this.name=i,this.message=h;var m=new Error(h).stack;m!==void 0&&(this.stack=this.toString()+` -`+m.replace(/^Error(:[^\n]*)?\n/,""))});return c.prototype=Object.create(n.prototype),c.prototype.constructor=c,c.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},c}var ue=void 0;function Le(n){throw new ue(n)}function Pe(n,i,c){n.forEach(function(s){rr[s]=i});function h(s){var l=c(s);l.length!==n.length&&Le("Mismatched type converter count");for(var g=0;g{rt.hasOwnProperty(s)?m[l]=rt[s]:(t.push(s),Me.hasOwnProperty(s)||(Me[s]=[]),Me[s].push(()=>{m[l]=rt[s],++e,e===t.length&&h(m)}))}),t.length===0&&h(m)}function St(n){var i=mt[n];delete mt[n];var c=i.rawConstructor,h=i.rawDestructor,m=i.fields,t=m.map(e=>e.getterReturnType).concat(m.map(e=>e.setterArgumentType));Pe([n],t,e=>{var s={};return m.forEach((l,g)=>{var b=l.fieldName,C=e[g],T=l.getter,E=l.getterContext,x=e[g+m.length],N=l.setter,X=l.setterContext;s[b]={read:Z=>C.fromWireType(T(E,Z)),write:(Z,Te)=>{var oe=[];N(X,Z,x.toWireType(oe,Te)),wt(oe)}}}),[{name:i.name,fromWireType:function(l){var g={};for(var b in s)g[b]=s[b].read(l);return h(l),g},toWireType:function(l,g){for(var b in s)if(!(b in g))throw new TypeError('Missing field: "'+b+'"');var C=c();for(b in s)s[b].write(C,g[b]);return l!==null&&l.push(h,C),C},argPackAdvance:8,readValueFromPointer:lt,destructorFunction:h}]})}function ae(n,i,c,h,m){}function xe(n){switch(n){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+n)}}function br(){for(var n=new Array(256),i=0;i<256;++i)n[i]=String.fromCharCode(i);dr=n}var dr=void 0;function De(n){for(var i="",c=n;ce[c];)i+=dr[ce[c++]];return i}var dt=void 0;function ie(n){throw new dt(n)}function nt(n,i,c={}){if(!("argPackAdvance"in i))throw new TypeError("registerType registeredInstance requires argPackAdvance");var h=i.name;if(n||ie('type "'+h+'" must have a positive integer typeid pointer'),rt.hasOwnProperty(n)){if(c.ignoreDuplicateRegistrations)return;ie("Cannot register type '"+h+"' twice")}if(rt[n]=i,delete rr[n],Me.hasOwnProperty(n)){var m=Me[n];delete Me[n],m.forEach(t=>t())}}function nr(n,i,c,h,m){var t=xe(c);i=De(i),nt(n,{name:i,fromWireType:function(e){return!!e},toWireType:function(e,s){return s?h:m},argPackAdvance:8,readValueFromPointer:function(e){var s;if(c===1)s=he;else if(c===2)s=ge;else if(c===4)s=ne;else throw new TypeError("Unknown boolean type size: "+i);return this.fromWireType(s[e>>t])},destructorFunction:null})}function pr(n){if(!(this instanceof Oe)||!(n instanceof Oe))return!1;for(var i=this.$$.ptrType.registeredClass,c=this.$$.ptr,h=n.$$.ptrType.registeredClass,m=n.$$.ptr;i.baseClass;)c=i.upcast(c),i=i.baseClass;for(;h.baseClass;)m=h.upcast(m),h=h.baseClass;return i===h&&c===m}function pt(n){return{count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}}function Bt(n){function i(c){return c.$$.ptrType.registeredClass.name}ie(i(n)+" instance already deleted")}var Ht=!1;function Nt(n){}function ir(n){n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)}function kt(n){n.count.value-=1;var i=n.count.value===0;i&&ir(n)}function Pt(n,i,c){if(i===c)return n;if(c.baseClass===void 0)return null;var h=Pt(n,i,c.baseClass);return h===null?null:c.downcast(h)}var Hr={};function Ft(){return Object.keys(zt).length}function or(){var n=[];for(var i in zt)zt.hasOwnProperty(i)&&n.push(zt[i]);return n}var Tt=[];function Pr(){for(;Tt.length;){var n=Tt.pop();n.$$.deleteScheduled=!1,n.delete()}}var Dt=void 0;function cn(n){Dt=n,Tt.length&&Dt&&Dt(Pr)}function Ye(){r.getInheritedInstanceCount=Ft,r.getLiveInheritedInstances=or,r.flushPendingDeletes=Pr,r.setDelayFunction=cn}var zt={};function Ct(n,i){for(i===void 0&&ie("ptr should not be undefined");n.baseClass;)i=n.upcast(i),n=n.baseClass;return i}function Mr(n,i){return i=Ct(n,i),zt[i]}function qt(n,i){(!i.ptrType||!i.ptr)&&Le("makeClassHandle requires ptr and ptrType");var c=!!i.smartPtrType,h=!!i.smartPtr;return c!==h&&Le("Both smartPtrType and smartPtr must be specified"),i.count={value:1},We(Object.create(n,{$$:{value:i}}))}function ln(n){var i=this.getPointee(n);if(!i)return this.destructor(n),null;var c=Mr(this.registeredClass,i);if(c!==void 0){if(c.$$.count.value===0)return c.$$.ptr=i,c.$$.smartPtr=n,c.clone();var h=c.clone();return this.destructor(n),h}function m(){return this.isSmartPointer?qt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:i,smartPtrType:this,smartPtr:n}):qt(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var t=this.registeredClass.getActualType(i),e=Hr[t];if(!e)return m.call(this);var s;this.isConst?s=e.constPointerType:s=e.pointerType;var l=Pt(i,this.registeredClass,s.registeredClass);return l===null?m.call(this):this.isSmartPointer?qt(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:n}):qt(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function We(n){return typeof FinalizationRegistry>"u"?(We=i=>i,n):(Ht=new FinalizationRegistry(i=>{kt(i.$$)}),We=i=>{var c=i.$$,h=!!c.smartPtr;if(h){var m={$$:c};Ht.register(i,m,i)}return i},Nt=i=>Ht.unregister(i),We(n))}function Lr(){if(this.$$.ptr||Bt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=We(Object.create(Object.getPrototypeOf(this),{$$:{value:pt(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n}function dn(){this.$$.ptr||Bt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ie("Object already scheduled for deletion"),Nt(this),kt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function pn(){return!this.$$.ptr}function Tr(){return this.$$.ptr||Bt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ie("Object already scheduled for deletion"),Tt.push(this),Tt.length===1&&Dt&&Dt(Pr),this.$$.deleteScheduled=!0,this}function vn(){Oe.prototype.isAliasOf=pr,Oe.prototype.clone=Lr,Oe.prototype.delete=dn,Oe.prototype.isDeleted=pn,Oe.prototype.deleteLater=Tr}function Oe(){}function Cr(n,i,c){if(n[i].overloadTable===void 0){var h=n[i];n[i]=function(){return n[i].overloadTable.hasOwnProperty(arguments.length)||ie("Function '"+c+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+n[i].overloadTable+")!"),n[i].overloadTable[arguments.length].apply(this,arguments)},n[i].overloadTable=[],n[i].overloadTable[h.argCount]=h}}function vt(n,i,c){r.hasOwnProperty(n)?((c===void 0||r[n].overloadTable!==void 0&&r[n].overloadTable[c]!==void 0)&&ie("Cannot register public name '"+n+"' twice"),Cr(r,n,n),r.hasOwnProperty(c)&&ie("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),r[n].overloadTable[c]=i):(r[n]=i,c!==void 0&&(r[n].numArguments=c))}function vr(n,i,c,h,m,t,e,s){this.name=n,this.constructor=i,this.instancePrototype=c,this.rawDestructor=h,this.baseClass=m,this.getActualType=t,this.upcast=e,this.downcast=s,this.pureVirtualFunctions=[]}function hr(n,i,c){for(;i!==c;)i.upcast||ie("Expected null or instance of "+c.name+", got an instance of "+i.name),n=i.upcast(n),i=i.baseClass;return n}function gr(n,i){if(i===null)return this.isReference&&ie("null is not a valid "+this.name),0;i.$$||ie('Cannot pass "'+Rr(i)+'" as a '+this.name),i.$$.ptr||ie("Cannot pass deleted object as a pointer of type "+this.name);var c=i.$$.ptrType.registeredClass,h=hr(i.$$.ptr,c,this.registeredClass);return h}function ht(n,i){var c;if(i===null)return this.isReference&&ie("null is not a valid "+this.name),this.isSmartPointer?(c=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,c),c):0;i.$$||ie('Cannot pass "'+Rr(i)+'" as a '+this.name),i.$$.ptr||ie("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&i.$$.ptrType.isConst&&ie("Cannot convert argument of type "+(i.$$.smartPtrType?i.$$.smartPtrType.name:i.$$.ptrType.name)+" to parameter type "+this.name);var h=i.$$.ptrType.registeredClass;if(c=hr(i.$$.ptr,h,this.registeredClass),this.isSmartPointer)switch(i.$$.smartPtr===void 0&&ie("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:i.$$.smartPtrType===this?c=i.$$.smartPtr:ie("Cannot convert argument of type "+(i.$$.smartPtrType?i.$$.smartPtrType.name:i.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:c=i.$$.smartPtr;break;case 2:if(i.$$.smartPtrType===this)c=i.$$.smartPtr;else{var m=i.clone();c=this.rawShare(c,fr.toHandle(function(){m.delete()})),n!==null&&n.push(this.rawDestructor,c)}break;default:ie("Unsupporting sharing policy")}return c}function it(n,i){if(i===null)return this.isReference&&ie("null is not a valid "+this.name),0;i.$$||ie('Cannot pass "'+Rr(i)+'" as a '+this.name),i.$$.ptr||ie("Cannot pass deleted object as a pointer of type "+this.name),i.$$.ptrType.isConst&&ie("Cannot convert argument of type "+i.$$.ptrType.name+" to parameter type "+this.name);var c=i.$$.ptrType.registeredClass,h=hr(i.$$.ptr,c,this.registeredClass);return h}function Vr(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n}function He(n){this.rawDestructor&&this.rawDestructor(n)}function ot(n){n!==null&&n.delete()}function Br(){Ve.prototype.getPointee=Vr,Ve.prototype.destructor=He,Ve.prototype.argPackAdvance=8,Ve.prototype.readValueFromPointer=lt,Ve.prototype.deleteObject=ot,Ve.prototype.fromWireType=ln}function Ve(n,i,c,h,m,t,e,s,l,g,b){this.name=n,this.registeredClass=i,this.isReference=c,this.isConst=h,this.isSmartPointer=m,this.pointeeType=t,this.sharingPolicy=e,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=g,this.rawDestructor=b,!m&&i.baseClass===void 0?h?(this.toWireType=gr,this.destructorFunction=null):(this.toWireType=it,this.destructorFunction=null):this.toWireType=ht}function at(n,i,c){r.hasOwnProperty(n)||Le("Replacing nonexistant public symbol"),r[n].overloadTable!==void 0&&c!==void 0?r[n].overloadTable[c]=i:(r[n]=i,r[n].argCount=c)}function ar(n,i,c){var h=r["dynCall_"+n];return c&&c.length?h.apply(null,[i].concat(c)):h.call(null,i)}function Nr(n,i,c){if(n.includes("j"))return ar(n,i,c);var h=_e(i).apply(null,c);return h}function yr(n,i){var c=[];return function(){return c.length=0,Object.assign(c,arguments),Nr(n,i,c)}}function Be(n,i){n=De(n);function c(){return n.includes("j")?yr(n,i):_e(i)}var h=c();return typeof h!="function"&&ie("unknown function pointer with signature "+n+": "+i),h}var Ne=void 0;function sr(n){var i=P(n),c=De(i);return v(i),c}function je(n,i){var c=[],h={};function m(t){if(!h[t]&&!rt[t]){if(rr[t]){rr[t].forEach(m);return}c.push(t),h[t]=!0}}throw i.forEach(m),new Ne(n+": "+c.map(sr).join([", "]))}function zr(n,i,c,h,m,t,e,s,l,g,b,C,T){b=De(b),t=Be(m,t),s&&(s=Be(e,s)),g&&(g=Be(l,g)),T=Be(C,T);var E=bt(b);vt(E,function(){je("Cannot construct "+b+" due to unbound types",[h])}),Pe([n,i,c],h?[h]:[],function(x){x=x[0];var N,X;h?(N=x.registeredClass,X=N.instancePrototype):X=Oe.prototype;var Z=K(E,function(){if(Object.getPrototypeOf(this)!==Te)throw new dt("Use 'new' to construct "+b);if(oe.constructor_body===void 0)throw new dt(b+" has no accessible constructor");var un=oe.constructor_body[arguments.length];if(un===void 0)throw new dt("Tried to invoke ctor of "+b+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(oe.constructor_body).toString()+") parameters instead!");return un.apply(this,arguments)}),Te=Object.create(X,{constructor:{value:Z}});Z.prototype=Te;var oe=new vr(b,Z,Te,T,N,t,s,g),ke=new Ve(b,oe,!0,!1,!1),Ke=new Ve(b+"*",oe,!1,!1,!1),Lt=new Ve(b+" const*",oe,!1,!0,!1);return Hr[n]={pointerType:Ke,constPointerType:Lt},at(E,Z),[ke,Ke,Lt]})}function Ar(n,i){for(var c=[],h=0;h>2]);return c}function gt(n,i){if(!(n instanceof Function))throw new TypeError("new_ called with constructor type "+typeof n+" which is not a function");var c=K(n.name||"unknownFunctionName",function(){});c.prototype=n.prototype;var h=new c,m=n.apply(h,i);return m instanceof Object?m:h}function ze(n,i,c,h,m){var t=i.length;t<2&&ie("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var e=i[1]!==null&&c!==null,s=!1,l=1;l0?", ":"")+C),T+=(g?"var rv = ":"")+"invoker(fn"+(C.length>0?", ":"")+C+`); -`,s)T+=`runDestructors(destructors); -`;else for(var l=e?1:2;l0);var e=Ar(i,c);m=Be(h,m),Pe([],[n],function(s){s=s[0];var l="constructor "+s.name;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[i-1]!==void 0)throw new dt("Cannot register multiple constructors with identical number of parameters ("+(i-1)+") for class '"+s.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return s.registeredClass.constructor_body[i-1]=()=>{je("Cannot construct "+s.name+" due to unbound types",e)},Pe([],e,function(g){return g.splice(1,0,null),s.registeredClass.constructor_body[i-1]=ze(l,g,null,m,t),[]}),[]})}function hn(n,i,c,h,m,t,e,s){var l=Ar(c,h);i=De(i),t=Be(m,t),Pe([],[n],function(g){g=g[0];var b=g.name+"."+i;i.startsWith("@@")&&(i=Symbol[i.substring(2)]),s&&g.registeredClass.pureVirtualFunctions.push(i);function C(){je("Cannot call "+b+" due to unbound types",l)}var T=g.registeredClass.instancePrototype,E=T[i];return E===void 0||E.overloadTable===void 0&&E.className!==g.name&&E.argCount===c-2?(C.argCount=c-2,C.className=g.name,T[i]=C):(Cr(T,i,b),T[i].overloadTable[c-2]=C),Pe([],l,function(x){var N=ze(b,x,g,t,e);return T[i].overloadTable===void 0?(N.argCount=c-2,T[i]=N):T[i].overloadTable[c-2]=N,[]}),[]})}var ur=[],ut=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function At(n){n>4&&--ut[n].refcount===0&&(ut[n]=void 0,ur.push(n))}function gn(){for(var n=0,i=5;i(n||ie("Cannot use deleted val. handle = "+n),ut[n].value),toHandle:n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var i=ur.length?ur.pop():ut.length;return ut[i]={refcount:1,value:n},i}}}};function qr(n,i){i=De(i),nt(n,{name:i,fromWireType:function(c){var h=fr.toValue(c);return At(c),h},toWireType:function(c,h){return fr.toHandle(h)},argPackAdvance:8,readValueFromPointer:lt,destructorFunction:null})}function Rr(n){if(n===null)return"null";var i=typeof n;return i==="object"||i==="array"||i==="function"?n.toString():""+n}function _n(n,i){switch(i){case 2:return function(c){return this.fromWireType(fe[c>>2])};case 3:return function(c){return this.fromWireType(It[c>>3])};default:throw new TypeError("Unknown float type: "+n)}}function mn(n,i,c){var h=xe(c);i=De(i),nt(n,{name:i,fromWireType:function(m){return m},toWireType:function(m,t){return t},argPackAdvance:8,readValueFromPointer:_n(i,h),destructorFunction:null})}function Gr(n,i,c,h,m,t){var e=Ar(i,c);n=De(n),m=Be(h,m),vt(n,function(){je("Cannot call "+n+" due to unbound types",e)},i-1),Pe([],e,function(s){var l=[s[0],null].concat(s.slice(1));return at(n,ze(n,l,null,m,t),i-1),[]})}function wn(n,i,c){switch(i){case 0:return c?function(m){return he[m]}:function(m){return ce[m]};case 1:return c?function(m){return ge[m>>1]}:function(m){return ye[m>>1]};case 2:return c?function(m){return ne[m>>2]}:function(m){return te[m>>2]};default:throw new TypeError("Unknown integer type: "+n)}}function bn(n,i,c,h,m){i=De(i);var t=xe(c),e=C=>C;if(h===0){var s=32-8*c;e=C=>C<>>s}var l=i.includes("unsigned"),g=(C,T)=>{},b;l?b=function(C,T){return g(T,this.name),T>>>0}:b=function(C,T){return g(T,this.name),T},nt(n,{name:i,fromWireType:e,toWireType:b,argPackAdvance:8,readValueFromPointer:wn(i,t,h!==0),destructorFunction:null})}function Pn(n,i,c){var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],m=h[i];function t(e){e=e>>2;var s=te,l=s[e],g=s[e+1];return new m(Qe,g,l)}c=De(c),nt(n,{name:c,fromWireType:t,argPackAdvance:8,readValueFromPointer:t},{ignoreDuplicateRegistrations:!0})}function Tn(n,i){i=De(i);var c=i==="std::string";nt(n,{name:i,fromWireType:function(h){var m=te[h>>2],t=h+4,e;if(c)for(var s=t,l=0;l<=m;++l){var g=t+l;if(l==m||ce[g]==0){var b=g-s,C=$t(s,b);e===void 0?e=C:(e+="\0",e+=C),s=g+1}}else{for(var T=new Array(m),l=0;l>2]=t,c&&e)mr(m,l,t+1);else if(e)for(var g=0;g255&&(v(l),ie("String has UTF-16 code units that do not fit in 8 bits")),ce[l+g]=b}else for(var g=0;g>1,m=h+i/2;!(h>=m)&&ye[h];)++h;if(c=h<<1,c-n>32&&Jr)return Jr.decode(ce.subarray(n,c));for(var t="",e=0;!(e>=i/2);++e){var s=ge[n+e*2>>1];if(s==0)break;t+=String.fromCharCode(s)}return t}function An(n,i,c){if(c===void 0&&(c=2147483647),c<2)return 0;c-=2;for(var h=i,m=c>1]=e,i+=2}return ge[i>>1]=0,i-h}function Xr(n){return n.length*2}function Yr(n,i){for(var c=0,h="";!(c>=i/4);){var m=ne[n+c*4>>2];if(m==0)break;if(++c,m>=65536){var t=m-65536;h+=String.fromCharCode(55296|t>>10,56320|t&1023)}else h+=String.fromCharCode(m)}return h}function $n(n,i,c){if(c===void 0&&(c=2147483647),c<4)return 0;for(var h=i,m=h+c-4,t=0;t=55296&&e<=57343){var s=n.charCodeAt(++t);e=65536+((e&1023)<<10)|s&1023}if(ne[i>>2]=e,i+=4,i+4>m)break}return ne[i>>2]=0,i-h}function Kr(n){for(var i=0,c=0;c=55296&&h<=57343&&++c,i+=4}return i}function Qr(n,i,c){c=De(c);var h,m,t,e,s;i===2?(h=Cn,m=An,e=Xr,t=()=>ye,s=1):i===4&&(h=Yr,m=$n,e=Kr,t=()=>te,s=2),nt(n,{name:c,fromWireType:function(l){for(var g=te[l>>2],b=t(),C,T=l+4,E=0;E<=g;++E){var x=l+4+E*i;if(E==g||b[x>>s]==0){var N=x-T,X=h(T,N);C===void 0?C=X:(C+="\0",C+=X),T=x+i}}return v(l),C},toWireType:function(l,g){typeof g!="string"&&ie("Cannot pass non-string to C++ string type "+c);var b=e(g),C=u(4+b+i);return te[C>>2]=b>>s,m(g,C+4,b+i),l!==null&&l.push(v,C),C},argPackAdvance:8,readValueFromPointer:lt,destructorFunction:function(l){v(l)}})}function Zr(n,i,c,h,m,t){mt[n]={name:De(i),rawConstructor:Be(c,h),rawDestructor:Be(m,t),fields:[]}}function Er(n,i,c,h,m,t,e,s,l,g){mt[n].fields.push({fieldName:De(i),getterReturnType:c,getter:Be(h,m),getterContext:t,setterArgumentType:e,setter:Be(s,l),setterContext:g})}function Rn(n,i){i=De(i),nt(n,{isVoid:!0,name:i,argPackAdvance:0,fromWireType:function(){},toWireType:function(c,h){}})}function En(n){n>4&&(ut[n].refcount+=1)}function en(n,i){var c=rt[n];return c===void 0&&ie(i+" has unknown type "+sr(n)),c}function tn(n,i){n=en(n,"_emval_take_value");var c=n.readValueFromPointer(i);return fr.toHandle(c)}function rn(){er("")}function Sn(n,i,c){ce.copyWithin(n,i,i+c)}function kn(){return 2147483648}function Fn(n){try{return de.grow(n-Qe.byteLength+65535>>>16),Ie(de.buffer),1}catch{}}function Sr(n){var i=ce.length;n=n>>>0;var c=kn();if(n>c)return!1;let h=(l,g)=>l+(g-l%g)%g;for(var m=1;m<=4;m*=2){var t=i*(1+.2/m);t=Math.min(t,n+100663296);var e=Math.min(c,h(Math.max(n,t),65536)),s=Fn(e);if(s)return!0}return!1}function Dn(n){return 52}function Mt(n,i,c,h,m){return 70}var nn=[null,[],[]];function ft(n,i){var c=nn[n];i===0||i===10?((n===1?Ce:we)(Ge(c,0)),c.length=0):c.push(i)}function on(n,i,c,h){for(var m=0,t=0;t>2],s=te[i+4>>2];i+=8;for(var l=0;l>2]=m,0}function Gt(n){return n}function kr(n){var i=r["_"+n];return i}function an(n,i){he.set(n,i)}function _r(n,i,c,h,m){var t={string:x=>{var N=0;if(x!=null&&x!==0){var X=(x.length<<2)+1;N=R(X),mr(x,N,X)}return N},array:x=>{var N=R(x.length);return an(x,N),N}};function e(x){return i==="string"?$t(x):i==="boolean"?!!x:x}var s=kr(n),l=[],g=0;if(h)for(var b=0;b0||(wr(),Ze>0))return;function i(){I||(I=!0,r.calledRun=!0,!$e&&(Dr(),W(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Or()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),i()},1)):i()}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return S(),r.ready}})();d.exports=w})(pi);var so=pi.exports,uo=qn(so);const fo=new URL("/static/dv3d/assets/openjphjs-CANpALFP.wasm",import.meta.url),Wn={codec:void 0,decoder:void 0,decodeConfig:{}};function co(d,y,w){const k={width:y,height:w};for(;d>0;)k.width=Math.ceil(k.width/2),k.height=Math.ceil(k.height/2),d--;return k}function lo(d){if(Wn.decodeConfig=d,Wn.codec)return Promise.resolve();const y=uo({locateFile:w=>w.endsWith(".wasm")?fo.toString():w});return new Promise((w,k)=>{y.then(O=>{Wn.codec=O,Wn.decoder=new O.HTJ2KDecoder,w()},k)})}async function po(d,y){await lo();const w=new Wn.codec.HTJ2KDecoder,k=w.getEncodedBuffer(d.length);k.set(d);const O=y.decodeLevel||0;w.decodeSubResolution(O);const r=w.getFrameInfo();if(y.decodeLevel>0){const{width:Jt,height:Ge}=co(y.decodeLevel,r.width,r.height);r.width=Jt,r.height=Ge}const W=w.getDecodedBuffer();new Uint8Array(W.length).set(W);const M=`x: ${w.getImageOffset().x}, y: ${w.getImageOffset().y}`,z=w.getNumDecompositions(),B=w.getNumLayers(),q=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][w.getProgressionOrder()+1],V=w.getIsReversible(),ee=`${w.getBlockDimensions().width} x ${w.getBlockDimensions().height}`,G=`${w.getTileSize().width} x ${w.getTileSize().height}`,re=`${w.getTileOffset().x}, ${w.getTileOffset().y}`,se=`${W.length.toLocaleString()} bytes`,me=`${(W.length/k.length).toFixed(2)}:1`,le={columns:r.width,rows:r.height,bitsPerPixel:r.bitsPerSample,signed:r.isSigned,bytesPerPixel:y.bytesPerPixel,componentsPerPixel:r.componentCount};let Ce=vo(r,W);const{buffer:we,byteOffset:ve,byteLength:de}=Ce,$e=we.slice(ve,ve+de);Ce=new Ce.constructor($e);const qe={imageOffset:M,numDecompositions:z,numLayers:B,progessionOrder:q,reversible:V,blockDimensions:ee,tileSize:G,tileOffset:re,decodedSize:se,compressionRatio:me};return{...y,pixelData:Ce,imageInfo:le,encodeOptions:qe,...qe,...le}}function vo(d,y){return d.bitsPerSample>8?d.isSigned?new Int16Array(y.buffer,y.byteOffset,y.byteLength/2):new Uint16Array(y.buffer,y.byteOffset,y.byteLength/2):d.isSigned?new Int8Array(y.buffer,y.byteOffset,y.byteLength):new Uint8Array(y.buffer,y.byteOffset,y.byteLength)}function ho(d,y){const w=d.length,{rescaleSlope:k,rescaleIntercept:O,suvbw:r}=y;if(y.modality==="PT"&&typeof r=="number"&&!isNaN(r))for(let W=0;W=0?y<=255?w=Uint8Array:y<=65535&&(w=Uint16Array):d>=-128&&y<=127?w=Int8Array:d>=-32768&&y<=32767&&(w=Int16Array)),w||Float32Array}function _o(d){return d==="RGB"||d==="PALETTE COLOR"||d==="YBR_FULL"||d==="YBR_FULL_422"||d==="YBR_PARTIAL_422"||d==="YBR_PARTIAL_420"||d==="YBR_RCT"||d==="YBR_ICT"}const mo={bilinear:yi,replicate:_i};async function wo(d,y,w,k,O,r){const W=new Date().getTime();let H=null,M;switch(y){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":H=ei(d,w);break;case"1.2.840.10008.1.2.2":H=Oi(d,w);break;case"1.2.840.10008.1.2.1.99":H=ei(d,w);break;case"1.2.840.10008.1.2.5":H=Ii(d,w);break;case"1.2.840.10008.1.2.4.50":M={...d},H=zi(w,M);break;case"1.2.840.10008.1.2.4.51":H=Ji(d,w);break;case"1.2.840.10008.1.2.4.57":H=ti(d,w);break;case"1.2.840.10008.1.2.4.70":H=ti(d,w);break;case"1.2.840.10008.1.2.4.80":M={signed:d.pixelRepresentation===1,bytesPerPixel:d.bitsAllocated<=8?1:2,...d},H=ri(w,M);break;case"1.2.840.10008.1.2.4.81":M={signed:d.pixelRepresentation===1,bytesPerPixel:d.bitsAllocated<=8?1:2,...d},H=ri(w,M);break;case"1.2.840.10008.1.2.4.90":M={...d},H=ni(w,M);break;case"1.2.840.10008.1.2.4.91":M={...d},H=ni(w,M);break;case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":M={...d},H=po(w,M);break;default:throw new Error(`no decoder for transfer syntax ${y}`)}if(!H)throw new Error("decodePromise not defined");const z=await H,B=bo(z,O,W);return r==null||r(B),B}function bo(d,y,w,k){var Ce,we,ve;const O=d.pixelRepresentation!==void 0&&d.pixelRepresentation===1,r=O&&d.bitsStored!==void 0?32-d.bitsStored:void 0;if(O&&r!==void 0)for(let de=0;de>r;let W=d.pixelData;d.pixelDataLength=d.pixelData.length;const{min:H,max:M}=go(d.pixelData),z={Uint8Array,Uint16Array,Int16Array,Float32Array},B=(Ce=y.targetBuffer)==null?void 0:Ce.type,q=typeof y.allowFloatRendering<"u"?y.allowFloatRendering:!0,V=_o(d.photometricInterpretation)&&((we=y.targetBuffer)==null?void 0:we.offset)===void 0,G=((ve=y.preScale)==null?void 0:ve.enabled)&&Object.values(y.preScale.scalingParameters).some(de=>typeof de=="number"&&!Number.isInteger(de)),re=!y.preScale.enabled||!q&&G;B&&!V?W=Po(y,d,z,W):y.preScale.enabled&&!re?W=To(y,H,M,d):W=vi(H,M,d);let se=H,me=M;if(y.preScale.enabled&&!re){const de=y.preScale.scalingParameters;hi(de);const{rescaleSlope:$e,rescaleIntercept:qe}=de;if(typeof $e=="number"&&typeof qe=="number"){ho(W,de),d.preScale={...y.preScale,scaled:!0};const{rescaleIntercept:Ge,rescaleSlope:$t,suvbw:Ot}=de;se=$t*H+Ge,me=$t*M+Ge,Ot&&(se=se*Ot,me=me*Ot)}}else re&&(d.preScale={enabled:!0,scaled:!1},se=H,me=M);d.pixelData=W,d.smallestPixelValue=se,d.largestPixelValue=me;const le=new Date().getTime();return d.decodeTimeInMS=le-w,d}function Po(d,y,w,k){const{arrayBuffer:O,type:r,offset:W=0,length:H,rows:M}=d.targetBuffer,z=w[r];if(!z)throw new Error(`target array ${r} is not supported, or doesn't exist.`);M&&M!=y.rows&&Ao(y,d.targetBuffer,z);const B=y.pixelDataLength,q=W,V=H??B-q,ee=y.pixelData;if(V!==ee.length)throw new Error(`target array for image does not have the same length (${V}) as the decoded image length (${ee.length}).`);const G=O?new z(O,q,V):new z(V);return G.set(ee,0),k=G,k}function To(d,y,w,k){const O=d.preScale.scalingParameters;hi(O);const{rescaleSlope:r,rescaleIntercept:W}=O,H=typeof r=="number"&&typeof W=="number";let M=y,z=w;return H&&(M=r*y+W,z=r*w+W),vi(M,z,k)}function vi(d,y,w){const k=yo(d,y),O=new k(w.pixelData.length);return O.set(w.pixelData,0),O}function hi(d){if(!d)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}function Co(d,y,w){const{samplesPerPixel:k}=d,{rows:O,columns:r}=y,W=O*r*k,H=new w(W),M=H.byteLength/W;return{pixelData:H,rows:O,columns:r,frameInfo:{...d.frameInfo,rows:O,columns:r},imageInfo:{...d.imageInfo,rows:O,columns:r,bytesPerPixel:M}}}function Ao(d,y,w){const k=Co(d,y,w),{scalingType:O="replicate"}=y;return mo[O](d,k),Object.assign(d,k),d.pixelDataLength=d.pixelData.length,d}const $o={decodeTask({imageFrame:d,transferSyntax:y,decodeConfig:w,options:k,pixelData:O,callbackFn:r}){return wo(d,y,O,w,k,r)}};Xn($o); diff --git a/rad/static/dv3d/assets/jpeg-BQEpTZHd.js b/rad/static/dv3d/assets/jpeg-BQEpTZHd.js new file mode 100644 index 00000000..da85ff4d --- /dev/null +++ b/rad/static/dv3d/assets/jpeg-BQEpTZHd.js @@ -0,0 +1 @@ +var _={Grayscale:1,AdobeRGB:2,RGB:3,CYMK:4},$=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),ee=4017,re=799,ne=3406,ae=2276,ie=1567,fe=3784,R=5793,se=2896;function ce(g,s){for(var e=0,P=[],h,r,c=16;c>0&&!g[c-1];)c--;P.push({children:[],index:0});var t=P[0],n;for(h=0;h0;)t=P.pop();for(t.index++,P.push(t);P.length<=h;)P.push(n={children:[],index:0}),t.children[t.index]=n.children,t=n;e++}h+10)return l--,a>>l&1;if(a=g[s++],a==255){var o=g[s++];if(o)throw"unexpected marker: "+(a<<8|o).toString(16)}return l=7,a>>>7}function f(o){for(var b=o,m;(m=i())!==null;){if(b=b[m],typeof b=="number")return b;if(typeof b!="object")throw"invalid huffman sequence"}return null}function G(o){for(var b=0;o>0;){var m=i();if(m===null)return;b=b<<1|m,o--}return b}function u(o){var b=G(o);return b>=1<>4;if(M===0){if(q<15)break;A+=16;continue}A+=q;var Q=$[A];o.blockData[b+Q]=u(M),A++}}function D(o,b){var m=f(o.huffmanTableDC),O=m===0?0:u(m)<0){T--;return}for(var m=r,O=c;m<=O;){var A=f(o.huffmanTableAC),k=A&15,M=A>>4;if(k===0){if(M<15){T=G(M)+(1<>4,q===0)A<15?(T=G(A)+(1<=65488&&N<=65495)s+=2;else break}return s-x}function be(g,s,e){var P=g.quantizationTable,h,r,c,t,n,d,v,x,a,l;for(l=0;l<64;l++)e[l]=g.blockData[s+l]*P[l];for(l=0;l<8;++l){var i=8*l;if(e[1+i]===0&&e[2+i]===0&&e[3+i]===0&&e[4+i]===0&&e[5+i]===0&&e[6+i]===0&&e[7+i]===0){a=R*e[0+i]+512>>10,e[0+i]=a,e[1+i]=a,e[2+i]=a,e[3+i]=a,e[4+i]=a,e[5+i]=a,e[6+i]=a,e[7+i]=a;continue}h=R*e[0+i]+128>>8,r=R*e[4+i]+128>>8,c=e[2+i],t=e[6+i],n=se*(e[1+i]-e[7+i])+128>>8,x=se*(e[1+i]+e[7+i])+128>>8,d=e[3+i]<<4,v=e[5+i]<<4,a=h-r+1>>1,h=h+r+1>>1,r=a,a=c*fe+t*ie+128>>8,c=c*ie-t*fe+128>>8,t=a,a=n-v+1>>1,n=n+v+1>>1,v=a,a=x+d+1>>1,d=x-d+1>>1,x=a,a=h-t+1>>1,h=h+t+1>>1,t=a,a=r-c+1>>1,r=r+c+1>>1,c=a,a=n*ae+x*ne+2048>>12,n=n*ne-x*ae+2048>>12,x=a,a=d*re+v*ee+2048>>12,d=d*ee-v*re+2048>>12,v=a,e[0+i]=h+x,e[7+i]=h-x,e[1+i]=r+v,e[6+i]=r-v,e[2+i]=c+d,e[5+i]=c-d,e[3+i]=t+n,e[4+i]=t-n}for(l=0;l<8;++l){var f=l;if(e[1*8+f]===0&&e[2*8+f]===0&&e[3*8+f]===0&&e[4*8+f]===0&&e[5*8+f]===0&&e[6*8+f]===0&&e[7*8+f]===0){a=R*e[l+0]+8192>>14,e[0*8+f]=a,e[1*8+f]=a,e[2*8+f]=a,e[3*8+f]=a,e[4*8+f]=a,e[5*8+f]=a,e[6*8+f]=a,e[7*8+f]=a;continue}h=R*e[0*8+f]+2048>>12,r=R*e[4*8+f]+2048>>12,c=e[2*8+f],t=e[6*8+f],n=se*(e[1*8+f]-e[7*8+f])+2048>>12,x=se*(e[1*8+f]+e[7*8+f])+2048>>12,d=e[3*8+f],v=e[5*8+f],a=h-r+1>>1,h=h+r+1>>1,r=a,a=c*fe+t*ie+2048>>12,c=c*ie-t*fe+2048>>12,t=a,a=n-v+1>>1,n=n+v+1>>1,v=a,a=x+d+1>>1,d=x-d+1>>1,x=a,a=h-t+1>>1,h=h+t+1>>1,t=a,a=r-c+1>>1,r=r+c+1>>1,c=a,a=n*ae+x*ne+2048>>12,n=n*ne-x*ae+2048>>12,x=a,a=d*re+v*ee+2048>>12,d=d*ee-v*re+2048>>12,v=a,e[0*8+f]=h+x,e[7*8+f]=h-x,e[1*8+f]=r+v,e[6*8+f]=r-v,e[2*8+f]=c+d,e[5*8+f]=c-d,e[3*8+f]=t+n,e[4*8+f]=t-n}for(l=0;l<64;++l){var G=s+l,u=e[l];u=u<=-2056/g.bitConversion?0:u>=2024/g.bitConversion?255/g.bitConversion:u+2056/g.bitConversion>>4,g.blockData[G]=u}}function de(g,s){for(var e=s.blocksPerLine,P=s.blocksPerColumn,h=new Int32Array(64),r=0;r=255?255:g|0}class xe{constructor(){}load(s){var e=(function(n){this.parse(n),this.onload&&this.onload()}).bind(this);if(s.indexOf("data:")>-1){for(var P=s.indexOf("base64,")+7,h=atob(s.substring(P)),r=new Uint8Array(h.length),c=h.length-1;c>=0;c--)r[c]=h.charCodeAt(c);e(h)}else{var t=new XMLHttpRequest;t.open("GET",s,!0),t.responseType="arraybuffer",t.onload=(function(){var n=new Uint8Array(t.response);e(n)}).bind(this),t.send(null)}}parse(s){function e(){var k=s[r]<<8|s[r+1];return r+=2,k}function P(){var k=e(),M=s.subarray(r,r+k-2);return r+=M.length,M}function h(k){for(var M=Math.ceil(k.samplesPerLine/8/k.maxH),q=Math.ceil(k.scanLines/8/k.maxV),Q=0;Q>4)if(L>>4===1)for(f=0;f<64;f++){var y=$[f];T[y]=e()}else throw"DQT: invalid table spec";else for(f=0;f<64;f++){var S=$[f];T[S]=s[r++]}v[L&15]=T}break;case 65472:case 65473:case 65474:if(n)throw"Only single frame JPEGs supported";e(),n={},n.extended=l===65473,n.progressive=l===65474,n.precision=s[r++],n.scanLines=e(),n.samplesPerLine=e(),n.components=[],n.componentIds={};var X=s[r++],K,Z=0,E=0;for(i=0;i>4,U=s[r+1]&15;Z>4?x:a)[z&15]=ce(I,F)}break;case 65501:e(),d=e();break;case 65498:e();var N=s[r++],J=[],C;for(i=0;i>4],C.huffmanTableAC=x[o&15],J.push(C)}var b=s[r++],m=s[r++],O=s[r++],A=he(s,r,n,J,d,b,m,O>>4,O&15);r+=A;break;case 65535:s[r]!==255&&r--;break;default:if(s[r-3]==255&&s[r-2]>=192&&s[r-2]<=254){r-=3;break}throw"unknown JPEG marker "+l.toString(16)}l=e()}switch(this.width=n.samplesPerLine,this.height=n.scanLines,this.jfif=c,this.adobe=t,this.components=[],n.components.length){case 1:this.colorspace=_.Grayscale;break;case 3:this.adobe?this.colorspace=_.AdobeRGB:this.colorspace=_.RGB;break;case 4:this.colorspace=_.CYMK;break;default:this.colorspace=_.Unknown}for(var i=0;i0&&!g[c-1];)c--;P.push({children:[],index:0});var t=P[0],n;for(h=0;h0;)t=P.pop();for(t.index++,P.push(t);P.length<=h;)P.push(n={children:[],index:0}),t.children[t.index]=n.children,t=n;e++}h+10)return l--,a>>l&1;if(a=g[s++],a==255){var o=g[s++];if(o)throw"unexpected marker: "+(a<<8|o).toString(16)}return l=7,a>>>7}function f(o){for(var b=o,m;(m=i())!==null;){if(b=b[m],typeof b=="number")return b;if(typeof b!="object")throw"invalid huffman sequence"}return null}function G(o){for(var b=0;o>0;){var m=i();if(m===null)return;b=b<<1|m,o--}return b}function u(o){var b=G(o);return b>=1<>4;if(M===0){if(q<15)break;A+=16;continue}A+=q;var Q=$[A];o.blockData[b+Q]=u(M),A++}}function w(o,b){var m=f(o.huffmanTableDC),O=m===0?0:u(m)<0){T--;return}for(var m=r,O=c;m<=O;){var A=f(o.huffmanTableAC),k=A&15,M=A>>4;if(k===0){if(M<15){T=G(M)+(1<>4,q===0)A<15?(T=G(A)+(1<=65488&&N<=65495)s+=2;else break}return s-x}function be(g,s,e){var P=g.quantizationTable,h,r,c,t,n,d,v,x,a,l;for(l=0;l<64;l++)e[l]=g.blockData[s+l]*P[l];for(l=0;l<8;++l){var i=8*l;if(e[1+i]===0&&e[2+i]===0&&e[3+i]===0&&e[4+i]===0&&e[5+i]===0&&e[6+i]===0&&e[7+i]===0){a=R*e[0+i]+512>>10,e[0+i]=a,e[1+i]=a,e[2+i]=a,e[3+i]=a,e[4+i]=a,e[5+i]=a,e[6+i]=a,e[7+i]=a;continue}h=R*e[0+i]+128>>8,r=R*e[4+i]+128>>8,c=e[2+i],t=e[6+i],n=se*(e[1+i]-e[7+i])+128>>8,x=se*(e[1+i]+e[7+i])+128>>8,d=e[3+i]<<4,v=e[5+i]<<4,a=h-r+1>>1,h=h+r+1>>1,r=a,a=c*fe+t*ie+128>>8,c=c*ie-t*fe+128>>8,t=a,a=n-v+1>>1,n=n+v+1>>1,v=a,a=x+d+1>>1,d=x-d+1>>1,x=a,a=h-t+1>>1,h=h+t+1>>1,t=a,a=r-c+1>>1,r=r+c+1>>1,c=a,a=n*ae+x*ne+2048>>12,n=n*ne-x*ae+2048>>12,x=a,a=d*re+v*ee+2048>>12,d=d*ee-v*re+2048>>12,v=a,e[0+i]=h+x,e[7+i]=h-x,e[1+i]=r+v,e[6+i]=r-v,e[2+i]=c+d,e[5+i]=c-d,e[3+i]=t+n,e[4+i]=t-n}for(l=0;l<8;++l){var f=l;if(e[1*8+f]===0&&e[2*8+f]===0&&e[3*8+f]===0&&e[4*8+f]===0&&e[5*8+f]===0&&e[6*8+f]===0&&e[7*8+f]===0){a=R*e[l+0]+8192>>14,e[0*8+f]=a,e[1*8+f]=a,e[2*8+f]=a,e[3*8+f]=a,e[4*8+f]=a,e[5*8+f]=a,e[6*8+f]=a,e[7*8+f]=a;continue}h=R*e[0*8+f]+2048>>12,r=R*e[4*8+f]+2048>>12,c=e[2*8+f],t=e[6*8+f],n=se*(e[1*8+f]-e[7*8+f])+2048>>12,x=se*(e[1*8+f]+e[7*8+f])+2048>>12,d=e[3*8+f],v=e[5*8+f],a=h-r+1>>1,h=h+r+1>>1,r=a,a=c*fe+t*ie+2048>>12,c=c*ie-t*fe+2048>>12,t=a,a=n-v+1>>1,n=n+v+1>>1,v=a,a=x+d+1>>1,d=x-d+1>>1,x=a,a=h-t+1>>1,h=h+t+1>>1,t=a,a=r-c+1>>1,r=r+c+1>>1,c=a,a=n*ae+x*ne+2048>>12,n=n*ne-x*ae+2048>>12,x=a,a=d*re+v*ee+2048>>12,d=d*ee-v*re+2048>>12,v=a,e[0*8+f]=h+x,e[7*8+f]=h-x,e[1*8+f]=r+v,e[6*8+f]=r-v,e[2*8+f]=c+d,e[5*8+f]=c-d,e[3*8+f]=t+n,e[4*8+f]=t-n}for(l=0;l<64;++l){var G=s+l,u=e[l];u=u<=-2056/g.bitConversion?0:u>=2024/g.bitConversion?255/g.bitConversion:u+2056/g.bitConversion>>4,g.blockData[G]=u}}function de(g,s){for(var e=s.blocksPerLine,P=s.blocksPerColumn,h=new Int32Array(64),r=0;r=255?255:g|0}class xe{constructor(){}load(s){var e=(function(n){this.parse(n),this.onload&&this.onload()}).bind(this);if(s.indexOf("data:")>-1){for(var P=s.indexOf("base64,")+7,h=atob(s.substring(P)),r=new Uint8Array(h.length),c=h.length-1;c>=0;c--)r[c]=h.charCodeAt(c);e(h)}else{var t=new XMLHttpRequest;t.open("GET",s,!0),t.responseType="arraybuffer",t.onload=(function(){var n=new Uint8Array(t.response);e(n)}).bind(this),t.send(null)}}parse(s){function e(){var k=s[r]<<8|s[r+1];return r+=2,k}function P(){var k=e(),M=s.subarray(r,r+k-2);return r+=M.length,M}function h(k){for(var M=Math.ceil(k.samplesPerLine/8/k.maxH),q=Math.ceil(k.scanLines/8/k.maxV),Q=0;Q>4)if(L>>4===1)for(f=0;f<64;f++){var y=$[f];T[y]=e()}else throw"DQT: invalid table spec";else for(f=0;f<64;f++){var S=$[f];T[S]=s[r++]}v[L&15]=T}break;case 65472:case 65473:case 65474:if(n)throw"Only single frame JPEGs supported";e(),n={},n.extended=l===65473,n.progressive=l===65474,n.precision=s[r++],n.scanLines=e(),n.samplesPerLine=e(),n.components=[],n.componentIds={};var X=s[r++],K,Z=0,D=0;for(i=0;i>4,U=s[r+1]&15;Z>4?x:a)[z&15]=ce(I,F)}break;case 65501:e(),d=e();break;case 65498:e();var N=s[r++],J=[],C;for(i=0;i>4],C.huffmanTableAC=x[o&15],J.push(C)}var b=s[r++],m=s[r++],O=s[r++],A=he(s,r,n,J,d,b,m,O>>4,O&15);r+=A;break;case 65535:s[r]!==255&&r--;break;default:if(s[r-3]==255&&s[r-2]>=192&&s[r-2]<=254){r-=3;break}throw"unknown JPEG marker "+l.toString(16)}l=e()}switch(this.width=n.samplesPerLine,this.height=n.scanLines,this.jfif=c,this.adobe=t,this.components=[],n.components.length){case 1:this.colorspace=_.Grayscale;break;case 3:this.adobe?this.colorspace=_.AdobeRGB:this.colorspace=_.RGB;break;case 4:this.colorspace=_.CYMK;break;default:this.colorspace=_.Unknown}for(var i=0;i>4!==4092||o===65476;){switch(o){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,s.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(o>>8!==255)throw new Error("ERROR: format throw new IOException! (decode)")}o=this.stream.get16()}if(o<65472||o>65479)throw new Error("ERROR: could not handle arithmetic code!");this.frame.read(this.stream),o=this.stream.get16();do{for(;o!==65498;){switch(o){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,s.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(o>>8!==255)throw new Error("ERROR: format throw new IOException! (Parser.decode)")}o=this.stream.get16()}switch(this.precision=this.frame.precision,this.components=this.frame.components,this.numBytes||(this.numBytes=parseInt(Math.ceil(this.precision/8))),this.numBytes==1?this.mask=255:this.mask=65535,this.scan.read(this.stream),this.numComp=this.scan.numComp,this.selection=this.scan.selection,this.numBytes===1?this.numComp===3?(this.getter=this.getValueRGB,this.setter=this.setValueRGB,this.output=this.outputRGB):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle):(this.getter=this.getValue16,this.setter=this.setValue16,this.output=this.outputSingle),this.selection){case 2:this.selector=this.select2;break;case 3:this.selector=this.select3;break;case 4:this.selector=this.select4;break;case 5:this.selector=this.select5;break;case 6:this.selector=this.select6;break;case 7:this.selector=this.select7;break;default:this.selector=this.select1;break}for(this.scanComps=this.scan.components,this.quantTables=this.quantTable.quantTables,h=0;h=s.lossless.Decoder.RESTART_MARKER_BEGIN&&o<=s.lossless.Decoder.RESTART_MARKER_END))break}o===65500&&l===1&&(this.readNumber(),o=this.stream.get16())}while(o!==65497&&this.xLoc>1)},s.lossless.Decoder.prototype.select6=function(e){return this.getPreviousY(e)+(this.getPreviousX(e)-this.getPreviousXY(e)>>1)},s.lossless.Decoder.prototype.select7=function(e){return(this.getPreviousX(e)+this.getPreviousY(e))/2},s.lossless.Decoder.prototype.decodeRGB=function(e,t,r){var i,o,l,c,h,p,x,d;for(e[0]=this.selector(0),e[1]=this.selector(1),e[2]=this.selector(2),h=0;h=65280)return i;for(e[h]=this.IDCT_Source[0]=e[h]+this.getn(r,i,t,r),this.IDCT_Source[0]*=c[0],d=1;d<64;d+=1){if(i=this.getHuffmanValue(o,t,r),i>=65280)return i;if(d+=i>>4,i&15)this.IDCT_Source[s.lossless.Decoder.IDCT_P[d]]=this.getn(r,i&15,t,r)*c[d];else if(!(i>>4))break}}return 0},s.lossless.Decoder.prototype.decodeSingle=function(e,t,r){var i,o,l,c;for(this.restarting?(this.restarting=!1,e[0]=1<=65280)return i;if(l=this.getn(e,i,t,r),c=l>>8,c>=s.lossless.Decoder.RESTART_MARKER_BEGIN&&c<=s.lossless.Decoder.RESTART_MARKER_END)return c;e[0]+=l}return 0},s.lossless.Decoder.prototype.getHuffmanValue=function(e,t,r){var i,o,l;if(l=65535,r[0]<8?(t[0]<<=8,o=this.stream.get8(),o===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),t[0]|=o):r[0]-=8,i=e[t[0]>>r[0]],i&s.lossless.Decoder.MSB){if(this.markerIndex!==0)return this.markerIndex=0,65280|this.marker;t[0]&=l>>16-r[0],t[0]<<=8,o=this.stream.get8(),o===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),t[0]|=o,i=e[(i&255)*256+(t[0]>>r[0])],r[0]+=8}if(r[0]+=8-(i>>8),r[0]<0)throw new Error(`index=${r[0]} temp=${t[0]} code=${i} in HuffmanValue()`);return r[0]>16-r[0],i&255)},s.lossless.Decoder.prototype.getn=function(e,t,r,i){var o,l,c,h,p;if(l=1,c=-1,h=65535,t===0)return 0;if(t===16)return e[0]>=0?-32768:32768;if(i[0]-=t,i[0]>=0){if(i[0]>i[0],r[0]&=h>>16-i[0]}else{if(r[0]<<=8,p=this.stream.get8(),p===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),r[0]|=p,i[0]+=8,i[0]<0){if(this.markerIndex!==0)return this.markerIndex=0,(65280|this.marker)<<8;r[0]<<=8,p=this.stream.get8(),p===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),r[0]|=p,i[0]+=8}if(i[0]<0)throw new Error(`index=${i[0]} in getn()`);if(i[0]>i[0],r[0]&=h>>16-i[0]}return o0?this.getter(this.yLoc*this.xDim+this.xLoc-1,e):this.yLoc>0?this.getPreviousY(e):1<0&&this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,e):this.getPreviousY(e)},s.lossless.Decoder.prototype.getPreviousY=function(e){return this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc,e):this.getPreviousX(e)},s.lossless.Decoder.prototype.isLastPixel=function(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1},s.lossless.Decoder.prototype.outputSingle=function(e){this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))},s.lossless.Decoder.prototype.outputRGB=function(e){var t=this.yLoc*this.xDim+this.xLoc;this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))},s.lossless.Decoder.prototype.setValue8=function(e,t){this.outputData[e]=t},s.lossless.Decoder.prototype.getValue8=function(e){return this.outputData[e]};var u=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]===256}();u?(s.lossless.Decoder.prototype.setValue16=s.lossless.Decoder.prototype.setValue8,s.lossless.Decoder.prototype.getValue16=s.lossless.Decoder.prototype.getValue8):(s.lossless.Decoder.prototype.setValue16=function(e,t){this.outputData[e]=(t&255)<<8|t>>8&255},s.lossless.Decoder.prototype.getValue16=function(e){var t=this.outputData[e];return(t&255)<<8|t>>8&255}),s.lossless.Decoder.prototype.setValueRGB=function(e,t,r){this.outputData[e*3+r]=t},s.lossless.Decoder.prototype.getValueRGB=function(e,t){return this.outputData[e*3+t]},s.lossless.Decoder.prototype.readApp=function(){var e=0,t=this.stream.get16();for(e+=2;et)throw new Error("ERROR: frame format error");if(i=n.get8(),e+=1,e>=t)throw new Error("ERROR: frame format error [c>=Lf]");o=n.get8(),e+=1,this.components[i]||(this.components[i]=new s.lossless.ComponentSpec),this.components[i].hSamp=o>>4,this.components[i].vSamp=o&15,this.components[i].quantTableSel=n.get8(),e+=1}if(e!==t)throw new Error("ERROR: frame format error [Lf!=count]");return 1};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.FrameHeader)},{"./component-spec.js":1,"./data-stream.js":2}],5:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.DataStream=s.lossless.DataStream||(typeof a<"u"?a("./data-stream.js"):null),s.lossless.Utils=s.lossless.Utils||(typeof a<"u"?a("./utils.js"):null),s.lossless.HuffmanTable=s.lossless.HuffmanTable||function(){this.l=s.lossless.Utils.createArray(4,2,16),this.th=[],this.v=s.lossless.Utils.createArray(4,2,16,200),this.tc=s.lossless.Utils.createArray(4,2),this.tc[0][0]=0,this.tc[1][0]=0,this.tc[2][0]=0,this.tc[3][0]=0,this.tc[0][1]=0,this.tc[1][1]=0,this.tc[2][1]=0,this.tc[3][1]=0,this.th[0]=0,this.th[1]=0,this.th[2]=0,this.th[3]=0},s.lossless.HuffmanTable.MSB=2147483648,s.lossless.HuffmanTable.prototype.read=function(n,e){var t=0,r,i,o,l,c,h;for(r=n.get16(),t+=2;t3)throw new Error("ERROR: Huffman table ID > 3");if(l=i>>4,l>2)throw new Error("ERROR: Huffman table [Table class > 2 ]");for(this.th[o]=1,this.tc[o][l]=1,c=0;c<16;c+=1)this.l[o][l][c]=n.get8(),t+=1;for(c=0;c<16;c+=1)for(h=0;hr)throw new Error("ERROR: Huffman table format error [count>Lh]");this.v[o][l][c][h]=n.get8(),t+=1}}if(t!==r)throw new Error("ERROR: Huffman table format error [count!=Lf]");for(c=0;c<4;c+=1)for(h=0;h<2;h+=1)this.tc[c][h]!==0&&this.buildHuffTable(e[c][h],this.l[c][h],this.v[c][h]);return 1},s.lossless.HuffmanTable.prototype.buildHuffTable=function(n,e,t){var r,i,o,l,c,h;for(i=256,o=0,l=0;l<8;l+=1)for(c=0;c>l+1;h+=1)n[o]=t[l][c]|l+1<<8,o+=1;for(l=1;o<256;l+=1,o+=1)n[o]=l|s.lossless.HuffmanTable.MSB;for(r=1,o=0,l=8;l<16;l+=1)for(c=0;c>l-7;h+=1)n[r*256+o]=t[l][c]|l+1<<8,o+=1;if(o>=256){if(o>256)throw new Error("ERROR: Huffman table error(1)!");o=0,r+=1}}};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.HuffmanTable)},{"./data-stream.js":2,"./utils.js":10}],6:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.ComponentSpec=s.lossless.ComponentSpec||(typeof a<"u"?a("./component-spec.js"):null),s.lossless.DataStream=s.lossless.DataStream||(typeof a<"u"?a("./data-stream.js"):null),s.lossless.Decoder=s.lossless.Decoder||(typeof a<"u"?a("./decoder.js"):null),s.lossless.FrameHeader=s.lossless.FrameHeader||(typeof a<"u"?a("./frame-header.js"):null),s.lossless.HuffmanTable=s.lossless.HuffmanTable||(typeof a<"u"?a("./huffman-table.js"):null),s.lossless.QuantizationTable=s.lossless.QuantizationTable||(typeof a<"u"?a("./quantization-table.js"):null),s.lossless.ScanComponent=s.lossless.ScanComponent||(typeof a<"u"?a("./scan-component.js"):null),s.lossless.ScanHeader=s.lossless.ScanHeader||(typeof a<"u"?a("./scan-header.js"):null),s.lossless.Utils=s.lossless.Utils||(typeof a<"u"?a("./utils.js"):null);var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s)},{"./component-spec.js":1,"./data-stream.js":2,"./decoder.js":3,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-component.js":8,"./scan-header.js":9,"./utils.js":10}],7:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.DataStream=s.lossless.DataStream||(typeof a<"u"?a("./data-stream.js"):null),s.lossless.Utils=s.lossless.Utils||(typeof a<"u"?a("./utils.js"):null),s.lossless.QuantizationTable=s.lossless.QuantizationTable||function(){this.precision=[],this.tq=[],this.quantTables=s.lossless.Utils.createArray(4,64),this.tq[0]=0,this.tq[1]=0,this.tq[2]=0,this.tq[3]=0},s.lossless.QuantizationTable.enhanceQuantizationTable=function(n,e){var t;for(t=0;t<8;t+=1)n[e[0*8+t]]*=90,n[e[4*8+t]]*=90,n[e[2*8+t]]*=118,n[e[6*8+t]]*=49,n[e[5*8+t]]*=71,n[e[1*8+t]]*=126,n[e[7*8+t]]*=25,n[e[3*8+t]]*=106;for(t=0;t<8;t+=1)n[e[0+8*t]]*=90,n[e[4+8*t]]*=90,n[e[2+8*t]]*=118,n[e[6+8*t]]*=49,n[e[5+8*t]]*=71,n[e[1+8*t]]*=126,n[e[7+8*t]]*=25,n[e[3+8*t]]*=106;for(t=0;t<64;t+=1)n[t]>>=6},s.lossless.QuantizationTable.prototype.read=function(n,e){var t=0,r,i,o,l;for(r=n.get16(),t+=2;t3)throw new Error("ERROR: Quantization table ID > 3");if(this.precision[o]=i>>4,this.precision[o]===0)this.precision[o]=8;else if(this.precision[o]===1)this.precision[o]=16;else throw new Error("ERROR: Quantization table precision error");if(this.tq[o]=1,this.precision[o]===8){for(l=0;l<64;l+=1){if(t>r)throw new Error("ERROR: Quantization table format error");this.quantTables[o][l]=n.get8(),t+=1}s.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[o],e)}else{for(l=0;l<64;l+=1){if(t>r)throw new Error("ERROR: Quantization table format error");this.quantTables[o][l]=n.get16(),t+=2}s.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[o],e)}}if(t!==r)throw new Error("ERROR: Quantization table error [count!=Lq]");return 1};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.QuantizationTable)},{"./data-stream.js":2,"./utils.js":10}],8:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.ScanComponent=s.lossless.ScanComponent||function(){this.acTabSel=0,this.dcTabSel=0,this.scanCompSel=0};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.ScanComponent)},{}],9:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.DataStream=s.lossless.DataStream||(typeof a<"u"?a("./data-stream.js"):null),s.lossless.ScanComponent=s.lossless.ScanComponent||(typeof a<"u"?a("./scan-component.js"):null),s.lossless.ScanHeader=s.lossless.ScanHeader||function(){this.ah=0,this.al=0,this.numComp=0,this.selection=0,this.spectralEnd=0,this.components=[]},s.lossless.ScanHeader.prototype.read=function(n){var e=0,t,r,i;for(t=n.get16(),e+=2,this.numComp=n.get8(),e+=1,r=0;rt)throw new Error("ERROR: scan header format error");this.components[r].scanCompSel=n.get8(),e+=1,i=n.get8(),e+=1,this.components[r].dcTabSel=i>>4,this.components[r].acTabSel=i&15}if(this.selection=n.get8(),e+=1,this.spectralEnd=n.get8(),e+=1,i=n.get8(),this.ah=i>>4,this.al=i&15,e+=1,e!==t)throw new Error("ERROR: scan header format error [count!=Ns]");return 1};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.ScanHeader)},{"./data-stream.js":2,"./scan-component.js":8}],10:[function(a,f,m){var s=s||{};s.lossless=s.lossless||{},s.lossless.Utils=s.lossless.Utils||{},s.lossless.Utils.createArray=function(n){var e=new Array(n||0),t=n;if(arguments.length>1)for(var r=Array.prototype.slice.call(arguments,1);t--;)e[n-1-t]=s.lossless.Utils.createArray.apply(this,r);return e},s.lossless.Utils.makeCRCTable=function(){for(var n,e=[],t=0;t<256;t++){n=t;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;e[t]=n}return e},s.lossless.Utils.crc32=function(n){for(var e=new Uint8Array(n.buffer),t=s.lossless.Utils.crcTable||(s.lossless.Utils.crcTable=s.lossless.Utils.makeCRCTable()),r=-1,i=0;i>>8^t[(r^e[i])&255];return(r^-1)>>>0};var u=typeof f;u!=="undefined"&&f.exports&&(f.exports=s.lossless.Utils)},{}]},{},[6])(6)});var g=JpegImage;export{g as default}; diff --git a/rad/static/dv3d/assets/lossless-BIYWXcdg.js b/rad/static/dv3d/assets/lossless-BIYWXcdg.js new file mode 100644 index 00000000..5fb618e1 --- /dev/null +++ b/rad/static/dv3d/assets/lossless-BIYWXcdg.js @@ -0,0 +1 @@ +var b=Object.defineProperty;var k=(a,t,e)=>t in a?b(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e;var h=(a,t,e)=>k(a,typeof t!="symbol"?t+"":t,e);var y=Object.defineProperty,D=(a,t)=>{for(var e in t)y(a,e,{get:t[e],enumerable:!0})},L={hSamp:0,quantTableSel:0,vSamp:0},v=class{constructor(a,t,e){h(this,"buffer");h(this,"index");this.buffer=new Uint8Array(a,t,e),this.index=0}get16(){const a=(this.buffer[this.index]<<8)+this.buffer[this.index+1];return this.index+=2,a}get8(){const a=this.buffer[this.index];return this.index+=1,a}},S=class{constructor(){h(this,"dimX",0);h(this,"dimY",0);h(this,"numComp",0);h(this,"precision",0);h(this,"components",[])}read(a){let t=0,e;const r=a.get16();t+=2,this.precision=a.get8(),t+=1,this.dimY=a.get16(),t+=2,this.dimX=a.get16(),t+=2,this.numComp=a.get8(),t+=1;for(let n=1;n<=this.numComp;n+=1){if(t>r)throw new Error("ERROR: frame format error");const s=a.get8();if(t+=1,t>=r)throw new Error("ERROR: frame format error [c>=Lf]");e=a.get8(),t+=1,this.components[s]||(this.components[s]={...L}),this.components[s].hSamp=e>>4,this.components[s].vSamp=e&15,this.components[s].quantTableSel=a.get8(),t+=1}if(t!==r)throw new Error("ERROR: frame format error [Lf!=count]");return 1}},x={};D(x,{crc32:()=>I,crcTable:()=>T,createArray:()=>w,makeCRCTable:()=>E});var w=(...a)=>{if(a.length>1){const t=a[0],e=a.slice(1),r=[];for(let n=0;n>>1:a>>>1;t[e]=a}return t},T=E(),I=function(a){const t=new Uint8Array(a);let e=-1;for(let r=0;r>>8^T[(e^t[r])&255];return(e^-1)>>>0},R,C=(R=class{constructor(){h(this,"l");h(this,"th");h(this,"v");h(this,"tc");this.l=w(4,2,16),this.th=[0,0,0,0],this.v=w(4,2,16,200),this.tc=[[0,0],[0,0],[0,0],[0,0]]}read(t,e){let r=0,n,s,o,i,c;const f=t.get16();for(r+=2;r3)throw new Error("ERROR: Huffman table ID > 3");if(o=n>>4,o>2)throw new Error("ERROR: Huffman table [Table class > 2 ]");for(this.th[s]=1,this.tc[s][o]=1,i=0;i<16;i+=1)this.l[s][o][i]=t.get8(),r+=1;for(i=0;i<16;i+=1)for(c=0;cf)throw new Error("ERROR: Huffman table format error [count>Lh]");this.v[s][o][i][c]=t.get8(),r+=1}}if(r!==f)throw new Error("ERROR: Huffman table format error [count!=Lf]");for(i=0;i<4;i+=1)for(c=0;c<2;c+=1)this.tc[i][c]!==0&&this.buildHuffTable(e[i][c],this.l[i][c],this.v[i][c]);return 1}buildHuffTable(t,e,r){let n,s,o,i,c;for(s=0,o=0;o<8;o+=1)for(i=0;i>o+1;c+=1)t[s]=r[o][i]|o+1<<8,s+=1;for(o=1;s<256;o+=1,s+=1)t[s]=o|R.MSB;for(n=1,s=0,o=8;o<16;o+=1)for(i=0;i>o-7;c+=1)t[n*256+s]=r[o][i]|o+1<<8,s+=1;if(s>=256){if(s>256)throw new Error("ERROR: Huffman table error(1)!");s=0,n+=1}}}},h(R,"MSB",2147483648),R),p,B=(p=class{constructor(){h(this,"precision",[]);h(this,"tq",[0,0,0,0]);h(this,"quantTables",w(4,64))}read(t,e){let r=0,n,s,o;const i=t.get16();for(r+=2;r3)throw new Error("ERROR: Quantization table ID > 3");if(this.precision[s]=n>>4,this.precision[s]===0)this.precision[s]=8;else if(this.precision[s]===1)this.precision[s]=16;else throw new Error("ERROR: Quantization table precision error");if(this.tq[s]=1,this.precision[s]===8){for(o=0;o<64;o+=1){if(r>i)throw new Error("ERROR: Quantization table format error");this.quantTables[s][o]=t.get8(),r+=1}p.enhanceQuantizationTable(this.quantTables[s],e)}else{for(o=0;o<64;o+=1){if(r>i)throw new Error("ERROR: Quantization table format error");this.quantTables[s][o]=t.get16(),r+=2}p.enhanceQuantizationTable(this.quantTables[s],e)}}if(r!==i)throw new Error("ERROR: Quantization table error [count!=Lq]");return 1}},h(p,"enhanceQuantizationTable",function(t,e){for(let r=0;r<8;r+=1)t[e[0*8+r]]*=90,t[e[4*8+r]]*=90,t[e[2*8+r]]*=118,t[e[6*8+r]]*=49,t[e[5*8+r]]*=71,t[e[1*8+r]]*=126,t[e[7*8+r]]*=25,t[e[3*8+r]]*=106;for(let r=0;r<8;r+=1)t[e[0+8*r]]*=90,t[e[4+8*r]]*=90,t[e[2+8*r]]*=118,t[e[6+8*r]]*=49,t[e[5+8*r]]*=71,t[e[1+8*r]]*=126,t[e[7+8*r]]*=25,t[e[3+8*r]]*=106;for(let r=0;r<64;r+=1)t[r]>>=6}),p),A={acTabSel:0,dcTabSel:0,scanCompSel:0},P=class{constructor(){h(this,"ah",0);h(this,"al",0);h(this,"numComp",0);h(this,"selection",0);h(this,"spectralEnd",0);h(this,"components",[])}read(a){let t=0,e,r;const n=a.get16();for(t+=2,this.numComp=a.get8(),t+=1,e=0;en)throw new Error("ERROR: scan header format error");this.components[e].scanCompSel=a.get8(),t+=1,r=a.get8(),t+=1,this.components[e].dcTabSel=r>>4,this.components[e].acTabSel=r&15}if(this.selection=a.get8(),t+=1,this.spectralEnd=a.get8(),t+=1,r=a.get8(),this.ah=r>>4,this.al=r&15,t+=1,t!==n)throw new Error("ERROR: scan header format error [count!=Ns]");return 1}},d=function(){const a=new ArrayBuffer(2);return new DataView(a).setInt16(0,256,!0),new Int16Array(a)[0]===256}(),l,_=(l=class{constructor(t,e){h(this,"buffer",null);h(this,"stream",null);h(this,"frame",new S);h(this,"huffTable",new C);h(this,"quantTable",new B);h(this,"scan",new P);h(this,"DU",w(10,4,64));h(this,"HuffTab",w(4,2,50*256));h(this,"IDCT_Source",[]);h(this,"nBlock",[]);h(this,"acTab",w(10,1));h(this,"dcTab",w(10,1));h(this,"qTab",w(10,1));h(this,"marker",0);h(this,"markerIndex",0);h(this,"numComp",0);h(this,"restartInterval",0);h(this,"selection",0);h(this,"xDim",0);h(this,"yDim",0);h(this,"xLoc",0);h(this,"yLoc",0);h(this,"outputData",null);h(this,"restarting",!1);h(this,"mask",0);h(this,"numBytes",0);h(this,"precision");h(this,"components",[]);h(this,"getter",null);h(this,"setter",null);h(this,"output",null);h(this,"selector",null);this.buffer=t??null,this.numBytes=e??0}decompress(t,e,r){return this.decode(t,e,r).buffer}decode(t,e,r,n){let s=0;const o=[];let i,c;const f=[],g=[];let m;t&&(this.buffer=t),n!==void 0&&(this.numBytes=n),this.stream=new v(this.buffer,e,r),this.buffer=null,this.xLoc=0,this.yLoc=0;let u=this.stream.get16();if(u!==65496)throw new Error("Not a JPEG file");for(u=this.stream.get16();u>>4!==4092||u===65476;){switch(u){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,l.TABLE);break;case 65501:this.restartInterval=this.readNumber()??0;break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(u>>8!==255)throw new Error("ERROR: format throw new IOException! (decode)")}u=this.stream.get16()}if(u<65472||u>65479)throw new Error("ERROR: could not handle arithmetic code!");this.frame.read(this.stream),u=this.stream.get16();do{for(;u!==65498;){switch(u){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,l.TABLE);break;case 65501:this.restartInterval=this.readNumber()??0;break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(u>>8!==255)throw new Error("ERROR: format throw new IOException! (Parser.decode)")}u=this.stream.get16()}switch(this.precision=this.frame.precision,this.components=this.frame.components,this.numBytes||(this.numBytes=Math.round(Math.ceil(this.precision/8))),this.numBytes===1?this.mask=255:this.mask=65535,this.scan.read(this.stream),this.numComp=this.scan.numComp,this.selection=this.scan.selection,this.numBytes===1?this.numComp===3?(this.getter=this.getValueRGB,this.setter=this.setValueRGB,this.output=this.outputRGB):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle),this.selection){case 2:this.selector=this.select2;break;case 3:this.selector=this.select3;break;case 4:this.selector=this.select4;break;case 5:this.selector=this.select5;break;case 6:this.selector=this.select6;break;case 7:this.selector=this.select7;break;default:this.selector=this.select1;break}for(i=0;i=l.RESTART_MARKER_BEGIN&&u<=l.RESTART_MARKER_END))break}u===65500&&s===1&&(this.readNumber(),u=this.stream.get16())}while(u!==65497&&this.xLoc>1)}select6(t){return this.getPreviousY(t)+(this.getPreviousX(t)-this.getPreviousXY(t)>>1)}select7(t){return(this.getPreviousX(t)+this.getPreviousY(t))/2}decodeRGB(t,e,r){if(this.selector===null)throw new Error("decode hasn't run yet");let n,s,o,i,c,f,g;for(t[0]=this.selector(0),t[1]=this.selector(1),t[2]=this.selector(2),i=0;i=65280)return m;for(t[i]=this.IDCT_Source[0]=t[i]+this.getn(r,m,e,r),this.IDCT_Source[0]*=o[0],g=1;g<64;g+=1){if(m=this.getHuffmanValue(n,e,r),m>=65280)return m;if(g+=m>>4,m&15)this.IDCT_Source[l.IDCT_P[g]]=this.getn(r,m&15,e,r)*o[g];else if(!(m>>4))break}}return 0}decodeSingle(t,e,r){if(this.selector===null)throw new Error("decode hasn't run yet");let n,s,o,i;for(this.restarting?(this.restarting=!1,t[0]=1<=65280)return n;if(o=this.getn(t,n,e,r),i=o>>8,i>=l.RESTART_MARKER_BEGIN&&i<=l.RESTART_MARKER_END)return i;t[0]+=o}return 0}getHuffmanValue(t,e,r){let n,s;if(!this.stream)throw new Error("stream not initialized");if(r[0]<8?(e[0]<<=8,s=this.stream.get8(),s===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),e[0]|=s):r[0]-=8,n=t[e[0]>>r[0]],n&l.MSB){if(this.markerIndex!==0)return this.markerIndex=0,65280|this.marker;e[0]&=65535>>16-r[0],e[0]<<=8,s=this.stream.get8(),s===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),e[0]|=s,n=t[(n&255)*256+(e[0]>>r[0])],r[0]+=8}if(r[0]+=8-(n>>8),r[0]<0)throw new Error("index="+r[0]+" temp="+e[0]+" code="+n+" in HuffmanValue()");return r[0]>16-r[0],n&255)}getn(t,e,r,n){let s,o;if(this.stream===null)throw new Error("stream not initialized");if(e===0)return 0;if(e===16)return t[0]>=0?-32768:32768;if(n[0]-=e,n[0]>=0){if(n[0]>n[0],r[0]&=65535>>16-n[0]}else{if(r[0]<<=8,o=this.stream.get8(),o===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),r[0]|=o,n[0]+=8,n[0]<0){if(this.markerIndex!==0)return this.markerIndex=0,(65280|this.marker)<<8;r[0]<<=8,o=this.stream.get8(),o===255&&(this.marker=this.stream.get8(),this.marker!==0&&(this.markerIndex=9)),r[0]|=o,n[0]+=8}if(n[0]<0)throw new Error("index="+n[0]+" in getn()");if(n[0]>n[0],r[0]&=65535>>16-n[0]}return s<1<0?this.getter(this.yLoc*this.xDim+this.xLoc-1,t):this.yLoc>0?this.getPreviousY(t):1<0&&this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,t):this.getPreviousY(t)}getPreviousY(t=0){if(this.getter===null)throw new Error("decode hasn't run yet");return this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc,t):this.getPreviousX(t)}isLastPixel(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1}outputSingle(t){if(this.setter===null)throw new Error("decode hasn't run yet");this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))}outputRGB(t){if(this.setter===null)throw new Error("decode hasn't run yet");const e=this.yLoc*this.xDim+this.xLoc;this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))}setValue8(t,e){if(!this.outputData)throw new Error("output data not ready");d?this.outputData[t]=e:this.outputData[t]=(e&255)<<8|e>>8&255}getValue8(t){if(this.outputData===null)throw new Error("output data not ready");if(d)return this.outputData[t];{const e=this.outputData[t];return(e&255)<<8|e>>8&255}}setValueRGB(t,e,r=0){this.outputData!==null&&(this.outputData[t*3+r]=e)}getValueRGB(t,e){if(this.outputData===null)throw new Error("output data not ready");return this.outputData[t*3+e]}readApp(){if(this.stream===null)return null;let t=0;const e=this.stream.get16();for(t+=2;ttypeof e=="object"&&e!==null||typeof e=="function",Za={canHandle:e=>qn(e)&&e[Qn],serialize(e){const{port1:t,port2:n}=new MessageChannel;return Be(e,t),[n,[n]]},deserialize(e){return e.start(),rs(e)}},ts={canHandle:e=>qn(e)&&Ut in e,serialize({value:e}){let t;return e instanceof Error?t={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:t={isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},Zn=new Map([["proxy",Za],["throw",ts]]);function es(e,t){for(const n of e)if(t===n||n==="*"||n instanceof RegExp&&n.test(t))return!0;return!1}function Be(e,t=globalThis,n=["*"]){t.addEventListener("message",function r(a){if(!a||!a.data)return;if(!es(n,a.origin)){console.warn(`Invalid origin '${a.origin}' for comlink proxy`);return}const{id:s,type:i,path:c}=Object.assign({path:[]},a.data),o=(a.data.argumentList||[]).map(lt);let u;try{const f=c.slice(0,-1).reduce((g,h)=>g[h],e),l=c.reduce((g,h)=>g[h],e);switch(i){case"GET":u=l;break;case"SET":f[c.slice(-1)[0]]=lt(a.data.value),u=!0;break;case"APPLY":u=l.apply(f,o);break;case"CONSTRUCT":{const g=new l(...o);u=cs(g)}break;case"ENDPOINT":{const{port1:g,port2:h}=new MessageChannel;Be(e,h),u=os(g,[g])}break;case"RELEASE":u=void 0;break;default:return}}catch(f){u={value:f,[Ut]:0}}Promise.resolve(u).catch(f=>({value:f,[Ut]:0})).then(f=>{const[l,g]=Yt(f);t.postMessage(Object.assign(Object.assign({},l),{id:s}),g),i==="RELEASE"&&(t.removeEventListener("message",r),tr(t),Ee in e&&typeof e[Ee]=="function"&&e[Ee]())}).catch(f=>{const[l,g]=Yt({value:new TypeError("Unserializable return value"),[Ut]:0});t.postMessage(Object.assign(Object.assign({},l),{id:s}),g)})}),t.start&&t.start()}function ns(e){return e.constructor.name==="MessagePort"}function tr(e){ns(e)&&e.close()}function rs(e,t){return Ae(e,[],t)}function Mt(e){if(e)throw new Error("Proxy has been released and is not useable")}function er(e){return Ot(e,{type:"RELEASE"}).then(()=>{tr(e)})}const Ht=new WeakMap,Wt="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{const t=(Ht.get(e)||0)-1;Ht.set(e,t),t===0&&er(e)});function as(e,t){const n=(Ht.get(t)||0)+1;Ht.set(t,n),Wt&&Wt.register(e,t,e)}function ss(e){Wt&&Wt.unregister(e)}function Ae(e,t=[],n=function(){}){let r=!1;const a=new Proxy(n,{get(s,i){if(Mt(r),i===qa)return()=>{ss(a),er(e),r=!0};if(i==="then"){if(t.length===0)return{then:()=>a};const c=Ot(e,{type:"GET",path:t.map(o=>o.toString())}).then(lt);return c.then.bind(c)}return Ae(e,[...t,i])},set(s,i,c){Mt(r);const[o,u]=Yt(c);return Ot(e,{type:"SET",path:[...t,i].map(f=>f.toString()),value:o},u).then(lt)},apply(s,i,c){Mt(r);const o=t[t.length-1];if(o===Qa)return Ot(e,{type:"ENDPOINT"}).then(lt);if(o==="bind")return Ae(e,t.slice(0,-1));const[u,f]=dn(c);return Ot(e,{type:"APPLY",path:t.map(l=>l.toString()),argumentList:u},f).then(lt)},construct(s,i){Mt(r);const[c,o]=dn(i);return Ot(e,{type:"CONSTRUCT",path:t.map(u=>u.toString()),argumentList:c},o).then(lt)}});return as(a,e),a}function is(e){return Array.prototype.concat.apply([],e)}function dn(e){const t=e.map(Yt);return[t.map(n=>n[0]),is(t.map(n=>n[1]))]}const nr=new WeakMap;function os(e,t){return nr.set(e,t),e}function cs(e){return Object.assign(e,{[Qn]:!0})}function Yt(e){for(const[t,n]of Zn)if(n.canHandle(e)){const[r,a]=n.serialize(e);return[{type:"HANDLER",name:t,value:r},a]}return[{type:"RAW",value:e},nr.get(e)||[]]}function lt(e){switch(e.type){case"HANDLER":return Zn.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Ot(e,t,n){return new Promise(r=>{const a=us();e.addEventListener("message",function s(i){!i.data||!i.data.id||i.data.id!==a||(e.removeEventListener("message",s),r(i.data))}),e.start&&e.start(),e.postMessage(Object.assign({id:a},t),n)})}function us(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var B;(function(e){e.ERROR_EVENT="CORNERSTONE_ERROR",e.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",e.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",e.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",e.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",e.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",e.PRESET_MODIFIED="CORNERSTONE_VIEWPORT_RENDERING_PRESET_MODIFIED",e.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",e.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",e.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",e.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",e.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",e.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",e.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",e.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",e.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",e.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",e.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",e.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",e.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",e.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",e.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",e.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",e.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",e.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",e.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",e.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",e.VIEWPORT_NEW_IMAGE_SET="CORNERSTONE_VIEWPORT_NEW_IMAGE_SET",e.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",e.STACK_SCROLL_OUT_OF_BOUNDS="STACK_SCROLL_OUT_OF_BOUNDS",e.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",e.GEOMETRY_CACHE_GEOMETRY_REMOVED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_REMOVED",e.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS="VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS",e.VOLUME_VIEWPORT_SCROLL="VOLUME_VIEWPORT_SCROLL",e.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",e.WEB_WORKER_PROGRESS="CORNERSTONE_WEB_WORKER_PROGRESS",e.COLORMAP_MODIFIED="CORNERSTONE_COLORMAP_MODIFIED",e.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED="DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED",e.DYNAMIC_VOLUME_TIME_POINT_LOADED="DYNAMIC_VOLUME_TIME_POINT_LOADED",e.GEOMETRY_LOADED="GEOMETRY_LOADED",e.GEOMETRY_LOADED_FAILED="GEOMETRY_LOADED_FAILED"})(B||(B={}));var Xt;(function(e){e[e.FAR_REPLICATE=1]="FAR_REPLICATE",e[e.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",e[e.SUBRESOLUTION=6]="SUBRESOLUTION",e[e.LOSSY=7]="LOSSY",e[e.FULL_RESOLUTION=8]="FULL_RESOLUTION"})(Xt||(Xt={}));class fs{constructor(){this.listeners={},this.debouncedListeners={}}reset(){this.listeners={},this.debouncedListeners={}}addEventListenerOnce(t,n){const r=a=>{this.removeEventListener(t,r),n.call(this,a)};this.addEventListener(t,r)}addEventListener(t,n){this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].indexOf(n)===-1&&this.listeners[t].push(n)}addEventListenerDebounced(t,n,r){this.debouncedListeners[t]=this.debouncedListeners[t]||{};const a=this.debouncedListeners[t];if(!a[n]){const s=i=>{a[n]&&clearTimeout(a[n].timeoutId),a[n].timeoutId=setTimeout(()=>{n.call(this,i)},r)};a[n]={original:n,handle:s,timeoutId:null},this.addEventListener(t,s)}}removeEventListenerDebounced(t,n){var r;if((r=this.debouncedListeners[t])!=null&&r[n]){const a=this.debouncedListeners[t][n];this.removeEventListener(t,a.handle),clearTimeout(a.timeoutId),delete this.debouncedListeners[t][n]}}removeEventListener(t,n){if(!this.listeners[t])return;const r=this.listeners[t],a=r.length;for(let s=0;s=0&&mn.call(t.callee)==="[object Function]"),r},Oe,En;function ys(){if(En)return Oe;En=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=ar,a=Object.prototype.propertyIsEnumerable,s=!a.call({toString:null},"toString"),i=a.call(function(){},"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],o=function(g){var h=g.constructor;return h&&h.prototype===g},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if(typeof window>"u")return!1;for(var g in window)try{if(!u["$"+g]&&t.call(window,g)&&window[g]!==null&&typeof window[g]=="object")try{o(window[g])}catch{return!0}}catch{return!0}return!1}(),l=function(g){if(typeof window>"u"||!f)return o(g);try{return o(g)}catch{return!1}};e=function(h){var y=h!==null&&typeof h=="object",p=n.call(h)==="[object Function]",d=r(h),C=y&&n.call(h)==="[object String]",T=[];if(!y&&!p&&!d)throw new TypeError("Object.keys called on a non-object");var m=i&&p;if(C&&h.length>0&&!t.call(h,0))for(var E=0;E0)for(var O=0;O"u"||!G?R:G(Uint8Array),yt={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?R:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?R:ArrayBuffer,"%ArrayIteratorPrototype%":dt&&G?G([][Symbol.iterator]()):R,"%AsyncFromSyncIteratorPrototype%":R,"%AsyncFunction%":Ct,"%AsyncGenerator%":Ct,"%AsyncGeneratorFunction%":Ct,"%AsyncIteratorPrototype%":Ct,"%Atomics%":typeof Atomics>"u"?R:Atomics,"%BigInt%":typeof BigInt>"u"?R:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?R:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?R:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?R:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Gs,"%eval%":eval,"%EvalError%":js,"%Float32Array%":typeof Float32Array>"u"?R:Float32Array,"%Float64Array%":typeof Float64Array>"u"?R:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?R:FinalizationRegistry,"%Function%":cr,"%GeneratorFunction%":Ct,"%Int8Array%":typeof Int8Array>"u"?R:Int8Array,"%Int16Array%":typeof Int16Array>"u"?R:Int16Array,"%Int32Array%":typeof Int32Array>"u"?R:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":dt&&G?G(G([][Symbol.iterator]())):R,"%JSON%":typeof JSON=="object"?JSON:R,"%Map%":typeof Map>"u"?R:Map,"%MapIteratorPrototype%":typeof Map>"u"||!dt||!G?R:G(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?R:Promise,"%Proxy%":typeof Proxy>"u"?R:Proxy,"%RangeError%":zs,"%ReferenceError%":Bs,"%Reflect%":typeof Reflect>"u"?R:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?R:Set,"%SetIteratorPrototype%":typeof Set>"u"||!dt||!G?R:G(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?R:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":dt&&G?G(""[Symbol.iterator]()):R,"%Symbol%":dt?Symbol:R,"%SyntaxError%":wt,"%ThrowTypeError%":Ks,"%TypedArray%":Ws,"%TypeError%":vt,"%Uint8Array%":typeof Uint8Array>"u"?R:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?R:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?R:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?R:Uint32Array,"%URIError%":Ps,"%WeakMap%":typeof WeakMap>"u"?R:WeakMap,"%WeakRef%":typeof WeakRef>"u"?R:WeakRef,"%WeakSet%":typeof WeakSet>"u"?R:WeakSet};if(G)try{null.error}catch(e){var Ys=G(G(e));yt["%Error.prototype%"]=Ys}var Xs=function e(t){var n;if(t==="%AsyncFunction%")n=Te("async function () {}");else if(t==="%GeneratorFunction%")n=Te("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=Te("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var a=e("%AsyncGenerator%");a&&G&&(n=G(a.prototype))}return yt[t]=n,n},wn={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Dt=or,Jt=Fs,Js=Dt.call(Function.call,Array.prototype.concat),Qs=Dt.call(Function.apply,Array.prototype.splice),Sn=Dt.call(Function.call,String.prototype.replace),Qt=Dt.call(Function.call,String.prototype.slice),qs=Dt.call(Function.call,RegExp.prototype.exec),Zs=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ti=/\\(\\)?/g,ei=function(t){var n=Qt(t,0,1),r=Qt(t,-1);if(n==="%"&&r!=="%")throw new wt("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new wt("invalid intrinsic syntax, expected opening `%`");var a=[];return Sn(t,Zs,function(s,i,c,o){a[a.length]=c?Sn(o,ti,"$1"):i||s}),a},ni=function(t,n){var r=t,a;if(Jt(wn,r)&&(a=wn[r],r="%"+a[0]+"%"),Jt(yt,r)){var s=yt[r];if(s===Ct&&(s=Xs(r)),typeof s>"u"&&!n)throw new vt("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:a,name:r,value:s}}throw new wt("intrinsic "+t+" does not exist!")},ur=function(t,n){if(typeof t!="string"||t.length===0)throw new vt("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new vt('"allowMissing" argument must be a boolean');if(qs(/^%?[^%]*%?$/,t)===null)throw new wt("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=ei(t),a=r.length>0?r[0]:"",s=ni("%"+a+"%",n),i=s.name,c=s.value,o=!1,u=s.alias;u&&(a=u[0],Qs(r,Js([0,1],u)));for(var f=1,l=!0;f=r.length){var p=ht(c,g);l=!!p,l&&"get"in p&&!("originalValue"in p.get)?c=p.get:c=c[g]}else l=Jt(c,g),c=c[g];l&&!o&&(yt[i]=c)}}return c},ri=ur,Gt=ri("%Object.defineProperty%",!0)||!1;if(Gt)try{Gt({},"a",{value:1})}catch{Gt=!1}var fr=Gt,ai=ur,jt=ai("%Object.getOwnPropertyDescriptor%",!0);if(jt)try{jt([],"length")}catch{jt=null}var si=jt,_n=fr,ii=sr,mt=ir,Dn=si,oi=function(t,n,r){if(!t||typeof t!="object"&&typeof t!="function")throw new mt("`obj` must be an object or a function`");if(typeof n!="string"&&typeof n!="symbol")throw new mt("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new mt("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new mt("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new mt("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new mt("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,s=arguments.length>4?arguments[4]:null,i=arguments.length>5?arguments[5]:null,c=arguments.length>6?arguments[6]:!1,o=!!Dn&&Dn(t,n);if(_n)_n(t,n,{configurable:i===null&&o?o.configurable:!i,enumerable:a===null&&o?o.enumerable:!a,value:r,writable:s===null&&o?o.writable:!s});else if(c||!a&&!s&&!i)t[n]=r;else throw new ii("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},Ne=fr,lr=function(){return!!Ne};lr.hasArrayLengthDefineBug=function(){if(!Ne)return null;try{return Ne([],"length",{value:1}).length!==1}catch{return!0}};var ci=lr,ui=ms,fi=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",li=Object.prototype.toString,gi=Array.prototype.concat,Ln=oi,hi=function(e){return typeof e=="function"&&li.call(e)==="[object Function]"},gr=ci(),yi=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!hi(r)||!r())return}gr?Ln(e,t,n,!0):Ln(e,t,n)},hr=function(e,t){var n=arguments.length>2?arguments[2]:{},r=ui(t);fi&&(r=gi.call(r,Object.getOwnPropertySymbols(t)));for(var a=0;anull};function J(e){if(e==null||e.isA)return e;if(!e.vtkClass)return X.console&&X.console.error&&X.console.error("Invalid VTK object"),null;const t=Or[e.vtkClass];if(!t)return X.console&&X.console.error&&X.console.error(`No vtk class found for Object of type ${e.vtkClass}`),null;const n={...e};Object.keys(n).forEach(a=>{n[a]&&typeof n[a]=="object"&&n[a].vtkClass&&(n[a]=J(n[a]))});const r=t(n);return r&&r.modified&&r.modified(),r}function _i(e,t){Or[e]=t}J.register=_i;class we extends Array{push(){for(let t=0;t{Tr[e]=gt});X.console=console.hasOwnProperty("log")?console:Tr;const ct={debug:gt,error:X.console.error||gt,info:X.console.info||gt,log:X.console.log||gt,warn:X.console.warn||gt};function vr(e,t){ct[e]&&(ct[e]=t||gt)}function wr(){ct.log(...arguments)}function Sr(){ct.info(...arguments)}function qt(){ct.debug(...arguments)}function F(){ct.error(...arguments)}function se(){ct.warn(...arguments)}const xn={};function _r(e){xn[e]||(ct.error(e),xn[e]=!0)}const z=Object.create(null);z.Float32Array=Float32Array;z.Float64Array=Float64Array;z.Uint8Array=Uint8Array;z.Int8Array=Int8Array;z.Uint16Array=Uint16Array;z.Int16Array=Int16Array;z.Uint32Array=Uint32Array;z.Int32Array=Int32Array;z.Uint8ClampedArray=Uint8ClampedArray;try{z.BigInt64Array=BigInt64Array,z.BigUint64Array=BigUint64Array}catch{}function ie(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:2,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;const r=["TB","GB","MB","KB"];let a=Number(e),s="B";for(;a>n;)a/=n,s=r.pop();return`${a.toFixed(t)} ${s}`}function xr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:" ";const n=[];let r=e;for(;r>1e3;)n.push(`000${r%1e3}`.slice(-3)),r=Math.floor(r/1e3);return r>0&&n.push(r),n.reverse(),n.join(t)}function Mr(e){Object.keys(e).forEach(t=>{Array.isArray(e[t])&&(e[t]=[].concat(e[t]))})}function xi(e){return Object.values(z).some(t=>e instanceof t)}function Mi(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;ne[n]===t)}function Ir(e){return e&&e.isA?e.getState():e}function Pe(e){setTimeout(e,0)}function Ar(e,t){const n=performance.now();e.finally(()=>{const r=performance.now()-n;t(r)})}function ue(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Mr(t);const n=[];if(Number.isInteger(t.mtime)||(t.mtime=++Re),!("classHierarchy"in t))t.classHierarchy=new we("vtkObject");else if(!(t.classHierarchy instanceof we)){const s=new we;for(let i=0;i!!t.deleted,e.modified=s=>{if(t.deleted){F("instance deleted - cannot call any method");return}s&&si&&i(e)))},e.onModified=s=>{if(t.deleted)return F("instance deleted - cannot call any method"),null;const i=n.length;return n.push(s),a(i)},e.getMTime=()=>t.mtime,e.isA=s=>{let i=t.classHierarchy.length;for(;i--;)if(t.classHierarchy[i]===s)return!0;return!1},e.getClassName=function(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.classHierarchy[t.classHierarchy.length-1-s]},e.set=function(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=!1;return Object.keys(s).forEach(u=>{const f=c?null:e[`set${ce(u)}`];f&&Array.isArray(s[u])&&f.length>1?o=f(...s[u])||o:f?o=f(s[u])||o:(["mtime"].indexOf(u)===-1&&!i&&se(`Warning: Set value to model directly ${u}, ${s[u]}`),o=t[u]!==s[u]||o,t[u]=s[u])}),o},e.get=function(){for(var s=arguments.length,i=new Array(s),c=0;c{o[u]=t[u]}),o},e.getReferenceByName=s=>t[s],e.delete=()=>{Object.keys(t).forEach(s=>delete t[s]),n.forEach((s,i)=>r(i)),t.deleted=!0},e.getState=()=>{if(t.deleted)return null;const s={...t,vtkClass:e.getClassName()};Object.keys(s).forEach(c=>{s[c]===null||s[c]===void 0||c[0]==="_"?delete s[c]:s[c].isA?s[c]=s[c].getState():Array.isArray(s[c])?s[c]=s[c].map(Ir):xi(s[c])&&(s[c]=Array.from(s[c]))});const i={};return Object.keys(s).sort().forEach(c=>{i[c]=s[c]}),i.mtime&&delete i.mtime,i},e.shallowCopy=function(s){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(s.getClassName()!==e.getClassName())throw new Error(`Cannot ShallowCopy ${s.getClassName()} into ${e.getClassName()}`);const c=s.get(),o=Object.keys(t).sort();Object.keys(c).sort().forEach(f=>{const l=o.indexOf(f);l===-1?i&&qt(`add ${f} in shallowCopy`):o.splice(l,1),t[f]=c[f]}),o.length&&i&&qt(`Untouched keys: ${o.join(", ")}`),e.modified()},e.toJSON=function(){return e.getState()},e}const Ai={object(e,t,n){return function(){return{...t[n.name]}}}};function Lt(e,t,n){n.forEach(r=>{if(typeof r=="object"){const a=Ai[r.type];a?e[`get${U(r.name)}`]=a(e,t,r):e[`get${U(r.name)}`]=()=>t[r.name]}else e[`get${U(r)}`]=()=>t[r]})}const Nr={enum(e,t,n){const r=`_on${U(n.name)}Changed`;return a=>{var s;if(typeof a=="string"){if(n.enum[a]!==void 0)return t[n.name]!==n.enum[a]?(t[n.name]=n.enum[a],e.modified(),!0):!1;throw F(`Set Enum with invalid argument ${n}, ${a}`),new RangeError("Set Enum with invalid string argument")}if(typeof a=="number"){if(t[n.name]!==a){if(Object.keys(n.enum).map(i=>n.enum[i]).indexOf(a)!==-1){const i=t[n.name];return t[n.name]=a,(s=t[r])==null||s.call(t,e,t,a,i),e.modified(),!0}throw F(`Set Enum outside numeric range ${n}, ${a}`),new RangeError("Set Enum outside numeric range")}return!1}throw F(`Set Enum with invalid argument (String/Number) ${n}, ${a}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(e,t,n){var a;((a=n.params)==null?void 0:a.length)===1&&se('Setter of type "object" with a single "param" field is not supported');const r=`_on${U(n.name)}Changed`;return function(){var u,f;for(var s=arguments.length,i=new Array(s),c=0;c1&&((u=n.params)!=null&&u.length)?o=n.params.reduce((l,g,h)=>Object.assign(l,{[g]:i[h]}),{}):o=i[0],!hs(t[n.name],o)){const l=t[n.name];return t[n.name]=o,(f=t[r])==null||f.call(t,e,t,o,l),e.modified(),!0}return!1}}};function Mn(e){if(typeof e=="object"){const t=Nr[e.type];if(t)return(n,r)=>t(n,r,e);throw F(`No setter for field ${e}`),new TypeError("No setter for field")}return function(n,r){const a=`_on${U(e)}Changed`;return function(i){var c;if(r.deleted)return F("instance deleted - cannot call any method"),!1;if(r[e]!==i){const o=r[e.name];return r[e]=i,(c=r[a])==null||c.call(r,n,r,i,o),n.modified(),!0}return!1}}}function fe(e,t,n){n.forEach(r=>{typeof r=="object"?e[`set${U(r.name)}`]=Mn(r)(e,t):e[`set${U(r)}`]=Mn(r)(e,t)})}function le(e,t,n){Lt(e,t,n),fe(e,t,n)}function Ke(e,t,n){n.forEach(r=>{e[`get${U(r)}`]=()=>t[r]?Array.from(t[r]):t[r],e[`get${U(r)}ByReference`]=()=>t[r]})}function He(e,t,n,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;n.forEach(s=>{if(t[s]&&r&&t[s].length!==r)throw new RangeError(`Invalid initial number of values for array (${s})`);const i=`_on${U(s)}Changed`;e[`set${U(s)}`]=function(){var h;if(t.deleted)return F("instance deleted - cannot call any method"),!1;for(var c=arguments.length,o=new Array(c),u=0;u=0)&&(f=f[0],g=!0),f==null)l=t[s]!==f;else{if(r&&f.length!==r)if(f.length{const o=t[s];c.forEach((u,f)=>{o[f]=u})}})}function Rr(e,t,n,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;Ke(e,t,n),He(e,t,n,r,a)}function Vr(e,t,n){for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:0;if(t.deleted){F("instance deleted - cannot call any method");return}if(y>=t.numberOfInputs){F(`algorithm ${e.getClassName()} only has ${t.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(t.inputData[y]!==h||t.inputConnection[y])&&(t.inputData[y]=h,t.inputConnection[y]=null,e.modified&&e.modified())}function s(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.inputConnection[h]&&(t.inputData[h]=t.inputConnection[h]()),t.inputData[h]}function i(h){let y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(t.deleted){F("instance deleted - cannot call any method");return}if(y>=t.numberOfInputs){let p=`algorithm ${e.getClassName()} only has `;p+=`${t.numberOfInputs}`,p+=" input ports. To add more input ports, use addInputConnection()",F(p);return}t.inputData[y]=null,t.inputConnection[y]=h}function c(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.inputConnection[h]}function o(){let h=t.numberOfInputs;for(;h&&!t.inputData[h-1]&&!t.inputConnection[h-1];)h--;return h===t.numberOfInputs&&t.numberOfInputs++,h}function u(h){if(t.deleted){F("instance deleted - cannot call any method");return}i(h,o())}function f(h){if(t.deleted){F("instance deleted - cannot call any method");return}a(h,o())}function l(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.deleted?(F("instance deleted - cannot call any method"),null):(e.shouldUpdate()&&e.update(),t.output[h])}e.shouldUpdate=()=>{var d,C;const h=e.getMTime();let y=1/0,p=r;for(;p--;){if(!t.output[p]||t.output[p].isDeleted())return!0;const T=t.output[p].getMTime();if(Ty)return!0;return!1};function g(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const y=()=>l(h);return y.filter=e,y}if(t.numberOfInputs){let h=t.numberOfInputs;for(;h--;)t.inputData.push(null),t.inputConnection.push(null);e.setInputData=a,e.setInputConnection=i,e.addInputData=f,e.addInputConnection=u,e.getInputData=s,e.getInputConnection=c}r&&(e.getOutputData=l,e.getOutputPort=g),e.update=()=>{const h=[];if(t.numberOfInputs){let y=0;for(;yt.numberOfInputs,e.getNumberOfOutputPorts=()=>r||t.output.length,e.getInputArrayToProcess=h=>{const y=t.inputArrayToProcess[h],p=t.inputData[h];return y&&p?p[`get${y.fieldAssociation}`]().getArray(y.arrayName):null},e.setInputArrayToProcess=function(h,y,p){let d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Scalars";for(;t.inputArrayToProcess.lengthl.apply(e,arguments),1-g);else if(l.apply(e,arguments)===Ye)break}}}e[`invoke${U(n)}`]=o,e[`on${U(n)}`]=function(u){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!u.apply)return console.error(`Invalid callback for event ${n}`),null;if(t.deleted)return F("instance deleted - cannot call any method"),null;const l=s++;return r.push([l,u,f]),r.sort((g,h)=>h[2]-g[2]),c(l)},e.delete=()=>{a(),r.forEach(u=>{let[f]=u;return i(f)})}}function ge(e,t){const n=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const a={},s={};return e(s,a,r),Object.freeze(s)};return t&&J.register(t,n),n}function $r(){for(var e=arguments.length,t=new Array(e),n=0;n!!i).map(i=>i(...a))}}function Xe(e){return e&&e.isA&&e.isA("vtkObject")}function Zt(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(Xe(e)){if(r.indexOf(e)>=0)return n;r.push(e);const a=t(e);a!==void 0&&n.push(a);const s=e.get();Object.keys(s).forEach(i=>{const c=s[i];Array.isArray(c)?c.forEach(o=>{Zt(o,t,n,r)}):Zt(c,t,n,r)})}return n}function br(e,t,n){var r=this;let a;const s=function(){for(var i=arguments.length,c=new Array(i),o=0;o{a=null,n||e.apply(u,c)},l=n&&!a;clearTimeout(a),a=setTimeout(f,t),l&&e.apply(u,c)};return s.cancel=()=>clearTimeout(a),s}function Ur(e,t){let n=!1,r=null;function a(){n=!1,r!==null&&(s(...r),r=null)}function s(){for(var i=arguments.length,c=new Array(i),o=0;o2&&arguments[2]!==void 0?arguments[2]:{};t.keystore=Object.assign(t.keystore||{},n),e.setKey=(r,a)=>{t.keystore[r]=a},e.getKey=r=>t.keystore[r],e.getAllKeys=()=>Object.keys(t.keystore),e.deleteKey=r=>delete t.keystore[r],e.clearKeystore=()=>e.getAllKeys().forEach(r=>delete t.keystore[r])}let Ni=1;const It="__root__";function Fr(e,t){Je(e,t);const n=e.delete;t.proxyId=`${Ni++}`,t.ui=JSON.parse(JSON.stringify(t.ui||[])),Lt(e,t,["proxyId","proxyGroup","proxyName"]),le(e,t,["proxyManager"]);const r={},a={};function s(u,f){a[f]||(a[f]=[]);const l=a[f];for(let g=0;g{t.ui=JSON.parse(JSON.stringify(u||[])),Object.keys(r).forEach(f=>delete r[f]),Object.keys(a).forEach(f=>delete a[f]),s(t.ui,It),e.modified()};function i(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:It;return a[u]}e.updateProxyProperty=(u,f)=>{const l=r[u];l?Object.assign(l,f):r[u]={...f}},e.activate=()=>{if(t.proxyManager){const u=`setActive${U(e.getProxyGroup().slice(0,-1))}`;t.proxyManager[u]&&t.proxyManager[u](e)}},t.propertyLinkSubscribers={},e.registerPropertyLinkForGC=(u,f)=>{f in t.propertyLinkSubscribers||(t.propertyLinkSubscribers[f]=[]),t.propertyLinkSubscribers[f].push(u)},e.gcPropertyLinks=u=>{const f=t.propertyLinkSubscribers[u]||[];for(;f.length;)f.pop().unbind(e)},t.propertyLinkMap={},e.getPropertyLink=function(u){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(t.propertyLinkMap[u])return t.propertyLinkMap[u];let l=null;const g=[];let h=0,y=!1;function p(E){let O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(y)return null;const v=[];let S=null;for(h=g.length;h--;){const _=g[h];_.instance===E?S=_:v.push(_)}if(!S)return null;const w=S.instance[`get${U(S.propertyName)}`]();if(!Mi(w,l)||O){for(l=w,y=!0;v.length;){const _=v.pop();_.instance.set({[_.propertyName]:l})}y=!1}return t.propertyLinkMap[u].persistent&&(t.propertyLinkMap[u].value=w),w}function d(E,O){const v=[];for(h=g.length;h--;){const S=g[h];S.instance===E&&(S.propertyName===O||O===void 0)&&(S.subscription.unsubscribe(),v.push(h))}for(;v.length;)g.splice(v.pop(),1)}function C(E,O){let v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const S=E.onModified(p),w=g[0];return g.push({instance:E,propertyName:O,subscription:S}),v&&(t.propertyLinkMap[u].persistent&&t.propertyLinkMap[u].value!==void 0?E.set({[O]:t.propertyLinkMap[u].value}):w&&p(w.instance,!0)),{unsubscribe:()=>d(E,O)}}function T(){for(;g.length;)g.pop().subscription.unsubscribe()}const m={bind:C,unbind:d,unsubscribe:T,persistent:f};return t.propertyLinkMap[u]=m,m};function c(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:It;const f=[],l=t.proxyId,g=i(u)||[];for(let h=0;hc().map(u=>u.name),e.getPropertyByName=u=>c().find(f=>f.name===u),e.getPropertyDomainByName=u=>(r[u]||{}).domain,e.getProxySection=()=>({id:t.proxyId,name:t.proxyGroup,ui:t.ui,properties:c()}),e.delete=()=>{const u=Object.keys(t.propertyLinkMap);let f=u.length;for(;f--;)t.propertyLinkMap[u[f]].unsubscribe();Object.keys(t.propertyLinkSubscribers).forEach(e.gcPropertyLinks),n()},e.getState=()=>null;function o(){if(t.links)for(let u=0;u{for(;a.length;)a.pop().unsubscribe();r()}}function jr(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};t.this=e;function a(c){const o=Object.keys(c);let u=o.length;for(;u--;){const f=o[u];t[f].set(c[f])}}const s=Object.keys(r);let i=s.length;for(;i--;){const c=s[i];t[c]=r[c];const o=n[c];e[`set${U(c)}`]=u=>{if(u!==t[c]){t[c]=u;const f=o[u];a(f),e.modified()}}}s.length&&Lt(e,t,s)}const In=10,An=40,Nn=800;function zr(e){let t=0,n=0,r=0,a=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*In,a=n*In,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||a)&&e.deltaMode&&(e.deltaMode===1?(r*=An,a*=An):(r*=Nn,a*=Nn)),r&&!t&&(t=r<1?-1:1),a&&!n&&(n=a<1?-1:1),{spinX:t,spinY:n||t,pixelX:r,pixelY:a||r}}var x={algo:We,capitalize:ce,chain:$r,debounce:br,enumToString:Ii,event:kr,EVENT_ABORT:Ye,formatBytesToProperUnit:Lr,formatNumbersWithThousandSeparator:xr,get:Lt,getArray:Ke,getCurrentGlobalMTime:Di,getStateArrayMapFunc:Ir,isVtkObject:Xe,keystore:Je,measurePromiseExecution:Ar,moveToProtected:Vr,newInstance:ge,newTypedArray:ie,newTypedArrayFrom:oe,normalizeWheel:zr,obj:ue,proxy:Fr,proxyPropertyMapping:Gr,proxyPropertyState:jr,safeArrays:Mr,set:fe,setArray:He,setGet:le,setGetArray:Rr,setImmediate:Pe,setLoggerFunction:vr,throttle:Ur,traverseInstanceTree:Zt,TYPED_ARRAYS:z,uncapitalize:Dr,VOID:Cr,vtkDebugMacro:qt,vtkErrorMacro:F,vtkInfoMacro:Sr,vtkLogMacro:wr,vtkOnceErrorMacro:_r,vtkWarningMacro:se,objectSetterMap:Nr},Br=Object.freeze({__proto__:null,VOID:Cr,setLoggerFunction:vr,vtkLogMacro:wr,vtkInfoMacro:Sr,vtkDebugMacro:qt,vtkErrorMacro:F,vtkWarningMacro:se,vtkOnceErrorMacro:_r,TYPED_ARRAYS:z,newTypedArray:ie,newTypedArrayFrom:oe,capitalize:ce,_capitalize:U,uncapitalize:Dr,formatBytesToProperUnit:Lr,formatNumbersWithThousandSeparator:xr,setImmediateVTK:Pe,measurePromiseExecution:Ar,obj:ue,get:Lt,set:fe,setGet:le,getArray:Ke,setArray:He,setGetArray:Rr,moveToProtected:Vr,algo:We,EVENT_ABORT:Ye,event:kr,newInstance:ge,chain:$r,isVtkObject:Xe,traverseInstanceTree:Zt,debounce:br,throttle:Ur,keystore:Je,proxy:Fr,proxyPropertyMapping:Gr,proxyPropertyState:jr,normalizeWheel:zr,default:x});const Ri={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},he={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",UNSIGNED_CHAR_CLAMPED:"Uint8ClampedArray",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},Vi=he.FLOAT;var Pr={DefaultDataType:Vi,DataTypeByteSize:Ri,VtkDataTypes:he},Qe={exports:{}};Qe.exports;(function(e){(function(t,n,r){function a(o){var u=this,f=c();u.next=function(){var l=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=l-(u.c=l|0)},u.c=1,u.s0=f(" "),u.s1=f(" "),u.s2=f(" "),u.s0-=f(o),u.s0<0&&(u.s0+=1),u.s1-=f(o),u.s1<0&&(u.s1+=1),u.s2-=f(o),u.s2<0&&(u.s2+=1),f=null}function s(o,u){return u.c=o.c,u.s0=o.s0,u.s1=o.s1,u.s2=o.s2,u}function i(o,u){var f=new a(o),l=u&&u.state,g=f.next;return g.int32=function(){return f.next()*4294967296|0},g.double=function(){return g()+(g()*2097152|0)*11102230246251565e-32},g.quick=g,l&&(typeof l=="object"&&s(l,f),g.state=function(){return s(f,{})}),g}function c(){var o=4022871197,u=function(f){f=String(f);for(var l=0;l>>0,g-=o,g*=o,o=g>>>0,g-=o,o+=g*4294967296}return(o>>>0)*23283064365386963e-26};return u}n&&n.exports?n.exports=i:this.alea=i})(H,e)})(Qe);var ki=Qe.exports,qe={exports:{}};qe.exports;(function(e){(function(t,n,r){function a(c){var o=this,u="";o.x=0,o.y=0,o.z=0,o.w=0,o.next=function(){var l=o.x^o.x<<11;return o.x=o.y,o.y=o.z,o.z=o.w,o.w^=o.w>>>19^l^l>>>8},c===(c|0)?o.x=c:u+=c;for(var f=0;f>>0)/4294967296};return l.double=function(){do var g=u.next()>>>11,h=(u.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=u.next,l.quick=l,f&&(typeof f=="object"&&s(f,u),l.state=function(){return s(u,{})}),l}n&&n.exports?n.exports=i:this.xor128=i})(H,e)})(qe);var $i=qe.exports,Ze={exports:{}};Ze.exports;(function(e){(function(t,n,r){function a(c){var o=this,u="";o.next=function(){var l=o.x^o.x>>>2;return o.x=o.y,o.y=o.z,o.z=o.w,o.w=o.v,(o.d=o.d+362437|0)+(o.v=o.v^o.v<<4^(l^l<<1))|0},o.x=0,o.y=0,o.z=0,o.w=0,o.v=0,c===(c|0)?o.x=c:u+=c;for(var f=0;f>>4),o.next()}function s(c,o){return o.x=c.x,o.y=c.y,o.z=c.z,o.w=c.w,o.v=c.v,o.d=c.d,o}function i(c,o){var u=new a(c),f=o&&o.state,l=function(){return(u.next()>>>0)/4294967296};return l.double=function(){do var g=u.next()>>>11,h=(u.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=u.next,l.quick=l,f&&(typeof f=="object"&&s(f,u),l.state=function(){return s(u,{})}),l}n&&n.exports?n.exports=i:this.xorwow=i})(H,e)})(Ze);var bi=Ze.exports,tn={exports:{}};tn.exports;(function(e){(function(t,n,r){function a(c){var o=this;o.next=function(){var f=o.x,l=o.i,g,h;return g=f[l],g^=g>>>7,h=g^g<<24,g=f[l+1&7],h^=g^g>>>10,g=f[l+3&7],h^=g^g>>>3,g=f[l+4&7],h^=g^g<<7,g=f[l+7&7],g=g^g<<13,h^=g^g<<9,f[l]=h,o.i=l+1&7,h};function u(f,l){var g,h=[];if(l===(l|0))h[0]=l;else for(l=""+l,g=0;g0;--g)f.next()}u(o,c)}function s(c,o){return o.x=c.x.slice(),o.i=c.i,o}function i(c,o){c==null&&(c=+new Date);var u=new a(c),f=o&&o.state,l=function(){return(u.next()>>>0)/4294967296};return l.double=function(){do var g=u.next()>>>11,h=(u.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=u.next,l.quick=l,f&&(f.x&&s(f,u),l.state=function(){return s(u,{})}),l}n&&n.exports?n.exports=i:this.xorshift7=i})(H,e)})(tn);var Ui=tn.exports,en={exports:{}};en.exports;(function(e){(function(t,n,r){function a(c){var o=this;o.next=function(){var f=o.w,l=o.X,g=o.i,h,y;return o.w=f=f+1640531527|0,y=l[g+34&127],h=l[g=g+1&127],y^=y<<13,h^=h<<17,y^=y>>>15,h^=h>>>12,y=l[g]=y^h,o.i=g,y+(f^f>>>16)|0};function u(f,l){var g,h,y,p,d,C=[],T=128;for(l===(l|0)?(h=l,l=null):(l=l+"\0",h=0,T=Math.max(T,l.length)),y=0,p=-32;p>>15,h^=h<<4,h^=h>>>13,p>=0&&(d=d+1640531527|0,g=C[p&127]^=h+d,y=g==0?y+1:0);for(y>=128&&(C[(l&&l.length||0)&127]=-1),y=127,p=4*128;p>0;--p)h=C[y+34&127],g=C[y=y+1&127],h^=h<<13,g^=g<<17,h^=h>>>15,g^=g>>>12,C[y]=h^g;f.w=d,f.X=C,f.i=y}u(o,c)}function s(c,o){return o.i=c.i,o.w=c.w,o.X=c.X.slice(),o}function i(c,o){c==null&&(c=+new Date);var u=new a(c),f=o&&o.state,l=function(){return(u.next()>>>0)/4294967296};return l.double=function(){do var g=u.next()>>>11,h=(u.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=u.next,l.quick=l,f&&(f.X&&s(f,u),l.state=function(){return s(u,{})}),l}n&&n.exports?n.exports=i:this.xor4096=i})(H,e)})(en);var Fi=en.exports,nn={exports:{}};nn.exports;(function(e){(function(t,n,r){function a(c){var o=this,u="";o.next=function(){var l=o.b,g=o.c,h=o.d,y=o.a;return l=l<<25^l>>>7^g,g=g-h|0,h=h<<24^h>>>8^y,y=y-l|0,o.b=l=l<<20^l>>>12^g,o.c=g=g-h|0,o.d=h<<16^g>>>16^y,o.a=y-l|0},o.a=0,o.b=0,o.c=-1640531527,o.d=1367130551,c===Math.floor(c)?(o.a=c/4294967296|0,o.b=c|0):u+=c;for(var f=0;f>>0)/4294967296};return l.double=function(){do var g=u.next()>>>11,h=(u.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=u.next,l.quick=l,f&&(typeof f=="object"&&s(f,u),l.state=function(){return s(u,{})}),l}n&&n.exports?n.exports=i:this.tychei=i})(H,e)})(nn);var Gi=nn.exports,Kr={exports:{}},ji={},zi=Object.freeze({__proto__:null,default:ji}),Bi=ls(zi);(function(e){(function(t,n,r){var a=256,s=6,i=52,c="random",o=r.pow(a,s),u=r.pow(2,i),f=u*2,l=a-1,g;function h(E,O,v){var S=[];O=O==!0?{entropy:!0}:O||{};var w=C(d(O.entropy?[E,m(n)]:E??T(),3),S),_=new y(S),D=function(){for(var L=_.g(s),A=o,I=0;L=f;)L/=2,A/=2,I>>>=1;return(L+I)/A};return D.int32=function(){return _.g(4)|0},D.quick=function(){return _.g(4)/4294967296},D.double=D,C(m(_.S),n),(O.pass||v||function(L,A,I,M){return M&&(M.S&&p(M,_),L.state=function(){return p(_,{})}),I?(r[c]=L,A):L})(D,w,"global"in O?O.global:this==r,O.state)}function y(E){var O,v=E.length,S=this,w=0,_=S.i=S.j=0,D=S.S=[];for(v||(E=[v++]);w0&&arguments[0]!==void 0?arguments[0]:3;const t=Array(e);for(let n=0;n1&&arguments[1]!==void 0?arguments[1]:3;switch(t){case 1:return Math.abs(e);case 2:return Math.sqrt(e[0]*e[0]+e[1]*e[1]);case 3:return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);default:{let n=0;for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:0;if(!`${e}`.includes("e"))return+`${Math.round(`${e}e+${t}`)}e-${t}`;const n=`${e}`.split("e");let r="";return+n[1]+t>0&&(r="+"),+`${Math.round(`${+n[0]}e${r}${+n[1]+t}`)}e-${t}`}function kn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return t[0]=Se(e[0],n),t[1]=Se(e[1],n),t[2]=Se(e[2],n),t}function to(e,t,n){let r,a,s,i,c=0,o,u,f;const l=Ve(n);for(r=0;ri&&(i=f);if(i===0)return Rn("Unable to factor linear system"),0;l[r]=1/i}for(a=0;a=i&&(i=u,c=r)}if(a!==c){for(s=0;s=0)for(s=i;s<=a-1;s++)o-=e[a*r+s]*n[s];else o!==0&&(i=a);n[a]=o}for(a=r-1;a>=0;a--){for(o=n[a],s=a+1;sn?n:e}function $n(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return r[0]=_e(e[0],t[0],n[0]),r[1]=_e(e[1],t[1],n[1]),r[2]=_e(e[2],t[2],n[2]),r}const{vtkErrorMacro:ao}=Br,{DefaultDataType:so}=Pr,io=1e-6;function ke(e,t,n){const r=e.length;let a=Number.MAX_VALUE,s=-Number.MAX_VALUE,i,c;for(c=t;cs&&(s=i);return{min:a,max:s}}function oo(){let e=Number.MAX_VALUE,t=-Number.MAX_VALUE,n=0,r=0;return{add(a){e>a&&(e=a),t1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(t<0&&n>1){const a=e.length/n,s=new Float64Array(a);for(let i=0,c=0;i1&&arguments[1]!==void 0?arguments[1]:0;const n=e||[];for(;n.length<=t;)n.push(null);return n}function rn(e){return Object.prototype.toString.call(e).slice(8,-1)}function co(e){const t=e.getNumberOfComponents();let n=0;const r=new Array(t);for(let a=0;an&&(n=s)}return n}const uo={computeRange:Yr,createRangeHelper:oo,fastComputeRange:ke,getDataType:rn,getMaxNorm:co};function fo(e,t){t.classHierarchy.push("vtkDataArray");function n(r){if(r<0)return!1;const a=e.getNumberOfComponents(),s=t.values.length/(a>0?a:1);if(r===s)return!0;if(r>s){const i=t.values;return t.values=ie(t.dataType,(r+s)*a),t.values.set(i),!0}return t.size>r*a&&(t.size=r*a,e.dataChange()),!0}e.dataChange=()=>{t.ranges=null,e.modified()},e.resize=r=>{n(r);const a=r*e.getNumberOfComponents();return t.size!==a?(t.size=a,e.dataChange(),!0):!1},e.initialize=()=>{e.resize(0)},e.getElementComponentSize=()=>t.values.BYTES_PER_ELEMENT,e.getComponent=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t.values[r*t.numberOfComponents+a]},e.setComponent=(r,a,s)=>{s!==t.values[r*t.numberOfComponents+a]&&(t.values[r*t.numberOfComponents+a]=s,e.dataChange())},e.getValue=r=>{const a=r/t.numberOfComponents,s=r%t.numberOfComponents;return e.getComponent(a,s)},e.setValue=(r,a)=>{const s=r/t.numberOfComponents,i=r%t.numberOfComponents;e.setComponent(s,i,a)},e.getData=()=>t.size===t.values.length?t.values:t.values.subarray(0,t.size),e.getRange=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1,a=r;a<0&&(a=t.numberOfComponents===1?0:t.numberOfComponents);let s=null;return t.ranges||(t.ranges=bn(t.ranges,t.numberOfComponents)),s=t.ranges[a],s?(t.rangeTuple[0]=s.min,t.rangeTuple[1]=s.max,t.rangeTuple):(s=Yr(e.getData(),r,t.numberOfComponents),t.ranges[a]=s,t.rangeTuple[0]=s.min,t.rangeTuple[1]=s.max,t.rangeTuple)},e.setRange=(r,a)=>{t.ranges||(t.ranges=bn(t.ranges,t.numberOfComponents));const s={min:r.min,max:r.max};return t.ranges[a]=s,t.rangeTuple[0]=s.min,t.rangeTuple[1]=s.max,t.rangeTuple},e.setTuple=(r,a)=>{const s=r*t.numberOfComponents;for(let i=0;i{let s=r*t.numberOfComponents;const i=Math.min(a.length,t.size-s);for(let c=0;c(t.size<=r*t.numberOfComponents&&(t.size=(r+1)*t.numberOfComponents,n(r+1)),e.setTuple(r,a),r),e.insertTuples=(r,a)=>{const s=r+a.length/t.numberOfComponents;return t.size{const a=t.size/t.numberOfComponents;return e.insertTuple(a,r)},e.insertNextTuples=r=>{const a=t.size/t.numberOfComponents;return e.insertTuples(a,r)},e.findTuple=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:io;for(let s=0;sa){i=!1;break}if(i)return s/t.numberOfComponents}return-1},e.getTuple=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const s=t.numberOfComponents||1,i=r*s;switch(s){case 4:a[3]=t.values[i+3];case 3:a[2]=t.values[i+2];case 2:a[1]=t.values[i+1];case 1:a[0]=t.values[i];break;default:for(let c=s-1;c>=0;--c)a[c]=t.values[i+c]}return a},e.getTuples=(r,a)=>{const s=(r??0)*t.numberOfComponents,i=(a??e.getNumberOfTuples())*t.numberOfComponents,c=e.getData().subarray(s,i);return c.length>0?c:null},e.getTupleLocation=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:1)*t.numberOfComponents},e.getNumberOfComponents=()=>t.numberOfComponents,e.getNumberOfValues=()=>t.size,e.getNumberOfTuples=()=>t.size/t.numberOfComponents,e.getDataType=()=>t.dataType,e.newClone=()=>Jr({empty:!0,name:t.name,dataType:t.dataType,numberOfComponents:t.numberOfComponents}),e.getName=()=>(t.name||(e.modified(),t.name=`vtkDataArray${e.getMTime()}`),t.name),e.setData=(r,a)=>{t.values=r,t.size=r.length,t.dataType=rn(r),a&&(t.numberOfComponents=a),t.size%t.numberOfComponents!==0&&(t.numberOfComponents=1),e.dataChange()},e.getState=()=>{if(t.deleted)return null;const r={...t,vtkClass:e.getClassName()};r.values=Array.from(r.values),delete r.buffer,Object.keys(r).forEach(s=>{r[s]||delete r[s]});const a={};return Object.keys(r).sort().forEach(s=>{a[s]=r[s]}),a.mtime&&delete a.mtime,a},e.deepCopy=r=>{const a=e.getDataType(),s=t.values;e.shallowCopy(r),(s==null?void 0:s.length)>=r.getNumberOfValues()&&a===r.getDataType()?(s.set(r.getData()),t.values=s,e.dataChange()):e.setData(r.getData().slice())},e.interpolateTuple=(r,a,s,i,c,o)=>{const u=t.numberOfComponents||1;(u!==a.getNumberOfComponents()||u!==i.getNumberOfComponents())&&ao("numberOfComponents must match");const f=a.getTuple(s),l=i.getTuple(c),g=[];switch(g.length=u,u){case 4:g[3]=f[3]+(l[3]-f[3])*o;case 3:g[2]=f[2]+(l[2]-f[2])*o;case 2:g[1]=f[1]+(l[1]-f[1])*o;case 1:g[0]=f[0]+(l[0]-f[0])*o;break;default:for(let h=0;h2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(t,lo,n),!t.empty&&!t.values&&!t.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(t.values?Array.isArray(t.values)&&(t.values=oe(t.dataType,t.values)):t.values=ie(t.dataType,t.size),t.values&&(t.size=t.size??t.values.length,t.dataType=rn(t.values)),ue(e,t),fe(e,t,["name","numberOfComponents"]),t.size%t.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");fo(e,t)}const Jr=ge(Xr,"vtkDataArray");var rt={newInstance:Jr,extend:Xr,...uo,...Pr},Qr=1e-6,Z=typeof Float32Array<"u"?Float32Array:Array;function go(e,t){return Math.abs(e-t)<=Qr*Math.max(1,Math.abs(e),Math.abs(t))}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function ho(){var e=new Z(9);return Z!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function yo(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function po(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],i=t[4],c=t[5],o=t[6],u=t[7],f=t[8],l=t[9],g=t[10],h=t[11],y=t[12],p=t[13],d=t[14],C=t[15],T=n*c-r*i,m=n*o-a*i,E=n*u-s*i,O=r*o-a*c,v=r*u-s*c,S=a*u-s*o,w=f*p-l*y,_=f*d-g*y,D=f*C-h*y,L=l*d-g*p,A=l*C-h*p,I=g*C-h*d,M=T*I-m*A+E*L+O*D-v*_+S*w;return M?(M=1/M,e[0]=(c*I-o*A+u*L)*M,e[1]=(a*A-r*I-s*L)*M,e[2]=(p*S-d*v+C*O)*M,e[3]=(g*v-l*S-h*O)*M,e[4]=(o*D-i*I-u*_)*M,e[5]=(n*I-a*D+s*_)*M,e[6]=(d*E-y*S-C*m)*M,e[7]=(f*S-g*E+h*m)*M,e[8]=(i*A-c*D+u*w)*M,e[9]=(r*D-n*A-s*w)*M,e[10]=(y*v-p*E+C*T)*M,e[11]=(l*E-f*v-h*T)*M,e[12]=(c*_-i*L-o*w)*M,e[13]=(n*L-r*_+a*w)*M,e[14]=(p*m-y*O-d*T)*M,e[15]=(f*O-l*m+g*T)*M,e):null}function mo(e,t,n){var r=n[0],a=n[1],s=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Eo(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function qr(){var e=new Z(3);return Z!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function De(e){var t=new Z(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Oo(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function j(e,t,n){var r=new Z(3);return r[0]=e,r[1]=t,r[2]=n,r}function Un(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Le(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Co(e,t){var n=t[0],r=t[1],a=t[2],s=n*n+r*r+a*a;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function $e(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function xe(e,t,n){var r=t[0],a=t[1],s=t[2],i=n[0],c=n[1],o=n[2];return e[0]=a*o-s*c,e[1]=s*i-r*o,e[2]=r*c-a*i,e}function be(e,t,n){var r=t[0],a=t[1],s=t[2],i=n[3]*r+n[7]*a+n[11]*s+n[15];return i=i||1,e[0]=(n[0]*r+n[4]*a+n[8]*s+n[12])/i,e[1]=(n[1]*r+n[5]*a+n[9]*s+n[13])/i,e[2]=(n[2]*r+n[6]*a+n[10]*s+n[14])/i,e}var To=Oo;(function(){var e=qr();return function(t,n,r,a,s,i){var c,o;for(n||(n=3),r||(r=0),a?o=Math.min(a*n+r,t.length):o=t.length,c=r;c0&&(i=1/Math.sqrt(i)),e[0]=n*i,e[1]=r*i,e[2]=a*i,e[3]=s*i,e}(function(){var e=vo();return function(t,n,r,a,s,i){var c,o;for(n||(n=4),r||(r=0),a?o=Math.min(a*n+r,t.length):o=t.length,c=r;cQr?(g=Math.acos(h),y=Math.sin(g),p=Math.sin((1-r)*g)/y,d=Math.sin(r*g)/y):(p=1-r,d=r),e[0]=p*a+d*o,e[1]=p*s+d*u,e[2]=p*i+d*f,e[3]=p*c+d*l,e}function _o(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var a=0;t[4]>t[0]&&(a=1),t[8]>t[a*3+a]&&(a=2);var s=(a+1)%3,i=(a+2)%3;r=Math.sqrt(t[a*3+a]-t[s*3+s]-t[i*3+i]+1),e[a]=.5*r,r=.5/r,e[3]=(t[s*3+i]-t[i*3+s])*r,e[s]=(t[s*3+a]+t[a*3+s])*r,e[i]=(t[i*3+a]+t[a*3+i])*r}return e}var Zr=wo;(function(){var e=qr(),t=j(1,0,0),n=j(0,1,0);return function(r,a,s){var i=$e(a,s);return i<-.999999?(xe(e,t,a),To(e)<1e-6&&xe(e,n,a),Co(e,e),So(r,e,Math.PI),r):i>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(xe(e,a,s),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+i,Zr(r,r))}})();(function(){var e=Fn(),t=Fn();return function(n,r,a,s,i,c){return Pt(e,r,i,c),Pt(t,a,s,c),Pt(n,e,t,2*c*(1-c)),n}})();(function(){var e=ho();return function(t,n,r,a){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=a[0],e[4]=a[1],e[7]=a[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],Zr(t,_o(t,e))}})();const{vtkErrorMacro:Gn,vtkWarningMacro:Do}=x;function Lo(e,t){t.classHierarchy.push("vtkFieldData");const n=e.getState;t.arrays&&(t.arrays=t.arrays.map(r=>({data:J(r.data)}))),e.initialize=()=>{e.initializeFields(),e.copyAllOn(),e.clearFieldFlags()},e.initializeFields=()=>{t.arrays=[],t.copyFieldFlags={},e.modified()},e.copyStructure=r=>{e.initializeFields(),t.copyFieldFlags=r.getCopyFieldFlags().map(a=>a),t.arrays=r.arrays().map(a=>({array:a}))},e.getNumberOfArrays=()=>t.arrays.length,e.getNumberOfActiveArrays=()=>t.arrays.length,e.addArray=r=>{const a=r.getName(),{array:s,index:i}=e.getArrayWithIndex(a);return s!=null?(t.arrays[i]={data:r},i):(t.arrays=[].concat(t.arrays,{data:r}),t.arrays.length-1)},e.removeAllArrays=()=>{t.arrays=[]},e.removeArray=r=>{const a=t.arrays.findIndex(s=>s.data.getName()===r);return e.removeArrayByIndex(a)},e.removeArrayByIndex=r=>r!==-1&&rt.arrays.map(r=>r.data),e.getArray=r=>typeof r=="number"?e.getArrayByIndex(r):e.getArrayByName(r),e.getArrayByName=r=>t.arrays.reduce((a,s,i)=>s.data.getName()===r?s.data:a,null),e.getArrayWithIndex=r=>{const a=t.arrays.findIndex(s=>s.data.getName()===r);return{array:a!==-1?t.arrays[a].data:null,index:a}},e.getArrayByIndex=r=>r>=0&&re.getArrayWithIndex(r).index>=0,e.getArrayName=r=>{const a=t.arrays[r];return a?a.data.getName():""},e.getCopyFieldFlags=()=>t.copyFieldFlags,e.getFlag=r=>t.copyFieldFlags[r],e.passData=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;r.getArrays().forEach(i=>{const c=e.getFlag(i.getName());if(c!==!1&&!(t.doCopyAllOff&&c!==!0)&&i){let o=e.getArrayByName(i.getName());if(o)if(i.getNumberOfComponents()===o.getNumberOfComponents())if(a>-1&&a-1?s:a;o.insertTuple(u,i.getTuple(a))}else o.insertTuples(0,i.getTuples());else Gn("Unhandled case in passData");else if(a<0||a>i.getNumberOfTuples())e.addArray(i),r.getAttributes(i).forEach(u=>{e.setAttribute(i,u)});else{const u=i.getNumberOfComponents();let f=i.getNumberOfValues();const l=s>-1?s:a;f<=l*u&&(f=(l+1)*u),o=rt.newInstance({name:i.getName(),dataType:i.getDataType(),numberOfComponents:u,values:x.newTypedArray(i.getDataType(),f),size:0}),o.insertTuple(l,i.getTuple(a)),e.addArray(o),r.getAttributes(i).forEach(g=>{e.setAttribute(o,g)})}}})},e.interpolateData=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5;r.getArrays().forEach(o=>{const u=e.getFlag(o.getName());if(u!==!1&&!(t.doCopyAllOff&&u!==!0)&&o){let f=e.getArrayByName(o.getName());if(f)if(o.getNumberOfComponents()===f.getNumberOfComponents())if(a>-1&&a-1?i:a;f.interpolateTuple(l,o,a,o,s,c),Do("Unexpected case in interpolateData")}else f.insertTuples(o.getTuples());else Gn("Unhandled case in interpolateData");else if(a<0||s<0||a>o.getNumberOfTuples())e.addArray(o),r.getAttributes(o).forEach(l=>{e.setAttribute(o,l)});else{const l=o.getNumberOfComponents();let g=o.getNumberOfValues();const h=i>-1?i:a;g<=h*l&&(g=(h+1)*l),f=rt.newInstance({name:o.getName(),dataType:o.getDataType(),numberOfComponents:l,values:x.newTypedArray(o.getDataType(),g),size:0}),f.interpolateTuple(h,o,a,o,s,c),e.addArray(f),r.getAttributes(o).forEach(y=>{e.setAttribute(f,y)})}}})},e.copyFieldOn=r=>{t.copyFieldFlags[r]=!0},e.copyFieldOff=r=>{t.copyFieldFlags[r]=!1},e.copyAllOn=()=>{(!t.doCopyAllOn||t.doCopyAllOff)&&(t.doCopyAllOn=!0,t.doCopyAllOff=!1,e.modified())},e.copyAllOff=()=>{(t.doCopyAllOn||!t.doCopyAllOff)&&(t.doCopyAllOn=!1,t.doCopyAllOff=!0,e.modified())},e.clearFieldFlags=()=>{t.copyFieldFlags={}},e.deepCopy=r=>{t.arrays=r.getArrays().map(a=>{const s=a.newClone();return s.deepCopy(a),{data:s}})},e.copyFlags=r=>r.getCopyFieldFlags().map(a=>a),e.reset=()=>t.arrays.forEach(r=>r.data.reset()),e.getMTime=()=>t.arrays.reduce((r,a)=>a.data.getMTime()>r?a.data.getMTime():r,t.mtime),e.getNumberOfComponents=()=>t.arrays.reduce((r,a)=>r+a.data.getNumberOfComponents(),0),e.getNumberOfTuples=()=>t.arrays.length>0?t.arrays[0].getNumberOfTuples():0,e.getState=()=>{const r=n();return r&&(r.arrays=t.arrays.map(a=>({data:a.data.getState()}))),r}}const xo={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function ta(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,xo,n),x.obj(e,t),Lo(e,t)}const Mo=x.newInstance(ta,"vtkFieldData");var Io={newInstance:Mo,extend:ta};const Ao={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},No={MAX:0,EXACT:1,NOLIMIT:2},Ro={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},Vo={DUPLICATEPOINT:1,HIDDENPOINT:2},ko={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},$o="vtkGhostType",bo={DEFAULT:0,SINGLE:1,DOUBLE:2};var ea={AttributeCopyOperations:ko,AttributeLimitTypes:No,AttributeTypes:Ao,CellGhostTypes:Ro,DesiredOutputPrecision:bo,PointGhostTypes:Vo,ghostArrayName:$o};const{AttributeTypes:it,AttributeCopyOperations:ut}=ea,{vtkWarningMacro:At}=x;function Uo(e,t){const n=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function r(i){let c=n.find(o=>it[o.toUpperCase()]===i||typeof i!="number"&&o.toLowerCase()===i.toLowerCase());return typeof c>"u"&&(c=null),c}t.classHierarchy.push("vtkDataSetAttributes");const a={...e};e.checkNumberOfComponents=i=>!0,e.setAttribute=(i,c)=>{const o=r(c);if(i&&o.toUpperCase()==="PEDIGREEIDS"&&!i.isA("vtkDataArray"))return At(`Cannot set attribute ${o}. The attribute must be a vtkDataArray.`),-1;if(i&&!e.checkNumberOfComponents(i,o))return At(`Cannot set attribute ${o}. Incorrect number of components.`),-1;let u=t[`active${o}`];if(u>=0&&un.filter(c=>e[`get${c}`]()===i),e.setActiveAttributeByName=(i,c)=>e.setActiveAttributeByIndex(e.getArrayWithIndex(i).index,c),e.setActiveAttributeByIndex=(i,c)=>{const o=r(c);if(i>=0&&i{const c=r(i);return e[`get${c}`]()},e.removeAllArrays=()=>{n.forEach(i=>{t[`active${i}`]=-1}),a.removeAllArrays()},e.removeArrayByIndex=i=>(i!==-1&&n.forEach(c=>{i===t[`active${c}`]?t[`active${c}`]=-1:i{const c=`active${i}`;e[`get${i}`]=()=>e.getArrayByIndex(t[c]),e[`set${i}`]=o=>e.setAttribute(o,i),e[`setActive${i}`]=o=>e.setActiveAttributeByIndex(e.getArrayWithIndex(o).index,i),e[`copy${i}Off`]=()=>{const o=i.toUpperCase();t.copyAttributeFlags[ut.PASSDATA][it[o]]=!1},e[`copy${i}On`]=()=>{const o=i.toUpperCase();t.copyAttributeFlags[ut.PASSDATA][it[o]]=!0}}),e.initializeAttributeCopyFlags=()=>{t.copyAttributeFlags=[],Object.keys(ut).filter(i=>i!=="ALLCOPY").forEach(i=>{t.copyAttributeFlags[ut[i]]=Object.keys(it).filter(c=>c!=="NUM_ATTRIBUTES").reduce((c,o)=>(c[it[o]]=!0,c),[])}),t.copyAttributeFlags[ut.COPYTUPLE][it.GLOBALIDS]=!1,t.copyAttributeFlags[ut.INTERPOLATE][it.GLOBALIDS]=!1,t.copyAttributeFlags[ut.COPYTUPLE][it.PEDIGREEIDS]=!1},e.initialize=x.chain(e.initialize,e.initializeAttributeCopyFlags),t.dataArrays&&Object.keys(t.dataArrays).length&&Object.keys(t.dataArrays).forEach(i=>{!t.dataArrays[i].ref&&t.dataArrays[i].type==="vtkDataArray"&&e.addArray(rt.newInstance(t.dataArrays[i]))});const s=e.shallowCopy;e.shallowCopy=(i,c)=>{s(i,c),t.arrays=i.getArrays().map(o=>{const u=o.newClone();return u.shallowCopy(o,c),{data:u}})},e.initializeAttributeCopyFlags()}const Fo={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function na(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Fo,n),Io.extend(e,t,n),x.setGet(e,t,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),t.arrays||(t.arrays={}),Uo(e,t)}const Go=x.newInstance(na,"vtkDataSetAttributes");var jn={newInstance:Go,extend:na,...ea};const jo={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},zo={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var Bo={FieldDataTypes:jo,FieldAssociations:zo};const Ue=["pointData","cellData","fieldData"];function Po(e,t){t.classHierarchy.push("vtkDataSet"),Ue.forEach(r=>{t[r]?t[r]=J(t[r]):t[r]=jn.newInstance()});const n=e.shallowCopy;e.shallowCopy=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,a),Ue.forEach(s=>{t[s]=jn.newInstance(),t[s].shallowCopy(r.getReferenceByName(s))})}}const Ko={};function ra(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Ko,n),x.obj(e,t),x.setGet(e,t,Ue),Po(e,t)}const Ho=x.newInstance(ra,"vtkDataSet");var aa={newInstance:Ho,extend:ra,...Bo};function Wo(e,t){t.classHierarchy.push("vtkImplicitFunction"),e.functionValue=n=>{if(!t.transform)return e.evaluateFunction(n);const r=[];return t.transform.transformPoint(n,r),e.evaluateFunction(r)},e.evaluateFunction=n=>{x.vtkErrorMacro("not implemented")}}const Yo={};function sa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Yo,n),x.obj(e,t),x.setGet(e,t,["transform"]),Wo(e,t)}const Xo=x.newInstance(sa,"vtkImplicitFunction");var Jo={newInstance:Xo,extend:sa};const Fe=1e-6,ia="coincide",oa="disjoint";function Qo(e,t,n){return e[0]*(n[0]-t[0])+e[1]*(n[1]-t[1])+e[2]*(n[2]-t[2])}function ca(e,t,n){const r=n[0]*(e[0]-t[0])+n[1]*(e[1]-t[1])+n[2]*(e[2]-t[2]);return Math.abs(r)}function ua(e,t,n,r){const a=[];ot(e,t,a);const s=k(n,a);r[0]=e[0]-s*n[0],r[1]=e[1]-s*n[1],r[2]=e[2]-s*n[2]}function fa(e,t,n){const r=k(e,t);let a=k(t,t);return a===0&&(a=1),n[0]=e[0]-r*t[0]/a,n[1]=e[1]-r*t[1]/a,n[2]=e[2]-r*t[2]/a,n}function la(e,t,n,r){const a=[];ot(e,t,a);const s=k(n,a),i=k(n,n);i!==0?(r[0]=e[0]-s*n[0]/i,r[1]=e[1]-s*n[1]/i,r[2]=e[2]-s*n[2]/i):(r[0]=e[0],r[1]=e[1],r[2]=e[2])}function ga(e,t,n,r){const a={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},s=[],i=[];ot(t,e,s),ot(n,e,i);const c=k(r,i),o=k(r,s);let u,f;return o<0?u=-o:u=o,c<0?f=-c*Fe:f=c*Fe,u<=f||(a.t=c/o,a.x[0]=e[0]+a.t*s[0],a.x[1]=e[1]+a.t*s[1],a.x[2]=e[2]+a.t*s[2],a.intersection=!0,a.betweenPoints=a.t>=0&&a.t<=1),a}function ha(e,t,n,r){const a={intersection:!1,l0:[],l1:[],error:null},s=[];Hr(t,r,s);const i=s.map(l=>Math.abs(l));if(i[0]+i[1]+i[2]i[1]&&i[0]>i[2]?c="x":i[1]>i[2]?c="y":c="z";const o=[],u=-k(t,e),f=-k(r,n);switch(c){case"x":o[0]=0,o[1]=(f*t[2]-u*r[2])/s[0],o[2]=(u*r[1]-f*t[1])/s[0];break;case"y":o[0]=(u*r[2]-f*t[2])/s[1],o[1]=0,o[2]=(f*t[0]-u*r[0])/s[1];break;case"z":o[0]=(f*t[1]-u*r[1])/s[2],o[1]=(u*r[0]-f*t[0])/s[2],o[2]=0;break}return a.l0=o,qi(o,s,a.l1),a.intersection=!0,a}const qo={evaluate:Qo,distanceToPlane:ca,projectPoint:ua,projectVector:fa,generalizedProjectPoint:la,intersectWithLine:ga,intersectWithPlane:ha,DISJOINT:oa,COINCIDE:ia};function Zo(e,t){t.classHierarchy.push("vtkPlane"),e.distanceToPlane=n=>ca(n,t.origin,t.normal),e.projectPoint=(n,r)=>{ua(n,t.origin,t.normal,r)},e.projectVector=(n,r)=>fa(n,t.normal,r),e.push=n=>{if(n!==0)for(let r=0;r<3;r++)t.origin[r]+=n*t.normal[r]},e.generalizedProjectPoint=(n,r)=>{la(n,t.origin,t.normal,r)},e.evaluateFunction=(n,r,a)=>Array.isArray(n)?t.normal[0]*(n[0]-t.origin[0])+t.normal[1]*(n[1]-t.origin[1])+t.normal[2]*(n[2]-t.origin[2]):t.normal[0]*(n-t.origin[0])+t.normal[1]*(r-t.origin[1])+t.normal[2]*(a-t.origin[2]),e.evaluateGradient=n=>[t.normal[0],t.normal[1],t.normal[2]],e.intersectWithLine=(n,r)=>ga(n,r,t.origin,t.normal),e.intersectWithPlane=(n,r)=>ha(n,r,t.origin,t.normal)}const tc={normal:[0,0,1],origin:[0,0,0]};function ya(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,tc,n),Jo.extend(e,t,n),x.setGetArray(e,t,["normal","origin"],3),Zo(e,t)}const ec=x.newInstance(ya,"vtkPlane");var pt={newInstance:ec,extend:ya,...qo};const ye=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function pa(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]}function at(e){return(e==null?void 0:e.length)>=6&&e[0]<=e[1]&&e[2]<=e[3]&&e[4]<=e[5]}function an(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function sn(e){return an(e,ye)}function te(e,t,n,r){const[a,s,i,c,o,u]=e;return e[0]=at?s:t,e[2]=in?c:n,e[4]=or?u:r,e}function on(e,t){if(t.length===0)return e;if(Array.isArray(t[0]))for(let n=0;ns?t:s,e[2]=n,e[3]=n>c?n:c,e[4]=r,e[5]=r>u?r:u,a!==t||i!==n||o!==r}function Ea(e,t,n,r){const[a,s,i,c,o,u]=e;return e[0]=t=0?(e[0]*=t,e[1]*=t):(e[0]=t*e[1],e[1]=t*e[0]),n>=0?(e[2]*=n,e[3]*=n):(e[2]=n*e[3],e[3]=n*e[2]),r>=0?(e[4]*=r,e[5]*=r):(e[4]=r*e[5],e[5]=r*e[4]),!0):!1}function un(e){return[.5*(e[0]+e[1]),.5*(e[2]+e[3]),.5*(e[4]+e[5])]}function nc(e,t,n,r){if(!at(e))return!1;const a=un(e);return e[0]-=a[0],e[1]-=a[0],e[2]-=a[1],e[3]-=a[1],e[4]-=a[2],e[5]-=a[2],cn(e,t,n,r),e[0]+=a[0],e[1]+=a[0],e[2]+=a[1],e[3]+=a[1],e[4]+=a[2],e[5]+=a[2],!0}function _t(e,t){return e[t*2+1]-e[t*2]}function pe(e){return[_t(e,0),_t(e,1),_t(e,2)]}function Ca(e){return e.slice(0,2)}function Ta(e){return e.slice(2,4)}function va(e){return e.slice(4,6)}function wa(e){const t=pe(e);return t[0]>t[1]?t[0]>t[2]?t[0]:t[2]:t[1]>t[2]?t[1]:t[2]}function Sa(e){if(at(e)){const t=pe(e);return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])}return null}function fn(e){return[e[0],e[2],e[4]]}function ln(e){return[e[1],e[3],e[5]]}function Nt(e,t){return e<=0&&t>=0||e>=0&&t<=0}function gn(e,t){let n=0;for(let r=0;r<2;r++)for(let a=2;a<4;a++)for(let s=4;s<6;s++)t[n++]=[e[r],e[a],e[s]];return t}function _a(e,t,n){return t[0]=e[0],t[1]=e[2],t[2]=e[4],n[0]=e[1],n[1]=e[3],n[2]=e[5],t}function Da(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const r=gn(e,[]);for(let a=0;a1&&arguments[1]!==void 0?arguments[1]:[];return t[0]=.5*(e[1]-e[0]),t[1]=.5*(e[3]-e[2]),t[2]=.5*(e[5]-e[4]),t}function xa(e,t,n,r){const a=[].concat(ye),s=e.getData();for(let i=0;ie[2*h+1]?(i[h]=f,u[h]=e[2*h+1],s=!1):i[h]=g;if(s)return r[0]=t[0],r[1]=t[1],r[2]=t[2],a[0]=0,1;for(let h=0;h<3;h++)i[h]!==g&&n[h]!==0?o[h]=(u[h]-t[h])/n[h]:o[h]=-1;for(let h=0;h<3;h++)o[c]1||o[c]<0)return 0;a[0]=o[c];for(let h=0;h<3;h++)if(c!==h){if(r[h]=t[h]+o[c]*n[h],r[h]e[2*h+1])return 0}else r[h]=u[h];return 1}function Ia(e,t,n){const r=[];let a=0,s=1,i=1;for(let c=4;c<=5;++c){r[2]=e[c];for(let o=2;o<=3;++o){r[1]=e[o];for(let u=0;u<=1;++u)if(r[0]=e[u],a=pt.evaluate(n,t,r),i&&(s=a>=0?1:-1,i=0),a===0||s>0&&a<0||s<0&&a>0)return 1}}return 0}function Aa(e,t){if(!(at(e)&&at(t)))return!1;const n=[0,0,0,0,0,0];let r;for(let a=0;a<3;a++)if(r=!1,t[a*2]>=e[a*2]&&t[a*2]<=e[a*2+1]?(r=!0,n[a*2]=t[a*2]):e[a*2]>=t[a*2]&&e[a*2]<=t[a*2+1]&&(r=!0,n[a*2]=e[a*2]),t[a*2+1]>=e[a*2]&&t[a*2+1]<=e[a*2+1]?(r=!0,n[a*2+1]=t[2*a+1]):e[a*2+1]>=t[a*2]&&e[a*2+1]<=t[a*2+1]&&(r=!0,n[a*2+1]=e[a*2+1]),!r)return!1;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],!0}function ee(e,t){if(!(at(e)&&at(t)))return!1;for(let n=0;n<3;n++)if(!(t[n*2]>=e[n*2]&&t[n*2]<=e[n*2+1])&&!(e[n*2]>=t[n*2]&&e[n*2]<=t[n*2+1])&&!(t[n*2+1]>=e[n*2]&&t[n*2+1]<=e[n*2+1])&&!(e[n*2+1]>=t[n*2]&&e[n*2+1]<=t[n*2+1]))return!1;return!0}function ne(e,t,n,r){return!(te[1]||ne[3]||re[5])}function rc(e,t){return!(!ee(e,t)||!ne(e,...fn(t))||!ne(e,...ln(t)))}function Na(e,t,n){const r=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],a=[0,0,0,0,0,0,0,0];let s=0;for(let l=0;l<2;l++)for(let g=2;g<4;g++)for(let h=4;h<6;h++){const y=[e[l],e[g],e[h]];a[s++]=pt.evaluate(n,t,y)}let i=2;for(;i--&&!(Nt(a[r[i][0]],a[r[i][4]])&&Nt(a[r[i][1]],a[r[i][5]])&&Nt(a[r[i][2]],a[r[i][6]])&&Nt(a[r[i][3]],a[r[i][7]])););if(i<0)return!1;const c=Math.sign(n[i]),o=Math.abs((e[i*2+1]-e[i*2])*n[i]);let u=c>0?1:0;for(let l=0;l<4;l++){if(o===0)continue;const g=Math.abs(a[r[i][l]])/o;c>0&&gu&&(u=g)}const f=(1-u)*e[i*2]+u*e[i*2+1];return c>0?e[i*2]=f:e[i*2+1]=f,!0}class ac{constructor(t){this.bounds=t,this.bounds||(this.bounds=new Float64Array(ye))}getBounds(){return this.bounds}equals(t){return pa(this.bounds,t)}isValid(){return at(this.bounds)}setBounds(t){return an(this.bounds,t)}reset(){return sn(this.bounds)}addPoint(){for(var t=arguments.length,n=new Array(t),r=0;r1&&arguments[1]!==void 0?arguments[1]:[];return Da(this.bounds,t,n)}computeScale3(t){return La(this.bounds,t)}cutWithPlane(t,n){return Na(this.bounds,t,n)}intersectBox(t,n,r,a){return Ma(this.bounds,t,n,r,a)}intersectPlane(t,n){return Ia(this.bounds,t,n)}intersect(t){return Aa(this.bounds,t)}intersects(t){return ee(this.bounds,t)}containsPoint(t,n,r){return ne(this.bounds,t,n,r)}contains(t){return ee(this.bounds,t)}}function sc(e){const t=e&&e.bounds;return new ac(t)}const ic={equals:pa,isValid:at,setBounds:an,reset:sn,addPoint:te,addPoints:on,addBounds:da,setMinPoint:ma,setMaxPoint:Ea,inflate:Oa,scale:cn,scaleAboutCenter:nc,getCenter:un,getLength:_t,getLengths:pe,getMaxLength:wa,getDiagonalLength:Sa,getMinPoint:fn,getMaxPoint:ln,getXRange:Ca,getYRange:Ta,getZRange:va,getCorners:gn,computeCornerPoints:_a,computeLocalBounds:xa,transformBounds:Da,computeScale3:La,cutWithPlane:Na,intersectBox:Ma,intersectPlane:Ia,intersect:Aa,intersects:ee,containsPoint:ne,contains:rc,INIT_BOUNDS:ye};var Et={newInstance:sc,...ic};const Y={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var Ra={StructuredType:Y};const{StructuredType:et}=Ra;function oc(e){let t=0;for(let n=0;n<3;++n)e[n*2]e[1]||e[2]>e[3]||e[4]>e[5]?et.EMPTY:t===3?et.XYZ_GRID:t===2?e[0]===e[1]?et.YZ_PLANE:e[2]===e[3]?et.XZ_PLANE:et.XY_PLANE:t===1?e[0]c!==s[o]);return i&&(t.extent=s.slice(),t.dataDescription=cc.getDataDescriptionFromExtent(t.extent),e.modified()),i},e.setDimensions=function(){let n,r,a;if(t.deleted){ft("instance deleted - cannot call any method");return}if(arguments.length===1){const s=arguments.length<=0?void 0:arguments[0];n=s[0],r=s[1],a=s[2]}else if(arguments.length===3)n=arguments.length<=0?void 0:arguments[0],r=arguments.length<=1?void 0:arguments[1],a=arguments.length<=2?void 0:arguments[2];else{ft("Bad dimension specification");return}e.setExtent(0,n-1,0,r-1,0,a-1)},e.getDimensions=()=>[t.extent[1]-t.extent[0]+1,t.extent[3]-t.extent[2]+1,t.extent[5]-t.extent[4]+1],e.getNumberOfCells=()=>{const n=e.getDimensions();let r=1;for(let a=0;a<3;a++){if(n[a]===0)return 0;n[a]>1&&(r*=n[a]-1)}return r},e.getNumberOfPoints=()=>{const n=e.getDimensions();return n[0]*n[1]*n[2]},e.getPoint=n=>{const r=e.getDimensions();if(r[0]===0||r[1]===0||r[2]===0)return ft("Requesting a point from an empty image."),null;const a=new Float64Array(3);switch(t.dataDescription){case Y.EMPTY:return null;case Y.SINGLE_POINT:break;case Y.X_LINE:a[0]=n;break;case Y.Y_LINE:a[1]=n;break;case Y.Z_LINE:a[2]=n;break;case Y.XY_PLANE:a[0]=n%r[0],a[1]=n/r[0];break;case Y.YZ_PLANE:a[1]=n%r[1],a[2]=n/r[1];break;case Y.XZ_PLANE:a[0]=n%r[0],a[2]=n/r[0];break;case Y.XYZ_GRID:a[0]=n%r[0],a[1]=n/r[0]%r[1],a[2]=n/(r[0]*r[1]);break;default:ft("Invalid dataDescription");break}const s=[0,0,0];return e.indexToWorld(a,s),s},e.getBounds=()=>e.extentToBounds(e.getSpatialExtent()),e.extentToBounds=n=>Et.transformBounds(n,t.indexToWorld),e.getSpatialExtent=()=>Et.inflate([...t.extent],.5),e.computeTransforms=()=>{Eo(t.indexToWorld,t.origin),t.indexToWorld[0]=t.direction[0],t.indexToWorld[1]=t.direction[1],t.indexToWorld[2]=t.direction[2],t.indexToWorld[4]=t.direction[3],t.indexToWorld[5]=t.direction[4],t.indexToWorld[6]=t.direction[5],t.indexToWorld[8]=t.direction[6],t.indexToWorld[9]=t.direction[7],t.indexToWorld[10]=t.direction[8],mo(t.indexToWorld,t.indexToWorld,t.spacing),po(t.worldToIndex,t.indexToWorld)},e.indexToWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return be(r,n,t.indexToWorld),r},e.indexToWorldVec3=e.indexToWorld,e.worldToIndex=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return be(r,n,t.worldToIndex),r},e.worldToIndexVec3=e.worldToIndex,e.indexToWorldBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Et.transformBounds(n,t.indexToWorld,r)},e.worldToIndexBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Et.transformBounds(n,t.worldToIndex,r)},e.onModified(e.computeTransforms),e.computeTransforms(),e.getCenter=()=>Et.getCenter(e.getBounds()),e.computeHistogram=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const a=[0,0,0,0,0,0];e.worldToIndexBounds(n,a);const s=[0,0,0],i=[0,0,0];Et.computeCornerPoints(a,s,i),kn(s,s),kn(i,i);const c=e.getDimensions();$n(s,[0,0,0],[c[0]-1,c[1]-1,c[2]-1],s),$n(i,[0,0,0],[c[0]-1,c[1]-1,c[2]-1],i);const o=c[0],u=c[0]*c[1],f=e.getPointData().getScalars().getData();let l=-1/0,g=1/0,h=0,y=0,p=0;for(let m=s[2];m<=i[2];m++)for(let E=s[1];E<=i[1];E++){let O=s[0]+E*o+m*u;for(let v=s[0];v<=i[0];v++){if(!r||r([v,E,m],a)){const S=f[O];S>l&&(l=S),S0?y/p:0,C=p?Math.abs(h/p-d*d):0,T=Math.sqrt(C);return{minimum:g,maximum:l,average:d,variance:C,sigma:T,count:p}},e.computeIncrements=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const a=[];let s=r;for(let i=0;i<3;++i)a[i]=s,s*=n[i*2+1]-n[i*2]+1;return a},e.computeOffsetIndex=n=>{let[r,a,s]=n;const i=e.getExtent(),c=e.getPointData().getScalars().getNumberOfComponents(),o=e.computeIncrements(i,c);return Math.floor((Math.round(r)-i[0])*o[0]+(Math.round(a)-i[2])*o[1]+(Math.round(s)-i[4])*o[2])},e.getOffsetIndexFromWorld=n=>{const r=e.getExtent(),a=e.worldToIndex(n);for(let s=0;s<3;++s)if(a[s]r[s*2+1])return ft(`GetScalarPointer: Pixel ${a} is not in memory. Current extent = ${r}`),NaN;return e.computeOffsetIndex(a)},e.getScalarValueFromWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const a=e.getPointData().getScalars().getNumberOfComponents();if(r<0||r>=a)return ft(`GetScalarPointer: Scalar Component ${r} is not within bounds. Current Scalar numberOfComponents: ${a}`),NaN;const s=e.getOffsetIndexFromWorld(n);return Number.isNaN(s)?s:e.getPointData().getScalars().getComponent(s,r)}}const fc={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:Y.EMPTY};function Va(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,fc,n),aa.extend(e,t,n),t.direction?Array.isArray(t.direction)&&(t.direction=new Float64Array(t.direction.slice(0,9))):t.direction=yo(new Float64Array(9)),t.indexToWorld=new Float64Array(16),t.worldToIndex=new Float64Array(16),x.get(e,t,["indexToWorld","worldToIndex"]),x.setGetArray(e,t,["origin","spacing"],3),x.setGetArray(e,t,["direction"],9),x.getArray(e,t,["extent"],6),uc(e,t)}const lc=x.newInstance(Va,"vtkImageData");var Rt={newInstance:lc,extend:Va};const{vtkErrorMacro:gc}=x,hc=[1,-1,1,-1,1,-1];function yc(e,t){t.classHierarchy.push("vtkPoints"),e.getNumberOfPoints=e.getNumberOfTuples,e.setNumberOfPoints=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;e.getNumberOfPoints()!==n&&(t.size=n*r,t.values=x.newTypedArray(t.dataType,t.size),e.setNumberOfComponents(r),e.modified())},e.setPoint=function(n){for(var r=arguments.length,a=new Array(r>1?r-1:0),s=1;se.insertNextTuple([n,r,a]),e.getBounds=()=>{if(e.getNumberOfComponents()===3){const a=e.getRange(0);t.bounds[0]=a[0],t.bounds[1]=a[1];const s=e.getRange(1);t.bounds[2]=s[0],t.bounds[3]=s[1];const i=e.getRange(2);return t.bounds[4]=i[0],t.bounds[5]=i[1],t.bounds}if(e.getNumberOfComponents()!==2)return gc(`getBounds called on an array with components of - ${e.getNumberOfComponents()}`),hc;const n=e.getRange(0);t.bounds[0]=n[0],t.bounds[1]=n[1];const r=e.getRange(1);return t.bounds[2]=r[0],t.bounds[3]=r[1],t.bounds[4]=0,t.bounds[5]=0,t.bounds},e.computeBounds=e.getBounds,e.setNumberOfComponents(t.numberOfComponents<2?3:t.numberOfComponents)}const pc={empty:!0,numberOfComponents:3,dataType:he.FLOAT,bounds:[1,-1,1,-1,1,-1]};function ka(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,pc,n),rt.extend(e,t,n),yc(e,t)}const dc=x.newInstance(ka,"vtkPoints");var Ge={newInstance:dc,extend:ka};function $a(e){let t=0;return e.filter((n,r)=>r===t?(t+=n+1,!0):!1)}function ba(e){let t=0;for(let n=0;n(t.numberOfCells!==void 0&&!r||(t.cellSizes?t.numberOfCells=t.cellSizes.length:t.numberOfCells=ba(e.getData())),t.numberOfCells),e.getCellSizes=r=>(t.cellSizes!==void 0&&!r||(t.cellSizes=$a(e.getData())),t.cellSizes),e.resize=r=>{const a=e.getNumberOfTuples();n.resize(r);const s=e.getNumberOfTuples();s{n.setData(r,1),t.numberOfCells=void 0,t.cellSizes=void 0},e.getCell=r=>{let a=r;const s=t.values[a++];return t.values.subarray(a,a+s)},e.insertNextCell=r=>{const a=e.getNumberOfCells();return e.insertNextTuples([r.length,...r]),++t.numberOfCells,t.cellSizes!=null&&t.cellSizes.push(r.length),a}}function Oc(e){return{empty:!0,numberOfComponents:1,dataType:he.UNSIGNED_INT,...e}}function Ua(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};rt.extend(e,t,Oc(n)),Ec(e,t)}const Cc=x.newInstance(Ua,"vtkCellArray");var zn={newInstance:Cc,extend:Ua,...mc};function Tc(e,t){t.classHierarchy.push("vtkCell"),e.initialize=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(r){t.pointsIds=r;let a=t.points.getData();a.length!==3*t.pointsIds.length&&(a=x.newTypedArray(n.getDataType(),3*t.pointsIds.length));const s=n.getData();t.pointsIds.forEach((i,c)=>{let o=3*i,u=3*c;a[u]=s[o],a[++u]=s[++o],a[++u]=s[++o]}),t.points.setData(a)}else{t.points=n,t.pointsIds=new Array(n.getNumberOfPoints());for(let a=n.getNumberOfPoints()-1;a>=0;--a)t.pointsIds[a]=a}},e.getBounds=()=>{const n=t.points.getNumberOfPoints(),r=[];if(n){t.points.getPoint(0,r),t.bounds[0]=r[0],t.bounds[1]=r[0],t.bounds[2]=r[1],t.bounds[3]=r[1],t.bounds[4]=r[2],t.bounds[5]=r[2];for(let a=1;at.bounds[1]?r[0]:t.bounds[1],t.bounds[2]=r[1]t.bounds[3]?r[1]:t.bounds[3],t.bounds[4]=r[2]t.bounds[5]?r[2]:t.bounds[5]}else ro(t.bounds);return t.bounds},e.getLength2=()=>{e.getBounds();let n=0,r=0;for(let a=0;a<3;a++)r=t.bounds[2*a+1]-t.bounds[2*a],n+=r*r;return n},e.getParametricDistance=n=>{let r,a=0;for(let s=0;s<3;s++)n[s]<0?r=-n[s]:n[s]>1?r=n[s]-1:r=0,r>a&&(a=r);return a},e.getNumberOfPoints=()=>t.points.getNumberOfPoints(),e.deepCopy=n=>{n.initialize(t.points,t.pointsIds)},e.getCellDimension=()=>{},e.intersectWithLine=(n,r,a,s,i,c,o)=>{},e.evaluatePosition=(n,r,a,s,i,c)=>{x.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const vc={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function Fa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,vc,n),x.obj(e,t),t.points||(t.points=Ge.newInstance()),x.get(e,t,["points","pointsIds"]),Tc(e,t)}const wc=x.newInstance(Fa,"vtkCell");var re={newInstance:wc,extend:Fa};function Sc(e,t){let n=t;for(t>=e.array.length&&(n+=e.array.length);n>e.array.length;)e.array.push({ncells:0,cells:null});e.array.length=n}function _c(e,t){t.classHierarchy.push("vtkCellLinks"),e.buildLinks=n=>{const r=n.getPoints().getNumberOfPoints(),a=n.getNumberOfCells(),s=new Uint32Array(r);if(n.isA("vtkPolyData")){for(let i=0;i{e.incrementLinkCount(o)})}e.allocateLinks(r),t.maxId=r-1;for(let i=0;i{e.insertCellReference(o,s[o]++,i)})}}else{for(let i=0;i{e.incrementLinkCount(o)});e.allocateLinks(r),t.maxId=r-1;for(let i=0;i{e.insertCellReference(o,s[o]++,i)})}},e.allocate=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;t.array=Array(n).fill().map(()=>({ncells:0,cells:null})),t.extend=r,t.maxId=-1},e.initialize=()=>{t.array=null},e.getLink=n=>t.array[n],e.getNcells=n=>t.array[n].ncells,e.getCells=n=>t.array[n].cells,e.insertNextPoint=n=>{t.array.push({ncells:n,cells:Array(n)}),++t.maxId},e.insertNextCellReference=(n,r)=>{t.array[n].cells[t.array[n].ncells++]=r},e.deletePoint=n=>{t.array[n].ncells=0,t.array[n].cells=null},e.removeCellReference=(n,r)=>{t.array[r].cells=t.array[r].cells.filter(a=>a!==n),t.array[r].ncells=t.array[r].cells.length},e.addCellReference=(n,r)=>{t.array[r].cells[t.array[r].ncells++]=n},e.resizeCellList=(n,r)=>{t.array[n].cells.length=r},e.squeeze=()=>{Sc(t,t.maxId+1)},e.reset=()=>{t.maxId=-1},e.deepCopy=n=>{t.array=[...n.array],t.extend=n.extend,t.maxId=n.maxId},e.incrementLinkCount=n=>{++t.array[n].ncells},e.allocateLinks=n=>{for(let r=0;r{t.array[n].cells[r]=a}}const Dc={array:null,maxId:0,extend:0};function Ga(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Dc,n),x.obj(e,t),_c(e,t)}const Lc=x.newInstance(Ga,"vtkCellLinks");var xc={newInstance:Lc,extend:Ga};const $={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_PIXEL:8,VTK_QUAD:9,VTK_TETRA:10,VTK_VOXEL:11,VTK_HEXAHEDRON:12,VTK_WEDGE:13,VTK_PYRAMID:14,VTK_PENTAGONAL_PRISM:15,VTK_HEXAGONAL_PRISM:16,VTK_QUADRATIC_EDGE:21,VTK_QUADRATIC_TRIANGLE:22,VTK_QUADRATIC_QUAD:23,VTK_QUADRATIC_POLYGON:36,VTK_QUADRATIC_TETRA:24,VTK_QUADRATIC_HEXAHEDRON:25,VTK_QUADRATIC_WEDGE:26,VTK_QUADRATIC_PYRAMID:27,VTK_BIQUADRATIC_QUAD:28,VTK_TRIQUADRATIC_HEXAHEDRON:29,VTK_QUADRATIC_LINEAR_QUAD:30,VTK_QUADRATIC_LINEAR_WEDGE:31,VTK_BIQUADRATIC_QUADRATIC_WEDGE:32,VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON:33,VTK_BIQUADRATIC_TRIANGLE:34,VTK_CUBIC_LINE:35,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42,VTK_PARAMETRIC_CURVE:51,VTK_PARAMETRIC_SURFACE:52,VTK_PARAMETRIC_TRI_SURFACE:53,VTK_PARAMETRIC_QUAD_SURFACE:54,VTK_PARAMETRIC_TETRA_REGION:55,VTK_PARAMETRIC_HEX_REGION:56,VTK_HIGHER_ORDER_EDGE:60,VTK_HIGHER_ORDER_TRIANGLE:61,VTK_HIGHER_ORDER_QUAD:62,VTK_HIGHER_ORDER_POLYGON:63,VTK_HIGHER_ORDER_TETRAHEDRON:64,VTK_HIGHER_ORDER_WEDGE:65,VTK_HIGHER_ORDER_PYRAMID:66,VTK_HIGHER_ORDER_HEXAHEDRON:67,VTK_LAGRANGE_CURVE:68,VTK_LAGRANGE_TRIANGLE:69,VTK_LAGRANGE_QUADRILATERAL:70,VTK_LAGRANGE_TETRAHEDRON:71,VTK_LAGRANGE_HEXAHEDRON:72,VTK_LAGRANGE_WEDGE:73,VTK_LAGRANGE_PYRAMID:74,VTK_NUMBER_OF_CELL_TYPES:75},je=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function Mc(e){return e0&&arguments[0]!==void 0?arguments[0]:512,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;t.size=n>0?n:1,t.extend=r>0?r:1,t.maxId=-1,t.typeArray=new Uint8Array(n),t.locationArray=new Uint32Array(n)},e.insertCell=(n,r,a)=>{t.typeArray[n]=r,t.locationArray[n]=a,n>t.maxId&&(t.maxId=n)},e.insertNextCell=(n,r)=>(e.insertCell(++t.maxId,n,r),t.maxId),e.setCellTypes=(n,r,a)=>{t.size=n,t.typeArray=r,t.locationArray=a,t.maxId=n-1},e.getCellLocation=n=>t.locationArray[n],e.deleteCell=n=>{t.typeArray[n]=$.VTK_EMPTY_CELL},e.getNumberOfTypes=()=>t.maxId+1,e.isType=n=>{const r=e.getNumberOfTypes();for(let a=0;ae.insertNextCell(n,-1),e.getCellType=n=>t.typeArray[n],e.reset=()=>{t.maxId=-1},e.deepCopy=n=>{e.allocate(n.getSize(),n.getExtend()),t.typeArray.set(n.getTypeArray()),t.locationArray.set(n.getLocationArray()),t.maxId=n.getMaxId()}}const kc={size:0,maxId:-1,extend:1e3};function ja(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,kc,n),x.obj(e,t),x.get(e,t,["size","maxId","extend"]),x.getArray(e,t,["typeArray","locationArray"]),Vc(e,t)}const $c=x.newInstance(ja,"vtkCellTypes");var bc={newInstance:$c,extend:ja,...Rc};const Uc={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var za={IntersectionState:Uc};const{IntersectionState:Kt}=za;function Tt(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;const a={t:Number.MIN_VALUE,distance:0},s=[];let i;s[0]=n[0]-t[0],s[1]=n[1]-t[1],s[2]=n[2]-t[2];const c=s[0]*(e[0]-t[0])+s[1]*(e[1]-t[1])+s[2]*(e[2]-t[2]),o=k(s,s);let u=1e-5*c;return o!==0&&(a.t=c/o),u<0&&(u=-u),-u1?i=n:(i=s,s[0]=t[0]+a.t*s[0],s[1]=t[1]+a.t*s[1],s[2]=t[2]+a.t*s[2]),r&&(r[0]=i[0],r[1]=i[1],r[2]=i[2]),a.distance=nt(i,e),a}function Ba(e,t,n,r,a,s){const i=[],c=[],o=[];a[0]=0,s[0]=0,ot(t,e,i),ot(r,n,c),ot(n,e,o);const u=[k(i,i),-k(i,c),-k(i,c),k(c,c)],f=[];if(f[0]=k(i,o),f[1]=-k(c,o),no(u,f,2)===0){let l=Number.MAX_VALUE;const g=[e,t,n,r],h=[n,n,e,e],y=[r,r,t,t];s[0],s[0],a[0],a[0],a[0],a[0],s[0],s[0];let p;for(let d=0;d<4;d++)p=Tt(g[d],h[d],y[d]),p.distance=0&&a[0]<=1&&s[0]>=0&&s[0]<=1?Kt.YES_INTERSECTION:Kt.NO_INTERSECTION}const Fc={distanceToLine:Tt,intersection:Ba};function Gc(e,t){t.classHierarchy.push("vtkLine");function n(r){return r>=0&&r<=1}e.getCellDimension=()=>1,e.intersectWithLine=(r,a,s,i,c)=>{const o={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};c[1]=0,c[2]=0;const u=[],f=[],l=[];t.points.getPoint(0,f),t.points.getPoint(1,l);const g=[],h=[],y=Ba(r,a,f,l,g,h);if(o.t=g[0],o.betweenPoints=n(o.t),c[0]=h[0],y===Kt.YES_INTERSECTION){for(let p=0;p<3;p++)i[p]=f[p]+c[0]*(l[p]-f[p]),u[p]=r[p]+o.t*(a[p]-r[p]);if(nt(i,u)<=s*s)return o.intersect=1,o}else{let p;if(o.t<0)return p=Tt(r,f,l,i),p.distance<=s*s&&(o.t=0,o.intersect=1,o.betweenPoints=!0),o;if(o.t>1)return p=Tt(a,f,l,i),p.distance<=s*s&&(o.t=1,o.intersect=1,o.betweenPoints=!0),o;if(c[0]<0)return c[0]=0,p=Tt(f,r,a,i),o.t=p.t,p.distance<=s*s&&(o.intersect=1),o;if(c[0]>1)return c[0]=1,p=Tt(l,r,a,i),o.t=p.t,p.distance<=s*s&&(o.intersect=1),o}return o},e.evaluateLocation=(r,a,s)=>{const i=[],c=[];t.points.getPoint(0,i),t.points.getPoint(1,c);for(let o=0;o<3;o++)a[o]=i[o]+r[0]*(c[o]-i[o]);s[0]=1-r[0],s[1]=r[0]},e.evaluateOrientation=(r,a,s)=>t.orientations?(Pt(a,t.orientations[0],t.orientations[1],r[0]),s[0]=1-r[0],s[1]=r[0],!0):!1}const jc={orientations:null};function Pa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,jc,n),re.extend(e,t,n),x.setGet(e,t,["orientations"]),Gc(e,t)}const zc=x.newInstance(Pa,"vtkLine");var K={newInstance:zc,extend:Pa,...Fc,...za};function Bc(e,t){t.classHierarchy.push("vtkPointSet"),t.points?t.points=J(t.points):t.points=Ge.newInstance(),e.getNumberOfPoints=()=>t.points.getNumberOfPoints(),e.getBounds=()=>t.points.getBounds(),e.computeBounds=()=>{e.getBounds()};const n=e.shallowCopy;e.shallowCopy=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,a),t.points=Ge.newInstance(),t.points.shallowCopy(r.getPoints())}}const Pc={};function Ka(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Pc,n),aa.extend(e,t,n),x.setGet(e,t,["points"]),Bc(e,t)}const Kc=x.newInstance(Ka,"vtkPointSet");var Hc={newInstance:Kc,extend:Ka};function hn(e,t,n,r){const a=n[0]-t[0],s=n[1]-t[1],i=n[2]-t[2],c=e[0]-t[0],o=e[1]-t[1],u=e[2]-t[2];r[0]=s*u-i*o,r[1]=i*c-a*u,r[2]=a*o-s*c}function ae(e,t,n,r){hn(e,t,n,r);const a=Math.sqrt(r[0]*r[0]+r[1]*r[1]+r[2]*r[2]);a!==0&&(r[0]/=a,r[1]/=a,r[2]/=a)}function Wc(e,t,n,r,a,s){let i=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1e-6,c=!1;const o=[],u=[],f=[],l=[],g=[];ae(e,t,n,l),ae(r,a,s,g);const h=-k(l,e),y=-k(g,r),p=[k(g,e)+y,k(g,t)+y,k(g,n)+y];if(p[0]*p[1]>i&&p[0]*p[2]>i)return{intersect:!1,coplanar:c,pt1:o,pt2:u,surfaceId:f};const d=[k(l,r)+h,k(l,a)+h,k(l,s)+h];if(d[0]*d[1]>i&&d[0]*d[2]>i)return{intersect:!1,coplanar:c,pt1:o,pt2:u,surfaceId:f};if(Math.abs(l[0]-g[0])<1e-9&&Math.abs(l[1]-g[1])<1e-9&&Math.abs(l[2]-g[2])<1e-9&&Math.abs(h-y)<1e-9)return c=!0,{intersect:!1,coplanar:c,pt1:o,pt2:u,surfaceId:f};const C=[e,t,n],T=[r,a,s],m=k(l,g),E=(h-y*m)/(m*m-1),O=(y-h*m)/(m*m-1),v=[E*l[0]+O*g[0],E*l[1]+O*g[1],E*l[2]+O*g[2]],S=Hr(l,g,[]);Zi(S);let w=0,_=0;const D=[],L=[];let A=50,I=50;for(let N=0;N<3;N++){const P=N,tt=(N+1)%3,st=pt.intersectWithLine(C[P],C[tt],r,g);st.intersection&&st.t>0-i&&st.t<1+i&&(st.t<1+i&&st.t>1-i&&(A=w),D[w++]=k(st.x,S)-k(v,S));const Q=pt.intersectWithLine(T[P],T[tt],e,l);Q.intersection&&Q.t>0-i&&Q.t<1+i&&(Q.t<1+i&&Q.t>1-i&&(I=_),L[_++]=k(Q.x,S)-k(v,S))}if(w>2){w--;const N=D[2];D[2]=D[A],D[A]=N}if(_>2){_--;const N=L[2];L[2]=L[I],L[I]=N}if(w!==2||_!==2)return{intersect:!1,coplanar:c,pt1:o,pt2:u,surfaceId:f};if(Number.isNaN(D[0])||Number.isNaN(D[1])||Number.isNaN(L[0])||Number.isNaN(L[1]))return{intersect:!1,coplanar:c,pt1:o,pt2:u,surfaceId:f};if(D[0]>D[1]){const N=D[1];D[1]=D[0],D[0]=N}if(L[0]>L[1]){const N=L[1];L[1]=L[0],L[0]=N}let M,V;return D[1]2,e.intersectWithLine=(n,r,a,s,i)=>{const c={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};i[2]=0;const o=[],u=a*a,f=[],l=[],g=[];t.points.getPoint(0,f),t.points.getPoint(1,l),t.points.getPoint(2,g);const h=[],y=[];if(ae(f,l,g,h),h[0]!==0||h[1]!==0||h[2]!==0){const m=pt.intersectWithLine(n,r,f,h);if(c.betweenPoints=m.betweenPoints,c.t=m.t,s[0]=m.x[0],s[1]=m.x[1],s[2]=m.x[2],!m.intersection)return i[0]=0,i[1]=0,c.intersect=0,c;const E=e.evaluatePosition(s,o,i,y);if(E.evaluation>=0)return E.dist2<=u?(c.intersect=1,c):(c.intersect=E.evaluation,c)}const p=nt(f,l),d=nt(l,g),C=nt(g,f);t.line||(t.line=K.newInstance()),p>d&&p>C?(t.line.getPoints().setPoint(0,f),t.line.getPoints().setPoint(1,l)):d>C&&d>p?(t.line.getPoints().setPoint(0,l),t.line.getPoints().setPoint(1,g)):(t.line.getPoints().setPoint(0,g),t.line.getPoints().setPoint(1,f));const T=t.line.intersectWithLine(n,r,a,s,i);if(c.betweenPoints=T.betweenPoints,c.t=T.t,T.intersect){const m=[],E=[],O=[];for(let v=0;v<3;v++)m[v]=f[v]-g[v],E[v]=l[v]-g[v],O[v]=s[v]-g[v];return i[0]=k(O,m)/C,i[1]=k(O,E)/d,c.intersect=1,c}return i[0]=0,i[1]=0,c.intersect=0,c},e.evaluatePosition=(n,r,a,s)=>{const i={subId:0,dist2:0,evaluation:-1};let c,o;const u=[],f=[],l=[],g=[];let h;const y=[],p=[],d=[];let C=0,T=0;const m=[];let E,O,v,S=[];const w=[],_=[],D=[];i.subId=0,a[2]=0,t.points.getPoint(1,u),t.points.getPoint(2,f),t.points.getPoint(0,l),hn(u,f,l,g),pt.generalizedProjectPoint(n,u,g,D);let L=0;for(c=0;c<3;c++)g[c]<0?h=-g[c]:h=g[c],h>L&&(L=h,T=c);for(o=0,c=0;c<3;c++)c!==T&&(m[o++]=c);for(c=0;c<2;c++)y[c]=D[m[c]]-l[m[c]],p[c]=u[m[c]]-l[m[c]],d[c]=f[m[c]]-l[m[c]];if(C=Bt(p,d),C===0)return a[0]=0,a[1]=0,i.evaluation=-1,i;if(a[0]=Bt(y,d)/C,a[1]=Bt(p,y)/C,s[0]=1-(a[0]+a[1]),s[1]=a[0],s[2]=a[1],s[0]>=0&&s[0]<=1&&s[1]>=0&&s[1]<=1&&s[2]>=0&&s[2]<=1)r&&(i.dist2=nt(D,n),r[0]=D[0],r[1]=D[1],r[2]=D[2]),i.evaluation=1;else{let A;if(r){if(s[1]<0&&s[2]<0)for(E=nt(n,l),O=K.distanceToLine(n,u,l,A,w),v=K.distanceToLine(n,l,f,A,_),E{const s=[],i=[],c=[];t.points.getPoint(0,s),t.points.getPoint(1,i),t.points.getPoint(2,c);const o=1-n[0]-n[1];for(let u=0;u<3;u++)r[u]=s[u]*o+i[u]*n[0]+c[u]*n[1];a[0]=o,a[1]=n[0],a[2]=n[1]},e.getParametricDistance=n=>{let r,a=0;const s=[];s[0]=n[0],s[1]=n[1],s[2]=1-n[0]-n[1];for(let i=0;i<3;i++)s[i]<0?r=-s[i]:s[i]>1?r=s[i]-1:r=0,r>a&&(a=r);return a}}const Jc={};function Ha(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,Jc,n),re.extend(e,t,n),Xc(e,t)}const Qc=x.newInstance(Ha,"vtkTriangle");var qc={newInstance:Qc,extend:Ha,...Yc};const Me=["verts","lines","polys","strips"],{vtkWarningMacro:Bn}=x,Zc={[$.VTK_LINE]:K,[$.VTK_POLY_LINE]:K,[$.VTK_TRIANGLE]:qc};function tu(e,t){t.classHierarchy.push("vtkPolyData");function n(a){return a.replace(/(?:^\w|[A-Z]|\b\w)/g,s=>s.toUpperCase()).replace(/\s+/g,"")}Me.forEach(a=>{e[`getNumberOf${n(a)}`]=()=>t[a].getNumberOfCells(),t[a]?t[a]=J(t[a]):t[a]=zn.newInstance()}),e.getNumberOfCells=()=>Me.reduce((a,s)=>a+t[s].getNumberOfCells(),0);const r=e.shallowCopy;e.shallowCopy=function(a){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(a,s),Me.forEach(i=>{t[i]=zn.newInstance(),t[i].shallowCopy(a.getReferenceByName(i))})},e.buildCells=()=>{const a=e.getNumberOfVerts(),s=e.getNumberOfLines(),i=e.getNumberOfPolys(),c=e.getNumberOfStrips(),o=a+s+i+c,u=new Uint8Array(o);let f=u;const l=new Uint32Array(o);let g=l;if(a){let h=0;t.verts.getCellSizes().forEach((y,p)=>{g[p]=h,f[p]=y>1?$.VTK_POLY_VERTEX:$.VTK_VERTEX,h+=y+1}),g=g.subarray(a),f=f.subarray(a)}if(s){let h=0;t.lines.getCellSizes().forEach((y,p)=>{g[p]=h,f[p]=y>2?$.VTK_POLY_LINE:$.VTK_LINE,y===1&&Bn("Building VTK_LINE ",p," with only one point, but VTK_LINE needs at least two points. Check the input."),h+=y+1}),g=g.subarray(s),f=f.subarray(s)}if(i){let h=0;t.polys.getCellSizes().forEach((y,p)=>{switch(g[p]=h,y){case 3:f[p]=$.VTK_TRIANGLE;break;case 4:f[p]=$.VTK_QUAD;break;default:f[p]=$.VTK_POLYGON;break}y<3&&Bn("Building VTK_TRIANGLE ",p," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),h+=y+1}),g+=g.subarray(i),f+=f.subarray(i)}if(c){let h=0;f.fill($.VTK_TRIANGLE_STRIP,0,c),t.strips.getCellSizes().forEach((y,p)=>{g[p]=h,h+=y+1})}t.cells=bc.newInstance(),t.cells.setCellTypes(o,u,l)},e.buildLinks=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;t.cells===void 0&&e.buildCells(),t.links=xc.newInstance(),a>0?t.links.allocate(a):t.links.allocate(e.getPoints().getNumberOfPoints()),t.links.buildLinks(e)},e.getCellType=a=>t.cells.getCellType(a),e.getCellPoints=a=>{const s=e.getCellType(a);let i=null;switch(s){case $.VTK_VERTEX:case $.VTK_POLY_VERTEX:i=t.verts;break;case $.VTK_LINE:case $.VTK_POLY_LINE:i=t.lines;break;case $.VTK_TRIANGLE:case $.VTK_QUAD:case $.VTK_POLYGON:i=t.polys;break;case $.VTK_TRIANGLE_STRIP:i=t.strips;break;default:return i=null,{type:0,cellPointIds:null}}const c=t.cells.getCellLocation(a),o=i.getCell(c);return{cellType:s,cellPointIds:o}},e.getPointCells=a=>t.links.getCells(a),e.getCellEdgeNeighbors=(a,s,i)=>{const c=t.links.getLink(s),o=t.links.getLink(i);return c.cells.filter(u=>u!==a&&o.cells.indexOf(u)!==-1)},e.getCell=function(a){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const i=e.getCellPoints(a),c=s||Zc[i.cellType].newInstance();return c.initialize(e.getPoints(),i.cellPointIds),c}}const eu={};function Wa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,eu,n),Hc.extend(e,t,n),x.get(e,t,["cells","links"]),x.setGet(e,t,["verts","lines","polys","strips"]),tu(e,t)}const nu=x.newInstance(Wa,"vtkPolyData");var yn={newInstance:nu,extend:Wa};function Ie(e){const t=e.indexOf(":");return e.substring(t+1)}const ru=1073741824;class au{constructor(){this._imageCache=new Map,this._volumeCache=new Map,this._geometryCache=new Map,this._imageCacheSize=0,this._maxCacheSize=3*ru,this._geometryCacheSize=0,this.setMaxCacheSize=t=>{if(!t||typeof t!="number"){const n=`New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;throw new Error(n)}this._maxCacheSize=t},this.isCacheable=t=>{const n=this.getBytesAvailable(),r=Array.from(this._imageCache.values()).reduce((s,i)=>i.sharedCacheKey?s:s+i.sizeInBytes,0);return n+r>=t},this.getMaxCacheSize=()=>this._maxCacheSize,this.getCacheSize=()=>this._imageCacheSize,this._decacheImage=(t,n=!1)=>{const r=this._imageCache.get(t);if(!r)return;if(r.sharedCacheKey&&!n)throw new Error("Cannot decache an image with a shared cache key. You need to manually decache the volume first.");const{imageLoadObject:a}=r;a!=null&&a.cancelFn&&a.cancelFn(),a!=null&&a.decache&&a.decache(),this._imageCache.delete(t)},this._decacheVolume=t=>{const n=this._volumeCache.get(t);if(!n)return;const{volumeLoadObject:r,volume:a}=n;a&&(a.cancelLoading&&a.cancelLoading(),a.imageData&&a.imageData.delete(),r.cancelFn&&r.cancelFn(),a.imageIds&&a.imageIds.forEach(s=>{const i=this._imageCache.get(s);i&&i.sharedCacheKey===t&&(i.sharedCacheKey=void 0)}),this._volumeCache.delete(t))},this.purgeCache=()=>{const t=this._imageCache.keys();for(this.purgeVolumeCache();;){const{value:n,done:r}=t.next();if(r)break;this.removeImageLoadObject(n,{force:!0}),q(W,B.IMAGE_CACHE_IMAGE_REMOVED,{imageId:n})}},this.purgeVolumeCache=()=>{const t=this._volumeCache.keys();for(;;){const{value:n,done:r}=t.next();if(r)break;this.removeVolumeLoadObject(n),q(W,B.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:n})}},this.getVolumeLoadObject=t=>{if(t===void 0)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(t);if(n)return n.timeStamp=Date.now(),n.volumeLoadObject},this.putGeometryLoadObject=(t,n)=>{if(t===void 0)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(n.promise===void 0)throw new Error("putGeometryLoadObject: geometryLoadObject.promise must not be undefined");if(this._geometryCache.has(t))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putGeometryLoadObject: geometryLoadObject.cancel must be a function");const r={loaded:!1,geometryId:t,geometryLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(t,r),n.promise.then(a=>{try{this._putGeometryCommon(t,a,r)}catch(s){throw console.debug(`Error in _putGeometryCommon for geometry ${t}:`,s),s}}).catch(a=>{throw console.debug(`Error caching geometry ${t}:`,a),this._geometryCache.delete(t),a})},this.getGeometry=t=>{if(t===void 0)throw new Error("getGeometry: geometryId must not be undefined");const n=this._geometryCache.get(t);if(n)return n.timeStamp=Date.now(),n.geometry},this.removeGeometryLoadObject=t=>{if(t===void 0)throw new Error("removeGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(t);if(!n)throw new Error("removeGeometryLoadObject: geometryId was not present in geometryCache");this.decrementGeometryCacheSize(n.sizeInBytes);const r={geometry:n,geometryId:t};q(W,B.GEOMETRY_CACHE_GEOMETRY_REMOVED,r),this._decacheGeometry(t)},this._decacheGeometry=t=>{const n=this._geometryCache.get(t);if(!n)return;const{geometryLoadObject:r}=n;r.cancelFn&&r.cancelFn(),r.decache&&r.decache(),this._geometryCache.delete(t)},this.incrementGeometryCacheSize=t=>{this._geometryCacheSize+=t},this.decrementGeometryCacheSize=t=>{this._geometryCacheSize-=t},this.getImage=(t,n=Xt.FAR_REPLICATE)=>{var a;if(t===void 0)throw new Error("getImage: imageId must not be undefined");const r=this._imageCache.get(t);if(r&&(r.timeStamp=Date.now(),!(((a=r.image)==null?void 0:a.imageQualityStatus){var a;if(t===void 0)throw new Error("getVolume: volumeId must not be undefined");const r=this._volumeCache.get(t);return r?(r.timeStamp=Date.now(),r.volume):n?(a=[...this._volumeCache.values()].find(s=>s.volumeId.includes(t)))==null?void 0:a.volume:void 0},this.getVolumes=()=>Array.from(this._volumeCache.values()).map(n=>n.volume),this.filterVolumesByReferenceId=t=>this.getVolumes().filter(r=>r.referencedVolumeId===t),this.removeImageLoadObject=(t,{force:n=!1}={})=>{if(t===void 0)throw new Error("removeImageLoadObject: imageId must not be undefined");const r=this._imageCache.get(t);if(!r)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._decacheImage(t,n),this.incrementImageCacheSize(-r.sizeInBytes);const a={image:r,imageId:t};q(W,B.IMAGE_CACHE_IMAGE_REMOVED,a)},this.removeVolumeLoadObject=t=>{if(t===void 0)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(t);if(!n)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");const r={volume:n,volumeId:t};q(W,B.VOLUME_CACHE_VOLUME_REMOVED,r),this._decacheVolume(t)},this.incrementImageCacheSize=t=>{this._imageCacheSize+=t},this.decrementImageCacheSize=t=>{this._imageCacheSize-=t},this.getGeometryLoadObject=t=>{if(t===void 0)throw new Error("getGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(t);if(n)return n.timeStamp=Date.now(),n.geometryLoadObject}}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(t,n){let r=this.getBytesAvailable();if(r>=t)return r;const a=Array.from(this._imageCache.values()).filter(o=>!o.sharedCacheKey);function s(o,u){return o.timeStamp>u.timeStamp?1:o.timeStampo.imageId);let c=i;n&&(c=i.filter(o=>!n.includes(o)));for(const o of c)if(this.removeImageLoadObject(o),q(W,B.IMAGE_CACHE_IMAGE_REMOVED,{imageId:o}),r=this.getBytesAvailable(),r>=t)return r;for(const o of i)if(this.removeImageLoadObject(o),q(W,B.IMAGE_CACHE_IMAGE_REMOVED,{imageId:o}),r=this.getBytesAvailable(),r>=t)return r}_putImageCommon(t,n,r){if(!this._imageCache.has(t)){console.warn("The image was purged from the cache before it completed loading.");return}if(!n){console.warn("Image is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putImageCommon: image.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putImageCommon: image.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(B.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.image=n,r.sizeInBytes=n.sizeInBytes,this.incrementImageCacheSize(r.sizeInBytes);const a={image:r};q(W,B.IMAGE_CACHE_IMAGE_ADDED,a),r.sharedCacheKey=n.sharedCacheKey}async putImageLoadObject(t,n){if(t===void 0)throw console.error("putImageLoadObject: imageId must not be undefined"),new Error("putImageLoadObject: imageId must not be undefined");if(n.promise===void 0)throw console.error("putImageLoadObject: imageLoadObject.promise must not be undefined"),new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");const r=this._imageCache.get(t);if(r!=null&&r.imageLoadObject)throw console.warn(`putImageLoadObject: imageId ${t} already in cache`),new Error("putImageLoadObject: imageId already in cache");if(n.cancelFn&&typeof n.cancelFn!="function")throw console.error("putImageLoadObject: imageLoadObject.cancel must be a function"),new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const a={...r,loaded:!1,imageId:t,sharedCacheKey:void 0,imageLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(t,a),this._imageCache.set(t,a),n.promise.then(s=>{try{this._putImageCommon(t,s,a)}catch(i){throw console.debug(`Error in _putImageCommon for image ${t}:`,i),i}}).catch(s=>{throw console.debug(`Error caching image ${t}:`,s),this._imageCache.delete(t),s})}putImageSync(t,n){if(t===void 0)throw new Error("putImageSync: imageId must not be undefined");if(this._imageCache.has(t))throw new Error("putImageSync: imageId already in cache");const r={loaded:!1,imageId:t,sharedCacheKey:void 0,imageLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._imageCache.set(t,r);try{this._putImageCommon(t,n,r)}catch(a){throw this._imageCache.delete(t),a}}getImageLoadObject(t){if(t===void 0)throw new Error("getImageLoadObject: imageId must not be undefined");const n=this._imageCache.get(t);if(n)return n.timeStamp=Date.now(),n.imageLoadObject}isLoaded(t){const n=this._imageCache.get(t);return n?n.loaded:!1}getVolumeContainingImageId(t){const n=Array.from(this._volumeCache.keys()),r=Ie(t);for(const a of n){const s=this._volumeCache.get(a);if(!s)return;const{volume:i}=s;if(!i.imageIds.length)return;const c=i.getImageURIIndex(r);if(c>-1)return{volume:i,imageIdIndex:c}}}getCachedImageBasedOnImageURI(t){const n=Ie(t),a=Array.from(this._imageCache.keys()).find(s=>Ie(s)===n);if(a)return this._imageCache.get(a)}_putVolumeCommon(t,n,r){var s;if(!this._volumeCache.get(t)){console.warn("The volume was purged from the cache before it completed loading.");return}r.loaded=!0,r.volume=n,(s=n.imageIds)==null||s.forEach(i=>{const c=this._imageCache.get(i);c&&(c.sharedCacheKey=t)});const a={volume:r};q(W,B.VOLUME_CACHE_VOLUME_ADDED,a)}putVolumeSync(t,n){if(t===void 0)throw new Error("putVolumeSync: volumeId must not be undefined");if(this._volumeCache.has(t))throw new Error("putVolumeSync: volumeId already in cache");const r={loaded:!1,volumeId:t,volumeLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._volumeCache.set(t,r);try{this._putVolumeCommon(t,n,r)}catch(a){throw this._volumeCache.delete(t),a}}async putVolumeLoadObject(t,n){if(t===void 0)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(n.promise===void 0)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(t))throw new Error(`putVolumeLoadObject: volumeId:${t} already in cache`);if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const r={loaded:!1,volumeId:t,volumeLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(t,r),n.promise.then(a=>{try{this._putVolumeCommon(t,a,r)}catch(s){throw console.error(`Error in _putVolumeCommon for volume ${t}:`,s),this._volumeCache.delete(t),s}}).catch(a=>{throw this._volumeCache.delete(t),a})}_putGeometryCommon(t,n,r){if(!this._geometryCache.get(t)){console.warn("The geometry was purged from the cache before it completed loading.");return}if(!n){console.warn("Geometry is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putGeometryCommon: geometry.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putGeometryCommon: geometry.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(B.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.geometry=n,r.sizeInBytes=n.sizeInBytes,this.incrementGeometryCacheSize(r.sizeInBytes);const a={geometry:r};q(W,B.GEOMETRY_CACHE_GEOMETRY_ADDED,a)}putGeometrySync(t,n){if(t===void 0)throw new Error("putGeometrySync: geometryId must not be undefined");if(this._geometryCache.has(t))throw new Error("putGeometrySync: geometryId already in cache");const r={loaded:!1,geometryId:t,geometryLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._geometryCache.set(t,r);try{this._putGeometryCommon(t,n,r)}catch(a){throw this._geometryCache.delete(t),a}}setPartialImage(t,n){const r=this._imageCache.get(t);if(!r){n&&this._imageCache.set(t,{image:n,imageId:t,loaded:!1,timeStamp:Date.now(),sizeInBytes:0});return}r.loaded&&(r.loaded=!1,r.imageLoadObject=null,this.incrementImageCacheSize(-r.sizeInBytes),r.sizeInBytes=0),r.image=n||r.image}getImageQuality(t){var r;const n=(r=this._imageCache.get(t))==null?void 0:r.image;return n?n.imageQualityStatus||Xt.FULL_RESOLUTION:void 0}}const Vt=new au;function Ya(e,t,n){return Math.abs(e-t)<=n}function su(e,t,n=1e-5){if(e.length!==t.length)return!1;for(let r=0;r0&&typeof e[0]=="number"}function iu(e,t,n=1e-5){return typeof e!=typeof t||e===null||t===null?!1:Pn(e)&&Pn(t)?Ya(e,t,n):Kn(e)&&Kn(t)?su(e,t,n):!1}function kt(e,t){return e.worldToIndex(t).map(Math.round)}const{vtkErrorMacro:Hn}=Br;function ou(e){const t=e.getPolys().getData(),n=e.getStrips().getData(),r={cellSize:0,cell:[],done:!1,polyIdx:0,stripIdx:0,remainingStripLength:0,next(){if(r.polyIdx{let a=n.getMTime();return t.cutFunction&&(a=Math.max(a,t.cutFunction.getMTime())),a};function r(a,s){const i=a.getPoints(),c=i.getData(),o=i.getNumberOfPoints(),u=[],f=[],l=[];(!t.cutScalars||t.cutScalars.length0;let O=!0;for(let w=1;w0!==E){O=!1;break}if(O)continue;const v=[];for(let w=0;w0;if(C[_]>0===D)continue;let A=w,I=_,M=C[I]-C[A];M<=0&&(A=_,I=w,M*=-1);let V=0;M!==0&&(V=(t.cutValue-C[A])/M);const N=m.cell[A],P=m.cell[I];p[0]=c[N*3],p[1]=c[N*3+1],p[2]=c[N*3+2],d[0]=c[P*3],d[1]=c[P*3+1],d[2]=c[P*3+2];const tt=[p[0]+V*(d[0]-p[0]),p[1]+V*(d[1]-p[1]),p[2]+V*(d[2]-p[2])];v.push({pointEdge1:N,pointEdge2:P,intersectedPoint:tt,newPointID:-1})}for(let w=0;w2&&(l.push(S),v.forEach(w=>{l.push(w.newPointID)}))}s.getPoints().setData(oe(i.getDataType(),u),3),f.length!==0&&s.getLines().setData(Uint16Array.from(f)),l.length!==0&&s.getPolys().setData(Uint16Array.from(l))}e.requestData=(a,s)=>{const i=a[0];if(!i){Hn("Invalid or missing input");return}if(!t.cutFunction){Hn("Missing cut function");return}const c=yn.newInstance();r(i,c),s[0]=c}}const uu={cutFunction:null,cutScalars:null,cutValue:0};function Xa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,uu,n),ue(e,t),We(e,t,1,1),le(e,t,["cutFunction","cutValue"]),cu(e,t)}const fu=ge(Xa,"vtkCutter");var lu={newInstance:fu,extend:Xa};class gu{constructor(t,n,r=1){this.rows=new Map,this.height=1,this.width=1,this.depth=1,this.jMultiple=1,this.kMultiple=1,this.numberOfComponents=1,this.defaultValue=0,this.pixelDataConstructor=Uint8Array,this.get=a=>{const s=a%this.jMultiple,i=(a-s)/this.jMultiple,c=this.getRLE(s,i);return(c==null?void 0:c.value)||this.defaultValue},this.getRun=(a,s)=>{const i=a+s*this.height;return this.rows.get(i)},this.set=(a,s)=>{if(s===void 0)throw new Error(`Can't set undefined at ${a%this.width}`);const i=a%this.width,c=(a-i)/this.width,o=this.rows.get(c);if(!o){this.rows.set(c,[{start:i,end:i+1,value:s}]);return}const u=this.findIndex(o,i),f=o[u],l=o[u-1];if(!f){if(!l||l.value!==s||l.end!==i){o[u]={start:i,end:i+1,value:s};return}l.end++;return}const{start:g,end:h,value:y}=f;if(s===y&&i>=g)return;const p={start:i,end:i+1,value:s},d=i>g,C=d?u+1:u,T=d?f:l;let m=d?o[u+1]:f;if((T==null?void 0:T.value)===s&&T.end===i){T.end++,(m==null?void 0:m.value)===s&&m.start===i+1?(T.end=m.end,o.splice(u,1)):(m==null?void 0:m.start)===i&&(m.start++,m.start===m.end&&(o.splice(u,1),m=o[u],(m==null?void 0:m.start)===i+1&&m.value===s&&(T.end=m.end,o.splice(u,1))));return}if((m==null?void 0:m.value)===s&&m.start===i+1){m.start--,(T==null?void 0:T.end)>i&&(T.end=i,T.end===T.start&&o.splice(u,1));return}if((m==null?void 0:m.start)===i&&m.end===i+1){m.value=s;const E=o[u+1];(E==null?void 0:E.start)==i+1&&(E==null?void 0:E.value)===s&&(o.splice(u+1,1),m.end=E.end);return}i===(m==null?void 0:m.start)&&m.start++,d&&h>i+1?o.splice(C,0,p,{start:i+1,end:T.end,value:T.value}):o.splice(C,0,p),(T==null?void 0:T.end)>i&&(T.end=i)},this.width=t,this.height=n,this.depth=r,this.jMultiple=t,this.kMultiple=this.jMultiple*n}getRLE(t,n,r=0){const a=this.rows.get(n+r*this.height);if(!a)return;const s=this.findIndex(a,t),i=a[s];return t>=(i==null?void 0:i.start)?i:void 0}findIndex(t,n){for(let r=0;r{const c=this.toIndex([a,s,i]);return this._get(c)},this.setAtIJK=(a,s,i,c)=>{const o=this.toIndex([a,s,i]),u=this._set(o,c);return u!==!1&&(this.modifiedSlices.add(i),b.addBounds(this.boundsIJK,[a,s,i])),u},this.getAtIJKPoint=([a,s,i])=>this.getAtIJK(a,s,i),this.setAtIJKPoint=([a,s,i],c)=>{this.setAtIJK(a,s,i,c)},this.getAtIndex=a=>this._get(a),this.setAtIndex=(a,s)=>{const i=this._set(a,s);if(i!==!1){const c=this.toIJK(a);this.modifiedSlices.add(c[2]),b.addBounds(this.boundsIJK,c)}return i},this.getMiddleSliceData=()=>{const a=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:a,slicePlane:2})},this.forEach=(a,s={})=>{const i=s.boundsIJK||this.getBoundsIJK(),c=s.isInObject||this.isInObject||(()=>!0),o=s.returnPoints||!1,u=s.imageData,f=Math.min(i[0][0],i[0][1]),l=Math.max(i[0][0],i[0][1]),g=Math.min(i[1][0],i[1][1]),h=Math.max(i[1][0],i[1][1]),y=Math.min(i[2][0],i[2][1]),p=Math.max(i[2][0],i[2][1]),d=[];if(u){const{imageData:C}=s,T=C.getDirection(),m=T.slice(0,3),E=T.slice(3,6),O=T.slice(6,9),v=C.getSpacing(),[S,w,_]=v,D=j(f,g,y),L=C.indexToWorld(D),A=j(m[0]*S,m[1]*S,m[2]*S),I=j(E[0]*w,E[1]*w,E[2]*w),M=j(O[0]*_,O[1]*_,O[2]*_),V=De(L);for(let N=y;N<=p;N++){const P=De(V);for(let tt=g;tt<=h;tt++){const st=De(V);for(let Q=f;Q<=l;Q++){const xt=[Q,tt,N];if(c(V,xt)){const de=this.toIndex(xt),pn=this._get(de);o&&d.push({value:pn,index:de,pointIJK:xt,pointLPS:V.slice()}),a&&a({value:pn,index:de,pointIJK:xt,pointLPS:V})}Le(V,V,A)}Un(V,st),Le(V,V,I)}Un(V,P),Le(V,V,M)}return d}if(this.map){for(const C of this.map.keys()){const T=this.toIJK(C);if(!c(null,T))continue;const m=this._get(C);o&&d.push({value:m,index:C,pointIJK:T,pointLPS:null}),a({value:m,index:C,pointIJK:T,pointLPS:null})}return d}else{for(let C=y;C<=p;C++){const T=C*this.frameSize;for(let m=g;m<=h;m++){const E=T+m*this.width;for(let O=f,v=E+O;O<=l;O++,v++){const S=this.getAtIndex(v),w=[O,m,C];c(null,w)&&(o&&d.push({value:S,index:v,pointIJK:w,pointLPS:null}),a({value:S,index:v,pointIJK:[O,m,C],pointLPS:null}))}}}return d}},this.getSliceData=({sliceIndex:a,slicePlane:s})=>{const[i,c,o]=this.dimensions,u=i*c,f=a*u;let l;const g=this.getConstructor();function h(p){return typeof p=="function"}if(!h(g))return new Uint8Array(0);let y;switch(s){case 0:l=c*o,y=new g(l);for(let p=0;p[0,t-1])}getBoundsIJK(){return this.boundsIJK[0][0]{n[0]=1/0,n[1]=-1/0}),this.modifiedSlices.clear(),(t=this.points)==null||t.clear()}getConstructor(){return this.scalarData?this.scalarData.constructor:this._getConstructor?this._getConstructor():(console.warn("No scalar data available or can be used to get the constructor"),Float32Array)}getArrayOfModifiedSlices(){return Array.from(this.modifiedSlices)}resetModifiedSlices(){this.modifiedSlices.clear()}static addBounds(t,n){t||(t=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]]),t[0][0]=Math.min(n[0],t[0][0]),t[0][1]=Math.max(n[0],t[0][1]),t[1][0]=Math.min(n[1],t[1][0]),t[1][1]=Math.max(n[1],t[1][1]),t[2][0]=Math.min(n[2],t[2][0]),t[2][1]=Math.max(n[2],t[2][1])}addPoint(t){const n=Array.isArray(t)?t[0]+this.width*t[1]+this.frameSize*t[2]:t;this.points||(this.points=new Set),this.points.add(n)}getPoints(){return this.points?[...this.points].map(t=>this.toIJK(t)):[]}setSliceDataValue(t,n,r){if(Array.isArray(r))for(let a=0;a(s*=r,[n[s++],n[s++],n[s++]]),(s,i)=>{s*=3;const c=!iu(n[s],i);return n[s++]=i[0],n[s++]=i[1],n[s++]=i[2],c});return a.numberOfComponents=r,a.scalarData=n,a}static createImageVolumeVoxelManager({dimensions:t,imageIds:n,numberOfComponents:r=1}){const a=t[0]*t[1];function s(u){const f=Math.floor(u/a),l=n[f];if(!l)return console.warn(`ImageId not found for sliceIndex: ${f}`),{pixelData:null,pixelIndex:null};const g=Vt.getImage(l);if(!g)return console.warn(`Image not found for imageId: ${l}`),{pixelData:null,pixelIndex:null};const h=g.voxelManager.getScalarData(),y=u%a*r;return{pixelData:h,pixelIndex:y}}function i(u){const{pixelData:f,pixelIndex:l}=s(u);return!f||l===null?null:r===1?f[l]:[f[l],f[l+1],f[l+2]]}function c(u,f){const{pixelData:l,pixelIndex:g}=s(u);if(!l||g===null)return!1;let h=!1;if(r===1)l[g]!==f&&(l[g]=f,h=!0);else{const y=f;for(let p=0;pi(u),(u,f)=>c(u,f));return o.numberOfComponents=r,o._getConstructor=()=>{const u=s(0);return u.pixelData?u.pixelData.constructor:null},o.getMiddleSliceData=()=>{const u=Math.floor(t[2]/2);return o.getSliceData({sliceIndex:u,slicePlane:2})},o.getRange=()=>{let u=1/0,f=-1/0;for(const l of n){const g=Vt.getImage(l);g.minPixelValuef&&(f=g.maxPixelValue)}return[u,f]},o._getScalarDataLength=()=>{const{pixelData:u}=s(0);return u.length*t[2]},o.getCompleteScalarDataArray=()=>{const u=o._getConstructor();if(!u)return new Uint8Array(0);const f=o.getScalarDataLength(),l=new u(f),g=t[0]*t[1]*r;for(let h=0;h{const f=t[0]*t[1]*r,l=o._getConstructor();let g=1/0,h=-1/0;for(let y=0;y4||r<1||r===2))throw new Error(`Number of components ${r} must be 1, 3 or 4`);return r>1?b._createRGBScalarVolumeVoxelManager({dimensions:t,scalarData:n,numberOfComponents:r}):b._createNumberVolumeVoxelManager({dimensions:t,scalarData:n})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:t,dimensions:n,timePoint:r=0,numberOfComponents:a=1}){if(!a){const c=Vt.getImage(t[0][0]);if(!c)throw new Error("Unable to determine number of components: No image found");if(a=c.getPixelData().length/(n[0]*n[1]),a>4||a<1||a===2)throw new Error(`Number of components ${a} must be 1, 3 or 4`)}const s=t.map(c=>b.createImageVolumeVoxelManager({dimensions:n,imageIds:c,numberOfComponents:a})),i=new b(n,c=>s[r]._get(c),(c,o)=>s[r]._set(c,o));return i.numberOfComponents=a,i.getScalarDataLength=()=>s[r].getScalarDataLength(),i.getConstructor=()=>s[r].getConstructor(),i.getRange=()=>s[r].getRange(),i.getMiddleSliceData=()=>s[r].getMiddleSliceData(),i.setTimePoint=c=>{r=c,i._get=o=>s[r]._get(o),i._set=(o,u)=>s[r]._set(o,u)},i.getAtIndexAndTimePoint=(c,o)=>s[o]._get(c),i.getTimePointScalarData=c=>s[c].getCompleteScalarDataArray(),i.getTimePointScalarData=c=>s[c].getCompleteScalarDataArray(),i.getCurrentTimePointScalarData=()=>s[r].getCompleteScalarDataArray(),i}static createImageVoxelManager({width:t,height:n,scalarData:r,numberOfComponents:a=1}){const s=[t,n,1];if(!a&&(a=r.length/t/n,a>4||a<1||a===2))throw new Error(`Number of components ${a} must be 1, 3 or 4`);return a>1?b._createRGBScalarVolumeVoxelManager({dimensions:s,scalarData:r,numberOfComponents:a}):b._createNumberVolumeVoxelManager({dimensions:s,scalarData:r})}static _createNumberVolumeVoxelManager({dimensions:t,scalarData:n}){const r=new b(t,a=>n[a],(a,s)=>{const i=n[a]!==s;return n[a]=s,i});return r.scalarData=n,r.getMiddleSliceData=()=>{const a=Math.floor(t[2]/2);return r.getSliceData({sliceIndex:a,slicePlane:2})},r}static createMapVoxelManager({dimension:t}){const n=new Map,r=new b(t,n.get.bind(n),(a,s)=>n.set(a,s)&&!0);return r.map=n,r}static createHistoryVoxelManager({sourceVoxelManager:t}){const n=new Map,{dimensions:r}=t,a=new b(r,s=>n.get(s),function(s,i){if(n.has(s))i===n.get(s)&&n.delete(s);else{const c=this.sourceVoxelManager.getAtIndex(s);if(c===i)return!1;n.set(s,c)}this.sourceVoxelManager.setAtIndex(s,i)});return a.map=n,a.scalarData=t.scalarData,a.sourceVoxelManager=t,a}static createLazyVoxelManager({dimensions:t,planeFactory:n}){const r=new Map,[a,s]=t,i=a*s,c=new b(t,o=>r.get(Math.floor(o/i))[o%i],(o,u)=>{const f=Math.floor(o/i);let l=r.get(f);return l||(l=n(a,s),r.set(f,l)),l[o%i]=u,!0});return c.map=r,c}static createRLEVoxelManager({dimensions:t}){const[n,r,a]=t,s=new gu(n,r,a),i=new b(t,c=>s.get(c),(c,o)=>(s.set(c,o),!0));return i.map=s,i.getPixelData=s.getPixelData.bind(s),i}static addInstanceToImage(t){const{width:n,height:r}=t,a=t.voxelManager.getScalarData();if(a.length>=n*r){t.voxelManager=b.createScalarVolumeVoxelManager({dimensions:[n,r,1],scalarData:a});return}t.voxelManager=b.createRLEVoxelManager({dimensions:[n,r,1]}),t.getPixelData=t.voxelManager.getPixelData,t.sizeInBytes=hu}}function yu(e,t){const n=[...e];return t>=n.length?(Wn(n),n):(Wn(n),n.slice(0,t))}function Wn(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}const Yn={Forward:1,Backward:-1},$t=new Set;function pu(e,t){e.requestData=(n,r)=>{const[a]=n;r[0]||(r[0]=yn.newInstance());const[s]=r;e.extractContours(a,s),s.modified()},e.traverseLoop=(n,r,a,s,i)=>{let c=a,o=s,u=!1,f=0;for(;!u;){const{cellPointIds:l}=n.getCellPoints(c);if(!l)continue;o=l[0]!==o?l[0]:l[1],f++;const g=r*f;i.push({t:g,ptId:o});const h=n.getPointCells(o);if(h.length!==2||o===s)return o;h.length===2?(c=h[0]!==c?h[0]:h[1],$t.add(c)):u=!0}return o},e.extractContours=(n,r)=>{var c;const a=[];$t.clear();const s=n.getLines();r.getPoints().setData(Float32Array.from(n.getPoints().getData()));for(let o=0;oh.t{i.insertNextCell(o.map(u=>u.ptId))})}}const du={};function Ja(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(t,du,n),x.obj(e,t),x.algo(e,t,1,1),pu(e)}const mu=x.newInstance(Ja,"vtkContourLoopExtraction");var Eu={newInstance:mu,extend:Ja};function Ou(e,t,n=!1){var f;let r=1/0,a=n?-1/0:0,s=1/0,i=n?-1/0:0,c=1/0,o=n?-1/0:0;const u=((f=e[0])==null?void 0:f.length)===3;for(let l=0;l=g[0]?f[0]:g[0],y=f[1]>=g[1]?f[1]:g[1],p=f[1]<=g[1]?f[1]:g[1];if(t[0]<=h&&t[1]>=p&&t[1]h?c:h,o=o>y?o:y,a&&(u=up?f:p)}return a?{minX:s,maxX:c,minY:i,maxY:o,minZ:u,maxZ:f}:{minX:s,maxX:c,minY:i,maxY:o}}const vu=1e-6;function bt(e){let t;const n=yu(e,50);for(let i=0;i<3;i++)if(n.every((c,o,u)=>Math.abs(c[i]-u[0][i]){const o=[j(n,r,a),j(s,r,a),j(n,i,a),j(s,i,a),j(n,r,c),j(s,r,c),j(n,i,c),j(s,i,c)],u=j(t[0],t[1],t[2]),f=j(e[0],e[1],e[2]),l=-$e(u,f);let g=null;for(const h of o){const y=$e(u,h)+l;if(g===null)g=Math.sign(y);else if(Math.sign(y)!==g)return!0}return!1},Su={polySeg:null,polySegInitializing:!1,polySegInitializingPromise:null,async initializePolySeg(e){var t;if(this.polySegInitializing){await this.polySegInitializingPromise;return}(t=this.polySeg)!=null&&t.instance||(this.polySegInitializing=!0,this.polySegInitializingPromise=new Promise(n=>{this.polySeg=new me,this.polySeg.initialize({updateProgress:e}).then(()=>{this.polySegInitializing=!1,n()})}),await this.polySegInitializingPromise)},async convertContourToSurface(e,...t){const{polylines:n,numPointsArray:r}=e,[a]=t;return await this.initializePolySeg(a),await this.polySeg.instance.convertContourRoiToSurface(n,r)},async convertLabelmapToSurface(e,...t){const[n]=t;return await this.initializePolySeg(n),this.polySeg.instance.convertLabelmapToSurface(e.scalarData,e.dimensions,e.spacing,e.direction,e.origin,[e.segmentIndex])},async convertContourToVolumeLabelmap(e,...t){const[n]=t;await(await new me).initialize({updateProgress:n});const{segmentIndices:a,scalarData:s,annotationUIDsInSegmentMap:i,dimensions:c,origin:o,direction:u,spacing:f}=e,l=b.createScalarVolumeVoxelManager({dimensions:c,scalarData:s}),g=Rt.newInstance();g.setDimensions(c),g.setOrigin(o),g.setDirection(u),g.setSpacing(f);const h=rt.newInstance({name:"Pixels",numberOfComponents:1,values:s});g.getPointData().setScalars(h),g.modified();for(const y of a){const p=i.get(y);for(const d of p){if(!d.polyline)continue;const{polyline:C,holesPolyline:T}=d,m=Xn(C),[E,O,v]=kt(g,[m[0][0],m[1][0],m[2][0]]),[S,w,_]=kt(g,[m[0][1],m[1][1],m[2][1]]),{projectedPolyline:D,sharedDimensionIndex:L}=bt(C),A=T==null?void 0:T.map(N=>{const{projectedPolyline:P}=bt(N);return P}),I=(L+1)%3,M=(L+2)%3;b.createScalarVolumeVoxelManager({dimensions:c,scalarData:s}).forEach(({pointIJK:N})=>{l.setAtIJKPoint(N,y)},{imageData:g,isInObject:N=>{const P=[N[I],N[M]];return ze(D,P,{holes:A})},boundsIJK:[[E,S],[O,w],[v,_]]})}}return l.scalarData},async convertContourToStackLabelmap(e,...t){const[n]=t;await(await new me).initialize({updateProgress:n});const{segmentationsInfo:a,annotationUIDsInSegmentMap:s,segmentIndices:i}=e,c=new Map;a.forEach((o,u)=>{const{dimensions:f,scalarData:l,direction:g,spacing:h,origin:y}=o,p=b.createScalarVolumeVoxelManager({dimensions:f,scalarData:l}),d=Rt.newInstance();d.setDimensions(f),d.setOrigin(y),d.setDirection(g),d.setSpacing(h);const C=rt.newInstance({name:"Pixels",numberOfComponents:1,values:l});d.getPointData().setScalars(C),d.modified(),c.set(u,{manager:p,imageData:d})});for(const o of i){const u=s.get(o);for(const f of u){if(!f.polyline)continue;const{polyline:l,holesPolyline:g,referencedImageId:h}=f,y=Xn(l),{manager:p,imageData:d}=c.get(h),[C,T,m]=kt(d,[y[0][0],y[1][0],y[2][0]]),[E,O,v]=kt(d,[y[0][1],y[1][1],y[2][1]]),{projectedPolyline:S,sharedDimensionIndex:w}=bt(l),_=g==null?void 0:g.map(I=>{const{projectedPolyline:M}=bt(I);return M}),D=(w+1)%3,L=(w+2)%3;b.createImageVoxelManager({width:d.getDimensions()[0],height:d.getDimensions()[1],scalarData:d.getPointData().getScalars().getData()}).forEach(({pointIJK:I})=>{p.setAtIJKPoint(I,o)},{imageData:d,isInObject:I=>{const M=[I[D],I[L]];return ze(S,M,{holes:_})},boundsIJK:[[C,E],[T,O],[m,v]]})}}return a.forEach((o,u)=>{const{manager:f}=c.get(u);o.scalarData=f.scalarData}),a},async convertSurfaceToVolumeLabelmap(e,...t){const[n]=t;return await this.initializePolySeg(n),this.polySeg.instance.convertSurfaceToLabelmap(e.points,e.polys,e.dimensions,e.spacing,e.direction,e.origin)},async convertSurfacesToVolumeLabelmap(e,...t){const[n]=t;await this.initializePolySeg(n);const{segmentsInfo:r}=e,a=Array.from(r.keys()).map(y=>{const{points:p,polys:d}=r.get(y);return{...this.polySeg.instance.convertSurfaceToLabelmap(p,d,e.dimensions,e.spacing,e.direction,e.origin),segmentIndex:y}}),s=await Promise.all(a),i=Rt.newInstance();i.setDimensions(e.dimensions),i.setOrigin(e.origin),i.setSpacing(e.spacing),i.setDirection(e.direction);const c=e.dimensions[0]*e.dimensions[1]*e.dimensions[2],o=rt.newInstance({name:"Pixels",numberOfComponents:1,values:new Uint8Array(c)});i.getPointData().setScalars(o),i.modified();const{dimensions:u}=e,f=i.getPointData().getScalars().getData(),l=b.createScalarVolumeVoxelManager({dimensions:u,scalarData:f}),g=s.map(y=>{const{data:p,dimensions:d,direction:C,origin:T,spacing:m}=y,E=Rt.newInstance();E.setDimensions(d),E.setOrigin(T),E.setSpacing(m),E.setDirection(C);const O=rt.newInstance({name:"Pixels",numberOfComponents:1,values:p});E.getPointData().setScalars(O),E.modified();const v=b.createScalarVolumeVoxelManager({dimensions:d,scalarData:p}),S=E.getExtent();return{volume:E,voxelManager:v,extent:S,scalarData:p,segmentIndex:y.segmentIndex}});return b.createScalarVolumeVoxelManager({dimensions:i.getDimensions(),scalarData:i.getPointData().getScalars().getData()}).forEach(({pointIJK:y,pointLPS:p})=>{try{for(const d of g){const{volume:C,extent:T,voxelManager:m,segmentIndex:E}=d,O=C.worldToIndex(p);if(O[0]T[1]||O[1]T[3]||O[2]T[5])continue;const v=O.map(Math.round);if(m.getAtIJK(...v)>0){l.setAtIJKPoint(y,E);break}}}catch{}},{imageData:i}),l.scalarData},getSurfacesAABBs({surfacesInfo:e}){const t=new Map;for(const{points:n,id:r}of e){const a=Jn(n,{numDimensions:3});t.set(r,a)}return t},cutSurfacesIntoPlanes({planesInfo:e,surfacesInfo:t,surfacesAABB:n=new Map},r,a){const s=e.length,i=lu.newInstance(),c=pt.newInstance();i.setCutFunction(c);const o=yn.newInstance();try{for(const[u,f]of e.entries()){const{sliceIndex:l,planes:g}=f,h=new Map;for(const y of t){const{points:p,polys:d,id:C,segmentIndex:T}=y,m=n.get(C)||Jn(p,{numDimensions:3});n.has(C)||n.set(C,m);const{minX:E,minY:O,minZ:v,maxX:S,maxY:w,maxZ:_}=m,{origin:D,normal:L}=g[0];if(!wu(D,L,E,O,v,S,w,_))continue;o.getPoints().setData(p,3),o.getPolys().setData(d,3),o.modified(),i.setInputData(o),c.setOrigin(D),c.setNormal(L);try{i.update()}catch(N){console.warn("Error during clipping",N);continue}const A=i.getOutputData(),I=A;I.buildLinks();const M=Eu.newInstance();M.setInputData(I);const V=M.getOutputData();A&&h.set(T,{points:V.getPoints().getData(),lines:V.getLines().getData(),numberOfCells:V.getLines().getNumberOfCells(),segmentIndex:T})}r({progress:(u+1)/s}),a({sliceIndex:l,polyDataResults:h})}}catch(u){console.warn("Error during processing",u)}finally{t=null,c.delete()}}};Be(Su); diff --git a/rad/static/dv3d/index-DBrYmXwn.js b/rad/static/dv3d/index-DBrYmXwn.js new file mode 100644 index 00000000..423097ac --- /dev/null +++ b/rad/static/dv3d/index-DBrYmXwn.js @@ -0,0 +1,3938 @@ +var GJ=Object.defineProperty;var WJ=(n,e,o)=>e in n?GJ(n,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[e]=o;var cR=(n,e,o)=>WJ(n,typeof e!="symbol"?e+"":e,o);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const g of c.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&i(g)}).observe(document,{childList:!0,subtree:!0});function o(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function i(l){if(l.ep)return;l.ep=!0;const c=o(l);fetch(l.href,c)}})();var g2=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function yf(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function $J(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var o=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};o.prototype=e.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(n).forEach(function(i){var l=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(o,i,l.get?l:{enumerable:!0,get:function(){return n[i]}})}),o}var mF={exports:{}},j9={},vF={exports:{}},mo={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Iv=Symbol.for("react.element"),jJ=Symbol.for("react.portal"),zJ=Symbol.for("react.fragment"),HJ=Symbol.for("react.strict_mode"),KJ=Symbol.for("react.profiler"),qJ=Symbol.for("react.provider"),XJ=Symbol.for("react.context"),YJ=Symbol.for("react.forward_ref"),JJ=Symbol.for("react.suspense"),ZJ=Symbol.for("react.memo"),QJ=Symbol.for("react.lazy"),fR=Symbol.iterator;function eZ(n){return n===null||typeof n!="object"?null:(n=fR&&n[fR]||n["@@iterator"],typeof n=="function"?n:null)}var kF={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},yF=Object.assign,wF={};function F8(n,e,o){this.props=n,this.context=e,this.refs=wF,this.updater=o||kF}F8.prototype.isReactComponent={};F8.prototype.setState=function(n,e){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,e,"setState")};F8.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function CF(){}CF.prototype=F8.prototype;function bD(n,e,o){this.props=n,this.context=e,this.refs=wF,this.updater=o||kF}var FD=bD.prototype=new CF;FD.constructor=bD;yF(FD,F8.prototype);FD.isPureReactComponent=!0;var hR=Array.isArray,_F=Object.prototype.hasOwnProperty,VD={current:null},xF={key:!0,ref:!0,__self:!0,__source:!0};function SF(n,e,o){var i,l={},c=null,g=null;if(e!=null)for(i in e.ref!==void 0&&(g=e.ref),e.key!==void 0&&(c=""+e.key),e)_F.call(e,i)&&!xF.hasOwnProperty(i)&&(l[i]=e[i]);var v=arguments.length-2;if(v===1)l.children=o;else if(1>>1,wt=Ge[ut];if(0>>1;utl($t,qe))Jtl(Dn,$t)?(Ge[ut]=Dn,Ge[Jt]=qe,ut=Jt):(Ge[ut]=$t,Ge[qt]=qe,ut=qt);else if(Jtl(Dn,qe))Ge[ut]=Dn,Ge[Jt]=qe,ut=Jt;else break e}}return Ke}function l(Ge,Ke){var qe=Ge.sortIndex-Ke.sortIndex;return qe!==0?qe:Ge.id-Ke.id}if(typeof performance=="object"&&typeof performance.now=="function"){var c=performance;n.unstable_now=function(){return c.now()}}else{var g=Date,v=g.now();n.unstable_now=function(){return g.now()-v}}var _=[],T=[],P=1,I=null,R=3,L=!1,V=!1,U=!1,j=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function K(Ge){for(var Ke=o(T);Ke!==null;){if(Ke.callback===null)i(T);else if(Ke.startTime<=Ge)i(T),Ke.sortIndex=Ke.expirationTime,e(_,Ke);else break;Ke=o(T)}}function X(Ge){if(U=!1,K(Ge),!V)if(o(_)!==null)V=!0,Je(ee);else{var Ke=o(T);Ke!==null&&it(X,Ke.startTime-Ge)}}function ee(Ge,Ke){V=!1,U&&(U=!1,z(ce),ce=-1),L=!0;var qe=R;try{for(K(Ke),I=o(_);I!==null&&(!(I.expirationTime>Ke)||Ge&&!we());){var ut=I.callback;if(typeof ut=="function"){I.callback=null,R=I.priorityLevel;var wt=ut(I.expirationTime<=Ke);Ke=n.unstable_now(),typeof wt=="function"?I.callback=wt:I===o(_)&&i(_),K(Ke)}else i(_);I=o(_)}if(I!==null)var Et=!0;else{var qt=o(T);qt!==null&&it(X,qt.startTime-Ke),Et=!1}return Et}finally{I=null,R=qe,L=!1}}var ne=!1,le=null,ce=-1,ge=5,pe=-1;function we(){return!(n.unstable_now()-peGe||125ut?(Ge.sortIndex=qe,e(T,Ge),o(_)===null&&Ge===o(T)&&(U?(z(ce),ce=-1):U=!0,it(X,qe-ut))):(Ge.sortIndex=wt,e(_,Ge),V||L||(V=!0,Je(ee))),Ge},n.unstable_shouldYield=we,n.unstable_wrapCallback=function(Ge){var Ke=R;return function(){var qe=R;R=Ke;try{return Ge.apply(this,arguments)}finally{R=qe}}}})(OF);IF.exports=OF;var fZ=IF.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hZ=Xi,iu=fZ;function Xr(n){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+n,o=1;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sT=Object.prototype.hasOwnProperty,dZ=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,gR={},pR={};function gZ(n){return sT.call(pR,n)?!0:sT.call(gR,n)?!1:dZ.test(n)?pR[n]=!0:(gR[n]=!0,!1)}function pZ(n,e,o,i){if(o!==null&&o.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:o!==null?!o.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function mZ(n,e,o,i){if(e===null||typeof e>"u"||pZ(n,e,o,i))return!0;if(i)return!1;if(o!==null)switch(o.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Q1(n,e,o,i,l,c,g){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=l,this.mustUseProperty=o,this.propertyName=n,this.type=e,this.sanitizeURL=c,this.removeEmptyString=g}var H2={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){H2[n]=new Q1(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];H2[e]=new Q1(e,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){H2[n]=new Q1(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){H2[n]=new Q1(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){H2[n]=new Q1(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){H2[n]=new Q1(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){H2[n]=new Q1(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){H2[n]=new Q1(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){H2[n]=new Q1(n,5,!1,n.toLowerCase(),null,!1,!1)});var BD=/[\-:]([a-z])/g;function GD(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(BD,GD);H2[e]=new Q1(e,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(BD,GD);H2[e]=new Q1(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(BD,GD);H2[e]=new Q1(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){H2[n]=new Q1(n,1,!1,n.toLowerCase(),null,!1,!1)});H2.xlinkHref=new Q1("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){H2[n]=new Q1(n,1,!1,n.toLowerCase(),null,!0,!0)});function WD(n,e,o,i){var l=H2.hasOwnProperty(e)?H2[e]:null;(l!==null?l.type!==0:i||!(2v||l[g]!==c[v]){var _=` +`+l[g].replace(" at new "," at ");return n.displayName&&_.includes("")&&(_=_.replace("",n.displayName)),_}while(1<=g&&0<=v);break}}}finally{Ix=!1,Error.prepareStackTrace=o}return(n=n?n.displayName||n.name:"")?P3(n):""}function vZ(n){switch(n.tag){case 5:return P3(n.type);case 16:return P3("Lazy");case 13:return P3("Suspense");case 19:return P3("SuspenseList");case 0:case 2:case 15:return n=Ox(n.type,!1),n;case 11:return n=Ox(n.type.render,!1),n;case 1:return n=Ox(n.type,!0),n;default:return""}}function cT(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case k6:return"Fragment";case v6:return"Portal";case aT:return"Profiler";case $D:return"StrictMode";case lT:return"Suspense";case uT:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case RF:return(n.displayName||"Context")+".Consumer";case PF:return(n._context.displayName||"Context")+".Provider";case jD:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case zD:return e=n.displayName||null,e!==null?e:cT(n.type)||"Memo";case hd:e=n._payload,n=n._init;try{return cT(n(e))}catch{}}return null}function kZ(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return cT(e);case 8:return e===$D?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Wd(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function LF(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function yZ(n){var e=LF(n)?"checked":"value",o=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var l=o.get,c=o.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return l.call(this)},set:function(g){i=""+g,c.call(this,g)}}),Object.defineProperty(n,e,{enumerable:o.enumerable}),{getValue:function(){return i},setValue:function(g){i=""+g},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function fy(n){n._valueTracker||(n._valueTracker=yZ(n))}function NF(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var o=e.getValue(),i="";return n&&(i=LF(n)?n.checked?"true":"false":n.value),n=i,n!==o?(e.setValue(n),!0):!1}function sw(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function fT(n,e){var o=e.checked;return ca({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o??n._wrapperState.initialChecked})}function vR(n,e){var o=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;o=Wd(e.value!=null?e.value:o),n._wrapperState={initialChecked:i,initialValue:o,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function bF(n,e){e=e.checked,e!=null&&WD(n,"checked",e,!1)}function hT(n,e){bF(n,e);var o=Wd(e.value),i=e.type;if(o!=null)i==="number"?(o===0&&n.value===""||n.value!=o)&&(n.value=""+o):n.value!==""+o&&(n.value=""+o);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?dT(n,e.type,o):e.hasOwnProperty("defaultValue")&&dT(n,e.type,Wd(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function kR(n,e,o){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,o||e===n.value||(n.value=e),n.defaultValue=e}o=n.name,o!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,o!==""&&(n.name=o)}function dT(n,e,o){(e!=="number"||sw(n.ownerDocument)!==n)&&(o==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+o&&(n.defaultValue=""+o))}var R3=Array.isArray;function K6(n,e,o,i){if(n=n.options,e){e={};for(var l=0;l"+e.valueOf().toString()+"",e=hy.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function Nm(n,e){if(e){var o=n.firstChild;if(o&&o===n.lastChild&&o.nodeType===3){o.nodeValue=e;return}}n.textContent=e}var J3={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wZ=["Webkit","ms","Moz","O"];Object.keys(J3).forEach(function(n){wZ.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),J3[e]=J3[n]})});function BF(n,e,o){return e==null||typeof e=="boolean"||e===""?"":o||typeof e!="number"||e===0||J3.hasOwnProperty(n)&&J3[n]?(""+e).trim():e+"px"}function GF(n,e){n=n.style;for(var o in e)if(e.hasOwnProperty(o)){var i=o.indexOf("--")===0,l=BF(o,e[o],i);o==="float"&&(o="cssFloat"),i?n.setProperty(o,l):n[o]=l}}var CZ=ca({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function mT(n,e){if(e){if(CZ[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Xr(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Xr(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Xr(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Xr(62))}}function vT(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var kT=null;function HD(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var yT=null,q6=null,X6=null;function CR(n){if(n=Pv(n)){if(typeof yT!="function")throw Error(Xr(280));var e=n.stateNode;e&&(e=X9(e),yT(n.stateNode,n.type,e))}}function WF(n){q6?X6?X6.push(n):X6=[n]:q6=n}function $F(){if(q6){var n=q6,e=X6;if(X6=q6=null,CR(n),e)for(n=0;n>>=0,n===0?32:31-(RZ(n)/AZ|0)|0}var dy=64,gy=4194304;function A3(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function cw(n,e){var o=n.pendingLanes;if(o===0)return 0;var i=0,l=n.suspendedLanes,c=n.pingedLanes,g=o&268435455;if(g!==0){var v=g&~l;v!==0?i=A3(v):(c&=g,c!==0&&(i=A3(c)))}else g=o&~l,g!==0?i=A3(g):c!==0&&(i=A3(c));if(i===0)return 0;if(e!==0&&e!==i&&!(e&l)&&(l=i&-i,c=e&-e,l>=c||l===16&&(c&4194240)!==0))return e;if(i&4&&(i|=o&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0o;o++)e.push(n);return e}function Ov(n,e,o){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-fc(e),n[e]=o}function FZ(n,e){var o=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=Q3),MR=" ",PR=!1;function uV(n,e){switch(n){case"keyup":return fQ.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function cV(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var y6=!1;function dQ(n,e){switch(n){case"compositionend":return cV(e);case"keypress":return e.which!==32?null:(PR=!0,MR);case"textInput":return n=e.data,n===MR&&PR?null:n;default:return null}}function gQ(n,e){if(y6)return n==="compositionend"||!eI&&uV(n,e)?(n=aV(),C7=JD=_d=null,y6=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:o,offset:e-n};n=i}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=NR(o)}}function gV(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?gV(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function pV(){for(var n=window,e=sw();e instanceof n.HTMLIFrameElement;){try{var o=typeof e.contentWindow.location.href=="string"}catch{o=!1}if(o)n=e.contentWindow;else break;e=sw(n.document)}return e}function tI(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function xQ(n){var e=pV(),o=n.focusedElem,i=n.selectionRange;if(e!==o&&o&&o.ownerDocument&&gV(o.ownerDocument.documentElement,o)){if(i!==null&&tI(o)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in o)o.selectionStart=e,o.selectionEnd=Math.min(n,o.value.length);else if(n=(e=o.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var l=o.textContent.length,c=Math.min(i.start,l);i=i.end===void 0?c:Math.min(i.end,l),!n.extend&&c>i&&(l=i,i=c,c=l),l=bR(o,c);var g=bR(o,i);l&&g&&(n.rangeCount!==1||n.anchorNode!==l.node||n.anchorOffset!==l.offset||n.focusNode!==g.node||n.focusOffset!==g.offset)&&(e=e.createRange(),e.setStart(l.node,l.offset),n.removeAllRanges(),c>i?(n.addRange(e),n.extend(g.node,g.offset)):(e.setEnd(g.node,g.offset),n.addRange(e)))}}for(e=[],n=o;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o=document.documentMode,w6=null,TT=null,tm=null,ET=!1;function FR(n,e,o){var i=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;ET||w6==null||w6!==sw(i)||(i=w6,"selectionStart"in i&&tI(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),tm&&Gm(tm,i)||(tm=i,i=dw(TT,"onSelect"),0x6||(n.current=RT[x6],RT[x6]=null,x6--)}function ws(n,e){x6++,RT[x6]=n.current,n.current=e}var $d={},d1=o4($d),Cl=o4(!1),Ag=$d;function d8(n,e){var o=n.type.contextTypes;if(!o)return $d;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var l={},c;for(c in o)l[c]=e[c];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=l),l}function _l(n){return n=n.childContextTypes,n!=null}function pw(){Us(Cl),Us(d1)}function jR(n,e,o){if(d1.current!==$d)throw Error(Xr(168));ws(d1,e),ws(Cl,o)}function SV(n,e,o){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return o;i=i.getChildContext();for(var l in i)if(!(l in e))throw Error(Xr(108,kZ(n)||"Unknown",l));return ca({},o,i)}function mw(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||$d,Ag=d1.current,ws(d1,n),ws(Cl,Cl.current),!0}function zR(n,e,o){var i=n.stateNode;if(!i)throw Error(Xr(169));o?(n=SV(n,e,Ag),i.__reactInternalMemoizedMergedChildContext=n,Us(Cl),Us(d1),ws(d1,n)):Us(Cl),ws(Cl,o)}var Zf=null,Y9=!1,$x=!1;function TV(n){Zf===null?Zf=[n]:Zf.push(n)}function NQ(n){Y9=!0,TV(n)}function s4(){if(!$x&&Zf!==null){$x=!0;var n=0,e=es;try{var o=Zf;for(es=1;n>=g,l-=g,rh=1<<32-fc(e)+l|o<ce?(ge=le,le=null):ge=le.sibling;var pe=R(z,le,K[ce],X);if(pe===null){le===null&&(le=ge);break}n&&le&&pe.alternate===null&&e(z,le),$=c(pe,$,ce),ne===null?ee=pe:ne.sibling=pe,ne=pe,le=ge}if(ce===K.length)return o(z,le),Ks&&ag(z,ce),ee;if(le===null){for(;cece?(ge=le,le=null):ge=le.sibling;var we=R(z,le,pe.value,X);if(we===null){le===null&&(le=ge);break}n&&le&&we.alternate===null&&e(z,le),$=c(we,$,ce),ne===null?ee=we:ne.sibling=we,ne=we,le=ge}if(pe.done)return o(z,le),Ks&&ag(z,ce),ee;if(le===null){for(;!pe.done;ce++,pe=K.next())pe=I(z,pe.value,X),pe!==null&&($=c(pe,$,ce),ne===null?ee=pe:ne.sibling=pe,ne=pe);return Ks&&ag(z,ce),ee}for(le=i(z,le);!pe.done;ce++,pe=K.next())pe=L(le,z,ce,pe.value,X),pe!==null&&(n&&pe.alternate!==null&&le.delete(pe.key===null?ce:pe.key),$=c(pe,$,ce),ne===null?ee=pe:ne.sibling=pe,ne=pe);return n&&le.forEach(function(Te){return e(z,Te)}),Ks&&ag(z,ce),ee}function j(z,$,K,X){if(typeof K=="object"&&K!==null&&K.type===k6&&K.key===null&&(K=K.props.children),typeof K=="object"&&K!==null){switch(K.$$typeof){case cy:e:{for(var ee=K.key,ne=$;ne!==null;){if(ne.key===ee){if(ee=K.type,ee===k6){if(ne.tag===7){o(z,ne.sibling),$=l(ne,K.props.children),$.return=z,z=$;break e}}else if(ne.elementType===ee||typeof ee=="object"&&ee!==null&&ee.$$typeof===hd&&qR(ee)===ne.type){o(z,ne.sibling),$=l(ne,K.props),$.ref=l3(z,ne,K),$.return=z,z=$;break e}o(z,ne);break}else e(z,ne);ne=ne.sibling}K.type===k6?($=Eg(K.props.children,z.mode,X,K.key),$.return=z,z=$):(X=O7(K.type,K.key,K.props,null,z.mode,X),X.ref=l3(z,$,K),X.return=z,z=X)}return g(z);case v6:e:{for(ne=K.key;$!==null;){if($.key===ne)if($.tag===4&&$.stateNode.containerInfo===K.containerInfo&&$.stateNode.implementation===K.implementation){o(z,$.sibling),$=l($,K.children||[]),$.return=z,z=$;break e}else{o(z,$);break}else e(z,$);$=$.sibling}$=Jx(K,z.mode,X),$.return=z,z=$}return g(z);case hd:return ne=K._init,j(z,$,ne(K._payload),X)}if(R3(K))return V(z,$,K,X);if(r3(K))return U(z,$,K,X);Cy(z,K)}return typeof K=="string"&&K!==""||typeof K=="number"?(K=""+K,$!==null&&$.tag===6?(o(z,$.sibling),$=l($,K),$.return=z,z=$):(o(z,$),$=Yx(K,z.mode,X),$.return=z,z=$),g(z)):o(z,$)}return j}var p8=OV(!0),MV=OV(!1),yw=o4(null),ww=null,E6=null,oI=null;function sI(){oI=E6=ww=null}function aI(n){var e=yw.current;Us(yw),n._currentValue=e}function NT(n,e,o){for(;n!==null;){var i=n.alternate;if((n.childLanes&e)!==e?(n.childLanes|=e,i!==null&&(i.childLanes|=e)):i!==null&&(i.childLanes&e)!==e&&(i.childLanes|=e),n===o)break;n=n.return}}function J6(n,e){ww=n,oI=E6=null,n=n.dependencies,n!==null&&n.firstContext!==null&&(n.lanes&e&&(wl=!0),n.firstContext=null)}function Lu(n){var e=n._currentValue;if(oI!==n)if(n={context:n,memoizedValue:e,next:null},E6===null){if(ww===null)throw Error(Xr(308));E6=n,ww.dependencies={lanes:0,firstContext:n}}else E6=E6.next=n;return e}var yg=null;function lI(n){yg===null?yg=[n]:yg.push(n)}function PV(n,e,o,i){var l=e.interleaved;return l===null?(o.next=o,lI(e)):(o.next=l.next,l.next=o),e.interleaved=o,mh(n,i)}function mh(n,e){n.lanes|=e;var o=n.alternate;for(o!==null&&(o.lanes|=e),o=n,n=n.return;n!==null;)n.childLanes|=e,o=n.alternate,o!==null&&(o.childLanes|=e),o=n,n=n.return;return o.tag===3?o.stateNode:null}var dd=!1;function uI(n){n.updateQueue={baseState:n.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function RV(n,e){n=n.updateQueue,e.updateQueue===n&&(e.updateQueue={baseState:n.baseState,firstBaseUpdate:n.firstBaseUpdate,lastBaseUpdate:n.lastBaseUpdate,shared:n.shared,effects:n.effects})}function uh(n,e){return{eventTime:n,lane:e,tag:0,payload:null,callback:null,next:null}}function Ld(n,e,o){var i=n.updateQueue;if(i===null)return null;if(i=i.shared,Lo&2){var l=i.pending;return l===null?e.next=e:(e.next=l.next,l.next=e),i.pending=e,mh(n,o)}return l=i.interleaved,l===null?(e.next=e,lI(i)):(e.next=l.next,l.next=e),i.interleaved=e,mh(n,o)}function x7(n,e,o){if(e=e.updateQueue,e!==null&&(e=e.shared,(o&4194240)!==0)){var i=e.lanes;i&=n.pendingLanes,o|=i,e.lanes=o,qD(n,o)}}function XR(n,e){var o=n.updateQueue,i=n.alternate;if(i!==null&&(i=i.updateQueue,o===i)){var l=null,c=null;if(o=o.firstBaseUpdate,o!==null){do{var g={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};c===null?l=c=g:c=c.next=g,o=o.next}while(o!==null);c===null?l=c=e:c=c.next=e}else l=c=e;o={baseState:i.baseState,firstBaseUpdate:l,lastBaseUpdate:c,shared:i.shared,effects:i.effects},n.updateQueue=o;return}n=o.lastBaseUpdate,n===null?o.firstBaseUpdate=e:n.next=e,o.lastBaseUpdate=e}function Cw(n,e,o,i){var l=n.updateQueue;dd=!1;var c=l.firstBaseUpdate,g=l.lastBaseUpdate,v=l.shared.pending;if(v!==null){l.shared.pending=null;var _=v,T=_.next;_.next=null,g===null?c=T:g.next=T,g=_;var P=n.alternate;P!==null&&(P=P.updateQueue,v=P.lastBaseUpdate,v!==g&&(v===null?P.firstBaseUpdate=T:v.next=T,P.lastBaseUpdate=_))}if(c!==null){var I=l.baseState;g=0,P=T=_=null,v=c;do{var R=v.lane,L=v.eventTime;if((i&R)===R){P!==null&&(P=P.next={eventTime:L,lane:0,tag:v.tag,payload:v.payload,callback:v.callback,next:null});e:{var V=n,U=v;switch(R=e,L=o,U.tag){case 1:if(V=U.payload,typeof V=="function"){I=V.call(L,I,R);break e}I=V;break e;case 3:V.flags=V.flags&-65537|128;case 0:if(V=U.payload,R=typeof V=="function"?V.call(L,I,R):V,R==null)break e;I=ca({},I,R);break e;case 2:dd=!0}}v.callback!==null&&v.lane!==0&&(n.flags|=64,R=l.effects,R===null?l.effects=[v]:R.push(v))}else L={eventTime:L,lane:R,tag:v.tag,payload:v.payload,callback:v.callback,next:null},P===null?(T=P=L,_=I):P=P.next=L,g|=R;if(v=v.next,v===null){if(v=l.shared.pending,v===null)break;R=v,v=R.next,R.next=null,l.lastBaseUpdate=R,l.shared.pending=null}}while(!0);if(P===null&&(_=I),l.baseState=_,l.firstBaseUpdate=T,l.lastBaseUpdate=P,e=l.shared.interleaved,e!==null){l=e;do g|=l.lane,l=l.next;while(l!==e)}else c===null&&(l.shared.lanes=0);bg|=g,n.lanes=g,n.memoizedState=I}}function YR(n,e,o){if(n=e.effects,e.effects=null,n!==null)for(e=0;eo?o:4,n(!0);var i=zx.transition;zx.transition={};try{n(!1),e()}finally{es=o,zx.transition=i}}function XV(){return Nu().memoizedState}function UQ(n,e,o){var i=bd(n);if(o={lane:i,action:o,hasEagerState:!1,eagerState:null,next:null},YV(n))JV(e,o);else if(o=PV(n,e,o,i),o!==null){var l=H1();hc(o,n,i,l),ZV(o,e,i)}}function BQ(n,e,o){var i=bd(n),l={lane:i,action:o,hasEagerState:!1,eagerState:null,next:null};if(YV(n))JV(e,l);else{var c=n.alternate;if(n.lanes===0&&(c===null||c.lanes===0)&&(c=e.lastRenderedReducer,c!==null))try{var g=e.lastRenderedState,v=c(g,o);if(l.hasEagerState=!0,l.eagerState=v,gc(v,g)){var _=e.interleaved;_===null?(l.next=l,lI(e)):(l.next=_.next,_.next=l),e.interleaved=l;return}}catch{}finally{}o=PV(n,e,l,i),o!==null&&(l=H1(),hc(o,n,i,l),ZV(o,e,i))}}function YV(n){var e=n.alternate;return n===ua||e!==null&&e===ua}function JV(n,e){nm=xw=!0;var o=n.pending;o===null?e.next=e:(e.next=o.next,o.next=e),n.pending=e}function ZV(n,e,o){if(o&4194240){var i=e.lanes;i&=n.pendingLanes,o|=i,e.lanes=o,qD(n,o)}}var Sw={readContext:Lu,useCallback:n1,useContext:n1,useEffect:n1,useImperativeHandle:n1,useInsertionEffect:n1,useLayoutEffect:n1,useMemo:n1,useReducer:n1,useRef:n1,useState:n1,useDebugValue:n1,useDeferredValue:n1,useTransition:n1,useMutableSource:n1,useSyncExternalStore:n1,useId:n1,unstable_isNewReconciler:!1},GQ={readContext:Lu,useCallback:function(n,e){return Hc().memoizedState=[n,e===void 0?null:e],n},useContext:Lu,useEffect:ZR,useImperativeHandle:function(n,e,o){return o=o!=null?o.concat([n]):null,T7(4194308,4,jV.bind(null,e,n),o)},useLayoutEffect:function(n,e){return T7(4194308,4,n,e)},useInsertionEffect:function(n,e){return T7(4,2,n,e)},useMemo:function(n,e){var o=Hc();return e=e===void 0?null:e,n=n(),o.memoizedState=[n,e],n},useReducer:function(n,e,o){var i=Hc();return e=o!==void 0?o(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=UQ.bind(null,ua,n),[i.memoizedState,n]},useRef:function(n){var e=Hc();return n={current:n},e.memoizedState=n},useState:JR,useDebugValue:vI,useDeferredValue:function(n){return Hc().memoizedState=n},useTransition:function(){var n=JR(!1),e=n[0];return n=VQ.bind(null,n[1]),Hc().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,o){var i=ua,l=Hc();if(Ks){if(o===void 0)throw Error(Xr(407));o=o()}else{if(o=e(),P2===null)throw Error(Xr(349));Ng&30||bV(i,e,o)}l.memoizedState=o;var c={value:o,getSnapshot:e};return l.queue=c,ZR(VV.bind(null,i,c,n),[n]),i.flags|=2048,Xm(9,FV.bind(null,i,c,o,e),void 0,null),o},useId:function(){var n=Hc(),e=P2.identifierPrefix;if(Ks){var o=ih,i=rh;o=(i&~(1<<32-fc(i)-1)).toString(32)+o,e=":"+e+"R"+o,o=Km++,0<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=g.createElement(o,{is:i.is}):(n=g.createElement(o),o==="select"&&(g=n,i.multiple?g.multiple=!0:i.size&&(g.size=i.size))):n=g.createElementNS(n,o),n[Zc]=e,n[jm]=i,lU(n,e,!1,!1),e.stateNode=n;e:{switch(g=vT(o,i),o){case"dialog":Ls("cancel",n),Ls("close",n),l=i;break;case"iframe":case"object":case"embed":Ls("load",n),l=i;break;case"video":case"audio":for(l=0;lk8&&(e.flags|=128,i=!0,u3(c,!1),e.lanes=4194304)}else{if(!i)if(n=_w(g),n!==null){if(e.flags|=128,i=!0,o=n.updateQueue,o!==null&&(e.updateQueue=o,e.flags|=4),u3(c,!0),c.tail===null&&c.tailMode==="hidden"&&!g.alternate&&!Ks)return r1(e),null}else 2*ja()-c.renderingStartTime>k8&&o!==1073741824&&(e.flags|=128,i=!0,u3(c,!1),e.lanes=4194304);c.isBackwards?(g.sibling=e.child,e.child=g):(o=c.last,o!==null?o.sibling=g:e.child=g,c.last=g)}return c.tail!==null?(e=c.tail,c.rendering=e,c.tail=e.sibling,c.renderingStartTime=ja(),e.sibling=null,o=aa.current,ws(aa,i?o&1|2:o&1),e):(r1(e),null);case 22:case 23:return xI(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?Xl&1073741824&&(r1(e),e.subtreeFlags&6&&(e.flags|=8192)):r1(e),null;case 24:return null;case 25:return null}throw Error(Xr(156,e.tag))}function XQ(n,e){switch(rI(e),e.tag){case 1:return _l(e.type)&&pw(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return m8(),Us(Cl),Us(d1),hI(),n=e.flags,n&65536&&!(n&128)?(e.flags=n&-65537|128,e):null;case 5:return fI(e),null;case 13:if(Us(aa),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(Xr(340));g8()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return Us(aa),null;case 4:return m8(),null;case 10:return aI(e.type._context),null;case 22:case 23:return xI(),null;case 24:return null;default:return null}}var xy=!1,u1=!1,YQ=typeof WeakSet=="function"?WeakSet:Set,bi=null;function D6(n,e){var o=n.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(i){Ta(n,e,i)}else o.current=null}function jT(n,e,o){try{o()}catch(i){Ta(n,e,i)}}var uA=!1;function JQ(n,e){if(DT=fw,n=pV(),tI(n)){if("selectionStart"in n)var o={start:n.selectionStart,end:n.selectionEnd};else e:{o=(o=n.ownerDocument)&&o.defaultView||window;var i=o.getSelection&&o.getSelection();if(i&&i.rangeCount!==0){o=i.anchorNode;var l=i.anchorOffset,c=i.focusNode;i=i.focusOffset;try{o.nodeType,c.nodeType}catch{o=null;break e}var g=0,v=-1,_=-1,T=0,P=0,I=n,R=null;t:for(;;){for(var L;I!==o||l!==0&&I.nodeType!==3||(v=g+l),I!==c||i!==0&&I.nodeType!==3||(_=g+i),I.nodeType===3&&(g+=I.nodeValue.length),(L=I.firstChild)!==null;)R=I,I=L;for(;;){if(I===n)break t;if(R===o&&++T===l&&(v=g),R===c&&++P===i&&(_=g),(L=I.nextSibling)!==null)break;I=R,R=I.parentNode}I=L}o=v===-1||_===-1?null:{start:v,end:_}}else o=null}o=o||{start:0,end:0}}else o=null;for(IT={focusedElem:n,selectionRange:o},fw=!1,bi=e;bi!==null;)if(e=bi,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,bi=n;else for(;bi!==null;){e=bi;try{var V=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(V!==null){var U=V.memoizedProps,j=V.memoizedState,z=e.stateNode,$=z.getSnapshotBeforeUpdate(e.elementType===e.type?U:tc(e.type,U),j);z.__reactInternalSnapshotBeforeUpdate=$}break;case 3:var K=e.stateNode.containerInfo;K.nodeType===1?K.textContent="":K.nodeType===9&&K.documentElement&&K.removeChild(K.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Xr(163))}}catch(X){Ta(e,e.return,X)}if(n=e.sibling,n!==null){n.return=e.return,bi=n;break}bi=e.return}return V=uA,uA=!1,V}function rm(n,e,o){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var l=i=i.next;do{if((l.tag&n)===n){var c=l.destroy;l.destroy=void 0,c!==void 0&&jT(e,o,c)}l=l.next}while(l!==i)}}function Q9(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var o=e=e.next;do{if((o.tag&n)===n){var i=o.create;o.destroy=i()}o=o.next}while(o!==e)}}function zT(n){var e=n.ref;if(e!==null){var o=n.stateNode;switch(n.tag){case 5:n=o;break;default:n=o}typeof e=="function"?e(n):e.current=n}}function fU(n){var e=n.alternate;e!==null&&(n.alternate=null,fU(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[Zc],delete e[jm],delete e[PT],delete e[AQ],delete e[LQ])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function hU(n){return n.tag===5||n.tag===3||n.tag===4}function cA(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||hU(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function HT(n,e,o){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?o.nodeType===8?o.parentNode.insertBefore(n,e):o.insertBefore(n,e):(o.nodeType===8?(e=o.parentNode,e.insertBefore(n,o)):(e=o,e.appendChild(n)),o=o._reactRootContainer,o!=null||e.onclick!==null||(e.onclick=gw));else if(i!==4&&(n=n.child,n!==null))for(HT(n,e,o),n=n.sibling;n!==null;)HT(n,e,o),n=n.sibling}function KT(n,e,o){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?o.insertBefore(n,e):o.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(KT(n,e,o),n=n.sibling;n!==null;)KT(n,e,o),n=n.sibling}var $2=null,nc=!1;function ed(n,e,o){for(o=o.child;o!==null;)dU(n,e,o),o=o.sibling}function dU(n,e,o){if(nf&&typeof nf.onCommitFiberUnmount=="function")try{nf.onCommitFiberUnmount(z9,o)}catch{}switch(o.tag){case 5:u1||D6(o,e);case 6:var i=$2,l=nc;$2=null,ed(n,e,o),$2=i,nc=l,$2!==null&&(nc?(n=$2,o=o.stateNode,n.nodeType===8?n.parentNode.removeChild(o):n.removeChild(o)):$2.removeChild(o.stateNode));break;case 18:$2!==null&&(nc?(n=$2,o=o.stateNode,n.nodeType===8?Wx(n.parentNode,o):n.nodeType===1&&Wx(n,o),Um(n)):Wx($2,o.stateNode));break;case 4:i=$2,l=nc,$2=o.stateNode.containerInfo,nc=!0,ed(n,e,o),$2=i,nc=l;break;case 0:case 11:case 14:case 15:if(!u1&&(i=o.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){l=i=i.next;do{var c=l,g=c.destroy;c=c.tag,g!==void 0&&(c&2||c&4)&&jT(o,e,g),l=l.next}while(l!==i)}ed(n,e,o);break;case 1:if(!u1&&(D6(o,e),i=o.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=o.memoizedProps,i.state=o.memoizedState,i.componentWillUnmount()}catch(v){Ta(o,e,v)}ed(n,e,o);break;case 21:ed(n,e,o);break;case 22:o.mode&1?(u1=(i=u1)||o.memoizedState!==null,ed(n,e,o),u1=i):ed(n,e,o);break;default:ed(n,e,o)}}function fA(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var o=n.stateNode;o===null&&(o=n.stateNode=new YQ),e.forEach(function(i){var l=see.bind(null,n,i);o.has(i)||(o.add(i),i.then(l,l))})}}function Xu(n,e){var o=e.deletions;if(o!==null)for(var i=0;il&&(l=g),i&=~c}if(i=l,i=ja()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*QQ(i/1960))-i,10n?16:n,xd===null)var i=!1;else{if(n=xd,xd=null,Dw=0,Lo&6)throw Error(Xr(331));var l=Lo;for(Lo|=4,bi=n.current;bi!==null;){var c=bi,g=c.child;if(bi.flags&16){var v=c.deletions;if(v!==null){for(var _=0;_ja()-CI?Tg(n,0):wI|=o),xl(n,e)}function CU(n,e){e===0&&(n.mode&1?(e=gy,gy<<=1,!(gy&130023424)&&(gy=4194304)):e=1);var o=H1();n=mh(n,e),n!==null&&(Ov(n,e,o),xl(n,o))}function oee(n){var e=n.memoizedState,o=0;e!==null&&(o=e.retryLane),CU(n,o)}function see(n,e){var o=0;switch(n.tag){case 13:var i=n.stateNode,l=n.memoizedState;l!==null&&(o=l.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(Xr(314))}i!==null&&i.delete(e),CU(n,o)}var _U;_U=function(n,e,o){if(n!==null)if(n.memoizedProps!==e.pendingProps||Cl.current)wl=!0;else{if(!(n.lanes&o)&&!(e.flags&128))return wl=!1,KQ(n,e,o);wl=!!(n.flags&131072)}else wl=!1,Ks&&e.flags&1048576&&EV(e,kw,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;E7(n,e),n=e.pendingProps;var l=d8(e,d1.current);J6(e,o),l=gI(null,e,i,n,l,o);var c=pI();return e.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,_l(i)?(c=!0,mw(e)):c=!1,e.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,uI(e),l.updater=Z9,e.stateNode=l,l._reactInternals=e,FT(e,i,n,o),e=BT(null,e,i,!0,c,o)):(e.tag=0,Ks&&c&&nI(e),$1(null,e,l,o),e=e.child),e;case 16:i=e.elementType;e:{switch(E7(n,e),n=e.pendingProps,l=i._init,i=l(i._payload),e.type=i,l=e.tag=lee(i),n=tc(i,n),l){case 0:e=UT(null,e,i,n,o);break e;case 1:e=sA(null,e,i,n,o);break e;case 11:e=iA(null,e,i,n,o);break e;case 14:e=oA(null,e,i,tc(i.type,n),o);break e}throw Error(Xr(306,i,""))}return e;case 0:return i=e.type,l=e.pendingProps,l=e.elementType===i?l:tc(i,l),UT(n,e,i,l,o);case 1:return i=e.type,l=e.pendingProps,l=e.elementType===i?l:tc(i,l),sA(n,e,i,l,o);case 3:e:{if(oU(e),n===null)throw Error(Xr(387));i=e.pendingProps,c=e.memoizedState,l=c.element,RV(n,e),Cw(e,i,null,o);var g=e.memoizedState;if(i=g.element,c.isDehydrated)if(c={element:i,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},e.updateQueue.baseState=c,e.memoizedState=c,e.flags&256){l=v8(Error(Xr(423)),e),e=aA(n,e,i,o,l);break e}else if(i!==l){l=v8(Error(Xr(424)),e),e=aA(n,e,i,o,l);break e}else for(Ql=Ad(e.stateNode.containerInfo.firstChild),nu=e,Ks=!0,ic=null,o=MV(e,null,i,o),e.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(g8(),i===l){e=vh(n,e,o);break e}$1(n,e,i,o)}e=e.child}return e;case 5:return AV(e),n===null&<(e),i=e.type,l=e.pendingProps,c=n!==null?n.memoizedProps:null,g=l.children,OT(i,l)?g=null:c!==null&&OT(i,c)&&(e.flags|=32),iU(n,e),$1(n,e,g,o),e.child;case 6:return n===null&<(e),null;case 13:return sU(n,e,o);case 4:return cI(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=p8(e,null,i,o):$1(n,e,i,o),e.child;case 11:return i=e.type,l=e.pendingProps,l=e.elementType===i?l:tc(i,l),iA(n,e,i,l,o);case 7:return $1(n,e,e.pendingProps,o),e.child;case 8:return $1(n,e,e.pendingProps.children,o),e.child;case 12:return $1(n,e,e.pendingProps.children,o),e.child;case 10:e:{if(i=e.type._context,l=e.pendingProps,c=e.memoizedProps,g=l.value,ws(yw,i._currentValue),i._currentValue=g,c!==null)if(gc(c.value,g)){if(c.children===l.children&&!Cl.current){e=vh(n,e,o);break e}}else for(c=e.child,c!==null&&(c.return=e);c!==null;){var v=c.dependencies;if(v!==null){g=c.child;for(var _=v.firstContext;_!==null;){if(_.context===i){if(c.tag===1){_=uh(-1,o&-o),_.tag=2;var T=c.updateQueue;if(T!==null){T=T.shared;var P=T.pending;P===null?_.next=_:(_.next=P.next,P.next=_),T.pending=_}}c.lanes|=o,_=c.alternate,_!==null&&(_.lanes|=o),NT(c.return,o,e),v.lanes|=o;break}_=_.next}}else if(c.tag===10)g=c.type===e.type?null:c.child;else if(c.tag===18){if(g=c.return,g===null)throw Error(Xr(341));g.lanes|=o,v=g.alternate,v!==null&&(v.lanes|=o),NT(g,o,e),g=c.sibling}else g=c.child;if(g!==null)g.return=c;else for(g=c;g!==null;){if(g===e){g=null;break}if(c=g.sibling,c!==null){c.return=g.return,g=c;break}g=g.return}c=g}$1(n,e,l.children,o),e=e.child}return e;case 9:return l=e.type,i=e.pendingProps.children,J6(e,o),l=Lu(l),i=i(l),e.flags|=1,$1(n,e,i,o),e.child;case 14:return i=e.type,l=tc(i,e.pendingProps),l=tc(i.type,l),oA(n,e,i,l,o);case 15:return nU(n,e,e.type,e.pendingProps,o);case 17:return i=e.type,l=e.pendingProps,l=e.elementType===i?l:tc(i,l),E7(n,e),e.tag=1,_l(i)?(n=!0,mw(e)):n=!1,J6(e,o),QV(e,i,l),FT(e,i,l,o),BT(null,e,i,!0,n,o);case 19:return aU(n,e,o);case 22:return rU(n,e,o)}throw Error(Xr(156,e.tag))};function xU(n,e){return YF(n,e)}function aee(n,e,o,i){this.tag=n,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mu(n,e,o,i){return new aee(n,e,o,i)}function TI(n){return n=n.prototype,!(!n||!n.isReactComponent)}function lee(n){if(typeof n=="function")return TI(n)?1:0;if(n!=null){if(n=n.$$typeof,n===jD)return 11;if(n===zD)return 14}return 2}function Fd(n,e){var o=n.alternate;return o===null?(o=Mu(n.tag,e,n.key,n.mode),o.elementType=n.elementType,o.type=n.type,o.stateNode=n.stateNode,o.alternate=n,n.alternate=o):(o.pendingProps=e,o.type=n.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=n.flags&14680064,o.childLanes=n.childLanes,o.lanes=n.lanes,o.child=n.child,o.memoizedProps=n.memoizedProps,o.memoizedState=n.memoizedState,o.updateQueue=n.updateQueue,e=n.dependencies,o.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},o.sibling=n.sibling,o.index=n.index,o.ref=n.ref,o}function O7(n,e,o,i,l,c){var g=2;if(i=n,typeof n=="function")TI(n)&&(g=1);else if(typeof n=="string")g=5;else e:switch(n){case k6:return Eg(o.children,l,c,e);case $D:g=8,l|=8;break;case aT:return n=Mu(12,o,e,l|2),n.elementType=aT,n.lanes=c,n;case lT:return n=Mu(13,o,e,l),n.elementType=lT,n.lanes=c,n;case uT:return n=Mu(19,o,e,l),n.elementType=uT,n.lanes=c,n;case AF:return tC(o,l,c,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case PF:g=10;break e;case RF:g=9;break e;case jD:g=11;break e;case zD:g=14;break e;case hd:g=16,i=null;break e}throw Error(Xr(130,n==null?n:typeof n,""))}return e=Mu(g,o,e,l),e.elementType=n,e.type=i,e.lanes=c,e}function Eg(n,e,o,i){return n=Mu(7,n,i,e),n.lanes=o,n}function tC(n,e,o,i){return n=Mu(22,n,i,e),n.elementType=AF,n.lanes=o,n.stateNode={isHidden:!1},n}function Yx(n,e,o){return n=Mu(6,n,null,e),n.lanes=o,n}function Jx(n,e,o){return e=Mu(4,n.children!==null?n.children:[],n.key,e),e.lanes=o,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function uee(n,e,o,i,l){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Px(0),this.expirationTimes=Px(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Px(0),this.identifierPrefix=i,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function EI(n,e,o,i,l,c,g,v,_){return n=new uee(n,e,o,v,_),e===1?(e=1,c===!0&&(e|=8)):e=0,c=Mu(3,null,null,e),n.current=c,c.stateNode=n,c.memoizedState={element:i,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},uI(c),n}function cee(n,e,o){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(DU)}catch(n){console.error(n)}}DU(),DF.exports=lu;var pee=DF.exports,ZT,yA=pee;ZT=yA.createRoot,yA.hydrateRoot;var vr;(function(n){n.ERROR_EVENT="CORNERSTONE_ERROR",n.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",n.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",n.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",n.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",n.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",n.PRESET_MODIFIED="CORNERSTONE_VIEWPORT_RENDERING_PRESET_MODIFIED",n.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",n.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",n.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",n.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",n.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",n.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",n.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",n.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",n.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",n.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",n.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",n.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",n.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",n.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",n.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",n.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",n.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",n.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",n.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",n.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",n.VIEWPORT_NEW_IMAGE_SET="CORNERSTONE_VIEWPORT_NEW_IMAGE_SET",n.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",n.STACK_SCROLL_OUT_OF_BOUNDS="STACK_SCROLL_OUT_OF_BOUNDS",n.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",n.GEOMETRY_CACHE_GEOMETRY_REMOVED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_REMOVED",n.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS="VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS",n.VOLUME_VIEWPORT_SCROLL="VOLUME_VIEWPORT_SCROLL",n.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",n.WEB_WORKER_PROGRESS="CORNERSTONE_WEB_WORKER_PROGRESS",n.COLORMAP_MODIFIED="CORNERSTONE_COLORMAP_MODIFIED",n.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED="DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED",n.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED="DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED",n.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED="DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED",n.DYNAMIC_VOLUME_TIME_POINT_LOADED="DYNAMIC_VOLUME_TIME_POINT_LOADED",n.GEOMETRY_LOADED="GEOMETRY_LOADED",n.GEOMETRY_LOAD_PROGRESS="GEOMETRY_LOAD_PROGRESS",n.GEOMETRY_LOADED_FAILED="GEOMETRY_LOADED_FAILED",n.ACTORS_CHANGED="CORNERSTONE_ACTORS_CHANGED"})(vr||(vr={}));var R0;(function(n){n.Interaction="interaction",n.Thumbnail="thumbnail",n.Prefetch="prefetch",n.Compute="compute"})(R0||(R0={}));var fs;(function(n){n.STACK="stack",n.ORTHOGRAPHIC="orthographic",n.PERSPECTIVE="perspective",n.VOLUME_3D="volume3d",n.VIDEO="video",n.WHOLE_SLIDE="wholeSlide"})(fs||(fs={}));var oh;(function(n){n[n.NEAREST=0]="NEAREST",n[n.LINEAR=1]="LINEAR",n[n.FAST_LINEAR=2]="FAST_LINEAR"})(oh||(oh={}));const M7={COMPOSITE_BLEND:0,MAXIMUM_INTENSITY_BLEND:1,MINIMUM_INTENSITY_BLEND:2,AVERAGE_INTENSITY_BLEND:3,ADDITIVE_INTENSITY_BLEND:4,RADON_TRANSFORM_BLEND:5,LABELMAP_EDGE_PROJECTION_BLEND:6},mee={OFF:0,NORMALIZED:1,RAW:2};var IU={BlendMode:M7,FilterMode:mee};const{BlendMode:f3}=IU;var of;(function(n){n[n.COMPOSITE=f3.COMPOSITE_BLEND]="COMPOSITE",n[n.MAXIMUM_INTENSITY_BLEND=f3.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",n[n.MINIMUM_INTENSITY_BLEND=f3.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",n[n.AVERAGE_INTENSITY_BLEND=f3.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND",n[n.LABELMAP_EDGE_PROJECTION_BLEND=f3.LABELMAP_EDGE_PROJECTION_BLEND]="LABELMAP_EDGE_PROJECTION_BLEND"})(of||(of={}));var Vg;(function(n){n.AXIAL="axial",n.CORONAL="coronal",n.SAGITTAL="sagittal",n.ACQUISITION="acquisition"})(Vg||(Vg={}));var Mw;(function(n){n.CONTOUR="CONTOUR",n.SURFACE="SURFACE",n.MESH="MESH"})(Mw||(Mw={}));var QT;(function(n){n.CLOSED_PLANAR="CLOSED_PLANAR",n.OPEN_PLANAR="OPEN_PLANAR"})(QT||(QT={}));const vee=QT;var eE;(function(n){n.PLY="PLY",n.STL="STL",n.OBJ="OBJ",n.VTP="VTP"})(eE||(eE={}));const kee=eE;var j2;(function(n){n.LINEAR="LINEAR",n.SAMPLED_SIGMOID="SIGMOID",n.LINEAR_EXACT="LINEAR_EXACT"})(j2||(j2={}));var tE;(function(n){n.SUM="SUM",n.AVERAGE="AVERAGE",n.SUBTRACT="SUBTRACT"})(tE||(tE={}));const yee=tE;var oc;(function(n){n.NOT_APPLICABLE="",n.ERMF="ERMF",n.USER="User",n.PROJECTION="Proj",n.REGION="Region",n.ERROR="Error",n.UNCALIBRATED="Uncalibrated",n.CALIBRATED="Calibrated",n.UNKNOWN="Unknown"})(oc||(oc={}));var l1;(function(n){n.NO_DATA="noData",n.LOADING="loading",n.PRE_RENDER="preRender",n.RESIZE="resize",n.RENDERED="rendered"})(l1||(l1={}));var eu;(function(n){n[n.FAR_REPLICATE=1]="FAR_REPLICATE",n[n.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",n[n.SUBRESOLUTION=6]="SUBRESOLUTION",n[n.LOSSY=7]="LOSSY",n[n.FULL_RESOLUTION=8]="FULL_RESOLUTION"})(eu||(eu={}));var Jm;(function(n){n.FRAME="f",n.SECOND="s"})(Jm||(Jm={}));const wee=Object.freeze(Object.defineProperty({__proto__:null,get SpeedUnit(){return Jm}},Symbol.toStringTag,{value:"Module"}));var z1;(function(n){n.CALIBRATION="calibrationModule",n.CINE="cineModule",n.GENERAL_IMAGE="generalImageModule",n.GENERAL_SERIES="generalSeriesModule",n.GENERAL_STUDY="generalStudyModule",n.IMAGE_PIXEL="imagePixelModule",n.IMAGE_PLANE="imagePlaneModule",n.IMAGE_URL="imageUrlModule",n.MODALITY_LUT="modalityLutModule",n.MULTIFRAME="multiframeModule",n.NM_MULTIFRAME_GEOMETRY="nmMultiframeGeometryModule",n.OVERLAY_PLANE="overlayPlaneModule",n.PATIENT="patientModule",n.PATIENT_STUDY="patientStudyModule",n.PET_IMAGE="petImageModule",n.PET_ISOTOPE="petIsotopeModule",n.PET_SERIES="petSeriesModule",n.SOP_COMMON="sopCommonModule",n.ULTRASOUND_ENHANCED_REGION="ultrasoundEnhancedRegionModule",n.VOI_LUT="voiLutModule",n.WADO_WEB_CLIENT="wadoWebClient"})(z1||(z1={}));var Q6;(function(n){n.SUM="SUM",n.SUBTRACT="SUBTRACT",n.AVERAGE="AVERAGE"})(Q6||(Q6={}));var Pw;(function(n){n.RLE="RLE",n.Volume="Volume"})(Pw||(Pw={}));const bu=Object.freeze(Object.defineProperty({__proto__:null,BlendModes:of,CalibrationTypes:oc,ContourType:vee,DynamicOperatorType:yee,Events:vr,get GenerateImageType(){return Q6},GeometryType:Mw,ImageQualityStatus:eu,InterpolationType:oh,MeshType:kee,MetadataModules:z1,OrientationAxis:Vg,RequestType:R0,VOILUTFunctionType:j2,VideoEnums:wee,ViewportStatus:l1,ViewportType:fs,VoxelManagerEnum:Pw},Symbol.toStringTag,{value:"Module"})),nE={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}},oa={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(oa);const ou=.001;function OU(n){const e=Object.getOwnPropertyNames(n);for(const o of e){const i=n[o];i&&typeof i=="object"&&OU(i)}return Object.freeze(n)}const Cee={axial:{viewPlaneNormal:[0,0,-1],viewUp:[0,-1,0],viewRight:[1,0,0]},sagittal:{viewPlaneNormal:[1,0,0],viewUp:[0,0,1],viewRight:[0,1,0]},coronal:{viewPlaneNormal:[0,-1,0],viewUp:[0,0,1],viewRight:[1,0,0]}},Sd=OU(Cee),MU=[{name:"CT-AAA",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-AAA2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bones",gradientOpacity:"4 0 1 985.12 1",specularPower:"1",scalarOpacity:"8 -1000 0 152.19 0 278.93 0.190476 952 0.2",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-Cardiac",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Contrast-Enhanced",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Vessels",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-2",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cropped-Volume-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -451 0 -450 1 1050 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Fat",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886",diffuse:"1",interpolation:"1"},{name:"CT-Liver-Vasculature",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Lung",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -637.62 0 700 1 3071 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Muscle",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Pulmonary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Soft-Tissue",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -167.01 0 -160 1 240 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Air",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ",diffuse:"0.9",interpolation:"1"},{name:"MR-Angio",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-Default",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"8 0 0 98.3725 0 416.637 1 2800 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-T2-Brain",gradientOpacity:"4 0 1 160.25 1",specularPower:"40",scalarOpacity:"10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1",diffuse:"0.6",interpolation:"1"},{name:"DTI-FA-Brain",gradientOpacity:"4 0 1 0.9950 1",specularPower:"40",scalarOpacity:"16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0",diffuse:"0.9",interpolation:"1"}],_ee={slicer3D:[160/255,164/255,217/255]},ep=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_COLORS:_ee,CPU_COLORMAPS:nE,EPSILON:ou,MPR_CAMERA_VALUES:Sd,RENDERING_DEFAULTS:oa,VIEWPORT_PRESETS:MU},Symbol.toStringTag,{value:"Module"})),h3={},Zm={get:n=>h3[n],set:n=>{const e=n.id;h3[e]=n},delete:n=>delete h3[n],getAll:()=>{const e=Object.keys(h3).map(o=>h3[o]);return e.sort((o,i)=>o.id[0]==="_"&&i.id[0]!=="_"?1:o.id[0]!=="_"&&i.id[0]==="_"?-1:0),e}};class xee{constructor(){this.listeners={},this.debouncedListeners={}}reset(){this.listeners={},this.debouncedListeners={}}addEventListenerOnce(e,o){const i=l=>{this.removeEventListener(e,i),o.call(this,l)};this.addEventListener(e,i)}addEventListener(e,o){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].indexOf(o)===-1&&this.listeners[e].push(o)}addEventListenerDebounced(e,o,i){this.debouncedListeners[e]=this.debouncedListeners[e]||{};const l=this.debouncedListeners[e];if(!l[o]){const c=g=>{l[o]&&clearTimeout(l[o].timeoutId),l[o].timeoutId=setTimeout(()=>{o.call(this,g)},i)};l[o]={original:o,handle:c,timeoutId:null},this.addEventListener(e,c)}}removeEventListenerDebounced(e,o){var i;if((i=this.debouncedListeners[e])!=null&&i[o]){const l=this.debouncedListeners[e][o];this.removeEventListener(e,l.handle),clearTimeout(l.timeoutId),delete this.debouncedListeners[e][o]}}removeEventListener(e,o){if(!this.listeners[e])return;const i=this.listeners[e],l=i.length;for(let c=0;c(n^crypto.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16))}function Or(n=pr,e,o=null){if(!e)throw new Error("Event type was not defined");const i=new CustomEvent(e,{detail:o,cancelable:!0});return n==null?void 0:n.dispatchEvent(i)}var See=function n(e,o){if(e===o)return!0;if(e&&o&&typeof e=="object"&&typeof o=="object"){if(e.constructor!==o.constructor)return!1;var i,l,c;if(Array.isArray(e)){if(i=e.length,i!=o.length)return!1;for(l=i;l--!==0;)if(!n(e[l],o[l]))return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===o.toString();if(c=Object.keys(e),i=c.length,i!==Object.keys(o).length)return!1;for(l=i;l--!==0;)if(!Object.prototype.hasOwnProperty.call(o,c[l]))return!1;for(l=i;l--!==0;){var g=c[l];if(!n(e[g],o[g]))return!1}return!0}return e!==e&&o!==o};const MI=yf(See);var wA=Object.prototype.toString,PU=function(e){var o=wA.call(e),i=o==="[object Arguments]";return i||(i=o!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&wA.call(e.callee)==="[object Function]"),i},Zx,CA;function Tee(){if(CA)return Zx;CA=1;var n;if(!Object.keys){var e=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=PU,l=Object.prototype.propertyIsEnumerable,c=!l.call({toString:null},"toString"),g=l.call(function(){},"prototype"),v=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=function(R){var L=R.constructor;return L&&L.prototype===R},T={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},P=function(){if(typeof window>"u")return!1;for(var R in window)try{if(!T["$"+R]&&e.call(window,R)&&window[R]!==null&&typeof window[R]=="object")try{_(window[R])}catch{return!0}}catch{return!0}return!1}(),I=function(R){if(typeof window>"u"||!P)return _(R);try{return _(R)}catch{return!1}};n=function(L){var V=L!==null&&typeof L=="object",U=o.call(L)==="[object Function]",j=i(L),z=V&&o.call(L)==="[object String]",$=[];if(!V&&!U&&!j)throw new TypeError("Object.keys called on a non-object");var K=g&&U;if(z&&L.length>0&&!e.call(L,0))for(var X=0;X0)for(var ee=0;ee3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new e6("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new e6("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new e6("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new e6("`loose`, if provided, must be a boolean");var l=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,g=arguments.length>5?arguments[5]:null,v=arguments.length>6?arguments[6]:!1,_=!!TA&&TA(e,o);if(SA)SA(e,o,{configurable:g===null&&_?_.configurable:!g,enumerable:l===null&&_?_.enumerable:!l,value:i,writable:c===null&&_?_.writable:!c});else if(v||!l&&!c&&!g)e[o]=i;else throw new Aee("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},rE=RU,AU=function(){return!!rE};AU.hasArrayLengthDefineBug=function(){if(!rE)return null;try{return rE([],"length",{value:1}).length!==1}catch{return!0}};var Nee=AU,bee=Iee,Fee=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",Vee=Object.prototype.toString,Uee=Array.prototype.concat,EA=Lee,Bee=function(n){return typeof n=="function"&&Vee.call(n)==="[object Function]"},LU=Nee(),Gee=function(n,e,o,i){if(e in n){if(i===!0){if(n[e]===o)return}else if(!Bee(i)||!i())return}LU?EA(n,e,o,!0):EA(n,e,o)},NU=function(n,e){var o=arguments.length>2?arguments[2]:{},i=bee(e);Fee&&(i=Uee.call(i,Object.getOwnPropertySymbols(e)));for(var l=0;lnull};function uc(n){if(n==null||n.isA)return n;if(!n.vtkClass)return sc.console&&sc.console.error&&sc.console.error("Invalid VTK object"),null;const e=GU[n.vtkClass];if(!e)return sc.console&&sc.console.error&&sc.console.error(`No vtk class found for Object of type ${n.vtkClass}`),null;const o={...n};Object.keys(o).forEach(l=>{o[l]&&typeof o[l]=="object"&&o[l].vtkClass&&(o[l]=uc(o[l]))});const i=e(o);return i&&i.modified&&i.modified(),i}function Zee(n,e){GU[n]=e}uc.register=Zee;class Qx extends Array{push(){for(let e=0;e{$U[n]=hg});sc.console=console.hasOwnProperty("log")?console:$U;const jd={debug:hg,error:sc.console.error||hg,info:sc.console.info||hg,log:sc.console.log||hg,warn:sc.console.warn||hg};function jU(n,e){jd[n]&&(jd[n]=e||hg)}function zU(){jd.log(...arguments)}function HU(){jd.info(...arguments)}function Rw(){jd.debug(...arguments)}function X0(){jd.error(...arguments)}function sC(){jd.warn(...arguments)}const DA={};function KU(n){DA[n]||(jd.error(n),DA[n]=!0)}const g1=Object.create(null);g1.Float32Array=Float32Array;g1.Float64Array=Float64Array;g1.Uint8Array=Uint8Array;g1.Int8Array=Int8Array;g1.Uint16Array=Uint16Array;g1.Int16Array=Int16Array;g1.Uint32Array=Uint32Array;g1.Int32Array=Int32Array;g1.Uint8ClampedArray=Uint8ClampedArray;try{g1.BigInt64Array=BigInt64Array,g1.BigUint64Array=BigUint64Array}catch{}function B8(n){for(var e=arguments.length,o=new Array(e>1?e-1:0),i=1;i1?e-1:0),i=1;i1&&arguments[1]!==void 0?arguments[1]:2,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;const i=["TB","GB","MB","KB"];let l=Number(n),c="B";for(;l>o;)l/=o,c=i.pop();return`${l.toFixed(e)} ${c}`}function YU(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:" ";const o=[];let i=n;for(;i>1e3;)o.push(`000${i%1e3}`.slice(-3)),i=Math.floor(i/1e3);return i>0&&o.push(i),o.reverse(),o.join(e)}function JU(n){Object.keys(n).forEach(e=>{Array.isArray(n[e])&&(n[e]=[].concat(n[e]))})}function tte(n){return Object.values(g1).some(e=>n instanceof e)}function nte(n,e){if(n===e)return!0;if(Array.isArray(n)&&Array.isArray(e)){if(n.length!==e.length)return!1;for(let o=0;on[o]===e)}function ZU(n){return n&&n.isA?n.getState():n}function PI(n){setTimeout(n,0)}function QU(n,e){const o=performance.now();n.finally(()=>{const i=performance.now()-o;e(i)})}function _s(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};JU(e);const o=[];if(Number.isInteger(e.mtime)||(e.mtime=++iE),!("classHierarchy"in e))e.classHierarchy=new Qx("vtkObject");else if(!(e.classHierarchy instanceof Qx)){const c=new Qx;for(let g=0;g!!e.deleted,n.modified=c=>{if(e.deleted){X0("instance deleted - cannot call any method");return}c&&cg&&g(n)))},n.onModified=c=>{if(e.deleted)return X0("instance deleted - cannot call any method"),null;const g=o.length;return o.push(c),l(g)},n.getMTime=()=>e.mtime,n.isA=c=>{let g=e.classHierarchy.length;for(;g--;)if(e.classHierarchy[g]===c)return!0;return!1},n.getClassName=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.classHierarchy[e.classHierarchy.length-1-c]},n.set=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,_=!1;return Object.keys(c).forEach(T=>{const P=v?null:n[`set${lC(T)}`];P&&Array.isArray(c[T])&&P.length>1?_=P(...c[T])||_:P?_=P(c[T])||_:(["mtime"].indexOf(T)===-1&&!g&&sC(`Warning: Set value to model directly ${T}, ${c[T]}`),_=e[T]!==c[T]||_,e[T]=c[T])}),_},n.get=function(){for(var c=arguments.length,g=new Array(c),v=0;v{_[T]=e[T]}),_},n.getReferenceByName=c=>e[c],n.delete=()=>{Object.keys(e).forEach(c=>delete e[c]),o.forEach((c,g)=>i(g)),e.deleted=!0},n.getState=()=>{if(e.deleted)return null;const c={...e,vtkClass:n.getClassName()};Object.keys(c).forEach(v=>{c[v]===null||c[v]===void 0||v[0]==="_"?delete c[v]:c[v].isA?c[v]=c[v].getState():Array.isArray(c[v])?c[v]=c[v].map(ZU):tte(c[v])&&(c[v]=Array.from(c[v]))});const g={};return Object.keys(c).sort().forEach(v=>{g[v]=c[v]}),g.mtime&&delete g.mtime,g},n.shallowCopy=function(c){let g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(c.getClassName()!==n.getClassName())throw new Error(`Cannot ShallowCopy ${c.getClassName()} into ${n.getClassName()}`);const v=c.get(),_=Object.keys(e).sort();Object.keys(v).sort().forEach(P=>{const I=_.indexOf(P);I===-1?g&&Rw(`add ${P} in shallowCopy`):_.splice(I,1),e[P]=v[P]}),_.length&&g&&Rw(`Untouched keys: ${_.join(", ")}`),n.modified()},n.toJSON=function(){return n.getState()},n}const ite={object(n,e,o){return function(){return{...e[o.name]}}}};function el(n,e,o){o.forEach(i=>{if(typeof i=="object"){const l=ite[i.type];l?n[`get${Da(i.name)}`]=l(n,e,i):n[`get${Da(i.name)}`]=()=>e[i.name]}else n[`get${Da(i)}`]=()=>e[i]})}const eB={enum(n,e,o){const i=`_on${Da(o.name)}Changed`;return l=>{var c;if(typeof l=="string"){if(o.enum[l]!==void 0)return e[o.name]!==o.enum[l]?(e[o.name]=o.enum[l],n.modified(),!0):!1;throw X0(`Set Enum with invalid argument ${o}, ${l}`),new RangeError("Set Enum with invalid string argument")}if(typeof l=="number"){if(e[o.name]!==l){if(Object.keys(o.enum).map(g=>o.enum[g]).indexOf(l)!==-1){const g=e[o.name];return e[o.name]=l,(c=e[i])==null||c.call(e,n,e,l,g),n.modified(),!0}throw X0(`Set Enum outside numeric range ${o}, ${l}`),new RangeError("Set Enum outside numeric range")}return!1}throw X0(`Set Enum with invalid argument (String/Number) ${o}, ${l}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(n,e,o){var l;((l=o.params)==null?void 0:l.length)===1&&sC('Setter of type "object" with a single "param" field is not supported');const i=`_on${Da(o.name)}Changed`;return function(){var T,P;for(var c=arguments.length,g=new Array(c),v=0;v1&&((T=o.params)!=null&&T.length)?_=o.params.reduce((I,R,L)=>Object.assign(I,{[R]:g[L]}),{}):_=g[0],!MI(e[o.name],_)){const I=e[o.name];return e[o.name]=_,(P=e[i])==null||P.call(e,n,e,_,I),n.modified(),!0}return!1}}};function IA(n){if(typeof n=="object"){const e=eB[n.type];if(e)return(o,i)=>e(o,i,n);throw X0(`No setter for field ${n}`),new TypeError("No setter for field")}return function(o,i){const l=`_on${Da(n)}Changed`;return function(g){var v;if(i.deleted)return X0("instance deleted - cannot call any method"),!1;if(i[n]!==g){const _=i[n.name];return i[n]=g,(v=i[l])==null||v.call(i,o,i,g,_),o.modified(),!0}return!1}}}function Av(n,e,o){o.forEach(i=>{typeof i=="object"?n[`set${Da(i.name)}`]=IA(i)(n,e):n[`set${Da(i)}`]=IA(i)(n,e)})}function s2(n,e,o){el(n,e,o),Av(n,e,o)}function G8(n,e,o){o.forEach(i=>{n[`get${Da(i)}`]=()=>e[i]?Array.from(e[i]):e[i],n[`get${Da(i)}ByReference`]=()=>e[i]})}function RI(n,e,o,i){let l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;o.forEach(c=>{if(e[c]&&i&&e[c].length!==i)throw new RangeError(`Invalid initial number of values for array (${c})`);const g=`_on${Da(c)}Changed`;n[`set${Da(c)}`]=function(){var L;if(e.deleted)return X0("instance deleted - cannot call any method"),!1;for(var v=arguments.length,_=new Array(v),T=0;T=0)&&(P=P[0],R=!0),P==null)I=e[c]!==P;else{if(i&&P.length!==i)if(P.length{const _=e[c];v.forEach((T,P)=>{_[P]=T})}})}function AI(n,e,o,i){let l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;G8(n,e,o),RI(n,e,o,i,l)}function Lv(n,e,o){for(let i=0;i1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){X0("instance deleted - cannot call any method");return}if(V>=e.numberOfInputs){X0(`algorithm ${n.getClassName()} only has ${e.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(e.inputData[V]!==L||e.inputConnection[V])&&(e.inputData[V]=L,e.inputConnection[V]=null,n.modified&&n.modified())}function c(){let L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[L]&&(e.inputData[L]=e.inputConnection[L]()),e.inputData[L]}function g(L){let V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){X0("instance deleted - cannot call any method");return}if(V>=e.numberOfInputs){let U=`algorithm ${n.getClassName()} only has `;U+=`${e.numberOfInputs}`,U+=" input ports. To add more input ports, use addInputConnection()",X0(U);return}e.inputData[V]=null,e.inputConnection[V]=L}function v(){let L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[L]}function _(){let L=e.numberOfInputs;for(;L&&!e.inputData[L-1]&&!e.inputConnection[L-1];)L--;return L===e.numberOfInputs&&e.numberOfInputs++,L}function T(L){if(e.deleted){X0("instance deleted - cannot call any method");return}g(L,_())}function P(L){if(e.deleted){X0("instance deleted - cannot call any method");return}l(L,_())}function I(){let L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.deleted?(X0("instance deleted - cannot call any method"),null):(n.shouldUpdate()&&n.update(),e.output[L])}n.shouldUpdate=()=>{var j,z;const L=n.getMTime();let V=1/0,U=i;for(;U--;){if(!e.output[U]||e.output[U].isDeleted())return!0;const $=e.output[U].getMTime();if($V)return!0;return!1};function R(){let L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const V=()=>I(L);return V.filter=n,V}if(e.numberOfInputs){let L=e.numberOfInputs;for(;L--;)e.inputData.push(null),e.inputConnection.push(null);n.setInputData=l,n.setInputConnection=g,n.addInputData=P,n.addInputConnection=T,n.getInputData=c,n.getInputConnection=v}i&&(n.getOutputData=I,n.getOutputPort=R),n.update=()=>{const L=[];if(e.numberOfInputs){let V=0;for(;Ve.numberOfInputs,n.getNumberOfOutputPorts=()=>i||e.output.length,n.getInputArrayToProcess=L=>{const V=e.inputArrayToProcess[L],U=e.inputData[L];return V&&U?U[`get${V.fieldAssociation}`]().getArray(V.arrayName):null},n.setInputArrayToProcess=function(L,V,U){let j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Scalars";for(;e.inputArrayToProcess.lengthI.apply(n,arguments),1-R);else if(I.apply(n,arguments)===NI)break}}}n[`invoke${Da(o)}`]=_,n[`on${Da(o)}`]=function(T){let P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!T.apply)return console.error(`Invalid callback for event ${o}`),null;if(e.deleted)return X0("instance deleted - cannot call any method"),null;const I=c++;return i.push([I,T,P]),i.sort((R,L)=>L[2]-R[2]),v(I)},n.delete=()=>{l(),i.forEach(T=>{let[P]=T;return g(P)})}}function as(n,e){const o=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const l={},c={};return n(c,l,i),Object.freeze(c)};return e&&uc.register(e,o),o}function Nv(){for(var n=arguments.length,e=new Array(n),o=0;o!!g).map(g=>g(...l))}}function bI(n){return n&&n.isA&&n.isA("vtkObject")}function Aw(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(bI(n)){if(i.indexOf(n)>=0)return o;i.push(n);const l=e(n);l!==void 0&&o.push(l);const c=n.get();Object.keys(c).forEach(g=>{const v=c[g];Array.isArray(v)?v.forEach(_=>{Aw(_,e,o,i)}):Aw(v,e,o,i)})}return o}function nB(n,e,o){var i=this;let l;const c=function(){for(var g=arguments.length,v=new Array(g),_=0;_{l=null,o||n.apply(T,v)},I=o&&!l;clearTimeout(l),l=setTimeout(P,e),I&&n.apply(T,v)};return c.cancel=()=>clearTimeout(l),c}function rB(n,e){let o=!1,i=null;function l(){o=!1,i!==null&&(c(...i),i=null)}function c(){for(var g=arguments.length,v=new Array(g),_=0;_2&&arguments[2]!==void 0?arguments[2]:{};e.keystore=Object.assign(e.keystore||{},o),n.setKey=(i,l)=>{e.keystore[i]=l},n.getKey=i=>e.keystore[i],n.getAllKeys=()=>Object.keys(e.keystore),n.deleteKey=i=>delete e.keystore[i],n.clearKeystore=()=>n.getAllKeys().forEach(i=>delete e.keystore[i])}let ote=1;const Ey="__root__";function iB(n,e){FI(n,e);const o=n.delete;e.proxyId=`${ote++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),el(n,e,["proxyId","proxyGroup","proxyName"]),s2(n,e,["proxyManager"]);const i={},l={};function c(T,P){l[P]||(l[P]=[]);const I=l[P];for(let R=0;R{e.ui=JSON.parse(JSON.stringify(T||[])),Object.keys(i).forEach(P=>delete i[P]),Object.keys(l).forEach(P=>delete l[P]),c(e.ui,Ey),n.modified()};function g(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ey;return l[T]}n.updateProxyProperty=(T,P)=>{const I=i[T];I?Object.assign(I,P):i[T]={...P}},n.activate=()=>{if(e.proxyManager){const T=`setActive${Da(n.getProxyGroup().slice(0,-1))}`;e.proxyManager[T]&&e.proxyManager[T](n)}},e.propertyLinkSubscribers={},n.registerPropertyLinkForGC=(T,P)=>{P in e.propertyLinkSubscribers||(e.propertyLinkSubscribers[P]=[]),e.propertyLinkSubscribers[P].push(T)},n.gcPropertyLinks=T=>{const P=e.propertyLinkSubscribers[T]||[];for(;P.length;)P.pop().unbind(n)},e.propertyLinkMap={},n.getPropertyLink=function(T){let P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.propertyLinkMap[T])return e.propertyLinkMap[T];let I=null;const R=[];let L=0,V=!1;function U(X){let ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(V)return null;const ne=[];let le=null;for(L=R.length;L--;){const ge=R[L];ge.instance===X?le=ge:ne.push(ge)}if(!le)return null;const ce=le.instance[`get${Da(le.propertyName)}`]();if(!nte(ce,I)||ee){for(I=ce,V=!0;ne.length;){const ge=ne.pop();ge.instance.set({[ge.propertyName]:I})}V=!1}return e.propertyLinkMap[T].persistent&&(e.propertyLinkMap[T].value=ce),ce}function j(X,ee){const ne=[];for(L=R.length;L--;){const le=R[L];le.instance===X&&(le.propertyName===ee||ee===void 0)&&(le.subscription.unsubscribe(),ne.push(L))}for(;ne.length;)R.splice(ne.pop(),1)}function z(X,ee){let ne=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const le=X.onModified(U),ce=R[0];return R.push({instance:X,propertyName:ee,subscription:le}),ne&&(e.propertyLinkMap[T].persistent&&e.propertyLinkMap[T].value!==void 0?X.set({[ee]:e.propertyLinkMap[T].value}):ce&&U(ce.instance,!0)),{unsubscribe:()=>j(X,ee)}}function $(){for(;R.length;)R.pop().subscription.unsubscribe()}const K={bind:z,unbind:j,unsubscribe:$,persistent:P};return e.propertyLinkMap[T]=K,K};function v(){let T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ey;const P=[],I=e.proxyId,R=g(T)||[];for(let L=0;Lv().map(T=>T.name),n.getPropertyByName=T=>v().find(P=>P.name===T),n.getPropertyDomainByName=T=>(i[T]||{}).domain,n.getProxySection=()=>({id:e.proxyId,name:e.proxyGroup,ui:e.ui,properties:v()}),n.delete=()=>{const T=Object.keys(e.propertyLinkMap);let P=T.length;for(;P--;)e.propertyLinkMap[T[P]].unsubscribe();Object.keys(e.propertyLinkSubscribers).forEach(n.gcPropertyLinks),o()},n.getState=()=>null;function _(){if(e.links)for(let T=0;T{for(;l.length;)l.pop().unsubscribe();i()}}function sB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};e.this=n;function l(v){const _=Object.keys(v);let T=_.length;for(;T--;){const P=_[T];e[P].set(v[P])}}const c=Object.keys(i);let g=c.length;for(;g--;){const v=c[g];e[v]=i[v];const _=o[v];n[`set${Da(v)}`]=T=>{if(T!==e[v]){e[v]=T;const P=_[T];l(P),n.modified()}}}c.length&&el(n,e,c)}const OA=10,MA=40,PA=800;function aB(n){let e=0,o=0,i=0,l=0;return"detail"in n&&(o=n.detail),"wheelDelta"in n&&(o=-n.wheelDelta/120),"wheelDeltaY"in n&&(o=-n.wheelDeltaY/120),"wheelDeltaX"in n&&(e=-n.wheelDeltaX/120),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(e=o,o=0),i=e*OA,l=o*OA,"deltaY"in n&&(l=n.deltaY),"deltaX"in n&&(i=n.deltaX),(i||l)&&n.deltaMode&&(n.deltaMode===1?(i*=MA,l*=MA):(i*=PA,l*=PA)),i&&!e&&(e=i<1?-1:1),l&&!o&&(o=l<1?-1:1),{spinX:e,spinY:o||e,pixelX:i,pixelY:l||i}}var At={algo:LI,capitalize:lC,chain:Nv,debounce:nB,enumToString:rte,event:tB,EVENT_ABORT:NI,formatBytesToProperUnit:XU,formatNumbersWithThousandSeparator:YU,get:el,getArray:G8,getCurrentGlobalMTime:Qee,getStateArrayMapFunc:ZU,isVtkObject:bI,keystore:FI,measurePromiseExecution:QU,moveToProtected:Lv,newInstance:as,newTypedArray:B8,newTypedArrayFrom:aC,normalizeWheel:aB,obj:_s,proxy:iB,proxyPropertyMapping:oB,proxyPropertyState:sB,safeArrays:JU,set:Av,setArray:RI,setGet:s2,setGetArray:AI,setImmediate:PI,setLoggerFunction:jU,throttle:rB,traverseInstanceTree:Aw,TYPED_ARRAYS:g1,uncapitalize:qU,VOID:WU,vtkDebugMacro:Rw,vtkErrorMacro:X0,vtkInfoMacro:HU,vtkLogMacro:zU,vtkOnceErrorMacro:KU,vtkWarningMacro:sC,objectSetterMap:eB},m1=Object.freeze({__proto__:null,VOID:WU,setLoggerFunction:jU,vtkLogMacro:zU,vtkInfoMacro:HU,vtkDebugMacro:Rw,vtkErrorMacro:X0,vtkWarningMacro:sC,vtkOnceErrorMacro:KU,TYPED_ARRAYS:g1,newTypedArray:B8,newTypedArrayFrom:aC,capitalize:lC,_capitalize:Da,uncapitalize:qU,formatBytesToProperUnit:XU,formatNumbersWithThousandSeparator:YU,setImmediateVTK:PI,measurePromiseExecution:QU,obj:_s,get:el,set:Av,setGet:s2,getArray:G8,setArray:RI,setGetArray:AI,moveToProtected:Lv,algo:LI,EVENT_ABORT:NI,event:tB,newInstance:as,chain:Nv,isVtkObject:bI,traverseInstanceTree:Aw,debounce:nB,throttle:rB,keystore:FI,proxy:iB,proxyPropertyMapping:oB,proxyPropertyState:sB,normalizeWheel:aB,default:At});const lB={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},b0={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",UNSIGNED_CHAR_CLAMPED:"Uint8ClampedArray",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},ste=b0.FLOAT;var uB={DefaultDataType:ste,DataTypeByteSize:lB,VtkDataTypes:b0};const ate="WebGL",Lw=Object.create(null);function cB(n,e){Lw[n]=e}function lte(){return Object.keys(Lw)}function fB(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Lw[n]&&Lw[n](e)}function ute(n,e){e.classHierarchy.push("vtkRenderWindow"),n.addRenderer=o=>{n.hasRenderer(o)||(o.setRenderWindow(n),e.renderers.push(o),n.modified())},n.removeRenderer=o=>{e.renderers=e.renderers.filter(i=>i!==o),n.modified()},n.hasRenderer=o=>e.renderers.indexOf(o)!==-1,n.newAPISpecificView=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return fB(o||e.defaultViewAPI,i)},n.addView=o=>{n.hasView(o)||(o.setRenderable(n),e._views.push(o),n.modified())},n.removeView=o=>{e._views=e._views.filter(i=>i!==o),n.modified()},n.hasView=o=>e._views.indexOf(o)!==-1,n.preRender=()=>{e.renderers.forEach(o=>{o.isActiveCameraCreated()||o.resetCamera()})},n.render=()=>{n.preRender(),e.interactor?e.interactor.render():e._views.forEach(o=>o.traverseAllPasses())},n.getStatistics=()=>{const o={propCount:0,invisiblePropCount:0,gpuMemoryMB:0};return e._views.forEach(i=>{i.getGraphicsMemoryInfo&&(o.gpuMemoryMB+=i.getGraphicsMemoryInfo()/1e6)}),e.renderers.forEach(i=>{const l=i.getViewProps(),c=e._views[0].getViewNodeFor(i);l.forEach(g=>{if(g.getVisibility()){o.propCount+=1;const v=g.getMapper&&g.getMapper();if(v&&v.getPrimitiveCount){const _=c.getViewNodeFor(v);if(_){_.getAllocatedGPUMemoryInBytes&&(o.gpuMemoryMB+=_.getAllocatedGPUMemoryInBytes()/1e6);const T=v.getPrimitiveCount();Object.keys(T).forEach(P=>{o[P]||(o[P]=0),o[P]+=T[P]})}}}else o.invisiblePropCount+=1})}),o.str=Object.keys(o).map(i=>`${i}: ${o[i]}`).join(` +`),o},n.captureImages=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"image/png",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return At.setImmediate(n.render),e._views.map(l=>l.captureNextImage?l.captureNextImage(o,i):void 0).filter(l=>!!l)},n.addRenderWindow=o=>e.childRenderWindows.includes(o)?!1:(e.childRenderWindows.push(o),n.modified(),!0),n.removeRenderWindow=o=>{const i=e.childRenderWindows.findIndex(l=>l===o);return i<0?!1:(e.childRenderWindows.splice(i,1),n.modified(),!0)}}const cte={defaultViewAPI:ate,renderers:[],views:[],interactor:null,neverRendered:!0,numberOfLayers:1,childRenderWindows:[]};function hB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cte,o),At.obj(n,e),At.setGet(n,e,["interactor","numberOfLayers","_views","defaultViewAPI"]),At.get(n,e,["neverRendered"]),At.getArray(n,e,["renderers","childRenderWindows"]),At.moveToProtected(n,e,["views"]),At.event(n,e,"completion"),ute(n,e)}const fte=At.newInstance(hB,"vtkRenderWindow");var hte={newInstance:fte,extend:hB,registerViewConstructor:cB,listViewAPIs:lte,newAPISpecificView:fB};const Qm={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},qi={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var dB={Wrap:Qm,Filter:qi};const gB=new Float32Array(1),dte=new Int32Array(gB.buffer);function gte(n){gB[0]=n;const e=dte[0];let o=e>>16&32768,i=e>>12&2047;const l=e>>23&255;return l<103?o:l>142?(o|=31744,o|=(l===255?0:1)&&e&8388607,o):l<113?(i|=2048,o|=(i>>114-l)+(i>>113-l&1),o):(o|=l-112<<10|i>>1,o+=i&1,o)}function pte(n){const e=(n&32768)>>15,o=(n&31744)>>10,i=n&1023;return o===0?(e?-1:1)*2**-14*(i/2**10):o===31?i?NaN:(e?-1:1)*(1/0):(e?-1:1)*2**(o-15)*(1+i/2**10)}var g6={fromHalf:pte,toHalf:gte},VI={exports:{}};VI.exports;(function(n){(function(e,o,i){function l(_){var T=this,P=v();T.next=function(){var I=2091639*T.s0+T.c*23283064365386963e-26;return T.s0=T.s1,T.s1=T.s2,T.s2=I-(T.c=I|0)},T.c=1,T.s0=P(" "),T.s1=P(" "),T.s2=P(" "),T.s0-=P(_),T.s0<0&&(T.s0+=1),T.s1-=P(_),T.s1<0&&(T.s1+=1),T.s2-=P(_),T.s2<0&&(T.s2+=1),P=null}function c(_,T){return T.c=_.c,T.s0=_.s0,T.s1=_.s1,T.s2=_.s2,T}function g(_,T){var P=new l(_),I=T&&T.state,R=P.next;return R.int32=function(){return P.next()*4294967296|0},R.double=function(){return R()+(R()*2097152|0)*11102230246251565e-32},R.quick=R,I&&(typeof I=="object"&&c(I,P),R.state=function(){return c(P,{})}),R}function v(){var _=4022871197,T=function(P){P=String(P);for(var I=0;I>>0,R-=_,R*=_,_=R>>>0,R-=_,_+=R*4294967296}return(_>>>0)*23283064365386963e-26};return T}o&&o.exports?o.exports=g:this.alea=g})(g2,n)})(VI);var mte=VI.exports,UI={exports:{}};UI.exports;(function(n){(function(e,o,i){function l(v){var _=this,T="";_.x=0,_.y=0,_.z=0,_.w=0,_.next=function(){var I=_.x^_.x<<11;return _.x=_.y,_.y=_.z,_.z=_.w,_.w^=_.w>>>19^I^I>>>8},v===(v|0)?_.x=v:T+=v;for(var P=0;P>>0)/4294967296};return I.double=function(){do var R=T.next()>>>11,L=(T.next()>>>0)/4294967296,V=(R+L)/(1<<21);while(V===0);return V},I.int32=T.next,I.quick=I,P&&(typeof P=="object"&&c(P,T),I.state=function(){return c(T,{})}),I}o&&o.exports?o.exports=g:this.xor128=g})(g2,n)})(UI);var vte=UI.exports,BI={exports:{}};BI.exports;(function(n){(function(e,o,i){function l(v){var _=this,T="";_.next=function(){var I=_.x^_.x>>>2;return _.x=_.y,_.y=_.z,_.z=_.w,_.w=_.v,(_.d=_.d+362437|0)+(_.v=_.v^_.v<<4^(I^I<<1))|0},_.x=0,_.y=0,_.z=0,_.w=0,_.v=0,v===(v|0)?_.x=v:T+=v;for(var P=0;P>>4),_.next()}function c(v,_){return _.x=v.x,_.y=v.y,_.z=v.z,_.w=v.w,_.v=v.v,_.d=v.d,_}function g(v,_){var T=new l(v),P=_&&_.state,I=function(){return(T.next()>>>0)/4294967296};return I.double=function(){do var R=T.next()>>>11,L=(T.next()>>>0)/4294967296,V=(R+L)/(1<<21);while(V===0);return V},I.int32=T.next,I.quick=I,P&&(typeof P=="object"&&c(P,T),I.state=function(){return c(T,{})}),I}o&&o.exports?o.exports=g:this.xorwow=g})(g2,n)})(BI);var kte=BI.exports,GI={exports:{}};GI.exports;(function(n){(function(e,o,i){function l(v){var _=this;_.next=function(){var P=_.x,I=_.i,R,L;return R=P[I],R^=R>>>7,L=R^R<<24,R=P[I+1&7],L^=R^R>>>10,R=P[I+3&7],L^=R^R>>>3,R=P[I+4&7],L^=R^R<<7,R=P[I+7&7],R=R^R<<13,L^=R^R<<9,P[I]=L,_.i=I+1&7,L};function T(P,I){var R,L=[];if(I===(I|0))L[0]=I;else for(I=""+I,R=0;R0;--R)P.next()}T(_,v)}function c(v,_){return _.x=v.x.slice(),_.i=v.i,_}function g(v,_){v==null&&(v=+new Date);var T=new l(v),P=_&&_.state,I=function(){return(T.next()>>>0)/4294967296};return I.double=function(){do var R=T.next()>>>11,L=(T.next()>>>0)/4294967296,V=(R+L)/(1<<21);while(V===0);return V},I.int32=T.next,I.quick=I,P&&(P.x&&c(P,T),I.state=function(){return c(T,{})}),I}o&&o.exports?o.exports=g:this.xorshift7=g})(g2,n)})(GI);var yte=GI.exports,WI={exports:{}};WI.exports;(function(n){(function(e,o,i){function l(v){var _=this;_.next=function(){var P=_.w,I=_.X,R=_.i,L,V;return _.w=P=P+1640531527|0,V=I[R+34&127],L=I[R=R+1&127],V^=V<<13,L^=L<<17,V^=V>>>15,L^=L>>>12,V=I[R]=V^L,_.i=R,V+(P^P>>>16)|0};function T(P,I){var R,L,V,U,j,z=[],$=128;for(I===(I|0)?(L=I,I=null):(I=I+"\0",L=0,$=Math.max($,I.length)),V=0,U=-32;U<$;++U)I&&(L^=I.charCodeAt((U+32)%I.length)),U===0&&(j=L),L^=L<<10,L^=L>>>15,L^=L<<4,L^=L>>>13,U>=0&&(j=j+1640531527|0,R=z[U&127]^=L+j,V=R==0?V+1:0);for(V>=128&&(z[(I&&I.length||0)&127]=-1),V=127,U=4*128;U>0;--U)L=z[V+34&127],R=z[V=V+1&127],L^=L<<13,R^=R<<17,L^=L>>>15,R^=R>>>12,z[V]=L^R;P.w=j,P.X=z,P.i=V}T(_,v)}function c(v,_){return _.i=v.i,_.w=v.w,_.X=v.X.slice(),_}function g(v,_){v==null&&(v=+new Date);var T=new l(v),P=_&&_.state,I=function(){return(T.next()>>>0)/4294967296};return I.double=function(){do var R=T.next()>>>11,L=(T.next()>>>0)/4294967296,V=(R+L)/(1<<21);while(V===0);return V},I.int32=T.next,I.quick=I,P&&(P.X&&c(P,T),I.state=function(){return c(T,{})}),I}o&&o.exports?o.exports=g:this.xor4096=g})(g2,n)})(WI);var wte=WI.exports,$I={exports:{}};$I.exports;(function(n){(function(e,o,i){function l(v){var _=this,T="";_.next=function(){var I=_.b,R=_.c,L=_.d,V=_.a;return I=I<<25^I>>>7^R,R=R-L|0,L=L<<24^L>>>8^V,V=V-I|0,_.b=I=I<<20^I>>>12^R,_.c=R=R-L|0,_.d=L<<16^R>>>16^V,_.a=V-I|0},_.a=0,_.b=0,_.c=-1640531527,_.d=1367130551,v===Math.floor(v)?(_.a=v/4294967296|0,_.b=v|0):T+=v;for(var P=0;P>>0)/4294967296};return I.double=function(){do var R=T.next()>>>11,L=(T.next()>>>0)/4294967296,V=(R+L)/(1<<21);while(V===0);return V},I.int32=T.next,I.quick=I,P&&(typeof P=="object"&&c(P,T),I.state=function(){return c(T,{})}),I}o&&o.exports?o.exports=g:this.tychei=g})(g2,n)})($I);var Cte=$I.exports,pB={exports:{}};const _te={},xte=Object.freeze(Object.defineProperty({__proto__:null,default:_te},Symbol.toStringTag,{value:"Module"})),p1=$J(xte);(function(n){(function(e,o,i){var l=256,c=6,g=52,v="random",_=i.pow(l,c),T=i.pow(2,g),P=T*2,I=l-1,R;function L(X,ee,ne){var le=[];ee=ee==!0?{entropy:!0}:ee||{};var ce=z(j(ee.entropy?[X,K(o)]:X??$(),3),le),ge=new V(le),pe=function(){for(var we=ge.g(c),Te=_,Ve=0;we=P;)we/=2,Te/=2,Ve>>>=1;return(we+Ve)/Te};return pe.int32=function(){return ge.g(4)|0},pe.quick=function(){return ge.g(4)/4294967296},pe.double=pe,z(K(ge.S),o),(ee.pass||ne||function(we,Te,Ve,Pe){return Pe&&(Pe.S&&U(Pe,ge),we.state=function(){return U(ge,{})}),Ve?(i[v]=we,Te):we})(pe,ce,"global"in ee?ee.global:this==i,ee.state)}function V(X){var ee,ne=X.length,le=this,ce=0,ge=le.i=le.j=0,pe=le.S=[];for(ne||(X=[ne++]);cemB(`vtkMath::${n} - NOT IMPLEMENTED`)}function sm(n,e,o,i){let l;for(let c=0;c0&&arguments[0]!==void 0?arguments[0]:3;const e=Array(n);for(let o=0;oMath.PI;function Nte(n,e){return e>1023?n*2**1023*2**(e-1023):e<-1074?n*2**-1074*2**(e+1074):n*2**e}function ia(n){return n/180*Math.PI}function Nw(n){return n*180/Math.PI}const{round:bte,floor:KI,ceil:Fte,min:Vte,max:Ute}=Math;function Bte(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,i=1/0;for(let l=e,c=n.length;l1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,i=-1/0;for(let l=e,c=n.length;l1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,i=1/0,l=-1/0;for(let c=e,g=n.length;c=0;--l)if(o[l]0&&arguments[0]!==void 0?arguments[0]:0;const o=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)-n;return n+o*Math.random()}const Jte=bv("gaussian");function bw(n,e,o){return o[0]=n[0]+e[0],o[1]=n[1]+e[1],o[2]=n[2]+e[2],o}function ch(n,e,o){return o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],o}function kB(n,e){return n[0]*=e,n[1]*=e,n[2]*=e,n}function yB(n,e){return n[0]*=e,n[1]*=e,n}function oE(n,e,o,i){return i[0]=n[0]+e[0]*o,i[1]=n[1]+e[1]*o,i[2]=n[2]+e[2]*o,i}function Zte(n,e,o,i){return i[0]=n[0]+e[0]*o,i[1]=n[1]+e[1]*o,i}function B0(n,e){return n[0]*e[0]+n[1]*e[1]+n[2]*e[2]}function Qte(n,e,o){o[0]=n[0]*e[0],o[1]=n[0]*e[1],o[2]=n[0]*e[2],o[3]=n[1]*e[0],o[4]=n[1]*e[1],o[5]=n[1]*e[2],o[6]=n[2]*e[0],o[7]=n[2]*e[1],o[8]=n[2]*e[2]}function ff(n,e,o){const i=n[1]*e[2]-n[2]*e[1],l=n[2]*e[0]-n[0]*e[2],c=n[0]*e[1]-n[1]*e[0];return o[0]=i,o[1]=l,o[2]=c,o}function Td(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;switch(e){case 1:return Math.abs(n);case 2:return Math.sqrt(n[0]*n[0]+n[1]*n[1]);case 3:return Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);default:{let o=0;for(let i=0;ic&&l>g?(_=0,T=1,P=2):c>g?(_=1,T=2,P=0):(_=2,T=0,P=1);const I=n[_]/v,R=n[T]/v,L=n[P]/v,V=Math.sqrt(I*I+L*L);if(i!==0){const U=Math.sin(i),j=Math.cos(i);e&&(e[_]=(L*j-I*R*U)/V,e[T]=U*V,e[P]=(-(I*j)-R*L*U)/V),o&&(o[_]=(-(L*U)-I*R*j)/V,o[T]=j*V,o[P]=(I*U-R*L*j)/V)}else e&&(e[_]=L/V,e[T]=0,e[P]=-I/V),o&&(o[_]=-I*R/V,o[T]=V,o[P]=-R*L/V)}function tne(n,e,o){const i=B0(e,e);if(i===0)return o[0]=0,o[1]=0,o[2]=0,!1;const l=B0(n,e)/i;for(let c=0;c<3;c++)o[c]=e[c];return kB(o,l),!0}function sE(n,e){return n[0]*e[0]+n[1]*e[1]}function nne(n,e,o){const i=sE(e,e);if(i===0)return o[0]=0,o[1]=0,!1;const l=sE(n,e)/i;for(let c=0;c<2;c++)o[c]=e[c];return yB(o,l),!0}function Xc(n,e){return(n[0]-e[0])*(n[0]-e[0])+(n[1]-e[1])*(n[1]-e[1])+(n[2]-e[2])*(n[2]-e[2])}function rne(n,e){const o=[0,0,0];return ff(n,e,o),Math.atan2(Td(o),B0(n,e))}function ine(n,e,o){const i=Math.abs(n-o);return 1/Math.sqrt(2*Math.PI*e)*Math.exp(-(i**2)/(2*e))}function one(n,e,o){const i=Math.abs(n-o);return Math.exp(-(i**2)/(2*e))}function sne(n,e,o){o[0]=n[0]*e[0],o[1]=n[0]*e[1],o[2]=n[1]*e[0],o[3]=n[1]*e[1]}function wB(n){return Math.sqrt(n[0]*n[0]+n[1]*n[1])}function ane(n){const e=wB(n);return e!==0&&(n[0]/=e,n[1]/=e),e}function sa(){for(var n=arguments.length,e=new Array(n),o=0;ol&&(l=i),(i=Math.abs(n[g*3+2]))>l&&(l=i),c[g]=1/l;l=c[0]*Math.abs(n[0]),o=0,(i=c[1]*Math.abs(n[3]))>=l&&(l=i,o=1),(i=c[2]*Math.abs(n[6]))>=l&&(o=2),o!==0&&(sm(n,3,o,0),c[o]=c[0]),e[0]=o,n[3]/=n[0],n[6]/=n[0],n[4]-=n[3]*n[1],n[7]-=n[6]*n[1],l=c[1]*Math.abs(n[4]),o=1,(i=c[2]*Math.abs(n[7]))>=l&&(o=2,sm(n,3,1,2),c[2]=c[1]),e[1]=o,n[7]/=n[4],n[5]-=n[3]*n[2],n[8]-=n[6]*n[2]+n[7]*n[5],e[2]=2}function une(n,e,o){let i=o[e[0]];o[e[0]]=o[0],o[0]=i,i=o[e[1]],o[e[1]]=o[1],o[1]=i-n[3]*o[0],i=o[e[2]],o[e[2]]=o[2],o[2]=i-n[6]*o[0]-n[7]*o[1],o[2]/=n[8],o[1]=(o[1]-n[5]*o[2])/n[4],o[0]=(o[0]-n[1]*o[1]-n[2]*o[2])/n[0]}function cne(n,e,o){const i=n[0],l=n[1],c=n[2],g=n[3],v=n[4],_=n[5],T=n[6],P=n[7],I=n[8],R=+sa(v,P,_,I),L=-sa(g,T,_,I),V=+sa(g,T,v,P),U=-sa(l,P,c,I),j=+sa(i,T,c,I),z=-sa(i,T,l,P),$=+sa(l,v,c,_),K=-sa(i,g,c,_),X=+sa(i,g,l,v),ee=i*R+l*L+c*V,ne=R*e[0]+U*e[1]+$*e[2],le=L*e[0]+j*e[1]+K*e[2],ce=V*e[0]+z*e[1]+X*e[2];o[0]=ne/ee,o[1]=le/ee,o[2]=ce/ee}function N7(n,e,o){const i=n[0]*e[0]+n[1]*e[1]+n[2]*e[2],l=n[3]*e[0]+n[4]*e[1]+n[5]*e[2],c=n[6]*e[0]+n[7]*e[1]+n[8]*e[2];o[0]=i,o[1]=l,o[2]=c}function aE(n,e,o){const i=[...n],l=[...e];for(let c=0;c<3;c++)o[c]=i[0]*l[c]+i[1]*l[c+3]+i[2]*l[c+6],o[c+3]=i[3]*l[c]+i[4]*l[c+3]+i[5]*l[c+6],o[c+6]=i[6]*l[c]+i[7]*l[c+3]+i[8]*l[c+6]}function fne(n,e,o,i,l,c,g){i!==l&&mB("Number of columns of A must match number of rows of B.");const v=[...n],_=[...e];for(let T=0;T2&&arguments[2]!==void 0?arguments[2]:zI;if(n.length!==e.length)return!1;function i(l,c){return Math.abs(l-e[c])<=o}return n.every(i)}const Fv=CB;function _B(n){for(let e=0;e<3;e++)n[e*3]=n[e*3+1]=n[e*3+2]=0,n[e*3+e]=1}function xB(n,e){for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:zI;return Fv(n,jI,e)}function gne(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:zI;return Fv(n,Ate,e)}function SB(n,e){const o=n[0]*n[0],i=n[0]*n[1],l=n[0]*n[2],c=n[0]*n[3],g=n[1]*n[1],v=n[2]*n[2],_=n[3]*n[3],T=n[1]*n[2],P=n[1]*n[3],I=n[2]*n[3],R=g+v+_;let L=1/(o+R);const V=(o-R)*L;L*=2,e[0]=g*L+V,e[3]=(T+c)*L,e[6]=(P-l)*L,e[1]=(T-c)*L,e[4]=v*L+V,e[7]=(I+i)*L,e[2]=(P+l)*L,e[5]=(I-i)*L,e[8]=_*L+V}function b7(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!`${n}`.includes("e"))return+`${Math.round(`${n}e+${e}`)}e-${e}`;const o=`${n}`.split("e");let i="";return+o[1]+e>0&&(i="+"),+`${Math.round(`${+o[0]}e${i}${+o[1]+e}`)}e-${e}`}function lE(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0],o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return e[0]=b7(n[0],o),e[1]=b7(n[1],o),e[2]=b7(n[2],o),e}function Vv(n,e,o,i){let l,c,g,v,_,T,P,I,R,L,V,U,j,z,$,K;const X=ys(e),ee=ys(e),ne=(ce,ge,pe)=>{z=ce[ge],j=ce[pe],ce[ge]=z-U*(j+z*L),ce[pe]=j+U*(z-j*L)};for(xB(e,i),_=0;_3&&Math.abs(o[_])+z===Math.abs(o[_])&&Math.abs(o[v])+z===Math.abs(o[v]))n[_*e+v]=0;else if(Math.abs(n[_*e+v])>P){for(j=o[v]-o[_],Math.abs(j)+z===Math.abs(j)?R=n[_*e+v]/j:(I=.5*j/n[_*e+v],R=1/(Math.abs(I)+Math.sqrt(1+I*I)),I<0&&(R=-R)),$=1/Math.sqrt(1+R*R),U=R*$,L=U/(1+$),j=R*n[_*e+v],ee[_]-=j,ee[v]+=j,o[_]-=j,o[v]+=j,n[_*e+v]=0,c=0;c<=_-1;c++)ne(n,c*e+_,c*e+v);for(c=_+1;c<=v-1;c++)ne(n,_*e+c,c*e+v);for(c=v+1;c=RA)return Ug("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(c=0;c=K||Math.abs(o[l]-K)>1)+(e&1);for(T=0,l=0;l=0&&T++;if(TL?V:L,l=U>l?U:l,o[R]=1,l!==0&&(o[R]/=l)}const c=Math.abs(e[0])*o[0],g=Math.abs(e[3])*o[1],v=Math.abs(e[6])*o[2];i[0]=0,l=c,g>=l&&(l=g,i[0]=1),v>=l&&(i[0]=2),i[0]!==0&&(N3(e,3,i[0],0),o[i[0]]=o[0]);const _=Math.abs(e[4])*o[1],T=Math.abs(e[7])*o[2];i[1]=1,l=_,T>=l&&(i[1]=2,N3(e,3,1,2)),i[2]=2;let P=0;if(uC(e)<0){P=1;for(let R=0;R<9;R++)e[R]=-e[R]}const I=ys(4);if(TB(e,I),SB(I,e),P)for(let R=0;R<9;R++)e[R]=-e[R];i[1]!==1&&N3(e,3,i[1],1),i[0]!==0&&N3(e,3,i[0],0)}function DB(n,e,o){let i,l,c,g,v,_;const T=[...n];if(Vv(T,3,e,o),e[0]===e[1]&&e[0]===e[2]){_B(o);return}for(e8(o,o),i=0;i<3;i++)if(e[(i+1)%3]===e[(i+2)%3]){for(_=Math.abs(o[i*3]),g=0,l=1;l<3;l++)_<(v=Math.abs(o[i*3+l]))&&(_=v,g=l);g!==i&&(v=e[g],e[g]=e[i],e[i]=v,sm(o,3,i,g)),o[g*3+g]<0&&(o[g*3]=-o[g*3],o[g*3+1]=-o[g*3+1],o[g*3+2]=-o[g*3+2]),l=(g+1)%3,c=(g+2)%3,o[l*3]=0,o[l*3+1]=0,o[l*3+2]=0,o[l*3+l]=1;const P=ff([o[g*3],o[g*3+1],o[g*3+2]],[o[l*3],o[l*3+1],o[l*3+2]],[]);Bg(P);const I=ff(P,[o[g*3],o[g*3+1],o[g*3+2]],[]);for(let R=0;R<3;R++)o[c*3+R]=P[R],o[l*3+R]=I[R];e8(o,o);return}for(_=Math.abs(o[0]),g=0,i=1;i<3;i++)_<(v=Math.abs(o[i*3]))&&(_=v,g=i);if(g!==0){const P=e[g];e[g]=e[0],e[0]=P,sm(o,3,g,0)}if(Math.abs(o[4])g&&(g=P);if(g===0)return Ug("Unable to factor linear system"),0;I[i]=1/g}for(l=0;l=g&&(g=T,v=i)}if(l!==v){for(c=0;c=0)for(c=g;c<=l-1;c++)_-=n[l*i+c]*o[c];else _!==0&&(g=l);o[l]=_}for(l=i-1;l>=0;l--){for(_=o[l],c=l+1;c3&&arguments[3]!==void 0?arguments[3]:null,l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const c=i||ys(o),g=l||ys(o);if(qI(n,c,o)===0)return null;for(let v=0;vi&&(i=Math.abs(n[l*e+c]));for(let l=0;l6&&arguments[6]!==void 0?arguments[6]:!0;if(nHI&&(_=0,v[R]=0);if(_&&l===1)return Ug("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),uE(n,e,o,c);if(_)V=1;else for(R=0;R1&&arguments[1]!==void 0?arguments[1]:[0,.5,1];switch(n.length){case 3:return e[0]=parseInt(n[0],16)*17/255,e[1]=parseInt(n[1],16)*17/255,e[2]=parseInt(n[2],16)*17/255,e;case 4:return e[0]=parseInt(n[1],16)*17/255,e[1]=parseInt(n[2],16)*17/255,e[2]=parseInt(n[3],16)*17/255,e;case 6:return e[0]=parseInt(n.substr(0,2),16)/255,e[1]=parseInt(n.substr(2,2),16)/255,e[2]=parseInt(n.substr(4,2),16)/255,e;case 7:return e[0]=parseInt(n.substr(1,2),16)/255,e[1]=parseInt(n.substr(3,2),16)/255,e[2]=parseInt(n.substr(5,2),16)/255,e;case 9:return e[0]=parseInt(n.substr(1,2),16)/255,e[1]=parseInt(n.substr(3,2),16)/255,e[2]=parseInt(n.substr(5,2),16)/255,e[3]=parseInt(n.substr(7,2),16)/255,e;default:return e}}function F3(n,e){let o,i;const[l,c,g]=n,v=1/3,_=1/6,T=2/3;let P=l,I=l;c>P?P=c:cP?P=g:g0?i=(P-I)/P:i=0,i>0?(l===P?o=_*(c-g)/(P-I):c===P?o=v+_*(g-l)/(P-I):o=T+_*(l-c)/(P-I),o<0&&(o+=1)):o=0,e[0]=o,e[1]=i,e[2]=R}function dg(n,e){const[o,i,l]=n,c=1/3,g=1/6,v=2/3,_=5/6;let T,P,I;o>g&&o<=c?(P=1,T=(c-o)/g,I=0):o>c&&o<=.5?(P=1,I=(o-c)/g,T=0):o>.5&&o<=v?(I=1,P=(v-o)/g,T=0):o>v&&o<=_?(I=1,T=(o-v)/g,P=0):o>_&&o<=1?(T=1,I=(1-o)/g,P=0):(T=1,P=o/g,I=0),T=i*T+(1-i),P=i*P+(1-i),I=i*I+(1-i),T*=l,P*=l,I*=l,e[0]=T,e[1]=P,e[2]=I}function MB(n,e){const[o,i,l]=n;let c=(o+16)/116,g=i/500+c,v=c-l/200;c**3>.008856?c**=3:c=(c-16/116)/7.787,g**3>.008856?g**=3:g=(g-16/116)/7.787,v**3>.008856?v**=3:v=(v-16/116)/7.787;const _=.9505,T=1,P=1.089;e[0]=_*g,e[1]=T*c,e[2]=P*v}function PB(n,e){const[o,i,l]=n,c=.9505,g=1,v=1.089;let _=o/c,T=i/g,P=l/v;_>.008856?_**=1/3:_=7.787*_+16/116,T>.008856?T**=1/3:T=7.787*T+16/116,P>.008856?P**=1/3:P=7.787*P+16/116,e[0]=116*T-16,e[1]=500*(_-T),e[2]=200*(T-P)}function RB(n,e){const[o,i,l]=n;let c=o*3.2406+i*-1.5372+l*-.4986,g=o*-.9689+i*1.8758+l*.0415,v=o*.0557+i*-.204+l*1.057;c>.0031308?c=1.055*c**(1/2.4)-.055:c*=12.92,g>.0031308?g=1.055*g**(1/2.4)-.055:g*=12.92,v>.0031308?v=1.055*v**(1/2.4)-.055:v*=12.92;let _=c;_1&&(c/=_,g/=_,v/=_),c<0&&(c=0),g<0&&(g=0),v<0&&(v=0),e[0]=c,e[1]=g,e[2]=v}function AB(n,e){let[o,i,l]=n;o>.04045?o=((o+.055)/1.055)**2.4:o/=12.92,i>.04045?i=((i+.055)/1.055)**2.4:i/=12.92,l>.04045?l=((l+.055)/1.055)**2.4:l/=12.92,e[0]=o*.4124+i*.3576+l*.1805,e[1]=o*.2126+i*.7152+l*.0722,e[2]=o*.0193+i*.1192+l*.9505}function Cg(n,e){const o=[0,0,0];AB(n,o),PB(o,e)}function Fw(n,e){const o=[0,0,0];MB(n,o),RB(o,e)}function W8(n){return n[0]=1,n[1]=-1,n[2]=1,n[3]=-1,n[4]=1,n[5]=-1,n}function F7(n){return!(n[1]-n[0]<0)}function Cne(n,e,o){return o[0]=Math.min(n[0],e[0]),o[1]=Math.max(n[0],e[0]),o[2]=Math.min(n[1],e[1]),o[3]=Math.max(n[1],e[1]),o[4]=Math.min(n[2],e[2]),o[5]=Math.max(n[2],e[2]),o}function cc(n,e,o){return no?o:n}function cE(n,e,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return i[0]=cc(n[0],e[0],o[0]),i[1]=cc(n[1],e[1],o[1]),i[2]=cc(n[2],e[2],o[2]),i}function _ne(n,e){let o=0;return e[0]!==e[1]&&(ne[1]?o=e[1]:o=n,o=(o-e[0])/(e[1]-e[0])),o}const xne=bv("GetScalarTypeFittingRange"),Sne=bv("GetAdjustedScalarRange");function Tne(n,e){if(!n||!e)return 0;for(let o=0;o<6;o+=2)if(n[o]e[o+1]||n[o+1]e[o+1])return 0;return 1}function Ene(n,e,o){if(!n||!e)return 0;for(let i=0;i<6;i+=2)if(n[i]+o[i/2]e[i+1]||n[i+1]+o[i/2]e[i+1])return 0;return 1}function Dne(n,e,o){if(!n||!e||!o)return 0;for(let i=0;i<3;i++)if(n[i]+o[i]e[2*i+1])return 0;return 1}function Ine(n,e,o,i){const l=ys(3),c=ys(3),g=ys(3),v=ys(3),_=ys(3),T=ys(3);for(let X=0;X<3;++X)l[X]=n[X]-e[X],c[X]=e[X]-o[X],g[X]=o[X]-n[X],v[X]=-l[X],_[X]=-c[X],T[X]=-g[X];const P=Td(v),I=Td(_),R=Td(g),L=ys(3);ff(l,c,L);const V=Td(L),U=P*I*R/(2*V),j=2*V*V,z=I*I*B0(l,T)/j,$=R*R*B0(v,c)/j,K=P*P*B0(g,_)/j;for(let X=0;X<3;++X)i[X]=z*n[X]+$*e[X]+K*o[X];return U}const One=1/0,Mne=-1/0,LB=n=>!Number.isFinite(n),{isFinite:Pne,isNaN:fE}=Number,Vw=fE;function zd(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function Rne(n){let e=-1,o=-1;for(let i=0;ie&&(o=i,e=l)}return o}function NB(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;const o=new Array(e),i=new Array(e);for(let c=0;c0;c--){let g=-1/0,v=0,_=0;for(let T=0;T<=c;++T){const P=o[T];for(let I=0;I<=c;++I){const R=i[I],L=Math.abs(n[P+e*R]);L>g&&(g=L,v=T,_=I)}}[o[c],o[v]]=[o[v],o[c]],[i[c],i[_]]=[i[_],i[c]]}const l=new Array(e*e).fill(0);for(let c=0;c15?e.toString(16):`0${e.toString(16)}`}function Ane(n){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#"}${n.map(bB).join("")}`}function Dy(n){return Math.round(n*255)}function Lne(n){return n.length===3?`rgb(${n.map(Dy).join(", ")})`:`rgba(${Dy(n[0]||0)}, ${Dy(n[1]||0)}, ${Dy(n[2]||0)}, ${n[3]||0})`}var h0={Pi:Lte,ldexp:Nte,radiansFromDegrees:ia,degreesFromRadians:Nw,round:bte,floor:KI,ceil:Fte,ceilLog2:$te,min:Vte,max:Ute,arrayMin:Bte,arrayMax:Gte,arrayRange:Wte,isPowerOfTwo:b3,nearestPowerOfTwo:gd,factorial:jte,binomial:zte,beginCombination:Hte,nextCombination:Kte,randomSeed:qte,getSeed:Xte,random:Yte,gaussian:Jte,add:bw,subtract:ch,multiplyScalar:kB,multiplyScalar2D:yB,multiplyAccumulate:oE,multiplyAccumulate2D:Zte,dot:B0,outer:Qte,cross:ff,norm:Td,normalize:Bg,perpendiculars:ene,projectVector:tne,projectVector2D:nne,distance2BetweenPoints:Xc,angleBetweenVectors:rne,gaussianAmplitude:ine,gaussianWeight:one,dot2D:sE,outer2D:sne,norm2D:wB,normalize2D:ane,determinant2x2:sa,LUFactor3x3:lne,LUSolve3x3:une,linearSolve3x3:cne,multiply3x3_vect3:N7,multiply3x3_mat3:aE,multiplyMatrix:fne,transpose3x3:e8,invert3x3:hne,identity3x3:_B,identity:xB,isIdentity:dne,isIdentity3x3:gne,determinant3x3:uC,quaternionToMatrix3x3:SB,areEquals:CB,areMatricesEqual:Fv,roundNumber:b7,roundVector:lE,matrix3x3ToQuaternion:TB,multiplyQuaternion:pne,orthogonalize3x3:EB,diagonalize3x3:DB,singularValueDecomposition3x3:mne,solveLinearSystem:IB,invertMatrix:OB,luFactorLinearSystem:qI,luSolveLinearSystem:XI,estimateMatrixCondition:vne,jacobi:kne,jacobiN:Vv,solveHomogeneousLeastSquares:uE,solveLeastSquares:yne,hex2float:wne,rgb2hsv:F3,hsv2rgb:dg,lab2xyz:MB,xyz2lab:PB,xyz2rgb:RB,rgb2xyz:AB,rgb2lab:Cg,lab2rgb:Fw,uninitializeBounds:W8,areBoundsInitialized:F7,computeBoundsFromPoints:Cne,clampValue:cc,clampVector:cE,clampAndNormalizeValue:_ne,getScalarTypeFittingRange:xne,getAdjustedScalarRange:Sne,extentIsWithinOtherExtent:Tne,boundsIsWithinOtherBounds:Ene,pointIsWithinBounds:Dne,solve3PointCircle:Ine,inf:One,negInf:Mne,isInf:LB,isNan:fE,isNaN:fE,isFinite:Pne,createUninitializedBounds:zd,getMajorAxisIndex:Rne,getSparseOrthogonalMatrix:NB,floatToHex2:bB,floatRGB2HexCode:Ane,float2CssRGBA:Lne};const{vtkErrorMacro:Nne}=m1,{DefaultDataType:bne}=uB,Fne=1e-6;function hE(n,e,o){const i=n.length;let l=Number.MAX_VALUE,c=-Number.MAX_VALUE,g,v;for(v=e;vc&&(c=g);return{min:l,max:c}}function Vne(){let n=Number.MAX_VALUE,e=-Number.MAX_VALUE,o=0,i=0;return{add(l){n>l&&(n=l),e1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(e<0&&o>1){const l=n.length/o,c=new Float64Array(l);for(let g=0,v=0;g1&&arguments[1]!==void 0?arguments[1]:0;const o=n||[];for(;o.length<=e;)o.push(null);return o}function YI(n){return Object.prototype.toString.call(n).slice(8,-1)}function Une(n){const e=n.getNumberOfComponents();let o=0;const i=new Array(e);for(let l=0;lo&&(o=c)}return o}const Bne={computeRange:FB,createRangeHelper:Vne,fastComputeRange:hE,getDataType:YI,getMaxNorm:Une};function Gne(n,e){e.classHierarchy.push("vtkDataArray");function o(i){if(i<0)return!1;const l=n.getNumberOfComponents(),c=e.values.length/(l>0?l:1);if(i===c)return!0;if(i>c){const g=e.values;return e.values=B8(e.dataType,(i+c)*l),e.values.set(g),!0}return e.size>i*l&&(e.size=i*l,n.dataChange()),!0}n.dataChange=()=>{e.ranges=null,n.modified()},n.resize=i=>{o(i);const l=i*n.getNumberOfComponents();return e.size!==l?(e.size=l,n.dataChange(),!0):!1},n.initialize=()=>{n.resize(0)},n.getElementComponentSize=()=>e.values.BYTES_PER_ELEMENT,n.getComponent=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[i*e.numberOfComponents+l]},n.setComponent=(i,l,c)=>{c!==e.values[i*e.numberOfComponents+l]&&(e.values[i*e.numberOfComponents+l]=c,n.dataChange())},n.getValue=i=>{const l=i/e.numberOfComponents,c=i%e.numberOfComponents;return n.getComponent(l,c)},n.setValue=(i,l)=>{const c=i/e.numberOfComponents,g=i%e.numberOfComponents;n.setComponent(c,g,l)},n.getData=()=>e.size===e.values.length?e.values:e.values.subarray(0,e.size),n.getRange=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1,l=i;l<0&&(l=e.numberOfComponents===1?0:e.numberOfComponents);let c=null;return e.ranges||(e.ranges=AA(e.ranges,e.numberOfComponents)),c=e.ranges[l],c?(e.rangeTuple[0]=c.min,e.rangeTuple[1]=c.max,e.rangeTuple):(c=FB(n.getData(),i,e.numberOfComponents),e.ranges[l]=c,e.rangeTuple[0]=c.min,e.rangeTuple[1]=c.max,e.rangeTuple)},n.setRange=(i,l)=>{e.ranges||(e.ranges=AA(e.ranges,e.numberOfComponents));const c={min:i.min,max:i.max};return e.ranges[l]=c,e.rangeTuple[0]=c.min,e.rangeTuple[1]=c.max,e.rangeTuple},n.getRanges=function(){if(!(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0))return structuredClone(e.ranges);const l=[];for(let c=0;c1){const[c,g]=n.getRange(-1),v={min:c,max:g};l.push(v)}return l},n.setTuple=(i,l)=>{const c=i*e.numberOfComponents;for(let g=0;g{let c=i*e.numberOfComponents;const g=Math.min(l.length,e.size-c);for(let v=0;v(e.size<=i*e.numberOfComponents&&(e.size=(i+1)*e.numberOfComponents,o(i+1)),n.setTuple(i,l),i),n.insertTuples=(i,l)=>{const c=i+l.length/e.numberOfComponents;return e.size{const l=e.size/e.numberOfComponents;return n.insertTuple(l,i)},n.insertNextTuples=i=>{const l=e.size/e.numberOfComponents;return n.insertTuples(l,i)},n.findTuple=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Fne;for(let c=0;cl){g=!1;break}if(g)return c/e.numberOfComponents}return-1},n.getTuple=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const c=e.numberOfComponents||1,g=i*c;switch(c){case 4:l[3]=e.values[g+3];case 3:l[2]=e.values[g+2];case 2:l[1]=e.values[g+1];case 1:l[0]=e.values[g];break;default:for(let v=c-1;v>=0;--v)l[v]=e.values[g+v]}return l},n.getTuples=(i,l)=>{const c=(i??0)*e.numberOfComponents,g=(l??n.getNumberOfTuples())*e.numberOfComponents,v=n.getData().subarray(c,g);return v.length>0?v:null},n.getTupleLocation=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},n.getNumberOfComponents=()=>e.numberOfComponents,n.getNumberOfValues=()=>e.size,n.getNumberOfTuples=()=>e.size/e.numberOfComponents,n.getDataType=()=>e.dataType,n.newClone=()=>UB({empty:!0,name:e.name,dataType:e.dataType,numberOfComponents:e.numberOfComponents}),n.getName=()=>(e.name||(n.modified(),e.name=`vtkDataArray${n.getMTime()}`),e.name),n.setData=(i,l)=>{e.values=i,e.size=i.length,e.dataType=YI(i),l&&(e.numberOfComponents=l),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),n.dataChange()},n.getState=()=>{if(e.deleted)return null;const i={...e,vtkClass:n.getClassName()};i.values=Array.from(i.values),delete i.buffer,Object.keys(i).forEach(c=>{i[c]||delete i[c]});const l={};return Object.keys(i).sort().forEach(c=>{l[c]=i[c]}),l.mtime&&delete l.mtime,l},n.deepCopy=i=>{const l=n.getDataType(),c=e.values;n.shallowCopy(i),e.ranges=structuredClone(i.getRanges()),(c==null?void 0:c.length)>=i.getNumberOfValues()&&l===i.getDataType()?(c.set(i.getData()),e.values=c,n.dataChange()):n.setData(i.getData().slice())},n.interpolateTuple=(i,l,c,g,v,_)=>{const T=e.numberOfComponents||1;(T!==l.getNumberOfComponents()||T!==g.getNumberOfComponents())&&Nne("numberOfComponents must match");const P=l.getTuple(c),I=g.getTuple(v),R=[];switch(R.length=T,T){case 4:R[3]=P[3]+(I[3]-P[3])*_;case 3:R[2]=P[2]+(I[2]-P[2])*_;case 2:R[1]=P[1]+(I[1]-P[1])*_;case 1:R[0]=P[0]+(I[0]-P[0])*_;break;default:for(let L=0;L2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Wne,o),Array.isArray(o.values)&&o.dataType===void 0&&console.warn("vtkDataArray.newInstance: no dataType provided, converting to Float32Array"),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(e.values?Array.isArray(e.values)&&(e.values=aC(e.dataType,e.values)):e.values=B8(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=YI(e.values)),_s(n,e),Av(n,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");Gne(n,e)}const UB=as(VB,"vtkDataArray");var d0={newInstance:UB,extend:VB,...Bne,...uB};const{vtkErrorMacro:$ne}=At,jne=["Build","Render"];function zne(n,e){e.classHierarchy.push("vtkViewNode"),n.build=i=>{},n.render=i=>{},n.traverse=i=>{const l=i.getTraverseOperation(),c=n[l];if(c){c(i);return}n.apply(i,!0);for(let g=0;g{const c=n[i.getOperation()];c&&c(l,i)},n.getViewNodeFor=i=>{if(e.renderable===i)return n;for(let l=0;le._parent?e._parent.isA(i)?e._parent:e._parent.getFirstAncestorOfType(i):null,n.getLastAncestorOfType=i=>{if(!e._parent)return null;const l=e._parent.getLastAncestorOfType(i);return l||(e._parent.isA(i)?e._parent:null)},n.addMissingNode=i=>{if(!i)return;const l=e._renderableChildMap.get(i);if(l!==void 0)return l.setVisited(!0),l;const c=n.createViewNode(i);if(c)return c.setParent(n),c.setVisited(!0),e._renderableChildMap.set(i,c),e.children.push(c),c},n.addMissingNodes=i=>{if(!(!i||!i.length))for(let l=0;l{if(!(!i||!i.length))for(let l=0;l{const l=e.children.findIndex(g=>g===i);if(l<0)return!1;const c=i.getRenderable();return c&&e._renderableChildMap.delete(c),i.delete(),e.children.splice(l,1),!0},n.prepareNodes=()=>{for(let i=0;i{e.visited=i},n.removeUnusedNodes=()=>{let i=0;for(let l=0;l{if(!e.myFactory)return $ne("Cannot create view nodes without my own factory"),null;const l=e.myFactory.createNode(i);return l&&l.setRenderable(i),l};const o=n.delete;n.delete=()=>{for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hne,o),At.obj(n,e),At.event(n,e,"event"),e._renderableChildMap=new Map,At.get(n,e,["visited"]),At.setGet(n,e,["_parent","renderable","myFactory"]),At.getArray(n,e,["children"]),At.moveToProtected(n,e,["parent"]),zne(n,e)}const Kne=At.newInstance(BB,"vtkViewNode");var Ha={newInstance:Kne,extend:BB,PASS_TYPES:jne};function qne(n,e){e.overrides||(e.overrides={}),e.classHierarchy.push("vtkViewNodeFactory"),n.createNode=o=>{if(o.isDeleted())return null;let i=0,l=o.getClassName(i++),c=!1;const g=Object.keys(e.overrides);for(;l&&!c;)g.indexOf(l)!==-1?c=!0:l=o.getClassName(i++);if(!c)return null;const v=e.overrides[l]();return v.setMyFactory(n),v}}const Xne={};function GB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xne,o),At.obj(n,e),qne(n,e)}const Yne=At.newInstance(GB,"vtkViewNodeFactory");var JI={newInstance:Yne,extend:GB};const WB=Object.create(null);function R2(n,e){WB[n]=e}function Jne(n,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const Zne={};function $B(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zne,o),e.overrides=WB,JI.extend(n,e,o),Jne(n,e)}const Qne=At.newInstance($B,"vtkOpenGLViewNodeFactory");var ere={newInstance:Qne,extend:$B};function tre(){try{const i=new Int16Array([0,32767]),l=[1,1],c=document.createElement("canvas");c.width=4,c.height=4;const g=c.getContext("webgl2");if(!g)return!1;const v=g.getExtension("EXT_texture_norm16");if(!v)return!1;const _=`#version 300 es + void main() { + gl_PointSize = ${4 .toFixed(1)}; + gl_Position = vec4(0, 0, 0, 1); + } + `,T=`#version 300 es + precision highp float; + precision highp int; + precision highp sampler2D; + + uniform sampler2D u_image; + + out vec4 color; + + void main() { + vec4 intColor = texture(u_image, gl_PointCoord.xy); + color = vec4(vec3(intColor.rrr), 1); + } + `,P=g.createShader(g.VERTEX_SHADER);if(g.shaderSource(P,_),g.compileShader(P),!g.getShaderParameter(P,g.COMPILE_STATUS))return!1;const I=g.createShader(g.FRAGMENT_SHADER);if(g.shaderSource(I,T),g.compileShader(I),!g.getShaderParameter(I,g.COMPILE_STATUS))return!1;const R=g.createProgram();if(g.attachShader(R,P),g.attachShader(R,I),g.linkProgram(R),!g.getProgramParameter(R,g.LINK_STATUS))return!1;const L=g.createTexture();g.bindTexture(g.TEXTURE_2D,L),g.texImage2D(g.TEXTURE_2D,0,v.R16_SNORM_EXT,2,1,0,g.RED,g.SHORT,i),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.useProgram(R),g.drawArrays(g.POINTS,0,1);const V=new Uint8Array(4);g.readPixels(l[0],l[1],1,1,g.RGBA,g.UNSIGNED_BYTE,V);const[U,j,z]=V,$=g.getExtension("WEBGL_lose_context");return $&&$.loseContext(),U===j&&j===z&&U!==0}catch{return!1}}let eS;function nre(){return eS===void 0&&(eS=tre()),eS}const{Wrap:Qf,Filter:c2}=dB,{VtkDataTypes:To}=d0,{vtkDebugMacro:tS,vtkErrorMacro:t6,vtkWarningMacro:LA}=m1,{toHalf:rre}=g6;function ire(n,e){e.classHierarchy.push("vtkOpenGLTexture");function o(){return{internalFormat:e.internalFormat,format:e.format,openGLDataType:e.openGLDataType,width:e.width,height:e.height}}n.render=function(){let V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(V?e._openGLRenderWindow=V:(e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow")),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?n.setMinificationFilter(c2.LINEAR_MIPMAP_LINEAR):n.setMinificationFilter(c2.LINEAR),n.setMagnificationFilter(c2.LINEAR)):(n.setMinificationFilter(c2.NEAREST),n.setMagnificationFilter(c2.NEAREST)),e.renderable.getRepeat()&&(n.setWrapR(Qf.REPEAT),n.setWrapS(Qf.REPEAT),n.setWrapT(Qf.REPEAT)),e.renderable.getInputData()&&e.renderable.setImage(null),!e.handle||e.renderable.getMTime()>e.textureBuildTime.getMTime()){if(e.renderable.getImage()!==null&&(e.renderable.getInterpolate()&&(e.generateMipmap=!0,n.setMinificationFilter(c2.LINEAR_MIPMAP_LINEAR)),e.renderable.getImage()&&e.renderable.getImageLoaded()&&(n.create2DFromImage(e.renderable.getImage()),n.activate(),n.sendParameters(),e.textureBuildTime.modified())),e.renderable.getCanvas()!==null){e.renderable.getInterpolate()&&(e.generateMipmap=!0,n.setMinificationFilter(c2.LINEAR_MIPMAP_LINEAR));const j=e.renderable.getCanvas();n.create2DFromRaw(j.width,j.height,4,To.UNSIGNED_CHAR,j,!0),n.activate(),n.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const j=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,n.setMinificationFilter(c2.LINEAR_MIPMAP_LINEAR)),n.create2DFromRaw(j.width,j.height,4,To.UNSIGNED_CHAR,j.data,!0),n.activate(),n.sendParameters(),e.textureBuildTime.modified()}const U=e.renderable.getInputData(0);if(U&&U.getPointData().getScalars()){const j=U.getExtent(),z=U.getPointData().getScalars(),$=[];for(let K=0;K{if(!((e.minificationFilter===c2.LINEAR||e.magnificationFilter===c2.LINEAR)&&!nre()))return e.oglNorm16Ext};n.destroyTexture=()=>{n.deactivate(),e.context&&e.handle&&e.context.deleteTexture(e.handle),e._prevTexParams=null,e.handle=0,e.numberOfDimensions=0,e.target=0,e.components=0,e.width=0,e.height=0,e.depth=0,n.resetFormatAndType()},n.createTexture=()=>{e.handle||(e.handle=e.context.createTexture(),e.target&&(e.context.bindTexture(e.target,e.handle),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,n.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,n.getOpenGLFilterMode(e.magnificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,n.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,n.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,n.getOpenGLWrapMode(e.wrapR)),e.context.bindTexture(e.target,null)))},n.getTextureUnit=()=>e._openGLRenderWindow?e._openGLRenderWindow.getTextureUnitForTexture(n):-1,n.activate=()=>{e._openGLRenderWindow.activateTexture(n),n.bind()},n.deactivate=()=>{e._openGLRenderWindow&&e._openGLRenderWindow.deactivateTexture(n)},n.releaseGraphicsResources=V=>{V&&e.handle&&(V.activateTexture(n),V.deactivateTexture(n),e.context.deleteTexture(e.handle),e._prevTexParams=null,e.handle=0,e.numberOfDimensions=0,e.target=0,e.internalFormat=0,e.format=0,e.openGLDataType=0,e.components=0,e.width=0,e.height=0,e.depth=0,e.allocatedGPUMemoryInBytes=0),e.shaderProgram&&(e.shaderProgram.releaseGraphicsResources(V),e.shaderProgram=null)},n.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&n.getMTime()>e.sendParametersTime.getMTime()&&n.sendParameters()},n.isBound=()=>{let V=!1;if(e.context&&e.handle){let U=0;switch(e.target){case e.context.TEXTURE_2D:U=e.context.TEXTURE_BINDING_2D;break;default:LA("impossible case");break}V=e.context.getIntegerv(U)===e.handle}return V},n.sendParameters=()=>{e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,n.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,n.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,n.getOpenGLWrapMode(e.wrapR)),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,n.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,n.getOpenGLFilterMode(e.magnificationFilter)),e._openGLRenderWindow.getWebgl2()&&(e.context.texParameteri(e.target,e.context.TEXTURE_BASE_LEVEL,e.baseLevel),e.context.texParameteri(e.target,e.context.TEXTURE_MAX_LEVEL,e.maxLevel)),e.sendParametersTime.modified()},n.getInternalFormat=(V,U)=>(e._forceInternalFormat||(e.internalFormat=n.getDefaultInternalFormat(V,U)),e.internalFormat||tS(`Unable to find suitable internal format for T=${V} NC= ${U}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&LA("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),n.getDefaultInternalFormat=(V,U)=>{let j=0;return j=e._openGLRenderWindow.getDefaultTextureInternalFormat(V,U,i(),n.useHalfFloat()),j||(j||(tS("Unsupported internal texture type!"),tS(`Unable to find suitable internal format for T=${V} NC= ${U}`)),j)},n.useHalfFloat=()=>e.enableUseHalfFloat&&e.canUseHalfFloat,n.setInternalFormat=V=>{e._forceInternalFormat=!0,V!==e.internalFormat&&(e.internalFormat=V,n.modified())},n.getFormat=(V,U)=>(e.format=n.getDefaultFormat(V,U),e.format),n.getDefaultFormat=(V,U)=>{if(e._openGLRenderWindow.getWebgl2())switch(U){case 1:return e.context.RED;case 2:return e.context.RG;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}else switch(U){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}},n.resetFormatAndType=()=>{e._prevTexParams=null,e.format=0,e.internalFormat=0,e._forceInternalFormat=!1,e.openGLDataType=0},n.getDefaultDataType=V=>{const U=n.useHalfFloat();if(e._openGLRenderWindow.getWebgl2())switch(V){case To.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(i()&&!U&&To.SHORT):return e.context.SHORT;case(i()&&!U&&To.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(U&&To.SHORT):return e.context.HALF_FLOAT;case(U&&To.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case To.FLOAT:case To.VOID:default:return e.context.FLOAT}switch(V){case To.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case To.FLOAT:case To.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const j=e.context.getExtension("OES_texture_half_float");if(j&&e.context.getExtension("OES_texture_half_float_linear"))return j.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},n.getOpenGLDataType=function(V){let U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||U)&&(e.openGLDataType=n.getDefaultDataType(V)),e.openGLDataType},n.getShiftAndScale=()=>{let V=0,U=1;switch(e.openGLDataType){case e.context.BYTE:U=127.5,V=U-128;break;case e.context.UNSIGNED_BYTE:U=255,V=0;break;case e.context.SHORT:U=32767.5,V=U-32768;break;case e.context.UNSIGNED_SHORT:U=65536,V=0;break;case e.context.INT:U=21474836475e-1,V=U-2147483648;break;case e.context.UNSIGNED_INT:U=4294967295,V=0;break;case e.context.FLOAT:}return{shift:V,scale:U}},n.getOpenGLFilterMode=V=>{switch(V){case c2.NEAREST:return e.context.NEAREST;case c2.LINEAR:return e.context.LINEAR;case c2.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case c2.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case c2.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case c2.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},n.getOpenGLWrapMode=V=>{switch(V){case Qf.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case Qf.REPEAT:return e.context.REPEAT;case Qf.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}};function l(V){const[U,j,z,$,K,X]=V;return[j-U+1,$-z+1,X-K+1]}function c(V){const[U,j,z]=l(V);return U*j*z}function g(V,U,j,z,$){const[K,X,ee,ne,le,ce]=j,[ge,pe]=U,we=ge*pe;let Te=$;for(let Ve=le;Ve<=ce;Ve++){const Pe=Ve*we;for(let je=ee;je<=ne;je++){const Je=Pe+je*ge;for(let it=Je+K,Ge=Je+X;it<=Ge;it++,Te++)z[Te]=V[it]}}}function v(V,U){const z=(arguments.length>2&&arguments[2]!==void 0?arguments[2]:null)||V.constructor,$=U.reduce((ne,le)=>ne+c(le),0),K=new z($),X=[e.width,e.height,e.depth];let ee=0;return U.forEach(ne=>{g(V,X,ne,K,ee),ee+=c(ne)}),K}n.updateArrayDataTypeForGL=function(V,U){let j=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];const $=[];let K=e.width*e.height*e.components;j&&(K*=e.depth);const X=!!z.length;if(V!==To.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let ne=0;neK?U[ne].subarray(0,K):U[ne];$.push(new Float32Array(le))}else $.push(null);if(V!==To.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let ne=0;neK?U[ne].subarray(0,K):U[ne];$.push(new Uint8Array(le))}else $.push(null);let ee=!1;if(e._openGLRenderWindow.getWebgl2())ee=e.openGLDataType===e.context.HALF_FLOAT;else{const ne=e.context.getExtension("OES_texture_half_float");ee=ne&&e.openGLDataType===ne.HALF_FLOAT_OES}if(ee)for(let ne=0;ne=z&&(Je=z-1);const it=Pe-je,Ge=1-it;je=je*j*$,Je=Je*j*$;for(let Ke=0;Ke=j&&(Et=j-1);const qt=ut-wt;wt*=$,Et*=$;for(let $t=0;$t<$;$t++)we?ce[Ve+qe+$t]=g6.toHalf(g6.fromHalf(V[le][je+wt+$t])*Ge*(1-qt)+g6.fromHalf(V[le][je+Et+$t])*Ge*qt+g6.fromHalf(V[le][Je+wt+$t])*it*(1-qt)+g6.fromHalf(V[le][Je+Et+$t])*it*qt):ce[Ve+qe+$t]=V[le][je+wt+$t]*Ge*(1-qt)+V[le][je+Et+$t]*Ge*qt+V[le][Je+wt+$t]*it*(1-qt)+V[le][Je+Et+$t]*it*qt}}U.push(ce),e.width=X,e.height=ee}else U.push(null)}if(U.length===0)for(let K=0;K5&&arguments[5]!==void 0?arguments[5]:!1;if(n.getOpenGLDataType(z,!0),n.getInternalFormat(z,j),n.getFormat(z,j),!e.internalFormat||!e.format||!e.openGLDataType)return t6("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=j,e.width=V,e.height=U,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(n),n.createTexture(),n.bind();const X=[$],ee=n.updateArrayDataTypeForGL(z,X),ne=_(ee);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,K),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),T(z)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),ne[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,ne[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,ne[0]),e.generateMipmap&&e.context.generateMipmap(e.target),K&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*j*e._openGLRenderWindow.getDefaultTextureByteSize(z,i(),n.useHalfFloat()),n.deactivate(),!0},n.createCubeFromRaw=(V,U,j,z,$)=>{if(n.getOpenGLDataType(z),n.getInternalFormat(z,j),n.getFormat(z,j),!e.internalFormat||!e.format||!e.openGLDataType)return t6("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=j,e.width=V,e.height=U,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(n),e.maxLevel=$.length/6-1,n.createTexture(),n.bind();const K=n.updateArrayDataTypeForGL(z,$),X=_(K),ee=[];let ne=e.width,le=e.height;for(let ce=0;ce=1&&we>=1;){let Te=null;ge<=e.maxLevel&&(Te=ee[6*ge+ce]),T(z)?Te!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+ce,ge,0,0,pe,we,e.format,e.openGLDataType,Te):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+ce,ge,e.internalFormat,pe,we,0,e.format,e.openGLDataType,Te),ge++,pe/=2,we/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*j*e._openGLRenderWindow.getDefaultTextureByteSize(z,i(),n.useHalfFloat()),n.deactivate(),!0},n.createDepthFromRaw=(V,U,j,z)=>(n.getOpenGLDataType(j),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?j===To.FLOAT?e.internalFormat=e.context.DEPTH_COMPONENT32F:e.internalFormat=e.context.DEPTH_COMPONENT16:e.internalFormat=e.context.DEPTH_COMPONENT,!e.internalFormat||!e.format||!e.openGLDataType?(t6("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=V,e.height=U,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(n),n.createTexture(),n.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),T(j)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),z!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,z)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,z),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(j,i(),n.useHalfFloat()),n.deactivate(),!0)),n.create2DFromImage=V=>{if(n.getOpenGLDataType(To.UNSIGNED_CHAR),n.getInternalFormat(To.UNSIGNED_CHAR,4),n.getFormat(To.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return t6("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=4,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(n),n.createTexture(),n.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1);const U=!e._openGLRenderWindow.getWebgl2()&&(!b3(V.width)||!b3(V.height)),j=document.createElement("canvas");j.width=U?gd(V.width):V.width,j.height=U?gd(V.height):V.height,e.width=j.width,e.height=j.height;const z=j.getContext("2d");z.translate(0,j.height),z.scale(1,-1),z.drawImage(V,0,0,V.width,V.height,0,0,j.width,j.height);const $=j;return T(To.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),$!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,$)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,$),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(To.UNSIGNED_CHAR,i(),n.useHalfFloat()),n.deactivate(),!0};function P(V,U,j){const z=new Array(j),$=new Array(j);for(let K=0;K2048||$<-2048||$>2048)return!1}return!0}function R(V,U,j,z){n.getOpenGLDataType(V);const $=I(U,j)||z;let K=!1;if(e._openGLRenderWindow.getWebgl2())K=e.openGLDataType===e.context.FLOAT&&e.context.getExtension("OES_texture_float_linear")===null&&$||e.openGLDataType===e.context.HALF_FLOAT;else{const X=e.context.getExtension("OES_texture_half_float");K=X&&e.openGLDataType===X.HALF_FLOAT_OES}e.canUseHalfFloat=K&&$}function L(V,U){const j=V.getNumberOfComponents(),z=V.getDataType(),$=V.getData(),K=new Array(j),X=new Array(j);for(let ne=0;ne5&&arguments[5]!==void 0?arguments[5]:!1,X=arguments.length>6&&arguments[6]!==void 0?arguments[6]:void 0;return n.create2DFilterableFromDataArray(V,U,d0.newInstance({numberOfComponents:j,dataType:z,values:$,ranges:X}),K)},n.create2DFilterableFromDataArray=function(V,U,j){let z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:$,dataType:K,data:X}=L(j,z);n.create2DFromRaw(V,U,$,K,X)},n.updateVolumeInfoForGL=(V,U)=>{var $,K;let j=!1;const z=n.useHalfFloat();(!(($=e.volumeInfo)!=null&&$.scale)||!((K=e.volumeInfo)!=null&&K.offset))&&(e.volumeInfo={scale:new Array(U),offset:new Array(U)});for(let X=0;X6&&arguments[6]!==void 0?arguments[6]:[],ee=$,ne=K;if(!n.updateVolumeInfoForGL(ee,z)&&ne){const Ve=V*U*j,Pe=structuredClone(e.volumeInfo),je=new Float32Array(Ve*z);e.volumeInfo.offset=Pe.offset,e.volumeInfo.scale=Pe.scale;let Je=0;const it=Pe.scale.map(Ge=>1/Ge);for(let Ge=0;Ge0,ce=!le||!MI(e._prevTexParams,o()),ge=[ne],we=n.updateArrayDataTypeForGL(ee,ge,!0,ce?[]:X),Te=_(we);if(e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),ce)T(ee)?(e.context.texStorage3D(e.target,1,e.internalFormat,e.width,e.height,e.depth),Te[0]!=null&&e.context.texSubImage3D(e.target,0,0,0,0,e.width,e.height,e.depth,e.format,e.openGLDataType,Te[0])):e.context.texImage3D(e.target,0,e.internalFormat,e.width,e.height,e.depth,0,e.format,e.openGLDataType,Te[0]),e._prevTexParams=o();else if(le){const Ve=Te[0];let Pe=0;for(let je=0;je6&&arguments[6]!==void 0?arguments[6]:!1,ee=arguments.length>7&&arguments[7]!==void 0?arguments[7]:void 0,ne=arguments.length>8&&arguments[8]!==void 0?arguments[8]:[];return n.create3DFilterableFromDataArray(V,U,j,d0.newInstance({numberOfComponents:z,dataType:$,values:K,ranges:ee}),X,ne)},n.create3DFilterableFromDataArray=function(V,U,j,z){let $=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,K=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[];const{numComps:X,dataType:ee,data:ne,scaleOffsets:le}=L(z,$),ce=[],ge=[];for(let Jt=0;Jt{Jt[Dn]=Nn},Ve=To.UNSIGNED_CHAR;if(ee===To.UNSIGNED_CHAR)for(let Jt=0;Jt{Jt[Dn]=(Nn-xn)/et}):(Ve=To.UNSIGNED_CHAR,Te=(Jt,Dn,Nn,xn,et)=>{Jt[Dn]=255*(Nn-xn)/et});if(n.getOpenGLDataType(Ve),n.getInternalFormat(Ve,X),n.getFormat(Ve,X),!e.internalFormat||!e.format||!e.openGLDataType)return t6("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=X,e.depth=1,e.numberOfDimensions=2;let Pe=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);Pe>4096&&(Ve===To.FLOAT||X>=3)&&(Pe=4096);let je=1,Je=1;pe>Pe*Pe&&(je=Math.ceil(Math.sqrt(pe/(Pe*Pe))),Je=je);let it=Math.sqrt(pe)/je;it=gd(it);const Ge=Math.floor(it*je/V),Ke=Math.ceil(j/Ge),qe=gd(U*Ke/Je);e.width=it,e.height=qe,e._openGLRenderWindow.activateTexture(n),n.createTexture(),n.bind(),e.volumeInfo.xreps=Ge,e.volumeInfo.yreps=Ke,e.volumeInfo.xstride=je,e.volumeInfo.ystride=Je,e.volumeInfo.offset=we.offset,e.volumeInfo.scale=we.scale;let ut;const wt=it*qe*X;Ve===To.FLOAT?ut=new Float32Array(wt):ut=new Uint8Array(wt);let Et=0;const qt=Math.floor(V/je),$t=Math.floor(U/Je);for(let Jt=0;Jt{e._openGLRenderWindow!==V&&(n.releaseGraphicsResources(),e._openGLRenderWindow=V,e.context=null,V&&(e.context=e._openGLRenderWindow.getContext()))},n.getMaximumTextureSize=V=>V&&V.isCurrent()?V.getIntegerv(V.MAX_TEXTURE_SIZE):-1,n.enableUseHalfFloat=V=>{e.enableUseHalfFloat=V}}const ore={_openGLRenderWindow:null,_forceInternalFormat:!1,_prevTexParams:null,context:null,handle:0,sendParametersTime:null,textureBuildTime:null,numberOfDimensions:0,target:0,format:0,openGLDataType:0,components:0,width:0,height:0,depth:0,autoParameters:!0,wrapS:Qf.CLAMP_TO_EDGE,wrapT:Qf.CLAMP_TO_EDGE,wrapR:Qf.CLAMP_TO_EDGE,minificationFilter:c2.NEAREST,magnificationFilter:c2.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0,enableUseHalfFloat:!0,canUseHalfFloat:!1};function jB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ore,o),Ha.extend(n,e,o),e.sendParametersTime={},_s(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},_s(e.textureBuildTime,{mtime:0}),Av(n,e,["format","openGLDataType"]),s2(n,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),el(n,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),Lv(n,e,["openGLRenderWindow"]),ire(n,e)}const zB=as(jB,"vtkOpenGLTexture");var Cs={newInstance:zB,extend:jB,...dB};R2("vtkTexture",zB);function sre(n,e){e.classHierarchy.push("vtkFramebuffer"),n.getBothMode=()=>e.context.FRAMEBUFFER,n.saveCurrentBindingsAndBuffers=o=>{const i=typeof o<"u"?o:n.getBothMode();n.saveCurrentBindings(i),n.saveCurrentBuffers(i)},n.saveCurrentBindings=o=>{if(!e.context){X0("you must set the OpenGLRenderWindow before calling saveCurrentBindings");return}const i=e.context;e.previousDrawBinding=i.getParameter(e.context.FRAMEBUFFER_BINDING),e.previousActiveFramebuffer=e._openGLRenderWindow.getActiveFramebuffer()},n.saveCurrentBuffers=o=>{},n.restorePreviousBindingsAndBuffers=o=>{const i=typeof o<"u"?o:n.getBothMode();n.restorePreviousBindings(i),n.restorePreviousBuffers(i)},n.restorePreviousBindings=o=>{if(!e.context){X0("you must set the OpenGLRenderWindow before calling restorePreviousBindings");return}const i=e.context;i.bindFramebuffer(i.FRAMEBUFFER,e.previousDrawBinding),e._openGLRenderWindow.setActiveFramebuffer(e.previousActiveFramebuffer)},n.restorePreviousBuffers=o=>{},n.bind=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;i===null&&(i=e.context.FRAMEBUFFER),e.context.bindFramebuffer(i,e.glFramebuffer);for(let l=0;l{if(!e.context){X0("you must set the OpenGLRenderWindow before calling create");return}e.glFramebuffer=e.context.createFramebuffer(),e.glFramebuffer.width=o,e.glFramebuffer.height=i},n.setColorBuffer=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const l=e.context;if(!l){X0("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let c=l.COLOR_ATTACHMENT0;if(i>0)if(e._openGLRenderWindow.getWebgl2())c+=i;else{X0("Using multiple framebuffer attachments requires WebGL 2");return}e.colorBuffers[i]=o,l.framebufferTexture2D(l.FRAMEBUFFER,c,l.TEXTURE_2D,o.getHandle(),0)},n.removeColorBuffer=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const i=e.context;if(!i){X0("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let l=i.COLOR_ATTACHMENT0;if(o>0)if(e._openGLRenderWindow.getWebgl2())l+=o;else{X0("Using multiple framebuffer attachments requires WebGL 2");return}i.framebufferTexture2D(i.FRAMEBUFFER,l,i.TEXTURE_2D,null,0),e.colorBuffers=e.colorBuffers.splice(o,1)},n.setDepthBuffer=o=>{if(!e.context){X0("you must set the OpenGLRenderWindow before calling setDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const i=e.context;i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,o.getHandle(),0)}else X0("Attaching depth buffer textures to fbo requires WebGL 2")},n.removeDepthBuffer=()=>{if(!e.context){X0("you must set the OpenGLRenderWindow before calling removeDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const o=e.context;o.framebufferTexture2D(o.FRAMEBUFFER,o.DEPTH_ATTACHMENT,o.TEXTURE_2D,null,0)}else X0("Attaching depth buffer textures to framebuffers requires WebGL 2")},n.getGLFramebuffer=()=>e.glFramebuffer,n.setOpenGLRenderWindow=o=>{e._openGLRenderWindow!==o&&(n.releaseGraphicsResources(),e._openGLRenderWindow=o,e.context=null,o&&(e.context=e._openGLRenderWindow.getContext()))},n.releaseGraphicsResources=()=>{e.glFramebuffer&&e.context.deleteFramebuffer(e.glFramebuffer)},n.getSize=()=>e.glFramebuffer==null?null:[e.glFramebuffer.width,e.glFramebuffer.height],n.populateFramebuffer=()=>{if(!e.context){X0("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}n.bind();const o=e.context,i=Cs.newInstance();i.setOpenGLRenderWindow(e._openGLRenderWindow),i.setMinificationFilter(qi.LINEAR),i.setMagnificationFilter(qi.LINEAR),i.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,b0.UNSIGNED_CHAR,null),n.setColorBuffer(i),e.depthTexture=o.createRenderbuffer(),o.bindRenderbuffer(o.RENDERBUFFER,e.depthTexture),o.renderbufferStorage(o.RENDERBUFFER,o.DEPTH_COMPONENT16,e.glFramebuffer.width,e.glFramebuffer.height),o.framebufferRenderbuffer(o.FRAMEBUFFER,o.DEPTH_ATTACHMENT,o.RENDERBUFFER,e.depthTexture)},n.getColorTexture=()=>e.colorBuffers[0]}const are={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function HB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,are,o),_s(n,e),e.colorBuffers&&X0("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],G8(n,e,["colorBuffers"]),sre(n,e)}const lre=as(HB,"vtkFramebuffer");var cC={newInstance:lre,extend:HB};function ure(n,e){e.classHierarchy.push("vtkRenderPass"),n.getOperation=()=>e.currentOperation,n.setCurrentOperation=o=>{e.currentOperation=o,e.currentTraverseOperation=`traverse${At.capitalize(e.currentOperation)}`},n.getTraverseOperation=()=>e.currentTraverseOperation,n.traverse=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e.deleted||(e._currentParent=i,e.preDelegateOperations.forEach(l=>{n.setCurrentOperation(l),o.traverse(n)}),e.delegates.forEach(l=>{l.traverse(o,n)}),e.postDelegateOperations.forEach(l=>{n.setCurrentOperation(l),o.traverse(n)}))}}const cre={delegates:[],currentOperation:null,preDelegateOperations:[],postDelegateOperations:[],currentParent:null};function KB(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cre,o),At.obj(n,e),At.get(n,e,["currentOperation"]),At.setGet(n,e,["delegates","_currentParent","preDelegateOperations","postDelegateOperations"]),At.moveToProtected(n,e,["currentParent"]),ure(n,e)}const fre=At.newInstance(KB,"vtkRenderPass");var ZI={newInstance:fre,extend:KB},ko=1e-6,fa=typeof Float32Array<"u"?Float32Array:Array,hre=Math.PI/180;function dre(n){return n*hre}function Hd(n,e){return Math.abs(n-e)<=ko*Math.max(1,Math.abs(n),Math.abs(e))}Math.hypot||(Math.hypot=function(){for(var n=0,e=arguments.length;e--;)n+=arguments[e]*arguments[e];return Math.sqrt(n)});function QI(){var n=new fa(9);return fa!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[5]=0,n[6]=0,n[7]=0),n[0]=1,n[4]=1,n[8]=1,n}function fC(n,e){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[4],n[4]=e[5],n[5]=e[6],n[6]=e[8],n[7]=e[9],n[8]=e[10],n}function gre(n){var e=new fa(9);return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e}function pre(n,e){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n}function V3(n,e,o,i,l,c,g,v,_){var T=new fa(9);return T[0]=n,T[1]=e,T[2]=o,T[3]=i,T[4]=l,T[5]=c,T[6]=g,T[7]=v,T[8]=_,T}function qB(n,e,o,i,l,c,g,v,_,T){return n[0]=e,n[1]=o,n[2]=i,n[3]=l,n[4]=c,n[5]=g,n[6]=v,n[7]=_,n[8]=T,n}function pc(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function eO(n,e){if(n===e){var o=e[1],i=e[2],l=e[5];n[1]=e[3],n[2]=e[6],n[3]=o,n[5]=e[7],n[6]=i,n[7]=l}else n[0]=e[0],n[1]=e[3],n[2]=e[6],n[3]=e[1],n[4]=e[4],n[5]=e[7],n[6]=e[2],n[7]=e[5],n[8]=e[8];return n}function Uv(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=e[4],v=e[5],_=e[6],T=e[7],P=e[8],I=P*g-v*T,R=-P*c+v*_,L=T*c-g*_,V=o*I+i*R+l*L;return V?(V=1/V,n[0]=I*V,n[1]=(-P*i+l*T)*V,n[2]=(v*i-l*g)*V,n[3]=R*V,n[4]=(P*o-l*_)*V,n[5]=(-v*o+l*c)*V,n[6]=L*V,n[7]=(-T*o+i*_)*V,n[8]=(g*o-i*c)*V,n):null}function mre(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=e[4],v=e[5],_=e[6],T=e[7],P=e[8];return n[0]=g*P-v*T,n[1]=l*T-i*P,n[2]=i*v-l*g,n[3]=v*_-c*P,n[4]=o*P-l*_,n[5]=l*c-o*v,n[6]=c*T-g*_,n[7]=i*_-o*T,n[8]=o*g-i*c,n}function ug(n){var e=n[0],o=n[1],i=n[2],l=n[3],c=n[4],g=n[5],v=n[6],_=n[7],T=n[8];return e*(T*c-g*_)+o*(-T*l+g*v)+i*(_*l-c*v)}function y8(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3],v=e[4],_=e[5],T=e[6],P=e[7],I=e[8],R=o[0],L=o[1],V=o[2],U=o[3],j=o[4],z=o[5],$=o[6],K=o[7],X=o[8];return n[0]=R*i+L*g+V*T,n[1]=R*l+L*v+V*P,n[2]=R*c+L*_+V*I,n[3]=U*i+j*g+z*T,n[4]=U*l+j*v+z*P,n[5]=U*c+j*_+z*I,n[6]=$*i+K*g+X*T,n[7]=$*l+K*v+X*P,n[8]=$*c+K*_+X*I,n}function vre(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3],v=e[4],_=e[5],T=e[6],P=e[7],I=e[8],R=o[0],L=o[1];return n[0]=i,n[1]=l,n[2]=c,n[3]=g,n[4]=v,n[5]=_,n[6]=R*i+L*g+T,n[7]=R*l+L*v+P,n[8]=R*c+L*_+I,n}function kre(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3],v=e[4],_=e[5],T=e[6],P=e[7],I=e[8],R=Math.sin(o),L=Math.cos(o);return n[0]=L*i+R*g,n[1]=L*l+R*v,n[2]=L*c+R*_,n[3]=L*g-R*i,n[4]=L*v-R*l,n[5]=L*_-R*c,n[6]=T,n[7]=P,n[8]=I,n}function yre(n,e,o){var i=o[0],l=o[1];return n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=l*e[3],n[4]=l*e[4],n[5]=l*e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n}function wre(n,e){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=e[0],n[7]=e[1],n[8]=1,n}function Cre(n,e){var o=Math.sin(e),i=Math.cos(e);return n[0]=i,n[1]=o,n[2]=0,n[3]=-o,n[4]=i,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function _re(n,e){return n[0]=e[0],n[1]=0,n[2]=0,n[3]=0,n[4]=e[1],n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function xre(n,e){return n[0]=e[0],n[1]=e[1],n[2]=0,n[3]=e[2],n[4]=e[3],n[5]=0,n[6]=e[4],n[7]=e[5],n[8]=1,n}function Sre(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=o+o,v=i+i,_=l+l,T=o*g,P=i*g,I=i*v,R=l*g,L=l*v,V=l*_,U=c*g,j=c*v,z=c*_;return n[0]=1-I-V,n[3]=P-z,n[6]=R+j,n[1]=P+z,n[4]=1-T-V,n[7]=L-U,n[2]=R-j,n[5]=L+U,n[8]=1-T-I,n}function Tre(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=e[4],v=e[5],_=e[6],T=e[7],P=e[8],I=e[9],R=e[10],L=e[11],V=e[12],U=e[13],j=e[14],z=e[15],$=o*v-i*g,K=o*_-l*g,X=o*T-c*g,ee=i*_-l*v,ne=i*T-c*v,le=l*T-c*_,ce=P*U-I*V,ge=P*j-R*V,pe=P*z-L*V,we=I*j-R*U,Te=I*z-L*U,Ve=R*z-L*j,Pe=$*Ve-K*Te+X*we+ee*pe-ne*ge+le*ce;return Pe?(Pe=1/Pe,n[0]=(v*Ve-_*Te+T*we)*Pe,n[1]=(_*pe-g*Ve-T*ge)*Pe,n[2]=(g*Te-v*pe+T*ce)*Pe,n[3]=(l*Te-i*Ve-c*we)*Pe,n[4]=(o*Ve-l*pe+c*ge)*Pe,n[5]=(i*pe-o*Te-c*ce)*Pe,n[6]=(U*le-j*ne+z*ee)*Pe,n[7]=(j*X-V*le-z*K)*Pe,n[8]=(V*ne-U*X+z*$)*Pe,n):null}function Ere(n,e,o){return n[0]=2/e,n[1]=0,n[2]=0,n[3]=0,n[4]=-2/o,n[5]=0,n[6]=-1,n[7]=1,n[8]=1,n}function Dre(n){return"mat3("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+")"}function Ire(n){return Math.hypot(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])}function Ore(n,e,o){return n[0]=e[0]+o[0],n[1]=e[1]+o[1],n[2]=e[2]+o[2],n[3]=e[3]+o[3],n[4]=e[4]+o[4],n[5]=e[5]+o[5],n[6]=e[6]+o[6],n[7]=e[7]+o[7],n[8]=e[8]+o[8],n}function XB(n,e,o){return n[0]=e[0]-o[0],n[1]=e[1]-o[1],n[2]=e[2]-o[2],n[3]=e[3]-o[3],n[4]=e[4]-o[4],n[5]=e[5]-o[5],n[6]=e[6]-o[6],n[7]=e[7]-o[7],n[8]=e[8]-o[8],n}function Mre(n,e,o){return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*o,n[4]=e[4]*o,n[5]=e[5]*o,n[6]=e[6]*o,n[7]=e[7]*o,n[8]=e[8]*o,n}function Pre(n,e,o,i){return n[0]=e[0]+o[0]*i,n[1]=e[1]+o[1]*i,n[2]=e[2]+o[2]*i,n[3]=e[3]+o[3]*i,n[4]=e[4]+o[4]*i,n[5]=e[5]+o[5]*i,n[6]=e[6]+o[6]*i,n[7]=e[7]+o[7]*i,n[8]=e[8]+o[8]*i,n}function Rre(n,e){return n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]&&n[3]===e[3]&&n[4]===e[4]&&n[5]===e[5]&&n[6]===e[6]&&n[7]===e[7]&&n[8]===e[8]}function Are(n,e){var o=n[0],i=n[1],l=n[2],c=n[3],g=n[4],v=n[5],_=n[6],T=n[7],P=n[8],I=e[0],R=e[1],L=e[2],V=e[3],U=e[4],j=e[5],z=e[6],$=e[7],K=e[8];return Math.abs(o-I)<=ko*Math.max(1,Math.abs(o),Math.abs(I))&&Math.abs(i-R)<=ko*Math.max(1,Math.abs(i),Math.abs(R))&&Math.abs(l-L)<=ko*Math.max(1,Math.abs(l),Math.abs(L))&&Math.abs(c-V)<=ko*Math.max(1,Math.abs(c),Math.abs(V))&&Math.abs(g-U)<=ko*Math.max(1,Math.abs(g),Math.abs(U))&&Math.abs(v-j)<=ko*Math.max(1,Math.abs(v),Math.abs(j))&&Math.abs(_-z)<=ko*Math.max(1,Math.abs(_),Math.abs(z))&&Math.abs(T-$)<=ko*Math.max(1,Math.abs(T),Math.abs($))&&Math.abs(P-K)<=ko*Math.max(1,Math.abs(P),Math.abs(K))}var Lre=y8,Nre=XB;const bre=Object.freeze(Object.defineProperty({__proto__:null,add:Ore,adjoint:mre,clone:gre,copy:pre,create:QI,determinant:ug,equals:Are,exactEquals:Rre,frob:Ire,fromMat2d:xre,fromMat4:fC,fromQuat:Sre,fromRotation:Cre,fromScaling:_re,fromTranslation:wre,fromValues:V3,identity:pc,invert:Uv,mul:Lre,multiply:y8,multiplyScalar:Mre,multiplyScalarAndAdd:Pre,normalFromMat4:Tre,projection:Ere,rotate:kre,scale:yre,set:qB,str:Dre,sub:Nre,subtract:XB,translate:vre,transpose:eO},Symbol.toStringTag,{value:"Module"}));function Dl(){var n=new fa(16);return fa!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0),n[0]=1,n[5]=1,n[10]=1,n[15]=1,n}function Fre(n){var e=new fa(16);return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],e}function Ea(n,e){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n}function tO(n,e,o,i,l,c,g,v,_,T,P,I,R,L,V,U){var j=new fa(16);return j[0]=n,j[1]=e,j[2]=o,j[3]=i,j[4]=l,j[5]=c,j[6]=g,j[7]=v,j[8]=_,j[9]=T,j[10]=P,j[11]=I,j[12]=R,j[13]=L,j[14]=V,j[15]=U,j}function Vre(n,e,o,i,l,c,g,v,_,T,P,I,R,L,V,U,j){return n[0]=e,n[1]=o,n[2]=i,n[3]=l,n[4]=c,n[5]=g,n[6]=v,n[7]=_,n[8]=T,n[9]=P,n[10]=I,n[11]=R,n[12]=L,n[13]=V,n[14]=U,n[15]=j,n}function zi(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function po(n,e){if(n===e){var o=e[1],i=e[2],l=e[3],c=e[6],g=e[7],v=e[11];n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=o,n[6]=e[9],n[7]=e[13],n[8]=i,n[9]=c,n[11]=e[14],n[12]=l,n[13]=g,n[14]=v}else n[0]=e[0],n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=e[1],n[5]=e[5],n[6]=e[9],n[7]=e[13],n[8]=e[2],n[9]=e[6],n[10]=e[10],n[11]=e[14],n[12]=e[3],n[13]=e[7],n[14]=e[11],n[15]=e[15];return n}function Ia(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=e[4],v=e[5],_=e[6],T=e[7],P=e[8],I=e[9],R=e[10],L=e[11],V=e[12],U=e[13],j=e[14],z=e[15],$=o*v-i*g,K=o*_-l*g,X=o*T-c*g,ee=i*_-l*v,ne=i*T-c*v,le=l*T-c*_,ce=P*U-I*V,ge=P*j-R*V,pe=P*z-L*V,we=I*j-R*U,Te=I*z-L*U,Ve=R*z-L*j,Pe=$*Ve-K*Te+X*we+ee*pe-ne*ge+le*ce;return Pe?(Pe=1/Pe,n[0]=(v*Ve-_*Te+T*we)*Pe,n[1]=(l*Te-i*Ve-c*we)*Pe,n[2]=(U*le-j*ne+z*ee)*Pe,n[3]=(R*ne-I*le-L*ee)*Pe,n[4]=(_*pe-g*Ve-T*ge)*Pe,n[5]=(o*Ve-l*pe+c*ge)*Pe,n[6]=(j*X-V*le-z*K)*Pe,n[7]=(P*le-R*X+L*K)*Pe,n[8]=(g*Te-v*pe+T*ce)*Pe,n[9]=(i*pe-o*Te-c*ce)*Pe,n[10]=(V*ne-U*X+z*$)*Pe,n[11]=(I*X-P*ne-L*$)*Pe,n[12]=(v*ge-g*we-_*ce)*Pe,n[13]=(o*we-i*ge+l*ce)*Pe,n[14]=(U*K-V*ee-j*$)*Pe,n[15]=(P*ee-I*K+R*$)*Pe,n):null}function Ure(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=e[4],v=e[5],_=e[6],T=e[7],P=e[8],I=e[9],R=e[10],L=e[11],V=e[12],U=e[13],j=e[14],z=e[15];return n[0]=v*(R*z-L*j)-I*(_*z-T*j)+U*(_*L-T*R),n[1]=-(i*(R*z-L*j)-I*(l*z-c*j)+U*(l*L-c*R)),n[2]=i*(_*z-T*j)-v*(l*z-c*j)+U*(l*T-c*_),n[3]=-(i*(_*L-T*R)-v*(l*L-c*R)+I*(l*T-c*_)),n[4]=-(g*(R*z-L*j)-P*(_*z-T*j)+V*(_*L-T*R)),n[5]=o*(R*z-L*j)-P*(l*z-c*j)+V*(l*L-c*R),n[6]=-(o*(_*z-T*j)-g*(l*z-c*j)+V*(l*T-c*_)),n[7]=o*(_*L-T*R)-g*(l*L-c*R)+P*(l*T-c*_),n[8]=g*(I*z-L*U)-P*(v*z-T*U)+V*(v*L-T*I),n[9]=-(o*(I*z-L*U)-P*(i*z-c*U)+V*(i*L-c*I)),n[10]=o*(v*z-T*U)-g*(i*z-c*U)+V*(i*T-c*v),n[11]=-(o*(v*L-T*I)-g*(i*L-c*I)+P*(i*T-c*v)),n[12]=-(g*(I*j-R*U)-P*(v*j-_*U)+V*(v*R-_*I)),n[13]=o*(I*j-R*U)-P*(i*j-l*U)+V*(i*R-l*I),n[14]=-(o*(v*j-_*U)-g*(i*j-l*U)+V*(i*_-l*v)),n[15]=o*(v*R-_*I)-g*(i*R-l*I)+P*(i*_-l*v),n}function Bre(n){var e=n[0],o=n[1],i=n[2],l=n[3],c=n[4],g=n[5],v=n[6],_=n[7],T=n[8],P=n[9],I=n[10],R=n[11],L=n[12],V=n[13],U=n[14],j=n[15],z=e*g-o*c,$=e*v-i*c,K=e*_-l*c,X=o*v-i*g,ee=o*_-l*g,ne=i*_-l*v,le=T*V-P*L,ce=T*U-I*L,ge=T*j-R*L,pe=P*U-I*V,we=P*j-R*V,Te=I*j-R*U;return z*Te-$*we+K*pe+X*ge-ee*ce+ne*le}function Y0(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3],v=e[4],_=e[5],T=e[6],P=e[7],I=e[8],R=e[9],L=e[10],V=e[11],U=e[12],j=e[13],z=e[14],$=e[15],K=o[0],X=o[1],ee=o[2],ne=o[3];return n[0]=K*i+X*v+ee*I+ne*U,n[1]=K*l+X*_+ee*R+ne*j,n[2]=K*c+X*T+ee*L+ne*z,n[3]=K*g+X*P+ee*V+ne*$,K=o[4],X=o[5],ee=o[6],ne=o[7],n[4]=K*i+X*v+ee*I+ne*U,n[5]=K*l+X*_+ee*R+ne*j,n[6]=K*c+X*T+ee*L+ne*z,n[7]=K*g+X*P+ee*V+ne*$,K=o[8],X=o[9],ee=o[10],ne=o[11],n[8]=K*i+X*v+ee*I+ne*U,n[9]=K*l+X*_+ee*R+ne*j,n[10]=K*c+X*T+ee*L+ne*z,n[11]=K*g+X*P+ee*V+ne*$,K=o[12],X=o[13],ee=o[14],ne=o[15],n[12]=K*i+X*v+ee*I+ne*U,n[13]=K*l+X*_+ee*R+ne*j,n[14]=K*c+X*T+ee*L+ne*z,n[15]=K*g+X*P+ee*V+ne*$,n}function Ns(n,e,o){var i=o[0],l=o[1],c=o[2],g,v,_,T,P,I,R,L,V,U,j,z;return e===n?(n[12]=e[0]*i+e[4]*l+e[8]*c+e[12],n[13]=e[1]*i+e[5]*l+e[9]*c+e[13],n[14]=e[2]*i+e[6]*l+e[10]*c+e[14],n[15]=e[3]*i+e[7]*l+e[11]*c+e[15]):(g=e[0],v=e[1],_=e[2],T=e[3],P=e[4],I=e[5],R=e[6],L=e[7],V=e[8],U=e[9],j=e[10],z=e[11],n[0]=g,n[1]=v,n[2]=_,n[3]=T,n[4]=P,n[5]=I,n[6]=R,n[7]=L,n[8]=V,n[9]=U,n[10]=j,n[11]=z,n[12]=g*i+P*l+V*c+e[12],n[13]=v*i+I*l+U*c+e[13],n[14]=_*i+R*l+j*c+e[14],n[15]=T*i+L*l+z*c+e[15]),n}function hf(n,e,o){var i=o[0],l=o[1],c=o[2];return n[0]=e[0]*i,n[1]=e[1]*i,n[2]=e[2]*i,n[3]=e[3]*i,n[4]=e[4]*l,n[5]=e[5]*l,n[6]=e[6]*l,n[7]=e[7]*l,n[8]=e[8]*c,n[9]=e[9]*c,n[10]=e[10]*c,n[11]=e[11]*c,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n}function a1(n,e,o,i){var l=i[0],c=i[1],g=i[2],v=Math.hypot(l,c,g),_,T,P,I,R,L,V,U,j,z,$,K,X,ee,ne,le,ce,ge,pe,we,Te,Ve,Pe,je;return v0?(o[0]=(v*g+P*i+_*c-T*l)*2/I,o[1]=(_*g+P*l+T*i-v*c)*2/I,o[2]=(T*g+P*c+v*l-_*i)*2/I):(o[0]=(v*g+P*i+_*c-T*l)*2,o[1]=(_*g+P*l+T*i-v*c)*2,o[2]=(T*g+P*c+v*l-_*i)*2),YB(n,e,o),n}function zre(n,e){return n[0]=e[12],n[1]=e[13],n[2]=e[14],n}function JB(n,e){var o=e[0],i=e[1],l=e[2],c=e[4],g=e[5],v=e[6],_=e[8],T=e[9],P=e[10];return n[0]=Math.hypot(o,i,l),n[1]=Math.hypot(c,g,v),n[2]=Math.hypot(_,T,P),n}function dE(n,e){var o=new fa(3);JB(o,e);var i=1/o[0],l=1/o[1],c=1/o[2],g=e[0]*i,v=e[1]*l,_=e[2]*c,T=e[4]*i,P=e[5]*l,I=e[6]*c,R=e[8]*i,L=e[9]*l,V=e[10]*c,U=g+P+V,j=0;return U>0?(j=Math.sqrt(U+1)*2,n[3]=.25*j,n[0]=(I-L)/j,n[1]=(R-_)/j,n[2]=(v-T)/j):g>P&&g>V?(j=Math.sqrt(1+g-P-V)*2,n[3]=(I-L)/j,n[0]=.25*j,n[1]=(v+T)/j,n[2]=(R+_)/j):P>V?(j=Math.sqrt(1+P-g-V)*2,n[3]=(R-_)/j,n[0]=(v+T)/j,n[1]=.25*j,n[2]=(I+L)/j):(j=Math.sqrt(1+V-g-P)*2,n[3]=(v-T)/j,n[0]=(R+_)/j,n[1]=(I+L)/j,n[2]=.25*j),n}function ZB(n,e,o,i){var l=e[0],c=e[1],g=e[2],v=e[3],_=l+l,T=c+c,P=g+g,I=l*_,R=l*T,L=l*P,V=c*T,U=c*P,j=g*P,z=v*_,$=v*T,K=v*P,X=i[0],ee=i[1],ne=i[2];return n[0]=(1-(V+j))*X,n[1]=(R+K)*X,n[2]=(L-$)*X,n[3]=0,n[4]=(R-K)*ee,n[5]=(1-(I+j))*ee,n[6]=(U+z)*ee,n[7]=0,n[8]=(L+$)*ne,n[9]=(U-z)*ne,n[10]=(1-(I+V))*ne,n[11]=0,n[12]=o[0],n[13]=o[1],n[14]=o[2],n[15]=1,n}function Hre(n,e,o,i,l){var c=e[0],g=e[1],v=e[2],_=e[3],T=c+c,P=g+g,I=v+v,R=c*T,L=c*P,V=c*I,U=g*P,j=g*I,z=v*I,$=_*T,K=_*P,X=_*I,ee=i[0],ne=i[1],le=i[2],ce=l[0],ge=l[1],pe=l[2],we=(1-(U+z))*ee,Te=(L+X)*ee,Ve=(V-K)*ee,Pe=(L-X)*ne,je=(1-(R+z))*ne,Je=(j+$)*ne,it=(V+K)*le,Ge=(j-$)*le,Ke=(1-(R+U))*le;return n[0]=we,n[1]=Te,n[2]=Ve,n[3]=0,n[4]=Pe,n[5]=je,n[6]=Je,n[7]=0,n[8]=it,n[9]=Ge,n[10]=Ke,n[11]=0,n[12]=o[0]+ce-(we*ce+Pe*ge+it*pe),n[13]=o[1]+ge-(Te*ce+je*ge+Ge*pe),n[14]=o[2]+pe-(Ve*ce+Je*ge+Ke*pe),n[15]=1,n}function Uw(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=o+o,v=i+i,_=l+l,T=o*g,P=i*g,I=i*v,R=l*g,L=l*v,V=l*_,U=c*g,j=c*v,z=c*_;return n[0]=1-I-V,n[1]=P+z,n[2]=R-j,n[3]=0,n[4]=P-z,n[5]=1-T-V,n[6]=L+U,n[7]=0,n[8]=R+j,n[9]=L-U,n[10]=1-T-I,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function Kre(n,e,o,i,l,c,g){var v=1/(o-e),_=1/(l-i),T=1/(c-g);return n[0]=c*2*v,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=c*2*_,n[6]=0,n[7]=0,n[8]=(o+e)*v,n[9]=(l+i)*_,n[10]=(g+c)*T,n[11]=-1,n[12]=0,n[13]=0,n[14]=g*c*2*T,n[15]=0,n}function QB(n,e,o,i,l){var c=1/Math.tan(e/2),g;return n[0]=c/o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=c,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,l!=null&&l!==1/0?(g=1/(i-l),n[10]=(l+i)*g,n[14]=2*l*i*g):(n[10]=-1,n[14]=-2*i),n}var qre=QB;function Xre(n,e,o,i,l){var c=1/Math.tan(e/2),g;return n[0]=c/o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=c,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,l!=null&&l!==1/0?(g=1/(i-l),n[10]=l*g,n[14]=l*i*g):(n[10]=-1,n[14]=-i),n}function Yre(n,e,o,i){var l=Math.tan(e.upDegrees*Math.PI/180),c=Math.tan(e.downDegrees*Math.PI/180),g=Math.tan(e.leftDegrees*Math.PI/180),v=Math.tan(e.rightDegrees*Math.PI/180),_=2/(g+v),T=2/(l+c);return n[0]=_,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=T,n[6]=0,n[7]=0,n[8]=-((g-v)*_*.5),n[9]=(l-c)*T*.5,n[10]=i/(o-i),n[11]=-1,n[12]=0,n[13]=0,n[14]=i*o/(o-i),n[15]=0,n}function eG(n,e,o,i,l,c,g){var v=1/(e-o),_=1/(i-l),T=1/(c-g);return n[0]=-2*v,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=-2*_,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=2*T,n[11]=0,n[12]=(e+o)*v,n[13]=(l+i)*_,n[14]=(g+c)*T,n[15]=1,n}var aO=eG;function Jre(n,e,o,i,l,c,g){var v=1/(e-o),_=1/(i-l),T=1/(c-g);return n[0]=-2*v,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=-2*_,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=T,n[11]=0,n[12]=(e+o)*v,n[13]=(l+i)*_,n[14]=c*T,n[15]=1,n}function lO(n,e,o,i){var l,c,g,v,_,T,P,I,R,L,V=e[0],U=e[1],j=e[2],z=i[0],$=i[1],K=i[2],X=o[0],ee=o[1],ne=o[2];return Math.abs(V-X)0&&(L=1/Math.sqrt(L),P*=L,I*=L,R*=L);var V=_*R-T*I,U=T*P-v*R,j=v*I-_*P;return L=V*V+U*U+j*j,L>0&&(L=1/Math.sqrt(L),V*=L,U*=L,j*=L),n[0]=V,n[1]=U,n[2]=j,n[3]=0,n[4]=I*j-R*U,n[5]=R*V-P*j,n[6]=P*U-I*V,n[7]=0,n[8]=P,n[9]=I,n[10]=R,n[11]=0,n[12]=l,n[13]=c,n[14]=g,n[15]=1,n}function Qre(n){return"mat4("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+", "+n[9]+", "+n[10]+", "+n[11]+", "+n[12]+", "+n[13]+", "+n[14]+", "+n[15]+")"}function eie(n){return Math.hypot(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11],n[12],n[13],n[14],n[15])}function tie(n,e,o){return n[0]=e[0]+o[0],n[1]=e[1]+o[1],n[2]=e[2]+o[2],n[3]=e[3]+o[3],n[4]=e[4]+o[4],n[5]=e[5]+o[5],n[6]=e[6]+o[6],n[7]=e[7]+o[7],n[8]=e[8]+o[8],n[9]=e[9]+o[9],n[10]=e[10]+o[10],n[11]=e[11]+o[11],n[12]=e[12]+o[12],n[13]=e[13]+o[13],n[14]=e[14]+o[14],n[15]=e[15]+o[15],n}function tG(n,e,o){return n[0]=e[0]-o[0],n[1]=e[1]-o[1],n[2]=e[2]-o[2],n[3]=e[3]-o[3],n[4]=e[4]-o[4],n[5]=e[5]-o[5],n[6]=e[6]-o[6],n[7]=e[7]-o[7],n[8]=e[8]-o[8],n[9]=e[9]-o[9],n[10]=e[10]-o[10],n[11]=e[11]-o[11],n[12]=e[12]-o[12],n[13]=e[13]-o[13],n[14]=e[14]-o[14],n[15]=e[15]-o[15],n}function nG(n,e,o){return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*o,n[4]=e[4]*o,n[5]=e[5]*o,n[6]=e[6]*o,n[7]=e[7]*o,n[8]=e[8]*o,n[9]=e[9]*o,n[10]=e[10]*o,n[11]=e[11]*o,n[12]=e[12]*o,n[13]=e[13]*o,n[14]=e[14]*o,n[15]=e[15]*o,n}function nie(n,e,o,i){return n[0]=e[0]+o[0]*i,n[1]=e[1]+o[1]*i,n[2]=e[2]+o[2]*i,n[3]=e[3]+o[3]*i,n[4]=e[4]+o[4]*i,n[5]=e[5]+o[5]*i,n[6]=e[6]+o[6]*i,n[7]=e[7]+o[7]*i,n[8]=e[8]+o[8]*i,n[9]=e[9]+o[9]*i,n[10]=e[10]+o[10]*i,n[11]=e[11]+o[11]*i,n[12]=e[12]+o[12]*i,n[13]=e[13]+o[13]*i,n[14]=e[14]+o[14]*i,n[15]=e[15]+o[15]*i,n}function rie(n,e){return n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]&&n[3]===e[3]&&n[4]===e[4]&&n[5]===e[5]&&n[6]===e[6]&&n[7]===e[7]&&n[8]===e[8]&&n[9]===e[9]&&n[10]===e[10]&&n[11]===e[11]&&n[12]===e[12]&&n[13]===e[13]&&n[14]===e[14]&&n[15]===e[15]}function iie(n,e){var o=n[0],i=n[1],l=n[2],c=n[3],g=n[4],v=n[5],_=n[6],T=n[7],P=n[8],I=n[9],R=n[10],L=n[11],V=n[12],U=n[13],j=n[14],z=n[15],$=e[0],K=e[1],X=e[2],ee=e[3],ne=e[4],le=e[5],ce=e[6],ge=e[7],pe=e[8],we=e[9],Te=e[10],Ve=e[11],Pe=e[12],je=e[13],Je=e[14],it=e[15];return Math.abs(o-$)<=ko*Math.max(1,Math.abs(o),Math.abs($))&&Math.abs(i-K)<=ko*Math.max(1,Math.abs(i),Math.abs(K))&&Math.abs(l-X)<=ko*Math.max(1,Math.abs(l),Math.abs(X))&&Math.abs(c-ee)<=ko*Math.max(1,Math.abs(c),Math.abs(ee))&&Math.abs(g-ne)<=ko*Math.max(1,Math.abs(g),Math.abs(ne))&&Math.abs(v-le)<=ko*Math.max(1,Math.abs(v),Math.abs(le))&&Math.abs(_-ce)<=ko*Math.max(1,Math.abs(_),Math.abs(ce))&&Math.abs(T-ge)<=ko*Math.max(1,Math.abs(T),Math.abs(ge))&&Math.abs(P-pe)<=ko*Math.max(1,Math.abs(P),Math.abs(pe))&&Math.abs(I-we)<=ko*Math.max(1,Math.abs(I),Math.abs(we))&&Math.abs(R-Te)<=ko*Math.max(1,Math.abs(R),Math.abs(Te))&&Math.abs(L-Ve)<=ko*Math.max(1,Math.abs(L),Math.abs(Ve))&&Math.abs(V-Pe)<=ko*Math.max(1,Math.abs(V),Math.abs(Pe))&&Math.abs(U-je)<=ko*Math.max(1,Math.abs(U),Math.abs(je))&&Math.abs(j-Je)<=ko*Math.max(1,Math.abs(j),Math.abs(Je))&&Math.abs(z-it)<=ko*Math.max(1,Math.abs(z),Math.abs(it))}var Bw=Y0,oie=tG;const Gw=Object.freeze(Object.defineProperty({__proto__:null,add:tie,adjoint:Ure,clone:Fre,copy:Ea,create:Dl,determinant:Bre,equals:iie,exactEquals:rie,frob:eie,fromQuat:Uw,fromQuat2:jre,fromRotation:sO,fromRotationTranslation:YB,fromRotationTranslationScale:ZB,fromRotationTranslationScaleOrigin:Hre,fromScaling:oO,fromTranslation:Bv,fromValues:tO,fromXRotation:Gre,fromYRotation:Wre,fromZRotation:$re,frustum:Kre,getRotation:dE,getScaling:JB,getTranslation:zre,identity:zi,invert:Ia,lookAt:lO,mul:Bw,multiply:Y0,multiplyScalar:nG,multiplyScalarAndAdd:nie,ortho:aO,orthoNO:eG,orthoZO:Jre,perspective:qre,perspectiveFromFieldOfView:Yre,perspectiveNO:QB,perspectiveZO:Xre,rotate:a1,rotateX:nO,rotateY:rO,rotateZ:iO,scale:hf,set:Vre,str:Qre,sub:oie,subtract:tG,targetTo:Zre,translate:Ns,transpose:po},Symbol.toStringTag,{value:"Module"}));function nr(){var n=new fa(3);return fa!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0),n}function rG(n){var e=new fa(3);return e[0]=n[0],e[1]=n[1],e[2]=n[2],e}function K1(n){var e=n[0],o=n[1],i=n[2];return Math.hypot(e,o,i)}function Ei(n,e,o){var i=new fa(3);return i[0]=n,i[1]=e,i[2]=o,i}function sie(n,e){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n}function Ao(n,e,o,i){return n[0]=e,n[1]=o,n[2]=i,n}function v2(n,e,o){return n[0]=e[0]+o[0],n[1]=e[1]+o[1],n[2]=e[2]+o[2],n}function Wo(n,e,o){return n[0]=e[0]-o[0],n[1]=e[1]-o[1],n[2]=e[2]-o[2],n}function aie(n,e,o){return n[0]=e[0]*o[0],n[1]=e[1]*o[1],n[2]=e[2]*o[2],n}function lie(n,e,o){return n[0]=e[0]/o[0],n[1]=e[1]/o[1],n[2]=e[2]/o[2],n}function uie(n,e,o){return n[0]=Math.min(e[0],o[0]),n[1]=Math.min(e[1],o[1]),n[2]=Math.min(e[2],o[2]),n}function cie(n,e,o){return n[0]=Math.max(e[0],o[0]),n[1]=Math.max(e[1],o[1]),n[2]=Math.max(e[2],o[2]),n}function fie(n,e){return n[0]=Math.round(e[0]),n[1]=Math.round(e[1]),n[2]=Math.round(e[2]),n}function k2(n,e,o){return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n}function j0(n,e,o,i){return n[0]=e[0]+o[0]*i,n[1]=e[1]+o[1]*i,n[2]=e[2]+o[2]*i,n}function y2(n,e){var o=e[0]-n[0],i=e[1]-n[1],l=e[2]-n[2];return Math.hypot(o,i,l)}function iG(n,e){var o=e[0]-n[0],i=e[1]-n[1],l=e[2]-n[2];return o*o+i*i+l*l}function sf(n,e){return n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n}function oG(n,e){return n[0]=1/e[0],n[1]=1/e[1],n[2]=1/e[2],n}function Uo(n,e){var o=e[0],i=e[1],l=e[2],c=o*o+i*i+l*l;return c>0&&(c=1/Math.sqrt(c)),n[0]=e[0]*c,n[1]=e[1]*c,n[2]=e[2]*c,n}function mi(n,e){return n[0]*e[0]+n[1]*e[1]+n[2]*e[2]}function ro(n,e,o){var i=e[0],l=e[1],c=e[2],g=o[0],v=o[1],_=o[2];return n[0]=l*_-c*v,n[1]=c*g-i*_,n[2]=i*v-l*g,n}function g0(n,e,o){var i=e[0],l=e[1],c=e[2],g=o[3]*i+o[7]*l+o[11]*c+o[15];return g=g||1,n[0]=(o[0]*i+o[4]*l+o[8]*c+o[12])/g,n[1]=(o[1]*i+o[5]*l+o[9]*c+o[13])/g,n[2]=(o[2]*i+o[6]*l+o[10]*c+o[14])/g,n}function V7(n,e,o){var i=e[0],l=e[1],c=e[2];return n[0]=i*o[0]+l*o[3]+c*o[6],n[1]=i*o[1]+l*o[4]+c*o[7],n[2]=i*o[2]+l*o[5]+c*o[8],n}function hie(n,e,o){var i=o[0],l=o[1],c=o[2],g=o[3],v=e[0],_=e[1],T=e[2],P=l*T-c*_,I=c*v-i*T,R=i*_-l*v,L=l*R-c*I,V=c*P-i*R,U=i*I-l*P,j=g*2;return P*=j,I*=j,R*=j,L*=2,V*=2,U*=2,n[0]=v+P+L,n[1]=_+I+V,n[2]=T+R+U,n}function uO(n,e){var o=n[0],i=n[1],l=n[2],c=e[0],g=e[1],v=e[2],_=Math.sqrt(o*o+i*i+l*l),T=Math.sqrt(c*c+g*g+v*v),P=_*T,I=P&&mi(n,e)/P;return Math.acos(Math.min(Math.max(I,-1),1))}function die(n){return n[0]=0,n[1]=0,n[2]=0,n}function NA(n,e){return n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]}function gE(n,e){var o=n[0],i=n[1],l=n[2],c=e[0],g=e[1],v=e[2];return Math.abs(o-c)<=ko*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-g)<=ko*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(l-v)<=ko*Math.max(1,Math.abs(l),Math.abs(v))}var z0=Wo,gie=aie,pE=iG,w8=K1;(function(){var n=nr();return function(e,o,i,l,c,g){var v,_;for(o||(o=3),i||(i=0),l?_=Math.min(l*o+i,e.length):_=e.length,v=i;v<_;v+=o)n[0]=e[v],n[1]=e[v+1],n[2]=e[v+2],c(n,n,g),e[v]=n[0],e[v+1]=n[1],e[v+2]=n[2];return e}})();function sG(){var n=new fa(4);return fa!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0,n[3]=0),n}function U7(n,e,o,i){var l=new fa(4);return l[0]=n,l[1]=e,l[2]=o,l[3]=i,l}function bA(n,e,o){return n[0]=e[0]-o[0],n[1]=e[1]-o[1],n[2]=e[2]-o[2],n[3]=e[3]-o[3],n}function pie(n,e){var o=e[0],i=e[1],l=e[2],c=e[3],g=o*o+i*i+l*l+c*c;return g>0&&(g=1/Math.sqrt(g)),n[0]=o*g,n[1]=i*g,n[2]=l*g,n[3]=c*g,n}function FA(n,e){return n[0]*e[0]+n[1]*e[1]+n[2]*e[2]+n[3]*e[3]}function Ed(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3];return n[0]=o[0]*i+o[4]*l+o[8]*c+o[12]*g,n[1]=o[1]*i+o[5]*l+o[9]*c+o[13]*g,n[2]=o[2]*i+o[6]*l+o[10]*c+o[14]*g,n[3]=o[3]*i+o[7]*l+o[11]*c+o[15]*g,n}(function(){var n=sG();return function(e,o,i,l,c,g){var v,_;for(o||(o=4),i||(i=0),l?_=Math.min(l*o+i,e.length):_=e.length,v=i;v<_;v+=o)n[0]=e[v],n[1]=e[v+1],n[2]=e[v+2],n[3]=e[v+3],c(n,n,g),e[v]=n[0],e[v+1]=n[1],e[v+2]=n[2],e[v+3]=n[3];return e}})();function Kd(){var n=new fa(4);return fa!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0),n[3]=1,n}function hC(n,e,o){o=o*.5;var i=Math.sin(o);return n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=Math.cos(o),n}function mie(n,e){var o=Math.acos(e[3])*2,i=Math.sin(o/2);return i>ko?(n[0]=e[0]/i,n[1]=e[1]/i,n[2]=e[2]/i):(n[0]=1,n[1]=0,n[2]=0),o}function VA(n,e,o){var i=e[0],l=e[1],c=e[2],g=e[3],v=o[0],_=o[1],T=o[2],P=o[3];return n[0]=i*P+g*v+l*T-c*_,n[1]=l*P+g*_+c*v-i*T,n[2]=c*P+g*T+i*_-l*v,n[3]=g*P-i*v-l*_-c*T,n}function B7(n,e,o,i){var l=e[0],c=e[1],g=e[2],v=e[3],_=o[0],T=o[1],P=o[2],I=o[3],R,L,V,U,j;return L=l*_+c*T+g*P+v*I,L<0&&(L=-L,_=-_,T=-T,P=-P,I=-I),1-L>ko?(R=Math.acos(L),V=Math.sin(R),U=Math.sin((1-i)*R)/V,j=Math.sin(i*R)/V):(U=1-i,j=i),n[0]=U*l+j*_,n[1]=U*c+j*T,n[2]=U*g+j*P,n[3]=U*v+j*I,n}function vie(n,e){return n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n[3]=e[3],n}function kie(n,e){var o=e[0]+e[4]+e[8],i;if(o>0)i=Math.sqrt(o+1),n[3]=.5*i,i=.5/i,n[0]=(e[5]-e[7])*i,n[1]=(e[6]-e[2])*i,n[2]=(e[1]-e[3])*i;else{var l=0;e[4]>e[0]&&(l=1),e[8]>e[l*3+l]&&(l=2);var c=(l+1)%3,g=(l+2)%3;i=Math.sqrt(e[l*3+l]-e[c*3+c]-e[g*3+g]+1),n[l]=.5*i,i=.5/i,n[3]=(e[c*3+g]-e[g*3+c])*i,n[c]=(e[c*3+l]+e[l*3+c])*i,n[g]=(e[g*3+l]+e[l*3+g])*i}return n}var UA=U7,aG=pie;(function(){var n=nr(),e=Ei(1,0,0),o=Ei(0,1,0);return function(i,l,c){var g=mi(l,c);return g<-.999999?(ro(n,e,l),w8(n)<1e-6&&ro(n,o,l),Uo(n,n),hC(i,n,Math.PI),i):g>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(ro(n,l,c),i[0]=n[0],i[1]=n[1],i[2]=n[2],i[3]=1+g,aG(i,i))}})();(function(){var n=Kd(),e=Kd();return function(o,i,l,c,g,v){return B7(n,i,g,v),B7(e,l,c,v),B7(o,n,e,2*v*(1-v)),o}})();(function(){var n=QI();return function(e,o,i,l){return n[0]=i[0],n[3]=i[1],n[6]=i[2],n[1]=l[0],n[4]=l[1],n[7]=l[2],n[2]=-o[0],n[5]=-o[1],n[8]=-o[2],aG(e,kie(e,n))}})();function a0(){var n=new fa(2);return fa!=Float32Array&&(n[0]=0,n[1]=0),n}function Iy(n){var e=new fa(2);return e[0]=n[0],e[1]=n[1],e}function BA(n,e){var o=new fa(2);return o[0]=n,o[1]=e,o}function Iu(n,e,o){return n[0]=e,n[1]=o,n}function W2(n,e,o){return n[0]=e[0]+o[0],n[1]=e[1]+o[1],n}function ra(n,e,o){return n[0]=e[0]-o[0],n[1]=e[1]-o[1],n}function eh(n,e,o){return n[0]=e[0]*o,n[1]=e[1]*o,n}function yie(n,e,o,i){return n[0]=e[0]+o[0]*i,n[1]=e[1]+o[1]*i,n}function ds(n,e){var o=e[0]-n[0],i=e[1]-n[1];return Math.hypot(o,i)}function Ww(n){var e=n[0],o=n[1];return Math.hypot(e,o)}function sh(n,e){var o=e[0],i=e[1],l=o*o+i*i;return l>0&&(l=1/Math.sqrt(l)),n[0]=e[0]*l,n[1]=e[1]*l,n}function cO(n,e){return n[0]*e[0]+n[1]*e[1]}function wie(n,e,o,i){var l=e[0]-o[0],c=e[1]-o[1],g=Math.sin(i),v=Math.cos(i);return n[0]=l*v-c*g+o[0],n[1]=l*g+c*v+o[1],n}function Cie(n,e){var o=n[0],i=n[1],l=e[0],c=e[1],g=Math.sqrt(o*o+i*i)*Math.sqrt(l*l+c*c),v=g&&(o*l+i*c)/g;return Math.acos(Math.min(Math.max(v,-1),1))}var _ie=Ww,Ru=ra,fO=ds;(function(){var n=a0();return function(e,o,i,l,c,g){var v,_;for(o||(o=2),i||(i=0),l?_=Math.min(l*o+i,e.length):_=e.length,v=i;v<_;v+=o)n[0]=e[v],n[1]=e[v+1],c(n,n,g),e[v]=n[0],e[v+1]=n[1];return e}})();const fh={ARRAY_BUFFER:0,ELEMENT_ARRAY_BUFFER:1,TEXTURE_BUFFER:2};var lG={ObjectType:fh};const{ObjectType:G7}=lG,xie={};function Sie(n,e){e.classHierarchy.push("vtkOpenGLBufferObject");function o(v){switch(v){case G7.ELEMENT_ARRAY_BUFFER:return e.context.ELEMENT_ARRAY_BUFFER;case G7.TEXTURE_BUFFER:if("TEXTURE_BUFFER"in e.context)return e.context.TEXTURE_BUFFER;case G7.ARRAY_BUFFER:default:return e.context.ARRAY_BUFFER}}let i=null,l=null,c=!0,g="";n.getType=()=>i,n.setType=v=>{i=v},n.getHandle=()=>l,n.isReady=()=>c===!1,n.generateBuffer=v=>{const _=o(v);return l===null&&(l=e.context.createBuffer(),i=v),o(i)===_},n.upload=(v,_)=>n.generateBuffer(_)?(e.context.bindBuffer(o(i),l),e.context.bufferData(o(i),v,e.context.STATIC_DRAW),e.allocatedGPUMemoryInBytes=v.length*v.BYTES_PER_ELEMENT,c=!1,!0):(g="Trying to upload array buffer to incompatible buffer.",!1),n.bind=()=>l?(e.context.bindBuffer(o(i),l),!0):!1,n.release=()=>l?(e.context.bindBuffer(o(i),null),!0):!1,n.releaseGraphicsResources=()=>{l!==null&&(e.context.bindBuffer(o(i),null),e.context.deleteBuffer(l),l=null,e.allocatedGPUMemoryInBytes=0)},n.setOpenGLRenderWindow=v=>{e._openGLRenderWindow!==v&&(n.releaseGraphicsResources(),e._openGLRenderWindow=v,e.context=null,v&&(e.context=e._openGLRenderWindow.getContext()))},n.getError=()=>g}const Tie={objectType:G7.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function uG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Tie,o),At.obj(n,e),At.get(n,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),At.moveToProtected(n,e,["openGLRenderWindow"]),Sie(n,e)}const Eie=At.newInstance(uG);var ah={newInstance:Eie,extend:uG,...xie,...lG};const cG={FLAT:0,GOURAUD:1,PHONG:2},Au={POINTS:0,WIREFRAME:1,SURFACE:2},Die=cG;var fG={Shading:cG,Representation:Au,Interpolation:Die};const{vtkErrorMacro:GA}=At;function Iie(n,e){const o=new Float64Array(3);oG(o,e);const i=new Float64Array(16);return ZB(i,Kd(),n,o),i}function Oie(n,e){return n===null||e===null?!1:!(NA(n,[0,0,0])&&NA(e,[1,1,1]))}function Mie(n,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),n.setType(fh.ARRAY_BUFFER),n.createVBO=function(o,i,l,c){let g=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;if(!o.getData()||!o.getData().length)return e.elementCount=0,0;e.blockSize=3,e.vertexOffset=0,e.normalOffset=0,e.tCoordOffset=0,e.tCoordComponents=0,e.colorComponents=0,e.colorOffset=0,e.customData=[];const v=c.points.getData();let _=null,T=null,P=null;const I=c.colors?c.colors.getNumberOfComponents():0,R=c.tcoords?c.tcoords.getNumberOfComponents():0;c.normals&&(e.normalOffset=4*e.blockSize,e.blockSize+=3,_=c.normals.getData()),c.customAttributes&&c.customAttributes.forEach(Ke=>{Ke&&(e.customData.push({data:Ke.getData(),offset:4*e.blockSize,components:Ke.getNumberOfComponents(),name:Ke.getName()}),e.blockSize+=Ke.getNumberOfComponents())}),c.tcoords&&(e.tCoordOffset=4*e.blockSize,e.tCoordComponents=R,e.blockSize+=R,T=c.tcoords.getData()),c.colors?(e.colorComponents=c.colors.getNumberOfComponents(),e.colorOffset=0,P=c.colors.getData(),e.colorBO||(e.colorBO=ah.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let L=0,V=0,U=0,j=0,z=0,$=0,K;const X={anythingToPoints(Ke,qe,ut,wt){for(let Et=0;Et2)for(let Et=0;Et2){for(let Et=0;Et1?(Ke-1)*2:0},polysToWireframe(Ke,qe){return Ke>2?Ke*2:0},stripsToWireframe(Ke,qe){return Ke>2?Ke*4-6:0},polysToSurface(Ke,qe){return Ke>2?(Ke-2)*3:0},stripsToSurface(Ke,qe,ut){return Ke>2?(Ke-2)*3:0}};let ne=null,le=null;l===Au.POINTS||i==="verts"?(ne=X.anythingToPoints,le=ee.anythingToPoints):l===Au.WIREFRAME||i==="lines"?(ne=X[`${i}ToWireframe`],le=ee[`${i}ToWireframe`]):(ne=X[`${i}ToSurface`],le=ee[`${i}ToSurface`]);const ce=o.getData(),ge=ce.length;let pe=0;for(let Ke=0;Ke0&&(Math.abs(Je)/je>1e6||Math.abs(Math.log10(je))>3||je===0&&Je>1e6)){const Ke=new Float64Array(3),qe=new Float64Array(3);for(let ut=0;ut<3;++ut){const wt=c.points.getRange(ut),Et=wt[1]-wt[0];Ke[ut]=.5*(wt[1]+wt[0]),qe[ut]=Et>0?1/Et:1}n.setCoordShiftAndScale(Ke,qe)}else e.coordShiftAndScaleEnabled===!0&&n.setCoordShiftAndScale(null,null);if(g)if(!g.points&&!g.cells)g.points=new Int32Array(pe),g.cells=new Int32Array(pe);else{const Ke=new Int32Array(pe+g.points.length);Ke.set(g.points),g.points=Ke;const qe=new Int32Array(pe+g.cells.length);qe.set(g.cells),g.cells=qe}let Ge=c.vertexOffset;K=function(qe,ut){if(g&&(g.points[Ge]=qe,g.cells[Ge]=$+c.cellOffset),++Ge,L=qe*3,e.coordShiftAndScaleEnabled?(Te[Ve++]=(v[L++]-e.coordShift[0])*e.coordScale[0],Te[Ve++]=(v[L++]-e.coordShift[1])*e.coordScale[1],Te[Ve++]=(v[L++]-e.coordShift[2])*e.coordScale[2]):(Te[Ve++]=v[L++],Te[Ve++]=v[L++],Te[Ve++]=v[L++]),_!==null&&(c.haveCellNormals?V=($+c.cellOffset)*3:V=qe*3,Te[Ve++]=_[V++],Te[Ve++]=_[V++],Te[Ve++]=_[V++]),e.customData.forEach(wt=>{z=qe*wt.components;for(let Et=0;Et{if(o!==null&&(o.constructor!==Float64Array||o.length!==3)){GA("Wrong type for coordShift, expected vec3 or null");return}if(i!==null&&(i.constructor!==Float64Array||i.length!==3)){GA("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||o===null||!gE(o,e.coordShift))&&(e.coordShift=o),(e.coordScale===null||i===null||!gE(i,e.coordScale))&&(e.coordScale=i),e.coordShiftAndScaleEnabled=Oie(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=Iie(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const Pie={elementCount:0,stride:0,colorBOStride:0,vertexOffset:0,normalOffset:0,tCoordOffset:0,tCoordComponents:0,colorOffset:0,colorComponents:0,tcoordBO:null,customData:[],coordShift:null,coordScale:null,coordShiftAndScaleEnabled:!1,inverseShiftAndScaleMatrix:null};function hG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Pie,o),ah.extend(n,e,o),At.setGet(n,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),At.get(n,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),Mie(n,e)}const Rie=At.newInstance(hG);var Aie={newInstance:Rie,extend:hG};const{vtkErrorMacro:Lie}=At;function Nie(n,e){e.classHierarchy.push("vtkShader"),n.compile=()=>{let o=e.context.VERTEX_SHADER;if(!e.source||!e.source.length||e.shaderType==="Unknown")return!1;switch(e.handle!==0&&(e.context.deleteShader(e.handle),e.handle=0),e.shaderType){case"Fragment":o=e.context.FRAGMENT_SHADER;break;case"Vertex":default:o=e.context.VERTEX_SHADER;break}if(e.handle=e.context.createShader(o),e.context.shaderSource(e.handle,e.source),e.context.compileShader(e.handle),!e.context.getShaderParameter(e.handle,e.context.COMPILE_STATUS)){const l=e.context.getShaderInfoLog(e.handle);return Lie(`Error compiling shader '${e.source}': ${l}`),e.context.deleteShader(e.handle),e.handle=0,!1}return!0},n.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(e.context.deleteShader(e.handle),e.handle=0,e.dirty=!0)}}const bie={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function dG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,bie,o),At.obj(n,e),At.setGet(n,e,["shaderType","source","error","handle","context"]),Nie(n,e)}const Fie=At.newInstance(dG,"vtkShader");var nS={newInstance:Fie,extend:dG};const{vtkErrorMacro:Wc}=At;function Vie(n,e,o,i){const l=typeof o=="string"?o:o.join(` +`),c=i===!1?e:new RegExp(e,"g"),g=n.replace(c,l);return{replace:g!==l,result:g}}function Uie(n,e){e.classHierarchy.push("vtkShaderProgram"),n.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!n.attachShader(e.vertexShader)||!n.attachShader(e.fragmentShader)?(Wc(e.error),0):n.link()?(n.setCompiled(!0),1):(Wc(`Links failed: ${e.error}`),0):(Wc(e.fragmentShader.getSource().split(` +`).map((o,i)=>`${i}: ${o}`).join(` +`)),Wc(e.fragmentShader.getError()),0):(Wc(e.vertexShader.getSource().split(` +`).map((o,i)=>`${i}: ${o}`).join(` +`)),Wc(e.vertexShader.getError()),0),n.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(n.release(),e.vertexShaderHandle!==0&&(e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=0),e.fragmentShaderHandle!==0&&(e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=0),e.context.deleteProgram(e.handle),e.handle=0,n.setCompiled(!1))},n.bind=()=>!e.linked&&!n.link()?!1:(e.context.useProgram(e.handle),n.setBound(!0),!0),n.isBound=()=>!!e.bound,n.release=()=>{e.context.useProgram(null),n.setBound(!1)},n.setContext=o=>{e.vertexShader.setContext(o),e.fragmentShader.setContext(o),e.geometryShader.setContext(o)},n.link=()=>{if(e.linked)return!0;if(e.handle===0)return e.error="Program has not been initialized, and/or does not have shaders.",!1;if(e.uniformLocs={},e.context.linkProgram(e.handle),!e.context.getProgramParameter(e.handle,e.context.LINK_STATUS)){const i=e.context.getProgramInfoLog(e.handle);return Wc(`Error linking shader ${i}`),e.handle=0,!1}return n.setLinked(!0),e.attributeLocs={},!0},n.setUniformMatrix=(o,i)=>{const l=n.findUniform(o);if(l===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;const c=new Float32Array(i);return e.context.uniformMatrix4fv(l,!1,c),!0},n.setUniformMatrix3x3=(o,i)=>{const l=n.findUniform(o);if(l===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;const c=new Float32Array(i);return e.context.uniformMatrix3fv(l,!1,c),!0},n.setUniformf=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform1f(l,i),!0)},n.setUniformfv=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform1fv(l,i),!0)},n.setUniformi=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform1i(l,i),!0)},n.setUniformiv=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform1iv(l,i),!0)},n.setUniform2f=(o,i,l)=>{const c=n.findUniform(o);if(c===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;if(l===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2f(c,i,l),!0},n.setUniform2fv=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform2fv(l,i),!0)},n.setUniform2i=(o,i,l)=>{const c=n.findUniform(o);if(c===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;if(l===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2i(c,i,l),!0},n.setUniform2iv=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform2iv(l,i),!0)},n.setUniform3f=(o,i,l,c)=>{const g=n.findUniform(o);if(g===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;if(c===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(g,i,l,c),!0},n.setUniform3fArray=(o,i)=>{const l=n.findUniform(o);if(l===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;if(!Array.isArray(i)||i.length!==3)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(l,i[0],i[1],i[2]),!0},n.setUniform3fv=(o,i)=>{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform3fv(l,i),!0)},n.setUniform3i=function(o){const i=n.findUniform(o);if(i===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;for(var l=arguments.length,c=new Array(l>1?l-1:0),g=1;g{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform3iv(l,i),!0)},n.setUniform4f=function(o){const i=n.findUniform(o);if(i===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;for(var l=arguments.length,c=new Array(l>1?l-1:0),g=1;g{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform4fv(l,i),!0)},n.setUniform4i=function(o){const i=n.findUniform(o);if(i===-1)return e.error=`Could not set uniform ${o} . No such uniform.`,!1;for(var l=arguments.length,c=new Array(l>1?l-1:0),g=1;g{const l=n.findUniform(o);return l===-1?(e.error=`Could not set uniform ${o} . No such uniform.`,!1):(e.context.uniform4iv(l,i),!0)},n.findUniform=o=>{if(!o||!e.linked)return-1;let i=e.uniformLocs[o];return i!==void 0?i:(i=e.context.getUniformLocation(e.handle,o),i===null?(e.error=`Uniform ${o} not found in current shader program.`,e.uniformLocs[o]=-1,-1):(e.uniformLocs[o]=i,i))},n.isUniformUsed=o=>{if(!o)return!1;let i=e.uniformLocs[o];return i!==void 0?i!==null:e.linked?(i=e.context.getUniformLocation(e.handle,o),e.uniformLocs[o]=i,i!==null):(Wc("attempt to find uniform when the shader program is not linked"),!1)},n.isAttributeUsed=o=>{if(!o)return!1;if(o in e.attributeLocs)return!0;if(!e.linked)return Wc("attempt to find uniform when the shader program is not linked"),!1;const i=e.context.getAttribLocation(e.handle,o);return i===-1?!1:(e.attributeLocs[o]=i,!0)},n.attachShader=o=>{if(o.getHandle()===0)return e.error="Shader object was not initialized, cannot attach it.",!1;if(o.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;if(e.handle===0){const i=e.context.createProgram();if(i===0)return e.error="Could not create shader program.",!1;e.handle=i,e.linked=!1}return o.getShaderType()==="Vertex"&&(e.vertexShaderHandle!==0&&e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=o.getHandle()),o.getShaderType()==="Fragment"&&(e.fragmentShaderHandle!==0&&e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=o.getHandle()),e.context.attachShader(e.handle,o.getHandle()),n.setLinked(!1),!0},n.detachShader=o=>{if(o.getHandle()===0)return e.error="shader object was not initialized, cannot attach it.",!1;if(o.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;switch(e.handle===0&&(e.error="This shader program has not been initialized yet."),o.getShaderType()){case"Vertex":return e.vertexShaderHandle!==o.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,o.getHandle()),e.vertexShaderHandle=0,e.linked=!1,!0);case"Fragment":return e.fragmentShaderHandle!==o.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,o.getHandle()),e.fragmentShaderHandle=0,e.linked=!1,!0);default:return!1}},n.setContext=o=>{e.context=o,e.vertexShader.setContext(o),e.fragmentShader.setContext(o),e.geometryShader.setContext(o)},n.setLastCameraMTime=o=>{e.lastCameraMTime=o}}const Bie={vertexShaderHandle:0,fragmentShaderHandle:0,geometryShaderHandle:0,vertexShader:null,fragmentShader:null,geometryShader:null,linked:!1,bound:!1,compiled:!1,error:"",handle:0,numberOfOutputs:0,attributesLocs:null,uniformLocs:null,md5Hash:0,context:null,lastCameraMTime:null};function gG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bie,o),e.attributesLocs={},e.uniformLocs={},e.vertexShader=nS.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=nS.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=nS.newInstance(),e.geometryShader.setShaderType("Geometry"),At.obj(n,e),At.get(n,e,["lastCameraMTime"]),At.setGet(n,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),Uie(n,e)}const Gie=At.newInstance(gG,"vtkShaderProgram");var zn={newInstance:Gie,extend:gG,substitute:Vie};function Wie(n,e){e.classHierarchy.push("vtkOpenGLVertexArrayObject"),n.exposedMethod=()=>{},n.initialize=()=>{e.instancingExtension=null,e._openGLRenderWindow.getWebgl2()||(e.instancingExtension=e.context.getExtension("ANGLE_instanced_arrays")),!e.forceEmulation&&e._openGLRenderWindow&&e._openGLRenderWindow.getWebgl2()?(e.extension=null,e.supported=!0,e.handleVAO=e.context.createVertexArray()):(e.extension=e.context.getExtension("OES_vertex_array_object"),!e.forceEmulation&&e.extension?(e.supported=!0,e.handleVAO=e.extension.createVertexArrayOES()):e.supported=!1)},n.isReady=()=>e.handleVAO!==0||e.supported===!1,n.bind=()=>{if(n.isReady()||n.initialize(),n.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(e.handleVAO):e.context.bindVertexArray(e.handleVAO);else if(n.isReady()){const o=e.context;for(let i=0;i0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(g.index+_,1):o.vertexAttribDivisor(g.index+_,1))}}}},n.release=()=>{if(n.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(null):e.context.bindVertexArray(null);else if(n.isReady()){const o=e.context;for(let i=0;i0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(g.index+_,0):o.vertexAttribDivisor(g.index+_,0)),o.disableVertexAttribArray(g.index+_)}}}},n.shaderProgramChanged=()=>{n.release(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.handleProgram=0},n.releaseGraphicsResources=()=>{n.shaderProgramChanged(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.supported=!0,e.handleProgram=0},n.addAttributeArray=(o,i,l,c,g,v,_,T)=>n.addAttributeArrayWithDivisor(o,i,l,c,g,v,_,T,0,!1),n.addAttributeArrayWithDivisor=(o,i,l,c,g,v,_,T,P,I)=>{if(!o||!o.isBound()||i.getHandle()===0||i.getType()!==fh.ARRAY_BUFFER||(e.handleProgram===0&&(e.handleProgram=o.getHandle()),n.isReady()||n.initialize(),!n.isReady()||e.handleProgram!==o.getHandle()))return!1;const R=e.context,L={};if(L.name=l,L.index=R.getAttribLocation(e.handleProgram,l),L.offset=c,L.stride=g,L.type=v,L.size=_,L.normalize=T,L.isMatrix=I,L.divisor=P,L.Index===-1)return!1;if(i.bind(),R.enableVertexAttribArray(L.index),R.vertexAttribPointer(L.index,L.size,L.type,L.normalize,L.stride,L.offset),P>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(L.index,1):R.vertexAttribDivisor(L.index,1)),L.buffer=i.getHandle(),!e.supported){let V=!1;for(let U=0;U{const I=n.addAttributeArrayWithDivisor(o,i,l,c,g,v,_,T,P,!0);if(!I)return I;const R=e.context,L=R.getAttribLocation(e.handleProgram,l);for(let V=1;V<_;V++)R.enableVertexAttribArray(L+V),R.vertexAttribPointer(L+V,_,v,T,g,c+g*V/_),P>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(L+V,1):R.vertexAttribDivisor(L+V,1));return!0},n.removeAttributeArray=o=>{if(!n.isReady()||e.handleProgram===0)return!1;if(!e.supported)for(let i=0;i{e._openGLRenderWindow!==o&&(n.releaseGraphicsResources(),e._openGLRenderWindow=o,e.context=null,o&&(e.context=e._openGLRenderWindow.getContext()))}}const $ie={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function pG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$ie,o),e.buffers=[],At.obj(n,e),At.get(n,e,["supported"]),At.setGet(n,e,["forceEmulation"]),Wie(n,e)}const jie=At.newInstance(pG,"vtkOpenGLVertexArrayObject");var hO={newInstance:jie,extend:pG};const ud={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function zie(n,e){e.classHierarchy.push("vtkOpenGLHelper"),n.setOpenGLRenderWindow=o=>{e.context=o.getContext(),e.program.setContext(e.context),e.VAO.setOpenGLRenderWindow(o),e.CABO.setOpenGLRenderWindow(o)},n.releaseGraphicsResources=o=>{e.VAO.releaseGraphicsResources(),e.CABO.releaseGraphicsResources(),e.CABO.setElementCount(0)},n.drawArrays=(o,i,l,c)=>{if(e.CABO.getElementCount()){const g=n.getOpenGLMode(l),v=n.haveWideLines(o,i),_=e.context,T=_.getParameter(_.DEPTH_WRITEMASK);e.pointPicking&&_.depthMask(!1),g===_.LINES&&v?(n.updateShaders(o,i,c),_.drawArraysInstanced(g,0,e.CABO.getElementCount(),2*Math.ceil(i.getProperty().getLineWidth()))):(_.lineWidth(i.getProperty().getLineWidth()),n.updateShaders(o,i,c),_.drawArrays(g,0,e.CABO.getElementCount()),_.lineWidth(1));const I=(g===_.POINTS?1:0)||(g===_.LINES?2:3);return e.pointPicking&&_.depthMask(T),e.CABO.getElementCount()/I}return 0},n.getOpenGLMode=o=>{if(e.pointPicking)return e.context.POINTS;const i=e.primitiveType;return o===Au.POINTS||i===ud.Points?e.context.POINTS:o===Au.WIREFRAME||i===ud.Lines||i===ud.TrisEdges||i===ud.TriStripsEdges?e.context.LINES:e.context.TRIANGLES},n.haveWideLines=(o,i)=>i.getProperty().getLineWidth()>1?!(e.CABO.getOpenGLRenderWindow()&&e.CABO.getOpenGLRenderWindow().getHardwareMaximumLineWidth()>=i.getProperty().getLineWidth()):!1,n.getNeedToRebuildShaders=(o,i,l)=>!!(l.getNeedToRebuildShaders(n,o,i)||n.getProgram()===0||n.getShaderSourceTime().getMTime(){if(n.getNeedToRebuildShaders(o,i,l)){const c={Vertex:null,Fragment:null,Geometry:null};l.buildShaders(c,o,i);const g=e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgramArray(c.Vertex,c.Fragment,c.Geometry);g!==n.getProgram()&&(n.setProgram(g),n.getVAO().releaseGraphicsResources()),n.getShaderSourceTime().modified()}else e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgram(n.getProgram());n.getVAO().bind(),l.setMapperShaderParameters(n,o,i),l.setPropertyShaderParameters(n,o,i),l.setCameraShaderParameters(n,o,i),l.setLightingShaderParameters(n,o,i),l.invokeShaderCallbacks(n,o,i)},n.setMapperShaderParameters=(o,i,l)=>{if(n.haveWideLines(o,i)){n.getProgram().setUniform2f("viewportSize",l.usize,l.vsize);const c=parseFloat(i.getProperty().getLineWidth()),g=c/2;n.getProgram().setUniformf("lineWidthStepSize",c/Math.ceil(c)),n.getProgram().setUniformf("halfLineWidth",g)}e.primitiveType===ud.Points||i.getProperty().getRepresentation()===Au.POINTS?n.getProgram().setUniformf("pointSize",i.getProperty().getPointSize()):e.pointPicking&&n.getProgram().setUniformf("pointSize",n.getPointPickingPrimitiveSize())},n.replaceShaderPositionVC=(o,i,l)=>{let c=o.Vertex;c=zn.substitute(c,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,c=zn.substitute(c,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," gl_PointSize = pointSize;"],!1).result,n.getOpenGLMode(l.getProperty().getRepresentation())===e.context.LINES&&n.haveWideLines(i,l)&&(c=zn.substitute(c,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,c=zn.substitute(c,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," if (halfLineWidth > 0.0)"," {"," float offset = float(gl_InstanceID / 2) * lineWidthStepSize - halfLineWidth;"," vec4 tmpPos = gl_Position;"," vec3 tmpPos2 = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * mod(float(gl_InstanceID), 2.0) * offset / viewportSize[0];"," tmpPos2.y = tmpPos2.y + 2.0 * mod(float(gl_InstanceID + 1), 2.0) * offset / viewportSize[1];"," gl_Position = vec4(tmpPos2.xyz * tmpPos.w, tmpPos.w);"," }"]).result),o.Vertex=c},n.getPointPickingPrimitiveSize=()=>e.primitiveType===ud.Points?2:e.primitiveType===ud.Lines?4:6,n.getAllocatedGPUMemoryInBytes=()=>n.getCABO().getAllocatedGPUMemoryInBytes()}const Hie={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function mG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hie,o),At.obj(n,e),e.shaderSourceTime={},At.obj(e.shaderSourceTime),e.attributeUpdateTime={},At.obj(e.attributeUpdateTime),At.setGet(n,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=zn.newInstance(),e.VAO=hO.newInstance(),e.CABO=Aie.newInstance(),zie(n,e)}const Kie=At.newInstance(mG);var a4={newInstance:Kie,extend:mG,primTypes:ud};const{Representation:U3,Interpolation:B3}=fG;function WA(n){return()=>At.vtkErrorMacro(`vtkProperty::${n} - NOT IMPLEMENTED`)}function qie(n,e){e.classHierarchy.push("vtkProperty"),n.setColor=(o,i,l)=>{Array.isArray(o)?(e.color[0]!==o[0]||e.color[1]!==o[1]||e.color[2]!==o[2])&&(e.color[0]=o[0],e.color[1]=o[1],e.color[2]=o[2],n.modified()):(e.color[0]!==o||e.color[1]!==i||e.color[2]!==l)&&(e.color[0]=o,e.color[1]=i,e.color[2]=l,n.modified()),n.setDiffuseColor(e.color),n.setAmbientColor(e.color),n.setSpecularColor(e.color)},n.computeCompositeColor=WA("ComputeCompositeColor"),n.getColor=()=>{let o=0;e.ambient+e.diffuse+e.specular>0&&(o=1/(e.ambient+e.diffuse+e.specular));for(let i=0;i<3;i++)e.color[i]=o*(e.ambient*e.ambientColor[i]+e.diffuse*e.diffuseColor[i]+e.specular*e.specularColor[i]);return[].concat(e.color)},n.setSpecularPower=o=>{const i=1/Math.max(1,o);(e.roughness!==i||e.specularPower!==o)&&(e.specularPower=o,e.roughness=i,n.modified())},n.addShaderVariable=WA("AddShaderVariable"),n.setInterpolationToFlat=()=>n.setInterpolation(B3.FLAT),n.setInterpolationToGouraud=()=>n.setInterpolation(B3.GOURAUD),n.setInterpolationToPhong=()=>n.setInterpolation(B3.PHONG),n.getInterpolationAsString=()=>At.enumToString(B3,e.interpolation),n.setRepresentationToWireframe=()=>n.setRepresentation(U3.WIREFRAME),n.setRepresentationToSurface=()=>n.setRepresentation(U3.SURFACE),n.setRepresentationToPoints=()=>n.setRepresentation(U3.POINTS),n.getRepresentationAsString=()=>At.enumToString(U3,e.representation)}const Xie={color:[1,1,1],ambientColor:[1,1,1],diffuseColor:[1,1,1],specularColor:[1,1,1],edgeColor:[0,0,0],ambient:0,diffuse:1,metallic:0,roughness:.6,normalStrength:1,emission:1,baseIOR:1.45,specular:0,specularPower:1,opacity:1,interpolation:B3.GOURAUD,representation:U3.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function Yie(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xie,o),At.obj(n,e),At.setGet(n,e,["lighting","interpolation","ambient","diffuse","metallic","roughness","normalStrength","emission","baseIOR","specular","specularPower","opacity","edgeVisibility","lineWidth","pointSize","backfaceCulling","frontfaceCulling","representation","diffuseTexture","metallicTexture","roughnessTexture","normalTexture","ambientOcclusionTexture","emissionTexture"]),At.setGetArray(n,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),qie(n,e)}const Jie=At.newInstance(Yie,"vtkProperty");var Gv={newInstance:Jie,...fG};const{Representation:Zie}=Gv,{vtkErrorMacro:$A}=At;function Qie(n){const e=zn.substitute(n.Fragment,"//VTK::RenderPassFragmentShader::Impl",` + float weight = gl_FragData[0].a * pow(max(1.1 - gl_FragCoord.z, 0.0), 2.0); + gl_FragData[0] = vec4(gl_FragData[0].rgb*weight, gl_FragData[0].a); + gl_FragData[1].r = weight; + `,!1);n.Fragment=e.result}const e0e=`//VTK::System::Dec + +in vec2 tcoord; + +uniform sampler2D translucentRTexture; +uniform sampler2D translucentRGBATexture; + +// the output of this shader +//VTK::Output::Dec + +void main() +{ + vec4 t1Color = texture(translucentRGBATexture, tcoord); + float t2Color = texture(translucentRTexture, tcoord).r; + gl_FragData[0] = vec4(t1Color.rgb/max(t2Color,0.01), 1.0 - t1Color.a); +} +`;function t0e(n,e){e.classHierarchy.push("vtkOpenGLOrderIndependentTranslucentPass"),n.createVertexBuffer=()=>{const o=new Float32Array([-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1]),i=new Float32Array([0,0,1,0,0,1,1,1]),l=new Uint16Array([4,0,1,3,2]),c=d0.newInstance({numberOfComponents:3,values:o});c.setName("points");const g=d0.newInstance({numberOfComponents:2,values:i});g.setName("tcoords");const v=d0.newInstance({numberOfComponents:1,values:l});e.tris.getCABO().createVBO(v,"polys",Zie.SURFACE,{points:c,tcoords:g,cellOffset:0}),e.VBOBuildTime.modified()},n.createFramebuffer=o=>{const i=o.getSize(),l=o.getContext();e.framebuffer=cC.newInstance(),e.framebuffer.setOpenGLRenderWindow(o),e.framebuffer.create(...i),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind(),e.translucentRGBATexture=Cs.newInstance(),e.translucentRGBATexture.setInternalFormat(l.RGBA16F),e.translucentRGBATexture.setFormat(l.RGBA),e.translucentRGBATexture.setOpenGLDataType(l.HALF_FLOAT),e.translucentRGBATexture.setOpenGLRenderWindow(o),e.translucentRGBATexture.create2DFromRaw(i[0],i[1],4,"Float32Array",null),e.translucentRTexture=Cs.newInstance(),e.translucentRTexture.setInternalFormat(l.R16F),e.translucentRTexture.setFormat(l.RED),e.translucentRTexture.setOpenGLDataType(l.HALF_FLOAT),e.translucentRTexture.setOpenGLRenderWindow(o),e.translucentRTexture.create2DFromRaw(i[0],i[1],1,"Float32Array",null),e.translucentZTexture=Cs.newInstance(),e.translucentZTexture.setOpenGLRenderWindow(o),e.translucentZTexture.createDepthFromRaw(i[0],i[1],"Float32Array",null),e.framebuffer.setColorBuffer(e.translucentRGBATexture,0),e.framebuffer.setColorBuffer(e.translucentRTexture,1),e.framebuffer.setDepthBuffer(e.translucentZTexture)},n.createCopyShader=o=>{e.copyShader=o.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","attribute vec2 tcoordTC;","varying vec2 tcoord;","void main() { tcoord = tcoordTC; gl_Position = vertexDC; }"].join(` +`),e0e,"")},n.createVBO=o=>{const i=o.getContext();e.tris.setOpenGLRenderWindow(o),n.createVertexBuffer();const l=e.copyShader;e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(l,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),i.FLOAT,3,i.FALSE)||$A("Error setting vertexDC in copy shader VAO."),e.copyVAO.addAttributeArray(l,e.tris.getCABO(),"tcoordTC",e.tris.getCABO().getTCoordOffset(),e.tris.getCABO().getStride(),i.FLOAT,2,i.FALSE)||$A("Error setting vertexDC in copy shader VAO.")},n.traverse=(o,i,l)=>{if(e.deleted)return;const c=o.getSize(),g=o.getContext();if(e._supported=!1,i.getSelector()||!g||!o.getWebgl2()||!g.getExtension("EXT_color_buffer_half_float")&&!g.getExtension("EXT_color_buffer_float")){n.setCurrentOperation("translucentPass"),i.traverse(n);return}if(e._supported=!0,e.framebuffer===null)n.createFramebuffer(o);else{const _=e.framebuffer.getSize();_===null||_[0]!==c[0]||_[1]!==c[1]?(e.framebuffer.releaseGraphicsResources(),e.translucentRGBATexture.releaseGraphicsResources(o),e.translucentRTexture.releaseGraphicsResources(o),e.translucentZTexture.releaseGraphicsResources(o),n.createFramebuffer(o)):(e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind())}g.drawBuffers([g.COLOR_ATTACHMENT0]),g.clearBufferfv(g.COLOR,0,[0,0,0,0]),g.clearBufferfv(g.DEPTH,0,[1]),g.colorMask(!1,!1,!1,!1),l.getOpaqueActorCount()>0&&(l.setCurrentOperation("opaqueZBufferPass"),i.traverse(l)),g.colorMask(!0,!0,!0,!0),g.drawBuffers([g.COLOR_ATTACHMENT0,g.COLOR_ATTACHMENT1]),g.viewport(0,0,c[0],c[1]),g.scissor(0,0,c[0],c[1]),g.clearBufferfv(g.COLOR,0,[0,0,0,1]),g.clearBufferfv(g.COLOR,1,[0,0,0,0]),g.enable(g.DEPTH_TEST),g.enable(g.BLEND),g.blendFuncSeparate(g.ONE,g.ONE,g.ZERO,g.ONE_MINUS_SRC_ALPHA),n.setCurrentOperation("translucentPass"),i.traverse(n),g.drawBuffers([g.NONE]),e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null?n.createCopyShader(o):o.getShaderCache().readyShaderProgram(e.copyShader),e.copyVAO||(e.copyVAO=hO.newInstance(),e.copyVAO.setOpenGLRenderWindow(o)),e.copyVAO.bind(),e.VBOBuildTime.getMTime()e._supported?Qie:null,n.releaseGraphicsResources=o=>{e.framebuffer&&(e.framebuffer.releaseGraphicsResources(o),e.framebuffer=null),e.translucentRGBATexture&&(e.translucentRGBATexture.releaseGraphicsResources(o),e.translucentRGBATexture=null),e.translucentRTexture&&(e.translucentRTexture.releaseGraphicsResources(o),e.translucentRTexture=null),e.translucentZTexture&&(e.translucentZTexture.releaseGraphicsResources(o),e.translucentZTexture=null),e.copyVAO&&(e.copyVAO.releaseGraphicsResources(o),e.copyVAO=null),e.copyShader&&(e.copyShader.releaseGraphicsResources(o),e.copyShader=null),e.tris&&(e.tris.releaseGraphicsResources(o),e.tris=null),n.modified()}}const n0e={framebuffer:null,copyShader:null,tris:null};function vG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,n0e,o),ZI.extend(n,e,o),e.VBOBuildTime={},At.obj(e.VBOBuildTime,{mtime:0}),e.tris=a4.newInstance(),At.get(n,e,["framebuffer"]),t0e(n,e)}const r0e=At.newInstance(vG,"vtkOpenGLOrderIndependentTranslucentPass");var i0e={newInstance:r0e,extend:vG};function o0e(n,e){e.classHierarchy.push("vtkForwardPass"),n.traverse=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(e.deleted)return;e._currentParent=i,n.setCurrentOperation("buildPass"),o.traverse(n);const l=o.getRenderable().getNumberOfLayers(),c=o.getRenderable().getRenderersByReference();for(let g=0;g0||e.translucentActorCount>0)&&e.volumeCount>0||e.depthRequested){const P=o.getFramebufferSize();e.framebuffer===null&&(e.framebuffer=cC.newInstance()),e.framebuffer.setOpenGLRenderWindow(o),e.framebuffer.saveCurrentBindingsAndBuffers();const I=e.framebuffer.getSize();(I===null||I[0]!==P[0]||I[1]!==P[1])&&(e.framebuffer.create(P[0],P[1]),e.framebuffer.populateFramebuffer()),e.framebuffer.bind(),n.setCurrentOperation("zBufferPass"),T.traverse(n),e.framebuffer.restorePreviousBindingsAndBuffers(),e.depthRequested=!1}n.setCurrentOperation("cameraPass"),T.traverse(n),e.opaqueActorCount>0&&(n.setCurrentOperation("opaquePass"),T.traverse(n)),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=i0e.newInstance()),e.translucentPass.traverse(o,T,n)),e.volumeCount>0&&(n.setCurrentOperation("volumePass"),T.traverse(n)),e.overlayActorCount>0&&(n.setCurrentOperation("overlayPass"),T.traverse(n))}}},n.getZBufferTexture=()=>e.framebuffer?e.framebuffer.getColorTexture():null,n.requestDepth=()=>{e.depthRequested=!0},n.incrementOpaqueActorCount=()=>e.opaqueActorCount++,n.incrementTranslucentActorCount=()=>e.translucentActorCount++,n.incrementVolumeCount=()=>e.volumeCount++,n.incrementOverlayActorCount=()=>e.overlayActorCount++}const s0e={opaqueActorCount:0,translucentActorCount:0,volumeCount:0,overlayActorCount:0,framebuffer:null,depthRequested:!1};function kG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,s0e,o),ZI.extend(n,e,o),At.get(n,e,["framebuffer","opaqueActorCount","translucentActorCount","volumeCount"]),o0e(n,e)}const a0e=At.newInstance(kG,"vtkForwardPass");var l0e={newInstance:a0e,extend:kG};const j1={MIN_KNOWN_PASS:0,ACTOR_PASS:0,COMPOSITE_INDEX_PASS:1,ID_LOW24:2,ID_HIGH24:3,MAX_KNOWN_PASS:3};var yG={PassTypes:j1};const{vtkErrorMacro:jA,vtkWarningMacro:u0e}=At;function c0e(n,e){e.classHierarchy.push("vtkFieldData");const o=n.getState;e.arrays&&(e.arrays=e.arrays.map(i=>({data:uc(i.data)}))),n.initialize=()=>{n.initializeFields(),n.copyAllOn(),n.clearFieldFlags()},n.initializeFields=()=>{e.arrays=[],e.copyFieldFlags={},n.modified()},n.copyStructure=i=>{n.initializeFields(),e.copyFieldFlags=i.getCopyFieldFlags().map(l=>l),e.arrays=i.arrays().map(l=>({array:l}))},n.getNumberOfArrays=()=>e.arrays.length,n.getNumberOfActiveArrays=()=>e.arrays.length,n.addArray=i=>{const l=i.getName(),{array:c,index:g}=n.getArrayWithIndex(l);return c!=null?(e.arrays[g]={data:i},g):(e.arrays=[].concat(e.arrays,{data:i}),e.arrays.length-1)},n.removeAllArrays=()=>{e.arrays=[]},n.removeArray=i=>{const l=e.arrays.findIndex(c=>c.data.getName()===i);return n.removeArrayByIndex(l)},n.removeArrayByIndex=i=>i!==-1&&ie.arrays.map(i=>i.data),n.getArray=i=>typeof i=="number"?n.getArrayByIndex(i):n.getArrayByName(i),n.getArrayByName=i=>e.arrays.reduce((l,c,g)=>c.data.getName()===i?c.data:l,null),n.getArrayWithIndex=i=>{const l=e.arrays.findIndex(c=>c.data.getName()===i);return{array:l!==-1?e.arrays[l].data:null,index:l}},n.getArrayByIndex=i=>i>=0&&in.getArrayWithIndex(i).index>=0,n.getArrayName=i=>{const l=e.arrays[i];return l?l.data.getName():""},n.getCopyFieldFlags=()=>e.copyFieldFlags,n.getFlag=i=>e.copyFieldFlags[i],n.passData=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;i.getArrays().forEach(g=>{const v=n.getFlag(g.getName());if(v!==!1&&!(e.doCopyAllOff&&v!==!0)&&g){let _=n.getArrayByName(g.getName());if(_)if(g.getNumberOfComponents()===_.getNumberOfComponents())if(l>-1&&l-1?c:l;_.insertTuple(T,g.getTuple(l))}else _.insertTuples(0,g.getTuples());else jA("Unhandled case in passData");else if(l<0||l>g.getNumberOfTuples())n.addArray(g),i.getAttributes(g).forEach(T=>{n.setAttribute(g,T)});else{const T=g.getNumberOfComponents();let P=g.getNumberOfValues();const I=c>-1?c:l;P<=I*T&&(P=(I+1)*T),_=d0.newInstance({name:g.getName(),dataType:g.getDataType(),numberOfComponents:T,values:At.newTypedArray(g.getDataType(),P),size:0}),_.insertTuple(I,g.getTuple(l)),n.addArray(_),i.getAttributes(g).forEach(R=>{n.setAttribute(_,R)})}}})},n.interpolateData=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,v=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5;i.getArrays().forEach(_=>{const T=n.getFlag(_.getName());if(T!==!1&&!(e.doCopyAllOff&&T!==!0)&&_){let P=n.getArrayByName(_.getName());if(P)if(_.getNumberOfComponents()===P.getNumberOfComponents())if(l>-1&&l<_.getNumberOfTuples()){const I=g>-1?g:l;P.interpolateTuple(I,_,l,_,c,v),u0e("Unexpected case in interpolateData")}else P.insertTuples(_.getTuples());else jA("Unhandled case in interpolateData");else if(l<0||c<0||l>_.getNumberOfTuples())n.addArray(_),i.getAttributes(_).forEach(I=>{n.setAttribute(_,I)});else{const I=_.getNumberOfComponents();let R=_.getNumberOfValues();const L=g>-1?g:l;R<=L*I&&(R=(L+1)*I),P=d0.newInstance({name:_.getName(),dataType:_.getDataType(),numberOfComponents:I,values:At.newTypedArray(_.getDataType(),R),size:0}),P.interpolateTuple(L,_,l,_,c,v),n.addArray(P),i.getAttributes(_).forEach(V=>{n.setAttribute(P,V)})}}})},n.copyFieldOn=i=>{e.copyFieldFlags[i]=!0},n.copyFieldOff=i=>{e.copyFieldFlags[i]=!1},n.copyAllOn=()=>{(!e.doCopyAllOn||e.doCopyAllOff)&&(e.doCopyAllOn=!0,e.doCopyAllOff=!1,n.modified())},n.copyAllOff=()=>{(e.doCopyAllOn||!e.doCopyAllOff)&&(e.doCopyAllOn=!1,e.doCopyAllOff=!0,n.modified())},n.clearFieldFlags=()=>{e.copyFieldFlags={}},n.deepCopy=i=>{e.arrays=i.getArrays().map(l=>{const c=l.newClone();return c.deepCopy(l),{data:c}})},n.copyFlags=i=>i.getCopyFieldFlags().map(l=>l),n.reset=()=>e.arrays.forEach(i=>i.data.reset()),n.getMTime=()=>e.arrays.reduce((i,l)=>l.data.getMTime()>i?l.data.getMTime():i,e.mtime),n.getNumberOfComponents=()=>e.arrays.reduce((i,l)=>i+l.data.getNumberOfComponents(),0),n.getNumberOfTuples=()=>e.arrays.length>0?e.arrays[0].getNumberOfTuples():0,n.getState=()=>{const i=o();return i&&(i.arrays=e.arrays.map(l=>({data:l.data.getState()}))),i}}const f0e={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function wG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,f0e,o),At.obj(n,e),c0e(n,e)}const h0e=At.newInstance(wG,"vtkFieldData");var d0e={newInstance:h0e,extend:wG};const g0e={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},p0e={MAX:0,EXACT:1,NOLIMIT:2},m0e={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},v0e={DUPLICATEPOINT:1,HIDDENPOINT:2},k0e={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},y0e="vtkGhostType",$w={DEFAULT:0,SINGLE:1,DOUBLE:2};var CG={AttributeCopyOperations:k0e,AttributeLimitTypes:p0e,AttributeTypes:g0e,CellGhostTypes:m0e,DesiredOutputPrecision:$w,PointGhostTypes:v0e,ghostArrayName:y0e};const{AttributeTypes:td,AttributeCopyOperations:Y4}=CG,{vtkWarningMacro:Oy}=At;function w0e(n,e){const o=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function i(g){let v=o.find(_=>td[_.toUpperCase()]===g||typeof g!="number"&&_.toLowerCase()===g.toLowerCase());return typeof v>"u"&&(v=null),v}e.classHierarchy.push("vtkDataSetAttributes");const l={...n};n.checkNumberOfComponents=g=>!0,n.setAttribute=(g,v)=>{const _=i(v);if(g&&_.toUpperCase()==="PEDIGREEIDS"&&!g.isA("vtkDataArray"))return Oy(`Cannot set attribute ${_}. The attribute must be a vtkDataArray.`),-1;if(g&&!n.checkNumberOfComponents(g,_))return Oy(`Cannot set attribute ${_}. Incorrect number of components.`),-1;let T=e[`active${_}`];if(T>=0&&To.filter(v=>n[`get${v}`]()===g),n.setActiveAttributeByName=(g,v)=>n.setActiveAttributeByIndex(n.getArrayWithIndex(g).index,v),n.setActiveAttributeByIndex=(g,v)=>{const _=i(v);if(g>=0&&g{const v=i(g);return n[`get${v}`]()},n.removeAllArrays=()=>{o.forEach(g=>{e[`active${g}`]=-1}),l.removeAllArrays()},n.removeArrayByIndex=g=>(g!==-1&&o.forEach(v=>{g===e[`active${v}`]?e[`active${v}`]=-1:g{const v=`active${g}`;n[`get${g}`]=()=>n.getArrayByIndex(e[v]),n[`set${g}`]=_=>n.setAttribute(_,g),n[`setActive${g}`]=_=>n.setActiveAttributeByIndex(n.getArrayWithIndex(_).index,g),n[`copy${g}Off`]=()=>{const _=g.toUpperCase();e.copyAttributeFlags[Y4.PASSDATA][td[_]]=!1},n[`copy${g}On`]=()=>{const _=g.toUpperCase();e.copyAttributeFlags[Y4.PASSDATA][td[_]]=!0}}),n.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(Y4).filter(g=>g!=="ALLCOPY").forEach(g=>{e.copyAttributeFlags[Y4[g]]=Object.keys(td).filter(v=>v!=="NUM_ATTRIBUTES").reduce((v,_)=>(v[td[_]]=!0,v),[])}),e.copyAttributeFlags[Y4.COPYTUPLE][td.GLOBALIDS]=!1,e.copyAttributeFlags[Y4.INTERPOLATE][td.GLOBALIDS]=!1,e.copyAttributeFlags[Y4.COPYTUPLE][td.PEDIGREEIDS]=!1},n.initialize=At.chain(n.initialize,n.initializeAttributeCopyFlags),e.dataArrays&&Object.keys(e.dataArrays).length&&Object.keys(e.dataArrays).forEach(g=>{!e.dataArrays[g].ref&&e.dataArrays[g].type==="vtkDataArray"&&n.addArray(d0.newInstance(e.dataArrays[g]))});const c=n.shallowCopy;n.shallowCopy=(g,v)=>{c(g,v),e.arrays=g.getArrays().map(_=>{const T=_.newClone();return T.shallowCopy(_,v),{data:T}})},n.initializeAttributeCopyFlags()}const C0e={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function _G(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,C0e,o),d0e.extend(n,e,o),At.setGet(n,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),w0e(n,e)}const _0e=At.newInstance(_G,"vtkDataSetAttributes");var zA={newInstance:_0e,extend:_G,...CG};const x0e={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},S0e={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var T0e={FieldDataTypes:x0e,FieldAssociations:S0e};const mE=["pointData","cellData","fieldData"];function E0e(n,e){e.classHierarchy.push("vtkDataSet"),mE.forEach(i=>{e[i]?e[i]=uc(e[i]):e[i]=zA.newInstance()});const o=n.shallowCopy;n.shallowCopy=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;o(i,l),mE.forEach(c=>{e[c]=zA.newInstance(),e[c].shallowCopy(i.getReferenceByName(c))})}}const D0e={};function xG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,D0e,o),At.obj(n,e),At.setGet(n,e,mE),E0e(n,e)}const I0e=At.newInstance(xG,"vtkDataSet");var $8={newInstance:I0e,extend:xG,...T0e};const{FieldAssociations:O0e}=$8;function M0e(n,e){e.classHierarchy.push("vtkHardwareSelector"),n.getSourceDataAsync=async(o,i,l,c,g)=>{},n.selectAsync=async(o,i,l,c,g)=>{const v=await n.getSourceDataAsync(o,i,l,c,g);return v?v.generateSelection(i,l,c,g):[]}}const P0e={fieldAssociation:O0e.FIELD_ASSOCIATION_CELLS,captureZValues:!1};function SG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,P0e,o),At.obj(n,e),At.setGet(n,e,["fieldAssociation","captureZValues"]),M0e(n,e)}const R0e=At.newInstance(SG,"vtkHardwareSelector");var A0e={newInstance:R0e,extend:SG};const L0e={GLOBALIDS:0,PEDIGREEIDS:1,VALUES:2,INDICES:3,FRUSTUM:4,LOCATIONS:5,THRESHOLDS:6,BLOCKS:7,QUERY:8},N0e={CELL:0,POINT:1,FIELD:2,VERTEX:3,EDGE:4,ROW:5};var b0e={SelectionContent:L0e,SelectionField:N0e};function F0e(n,e){e.classHierarchy.push("vtkSelectionNode"),n.getBounds=()=>e.points.getBounds()}const V0e={contentType:-1,fieldType:-1,properties:null,selectionList:[]};function TG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,V0e,o),At.obj(n,e),e.properties={},At.setGet(n,e,["contentType","fieldType","properties","selectionList"]),F0e(n,e)}const U0e=At.newInstance(TG,"vtkSelectionNode");var EG={newInstance:U0e,extend:TG,...b0e};const{PassTypes:Ga}=yG,{SelectionContent:B0e,SelectionField:HA}=EG,{FieldAssociations:am}=$8,{vtkErrorMacro:DG}=At,wd=1;function IG(n){return`${n.propID} ${n.compositeID}`}function OG(n,e,o,i){if(!o)return 0;const l=(e*(i[2]-i[0]+1)+n)*4;return o[l+3]}function nh(n,e,o,i){if(!o)return 0;const l=(e*(i[2]-i[0]+1)+n)*4,c=o[l],g=o[l+1];return(o[l+2]*256+g)*256+c}function MG(n,e){let o=e;return o<<=24,o|=n,o}function G0e(n,e,o,i){{if(i[0]=e[0],i[1]=e[1],e[0]n.area[2]||e[1]n.area[3])return null;const l=[e[0]-n.area[0],e[1]-n.area[1]],c=nh(l[0],l[1],n.pixBuffer[Ga.ACTOR_PASS],n.area);if(c<=0||c-wd>=n.props.length)return null;const g={};g.valid=!0,g.propID=c-wd,g.prop=n.props[g.propID];let v=nh(l[0],l[1],n.pixBuffer[Ga.COMPOSITE_INDEX_PASS],n.area);if((v<0||v>16777215)&&(v=0),g.compositeID=v-wd,n.captureZValues){const P=(l[1]*(n.area[2]-n.area[0]+1)+l[0])*4;g.zValue=(256*n.zBuffer[P]+n.zBuffer[P+1])/65535,g.displayPosition=e}if(n.pixBuffer[Ga.ID_LOW24]&&OG(l[0],l[1],n.pixBuffer[Ga.ID_LOW24],n.area)===0)return g;const _=nh(l[0],l[1],n.pixBuffer[Ga.ID_LOW24],n.area),T=nh(l[0],l[1],n.pixBuffer[Ga.ID_HIGH24],n.area);return g.attributeID=MG(_,T),g}}function PG(n,e,o,i,l){const c=[];let g=0;return e.forEach((v,_)=>{const T=EG.newInstance();switch(T.setContentType(B0e.INDICES),n){case am.FIELD_ASSOCIATION_CELLS:T.setFieldType(HA.CELL);break;case am.FIELD_ASSOCIATION_POINTS:T.setFieldType(HA.POINT);break;default:DG("Unknown field association")}T.getProperties().propID=v.info.propID,T.getProperties().prop=v.info.prop,T.getProperties().compositeID=v.info.compositeID,T.getProperties().attributeID=v.info.attributeID,T.getProperties().pixelCount=v.pixelCount,o&&(T.getProperties().displayPosition=[v.info.displayPosition[0],v.info.displayPosition[1],v.info.zValue],T.getProperties().worldPosition=l.displayToWorld(v.info.displayPosition[0],v.info.displayPosition[1],v.info.zValue,i)),T.setSelectionList(v.attributeIDs),c[g]=T,g++}),c}function W0e(n,e,o,i,l){const c=Math.floor(e),g=Math.floor(o),v=Math.floor(i),_=Math.floor(l),T=new Map,P=[0,0];for(let I=g;I<=_;I++)for(let R=c;R<=v;R++){const V=G0e(n,[R,I],0,P);if(V&&V.valid){const U=IG(V);if(!T.has(U))T.set(U,{info:V,pixelCount:1,attributeIDs:[V.attributeID]});else{const j=T.get(U);j.pixelCount++,n.captureZValues&&V.zValue{e.rawPixBuffer=[],e.pixBuffer=[],e.zBuffer=null},n.beginSelection=()=>{e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e.maxAttributeId=0;const i=e._openGLRenderWindow.getSize();if(!e.framebuffer)e.framebuffer=cC.newInstance(),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.create(i[0],i[1]),e.framebuffer.populateFramebuffer();else{e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers();const l=e.framebuffer.getSize();!l||l[0]!==i[0]||l[1]!==i[1]?(e.framebuffer.create(i[0],i[1]),e.framebuffer.populateFramebuffer()):e.framebuffer.bind()}if(e._openGLRenderer.clear(),e._openGLRenderer.setSelector(n),e.hitProps={},e.propPixels={},e.props=[],n.releasePixBuffers(),e.fieldAssociation===am.FIELD_ASSOCIATION_POINTS){const l=e._openGLRenderWindow.getContext(),c=l.isEnabled(l.BLEND);l.disable(l.BLEND),e._openGLRenderWindow.traverseAllPasses(),c&&l.enable(l.BLEND)}},n.endSelection=()=>{e.hitProps={},e._openGLRenderer.setSelector(null),e.framebuffer.restorePreviousBindingsAndBuffers()},n.preCapturePass=()=>{const i=e._openGLRenderWindow.getContext();e.originalBlending=i.isEnabled(i.BLEND),i.disable(i.BLEND)},n.postCapturePass=()=>{const i=e._openGLRenderWindow.getContext();e.originalBlending&&i.enable(i.BLEND)},n.select=()=>{let i=null;return n.captureBuffers()&&(i=n.generateSelection(e.area[0],e.area[1],e.area[2],e.area[3]),n.releasePixBuffers()),i},n.getSourceDataAsync=async(i,l,c,g,v)=>{if(e._renderer=i,l===void 0){const T=e._openGLRenderWindow.getSize();n.setArea(0,0,T[0]-1,T[1]-1)}else n.setArea(l,c,g,v);if(!n.captureBuffers())return!1;const _={area:[...e.area],pixBuffer:[...e.pixBuffer],captureZValues:e.captureZValues,zBuffer:e.zBuffer,props:[...e.props],fieldAssociation:e.fieldAssociation,renderer:i,openGLRenderWindow:e._openGLRenderWindow};return _.generateSelection=function(){for(var T=arguments.length,P=new Array(T),I=0;I{if(!e._renderer||!e._openGLRenderWindow)return DG("Renderer and view must be set before calling Select."),!1;e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e._openGLRenderWindow.getRenderable().preRender(),n.invokeEvent({type:"StartEvent"}),e.originalBackground=e._renderer.getBackgroundByReference(),e._renderer.setBackground(0,0,0,0);const i=e._openGLRenderWindow.getRenderPasses();n.beginSelection();const l=[];for(e.currentPass=Ga.MIN_KNOWN_PASS;e.currentPass<=Ga.MAX_KNOWN_PASS;e.currentPass++)n.passRequired(e.currentPass)&&(n.preCapturePass(e.currentPass),e.captureZValues&&e.currentPass===Ga.ACTOR_PASS&&typeof i[0].requestDepth=="function"&&typeof i[0].getFramebuffer=="function"&&i[0].requestDepth(),e._openGLRenderWindow.traverseAllPasses(),n.postCapturePass(e.currentPass),n.savePixelBuffer(e.currentPass),l.push(e.currentPass));return l.forEach(c=>{e.currentPass=c,n.processPixelBuffers()}),e.currentPass=Ga.MAX_KNOWN_PASS,n.endSelection(),e._renderer.setBackground(e.originalBackground),n.invokeEvent({type:"EndEvent"}),!0},n.processPixelBuffers=()=>{e.props.forEach((i,l)=>{n.isPropHit(l)&&i.processSelectorPixelBuffers(n,e.propPixels[l])})},n.passRequired=i=>{if(i===Ga.ID_HIGH24){if(e.fieldAssociation===am.FIELD_ASSOCIATION_POINTS)return e.maximumPointId>16777215;if(e.fieldAssociation===am.FIELD_ASSOCIATION_CELLS)return e.maximumCellId>16777215}return!0},n.savePixelBuffer=i=>{if(e.pixBuffer[i]=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),!e.rawPixBuffer[i]){const l=(e.area[2]-e.area[0]+1)*(e.area[3]-e.area[1]+1)*4;e.rawPixBuffer[i]=new Uint8Array(l),e.rawPixBuffer[i].set(e.pixBuffer[i])}if(i===Ga.ACTOR_PASS){if(e.captureZValues){const l=e._openGLRenderWindow.getRenderPasses();if(typeof l[0].requestDepth=="function"&&typeof l[0].getFramebuffer=="function"){const c=l[0].getFramebuffer();c.saveCurrentBindingsAndBuffers(),c.bind(),e.zBuffer=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),c.restorePreviousBindingsAndBuffers()}}n.buildPropHitList(e.rawPixBuffer[i])}},n.buildPropHitList=i=>{let l=0;for(let c=0;c<=e.area[3]-e.area[1];c++)for(let g=0;g<=e.area[2]-e.area[0];g++){let v=nh(g,c,i,e.area);v>0&&(v--,v in e.hitProps||(e.hitProps[v]=!0,e.propPixels[v]=[]),e.propPixels[v].push(l*4)),++l}},n.renderProp=i=>{e.currentPass===Ga.ACTOR_PASS&&(n.setPropColorValueFromInt(e.props.length+wd),e.props.push(i))},n.renderCompositeIndex=i=>{e.currentPass===Ga.COMPOSITE_INDEX_PASS&&n.setPropColorValueFromInt(i+wd)},n.renderAttributeId=i=>{i<0||(e.maxAttributeId=i>e.maxAttributeId?i:e.maxAttributeId)},n.passTypeToString=i=>At.enumToString(Ga,i),n.isPropHit=i=>!!e.hitProps[i],n.setPropColorValueFromInt=i=>{e.propColorValue[0]=i%256/255,e.propColorValue[1]=Math.floor(i/256)%256/255,e.propColorValue[2]=Math.floor(i/65536)%256/255},n.getPixelInformation=(i,l,c)=>{const g=l<0?0:l;if(g===0){if(c[0]=i[0],c[1]=i[1],i[0]e.area[2]||i[1]e.area[3])return null;const P=[i[0]-e.area[0],i[1]-e.area[1]],I=nh(P[0],P[1],e.pixBuffer[Ga.ACTOR_PASS],e.area);if(I<=0||I-wd>=e.props.length)return null;const R={};R.valid=!0,R.propID=I-wd,R.prop=e.props[R.propID];let L=nh(P[0],P[1],e.pixBuffer[Ga.COMPOSITE_INDEX_PASS],e.area);if((L<0||L>16777215)&&(L=0),R.compositeID=L-wd,e.captureZValues){const j=(P[1]*(e.area[2]-e.area[0]+1)+P[0])*4;R.zValue=(256*e.zBuffer[j]+e.zBuffer[j+1])/65535,R.displayPosition=i}if(e.pixBuffer[Ga.ID_LOW24]&&OG(P[0],P[1],e.pixBuffer[Ga.ID_LOW24],e.area)===0)return R;const V=nh(P[0],P[1],e.pixBuffer[Ga.ID_LOW24],e.area),U=nh(P[0],P[1],e.pixBuffer[Ga.ID_HIGH24],e.area);return R.attributeID=MG(V,U),R}const v=[i[0],i[1]],_=[0,0];let T=n.getPixelInformation(i,0,c);if(T&&T.valid)return T;for(let P=1;PP?v[1]-P:0;I<=v[1]+P;++I)if(_[1]=I,v[0]>=P&&(_[0]=v[0]-P,T=n.getPixelInformation(_,0,c),T&&T.valid)||(_[0]=v[0]+P,T=n.getPixelInformation(_,0,c),T&&T.valid))return T;for(let I=v[0]>=P?v[0]-(P-1):0;I<=v[0]+(P-1);++I)if(_[0]=I,v[1]>=P&&(_[1]=v[1]-P,T=n.getPixelInformation(_,0,c),T&&T.valid)||(_[1]=v[1]+P,T=n.getPixelInformation(_,0,c),T&&T.valid))return T}return c[0]=i[0],c[1]=i[1],null},n.generateSelection=(i,l,c,g)=>{const v=Math.floor(i),_=Math.floor(l),T=Math.floor(c),P=Math.floor(g),I=new Map,R=[0,0];for(let L=_;L<=P;L++)for(let V=v;V<=T;V++){const U=[V,L],j=n.getPixelInformation(U,0,R);if(j&&j.valid){const z=IG(j);if(!I.has(z))I.set(z,{info:j,pixelCount:1,attributeIDs:[j.attributeID]});else{const $=I.get(z);$.pixelCount++,e.captureZValues&&j.zValue<$.info.zValue&&($.info=j),$.attributeIDs.indexOf(j.attributeID)===-1&&$.attributeIDs.push(j.attributeID)}}}return PG(e.fieldAssociation,I,e.captureZValues,e._renderer,e._openGLRenderWindow)},n.getRawPixelBuffer=i=>e.rawPixBuffer[i],n.getPixelBuffer=i=>e.pixBuffer[i],n.attach=(i,l)=>{e._openGLRenderWindow=i,e._renderer=l};const o=n.setArea;n.setArea=function(){return o(...arguments)?(e.area[0]=Math.floor(e.area[0]),e.area[1]=Math.floor(e.area[1]),e.area[2]=Math.floor(e.area[2]),e.area[3]=Math.floor(e.area[3]),!0):!1}}const j0e={area:void 0,currentPass:-1,propColorValue:null,props:null,maximumPointId:0,maximumCellId:0,idOffset:1};function RG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,j0e,o),A0e.extend(n,e,o),e.propColorValue=[0,0,0],e.props=[],e.area||(e.area=[0,0,0,0]),At.setGetArray(n,e,["area"],4),At.setGet(n,e,["_renderer","currentPass","_openGLRenderWindow","maximumPointId","maximumCellId"]),At.setGetArray(n,e,["propColorValue"],3),At.moveToProtected(n,e,["renderer","openGLRenderWindow"]),At.event(n,e,"event"),$0e(n,e)}const z0e=At.newInstance(RG,"vtkOpenGLHardwareSelector");var dO={newInstance:z0e,extend:RG,...yG},AG={exports:{}};(function(n,e){(function(o){n.exports=o()})(function(o){var i=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function l(z,$){var K=z[0],X=z[1],ee=z[2],ne=z[3];K+=(X&ee|~X&ne)+$[0]-680876936|0,K=(K<<7|K>>>25)+X|0,ne+=(K&X|~K&ee)+$[1]-389564586|0,ne=(ne<<12|ne>>>20)+K|0,ee+=(ne&K|~ne&X)+$[2]+606105819|0,ee=(ee<<17|ee>>>15)+ne|0,X+=(ee&ne|~ee&K)+$[3]-1044525330|0,X=(X<<22|X>>>10)+ee|0,K+=(X&ee|~X&ne)+$[4]-176418897|0,K=(K<<7|K>>>25)+X|0,ne+=(K&X|~K&ee)+$[5]+1200080426|0,ne=(ne<<12|ne>>>20)+K|0,ee+=(ne&K|~ne&X)+$[6]-1473231341|0,ee=(ee<<17|ee>>>15)+ne|0,X+=(ee&ne|~ee&K)+$[7]-45705983|0,X=(X<<22|X>>>10)+ee|0,K+=(X&ee|~X&ne)+$[8]+1770035416|0,K=(K<<7|K>>>25)+X|0,ne+=(K&X|~K&ee)+$[9]-1958414417|0,ne=(ne<<12|ne>>>20)+K|0,ee+=(ne&K|~ne&X)+$[10]-42063|0,ee=(ee<<17|ee>>>15)+ne|0,X+=(ee&ne|~ee&K)+$[11]-1990404162|0,X=(X<<22|X>>>10)+ee|0,K+=(X&ee|~X&ne)+$[12]+1804603682|0,K=(K<<7|K>>>25)+X|0,ne+=(K&X|~K&ee)+$[13]-40341101|0,ne=(ne<<12|ne>>>20)+K|0,ee+=(ne&K|~ne&X)+$[14]-1502002290|0,ee=(ee<<17|ee>>>15)+ne|0,X+=(ee&ne|~ee&K)+$[15]+1236535329|0,X=(X<<22|X>>>10)+ee|0,K+=(X&ne|ee&~ne)+$[1]-165796510|0,K=(K<<5|K>>>27)+X|0,ne+=(K&ee|X&~ee)+$[6]-1069501632|0,ne=(ne<<9|ne>>>23)+K|0,ee+=(ne&X|K&~X)+$[11]+643717713|0,ee=(ee<<14|ee>>>18)+ne|0,X+=(ee&K|ne&~K)+$[0]-373897302|0,X=(X<<20|X>>>12)+ee|0,K+=(X&ne|ee&~ne)+$[5]-701558691|0,K=(K<<5|K>>>27)+X|0,ne+=(K&ee|X&~ee)+$[10]+38016083|0,ne=(ne<<9|ne>>>23)+K|0,ee+=(ne&X|K&~X)+$[15]-660478335|0,ee=(ee<<14|ee>>>18)+ne|0,X+=(ee&K|ne&~K)+$[4]-405537848|0,X=(X<<20|X>>>12)+ee|0,K+=(X&ne|ee&~ne)+$[9]+568446438|0,K=(K<<5|K>>>27)+X|0,ne+=(K&ee|X&~ee)+$[14]-1019803690|0,ne=(ne<<9|ne>>>23)+K|0,ee+=(ne&X|K&~X)+$[3]-187363961|0,ee=(ee<<14|ee>>>18)+ne|0,X+=(ee&K|ne&~K)+$[8]+1163531501|0,X=(X<<20|X>>>12)+ee|0,K+=(X&ne|ee&~ne)+$[13]-1444681467|0,K=(K<<5|K>>>27)+X|0,ne+=(K&ee|X&~ee)+$[2]-51403784|0,ne=(ne<<9|ne>>>23)+K|0,ee+=(ne&X|K&~X)+$[7]+1735328473|0,ee=(ee<<14|ee>>>18)+ne|0,X+=(ee&K|ne&~K)+$[12]-1926607734|0,X=(X<<20|X>>>12)+ee|0,K+=(X^ee^ne)+$[5]-378558|0,K=(K<<4|K>>>28)+X|0,ne+=(K^X^ee)+$[8]-2022574463|0,ne=(ne<<11|ne>>>21)+K|0,ee+=(ne^K^X)+$[11]+1839030562|0,ee=(ee<<16|ee>>>16)+ne|0,X+=(ee^ne^K)+$[14]-35309556|0,X=(X<<23|X>>>9)+ee|0,K+=(X^ee^ne)+$[1]-1530992060|0,K=(K<<4|K>>>28)+X|0,ne+=(K^X^ee)+$[4]+1272893353|0,ne=(ne<<11|ne>>>21)+K|0,ee+=(ne^K^X)+$[7]-155497632|0,ee=(ee<<16|ee>>>16)+ne|0,X+=(ee^ne^K)+$[10]-1094730640|0,X=(X<<23|X>>>9)+ee|0,K+=(X^ee^ne)+$[13]+681279174|0,K=(K<<4|K>>>28)+X|0,ne+=(K^X^ee)+$[0]-358537222|0,ne=(ne<<11|ne>>>21)+K|0,ee+=(ne^K^X)+$[3]-722521979|0,ee=(ee<<16|ee>>>16)+ne|0,X+=(ee^ne^K)+$[6]+76029189|0,X=(X<<23|X>>>9)+ee|0,K+=(X^ee^ne)+$[9]-640364487|0,K=(K<<4|K>>>28)+X|0,ne+=(K^X^ee)+$[12]-421815835|0,ne=(ne<<11|ne>>>21)+K|0,ee+=(ne^K^X)+$[15]+530742520|0,ee=(ee<<16|ee>>>16)+ne|0,X+=(ee^ne^K)+$[2]-995338651|0,X=(X<<23|X>>>9)+ee|0,K+=(ee^(X|~ne))+$[0]-198630844|0,K=(K<<6|K>>>26)+X|0,ne+=(X^(K|~ee))+$[7]+1126891415|0,ne=(ne<<10|ne>>>22)+K|0,ee+=(K^(ne|~X))+$[14]-1416354905|0,ee=(ee<<15|ee>>>17)+ne|0,X+=(ne^(ee|~K))+$[5]-57434055|0,X=(X<<21|X>>>11)+ee|0,K+=(ee^(X|~ne))+$[12]+1700485571|0,K=(K<<6|K>>>26)+X|0,ne+=(X^(K|~ee))+$[3]-1894986606|0,ne=(ne<<10|ne>>>22)+K|0,ee+=(K^(ne|~X))+$[10]-1051523|0,ee=(ee<<15|ee>>>17)+ne|0,X+=(ne^(ee|~K))+$[1]-2054922799|0,X=(X<<21|X>>>11)+ee|0,K+=(ee^(X|~ne))+$[8]+1873313359|0,K=(K<<6|K>>>26)+X|0,ne+=(X^(K|~ee))+$[15]-30611744|0,ne=(ne<<10|ne>>>22)+K|0,ee+=(K^(ne|~X))+$[6]-1560198380|0,ee=(ee<<15|ee>>>17)+ne|0,X+=(ne^(ee|~K))+$[13]+1309151649|0,X=(X<<21|X>>>11)+ee|0,K+=(ee^(X|~ne))+$[4]-145523070|0,K=(K<<6|K>>>26)+X|0,ne+=(X^(K|~ee))+$[11]-1120210379|0,ne=(ne<<10|ne>>>22)+K|0,ee+=(K^(ne|~X))+$[2]+718787259|0,ee=(ee<<15|ee>>>17)+ne|0,X+=(ne^(ee|~K))+$[9]-343485551|0,X=(X<<21|X>>>11)+ee|0,z[0]=K+z[0]|0,z[1]=X+z[1]|0,z[2]=ee+z[2]|0,z[3]=ne+z[3]|0}function c(z){var $=[],K;for(K=0;K<64;K+=4)$[K>>2]=z.charCodeAt(K)+(z.charCodeAt(K+1)<<8)+(z.charCodeAt(K+2)<<16)+(z.charCodeAt(K+3)<<24);return $}function g(z){var $=[],K;for(K=0;K<64;K+=4)$[K>>2]=z[K]+(z[K+1]<<8)+(z[K+2]<<16)+(z[K+3]<<24);return $}function v(z){var $=z.length,K=[1732584193,-271733879,-1732584194,271733878],X,ee,ne,le,ce,ge;for(X=64;X<=$;X+=64)l(K,c(z.substring(X-64,X)));for(z=z.substring(X-64),ee=z.length,ne=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],X=0;X>2]|=z.charCodeAt(X)<<(X%4<<3);if(ne[X>>2]|=128<<(X%4<<3),X>55)for(l(K,ne),X=0;X<16;X+=1)ne[X]=0;return le=$*8,le=le.toString(16).match(/(.*?)(.{0,8})$/),ce=parseInt(le[2],16),ge=parseInt(le[1],16)||0,ne[14]=ce,ne[15]=ge,l(K,ne),K}function _(z){var $=z.length,K=[1732584193,-271733879,-1732584194,271733878],X,ee,ne,le,ce,ge;for(X=64;X<=$;X+=64)l(K,g(z.subarray(X-64,X)));for(z=X-64<$?z.subarray(X-64):new Uint8Array(0),ee=z.length,ne=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],X=0;X>2]|=z[X]<<(X%4<<3);if(ne[X>>2]|=128<<(X%4<<3),X>55)for(l(K,ne),X=0;X<16;X+=1)ne[X]=0;return le=$*8,le=le.toString(16).match(/(.*?)(.{0,8})$/),ce=parseInt(le[2],16),ge=parseInt(le[1],16)||0,ne[14]=ce,ne[15]=ge,l(K,ne),K}function T(z){var $="",K;for(K=0;K<4;K+=1)$+=i[z>>K*8+4&15]+i[z>>K*8&15];return $}function P(z){var $;for($=0;$ne?new ArrayBuffer(0):(le=ne-ee,ce=new ArrayBuffer(le),ge=new Uint8Array(ce),pe=new Uint8Array(this,ee,le),ge.set(pe),ce)}}();function I(z){return/[\u0080-\uFFFF]/.test(z)&&(z=unescape(encodeURIComponent(z))),z}function R(z,$){var K=z.length,X=new ArrayBuffer(K),ee=new Uint8Array(X),ne;for(ne=0;ne>2]|=$.charCodeAt(X)<<(X%4<<3);return this._finish(ee,K),ne=P(this._hash),z&&(ne=U(ne)),this.reset(),ne},j.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},j.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},j.prototype.setState=function(z){return this._buff=z.buff,this._length=z.length,this._hash=z.hash,this},j.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},j.prototype._finish=function(z,$){var K=$,X,ee,ne;if(z[K>>2]|=128<<(K%4<<3),K>55)for(l(this._hash,z),K=0;K<16;K+=1)z[K]=0;X=this._length*8,X=X.toString(16).match(/(.*?)(.{0,8})$/),ee=parseInt(X[2],16),ne=parseInt(X[1],16)||0,z[14]=ee,z[15]=ne,l(this._hash,z)},j.hash=function(z,$){return j.hashBinary(I(z),$)},j.hashBinary=function(z,$){var K=v(z),X=P(K);return $?U(X):X},j.ArrayBuffer=function(){this.reset()},j.ArrayBuffer.prototype.append=function(z){var $=V(this._buff.buffer,z),K=$.length,X;for(this._length+=z.byteLength,X=64;X<=K;X+=64)l(this._hash,g($.subarray(X-64,X)));return this._buff=X-64>2]|=$[ee]<<(ee%4<<3);return this._finish(X,K),ne=P(this._hash),z&&(ne=U(ne)),this.reset(),ne},j.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},j.ArrayBuffer.prototype.getState=function(){var z=j.prototype.getState.call(this);return z.buff=L(z.buff),z},j.ArrayBuffer.prototype.setState=function(z){return z.buff=R(z.buff,!0),j.prototype.setState.call(this,z)},j.ArrayBuffer.prototype.destroy=j.prototype.destroy,j.ArrayBuffer.prototype._finish=j.prototype._finish,j.ArrayBuffer.hash=function(z,$){var K=_(new Uint8Array(z)),X=P(K);return $?U(X):X},j})})(AG);var H0e=AG.exports;const K0e=yf(H0e),q0e=["lastShaderProgramBound","context","_openGLRenderWindow"];function X0e(n,e){e.classHierarchy.push("vtkShaderCache"),n.replaceShaderValues=(o,i,l)=>{let c=i;l.length>0&&(c=zn.substitute(c,"VSOut","GSOut").result);const g=e._openGLRenderWindow.getWebgl2();let v=` +`,_=`#version 100 +`;g?_=`#version 300 es +#define attribute in +#define textureCube texture +#define texture2D texture +#define textureCubeLod textureLod +#define texture2DLod textureLod +`:(e.context.getExtension("OES_standard_derivatives"),e.context.getExtension("EXT_frag_depth")&&(v=`#extension GL_EXT_frag_depth : enable +`),e.context.getExtension("EXT_shader_texture_lod")&&(v+=`#extension GL_EXT_shader_texture_lod : enable +#define textureCubeLod textureCubeLodEXT +#define texture2DLod texture2DLodEXT`)),c=zn.substitute(c,"//VTK::System::Dec",[`${_} +`,g?"":`#extension GL_OES_standard_derivatives : enable +`,v,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;let T=zn.substitute(o,"//VTK::System::Dec",[`${_} +`,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;if(g){T=zn.substitute(T,"varying","out").result,c=zn.substitute(c,"varying","in").result;let I="",R=0;for(;c.includes(`gl_FragData[${R}]`);)c=zn.substitute(c,`gl_FragData\\[${R}\\]`,`fragOutput${R}`).result,I+=`layout(location = ${R}) out vec4 fragOutput${R}; +`,R++;c=zn.substitute(c,"//VTK::Output::Dec",I).result}const P=zn.substitute(l,"//VTK::System::Dec",_).result;return{VSSource:T,FSSource:c,GSSource:P}},n.readyShaderProgramArray=(o,i,l)=>{const c=n.replaceShaderValues(o,i,l),g=n.getShaderProgram(c.VSSource,c.FSSource,c.GSSource);return n.readyShaderProgram(g)},n.readyShaderProgram=o=>!o||!o.getCompiled()&&!o.compileShader()||!n.bindShaderProgram(o)?null:o,n.getShaderProgram=(o,i,l)=>{const c=`${o}${i}${l}`,g=K0e.hash(c);if(!(g in e.shaderPrograms)){const v=zn.newInstance();return v.setContext(e.context),v.getVertexShader().setSource(o),v.getFragmentShader().setSource(i),l&&v.getGeometryShader().setSource(l),v.setMd5Hash(g),e.shaderPrograms[g]=v,v}return e.shaderPrograms[g]},n.releaseGraphicsResources=o=>{n.releaseCurrentShaderProgram(),Object.keys(e.shaderPrograms).map(i=>e.shaderPrograms[i]).forEach(i=>i.cleanup()),e.shaderPrograms={}},n.releaseCurrentShaderProgram=()=>{e.lastShaderProgramBound&&(e.lastShaderProgramBound.cleanup(),e.lastShaderProgramBound=null)},n.bindShaderProgram=o=>(e.lastShaderProgramBound===o||(e.lastShaderProgramBound&&e.lastShaderProgramBound.release(),o.bind(),e.lastShaderProgramBound=o),1)}const Y0e={lastShaderProgramBound:null,shaderPrograms:null,context:null};function LG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Y0e,o),e.shaderPrograms={},At.obj(n,e),At.setGet(n,e,q0e),At.moveToProtected(n,e,["openGLRenderWindow"]),X0e(n,e)}const J0e=At.newInstance(LG,"vtkShaderCache");var Z0e={newInstance:J0e,extend:LG};const{vtkErrorMacro:Q0e}=At;function eoe(n,e){e.classHierarchy.push("vtkOpenGLTextureUnitManager"),n.deleteTable=()=>{for(let o=0;o{if(e.context!==o){if(e.context!==0&&n.deleteTable(),e.context=o,e.context){e.numberOfTextureUnits=o.getParameter(o.MAX_TEXTURE_IMAGE_UNITS);for(let i=0;i{for(let o=0;on.isAllocated(o)?-1:(e.textureUnits[o]=!0,o),n.isAllocated=o=>e.textureUnits[o],n.free=o=>{e.textureUnits[o]=!1},n.freeAll=()=>{for(let o=0;o2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,toe,o),At.obj(n,e),e.textureUnits=[],At.get(n,e,["numberOfTextureUnits"]),At.setGet(n,e,["context"]),eoe(n,e)}const noe=At.newInstance(NG,"vtkOpenGLTextureUnitManager");var roe={newInstance:noe,extend:NG};function ioe(n,e){e.classHierarchy.push("vtkRenderWindowViewNode"),n.getViewNodeFactory=()=>null,n.getAspectRatio=()=>e.size[0]/e.size[1],n.getAspectRatioForRenderer=o=>{const i=o.getViewportByReference();return e.size[0]*(i[2]-i[0])/((i[3]-i[1])*e.size[1])},n.isInViewport=(o,i,l)=>{const c=l.getViewportByReference(),g=n.getFramebufferSize();return c[0]*g[0]<=o&&c[2]*g[0]>=o&&c[1]*g[1]<=i&&c[3]*g[1]>=i},n.getViewportSize=o=>{const i=o.getViewportByReference(),l=n.getFramebufferSize();return[(i[2]-i[0])*l[0],(i[3]-i[1])*l[1]]},n.getViewportCenter=o=>{const i=n.getViewportSize(o);return[i[0]*.5,i[1]*.5]},n.displayToNormalizedDisplay=(o,i,l)=>{const c=n.getFramebufferSize();return[o/c[0],i/c[1],l]},n.normalizedDisplayToDisplay=(o,i,l)=>{const c=n.getFramebufferSize();return[o*c[0],i*c[1],l]},n.worldToView=(o,i,l,c)=>c.worldToView(o,i,l),n.viewToWorld=(o,i,l,c)=>c.viewToWorld(o,i,l),n.worldToDisplay=(o,i,l,c)=>{const g=c.worldToView(o,i,l),v=n.getViewportSize(c),_=c.viewToProjection(g[0],g[1],g[2],v[0]/v[1]),T=c.projectionToNormalizedDisplay(_[0],_[1],_[2]);return n.normalizedDisplayToDisplay(T[0],T[1],T[2])},n.displayToWorld=(o,i,l,c)=>{const g=n.displayToNormalizedDisplay(o,i,l),v=c.normalizedDisplayToProjection(g[0],g[1],g[2]),_=n.getViewportSize(c),T=c.projectionToView(v[0],v[1],v[2],_[0]/_[1]);return c.viewToWorld(T[0],T[1],T[2])},n.normalizedDisplayToViewport=(o,i,l,c)=>{let g=c.getViewportByReference();g=n.normalizedDisplayToDisplay(g[0],g[1],0);const v=n.normalizedDisplayToDisplay(o,i,l);return[v[0]-g[0]-.5,v[1]-g[1]-.5,l]},n.viewportToNormalizedViewport=(o,i,l,c)=>{const g=n.getViewportSize(c);return g&&g[0]!==0&&g[1]!==0?[o/(g[0]-1),i/(g[1]-1),l]:[o,i,l]},n.normalizedViewportToViewport=(o,i,l,c)=>{const g=n.getViewportSize(c);return[o*(g[0]-1),i*(g[1]-1),l]},n.displayToLocalDisplay=(o,i,l)=>{const c=n.getFramebufferSize();return[o,c[1]-i-1,l]},n.viewportToNormalizedDisplay=(o,i,l,c)=>{let g=c.getViewportByReference();g=n.normalizedDisplayToDisplay(g[0],g[1],0);const v=o+g[0]+.5,_=i+g[1]+.5;return n.displayToNormalizedDisplay(v,_,l)},n.getComputedDevicePixelRatio=()=>e.size[0]/n.getContainerSize()[0],n.getContainerSize=()=>{At.vtkErrorMacro("not implemented")},n.getPixelData=(o,i,l,c)=>{At.vtkErrorMacro("not implemented")},n.createSelector=()=>{At.vtkErrorMacro("not implemented")}}const ooe={size:void 0,selector:void 0};function bG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ooe,o),e.size||(e.size=[300,300]),At.getArray(n,e,["size"],2),At.get(n,e,["selector"]),Ha.extend(n,e,o),ioe(n,e)}const soe=At.newInstance(bG,"vtkRenderWindowViewNode");var aoe={newInstance:soe,extend:bG};const loe="__getUnderlyingContext";function uoe(){const n=new Map,e={apply(l,c,g){return n.has(g[0])?n.get(g[0]):l.apply(c,g)}};function o(l){return{apply(c,g,v){return n.set(l,v[0]),c.apply(g,v)}}}const i=Object.create(null);return i.getParameter=(l,c,g,v)=>new Proxy(v.bind(l),e),i.depthMask=(l,c,g,v)=>new Proxy(v.bind(l),o(l.DEPTH_WRITEMASK)),{get(l,c,g){if(c===loe)return()=>l;let v=Reflect.get(l,c,l);v instanceof Function&&(v=v.bind(l));const _=i[c];return _?_(l,c,g,v):v}}}const{vtkDebugMacro:KA,vtkErrorMacro:qA}=At,coe={position:"absolute",top:0,left:0,width:"100%",height:"100%"},foe=["activateTexture","deactivateTexture","disableCullFace","enableCullFace","get3DContext","getActiveFramebuffer","getContext","getDefaultTextureByteSize","getDefaultTextureInternalFormat","getDefaultToWebgl2","getGLInformations","getGraphicsMemoryInfo","getGraphicsResourceForObject","getHardwareMaximumLineWidth","getPixelData","getShaderCache","getTextureUnitForTexture","getTextureUnitManager","getWebgl2","makeCurrent","releaseGraphicsResources","registerGraphicsResourceUser","unregisterGraphicsResourceUser","restoreContext","setActiveFramebuffer","setContext","setDefaultToWebgl2","setGraphicsResourceForObject"];function W1(n,e,o){const i=n.createFramebuffer(),l=n.createTexture();n.bindTexture(n.TEXTURE_2D,l),n.texImage2D(n.TEXTURE_2D,0,e,2,2,0,e,o,null),n.bindFramebuffer(n.FRAMEBUFFER,i),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,l,0);const c=n.checkFramebufferStatus(n.FRAMEBUFFER);return n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),c===n.FRAMEBUFFER_COMPLETE}let jw=0;const dC=[];function hoe(){jw++,dC.forEach(n=>n(jw))}function doe(){jw--,dC.forEach(n=>n(jw))}function goe(n){dC.push(n)}function poe(n){return dC.pop()}function XA(n){n.preventDefault()}function moe(n,e){e.classHierarchy.push("vtkOpenGLRenderWindow");let o;function i(){return o||(o=uoe()),o}n.getViewNodeFactory=()=>e.myFactory,e.canvas.addEventListener("webglcontextlost",XA,!1),e.canvas.addEventListener("webglcontextrestored",n.restoreContext,!1);const l=[0,0];function c(){e.renderable&&(e.size[0]!==l[0]||e.size[1]!==l[1])&&(l[0]=e.size[0],l[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1])),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}n.onModified(c),n.buildPass=I=>{if(I){if(!e.renderable)return;n.prepareNodes(),n.addMissingNodes(e.renderable.getRenderersByReference()),n.addMissingNodes(e.renderable.getChildRenderWindowsByReference()),n.removeUnusedNodes(),n.initialize(),e.children.forEach(R=>{var L;(L=R.setOpenGLRenderWindow)==null||L.call(R,n)})}},n.initialize=()=>{if(!e.initialized){if(e.rootOpenGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),e.rootOpenGLRenderWindow)e.context2D=n.get2DContext();else{e.context=n.get3DContext(),n.resizeFromChildRenderWindows(),e.context&&hoe(),e.textureUnitManager=roe.newInstance(),e.textureUnitManager.setContext(e.context),e.shaderCache.setContext(e.context);const I=e.context;I.blendFuncSeparate(I.SRC_ALPHA,I.ONE_MINUS_SRC_ALPHA,I.ONE,I.ONE_MINUS_SRC_ALPHA),I.depthFunc(I.LEQUAL),I.enable(I.BLEND)}e.initialized=!0}},n.makeCurrent=()=>{e.context.makeCurrent()},n.setContainer=I=>{e.el&&e.el!==I&&(e.canvas.parentNode!==e.el&&qA("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==I&&(e.el=I,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),n.modified())},n.getContainer=()=>e.el,n.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:I,height:R}=e.el.getBoundingClientRect();e.containerSize=[I,R]}return e.containerSize||e.size},n.getFramebufferSize=()=>{var R;return((R=e.activeFramebuffer)==null?void 0:R.getSize())||e.size},n.getPixelData=(I,R,L,V)=>{const U=new Uint8Array((L-I+1)*(V-R+1)*4);return e.context.readPixels(I,R,L-I+1,V-R+1,e.context.RGBA,e.context.UNSIGNED_BYTE,U),U},n.get3DContext=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{preserveDrawingBuffer:!1,depth:!0,alpha:!0,powerPreference:"high-performance"},R=null;const L=typeof WebGL2RenderingContext<"u";return e.webgl2=!1,e.defaultToWebgl2&&L&&(R=e.canvas.getContext("webgl2",I),R&&(e.webgl2=!0,KA("using webgl2"))),R||(KA("using webgl1"),R=e.canvas.getContext("webgl",I)||e.canvas.getContext("experimental-webgl",I)),new Proxy(R,i())},n.get2DContext=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.canvas.getContext("2d",I)},n.restoreContext=()=>{const I=ZI.newInstance();I.setCurrentOperation("Release"),I.traverse(n,null)},n.activateTexture=I=>{const R=e._textureResourceIds.get(I);if(R!==void 0){e.context.activeTexture(e.context.TEXTURE0+R);return}const L=n.getTextureUnitManager().allocate();if(L<0){qA("Hardware does not support the number of textures defined.");return}e._textureResourceIds.set(I,L),e.context.activeTexture(e.context.TEXTURE0+L)},n.deactivateTexture=I=>{const R=e._textureResourceIds.get(I);R!==void 0&&(n.getTextureUnitManager().free(R),e._textureResourceIds.delete(I))},n.getTextureUnitForTexture=I=>{const R=e._textureResourceIds.get(I);return R!==void 0?R:-1},n.getDefaultTextureByteSize=function(I){let R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e.webgl2)switch(I){case b0.CHAR:case b0.SIGNED_CHAR:case b0.UNSIGNED_CHAR:return 1;case R:case L:case b0.UNSIGNED_SHORT:case b0.SHORT:case b0.VOID:return 2;default:return 4}return 1},n.getDefaultTextureInternalFormat=function(I,R){let L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,V=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e.webgl2)switch(I){case b0.UNSIGNED_CHAR:switch(R){case 1:return e.context.R8;case 2:return e.context.RG8;case 3:return e.context.RGB8;case 4:default:return e.context.RGBA8}case(L&&!V&&b0.UNSIGNED_SHORT):switch(R){case 1:return L.R16_EXT;case 2:return L.RG16_EXT;case 3:return L.RGB16_EXT;case 4:default:return L.RGBA16_EXT}case(L&&!V&&b0.SHORT):switch(R){case 1:return L.R16_SNORM_EXT;case 2:return L.RG16_SNORM_EXT;case 3:return L.RGB16_SNORM_EXT;case 4:default:return L.RGBA16_SNORM_EXT}case b0.UNSIGNED_SHORT:case b0.SHORT:case b0.FLOAT:default:switch(R){case 1:return V?e.context.R16F:e.context.R32F;case 2:return V?e.context.RG16F:e.context.RG32F;case 3:return V?e.context.RGB16F:e.context.RGB32F;case 4:default:return V?e.context.RGBA16F:e.context.RGBA32F}}switch(R){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:default:return e.context.RGBA}},n.setBackgroundImage=I=>{e.bgImage.src=I.src},n.setUseBackgroundImage=I=>{e.useBackgroundImage=I,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};function g(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.imageFormat;const R=document.createElement("canvas"),L=R.getContext("2d");R.width=e.canvas.width,R.height=e.canvas.height,L.drawImage(e.canvas,0,0);const V=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach($=>{$.getViewProps().forEach(X=>{if(X.getContainer){const ne=X.getContainer().getElementsByTagName("canvas");for(let le=0;le0&&arguments[0]!==void 0?arguments[0]:"image/png",{resetCamera:R=!1,size:L=null,scale:V=1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e.deleted)return null;e.imageFormat=I;const U=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:L||V!==1?L||e.size.map(j=>j*V):null},new Promise((j,z)=>{const $=n.onImageReady(K=>{var X;if(e._screenshot.size===null)e.notifyStartCaptureImage=U,$.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,n.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(ee=>{let{restoreParamsFn:ne,arg:le}=ee;return ne(le)}),n.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),j(K);else{const ee=document.createElement("img");if(ee.style=coe,ee.src=K,e._screenshot.placeHolder=e.el.appendChild(ee),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,(X=e.rootOpenGLRenderWindow)==null||X.resizeFromChildRenderWindows(),e._screenshot.size=null,n.modified(),R){const ne=R!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(le=>{const ce=le.getActiveCamera(),ge=ce.get("focalPoint","position","parallelScale");return{resetCameraArgs:ne?{renderer:le}:void 0,resetCameraFn:ne?R:le.resetCamera,restoreParamsFn:ce.set,arg:JSON.parse(JSON.stringify(ge))}}),e._screenshot.cameras.forEach(le=>{let{resetCameraFn:ce,resetCameraArgs:ge}=le;return ce(ge)})}n.traverseAllPasses()}})})};let v;n.getHardwareMaximumLineWidth=()=>{if(v!=null)return v;const I=n.get3DContext(),R=I.getParameter(I.ALIASED_LINE_WIDTH_RANGE);return v=R[1],R[1]},n.getGLInformations=()=>{if(e._glInformation)return e._glInformation;const I=n.get3DContext(),R=I.getExtension("OES_texture_float"),L=I.getExtension("OES_texture_half_float"),V=I.getExtension("WEBGL_debug_renderer_info"),U=I.getExtension("WEBGL_draw_buffers"),j=I.getExtension("EXT_texture_filter_anisotropic")||I.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),z=[["Max Vertex Attributes","MAX_VERTEX_ATTRIBS",I.getParameter(I.MAX_VERTEX_ATTRIBS)],["Max Varying Vectors","MAX_VARYING_VECTORS",I.getParameter(I.MAX_VARYING_VECTORS)],["Max Vertex Uniform Vectors","MAX_VERTEX_UNIFORM_VECTORS",I.getParameter(I.MAX_VERTEX_UNIFORM_VECTORS)],["Max Fragment Uniform Vectors","MAX_FRAGMENT_UNIFORM_VECTORS",I.getParameter(I.MAX_FRAGMENT_UNIFORM_VECTORS)],["Max Fragment Texture Image Units","MAX_TEXTURE_IMAGE_UNITS",I.getParameter(I.MAX_TEXTURE_IMAGE_UNITS)],["Max Vertex Texture Image Units","MAX_VERTEX_TEXTURE_IMAGE_UNITS",I.getParameter(I.MAX_VERTEX_TEXTURE_IMAGE_UNITS)],["Max Combined Texture Image Units","MAX_COMBINED_TEXTURE_IMAGE_UNITS",I.getParameter(I.MAX_COMBINED_TEXTURE_IMAGE_UNITS)],["Max 2D Texture Size","MAX_TEXTURE_SIZE",I.getParameter(I.MAX_TEXTURE_SIZE)],["Max Cube Texture Size","MAX_CUBE_MAP_TEXTURE_SIZE",I.getParameter(I.MAX_CUBE_MAP_TEXTURE_SIZE)],["Max Texture Anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT",j&&I.getParameter(j.MAX_TEXTURE_MAX_ANISOTROPY_EXT)],["Point Size Range","ALIASED_POINT_SIZE_RANGE",I.getParameter(I.ALIASED_POINT_SIZE_RANGE).join(" - ")],["Line Width Range","ALIASED_LINE_WIDTH_RANGE",I.getParameter(I.ALIASED_LINE_WIDTH_RANGE).join(" - ")],["Max Viewport Dimensions","MAX_VIEWPORT_DIMS",I.getParameter(I.MAX_VIEWPORT_DIMS).join(" - ")],["Max Renderbuffer Size","MAX_RENDERBUFFER_SIZE",I.getParameter(I.MAX_RENDERBUFFER_SIZE)],["Framebuffer Red Bits","RED_BITS",I.getParameter(I.RED_BITS)],["Framebuffer Green Bits","GREEN_BITS",I.getParameter(I.GREEN_BITS)],["Framebuffer Blue Bits","BLUE_BITS",I.getParameter(I.BLUE_BITS)],["Framebuffer Alpha Bits","ALPHA_BITS",I.getParameter(I.ALPHA_BITS)],["Framebuffer Depth Bits","DEPTH_BITS",I.getParameter(I.DEPTH_BITS)],["Framebuffer Stencil Bits","STENCIL_BITS",I.getParameter(I.STENCIL_BITS)],["Framebuffer Subpixel Bits","SUBPIXEL_BITS",I.getParameter(I.SUBPIXEL_BITS)],["MSAA Samples","SAMPLES",I.getParameter(I.SAMPLES)],["MSAA Sample Buffers","SAMPLE_BUFFERS",I.getParameter(I.SAMPLE_BUFFERS)],["Supported Formats for UByte Render Targets ","UNSIGNED_BYTE RENDER TARGET FORMATS",[R&&W1(I,I.RGBA,I.UNSIGNED_BYTE)?"RGBA":"",R&&W1(I,I.RGB,I.UNSIGNED_BYTE)?"RGB":"",R&&W1(I,I.LUMINANCE,I.UNSIGNED_BYTE)?"LUMINANCE":"",R&&W1(I,I.ALPHA,I.UNSIGNED_BYTE)?"ALPHA":"",R&&W1(I,I.LUMINANCE_ALPHA,I.UNSIGNED_BYTE)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Half Float Render Targets","HALF FLOAT RENDER TARGET FORMATS",[L&&W1(I,I.RGBA,L.HALF_FLOAT_OES)?"RGBA":"",L&&W1(I,I.RGB,L.HALF_FLOAT_OES)?"RGB":"",L&&W1(I,I.LUMINANCE,L.HALF_FLOAT_OES)?"LUMINANCE":"",L&&W1(I,I.ALPHA,L.HALF_FLOAT_OES)?"ALPHA":"",L&&W1(I,I.LUMINANCE_ALPHA,L.HALF_FLOAT_OES)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Full Float Render Targets","FLOAT RENDER TARGET FORMATS",[R&&W1(I,I.RGBA,I.FLOAT)?"RGBA":"",R&&W1(I,I.RGB,I.FLOAT)?"RGB":"",R&&W1(I,I.LUMINANCE,I.FLOAT)?"LUMINANCE":"",R&&W1(I,I.ALPHA,I.FLOAT)?"ALPHA":"",R&&W1(I,I.LUMINANCE_ALPHA,I.FLOAT)?"LUMINANCE_ALPHA":""].join(" ")],["Max Multiple Render Targets Buffers","MAX_DRAW_BUFFERS_WEBGL",U?I.getParameter(U.MAX_DRAW_BUFFERS_WEBGL):0],["High Float Precision in Vertex Shader","HIGH_FLOAT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_FLOAT).rangeMax,")"].join("")],["Medium Float Precision in Vertex Shader","MEDIUM_FLOAT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_FLOAT).rangeMax,")"].join("")],["Low Float Precision in Vertex Shader","LOW_FLOAT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_FLOAT).rangeMax,")"].join("")],["High Float Precision in Fragment Shader","HIGH_FLOAT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_FLOAT).rangeMax,")"].join("")],["Medium Float Precision in Fragment Shader","MEDIUM_FLOAT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_FLOAT).rangeMax,")"].join("")],["Low Float Precision in Fragment Shader","LOW_FLOAT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_FLOAT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_FLOAT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_FLOAT).rangeMax,")"].join("")],["High Int Precision in Vertex Shader","HIGH_INT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_INT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_INT).rangeMax,")"].join("")],["Medium Int Precision in Vertex Shader","MEDIUM_INT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_INT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_INT).rangeMax,")"].join("")],["Low Int Precision in Vertex Shader","LOW_INT VERTEX_SHADER",[I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_INT).precision," (-2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.LOW_INT).rangeMax,")"].join("")],["High Int Precision in Fragment Shader","HIGH_INT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_INT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_INT).rangeMax,")"].join("")],["Medium Int Precision in Fragment Shader","MEDIUM_INT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_INT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_INT).rangeMax,")"].join("")],["Low Int Precision in Fragment Shader","LOW_INT FRAGMENT_SHADER",[I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_INT).precision," (-2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_INT).rangeMin," - 2",I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.LOW_INT).rangeMax,")"].join("")],["Supported Extensions","EXTENSIONS",I.getSupportedExtensions().join("
")],["WebGL Renderer","RENDERER",I.getParameter(I.RENDERER)],["WebGL Vendor","VENDOR",I.getParameter(I.VENDOR)],["WebGL Version","VERSION",I.getParameter(I.VERSION)],["Shading Language Version","SHADING_LANGUAGE_VERSION",I.getParameter(I.SHADING_LANGUAGE_VERSION)],["Unmasked Renderer","UNMASKED_RENDERER",V&&I.getParameter(V.UNMASKED_RENDERER_WEBGL)],["Unmasked Vendor","UNMASKED_VENDOR",V&&I.getParameter(V.UNMASKED_VENDOR_WEBGL)],["WebGL Version","WEBGL_VERSION",e.webgl2?2:1]],$={};for(;z.length;){const[K,X,ee]=z.pop();X&&($[X]={label:K,value:ee})}return e._glInformation=$,$},n.traverseAllPasses=()=>{var R;if(e.renderPasses)for(let L=0;L{const I=e.rootOpenGLRenderWindow;if(!I||!e.context2D||e.children.some(V=>{var U;return!!((U=V.getSelector)!=null&&U.call(V))}))return;const R=I.getCanvas(),L=e.canvas;e.context2D.drawImage(R,0,R.height-L.height,L.width,L.height,0,0,L.width,L.height)},n.resizeFromChildRenderWindows=()=>{var R;const I=e.renderable.getChildRenderWindowsByReference();if(I.length>0){const L=[0,0];for(let V=0;VL[0]?U[0]:L[0],L[1]=U[1]>L[1]?U[1]:L[1])}n.setSize(...L)}},n.disableCullFace=()=>{e.cullFaceEnabled&&(e.context.disable(e.context.CULL_FACE),e.cullFaceEnabled=!1)},n.enableCullFace=()=>{e.cullFaceEnabled||(e.context.enable(e.context.CULL_FACE),e.cullFaceEnabled=!0)},n.setViewStream=I=>{if(e.viewStream===I)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=I,e.viewStream){const R=e.renderable.getRenderers()[0];R.getBackgroundByReference()[3]=0,n.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(L=>n.setBackgroundImage(L.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),n.modified()}return!0},n.createSelector=()=>{const I=dO.newInstance();return I.setOpenGLRenderWindow(n),I};function _(){e.canvas.removeEventListener("webglcontextlost",XA),e.canvas.removeEventListener("webglcontextrestored",n.restoreContext)}n.delete=At.chain(()=>{e.context&&doe(),n.setContainer(),n.setViewStream()},_,n.delete),n.setActiveFramebuffer=I=>{e.activeFramebuffer=I};const T=n.setSize;n.setSize=(I,R)=>{const L=T(I,R);return L&&n.invokeWindowResizeEvent({width:I,height:R}),L},n.registerGraphicsResourceUser=(I,R)=>{e._graphicsResources.has(I)||n.setGraphicsResourceForObject(I,null,null);const L=e._graphicsResources.get(I);L==null||L.users.add(R)},n.unregisterGraphicsResourceUser=(I,R)=>{var V;const L=e._graphicsResources.get(I);L&&(L.users.delete(R),L.users.size||((V=L.oglObject)==null||V.releaseGraphicsResources(n),e._graphicsResources.delete(I)))},n.getGraphicsResourceForObject=I=>e._graphicsResources.get(I),n.setGraphicsResourceForObject=(I,R,L)=>{var U;if(!I)return;const V=e._graphicsResources.get(I);(U=V==null?void 0:V.oglObject)==null||U.releaseGraphicsResources(n),e._graphicsResources.set(I,{coreObject:I,oglObject:R,hash:L,users:(V==null?void 0:V.users)??new Set})},n.getGraphicsMemoryInfo=()=>{let I=0;return e._graphicsResources.forEach(R=>{let{oglObject:L}=R;I+=L.getAllocatedGPUMemoryInBytes()}),I},n.releaseGraphicsResources=()=>{e.shaderCache!==null&&e.shaderCache.releaseGraphicsResources(n),e._graphicsResources.forEach(I=>{let{oglObject:R}=I;R.releaseGraphicsResources(n)}),e._graphicsResources.clear(),e.textureUnitManager!==null&&e.textureUnitManager.freeAll(),e.renderable.getRenderersByReference().forEach(I=>{const R=n.getViewNodeFor(I);R==null||R.releaseGraphicsResources()})};const P={...n};foe.forEach(I=>{n[I]=function(){return e.rootOpenGLRenderWindow?e.rootOpenGLRenderWindow[I](...arguments):P[I](...arguments)}})}const voe={cullFaceEnabled:!1,shaderCache:null,initialized:!1,context:null,context2D:null,canvas:null,cursorVisibility:!0,cursor:"pointer",textureUnitManager:null,textureResourceIds:null,containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,webgl2:!1,defaultToWebgl2:!0,activeFramebuffer:null,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1};function FG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,voe,o),aoe.extend(n,e,o),e.canvas||(e.canvas=document.createElement("canvas"),e.canvas.style.width="100%"),e.selector||(e.selector=dO.newInstance(),e.selector.setOpenGLRenderWindow(n)),e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",e._textureResourceIds=new Map,e._graphicsResources=new Map,e._glInformation=null,e.myFactory=ere.newInstance(),e.shaderCache=Z0e.newInstance(),e.shaderCache.setOpenGLRenderWindow(n),e.renderPasses[0]=l0e.newInstance(),At.get(n,e,["shaderCache","textureUnitManager","webgl2","useBackgroundImage","activeFramebuffer","rootOpenGLRenderWindow"]),At.setGet(n,e,["initialized","context","context2D","canvas","renderPasses","notifyStartCaptureImage","defaultToWebgl2","cursor","useOffScreen"]),At.setGetArray(n,e,["size"],2),At.event(n,e,"imageReady"),At.event(n,e,"windowResizeEvent"),moe(n,e)}const gO=At.newInstance(FG,"vtkOpenGLRenderWindow");cB("WebGL",gO);var koe={newInstance:gO,extend:FG,pushMonitorGLContextCount:goe,popMonitorGLContextCount:poe};R2("vtkRenderWindow",gO);function yoe(n,e){e.classHierarchy.push("vtkOpenGLActor"),n.buildPass=o=>{if(o){e._openGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),n.prepareNodes(),n.addMissingNodes(e.renderable.getTextures()),n.addMissingNode(e.renderable.getMapper()),n.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let i=0;i{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.traverseOpaqueZBufferPass=o=>n.traverseOpaquePass(o),n.traverseOpaquePass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.traverseTranslucentPass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let o=0;o{if(o){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?i.incrementOpaqueActorCount():i.incrementTranslucentActorCount()}},n.zBufferPass=(o,i)=>n.opaquePass(o,i),n.opaqueZBufferPass=(o,i)=>n.opaquePass(o,i),n.opaquePass=(o,i)=>{if(o)e.context.depthMask(!0),n.activateTextures();else if(e.activeTextures)for(let l=0;l{if(o)e.context.depthMask(e._openGLRenderer.getSelector()&&e.renderable.getNestedPickable()),n.activateTextures();else if(e.activeTextures)for(let l=0;l(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),Ea(e.keyMatrices.mcwc,e.renderable.getMatrix()),po(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.renderable.getIsIdentity()?pc(e.keyMatrices.normalMatrix):(fC(e.keyMatrices.normalMatrix,e.keyMatrices.mcwc),Uv(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),eO(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),e.keyMatrixTime.modified()),e.keyMatrices)}const woe={context:null,keyMatrixTime:null,keyMatrices:null,activeTextures:null};function Coe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,woe,o),Ha.extend(n,e,o),e.keyMatrixTime={},_s(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:pc(new Float64Array(9)),mcwc:zi(new Float64Array(16))},s2(n,e,["context"]),el(n,e,["activeTextures"]),yoe(n,e)}const VG=as(Coe);var _oe={newInstance:VG};R2("vtkActor",VG);function xoe(n,e){e.classHierarchy.push("vtkOpenGLActor2D"),n.buildPass=o=>{if(o){if(!e.renderable)return;e._openGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),n.prepareNodes(),n.addMissingNodes(e.renderable.getTextures()),n.addMissingNode(e.renderable.getMapper()),n.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let i=0;i{if(o){if(!e.renderable||!e.renderable.getVisibility())return;i.incrementOverlayActorCount()}},n.traverseOpaquePass=o=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.traverseTranslucentPass=o=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.traverseOverlayPass=o=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable||(n.apply(o,!0),e.oglmapper.traverse(o),n.apply(o,!1))},n.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let o=0;o{if(o)e.context.depthMask(!0),n.activateTextures();else if(e.activeTextures)for(let l=0;l{if(o)e.context.depthMask(!1),n.activateTextures();else if(e.activeTextures)for(let l=0;l{if(o)e.context.depthMask(!0),n.activateTextures();else if(e.activeTextures)for(let l=0;l2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Soe,o),Ha.extend(n,e,o),s2(n,e,["context"]),el(n,e,["activeTextures"]),xoe(n,e)}const UG=as(Toe);var Eoe={newInstance:UG};R2("vtkActor2D",UG);function Doe(n,e){e.classHierarchy.push("vtkOpenGLCamera"),n.buildPass=o=>{o&&(e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext())},n.opaquePass=o=>{if(o){const i=e._openGLRenderer.getTiledSizeAndOrigin();e.context.viewport(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize),e.context.scissor(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize)}},n.translucentPass=n.opaquePass,n.zBufferPass=n.opaquePass,n.opaqueZBufferPass=n.opaquePass,n.volumePass=n.opaquePass,n.getKeyMatrices=o=>{if(o!==e.lastRenderer||e._openGLRenderWindow.getMTime()>e.keyMatrixTime.getMTime()||n.getMTime()>e.keyMatrixTime.getMTime()||o.getMTime()>e.keyMatrixTime.getMTime()||e.renderable.getMTime()>e.keyMatrixTime.getMTime()){Ea(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),fC(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),Uv(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),po(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const i=e._openGLRenderer.getAspectRatio();Ea(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(i,-1,1)),po(e.keyMatrices.vcpc,e.keyMatrices.vcpc),Y0(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=o}return e.keyMatrices}}const Ioe={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function Ooe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ioe,o),Ha.extend(n,e,o),e.keyMatrixTime={},_s(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},s2(n,e,["context","keyMatrixTime"]),Doe(n,e)}const BG=as(Ooe);var Moe={newInstance:BG};R2("vtkCamera",BG);function Poe(n,e){e.classHierarchy.push("vtkAbstractMapper"),n.update=()=>{n.getInputData()},n.addClippingPlane=o=>o.isA("vtkPlane")?e.clippingPlanes.includes(o)?!1:(e.clippingPlanes.push(o),n.modified(),!0):!1,n.getNumberOfClippingPlanes=()=>e.clippingPlanes.length,n.removeAllClippingPlanes=()=>e.clippingPlanes.length===0?!1:(e.clippingPlanes.length=0,n.modified(),!0),n.removeClippingPlane=o=>{const i=e.clippingPlanes.indexOf(o);return i===-1?!1:(e.clippingPlanes.splice(i,1),n.modified(),!0)},n.getClippingPlanes=()=>e.clippingPlanes,n.setClippingPlanes=o=>{if(o)if(!Array.isArray(o))n.addClippingPlane(o);else{const i=o.length;for(let l=0;l{const c=e.clippingPlanes,g=o;if(c){const v=c.length;if(i>=0&&i2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Roe,o),At.obj(n,e),At.algo(n,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),Poe(n,e)}var Loe={extend:Aoe};function Noe(n,e){e.classHierarchy.push("vtkImplicitFunction"),n.functionValue=o=>{if(!e.transform)return n.evaluateFunction(o);const i=[];return e.transform.transformPoint(o,i),n.evaluateFunction(i)},n.evaluateFunction=o=>{At.vtkErrorMacro("not implemented")}}const boe={};function GG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,boe,o),At.obj(n,e),At.setGet(n,e,["transform"]),Noe(n,e)}const Foe=At.newInstance(GG,"vtkImplicitFunction");var Voe={newInstance:Foe,extend:GG};const vE=1e-6,WG="coincide",$G="disjoint";function Uoe(n,e,o){return n[0]*(o[0]-e[0])+n[1]*(o[1]-e[1])+n[2]*(o[2]-e[2])}function jG(n,e,o){const i=o[0]*(n[0]-e[0])+o[1]*(n[1]-e[1])+o[2]*(n[2]-e[2]);return Math.abs(i)}function zG(n,e,o,i){const l=[];ch(n,e,l);const c=B0(o,l);i[0]=n[0]-c*o[0],i[1]=n[1]-c*o[1],i[2]=n[2]-c*o[2]}function HG(n,e,o){const i=B0(n,e);let l=B0(e,e);return l===0&&(l=1),o[0]=n[0]-i*e[0]/l,o[1]=n[1]-i*e[1]/l,o[2]=n[2]-i*e[2]/l,o}function KG(n,e,o,i){const l=[];ch(n,e,l);const c=B0(o,l),g=B0(o,o);g!==0?(i[0]=n[0]-c*o[0]/g,i[1]=n[1]-c*o[1]/g,i[2]=n[2]-c*o[2]/g):(i[0]=n[0],i[1]=n[1],i[2]=n[2])}function qG(n,e,o,i){const l={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},c=[],g=[];ch(e,n,c),ch(o,n,g);const v=B0(i,g),_=B0(i,c);let T,P;return _<0?T=-_:T=_,v<0?P=-v*vE:P=v*vE,T<=P||(l.t=v/_,l.x[0]=n[0]+l.t*c[0],l.x[1]=n[1]+l.t*c[1],l.x[2]=n[2]+l.t*c[2],l.intersection=!0,l.betweenPoints=l.t>=0&&l.t<=1),l}function XG(n,e,o,i){const l={intersection:!1,l0:[],l1:[],error:null},c=[];ff(e,i,c);const g=c.map(I=>Math.abs(I));if(g[0]+g[1]+g[2]g[1]&&g[0]>g[2]?v="x":g[1]>g[2]?v="y":v="z";const _=[],T=-B0(e,n),P=-B0(i,o);switch(v){case"x":_[0]=0,_[1]=(P*e[2]-T*i[2])/c[0],_[2]=(T*i[1]-P*e[1])/c[0];break;case"y":_[0]=(T*i[2]-P*e[2])/c[1],_[1]=0,_[2]=(P*e[0]-T*i[0])/c[1];break;case"z":_[0]=(P*e[1]-T*i[1])/c[2],_[1]=(T*i[0]-P*e[0])/c[2],_[2]=0;break}return l.l0=_,bw(_,c,l.l1),l.intersection=!0,l}const Boe={evaluate:Uoe,distanceToPlane:jG,projectPoint:zG,projectVector:HG,generalizedProjectPoint:KG,intersectWithLine:qG,intersectWithPlane:XG,DISJOINT:$G,COINCIDE:WG};function Goe(n,e){e.classHierarchy.push("vtkPlane"),n.distanceToPlane=o=>jG(o,e.origin,e.normal),n.projectPoint=(o,i)=>{zG(o,e.origin,e.normal,i)},n.projectVector=(o,i)=>HG(o,e.normal,i),n.push=o=>{if(o!==0)for(let i=0;i<3;i++)e.origin[i]+=o*e.normal[i]},n.generalizedProjectPoint=(o,i)=>{KG(o,e.origin,e.normal,i)},n.evaluateFunction=(o,i,l)=>Array.isArray(o)?e.normal[0]*(o[0]-e.origin[0])+e.normal[1]*(o[1]-e.origin[1])+e.normal[2]*(o[2]-e.origin[2]):e.normal[0]*(o-e.origin[0])+e.normal[1]*(i-e.origin[1])+e.normal[2]*(l-e.origin[2]),n.evaluateGradient=o=>[e.normal[0],e.normal[1],e.normal[2]],n.intersectWithLine=(o,i)=>qG(o,i,e.origin,e.normal),n.intersectWithPlane=(o,i)=>XG(o,i,e.origin,e.normal)}const Woe={normal:[0,0,1],origin:[0,0,0]};function YG(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Woe,o),Voe.extend(n,e,o),At.setGetArray(n,e,["normal","origin"],3),Goe(n,e)}const $oe=At.newInstance(YG,"vtkPlane");var h1={newInstance:$oe,extend:YG,...Boe};const gC=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function JG(n,e){return n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]&&n[3]===e[3]&&n[4]===e[4]&&n[5]===e[5]}function kh(n){return(n==null?void 0:n.length)>=6&&n[0]<=n[1]&&n[2]<=n[3]&&n[4]<=n[5]}function pO(n,e){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n}function mO(n){return pO(n,gC)}function zw(n,e,o,i){const[l,c,g,v,_,T]=n;return n[0]=le?c:e,n[2]=go?v:o,n[4]=_i?T:i,n}function vO(n,e){if(e.length===0)return n;if(Array.isArray(e[0]))for(let o=0;oc?e:c,n[2]=o,n[3]=o>v?o:v,n[4]=i,n[5]=i>T?i:T,l!==e||g!==o||_!==i}function eW(n,e,o,i){const[l,c,g,v,_,T]=n;return n[0]=e=0?(n[0]*=e,n[1]*=e):(n[0]=e*n[1],n[1]=e*n[0]),o>=0?(n[2]*=o,n[3]*=o):(n[2]=o*n[3],n[3]=o*n[2]),i>=0?(n[4]*=i,n[5]*=i):(n[4]=i*n[5],n[5]=i*n[4]),!0):!1}function yO(n){return[.5*(n[0]+n[1]),.5*(n[2]+n[3]),.5*(n[4]+n[5])]}function joe(n,e,o,i){if(!kh(n))return!1;const l=yO(n);return n[0]-=l[0],n[1]-=l[0],n[2]-=l[1],n[3]-=l[1],n[4]-=l[2],n[5]-=l[2],kO(n,e,o,i),n[0]+=l[0],n[1]+=l[0],n[2]+=l[1],n[3]+=l[1],n[4]+=l[2],n[5]+=l[2],!0}function lm(n,e){return n[e*2+1]-n[e*2]}function pC(n){return[lm(n,0),lm(n,1),lm(n,2)]}function nW(n){return n.slice(0,2)}function rW(n){return n.slice(2,4)}function iW(n){return n.slice(4,6)}function oW(n){const e=pC(n);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function sW(n){if(kh(n)){const e=pC(n);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function wO(n){return[n[0],n[2],n[4]]}function CO(n){return[n[1],n[3],n[5]]}function My(n,e){return n<=0&&e>=0||n>=0&&e<=0}function _O(n,e){let o=0;for(let i=0;i<2;i++)for(let l=2;l<4;l++)for(let c=4;c<6;c++)e[o++]=[n[i],n[l],n[c]];return e}function aW(n,e,o){return e[0]=n[0],e[1]=n[2],e[2]=n[4],o[0]=n[1],o[1]=n[3],o[2]=n[5],e}function lW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const i=_O(n,[]);for(let l=0;l1&&arguments[1]!==void 0?arguments[1]:[];return e[0]=.5*(n[1]-n[0]),e[1]=.5*(n[3]-n[2]),e[2]=.5*(n[5]-n[4]),e}function cW(n,e,o,i){const l=[].concat(gC),c=n.getData();for(let g=0;gn[2*L+1]?(g[L]=P,T[L]=n[2*L+1],c=!1):g[L]=R;if(c)return i[0]=e[0],i[1]=e[1],i[2]=e[2],l[0]=0,1;for(let L=0;L<3;L++)g[L]!==R&&o[L]!==0?_[L]=(T[L]-e[L])/o[L]:_[L]=-1;for(let L=0;L<3;L++)_[v]<_[L]&&(v=L);if(_[v]>1||_[v]<0)return 0;l[0]=_[v];for(let L=0;L<3;L++)if(v!==L){if(i[L]=e[L]+_[v]*o[L],i[L]n[2*L+1])return 0}else i[L]=T[L];return 1}function hW(n,e,o){const i=[];let l=0,c=1,g=1;for(let v=4;v<=5;++v){i[2]=n[v];for(let _=2;_<=3;++_){i[1]=n[_];for(let T=0;T<=1;++T)if(i[0]=n[T],l=h1.evaluate(o,e,i),g&&(c=l>=0?1:-1,g=0),l===0||c>0&&l<0||c<0&&l>0)return 1}}return 0}function dW(n,e){if(!(kh(n)&&kh(e)))return!1;const o=[0,0,0,0,0,0];let i;for(let l=0;l<3;l++)if(i=!1,e[l*2]>=n[l*2]&&e[l*2]<=n[l*2+1]?(i=!0,o[l*2]=e[l*2]):n[l*2]>=e[l*2]&&n[l*2]<=e[l*2+1]&&(i=!0,o[l*2]=n[l*2]),e[l*2+1]>=n[l*2]&&e[l*2+1]<=n[l*2+1]?(i=!0,o[l*2+1]=e[2*l+1]):n[l*2+1]>=e[l*2]&&n[l*2+1]<=e[l*2+1]&&(i=!0,o[l*2+1]=n[l*2+1]),!i)return!1;return n[0]=o[0],n[1]=o[1],n[2]=o[2],n[3]=o[3],n[4]=o[4],n[5]=o[5],!0}function Hw(n,e){if(!(kh(n)&&kh(e)))return!1;for(let o=0;o<3;o++)if(!(e[o*2]>=n[o*2]&&e[o*2]<=n[o*2+1])&&!(n[o*2]>=e[o*2]&&n[o*2]<=e[o*2+1])&&!(e[o*2+1]>=n[o*2]&&e[o*2+1]<=n[o*2+1])&&!(n[o*2+1]>=e[o*2]&&n[o*2+1]<=e[o*2+1]))return!1;return!0}function Kw(n,e,o,i){return!(en[1]||on[3]||in[5])}function zoe(n,e){return!(!Hw(n,e)||!Kw(n,...wO(e))||!Kw(n,...CO(e)))}function gW(n,e,o){const i=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],l=[0,0,0,0,0,0,0,0];let c=0;for(let I=0;I<2;I++)for(let R=2;R<4;R++)for(let L=4;L<6;L++){const V=[n[I],n[R],n[L]];l[c++]=h1.evaluate(o,e,V)}let g=2;for(;g--&&!(My(l[i[g][0]],l[i[g][4]])&&My(l[i[g][1]],l[i[g][5]])&&My(l[i[g][2]],l[i[g][6]])&&My(l[i[g][3]],l[i[g][7]])););if(g<0)return!1;const v=Math.sign(o[g]),_=Math.abs((n[g*2+1]-n[g*2])*o[g]);let T=v>0?1:0;for(let I=0;I<4;I++){if(_===0)continue;const R=Math.abs(l[i[g][I]])/_;v>0&&RT&&(T=R)}const P=(1-T)*n[g*2]+T*n[g*2+1];return v>0?n[g*2]=P:n[g*2+1]=P,!0}class Hoe{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(gC))}getBounds(){return this.bounds}equals(e){return JG(this.bounds,e)}isValid(){return kh(this.bounds)}setBounds(e){return pO(this.bounds,e)}reset(){return mO(this.bounds)}addPoint(){for(var e=arguments.length,o=new Array(e),i=0;i1&&arguments[1]!==void 0?arguments[1]:[];return lW(this.bounds,e,o)}computeScale3(e){return uW(this.bounds,e)}cutWithPlane(e,o){return gW(this.bounds,e,o)}intersectBox(e,o,i,l){return fW(this.bounds,e,o,i,l)}intersectPlane(e,o){return hW(this.bounds,e,o)}intersect(e){return dW(this.bounds,e)}intersects(e){return Hw(this.bounds,e)}containsPoint(e,o,i){return Kw(this.bounds,e,o,i)}contains(e){return Hw(this.bounds,e)}}function Koe(n){const e=n&&n.bounds;return new Hoe(e)}const qoe={equals:JG,isValid:kh,setBounds:pO,reset:mO,addPoint:zw,addPoints:vO,addBounds:ZG,setMinPoint:QG,setMaxPoint:eW,inflate:tW,scale:kO,scaleAboutCenter:joe,getCenter:yO,getLength:lm,getLengths:pC,getMaxLength:oW,getDiagonalLength:sW,getMinPoint:wO,getMaxPoint:CO,getXRange:nW,getYRange:rW,getZRange:iW,getCorners:_O,computeCornerPoints:aW,computeLocalBounds:cW,transformBounds:lW,computeScale3:uW,cutWithPlane:gW,intersectBox:fW,intersectPlane:hW,intersect:dW,intersects:Hw,containsPoint:Kw,contains:zoe,INIT_BOUNDS:gC};var hs={newInstance:Koe,...qoe};function Xoe(n,e){n.getBounds=()=>(At.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),zd()),n.getCenter=()=>{var i;const o=n.getBounds();return e.center=hs.isValid(o)?hs.getCenter(o):null,(i=e.center)==null?void 0:i.slice()},n.getLength=()=>{const o=n.getBounds();return hs.getDiagonalLength(o)}}const Yoe=n=>({bounds:[...hs.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...n});function Joe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Yoe(o)),Loe.extend(n,e,o),At.setGet(n,e,["viewSpecificProperties"]),Xoe(n,e)}var xO={extend:Joe};const Qu={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var pW={StructuredType:Qu};const{StructuredType:$f}=pW;function Zoe(n){let e=0;for(let o=0;o<3;++o)n[o*2]n[1]||n[2]>n[3]||n[4]>n[5]?$f.EMPTY:e===3?$f.XYZ_GRID:e===2?n[0]===n[1]?$f.YZ_PLANE:n[2]===n[3]?$f.XZ_PLANE:$f.XY_PLANE:e===1?n[0]v!==c[_]);return g&&(e.extent=c.slice(),e.dataDescription=Qoe.getDataDescriptionFromExtent(e.extent),n.modified()),g},n.setDimensions=function(){let o,i,l;if(e.deleted){J4("instance deleted - cannot call any method");return}if(arguments.length===1){const c=arguments.length<=0?void 0:arguments[0];o=c[0],i=c[1],l=c[2]}else if(arguments.length===3)o=arguments.length<=0?void 0:arguments[0],i=arguments.length<=1?void 0:arguments[1],l=arguments.length<=2?void 0:arguments[2];else{J4("Bad dimension specification");return}n.setExtent(0,o-1,0,i-1,0,l-1)},n.getDimensions=()=>[e.extent[1]-e.extent[0]+1,e.extent[3]-e.extent[2]+1,e.extent[5]-e.extent[4]+1],n.getNumberOfCells=()=>{const o=n.getDimensions();let i=1;for(let l=0;l<3;l++){if(o[l]===0)return 0;o[l]>1&&(i*=o[l]-1)}return i},n.getNumberOfPoints=()=>{const o=n.getDimensions();return o[0]*o[1]*o[2]},n.getPoint=o=>{const i=n.getDimensions();if(i[0]===0||i[1]===0||i[2]===0)return J4("Requesting a point from an empty image."),null;const l=new Float64Array(3);switch(e.dataDescription){case Qu.EMPTY:return null;case Qu.SINGLE_POINT:break;case Qu.X_LINE:l[0]=o;break;case Qu.Y_LINE:l[1]=o;break;case Qu.Z_LINE:l[2]=o;break;case Qu.XY_PLANE:l[0]=o%i[0],l[1]=o/i[0];break;case Qu.YZ_PLANE:l[1]=o%i[1],l[2]=o/i[1];break;case Qu.XZ_PLANE:l[0]=o%i[0],l[2]=o/i[0];break;case Qu.XYZ_GRID:l[0]=o%i[0],l[1]=o/i[0]%i[1],l[2]=o/(i[0]*i[1]);break;default:J4("Invalid dataDescription");break}const c=[0,0,0];return n.indexToWorld(l,c),c},n.getBounds=()=>n.extentToBounds(n.getSpatialExtent()),n.extentToBounds=o=>hs.transformBounds(o,e.indexToWorld),n.getSpatialExtent=()=>hs.inflate([...e.extent],.5),n.computeTransforms=()=>{Bv(e.indexToWorld,e.origin),e.indexToWorld[0]=e.direction[0],e.indexToWorld[1]=e.direction[1],e.indexToWorld[2]=e.direction[2],e.indexToWorld[4]=e.direction[3],e.indexToWorld[5]=e.direction[4],e.indexToWorld[6]=e.direction[5],e.indexToWorld[8]=e.direction[6],e.indexToWorld[9]=e.direction[7],e.indexToWorld[10]=e.direction[8],hf(e.indexToWorld,e.indexToWorld,e.spacing),Ia(e.worldToIndex,e.indexToWorld)},n.indexToWorld=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return g0(i,o,e.indexToWorld),i},n.indexToWorldVec3=n.indexToWorld,n.worldToIndex=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return g0(i,o,e.worldToIndex),i},n.worldToIndexVec3=n.worldToIndex,n.indexToWorldBounds=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return hs.transformBounds(o,e.indexToWorld,i)},n.worldToIndexBounds=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return hs.transformBounds(o,e.worldToIndex,i)},n.onModified(n.computeTransforms),n.computeTransforms(),n.getCenter=()=>hs.getCenter(n.getBounds()),n.computeHistogram=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const l=[0,0,0,0,0,0];n.worldToIndexBounds(o,l);const c=[0,0,0],g=[0,0,0];hs.computeCornerPoints(l,c,g),lE(c,c),lE(g,g);const v=n.getDimensions();cE(c,[0,0,0],[v[0]-1,v[1]-1,v[2]-1],c),cE(g,[0,0,0],[v[0]-1,v[1]-1,v[2]-1],g);const _=v[0],T=v[0]*v[1],P=n.getPointData().getScalars().getData();let I=-1/0,R=1/0,L=0,V=0,U=0;for(let K=c[2];K<=g[2];K++)for(let X=c[1];X<=g[1];X++){let ee=c[0]+X*_+K*T;for(let ne=c[0];ne<=g[0];ne++){if(!i||i([ne,X,K],l)){const le=P[ee];le>I&&(I=le),le0?V/U:0,z=U?Math.abs(L/U-j*j):0,$=Math.sqrt(z);return{minimum:R,maximum:I,average:j,variance:z,sigma:$,count:U}},n.computeIncrements=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const l=[];let c=i;for(let g=0;g<3;++g)l[g]=c,c*=o[g*2+1]-o[g*2]+1;return l},n.computeOffsetIndex=o=>{let[i,l,c]=o;const g=n.getExtent(),v=n.getPointData().getScalars().getNumberOfComponents(),_=n.computeIncrements(g,v);return Math.floor((Math.round(i)-g[0])*_[0]+(Math.round(l)-g[2])*_[1]+(Math.round(c)-g[4])*_[2])},n.getOffsetIndexFromWorld=o=>{const i=n.getExtent(),l=n.worldToIndex(o);for(let c=0;c<3;++c)if(l[c]i[c*2+1])return J4(`GetScalarPointer: Pixel ${l} is not in memory. Current extent = ${i}`),NaN;return n.computeOffsetIndex(l)},n.getScalarValueFromWorld=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const l=n.getPointData().getScalars().getNumberOfComponents();if(i<0||i>=l)return J4(`GetScalarPointer: Scalar Component ${i} is not within bounds. Current Scalar numberOfComponents: ${l}`),NaN;const c=n.getOffsetIndexFromWorld(o);return Number.isNaN(c)?c:n.getPointData().getScalars().getComponent(c,i)}}const tse={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:Qu.EMPTY};function mW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tse,o),$8.extend(n,e,o),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=pc(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),At.get(n,e,["indexToWorld","worldToIndex"]),At.setGetArray(n,e,["origin","spacing"],3),At.setGetArray(n,e,["direction"],9),At.getArray(n,e,["extent"],6),ese(n,e)}const nse=At.newInstance(mW,"vtkImageData");var Wv={newInstance:nse,extend:mW};const rse={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},kE={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var SO={VectorMode:rse,ScalarMappingTarget:kE};const ise={DEFAULT:0,MAP_SCALARS:1,DIRECT_SCALARS:2},ose={DEFAULT:0,USE_POINT_DATA:1,USE_CELL_DATA:2,USE_POINT_FIELD_DATA:3,USE_CELL_FIELD_DATA:4,USE_FIELD_DATA:5},sse={BY_ID:0,BY_NAME:1};var TO={ColorMode:ise,GetArray:sse,ScalarMode:ose};const{ScalarMappingTarget:YA,VectorMode:jc}=SO,{VtkDataTypes:nd}=d0,{ColorMode:Py}=TO,{vtkErrorMacro:JA}=At;function ase(n){return n}function ZA(n){return Math.floor(n*255+.5)}function lse(n,e){e.classHierarchy.push("vtkScalarsToColors"),n.setVectorModeToMagnitude=()=>n.setVectorMode(jc.MAGNITUDE),n.setVectorModeToComponent=()=>n.setVectorMode(jc.COMPONENT),n.setVectorModeToRGBColors=()=>n.setVectorMode(jc.RGBCOLORS),n.build=()=>{},n.isOpaque=()=>!0,n.setAnnotations=(o,i)=>{if(!(o&&!i||!o&&i)){if(o&&i&&o.length!==i.length){JA("Values and annotations do not have the same number of tuples so ignoring");return}if(e.annotationArray=[],i&&o){const l=i.length;for(let c=0;c{let l=n.checkForAnnotatedValue(o),c=!1;return l>=0?e.annotationArray[l].annotation!==i&&(e.annotationArray[l].annotation=i,c=!0):(e.annotationArray.push({value:o,annotation:i}),l=e.annotationArray.length-1,c=!0),c&&(n.updateAnnotatedValueMap(),n.modified()),l},n.getNumberOfAnnotatedValues=()=>e.annotationArray.length,n.getAnnotatedValue=o=>o<0||o>=e.annotationArray.length?null:e.annotationArray[o].value,n.getAnnotation=o=>e.annotationArray[o]===void 0?null:e.annotationArray[o].annotation,n.getAnnotatedValueIndex=o=>e.annotationArray.length?n.checkForAnnotatedValue(o):-1,n.removeAnnotation=o=>{const i=n.checkForAnnotatedValue(o),l=i>=0;return l&&(e.annotationArray.splice(i,1),n.updateAnnotatedValueMap(),n.modified()),l},n.resetAnnotations=()=>{e.annotationArray=[],e.annotatedValueMap=[],n.modified()},n.getAnnotationColor=(o,i)=>{if(e.indexedLookup){const l=n.getAnnotatedValueIndex(o);n.getIndexedColor(l,i)}else n.getColor(parseFloat(o),i),i[3]=1},n.checkForAnnotatedValue=o=>n.getAnnotatedValueIndexInternal(o),n.getAnnotatedValueIndexInternal=o=>{if(e.annotatedValueMap[o]!==void 0){const i=e.annotationArray.length;return e.annotatedValueMap[o]%i}return-1},n.getIndexedColor=(o,i)=>{i[0]=0,i[1]=0,i[2]=0,i[3]=0},n.updateAnnotatedValueMap=()=>{e.annotatedValueMap=[];const o=e.annotationArray.length;for(let i=0;i{const c=o.getNumberOfComponents();let g=null;if(i===Py.DEFAULT&&(o.getDataType()===nd.UNSIGNED_CHAR||o.getDataType()===nd.UNSIGNED_CHAR_CLAMPED)||i===Py.DIRECT_SCALARS&&o)g=n.convertToRGBA(o,c,o.getNumberOfTuples());else{const v={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:nd.UNSIGNED_CHAR},_=At.newTypedArray(v.dataType,4*o.getNumberOfTuples());v.values=_,v.size=_.length,g=d0.newInstance(v);let T=l;T<0&&c>1?n.mapVectorsThroughTable(o,g,YA.RGBA,-1,-1):(T<0&&(T=0),T>=c&&(T=c-1),n.mapScalarsThroughTable(o,g,YA.RGBA,T))}return g},n.mapVectorsToMagnitude=(o,i,l)=>{const c=o.getNumberOfTuples(),g=o.getNumberOfComponents(),v=i.getData(),_=o.getData();for(let T=0;T{let v=n.getVectorMode(),_=g,T=c;const P=o.getNumberOfComponents();v===jc.COMPONENT?(T===-1&&(T=n.getVectorComponent()),T<0&&(T=0),T>=P&&(T=P-1)):(_===-1&&(_=n.getVectorSize()),_<=0?(T=0,_=P):(T<0&&(T=0),T>=P&&(T=P-1),T+_>P&&(_=P-T)),v===jc.MAGNITUDE&&(P===1||_===1)&&(v=jc.COMPONENT));let I=0;switch(T>0&&(I=T),v){case jc.COMPONENT:{n.mapScalarsThroughTable(o,i,l,I);break}case jc.RGBCOLORS:break;case jc.MAGNITUDE:default:{const R=d0.newInstance({numberOfComponents:1,values:new Float32Array(o.getNumberOfTuples())});n.mapVectorsToMagnitude(o,R,_),n.mapScalarsThroughTable(R,i,l,0);break}}},n.luminanceToRGBA=(o,i,l,c)=>{const g=c(l),v=i.getData(),_=o.getData(),T=v.length,P=0,I=1;let R=0;for(let L=P;L{const g=i.getData(),v=o.getData(),_=g.length,T=0,P=2;let I=0;for(let R=T;R<_;R+=P){const L=c(g[R]);v[I]=L,v[I+1]=L,v[I+2]=L,v[I+3]=c(g[R+1])*l,I+=4}},n.rGBToRGBA=(o,i,l,c)=>{const g=ZA(l),v=i.getData(),_=o.getData(),T=v.length,P=0,I=3;let R=0;for(let L=P;L{const g=i.getData(),v=o.getData(),_=g.length,T=0,P=4;let I=0;for(let R=T;R<_;R+=P)v[I*4]=c(g[R]),v[I*4+1]=c(g[R+1]),v[I*4+2]=c(g[R+2]),v[I*4+3]=c(g[R+3])*l,I++},n.convertToRGBA=(o,i,l)=>{let{alpha:c}=e;if(i===4&&c>=1&&o.getDataType()===nd.UNSIGNED_CHAR)return o;const g=d0.newInstance({numberOfComponents:4,empty:!0,size:4*l,dataType:nd.UNSIGNED_CHAR});if(l<=0)return g;c=c>0?c:0,c=c<1?c:1;let v=ase;switch((o.getDataType()===nd.FLOAT||o.getDataType()===nd.DOUBLE)&&(v=ZA),i){case 1:n.luminanceToRGBA(g,o,c,v);break;case 2:n.luminanceAlphaToRGBA(g,o,v);break;case 3:n.rGBToRGBA(g,o,c,v);break;case 4:n.rGBAToRGBA(g,o,c,v);break;default:return JA("Cannot convert colors"),null}return g},n.usingLogScale=()=>!1,n.getNumberOfAvailableColors=()=>256*256*256,n.setRange=(o,i)=>n.setMappingRange(o,i),n.getRange=()=>n.getMappingRange(),n.areScalarsOpaque=(o,i,l)=>{if(!o)return n.isOpaque();const c=o.getNumberOfComponents();return i===Py.DEFAULT&&o.getDataType()===nd.UNSIGNED_CHAR||i===Py.DIRECT_SCALARS?c===3||c===1?e.alpha>=1:o.getRange(c-1)[0]===255:!0}}const use={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:jc.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function vW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,use,o),At.obj(n,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],At.setGet(n,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),At.setArray(n,e,["mappingRange"],2),At.getArray(n,e,["mappingRange"]),lse(n,e)}const cse=At.newInstance(vW,"vtkScalarsToColors");var EO={newInstance:cse,extend:vW,...SO};const{vtkErrorMacro:QA}=At,eL=0,tL=1,rS=2;function fse(n,e){e.classHierarchy.push("vtkLookupTable"),n.isOpaque=()=>{if(e.opaqueFlagBuildTime.getMTime()!1,n.getNumberOfAvailableColors=()=>e.table.length/4-3,n.linearIndexLookup=(o,i)=>{let l=0;const c=Number(o);return ci.range[1]?l=i.maxIndex+tL+1.5:(l=(c+i.shift)*i.scale,l=l{let c=0;Vw(o)?c=Math.floor(l.maxIndex+1.5+rS):c=n.linearIndexLookup(o,l);const g=4*c;return i.slice(g,g+4)},n.indexedLookupFunction=(o,i,l)=>{let c=n.getAnnotatedValueIndexInternal(o);c===-1&&(c=e.numberOfColors+rS);const g=4*c;return[i[g],i[g+1],i[g+2],i[g+3]]},n.lookupShiftAndScale=(o,i)=>{i.shift=-o[0],i.scale=Number.MAX_VALUE,o[1]>o[0]&&(i.scale=(i.maxIndex+1)/(o[1]-o[0]))},n.mapScalarsThroughTable=(o,i,l,c)=>{let g=n.linearLookup;e.indexedLookup&&(g=n.indexedLookupFunction);const v=n.getMappingRange(),_={maxIndex:n.getNumberOfColors()-1,range:v,shift:0,scale:0};n.lookupShiftAndScale(v,_);const T=n.getAlpha(),P=o.getNumberOfTuples(),I=o.getNumberOfComponents(),R=i.getData(),L=o.getData();if(T>=1){if(l===kE.RGBA)for(let V=0;V{let o=0,i=0,l=0,c=0;const g=e.numberOfColors-1;g&&(o=(e.hueRange[1]-e.hueRange[0])/g,i=(e.saturationRange[1]-e.saturationRange[0])/g,l=(e.valueRange[1]-e.valueRange[0])/g,c=(e.alphaRange[1]-e.alphaRange[0])/g),e.table.length=4*g+16;const v=[],_=[];for(let T=0;T<=g;T++)v[0]=e.hueRange[0]+T*o,v[1]=e.saturationRange[0]+T*i,v[2]=e.valueRange[0]+T*l,dg(v,_),_[3]=e.alphaRange[0]+T*c,e.table[T*4]=_[0]*255+.5,e.table[T*4+1]=_[1]*255+.5,e.table[T*4+2]=_[2]*255+.5,e.table[T*4+3]=_[3]*255+.5;n.buildSpecialColors(),e.buildTime.modified()},n.setTable=o=>{if(Array.isArray(o)){const l=o[0].length;e.numberOfColors=o.length;const c=4-l;let g=0;for(let v=0;v{const{numberOfColors:o}=e,i=e.table;let l=(o+eL)*4;e.useBelowRangeColor||o===0?(i[l]=e.belowRangeColor[0]*255+.5,i[l+1]=e.belowRangeColor[1]*255+.5,i[l+2]=e.belowRangeColor[2]*255+.5,i[l+3]=e.belowRangeColor[3]*255+.5):(i[l]=i[0],i[l+1]=i[1],i[l+2]=i[2],i[l+3]=i[3]),l=(o+tL)*4,e.useAboveRangeColor||o===0?(i[l]=e.aboveRangeColor[0]*255+.5,i[l+1]=e.aboveRangeColor[1]*255+.5,i[l+2]=e.aboveRangeColor[2]*255+.5,i[l+3]=e.aboveRangeColor[3]*255+.5):(i[l]=i[4*(o-1)+0],i[l+1]=i[4*(o-1)+1],i[l+2]=i[4*(o-1)+2],i[l+3]=i[4*(o-1)+3]),l=(o+rS)*4,i[l]=e.nanColor[0]*255+.5,i[l+1]=e.nanColor[1]*255+.5,i[l+2]=e.nanColor[2]*255+.5,i[l+3]=e.nanColor[3]*255+.5},n.build=()=>{(e.table.length<1||n.getMTime()>e.buildTime.getMTime()&&e.insertTime.getMTime()<=e.buildTime.getMTime())&&n.forceBuild()},e.table.length>0&&(n.buildSpecialColors(),e.insertTime.modified())}const hse={numberOfColors:256,hueRange:[0,.66667],saturationRange:[1,1],valueRange:[1,1],alphaRange:[1,1],nanColor:[.5,0,0,1],belowRangeColor:[0,0,0,1],aboveRangeColor:[1,1,1,1],useAboveRangeColor:!1,useBelowRangeColor:!1,alpha:1};function kW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hse,o),EO.extend(n,e,o),e.table||(e.table=[]),e.buildTime={},At.obj(e.buildTime),e.opaqueFlagBuildTime={},At.obj(e.opaqueFlagBuildTime,{mtime:0}),e.insertTime={},At.obj(e.insertTime,{mtime:0}),At.get(n,e,["buildTime"]),At.setGet(n,e,["numberOfColors","useAboveRangeColor","useBelowRangeColor"]),At.setArray(n,e,["alphaRange","hueRange","saturationRange","valueRange"],2),At.setArray(n,e,["nanColor","belowRangeColor","aboveRangeColor"],4),At.getArray(n,e,["hueRange","saturationRange","valueRange","alphaRange","nanColor","belowRangeColor","aboveRangeColor"]),fse(n,e)}const dse=At.newInstance(kW,"vtkLookupTable");var yE={newInstance:dse,extend:kW};const yc={Off:0,PolygonOffset:1};let wE=yc.PolygonOffset,qw=yc.Off;const gse=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function pse(){return wE}function mse(n){const e=wE===n;return wE=n,e}function vse(){return qw}function mC(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const e=qw===n;return qw=n,e}function kse(){return mC(yc.Off)}function yse(){return mC(yc.Off)}function wse(){return mC(yc.PolygonOffset)}function Cse(){return gse[qw]}var CE={Resolve:yc,getResolveCoincidentTopologyAsString:Cse,getResolveCoincidentTopologyPolygonOffsetFaces:pse,getResolveCoincidentTopology:vse,setResolveCoincidentTopology:mC,setResolveCoincidentTopologyPolygonOffsetFaces:mse,setResolveCoincidentTopologyToDefault:kse,setResolveCoincidentTopologyToOff:yse,setResolveCoincidentTopologyToPolygonOffset:wse};function yW(n,e,o){o.forEach(i=>{n[`get${i.method}`]=()=>e[i.key],n[`set${i.method}`]=At.objectSetterMap.object(n,e,{name:i.key,params:["factor","offset"]})})}const DO=["Polygon","Line","Point"],_se={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},xse=()=>{},gg={modified:xse};yW(gg,_se,DO.map(n=>({key:n,method:`ResolveCoincidentTopology${n}OffsetParameters`})));function Sse(n,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),At.setGet(n,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(CE).forEach(o=>{n[o]=CE[o]}),Object.keys(gg).filter(o=>o!=="modified").forEach(o=>{n[o]=gg[o]}),yW(n,e.topologyOffset,DO.map(o=>({key:o,method:`RelativeCoincidentTopology${o}OffsetParameters`}))),n.getCoincidentTopologyPolygonOffsetParameters=()=>{const o=gg.getResolveCoincidentTopologyPolygonOffsetParameters(),i=n.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:o.factor+i.factor,offset:o.offset+i.offset}},n.getCoincidentTopologyLineOffsetParameters=()=>{const o=gg.getResolveCoincidentTopologyLineOffsetParameters(),i=n.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:o.factor+i.factor,offset:o.offset+i.offset}},n.getCoincidentTopologyPointOffsetParameter=()=>{const o=gg.getResolveCoincidentTopologyPointOffsetParameters(),i=n.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:o.factor+i.factor,offset:o.offset+i.offset}}}var vC={implementCoincidentTopologyMethods:Sse,staticOffsetAPI:gg,otherStaticMethods:CE,CATEGORIES:DO,Resolve:yc};const{FieldAssociations:nL}=$8,{staticOffsetAPI:Tse,otherStaticMethods:Ese}=vC,{ColorMode:Ry,ScalarMode:Z4,GetArray:iS}=TO,{VectorMode:Dse}=SO,{VtkDataTypes:Ise}=d0;function d3(n){return()=>At.vtkErrorMacro(`vtkMapper::${n} - NOT IMPLEMENTED`)}function Ose(n,e){const o=n[1]%2===0?1:-1;if(n[0]+=o,n[0]>=e[0]||n[0]<0){const i=n[2]%2===0?1:-1;n[0]-=o,n[1]+=i,(n[1]>=e[1]||n[1]<0)&&(n[1]-=i,n[2]++)}}function Mse(n,e){return n[0]+e[0]*(n[1]+e[1]*n[2])}function rL(n,e,o){const i=Math.floor(e),l=i%(2*o[0]);let c,g;l=K,ee=l[2]<=1?2:3,ne=d0.newInstance({numberOfComponents:ee,values:new Float32Array($*ee)}),le=ne.getData(),ce=[0,0,0];rL(ce,i+2,l);let ge=0,pe=0;const we=[.5,.5,.5];for(let Ve=0;Ve<$;++Ve){let Pe;if(X){let je=0;for(let Je=0;Jei&&(je=i+1),rL(we,je,l)}else{we[1]=.49;const je=(Pe-L)*V;je>1e3?we[0]=1e3:je<-1e3?we[0]=-1e3:we[0]=je}for(let je=0;je{const o=n.getInputData();return o?(e.static||n.update(),e.bounds=o.getBounds()):e.bounds=zd(),e.bounds},n.setForceCompileOnly=o=>{e.forceCompileOnly=o},n.setSelectionWebGLIdsToVTKIds=o=>{e.selectionWebGLIdsToVTKIds=o},n.createDefaultLookupTable=()=>{e.lookupTable=yE.newInstance()},n.getColorModeAsString=()=>At.enumToString(Ry,e.colorMode),n.setColorModeToDefault=()=>n.setColorMode(0),n.setColorModeToMapScalars=()=>n.setColorMode(1),n.setColorModeToDirectScalars=()=>n.setColorMode(2),n.getScalarModeAsString=()=>At.enumToString(Z4,e.scalarMode),n.setScalarModeToDefault=()=>n.setScalarMode(0),n.setScalarModeToUsePointData=()=>n.setScalarMode(1),n.setScalarModeToUseCellData=()=>n.setScalarMode(2),n.setScalarModeToUsePointFieldData=()=>n.setScalarMode(3),n.setScalarModeToUseCellFieldData=()=>n.setScalarMode(4),n.setScalarModeToUseFieldData=()=>n.setScalarMode(5),n.getAbstractScalars=(o,i,l,c,g)=>{if(!o||!e.scalarVisibility)return{scalars:null,cellFlag:!1};let v=null,_=!1;if(i===Z4.DEFAULT)v=o.getPointData().getScalars(),v||(v=o.getCellData().getScalars(),_=!0);else if(i===Z4.USE_POINT_DATA)v=o.getPointData().getScalars();else if(i===Z4.USE_CELL_DATA)v=o.getCellData().getScalars(),_=!0;else if(i===Z4.USE_POINT_FIELD_DATA){const T=o.getPointData();l===iS.BY_ID?v=T.getArrayByIndex(c):v=T.getArrayByName(g)}else if(i===Z4.USE_CELL_FIELD_DATA){const T=o.getCellData();_=!0,l===iS.BY_ID?v=T.getArrayByIndex(c):v=T.getArrayByName(g)}else if(i===Z4.USE_FIELD_DATA){const T=o.getFieldData();l===iS.BY_ID?v=T.getArrayByIndex(c):v=T.getArrayByName(g)}return{scalars:v,cellFlag:_}},n.mapScalars=(o,i)=>{const{scalars:l,cellFlag:c}=n.getAbstractScalars(o,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName);if(e.areScalarsMappedFromCells=c,!l){e.colorCoordinates=null,e.colorTextureMap=null,e.colorMapColors=null;return}const g=`${n.getMTime()}${l.getMTime()}${i}`;if(e.colorBuildString!==g){if(e.useLookupTableScalarRange||n.getLookupTable().setRange(e.scalarRange[0],e.scalarRange[1]),n.canUseTextureMapForColoring(l,c))e.mapScalarsToTexture(l,c,i);else{e.colorCoordinates=null,e.colorTextureMap=null;const v=n.getLookupTable();v&&(v.build(),e.colorMapColors=v.mapScalars(l,e.colorMode,e.fieldDataTupleId))}e.colorBuildString=`${n.getMTime()}${l.getMTime()}${i}`}},e.mapScalarsToTexture=(o,i,l)=>{const c=e.lookupTable.getRange(),g=e.lookupTable.usingLogScale();g&&yE.getLogRange(c,c);const v=e.lookupTable.getAlpha();if(e.colorMapColors=null,e.colorTextureMap==null||n.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getAlpha()!==l){e.lookupTable.setAlpha(l),e.colorTextureMap=null,e.lookupTable.build();const T=e.lookupTable.getNumberOfAvailableColors(),P=2048,I=P**3-3,L=4096-2,V=2,U=i?I:L;e.numberOfColorsInRange=Math.min(Math.max(T,V),U);const j=e.numberOfColorsInRange+3,z=e.numberOfColorsInRange+2,$=i?[Math.min(Math.ceil(j/P**0),P),Math.min(Math.ceil(j/P**1),P),Math.min(Math.ceil(j/P**2),P)]:[z,2,1],K=$[0]*$[1]*$[2],X=new Float64Array(K);X.fill(NaN);const ee=e.numberOfColorsInRange,ne=ee+2,le=[0,0,0],ce=c[0],ge=c[1]-c[0];for(let Te=0;Te1?-1:e.lookupTable.getVectorComponent();e.colorCoordinates=Pse(o,_,c,e.numberOfColorsInRange,e.colorTextureMap.getDimensions(),g,i)},n.getIsOpaque=()=>{const o=n.getInputData(),l=n.getAbstractScalars(o,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!e.scalarVisibility||l==null)return!0;const c=n.getLookupTable();return c?(c.build(),c.areScalarsOpaque(l,e.colorMode,-1)):!0},n.canUseTextureMapForColoring=(o,i)=>i&&e.colorMode!==Ry.DIRECT_SCALARS?!0:!(!e.interpolateScalarsBeforeMapping||e.lookupTable&&e.lookupTable.getIndexedLookup()||!o||e.colorMode===Ry.DEFAULT&&o.getDataType()===Ise.UNSIGNED_CHAR||e.colorMode===Ry.DIRECT_SCALARS),n.clearColorArrays=()=>{e.colorMapColors=null,e.colorCoordinates=null,e.colorTextureMap=null},n.getLookupTable=()=>(e.lookupTable||n.createDefaultLookupTable(),e.lookupTable),n.getMTime=()=>{let o=e.mtime;if(e.lookupTable!==null){const i=e.lookupTable.getMTime();o=i>o?i:o}return o},n.getPrimitiveCount=()=>{const o=n.getInputData();return{points:o.getPoints().getNumberOfValues()/3,verts:o.getVerts().getNumberOfValues()-o.getVerts().getNumberOfCells(),lines:o.getLines().getNumberOfValues()-2*o.getLines().getNumberOfCells(),triangles:o.getPolys().getNumberOfValues()-3*o.getPolys().getNumberOfCells()}},n.acquireInvertibleLookupTable=d3("AcquireInvertibleLookupTable"),n.valueToColor=d3("ValueToColor"),n.colorToValue=d3("ColorToValue"),n.useInvertibleColorFor=d3("UseInvertibleColorFor"),n.clearInvertibleColor=d3("ClearInvertibleColor"),n.processSelectorPixelBuffers=(o,i)=>{if(!o||!e.selectionWebGLIdsToVTKIds||!e.populateSelectionSettings)return;const l=o.getRawPixelBuffer(j1.ID_LOW24),c=o.getRawPixelBuffer(j1.ID_HIGH24),g=o.getCurrentPass(),v=o.getFieldAssociation();let _=null;v===nL.FIELD_ASSOCIATION_POINTS?_=e.selectionWebGLIdsToVTKIds.points:v===nL.FIELD_ASSOCIATION_CELLS&&(_=e.selectionWebGLIdsToVTKIds.cells),_&&i.forEach(T=>{if(g===j1.ID_LOW24){let P=0;c&&(P+=c[T],P*=256),P+=l[T+2],P*=256,P+=l[T+1],P*=256,P+=l[T];const I=_[P],R=o.getPixelBuffer(j1.ID_LOW24);R[T]=I&255,R[T+1]=(I&65280)>>8,R[T+2]=(I&16711680)>>16}else if(g===j1.ID_HIGH24&&c){let P=0;P+=c[T],P*=256,P+=l[T+2],P*=256,P+=l[T+1],P*=256,P+=l[T];const I=_[P],R=o.getPixelBuffer(j1.ID_HIGH24);R[T]=(I&4278190080)>>24}})}}const Ase={colorMapColors:null,areScalarsMappedFromCells:!1,static:!1,lookupTable:null,scalarVisibility:!0,scalarRange:[0,1],useLookupTableScalarRange:!1,colorMode:0,scalarMode:0,arrayAccessMode:1,renderTime:0,colorByArrayName:null,fieldDataTupleId:-1,populateSelectionSettings:!0,selectionWebGLIdsToVTKIds:null,interpolateScalarsBeforeMapping:!1,colorCoordinates:null,colorTextureMap:null,numberOfColorsInRange:0,forceCompileOnly:0,useInvertibleColors:!1,invertibleScalars:null,customShaderAttributes:[]};function wW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ase,o),xO.extend(n,e,o),At.get(n,e,["areScalarsMappedFromCells","colorCoordinates","colorMapColors","colorTextureMap","numberOfColorsInRange","selectionWebGLIdsToVTKIds"]),At.setGet(n,e,["colorByArrayName","arrayAccessMode","colorMode","fieldDataTupleId","interpolateScalarsBeforeMapping","lookupTable","populateSelectionSettings","renderTime","scalarMode","scalarVisibility","static","useLookupTableScalarRange","customShaderAttributes"]),At.setGetArray(n,e,["scalarRange"],2),vC.implementCoincidentTopologyMethods(n,e),Rse(n,e)}const Lse=At.newInstance(wW,"vtkMapper");var $v={newInstance:Lse,extend:wW,...Tse,...Ese,...TO};const Nse={DISPLAY:0,WORLD:1};var CW={CoordinateSystem:Nse};const{CoordinateSystem:_E}=CW;function oL(n){return()=>At.vtkErrorMacro(`vtkProp::${n} - NOT IMPLEMENTED`)}function bse(n,e){e.classHierarchy.push("vtkProp"),n.getMTime=()=>{let o=e.mtime;for(let i=0;io&&(o=l)}return o},n.processSelectorPixelBuffers=(o,i)=>{},n.getNestedProps=()=>null,n.getActors=()=>[],n.getActors2D=()=>[],n.getVolumes=()=>[],n.pick=oL("pick"),n.hasKey=oL("hasKey"),n.getNestedVisibility=()=>e.visibility&&(!e._parentProp||e._parentProp.getNestedVisibility()),n.getNestedPickable=()=>e.pickable&&(!e._parentProp||e._parentProp.getNestedPickable()),n.getNestedDragable=()=>e.dragable&&(!e._parentProp||e._parentProp.getNestedDragable()),n.getRedrawMTime=()=>e.mtime,n.setEstimatedRenderTime=o=>{e.estimatedRenderTime=o,e.savedEstimatedRenderTime=o},n.restoreEstimatedRenderTime=()=>{e.estimatedRenderTime=e.savedEstimatedRenderTime},n.addEstimatedRenderTime=o=>{e.estimatedRenderTime+=o},n.setAllocatedRenderTime=o=>{e.allocatedRenderTime=o,e.savedEstimatedRenderTime=e.estimatedRenderTime,e.estimatedRenderTime=0},n.getSupportsSelection=()=>!1,n.getTextures=()=>e.textures,n.hasTexture=o=>e.textures.indexOf(o)!==-1,n.addTexture=o=>{o&&!n.hasTexture(o)&&(e.textures=e.textures.concat(o),n.modified())},n.removeTexture=o=>{const i=e.textures.filter(l=>l!==o);e.textures.length!==i.length&&(e.textures=i,n.modified())},n.removeAllTextures=()=>{e.textures=[],n.modified()},n.setCoordinateSystemToWorld=()=>n.setCoordinateSystem(_E.WORLD),n.setCoordinateSystemToDisplay=()=>n.setCoordinateSystem(_E.DISPLAY)}const Fse={allocatedRenderTime:10,coordinateSystem:_E.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function _W(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fse,o),At.obj(n,e),At.get(n,e,["estimatedRenderTime","allocatedRenderTime"]),At.setGet(n,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),At.moveToProtected(n,e,["parentProp"]),bse(n,e)}const Vse=At.newInstance(_W,"vtkProp");var xW={newInstance:Vse,extend:_W,...CW},IO=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +attribute vec4 vertexMC; + +// frag position in VC +//VTK::PositionVC::Dec + +// optional normal declaration +//VTK::Normal::Dec + +// extra lighting parameters +//VTK::Light::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// material property values +//VTK::Color::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +// Apple Bug +//VTK::PrimID::Dec + +// picking support +//VTK::Picking::Dec + +void main() +{ + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Clip::Impl + + //VTK::PrimID::Impl + + //VTK::PositionVC::Impl + + //VTK::Light::Impl + + //VTK::Picking::Impl +} +`,jv=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the polydata mappers fragment shader + +uniform int PrimitiveIDOffset; + +// VC position of this fragment +//VTK::PositionVC::Dec + +// optional color passed in from the vertex shader, vertexColor +//VTK::Color::Dec + +// optional surface normal declaration +//VTK::Normal::Dec + +// extra lighting parameters +//VTK::Light::Dec + +// define vtkImageLabelOutlineOn +//VTK::ImageLabelOutlineOn + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// Depth Peeling Support +//VTK::DepthPeeling::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// label outline +//VTK::LabelOutline::Dec + +// the output of this shader +//VTK::Output::Dec + +// Apple Bug +//VTK::PrimID::Dec + +// handle coincident offsets +//VTK::Coincident::Dec + +//VTK::ZBuffer::Dec + +//VTK::LabelOutlineHelperFunction + +void main() +{ + // VC position of this fragment. This should not branch/return/discard. + //VTK::PositionVC::Impl + + // Place any calls that require uniform flow (e.g. dFdx) here. + //VTK::UniformFlow::Impl + + // Set gl_FragDepth here (gl_FragCoord.z by default) + //VTK::Depth::Impl + + // Early depth peeling abort: + //VTK::DepthPeeling::PreColor + + // Apple Bug + //VTK::PrimID::Impl + + //VTK::Clip::Impl + + //VTK::Color::Impl + + // Generate the normal if we are not passed in one + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Light::Impl + + if (gl_FragData[0].a <= 0.0) + { + discard; + } + + //VTK::DepthPeeling::Impl + + //VTK::Picking::Impl + + // handle coincident offsets + //VTK::Coincident::Impl + + //VTK::ZBuffer::Impl + + //VTK::RenderPassFragmentShader::Impl +} +`;function Use(n,e){n.replaceShaderCoincidentOffset=(o,i,l)=>{const c=n.getCoincidentParameters(i,l);if(c&&(c.factor!==0||c.offset!==0)){let g=o.Fragment;g=zn.substitute(g,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(c.factor!==0?(g=zn.substitute(g,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,g=zn.substitute(g,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):g=zn.substitute(g,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(c.factor!==0?(g=zn.substitute(g,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,g=zn.substitute(g,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):g=zn.substitute(g,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),o.Fragment=g}}}function Bse(n,e){n.applyShaderReplacements=(o,i,l)=>{let c=null;if(i&&(c=i.ShaderReplacements),c)for(let g=0;g{n.getReplacedShaderTemplate(o,i,l),e.lastRenderPassShaderReplacement=e.currentRenderPass?e.currentRenderPass.getShaderReplacement():null,e.lastRenderPassShaderReplacement&&e.lastRenderPassShaderReplacement(o);const c=e.renderable.getViewSpecificProperties().OpenGL;n.applyShaderReplacements(o,c,!0),n.replaceShaderValues(o,i,l),n.applyShaderReplacements(o,c)},n.getReplacedShaderTemplate=(o,i,l)=>{const c=e.renderable.getViewSpecificProperties().OpenGL;n.getShaderTemplate(o,i,l);let g=o.Vertex;if(c){const T=c.VertexShaderCode;T!==void 0&&T!==""&&(g=T)}o.Vertex=g;let v=o.Fragment;if(c){const T=c.FragmentShaderCode;T!==void 0&&T!==""&&(v=T)}o.Fragment=v;let _=o.Geometry;if(c){const T=c.GeometryShaderCode;T!==void 0&&(_=T)}o.Geometry=_}}var qd={implementReplaceShaderCoincidentOffset:Use,implementBuildShadersWithReplacements:Bse};const{FieldAssociations:oS}=$8,{primTypes:f2}=a4,{Representation:n6,Shading:sL}=Gv,{ScalarMode:Ay}=$v,{Filter:aL,Wrap:lL}=Cs,{vtkErrorMacro:Q4}=m1,Gse={type:"StartEvent"},Wse={type:"EndEvent"},{CoordinateSystem:$se}=xW;function jse(n){const e=n.getSelector();return e?e.getCurrentPass():j1.MIN_KNOWN_PASS-1}function zse(n,e){e.classHierarchy.push("vtkOpenGLPolyDataMapper"),n.buildPass=i=>{i&&(e.currentRenderPass=null,e.openGLActor=n.getFirstAncestorOfType("vtkOpenGLActor"),e._openGLRenderer=e.openGLActor.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()))},n.translucentPass=(i,l)=>{i&&(e.currentRenderPass=l,n.render())},n.zBufferPass=i=>{i&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,n.render(),e.renderDepth=!1)},n.opaqueZBufferPass=i=>n.zBufferPass(i),n.opaquePass=i=>{i&&n.render()},n.render=()=>{const i=e._openGLRenderWindow.getContext();if(e.context!==i){e.context=i;for(let g=f2.Start;g{i.Vertex=IO,i.Fragment=jv,i.Geometry=""},n.replaceShaderColor=(i,l,c)=>{let g=i.Vertex,v=i.Geometry,_=i.Fragment;const T=e.lastBoundBO.getReferenceByName("lastLightComplexity");let P=["uniform float ambient;","uniform float diffuse;","uniform float specular;","uniform float opacityUniform; // the fragment opacity","uniform vec3 ambientColorUniform;","uniform vec3 diffuseColorUniform;"];T&&(P=P.concat(["uniform vec3 specularColorUniform;","uniform float specularPowerUniform;"]));let I=["vec3 ambientColor;"," vec3 diffuseColor;"," float opacity;"];T&&(I=I.concat([" vec3 specularColor;"," float specularPower;"])),I=I.concat([" ambientColor = ambientColorUniform;"," diffuseColor = diffuseColorUniform;"," opacity = opacityUniform;"]),T&&(I=I.concat([" specularColor = specularColorUniform;"," specularPower = specularPowerUniform;"])),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges&&(P=P.concat(["varying vec4 vertexColorVSOutput;"]),g=zn.substitute(g,"//VTK::Color::Dec",["attribute vec4 scalarColor;","varying vec4 vertexColorVSOutput;"]).result,g=zn.substitute(g,"//VTK::Color::Impl",["vertexColorVSOutput = scalarColor;"]).result,v=zn.substitute(v,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,v=zn.substitute(v,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges?_=zn.substitute(_,"//VTK::Color::Impl",I.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])).result:(e.renderable.getAreScalarsMappedFromCells()||e.renderable.getInterpolateScalarsBeforeMapping())&&e.renderable.getColorCoordinates()&&!e.drawingEdges?_=zn.substitute(_,"//VTK::Color::Impl",I.concat([" vec4 texColor = texture2D(texture1, tcoordVCVSOutput.st);"," diffuseColor = texColor.rgb;"," ambientColor = texColor.rgb;"," opacity = opacity*texColor.a;"])).result:(c.getBackfaceProperty()&&!e.drawingEdges&&(P=P.concat(["uniform float opacityUniformBF; // the fragment opacity","uniform float ambientIntensityBF; // the material ambient","uniform float diffuseIntensityBF; // the material diffuse","uniform vec3 ambientColorUniformBF; // ambient material color","uniform vec3 diffuseColorUniformBF; // diffuse material color"]),T?(P=P.concat(["uniform float specularIntensityBF; // the material specular intensity","uniform vec3 specularColorUniformBF; // intensity weighted color","uniform float specularPowerUniformBF;"]),I=I.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," specularColor = specularIntensityBF * specularColorUniformBF;"," specularPower = specularPowerUniformBF;"," opacity = opacityUniformBF; }"])):I=I.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," opacity = opacityUniformBF; }"])),e.haveCellScalars&&!e.drawingEdges&&(P=P.concat(["uniform samplerBuffer texture1;"])),_=zn.substitute(_,"//VTK::Color::Impl",I).result),_=zn.substitute(_,"//VTK::Color::Dec",P).result,i.Vertex=g,i.Geometry=v,i.Fragment=_},n.replaceShaderLight=(i,l,c)=>{let g=i.Fragment;const v="",_=e.lastBoundBO.getReferenceByName("lastLightComplexity"),T=e.lastBoundBO.getReferenceByName("lastLightCount");let P=[];switch(_){case 0:g=zn.substitute(g,"//VTK::Light::Impl",[" gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);"," //VTK::Light::Impl"],!1).result;break;case 1:g=zn.substitute(g,"//VTK::Light::Impl",[" float df = max(0.0, normalVCVSOutput.z);"," float sf = pow(df, specularPower);"," vec3 diffuseL = df * diffuseColor;"," vec3 specularL = sf * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"],!1).result;break;case 2:for(let I=0;I= cos(radians(lightConeAngle${I})))`," {",` attenuation = attenuation * pow(coneDot, lightExponent${I});`," }"," else"," {"," attenuation = 0.0;"," }"," }"," }"," df = max(0.0, attenuation*dot(normalVCVSOutput, -vertLightDirectionVC));",` diffuseL += ((df${v}) * lightColor${I});`," if (dot(normalVCVSOutput, vertLightDirectionVC) < 0.0)"," {",` float sf = sign(df)*attenuation*pow(max(1e-5, + dot(reflect(lightDirectionVC${I}, + normalVCVSOutput), + normalize(-vertexVC.xyz))), + specularPower);`,` specularL += ((sf${v}) * lightColor${I});`," }"]);P=P.concat([" diffuseL = diffuseL * diffuseColor;"," specularL = specularL * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"]),g=zn.substitute(g,"//VTK::Light::Impl",P,!1).result;break;default:Q4("bad light complexity")}i.Fragment=g},n.replaceShaderNormal=(i,l,c)=>{if(e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let v=i.Vertex,_=i.Geometry,T=i.Fragment;e.lastBoundBO.getCABO().getNormalOffset()?(v=zn.substitute(v,"//VTK::Normal::Dec",["attribute vec3 normalMC;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,v=zn.substitute(v,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * normalMC;"]).result,_=zn.substitute(_,"//VTK::Normal::Dec",["in vec3 normalVCVSOutput[];","out vec3 normalVCGSOutput;"]).result,_=zn.substitute(_,"//VTK::Normal::Impl",["normalVCGSOutput = normalVCVSOutput[i];"]).result,T=zn.substitute(T,"//VTK::Normal::Dec",["varying vec3 normalVCVSOutput;"]).result,T=zn.substitute(T,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalVCVSOutput);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.haveCellNormals?(T=zn.substitute(T,"//VTK::Normal::Dec",["uniform mat3 normalMatrix;","uniform samplerBuffer textureN;"]).result,T=zn.substitute(T,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalMatrix *"," texelFetchBuffer(textureN, gl_PrimitiveID + PrimitiveIDOffset).xyz);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.lastBoundBO.getOpenGLMode(c.getProperty().getRepresentation())===e.context.LINES?(T=zn.substitute(T,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,T=zn.substitute(T,"//VTK::Normal::Impl",["vec3 normalVCVSOutput;"," if (abs(fdx.x) > 0.0)"," { fdx = normalize(fdx); normalVCVSOutput = normalize(cross(vec3(fdx.y, -fdx.x, 0.0), fdx)); }"," else { fdy = normalize(fdy); normalVCVSOutput = normalize(cross(vec3(fdy.y, -fdy.x, 0.0), fdy));}"]).result):(T=zn.substitute(T,"//VTK::Normal::Dec",["uniform int cameraParallel;"]).result,T=zn.substitute(T,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,T=zn.substitute(T,"//VTK::Normal::Impl",[" fdx = normalize(fdx);"," fdy = normalize(fdy);"," vec3 normalVCVSOutput = normalize(cross(fdx,fdy));"," if (cameraParallel == 1 && normalVCVSOutput.z < 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"," if (cameraParallel == 0 && dot(normalVCVSOutput,vertexVC.xyz) > 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"]).result),i.Vertex=v,i.Geometry=_,i.Fragment=T}},n.replaceShaderPositionVC=(i,l,c)=>{e.lastBoundBO.replaceShaderPositionVC(i,l,c);let g=i.Vertex,v=i.Geometry,_=i.Fragment;e.lastBoundBO.getReferenceByName("lastLightComplexity")>0?(g=zn.substitute(g,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,g=zn.substitute(g,"//VTK::PositionVC::Impl",["vertexVCVSOutput = MCVCMatrix * vertexMC;"," gl_Position = MCPCMatrix * vertexMC;"]).result,g=zn.substitute(g,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result,v=zn.substitute(v,"//VTK::PositionVC::Dec",["in vec4 vertexVCVSOutput[];","out vec4 vertexVCGSOutput;"]).result,v=zn.substitute(v,"//VTK::PositionVC::Impl",["vertexVCGSOutput = vertexVCVSOutput[i];"]).result,_=zn.substitute(_,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,_=zn.substitute(_,"//VTK::PositionVC::Impl",["vec4 vertexVC = vertexVCVSOutput;"]).result):(g=zn.substitute(g,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,g=zn.substitute(g,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result),i.Vertex=g,i.Geometry=v,i.Fragment=_},n.replaceShaderTCoord=(i,l,c)=>{if(e.lastBoundBO.getCABO().getTCoordOffset()){let g=i.Vertex,v=i.Geometry,_=i.Fragment;if(e.drawingEdges)return;g=zn.substitute(g,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result;const T=e.openGLActor.getActiveTextures();let P=2,I=2;if(T&&T.length>0&&(P=T[0].getComponents(),T[0].getTarget()===e.context.TEXTURE_CUBE_MAP&&(I=3)),e.renderable.getColorTextureMap()&&(P=e.renderable.getColorTextureMap().getPointData().getScalars().getNumberOfComponents(),I=2),I===2){if(g=zn.substitute(g,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result,v=zn.substitute(v,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput[];","out vec2 tcoordVCGSOutput;"]).result,v=zn.substitute(v,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,_=zn.substitute(_,"//VTK::TCoord::Dec",["varying vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,T&&T.length>=1)switch(P){case 1:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}}else switch(g=zn.substitute(g,"//VTK::TCoord::Dec","attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;").result,v=zn.substitute(v,"//VTK::TCoord::Dec",["in vec3 tcoordVCVSOutput[];","out vec3 tcoordVCGSOutput;"]).result,v=zn.substitute(v,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,_=zn.substitute(_,"//VTK::TCoord::Dec",["varying vec3 tcoordVCVSOutput;","uniform samplerCube texture1;"]).result,P){case 1:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:_=zn.substitute(_,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}i.Vertex=g,i.Geometry=v,i.Fragment=_}},n.replaceShaderClip=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;if(e.renderable.getNumberOfClippingPlanes()){const _=e.renderable.getNumberOfClippingPlanes();g=zn.substitute(g,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`uniform vec4 clipPlanes[${_}];`,`varying float clipDistancesVSOutput[${_}];`]).result,g=zn.substitute(g,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${_}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,v=zn.substitute(v,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`varying float clipDistancesVSOutput[${_}];`]).result,v=zn.substitute(v,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${_}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}i.Vertex=g,i.Fragment=v},n.getCoincidentParameters=(i,l)=>{let c={factor:0,offset:0};const g=l.getProperty();if(e.renderable.getResolveCoincidentTopology()==yc.PolygonOffset||g.getEdgeVisibility()&&g.getRepresentation()===n6.SURFACE){const _=e.lastBoundBO.getPrimitiveType();_===f2.Points||g.getRepresentation()===n6.POINTS?c=e.renderable.getCoincidentTopologyPointOffsetParameter():_===f2.Lines||g.getRepresentation()===n6.WIREFRAME?c=e.renderable.getCoincidentTopologyLineOffsetParameters():(_===f2.Tris||_===f2.TriStrips)&&(c=e.renderable.getCoincidentTopologyPolygonOffsetParameters()),(_===f2.TrisEdges||_===f2.TriStripsEdges)&&(c=e.renderable.getCoincidentTopologyPolygonOffsetParameters(),c.factor/=2,c.offset/=2)}const v=e._openGLRenderer.getSelector();return v&&v.getFieldAssociation()===oS.FIELD_ASSOCIATION_POINTS&&(c.offset-=2),c},n.replaceShaderPicking=(i,l,c)=>{let g=i.Fragment,v=i.Vertex;if(g=zn.substitute(g,"//VTK::Picking::Dec",["uniform int picking;","//VTK::Picking::Dec"]).result,!!e._openGLRenderer.getSelector()){switch((e.lastSelectionState===j1.ID_LOW24||e.lastSelectionState===j1.ID_HIGH24)&&(v=zn.substitute(v,"//VTK::Picking::Dec",[`flat out int vertexIDVSOutput; +`,`uniform int VertexIDOffset; +`]).result,v=zn.substitute(v,"//VTK::Picking::Impl",` vertexIDVSOutput = gl_VertexID + VertexIDOffset; +`).result,g=zn.substitute(g,"//VTK::Picking::Dec",`flat in int vertexIDVSOutput; +`).result,g=zn.substitute(g,"//VTK::Picking::Impl",[" int idx = vertexIDVSOutput;","//VTK::Picking::Impl"]).result),e.lastSelectionState){case j1.ID_LOW24:g=zn.substitute(g,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float(idx%256)/255.0, float((idx/256)%256)/255.0, float((idx/65536)%256)/255.0, 1.0);").result;break;case j1.ID_HIGH24:g=zn.substitute(g,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float((idx/16777216)%256)/255.0, 0.0, 0.0, 1.0);").result;break;default:g=zn.substitute(g,"//VTK::Picking::Dec","uniform vec3 mapperIndex;").result,g=zn.substitute(g,"//VTK::Picking::Impl"," gl_FragData[0] = picking != 0 ? vec4(mapperIndex,1.0) : gl_FragData[0];").result}i.Fragment=g,i.Vertex=v}},n.replaceShaderValues=(i,l,c)=>{if(n.replaceShaderColor(i,l,c),n.replaceShaderNormal(i,l,c),n.replaceShaderLight(i,l,c),n.replaceShaderTCoord(i,l,c),n.replaceShaderPicking(i,l,c),n.replaceShaderClip(i,l,c),n.replaceShaderCoincidentOffset(i,l,c),n.replaceShaderPositionVC(i,l,c),e.haveSeenDepthRequest){let g=i.Fragment;g=zn.substitute(g,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,g=zn.substitute(g,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,i.Fragment=g}},n.getNeedToRebuildShaders=(i,l,c)=>{let g=0,v=0;const _=i.getPrimitiveType(),T=e.currentInput;let P=!1;const I=T.getPointData().getNormals(),R=T.getCellData().getNormals(),L=c.getProperty().getInterpolation()===sL.FLAT,V=c.getProperty().getRepresentation(),U=i.getOpenGLMode(V,_);if((U===e.context.TRIANGLES||R&&!I||!L&&I||!L&&U===e.context.LINES)&&(P=!0),c.getProperty().getLighting()&&P){g=0;const K=l.getLightsByReference();for(let X=0;X0&&(v++,g===0&&(g=1)),g===1&&(v>1||ee.getIntensity()!==1||!ee.lightTypeIsHeadLight())&&(g=2),g<3&&ee.getPositional()&&(g=3)}}let j=!1;const z=e.lastBoundBO.getReferenceByName("lastLightComplexity"),$=e.lastBoundBO.getReferenceByName("lastLightCount");return(z!==g||$!==v)&&(e.lastBoundBO.set({lastLightComplexity:g},!0),e.lastBoundBO.set({lastLightCount:v},!0),j=!0),(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(j=!0),e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||i.getShaderSourceTime().getMTime(){const g=e.renderable.getViewSpecificProperties().ShadersCallbacks;g&&g.forEach(v=>{v.callback(v.userData,i,l,c)})},n.setMapperShaderParameters=(i,l,c)=>{if(i.getProgram().isUniformUsed("PrimitiveIDOffset")&&i.getProgram().setUniformi("PrimitiveIDOffset",e.primitiveIDOffset),i.getProgram().isUniformUsed("VertexIDOffset")&&i.getProgram().setUniformi("VertexIDOffset",e.vertexIDOffset),i.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())){const _=e.lastBoundBO.getReferenceByName("lastLightComplexity");i.getProgram().isAttributeUsed("vertexMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"vertexMC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,!1)||Q4("Error setting vertexMC in shader VAO.")),i.getProgram().isAttributeUsed("normalMC")&&i.getCABO().getNormalOffset()&&_>0?i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"normalMC",i.getCABO().getNormalOffset(),i.getCABO().getStride(),e.context.FLOAT,3,!1)||Q4("Error setting normalMC in shader VAO."):i.getVAO().removeAttributeArray("normalMC"),e.renderable.getCustomShaderAttributes().forEach((T,P)=>{i.getProgram().isAttributeUsed(`${T}MC`)&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),`${T}MC`,i.getCABO().getCustomData()[P].offset,i.getCABO().getStride(),e.context.FLOAT,i.getCABO().getCustomData()[P].components,!1)||Q4(`Error setting ${T}MC in shader VAO.`))}),i.getProgram().isAttributeUsed("tcoordMC")&&i.getCABO().getTCoordOffset()?i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"tcoordMC",i.getCABO().getTCoordOffset(),i.getCABO().getStride(),e.context.FLOAT,i.getCABO().getTCoordComponents(),!1)||Q4("Error setting tcoordMC in shader VAO."):i.getVAO().removeAttributeArray("tcoordMC"),i.getProgram().isAttributeUsed("scalarColor")&&i.getCABO().getColorComponents()?i.getVAO().addAttributeArray(i.getProgram(),i.getCABO().getColorBO(),"scalarColor",i.getCABO().getColorOffset(),i.getCABO().getColorBOStride(),e.context.UNSIGNED_BYTE,4,!0)||Q4("Error setting scalarColor in shader VAO."):i.getVAO().removeAttributeArray("scalarColor"),i.getAttributeUpdateTime().modified()}if(e.renderable.getNumberOfClippingPlanes()){const _=e.renderable.getNumberOfClippingPlanes(),T=[],I=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null,R=I?Ea(e.tmpMat4,c.getMatrix()):c.getMatrix();I&&(po(R,R),Y0(R,R,I),po(R,R));for(let L=0;L<_;L++){const V=[];e.renderable.getClippingPlaneInDataCoords(R,L,V);for(let U=0;U<4;U++)T.push(V[U])}i.getProgram().setUniformi("numClipPlanes",_),i.getProgram().setUniform4fv("clipPlanes",T)}e.internalColorTexture&&i.getProgram().isUniformUsed("texture1")&&i.getProgram().setUniformi("texture1",e.internalColorTexture.getTextureUnit());const g=e.openGLActor.getActiveTextures();if(g)for(let _=0;_{const g=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(g<2)return;const v=i.getProgram();let _=0;const T=l.getLightsByReference();for(let R=0;R0){const U=L.getColorByReference(),j=L.getIntensity();e.lightColor[0]=U[0]*j,e.lightColor[1]=U[1]*j,e.lightColor[2]=U[2]*j;const z=L.getDirection(),$=l.getActiveCamera().getViewMatrix(),K=[...z];L.lightTypeIsSceneLight()&&(K[0]=$[0]*z[0]+$[1]*z[1]+$[2]*z[2],K[1]=$[4]*z[0]+$[5]*z[1]+$[6]*z[2],K[2]=$[8]*z[0]+$[9]*z[1]+$[10]*z[2],Bg(K)),e.lightDirection[0]=K[0],e.lightDirection[1]=K[1],e.lightDirection[2]=K[2],Bg(e.lightDirection),v.setUniform3fArray(`lightColor${_}`,e.lightColor),v.setUniform3fArray(`lightDirectionVC${_}`,e.lightDirection),_++}}if(g<3)return;const I=l.getActiveCamera().getViewMatrix();po(I,I),_=0;for(let R=0;R0){const U=L.getTransformedPosition(),j=new Float64Array(3);g0(j,U,I),v.setUniform3fArray(`lightAttenuation${_}`,L.getAttenuationValuesByReference()),v.setUniformi(`lightPositional${_}`,L.getPositional()),v.setUniformf(`lightExponent${_}`,L.getExponent()),v.setUniformf(`lightConeAngle${_}`,L.getConeAngle()),v.setUniform3fArray(`lightPositionVC${_}`,[j[0],j[1],j[2]]),_++}}};function o(i,l,c){return l.identity(c),i.reduce((g,v,_)=>_===0?v?l.copy(g,v):l.identity(g):v?l.multiply(g,g,v):g,c)}n.setCameraShaderParameters=(i,l,c)=>{const g=i.getProgram(),v=e.openGLCamera.getKeyMatrices(l),_=l.getActiveCamera(),T=e.openGLCamera.getKeyMatrixTime().getMTime(),P=g.getLastCameraMTime(),R=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null,L=c.getIsIdentity(),V=L?{mcwc:null,normalMatrix:null}:e.openGLActor.getKeyMatrices();if(c.getCoordinateSystem()===$se.DISPLAY){const U=e._openGLRenderer.getTiledSizeAndOrigin();zi(e.tmpMat4),e.tmpMat4[0]=2/U.usize,e.tmpMat4[12]=-1,e.tmpMat4[5]=2/U.vsize,e.tmpMat4[13]=-1,Y0(e.tmpMat4,e.tmpMat4,R),g.setUniformMatrix("MCPCMatrix",e.tmpMat4)}else g.setUniformMatrix("MCPCMatrix",o([v.wcpc,V.mcwc,R],Gw,e.tmpMat4));g.isUniformUsed("MCVCMatrix")&&g.setUniformMatrix("MCVCMatrix",o([v.wcvc,V.mcwc,R],Gw,e.tmpMat4)),g.isUniformUsed("normalMatrix")&&g.setUniformMatrix3x3("normalMatrix",o([v.normalMatrix,V.normalMatrix],bre,e.tmpMat3)),P!==T&&(g.isUniformUsed("cameraParallel")&&g.setUniformi("cameraParallel",_.getParallelProjection()),g.setLastCameraMTime(T)),L||g.setLastCameraMTime(0)},n.setPropertyShaderParameters=(i,l,c)=>{const g=i.getProgram();let v=c.getProperty(),_=v.getOpacity(),T=e.drawingEdges?v.getEdgeColorByReference():v.getAmbientColorByReference(),P=e.drawingEdges?v.getEdgeColorByReference():v.getDiffuseColorByReference(),I=e.drawingEdges?1:v.getAmbient(),R=e.drawingEdges?0:v.getDiffuse(),L=e.drawingEdges?0:v.getSpecular();const V=v.getSpecularPower();g.setUniformf("opacityUniform",_),g.setUniform3fArray("ambientColorUniform",T),g.setUniform3fArray("diffuseColorUniform",P),g.setUniformf("ambient",I),g.setUniformf("diffuse",R);const U=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(U<1)return;let j=v.getSpecularColorByReference();if(g.setUniform3fArray("specularColorUniform",j),g.setUniformf("specularPowerUniform",V),g.setUniformf("specular",L),g.isUniformUsed("ambientIntensityBF")){if(v=c.getBackfaceProperty(),_=v.getOpacity(),T=v.getAmbientColor(),I=v.getAmbient(),P=v.getDiffuseColor(),R=v.getDiffuse(),j=v.getSpecularColor(),L=v.getSpecular(),g.setUniformf("ambientIntensityBF",I),g.setUniformf("diffuseIntensityBF",R),g.setUniformf("opacityUniformBF",_),g.setUniform3fArray("ambientColorUniformBF",T),g.setUniform3fArray("diffuseColorUniformBF",P),U<1)return;g.setUniformf("specularIntensityBF",L),g.setUniform3fArray("specularColorUniformBF",j),g.setUniformf("specularPowerUniformBF",V)}},n.updateMaximumPointCellIds=(i,l)=>{var v,_,T,P;const c=e._openGLRenderer.getSelector();if(!c)return;if((_=(v=e.selectionWebGLIdsToVTKIds)==null?void 0:v.points)!=null&&_.length){const I=e.selectionWebGLIdsToVTKIds.points.length;c.setMaximumPointId(I-1)}if((P=(T=e.selectionWebGLIdsToVTKIds)==null?void 0:T.cells)!=null&&P.length){const I=e.selectionWebGLIdsToVTKIds.cells.length;c.setMaximumCellId(I-1)}c.getFieldAssociation()===oS.FIELD_ASSOCIATION_POINTS&&(e.pointPicking=!0)},n.renderPieceStart=(i,l)=>{e.primitiveIDOffset=0,e.vertexIDOffset=0;const c=jse(e._openGLRenderer);if(e.lastSelectionState!==c&&(e.selectionStateChanged.modified(),e.lastSelectionState=c),e._openGLRenderer.getSelector())switch(c){default:e._openGLRenderer.getSelector().renderProp(l)}n.updateBufferObjects(i,l),e.renderable.getColorTextureMap()&&e.internalColorTexture.activate(),e.lastBoundBO=null},n.renderPieceDraw=(i,l)=>{const c=l.getProperty().getRepresentation(),g=l.getProperty().getEdgeVisibility()&&c===n6.SURFACE,v=e._openGLRenderer.getSelector(),_=v&&v.getFieldAssociation()===oS.FIELD_ASSOCIATION_POINTS&&(e.lastSelectionState===j1.ID_LOW24||e.lastSelectionState===j1.ID_HIGH24);for(let T=f2.Start;T=0))&&(e.lastBoundBO=e.primitives[T],e.primitiveIDOffset+=e.primitives[T].drawArrays(i,l,c,n),e.vertexIDOffset+=e.primitives[T].getCABO().getElementCount()))},n.renderPieceFinish=(i,l)=>{e.LastBoundBO&&e.LastBoundBO.getVAO().release(),e.renderable.getColorTextureMap()&&e.internalColorTexture.deactivate()},n.renderPiece=(i,l)=>{if(n.invokeEvent(Gse),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),n.invokeEvent(Wse),!e.currentInput){Q4("No input!");return}if(!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues())return;const c=e.context,g=l.getProperty().getBackfaceCulling(),v=l.getProperty().getFrontfaceCulling();!g&&!v?e._openGLRenderWindow.disableCullFace():v?(e._openGLRenderWindow.enableCullFace(),c.cullFace(c.FRONT)):(e._openGLRenderWindow.enableCullFace(),c.cullFace(c.BACK)),n.renderPieceStart(i,l),n.renderPieceDraw(i,l),n.renderPieceFinish(i,l)},n.computeBounds=(i,l)=>{if(!n.getInput()){W8(e.bounds);return}e.bounds=n.getInput().getBounds()},n.updateBufferObjects=(i,l)=>{n.getNeedToRebuildBufferObjects(i,l)&&n.buildBufferObjects(i,l),n.updateMaximumPointCellIds()},n.getNeedToRebuildBufferObjects=(i,l)=>{const c=e.VBOBuildTime.getMTime();return c{const c=e.currentInput;if(c===null)return;e.renderable.mapScalars(c,1);const g=e.renderable.getColorMapColors();e.haveCellScalars=!1;const v=e.renderable.getScalarMode();e.renderable.getScalarVisibility()&&(v===Ay.USE_CELL_DATA||v===Ay.USE_CELL_FIELD_DATA||v===Ay.USE_FIELD_DATA||!c.getPointData().getScalars())&&v!==Ay.USE_POINT_FIELD_DATA&&g&&(e.haveCellScalars=!0);let _=l.getProperty().getInterpolation()!==sL.FLAT?c.getPointData().getNormals():null;_===null&&c.getCellData().getNormals()&&(e.haveCellNormals=!0,_=c.getCellData().getNormals());const T=l.getProperty().getRepresentation();let P=c.getPointData().getTCoords();e.openGLActor.getActiveTextures()||(P=null);let I=!1;if(e.renderable.getColorCoordinates()){P=e.renderable.getColorCoordinates(),I=e.renderable.getAreScalarsMappedFromCells(),e.internalColorTexture||(e.internalColorTexture=Cs.newInstance({resizable:!0}));const L=e.internalColorTexture;L.setMinificationFilter(aL.NEAREST),L.setMagnificationFilter(aL.NEAREST),L.setWrapS(lL.CLAMP_TO_EDGE),L.setWrapT(lL.CLAMP_TO_EDGE),L.setOpenGLRenderWindow(e._openGLRenderWindow);const V=e.renderable.getColorTextureMap(),U=V.getExtent(),j=V.getPointData().getScalars();L.create2DFromRaw(U[1]-U[0]+1,U[3]-U[2]+1,j.getNumberOfComponents(),j.getDataType(),j.getData()),L.activate(),L.sendParameters(),L.deactivate()}const R=`${c.getMTime()}A${T}B${c.getMTime()}C${_?_.getMTime():1}D${g?g.getMTime():1}E${l.getProperty().getEdgeVisibility()}F${P?P.getMTime():1}`;if(e.VBOBuildString!==R){const V={points:c.getPoints(),normals:_,tcoords:P,colors:g,cellOffset:0,vertexOffset:0,useTCoordsPerCell:I,haveCellScalars:e.haveCellScalars,haveCellNormals:e.haveCellNormals,customAttributes:e.renderable.getCustomShaderAttributes().map(z=>c.getPointData().getArrayByName(z))};e.renderable.getPopulateSelectionSettings()&&(e.selectionWebGLIdsToVTKIds={points:null,cells:null});const U=[{inRep:"verts",cells:c.getVerts()},{inRep:"lines",cells:c.getLines()},{inRep:"polys",cells:c.getPolys()},{inRep:"strips",cells:c.getStrips()},{inRep:"polys",cells:c.getPolys()},{inRep:"strips",cells:c.getStrips()}],j=l.getProperty().getEdgeVisibility()&&T===n6.SURFACE;for(let z=f2.Start;z{let i=0;return e.primitives.forEach(l=>{i+=l.getAllocatedGPUMemoryInBytes()}),i}}const Hse={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null,tmpMat4:null,ambientColor:[],diffuseColor:[],specularColor:[],lightColor:[],lightDirection:[],lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastSelectionState:j1.MIN_KNOWN_PASS-1,selectionStateChanged:null,selectionWebGLIdsToVTKIds:null,pointPicking:!1};function SW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hse,o),Ha.extend(n,e,o),qd.implementReplaceShaderCoincidentOffset(n,e,o),qd.implementBuildShadersWithReplacements(n,e,o),e.primitives=[],e.primTypes=f2,e.tmpMat3=pc(new Float64Array(9)),e.tmpMat4=zi(new Float64Array(16));for(let i=f2.Start;i{if(n.invokeEvent(Xse),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(1),n.invokeEvent(Yse),!e.currentInput){g3("No input!");return}if(!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues())return;const c=e.context;e._openGLRenderWindow.getWebgl2()?(e.hardwareSupport=!0,e.extension=null):e.extension||(e.extension=e.context.getExtension("ANGLE_instanced_arrays"),e.hardwareSupport=!!e.extension);const g=l.getProperty().getBackfaceCulling(),v=l.getProperty().getFrontfaceCulling();!g&&!v?e._openGLRenderWindow.disableCullFace():v?(e._openGLRenderWindow.enableCullFace(),c.cullFace(c.FRONT)):(e._openGLRenderWindow.enableCullFace(),c.cullFace(c.BACK)),n.renderPieceStart(i,l),n.renderPieceDraw(i,l),n.renderPieceFinish(i,l)},n.multiply4x4WithOffset=(i,l,c,g)=>{const v=l[0],_=l[1],T=l[2],P=l[3],I=l[4],R=l[5],L=l[6],V=l[7],U=l[8],j=l[9],z=l[10],$=l[11],K=l[12],X=l[13],ee=l[14],ne=l[15];let le=c[g],ce=c[g+1],ge=c[g+2],pe=c[g+3];i[0]=le*v+ce*I+ge*U+pe*K,i[1]=le*_+ce*R+ge*j+pe*X,i[2]=le*T+ce*L+ge*z+pe*ee,i[3]=le*P+ce*V+ge*$+pe*ne,le=c[g+4],ce=c[g+5],ge=c[g+6],pe=c[g+7],i[4]=le*v+ce*I+ge*U+pe*K,i[5]=le*_+ce*R+ge*j+pe*X,i[6]=le*T+ce*L+ge*z+pe*ee,i[7]=le*P+ce*V+ge*$+pe*ne,le=c[g+8],ce=c[g+9],ge=c[g+10],pe=c[g+11],i[8]=le*v+ce*I+ge*U+pe*K,i[9]=le*_+ce*R+ge*j+pe*X,i[10]=le*T+ce*L+ge*z+pe*ee,i[11]=le*P+ce*V+ge*$+pe*ne,le=c[g+12],ce=c[g+13],ge=c[g+14],pe=c[g+15],i[12]=le*v+ce*I+ge*U+pe*K,i[13]=le*_+ce*R+ge*j+pe*X,i[14]=le*T+ce*L+ge*z+pe*ee,i[15]=le*P+ce*V+ge*$+pe*ne},n.replaceShaderNormal=(i,l,c)=>{if(e.hardwareSupport&&e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let v=i.Vertex;e.lastBoundBO.getCABO().getNormalOffset()&&(v=zn.substitute(v,"//VTK::Normal::Dec",["attribute vec3 normalMC;","attribute mat3 gNormal;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,v=zn.substitute(v,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * gNormal * normalMC;"]).result),i.Vertex=v}o.replaceShaderNormal(i,l,c)},n.replaceShaderColor=(i,l,c)=>{if(e.hardwareSupport&&e.renderable.getColorArray()){let g=i.Vertex,v=i.Geometry,_=i.Fragment;const T=e.lastBoundBO.getReferenceByName("lastLightComplexity");let P=["uniform float ambient;","uniform float diffuse;","uniform float specular;","uniform float opacityUniform; // the fragment opacity"];T&&(P=P.concat(["uniform vec3 specularColorUniform;","uniform float specularPowerUniform;"]));let I=["vec3 ambientColor;"," vec3 diffuseColor;"," float opacity;"];T&&(I=I.concat([" vec3 specularColor;"," float specularPower;"])),I=I.concat([" opacity = opacityUniform;"]),T&&(I=I.concat([" specularColor = specularColorUniform;"," specularPower = specularPowerUniform;"])),e.drawingEdges||(P=P.concat(["varying vec4 vertexColorVSOutput;"]),g=zn.substitute(g,"//VTK::Color::Dec",["attribute vec4 gColor;","varying vec4 vertexColorVSOutput;"]).result,g=zn.substitute(g,"//VTK::Color::Impl",["vertexColorVSOutput = gColor;"]).result,v=zn.substitute(v,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,v=zn.substitute(v,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result,I=I.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])),_=zn.substitute(_,"//VTK::Color::Impl",I).result,_=zn.substitute(_,"//VTK::Color::Dec",P).result,i.Vertex=g,i.Geometry=v,i.Fragment=_}o.replaceShaderColor(i,l,c)},n.replaceShaderPositionVC=(i,l,c)=>{if(e.hardwareSupport){let g=i.Vertex;e.lastBoundBO.getReferenceByName("lastLightComplexity")>0?(g=zn.substitute(g,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;","vertexVCVSOutput = MCVCMatrix * gVertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result,g=zn.substitute(g,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result):(g=zn.substitute(g,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;"]).result,g=zn.substitute(g,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result),i.Vertex=g}o.replaceShaderPositionVC(i,l,c)},n.replaceShaderPicking=(i,l,c)=>{if(e.hardwareSupport){let g=i.Fragment,v=i.Vertex;v=zn.substitute(v,"//VTK::Picking::Dec",["attribute vec3 mapperIndexVS;","varying vec3 mapperIndexVSOutput;"]).result,v=zn.substitute(v,"//VTK::Picking::Impl"," mapperIndexVSOutput = mapperIndexVS;").result,i.Vertex=v,g=zn.substitute(g,"//VTK::Picking::Dec",["varying vec3 mapperIndexVSOutput;","uniform vec3 mapperIndex;","uniform int picking;"]).result,g=zn.substitute(g,"//VTK::Picking::Impl",[" vec4 pickColor = picking == 2 ? vec4(mapperIndexVSOutput,1.0) : vec4(mapperIndex,1.0);"," gl_FragData[0] = picking != 0 ? pickColor : gl_FragData[0];"]).result,i.Fragment=g}else o.replaceShaderPicking(i,l,c)},n.updateGlyphShaderParameters=(i,l,c,g,v,_,T,P)=>{const I=c.getProgram();if(i){const R=e.normalMatrix,L=_,V=T*9,U=e.tmpMat3,j=R[0],z=R[1],$=R[2],K=R[3],X=R[4],ee=R[5],ne=R[6],le=R[7],ce=R[8],ge=L[V],pe=L[V+1],we=L[V+2],Te=L[V+3],Ve=L[V+4],Pe=L[V+5],je=L[V+6],Je=L[V+7],it=L[V+8];U[0]=ge*j+pe*K+we*ne,U[1]=ge*z+pe*X+we*le,U[2]=ge*$+pe*ee+we*ce,U[3]=Te*j+Ve*K+Pe*ne,U[4]=Te*z+Ve*X+Pe*le,U[5]=Te*$+Ve*ee+Pe*ce,U[6]=je*j+Je*K+it*ne,U[7]=je*z+Je*X+it*le,U[8]=je*$+Je*ee+it*ce,I.setUniformMatrix3x3("normalMatrix",e.tmpMat3)}if(n.multiply4x4WithOffset(e.tmpMat4,e.mcpcMatrix,v,T*16),I.setUniformMatrix("MCPCMatrix",e.tmpMat4),l&&(n.multiply4x4WithOffset(e.tmpMat4,e.mcvcMatrix,v,T*16),I.setUniformMatrix("MCVCMatrix",e.tmpMat4)),g){const R=g.getData();e.tmpColor[0]=R[T*4]/255,e.tmpColor[1]=R[T*4+1]/255,e.tmpColor[2]=R[T*4+2]/255,I.setUniform3fArray("ambientColorUniform",e.tmpColor),I.setUniform3fArray("diffuseColorUniform",e.tmpColor)}P&&I.setUniform3fArray("mapperIndex",P.getPropColorValue())},n.renderPieceDraw=(i,l)=>{const c=l.getProperty().getRepresentation(),g=e.context,v=l.getProperty().getEdgeVisibility()&&c===Kse.SURFACE,_=e.openGLCamera.getKeyMatrices(i),T=e.openGLActor.getKeyMatrices();y8(e.normalMatrix,_.normalMatrix,T.normalMatrix),Y0(e.mcpcMatrix,_.wcpc,T.mcwc),Y0(e.mcvcMatrix,_.wcvc,T.mcwc);const P=e.renderable.getMatrixArray(),I=e.renderable.getNormalArray(),R=e.renderable.getColorArray(),L=P.length/16;let V=!1;e._openGLRenderer.getSelector()&&e._openGLRenderer.getSelector().getCurrentPass()===qse.COMPOSITE_INDEX_PASS&&(V=!0);for(let U=e.primTypes.Start;U{if(i.getCABO().getElementCount()&&(e.glyphBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())){i.getProgram().isAttributeUsed("gMatrix")?i.getVAO().addAttributeMatrixWithDivisor(i.getProgram(),e.matrixBuffer,"gMatrix",0,64,e.context.FLOAT,4,!1,1)||g3("Error setting gMatrix in shader VAO."):i.getVAO().removeAttributeArray("gMatrix"),i.getProgram().isAttributeUsed("gNormal")?i.getVAO().addAttributeMatrixWithDivisor(i.getProgram(),e.normalBuffer,"gNormal",0,36,e.context.FLOAT,3,!1,1)||g3("Error setting gNormal in shader VAO."):i.getVAO().removeAttributeArray("gNormal"),i.getProgram().isAttributeUsed("gColor")?i.getVAO().addAttributeArrayWithDivisor(i.getProgram(),e.colorBuffer,"gColor",0,4,e.context.UNSIGNED_BYTE,4,!0,1,!1)||g3("Error setting gColor in shader VAO."):i.getVAO().removeAttributeArray("gColor"),i.getProgram().isAttributeUsed("mapperIndexVS")?i.getVAO().addAttributeArrayWithDivisor(i.getProgram(),e.pickBuffer,"mapperIndexVS",0,4,e.context.UNSIGNED_BYTE,4,!0,1,!1)||g3("Error setting mapperIndexVS in shader VAO."):i.getVAO().removeAttributeArray("mapperIndexVS"),o.setMapperShaderParameters(i,l,c),i.getAttributeUpdateTime().modified();return}o.setMapperShaderParameters(i,l,c)},n.getNeedToRebuildBufferObjects=(i,l)=>(e.renderable.buildArrays(),e.VBOBuildTime.getMTime()!!(o.getNeedToRebuildShaders(i,l,c)||i.getShaderSourceTime().getMTime(){if(e.hardwareSupport){const c=e.renderable.getMatrixArray(),g=e.renderable.getNormalArray(),v=e.renderable.getColorArray();if(e.matrixBuffer||(e.matrixBuffer=ah.newInstance(),e.matrixBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.normalBuffer=ah.newInstance(),e.normalBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.colorBuffer=ah.newInstance(),e.colorBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.pickBuffer=ah.newInstance(),e.pickBuffer.setOpenGLRenderWindow(e._openGLRenderWindow)),e.renderable.getBuildTime().getMTime()>e.glyphBOBuildTime.getMTime()){e.matrixBuffer.upload(c,Ly.ARRAY_BUFFER),e.normalBuffer.upload(g,Ly.ARRAY_BUFFER),v?e.colorBuffer.upload(v.getData(),Ly.ARRAY_BUFFER):e.colorBuffer.releaseGraphicsResources();const _=c.length/16,T=new Uint8Array(4*_);for(let P=0;P<_;++P){let I=P+1;const R=P*4;T[R]=I%256,I-=T[R],I/=256,T[R+1]=I%256,I-=T[R+1],I/=256,T[R+2]=I%256,T[R+3]=255}e.pickBuffer.upload(T,Ly.ARRAY_BUFFER),e.glyphBOBuildTime.modified()}}return o.buildBufferObjects(i,l)}}const Zse={normalMatrix:null,mcpcMatrix:null,mcwcMatrix:null};function Qse(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zse,o),kC.extend(n,e,o),e.tmpMat3=pc(new Float64Array(9)),e.normalMatrix=pc(new Float64Array(9)),e.mcpcMatrix=zi(new Float64Array(16)),e.mcvcMatrix=zi(new Float64Array(16)),e.tmpColor=[],e.glyphBOBuildTime={},_s(e.glyphBOBuildTime,{mtime:0}),Jse(n,e)}const EW=as(Qse,"vtkOpenGLGlyph3DMapper");var eae={newInstance:EW};R2("vtkGlyph3DMapper",EW);const tae={NONE:-1,I:0,J:1,K:2,X:3,Y:4,Z:5};var yC={SlicingMode:tae};const Dg={NEAREST:0,LINEAR:1};var nae={InterpolationType:Dg};function df(n,e,o){return n?`${n.getMTime()}-${e}-${o}`:"0"}function OO(n,e){return`${n.getMTime()}A${e.getMTime()}`}const{vtkErrorMacro:r6}=m1,{SlicingMode:Hl}=yC;function rae(n){const e=n.split(` +`),o=[];for(let i=0;i0&&o.push(l)}return o}function iae(n,e){e.classHierarchy.push("vtkOpenGLImageMapper");function o(i){e.openGLTexture.releaseGraphicsResources(i),[e._colorTransferFunc,e._pwFunc,e._labelOutlineThicknessArray].forEach(l=>i.unregisterGraphicsResourceUser(l,n))}n.buildPass=i=>{if(i){e.currentRenderPass=null,e.openGLImageSlice=n.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer");const l=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),l&&!l.isDeleted()&&l!==e._openGLRenderWindow&&o(l),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow);const c=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(c.getActiveCamera()),e.renderable.isA("vtkImageMapper")&&e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(c.getActiveCamera())}},n.translucentPass=(i,l)=>{i&&(e.currentRenderPass=l,n.render())},n.zBufferPass=i=>{i&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,n.render(),e.renderDepth=!1)},n.opaqueZBufferPass=i=>n.zBufferPass(i),n.opaquePass=i=>{i&&n.render()},n.getCoincidentParameters=(i,l)=>e.renderable.getResolveCoincidentTopology()==yc.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,n.render=()=>{const i=e.openGLImageSlice.getRenderable(),l=e._openGLRenderer.getRenderable();n.renderPiece(l,i)},n.getShaderTemplate=(i,l,c)=>{i.Vertex=IO,i.Fragment=jv,i.Geometry=""},n.replaceShaderValues=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;g=zn.substitute(g,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,g=zn.substitute(g,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result,g=zn.substitute(g,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result,g=zn.substitute(g,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result;const _=e.openGLTexture.getComponents(),T=c.getProperty().getIndependentComponents();let P=["varying vec2 tcoordVCVSOutput;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D texture1;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform sampler2D labelOutlineTexture1;","uniform float opacity;","uniform float outlineOpacity;"];if(T){for(let R=1;R<_;R++)P=P.concat([`uniform float cshift${R};`,`uniform float cscale${R};`,`uniform float pwfshift${R};`,`uniform float pwfscale${R};`]);switch(_){case 1:P=P.concat(["uniform float mix0;","#define height0 0.5"]);break;case 2:P=P.concat(["uniform float mix0;","uniform float mix1;","#define height0 0.25","#define height1 0.75"]);break;case 3:P=P.concat(["uniform float mix0;","uniform float mix1;","uniform float mix2;","#define height0 0.17","#define height1 0.5","#define height2 0.83"]);break;case 4:P=P.concat(["uniform float mix0;","uniform float mix1;","uniform float mix2;","uniform float mix3;","#define height0 0.125","#define height1 0.375","#define height2 0.625","#define height3 0.875"]);break;default:r6("Unsupported number of independent coordinates.")}}if(v=zn.substitute(v,"//VTK::TCoord::Dec",P).result,c.getProperty().getUseLabelOutline()===!0&&(v=zn.substitute(v,"//VTK::LabelOutline::Dec",["uniform int outlineThickness;","uniform float vpWidth;","uniform float vpHeight;","uniform float vpOffsetX;","uniform float vpOffsetY;","uniform mat4 PCWCMatrix;","uniform mat4 vWCtoIDX;","uniform ivec3 imageDimensions;","uniform int sliceAxis;"]).result,v=zn.substitute(v,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result,v=zn.substitute(v,"//VTK::LabelOutlineHelperFunction",["#ifdef vtkImageLabelOutlineOn","vec3 fragCoordToIndexSpace(vec4 fragCoord) {"," vec4 pcPos = vec4("," (fragCoord.x / vpWidth - vpOffsetX - 0.5) * 2.0,"," (fragCoord.y / vpHeight - vpOffsetY - 0.5) * 2.0,"," (fragCoord.z - 0.5) * 2.0,"," 1.0);",""," vec4 worldCoord = PCWCMatrix * pcPos;"," vec4 vertex = (worldCoord/worldCoord.w);",""," vec3 index = (vWCtoIDX * vertex).xyz;",""," // half voxel fix for labelmapOutline"," return (index + vec3(0.5)) / vec3(imageDimensions);","}","vec2 getSliceCoords(vec3 coord, int axis) {"," if (axis == 0) return coord.yz;"," if (axis == 1) return coord.xz;"," if (axis == 2) return coord.xy;","}","#endif"]).result),T){const R=["r","g","b","a"];let L=["vec4 tvalue = texture2D(texture1, tcoordVCVSOutput);"];for(let V=0;V<_;V++)L=L.concat([`vec3 tcolor${V} = mix${V} * texture2D(colorTexture1, vec2(tvalue.${R[V]} * cscale${V} + cshift${V}, height${V})).rgb;`,`float compWeight${V} = mix${V} * texture2D(pwfTexture1, vec2(tvalue.${R[V]} * pwfscale${V} + pwfshift${V}, height${V})).r;`]);switch(_){case 1:L=L.concat(["gl_FragData[0] = vec4(tcolor0.rgb, opacity);"]);break;case 2:L=L.concat(["float weightSum = compWeight0 + compWeight1;","gl_FragData[0] = vec4(vec3((tcolor0.rgb * (compWeight0 / weightSum)) + (tcolor1.rgb * (compWeight1 / weightSum))), opacity);"]);break;case 3:L=L.concat(["float weightSum = compWeight0 + compWeight1 + compWeight2;","gl_FragData[0] = vec4(vec3((tcolor0.rgb * (compWeight0 / weightSum)) + (tcolor1.rgb * (compWeight1 / weightSum)) + (tcolor2.rgb * (compWeight2 / weightSum))), opacity);"]);break;case 4:L=L.concat(["float weightSum = compWeight0 + compWeight1 + compWeight2 + compWeight3;","gl_FragData[0] = vec4(vec3((tcolor0.rgb * (compWeight0 / weightSum)) + (tcolor1.rgb * (compWeight1 / weightSum)) + (tcolor2.rgb * (compWeight2 / weightSum)) + (tcolor3.rgb * (compWeight3 / weightSum))), opacity);"]);break;default:r6("Unsupported number of independent coordinates.")}v=zn.substitute(v,"//VTK::TCoord::Impl",L).result}else switch(_){case 1:v=zn.substitute(v,"//VTK::TCoord::Impl",[...rae(` + #ifdef vtkImageLabelOutlineOn + vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord); + float centerValue = texture2D(texture1, getSliceCoords(centerPosIS, sliceAxis)).r; + bool pixelOnBorder = false; + vec3 tColor = texture2D(colorTexture1, vec2(centerValue * cscale0 + cshift0, 0.5)).rgb; + float scalarOpacity = texture2D(pwfTexture1, vec2(centerValue * pwfscale0 + pwfshift0, 0.5)).r; + float opacityToUse = scalarOpacity * opacity; + int segmentIndex = int(centerValue * 255.0); + float textureCoordinate = float(segmentIndex - 1) / 1024.0; + float textureValue = texture2D(labelOutlineTexture1, vec2(textureCoordinate, 0.5)).r; + int actualThickness = int(textureValue * 255.0); + + if (segmentIndex == 0){ + gl_FragData[0] = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + + for (int i = -actualThickness; i <= actualThickness; i++) { + for (int j = -actualThickness; j <= actualThickness; j++) { + if (i == 0 || j == 0) { + continue; + } + vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), + gl_FragCoord.y + float(j), + gl_FragCoord.z, gl_FragCoord.w); + vec3 neighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); + float value = texture2D(texture1, getSliceCoords(neighborPosIS, sliceAxis)).r; + if (value != centerValue) { + pixelOnBorder = true; + break; + } + } + if (pixelOnBorder == true) { + break; + } + } + if (pixelOnBorder == true) { + gl_FragData[0] = vec4(tColor, outlineOpacity); + } + else { + gl_FragData[0] = vec4(tColor, opacityToUse); + } + #else + float intensity = texture2D(texture1, tcoordVCVSOutput).r; + vec3 tcolor = texture2D(colorTexture1, vec2(intensity * cscale0 + cshift0, 0.5)).rgb; + float scalarOpacity = texture2D(pwfTexture1, vec2(intensity * pwfscale0 + pwfshift0, 0.5)).r; + gl_FragData[0] = vec4(tcolor, scalarOpacity * opacity); + #endif + `)]).result;break;case 2:v=zn.substitute(v,"//VTK::TCoord::Impl",["vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);","float intensity = tcolor.r*cscale0 + cshift0;","gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(intensity, 0.5)).rgb, pwfscale0*tcolor.g + pwfshift0);"]).result;break;case 3:v=zn.substitute(v,"//VTK::TCoord::Impl",["vec4 tcolor = cscale0*texture2D(texture1, tcoordVCVSOutput.st) + cshift0;","gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(tcolor.r,0.5)).r,"," texture2D(colorTexture1, vec2(tcolor.g,0.5)).r,"," texture2D(colorTexture1, vec2(tcolor.b,0.5)).r, opacity);"]).result;break;default:v=zn.substitute(v,"//VTK::TCoord::Impl",["vec4 tcolor = cscale0*texture2D(texture1, tcoordVCVSOutput.st) + cshift0;","gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(tcolor.r,0.5)).r,"," texture2D(colorTexture1, vec2(tcolor.g,0.5)).r,"," texture2D(colorTexture1, vec2(tcolor.b,0.5)).r, tcolor.a);"]).result}e.haveSeenDepthRequest&&(v=zn.substitute(v,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,v=zn.substitute(v,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result),i.Vertex=g,i.Fragment=v,n.replaceShaderClip(i,l,c),n.replaceShaderCoincidentOffset(i,l,c)},n.replaceShaderClip=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let _=e.renderable.getNumberOfClippingPlanes();_>6&&(X0("OpenGL has a limit of 6 clipping planes"),_=6),g=zn.substitute(g,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,g=zn.substitute(g,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,v=zn.substitute(v,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,v=zn.substitute(v,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}i.Vertex=g,i.Fragment=v},n.getNeedToRebuildShaders=(i,l,c)=>{var T;const g=e.openGLTexture.getComponents(),v=c.getProperty().getIndependentComponents();let _=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(_=!0),_||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((T=i.getProgram())==null?void 0:T.getHandle())===0||e.lastTextureComponents!==g||e.lastIndependentComponents!==v?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=g,e.lastIndependentComponents=v,!0):!1},n.updateShaders=(i,l,c)=>{if(e.lastBoundBO=i,n.getNeedToRebuildShaders(i,l,c)){const g={Vertex:null,Fragment:null,Geometry:null};n.buildShaders(g,l,c);const v=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(g.Vertex,g.Fragment,g.Geometry);v!==i.getProgram()&&(i.setProgram(v),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),n.setMapperShaderParameters(i,l,c),n.setCameraShaderParameters(i,l,c),n.setPropertyShaderParameters(i,l,c)},n.setMapperShaderParameters=(i,l,c)=>{i.getCABO().getElementCount()&&(e.VBOBuildTime>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&(i.getProgram().isAttributeUsed("vertexMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"vertexMC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||r6("Error setting vertexMC in shader VAO.")),i.getProgram().isAttributeUsed("tcoordMC")&&i.getCABO().getTCoordOffset()&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"tcoordMC",i.getCABO().getTCoordOffset(),i.getCABO().getStride(),e.context.FLOAT,i.getCABO().getTCoordComponents(),e.context.FALSE)||r6("Error setting tcoordMC in shader VAO.")),i.getAttributeUpdateTime().modified());const g=e.openGLTexture.getTextureUnit();i.getProgram().setUniformi("texture1",g);const v=e.openGLTexture.getComponents(),_=c.getProperty().getIndependentComponents();if(_)for(let V=0;V6&&(X0("OpenGL has a limit of 6 clipping planes"),V=6);const j=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null,z=j?Ea(e.imagematinv,c.getMatrix()):c.getMatrix();j&&(po(z,z),Y0(z,z,j),po(z,z)),po(e.imagemat,e.currentInput.getIndexToWorld()),Y0(e.imagematinv,z,e.imagemat);const $=[];for(let K=0;K{const g=i.getProgram(),v=e.openGLImageSlice.getKeyMatrices(),_=e.currentInput,T=_.getIndexToWorld();Y0(e.imagemat,v.mcwc,T);const P=e.openGLCamera.getKeyMatrices(l);if(Y0(e.imagemat,P.wcpc,e.imagemat),i.getCABO().getCoordShiftAndScaleEnabled()){const R=i.getCABO().getInverseShiftAndScaleMatrix();Y0(e.imagemat,e.imagemat,R)}if(g.setUniformMatrix("MCPCMatrix",e.imagemat),c.getProperty().getUseLabelOutline()===!0){const R=_.getWorldToIndex(),L=_.getDimensions();let V=e.renderable.getClosestIJKAxis().ijkMode;V===Hl.NONE&&(V=Hl.K),g.setUniform3i("imageDimensions",L[0],L[1],L[2]),g.setUniformi("sliceAxis",V),g.setUniformMatrix("vWCtoIDX",R);const U=e.openGLCamera.getKeyMatrices(l);Ia(e.projectionToWorld,U.wcpc),e.openGLCamera.getKeyMatrices(l),g.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const j=n.getRenderTargetSize();g.setUniformf("vpWidth",j[0]),g.setUniformf("vpHeight",j[1]);const z=n.getRenderTargetOffset();g.setUniformf("vpOffsetX",z[0]/j[0]),g.setUniformf("vpOffsetY",z[1]/j[1])}},n.setPropertyShaderParameters=(i,l,c)=>{const g=i.getProgram(),_=c.getProperty().getOpacity();g.setUniformf("opacity",_)},n.renderPieceStart=(i,l)=>{n.updateBufferObjects(i,l),e.lastBoundBO=null},n.renderPieceDraw=(i,l)=>{const c=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(n.updateShaders(e.tris,i,l),c.drawArrays(c.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.pwfTexture.deactivate()},n.renderPieceFinish=(i,l)=>{},n.renderPiece=(i,l)=>{if(n.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getCurrentImage(),n.invokeEvent({type:"EndEvent"}),!e.currentInput){r6("No input!");return}n.renderPieceStart(i,l),n.renderPieceDraw(i,l),n.renderPieceFinish(i,l)},n.computeBounds=(i,l)=>{if(!n.getInput()){W8(e.bounds);return}e.bounds=n.getInput().getBounds()},n.updateBufferObjects=(i,l)=>{n.getNeedToRebuildBufferObjects(i,l)&&n.buildBufferObjects(i,l)},n.getNeedToRebuildBufferObjects=(i,l)=>{var c,g,v,_;return e.VBOBuildTime.getMTime(){var Te,Ve,Pe,je;const c=e.currentInput;if(!c)return;const g=c.getPointData()&&c.getPointData().getScalars();if(!g)return;const v=g.getDataType(),_=g.getNumberOfComponents(),T=l.getProperty(),P=T.getInterpolationType(),I=T.getIndependentComponents(),R=I?_:1,L=I?2*R:1,V=T.getRGBTransferFunction(),U=df(V,I,R),j=e._openGLRenderWindow.getGraphicsResourceForObject(V);if(!((Te=j==null?void 0:j.oglObject)!=null&&Te.getHandle())||(j==null?void 0:j.hash)!==U){e.colorTexture=Cs.newInstance({resizable:!0}),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const Je=1024,it=Je*L*3,Ge=new Uint8ClampedArray(it);if(P===Dg.NEAREST?(e.colorTexture.setMinificationFilter(qi.NEAREST),e.colorTexture.setMagnificationFilter(qi.NEAREST)):(e.colorTexture.setMinificationFilter(qi.LINEAR),e.colorTexture.setMagnificationFilter(qi.LINEAR)),V){const Ke=new Float32Array(Je*3);for(let qe=0;qe1?1:0;const qe=[Hl.X,Hl.Y,Hl.Z].includes(e.renderable.getSlicingMode())?le:ce,ut=c.getSpatialExtent(),wt=g.getData();let Et=null;if(ne===Hl.I){Et=new wt.constructor(Je[2]*Je[1]*_);let xn=0;for(let et=0;et{var _;const l=i.getProperty().getLabelOutlineThicknessByReference(),c=e._openGLRenderWindow.getGraphicsResourceForObject(l),g=`${l.join("-")}`;if(!((_=c==null?void 0:c.oglObject)!=null&&_.getHandle())||(c==null?void 0:c.hash)!==g){const R=new Uint8Array(1024);for(let L=0;L<1024;++L){const V=typeof l[L]<"u"?l[L]:l[0];R[L]=V}e.labelOutlineThicknessTexture=Cs.newInstance({resizable:!1}),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.labelOutlineThicknessTexture.resetFormatAndType(),e.labelOutlineThicknessTexture.setMinificationFilter(qi.NEAREST),e.labelOutlineThicknessTexture.setMagnificationFilter(qi.NEAREST),e.labelOutlineThicknessTexture.create2DFromRaw(1024,1,1,b0.UNSIGNED_CHAR,R),l&&(e._openGLRenderWindow.setGraphicsResourceForObject(l,e.labelOutlineThicknessTexture,g),l!==e._labelOutlineThicknessArray&&(e._openGLRenderWindow.registerGraphicsResourceUser(l,n),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._labelOutlineThicknessArray,n)),e._labelOutlineThicknessArray=l)}else e.labelOutlineThicknessTexture=c.oglObject},n.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:i,vsize:l}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,l]},n.getRenderTargetOffset=()=>{const{lowerLeftU:i,lowerLeftV:l}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,l]},n.delete=Nv(()=>{e._openGLRenderWindow&&o(e._openGLRenderWindow)},n.delete)}const oae={VBOBuildTime:0,VBOBuildString:null,openGLTexture:null,tris:null,imagemat:null,imagematinv:null,colorTexture:null,pwfTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0};function sae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oae,o),Ha.extend(n,e,o),qd.implementReplaceShaderCoincidentOffset(n,e,o),qd.implementBuildShadersWithReplacements(n,e,o),e.tris=a4.newInstance(),e.imagemat=zi(new Float64Array(16)),e.imagematinv=zi(new Float64Array(16)),e.projectionToWorld=zi(new Float64Array(16)),e.idxToView=zi(new Float64Array(16)),e.idxNormalMatrix=pc(new Float64Array(9)),e.modelToView=zi(new Float64Array(16)),e.projectionToView=zi(new Float64Array(16)),s2(n,e,[]),e.VBOBuildTime={},_s(e.VBOBuildTime),iae(n,e)}const DW=as(sae,"vtkOpenGLImageMapper");var aae={newInstance:DW};R2("vtkAbstractImageMapper",DW);const eg={MAX:0,MIN:1,AVERAGE:2},{vtkErrorMacro:Ny}=At;function lae(n,e){e.classHierarchy.push("vtkOpenGLImageCPRMapper");function o(i){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(l=>i.unregisterGraphicsResourceUser(l,n))}n.buildPass=i=>{if(i){e.currentRenderPass=null,e.openGLImageSlice=n.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer");const l=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),l&&!l.isDeleted()&&l!==e._openGLRenderWindow&&o(l),e.context=e._openGLRenderWindow.getContext(),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},n.opaquePass=(i,l)=>{i&&(e.currentRenderPass=l,n.render())},n.opaqueZBufferPass=i=>{i&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,n.render(),e.renderDepth=!1)},n.getCoincidentParameters=(i,l)=>e.renderable.getResolveCoincidentTopology()===yc.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,n.render=()=>{const i=e.openGLImageSlice.getRenderable(),l=e._openGLRenderer.getRenderable();n.renderPiece(l,i)},n.renderPiece=(i,l)=>{n.invokeEvent({type:"StartEvent"}),e.renderable.update(),n.invokeEvent({type:"EndEvent"}),e.renderable.preRenderCheck()&&(e.currentImageDataInput=e.renderable.getInputData(0),e.currentCenterlineInput=e.renderable.getOrientedCenterline(),n.renderPieceStart(i,l),n.renderPieceDraw(i,l),n.renderPieceFinish(i,l))},n.renderPieceStart=(i,l)=>{n.updateBufferObjects(i,l)},n.renderPieceDraw=(i,l)=>{const c=e.context;e.volumeTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(n.updateShaders(e.tris,i,l),c.drawArrays(c.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.volumeTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},n.renderPieceFinish=(i,l)=>{},n.updateBufferObjects=(i,l)=>{n.getNeedToRebuildBufferObjects(i,l)&&n.buildBufferObjects(i,l),l.getProperty().getInterpolationType()===Dg.NEAREST?(e.volumeTexture.setMinificationFilter(qi.NEAREST),e.volumeTexture.setMagnificationFilter(qi.NEAREST),e.colorTexture.setMinificationFilter(qi.NEAREST),e.colorTexture.setMagnificationFilter(qi.NEAREST),e.pwfTexture.setMinificationFilter(qi.NEAREST),e.pwfTexture.setMagnificationFilter(qi.NEAREST)):(e.volumeTexture.setMinificationFilter(qi.LINEAR),e.volumeTexture.setMagnificationFilter(qi.LINEAR),e.colorTexture.setMinificationFilter(qi.LINEAR),e.colorTexture.setMagnificationFilter(qi.LINEAR),e.pwfTexture.setMinificationFilter(qi.LINEAR),e.pwfTexture.setMagnificationFilter(qi.LINEAR))},n.getNeedToRebuildBufferObjects=(i,l)=>{var g;const c=e.VBOBuildTime.getMTime();return c{var pe,we,Te,Ve;const c=e.currentImageDataInput,g=e.currentCenterlineInput,v=(pe=c==null?void 0:c.getPointData())==null?void 0:pe.getScalars();if(!v)return;const _=e._openGLRenderWindow.getGraphicsResourceForObject(v),T=OO(c,v),P=!((we=_==null?void 0:_.oglObject)!=null&&we.getHandle())||(_==null?void 0:_.hash)!==T,I=e.renderable.getUpdatedExtents(),R=!!I.length;if(P){e.volumeTexture=Cs.newInstance(),e.volumeTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const Pe=c.getDimensions();e.volumeTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.volumeTexture.resetFormatAndType(),e.volumeTexture.create3DFilterableFromDataArray(Pe[0],Pe[1],Pe[2],v,e.renderable.getPreferSizeOverAccuracy()),e._openGLRenderWindow.setGraphicsResourceForObject(v,e.volumeTexture,T),v!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(v,n),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,n)),e._scalars=v}else e.volumeTexture=_.oglObject;if(R){e.renderable.setUpdatedExtents([]);const Pe=c.getDimensions();e.volumeTexture.create3DFilterableFromDataArray(Pe[0],Pe[1],Pe[2],v,!1,I)}const L=v.getNumberOfComponents(),V=l.getProperty(),U=V.getIndependentComponents(),j=U?L:1,z=U?2*j:1,$=V.getRGBTransferFunction(),K=df($,U,j),X=e._openGLRenderWindow.getGraphicsResourceForObject($);if(!((Te=X==null?void 0:X.oglObject)!=null&&Te.getHandle())||(X==null?void 0:X.hash)!==K){const je=1024*z*3,Je=new Uint8ClampedArray(je);if(e.colorTexture=Cs.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),$){const it=new Float32Array(3072);for(let Ge=0;Ge{const g=e.volumeTexture.getComponents(),v=c.getProperty().getIndependentComponents(),_=!!e.renderable.getCenterPoint(),T=e.renderable.getUseUniformOrientation(),P=e.renderable.isProjectionEnabled()&&e.renderable.getProjectionMode();return i.getProgram()===0||e.lastUseCenterPoint!==_||e.lastUseUniformOrientation!==T||e.lastProjectionMode!==P||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||e.lastTextureComponents!==g||e.lastIndependentComponents!==v?(e.lastUseCenterPoint=_,e.lastUseUniformOrientation=T,e.lastProjectionMode=P,e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=g,e.lastIndependentComponents=v,!0):!1},n.buildShaders=(i,l,c)=>{n.getShaderTemplate(i,l,c),n.replaceShaderValues(i,l,c)},n.replaceShaderValues=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;const _=["vec3 applyQuaternionToVec(vec4 q, vec3 v) {"," float uvx = q.y * v.z - q.z * v.y;"," float uvy = q.z * v.x - q.x * v.z;"," float uvz = q.x * v.y - q.y * v.x;"," float uuvx = q.y * uvz - q.z * uvy;"," float uuvy = q.z * uvx - q.x * uvz;"," float uuvz = q.x * uvy - q.y * uvx;"," float w2 = q.w * 2.0;"," uvx *= w2;"," uvy *= w2;"," uvz *= w2;"," uuvx *= 2.0;"," uuvy *= 2.0;"," uuvz *= 2.0;"," return vec3(v.x + uvx + uuvx, v.y + uvy + uuvy, v.z + uvz + uuvz);","}"];g=zn.substitute(g,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,g=zn.substitute(g,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result;const T=["attribute vec3 centerlinePosition;","attribute float quadIndex;","uniform float width;","out vec2 quadOffsetVSOutput;","out vec3 centerlinePosVSOutput;"],P=e.renderable.isProjectionEnabled(),I=e.renderable.getUseUniformOrientation();I?(T.push("out vec3 samplingDirVSOutput;","uniform vec4 centerlineOrientation;","uniform vec3 tangentDirection;",..._),P&&T.push("out vec3 projectionDirVSOutput;","uniform vec3 bitangentDirection;")):T.push("out vec4 centerlineTopOrientationVSOutput;","out vec4 centerlineBotOrientationVSOutput;","attribute vec4 centerlineTopOrientation;","attribute vec4 centerlineBotOrientation;"),g=zn.substitute(g,"//VTK::Color::Dec",T).result;const R=["quadOffsetVSOutput = vec2(width * (mod(quadIndex, 2.0) == 0.0 ? -0.5 : 0.5), quadIndex > 1.0 ? 0.0 : 1.0);","centerlinePosVSOutput = centerlinePosition;"];I?(R.push("samplingDirVSOutput = applyQuaternionToVec(centerlineOrientation, tangentDirection);"),P&&R.push("projectionDirVSOutput = applyQuaternionToVec(centerlineOrientation, bitangentDirection);")):R.push("centerlineTopOrientationVSOutput = centerlineTopOrientation;","centerlineBotOrientationVSOutput = centerlineBotOrientation;"),g=zn.substitute(g,"//VTK::Color::Impl",R).result;const L=e.volumeTexture.getComponents(),V=c.getProperty().getIndependentComponents();let U=["uniform mat4 MCTCMatrix; // Model coordinates to texture coordinates","in vec2 quadOffsetVSOutput;","in vec3 centerlinePosVSOutput;","uniform highp sampler3D volumeTexture;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;"];P&&U.push("uniform vec3 volumeSizeMC;","uniform int projectionSlabNumberOfSamples;","uniform float projectionConstantOffset;","uniform float projectionStepLength;"),I?(U.push("in vec3 samplingDirVSOutput;"),P&&U.push("in vec3 projectionDirVSOutput;")):(U.push("uniform vec3 tangentDirection;","in vec4 centerlineTopOrientationVSOutput;","in vec4 centerlineBotOrientationVSOutput;",..._),P&&U.push("uniform vec3 bitangentDirection;"));const j=e.renderable.getCenterPoint();if(j&&U.push("uniform vec3 globalCenterPoint;"),V){for(let $=1;$ 0.999 || qCosAngle < -0.999) {"," // Use LERP instead of SLERP when the two quaternions are close or opposite"," interpolatedOrientation = normalize(mix(q0, q1, quadOffsetVSOutput.y));","} else {"," float omega = acos(qCosAngle);"," interpolatedOrientation = normalize(sin((1.0 - quadOffsetVSOutput.y) * omega) * q0 + sin(quadOffsetVSOutput.y * omega) * q1);","}","vec3 samplingDirection = applyQuaternionToVec(interpolatedOrientation, tangentDirection);"),P&&z.push("vec3 projectionDirection = applyQuaternionToVec(interpolatedOrientation, bitangentDirection);")),j?z.push("float baseOffset = dot(samplingDirection, globalCenterPoint - centerlinePosVSOutput);","float horizontalOffset = quadOffsetVSOutput.x + baseOffset;"):z.push("float horizontalOffset = quadOffsetVSOutput.x;"),z.push("vec3 volumePosMC = centerlinePosVSOutput + horizontalOffset * samplingDirection;","vec3 volumePosTC = (MCTCMatrix * vec4(volumePosMC, 1.0)).xyz;","if (any(lessThan(volumePosTC, vec3(0.0))) || any(greaterThan(volumePosTC, vec3(1.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}"),P){const $=e.renderable.getProjectionMode();switch($){case eg.MIN:z.push("const vec4 initialProjectionTextureValue = vec4(1.0);");break;case eg.MAX:case eg.AVERAGE:default:z.push("const vec4 initialProjectionTextureValue = vec4(0.0);");break}switch(z.push("vec3 projectionScaledDirection = projectionDirection / volumeSizeMC;","vec3 projectionStep = projectionStepLength * projectionScaledDirection;","vec3 projectionStartPosition = volumePosTC + projectionConstantOffset * projectionScaledDirection;","vec4 tvalue = initialProjectionTextureValue;","for (int projectionSampleIdx = 0; projectionSampleIdx < projectionSlabNumberOfSamples; ++projectionSampleIdx) {"," vec3 projectionSamplePosition = projectionStartPosition + float(projectionSampleIdx) * projectionStep;"," vec4 sampledTextureValue = texture(volumeTexture, projectionSamplePosition);"),$){case eg.MAX:z.push(" tvalue = max(tvalue, sampledTextureValue);");break;case eg.MIN:z.push(" tvalue = min(tvalue, sampledTextureValue);");break;case eg.AVERAGE:default:z.push(" tvalue = tvalue + sampledTextureValue;");break}z.push("}"),$===eg.AVERAGE&&z.push("tvalue = tvalue / float(projectionSlabNumberOfSamples);")}else z.push("vec4 tvalue = texture(volumeTexture, volumePosTC);");if(V){const $=["r","g","b","a"];for(let K=0;K{let g=i.Vertex,v=i.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let _=e.renderable.getNumberOfClippingPlanes();_>6&&(At.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),_=6),g=zn.substitute(g,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,g=zn.substitute(g,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,v=zn.substitute(v,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,v=zn.substitute(v,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}i.Vertex=g,i.Fragment=v},n.getShaderTemplate=(i,l,c)=>{i.Vertex=IO,i.Fragment=jv,i.Geometry=""},n.setMapperShaderParameters=(i,l,c)=>{const g=i.getProgram(),v=i.getCABO();v.getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&(g.isAttributeUsed("vertexMC")&&(i.getVAO().addAttributeArray(g,v,"vertexMC",v.getVertexOffset(),v.getStride(),e.context.FLOAT,3,e.context.FALSE)||Ny("Error setting vertexMC in shader VAO.")),i.getCABO().getCustomData().forEach(L=>{L&&g.isAttributeUsed(L.name)&&!i.getVAO().addAttributeArray(g,v,L.name,L.offset,v.getStride(),e.context.FLOAT,L.components,e.context.FALSE)&&Ny(`Error setting ${L.name} in shader VAO.`)}),i.getAttributeUpdateTime().modified());const _=e.volumeTexture.getTextureUnit();if(g.setUniformi("volumeTexture",_),g.setUniformf("width",e.renderable.getWidth()),i.getProgram().setUniform4fv("backgroundColor",e.renderable.getBackgroundColor()),g.isUniformUsed("tangentDirection")){const L=e.renderable.getTangentDirection();i.getProgram().setUniform3fArray("tangentDirection",L)}if(g.isUniformUsed("bitangentDirection")){const L=e.renderable.getBitangentDirection();i.getProgram().setUniform3fArray("bitangentDirection",L)}if(g.isUniformUsed("centerlineOrientation")){const L=e.renderable.getUniformOrientation();i.getProgram().setUniform4fv("centerlineOrientation",L)}if(g.isUniformUsed("globalCenterPoint")){const L=e.renderable.getCenterPoint();g.setUniform3fArray("globalCenterPoint",L)}if(e.renderable.isProjectionEnabled()){const L=e.currentImageDataInput,V=L.getSpacing(),U=L.getDimensions(),j=e.renderable.getProjectionSlabThickness(),z=e.renderable.getProjectionSlabNumberOfSamples(),$=gie([],V,U);g.setUniform3fArray("volumeSizeMC",$),g.setUniformi("projectionSlabNumberOfSamples",z);const K=-.5*j;g.setUniformf("projectionConstantOffset",K);const X=j/(z-1);g.setUniformf("projectionStepLength",X)}const T=e.currentImageDataInput,P=T.getWorldToIndex(),I=oO(new Float32Array(16),oG([],T.getDimensions())),R=Bw(I,I,P);if(g.setUniformMatrix("MCTCMatrix",R),e.haveSeenDepthRequest&&i.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),e.renderable.getNumberOfClippingPlanes()){let L=e.renderable.getNumberOfClippingPlanes();L>6&&(At.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),L=6);const U=v.getCoordShiftAndScaleEnabled()?v.getInverseShiftAndScaleMatrix():null,j=U?Ea(e.imagematinv,c.getMatrix()):c.getMatrix();U&&(po(j,j),Y0(j,j,U),po(j,j)),po(e.imagemat,e.currentImageDataInput.getIndexToWorld()),Y0(e.imagematinv,j,e.imagemat);const z=[];for(let $=0;${const g=e.openGLImageSlice.getKeyMatrices().mcwc,v=e.openGLCamera.getKeyMatrices(l).wcpc;if(Y0(e.imagemat,v,g),i.getCABO().getCoordShiftAndScaleEnabled()){const _=i.getCABO().getInverseShiftAndScaleMatrix();Y0(e.imagemat,e.imagemat,_)}i.getProgram().setUniformMatrix("MCPCMatrix",e.imagemat)},n.setPropertyShaderParameters=(i,l,c)=>{const g=i.getProgram(),v=c.getProperty(),_=v.getOpacity();g.setUniformf("opacity",_);const T=e.volumeTexture.getComponents(),P=v.getIndependentComponents();if(P)for(let V=0;V{if(n.getNeedToRebuildShaders(i,l,c)){const g={Vertex:null,Fragment:null,Geometry:null};n.buildShaders(g,l,c);const v=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(g.Vertex,g.Fragment,g.Geometry);v!==i.getProgram()&&(i.setProgram(v),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),n.setMapperShaderParameters(i,l,c),n.setCameraShaderParameters(i,l,c),n.setPropertyShaderParameters(i,l,c)},n.delete=At.chain(()=>{e._openGLRenderWindow&&o(e._openGLRenderWindow)},n.delete)}const uae={currentRenderPass:null,volumeTexture:null,colorTexture:null,pwfTexture:null,tris:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0,lastIndependentComponents:0,imagemat:null,imagematinv:null};function cae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,uae,o),Ha.extend(n,e,o),qd.implementReplaceShaderCoincidentOffset(n,e,o),At.algo(n,e,2,0),e.tris=a4.newInstance(),e.volumeTexture=null,e.colorTexture=null,e.pwfTexture=null,e.imagemat=zi(new Float64Array(16)),e.imagematinv=zi(new Float64Array(16)),e.VBOBuildTime={},At.obj(e.VBOBuildTime,{mtime:0}),lae(n,e)}const IW=At.newInstance(cae,"vtkOpenGLImageCPRMapper"),fae={};var hae={newInstance:IW,...fae};R2("vtkImageCPRMapper",IW);function dae(n,e){e.classHierarchy.push("vtkOpenGLImageSlice"),n.buildPass=o=>{if(!(!e.renderable||!e.renderable.getVisibility())&&o){if(!e.renderable)return;e._openGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),n.prepareNodes(),n.addMissingNode(e.renderable.getMapper()),n.removeUnusedNodes()}},n.traverseZBufferPass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children.forEach(i=>{i.traverse(o)}),n.apply(o,!1))},n.traverseOpaqueZBufferPass=o=>n.traverseOpaquePass(o),n.traverseOpaquePass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children.forEach(i=>{i.traverse(o)}),n.apply(o,!1))},n.traverseTranslucentPass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children.forEach(i=>{i.traverse(o)}),n.apply(o,!1))},n.queryPass=(o,i)=>{if(o){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?i.incrementOpaqueActorCount():i.incrementTranslucentActorCount()}},n.zBufferPass=(o,i)=>n.opaquePass(o,i),n.opaqueZBufferPass=(o,i)=>n.opaquePass(o,i),n.opaquePass=(o,i)=>{o&&e.context.depthMask(!0)},n.translucentPass=(o,i)=>{e.context.depthMask(!o)},n.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(Ea(e.keyMatrices.mcwc,e.renderable.getMatrix()),po(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.keyMatrixTime.modified()),e.keyMatrices)}const gae={context:null,keyMatrixTime:null,keyMatrices:null};function pae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gae,o),Ha.extend(n,e,o),e.keyMatrixTime={},_s(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:zi(new Float64Array(16))},s2(n,e,["context"]),dae(n,e)}const OW=as(pae,"vtkOpenGLImageSlice");var mae={newInstance:OW};R2("vtkImageSlice",OW);const{vtkDebugMacro:vae}=m1;function kae(n,e){e.classHierarchy.push("vtkOpenGLPixelSpaceCallbackMapper"),n.opaquePass=(o,i)=>{e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow");const l=e._openGLRenderer.getAspectRatio(),c=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,g=e._openGLRenderer.getTiledSizeAndOrigin();let v=null;if(e.renderable.getUseZValues()){const _=i.getZBufferTexture(),T=Math.floor(_.getWidth()),P=Math.floor(_.getHeight()),I=e._openGLRenderWindow.getContext();_.bind();const R=i.getFramebuffer();R?R.saveCurrentBindingsAndBuffers():vae("No framebuffer to save/restore");const L=I.createFramebuffer();I.bindFramebuffer(I.FRAMEBUFFER,L),I.framebufferTexture2D(I.FRAMEBUFFER,I.COLOR_ATTACHMENT0,I.TEXTURE_2D,_.getHandle(),0),I.checkFramebufferStatus(I.FRAMEBUFFER)===I.FRAMEBUFFER_COMPLETE&&(v=new Uint8Array(T*P*4),I.viewport(0,0,T,P),I.readPixels(0,0,T,P,I.RGBA,I.UNSIGNED_BYTE,v)),R&&R.restorePreviousBindingsAndBuffers(),I.deleteFramebuffer(L)}e.renderable.invokeCallback(e.renderable.getInputData(),c,l,g,v)},n.queryPass=(o,i)=>{o&&e.renderable.getUseZValues()&&i.requestDepth()}}const yae={};function wae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yae,o),Ha.extend(n,e,o),kae(n,e)}const MW=as(wae,"vtkOpenGLPixelSpaceCallbackMapper");var Cae={newInstance:MW};R2("vtkPixelSpaceCallbackMapper",MW);const{vtkDebugMacro:_ae}=m1;function xae(n,e){e.classHierarchy.push("vtkOpenGLRenderer"),n.buildPass=o=>{if(o){if(!e.renderable)return;n.updateLights(),n.prepareNodes(),n.addMissingNode(e.renderable.getActiveCamera()),n.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),n.removeUnusedNodes()}},n.updateLights=()=>{let o=0;const i=e.renderable.getLightsByReference();for(let l=0;l0&&o++;return o||(_ae("No lights are on, creating one."),e.renderable.createLight()),o},n.zBufferPass=o=>{if(o){let i=0;const l=e.context;e.renderable.getTransparent()||(e.context.clearColor(1,0,0,1),i|=l.COLOR_BUFFER_BIT),e.renderable.getPreserveDepthBuffer()||(l.clearDepth(1),i|=l.DEPTH_BUFFER_BIT,e.context.depthMask(!0));const c=n.getTiledSizeAndOrigin();l.enable(l.SCISSOR_TEST),l.scissor(c.lowerLeftU,c.lowerLeftV,c.usize,c.vsize),l.viewport(c.lowerLeftU,c.lowerLeftV,c.usize,c.vsize),l.colorMask(!0,!0,!0,!0),i&&l.clear(i),l.enable(l.DEPTH_TEST)}},n.opaqueZBufferPass=o=>n.zBufferPass(o),n.cameraPass=o=>{o&&n.clear()},n.getAspectRatio=()=>{const o=e._parent.getSizeByReference(),i=e.renderable.getViewportByReference();return o[0]*(i[2]-i[0])/((i[3]-i[1])*o[1])},n.getTiledSizeAndOrigin=()=>{const o=e.renderable.getViewportByReference(),i=[0,0,1,1],l=o[0]-i[0],c=o[1]-i[1],g=e._parent.normalizedDisplayToDisplay(l,c),v=Math.round(g[0]),_=Math.round(g[1]),T=o[2]-i[0],P=o[3]-i[1],I=e._parent.normalizedDisplayToDisplay(T,P);let R=Math.round(I[0])-v,L=Math.round(I[1])-_;return R<0&&(R=0),L<0&&(L=0),{usize:R,vsize:L,lowerLeftU:v,lowerLeftV:_}},n.clear=()=>{let o=0;const i=e.context;if(!e.renderable.getTransparent()){const c=e.renderable.getBackgroundByReference();i.clearColor(c[0],c[1],c[2],c[3]),o|=i.COLOR_BUFFER_BIT}e.renderable.getPreserveDepthBuffer()||(i.clearDepth(1),o|=i.DEPTH_BUFFER_BIT,i.depthMask(!0)),i.colorMask(!0,!0,!0,!0);const l=n.getTiledSizeAndOrigin();i.enable(i.SCISSOR_TEST),i.scissor(l.lowerLeftU,l.lowerLeftV,l.usize,l.vsize),i.viewport(l.lowerLeftU,l.lowerLeftV,l.usize,l.vsize),o&&i.clear(o),i.enable(i.DEPTH_TEST)},n.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources(),e.renderable&&e.renderable.getViewProps().forEach(o=>{o.modified()})},n.setOpenGLRenderWindow=o=>{e._openGLRenderWindow!==o&&(n.releaseGraphicsResources(),e._openGLRenderWindow=o,e.context=null,o&&(e.context=e._openGLRenderWindow.getContext()))}}const Sae={context:null,_openGLRenderWindow:null,selector:null};function Tae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sae,o),Ha.extend(n,e,o),el(n,e,["shaderCache"]),s2(n,e,["selector"]),Lv(n,e,["openGLRenderWindow"]),xae(n,e)}const PW=as(Tae,"vtkOpenGLRenderer");var Eae={newInstance:PW};R2("vtkRenderer",PW);const{vtkErrorMacro:uL}=m1;function Dae(n,e){e.classHierarchy.push("vtkOpenGLSkybox"),n.buildPass=o=>{if(o){e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const i=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(i.getActiveCamera())}},n.queryPass=(o,i)=>{if(o){if(!e.renderable||!e.renderable.getVisibility())return;i.incrementOpaqueActorCount()}},n.opaquePass=(o,i)=>{if(o&&!e._openGLRenderer.getSelector()){n.updateBufferObjects(),e.context.depthMask(!0),e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.tris.getProgram()),e.openGLTexture.render(e._openGLRenderWindow);const l=e.openGLTexture.getTextureUnit();e.tris.getProgram().setUniformi("sbtexture",l);const c=e._openGLRenderer.getRenderable(),g=e.openGLCamera.getKeyMatrices(c),v=new Float64Array(16);if(Ia(v,g.wcpc),e.tris.getProgram().setUniformMatrix("IMCPCMatrix",v),e.lastFormat==="box"){const _=c.getActiveCamera().getPosition();e.tris.getProgram().setUniform3f("camPos",_[0],_[1],_[2])}e.tris.getVAO().bind(),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate()}},n.updateBufferObjects=()=>{if(!e.tris.getCABO().getElementCount()){const i=new Float32Array(12);for(let v=0;v<4;v++)i[v*3]=v%2*2-1,i[v*3+1]=v>1?1:-1,i[v*3+2]=1;const l=d0.newInstance({numberOfComponents:3,values:i});l.setName("points");const c=new Uint16Array(8);c[0]=3,c[1]=0,c[2]=1,c[3]=3,c[4]=3,c[5]=0,c[6]=3,c[7]=2;const g=d0.newInstance({numberOfComponents:1,values:c});e.tris.getCABO().createVBO(g,"polys",Au.SURFACE,{points:l,cellOffset:0})}e.renderable.getFormat()!==e.lastFormat&&(e.lastFormat=e.renderable.getFormat(),e.lastFormat==="box"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec + attribute vec3 vertexMC; + uniform mat4 IMCPCMatrix; + varying vec3 TexCoords; + void main () { + gl_Position = vec4(vertexMC.xyz, 1.0); + vec4 wpos = IMCPCMatrix * gl_Position; + TexCoords = wpos.xyz/wpos.w; + }`,`//VTK::System::Dec + //VTK::Output::Dec + varying vec3 TexCoords; + uniform samplerCube sbtexture; + uniform vec3 camPos; + void main () { + // skybox looks from inside out + // which means we have to adjust + // our tcoords. Otherwise text would + // be flipped + vec3 tc = normalize(TexCoords - camPos); + if (abs(tc.z) < max(abs(tc.x),abs(tc.y))) + { + tc = vec3(1.0, 1.0, -1.0) * tc; + } + else + { + tc = vec3(-1.0, 1.0, 1.0) * tc; + } + gl_FragData[0] = textureCube(sbtexture, tc); + }`,"")),e.lastFormat==="background"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec + attribute vec3 vertexMC; + uniform mat4 IMCPCMatrix; + varying vec2 TexCoords; + void main () { + gl_Position = vec4(vertexMC.xyz, 1.0); + vec4 wpos = IMCPCMatrix * gl_Position; + TexCoords = vec2(vertexMC.x, vertexMC.y)*0.5 + 0.5; + }`,`//VTK::System::Dec + //VTK::Output::Dec + varying vec2 TexCoords; + uniform sampler2D sbtexture; + void main () { + gl_FragData[0] = texture2D(sbtexture, TexCoords); + }`,"")),e.tris.getShaderSourceTime().modified(),e.tris.getVAO().bind(),e.tris.getVAO().addAttributeArray(e.tris.getProgram(),e.tris.getCABO(),"vertexMC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||uL("Error setting vertexMC in shader VAO."));const o=e.renderable.getTextures();o.length||uL("vtkSkybox requires a texture map"),e.openGLTexture.getRenderable()!==o[0]&&(e.openGLTexture.releaseGraphicsResources(e._openGLRenderWindow),e.openGLTexture.setRenderable(o[0]))}}const Iae={context:null};function Oae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Iae,o),Ha.extend(n,e,o),e.openGLTexture=Cs.newInstance(),e.tris=a4.newInstance(),e.keyMatrixTime={},_s(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:pc(new Float64Array(9)),mcwc:zi(new Float64Array(16))},s2(n,e,["context"]),el(n,e,["activeTextures"]),Dae(n,e)}const RW=as(Oae);var Mae={newInstance:RW};R2("vtkSkybox",RW);var Pae=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkSphereMapperVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// this shader implements imposters in OpenGL for Spheres + +attribute vec4 vertexMC; +attribute vec2 offsetMC; + +// optional normal declaration +//VTK::Normal::Dec + +//VTK::Picking::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +uniform mat3 normalMatrix; // transform model coordinate directions to view coordinates + +// material property values +//VTK::Color::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +varying vec4 vertexVCVSOutput; +varying float radiusVCVSOutput; +varying vec3 centerVCVSOutput; + +uniform int cameraParallel; +uniform float scaleFactor; + +void main() +{ + //VTK::Picking::Impl + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Clip::Impl + + // compute the projected vertex position + vec2 scaledOffsetMC = scaleFactor * offsetMC; + vertexVCVSOutput = MCVCMatrix * vertexMC; + centerVCVSOutput = vertexVCVSOutput.xyz; + radiusVCVSOutput = length(scaledOffsetMC)*0.5; + + // make the triangle face the camera + if (cameraParallel == 0) + { + vec3 dir = normalize(-vertexVCVSOutput.xyz); + vec3 base2 = normalize(cross(dir,vec3(1.0,0.0,0.0))); + vec3 base1 = cross(base2,dir); + vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + scaledOffsetMC.x*base1 + scaledOffsetMC.y*base2; + } + else + { + // add in the offset + vertexVCVSOutput.xy = vertexVCVSOutput.xy + scaledOffsetMC; + } + + gl_Position = VCPCMatrix * vertexVCVSOutput; +} +`;const{vtkErrorMacro:Rae}=m1;function Aae(n,e){e.classHierarchy.push("vtkOpenGLSphereMapper");const o={...n};n.getShaderTemplate=(i,l,c)=>{i.Vertex=Pae,i.Fragment=jv,i.Geometry=""},n.replaceShaderValues=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;g=zn.substitute(g,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; +`,"uniform mat4 MCVCMatrix;"]).result,v=zn.substitute(v,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,v=zn.substitute(v,"//VTK::PositionVC::Impl",[`vec4 vertexVC = vertexVCVSOutput; +`]).result;const _=[`uniform float invertedDepth; +`,`uniform int cameraParallel; +`,`varying float radiusVCVSOutput; +`,`varying vec3 centerVCVSOutput; +`,`uniform mat4 VCPCMatrix; +`];v=zn.substitute(v,"//VTK::Normal::Dec",_).result;let T="";e.context.getExtension("EXT_frag_depth")&&(T=`gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0; +`),e._openGLRenderWindow.getWebgl2()&&(T=`gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0; +`),v=zn.substitute(v,"//VTK::Depth::Impl",[` vec3 EyePos; +`,` vec3 EyeDir; +`,` if (cameraParallel != 0) { +`,` EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput); +`,` EyeDir = vec3(0.0,0.0,-1.0); } +`,` else { +`,` EyeDir = vertexVC.xyz; +`,` EyePos = vec3(0.0,0.0,0.0); +`,` float lengthED = length(EyeDir); +`,` EyeDir = normalize(EyeDir); +`,` if (lengthED > radiusVCVSOutput*3.0) { +`,` EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; } +`,` } +`,` EyePos = EyePos - centerVCVSOutput; +`,` EyePos = EyePos/radiusVCVSOutput; +`,` float b = 2.0*dot(EyePos,EyeDir); +`,` float c = dot(EyePos,EyePos) - 1.0; +`,` float d = b*b - 4.0*c; +`,` vec3 normalVCVSOutput = vec3(0.0,0.0,1.0); +`,` if (d < 0.0) { discard; } +`,` else { +`,` float t = (-b - invertedDepth*sqrt(d))*0.5; +`,` normalVCVSOutput = invertedDepth*normalize(EyePos + t*EyeDir); +`,` vertexVC.xyz = normalVCVSOutput*radiusVCVSOutput + centerVCVSOutput; +`,` } +`,` vec4 pos = VCPCMatrix * vertexVC; +`,T]).result,v=zn.substitute(v,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(v=zn.substitute(v,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float computedZ = (pos.z / pos.w + 1.0) / 2.0;","float iz = floor(computedZ * 65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result),i.Vertex=g,i.Fragment=v,o.replaceShaderValues(i,l,c)},n.setMapperShaderParameters=(i,l,c)=>{if(i.getCABO().getElementCount()&&(e.VBOBuildTime>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&i.getProgram().isAttributeUsed("offsetMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"offsetMC",12,i.getCABO().getStride(),e.context.FLOAT,2,!1)||Rae("Error setting 'offsetMC' in shader VAO.")),i.getProgram().isUniformUsed("invertedDepth")&&i.getProgram().setUniformf("invertedDepth",e.invert?-1:1),i.getProgram().isUniformUsed("scaleFactor")){const v=e.currentInput.getPointData();e.renderable.getScaleArray()!=null&&v.hasArray(e.renderable.getScaleArray())?i.getProgram().setUniformf("scaleFactor",e.renderable.getScaleFactor()):i.getProgram().setUniformf("scaleFactor",1)}o.setMapperShaderParameters(i,l,c)},n.setCameraShaderParameters=(i,l,c)=>{const g=i.getProgram(),v=l.getActiveCamera(),_=e.openGLCamera.getKeyMatrices(l);if(g.isUniformUsed("VCPCMatrix")&&g.setUniformMatrix("VCPCMatrix",_.vcpc),g.isUniformUsed("MCVCMatrix"))if(c.getIsIdentity())g.setUniformMatrix("MCVCMatrix",_.wcvc);else{const T=e.openGLActor.getKeyMatrices(),P=new Float64Array(16);Y0(P,_.wcvc,T.mcwc),g.setUniformMatrix("MCVCMatrix",P)}g.isUniformUsed("cameraParallel")&&i.getProgram().setUniformi("cameraParallel",v.getParallelProjection())},n.getOpenGLMode=(i,l)=>e.context.TRIANGLES,n.buildBufferObjects=(i,l)=>{const c=e.currentInput;if(c===null)return;e.renderable.mapScalars(c,1);const g=e.renderable.getColorMapColors(),v=e.primitives[e.primTypes.Tris].getCABO(),_=c.getPointData(),T=c.getPoints(),P=T.getNumberOfPoints(),I=T.getData(),R=5;let L=null;e.renderable.getScaleArray()!=null&&_.hasArray(e.renderable.getScaleArray())&&(L=_.getArray(e.renderable.getScaleArray()).getData());let V=null,U=0,j=null;g?(U=g.getNumberOfComponents(),v.setColorOffset(0),v.setColorBOStride(4),V=g.getData(),j=new Uint8Array(3*P*4),v.getColorBO()||v.setColorBO(ah.newInstance()),v.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow)):v.getColorBO()&&v.setColorBO(null),v.setColorComponents(U);const z=new Float32Array(R*P*3);v.setStride(R*4);const $=Math.cos(ia(30));let K=0,X=0,ee=0,ne=0;for(let le=0;le2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Lae,o),kC.extend(n,e,o),Aae(n,e)}const AW=as(Nae,"vtkOpenGLSphereMapper");var bae={newInstance:AW};R2("vtkSphereMapper",AW);var Fae=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkStickMapperVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// this shader implements imposters in OpenGL for Sticks + +attribute vec4 vertexMC; +attribute vec3 orientMC; +attribute vec4 offsetMC; +attribute float radiusMC; + +// optional normal declaration +//VTK::Normal::Dec + +//VTK::Picking::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +uniform mat3 normalMatrix; // transform model coordinate directions to view coordinates + +// material property values +//VTK::Color::Dec + +// clipping plane vars +//VTK::Clip::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +varying vec4 vertexVCVSOutput; +varying float radiusVCVSOutput; +varying float lengthVCVSOutput; +varying vec3 centerVCVSOutput; +varying vec3 orientVCVSOutput; + +uniform int cameraParallel; + +void main() +{ + //VTK::Picking::Impl + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Clip::Impl + + vertexVCVSOutput = MCVCMatrix * vertexMC; + centerVCVSOutput = vertexVCVSOutput.xyz; + radiusVCVSOutput = radiusMC; + lengthVCVSOutput = length(orientMC); + orientVCVSOutput = normalMatrix * normalize(orientMC); + + // make sure it is pointing out of the screen + if (orientVCVSOutput.z < 0.0) + { + orientVCVSOutput = -orientVCVSOutput; + } + + // make the basis + vec3 xbase; + vec3 ybase; + vec3 dir = vec3(0.0,0.0,1.0); + if (cameraParallel == 0) + { + dir = normalize(-vertexVCVSOutput.xyz); + } + if (abs(dot(dir,orientVCVSOutput)) == 1.0) + { + xbase = normalize(cross(vec3(0.0,1.0,0.0),orientVCVSOutput)); + ybase = cross(xbase,orientVCVSOutput); + } + else + { + xbase = normalize(cross(orientVCVSOutput,dir)); + ybase = cross(orientVCVSOutput,xbase); + } + + vec3 offsets = offsetMC.xyz*2.0-1.0; + vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + + radiusVCVSOutput*offsets.x*xbase + + radiusVCVSOutput*offsets.y*ybase + + 0.5*lengthVCVSOutput*offsets.z*orientVCVSOutput; + + gl_Position = VCPCMatrix * vertexVCVSOutput; +} +`;const{vtkErrorMacro:by}=m1;function Vae(n,e){e.classHierarchy.push("vtkOpenGLStickMapper");const o={...n};n.getShaderTemplate=(i,l,c)=>{i.Vertex=Fae,i.Fragment=jv,i.Geometry=""},n.replaceShaderValues=(i,l,c)=>{let g=i.Vertex,v=i.Fragment;g=zn.substitute(g,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; +`,"uniform mat4 MCVCMatrix;"]).result,v=zn.substitute(v,"//VTK::PositionVC::Dec","varying vec4 vertexVCVSOutput;").result,v=zn.substitute(v,"//VTK::PositionVC::Impl",` vec4 vertexVC = vertexVCVSOutput; +`).result;const _=[`uniform int cameraParallel; +`,`varying float radiusVCVSOutput; +`,`varying vec3 orientVCVSOutput; +`,`varying float lengthVCVSOutput; +`,`varying vec3 centerVCVSOutput; +`,`uniform mat4 VCPCMatrix; +`];v=zn.substitute(v,"//VTK::Normal::Dec",_).result;let T="";e.context.getExtension("EXT_frag_depth")&&(T=` gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0; +`),e._openGLRenderWindow.getWebgl2()&&(T=`gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0; +`),v=zn.substitute(v,"//VTK::Depth::Impl",[` vec3 EyePos; +`,` vec3 EyeDir; +`,` if (cameraParallel != 0) { +`,` EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput); +`,` EyeDir = vec3(0.0,0.0,-1.0); } +`,` else { +`,` EyeDir = vertexVC.xyz; +`,` EyePos = vec3(0.0,0.0,0.0); +`,` float lengthED = length(EyeDir); +`,` EyeDir = normalize(EyeDir); +`,` if (lengthED > radiusVCVSOutput*3.0) { +`,` EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; } +`,` } +`,` EyePos = EyePos - centerVCVSOutput; +`,` vec3 base1; +`,` if (abs(orientVCVSOutput.z) < 0.99) { +`,` base1 = normalize(cross(orientVCVSOutput,vec3(0.0,0.0,1.0))); } +`,` else { +`,` base1 = normalize(cross(orientVCVSOutput,vec3(0.0,1.0,0.0))); } +`,` vec3 base2 = cross(orientVCVSOutput,base1); +`,` EyePos = vec3(dot(EyePos,base1),dot(EyePos,base2),dot(EyePos,orientVCVSOutput)); +`,` EyeDir = vec3(dot(EyeDir,base1),dot(EyeDir,base2),dot(EyeDir,orientVCVSOutput)); +`,` EyePos = EyePos/radiusVCVSOutput; +`,` float a = EyeDir.x*EyeDir.x + EyeDir.y*EyeDir.y; +`,` float b = 2.0*(EyePos.x*EyeDir.x + EyePos.y*EyeDir.y); +`,` float c = EyePos.x*EyePos.x + EyePos.y*EyePos.y - 1.0; +`,` float d = b*b - 4.0*a*c; +`,` vec3 normalVCVSOutput = vec3(0.0,0.0,1.0); +`,` if (d < 0.0) { discard; } +`,` else { +`,` float t = (-b - sqrt(d))/(2.0*a); +`,` float tz = EyePos.z + t*EyeDir.z; +`,` vec3 iPoint = EyePos + t*EyeDir; +`,` if (abs(iPoint.z)*radiusVCVSOutput > lengthVCVSOutput*0.5) { +`,` float t2 = (-b + sqrt(d))/(2.0*a); +`,` float tz2 = EyePos.z + t2*EyeDir.z; +`,` if (tz2*radiusVCVSOutput > lengthVCVSOutput*0.5 || tz*radiusVCVSOutput < -0.5*lengthVCVSOutput) { discard; } +`,` else { +`,` normalVCVSOutput = orientVCVSOutput; +`,` float t3 = (lengthVCVSOutput*0.5/radiusVCVSOutput - EyePos.z)/EyeDir.z; +`,` iPoint = EyePos + t3*EyeDir; +`,` vertexVC.xyz = radiusVCVSOutput*(iPoint.x*base1 + iPoint.y*base2 + iPoint.z*orientVCVSOutput) + centerVCVSOutput; +`,` } +`,` } +`,` else { +`,` normalVCVSOutput = iPoint.x*base1 + iPoint.y*base2; +`,` vertexVC.xyz = radiusVCVSOutput*(normalVCVSOutput + iPoint.z*orientVCVSOutput) + centerVCVSOutput; +`,` } +`,` } +`,` vec4 pos = VCPCMatrix * vertexVC; +`,T]).result,v=zn.substitute(v,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(v=zn.substitute(v,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float computedZ = (pos.z / pos.w + 1.0) / 2.0;","float iz = floor(computedZ * 65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result),i.Vertex=g,i.Fragment=v,o.replaceShaderValues(i,l,c)},n.setMapperShaderParameters=(i,l,c)=>{i.getCABO().getElementCount()&&(e.VBOBuildTime>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&(i.getProgram().isAttributeUsed("orientMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"orientMC",12,i.getCABO().getStride(),e.context.FLOAT,3,!1)||by("Error setting 'orientMC' in shader VAO.")),i.getProgram().isAttributeUsed("offsetMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO().getColorBO(),"offsetMC",0,i.getCABO().getColorBOStride(),e.context.UNSIGNED_BYTE,3,!0)||by("Error setting 'offsetMC' in shader VAO.")),i.getProgram().isAttributeUsed("radiusMC")&&(i.getVAO().addAttributeArray(i.getProgram(),i.getCABO(),"radiusMC",24,i.getCABO().getStride(),e.context.FLOAT,1,!1)||by("Error setting 'radiusMC' in shader VAO."))),o.setMapperShaderParameters(i,l,c)},n.setCameraShaderParameters=(i,l,c)=>{const g=i.getProgram(),v=l.getActiveCamera(),_=e.openGLCamera.getKeyMatrices(l);if(g.isUniformUsed("VCPCMatrix")&&g.setUniformMatrix("VCPCMatrix",_.vcpc),c.getIsIdentity())g.isUniformUsed("MCVCMatrix")&&g.setUniformMatrix("MCVCMatrix",_.wcvc),g.isUniformUsed("normalMatrix")&&g.setUniformMatrix3x3("normalMatrix",_.normalMatrix);else{const T=e.openGLActor.getKeyMatrices();if(g.isUniformUsed("MCVCMatrix")){const P=new Float64Array(16);Y0(P,_.wcvc,T.mcwc),g.setUniformMatrix("MCVCMatrix",P)}if(g.isUniformUsed("normalMatrix")){const P=new Float64Array(9);y8(P,_.normalMatrix,T.normalMatrix),g.setUniformMatrix3x3("normalMatrix",P)}}g.isUniformUsed("cameraParallel")&&i.getProgram().setUniformi("cameraParallel",v.getParallelProjection())},n.getOpenGLMode=(i,l)=>e.context.TRIANGLES,n.buildBufferObjects=(i,l)=>{const c=e.currentInput;if(c===null)return;e.renderable.mapScalars(c,1);const g=e.renderable.getColorMapColors(),v=e.primitives[e.primTypes.Tris].getCABO(),_=c.getPointData(),T=c.getPoints(),P=T.getNumberOfPoints(),I=T.getData();let R=3;R+=4;let L=null,V=0;v.setColorBOStride(4),v.getColorBO()||v.setColorBO(ah.newInstance()),v.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow),g&&(V=g.getNumberOfComponents(),v.setColorOffset(4),L=g.getData(),v.setColorBOStride(8)),v.setColorComponents(V),v.setStride(R*4);const U=new Float32Array(R*P*12),j=new Uint8Array(12*P*(L?8:4));let z=null,$=null;e.renderable.getScaleArray()!=null&&_.hasArray(e.renderable.getScaleArray())&&(z=_.getArray(e.renderable.getScaleArray()).getData()),e.renderable.getOrientationArray()!=null&&_.hasArray(e.renderable.getOrientationArray())?$=_.getArray(e.renderable.getOrientationArray()).getData():by([`Error setting orientationArray. +`,"You have to specify the stick orientation"]);const K=[0,1,3,0,3,2,2,3,5,2,5,4];let X=0,ee=0,ne=0,le=0;for(let ce=0;ce=4?255:0,j[le++]=K[we]>=2?255:0,j[le++]=255,ee=ce*V,L&&(j[le++]=L[ee],j[le++]=L[ee+1],j[le++]=L[ee+2],j[le++]=L[ee+3])}v.setElementCount(ne/R),v.upload(U,fh.ARRAY_BUFFER),v.getColorBO().upload(j,fh.ARRAY_BUFFER),e.VBOBuildTime.modified()}}const Uae={};function Bae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Uae,o),kC.extend(n,e,o),Vae(n,e)}const LW=as(Bae,"vtkOpenGLStickMapper");var Gae={newInstance:LW};R2("vtkStickMapper",LW);function Wae(n,e){e.classHierarchy.push("vtkOpenGLVolume"),n.buildPass=o=>{!e.renderable||!e.renderable.getVisibility()||o&&(e._openGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),n.prepareNodes(),n.addMissingNode(e.renderable.getMapper()),n.removeUnusedNodes())},n.queryPass=(o,i)=>{if(o){if(!e.renderable||!e.renderable.getVisibility())return;i.incrementVolumeCount()}},n.traverseVolumePass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children[0].traverse(o),n.apply(o,!1))},n.volumePass=o=>{!e.renderable||!e.renderable.getVisibility()||e.context.depthMask(!o)},n.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),Ea(e.MCWCMatrix,e.renderable.getMatrix()),po(e.MCWCMatrix,e.MCWCMatrix),e.renderable.getIsIdentity()?pc(e.normalMatrix):(fC(e.normalMatrix,e.MCWCMatrix),Uv(e.normalMatrix,e.normalMatrix),eO(e.normalMatrix,e.normalMatrix)),e.keyMatrixTime.modified()),{mcwc:e.MCWCMatrix,normalMatrix:e.normalMatrix})}const $ae={};function jae(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$ae,o),Ha.extend(n,e,o),e.keyMatrixTime={},_s(e.keyMatrixTime,{mtime:0}),e.normalMatrix=new Float64Array(9),e.MCWCMatrix=new Float64Array(16),s2(n,e,["context"]),Wae(n,e)}const NW=as(jae,"vtkOpenGLVolume");var zae={newInstance:NW};R2("vtkVolume",NW);const xE={NEAREST:0,LINEAR:1,FAST_LINEAR:2},bW={FRACTIONAL:0,PROPORTIONAL:1},W7={CUSTOM:0,ADDITIVE:1,COLORIZE:2};var FW={InterpolationType:xE,OpacityMode:bW,ColorMixPreset:W7},Hae=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkPolyDataVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +attribute vec4 vertexDC; + +varying vec3 vertexVCVSOutput; +uniform mat4 PCVCMatrix; + +uniform float dcxmin; +uniform float dcxmax; +uniform float dcymin; +uniform float dcymax; + +void main() +{ + // dcsmall is the device coords reduced to the + // x y area covered by the volume + vec4 dcsmall = vec4( + dcxmin + 0.5 * (vertexDC.x + 1.0) * (dcxmax - dcxmin), + dcymin + 0.5 * (vertexDC.y + 1.0) * (dcymax - dcymin), + vertexDC.z, + vertexDC.w); + vec4 vcpos = PCVCMatrix * dcsmall; + vertexVCVSOutput = vcpos.xyz/vcpos.w; + gl_Position = dcsmall; +} +`,Kae=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkVolumeFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the volume mappers fragment shader + +// the output of this shader +//VTK::Output::Dec + +varying vec3 vertexVCVSOutput; + +// first declare the settings from the mapper +// that impact the code paths in here + +// always set vtkNumComponents 1,2,3,4 +//VTK::NumComponents + +// possibly define vtkTrilinearOn +//VTK::TrilinearOn + +// possibly define UseIndependentComponents +//VTK::IndependentComponentsOn + +// possibly define vtkCustomComponentsColorMix +//VTK::CustomComponentsColorMixOn + +// possibly define any "proportional" components +//VTK::vtkProportionalComponents + +// possibly define any components that are forced to nearest interpolation +//VTK::vtkForceNearestComponents + +// Define the blend mode to use +#define vtkBlendMode //VTK::BlendMode + +// Possibly define vtkImageLabelOutlineOn +//VTK::ImageLabelOutlineOn + +// Possibly define vtkLabelEdgeProjectionOn +//VTK::LabelEdgeProjectionOn + + +#ifdef vtkImageLabelOutlineOn + uniform float outlineOpacity; + uniform float vpWidth; + uniform float vpHeight; + uniform float vpOffsetX; + uniform float vpOffsetY; + uniform mat4 PCWCMatrix; + uniform mat4 vWCtoIDX; + + const int MAX_SEGMENT_INDEX = 256; // Define as per expected maximum + // bool seenSegmentsByOriginalPos[MAX_SEGMENT_INDEX]; + #define MAX_SEGMENTS 256 + #define UINT_SIZE 32 + #define BITMASK_SIZE ((MAX_SEGMENTS + UINT_SIZE - 1) / UINT_SIZE) + + uint bitmask[BITMASK_SIZE]; + + // Set the corresponding bit in the bitmask + void setBit(int segmentIndex) { + int index = segmentIndex / UINT_SIZE; + int bitIndex = segmentIndex % UINT_SIZE; + bitmask[index] |= 1u << bitIndex; + } + + // Check if a bit is set in the bitmask + bool isBitSet(int segmentIndex) { + int index = segmentIndex / UINT_SIZE; + int bitIndex = segmentIndex % UINT_SIZE; + return ((bitmask[index] & (1u << bitIndex)) != 0u); + } +#endif + +// define vtkLightComplexity +//VTK::LightComplexity +#if vtkLightComplexity > 0 +uniform float vSpecularPower; +uniform float vAmbient; +uniform float vDiffuse; +uniform float vSpecular; +//VTK::Light::Dec +#endif + +//VTK::VolumeShadowOn +//VTK::SurfaceShadowOn +//VTK::localAmbientOcclusionOn +//VTK::LAO::Dec +//VTK::VolumeShadow::Dec + +// define vtkComputeNormalFromOpacity +//VTK::vtkComputeNormalFromOpacity + +// possibly define vtkGradientOpacityOn +//VTK::GradientOpacityOn +#ifdef vtkGradientOpacityOn +uniform float goscale0; +uniform float goshift0; +uniform float gomin0; +uniform float gomax0; +#ifdef UseIndependentComponents +#if vtkNumComponents > 1 +uniform float goscale1; +uniform float goshift1; +uniform float gomin1; +uniform float gomax1; +#if vtkNumComponents > 2 +uniform float goscale2; +uniform float goshift2; +uniform float gomin2; +uniform float gomax2; +#if vtkNumComponents > 3 +uniform float goscale3; +uniform float goshift3; +uniform float gomin3; +uniform float gomax3; +#endif +#endif +#endif +#endif +#endif + +// if you want to see the raw tiled +// data in webgl1 uncomment the following line +// #define debugtile + +// camera values +uniform float camThick; +uniform float camNear; +uniform float camFar; +uniform int cameraParallel; + +// values describing the volume geometry +uniform vec3 vOriginVC; +uniform vec3 vSpacing; +uniform ivec3 volumeDimensions; // 3d texture dimensions +uniform vec3 vPlaneNormal0; +uniform float vPlaneDistance0; +uniform vec3 vPlaneNormal1; +uniform float vPlaneDistance1; +uniform vec3 vPlaneNormal2; +uniform float vPlaneDistance2; +uniform vec3 vPlaneNormal3; +uniform float vPlaneDistance3; +uniform vec3 vPlaneNormal4; +uniform float vPlaneDistance4; +uniform vec3 vPlaneNormal5; +uniform float vPlaneDistance5; + +//VTK::ClipPlane::Dec + +// opacity and color textures +uniform sampler2D otexture; +uniform float oshift0; +uniform float oscale0; +uniform sampler2D ctexture; +uniform float cshift0; +uniform float cscale0; + +#if vtkNumComponents >= 2 +uniform float oshift1; +uniform float oscale1; +uniform float cshift1; +uniform float cscale1; +#endif +#if vtkNumComponents >= 3 +uniform float oshift2; +uniform float oscale2; +uniform float cshift2; +uniform float cscale2; +#endif +#if vtkNumComponents >= 4 +uniform float oshift3; +uniform float oscale3; +uniform float cshift3; +uniform float cscale3; +#endif + +// jitter texture +uniform sampler2D jtexture; +uniform sampler2D ttexture; + + +// some 3D texture values +uniform float sampleDistance; +uniform vec3 vVCToIJK; +uniform vec3 volumeSpacings; // spacing in the world coorindates + + +// the heights defined below are the locations +// for the up to four components of the tfuns +// the tfuns have a height of 2XnumComps pixels so the +// values are computed to hit the middle of the two rows +// for that component +#ifdef UseIndependentComponents +#if vtkNumComponents == 1 +uniform float mix0; +#define height0 0.5 +#endif +#if vtkNumComponents == 2 +uniform float mix0; +uniform float mix1; +#define height0 0.25 +#define height1 0.75 +#endif +#if vtkNumComponents == 3 +uniform float mix0; +uniform float mix1; +uniform float mix2; +#define height0 0.17 +#define height1 0.5 +#define height2 0.83 +#endif +#if vtkNumComponents == 4 +uniform float mix0; +uniform float mix1; +uniform float mix2; +uniform float mix3; +#define height0 0.125 +#define height1 0.375 +#define height2 0.625 +#define height3 0.875 +#endif +#endif + +uniform vec4 ipScalarRangeMin; +uniform vec4 ipScalarRangeMax; + +// declaration for intermixed geometry +//VTK::ZBuffer::Dec + +//======================================================================= +// global and custom variables (a temporary section before photorealistics rendering module is complete) +vec3 rayDirVC; +float sampleDistanceISVS; +float sampleDistanceIS; + +#define SQRT3 1.7321 +#define INV4PI 0.0796 +#define EPSILON 0.001 +#define PI 3.1415 +#define PI2 9.8696 + +//======================================================================= +// Webgl2 specific version of functions +#if __VERSION__ == 300 + +uniform highp sampler3D texture1; + +vec4 getTextureValue(vec3 pos) +{ + vec4 tmp = texture(texture1, pos); + + #if defined(vtkComponent0ForceNearest) || \\ + defined(vtkComponent1ForceNearest) || \\ + defined(vtkComponent2ForceNearest) || \\ + defined(vtkComponent3ForceNearest) + vec3 nearestPos = (floor(pos * vec3(volumeDimensions)) + 0.5) / vec3(volumeDimensions); + vec4 nearestValue = texture(texture1, nearestPos); + #ifdef vtkComponent0ForceNearest + tmp[0] = nearestValue[0]; + #endif + #ifdef vtkComponent1ForceNearest + tmp[1] = nearestValue[1]; + #endif + #ifdef vtkComponent2ForceNearest + tmp[2] = nearestValue[2]; + #endif + #ifdef vtkComponent3ForceNearest + tmp[3] = nearestValue[3]; + #endif + #endif + + #ifndef UseIndependentComponents + #if vtkNumComponents == 1 + tmp.a = tmp.r; + #endif + #if vtkNumComponents == 2 + tmp.a = tmp.g; + #endif + #if vtkNumComponents == 3 + tmp.a = length(tmp.rgb); + #endif + #endif + + return tmp; +} + +//======================================================================= +// WebGL1 specific version of functions +#else + +uniform sampler2D texture1; + +uniform float texWidth; +uniform float texHeight; +uniform int xreps; +uniform int xstride; +uniform int ystride; + +// if computing trilinear values from multiple z slices +#ifdef vtkTrilinearOn +vec4 getTextureValue(vec3 ijk) +{ + float zoff = 1.0/float(volumeDimensions.z); + vec4 val1 = getOneTextureValue(ijk); + vec4 val2 = getOneTextureValue(vec3(ijk.xy, ijk.z + zoff)); + + float indexZ = float(volumeDimensions)*ijk.z; + float zmix = indexZ - floor(indexZ); + + return mix(val1, val2, zmix); +} + +vec4 getOneTextureValue(vec3 ijk) +#else // nearest or fast linear +vec4 getTextureValue(vec3 ijk) +#endif +{ + vec3 tdims = vec3(volumeDimensions); + +#ifdef debugtile + vec2 tpos = vec2(ijk.x, ijk.y); + vec4 tmp = texture2D(texture1, tpos); + tmp.a = 1.0; + +#else + int z = int(ijk.z * tdims.z); + int yz = z / xreps; + int xz = z - yz*xreps; + + int tileWidth = volumeDimensions.x/xstride; + int tileHeight = volumeDimensions.y/ystride; + + xz *= tileWidth; + yz *= tileHeight; + + float ni = float(xz) + (ijk.x*float(tileWidth)); + float nj = float(yz) + (ijk.y*float(tileHeight)); + + vec2 tpos = vec2(ni/texWidth, nj/texHeight); + + vec4 tmp = texture2D(texture1, tpos); + +#if vtkNumComponents == 1 + tmp.a = tmp.r; +#endif +#if vtkNumComponents == 2 + tmp.g = tmp.a; +#endif +#if vtkNumComponents == 3 + tmp.a = length(tmp.rgb); +#endif +#endif + + return tmp; +} + +// End of Webgl1 specific code +//======================================================================= +#endif + +//======================================================================= +// transformation between VC and IS space + +// convert vector position from idx to vc +#if (vtkLightComplexity > 0) || (defined vtkClippingPlanesOn) +vec3 IStoVC(vec3 posIS){ + vec3 posVC = posIS / vVCToIJK; + return posVC.x * vPlaneNormal0 + + posVC.y * vPlaneNormal2 + + posVC.z * vPlaneNormal4 + + vOriginVC; +} + +// convert vector position from vc to idx +vec3 VCtoIS(vec3 posVC){ + posVC = posVC - vOriginVC; + posVC = vec3( + dot(posVC, vPlaneNormal0), + dot(posVC, vPlaneNormal2), + dot(posVC, vPlaneNormal4)); + return posVC * vVCToIJK; +} +#endif + +//Rotate vector to view coordinate +#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) +void rotateToViewCoord(inout vec3 dirIS){ + dirIS.xyz = + dirIS.x * vPlaneNormal0 + + dirIS.y * vPlaneNormal2 + + dirIS.z * vPlaneNormal4; +} + +//Rotate vector to idx coordinate +vec3 rotateToIDX(vec3 dirVC){ + vec3 dirIS; + dirIS.xyz = vec3( + dot(dirVC, vPlaneNormal0), + dot(dirVC, vPlaneNormal2), + dot(dirVC, vPlaneNormal4)); + return dirIS; +} +#endif + +//======================================================================= +// Given a normal compute the gradient opacity factors +float computeGradientOpacityFactor( + float normalMag, float goscale, float goshift, float gomin, float gomax) +{ + return clamp(normalMag * goscale + goshift, gomin, gomax); +} + +//======================================================================= +// compute the normal and gradient magnitude for a position, uses forward difference +#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) + #ifdef vtkClippingPlanesOn + void adjustClippedVoxelValues(vec3 pos, vec3 texPos[3], inout vec3 g1) + { + vec3 g1VC[3]; + for (int i = 0; i < 3; ++i) + { + g1VC[i] = IStoVC(texPos[i]); + } + vec3 posVC = IStoVC(pos); + for (int i = 0; i < clip_numPlanes; ++i) + { + for (int j = 0; j < 3; ++j) + { + if(dot(vec3(vClipPlaneOrigins[i] - g1VC[j].xyz), vClipPlaneNormals[i]) > 0.0) + { + g1[j] = 0.0; + } + } + } + } + #endif + + #ifdef vtkComputeNormalFromOpacity + vec4 computeDensityNormal(vec3 opacityUCoords[2], float opactityTextureHeight, float gradientOpacity) { + vec3 opacityG1, opacityG2; + opacityG1.x = texture2D(otexture, vec2(opacityUCoords[0].x, opactityTextureHeight)).r; + opacityG1.y = texture2D(otexture, vec2(opacityUCoords[0].y, opactityTextureHeight)).r; + opacityG1.z = texture2D(otexture, vec2(opacityUCoords[0].z, opactityTextureHeight)).r; + opacityG2.x = texture2D(otexture, vec2(opacityUCoords[1].x, opactityTextureHeight)).r; + opacityG2.y = texture2D(otexture, vec2(opacityUCoords[1].y, opactityTextureHeight)).r; + opacityG2.z = texture2D(otexture, vec2(opacityUCoords[1].z, opactityTextureHeight)).r; + opacityG1.xyz *= gradientOpacity; + opacityG2.xyz *= gradientOpacity; + + vec4 opacityG = vec4(opacityG1 - opacityG2, 1.0f); + // divide by spacing + opacityG.xyz /= vSpacing; + opacityG.w = length(opacityG.xyz); + // rotate to View Coords + rotateToViewCoord(opacityG.xyz); + if (!all(equal(opacityG.xyz, vec3(0.0)))) { + return vec4(normalize(opacityG.xyz),opacityG.w); + } else { + return vec4(0.0); + } + } + + vec4 computeNormalForDensity(vec3 pos, vec3 tstep, out vec3 scalarInterp[2], const int opacityComponent) + { + vec3 xvec = vec3(tstep.x, 0.0, 0.0); + vec3 yvec = vec3(0.0, tstep.y, 0.0); + vec3 zvec = vec3(0.0, 0.0, tstep.z); + vec3 texPosPVec[3]; + texPosPVec[0] = pos + xvec; + texPosPVec[1] = pos + yvec; + texPosPVec[2] = pos + zvec; + vec3 texPosNVec[3]; + texPosNVec[0] = pos - xvec; + texPosNVec[1] = pos - yvec; + texPosNVec[2] = pos - zvec; + vec3 g1, g2; + + scalarInterp[0].x = getTextureValue(texPosPVec[0])[opacityComponent]; + scalarInterp[0].y = getTextureValue(texPosPVec[1])[opacityComponent]; + scalarInterp[0].z = getTextureValue(texPosPVec[2])[opacityComponent]; + scalarInterp[1].x = getTextureValue(texPosNVec[0])[opacityComponent]; + scalarInterp[1].y = getTextureValue(texPosNVec[1])[opacityComponent]; + scalarInterp[1].z = getTextureValue(texPosNVec[2])[opacityComponent]; + + #ifdef vtkClippingPlanesOn + adjustClippedVoxelValues(pos, texPosPVec, scalarInterp[0]); + adjustClippedVoxelValues(pos, texPosNVec, scalarInterp[1]); + #endif + vec4 result; + result.x = scalarInterp[0].x - scalarInterp[1].x; + result.y = scalarInterp[0].y - scalarInterp[1].y; + result.z = scalarInterp[0].z - scalarInterp[1].z; + // divide by spacing + result.xyz /= vSpacing; + result.w = length(result.xyz); + // rotate to View Coords + rotateToViewCoord(result.xyz); + if (length(result.xyz) > 0.0) { + return vec4(normalize(result.xyz),result.w); + } else { + return vec4(0.0); + } + } + #endif + + // only works with dependent components + vec4 computeNormal(vec3 pos, vec3 tstep) + { + vec3 xvec = vec3(tstep.x, 0.0, 0.0); + vec3 yvec = vec3(0.0, tstep.y, 0.0); + vec3 zvec = vec3(0.0, 0.0, tstep.z); + vec3 texPosPVec[3]; + texPosPVec[0] = pos + xvec; + texPosPVec[1] = pos + yvec; + texPosPVec[2] = pos + zvec; + vec3 texPosNVec[3]; + texPosNVec[0] = pos - xvec; + texPosNVec[1] = pos - yvec; + texPosNVec[2] = pos - zvec; + vec3 g1, g2; + g1.x = getTextureValue(texPosPVec[0]).a; + g1.y = getTextureValue(texPosPVec[1]).a; + g1.z = getTextureValue(texPosPVec[2]).a; + g2.x = getTextureValue(texPosNVec[0]).a; + g2.y = getTextureValue(texPosNVec[1]).a; + g2.z = getTextureValue(texPosNVec[2]).a; + #ifdef vtkClippingPlanesOn + adjustClippedVoxelValues(pos, texPosPVec, g1); + adjustClippedVoxelValues(pos, texPosNVec, g2); + #endif + vec4 result; + result = vec4(g1 - g2, -1.0); + // divide by spacing + result.xyz /= vSpacing; + result.w = length(result.xyz); + if (result.w > 0.0){ + // rotate to View Coords + rotateToViewCoord(result.xyz); + return vec4(normalize(result.xyz),result.w); + } else { + return vec4(0.0); + } + } +#endif + + +#ifdef vtkImageLabelOutlineOn + vec4 fragCoordToPCPos(vec4 fragCoord) { + return vec4( + (fragCoord.x / vpWidth - vpOffsetX - 0.5) * 2.0, + (fragCoord.y / vpHeight - vpOffsetY - 0.5) * 2.0, + (fragCoord.z - 0.5) * 2.0, + 1.0); + } + + vec4 pcPosToWorldCoord(vec4 pcPos) { + return PCWCMatrix * pcPos; + } + + vec3 fragCoordToIndexSpace(vec4 fragCoord) { + vec4 pcPos = fragCoordToPCPos(fragCoord); + vec4 worldCoord = pcPosToWorldCoord(pcPos); + vec4 vertex = (worldCoord / worldCoord.w); + + vec3 index = (vWCtoIDX * vertex).xyz; + + // half voxel fix for labelmapOutline + return (index + vec3(0.5)) / vec3(volumeDimensions); + } + + vec3 fragCoordToWorld(vec4 fragCoord) { + vec4 pcPos = fragCoordToPCPos(fragCoord); + vec4 worldCoord = pcPosToWorldCoord(pcPos); + return worldCoord.xyz; + } +#endif + +//======================================================================= +// compute the normals and gradient magnitudes for a position +// for independent components +mat4 computeMat4Normal(vec3 pos, vec4 tValue, vec3 tstep) +{ + mat4 result; + vec4 distX = getTextureValue(pos + vec3(tstep.x, 0.0, 0.0)) - tValue; + vec4 distY = getTextureValue(pos + vec3(0.0, tstep.y, 0.0)) - tValue; + vec4 distZ = getTextureValue(pos + vec3(0.0, 0.0, tstep.z)) - tValue; + + // divide by spacing + distX /= vSpacing.x; + distY /= vSpacing.y; + distZ /= vSpacing.z; + + mat3 rot; + rot[0] = vPlaneNormal0; + rot[1] = vPlaneNormal2; + rot[2] = vPlaneNormal4; + +#if !defined(vtkComponent0Proportional) + result[0].xyz = vec3(distX.r, distY.r, distZ.r); + result[0].a = length(result[0].xyz); + result[0].xyz *= rot; + if (result[0].w > 0.0) + { + result[0].xyz /= result[0].w; + } +#endif + +// optionally compute the 2nd component +#if vtkNumComponents >= 2 && !defined(vtkComponent1Proportional) + result[1].xyz = vec3(distX.g, distY.g, distZ.g); + result[1].a = length(result[1].xyz); + result[1].xyz *= rot; + if (result[1].w > 0.0) + { + result[1].xyz /= result[1].w; + } +#endif + +// optionally compute the 3rd component +#if vtkNumComponents >= 3 && !defined(vtkComponent2Proportional) + result[2].xyz = vec3(distX.b, distY.b, distZ.b); + result[2].a = length(result[2].xyz); + result[2].xyz *= rot; + if (result[2].w > 0.0) + { + result[2].xyz /= result[2].w; + } +#endif + +// optionally compute the 4th component +#if vtkNumComponents >= 4 && !defined(vtkComponent3Proportional) + result[3].xyz = vec3(distX.a, distY.a, distZ.a); + result[3].a = length(result[3].xyz); + result[3].xyz *= rot; + if (result[3].w > 0.0) + { + result[3].xyz /= result[3].w; + } +#endif + + return result; +} + +//======================================================================= +// global shadow - secondary ray +#if defined(VolumeShadowOn) || defined(localAmbientOcclusionOn) +float random() +{ + float rand = fract(sin(dot(gl_FragCoord.xy,vec2(12.9898,78.233)))*43758.5453123); + float jitter=texture2D(jtexture,gl_FragCoord.xy/32.).r; + uint pcg_state = floatBitsToUint(jitter); + uint state = pcg_state; + pcg_state = pcg_state * uint(747796405) + uint(2891336453); + uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737); + return (float((((word >> uint(22)) ^ word) >> 1 ))/float(2147483647) + rand)/2.0; +} +#endif + +#ifdef VolumeShadowOn +// henyey greenstein phase function +float phase_function(float cos_angle) +{ + // divide by 2.0 instead of 4pi to increase intensity + return ((1.0-anisotropy2)/pow(1.0+anisotropy2-2.0*anisotropy*cos_angle, 1.5))/2.0; +} + +// Computes the intersection between a ray and a box +struct Hit +{ + float tmin; + float tmax; +}; + +struct Ray +{ + vec3 origin; + vec3 dir; + vec3 invDir; +}; + +bool BBoxIntersect(vec3 boundMin, vec3 boundMax, const Ray r, out Hit hit) +{ + vec3 tbot = r.invDir * (boundMin - r.origin); + vec3 ttop = r.invDir * (boundMax - r.origin); + vec3 tmin = min(ttop, tbot); + vec3 tmax = max(ttop, tbot); + vec2 t = max(tmin.xx, tmin.yz); + float t0 = max(t.x, t.y); + t = min(tmax.xx, tmax.yz); + float t1 = min(t.x, t.y); + hit.tmin = t0; + hit.tmax = t1; + return t1 > max(t0,0.0); +} + +// As BBoxIntersect requires the inverse of the ray coords, +// this function is used to avoid numerical issues +void safe_0_vector(inout Ray ray) +{ + if(abs(ray.dir.x) < EPSILON) ray.dir.x = sign(ray.dir.x) * EPSILON; + if(abs(ray.dir.y) < EPSILON) ray.dir.y = sign(ray.dir.y) * EPSILON; + if(abs(ray.dir.z) < EPSILON) ray.dir.z = sign(ray.dir.z) * EPSILON; +} + +float volume_shadow(vec3 posIS, vec3 lightDirNormIS) +{ + float shadow = 1.0; + float opacity = 0.0; + + // modify sample distance with a random number between 1.5 and 3.0 + float sampleDistanceISVS_jitter = sampleDistanceISVS * mix(1.5, 3.0, random()); + float opacityPrev = texture2D(otexture, vec2(getTextureValue(posIS).r * oscale0 + oshift0, 0.5)).r; + + // in case the first sample near surface has a very tiled light ray, we need to offset start position + posIS += sampleDistanceISVS_jitter * lightDirNormIS; + + // compute the start and end points for the ray + Ray ray; + Hit hit; + ray.origin = posIS; + ray.dir = lightDirNormIS; + safe_0_vector(ray); + ray.invDir = 1.0/ray.dir; + + if(!BBoxIntersect(vec3(0.0),vec3(1.0), ray, hit)) + { + return 1.0; + } + float maxdist = hit.tmax; + + // interpolate shadow ray length between: 1 unit of sample distance in IS to SQRT3, based on globalIlluminationReach + float maxgi = mix(sampleDistanceISVS_jitter,SQRT3,giReach); + maxdist = min(maxdist,maxgi); + if(maxdist < EPSILON) { + return 1.0; + } + + float current_dist = 0.0; + float current_step = length(sampleDistanceISVS_jitter * lightDirNormIS); + float clamped_step = 0.0; + + vec4 scalar = vec4(0.0); + while(current_dist < maxdist) + { +#ifdef vtkClippingPlanesOn + vec3 posVC = IStoVC(posIS); + for (int i = 0; i < clip_numPlanes; ++i) + { + if (dot(vec3(vClipPlaneOrigins[i] - posVC), vClipPlaneNormals[i]) > 0.0) + { + current_dist = maxdist; + } + } +#endif + scalar = getTextureValue(posIS); + opacity = texture2D(otexture, vec2(scalar.r * oscale0 + oshift0, 0.5)).r; + #if defined(vtkGradientOpacityOn) && !defined(UseIndependentComponents) + vec4 normal = computeNormal(posIS, vec3(1.0/vec3(volumeDimensions))); + opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); + #endif + shadow *= 1.0 - opacity; + + // optimization: early termination + if (shadow < EPSILON){ + return 0.0; + } + + clamped_step = min(maxdist - current_dist, current_step); + posIS += clamped_step * lightDirNormIS; + current_dist += current_step; + } + + return shadow; +} + +vec3 applyShadowRay(vec3 tColor, vec3 posIS, vec3 viewDirectionVC) +{ + vec3 vertLight = vec3(0.0); + vec3 secondary_contrib = vec3(0.0); + // here we assume only positional light, no effect of cones + for (int i = 0; i < lightNum; i++) + { + #if(vtkLightComplexity==3) + if (lightPositional[i] == 1){ + vertLight = lightPositionVC[i] - IStoVC(posIS); + }else{ + vertLight = - lightDirectionVC[i]; + } + #else + vertLight = - lightDirectionVC[i]; + #endif + // here we assume achromatic light, only intensity + float dDotL = dot(viewDirectionVC, normalize(vertLight)); + // isotropic scatter returns 0.5 instead of 1/4pi to increase intensity + float phase_attenuation = 0.5; + if (abs(anisotropy) > EPSILON){ + phase_attenuation = phase_function(dDotL); + } + float vol_shadow = volume_shadow(posIS, normalize(rotateToIDX(vertLight))); + secondary_contrib += tColor * vDiffuse * lightColor[i] * vol_shadow * phase_attenuation; + secondary_contrib += tColor * vAmbient; + } + return secondary_contrib; +} +#endif + +//======================================================================= +// local ambient occlusion +#ifdef localAmbientOcclusionOn +vec3 sample_direction_uniform(int i) +{ + float rand = random() * 0.5; + float theta = PI2 * (kernelSample[i][0] + rand); + float phi = acos(2.0 * (kernelSample[i][1] + rand) -1.0) / 2.5; + return normalize(vec3(cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi))); +} + +// return a matrix that transform startDir into z axis; startDir should be normalized +mat3 zBaseRotationalMatrix(vec3 startDir){ + vec3 axis = cross(startDir, vec3(0.0,0.0,1.0)); + float cosA = startDir.z; + float k = 1.0 / (1.0 + cosA); + mat3 matrix = mat3((axis.x * axis.x * k) + cosA, (axis.y * axis.x * k) - axis.z, (axis.z * axis.x * k) + axis.y, + (axis.x * axis.y * k) + axis.z, (axis.y * axis.y * k) + cosA, (axis.z * axis.y * k) - axis.x, + (axis.x * axis.z * k) - axis.y, (axis.y * axis.z * k) + axis.x, (axis.z * axis.z * k) + cosA); + return matrix; +} + +float computeLAO(vec3 posIS, float op, vec3 lightDir, vec4 normal){ + // apply LAO only at selected locations, otherwise return full brightness + if (normal.w > 0.0 && op > 0.05){ + float total_transmittance = 0.0; + mat3 inverseRotateBasis = inverse(zBaseRotationalMatrix(normalize(-normal.xyz))); + vec3 currPos, randomDirStep; + float weight, transmittance, opacity; + for (int i = 0; i < kernelSize; i++) + { + randomDirStep = inverseRotateBasis * sample_direction_uniform(i) * sampleDistanceIS; + weight = 1.0 - dot(normalize(lightDir), normalize(randomDirStep)); + currPos = posIS; + transmittance = 1.0; + for (int j = 0; j < kernelRadius ; j++){ + currPos += randomDirStep; + // check if it's at clipping plane, if so return full brightness + if (all(greaterThan(currPos, vec3(EPSILON))) && all(lessThan(currPos,vec3(1.0-EPSILON)))){ + opacity = texture2D(otexture, vec2(getTextureValue(currPos).r * oscale0 + oshift0, 0.5)).r; + #ifdef vtkGradientOpacityOn + opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); + #endif + transmittance *= 1.0 - opacity; + } + else{ + break; + } + } + total_transmittance += transmittance / float(kernelRadius) * weight; + + // early termination if fully translucent + if (total_transmittance > 1.0 - EPSILON){ + return 1.0; + } + } + // average transmittance and reduce variance + return clamp(total_transmittance / float(kernelSize), 0.3, 1.0); + } else { + return 1.0; + } +} +#endif + +//======================================================================= +// surface light contribution +#if vtkLightComplexity > 0 + void applyLighting(inout vec3 tColor, vec4 normal) + { + vec3 diffuse = vec3(0.0, 0.0, 0.0); + vec3 specular = vec3(0.0, 0.0, 0.0); + float df, sf = 0.0; + for (int i = 0; i < lightNum; i++){ + df = abs(dot(normal.rgb, -lightDirectionVC[i])); + diffuse += df * lightColor[i]; + sf = pow( abs(dot(lightHalfAngleVC[i],normal.rgb)), vSpecularPower); + specular += sf * lightColor[i]; + } + tColor.rgb = tColor.rgb*(diffuse*vDiffuse + vAmbient) + specular*vSpecular; + } + #ifdef SurfaceShadowOn + #if vtkLightComplexity < 3 + vec3 applyLightingDirectional(vec3 posIS, vec4 tColor, vec4 normal) + { + // everything in VC + vec3 diffuse = vec3(0.0); + vec3 specular = vec3(0.0); + #ifdef localAmbientOcclusionOn + vec3 ambient = vec3(0.0); + #endif + vec3 vertLightDirection; + for (int i = 0; i < lightNum; i++){ + float ndotL,vdotR; + vertLightDirection = lightDirectionVC[i]; + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } + #ifdef localAmbientOcclusionOn + return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; + #else + return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; + #endif + } + #else + vec3 applyLightingPositional(vec3 posIS, vec4 tColor, vec4 normal, vec3 posVC) + { + // everything in VC + vec3 diffuse = vec3(0.0); + vec3 specular = vec3(0.0); + #ifdef localAmbientOcclusionOn + vec3 ambient = vec3(0.0); + #endif + vec3 vertLightDirection; + for (int i = 0; i < lightNum; i++){ + float distance,attenuation,ndotL,vdotR; + vec3 lightDir; + if (lightPositional[i] == 1){ + lightDir = lightDirectionVC[i]; + vertLightDirection = posVC - lightPositionVC[i]; + distance = length(vertLightDirection); + vertLightDirection = normalize(vertLightDirection); + attenuation = 1.0 / (lightAttenuation[i].x + + lightAttenuation[i].y * distance + + lightAttenuation[i].z * distance * distance); + // per OpenGL standard cone angle is 90 or less for a spot light + if (lightConeAngle[i] <= 90.0){ + float coneDot = dot(vertLightDirection, lightDir); + if (coneDot >= cos(radians(lightConeAngle[i]))){ // if inside cone + attenuation = attenuation * pow(coneDot, lightExponent[i]); + } + else { + attenuation = 0.0; + } + } + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * attenuation * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * attenuation * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } else { + vertLightDirection = lightDirectionVC[i]; + ndotL = dot(normal.xyz, vertLightDirection); + if (ndotL < 0.0 && twoSidedLighting) + { + ndotL = -ndotL; + } + if (ndotL > 0.0) + { + diffuse += ndotL * lightColor[i]; + //specular + vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); + if (vdotR > 0.0) + { + specular += pow(vdotR, vSpecularPower) * lightColor[i]; + } + } + #ifdef localAmbientOcclusionOn + ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); + #endif + } + } + #ifdef localAmbientOcclusionOn + return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; + #else + return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; + #endif + } + #endif + #endif +#endif + +// LAO of surface shadows and volume shadows only work with dependent components +vec3 applyAllLightning(vec3 tColor, float alpha, vec3 posIS, vec4 normalLight) { + #if vtkLightComplexity > 0 + // surface shadows if needed + #ifdef SurfaceShadowOn + #if vtkLightComplexity < 3 + vec3 tColorS = applyLightingDirectional(posIS, vec4(tColor, alpha), normalLight); + #else + vec3 tColorS = applyLightingPositional(posIS, vec4(tColor, alpha), normalLight, IStoVC(posIS)); + #endif + #endif + + // volume shadows if needed + #ifdef VolumeShadowOn + vec3 tColorVS = applyShadowRay(tColor, posIS, rayDirVC); + #endif + + // merge + #ifdef VolumeShadowOn + #ifdef SurfaceShadowOn + // surface shadows + volumetric shadows + float vol_coef = volumetricScatteringBlending * (1.0 - alpha / 2.0) * (1.0 - atan(normalLight.w) * INV4PI); + tColor = (1.0-vol_coef) * tColorS + vol_coef * tColorVS; + #else + // volumetric shadows only + tColor = tColorVS; + #endif + #else + #ifdef SurfaceShadowOn + // surface shadows only + tColor = tColorS; + #else + // no shadows + applyLighting(tColor, normal3); + #endif + #endif + #endif + return tColor; +} + + +vec4 getColorForValue(vec4 tValue, vec3 posIS, vec3 tstep) +{ + +// If labeloutline and not the edge labelmap, since in the edge labelmap blend +// we need the underlying data to sample through +#if defined(vtkImageLabelOutlineOn) && !defined(vtkLabelEdgeProjectionOn) + vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord); // pos in texture space + vec4 centerValue = getTextureValue(centerPosIS); + bool pixelOnBorder = false; + vec4 tColor = texture2D(ctexture, vec2(centerValue.r * cscale0 + cshift0, 0.5)); + + // Get alpha of segment from opacity function. + tColor.a = texture2D(otexture, vec2(centerValue.r * oscale0 + oshift0, 0.5)).r; + + int segmentIndex = int(centerValue.r * 255.0); + + // Use texture sampling for outlineThickness + float textureCoordinate = float(segmentIndex - 1) / 1024.0; + float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; + + int actualThickness = int(textureValue * 255.0); + + + // If it is the background (segment index 0), we should quickly bail out. + // Previously, this was determined by tColor.a, which was incorrect as it + // prevented the outline from appearing when the fill is 0. + if (segmentIndex == 0){ + return vec4(0, 0, 0, 0); + } + + // Only perform outline check on fragments rendering voxels that aren't invisible. + // Saves a bunch of needless checks on the background. + // TODO define epsilon when building shader? + for (int i = -actualThickness; i <= actualThickness; i++) { + for (int j = -actualThickness; j <= actualThickness; j++) { + if (i == 0 || j == 0) { + continue; + } + + vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), + gl_FragCoord.y + float(j), + gl_FragCoord.z, gl_FragCoord.w); + + vec3 neighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); + vec4 value = getTextureValue(neighborPosIS); + + // If any of my neighbours are not the same value as I + // am, this means I am on the border of the segment. + // We can break the loops + if (any(notEqual(value, centerValue))) { + pixelOnBorder = true; + break; + } + } + + if (pixelOnBorder == true) { + break; + } + } + + // If I am on the border, I am displayed at full opacity + if (pixelOnBorder == true) { + tColor.a = outlineOpacity; + } + + return tColor; + +#else + // compute the normal and gradient magnitude if needed + // We compute it as a vec4 if possible otherwise a mat4 + + #ifdef UseIndependentComponents + + // sample textures + vec3 tColor0 = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, height0)).rgb; + float pwfValue0 = texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, height0)).r; + + #if vtkNumComponents > 1 + vec3 tColor1 = texture2D(ctexture, vec2(tValue.g * cscale1 + cshift1, height1)).rgb; + float pwfValue1 = texture2D(otexture, vec2(tValue.g * oscale1 + oshift1, height1)).r; + + #if vtkNumComponents > 2 + vec3 tColor2 = texture2D(ctexture, vec2(tValue.b * cscale2 + cshift2, height2)).rgb; + float pwfValue2 = texture2D(otexture, vec2(tValue.b * oscale2 + oshift2, height2)).r; + + #if vtkNumComponents > 3 + vec3 tColor3 = texture2D(ctexture, vec2(tValue.a * cscale3 + cshift3, height3)).rgb; + float pwfValue3 = texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, height3)).r; + #endif + #endif + #endif + + #if !defined(vtkCustomComponentsColorMix) + // default path for component color mix + + // compute the normal vectors as needed + #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #endif + + // compute gradient opacity factors as needed + vec4 goFactor = vec4(1.0, 1.0 ,1.0 ,1.0); + #if defined(vtkGradientOpacityOn) + #if !defined(vtkComponent0Proportional) + goFactor.x = + computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + #endif + #if vtkNumComponents > 1 + #if !defined(vtkComponent1Proportional) + goFactor.y = + computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); + #endif + #if vtkNumComponents > 2 + #if !defined(vtkComponent2Proportional) + goFactor.z = + computeGradientOpacityFactor(normalMat[2].a, goscale2, goshift2, gomin2, gomax2); + #endif + #if vtkNumComponents > 3 + #if !defined(vtkComponent3Proportional) + goFactor.w = + computeGradientOpacityFactor(normalMat[3].a, goscale3, goshift3, gomin3, gomax3); + #endif + #endif + #endif + #endif + #endif + + // process color and opacity for each component + #if !defined(vtkComponent0Proportional) + float alpha = goFactor.x*mix0*pwfValue0; + #if vtkLightComplexity > 0 + applyLighting(tColor0, normalMat[0]); + #endif + #else + tColor0 *= pwfValue0; + float alpha = mix(pwfValue0, 1.0, (1.0 - mix0)); + #endif + + #if vtkNumComponents > 1 + #if !defined(vtkComponent1Proportional) + alpha += goFactor.y*mix1*pwfValue1; + #if vtkLightComplexity > 0 + applyLighting(tColor1, normalMat[1]); + #endif + #else + tColor1 *= pwfValue1; + alpha *= mix(pwfValue1, 1.0, (1.0 - mix1)); + #endif + + #if vtkNumComponents > 2 + #if !defined(vtkComponent2Proportional) + alpha += goFactor.z*mix2*pwfValue2; + #if vtkLightComplexity > 0 + applyLighting(tColor2, normalMat[2]); + #endif + #else + tColor2 *= pwfValue2; + alpha *= mix(pwfValue2, 1.0, (1.0 - mix2)); + #endif + #endif + + #if vtkNumComponents > 3 + #if !defined(vtkComponent3Proportional) + alpha += goFactor.w*mix3*pwfValue3; + #if vtkLightComplexity > 0 + applyLighting(tColor3, normalMat[3]); + #endif + #else + tColor3 *= pwfValue3; + alpha *= mix(pwfValue3, 1.0, (1.0 - mix3)); + #endif + #endif + #endif + + // perform final independent blend + vec3 tColor = mix0 * tColor0; + #if vtkNumComponents > 1 + tColor += mix1 * tColor1; + #if vtkNumComponents > 2 + tColor += mix2 * tColor2; + #if vtkNumComponents > 3 + tColor += mix3 * tColor3; + #endif + #endif + #endif + + return vec4(tColor, alpha); + #else + /* + * Mix the color information from all the independent components to get a single rgba output + * Gradient opactity factors and normals are not computed + * + * You can compute these using: + * - computeMat4Normal: always available, compute normal only for non proportional components, used by default independent component mix + * - computeDensityNormal & computeNormalForDensity: available if ((LightComplexity > 0) || GradientOpacityOn) && ComputeNormalFromOpacity), + * used by dependent component color mix, see code for Additive preset in OpenGl/VolumeMapper + * - computeGradientOpacityFactor: always available, used in a lot of places + * + * Using applyAllLightning() is advised for shading but some features don't work well with it (volume shadows, LAO) + * mix0, mix1, ... are defined for each component that is used and correspond to the componentWeight + */ + //VTK::CustomComponentsColorMix::Impl + #endif + #else + // dependent components + + // compute normal if needed + #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) + // use component 3 of the opacity texture as getTextureValue() sets alpha to the opacity value + #ifdef vtkComputeNormalFromOpacity + vec3 scalarInterp[2]; + vec4 normal0 = computeNormalForDensity(posIS, tstep, scalarInterp, 3); + #else + vec4 normal0 = computeNormal(posIS, tstep); + #endif + #endif + + // compute gradient opacity factor enabled + #if defined(vtkGradientOpacityOn) + float gradientOpacity = computeGradientOpacityFactor(normal0.a, goscale0, goshift0, gomin0, gomax0); + #else + const float gradientOpacity = 1.0; + #endif + + // get color and opacity + #if vtkNumComponents == 1 + vec3 tColor = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, 0.5)).rgb; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + if (alpha < EPSILON){ + return vec4(0.0); + } + #endif + #if vtkNumComponents == 2 + vec3 tColor = vec3(tValue.r * cscale0 + cshift0); + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale1 + oshift1, 0.5)).r; + #endif + #if vtkNumComponents == 3 + vec3 tColor; + tColor.r = tValue.r * cscale0 + cshift0; + tColor.g = tValue.g * cscale1 + cshift1; + tColor.b = tValue.b * cscale2 + cshift2; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale0 + oshift0, 0.5)).r; + #endif + #if vtkNumComponents == 4 + vec3 tColor; + tColor.r = tValue.r * cscale0 + cshift0; + tColor.g = tValue.g * cscale1 + cshift1; + tColor.b = tValue.b * cscale2 + cshift2; + float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, 0.5)).r; + #endif + + // lighting + #if (vtkLightComplexity > 0) + #ifdef vtkComputeNormalFromOpacity + vec4 normalLight; + if (!all(equal(normal0, vec4(0.0)))) { + scalarInterp[0] = scalarInterp[0] * oscale0 + oshift0; + scalarInterp[1] = scalarInterp[1] * oscale0 + oshift0; + normalLight = computeDensityNormal(scalarInterp, 0.5, gradientOpacity); + if (all(equal(normalLight, vec4(0.0)))) { + normalLight = normal0; + } + } + #else + vec4 normalLight = normal0; + #endif + tColor = applyAllLightning(tColor, alpha, posIS, normalLight); + #endif + + return vec4(tColor, alpha); + #endif // dependent +#endif +} + +bool valueWithinScalarRange(vec4 val, vec4 min, vec4 max) { + bool withinRange = false; + #if vtkNumComponents == 1 + if (val.r >= min.r && val.r <= max.r) { + withinRange = true; + } + #else + #ifdef UseIndependentComponents + #if vtkNumComponents == 2 + if (val.r >= min.r && val.r <= max.r && + val.g >= min.g && val.g <= max.g) { + withinRange = true; + } + #else + if (all(greaterThanEqual(val, ipScalarRangeMin)) && + all(lessThanEqual(val, ipScalarRangeMax))) { + withinRange = true; + } + #endif + #endif + #endif + return withinRange; +} + +#if vtkBlendMode == 6 +bool checkOnEdgeForNeighbor(int i, int j, int s, vec3 stepIS) { + vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), gl_FragCoord.y + float(j), gl_FragCoord.z, gl_FragCoord.w); + vec3 originalNeighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); + + bool justSawIt = false; + + vec3 neighborPosIS = originalNeighborPosIS; + + float stepsTraveled = 0.0; + + + // float neighborValue; + for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { + ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); + vec4 texValue = texelFetch(texture1, texCoord, 0); + + if (int(texValue.g) == s) { + justSawIt = true; + break; + } + neighborPosIS += stepIS; + } + + if (justSawIt){ + return false; + } + + + neighborPosIS = originalNeighborPosIS; + for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { + ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); + vec4 texValue = texelFetch(texture1, texCoord, 0); + + if (int(texValue.g) == s) { + justSawIt = true; + break; + } + neighborPosIS -= stepIS; + } + + + if (!justSawIt) { + // onedge + vec3 tColorSegment = texture2D(ctexture, vec2(float(s) * cscale1 + cshift1, height1)).rgb; + float pwfValueSegment = texture2D(otexture, vec2(float(s) * oscale1 + oshift1, height1)).r; + gl_FragData[0] = vec4(tColorSegment, pwfValueSegment); + return true; + } + + // not on edge + return false; +} + +#endif + + +//======================================================================= +// Apply the specified blend mode operation along the ray's path. +// +void applyBlend(vec3 posIS, vec3 endIS, vec3 tdims) +{ + vec3 tstep = 1.0/tdims; + + // start slightly inside and apply some jitter + vec3 delta = endIS - posIS; + vec3 stepIS = normalize(delta)*sampleDistanceIS; + float raySteps = length(delta)/sampleDistanceIS; + + // Initialize arrays to false + // avoid 0.0 jitter + float jitter = 0.01 + 0.99*texture2D(jtexture, gl_FragCoord.xy/32.0).r; + float stepsTraveled = jitter; + + // local vars for the loop + vec4 color = vec4(0.0, 0.0, 0.0, 0.0); + vec4 tValue; + vec4 tColor; + + // if we have less than one step then pick the middle point + // as our value + // if (raySteps <= 1.0) + // { + // posIS = (posIS + endIS)*0.5; + // } + + // Perform initial step at the volume boundary + // compute the scalar + tValue = getTextureValue(posIS); + + #if vtkBlendMode == 6 + if (raySteps <= 1.0) + { + gl_FragData[0] = getColorForValue(tValue, posIS, tstep); + return; + } + + vec4 value = tValue; + posIS += (jitter*stepIS); + vec3 maxPosIS = posIS; // Store the position of the max value + int segmentIndex = int(value.g); + bool originalPosHasSeenNonZero = false; + + uint bitmask = 0u; + + if (segmentIndex != 0) { + // Tried using the segment index in an boolean array but reading + // from the array by dynamic indexing was horrondously slow + // so use bit masking instead and assign 1 to the bit corresponding to the segment index + // and later check if the bit is set via bit operations + setBit(segmentIndex); + } + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + segmentIndex = int(tValue.g); + + if (segmentIndex != 0) { + originalPosHasSeenNonZero = true; + setBit(segmentIndex); + } + + if (tValue.r > value.r) { + value = tValue; // Update the max value + maxPosIS = posIS; // Update the position where max occurred + } + + // Otherwise, continue along the ray + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + tValue = getTextureValue(posIS); + + if (tValue.r > value.r) { + value = tValue; // Update the max value + maxPosIS = posIS; // Update the position where max occurred + } + + // If we have not seen any non-zero segments, we can return early + // and grab color from the actual center value first component (image) + if (!originalPosHasSeenNonZero) { + gl_FragData[0] = getColorForValue(value, maxPosIS, tstep); + return; + } + + // probably we can make this configurable but for now we will use the same + // sample distance as the original sample distance + float neighborSampleDistanceIS = sampleDistanceIS; + + vec3 neighborRayStepsIS = stepIS; + float neighborRaySteps = raySteps; + bool shouldLookInAllNeighbors = false; + + float minVoxelSpacing = min(volumeSpacings[0], min(volumeSpacings[1], volumeSpacings[2])); + vec4 base = vec4(gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); + + vec4 baseXPlus = vec4(gl_FragCoord.x + 1.0, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); + vec4 baseYPlus = vec4(gl_FragCoord.x, gl_FragCoord.y + 1.0, gl_FragCoord.z, gl_FragCoord.w); + + vec3 baseWorld = fragCoordToWorld(base); + vec3 baseXPlusWorld = fragCoordToWorld(baseXPlus); + vec3 baseYPlusWorld = fragCoordToWorld(baseYPlus); + + float XPlusDiff = length(baseXPlusWorld - baseWorld); + float YPlusDiff = length(baseYPlusWorld - baseWorld); + + float minFragSpacingWorld = min(XPlusDiff, YPlusDiff); + + for (int s = 1; s < MAX_SEGMENT_INDEX; s++) { + // bail out quickly if the segment index has not + // been seen by the center segment + if (!isBitSet(s)) { + continue; + } + + // Use texture sampling for outlineThickness so that we can have + // per segment thickness + float textureCoordinate = float(s - 1) / 1024.0; + float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; + + int actualThickness = int(textureValue * 255.0); + + // check the extreme points in the neighborhood since there is a better + // chance of finding the edge there, so that we can bail out + // faster if we find the edge + bool onEdge = + checkOnEdgeForNeighbor(-actualThickness, -actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(actualThickness, actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(actualThickness, -actualThickness, s, stepIS) || + checkOnEdgeForNeighbor(-actualThickness, +actualThickness, s, stepIS); + + if (onEdge) { + return; + } + + // since the next step is computationally expensive, we need to perform + // some optimizations to avoid it if possible. One of the optimizations + // is to check the whether the minimum of the voxel spacing is greater than + // the 2 * the thickness of the outline segment. If that is the case + // then we can safely skip the next step since we can be sure that the + // the previous 4 checks on the extreme points would caught the entirety + // of the all the fragments inside. i.e., this happens when we zoom out, + if (minVoxelSpacing > (2.0 * float(actualThickness) - 1.0) * minFragSpacingWorld) { + continue; + } + + // Loop through the rest, skipping the processed extremes and the center + for (int i = -actualThickness; i <= actualThickness; i++) { + for (int j = -actualThickness; j <= actualThickness; j++) { + if (i == 0 && j == 0) continue; // Skip the center + if (abs(i) == actualThickness && abs(j) == actualThickness) continue; // Skip corners + if (checkOnEdgeForNeighbor(i, j, s, stepIS )) { + return; + } + } + } + } + + vec3 tColor0 = texture2D(ctexture, vec2(value.r * cscale0 + cshift0, height0)).rgb; + float pwfValue0 = texture2D(otexture, vec2(value.r * oscale0 + oshift0, height0)).r; + gl_FragData[0] = vec4(tColor0, pwfValue0); + #endif + #if vtkBlendMode == 0 // COMPOSITE_BLEND + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + + // handle very thin volumes + if (raySteps <= 1.0) + { + tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps); + gl_FragData[0] = tColor; + return; + } + + tColor.a = 1.0 - pow(1.0 - tColor.a, jitter); + color = vec4(tColor.rgb*tColor.a, tColor.a); + posIS += (jitter*stepIS); + + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + + float mix = (1.0 - color.a); + + // this line should not be needed but nvidia seems to not handle + // the break correctly on windows/chrome 58 angle + //mix = mix * sign(max(raySteps - stepsTraveled - 1.0, 0.0)); + + color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; + stepsTraveled++; + posIS += stepIS; + if (color.a > 0.99) { color.a = 1.0; break; } + } + + if (color.a < 0.99 && (raySteps - stepsTraveled) > 0.0) + { + posIS = endIS; + + // compute the scalar + tValue = getTextureValue(posIS); + + // now map through opacity and color + tColor = getColorForValue(tValue, posIS, tstep); + tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps - stepsTraveled); + + float mix = (1.0 - color.a); + color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; + } + + gl_FragData[0] = vec4(color.rgb/color.a, color.a); + #endif + #if vtkBlendMode == 1 || vtkBlendMode == 2 + // MAXIMUM_INTENSITY_BLEND || MINIMUM_INTENSITY_BLEND + // Find maximum/minimum intensity along the ray. + + // Define the operation we will use (min or max) + #if vtkBlendMode == 1 + #define OP max + #else + #define OP min + #endif + + // If the clipping range is shorter than the sample distance + // we can skip the sampling loop along the ray. + if (raySteps <= 1.0) + { + gl_FragData[0] = getColorForValue(tValue, posIS, tstep); + return; + } + + vec4 value = tValue; + posIS += (jitter*stepIS); + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // Update the maximum value if necessary + value = OP(tValue, value); + + // Otherwise, continue along the ray + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + tValue = getTextureValue(posIS); + value = OP(tValue, value); + + // Now map through opacity and color + gl_FragData[0] = getColorForValue(value, posIS, tstep); + #endif + #if vtkBlendMode == 3 || vtkBlendMode == 4 //AVERAGE_INTENSITY_BLEND || ADDITIVE_BLEND + vec4 sum = vec4(0.); + + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + sum += tValue; + } + + if (raySteps <= 1.0) { + gl_FragData[0] = getColorForValue(sum, posIS, tstep); + return; + } + + posIS += (jitter*stepIS); + + // Sample along the ray until MaximumSamplesValue, + // ending slightly inside the total distance + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + // If we have reached the last step, break + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar + tValue = getTextureValue(posIS); + + // One can control the scalar range by setting the AverageIPScalarRange to disregard scalar values, not in the range of interest, from the average computation. + // Notes: + // - We are comparing all values in the texture to see if any of them + // are outside of the scalar range. In the future we might want to allow + // scalar ranges for each component. + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + // Sum the values across each step in the path + sum += tValue; + } + stepsTraveled++; + posIS += stepIS; + } + + // Perform the last step along the ray using the + // residual distance + posIS = endIS; + + // compute the scalar + tValue = getTextureValue(posIS); + + // One can control the scalar range by setting the IPScalarRange to disregard scalar values, not in the range of interest, from the average computation + if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { + sum += tValue; + + stepsTraveled++; + } + + #if vtkBlendMode == 3 // Average + sum /= vec4(stepsTraveled, stepsTraveled, stepsTraveled, 1.0); + #endif + + gl_FragData[0] = getColorForValue(sum, posIS, tstep); + #endif + #if vtkBlendMode == 5 // RADON + float normalizedRayIntensity = 1.0; + + // handle very thin volumes + if (raySteps <= 1.0) + { + tValue = getTextureValue(posIS); + normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity, 0.5)); + return; + } + + posIS += (jitter*stepIS); + + for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) + { + if (stepsTraveled + 1.0 >= raySteps) { break; } + + // compute the scalar value + tValue = getTextureValue(posIS); + + // Convert scalar value to normalizedRayIntensity coefficient and accumulate normalizedRayIntensity + normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; + + posIS += stepIS; + stepsTraveled++; + } + + // map normalizedRayIntensity to color + gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity , 0.5)); + + #endif +} + +//======================================================================= +// Compute a new start and end point for a given ray based +// on the provided bounded clipping plane (aka a rectangle) +void getRayPointIntersectionBounds( + vec3 rayPos, vec3 rayDir, + vec3 planeDir, float planeDist, + inout vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY, + float vSize1, float vSize2) +{ + float result = dot(rayDir, planeDir); + if (abs(result) < 1e-6) + { + return; + } + result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result; + vec3 xposVC = rayPos + rayDir*result; + vec3 vxpos = xposVC - vOriginVC; + vec2 vpos = vec2( + dot(vxpos, vPlaneX), + dot(vxpos, vPlaneY)); + + // on some apple nvidia systems this does not work + // if (vpos.x < 0.0 || vpos.x > vSize1 || + // vpos.y < 0.0 || vpos.y > vSize2) + // even just + // if (vpos.x < 0.0 || vpos.y < 0.0) + // fails + // so instead we compute a value that represents in and out + //and then compute the return using this value + float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds + float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out + + tbounds = mix( + vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value + tbounds, // out value + check); // 0 in 1 out +} + +//======================================================================= +// given a +// - ray direction (rayDir) +// - starting point (vertexVCVSOutput) +// - bounding planes of the volume +// - optionally depth buffer values +// - far clipping plane +// compute the start/end distances of the ray we need to cast +vec2 computeRayDistances(vec3 rayDir, vec3 tdims) +{ + vec2 dists = vec2(100.0*camFar, -1.0); + + vec3 vSize = vSpacing*tdims; + + // all this is in View Coordinates + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal0, vPlaneDistance0, dists, vPlaneNormal2, vPlaneNormal4, + vSize.y, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal1, vPlaneDistance1, dists, vPlaneNormal2, vPlaneNormal4, + vSize.y, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal2, vPlaneDistance2, dists, vPlaneNormal0, vPlaneNormal4, + vSize.x, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal3, vPlaneDistance3, dists, vPlaneNormal0, vPlaneNormal4, + vSize.x, vSize.z); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal4, vPlaneDistance4, dists, vPlaneNormal0, vPlaneNormal2, + vSize.x, vSize.y); + getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, + vPlaneNormal5, vPlaneDistance5, dists, vPlaneNormal0, vPlaneNormal2, + vSize.x, vSize.y); + + //VTK::ClipPlane::Impl + + // do not go behind front clipping plane + dists.x = max(0.0,dists.x); + + // do not go PAST far clipping plane + float farDist = -camThick/rayDir.z; + dists.y = min(farDist,dists.y); + + // Do not go past the zbuffer value if set + // This is used for intermixing opaque geometry + //VTK::ZBuffer::Impl + + return dists; +} + +//======================================================================= +// Compute the index space starting position (pos) and end +// position +// +void computeIndexSpaceValues(out vec3 pos, out vec3 endPos, vec3 rayDir, vec2 dists) +{ + // compute starting and ending values in volume space + pos = vertexVCVSOutput + dists.x*rayDir; + pos = pos - vOriginVC; + // convert to volume basis and origin + pos = vec3( + dot(pos, vPlaneNormal0), + dot(pos, vPlaneNormal2), + dot(pos, vPlaneNormal4)); + + endPos = vertexVCVSOutput + dists.y*rayDir; + endPos = endPos - vOriginVC; + endPos = vec3( + dot(endPos, vPlaneNormal0), + dot(endPos, vPlaneNormal2), + dot(endPos, vPlaneNormal4)); + + float delta = length(endPos - pos); + + pos *= vVCToIJK; + endPos *= vVCToIJK; + + float delta2 = length(endPos - pos); + sampleDistanceIS = sampleDistance*delta2/delta; + #ifdef VolumeShadowOn + sampleDistanceISVS = sampleDistanceIS * volumeShadowSamplingDistFactor; + #endif +} + +void main() +{ + + if (cameraParallel == 1) + { + // Camera is parallel, so the rayDir is just the direction of the camera. + rayDirVC = vec3(0.0, 0.0, -1.0); + } else { + // camera is at 0,0,0 so rayDir for perspective is just the vc coord + rayDirVC = normalize(vertexVCVSOutput); + } + + vec3 tdims = vec3(volumeDimensions); + + // compute the start and end points for the ray + vec2 rayStartEndDistancesVC = computeRayDistances(rayDirVC, tdims); + + // do we need to composite? aka does the ray have any length + // If not, bail out early + if (rayStartEndDistancesVC.y <= rayStartEndDistancesVC.x) + { + discard; + } + + // IS = Index Space + vec3 posIS; + vec3 endIS; + computeIndexSpaceValues(posIS, endIS, rayDirVC, rayStartEndDistancesVC); + + // Perform the blending operation along the ray + applyBlend(posIS, endIS, tdims); +} +`;const{vtkWarningMacro:qae,vtkErrorMacro:sS}=m1;function Xae(n){switch(n){case W7.CUSTOM:return"//VTK::CustomColorMix";case W7.ADDITIVE:return` + // compute normals + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) + vec3 scalarInterp0[2]; + vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); + scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; + scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; + normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); + + vec3 scalarInterp1[2]; + vec4 normalLight1 = computeNormalForDensity(posIS, tstep, scalarInterp1, 1); + scalarInterp1[0] = scalarInterp1[0] * oscale1 + oshift1; + scalarInterp1[1] = scalarInterp1[1] * oscale1 + oshift1; + normalLight1 = computeDensityNormal(scalarInterp1, height1, 1.0); + #else + vec4 normalLight0 = normalMat[0]; + vec4 normalLight1 = normalMat[1]; + #endif + + // compute opacities + float opacity0 = pwfValue0; + float opacity1 = pwfValue1; + #ifdef vtkGradientOpacityOn + float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + opacity0 *= gof0; + float gof1 = computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); + opacity1 *= gof1; + #endif + float opacitySum = opacity0 + opacity1; + if (opacitySum <= 0.0) { + return vec4(0.0); + } + + // mix the colors and opacities + tColor0 = applyAllLightning(tColor0, opacity0, posIS, normalLight0); + tColor1 = applyAllLightning(tColor1, opacity1, posIS, normalLight1); + vec3 mixedColor = (opacity0 * tColor0 + opacity1 * tColor1) / opacitySum; + return vec4(mixedColor, min(1.0, opacitySum)); +`;case W7.COLORIZE:return` + // compute normals + mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); + #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) + vec3 scalarInterp0[2]; + vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); + scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; + scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; + normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); + #else + vec4 normalLight0 = normalMat[0]; + #endif + + // compute opacities + float opacity0 = pwfValue0; + #ifdef vtkGradientOpacityOn + float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); + opacity0 *= gof0; + #endif + + // mix the colors and opacities + vec3 color = tColor0 * mix(vec3(1.0), tColor1, pwfValue1); + color = applyAllLightning(color, opacity0, posIS, normalLight0); + return vec4(color, opacity0); +`;default:return null}}function Yae(n,e){e.classHierarchy.push("vtkOpenGLVolumeMapper");function o(l){[e._scalars,e._scalarOpacityFunc,e._colorTransferFunc,e._labelOutlineThicknessArray].forEach(c=>l.unregisterGraphicsResourceUser(c,n))}n.buildPass=()=>{e.zBufferTexture=null},n.zBufferPass=(l,c)=>{if(l){const g=c.getZBufferTexture();g!==e.zBufferTexture&&(e.zBufferTexture=g)}},n.opaqueZBufferPass=(l,c)=>n.zBufferPass(l,c),n.volumePass=(l,c)=>{if(l){const g=e._openGLRenderWindow;e._openGLRenderWindow=n.getLastAncestorOfType("vtkOpenGLRenderWindow"),g&&!g.isDeleted()&&g!==e._openGLRenderWindow&&o(g),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.jitterTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLVolume=n.getFirstAncestorOfType("vtkOpenGLVolume");const v=e.openGLVolume.getRenderable();e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer");const _=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(_.getActiveCamera()),n.renderPiece(_,v)}},n.getShaderTemplate=(l,c,g)=>{l.Vertex=Hae,l.Fragment=Kae,l.Geometry=""},n.useIndependentComponents=l=>{var T,P;const c=l.getIndependentComponents(),g=e.currentInput,v=(P=(T=g==null?void 0:g.getPointData())==null?void 0:T.getScalars())==null?void 0:P.getNumberOfComponents(),_=l.getColorMixPreset();return c&&v>=2||!!_},n.replaceShaderValues=(l,c,g)=>{const v=g.getProperty();let _=l.Fragment;v.getInterpolationType()===xE.LINEAR&&(_=zn.substitute(_,"//VTK::TrilinearOn","#define vtkTrilinearOn").result),n.isLabelmapOutlineRequired(g)===!0&&(_=zn.substitute(_,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result),e.renderable.getBlendMode()===M7.LABELMAP_EDGE_PROJECTION_BLEND&&(_=zn.substitute(_,"//VTK::LabelEdgeProjectionOn","#define vtkLabelEdgeProjectionOn").result);const R=e.scalarTexture.getComponents();_=zn.substitute(_,"//VTK::NumComponents",`#define vtkNumComponents ${R}`).result;const L=n.useIndependentComponents(v);L&&(_=zn.substitute(_,"//VTK::IndependentComponentsOn","#define UseIndependentComponents").result);const V=[],U=[];for(let le=0;le0&&(e.renderable.getVolumetricScatteringBlending()>0&&(_=zn.substitute(_,"//VTK::VolumeShadowOn","#define VolumeShadowOn").result),e.renderable.getVolumetricScatteringBlending()<1&&(_=zn.substitute(_,"//VTK::SurfaceShadowOn","#define SurfaceShadowOn").result),e.renderable.getLocalAmbientOcclusion()&&v.getAmbient()>0&&(_=zn.substitute(_,"//VTK::localAmbientOcclusionOn","#define localAmbientOcclusionOn").result));const ne=L?R:1;e.gopacity=!1;for(let le=0;!e.gopacity&&le{if(e.lightComplexity===0)return;let v=l.Fragment,_=0;c.getLights().forEach(T=>{T.getSwitch()&&(_+=1)}),v=zn.substitute(v,"//VTK::Light::Dec",["uniform int lightNum;","uniform bool twoSidedLighting;",`uniform vec3 lightColor[${_}];`,`uniform vec3 lightDirectionVC[${_}]; // normalized`,`uniform vec3 lightHalfAngleVC[${_}];`,"//VTK::Light::Dec"],!1).result,e.lightComplexity===3&&(v=zn.substitute(v,"//VTK::Light::Dec",[`uniform vec3 lightPositionVC[${_}];`,`uniform vec3 lightAttenuation[${_}];`,`uniform float lightConeAngle[${_}];`,`uniform float lightExponent[${_}];`,`uniform int lightPositional[${_}];`],!1).result),e.renderable.getVolumetricScatteringBlending()>0&&(v=zn.substitute(v,"//VTK::VolumeShadow::Dec",["uniform float volumetricScatteringBlending;","uniform float giReach;","uniform float volumeShadowSamplingDistFactor;","uniform float anisotropy;","uniform float anisotropy2;"],!1).result),e.renderable.getLocalAmbientOcclusion()&&g.getProperty().getAmbient()>0&&(v=zn.substitute(v,"//VTK::LAO::Dec",["uniform int kernelRadius;",`uniform vec2 kernelSample[${e.renderable.getLAOKernelRadius()}];`,"uniform int kernelSize;"],!1).result),l.Fragment=v},n.replaceShaderClippingPlane=(l,c,g)=>{let v=l.Fragment;if(e.renderable.getClippingPlanes().length>0){const _=e.renderable.getClippingPlanes().length;v=zn.substitute(v,"//VTK::ClipPlane::Dec",["uniform vec3 vClipPlaneNormals[6];","uniform float vClipPlaneDistances[6];","uniform vec3 vClipPlaneOrigins[6];","uniform int clip_numPlanes;","//VTK::ClipPlane::Dec","#define vtkClippingPlanesOn"],!1).result,v=zn.substitute(v,"//VTK::ClipPlane::Impl",[`for(int i = 0; i < ${_}; i++) {`," float rayDirRatio = dot(rayDir, vClipPlaneNormals[i]);"," float equationResult = dot(vertexVCVSOutput, vClipPlaneNormals[i]) + vClipPlaneDistances[i];"," if (rayDirRatio == 0.0)"," {"," if (equationResult < 0.0) dists.x = dists.y;"," continue;"," }"," float result = -1.0 * equationResult / rayDirRatio;"," if (rayDirRatio < 0.0) dists.y = min(dists.y, result);"," else dists.x = max(dists.x, result);","}","//VTK::ClipPlane::Impl"],!1).result}l.Fragment=v};const i=(l,c)=>{let g=0;l.getProperty().getShade()&&e.renderable.getBlendMode()===M7.COMPOSITE_BLEND&&(g=0,e.numberOfLights=0,c.forEach(v=>{v.getSwitch()>0&&(e.numberOfLights++,g===0&&(g=1)),g===1&&(e.numberOfLights>1||v.getIntensity()!==1||!v.lightTypeIsHeadLight())&&(g=2),g<3&&v.getPositional()&&(g=3)})),g!==e.lightComplexity&&(e.lightComplexity=g,n.modified())};n.getNeedToRebuildShaders=(l,c,g)=>{var z;const v=g.getProperty();i(g,c.getLights());const _=e.scalarTexture.getComponents(),T=[],P=[];for(let $=0;$<_;$++)T.push(v.getOpacityMode($)),P.push(v.getForceNearestInterpolation($));const I=e.currentInput.getSpatialExtent(),R=e.currentInput.getSpacing(),L=new Float64Array(3);Ao(L,(I[1]-I[0])*R[0],(I[3]-I[2])*R[1],(I[5]-I[4])*R[2]);const V=K1(L)/n.getCurrentSampleDistance(c),U=!!e.zBufferTexture,j={iComps:v.getIndependentComponents(),colorMixPreset:v.getColorMixPreset(),interpolationType:v.getInterpolationType(),useLabelOutline:n.isLabelmapOutlineRequired(g),numComp:_,maxSamples:V,useGradientOpacity:v.getUseGradientOpacity(0),blendMode:e.renderable.getBlendMode(),hasZBufferTexture:U,opacityModes:T,forceNearestInterps:P};return((z=l.getProgram())==null?void 0:z.getHandle())===0||l.getShaderSourceTime().getMTime(){if(n.getNeedToRebuildShaders(l,c,g)){const v={Vertex:null,Fragment:null,Geometry:null};n.buildShaders(v,c,g);const _=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(v.Vertex,v.Fragment,v.Geometry);_!==l.getProgram()&&(l.setProgram(_),l.getVAO().releaseGraphicsResources()),l.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(l.getProgram());l.getVAO().bind(),n.setMapperShaderParameters(l,c,g),n.setCameraShaderParameters(l,c,g),n.setPropertyShaderParameters(l,c,g),n.getClippingPlaneShaderParameters(l,c,g)},n.setMapperShaderParameters=(l,c,g)=>{var P;const v=l.getProgram();l.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>l.getAttributeUpdateTime().getMTime()||l.getShaderSourceTime().getMTime()>l.getAttributeUpdateTime().getMTime())&&(v.isAttributeUsed("vertexDC")&&(l.getVAO().addAttributeArray(v,l.getCABO(),"vertexDC",l.getCABO().getVertexOffset(),l.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||sS("Error setting vertexDC in shader VAO.")),l.getAttributeUpdateTime().modified()),v.setUniformi("texture1",e.scalarTexture.getTextureUnit()),v.setUniformf("sampleDistance",n.getCurrentSampleDistance(c));const _=e.scalarTexture.getVolumeInfo(),T=e.renderable.getIpScalarRange();if((P=_==null?void 0:_.dataComputedScale)!=null&&P.length){const I=[],R=[];for(let L=0;L<4;L++)I[L]=T[0]*_.dataComputedScale[L]+_.dataComputedOffset[L],R[L]=T[1]*_.dataComputedScale[L]+_.dataComputedOffset[L],I[L]=(I[L]-_.offset[L])/_.scale[L],R[L]=(R[L]-_.offset[L])/_.scale[L];v.setUniform4f("ipScalarRangeMin",I[0],I[1],I[2],I[3]),v.setUniform4f("ipScalarRangeMax",R[0],R[1],R[2],R[3])}if(e.zBufferTexture!==null){v.setUniformi("zBufferTexture",e.zBufferTexture.getTextureUnit());const I=e._useSmallViewport?[e._smallViewportWidth,e._smallViewportHeight]:e._openGLRenderWindow.getFramebufferSize();v.setUniformf("vpZWidth",I[0]),v.setUniformf("vpZHeight",I[1])}},n.setCameraShaderParameters=(l,c,g)=>{const v=e.openGLCamera.getKeyMatrices(c),_=e.openGLVolume.getKeyMatrices();Y0(e.modelToView,v.wcvc,_.mcwc);const T=l.getProgram(),P=e.openGLCamera.getRenderable(),I=P.getClippingRange();T.setUniformf("camThick",I[1]-I[0]),T.setUniformf("camNear",I[0]),T.setUniformf("camFar",I[1]);const R=e.currentInput.getBounds(),L=e.currentInput.getDimensions(),V=new Float64Array(3),U=new Float64Array(3);let j=1,z=-1,$=1,K=-1;for(let Je=0;Je<8;++Je){if(Ao(V,R[Je%2],R[2+Math.floor(Je/2)%2],R[4+Math.floor(Je/4)]),g0(V,V,e.modelToView),!P.getParallelProjection()){Uo(U,V);const it=-I[0]/V[2];k2(V,U,it)}g0(V,V,v.vcpc),j=Math.min(V[0],j),z=Math.max(V[0],z),$=Math.min(V[1],$),K=Math.max(V[1],K)}T.setUniformf("dcxmin",j),T.setUniformf("dcxmax",z),T.setUniformf("dcymin",$),T.setUniformf("dcymax",K),T.isUniformUsed("cameraParallel")&&T.setUniformi("cameraParallel",P.getParallelProjection());const X=e.currentInput.getSpatialExtent(),ee=e.currentInput.getSpacing(),ne=new Float64Array(3);Ao(ne,(X[1]-X[0])*ee[0],(X[3]-X[2])*ee[1],(X[5]-X[4])*ee[2]),T.setUniform3f("vSpacing",ee[0],ee[1],ee[2]),Ao(V,X[0],X[2],X[4]),e.currentInput.indexToWorldVec3(V,V),g0(V,V,e.modelToView),T.setUniform3f("vOriginVC",V[0],V[1],V[2]);const le=e.currentInput.getIndexToWorld();Y0(e.idxToView,e.modelToView,le),y8(e.idxNormalMatrix,v.normalMatrix,_.normalMatrix),y8(e.idxNormalMatrix,e.idxNormalMatrix,e.currentInput.getDirectionByReference());const ce=K1(ne)/n.getCurrentSampleDistance(c);ce>e.renderable.getMaximumSamplesPerRay()&&qae(`The number of steps required ${Math.ceil(ce)} is larger than the + specified maximum number of steps ${e.renderable.getMaximumSamplesPerRay()}. + Please either change the + volumeMapper sampleDistance or its maximum number of samples.`);const ge=new Float64Array(3);if(Ao(ge,1,1,1),lie(ge,ge,ne),T.setUniform3f("vVCToIJK",ge[0],ge[1],ge[2]),T.setUniform3i("volumeDimensions",L[0],L[1],L[2]),T.setUniform3f("volumeSpacings",ee[0],ee[1],ee[2]),!e._openGLRenderWindow.getWebgl2()){const Je=e.scalarTexture.getVolumeInfo();T.setUniformf("texWidth",e.scalarTexture.getWidth()),T.setUniformf("texHeight",e.scalarTexture.getHeight()),T.setUniformi("xreps",Je.xreps),T.setUniformi("xstride",Je.xstride),T.setUniformi("ystride",Je.ystride)}const pe=new Float64Array(3),we=new Float64Array(3);for(let Je=0;Je<6;++Je){switch(Je){case 1:Ao(pe,-1,0,0),Ao(we,X[0],X[2],X[4]);break;case 2:Ao(pe,0,1,0),Ao(we,X[1],X[3],X[5]);break;case 3:Ao(pe,0,-1,0),Ao(we,X[0],X[2],X[4]);break;case 4:Ao(pe,0,0,1),Ao(we,X[1],X[3],X[5]);break;case 5:Ao(pe,0,0,-1),Ao(we,X[0],X[2],X[4]);break;case 0:default:Ao(pe,1,0,0),Ao(we,X[1],X[3],X[5]);break}V7(pe,pe,e.idxNormalMatrix),g0(we,we,e.idxToView);const it=-1*mi(we,pe);T.setUniform3f(`vPlaneNormal${Je}`,pe[0],pe[1],pe[2]),T.setUniformf(`vPlaneDistance${Je}`,it)}if(n.isLabelmapOutlineRequired(g)){const it=e.currentInput.getWorldToIndex();T.setUniformMatrix("vWCtoIDX",it);const Ge=c.getActiveCamera(),[Ke,qe]=Ge.getClippingRange(),ut=Ge.getDistance();Ge.setClippingRange(ut,ut+.1);const wt=e.openGLCamera.getKeyMatrices(c);Ia(e.projectionToWorld,wt.wcpc),Ge.setClippingRange(Ke,qe),e.openGLCamera.getKeyMatrices(c),T.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const Et=n.getRenderTargetSize();T.setUniformf("vpWidth",Et[0]),T.setUniformf("vpHeight",Et[1]);const qt=n.getRenderTargetOffset();T.setUniformf("vpOffsetX",qt[0]/Et[0]),T.setUniformf("vpOffsetY",qt[1]/Et[1])}if(Ia(e.projectionToView,v.vcpc),T.setUniformMatrix("PCVCMatrix",e.projectionToView),e.lightComplexity===0)return;let Te=0;const Ve=[],Pe=[],je=[];if(c.getLights().forEach(Je=>{if(Je.getSwitch()>0){const Ge=Je.getColor(),Ke=Je.getIntensity();Ve[0+Te*3]=Ge[0]*Ke,Ve[1+Te*3]=Ge[1]*Ke,Ve[2+Te*3]=Ge[2]*Ke;const qe=Je.getDirection();Ao(pe,qe[0],qe[1],qe[2]),V7(pe,pe,v.normalMatrix),Uo(pe,pe),Pe[0+Te*3]=pe[0],Pe[1+Te*3]=pe[1],Pe[2+Te*3]=pe[2],je[0+Te*3]=-.5*pe[0],je[1+Te*3]=-.5*pe[1],je[2+Te*3]=-.5*(pe[2]-1),Te++}}),T.setUniformi("twoSidedLighting",c.getTwoSidedLighting()),T.setUniformi("lightNum",Te),T.setUniform3fv("lightColor",Ve),T.setUniform3fv("lightDirectionVC",Pe),T.setUniform3fv("lightHalfAngleVC",je),e.lightComplexity===3){Te=0;const Je=[],it=[],Ge=[],Ke=[],qe=[];c.getLights().forEach(ut=>{if(ut.getSwitch()>0){const Et=ut.getAttenuationValues();it[0+Te*3]=Et[0],it[1+Te*3]=Et[1],it[2+Te*3]=Et[2],Ke[Te]=ut.getExponent(),Ge[Te]=ut.getConeAngle(),qe[Te]=ut.getPositional();const qt=ut.getTransformedPosition();g0(qt,qt,e.modelToView),Je[0+Te*3]=qt[0],Je[1+Te*3]=qt[1],Je[2+Te*3]=qt[2],Te+=1}}),T.setUniform3fv("lightPositionVC",Je),T.setUniform3fv("lightAttenuation",it),T.setUniformfv("lightConeAngle",Ge),T.setUniformfv("lightExponent",Ke),T.setUniformiv("lightPositional",qe)}if(e.renderable.getVolumetricScatteringBlending()>0&&(T.setUniformf("giReach",e.renderable.getGlobalIlluminationReach()),T.setUniformf("volumetricScatteringBlending",e.renderable.getVolumetricScatteringBlending()),T.setUniformf("volumeShadowSamplingDistFactor",e.renderable.getVolumeShadowSamplingDistFactor()),T.setUniformf("anisotropy",e.renderable.getAnisotropy()),T.setUniformf("anisotropy2",e.renderable.getAnisotropy()**2)),e.renderable.getLocalAmbientOcclusion()&&g.getProperty().getAmbient()>0){const Je=e.renderable.getLAOKernelSize();T.setUniformi("kernelSize",Je);const it=[];for(let Ge=0;Ge{const v=l.getProgram();v.setUniformi("ctexture",e.colorTexture.getTextureUnit()),v.setUniformi("otexture",e.opacityTexture.getTextureUnit()),v.setUniformi("jtexture",e.jitterTexture.getTextureUnit()),v.setUniformi("ttexture",e.labelOutlineThicknessTexture.getTextureUnit());const _=e.scalarTexture.getVolumeInfo(),T=g.getProperty(),P=e.scalarTexture.getComponents(),I=n.useIndependentComponents(T);if(I)for(let L=0;L0&&(v.setUniformf("vAmbient",T.getAmbient()),v.setUniformf("vDiffuse",T.getDiffuse()),v.setUniformf("vSpecular",T.getSpecular()),v.setUniformf("vSpecularPower",T.getSpecularPower()))},n.getClippingPlaneShaderParameters=(l,c,g)=>{if(e.renderable.getClippingPlanes().length>0){const v=e.openGLCamera.getKeyMatrices(c),_=[],T=[],P=[],I=e.renderable.getClippingPlanes(),R=I.length;for(let V=0;V{e._animationRateSubscription&&(e._animationRateSubscription.unsubscribe(),e._animationRateSubscription=null)},()=>{e._openGLRenderWindow&&o(e._openGLRenderWindow)},n.delete),n.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:l,vsize:c}=e._openGLRenderer.getTiledSizeAndOrigin();return[l,c]},n.getRenderTargetOffset=()=>{const{lowerLeftU:l,lowerLeftV:c}=e._openGLRenderer.getTiledSizeAndOrigin();return[l,c]},n.getCurrentSampleDistance=l=>{const c=l.getVTKWindow().getInteractor(),g=e.renderable.getSampleDistance();if(c.isAnimating()){const v=e.renderable.getInteractionSampleDistanceFactor();return g*v}return g},n.renderPieceStart=(l,c)=>{const g=l.getVTKWindow().getInteractor();if(e._lastScale||(e._lastScale=e.renderable.getInitialInteractionScale()),e._useSmallViewport=!1,g.isAnimating()&&e._lastScale>1.5&&(e._useSmallViewport=!0),e._animationRateSubscription||(e._animationRateSubscription=g.onAnimationFrameRateUpdate(()=>{if(e.renderable.getAutoAdjustSampleDistances()){const _=g.getRecentAnimationFrameRate(),T=g.getDesiredUpdateRate()/_;(T>1.15||T<.85)&&(e._lastScale*=T),e._lastScale>400&&(e._lastScale=400),e._lastScale<1.5&&(e._lastScale=1.5)}else e._lastScale=e.renderable.getImageSampleDistance()*e.renderable.getImageSampleDistance()})),e._useSmallViewport){const _=e._openGLRenderWindow.getFramebufferSize(),T=1/Math.sqrt(e._lastScale);if(e._smallViewportWidth=Math.ceil(T*_[0]),e._smallViewportHeight=Math.ceil(T*_[1]),e._smallViewportHeight>_[1]&&(e._smallViewportHeight=_[1]),e._smallViewportWidth>_[0]&&(e._smallViewportWidth=_[0]),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.getGLFramebuffer()===null)e.framebuffer.create(_[0],_[1]),e.framebuffer.populateFramebuffer();else{const I=e.framebuffer.getSize();(!I||I[0]!==_[0]||I[1]!==_[1])&&(e.framebuffer.create(_[0],_[1]),e.framebuffer.populateFramebuffer())}e.framebuffer.bind();const P=e.context;P.clearColor(0,0,0,0),P.colorMask(!0,!0,!0,!0),P.clear(P.COLOR_BUFFER_BIT),P.viewport(0,0,e._smallViewportWidth,e._smallViewportHeight),e.fvp=[e._smallViewportWidth/_[0],e._smallViewportHeight/_[1]]}e.context.disable(e.context.DEPTH_TEST),n.updateBufferObjects(l,c),c.getProperty().getInterpolationType()===xE.NEAREST?(e.scalarTexture.setMinificationFilter(qi.NEAREST),e.scalarTexture.setMagnificationFilter(qi.NEAREST)):(e.scalarTexture.setMinificationFilter(qi.LINEAR),e.scalarTexture.setMagnificationFilter(qi.LINEAR)),e.zBufferTexture!==null&&e.zBufferTexture.activate()},n.renderPieceDraw=(l,c)=>{const g=e.context;e.scalarTexture.activate(),e.opacityTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.colorTexture.activate(),e.jitterTexture.activate(),n.updateShaders(e.tris,l,c),g.drawArrays(g.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.scalarTexture.deactivate(),e.colorTexture.deactivate(),e.opacityTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.jitterTexture.deactivate()},n.renderPieceFinish=(l,c)=>{if(e.zBufferTexture!==null&&e.zBufferTexture.deactivate(),e._useSmallViewport){if(e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null){e.copyShader=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","uniform vec2 tfactor;","varying vec2 tcoord;","void main() { tcoord = vec2(vertexDC.x*0.5 + 0.5, vertexDC.y*0.5 + 0.5) * tfactor; gl_Position = vertexDC; }"].join(` +`),["//VTK::System::Dec","//VTK::Output::Dec","uniform sampler2D texture1;","varying vec2 tcoord;","void main() { gl_FragData[0] = texture2D(texture1,tcoord); }"].join(` +`),"");const T=e.copyShader;e.copyVAO=hO.newInstance(),e.copyVAO.setOpenGLRenderWindow(e._openGLRenderWindow),e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(T,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||sS("Error setting vertexDC in copy shader VAO.")}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.copyShader);const g=e._openGLRenderWindow.getFramebufferSize();e.context.viewport(0,0,g[0],g[1]);const v=e.framebuffer.getColorTexture();v.activate(),e.copyShader.setUniformi("texture",v.getTextureUnit()),e.copyShader.setUniform2f("tfactor",e.fvp[0],e.fvp[1]);const _=e.context;_.blendFuncSeparate(_.ONE,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),v.deactivate(),_.blendFuncSeparate(_.SRC_ALPHA,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA)}},n.renderPiece=(l,c)=>{if(n.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),n.invokeEvent({type:"EndEvent"}),!e.currentInput){sS("No input!");return}n.renderPieceStart(l,c),n.renderPieceDraw(l,c),n.renderPieceFinish(l,c)},n.computeBounds=(l,c)=>{if(!n.getInput()){W8(e.Bounds);return}e.bounds=n.getInput().getBounds()},n.updateBufferObjects=(l,c)=>{n.getNeedToRebuildBufferObjects(l,c)&&n.buildBufferObjects(l,c)},n.getNeedToRebuildBufferObjects=(l,c)=>{var g,v,_;return e.VBOBuildTime.getMTime(){var le,ce;const g=e.currentInput;if(!g)return;const v=g.getPointData()&&g.getPointData().getScalars();if(!v)return;const _=c.getProperty();if(!e.jitterTexture.getHandle()){const ge=new Uint8Array(1024);for(let pe=0;pe<32*32;++pe)ge[pe]=255*Math.random();e.jitterTexture.setMinificationFilter(qi.LINEAR),e.jitterTexture.setMagnificationFilter(qi.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,b0.UNSIGNED_CHAR,ge)}const T=v.getNumberOfComponents(),P=n.useIndependentComponents(_),I=P?T:1,R=_.getScalarOpacity(),L=e._openGLRenderWindow.getGraphicsResourceForObject(R);let V=df(R,P,I);if(!(L!=null&&L.oglObject)||L.hash!==V){e.opacityTexture=Cs.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const ge=1024,pe=ge*2*I,we=new Float32Array(pe),Te=new Float32Array(ge);for(let Ve=0;Ve1?1:-1,ge[Ve*3+2]=-1;const pe=new Uint16Array(8);pe[0]=3,pe[1]=0,pe[2]=1,pe[3]=3,pe[4]=3,pe[5]=0,pe[6]=3,pe[7]=2;const we=d0.newInstance({numberOfComponents:3,values:ge});we.setName("points");const Te=d0.newInstance({numberOfComponents:1,values:pe});e.tris.getCABO().createVBO(Te,"polys",Au.SURFACE,{points:we,cellOffset:0})}e.VBOBuildTime.modified()},n.updateLabelOutlineThicknessTexture=l=>{var T;const c=l.getProperty().getLabelOutlineThickness(),g=e._openGLRenderWindow.getGraphicsResourceForObject(c),v=`${c.join("-")}`;if(!((T=g==null?void 0:g.oglObject)!=null&&T.getHandle())||(g==null?void 0:g.hash)!==v){e.labelOutlineThicknessTexture=Cs.newInstance(),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const P=1024,I=1,R=P*I,L=new Uint8Array(R);for(let V=0;V{const c=l.getProperty(),g=e.renderable;return c.getUseLabelOutline()||g.getBlendMode()===M7.LABELMAP_EDGE_PROJECTION_BLEND}}const Jae={context:null,VBOBuildTime:null,scalarTexture:null,opacityTexture:null,opacityTextureString:null,colorTexture:null,colorTextureString:null,jitterTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,tris:null,framebuffer:null,copyShader:null,copyVAO:null,lastXYF:1,targetXYF:1,zBufferTexture:null,lastZBufferTexture:null,lightComplexity:0,fullViewportTime:1,idxToView:null,idxNormalMatrix:null,modelToView:null,projectionToView:null,avgWindowArea:0,avgFrameTime:0};function VW(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jae,o),Ha.extend(n,e,o),qd.implementBuildShadersWithReplacements(n,e,o),e.VBOBuildTime={},_s(e.VBOBuildTime,{mtime:0}),e.tris=a4.newInstance(),e.jitterTexture=Cs.newInstance(),e.jitterTexture.setWrapS(Qm.REPEAT),e.jitterTexture.setWrapT(Qm.REPEAT),e.framebuffer=cC.newInstance(),e.idxToView=zi(new Float64Array(16)),e.idxNormalMatrix=pc(new Float64Array(9)),e.modelToView=zi(new Float64Array(16)),e.projectionToView=zi(new Float64Array(16)),e.projectionToWorld=zi(new Float64Array(16)),s2(n,e,["context"]),Yae(n,e)}const UW=as(VW,"vtkOpenGLVolumeMapper");var BW={newInstance:UW,extend:VW};R2("vtkVolumeMapper",UW);function MO(n,e){switch(n){case"Float32Array":return Float32Array;case"Uint8Array":return Uint8Array;case"Uint32Array":return Uint32Array;case"Uint16Array":case"Int16Array":return e?(console.debug(`${n} is not supported for volume rendering, switching back to Float32Array`),Float32Array):n==="Uint16Array"?Uint16Array:Int16Array;default:if(n)throw new Error("TargetBuffer should be Float32Array, Uint8Array, Uint16Array, Int16Array, or Uint32Array");return Float32Array}}function PO(n,e,o={}){const{isVolumeBuffer:i=!1}=o,l=MO(n,i),c=l.BYTES_PER_ELEMENT;return{numBytes:e*c,TypedArrayConstructor:l}}function ha(n){return Zm.get(n)}function Il(){return Zm.getAll()}const Xw=n=>n&&typeof n=="object"&&Object.prototype.toString.call(n)!=="[object RegExp]"&&Object.prototype.toString.call(n)!=="[object Date]",Zae=n=>Array.isArray(n)?[]:{},ev=(n,e)=>e&&e.clone===!0&&Xw(n)?o2(Zae(n),n,e):n,cL=(n,e,o)=>{const i=n.slice();return e.forEach(function(l,c){typeof i[c]>"u"?i[c]=ev(l,o):Xw(l)?i[c]=o2(n[c],l,o):n.indexOf(l)===-1&&(i[c]=ev(l,o))}),i},Qae=(n,e,o)=>{const i={};return Xw(n)&&Object.keys(n).forEach(function(l){i[l]=ev(n[l],o)}),Object.keys(e).forEach(function(l){!Xw(e[l])||!n[l]?i[l]=ev(e[l],o):i[l]=o2(n[l],e[l],o)}),i},o2=(n={},e={},o=void 0)=>{const i=Array.isArray(e),c=(o||{arrayMerge:cL}).arrayMerge||cL;return i?Array.isArray(n)?c(n,e,o):ev(e,o):Qae(n,e,o)};/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */const GW=Symbol("Comlink.proxy"),e2e=Symbol("Comlink.endpoint"),WW=Symbol("Comlink.releaseProxy"),aS=Symbol("Comlink.finalizer"),$7=Symbol("Comlink.thrown"),$W=n=>typeof n=="object"&&n!==null||typeof n=="function",t2e={canHandle:n=>$W(n)&&n[GW],serialize(n){const{port1:e,port2:o}=new MessageChannel;return RO(n,e),[o,[o]]},deserialize(n){return n.start(),SE(n)}},n2e={canHandle:n=>$W(n)&&$7 in n,serialize({value:n}){let e;return n instanceof Error?e={isError:!0,value:{message:n.message,name:n.name,stack:n.stack}}:e={isError:!1,value:n},[e,[]]},deserialize(n){throw n.isError?Object.assign(new Error(n.value.message),n.value):n.value}},jW=new Map([["proxy",t2e],["throw",n2e]]);function r2e(n,e){for(const o of n)if(e===o||o==="*"||o instanceof RegExp&&o.test(e))return!0;return!1}function RO(n,e=globalThis,o=["*"]){e.addEventListener("message",function i(l){if(!l||!l.data)return;if(!r2e(o,l.origin)){console.warn(`Invalid origin '${l.origin}' for comlink proxy`);return}const{id:c,type:g,path:v}=Object.assign({path:[]},l.data),_=(l.data.argumentList||[]).map(pg);let T;try{const P=v.slice(0,-1).reduce((R,L)=>R[L],n),I=v.reduce((R,L)=>R[L],n);switch(g){case"GET":T=I;break;case"SET":P[v.slice(-1)[0]]=pg(l.data.value),T=!0;break;case"APPLY":T=I.apply(P,_);break;case"CONSTRUCT":{const R=new I(..._);T=qW(R)}break;case"ENDPOINT":{const{port1:R,port2:L}=new MessageChannel;RO(n,L),T=l2e(R,[R])}break;case"RELEASE":T=void 0;break;default:return}}catch(P){T={value:P,[$7]:0}}Promise.resolve(T).catch(P=>({value:P,[$7]:0})).then(P=>{const[I,R]=Zw(P);e.postMessage(Object.assign(Object.assign({},I),{id:c}),R),g==="RELEASE"&&(e.removeEventListener("message",i),zW(e),aS in n&&typeof n[aS]=="function"&&n[aS]())}).catch(P=>{const[I,R]=Zw({value:new TypeError("Unserializable return value"),[$7]:0});e.postMessage(Object.assign(Object.assign({},I),{id:c}),R)})}),e.start&&e.start()}function i2e(n){return n.constructor.name==="MessagePort"}function zW(n){i2e(n)&&n.close()}function SE(n,e){const o=new Map;return n.addEventListener("message",function(l){const{data:c}=l;if(!c||!c.id)return;const g=o.get(c.id);if(g)try{g(c)}finally{o.delete(c.id)}}),TE(n,o,[],e)}function Fy(n){if(n)throw new Error("Proxy has been released and is not useable")}function HW(n){return p6(n,new Map,{type:"RELEASE"}).then(()=>{zW(n)})}const Yw=new WeakMap,Jw="FinalizationRegistry"in globalThis&&new FinalizationRegistry(n=>{const e=(Yw.get(n)||0)-1;Yw.set(n,e),e===0&&HW(n)});function o2e(n,e){const o=(Yw.get(e)||0)+1;Yw.set(e,o),Jw&&Jw.register(n,e,n)}function s2e(n){Jw&&Jw.unregister(n)}function TE(n,e,o=[],i=function(){}){let l=!1;const c=new Proxy(i,{get(g,v){if(Fy(l),v===WW)return()=>{s2e(c),HW(n),e.clear(),l=!0};if(v==="then"){if(o.length===0)return{then:()=>c};const _=p6(n,e,{type:"GET",path:o.map(T=>T.toString())}).then(pg);return _.then.bind(_)}return TE(n,e,[...o,v])},set(g,v,_){Fy(l);const[T,P]=Zw(_);return p6(n,e,{type:"SET",path:[...o,v].map(I=>I.toString()),value:T},P).then(pg)},apply(g,v,_){Fy(l);const T=o[o.length-1];if(T===e2e)return p6(n,e,{type:"ENDPOINT"}).then(pg);if(T==="bind")return TE(n,e,o.slice(0,-1));const[P,I]=fL(_);return p6(n,e,{type:"APPLY",path:o.map(R=>R.toString()),argumentList:P},I).then(pg)},construct(g,v){Fy(l);const[_,T]=fL(v);return p6(n,e,{type:"CONSTRUCT",path:o.map(P=>P.toString()),argumentList:_},T).then(pg)}});return o2e(c,n),c}function a2e(n){return Array.prototype.concat.apply([],n)}function fL(n){const e=n.map(Zw);return[e.map(o=>o[0]),a2e(e.map(o=>o[1]))]}const KW=new WeakMap;function l2e(n,e){return KW.set(n,e),n}function qW(n){return Object.assign(n,{[GW]:!0})}function Zw(n){for(const[e,o]of jW)if(o.canHandle(n)){const[i,l]=o.serialize(n);return[{type:"HANDLER",name:e,value:i},l]}return[{type:"RAW",value:n},KW.get(n)||[]]}function pg(n){switch(n.type){case"HANDLER":return jW.get(n.name).deserialize(n.value);case"RAW":return n.value}}function p6(n,e,o,i){return new Promise(l=>{const c=u2e();e.set(c,l),n.start&&n.start(),n.postMessage(Object.assign({id:c},o),i)})}function u2e(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}class AO{constructor(e){this.numRequests={[R0.Interaction]:0,[R0.Thumbnail]:0,[R0.Prefetch]:0,[R0.Compute]:0},this.id=e||H0(),this.requestPool={[R0.Interaction]:{0:[]},[R0.Thumbnail]:{0:[]},[R0.Prefetch]:{0:[]},[R0.Compute]:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={[R0.Interaction]:0,[R0.Thumbnail]:0,[R0.Prefetch]:0,[R0.Compute]:0},this.maxNumRequests={[R0.Interaction]:6,[R0.Thumbnail]:6,[R0.Prefetch]:5,[R0.Compute]:1e3}}setMaxSimultaneousRequests(e,o){this.maxNumRequests[e]=o}getMaxSimultaneousRequests(e){return this.maxNumRequests[e]}destroy(){this.timeoutHandle&&window.clearTimeout(this.timeoutHandle)}addRequest(e,o,i,l=0){const c={requestFn:e,type:o,additionalDetails:i};this.requestPool[o][l]===void 0&&(this.requestPool[o][l]=[]),this.requestPool[o][l].push(c),this.startGrabbing()}filterRequests(e){Object.keys(this.requestPool).forEach(o=>{const i=this.requestPool[o];Object.keys(i).forEach(l=>{i[l]=i[l].filter(c=>e(c))})})}clearRequestStack(e){if(!this.requestPool[e])throw new Error(`No category for the type ${e} found`);this.requestPool[e]={0:[]}}sendRequests(e){const o=this.maxNumRequests[e]-this.numRequests[e];let i=0;for(let l=0;l{this.numRequests[e]--,this.startAgain()}):(this.numRequests[e]--,i++)}}return i&&this.startAgain(),!0}getNextRequest(e){const o=this.getSortedPriorityGroups(e);for(const i of o)if(this.requestPool[e][i].length)return this.requestPool[e][i].shift();return null}startGrabbing(){const e=this.sendRequests(R0.Interaction),o=this.sendRequests(R0.Thumbnail),i=this.sendRequests(R0.Prefetch),l=this.sendRequests(R0.Compute);!e&&!o&&!i&&!l&&(this.awake=!1)}startAgain(){this.awake&&(this.grabDelay!==void 0?this.timeoutHandle||(this.timeoutHandle=window.setTimeout(()=>{this.timeoutHandle=null,this.startGrabbing()},this.grabDelay)):this.startGrabbing())}getSortedPriorityGroups(e){return Object.keys(this.requestPool[e]).map(Number).filter(i=>this.requestPool[e][i].length).sort((i,l)=>i-l)}getRequestPool(){return this.requestPool}}class XW{constructor(){this.workerRegistry={},this.workerPoolManager=new AO("webworker")}registerWorker(e,o,i={}){var _;const{maxWorkerInstances:l=1,overwrite:c=!1,autoTerminateOnIdle:g={enabled:!1,idleTimeThreshold:3e3}}=i;if(this.workerRegistry[e]&&!c){console.warn(`Worker type '${e}' is already registered...`);return}c&&((_=this.workerRegistry[e])!=null&&_.idleCheckIntervalId)&&clearInterval(this.workerRegistry[e].idleCheckIntervalId);const v={workerFn:null,instances:[],loadCounters:[],lastActiveTime:[],nativeWorkers:[],autoTerminateOnIdle:g.enabled,idleCheckIntervalId:null,idleTimeThreshold:g.idleTimeThreshold};v.loadCounters=Array(l).fill(0),v.lastActiveTime=Array(l).fill(null);for(let T=0;Tg!==null);let l=0,c=o.loadCounters[0]||0;for(let g=1;g{const P=async()=>{const{api:I,index:R}=this.getNextWorkerAPI(e);if(!I){const L=new Error(`No available worker instance for '${e}'`);console.error(L),T(L);return}try{let L=[];v.length&&(L=v.map(j=>qW(j)));const V=this.workerRegistry[e];V.processing=!0;const U=await I[o](i,...L);V.processing=!1,V.lastActiveTime[R]=Date.now(),V.autoTerminateOnIdle&&!V.idleCheckIntervalId&&V.idleTimeThreshold&&(V.idleCheckIntervalId=setInterval(()=>{this.terminateIdleWorkers(e,V.idleTimeThreshold)},V.idleTimeThreshold)),_(U)}catch(L){console.error(`Error executing method '${o}' on worker '${e}':`,L),T(L)}finally{this.workerRegistry[e].loadCounters[R]--}};this.workerPoolManager.addRequest(P,l,g,c)})}terminateIdleWorkers(e,o){const i=this.workerRegistry[e];if(i.processing)return;const l=Date.now();i.instances.forEach((c,g)=>{const v=i.lastActiveTime[g],_=v!==null&&i.loadCounters[g]>0,T=l-v;!_&&T>o&&this.terminateWorkerInstance(e,g)})}terminate(e){const o=this.workerRegistry[e];if(!o){console.error(`Worker type '${e}' is not registered.`);return}o.instances.forEach((i,l)=>{this.terminateWorkerInstance(e,l)})}terminateWorkerInstance(e,o){const i=this.workerRegistry[e],l=i.instances[o];l!==null&&(l[WW](),i.nativeWorkers[o].terminate(),i.instances[o]=null,i.lastActiveTime[o]=null)}}const lS=4,c2e=5,f2e=1,hL=[1,1];function dL({ext:n,filterType:e,texData:o,internalFormat:i,glDataType:l}){try{const c=document.createElement("canvas");c.width=lS,c.height=lS;const g=c.getContext("webgl2");if(!g)return!1;const v=`#version 300 es + void main() { + gl_PointSize = ${lS.toFixed(1)}; + gl_Position = vec4(0, 0, 0, 1); + } + `,_=`#version 300 es + precision highp float; + precision highp int; + precision highp sampler2D; + + uniform sampler2D u_image; + + out vec4 color; + + void main() { + vec4 intColor = texture(u_image, gl_PointCoord.xy); + color = vec4(vec3(intColor.rrr), 1); + } + `;let T;if(n&&(T=g.getExtension(n),!T))return!1;const P=g.createShader(g.VERTEX_SHADER);if(g.shaderSource(P,v),g.compileShader(P),!g.getShaderParameter(P,g.COMPILE_STATUS))return!1;const I=g.createShader(g.FRAGMENT_SHADER);if(g.shaderSource(I,_),g.compileShader(I),!g.getShaderParameter(I,g.COMPILE_STATUS))return!1;const R=g.createProgram();if(g.attachShader(R,P),g.attachShader(R,I),g.linkProgram(R),!g.getProgramParameter(R,g.LINK_STATUS))return!1;const L=g.createTexture();g.bindTexture(g.TEXTURE_2D,L),g.texImage2D(g.TEXTURE_2D,0,i(g,T),c2e,f2e,0,g.RED,l(g,T),o);const V=e==="LINEAR"?g.LINEAR:g.NEAREST;g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,V),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,V),g.useProgram(R),g.drawArrays(g.POINTS,0,1);const U=new Uint8Array(4);g.readPixels(hL[0],hL[1],1,1,g.RGBA,g.UNSIGNED_BYTE,U);const[j,z,$]=U,K=g.getExtension("WEBGL_lose_context");return K&&K.loseContext(),j===z&&z===$&&j!==0}catch{return!1}}function h2e(){const n=new Int16Array([32767,2e3,3e3,4e3,5e3,16784,7e3,8e3,9e3,32767]);return{norm16:dL({ext:"EXT_texture_norm16",filterType:"NEAREST",texData:n,internalFormat:(e,o)=>o.R16_SNORM_EXT,glDataType:e=>e.SHORT}),norm16Linear:dL({ext:"EXT_texture_norm16",filterType:"LINEAR",texData:n,internalFormat:(e,o)=>o.R16_SNORM_EXT,glDataType:e=>e.SHORT})}}let G3=!1;const EE={gpuTier:{tier:2},isMobile:!1,rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,strictZSpacingForVolumeViewport:!0},peerImport:n=>null};let _g={...EE,rendering:{...EE.rendering}},um=null,YW=!1;function d2e(){const n=document.createElement("canvas");return n.getContext("webgl2")||n.getContext("webgl")||n.getContext("experimental-webgl")}function g2e(){const n=d2e();return n instanceof WebGLRenderingContext||n instanceof WebGL2RenderingContext}function p2e(){const n=h2e();return n.norm16&&n.norm16Linear}function JW(){return/iPad|iPhone|iPod/.test(navigator.platform)?!0:navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&navigator.platform.includes("MacIntel")}function m2e(n=_g){var o;return G3||(YW=p2e(),_g=o2(EE,n),JW()&&((o=n.rendering)!=null&&o.preferSizeOverAccuracy?_g.rendering.preferSizeOverAccuracy=!0:console.log("norm16 texture not supported, you can turn on the preferSizeOverAccuracy flag to use native data type, but be aware of the inaccuracy of the rendering in high bits")),g2e()?console.log("CornerstoneRender: using GPU rendering"):(console.log("CornerstoneRender: GPU not detected, using CPU rendering"),_g.rendering.useCPURendering=!0),G3=!0,um||(um=new XW),G3)}function v2e(){return YW}function LO(){return!JW()}function cm(){return _g.rendering.useCPURendering}function k2e(){return G3}function NO(){return _g}function Mh(){return um||(um=new XW),um}async function y2e(n){return _g.peerImport(n)}function w2e(n,e){e.classHierarchy.push("vtkStreamingOpenGLVolumeMapper"),n.buildBufferObjects=(o,i)=>{var U;const l=e.currentInput;if(!l)return;const c=i.getProperty();if(!e.jitterTexture.getHandle()){const j=new Uint8Array(1024);for(let z=0;z<32*32;++z)j[z]=255*Math.random();e.jitterTexture.setMinificationFilter(qi.LINEAR),e.jitterTexture.setMagnificationFilter(qi.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,b0.UNSIGNED_CHAR,j)}const{numberOfComponents:g}=l.get("numberOfComponents"),v=n.useIndependentComponents(c),_=c.getScalarOpacity(),T=e._openGLRenderWindow.getGraphicsResourceForObject(_);let P=df(_,v,g);if(!(T!=null&&T.oglObject)||T.hash!==P){e.opacityTexture=Cs.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const j=1024,z=j*2*g,$=new Float32Array(z),K=new Float32Array(j);for(let X=0;X1?1:-1,j[X*3+2]=-1;const z=new Uint16Array(8);z[0]=3,z[1]=0,z[2]=1,z[3]=3,z[4]=3,z[5]=0,z[6]=3,z[7]=2;const $=d0.newInstance({numberOfComponents:3,values:j});$.setName("points");const K=d0.newInstance({numberOfComponents:1,values:z});e.tris.getCABO().createVBO(K,"polys",Au.SURFACE,{points:$,cellOffset:0})}e.VBOBuildTime.modified()},n.getNeedToRebuildBufferObjects=(o,i)=>{var l,c,g,v,_,T;return e.VBOBuildTime.getMTime(){if(o.isDeleted())return null;let i=0,l=o.getClassName(i++),c=!1;const g=Object.keys(e.overrides);for(;l&&!c;)g.includes(l)?c=!0:l=o.getClassName(i++);if(!c)return null;const v=e.getModelInitialValues(o),_=e.overrides[l](v);return _.setMyFactory(n),_},e.overrides=ZW,e.getModelInitialValues=o=>{const i={};return o.getClassName()==="vtkSharedVolumeMapper"&&(i.scalarTexture=o.getScalarTexture()),i}}const E2e={};function QW(n,e,o={}){Object.assign(e,E2e,o),JI.extend(n,e,o),T2e(n,e),I2("vtkActor",_oe.newInstance),I2("vtkActor2D",Eoe.newInstance),I2("vtkCamera",Moe.newInstance),I2("vtkGlyph3DMapper",eae.newInstance),I2("vtkImageMapper",aae.newInstance),I2("vtkImageCPRMapper",hae.newInstance),I2("vtkImageSlice",mae.newInstance),I2("vtkMapper",kC.newInstance),I2("vtkPixelSpaceCallbackMapper",Cae.newInstance),I2("vtkRenderer",Eae.newInstance),I2("vtkSkybox",Mae.newInstance),I2("vtkSphereMapper",bae.newInstance),I2("vtkStickMapper",Gae.newInstance),I2("vtkTexture",Cs.newInstance),I2("vtkVolume",zae.newInstance),I2("vtkVolumeMapper",BW.newInstance),I2("vtkSharedVolumeMapper",S2e.newInstance)}const D2e=At.newInstance(QW,"vtkStreamingOpenGLViewNodeFactory"),I2e={newInstance:D2e,extend:QW};function O2e(n,e){e.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}function e$(n,e,o={}){Object.assign(e,o),koe.extend(n,e,o),e.myFactory=I2e.newInstance(),I2("vtkRenderWindow",t$),O2e(n,e)}const t$=At.newInstance(e$,"vtkStreamingOpenGLRenderWindow"),M2e={newInstance:t$,extend:e$},{vtkDebugMacro:Vy}=At;function P2e(n,e){e.classHierarchy.push("vtkCamera");const o=new Float64Array(3),i=new Float64Array([0,0,-1]),l=new Float64Array([0,1,0]),c=zi(new Float64Array(16)),g=zi(new Float64Array(16)),v=new Float64Array(3),_=new Float64Array(3),T=new Float64Array(3),P=zi(new Float64Array(16)),I=zi(new Float64Array(16)),R=new Float64Array(3),L=new Float64Array(3);function V(){e.viewPlaneNormal[0]=-e.directionOfProjection[0],e.viewPlaneNormal[1]=-e.directionOfProjection[1],e.viewPlaneNormal[2]=-e.directionOfProjection[2]}n.orthogonalizeViewUp=()=>{const U=n.getViewMatrix();e.viewUp[0]=U[4],e.viewUp[1]=U[5],e.viewUp[2]=U[6],n.modified()},n.setPosition=(U,j,z)=>{U===e.position[0]&&j===e.position[1]&&z===e.position[2]||(e.position[0]=U,e.position[1]=j,e.position[2]=z,n.computeDistance(),n.modified())},n.setFocalPoint=(U,j,z)=>{U===e.focalPoint[0]&&j===e.focalPoint[1]&&z===e.focalPoint[2]||(e.focalPoint[0]=U,e.focalPoint[1]=j,e.focalPoint[2]=z,n.computeDistance(),n.modified())},n.setDistance=U=>{if(e.distance===U)return;e.distance=U,e.distance<1e-20&&(e.distance=1e-20,Vy("Distance is set to minimum."));const j=e.directionOfProjection;e.focalPoint[0]=e.position[0]+j[0]*e.distance,e.focalPoint[1]=e.position[1]+j[1]*e.distance,e.focalPoint[2]=e.position[2]+j[2]*e.distance,n.modified()},n.computeDistance=()=>{const U=e.focalPoint[0]-e.position[0],j=e.focalPoint[1]-e.position[1],z=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(U*U+j*j+z*z),e.distance<1e-20){e.distance=1e-20,Vy("Distance is set to minimum.");const $=e.directionOfProjection;e.focalPoint[0]=e.position[0]+$[0]*e.distance,e.focalPoint[1]=e.position[1]+$[1]*e.distance,e.focalPoint[2]=e.position[2]+$[2]*e.distance}e.directionOfProjection[0]=U/e.distance,e.directionOfProjection[1]=j/e.distance,e.directionOfProjection[2]=z/e.distance,V()},n.dolly=U=>{if(U<=0)return;const j=e.distance/U;n.setPosition(e.focalPoint[0]-j*e.directionOfProjection[0],e.focalPoint[1]-j*e.directionOfProjection[1],e.focalPoint[2]-j*e.directionOfProjection[2])},n.roll=U=>{const j=e.position,z=e.focalPoint,$=e.viewUp,K=new Float64Array([$[0],$[1],$[2],0]);zi(P);const X=new Float64Array([z[0]-j[0],z[1]-j[1],z[2]-j[2]]);a1(P,P,ia(U),X),Ed(K,K,P),e.viewUp[0]=K[0],e.viewUp[1]=K[1],e.viewUp[2]=K[2],n.modified()},n.azimuth=U=>{const j=e.focalPoint;zi(I),Ns(I,I,j),a1(I,I,ia(U),e.viewUp),Ns(I,I,[-j[0],-j[1],-j[2]]),g0(R,e.position,I),n.setPosition(R[0],R[1],R[2])},n.yaw=U=>{const j=e.position;zi(I),Ns(I,I,j),a1(I,I,ia(U),e.viewUp),Ns(I,I,[-j[0],-j[1],-j[2]]),g0(L,e.focalPoint,I),n.setFocalPoint(L[0],L[1],L[2])},n.elevation=U=>{const j=e.focalPoint,z=n.getViewMatrix(),$=[-z[0],-z[1],-z[2]];zi(I),Ns(I,I,j),a1(I,I,ia(U),$),Ns(I,I,[-j[0],-j[1],-j[2]]),g0(R,e.position,I),n.setPosition(R[0],R[1],R[2])},n.pitch=U=>{const j=e.position,z=n.getViewMatrix(),$=[z[0],z[1],z[2]];zi(I),Ns(I,I,j),a1(I,I,ia(U),$),Ns(I,I,[-j[0],-j[1],-j[2]]),g0(L,e.focalPoint,I),n.setFocalPoint(...L)},n.zoom=U=>{U<=0||(e.parallelProjection?e.parallelScale/=U:e.viewAngle/=U,n.modified())},n.translate=(U,j,z)=>{const $=[U,j,z];bw(e.position,$,e.position),bw(e.focalPoint,$,e.focalPoint),n.computeDistance(),n.modified()},n.applyTransform=U=>{const j=[...e.viewUp,1],z=[],$=[],K=[];j[0]+=e.position[0],j[1]+=e.position[1],j[2]+=e.position[2],Ed(z,[...e.position,1],U),Ed($,[...e.focalPoint,1],U),Ed(K,j,U),K[0]-=z[0],K[1]-=z[1],K[2]-=z[2],n.setPosition(...z.slice(0,3)),n.setFocalPoint(...$.slice(0,3)),n.setViewUp(...K.slice(0,3))},n.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],n.setThickness=U=>{let j=U;j<1e-20&&(j=1e-20,Vy("Thickness is set to minimum.")),n.setClippingRange(e.clippingRange[0],e.clippingRange[0]+j)},n.setThicknessFromFocalPoint=U=>{let j=U;j<1e-20&&(j=1e-20,Vy("Thickness is set to minimum.")),n.setClippingRange(e.distance-j/2,e.distance+j/2)},n.setRoll=U=>{},n.getRoll=()=>{},n.setObliqueAngles=(U,j)=>{},n.getOrientation=()=>{},n.getOrientationWXYZ=()=>{},n.getFrustumPlanes=U=>{},n.getCameraLightTransformMatrix=U=>(Ea(U,e.cameraLightTransform),U),n.computeCameraLightTransform=()=>{Ea(c,n.getViewMatrix()),Ia(c,c),oO(g,[e.distance,e.distance,e.distance]),Y0(c,c,g),zi(e.cameraLightTransform),Ns(e.cameraLightTransform,c,[0,0,-1])},n.deepCopy=U=>{},n.physicalOrientationToWorldDirection=U=>{const j=UA(U[0],U[1],U[2],U[3]),z=Kd(),$=UA(0,0,1,0);return vie(z,j),VA($,j,$),VA($,$,z),[$[0],$[1],$[2]]},n.getPhysicalToWorldMatrix=U=>{n.getWorldToPhysicalMatrix(U),Ia(U,U)},n.getWorldToPhysicalMatrix=U=>{zi(U);const j=[3];ff(e.physicalViewNorth,e.physicalViewUp,j),U[0]=j[0],U[1]=j[1],U[2]=j[2],U[4]=e.physicalViewUp[0],U[5]=e.physicalViewUp[1],U[6]=e.physicalViewUp[2],U[8]=-e.physicalViewNorth[0],U[9]=-e.physicalViewNorth[1],U[10]=-e.physicalViewNorth[2],po(U,U),Ao(v,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),hf(U,U,v),Ns(U,U,e.physicalTranslation)},n.computeViewParametersFromViewMatrix=U=>{Ia(c,U),g0(v,o,c),n.computeDistance();const j=e.distance;n.setPosition(v[0],v[1],v[2]),g0(_,i,c),Wo(_,_,v),Uo(_,_),n.setDirectionOfProjection(_[0],_[1],_[2]),g0(T,l,c),Wo(T,T,v),Uo(T,T),n.setViewUp(T[0],T[1],T[2]),n.setDistance(j)},n.computeViewParametersFromPhysicalMatrix=U=>{n.getWorldToPhysicalMatrix(c),Y0(c,U,c),n.computeViewParametersFromViewMatrix(c)},n.setViewMatrix=U=>{e.viewMatrix=U,e.viewMatrix&&(Ea(c,e.viewMatrix),n.computeViewParametersFromViewMatrix(c),po(e.viewMatrix,e.viewMatrix))},n.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;lO(c,e.position,e.focalPoint,e.viewUp),po(c,c);const U=new Float64Array(16);return Ea(U,c),U},n.setProjectionMatrix=U=>{e.projectionMatrix=U},n.getProjectionMatrix=(U,j,z)=>{const $=new Float64Array(16);if(zi($),e.projectionMatrix){const ee=1/e.physicalScale;return Ao(v,ee,ee,ee),Ea($,e.projectionMatrix),hf($,$,v),po($,$),$}zi(c);const K=e.clippingRange[1]-e.clippingRange[0],X=[e.clippingRange[0]+(j+1)*K/2,e.clippingRange[0]+(z+1)*K/2];if(e.parallelProjection){const ee=e.parallelScale*U,ne=e.parallelScale,le=(e.windowCenter[0]-1)*ee,ce=(e.windowCenter[0]+1)*ee,ge=(e.windowCenter[1]-1)*ne,pe=(e.windowCenter[1]+1)*ne;aO(c,le,ce,ge,pe,X[0],X[1]),po(c,c)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const ee=Math.tan(ia(e.viewAngle)/2);let ne,le;e.useHorizontalViewAngle===!0?(ne=e.clippingRange[0]*ee,le=e.clippingRange[0]*ee/U):(ne=e.clippingRange[0]*ee*U,le=e.clippingRange[0]*ee);const ce=(e.windowCenter[0]-1)*ne,ge=(e.windowCenter[0]+1)*ne,pe=(e.windowCenter[1]-1)*le,we=(e.windowCenter[1]+1)*le,Te=X[0],Ve=X[1];c[0]=2*Te/(ge-ce),c[5]=2*Te/(we-pe),c[2]=(ce+ge)/(ge-ce),c[6]=(pe+we)/(we-pe),c[10]=-(Te+Ve)/(Ve-Te),c[14]=-1,c[11]=-2*Te*Ve/(Ve-Te),c[15]=0}}return Ea($,c),$},n.getCompositeProjectionMatrix=(U,j,z)=>{const $=n.getViewMatrix(),K=n.getProjectionMatrix(U,j,z);return Y0(K,$,K),K},n.setDirectionOfProjection=(U,j,z)=>{if(e.directionOfProjection[0]===U&&e.directionOfProjection[1]===j&&e.directionOfProjection[2]===z)return;e.directionOfProjection[0]=U,e.directionOfProjection[1]=j,e.directionOfProjection[2]=z;const $=e.directionOfProjection;e.focalPoint[0]=e.position[0]+$[0]*e.distance,e.focalPoint[1]=e.position[1]+$[1]*e.distance,e.focalPoint[2]=e.position[2]+$[2]*e.distance,V()},n.setDeviceAngles=(U,j,z,$)=>{const K=[3];ff(e.physicalViewNorth,e.physicalViewUp,K);const X=zi(new Float64Array(16));a1(X,X,ia(U),e.physicalViewUp),a1(X,X,ia(j),K),a1(X,X,ia(z),e.physicalViewNorth),a1(X,X,ia(-$),e.physicalViewUp);const ee=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),ne=new Float64Array(e.physicalViewNorth);g0(ee,ee,X),g0(ne,ne,X),n.setDirectionOfProjection(ee[0],ee[1],ee[2]),n.setViewUp(ne[0],ne[1],ne[2]),n.modified()},n.setOrientationWXYZ=(U,j,z,$)=>{const K=zi(new Float64Array(16));if(U!==0&&(j!==0||z!==0||$!==0)){const ne=ia(U),le=Kd();hC(le,[j,z,$],ne),Uw(K,le)}const X=new Float64Array(3);g0(X,[0,0,-1],K);const ee=new Float64Array(3);g0(ee,[0,1,0],K),n.setDirectionOfProjection(...X),n.setViewUp(...ee),n.modified()},n.computeClippingRange=U=>{let j=null,z=null;j=e.viewPlaneNormal,z=e.position;const $=-j[0],K=-j[1],X=-j[2],ee=-($*z[0]+K*z[1]+X*z[2]),ne=[$*U[0]+K*U[2]+X*U[4]+ee,1e-18];for(let le=0;le<2;le++)for(let ce=0;ce<2;ce++)for(let ge=0;ge<2;ge++){const pe=$*U[ge]+K*U[2+ce]+X*U[4+le]+ee;ne[0]=pene[1]?pe:ne[1]}return ne}}const R2e={position:[0,0,1],focalPoint:[0,0,0],viewUp:[0,1,0],directionOfProjection:[0,0,-1],parallelProjection:!1,useHorizontalViewAngle:!1,viewAngle:30,parallelScale:1,clippingRange:[.01,1000.01],windowCenter:[0,0],viewPlaneNormal:[0,0,1],useOffAxisProjection:!1,screenBottomLeft:[-.5,-.5,-.5],screenBottomRight:[.5,-.5,-.5],screenTopRight:[.5,.5,-.5],freezeFocalPoint:!1,projectionMatrix:null,viewMatrix:null,cameraLightTransform:Dl(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function n$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,R2e,o),At.obj(n,e),At.get(n,e,["distance"]),At.setGet(n,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),At.getArray(n,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),At.setGetArray(n,e,["clippingRange","windowCenter"],2),At.setGetArray(n,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),P2e(n,e)}const A2e=At.newInstance(n$,"vtkCamera");var bO={newInstance:A2e,extend:n$};function L2e(n,e){e.classHierarchy.push("vtkLight");const o=new Float64Array(3);n.getTransformedPosition=()=>(e.transformMatrix?g0(o,e.position,e.transformMatrix):Ao(o,e.position[0],e.position[1],e.position[2]),o),n.getTransformedFocalPoint=()=>(e.transformMatrix?g0(o,e.focalPoint,e.transformMatrix):Ao(o,e.focalPoint[0],e.focalPoint[1],e.focalPoint[2]),o),n.getDirection=()=>(e.directionMTime{const l=new Float64Array(3);z0(l,e.position,i),e.focalPoint=l},n.setDirectionAngle=(i,l)=>{const c=ia(i),g=ia(l);n.setPosition(Math.cos(c)*Math.sin(g),Math.sin(c),Math.cos(c)*Math.cos(g)),n.setFocalPoint(0,0,0),n.setPositional(0)},n.setLightTypeToHeadLight=()=>{n.setLightType("HeadLight")},n.setLightTypeToCameraLight=()=>{n.setLightType("CameraLight")},n.setLightTypeToSceneLight=()=>{n.setTransformMatrix(null),n.setLightType("SceneLight")},n.lightTypeIsHeadLight=()=>e.lightType==="HeadLight",n.lightTypeIsSceneLight=()=>e.lightType==="SceneLight",n.lightTypeIsCameraLight=()=>e.lightType==="CameraLight"}const N2e={switch:!0,intensity:1,color:[1,1,1],position:[0,0,1],focalPoint:[0,0,0],positional:!1,exponent:1,coneAngle:30,coneFalloff:5,attenuationValues:[1,0,0],transformMatrix:null,lightType:"SceneLight",shadowAttenuation:1,direction:[0,0,0],directionMTime:0};function b2e(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,N2e,o),At.obj(n,e),At.setGet(n,e,["intensity","switch","positional","exponent","coneAngle","coneFalloff","transformMatrix","lightType","shadowAttenuation","attenuationValues"]),At.setGetArray(n,e,["color","position","focalPoint","attenuationValues"],3),L2e(n,e)}const F2e=At.newInstance(b2e,"vtkLight");var V2e={newInstance:F2e};const{vtkErrorMacro:j7}=At;function U2e(n){return()=>j7(`vtkViewport::${n} - NOT IMPLEMENTED`)}function B2e(n,e){e.classHierarchy.push("vtkViewport"),n.getViewProps=()=>e.props,n.hasViewProp=i=>e.props.includes(i),n.addViewProp=i=>{i&&!n.hasViewProp(i)&&e.props.push(i)},n.removeViewProp=i=>{const l=e.props.filter(c=>c!==i);e.props.length!==l.length&&(e.props=l)},n.removeAllViewProps=()=>{e.props=[]};function o(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];l.push(i);const c=i.getNestedProps();if(c&&c.length)for(let g=0;g{const i=[];for(let l=0;l{n.removeViewProp(i)},n.getActors2D=()=>(e.actors2D=[],e.props.forEach(i=>{e.actors2D=e.actors2D.concat(i.getActors2D())}),e.actors2D),n.displayToView=()=>j7("call displayToView on your view instead"),n.viewToDisplay=()=>j7("callviewtodisplay on your view instead"),n.getSize=()=>j7("call getSize on your View instead"),n.normalizedDisplayToProjection=(i,l,c)=>{const g=n.normalizedDisplayToNormalizedViewport(i,l,c);return n.normalizedViewportToProjection(g[0],g[1],g[2])},n.normalizedDisplayToNormalizedViewport=(i,l,c)=>{const g=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[(i-e.viewport[0])/g[0],(l-e.viewport[1])/g[1],c]},n.normalizedViewportToProjection=(i,l,c)=>[i*2-1,l*2-1,c*2-1],n.projectionToNormalizedDisplay=(i,l,c)=>{const g=n.projectionToNormalizedViewport(i,l,c);return n.normalizedViewportToNormalizedDisplay(g[0],g[1],g[2])},n.normalizedViewportToNormalizedDisplay=(i,l,c)=>{const g=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[i*g[0]+e.viewport[0],l*g[1]+e.viewport[1],c]},n.projectionToNormalizedViewport=(i,l,c)=>[(i+1)*.5,(l+1)*.5,(c+1)*.5],n.PickPropFrom=U2e("PickPropFrom")}const G2e={background:[0,0,0],background2:[.2,.2,.2],gradientBackground:!1,viewport:[0,0,1,1],aspect:[1,1],pixelAspect:[1,1],props:[],actors2D:[]};function r$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,G2e,o),At.obj(n,e),At.event(n,e,"event"),At.setGetArray(n,e,["viewport"],4),At.setGetArray(n,e,["background","background2"],3),B2e(n,e)}const W2e=At.newInstance(r$,"vtkViewport");var $2e={newInstance:W2e,extend:r$};const{vtkDebugMacro:p3,vtkErrorMacro:cd,vtkWarningMacro:j2e}=m1;function gL(n){return()=>cd(`vtkRenderer::${n} - NOT IMPLEMENTED`)}function z2e(n,e){e.classHierarchy.push("vtkRenderer");const o={type:"ComputeVisiblePropBoundsEvent",renderer:n},i={type:"ResetCameraClippingRangeEvent",renderer:n},l={type:"ResetCameraEvent",renderer:n};n.updateCamera=()=>(e.activeCamera||(p3("No cameras are on, creating one."),n.getActiveCameraAndResetIfCreated()),e.activeCamera.render(n),!0),n.updateLightsGeometryToFollowCamera=()=>{const c=n.getActiveCameraAndResetIfCreated();e.lights.forEach(g=>{g.lightTypeIsSceneLight()||(g.lightTypeIsHeadLight()?(g.setPositionFrom(c.getPositionByReference()),g.setFocalPointFrom(c.getFocalPointByReference()),g.modified(c.getMTime())):g.lightTypeIsCameraLight()?g.setTransformMatrix(c.getCameraLightTransformMatrix(Dl())):cd("light has unknown light type",g.get()))})},n.updateLightGeometry=()=>e.lightFollowCamera?n.updateLightsGeometryToFollowCamera():!0,n.allocateTime=gL("allocateTime"),n.updateGeometry=gL("updateGeometry"),n.getVTKWindow=()=>e._renderWindow,n.setLayer=c=>{p3(n.getClassName(),n,"setting Layer to ",c),e.layer!==c&&(e.layer=c,n.modified()),n.setPreserveColorBuffer(!!c)},n.setActiveCamera=c=>e.activeCamera===c?!1:(e.activeCamera=c,n.modified(),n.invokeEvent({type:"ActiveCameraEvent",camera:c}),!0),n.makeCamera=()=>{const c=bO.newInstance();return n.invokeEvent({type:"CreateCameraEvent",camera:c}),c},n.getActiveCamera=()=>(e.activeCamera||(e.activeCamera=n.makeCamera()),e.activeCamera),n.getActiveCameraAndResetIfCreated=()=>(e.activeCamera||(n.getActiveCamera(),n.resetCamera()),e.activeCamera),n.getActors=()=>(e.actors=[],e.props.forEach(c=>{e.actors=e.actors.concat(c.getActors())}),e.actors),n.addActor=n.addViewProp,n.removeActor=c=>{e.actors=e.actors.filter(g=>g!==c),n.removeViewProp(c),n.modified()},n.removeAllActors=()=>{n.getActors().forEach(g=>{n.removeViewProp(g)}),e.actors=[],n.modified()},n.getVolumes=()=>(e.volumes=[],e.props.forEach(c=>{e.volumes=e.volumes.concat(c.getVolumes())}),e.volumes),n.addVolume=n.addViewProp,n.removeVolume=c=>{e.volumes=e.volumes.filter(g=>g!==c),n.removeViewProp(c),n.modified()},n.removeAllVolumes=()=>{n.getVolumes().forEach(g=>{n.removeViewProp(g)}),e.volumes=[],n.modified()},n.hasLight=c=>e.lights.includes(c),n.addLight=c=>{c&&!n.hasLight(c)&&(e.lights.push(c),n.modified())},n.removeLight=c=>{e.lights=e.lights.filter(g=>g!==c),n.modified()},n.removeAllLights=()=>{e.lights=[],n.modified()},n.setLightCollection=c=>{e.lights=c,n.modified()},n.makeLight=V2e.newInstance,n.createLight=()=>{e.automaticLightCreation&&(e._createdLight&&(n.removeLight(e._createdLight),e._createdLight.delete(),e._createdLight=null),e._createdLight=n.makeLight(),n.addLight(e._createdLight),e._createdLight.setLightTypeToHeadLight(),e._createdLight.setPosition(n.getActiveCamera().getPosition()),e._createdLight.setFocalPoint(n.getActiveCamera().getFocalPoint()))},n.normalizedDisplayToWorld=(c,g,v,_)=>{let T=n.normalizedDisplayToProjection(c,g,v);return T=n.projectionToView(T[0],T[1],T[2],_),n.viewToWorld(T[0],T[1],T[2])},n.worldToNormalizedDisplay=(c,g,v,_)=>{let T=n.worldToView(c,g,v);return T=n.viewToProjection(T[0],T[1],T[2],_),n.projectionToNormalizedDisplay(T[0],T[1],T[2])},n.viewToWorld=(c,g,v)=>{if(e.activeCamera===null)return cd("ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const _=e.activeCamera.getViewMatrix();Ia(_,_),po(_,_);const T=new Float64Array([c,g,v]);return g0(T,T,_),T},n.projectionToView=(c,g,v,_)=>{if(e.activeCamera===null)return cd("ProjectionToView: no active camera, cannot compute projection to view, returning 0,0,0"),[0,0,0];const T=e.activeCamera.getProjectionMatrix(_,-1,1);Ia(T,T),po(T,T);const P=new Float64Array([c,g,v]);return g0(P,P,T),P},n.worldToView=(c,g,v)=>{if(e.activeCamera===null)return cd("WorldToView: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const _=e.activeCamera.getViewMatrix();po(_,_);const T=new Float64Array([c,g,v]);return g0(T,T,_),T},n.viewToProjection=(c,g,v,_)=>{if(e.activeCamera===null)return cd("ViewToProjection: no active camera, cannot compute view to projection, returning 0,0,0"),[0,0,0];const T=e.activeCamera.getProjectionMatrix(_,-1,1);po(T,T);const P=new Float64Array([c,g,v]);return g0(P,P,T),P},n.computeVisiblePropBounds=()=>{e.allBounds[0]=hs.INIT_BOUNDS[0],e.allBounds[1]=hs.INIT_BOUNDS[1],e.allBounds[2]=hs.INIT_BOUNDS[2],e.allBounds[3]=hs.INIT_BOUNDS[3],e.allBounds[4]=hs.INIT_BOUNDS[4],e.allBounds[5]=hs.INIT_BOUNDS[5];let c=!0;n.invokeEvent(o);for(let g=0;ge.allBounds[1]&&(e.allBounds[1]=_[1]),_[2]e.allBounds[3]&&(e.allBounds[3]=_[3]),_[4]e.allBounds[5]&&(e.allBounds[5]=_[5]))}}return c&&(W8(e.allBounds),p3("Can't compute bounds, no 3D props are visible")),e.allBounds},n.resetCamera=function(){const g=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||n.computeVisiblePropBounds(),v=[0,0,0];if(!F7(g))return p3("Cannot reset camera!"),!1;let _=null;if(n.getActiveCamera())_=e.activeCamera.getViewPlaneNormal();else return cd("Trying to reset non-existent camera"),!1;e.activeCamera.setViewAngle(30),v[0]=(g[0]+g[1])/2,v[1]=(g[2]+g[3])/2,v[2]=(g[4]+g[5])/2;let T=g[1]-g[0],P=g[3]-g[2],I=g[5]-g[4];T*=T,P*=P,I*=I;let R=T+P+I;R=R===0?1:R,R=Math.sqrt(R)*.5;const L=ia(e.activeCamera.getViewAngle()),V=R,U=R/Math.sin(L*.5),j=e.activeCamera.getViewUp();return Math.abs(B0(j,_))>.999&&(j2e("Resetting view-up since view plane normal is parallel"),e.activeCamera.setViewUp(-j[2],j[0],j[1])),e.activeCamera.setFocalPoint(v[0],v[1],v[2]),e.activeCamera.setPosition(v[0]+U*_[0],v[1]+U*_[1],v[2]+U*_[2]),n.resetCameraClippingRange(g),e.activeCamera.setParallelScale(V),e.activeCamera.setPhysicalScale(R),e.activeCamera.setPhysicalTranslation(-v[0],-v[1],-v[2]),n.invokeEvent(l),!0},n.resetCameraClippingRange=function(){const g=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||n.computeVisiblePropBounds();if(!F7(g))return p3("Cannot reset camera clipping range!"),!1;if(n.getActiveCameraAndResetIfCreated(),!e.activeCamera)return cd("Trying to reset clipping range of non-existent camera"),!1;const v=e.activeCamera.computeClippingRange(g);let _=0;if(e.activeCamera.getParallelProjection())_=.2*e.activeCamera.getParallelScale();else{const T=ia(e.activeCamera.getViewAngle());_=.2*Math.tan(T/2)*v[1]}return v[1]-v[0]<_&&(_=_-v[1]+v[0],v[1]+=_/2,v[0]-=_/2),v[0]<0&&(v[0]=0),v[0]=.99*v[0]-(v[1]-v[0])*e.clippingRangeExpansion,v[1]=1.01*v[1]+(v[1]-v[0])*e.clippingRangeExpansion,v[0]=v[0]>=v[1]?.01*v[1]:v[0],e.nearClippingPlaneTolerance||(e.nearClippingPlaneTolerance=.01),v[0]{c!==e._renderWindow&&(e._vtkWindow=c,e._renderWindow=c)},n.visibleActorCount=()=>e.props.filter(c=>c.getVisibility()).length,n.visibleVolumeCount=n.visibleActorCount,n.getMTime=()=>{let c=e.mtime;const g=e.activeCamera?e.activeCamera.getMTime():0;g>c&&(c=g);const v=e._createdLight?e._createdLight.getMTime():0;return v>c&&(c=v),c},n.getTransparent=()=>!!e.preserveColorBuffer,n.isActiveCameraCreated=()=>!!e.activeCamera}const H2e={pickedProp:null,activeCamera:null,allBounds:[],ambient:[1,1,1],allocatedRenderTime:100,timeFactor:1,automaticLightCreation:!0,twoSidedLighting:!0,lastRenderTimeInSeconds:-1,renderWindow:null,lights:[],actors:[],volumes:[],lightFollowCamera:!0,numberOfPropsRendered:0,propArray:null,pathArray:null,layer:0,preserveColorBuffer:!1,preserveDepthBuffer:!1,computeVisiblePropBounds:zd(),interactive:!0,nearClippingPlaneTolerance:0,clippingRangeExpansion:.05,erase:!0,draw:!0,useShadows:!1,useDepthPeeling:!1,occlusionRatio:0,maximumNumberOfPeels:4,selector:null,delegate:null,texturedBackground:!1,backgroundTexture:null,environmentTexture:null,environmentTextureDiffuseStrength:1,environmentTextureSpecularStrength:1,useEnvironmentTextureAsBackground:!1,pass:0};function i$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(Object.assign(e,H2e,o),$2e.extend(n,e,o),e.background||(e.background=[0,0,0,1]);e.background.length<3;)e.background.push(0);e.background.length===3&&e.background.push(1),el(n,e,["_renderWindow","allocatedRenderTime","timeFactor","lastRenderTimeInSeconds","numberOfPropsRendered","lastRenderingUsedDepthPeeling","selector"]),s2(n,e,["twoSidedLighting","lightFollowCamera","automaticLightCreation","erase","draw","nearClippingPlaneTolerance","clippingRangeExpansion","backingStore","interactive","layer","preserveColorBuffer","preserveDepthBuffer","useDepthPeeling","occlusionRatio","maximumNumberOfPeels","delegate","backgroundTexture","texturedBackground","environmentTexture","environmentTextureDiffuseStrength","environmentTextureSpecularStrength","useEnvironmentTextureAsBackground","useShadows","pass"]),G8(n,e,["actors","volumes","lights"]),AI(n,e,["background"],4,1),Lv(n,e,["renderWindow"]),z2e(n,e)}const K2e=as(i$,"vtkRenderer");var o$={newInstance:K2e,extend:i$};const q2e={Unknown:0,LeftController:1,RightController:2},X2e={Unknown:0,Trigger:1,TrackPad:2,Grip:3,Thumbstick:4,A:5,B:6,ApplicationMenu:7},Y2e={Unknown:0,TouchpadX:1,TouchpadY:2,ThumbstickX:3,ThumbstickY:4};var s$={Device:q2e,Input:X2e,Axis:Y2e};const{Device:Uy,Input:cg}=s$,{vtkWarningMacro:By,vtkErrorMacro:Gy,normalizeWheel:J2e,vtkOnceErrorMacro:Z2e}=At,i6={ctrlKey:!1,altKey:!1,shiftKey:!1},uS={"xr-standard":[cg.Trigger,cg.Grip,cg.TrackPad,cg.Thumbstick,cg.A,cg.B]},FO=["StartAnimation","Animation","EndAnimation","PointerEnter","PointerLeave","MouseEnter","MouseLeave","StartMouseMove","MouseMove","EndMouseMove","LeftButtonPress","LeftButtonRelease","MiddleButtonPress","MiddleButtonRelease","RightButtonPress","RightButtonRelease","KeyPress","KeyDown","KeyUp","StartMouseWheel","MouseWheel","EndMouseWheel","StartPinch","Pinch","EndPinch","StartPan","Pan","EndPan","StartRotate","Rotate","EndRotate","Button3D","Move3D","StartPointerLock","EndPointerLock","StartInteraction","Interaction","EndInteraction","AnimationFrameRateUpdate"];function m3(n){n.cancelable&&n.preventDefault()}function Wy(n){const e=Object.create(null);return n.forEach(o=>{let{pointerId:i,position:l}=o;e[i]=l}),e}function Q2e(n,e){e.classHierarchy.push("vtkRenderWindowInteractor");const o={...n},i=new Set,l=new Map;let c=1;n.start=()=>{!e.initialized&&(n.initialize(),!e.initialized)||n.startEventLoop()},n.setRenderWindow=U=>{Gy("you want to call setView(view) instead of setRenderWindow on a vtk.js interactor")},n.setInteractorStyle=U=>{e.interactorStyle!==U&&(e.interactorStyle!=null&&e.interactorStyle.setInteractor(null),e.interactorStyle=U,e.interactorStyle!=null&&e.interactorStyle.getInteractor()!==n&&e.interactorStyle.setInteractor(n))},n.initialize=()=>{e.initialized=!0,n.enable(),n.render()},n.enable=()=>n.setEnabled(!0),n.disable=()=>n.setEnabled(!1),n.startEventLoop=()=>By("empty event loop");function g(U,j){e._forcedRenderer||(e.currentRenderer=n.findPokedRenderer(U,j))}n.getCurrentRenderer=()=>(e.currentRenderer||g(0,0),e.currentRenderer);function v(U){const j=e._view.getCanvas(),z=j.getBoundingClientRect(),$=j.width/z.width,K=j.height/z.height,X={x:$*(U.clientX-z.left),y:K*(z.height-U.clientY+z.top),z:0};return(l.size<=1||!e.currentRenderer)&&g(X.x,X.y),X}const _=e._getScreenEventPositionFor||v;function T(U){return{controlKey:U.ctrlKey,altKey:U.altKey,shiftKey:U.shiftKey}}function P(U){const j=T(U);return{key:U.key,keyCode:U.charCode,...j}}function I(U){return U.pointerType||""}const R=()=>{if(e.container===null)return;const{container:U}=e;U.addEventListener("contextmenu",m3),U.addEventListener("wheel",n.handleWheel),U.addEventListener("DOMMouseScroll",n.handleWheel),U.addEventListener("pointerenter",n.handlePointerEnter),U.addEventListener("pointerleave",n.handlePointerLeave),U.addEventListener("pointermove",n.handlePointerMove,{passive:!1}),U.addEventListener("pointerdown",n.handlePointerDown,{passive:!1}),U.addEventListener("pointerup",n.handlePointerUp),U.addEventListener("pointercancel",n.handlePointerCancel),document.addEventListener("keypress",n.handleKeyPress),document.addEventListener("keydown",n.handleKeyDown),document.addEventListener("keyup",n.handleKeyUp),document.addEventListener("pointerlockchange",n.handlePointerLockChange),U.style.touchAction="none",U.style.userSelect="none",U.style.webkitTapHighlightColor="rgba(0,0,0,0)"};n.bindEvents=U=>{if(U===null)return;o.setContainer(U)&&R()};const L=()=>{clearTimeout(e.moveTimeoutID),clearTimeout(e.wheelTimeoutID),e.moveTimeoutID=0,e.wheelTimeoutID=0,c=1;const{container:U}=e;U&&(U.removeEventListener("contextmenu",m3),U.removeEventListener("wheel",n.handleWheel),U.removeEventListener("DOMMouseScroll",n.handleWheel),U.removeEventListener("pointerenter",n.handlePointerEnter),U.removeEventListener("pointerleave",n.handlePointerLeave),U.removeEventListener("pointermove",n.handlePointerMove,{passive:!1}),U.removeEventListener("pointerdown",n.handlePointerDown,{passive:!1}),U.removeEventListener("pointerup",n.handlePointerUp),U.removeEventListener("pointercancel",n.handlePointerCancel)),document.removeEventListener("keypress",n.handleKeyPress),document.removeEventListener("keydown",n.handleKeyDown),document.removeEventListener("keyup",n.handleKeyUp),document.removeEventListener("pointerlockchange",n.handlePointerLockChange),l.clear()};n.unbindEvents=()=>{L(),o.setContainer(null)},n.handleKeyPress=U=>{const j=P(U);n.keyPressEvent(j)},n.handleKeyDown=U=>{const j=P(U);n.keyDownEvent(j)},n.handleKeyUp=U=>{const j=P(U);n.keyUpEvent(j)},n.handlePointerEnter=U=>{const j={...T(U),position:_(U),deviceType:I(U)};n.pointerEnterEvent(j),j.deviceType==="mouse"&&n.mouseEnterEvent(j)},n.handlePointerLeave=U=>{const j={...T(U),position:_(U),deviceType:I(U)};n.pointerLeaveEvent(j),j.deviceType==="mouse"&&n.mouseLeaveEvent(j)},n.handlePointerDown=U=>{if(!(U.button>2||n.isPointerLocked()))switch(e.preventDefaultOnPointerDown&&m3(U),U.target.hasPointerCapture(U.pointerId)&&U.target.releasePointerCapture(U.pointerId),e.container.setPointerCapture(U.pointerId),l.has(U.pointerId)&&By("[RenderWindowInteractor] duplicate pointerId detected"),l.set(U.pointerId,{pointerId:U.pointerId,position:_(U)}),U.pointerType){case"pen":case"touch":n.handleTouchStart(U);break;case"mouse":default:n.handleMouseDown(U);break}},n.handlePointerUp=U=>{if(l.has(U.pointerId))switch(e.preventDefaultOnPointerUp&&m3(U),l.delete(U.pointerId),e.container.releasePointerCapture(U.pointerId),U.pointerType){case"pen":case"touch":n.handleTouchEnd(U);break;case"mouse":default:n.handleMouseUp(U);break}},n.handlePointerCancel=U=>{if(l.has(U.pointerId))switch(l.delete(U.pointerId),U.pointerType){case"pen":case"touch":n.handleTouchEnd(U);break;case"mouse":default:n.handleMouseUp(U);break}},n.handlePointerMove=U=>{if(l.has(U.pointerId)){const j=l.get(U.pointerId);j.position=_(U)}switch(U.pointerType){case"pen":case"touch":n.handleTouchMove(U);break;case"mouse":default:n.handleMouseMove(U);break}},n.handleMouseDown=U=>{const j={...T(U),position:_(U),deviceType:I(U)};switch(U.button){case 0:n.leftButtonPressEvent(j);break;case 1:n.middleButtonPressEvent(j);break;case 2:n.rightButtonPressEvent(j);break;default:Gy(`Unknown mouse button pressed: ${U.button}`);break}},n.requestPointerLock=()=>{e.container&&e.container.requestPointerLock()},n.exitPointerLock=()=>{var U;return(U=document.exitPointerLock)==null?void 0:U.call(document)},n.isPointerLocked=()=>!!e.container&&document.pointerLockElement===e.container,n.handlePointerLockChange=()=>{n.isPointerLocked()?n.startPointerLockEvent():n.endPointerLockEvent()};function V(){e._view&&e.enabled&&e.enableRender&&(e.inRender=!0,e._view.traverseAllPasses(),e.inRender=!1),n.invokeRenderEvent()}n.requestAnimation=U=>{if(U===void 0){Gy("undefined requester, can not start animating");return}if(i.has(U)){By("requester is already registered for animating");return}i.add(U),!e.animationRequest&&i.size===1&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(n.handleAnimation),n.startAnimationEvent())},n.extendAnimation=U=>{const j=Date.now()+U;e._animationExtendedEnd=Math.max(e._animationExtendedEnd,j),!e.animationRequest&&i.size===0&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(n.handleAnimation),n.startAnimationEvent())},n.isAnimating=()=>e.xrAnimation||e.animationRequest!==null,n.cancelAnimation=function(U){let j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!i.has(U)){if(!j){const z=U&&U.getClassName?U.getClassName():U;By(`${z} did not request an animation`)}return}i.delete(U),e.animationRequest&&i.size===0&&Date.now()>e._animationExtendedEnd&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null,n.endAnimationEvent(),n.render())},n.switchToXRAnimation=()=>{e.animationRequest&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null),e.xrAnimation=!0},n.returnFromXRAnimation=()=>{e.xrAnimation=!1,i.size!==0&&(e.recentAnimationFrameRate=10,e.animationRequest=requestAnimationFrame(n.handleAnimation))},n.updateXRGamepads=(U,j,z)=>{U.inputSources.forEach($=>{const K=$.gripSpace==null?null:j.getPose($.gripSpace,z),X=$.gripSpace==null?null:j.getPose($.targetRaySpace,z),ee=$.gamepad,ne=$.handedness;if(ee){ee.index in e.lastGamepadValues||(e.lastGamepadValues[ee.index]={left:{buttons:{}},right:{buttons:{}},none:{buttons:{}}});for(let le=0;le{const j={...T(U),position:_(U),deviceType:I(U)};e.moveTimeoutID===0?n.startMouseMoveEvent(j):(n.mouseMoveEvent(j),clearTimeout(e.moveTimeoutID)),e.moveTimeoutID=setTimeout(()=>{n.endMouseMoveEvent(),e.moveTimeoutID=0},200)},n.handleAnimation=()=>{const U=Date.now();e._animationFrameCount++,U-e._animationStartTime>1e3&&e._animationFrameCount>1&&(e.recentAnimationFrameRate=1e3*(e._animationFrameCount-1)/(U-e._animationStartTime),e.lastFrameTime=1/e.recentAnimationFrameRate,n.animationFrameRateUpdateEvent(),e._animationStartTime=U,e._animationFrameCount=1),n.animationEvent(),V(),i.size>0||Date.now(){m3(U);const j={...J2e(U),...T(U),position:_(U),deviceType:I(U)};e.wheelTimeoutID===0&&(Math.abs(j.spinY)>=.3?c=Math.abs(j.spinY):c=1),j.spinY/=c,e.wheelTimeoutID===0?(n.startMouseWheelEvent(j),n.mouseWheelEvent(j)):(n.mouseWheelEvent(j),clearTimeout(e.wheelTimeoutID)),e.mouseScrollDebounceByPass?(n.extendAnimation(600),n.endMouseWheelEvent(),e.wheelTimeoutID=0):e.wheelTimeoutID=setTimeout(()=>{n.extendAnimation(600),n.endMouseWheelEvent(),e.wheelTimeoutID=0},200)},n.handleMouseUp=U=>{const j={...T(U),position:_(U),deviceType:I(U)};switch(U.button){case 0:n.leftButtonReleaseEvent(j);break;case 1:n.middleButtonReleaseEvent(j);break;case 2:n.rightButtonReleaseEvent(j);break;default:Gy(`Unknown mouse button released: ${U.button}`);break}},n.handleTouchStart=U=>{const j=[...l.values()];if(e.recognizeGestures&&j.length>1){const z=Wy(l);if(j.length===2){const $={...T(i6),position:j[0].position,deviceType:I(U)};n.leftButtonReleaseEvent($)}n.recognizeGesture("TouchStart",z)}else if(j.length===1){const z={...T(i6),position:_(U),deviceType:I(U)};n.leftButtonPressEvent(z)}},n.handleTouchMove=U=>{const j=[...l.values()];if(e.recognizeGestures&&j.length>1){const z=Wy(l);n.recognizeGesture("TouchMove",z)}else if(j.length===1){const z={...T(i6),position:j[0].position,deviceType:I(U)};n.mouseMoveEvent(z)}},n.handleTouchEnd=U=>{const j=[...l.values()];if(e.recognizeGestures)if(j.length===0){const z={...T(i6),position:_(U),deviceType:I(U)};n.leftButtonReleaseEvent(z)}else if(j.length===1){const z=Wy(l);n.recognizeGesture("TouchEnd",z);const $={...T(i6),position:j[0].position,deviceType:I(U)};n.leftButtonPressEvent($)}else{const z=Wy(l);n.recognizeGesture("TouchMove",z)}else if(j.length===1){const z={...T(i6),position:j[0].position,deviceType:I(U)};n.leftButtonReleaseEvent(z)}},n.setView=U=>{e._view!==U&&(e._view=U,e._view.getRenderable().setInteractor(n),n.modified())},n.getFirstRenderer=()=>{var U,j,z;return(z=(j=(U=e._view)==null?void 0:U.getRenderable())==null?void 0:j.getRenderersByReference())==null?void 0:z[0]},n.findPokedRenderer=function(){var ne,le;let U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e._view)return null;const z=(le=(ne=e._view)==null?void 0:ne.getRenderable())==null?void 0:le.getRenderers();if(!z||z.length===0)return null;z.sort((ce,ge)=>ce.getLayer()-ge.getLayer());let $=null,K=null,X=null,ee=z.length;for(;ee--;){const ce=z[ee];if(e._view.isInViewport(U,j,ce)&&ce.getInteractive()){X=ce;break}$===null&&ce.getInteractive()&&($=ce),K===null&&e._view.isInViewport(U,j,ce)&&(K=ce)}return X===null&&(X=$),X===null&&(X=K),X==null&&(X=z[0]),X},n.render=()=>{!n.isAnimating()&&!e.inRender&&V()},FO.forEach(U=>{const j=U.charAt(0).toLowerCase()+U.slice(1);n[`${j}Event`]=z=>{if(!e.enabled)return;if(!n.getCurrentRenderer()){Z2e(` + Can not forward events without a current renderer on the interactor. + `);return}const K={type:U,pokedRenderer:e.currentRenderer,firstRenderer:n.getFirstRenderer(),...z};n[`invoke${U}`](K)}}),n.recognizeGesture=(U,j)=>{if(Object.keys(j).length>2)return;if(e.startingEventPositions||(e.startingEventPositions={}),U==="TouchStart"){Object.keys(j).forEach(pe=>{e.startingEventPositions[pe]=j[pe]}),e.currentGesture="Start";return}if(U==="TouchEnd"){e.currentGesture==="Pinch"&&(n.render(),n.endPinchEvent()),e.currentGesture==="Rotate"&&(n.render(),n.endRotateEvent()),e.currentGesture==="Pan"&&(n.render(),n.endPanEvent()),e.currentGesture="Start",e.startingEventPositions={};return}let z=0;const $=[],K=[];Object.keys(j).forEach(pe=>{$[z]=j[pe],K[z]=e.startingEventPositions[pe],z++});const X=Math.sqrt((K[0].x-K[1].x)*(K[0].x-K[1].x)+(K[0].y-K[1].y)*(K[0].y-K[1].y)),ee=Math.sqrt(($[0].x-$[1].x)*($[0].x-$[1].x)+($[0].y-$[1].y)*($[0].y-$[1].y));let ne=Nw(Math.atan2(K[1].y-K[0].y,K[1].x-K[0].x)),le=Nw(Math.atan2($[1].y-$[0].y,$[1].x-$[0].x)),ce=le-ne;le=le+180>=360?le-180:le+180,ne=ne+180>=360?ne-180:ne+180,Math.abs(le-ne)pe&&we>Te&&we>Ve){e.currentGesture="Pinch";const Pe={scale:1,touches:j};n.startPinchEvent(Pe)}else if(Te>pe&&Te>Ve){e.currentGesture="Rotate";const Pe={rotation:0,touches:j};n.startRotateEvent(Pe)}else if(Ve>pe){e.currentGesture="Pan";const Pe={translation:[0,0],touches:j};n.startPanEvent(Pe)}}else{if(e.currentGesture==="Rotate"){const pe={rotation:ce,touches:j};n.rotateEvent(pe)}if(e.currentGesture==="Pinch"){const pe={scale:ee/X,touches:j};n.pinchEvent(pe)}if(e.currentGesture==="Pan"){const pe={translation:ge,touches:j};n.panEvent(pe)}}},n.handleVisibilityChange=()=>{e._animationStartTime=Date.now(),e._animationFrameCount=0},n.setCurrentRenderer=U=>{e._forcedRenderer=!!U,e.currentRenderer=U},n.setContainer=U=>{L();const j=o.setContainer(U??null);return j&&R(),j},n.delete=()=>{for(;i.size;)n.cancelAnimation(i.values().next().value);typeof document.hidden<"u"&&document.removeEventListener("visibilitychange",n.handleVisibilityChange),e.container&&n.setContainer(null),o.delete()},typeof document.hidden<"u"&&document.addEventListener("visibilitychange",n.handleVisibilityChange,!1)}const e1e={renderWindow:null,interactorStyle:null,picker:null,pickingManager:null,initialized:!1,enabled:!1,enableRender:!0,currentRenderer:null,lightFollowCamera:!0,desiredUpdateRate:30,stillUpdateRate:2,container:null,recognizeGestures:!0,currentGesture:"Start",animationRequest:null,lastFrameTime:.1,recentAnimationFrameRate:10,wheelTimeoutID:0,moveTimeoutID:0,lastGamepadValues:{},preventDefaultOnPointerDown:!1,preventDefaultOnPointerUp:!1,mouseScrollDebounceByPass:!1};function a$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,e1e,o),At.obj(n,e),e._animationExtendedEnd=0,At.event(n,e,"RenderEvent"),FO.forEach(i=>At.event(n,e,i)),At.get(n,e,["initialized","interactorStyle","lastFrameTime","recentAnimationFrameRate","_view"]),At.setGet(n,e,["container","lightFollowCamera","enabled","enableRender","recognizeGestures","desiredUpdateRate","stillUpdateRate","picker","preventDefaultOnPointerDown","preventDefaultOnPointerUp","mouseScrollDebounceByPass"]),At.moveToProtected(n,e,["view"]),Q2e(n,e)}const t1e=At.newInstance(a$,"vtkRenderWindowInteractor");var n1e={newInstance:t1e,extend:a$,handledEvents:FO,...s$};const{vtkErrorMacro:r1e}=At,i1e=[1,-1,1,-1,1,-1];function o1e(n,e){e.classHierarchy.push("vtkPoints"),n.getNumberOfPoints=n.getNumberOfTuples,n.setNumberOfPoints=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;n.getNumberOfPoints()!==o&&(e.size=o*i,e.values=At.newTypedArray(e.dataType,e.size),n.setNumberOfComponents(i),n.modified())},n.setPoint=function(o){for(var i=arguments.length,l=new Array(i>1?i-1:0),c=1;cn.insertNextTuple([o,i,l]),n.getBounds=()=>{if(n.getNumberOfComponents()===3){const l=n.getRange(0);e.bounds[0]=l[0],e.bounds[1]=l[1];const c=n.getRange(1);e.bounds[2]=c[0],e.bounds[3]=c[1];const g=n.getRange(2);return e.bounds[4]=g[0],e.bounds[5]=g[1],e.bounds}if(n.getNumberOfComponents()!==2)return r1e(`getBounds called on an array with components of + ${n.getNumberOfComponents()}`),i1e;const o=n.getRange(0);e.bounds[0]=o[0],e.bounds[1]=o[1];const i=n.getRange(1);return e.bounds[2]=i[0],e.bounds[3]=i[1],e.bounds[4]=0,e.bounds[5]=0,e.bounds},n.computeBounds=n.getBounds,n.setNumberOfComponents(e.numberOfComponents<2?3:e.numberOfComponents)}const s1e={empty:!0,numberOfComponents:3,dataType:b0.FLOAT,bounds:[1,-1,1,-1,1,-1]};function l$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,s1e,o),d0.extend(n,e,o),o1e(n,e)}const a1e=At.newInstance(l$,"vtkPoints");var Qw={newInstance:a1e,extend:l$};function u$(n){let e=0;return n.filter((o,i)=>i===e?(e+=o+1,!0):!1)}function c$(n){let e=0;for(let o=0;o(e.numberOfCells!==void 0&&!i||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=c$(n.getData())),e.numberOfCells),n.getCellSizes=i=>(e.cellSizes!==void 0&&!i||(e.cellSizes=u$(n.getData())),e.cellSizes),n.resize=i=>{const l=n.getNumberOfTuples();o.resize(i);const c=n.getNumberOfTuples();c{o.setData(i,1),e.numberOfCells=void 0,e.cellSizes=void 0},n.getCell=i=>{let l=i;const c=e.values[l++];return e.values.subarray(l,l+c)},n.insertNextCell=i=>{const l=n.getNumberOfCells();return n.insertNextTuples([i.length,...i]),++e.numberOfCells,e.cellSizes!=null&&e.cellSizes.push(i.length),l}}function c1e(n){return{empty:!0,numberOfComponents:1,dataType:b0.UNSIGNED_INT,...n}}function f$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};d0.extend(n,e,c1e(o)),u1e(n,e)}const f1e=At.newInstance(f$,"vtkCellArray");var Gg={newInstance:f1e,extend:f$,...l1e};function h1e(n,e){e.classHierarchy.push("vtkCell"),n.initialize=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(i){e.pointsIds=i;let l=e.points.getData();l.length!==3*e.pointsIds.length&&(l=At.newTypedArray(o.getDataType(),3*e.pointsIds.length));const c=o.getData();e.pointsIds.forEach((g,v)=>{let _=3*g,T=3*v;l[T]=c[_],l[++T]=c[++_],l[++T]=c[++_]}),e.points.setData(l)}else{e.points=o,e.pointsIds=new Array(o.getNumberOfPoints());for(let l=o.getNumberOfPoints()-1;l>=0;--l)e.pointsIds[l]=l}},n.getBounds=()=>{const o=e.points.getNumberOfPoints(),i=[];if(o){e.points.getPoint(0,i),e.bounds[0]=i[0],e.bounds[1]=i[0],e.bounds[2]=i[1],e.bounds[3]=i[1],e.bounds[4]=i[2],e.bounds[5]=i[2];for(let l=1;le.bounds[1]?i[0]:e.bounds[1],e.bounds[2]=i[1]e.bounds[3]?i[1]:e.bounds[3],e.bounds[4]=i[2]e.bounds[5]?i[2]:e.bounds[5]}else W8(e.bounds);return e.bounds},n.getLength2=()=>{n.getBounds();let o=0,i=0;for(let l=0;l<3;l++)i=e.bounds[2*l+1]-e.bounds[2*l],o+=i*i;return o},n.getParametricDistance=o=>{let i,l=0;for(let c=0;c<3;c++)o[c]<0?i=-o[c]:o[c]>1?i=o[c]-1:i=0,i>l&&(l=i);return l},n.getNumberOfPoints=()=>e.points.getNumberOfPoints(),n.deepCopy=o=>{o.initialize(e.points,e.pointsIds)},n.getCellDimension=()=>{},n.intersectWithLine=(o,i,l,c,g,v,_)=>{},n.evaluatePosition=(o,i,l,c,g,v)=>{At.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const d1e={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function h$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,d1e,o),At.obj(n,e),e.points||(e.points=Qw.newInstance()),At.get(n,e,["points","pointsIds"]),h1e(n,e)}const g1e=At.newInstance(h$,"vtkCell");var e9={newInstance:g1e,extend:h$};function p1e(n,e){let o=e;for(e>=n.array.length&&(o+=n.array.length);o>n.array.length;)n.array.push({ncells:0,cells:null});n.array.length=o}function m1e(n,e){e.classHierarchy.push("vtkCellLinks"),n.buildLinks=o=>{const i=o.getPoints().getNumberOfPoints(),l=o.getNumberOfCells(),c=new Uint32Array(i);if(o.isA("vtkPolyData")){for(let g=0;g{n.incrementLinkCount(_)})}n.allocateLinks(i),e.maxId=i-1;for(let g=0;g{n.insertCellReference(_,c[_]++,g)})}}else{for(let g=0;g{n.incrementLinkCount(_)});n.allocateLinks(i),e.maxId=i-1;for(let g=0;g{n.insertCellReference(_,c[_]++,g)})}},n.allocate=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.array=Array(o).fill().map(()=>({ncells:0,cells:null})),e.extend=i,e.maxId=-1},n.initialize=()=>{e.array=null},n.getLink=o=>e.array[o],n.getNcells=o=>e.array[o].ncells,n.getCells=o=>e.array[o].cells,n.insertNextPoint=o=>{e.array.push({ncells:o,cells:Array(o)}),++e.maxId},n.insertNextCellReference=(o,i)=>{e.array[o].cells[e.array[o].ncells++]=i},n.deletePoint=o=>{e.array[o].ncells=0,e.array[o].cells=null},n.removeCellReference=(o,i)=>{e.array[i].cells=e.array[i].cells.filter(l=>l!==o),e.array[i].ncells=e.array[i].cells.length},n.addCellReference=(o,i)=>{e.array[i].cells[e.array[i].ncells++]=o},n.resizeCellList=(o,i)=>{e.array[o].cells.length=i},n.squeeze=()=>{p1e(e,e.maxId+1)},n.reset=()=>{e.maxId=-1},n.deepCopy=o=>{e.array=[...o.array],e.extend=o.extend,e.maxId=o.maxId},n.incrementLinkCount=o=>{++e.array[o].ncells},n.allocateLinks=o=>{for(let i=0;i{e.array[o].cells[i]=l}}const v1e={array:null,maxId:0,extend:0};function d$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,v1e,o),At.obj(n,e),m1e(n,e)}const k1e=At.newInstance(d$,"vtkCellLinks");var y1e={newInstance:k1e,extend:d$};const ks={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_QUAD:9,VTK_QUADRATIC_EDGE:21,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42},DE=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function w1e(n){return n0&&arguments[0]!==void 0?arguments[0]:512,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.size=o>0?o:1,e.extend=i>0?i:1,e.maxId=-1,e.typeArray=new Uint8Array(o),e.locationArray=new Uint32Array(o)},n.insertCell=(o,i,l)=>{e.typeArray[o]=i,e.locationArray[o]=l,o>e.maxId&&(e.maxId=o)},n.insertNextCell=(o,i)=>(n.insertCell(++e.maxId,o,i),e.maxId),n.setCellTypes=(o,i,l)=>{e.size=o,e.typeArray=i,e.locationArray=l,e.maxId=o-1},n.getCellLocation=o=>e.locationArray[o],n.deleteCell=o=>{e.typeArray[o]=ks.VTK_EMPTY_CELL},n.getNumberOfTypes=()=>e.maxId+1,n.isType=o=>{const i=n.getNumberOfTypes();for(let l=0;ln.insertNextCell(o,-1),n.getCellType=o=>e.typeArray[o],n.reset=()=>{e.maxId=-1},n.deepCopy=o=>{n.allocate(o.getSize(),o.getExtend()),e.typeArray.set(o.getTypeArray()),e.locationArray.set(o.getLocationArray()),e.maxId=o.getMaxId()}}const E1e={size:0,maxId:-1,extend:1e3};function g$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,E1e,o),At.obj(n,e),At.get(n,e,["size","maxId","extend"]),At.getArray(n,e,["typeArray","locationArray"]),T1e(n,e)}const D1e=At.newInstance(g$,"vtkCellTypes");var I1e={newInstance:D1e,extend:g$,...S1e};const O1e={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var p$={IntersectionState:O1e};const{IntersectionState:z7}=p$;function O6(n,e,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;const l={t:Number.MIN_VALUE,distance:0},c=[];let g;c[0]=o[0]-e[0],c[1]=o[1]-e[1],c[2]=o[2]-e[2];const v=c[0]*(n[0]-e[0])+c[1]*(n[1]-e[1])+c[2]*(n[2]-e[2]),_=B0(c,c);let T=1e-5*v;return _!==0&&(l.t=v/_),T<0&&(T=-T),-T<_&&_1?g=o:(g=c,c[0]=e[0]+l.t*c[0],c[1]=e[1]+l.t*c[1],c[2]=e[2]+l.t*c[2]),i&&(i[0]=g[0],i[1]=g[1],i[2]=g[2]),l.distance=Xc(g,n),l}function m$(n,e,o,i,l,c){const g=[],v=[],_=[];l[0]=0,c[0]=0,ch(e,n,g),ch(i,o,v),ch(o,n,_);const T=[B0(g,g),-B0(g,v),-B0(g,v),B0(v,v)],P=[];if(P[0]=B0(g,_),P[1]=-B0(v,_),IB(T,P,2)===0){let I=Number.MAX_VALUE;const R=[n,e,o,i],L=[o,o,n,n],V=[i,i,e,e];c[0],c[0],l[0],l[0],l[0],l[0],c[0],c[0];let U;for(let j=0;j<4;j++)U=O6(R[j],L[j],V[j]),U.distance=0&&l[0]<=1&&c[0]>=0&&c[0]<=1?z7.YES_INTERSECTION:z7.NO_INTERSECTION}const M1e={distanceToLine:O6,intersection:m$};function P1e(n,e){e.classHierarchy.push("vtkLine");function o(i){return i>=0&&i<=1}n.getCellDimension=()=>1,n.intersectWithLine=(i,l,c,g,v)=>{const _={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};v[1]=0,v[2]=0;const T=[],P=[],I=[];e.points.getPoint(0,P),e.points.getPoint(1,I);const R=[],L=[],V=m$(i,l,P,I,R,L);if(_.t=R[0],_.betweenPoints=o(_.t),v[0]=L[0],V===z7.YES_INTERSECTION){for(let U=0;U<3;U++)g[U]=P[U]+v[0]*(I[U]-P[U]),T[U]=i[U]+_.t*(l[U]-i[U]);if(Xc(g,T)<=c*c)return _.intersect=1,_}else{let U;if(_.t<0)return U=O6(i,P,I,g),U.distance<=c*c&&(_.t=0,_.intersect=1,_.betweenPoints=!0),_;if(_.t>1)return U=O6(l,P,I,g),U.distance<=c*c&&(_.t=1,_.intersect=1,_.betweenPoints=!0),_;if(v[0]<0)return v[0]=0,U=O6(P,i,l,g),_.t=U.t,U.distance<=c*c&&(_.intersect=1),_;if(v[0]>1)return v[0]=1,U=O6(I,i,l,g),_.t=U.t,U.distance<=c*c&&(_.intersect=1),_}return _},n.evaluateLocation=(i,l,c)=>{const g=[],v=[];e.points.getPoint(0,g),e.points.getPoint(1,v);for(let _=0;_<3;_++)l[_]=g[_]+i[0]*(v[_]-g[_]);c[0]=1-i[0],c[1]=i[0]},n.evaluateOrientation=(i,l,c)=>e.orientations?(B7(l,e.orientations[0],e.orientations[1],i[0]),c[0]=1-i[0],c[1]=i[0],!0):!1}const R1e={orientations:null};function v$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,R1e,o),e9.extend(n,e,o),At.setGet(n,e,["orientations"]),P1e(n,e)}const A1e=At.newInstance(v$,"vtkLine");var xu={newInstance:A1e,extend:v$,...M1e,...p$};function L1e(n,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=uc(e.points):e.points=Qw.newInstance(),n.getNumberOfPoints=()=>e.points.getNumberOfPoints(),n.getBounds=()=>e.points.getBounds(),n.computeBounds=()=>{n.getBounds()};const o=n.shallowCopy;n.shallowCopy=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;o(i,l),e.points=Qw.newInstance(),e.points.shallowCopy(i.getPoints())}}const N1e={};function k$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,N1e,o),$8.extend(n,e,o),At.setGet(n,e,["points"]),L1e(n,e)}const b1e=At.newInstance(k$,"vtkPointSet");var F1e={newInstance:b1e,extend:k$};function VO(n,e,o,i){const l=o[0]-e[0],c=o[1]-e[1],g=o[2]-e[2],v=n[0]-e[0],_=n[1]-e[1],T=n[2]-e[2];i[0]=c*T-g*_,i[1]=g*v-l*T,i[2]=l*_-c*v}function t9(n,e,o,i){VO(n,e,o,i);const l=Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2]);l!==0&&(i[0]/=l,i[1]/=l,i[2]/=l)}function V1e(n,e,o,i,l,c){let g=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1e-6,v=!1;const _=[],T=[],P=[],I=[],R=[];t9(n,e,o,I),t9(i,l,c,R);const L=-B0(I,n),V=-B0(R,i),U=[B0(R,n)+V,B0(R,e)+V,B0(R,o)+V];if(U[0]*U[1]>g&&U[0]*U[2]>g)return{intersect:!1,coplanar:v,pt1:_,pt2:T,surfaceId:P};const j=[B0(I,i)+L,B0(I,l)+L,B0(I,c)+L];if(j[0]*j[1]>g&&j[0]*j[2]>g)return{intersect:!1,coplanar:v,pt1:_,pt2:T,surfaceId:P};if(Math.abs(I[0]-R[0])<1e-9&&Math.abs(I[1]-R[1])<1e-9&&Math.abs(I[2]-R[2])<1e-9&&Math.abs(L-V)<1e-9)return v=!0,{intersect:!1,coplanar:v,pt1:_,pt2:T,surfaceId:P};const z=[n,e,o],$=[i,l,c],K=B0(I,R),X=(L-V*K)/(K*K-1),ee=(V-L*K)/(K*K-1),ne=[X*I[0]+ee*R[0],X*I[1]+ee*R[1],X*I[2]+ee*R[2]],le=ff(I,R,[]);Bg(le);let ce=0,ge=0;const pe=[],we=[];let Te=50,Ve=50;for(let Je=0;Je<3;Je++){const it=Je,Ge=(Je+1)%3,Ke=h1.intersectWithLine(z[it],z[Ge],i,R);Ke.intersection&&Ke.t>0-g&&Ke.t<1+g&&(Ke.t<1+g&&Ke.t>1-g&&(Te=ce),pe[ce++]=B0(Ke.x,le)-B0(ne,le));const qe=h1.intersectWithLine($[it],$[Ge],n,I);qe.intersection&&qe.t>0-g&&qe.t<1+g&&(qe.t<1+g&&qe.t>1-g&&(Ve=ge),we[ge++]=B0(qe.x,le)-B0(ne,le))}if(ce>2){ce--;const Je=pe[2];pe[2]=pe[Te],pe[Te]=Je}if(ge>2){ge--;const Je=we[2];we[2]=we[Ve],we[Ve]=Je}if(ce!==2||ge!==2)return{intersect:!1,coplanar:v,pt1:_,pt2:T,surfaceId:P};if(Number.isNaN(pe[0])||Number.isNaN(pe[1])||Number.isNaN(we[0])||Number.isNaN(we[1]))return{intersect:!1,coplanar:v,pt1:_,pt2:T,surfaceId:P};if(pe[0]>pe[1]){const Je=pe[1];pe[1]=pe[0],pe[0]=Je}if(we[0]>we[1]){const Je=we[1];we[1]=we[0],we[0]=Je}let Pe,je;return pe[1]2,n.intersectWithLine=(o,i,l,c,g)=>{const v={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};g[2]=0;const _=[],T=l*l,P=[],I=[],R=[];e.points.getPoint(0,P),e.points.getPoint(1,I),e.points.getPoint(2,R);const L=[],V=[];if(t9(P,I,R,L),L[0]!==0||L[1]!==0||L[2]!==0){const K=h1.intersectWithLine(o,i,P,L);if(v.betweenPoints=K.betweenPoints,v.t=K.t,c[0]=K.x[0],c[1]=K.x[1],c[2]=K.x[2],!K.intersection)return g[0]=0,g[1]=0,v.intersect=0,v;const X=n.evaluatePosition(c,_,g,V);if(X.evaluation>=0)return X.dist2<=T?(v.intersect=1,v):(v.intersect=X.evaluation,v)}const U=Xc(P,I),j=Xc(I,R),z=Xc(R,P);e.line||(e.line=xu.newInstance()),U>j&&U>z?(e.line.getPoints().setPoint(0,P),e.line.getPoints().setPoint(1,I)):j>z&&j>U?(e.line.getPoints().setPoint(0,I),e.line.getPoints().setPoint(1,R)):(e.line.getPoints().setPoint(0,R),e.line.getPoints().setPoint(1,P));const $=e.line.intersectWithLine(o,i,l,c,g);if(v.betweenPoints=$.betweenPoints,v.t=$.t,$.intersect){const K=[],X=[],ee=[];for(let ne=0;ne<3;ne++)K[ne]=P[ne]-R[ne],X[ne]=I[ne]-R[ne],ee[ne]=c[ne]-R[ne];return g[0]=B0(ee,K)/z,g[1]=B0(ee,X)/j,v.intersect=1,v}return g[0]=0,g[1]=0,v.intersect=0,v},n.evaluatePosition=(o,i,l,c)=>{const g={subId:0,dist2:0,evaluation:-1};let v,_;const T=[],P=[],I=[],R=[];let L;const V=[],U=[],j=[];let z=0,$=0;const K=[];let X,ee,ne,le=[];const ce=[],ge=[],pe=[];g.subId=0,l[2]=0,e.points.getPoint(1,T),e.points.getPoint(2,P),e.points.getPoint(0,I),VO(T,P,I,R),h1.generalizedProjectPoint(o,T,R,pe);let we=0;for(v=0;v<3;v++)R[v]<0?L=-R[v]:L=R[v],L>we&&(we=L,$=v);for(_=0,v=0;v<3;v++)v!==$&&(K[_++]=v);for(v=0;v<2;v++)V[v]=pe[K[v]]-I[K[v]],U[v]=T[K[v]]-I[K[v]],j[v]=P[K[v]]-I[K[v]];if(z=sa(U,j),z===0)return l[0]=0,l[1]=0,g.evaluation=-1,g;if(l[0]=sa(V,j)/z,l[1]=sa(U,V)/z,c[0]=1-(l[0]+l[1]),c[1]=l[0],c[2]=l[1],c[0]>=0&&c[0]<=1&&c[1]>=0&&c[1]<=1&&c[2]>=0&&c[2]<=1)i&&(g.dist2=Xc(pe,o),i[0]=pe[0],i[1]=pe[1],i[2]=pe[2]),g.evaluation=1;else{let Te;if(i){if(c[1]<0&&c[2]<0)for(X=Xc(o,I),ee=xu.distanceToLine(o,T,I,Te,ce),ne=xu.distanceToLine(o,I,P,Te,ge),X{const c=[],g=[],v=[];e.points.getPoint(0,c),e.points.getPoint(1,g),e.points.getPoint(2,v);const _=1-o[0]-o[1];for(let T=0;T<3;T++)i[T]=c[T]*_+g[T]*o[0]+v[T]*o[1];l[0]=_,l[1]=o[0],l[2]=o[1]},n.getParametricDistance=o=>{let i,l=0;const c=[];c[0]=o[0],c[1]=o[1],c[2]=1-o[0]-o[1];for(let g=0;g<3;g++)c[g]<0?i=-c[g]:c[g]>1?i=c[g]-1:i=0,i>l&&(l=i);return l}}const G1e={};function y$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,G1e,o),e9.extend(n,e,o),B1e(n,e)}const W1e=At.newInstance(y$,"vtkTriangle");var $1e={newInstance:W1e,extend:y$,...U1e};const cS=["verts","lines","polys","strips"],{vtkWarningMacro:pL}=At,j1e={[ks.VTK_LINE]:xu,[ks.VTK_POLY_LINE]:xu,[ks.VTK_TRIANGLE]:$1e};function z1e(n,e){e.classHierarchy.push("vtkPolyData");function o(l){return l.replace(/(?:^\w|[A-Z]|\b\w)/g,c=>c.toUpperCase()).replace(/\s+/g,"")}cS.forEach(l=>{n[`getNumberOf${o(l)}`]=()=>e[l].getNumberOfCells(),e[l]?e[l]=uc(e[l]):e[l]=Gg.newInstance()}),n.getNumberOfCells=()=>cS.reduce((l,c)=>l+e[c].getNumberOfCells(),0);const i=n.shallowCopy;n.shallowCopy=function(l){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i(l,c),cS.forEach(g=>{e[g]=Gg.newInstance(),e[g].shallowCopy(l.getReferenceByName(g))})},n.buildCells=()=>{const l=n.getNumberOfVerts(),c=n.getNumberOfLines(),g=n.getNumberOfPolys(),v=n.getNumberOfStrips(),_=l+c+g+v,T=new Uint8Array(_);let P=T;const I=new Uint32Array(_);let R=I;if(l){let L=0;e.verts.getCellSizes().forEach((V,U)=>{R[U]=L,P[U]=V>1?ks.VTK_POLY_VERTEX:ks.VTK_VERTEX,L+=V+1}),R=R.subarray(l),P=P.subarray(l)}if(c){let L=0;e.lines.getCellSizes().forEach((V,U)=>{R[U]=L,P[U]=V>2?ks.VTK_POLY_LINE:ks.VTK_LINE,V===1&&pL("Building VTK_LINE ",U," with only one point, but VTK_LINE needs at least two points. Check the input."),L+=V+1}),R=R.subarray(c),P=P.subarray(c)}if(g){let L=0;e.polys.getCellSizes().forEach((V,U)=>{switch(R[U]=L,V){case 3:P[U]=ks.VTK_TRIANGLE;break;case 4:P[U]=ks.VTK_QUAD;break;default:P[U]=ks.VTK_POLYGON;break}V<3&&pL("Building VTK_TRIANGLE ",U," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),L+=V+1}),R+=R.subarray(g),P+=P.subarray(g)}if(v){let L=0;P.fill(ks.VTK_TRIANGLE_STRIP,0,v),e.strips.getCellSizes().forEach((V,U)=>{R[U]=L,L+=V+1})}e.cells=I1e.newInstance(),e.cells.setCellTypes(_,T,I)},n.buildLinks=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;e.cells===void 0&&n.buildCells(),e.links=y1e.newInstance(),l>0?e.links.allocate(l):e.links.allocate(n.getPoints().getNumberOfPoints()),e.links.buildLinks(n)},n.getCellType=l=>e.cells.getCellType(l),n.getCellPoints=l=>{const c=n.getCellType(l);let g=null;switch(c){case ks.VTK_VERTEX:case ks.VTK_POLY_VERTEX:g=e.verts;break;case ks.VTK_LINE:case ks.VTK_POLY_LINE:g=e.lines;break;case ks.VTK_TRIANGLE:case ks.VTK_QUAD:case ks.VTK_POLYGON:g=e.polys;break;case ks.VTK_TRIANGLE_STRIP:g=e.strips;break;default:return g=null,{type:0,cellPointIds:null}}const v=e.cells.getCellLocation(l),_=g.getCell(v);return{cellType:c,cellPointIds:_}},n.getPointCells=l=>e.links.getCells(l),n.getCellEdgeNeighbors=(l,c,g)=>{const v=e.links.getLink(c),_=e.links.getLink(g);return v.cells.filter(T=>T!==l&&_.cells.indexOf(T)!==-1)},n.getCell=function(l){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const g=n.getCellPoints(l),v=c||j1e[g.cellType].newInstance();return v.initialize(n.getPoints(),g.cellPointIds),v}}const H1e={};function w$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,H1e,o),F1e.extend(n,e,o),At.get(n,e,["cells","links"]),At.setGet(n,e,["verts","lines","polys","strips"]),z1e(n,e)}const K1e=At.newInstance(w$,"vtkPolyData");var Sl={newInstance:K1e,extend:w$};const q1e=1e-6;function X1e(n,e){e.classHierarchy.push("vtkProp3D"),n.addPosition=i=>{e.position=e.position.map((l,c)=>l+i[c]),n.modified()},n.getOrientationWXYZ=()=>{const i=Kd();dE(i,e.rotation);const l=new Float64Array(3),c=mie(l,i);return[Nw(c),l[0],l[1],l[2]]},n.getOrientationQuaternion=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return dE(i,e.rotation)},n.rotateX=i=>{i!==0&&(nO(e.rotation,e.rotation,ia(i)),n.modified())},n.rotateY=i=>{i!==0&&(rO(e.rotation,e.rotation,ia(i)),n.modified())},n.rotateZ=i=>{i!==0&&(iO(e.rotation,e.rotation,ia(i)),n.modified())},n.rotateWXYZ=(i,l,c,g)=>{if(i===0||l===0&&c===0&&g===0)return;const v=ia(i),_=Kd();hC(_,[l,c,g],v);const T=new Float64Array(16);Uw(T,_),Y0(e.rotation,e.rotation,T),n.modified()},n.rotateQuaternion=i=>{if(Math.abs(i[3])>=1-q1e)return;const l=Uw(new Float64Array(16),i);Y0(e.rotation,e.rotation,l),n.modified()},n.setOrientation=(i,l,c)=>i===e.orientation[0]&&l===e.orientation[1]&&c===e.orientation[2]?!1:(e.orientation=[i,l,c],zi(e.rotation),n.rotateZ(c),n.rotateX(i),n.rotateY(l),n.modified(),!0),n.setUserMatrix=i=>Fv(e.userMatrix,i)?!1:(Ea(e.userMatrix,i),n.modified(),!0),n.getMatrix=()=>(n.computeMatrix(),e.matrix),n.computeMatrix=()=>{if(n.getMTime()>e.matrixMTime.getMTime()){zi(e.matrix),e.userMatrix&&Y0(e.matrix,e.matrix,e.userMatrix),Ns(e.matrix,e.matrix,e.origin),Ns(e.matrix,e.matrix,e.position),Y0(e.matrix,e.matrix,e.rotation),hf(e.matrix,e.matrix,e.scale),Ns(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),po(e.matrix,e.matrix),e.isIdentity=!0;for(let i=0;i<4;++i)for(let l=0;l<4;++l)(i===l?1:0)!==e.matrix[i+l*4]&&(e.isIdentity=!1);e.matrixMTime.modified()}},n.getCenter=()=>hs.getCenter(e.bounds),n.getLength=()=>hs.getLength(e.bounds),n.getXRange=()=>hs.getXRange(e.bounds),n.getYRange=()=>hs.getYRange(e.bounds),n.getZRange=()=>hs.getZRange(e.bounds),n.getUserMatrix=()=>e.userMatrix;function o(){n.computeMatrix()}n.onModified(o)}const Y1e={origin:[0,0,0],position:[0,0,0],orientation:[0,0,0],rotation:null,scale:[1,1,1],bounds:[1,-1,1,-1,1,-1],userMatrix:null,userMatrixMTime:null,cachedProp3D:null,isIdentity:!0,matrixMTime:null};function C$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Y1e,o),xW.extend(n,e,o),e.matrixMTime={},At.obj(e.matrixMTime),At.get(n,e,["bounds","isIdentity"]),At.getArray(n,e,["orientation"]),At.setGetArray(n,e,["origin","position","scale"],3),e.matrix=zi(new Float64Array(16)),e.rotation=zi(new Float64Array(16)),e.userMatrix=zi(new Float64Array(16)),e.transform=null,X1e(n,e)}const J1e=At.newInstance(C$,"vtkProp3D");var UO={newInstance:J1e,extend:C$};const{vtkDebugMacro:Z1e}=At;function Q1e(n,e){e.classHierarchy.push("vtkActor");const o={...n};n.getActors=()=>[n],n.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||n.getProperty();let i=e.property.getOpacity()>=1;return i=i&&(!e.texture||!e.texture.isTranslucent()),i=i&&(!e.mapper||e.mapper.getIsOpaque()),i},n.hasTranslucentPolygonalGeometry=()=>e.mapper===null?!1:(e.property===null&&n.setProperty(n.makeProperty()),!n.getIsOpaque()),n.makeProperty=Gv.newInstance,n.getProperty=()=>(e.property===null&&(e.property=n.makeProperty()),e.property),n.getBounds=()=>{if(e.mapper===null)return e.bounds;const i=e.mapper.getBounds();if(!i||i.length!==6)return i;if(i[0]>i[1])return e.mapperBounds=i.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),i;if(!e.mapperBounds||i[0]!==e.mapperBounds[0]||i[1]!==e.mapperBounds[1]||i[2]!==e.mapperBounds[2]||i[3]!==e.mapperBounds[3]||i[4]!==e.mapperBounds[4]||i[5]!==e.mapperBounds[5]||n.getMTime()>e.boundsMTime.getMTime()){Z1e("Recomputing bounds..."),e.mapperBounds=i.concat();const l=[];hs.getCorners(i,l),n.computeMatrix();const c=new Float64Array(16);po(c,e.matrix),l.forEach(g=>g0(g,g,c)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((g,v)=>v%2===0?l.reduce((_,T)=>_>T[v/2]?T[v/2]:_,g):l.reduce((_,T)=>_{let i=o.getMTime();if(e.property!==null){const l=e.property.getMTime();i=l>i?l:i}if(e.backfaceProperty!==null){const l=e.backfaceProperty.getMTime();i=l>i?l:i}return i},n.getRedrawMTime=()=>{let i=e.mtime;if(e.mapper!==null){let l=e.mapper.getMTime();i=l>i?l:i,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),l=e.mapper.getInput().getMTime(),i=l>i?l:i)}return i},n.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1,n.processSelectorPixelBuffers=(i,l)=>{e.mapper&&e.mapper.processSelectorPixelBuffers&&e.mapper.processSelectorPixelBuffers(i,l)}}const ele={mapper:null,property:null,backfaceProperty:null,forceOpaque:!1,forceTranslucent:!1,bounds:[1,-1,1,-1,1,-1]};function _$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ele,o),UO.extend(n,e,o),e.boundsMTime={},At.obj(e.boundsMTime),At.set(n,e,["property"]),At.setGet(n,e,["backfaceProperty","forceOpaque","forceTranslucent","mapper"]),Q1e(n,e)}const tle=At.newInstance(_$,"vtkActor");var wC={newInstance:tle,extend:_$};function nle(n,e){const o=n.invokeResize;delete n.invokeResize,e.renderWindow=hte.newInstance(),e.rendererMap={},e.openGLRenderWindow=M2e.newInstance(),e.renderWindow.addView(e.openGLRenderWindow),e.interactor=n1e.newInstance(),e.interactor.setView(e.openGLRenderWindow),e.interactor.initialize(),n.addRenderer=({viewport:i,id:l,background:c})=>{const g=o$.newInstance({viewport:i,background:c||e.background});e.renderWindow.addRenderer(g),e.rendererMap[l]=g},n.destroy=()=>{e.renderWindow.getInteractor().delete()},n.removeRenderer=i=>{const l=n.getRenderer(i);e.renderWindow.removeRenderer(l),l.delete(),delete e.rendererMap[i]},n.getRenderer=i=>e.rendererMap[i],n.getRenderers=()=>{const{rendererMap:i}=e;return Object.keys(i).map(c=>({id:c,renderer:i[c]}))},n.resize=()=>{if(e.container){const{width:i,height:l}=e.container;e.openGLRenderWindow.setSize(Math.floor(i),Math.floor(l)),o(),e.renderWindow.render()}},n.setContainer=i=>{e.container=i,e.openGLRenderWindow.setContainer(e.container)},n.delete=At.chain(n.setContainer,n.destroy,e.openGLRenderWindow.delete,n.delete),n.resize()}const rle={background:[0,0,0],container:null};function x$(n,e,o={}){Object.assign(e,rle,o),At.obj(n,e),At.get(n,e,["renderWindow","openGLRenderWindow","interactor","container"]),At.event(n,e,"resize"),nle(n,e)}const ile=At.newInstance(x$),ole={newInstance:ile,extend:x$},{vtkErrorMacro:$y}=At;function sle(n,e){e.classHierarchy.push("vtkPiecewiseFunction"),n.getSize=()=>e.nodes.length,n.getType=()=>{let o,i=0,l=0;e.nodes.length>0&&(i=e.nodes[0].y);for(let c=1;ci)switch(l){case 0:case 1:l=1;break;case 2:default:l=3;break}else switch(l){case 0:case 2:l=2;break;case 1:default:l=3;break}if(i=o,l===3)break}switch(l){case 0:return"Constant";case 1:return"NonDecreasing";case 2:return"NonIncreasing";case 3:default:return"Varied"}},n.getDataPointer=()=>{const o=e.nodes.length;if(e.function=null,o>0){e.function=[];for(let i=0;i{if(e.nodes.length===0)return 0;let o=1,i=0,l=0;for(;l0?i=e.nodes[l-1].x:e.clamping?i=-Number.MAX_VALUE:i=e.nodes[0].x,i},n.getNodeValue=(o,i)=>{const l=e.nodes.length;return o<0||o>=l?($y("Index out of range!"),-1):(i[0]=e.nodes[o].x,i[1]=e.nodes[o].y,i[2]=e.nodes[o].midpoint,i[3]=e.nodes[o].sharpness,1)},n.setNodeValue=(o,i)=>{const l=e.nodes.length;if(o<0||o>=l)return $y("Index out of range!"),-1;const c=e.nodes[o].x;return e.nodes[o].x=i[0],e.nodes[o].y=i[1],e.nodes[o].midpoint=i[2],e.nodes[o].sharpness=i[3],c!==i[0]?n.sortAndUpdateRange():n.modified(),1},n.addPoint=(o,i)=>n.addPointLong(o,i,.5,0),n.addPointLong=(o,i,l,c)=>{if(l<0||l>1)return $y("Midpoint outside range [0.0, 1.0]"),-1;if(c<0||c>1)return $y("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||n.removePoint(o);const g={x:o,y:i,midpoint:l,sharpness:c};e.nodes.push(g),n.sortAndUpdateRange();let v;for(v=0;v{e.nodes!==o&&(e.nodes=o,n.sortAndUpdateRange())},n.sortAndUpdateRange=()=>{e.nodes.sort((i,l)=>i.x-l.x),n.updateRange()||n.modified()},n.updateRange=()=>{const o=e.range.slice(),i=e.nodes.length;return i?(e.range[0]=e.nodes[0].x,e.range[1]=e.nodes[i-1].x):(e.range[0]=0,e.range[1]=0),o[0]===e.range[0]&&o[1]===e.range[1]?!1:(n.modified(),!0)},n.removePoint=o=>{let i;for(i=0;i=e.nodes.length)return-1;const l=i;let c=!1;return e.nodes.splice(i,1),(i===0||i===e.nodes.length)&&(c=n.updateRange()),c||n.modified(),l},n.removeAllPoints=()=>{e.nodes=[],n.sortAndUpdateRange()},n.addSegment=(o,i,l,c)=>{n.sortAndUpdateRange();for(let g=0;g=o&&e.nodes[g].x<=l?e.nodes.splice(g,1):g++;n.addPoint(o,i,.5,0),n.addPoint(l,c,.5,0)},n.getValue=o=>{const i=[];return n.getTable(o,o,1,i),i[0]},n.adjustRange=o=>{if(o.length<2)return 0;const i=n.getRange();i[0]o[1]?n.addPoint(o[1],n.getValue(o[1])):n.addPoint(o[1],n.getValue(i[1])),n.sortAndUpdateRange();for(let l=0;l=o[0]&&e.nodes[l].x<=o[1]?e.nodes.splice(l,1):++l;return n.sortAndUpdateRange(),1},n.estimateMinNumberOfSamples=(o,i)=>{const l=n.findMinimumXDistance();return Math.ceil((i-o)/l)},n.findMinimumXDistance=()=>{const o=e.nodes.length;if(o<2)return-1;let i=e.nodes[1].x-e.nodes[0].x;for(let l=0;l4&&arguments[4]!==void 0?arguments[4]:1,v,_=0;const T=e.nodes.length;let P=0;T!==0&&(P=e.nodes[T-1].y);let I=0,R=0,L=0,V=0,U=0,j=0,z=0;for(v=0;v1?I=o+v/(l-1)*(i-o):I=.5*(o+i);_e.nodes[_].x;)_++,_.99999&&(j=.99999));if(_>=T)c[$]=e.clamping?P:0;else if(_===0)c[$]=e.clamping?e.nodes[0].y:0;else{let K=(I-R)/(L-R);if(K.99)if(K<.5){c[$]=V;continue}else{c[$]=U;continue}if(z<.01){c[$]=(1-K)*V+K*U;continue}K<.5?K=.5*(K*2)**(1+10*z):K>.5&&(K=1-.5*((1-K)*2)**(1+10*z));const X=K*K,ee=X*K,ne=2*ee-3*X+1,le=-2*ee+3*X,ce=ee-2*X+K,ge=ee-X,pe=U-V,we=(1-z)*pe;c[$]=ne*V+le*U+ce*we+ge*we;const Te=VU?V:U;c[$]=c[$]Ve?Ve:c[$]}}}}const ale={range:[0,0],clamping:!0,allowDuplicateScalars:!1};function S$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ale,o),At.obj(n,e),e.nodes=[],At.setGet(n,e,["allowDuplicateScalars","clamping"]),At.setArray(n,e,["range"],2),At.getArray(n,e,["range"]),sle(n,e)}const lle=At.newInstance(S$,"vtkPiecewiseFunction");var Wg={newInstance:lle,extend:S$};const{BlendMode:fd,FilterMode:W3}=IU;function ule(n,e,o,i,l){let c=null;return l?(c=l,c.removeAllPoints()):c=Wg.newInstance(),c.addPointLong(-1024,0,1,1),c.addPoint(n,e),c.addPoint(o,i),c}const cle={createRadonTransferFunction:ule};function fle(n,e){e.classHierarchy.push("vtkVolumeMapper");const o={...n};n.getBounds=()=>{const i=n.getInputData();return i?(e.static||n.update(),e.bounds=i.getBounds()):e.bounds=zd(),e.bounds},n.update=()=>{n.getInputData()},n.setBlendModeToComposite=()=>{n.setBlendMode(fd.COMPOSITE_BLEND)},n.setBlendModeToMaximumIntensity=()=>{n.setBlendMode(fd.MAXIMUM_INTENSITY_BLEND)},n.setBlendModeToMinimumIntensity=()=>{n.setBlendMode(fd.MINIMUM_INTENSITY_BLEND)},n.setBlendModeToAverageIntensity=()=>{n.setBlendMode(fd.AVERAGE_INTENSITY_BLEND)},n.setBlendModeToAdditiveIntensity=()=>{n.setBlendMode(fd.ADDITIVE_INTENSITY_BLEND)},n.setBlendModeToRadonTransform=()=>{n.setBlendMode(fd.RADON_TRANSFORM_BLEND)},n.getBlendModeAsString=()=>At.enumToString(fd,e.blendMode),n.setAverageIPScalarRange=(i,l)=>{console.warn("setAverageIPScalarRange is deprecated use setIpScalarRange"),n.setIpScalarRange(i,l)},n.getFilterModeAsString=()=>At.enumToString(W3,e.filterMode),n.setFilterModeToOff=()=>{n.setFilterMode(W3.OFF)},n.setFilterModeToNormalized=()=>{n.setFilterMode(W3.NORMALIZED)},n.setFilterModeToRaw=()=>{n.setFilterMode(W3.RAW)},n.setGlobalIlluminationReach=i=>o.setGlobalIlluminationReach(cc(i,0,1)),n.setVolumetricScatteringBlending=i=>o.setVolumetricScatteringBlending(cc(i,0,1)),n.setVolumeShadowSamplingDistFactor=i=>o.setVolumeShadowSamplingDistFactor(i>=1?i:1),n.setAnisotropy=i=>o.setAnisotropy(cc(i,-.99,.99)),n.setLAOKernelSize=i=>o.setLAOKernelSize(KI(cc(i,1,32))),n.setLAOKernelRadius=i=>o.setLAOKernelRadius(i>=1?i:1)}const hle=n=>({bounds:[1,-1,1,-1,1,-1],sampleDistance:1,imageSampleDistance:1,maximumSamplesPerRay:1e3,autoAdjustSampleDistances:!0,initialInteractionScale:1,interactionSampleDistanceFactor:1,blendMode:fd.COMPOSITE_BLEND,ipScalarRange:[-1e6,1e6],filterMode:W3.OFF,preferSizeOverAccuracy:!1,computeNormalFromOpacity:!1,volumetricScatteringBlending:0,globalIlluminationReach:0,volumeShadowSamplingDistFactor:5,anisotropy:0,localAmbientOcclusion:!1,LAOKernelSize:15,LAOKernelRadius:7,updatedExtents:[],...n});function T$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hle(o)),xO.extend(n,e,o),At.setGet(n,e,["sampleDistance","imageSampleDistance","maximumSamplesPerRay","autoAdjustSampleDistances","initialInteractionScale","interactionSampleDistanceFactor","blendMode","filterMode","preferSizeOverAccuracy","computeNormalFromOpacity","volumetricScatteringBlending","globalIlluminationReach","volumeShadowSamplingDistFactor","anisotropy","localAmbientOcclusion","LAOKernelSize","LAOKernelRadius","updatedExtents"]),At.setGetArray(n,e,["ipScalarRange"],2),At.event(n,e,"lightingActivated"),fle(n,e)}const dle=At.newInstance(T$,"vtkVolumeMapper");var E$={newInstance:dle,extend:T$,...cle};function gle(n,e){e.classHierarchy.push("vtkSharedVolumeMapper");const o=n.delete;n.delete=()=>{e.scalarTexture=null,o()}}const ple={scalarTexture:null};function D$(n,e,o={}){Object.assign(e,ple,o),E$.extend(n,e,o),At.setGet(n,e,["scalarTexture"]),gle(n,e)}const mle=At.newInstance(D$,"vtkSharedVolumeMapper"),vle={newInstance:mle,extend:D$};function Bs(n){const e=n.indexOf(":");return n.substring(e+1)}function I$(n){let e=2166136261;for(let o=0;o>>0).toString(36)}const kle=1073741824;class yle{constructor(){this._imageCache=new Map,this._volumeCache=new Map,this._imageIdsToVolumeIdCache=new Map,this._referencedImageIdToImageIdCache=new Map,this._geometryCache=new Map,this._imageCacheSize=0,this._maxCacheSize=3*kle,this._geometryCacheSize=0,this.setMaxCacheSize=e=>{if(!e||typeof e!="number"){const o=`New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;throw new Error(o)}this._maxCacheSize=e},this.isCacheable=e=>{const o=this.getBytesAvailable(),i=Array.from(this._imageCache.values()).reduce((c,g)=>g.sharedCacheKey?c:c+g.sizeInBytes,0);return o+i>=e},this.getMaxCacheSize=()=>this._maxCacheSize,this.getCacheSize=()=>this._imageCacheSize,this._decacheImage=(e,o=!1)=>{var c;const i=this._imageCache.get(e);if(!i)return;if(i.sharedCacheKey&&!o)throw new Error("Cannot decache an image with a shared cache key. You need to manually decache the volume first.");const{imageLoadObject:l}=i;(c=i.image)!=null&&c.referencedImageId&&this._referencedImageIdToImageIdCache.delete(i.image.referencedImageId),l!=null&&l.cancelFn&&l.cancelFn(),l!=null&&l.decache&&l.decache(),this._imageCache.delete(e)},this._decacheVolume=e=>{const o=this._volumeCache.get(e);if(!o)return;const{volumeLoadObject:i,volume:l}=o;l&&(l.cancelLoading&&l.cancelLoading(),l.imageData&&l.imageData.delete(),i.cancelFn&&i.cancelFn(),l.imageIds&&l.imageIds.forEach(c=>{const g=this._imageCache.get(c);g&&g.sharedCacheKey===e&&(g.sharedCacheKey=void 0)}),this._volumeCache.delete(e))},this.purgeCache=()=>{const e=this._imageCache.keys();for(this.purgeVolumeCache();;){const{value:o,done:i}=e.next();if(i)break;this.removeImageLoadObject(o,{force:!0}),Or(pr,vr.IMAGE_CACHE_IMAGE_REMOVED,{imageId:o})}},this.purgeVolumeCache=()=>{const e=this._volumeCache.keys();for(;;){const{value:o,done:i}=e.next();if(i)break;this.removeVolumeLoadObject(o),Or(pr,vr.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:o})}},this.getVolumeLoadObject=e=>{if(e===void 0)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const o=this._volumeCache.get(e);if(o)return o.timeStamp=Date.now(),o.volumeLoadObject},this.putGeometryLoadObject=(e,o)=>{if(e===void 0)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(o.promise===void 0)throw new Error("putGeometryLoadObject: geometryLoadObject.promise must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");if(o.cancelFn&&typeof o.cancelFn!="function")throw new Error("putGeometryLoadObject: geometryLoadObject.cancel must be a function");const i={loaded:!1,geometryId:e,geometryLoadObject:o,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(e,i),o.promise.then(l=>{try{this._putGeometryCommon(e,l,i)}catch(c){throw console.debug(`Error in _putGeometryCommon for geometry ${e}:`,c),c}}).catch(l=>{throw console.debug(`Error caching geometry ${e}:`,l),this._geometryCache.delete(e),l})},this.getGeometry=e=>{if(e===void 0)throw new Error("getGeometry: geometryId must not be undefined");const o=this._geometryCache.get(e);if(o)return o.timeStamp=Date.now(),o.geometry},this.removeGeometryLoadObject=e=>{if(e===void 0)throw new Error("removeGeometryLoadObject: geometryId must not be undefined");const o=this._geometryCache.get(e);if(!o)throw new Error("removeGeometryLoadObject: geometryId was not present in geometryCache");this.decrementGeometryCacheSize(o.sizeInBytes);const i={geometry:o,geometryId:e};Or(pr,vr.GEOMETRY_CACHE_GEOMETRY_REMOVED,i),this._decacheGeometry(e)},this._decacheGeometry=e=>{const o=this._geometryCache.get(e);if(!o)return;const{geometryLoadObject:i}=o;i.cancelFn&&i.cancelFn(),i.decache&&i.decache(),this._geometryCache.delete(e)},this.incrementGeometryCacheSize=e=>{this._geometryCacheSize+=e},this.decrementGeometryCacheSize=e=>{this._geometryCacheSize-=e},this.getImageByReferencedImageId=e=>{var i;const o=this._referencedImageIdToImageIdCache.get(e);if(o)return(i=this._imageCache.get(o))==null?void 0:i.image},this.getImage=(e,o=eu.FAR_REPLICATE)=>{var l;if(e===void 0)throw new Error("getImage: imageId must not be undefined");const i=this._imageCache.get(e);if(i&&(i.timeStamp=Date.now(),!(((l=i.image)==null?void 0:l.imageQualityStatus){var l;if(e===void 0)throw new Error("getVolume: volumeId must not be undefined");const i=this._volumeCache.get(e);return i?(i.timeStamp=Date.now(),i.volume):o?(l=[...this._volumeCache.values()].find(c=>c.volumeId.includes(e)))==null?void 0:l.volume:void 0},this.getVolumes=()=>Array.from(this._volumeCache.values()).map(o=>o.volume),this.filterVolumesByReferenceId=e=>this.getVolumes().filter(i=>i.referencedVolumeId===e),this.removeImageLoadObject=(e,{force:o=!1}={})=>{if(e===void 0)throw new Error("removeImageLoadObject: imageId must not be undefined");const i=this._imageCache.get(e);if(!i)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._decacheImage(e,o),this.incrementImageCacheSize(-i.sizeInBytes);const l={image:i,imageId:e};Or(pr,vr.IMAGE_CACHE_IMAGE_REMOVED,l)},this.removeVolumeLoadObject=e=>{if(e===void 0)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const o=this._volumeCache.get(e);if(!o)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");const i={volume:o,volumeId:e};Or(pr,vr.VOLUME_CACHE_VOLUME_REMOVED,i),this._decacheVolume(e)},this.incrementImageCacheSize=e=>{this._imageCacheSize+=e},this.decrementImageCacheSize=e=>{this._imageCacheSize-=e},this.getGeometryLoadObject=e=>{if(e===void 0)throw new Error("getGeometryLoadObject: geometryId must not be undefined");const o=this._geometryCache.get(e);if(o)return o.timeStamp=Date.now(),o.geometryLoadObject}}generateVolumeId(e){const o=e.map(Bs).sort();let i=2166136261;for(const l of o){const c=I$(l);for(let g=0;g>>0).toString(36)}`}getImageIdsForVolumeId(e){return Array.from(this._imageIdsToVolumeIdCache.entries()).filter(([o,i])=>i===e).map(([o])=>o)}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(e,o){let i=this.getBytesAvailable();if(i>=e)return i;const l=Array.from(this._imageCache.values()).filter(_=>!_.sharedCacheKey);function c(_,T){return _.timeStamp>T.timeStamp?1:_.timeStamp_.imageId);let v=g;o&&(v=g.filter(_=>!o.includes(_)));for(const _ of v)if(this.removeImageLoadObject(_),Or(pr,vr.IMAGE_CACHE_IMAGE_REMOVED,{imageId:_}),i=this.getBytesAvailable(),i>=e)return i;for(const _ of g)if(this.removeImageLoadObject(_),Or(pr,vr.IMAGE_CACHE_IMAGE_REMOVED,{imageId:_}),i=this.getBytesAvailable(),i>=e)return i}_putImageCommon(e,o,i){if(!this._imageCache.has(e)){console.warn("The image was purged from the cache before it completed loading.");return}if(!o){console.warn("Image is undefined");return}if(o.sizeInBytes===void 0||Number.isNaN(o.sizeInBytes))throw new Error("_putImageCommon: image.sizeInBytes must not be undefined");if(o.sizeInBytes.toFixed===void 0)throw new Error("_putImageCommon: image.sizeInBytes is not a number");if(!this.isCacheable(o.sizeInBytes))throw new Error(vr.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(o.sizeInBytes),i.loaded=!0,i.image=o,i.sizeInBytes=o.sizeInBytes,this.incrementImageCacheSize(i.sizeInBytes);const l={image:i};o.referencedImageId&&this._referencedImageIdToImageIdCache.set(o.referencedImageId,e),Or(pr,vr.IMAGE_CACHE_IMAGE_ADDED,l),i.sharedCacheKey=o.sharedCacheKey}async putImageLoadObject(e,o){if(e===void 0)throw console.error("putImageLoadObject: imageId must not be undefined"),new Error("putImageLoadObject: imageId must not be undefined");if(o.promise===void 0)throw console.error("putImageLoadObject: imageLoadObject.promise must not be undefined"),new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");const i=this._imageCache.get(e);if(i!=null&&i.imageLoadObject)throw console.warn(`putImageLoadObject: imageId ${e} already in cache`),new Error("putImageLoadObject: imageId already in cache");if(o.cancelFn&&typeof o.cancelFn!="function")throw console.error("putImageLoadObject: imageLoadObject.cancel must be a function"),new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const l={...i,loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:o,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(e,l),this._imageCache.set(e,l),o.promise.then(c=>{try{this._putImageCommon(e,c,l)}catch(g){throw console.debug(`Error in _putImageCommon for image ${e}:`,g),g}}).catch(c=>{throw console.debug(`Error caching image ${e}:`,c),this._imageCache.delete(e),c})}putImageSync(e,o){if(e===void 0)throw new Error("putImageSync: imageId must not be undefined");if(this._imageCache.has(e))throw new Error("putImageSync: imageId already in cache");const i={loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:{promise:Promise.resolve(o)},timeStamp:Date.now(),sizeInBytes:0};this._imageCache.set(e,i);try{this._putImageCommon(e,o,i)}catch(l){throw this._imageCache.delete(e),l}}getImageLoadObject(e){if(e===void 0)throw new Error("getImageLoadObject: imageId must not be undefined");const o=this._imageCache.get(e);if(o)return o.timeStamp=Date.now(),o.imageLoadObject}isLoaded(e){const o=this._imageCache.get(e);return o?o.loaded:!1}getVolumeContainingImageId(e){const o=Array.from(this._volumeCache.keys()),i=Bs(e);for(const l of o){const c=this._volumeCache.get(l);if(!c)return;const{volume:g}=c;if(!g.imageIds.length)return;const v=g.getImageURIIndex(i);if(v>-1)return{volume:g,imageIdIndex:v}}}getCachedImageBasedOnImageURI(e){const o=Bs(e),l=Array.from(this._imageCache.keys()).find(c=>Bs(c)===o);if(l)return this._imageCache.get(l)}_putVolumeCommon(e,o,i){var c;if(!this._volumeCache.get(e)){console.warn("The volume was purged from the cache before it completed loading.");return}i.loaded=!0,i.volume=o,(c=o.imageIds)==null||c.forEach(g=>{const v=this._imageCache.get(g);v&&(v.sharedCacheKey=e)});const l={volume:i};Or(pr,vr.VOLUME_CACHE_VOLUME_ADDED,l)}putVolumeSync(e,o){if(e===void 0)throw new Error("putVolumeSync: volumeId must not be undefined");if(this._volumeCache.has(e))throw new Error("putVolumeSync: volumeId already in cache");const i={loaded:!1,volumeId:e,volumeLoadObject:{promise:Promise.resolve(o)},timeStamp:Date.now(),sizeInBytes:0};this._volumeCache.set(e,i);try{this._putVolumeCommon(e,o,i)}catch(l){throw this._volumeCache.delete(e),l}}async putVolumeLoadObject(e,o){if(e===void 0)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(o.promise===void 0)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(e))throw new Error(`putVolumeLoadObject: volumeId:${e} already in cache`);if(o.cancelFn&&typeof o.cancelFn!="function")throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const i={loaded:!1,volumeId:e,volumeLoadObject:o,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(e,i),o.promise.then(l=>{try{this._putVolumeCommon(e,l,i)}catch(c){throw console.error(`Error in _putVolumeCommon for volume ${e}:`,c),this._volumeCache.delete(e),c}}).catch(l=>{throw this._volumeCache.delete(e),l})}_putGeometryCommon(e,o,i){if(!this._geometryCache.get(e)){console.warn("The geometry was purged from the cache before it completed loading.");return}if(!o){console.warn("Geometry is undefined");return}if(o.sizeInBytes===void 0||Number.isNaN(o.sizeInBytes))throw new Error("_putGeometryCommon: geometry.sizeInBytes must not be undefined");if(o.sizeInBytes.toFixed===void 0)throw new Error("_putGeometryCommon: geometry.sizeInBytes is not a number");if(!this.isCacheable(o.sizeInBytes))throw new Error(vr.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(o.sizeInBytes),i.loaded=!0,i.geometry=o,i.sizeInBytes=o.sizeInBytes,this.incrementGeometryCacheSize(i.sizeInBytes);const l={geometry:i};Or(pr,vr.GEOMETRY_CACHE_GEOMETRY_ADDED,l)}putGeometrySync(e,o){if(e===void 0)throw new Error("putGeometrySync: geometryId must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometrySync: geometryId already in cache");const i={loaded:!1,geometryId:e,geometryLoadObject:{promise:Promise.resolve(o)},timeStamp:Date.now(),sizeInBytes:0};this._geometryCache.set(e,i);try{this._putGeometryCommon(e,o,i)}catch(l){throw this._geometryCache.delete(e),l}}setPartialImage(e,o){const i=this._imageCache.get(e);if(!i){o&&this._imageCache.set(e,{image:o,imageId:e,loaded:!1,timeStamp:Date.now(),sizeInBytes:0});return}i.loaded&&(i.loaded=!1,i.imageLoadObject=null,this.incrementImageCacheSize(-i.sizeInBytes),i.sizeInBytes=0),i.image=o||i.image}getImageQuality(e){var i;const o=(i=this._imageCache.get(e))==null?void 0:i.image;return o?o.imageQualityStatus||eu.FULL_RESOLUTION:void 0}}const Jn=new yle;function mL(n,e){const o=MO(e),i=new o(n.length);return i.set(n),i}function wle(n,e){e.classHierarchy.push("vtkStreamingOpenGLTexture"),e.updatedFrames=[],e.volumeId=null;const o=n.create3DFilterableFromRaw;n.create3DFilterableFromRaw=(v,_,T,P,I,R,L)=>{e.inputDataType=I,e.inputNumComps=P,o(v,_,T,P,I,R,L)};const i=n.updateVolumeInfoForGL;n.updateVolumeInfoForGL=(v,_)=>{const T=i(v,_);return e.volumeInfo.dataComputedScale=[1],e.volumeInfo.dataComputedOffset=[0],T},n.update3DFromRaw=()=>{const{volumeId:v}=e;if(!v)return;const _=Jn.getVolume(v);if(e._openGLRenderWindow.activateTexture(n),n.createTexture(),n.bind(),_.isDynamicVolume()){g();return}return n.hasUpdatedFrames()&&c()};const l=n.modified;n.setUpdatedFrame=v=>{e.updatedFrames[v]=!0,l()},n.modified=()=>{l();const v=Jn.getVolume(e.volumeId);if(!v)return;const _=v.imageIds;for(let T=0;T<_.length;T++)e.updatedFrames[T]=!0};function c(){const v=Jn.getVolume(e.volumeId),_=v.imageIds;for(let T=0;T!e.updatedFrames.length||e.updatedFrames.some(v=>v),n.getUpdatedFrames=()=>e.updatedFrames,n.setVolumeId=v=>{e.volumeId=v},n.getVolumeId=()=>e.volumeId,n.setTextureParameters=({width:v,height:_,depth:T,numberOfComponents:P,dataType:I})=>{e.width??(e.width=v),e.height??(e.height=_),e.depth??(e.depth=T),e.inputNumComps??(e.inputNumComps=P),e.inputDataType??(e.inputDataType=I)},n.getTextureParameters=()=>({width:e.width,height:e.height,depth:e.depth,numberOfComponents:e.inputNumComps,dataType:e.inputDataType})}const Cle={updatedFrames:[]};function O$(n,e,o={}){Object.assign(e,Cle,o),Cs.extend(n,e,o),wle(n,e)}const _le=At.newInstance(O$,"vtkStreamingOpenGLTexture"),xle={newInstance:_le,extend:O$},Sle={isPerformingCoordinateTransformation:!1};function M$(n,e,o={}){Object.assign(e,Sle,o),bO.extend(n,e,o),At.setGet(n,e,["isPerformingCoordinateTransformation"]),Ele(n,e)}const Tle=At.newInstance(M$,"vtkSlabCamera");function Ele(n,e){e.classHierarchy.push("vtkSlabCamera");const o=zi(new Float64Array(16)),i=new Float64Array(3);n.getProjectionMatrix=(l,c,g)=>{const v=Dl();if(e.projectionMatrix){const R=1/e.physicalScale;return Ao(i,R,R,R),Ea(v,e.projectionMatrix),hf(v,v,i),po(v,v),v}zi(o);let _=e.clippingRange[0],T=e.clippingRange[1];e.isPerformingCoordinateTransformation&&(_=e.distance,T=e.distance+.1);const P=T-_,I=[_+(c+1)*P/2,_+(g+1)*P/2];if(e.parallelProjection){const R=e.parallelScale*l,L=e.parallelScale,V=(e.windowCenter[0]-1)*R,U=(e.windowCenter[0]+1)*R,j=(e.windowCenter[1]-1)*L,z=(e.windowCenter[1]+1)*L;aO(o,V,U,j,z,I[0],I[1]),po(o,o)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const R=Math.tan(h0.radiansFromDegrees(e.viewAngle)/2);let L,V;e.useHorizontalViewAngle===!0?(L=_*R,V=_*R/l):(L=_*R*l,V=_*R);const U=(e.windowCenter[0]-1)*L,j=(e.windowCenter[0]+1)*L,z=(e.windowCenter[1]-1)*V,$=(e.windowCenter[1]+1)*V,K=I[0],X=I[1];o[0]=2*K/(j-U),o[5]=2*K/($-z),o[2]=(U+j)/(j-U),o[6]=(z+$)/($-z),o[10]=-(K+X)/(X-K),o[14]=-1,o[11]=-2*K*X/(X-K),o[15]=0}}return Ea(v,o),v}}const Dle={newInstance:Tle,extend:M$};function ac(n){return Tl(n,"vtkVolume")||Tl(n,"vtkImageSlice")}function Tl(n,e){const o="isA"in n?n:n.actor;return o?!!o.isA(e):!1}const af=[];function j8(n,e=0){let o;for(o=0;o0;)af.pop()}function Hr(n,...e){for(let o=0;o=0&&Te<=z.levels.SILENT)return Te;throw new TypeError("log.setLevel() called with invalid level: "+we)}z.name=U,z.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},z.methodFactory=j||R,z.getLevel=function(){return X??K??$},z.setLevel=function(we,Te){return X=ge(we),Te!==!1&&ne(X),P.call(z)},z.setDefaultLevel=function(we){K=ge(we),le()||z.setLevel(we,!1)},z.resetLevel=function(){X=null,ce(),P.call(z)},z.enableAll=function(we){z.setLevel(z.levels.TRACE,we)},z.disableAll=function(we){z.setLevel(z.levels.SILENT,we)},z.rebuild=function(){if(g!==z&&($=ge(g.getLevel())),P.call(z),g===z)for(var we in c)c[we].rebuild()},$=ge(g?g.getLevel():"WARN");var pe=le();pe!=null&&(X=ge(pe)),P.call(z)}g=new L,g.getLogger=function(j){if(typeof j!="symbol"&&typeof j!="string"||j==="")throw new TypeError("You must supply a name when creating a logger.");var z=c[j];return z||(z=c[j]=new L(j,g.methodFactory)),z};var V=typeof window!==o?window.log:void 0;return g.noConflict=function(){return typeof window!==o&&window.log===g&&(window.log=V),g},g.getLoggers=function(){return c},g.default=g,g})})(R$);var Mle=R$.exports;const Ple=yf(Mle),A$=Ple.noConflict();typeof window<"u"&&(window.log=A$);function CC(n){const e=A$.getLogger(n[0]);return e.getLogger=(...o)=>CC(`${n}.${o.join(".")}`),e}function BO(...n){return CC(n.join("."))}const z8=CC("cs3d"),GO=z8.getLogger("core"),Rle=z8.getLogger("tools"),Ale=z8.getLogger("dicomImageLoader"),Lle=z8.getLogger("ai"),Nle=z8.getLogger("examples"),ble=BO("consistency","dicom"),Fle=BO("consistency","image"),Vle=Object.freeze(Object.defineProperty({__proto__:null,aiLog:Lle,coreLog:GO,cs3dLog:z8,dicomConsistencyLog:ble,examplesLog:Nle,getLogger:BO,getRootLogger:CC,imageConsistencyLog:Fle,loaderLog:Ale,toolsLog:Rle},Symbol.toStringTag,{value:"Module"}));function l4(n,e){const{direction:o,spacing:i}=n,l=o.slice(0,3),c=o.slice(3,6),g=o.slice(6,9),v=[mi(l,e),mi(c,e),mi(g,e)],_=nr();return Ao(_,v[0]*i[0],v[1]*i[1],v[2]*i[2]),K1(_)}const vL=GO.getLogger("utilities","getClosestImageId");function yh(n,e,o,i){const{direction:l,spacing:c,imageIds:g}=n,{ignoreSpacing:v=!1}=i||{};if(!(g!=null&&g.length))return;const _=l.slice(6,9),T=mi(_,o);if(Math.abs(T)<1-ou)return;let P;v||(P=l4({direction:l,spacing:c},o)/2);let I,R=1/0;for(let L=0;Ln,kL=1e-6;let L$=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.matrix=zi(new Float64Array(16)),this.tmp=new Float64Array(3),this.angleConv=e?dre:Ule}rotateFromDirections(e,o){const i=new Float64Array(3),l=new Float64Array(3),c=new Float64Array(16);Ao(i,e[0],e[1],e[2]),Ao(l,o[0],o[1],o[2]),Uo(i,i),Uo(l,l);const g=mi(i,l);return g>=1?this:(ro(this.tmp,i,l),K1(this.tmp)1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;if(Fv(jI,this.matrix))return this;const l=i===-1?e.length:o+i*3;for(let c=o;cMath.abs(Math.abs(n)-1)fS(n[e])||fS(n[e+1])||fS(n[e+2]),$le=n=>hS(n,0)&&hS(n,3)&&hS(n,6);function _C(n,e,o){const i=n.getMapper().getInputData();let l;const c=i.getDirection();if($le(c))l=N$(n);else{const[I,R,L]=i.getDimensions();l=[[0,0,0],[I-1,0,0],[0,R-1,0],[I-1,R-1,0],[0,0,L-1],[I-1,0,L-1],[0,R-1,L-1],[I-1,R-1,L-1]].map(U=>i.indexToWorld(U))}const g=M2.buildFromDegree().identity().rotateFromDirections(e,[1,0,0]);l.forEach(I=>g.apply(I));const v=[...o];g.apply(v);const _=v[0];let T=1/0,P=-1/0;for(let I=0;I<8;I++){const R=l[I][0];R>P&&(P=R),RP?L=P:L<0&&(L=0);const U=L*l;V=[V[0]+i[0]*U,V[1]+i[1]*U,V[2]+i[2]*U];const j=[V[0]+T[0],V[1]+T[1],V[2]+T[2]];return{newFocalPoint:V,newPosition:j}}const jle={RGB:0,HSV:1,LAB:2,DIVERGING:3},zle={LINEAR:0,LOG10:1};var b$={ColorSpace:jle,Scale:zle};const{ColorSpace:Su,Scale:WO}=b$,{ScalarMappingTarget:jy}=EO,{vtkDebugMacro:Hle,vtkErrorMacro:jf,vtkWarningMacro:Kle}=At;function yL(n,e){const o=n[0],i=n[1],l=n[2],c=Math.sqrt(o*o+i*i+l*l),g=c>.001?Math.acos(o/c):0,v=g>.001?Math.atan2(l,i):0;e[0]=c,e[1]=g,e[2]=v}function qle(n,e){const o=n[0],i=n[1],l=n[2];e[0]=o*Math.cos(i),e[1]=o*Math.sin(i)*Math.cos(l),e[2]=o*Math.sin(i)*Math.sin(l)}function wL(n,e){if(n[0]>=e-.1)return n[2];const o=n[1]*Math.sqrt(e*e-n[0]*n[0])/(n[0]*Math.sin(n[1]));return n[2]>-.3*Math.PI?n[2]+o:n[2]-o}function Xle(n,e){let o=n-e;for(o<0&&(o=-o);o>=2*Math.PI;)o-=2*Math.PI;return o>Math.PI&&(o=2*Math.PI-o),o}function CL(n,e,o,i){const l=[],c=[];Cg(e,l),Cg(o,c);const g=[],v=[];yL(l,g),yL(c,v);let _=n;if(g[1]>.05&&v[1]>.05&&Xle(g[2],v[2])>.33*Math.PI){let I=Math.max(g[0],v[0]);I=Math.max(88,I),n<.5?(v[0]=I,v[1]=0,v[2]=0,_*=2):(g[0]=I,g[1]=0,g[2]=0,_=2*_-1)}g[1]<.05&&v[1]>.05?g[2]=wL(v,g[0]):v[1]<.05&&g[1]>.05&&(v[2]=wL(g,v[0]));const T=[];T[0]=(1-_)*g[0]+_*v[0],T[1]=(1-_)*g[1]+_*v[1],T[2]=(1-_)*g[2]+_*v[2];const P=[];qle(T,P),Fw(P,i)}function Yle(n,e){e.classHierarchy.push("vtkColorTransferFunction"),n.getSize=()=>e.nodes.length,n.addRGBPoint=(o,i,l,c)=>n.addRGBPointLong(o,i,l,c,.5,0),n.addRGBPointLong=function(o,i,l,c){let g=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,v=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(g<0||g>1)return jf("Midpoint outside range [0.0, 1.0]"),-1;if(v<0||v>1)return jf("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||n.removePoint(o);const _={x:o,r:i,g:l,b:c,midpoint:g,sharpness:v};e.nodes.push(_),n.sortAndUpdateRange();let T=0;for(;Tn.addHSVPointLong(o,i,l,c,.5,0),n.addHSVPointLong=function(o,i,l,c){let g=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,v=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;const _=[];return dg([i,l,c],_),n.addRGBPoint(o,_[0],_[1],_[2],g,v)},n.setNodes=o=>{if(e.nodes!==o){const i=JSON.stringify(e.nodes);e.nodes=o;const l=JSON.stringify(e.nodes);if(n.sortAndUpdateRange()||i!==l)return n.modified(),!0}return!1},n.sortAndUpdateRange=()=>{const o=JSON.stringify(e.nodes);e.nodes.sort((c,g)=>c.x-g.x);const i=JSON.stringify(e.nodes),l=n.updateRange();return!l&&o!==i?(n.modified(),!0):l},n.updateRange=()=>{const o=[2];o[0]=e.mappingRange[0],o[1]=e.mappingRange[1];const i=e.nodes.length;return i?(e.mappingRange[0]=e.nodes[0].x,e.mappingRange[1]=e.nodes[i-1].x):(e.mappingRange[0]=0,e.mappingRange[1]=0),o[0]===e.mappingRange[0]&&o[1]===e.mappingRange[1]?!1:(n.modified(),!0)},n.removePoint=o=>{let i=0;for(;i=e.nodes.length)return-1;let c=!1;return e.nodes.splice(i,1),(i===0||i===e.nodes.length)&&(c=n.updateRange()),c||n.modified(),l},n.movePoint=(o,i)=>{if(o!==i){n.removePoint(i);for(let l=0;l{e.nodes=[],n.sortAndUpdateRange()},n.addRGBSegment=(o,i,l,c,g,v,_,T)=>{n.sortAndUpdateRange();for(let P=0;P=o&&e.nodes[P].x<=g?e.nodes.splice(P,1):P++;n.addRGBPointLong(o,i,l,c,.5,0),n.addRGBPointLong(g,v,_,T,.5,0),n.modified()},n.addHSVSegment=(o,i,l,c,g,v,_,T)=>{const P=[i,l,c],I=[v,_,T],R=[],L=[];dg(P,R),dg(I,L),n.addRGBSegment(o,R[0],R[1],R[2],g,L[0],L[1],L[2])},n.mapValue=o=>{const i=[];return n.getColor(o,i),[Math.floor(255*i[0]+.5),Math.floor(255*i[1]+.5),Math.floor(255*i[2]+.5),255]},n.getColor=(o,i)=>{if(e.indexedLookup){const l=n.getSize(),c=n.getAnnotatedValueIndexInternal(o);if(c<0||l===0){const g=n.getNanColorByReference();i[0]=g[0],i[1]=g[1],i[2]=g[2]}else{const g=[];n.getNodeValue(c%l,g),i[0]=g[1],i[1]=g[2],i[2]=g[3]}return}n.getTable(o,o,1,i)},n.getRedValue=o=>{const i=[];return n.getColor(o,i),i[0]},n.getGreenValue=o=>{const i=[];return n.getColor(o,i),i[1]},n.getBlueValue=o=>{const i=[];return n.getColor(o,i),i[2]},n.getTable=(o,i,l,c)=>{const g=Number(o),v=Number(i);if(Vw(g)||Vw(v)){for(let ge=0;ge0);let ne=0,le=0,ce=0;ee&&(ne=Math.log10(g),le=Math.log10(v));for(let ge=0;ge1?ee?(ce=ne+ge/(l-1)*(le-ne),L=10**ce):L=g+ge/(l-1)*(v-g):ee?(ce=.5*(ne+le),L=10**ce):L=.5*(g+v),e.discretize){const we=e.mappingRange;if(L>=we[0]&&L<=we[1]){const Te=e.numberOfValues,Ve=we[1]-we[0];if(Te<=1)L=we[0]+Ve/2;else{const Pe=(L-we[0])/Ve,je=KI(Te*Pe);L=we[0]+je/(Te-1)*Ve}}}for(;_e.nodes[_].x;)_++,_.99999&&($=.99999));if(L>e.mappingRange[1])c[pe]=0,c[pe+1]=0,c[pe+2]=0,e.clamping&&(n.getUseAboveRangeColor()?(c[pe]=e.aboveRangeColor[0],c[pe+1]=e.aboveRangeColor[1],c[pe+2]=e.aboveRangeColor[2]):(c[pe]=P,c[pe+1]=I,c[pe+2]=R));else if(L0&&(c[pe]=e.nodes[0].r,c[pe+1]=e.nodes[0].g,c[pe+2]=e.nodes[0].b));else if(_===0&&(Math.abs(L-g)<1e-6||e.discretize))T>0?(c[pe]=e.nodes[0].r,c[pe+1]=e.nodes[0].g,c[pe+2]=e.nodes[0].b):(c[pe]=0,c[pe+1]=0,c[pe+2]=0);else{let we=0;if(ee?we=(ce-V)/(U-V):we=(L-V)/(U-V),we<$?we=.5*we/$:we=.5+.5*(we-$)/(1-$),K>.99)if(we<.5){c[pe]=j[0],c[pe+1]=j[1],c[pe+2]=j[2];continue}else{c[pe]=z[0],c[pe+1]=z[1],c[pe+2]=z[2];continue}if(K<.01){if(e.colorSpace===Su.RGB)c[pe]=(1-we)*j[0]+we*z[0],c[pe+1]=(1-we)*j[1]+we*z[1],c[pe+2]=(1-we)*j[2]+we*z[2];else if(e.colorSpace===Su.HSV){const qe=[],ut=[];F3(j,qe),F3(z,ut),e.hSVWrap&&(qe[0]-ut[0]>.5||ut[0]-qe[0]>.5)&&(qe[0]>ut[0]?qe[0]-=1:ut[0]-=1);const wt=[];wt[0]=(1-we)*qe[0]+we*ut[0],wt[0]<0&&(wt[0]+=1),wt[1]=(1-we)*qe[1]+we*ut[1],wt[2]=(1-we)*qe[2]+we*ut[2],dg(wt,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]}else if(e.colorSpace===Su.LAB){const qe=[],ut=[];Cg(j,qe),Cg(z,ut);const wt=[];wt[0]=(1-we)*qe[0]+we*ut[0],wt[1]=(1-we)*qe[1]+we*ut[1],wt[2]=(1-we)*qe[2]+we*ut[2],Fw(wt,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]}else e.colorSpace===Su.DIVERGING?(CL(we,j,z,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]):jf("ColorSpace set to invalid value.",e.colorSpace);continue}we<.5?we=.5*(we*2)**(1+10*K):we>.5&&(we=1-.5*((1-we)*2)**(1+10*K));const Te=we*we,Ve=Te*we,Pe=2*Ve-3*Te+1,je=-2*Ve+3*Te,Je=Ve-2*Te+we,it=Ve-Te;let Ge,Ke;if(e.colorSpace===Su.RGB)for(let qe=0;qe<3;qe++)Ge=z[qe]-j[qe],Ke=(1-K)*Ge,c[pe+qe]=Pe*j[qe]+je*z[qe]+Je*Ke+it*Ke;else if(e.colorSpace===Su.HSV){const qe=[],ut=[];F3(j,qe),F3(z,ut),e.hSVWrap&&(qe[0]-ut[0]>.5||ut[0]-qe[0]>.5)&&(qe[0]>ut[0]?qe[0]-=1:ut[0]-=1);const wt=[];for(let Et=0;Et<3;Et++)Ge=ut[Et]-qe[Et],Ke=(1-K)*Ge,wt[Et]=Pe*qe[Et]+je*ut[Et]+Je*Ke+it*Ke,Et===0&&wt[Et]<0&&(wt[Et]+=1);dg(wt,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]}else if(e.colorSpace===Su.LAB){const qe=[],ut=[];Cg(j,qe),Cg(z,ut);const wt=[];for(let Et=0;Et<3;Et++)Ge=ut[Et]-qe[Et],Ke=(1-K)*Ge,wt[Et]=Pe*qe[Et]+je*ut[Et]+Je*Ke+it*Ke;Fw(wt,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]}else e.colorSpace===Su.DIVERGING?(CL(we,j,z,X),c[pe]=X[0],c[pe+1]=X[1],c[pe+2]=X[2]):jf("ColorSpace set to invalid value.");for(let qe=0;qe<3;qe++)c[pe+qe]=c[pe+qe]<0?0:c[pe+qe],c[pe+qe]=c[pe+qe]>1?1:c[pe+qe]}}},n.getUint8Table=function(o,i,l){let c=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(n.getMTime()<=e.buildTime&&e.tableSize===l&&e.tableWithAlpha!==c)return e.table;if(e.nodes.length===0)return jf("Attempting to lookup a value with no points in the function"),e.table;const g=c?4:3;(e.tableSize!==l||e.tableWithAlpha!==c)&&(e.table=new Uint8Array(l*g),e.tableSize=l,e.tableWithAlpha=c);const v=[];n.getTable(o,i,l,v);for(let _=0;_{n.removeAllPoints();const i=o.getNumberOfComponents();for(let l=0;l{let g=0;n.removeAllPoints(),l>1&&(g=(i-o)/(l-1));for(let v=0;vo<0||o>=e.nodes.length?(jf("Index out of range!"),-1):(i[0]=e.nodes[o].x,i[1]=e.nodes[o].r,i[2]=e.nodes[o].g,i[3]=e.nodes[o].b,i[4]=e.nodes[o].midpoint,i[5]=e.nodes[o].sharpness,1),n.setNodeValue=(o,i)=>{if(o<0||o>=e.nodes.length)return jf("Index out of range!"),-1;const l=e.nodes[o].x;return e.nodes[o].x=i[0],e.nodes[o].r=i[1],e.nodes[o].g=i[2],e.nodes[o].b=i[3],e.nodes[o].midpoint=i[4],e.nodes[o].sharpness=i[5],l!==i[0]?n.sortAndUpdateRange():n.modified(),1},n.getNumberOfAvailableColors=()=>{var i;if(e.indexedLookup&&n.getSize())return n.getSize();if(e.tableSize)return e.tableSize;const o=((i=e.nodes)==null?void 0:i.length)??0;return Math.max(4094,o)},n.getIndexedColor=(o,i)=>{const l=n.getSize();if(l>0&&o>=0){const g=[];n.getNodeValue(o%l,g);for(let v=0;v<3;++v)i[v]=g[v+1];i[3]=1;return}const c=n.getNanColorByReference();i[0]=c[0],i[1]=c[1],i[2]=c[2],i[3]=1},n.fillFromDataPointer=(o,i)=>{if(!(o<=0||!i)){n.removeAllPoints();for(let l=0;l{const l=[o,i],c=n.getRange();if(c[1]===l[1]&&c[0]===l[0])return;if(l[1]===l[0]){jf("attempt to set zero width color range");return}const g=(l[1]-l[0])/(c[1]-c[0]),v=l[0]-c[0]*g;for(let _=0;_{const i=n.getRange(),l=[];i[0]o[1]?(n.getColor(o[1],l),n.addRGBPoint(o[1],l[0],l[1],l[2])):(n.getColor(i[1],l),n.addRGBPoint(o[1],l[0],l[1],l[2])),n.sortAndUpdateRange();for(let c=0;c=o[0]&&e.nodes[c].x<=o[1]?e.nodes.splice(c,1):++c;return 1},n.estimateMinNumberOfSamples=(o,i)=>{const l=n.findMinimumXDistance();return Math.ceil((i-o)/l)},n.findMinimumXDistance=()=>{if(e.nodes.length<2)return-1;let o=Number.MAX_VALUE;for(let i=0;i{if(n.getSize()===0){Hle("Transfer Function Has No Points!");return}e.indexedLookup?n.mapDataIndexed(o,i,l,c):n.mapData(o,i,l,c)},n.mapData=(o,i,l,c)=>{if(n.getSize()===0){Kle("Transfer Function Has No Points!");return}const g=Math.floor(n.getAlpha()*255+.5),v=o.getNumberOfTuples(),_=o.getNumberOfComponents(),T=i.getData(),P=o.getData(),I=[];if(l===jy.RGBA)for(let R=0;R{const i=JSON.stringify(e.colorSpace);o.ColorSpace&&(e.colorSpace=Su[o.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(jf(`ColorSpace ${o.ColorSpace} not supported, using RGB instead`),e.colorSpace=Su.RGB));let l=i!==JSON.stringify(e.colorSpace);const c=l||JSON.stringify(e.nanColor);if(o.NanColor)for(e.nanColor=[].concat(o.NanColor);e.nanColor.length<4;)e.nanColor.push(1);l=l||c!==JSON.stringify(e.nanColor);const g=l||JSON.stringify(e.nodes);if(o.RGBPoints){const T=o.RGBPoints.length;e.nodes=[];const P=.5,I=0;for(let R=0;R2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jle,o),EO.extend(n,e,o),e.table=[],e.nodes=[],e.nanColor=[.5,0,0,1],e.belowRangeColor=[0,0,0,1],e.aboveRangeColor=[1,1,1,1],e.buildTime={},At.obj(e.buildTime),At.get(n,e,["buildTime","mappingRange"]),At.setGet(n,e,["useAboveRangeColor","useBelowRangeColor","discretize","numberOfValues",{type:"enum",name:"colorSpace",enum:Su},{type:"enum",name:"scale",enum:WO}]),At.setArray(n,e,["nanColor","belowRangeColor","aboveRangeColor"],4),At.getArray(n,e,["nanColor","belowRangeColor","aboveRangeColor"]),Yle(n,e)}const Zle=At.newInstance(F$,"vtkColorTransferFunction");var wh={newInstance:Zle,extend:F$,...b$},Qle=[{Name:"KAAMS",IndexedColors:[1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,0,1,0,1,1,.63,.63,1,.67,.5,.33,1,.5,.75,.53,.35,.7,1,.75,.5],Annotations:[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11]},{ColorSpace:"Diverging",Name:"Cool to Warm",NanColor:[1,1,0],RGBPoints:[0,.23137254902,.298039215686,.752941176471,.5,.865,.865,.865,1,.705882352941,.0156862745098,.149019607843]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Cool to Warm (Extended)",NanColor:[.25,0,0],RGBPoints:[0,0,0,.34902,.03125,.039216,.062745,.380392,.0625,.062745,.117647,.411765,.09375,.090196,.184314,.45098,.125,.12549,.262745,.501961,.15625,.160784,.337255,.541176,.1875,.2,.396078,.568627,.21875,.239216,.454902,.6,.25,.286275,.521569,.65098,.28125,.337255,.592157,.701961,.3125,.388235,.654902,.74902,.34375,.466667,.737255,.819608,.375,.572549,.819608,.878431,.40625,.654902,.866667,.909804,.4375,.752941,.917647,.941176,.46875,.823529,.956863,.968627,.5,.988235,.960784,.901961,.5,.941176,.984314,.988235,.52,.988235,.945098,.85098,.54,.980392,.898039,.784314,.5625,.968627,.835294,.698039,.59375,.94902,.733333,.588235,.625,.929412,.65098,.509804,.65625,.909804,.564706,.435294,.6875,.878431,.458824,.352941,.71875,.839216,.388235,.286275,.75,.760784,.294118,.211765,.78125,.701961,.211765,.168627,.8125,.65098,.156863,.129412,.84375,.6,.094118,.094118,.875,.54902,.066667,.098039,.90625,.501961,.05098,.12549,.9375,.45098,.054902,.172549,.96875,.4,.054902,.192157,1,.34902,.070588,.211765]},{ColorSpace:"Diverging",Name:"Warm to Cool",NanColor:[1,1,0],RGBPoints:[0,.705882352941,.0156862745098,.149019607843,.5,.865,.865,.865,1,.23137254902,.298039215686,.752941176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Warm to Cool (Extended)",NanColor:[.250004,0,0],RGBPoints:[0,.34902,0,.129412,.025,.4,.00392157,.101961,.05,.470588,.0156863,.0901961,.075,.54902,.027451,.0705882,.1,.619608,.0627451,.0431373,.125,.690196,.12549,.0627451,.15,.741176,.184314,.0745098,.175,.788235,.266667,.0941176,.2,.811765,.345098,.113725,.225,.831373,.411765,.133333,.25,.85098,.47451,.145098,.275,.870588,.54902,.156863,.3,.878431,.619608,.168627,.325,.890196,.658824,.196078,.35,.909804,.717647,.235294,.375,.929412,.776471,.278431,.395522,.94902,.823529,.321569,.418905,.968627,.87451,.407843,.444278,.980392,.917647,.509804,.470149,.988235,.956863,.643137,.483582,.992157,.964706,.713725,.499,.988235,.980392,.870588,.5,1,1,1,.501,.913725,.988235,.937255,.516418,.827451,.980392,.886275,.531343,.764706,.980392,.866667,.546766,.658824,.980392,.843137,.564179,.572549,.964706,.835294,.587562,.423529,.941176,.87451,.60597,.262745,.901961,.862745,.629851,.0705882,.854902,.870588,.651741,.0509804,.8,.85098,.681592,.0235294,.709804,.831373,.712935,.0313725,.615686,.811765,.75,.0313725,.537255,.788235,.775,.0392157,.466667,.768627,.8,.0509804,.396078,.741176,.825,.054902,.317647,.709804,.85,.054902,.243137,.678431,.875,.0431373,.164706,.639216,.9,.0313725,.0980392,.6,.925,.0392157,.0392157,.560784,.95,.105882,.0509804,.509804,.975,.113725,.0235294,.45098,1,.12549,0,.380392]},{ColorSpace:"RGB",Name:"Rainbow Desaturated",NanColor:[1,1,0],RGBPoints:[0,.278431372549,.278431372549,.858823529412,.143,0,0,.360784313725,.285,0,1,1,.429,0,.501960784314,0,.571,1,1,0,.714,1,.380392156863,0,.857,.419607843137,0,0,1,.878431372549,.301960784314,.301960784314]},{ColorSpace:"RGB",Name:"Cold and Hot",NanColor:[1,1,0],RGBPoints:[0,0,1,1,.45,0,0,1,.5,0,0,.501960784314,.55,1,0,0,1,1,1,0]},{ColorSpace:"RGB",Name:"Black-Body Radiation",NanColor:[0,.498039215686,1],RGBPoints:[0,0,0,0,.4,.901960784314,0,0,.8,.901960784314,.901960784314,0,1,1,1,1]},{ColorSpace:"RGB",Name:"X Ray",NanColor:[1,0,0],RGBPoints:[0,1,1,1,1,0,0,0]},{ColorSpace:"RGB",Name:"Grayscale",NanColor:[1,0,0],RGBPoints:[0,0,0,0,1,1,1,1]},{ColorSpace:"RGB",Name:"BkRd",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,1,0,0]},{ColorSpace:"RGB",Name:"BkGn",NanColor:[1,0,1],RGBPoints:[0,0,0,0,1,0,1,0]},{ColorSpace:"RGB",Name:"BkBu",NanColor:[1,1,0],RGBPoints:[0,0,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"BkMa",NanColor:[0,1,0],RGBPoints:[0,0,0,0,1,1,0,1]},{ColorSpace:"RGB",Name:"BkCy",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,0,1,1]},{ColorSpace:"RGB",Name:"Black, Blue and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,0,0,.501960784314,.666,0,.501960784314,1,1,1,1,1]},{ColorSpace:"RGB",Name:"Black, Orange and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,.501960784314,0,0,.666,1,.501960784314,0,1,1,1,1]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear YGB 1211g",NanColor:[.25,0,0],RGBPoints:[0,1,.988235,.968627,.02,1,.952941,.878431,.05,.968627,.905882,.776471,.1,.94902,.898039,.647059,.15,.901961,.878431,.556863,.2,.847059,.858824,.482353,.25,.690196,.819608,.435294,.3,.513725,.768627,.384314,.35,.337255,.721569,.337255,.4,.278431,.658824,.392157,.45,.231373,.639216,.435294,.5,.203922,.6,.486275,.55,.172549,.568627,.537255,.6,.141176,.517647,.54902,.65,.133333,.458824,.541176,.7,.12549,.396078,.529412,.75,.117647,.321569,.521569,.8,.121569,.258824,.509804,.85,.133333,.227451,.501961,.9,.145098,.192157,.490196,.95,.188235,.164706,.470588,1,.258824,.196078,.439216]},{ColorSpace:"CIELAB",Creator:"Francesca Samsel",Name:"Linear Green (Gr4L)",NanColor:[.25,0,0],RGBPoints:[0,.054902,.109804,.121569,.05,.07451,.172549,.180392,.1,.086275,.231373,.219608,.15,.094118,.278431,.25098,.2,.109804,.34902,.278431,.25,.113725,.4,.278431,.3,.117647,.45098,.270588,.35,.117647,.490196,.243137,.4,.113725,.521569,.203922,.45,.109804,.54902,.152941,.5,.082353,.588235,.082353,.55,.109804,.631373,.05098,.6,.211765,.678431,.082353,.65,.317647,.721569,.113725,.7,.431373,.760784,.160784,.75,.556863,.8,.239216,.8,.666667,.839216,.294118,.85,.784314,.878431,.396078,.9,.886275,.921569,.533333,.95,.960784,.94902,.670588,1,1,.984314,.901961]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear Blue (8_31f)",NanColor:[.25,0,0],RGBPoints:[0,.960784,1,.980392,.05,.815686,.960784,.913725,.1,.670588,.929412,.870588,.15,.556863,.901961,.843137,.2,.478431,.870588,.823529,.25,.439216,.831373,.803922,.3,.4,.8,.788235,.35,.376471,.768627,.768627,.4,.34902,.709804,.729412,.45,.32549,.654902,.690196,.5,.301961,.607843,.658824,.55,.247059,.545098,.619608,.6,.239216,.494118,.580392,.65,.227451,.439216,.541176,.7,.227451,.403922,.521569,.75,.231373,.368627,.501961,.8,.227451,.321569,.470588,.85,.219608,.282353,.439216,.9,.192157,.235294,.4,.95,.160784,.184314,.34902,1,.133333,.12549,.301961]},{ColorSpace:"HSV",Name:"Blue to Red Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,0,0,1,1,1,0,0]},{ColorSpace:"HSV",Name:"Red to Blue Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,1,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended White",NanColor:[1,1,0],RGBPoints:[0,1,1,1,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Grey",NanColor:[1,1,0],RGBPoints:[0,.317647058824,.341176470588,.43137254902,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Black",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Blue to Yellow",NanColor:[1,0,0],RGBPoints:[0,.0392156862745,.0392156862745,.949019607843,1,.949019607843,.949019607843,.0392156862745]},{ColorSpace:"HSV",Name:"blot",RGBPoints:[0,0,0,1,.166,0,0,1,.167,1,0,1,.332,1,0,1,.333,0,1,1,.5,0,1,1,.501,0,1,0,.666,0,1,0,.667,1,1,0,.832,1,1,0,.833,1,0,0,1,1,0,0]},{ColorSpace:"Lab",Name:"CIELab Blue to Red",NanColor:[1,1,0],RGBPoints:[0,0,.6,.749019607843,1,.76862745098,.466666666667,.341176470588]},{ColorSpace:"RGB",Name:"jet",RGBPoints:[-1,0,0,.5625,-.777778,0,0,1,-.269841,0,1,1,-.015873,.5,1,.5,.238095,1,1,0,.746032,1,0,0,1,.5,0,0]},{ColorSpace:"RGB",Name:"rainbow",RGBPoints:[-1,0,0,1,-.5,0,1,1,0,0,1,0,.5,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"erdc_rainbow_bright",RGBPoints:[-1,.32549,.14902,.960784,-.866221,.297047,.375586,.963836,-.732441,.180302,.536818,.964627,-.598662,.1302,.649207,.929647,-.464883,.0445143,.749654,.855998,-.331104,.0271325,.830713,.721527,-.197324,.259504,.866145,.543555,-.0635452,.428364,.890725,.329819,.0702341,.568503,.898508,.187623,.204013,.738259,.890317,.0825461,.337793,.84546,.86136,.0147555,.471572,.912191,.808018,0,.605351,.962848,.710445,0,.73913,.999469,.600258,.0176284,.87291,.994156,.445975,.193912,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"erdc_rainbow_dark",RGBPoints:[-1,0,0,.423499,-.866221,0,.119346,.529237,-.732441,0,.238691,.634976,-.598662,0,.346852,.68788,-.464883,0,.45022,.718141,-.331104,0,.553554,.664839,-.197324,0,.651082,.519303,-.0635452,.115841,.72479,.352857,.0702341,.326771,.781195,.140187,.204013,.522765,.798524,.0284624,.337793,.703162,.788685,.00885756,.471572,.845118,.751133,0,.605351,.955734,.690825,0,.73913,.995402,.567916,.0618524,.87291,.987712,.403398,.164851,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"nic_CubicL",RGBPoints:[-1,.479965,.0118108,.5307,-.87451,.522213,.0551282,.706919,-.74902,.50839,.237278,.867764,-.623529,.451617,.373834,.987255,-.498039,.39365,.497255,.97506,-.372549,.328631,.599639,.891843,-.247059,.250043,.690286,.778553,-.121569,.249656,.764905,.645857,.00392157,.297954,.821466,.50449,.129412,.337509,.872595,.358447,.254902,.430011,.913789,.297079,.380392,.587191,.931381,.333353,.505882,.727937,.93591,.353742,.631373,.826403,.921081,.365066,.756863,.893201,.846317,.372662,.882353,.965347,.73884,.378506,1,.983235,.597451,.366856]},{ColorSpace:"Lab",Name:"nic_CubicYF",RGBPoints:[-1,.5151,.0482,.6697,-.87451,.520711,.168955,.800574,-.74902,.493694,.278596,.911824,-.623529,.440026,.369475,.984978,-.498039,.398932,.457593,.987053,-.372549,.350651,.540644,.929608,-.247059,.298827,.615625,.857729,-.121569,.239928,.685061,.769531,.00392157,.228832,.739349,.673287,.129412,.263297,.78608,.569988,.254902,.298107,.828337,.460214,.380392,.33092,.864071,.352674,.505882,.38306,.898169,.287309,.631373,.49023,.917481,.307961,.756863,.62372,.926026,.332309,.882353,.717458,.92527,.342476,1,.8,.9255,.3529]},{ColorSpace:"Lab",Name:"gist_earth",RGBPoints:[-1,0,0,0,-.87451,.239216,.027451,.415686,-.74902,.0901961,.254902,.556863,-.623529,.0941176,.352941,.54902,-.498039,.105882,.435294,.533333,-.372549,.12549,.52549,.501961,-.247059,.156863,.596078,.443137,-.121569,.196078,.65098,.380392,.00392157,.282353,.717647,.301961,.129412,.466667,.772549,.27451,.254902,.678431,.784314,.309804,.380392,.901961,.756863,.376471,.505882,.992157,.705882,.521569,.631373,1,.721569,.701961,.756863,1,.784314,.784314,.882353,1,.866667,.866667,1,1,1,1]},{ColorSpace:"Lab",Name:"2hot",RGBPoints:[-1,.0416667,0,0,-.873016,.208333,0,0,-.746032,.375,0,0,-.619048,.541667,0,0,-.492063,.708333,0,0,-.365079,.854137,0,0,-.238095,.937488,.039062,0,-.111111,1,.208333,0,.015873,1,.375,0,.142857,1,.541667,0,.269841,1,.708333,0,.396825,1,.858805,.03125,.52381,1,.947392,.15625,.650794,1,1,.3125,.777778,1,1,.5625,.904762,1,1,.8125,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_red2yellow_BW",RGBPoints:[-1,754296e-12,0,109827e-10,-.87451,.18285,.0264094,0,-.74902,.3066,0,0,-.623529,.422841,0,0,-.498039,.522945,0,0,-.372549,.605721,0,0,-.247059,.672502,.14168,0,-.121569,.728167,.244025,0,.00392157,.781215,.333454,0,.129412,.825,.423586,0,.254902,.855893,.516793,0,.380392,.880491,.608846,0,.505882,.910305,.695505,0,.631373,.94109,.779067,.223528,.756863,.967873,.858572,.473521,.882353,.986815,.933211,.751583,1,1,1,.999997]},{ColorSpace:"Lab",Name:"erdc_marine2gold_BW",RGBPoints:[-1,111641e-12,0,162551e-11,-.87451,.0413146,.0619808,.209857,-.74902,.0185557,.101341,.350684,-.623529,.00486405,.149847,.461054,-.498039,.0836345,.210845,.517906,-.372549,.173222,.276134,.541793,-.247059,.259857,.343877,.535869,-.121569,.362299,.408124,.504293,.00392157,.468266,.468276,.468257,.129412,.582781,.527545,.374914,.254902,.691591,.585251,.274266,.380392,.784454,.645091,.247332,.505882,.862299,.710383,.27518,.631373,.920863,.782923,.351563,.756863,.955792,.859699,.533541,.882353,.976162,.93433,.780671,1,1,1,.999983]},{ColorSpace:"Lab",Name:"erdc_blue2gold_BW",RGBPoints:[-1,0,0,0,-.87451,.0742735,.0440331,.230013,-.74902,.125276,.0258685,.415826,-.623529,.143879,.0163031,.591346,-.498039,.212261,.0627855,.705239,-.372549,.306048,.141178,.763636,-.247059,.391537,.232286,.773263,-.121569,.461734,.336633,.708321,.00392157,.54209,.427581,.590007,.129412,.61704,.508623,.460978,.254902,.702703,.579586,.309117,.380392,.790336,.644811,.170397,.505882,.870173,.710733,.117134,.631373,.93656,.781991,.157144,.756863,.965672,.862068,.409836,.882353,.985751,.936296,.714162,1,1,1,.999999]},{ColorSpace:"Lab",Name:"erdc_sapphire2gold_BW",RGBPoints:[-1,.107704,.107708,.107694,-.87451,.1851,.112354,.308554,-.74902,.236782,.114233,.48788,-.623529,.28296,.126187,.639464,-.498039,.344787,.171643,.739713,-.372549,.413325,.242371,.76913,-.247059,.481863,.3131,.719841,-.121569,.550402,.383829,.612222,.00392157,.61894,.454558,.51126,.129412,.687478,.525287,.39993,.254902,.756017,.596016,.289923,.380392,.824555,.666745,.255498,.505882,.892979,.736822,.27696,.631373,.938851,.804966,.351734,.756863,.966491,.874853,.53572,.882353,.982105,.94153,.782579,1,1,1,.999986]},{ColorSpace:"Lab",Name:"erdc_red2purple_BW",RGBPoints:[-1,0,0,0,-.87451,.167793,.0166271,.0431278,-.74902,.262608,.0107595,.0791181,-.623529,.351902,.0101858,.100926,-.498039,.441257,.0160835,.131919,-.372549,.5221,.0555972,.195625,-.247059,.593852,.104294,.310234,-.121569,.654628,.158115,.448486,.00392157,.707443,.220914,.570253,.129412,.749504,.293268,.67897,.254902,.781587,.370517,.779269,.380392,.809951,.451099,.855831,.505882,.84424,.531462,.900451,.631373,.865174,.620901,.91606,.756863,.875041,.714054,.910284,.882353,.880764,.80554,.896276,1,.887572,.887591,.887556]},{ColorSpace:"Lab",Name:"erdc_purple2pink_BW",RGBPoints:[-1,0,0,0,-.87451,.117562,.0291202,.175876,-.74902,.178368,.0458476,.285454,-.623529,.237731,.0680173,.387717,-.498039,.300877,.0956291,.484802,-.372549,.370929,.136858,.554985,-.247059,.449033,.189273,.58863,-.121569,.529971,.245796,.598587,.00392157,.609914,.300643,.610244,.129412,.697079,.351286,.616371,.254902,.785858,.401991,.617376,.380392,.862517,.45745,.64463,.505882,.91359,.525462,.705336,.631373,.932583,.61064,.767412,.756863,.922478,.706966,.817522,.882353,.901302,.803071,.856311,1,.887571,.887591,.887549]},{ColorSpace:"Lab",Name:"erdc_pbj_lin",RGBPoints:[-1,0,0,0,-.87451,.091821,.0611476,.10617,-.74902,.160311,.0900022,.192713,-.623529,.22484,.12126,.272128,-.498039,.291263,.157469,.340828,-.372549,.360015,.200388,.388903,-.247059,.437497,.250058,.387201,-.121569,.512636,.304969,.355955,.00392157,.582603,.360874,.33488,.129412,.655126,.416374,.306351,.254902,.725889,.473329,.279051,.380392,.778125,.537928,.302697,.505882,.815894,.606931,.382431,.631373,.839159,.679308,.497608,.756863,.854748,.751666,.631792,.882353,.869483,.822508,.768592,1,.887572,.887589,.887565]},{ColorSpace:"Lab",Name:"erdc_blue2green_muted",RGBPoints:[-1,.107704,.107708,.107695,-.87451,.141522,.13066,.270741,-.74902,.180123,.146119,.42308,-.623529,.210161,.169674,.551795,-.498039,.239701,.212939,.634969,-.372549,.253916,.282947,.653641,-.247059,.242791,.366933,.608521,-.121569,.226302,.446776,.52693,.00392157,.236237,.514689,.458798,.129412,.274641,.577589,.376069,.254902,.349625,.633993,.288131,.380392,.4437,.683677,.260497,.505882,.536247,.731214,.285424,.631373,.628472,.777128,.349151,.756863,.718259,.819287,.496825,.882353,.804768,.856164,.703299,1,.887571,.887591,.887548]},{ColorSpace:"Lab",Name:"erdc_blue2green_BW",RGBPoints:[-1,363578e-12,0,529374e-11,-.87451,.0539915,.0577948,.212806,-.74902,.0620393,.0758942,.388959,-.623529,.0697499,.102032,.54177,-.498039,.113295,.156156,.64334,-.372549,.152047,.243196,.670283,-.247059,.158096,.344084,.622864,-.121569,.151142,.43922,.532767,.00392157,.17155,.521588,.457719,.129412,.225861,.599141,.363997,.254902,.32328,.67007,.259083,.380392,.442344,.733697,.223754,.505882,.558409,.794941,.257411,.631373,.673875,.854344,.340822,.756863,.787244,.909326,.524717,.882353,.896483,.958063,.775914,1,1,1,.999982]},{ColorSpace:"Lab",Name:"GREEN-WHITE_LINEAR",RGBPoints:[-1,0,0,0,-.87451,0,.062745,0,-.74902,0,.12549,0,-.623529,0,.188235,0,-.498039,0,.25098,0,-.372549,0,.313725,0,-.247059,0,.376471,0,-.121569,.094118,.439216,0,.00392157,.196078,.501961,0,.129412,.294118,.564706,0,.254902,.396078,.627451,0,.380392,.498039,.690196,0,.505882,.6,.752941,.145098,.631373,.701961,.815686,.364706,.756863,.8,.878431,.580392,.882353,.901961,.941176,.796078,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_green2yellow_BW",RGBPoints:[-1,0,0,0,-.87451,0,.105542,.0603919,-.74902,0,.159454,.104148,-.623529,0,.219502,.15542,-.498039,0,.282276,.203811,-.372549,0,.346331,.235652,-.247059,0,.411765,.235428,-.121569,0,.477177,.217977,.00392157,.0593644,.541635,.21361,.129412,.233081,.604722,.210591,.254902,.369803,.664942,.226536,.380392,.498446,.722367,.288237,.505882,.601929,.782244,.380815,.631373,.703207,.840497,.512134,.756863,.803186,.896433,.674462,.882353,.903834,.950266,.846715,1,1,1,.999981]},{ColorSpace:"Lab",Name:"blue2cyan",RGBPoints:[-1,0,0,0,-.87451,0,.152941,.364706,-.74902,0,.254902,.470588,-.623529,0,.34902,.572549,-.498039,0,.443137,.670588,-.372549,0,.537255,.772549,-.247059,0,.627451,.870588,-.121569,0,.717647,.964706,.00392157,.0784314,.772549,1,.129412,.207843,.858824,1,.254902,.32549,.941176,1,.380392,.45098,1,1,.505882,.560784,1,1,.631373,.662745,1,1,.756863,.760784,1,1,.882353,.870588,1,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_blue2cyan_BW",RGBPoints:[-1,405298e-12,0,59012e-10,-.87451,.0207526,.0740933,.18093,-.74902,0,.121033,.30343,-.623529,0,.166892,.416095,-.498039,0,.216768,.524796,-.372549,.0164769,.275471,.608585,-.247059,.0544527,.344824,.659267,-.121569,.0880643,.419118,.688675,.00392157,.127938,.492556,.720256,.129412,.149476,.566946,.756918,.254902,.188961,.641333,.792122,.380392,.245482,.715336,.827609,.505882,.329216,.786235,.874761,.631373,.453558,.852803,.918466,.756863,.626281,.910493,.954,.882353,.82257,.958709,.980146,1,1,1,.999989]},{ColorSpace:"Lab",Name:"erdc_blue_BW",RGBPoints:[-1,0,0,0,-.87451,.0425591,.0763529,.150682,-.74902,.0569472,.119154,.275403,-.623529,.0635978,.164772,.395427,-.498039,.0774342,.213851,.510014,-.372549,.106815,.267034,.615102,-.247059,.122093,.324649,.720068,-.121569,.160851,.387068,.806956,.00392157,.213754,.453516,.878012,.129412,.26722,.524656,.932436,.254902,.326844,.599279,.968038,.380392,.403403,.674712,.984784,.505882,.499703,.745519,1,.631373,.615055,.813983,1,.756863,.74405,.879228,1,.882353,.877909,.941913,1,1,1,1,.999996]},{ColorSpace:"Lab",Name:"BLUE-WHITE",RGBPoints:[-1,0,0,0,-.87451,0,0,.082353,-.74902,0,0,.168627,-.623529,0,0,.254902,-.498039,0,0,.337255,-.372549,0,0,.423529,-.247059,0,0,.509804,-.121569,0,.101961,.592157,.00392157,0,.203922,.678431,.129412,0,.301961,.764706,.254902,0,.403922,.85098,.380392,0,.505882,.933333,.505882,0,.603922,1,.631373,.254902,.705882,1,.756863,.509804,.807843,1,.882353,.764706,.905882,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_purple_BW",RGBPoints:[-1,4264e-11,0,620844e-12,-.87451,.100579,.0593111,.145666,-.74902,.167794,.0889224,.254953,-.623529,.231446,.123339,.360511,-.498039,.296699,.163027,.461278,-.372549,.363211,.209286,.55306,-.247059,.431136,.260776,.637195,-.121569,.498202,.320012,.705799,.00392157,.567456,.380459,.778091,.129412,.629381,.445284,.8448,.254902,.688373,.517374,.895694,.380392,.74891,.590906,.93976,.505882,.805017,.667956,.977626,.631373,.850914,.752618,.992396,.756863,.89724,.838454,.994093,.882353,.948461,.922603,.994449,1,1,1,.999967]},{ColorSpace:"Lab",Name:"erdc_magenta_BW",RGBPoints:[-1,0,0,254023e-10,-.87451,.128696,.0456782,.11635,-.74902,.228133,.0476299,.201452,-.623529,.327273,.0374065,.282107,-.498039,.420953,.0408166,.35709,-.372549,.511562,.0642203,.430511,-.247059,.599552,.102686,.504257,-.121569,.684646,.150536,.579429,.00392157,.765817,.205978,.656062,.129412,.839176,.27229,.731807,.254902,.89536,.357594,.797309,.380392,.930238,.457825,.846984,.505882,.945921,.564536,.880571,.631373,.948995,.670753,.902279,.756863,.947124,.772819,.918171,.882353,.947265,.869424,.934352,1,.954719,.95475,.954726]},{ColorSpace:"Lab",Name:"magenta",RGBPoints:[-1,0,0,0,-.87451,.364706,0,.152941,-.74902,.470588,0,.254902,-.623529,.572549,0,.34902,-.498039,.670588,0,.443137,-.372549,.772549,0,.537255,-.247059,.870588,0,.627451,-.121569,.964706,0,.717647,.00392157,1,.0784314,.772549,.129412,1,.207843,.858824,.254902,1,.32549,.941176,.380392,1,.45098,1,.505882,1,.560784,1,.631373,1,.662745,1,.756863,1,.760784,1,.882353,1,.870588,1,1,1,1,1]},{ColorSpace:"Lab",Name:"RED-PURPLE",RGBPoints:[-1,0,0,0,-.87451,.188235,0,.007843,-.74902,.345098,0,.035294,-.623529,.439216,0,.098039,-.498039,.533333,0,.152941,-.372549,.627451,.015686,.211765,-.247059,.721569,.031373,.266667,-.121569,.8,.047059,.329412,.00392157,.862745,.047059,.403922,.129412,.941176,.062745,.466667,.254902,.988235,.078431,.54902,.380392,.988235,.141176,.643137,.505882,.988235,.25098,.729412,.631373,.988235,.376471,.811765,.756863,.988235,.54902,.886275,.882353,.988235,.752941,.952941,1,.996078,.996078,.996078]},{ColorSpace:"Lab",Name:"erdc_red_BW",RGBPoints:[-1,0,0,0,-.87451,.147204,.0480135,.0401815,-.74902,.253411,.0617478,.0301333,-.623529,.356059,.0746331,.0446897,-.498039,.457731,.0934935,.0636931,-.372549,.557199,.122714,.0860013,-.247059,.665179,.144238,.105585,-.121569,.763833,.187056,.138326,.00392157,.847035,.254558,.189407,.129412,.905663,.345937,.258215,.254902,.941431,.447111,.346277,.380392,.962608,.546927,.457571,.505882,.987833,.637276,.569944,.631373,.994202,.732176,.687958,.756863,.993304,.826268,.800567,.882353,.994413,.917205,.906393,1,1,1,.999979]},{ColorSpace:"Lab",Name:"RED_TEMPERATURE",RGBPoints:[-1,0,0,0,-.87451,.090196,0,0,-.74902,.180392,0,0,-.623529,.270588,0,0,-.498039,.360784,0,0,-.372549,.45098,0,0,-.247059,.545098,0,0,-.121569,.635294,0,0,.00392157,.72549,.058824,0,.129412,.815686,.176471,0,.254902,.905882,.294118,0,.380392,1,.411765,0,.505882,1,.533333,.027451,.631373,1,.65098,.27451,.756863,1,.768627,.521569,.882353,1,.886275,.768627,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_orange_BW",RGBPoints:[-1,0,0,253806e-10,-.87451,.135871,.0593824,0,-.74902,.224328,.0907216,0,-.623529,.318083,.119647,0,-.498039,.414443,.150246,0,-.372549,.511077,.184884,0,-.247059,.605501,.226033,0,-.121569,.695274,.275491,0,.00392157,.777826,.334445,0,.129412,.851498,.402441,0,.254902,.915899,.47759,602975e-9,.380392,.971984,.557882,.0361443,.505882,1,.641287,.135967,.631373,1,.725198,.27997,.756863,1,.808205,.438135,.882353,1,.89306,.587036,1,1,.977928,.721599]},{ColorSpace:"Lab",Name:"heated_object",RGBPoints:[-1,0,0,0,-.87451,.34902,.0862745,0,-.74902,.45098,.172549,0,-.623529,.52549,.231373,0,-.498039,.580392,.278431,0,-.372549,.623529,.313725,0,-.247059,.670588,.352941,0,-.121569,.717647,.392157,0,.00392157,.772549,.439216,0,.129412,.839216,.494118,0,.254902,.901961,.541176,0,.380392,.968627,.6,0,.505882,1,.658824,0,.631373,1,.721569,0,.756863,1,.827451,.298039,.882353,1,.976471,.72549,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_gold_BW",RGBPoints:[-1,0,0,190933e-10,-.87451,.128363,.0636265,0,-.74902,.193795,.111057,0,-.623529,.25976,.15987,0,-.498039,.328546,.210589,0,-.372549,.399726,.26332,0,-.247059,.472969,.318261,0,-.121569,.546245,.375827,0,.00392157,.61745,.436719,0,.129412,.685545,.501113,0,.254902,.749578,.568799,0,.380392,.80962,.6394,0,.505882,.865572,.712699,.10257,.631373,.917709,.787569,.233665,.756863,.966914,.863138,.369608,.882353,1,.939405,.496104,1,.999225,1,.612275]},{ColorSpace:"Lab",Name:"erdc_brown_BW",RGBPoints:[-1,33216e-11,0,483629e-11,-.87451,.14693,.0518172,0,-.74902,.225806,.0814996,0,-.623529,.301681,.111452,0,-.498039,.370487,.150664,0,-.372549,.43108,.199477,0,-.247059,.4849,.255107,0,-.121569,.536798,.313486,0,.00392157,.59286,.371167,0,.129412,.653119,.428135,0,.254902,.714589,.485917,.0379541,.380392,.774667,.54565,.116634,.505882,.831222,.608047,.183895,.631373,.880305,.674199,.260298,.756863,.922314,.742472,.367086,.882353,.959408,.811222,.497258,1,.993548,.875183,.622093]},{ColorSpace:"Lab",Name:"copper_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0784314,.0501961,.0313725,-.74902,.156863,.100392,.0627451,-.623529,.235294,.150588,.0941176,-.498039,.313725,.200784,.12549,-.372549,.392157,.25098,.156863,-.247059,.470588,.301176,.188235,-.121569,.54902,.351373,.219608,.00392157,.627451,.401569,.25098,.129412,.705882,.451765,.282353,.254902,.784314,.501961,.313725,.380392,.862745,.552157,.345098,.505882,.941176,.602353,.376471,.631373,1,.652549,.407843,.756863,1,.702745,.439216,.882353,1,.752941,.470588,1,1,.8,.5]},{ColorSpace:"Lab",Name:"pink_Matlab",RGBPoints:[-1,0,0,0,-.87451,.312416,.204524,.204524,-.74902,.441822,.289241,.289241,-.623529,.54112,.354246,.354246,-.498039,.624831,.409048,.409048,-.372549,.698582,.45733,.45733,-.247059,.764404,.502282,.500979,-.121569,.791292,.591516,.54112,.00392157,.817297,.66895,.578481,.129412,.842499,.738308,.613572,.254902,.866968,.801687,.646762,.380392,.890766,.86041,.678329,.505882,.913944,.913944,.711254,.631373,.936549,.936549,.79459,.756863,.958621,.958621,.869979,.882353,.980196,.980196,.939336,1,1,1,1]},{ColorSpace:"Lab",Name:"bone_Matlab",RGBPoints:[-1,0,0,0,-.87451,.054902,.054902,.075817,-.74902,.109804,.109804,.151634,-.623529,.164706,.164706,.227451,-.498039,.219608,.219608,.303268,-.372549,.27451,.27451,.379085,-.247059,.329412,.329902,.454412,-.121569,.384314,.405719,.509314,.00392157,.439216,.481536,.564216,.129412,.494118,.557353,.619118,.254902,.54902,.63317,.67402,.380392,.603922,.708987,.728922,.505882,.660294,.783824,.783824,.631373,.746569,.838725,.838725,.756863,.832843,.893627,.893627,.882353,.919118,.948529,.948529,1,1,1,1]},{ColorSpace:"Lab",Name:"gray_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0627451,.0627451,.0627451,-.74902,.12549,.12549,.12549,-.623529,.188235,.188235,.188235,-.498039,.25098,.25098,.25098,-.372549,.313725,.313725,.313725,-.247059,.376471,.376471,.376471,-.121569,.439216,.439216,.439216,.00392157,.501961,.501961,.501961,.129412,.564706,.564706,.564706,.254902,.627451,.627451,.627451,.380392,.690196,.690196,.690196,.505882,.752941,.752941,.752941,.631373,.815686,.815686,.815686,.756863,.878431,.878431,.878431,.882353,.941176,.941176,.941176,1,1,1,1]},{ColorSpace:"Lab",Name:"Purples",RGBPoints:[-1,.247059,0,.490196,-.87451,.288397,.07677,.525629,-.74902,.32975,.153587,.561092,-.623529,.373057,.236263,.600461,-.498039,.416363,.319,.639923,-.372549,.459669,.405613,.685198,-.247059,.503345,.491534,.730058,-.121569,.562399,.54862,.757616,.00392157,.621453,.606075,.785544,.129412,.680508,.674971,.824914,.254902,.739562,.743406,.863899,.380392,.798616,.800492,.893426,.505882,.85684,.856655,.922491,.631373,.898178,.894056,.942176,.756863,.938654,.930919,.961646,.882353,.964245,.958478,.977393,1,.988235,.984314,.992157]},{ColorSpace:"Lab",Name:"Blues",RGBPoints:[-1,.031373,.188235,.419608,-.87451,.031373,.253195,.516063,-.74902,.031757,.318139,.612149,-.623529,.080969,.38113,.661361,-.498039,.130427,.444152,.710327,-.372549,.195386,.509112,.743791,-.247059,.260715,.573841,.777209,-.121569,.341423,.628958,.808704,.00392157,.422745,.684075,.839892,.129412,.523137,.739193,.861546,.254902,.622684,.793464,.883429,.380392,.701423,.826928,.910988,.505882,.778685,.8603,.937993,.631373,.825928,.891795,.953741,.756863,.87328,.923291,.969489,.882353,.922491,.954787,.985236,1,.968627,.984314,1]},{ColorSpace:"Lab",Name:"Greens",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546082,.271326,-.372549,.197232,.609073,.31857,-.247059,.257255,.671742,.365859,-.121569,.357647,.720953,.415071,.00392157,.45767,.769919,.465021,.129412,.546251,.811257,.537855,.254902,.634295,.852211,.610688,.380392,.709097,.883706,.683522,.505882,.78316,.914833,.755894,.631373,.842215,.938454,.818885,.756863,.899977,.961538,.880692,.882353,.935409,.975317,.92203,1,.968627,.988235,.960784]},{ColorSpace:"Lab",Name:"PuBu",RGBPoints:[-1,.301961,0,.294118,-.87451,.404321,.029527,.390573,-.74902,.50599,.059592,.486782,-.623529,.519769,.158016,.551742,-.498039,.533456,.256194,.616301,-.372549,.54133,.33887,.655671,-.247059,.54902,.421592,.695087,-.121569,.54902,.506236,.736424,.00392157,.550127,.590573,.777701,.129412,.585559,.665375,.81707,.254902,.622145,.739023,.855825,.380392,.687105,.784298,.879446,.505882,.752065,.829758,.903253,.631373,.817024,.87897,.930811,.756863,.880907,.927213,.957832,.882353,.926182,.958708,.975548,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"BuPu",RGBPoints:[-1,.007843,.219608,.345098,-.87451,.01178,.286536,.449427,-.74902,.015702,.35328,.553479,-.623529,.01767,.396586,.622376,-.498039,.021115,.4402,.690688,-.372549,.11757,.503191,.722184,-.247059,.214625,.565859,.753633,-.121569,.336671,.615071,.78316,.00392157,.457978,.663975,.812503,.129412,.556401,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821638,.903068,.631373,.873387,.864944,.92669,.756863,.927536,.907605,.949988,.882353,.964937,.9391,.967705,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGn",RGBPoints:[-1,.031373,.25098,.505882,-.87451,.031373,.329719,.590527,-.74902,.031911,.408397,.674787,-.623529,.100807,.479262,.710219,-.498039,.169704,.550219,.745744,-.372549,.238601,.62699,.787082,-.247059,.307958,.703114,.826759,-.121569,.39654,.752326,.797232,.00392157,.485121,.801046,.767705,.129412,.573702,.83451,.738178,.254902,.661592,.867743,.711034,.380392,.732457,.895302,.74253,.505882,.801845,.922307,.774579,.631373,.841215,.938055,.817885,.756863,.880907,.95391,.861084,.882353,.926182,.971626,.902422,1,.968627,.988235,.941176]},{ColorSpace:"Lab",Name:"GnBu",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546175,.272095,-.372549,.197232,.615071,.368551,-.247059,.256609,.683276,.464867,-.121569,.329443,.722645,.555417,.00392157,.403137,.762138,.645413,.129412,.503529,.805444,.718247,.254902,.603922,.848597,.790465,.380392,.704314,.887966,.847551,.505882,.802307,.926321,.903714,.631373,.851519,.944037,.941115,.756863,.899977,.961538,.976901,.882353,.935409,.975317,.984775,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"GnBuPu",RGBPoints:[-1,.003922,.27451,.211765,-.87451,.003922,.349312,.280661,-.74902,.003937,.423852,.349773,-.623529,.005905,.46519,.446228,-.498039,.009443,.506344,.542837,-.372549,.111803,.535871,.649135,-.247059,.214025,.565859,.753633,-.121569,.310481,.615071,.78316,.00392157,.407797,.663975,.812503,.129412,.531811,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821176,.902884,.631373,.873387,.854641,.922568,.756863,.927536,.888535,.942361,.882353,.964937,.929873,.964014,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGnYl",RGBPoints:[-1,.031373,.113725,.345098,-.87451,.088458,.159,.463206,-.74902,.145052,.204567,.5807,-.623529,.139146,.287243,.620069,-.498039,.13318,.370196,.659562,-.372549,.123337,.470588,.706805,-.247059,.115386,.570335,.753126,-.121569,.186251,.643168,.761,.00392157,.258716,.71514,.768074,.129412,.380761,.760415,.750358,.254902,.503576,.806075,.732795,.380392,.645306,.861192,.719016,.505882,.783899,.91511,.705606,.631373,.858701,.944637,.6997,.756863,.931349,.973303,.698424,.882353,.966782,.987082,.777163,1,1,1,.85098]},{ColorSpace:"Lab",Name:"PuRd",RGBPoints:[-1,.286275,0,.415686,-.87451,.38273,.001968,.441276,-.74902,.479231,.003922,.466774,-.623529,.581592,.003922,.480554,-.498039,.683799,.00549,.494887,-.372549,.776317,.105882,.544098,-.247059,.867866,.206321,.592618,-.121569,.919047,.308681,.612303,.00392157,.968812,.411226,.632603,.129412,.974717,.519493,.671972,.254902,.980546,.626451,.71065,.380392,.984483,.701253,.732303,.505882,.988328,.77504,.755617,.631373,.990296,.828189,.812703,.756863,.992372,.880907,.869035,.882353,.996309,.926182,.912341,1,1,.968627,.952941]},{ColorSpace:"Lab",Name:"RdPu",RGBPoints:[-1,.403922,0,.121569,-.87451,.500377,0,.192434,-.74902,.596909,277e-6,.263037,-.623529,.703206,.035709,.300438,-.498039,.808612,.071296,.338854,-.372549,.857824,.116571,.441215,-.247059,.905513,.163552,.54293,-.121569,.889765,.281661,.617732,.00392157,.873156,.39897,.691611,.129412,.82985,.491488,.736886,.254902,.789081,.583237,.781853,.380392,.810734,.656071,.819254,.505882,.833126,.729181,.85684,.631373,.870527,.80792,.898178,.756863,.907605,.884398,.938331,.882353,.9391,.921799,.958016,1,.968627,.956863,.976471]},{ColorSpace:"Lab",Name:"Oranges",RGBPoints:[-1,.498039,.152941,.015686,-.87451,.57481,.182468,.013718,-.74902,.651765,.212042,.011734,-.623529,.752157,.247474,.007797,-.498039,.851719,.283368,.004475,-.372549,.898962,.348328,.039908,-.247059,.945652,.413426,.076401,-.121569,.969273,.484291,.157109,.00392157,.992157,.554971,.238185,.129412,.992157,.619931,.330704,.254902,.992157,.684967,.423837,.380392,.992157,.751895,.532103,.505882,.992249,.817716,.639354,.631373,.994218,.861023,.725967,.756863,.996186,.903576,.810965,.882353,.998155,.933103,.868051,1,1,.960784,.921569]},{ColorSpace:"Lab",Name:"Reds",RGBPoints:[-1,.403922,0,.05098,-.87451,.525967,.029527,.066728,-.74902,.647643,.058962,.082476,-.623529,.722445,.076678,.098224,-.498039,.797186,.095194,.114187,-.372549,.868051,.164091,.143714,-.247059,.937809,.233541,.173933,-.121569,.96143,.326059,.232987,.00392157,.984375,.418147,.292657,.129412,.986344,.496886,.371396,.254902,.988235,.575702,.450673,.380392,.988235,.656409,.543191,.505882,.98842,.736747,.635894,.631373,.992357,.809581,.732349,.756863,.996186,.880692,.826759,.882353,.998155,.92203,.885813,1,1,.960784,.941176]},{ColorSpace:"Lab",Name:"RdOr",RGBPoints:[-1,.498039,0,0,-.87451,.6004,0,0,-.74902,.702514,738e-6,477e-6,-.623529,.773379,.095225,.061499,-.498039,.843875,.189865,.12283,-.372549,.891119,.294195,.203537,-.247059,.937855,.397924,.283137,-.121569,.963445,.476663,.316601,.00392157,.988297,.555771,.351665,.129412,.990265,.646321,.436309,.254902,.992157,.735256,.519646,.380392,.992157,.784468,.570827,.505882,.992249,.833218,.623483,.631373,.994218,.872587,.706159,.756863,.996186,.911419,.788189,.882353,.998155,.940946,.859054,1,1,.968627,.92549]},{ColorSpace:"Lab",Name:"BrOrYl",RGBPoints:[-1,.4,.145098,.023529,-.87451,.500392,.174625,.019592,-.74902,.600784,.204291,.015656,-.623529,.701176,.251534,.011719,-.498039,.800984,.299146,.008397,-.372549,.863975,.370012,.043829,-.247059,.926321,.441107,.0794,-.121569,.961753,.521815,.120738,.00392157,.996078,.602645,.163122,.129412,.996078,.68729,.237924,.254902,.996078,.771011,.314879,.380392,.996078,.832034,.444798,.505882,.996171,.892042,.572595,.631373,.998139,.931411,.65724,.756863,1,.969489,.741669,.882353,1,.985236,.822376,1,1,1,.898039]},{ColorSpace:"Lab",Name:"RdOrYl",RGBPoints:[-1,.501961,0,.14902,-.87451,.622038,0,.14902,-.74902,.741761,4e-4,.148866,-.623529,.816563,.05158,.129181,-.498039,.890965,.10356,.110235,-.372549,.940177,.205921,.137793,-.247059,.988281,.308789,.165536,-.121569,.99025,.432803,.200969,.00392157,.992218,.555217,.236278,.129412,.994187,.628051,.267774,.254902,.996078,.701038,.301269,.380392,.996078,.777809,.383945,.505882,.996171,.852826,.466621,.631373,.998139,.892195,.549296,.756863,1,.931349,.632188,.882353,1,.966782,.7188,1,1,1,.8]},{ColorSpace:"Lab",Name:"CIELab_blue2red",RGBPoints:[-1,0,.6,.74902,1,.76863,.46667,.34118]},{ColorSpace:"Lab",Name:"blue2yellow",RGBPoints:[-1,0,0,1,0,.5,.5,.5,1,1,1,0]},{ColorSpace:"Lab",Name:"erdc_blue2gold",RGBPoints:[-1,.175119,.0438468,1,-.874016,.22383,.159771,.94557,-.748031,.27254,.233611,.891216,-.622047,.321251,.296526,.836857,-.496063,.369962,.354296,.782359,-.370079,.418672,.409139,.72754,-.244094,.467383,.462152,.672148,-.11811,.51609,.51396,.615825,.00787402,.572863,.55452,.559172,.133858,.630269,.593822,.517729,.259843,.689588,.624668,.47446,.385827,.745394,.656113,.428638,.511811,.798624,.688104,.379105,.637795,.849926,.720593,.323834,.76378,.899765,.753543,.258657,.889764,.948487,.78692,.171778,1,.990413,.816451,.00729848]},{ColorSpace:"Lab",Name:"erdc_blue2yellow",RGBPoints:[-1,.0830122,0,.495617,-.87451,.141973,.0551288,.57363,-.74902,.193048,.110258,.604561,-.623529,.234231,.165386,.57643,-.498039,.275413,.220515,.548299,-.372549,.316596,.275644,.520169,-.247059,.357778,.330773,.492038,-.121569,.398961,.385901,.463908,.00392157,.449929,.438487,.426815,.129412,.511572,.488299,.379944,.254902,.581222,.53603,.325741,.380392,.650871,.583761,.271538,.505882,.720521,.631493,.217335,.631373,.79017,.679224,.163132,.756863,.85982,.726955,.108929,.882353,.910254,.774159,.14112,1,.927513,.81759,.306289]},{ColorSpace:"Lab",Name:"erdc_cyan2orange",RGBPoints:[-1,.0471513,.213874,.414329,-.87451,.0674702,.256648,.439027,-.74902,.0959957,.299331,.462089,-.623529,.132428,.341872,.483212,-.498039,.188743,.38277,.500597,-.372549,.268511,.420229,.512179,-.247059,.352945,.455602,.519101,-.121569,.43893,.489368,.521538,.00392157,.522445,.522495,.522436,.129412,.600089,.555682,.53205,.254902,.67988,.587981,.539163,.380392,.761011,.619586,.544439,.505882,.84278,.650741,.548567,.631373,.910713,.687347,.557822,.756863,.952232,.734972,.577775,.882353,.975642,.789858,.604868,1,.990752,.843643,.632857]},{ColorSpace:"Lab",Name:"erdc_purple2green",RGBPoints:[-1,.235006,.0483128,.530899,-.87451,.302968,.108419,.552391,-.74902,.360241,.166059,.569502,-.623529,.406746,.226782,.579373,-.498039,.444073,.28964,.582094,-.372549,.473648,.353774,.577947,-.247059,.497636,.418154,.567911,-.121569,.519086,.481741,.553968,.00392157,.542884,.542914,.542875,.129412,.566303,.603989,.527499,.254902,.595218,.662965,.516857,.380392,.628641,.720701,.510673,.505882,.665373,.777849,.508165,.631373,.704182,.834921,.508303,.756863,.743846,.892328,.50999,.882353,.783158,.950422,.512181,1,.818617,1,.513888]},{ColorSpace:"Lab",Name:"erdc_purple2green_dark",RGBPoints:[-1,.107656,0,.428682,-.87451,.1924,0,.449799,-.74902,.255118,.0648939,.466726,-.623529,.304256,.133066,.476703,-.498039,.343202,.19716,.479793,-.372549,.373876,.260353,.476241,-.247059,.398497,.322872,.466953,-.121569,.420016,.384252,.453785,.00392157,.44319,.443216,.443186,.129412,.465553,.502139,.428233,.254902,.492959,.559151,.417591,.380392,.524654,.615092,.411016,.505882,.55959,.670583,.40779,.631373,.596614,.726102,.406948,.756863,.634544,.782032,.407439,.882353,.672183,.838703,.408237,1,.706131,.892759,.408452]},{ColorSpace:"Lab",Name:"coolwarm",RGBPoints:[-1,.229806,.298718,.753683,-.875,.303869,.406535,.844959,-.75,.383013,.509419,.917388,-.625,.466667,.604563,.968155,-.5,.552953,.688929,.995376,-.375,.639176,.7596,.998151,-.25,.722193,.813953,.976575,-.125,.798692,.849786,.931689,0,.865395,.86541,.865396,.125,.924128,.827385,.774508,.25,.958853,.769768,.678008,.375,.969954,.694267,.579375,.5,.958003,.602842,.481776,.625,.923945,.497309,.38797,.75,.869187,.378313,.300267,.875,.795632,.241284,.220526,1,.705673,.0155562,.150233]},{ColorSpace:"Lab",Name:"BuRd",RGBPoints:[-1,.019608,.188235,.380392,-.87451,.088504,.321107,.564937,-.74902,.163399,.444983,.697501,-.623529,.247059,.555709,.754095,-.498039,.420684,.676432,.818685,-.372549,.606459,.789773,.880277,-.247059,.761476,.868512,.924567,-.121569,.878047,.925721,.951942,.00392157,.969089,.966474,.964937,.129412,.983852,.897578,.846828,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"Spectral_lowBlue",RGBPoints:[-1,.368627,.309804,.635294,-.87451,.260361,.450058,.70173,-.74902,.248058,.591311,.717186,-.623529,.376009,.734025,.658132,-.498039,.537947,.814764,.64506,-.372549,.702345,.879585,.636678,-.247059,.84752,.938639,.607151,-.121569,.940408,.976163,.656055,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.937793,.398539,.270127,.756863,.861515,.282891,.299654,.882353,.746482,.144637,.288812,1,.619608,.003922,.258824]},{ColorSpace:"Lab",Name:"GnRP",RGBPoints:[-1,0,.266667,.105882,-.87451,.066436,.394617,.174779,-.74902,.168858,.524567,.25767,-.623529,.323875,.657439,.361015,-.498039,.504883,.772318,.506344,-.372549,.678431,.870127,.654902,-.247059,.803922,.921799,.780392,-.121569,.897116,.951942,.882814,.00392157,.967397,.965936,.967474,.129412,.928028,.879815,.930565,.254902,.866052,.780777,.882891,.380392,.77501,.665129,.821376,.505882,.675663,.537024,.737024,.631373,.57847,.396155,.645982,.756863,.492349,.223914,.547559,.882353,.375548,.096886,.423299,1,.25098,0,.294118]},{ColorSpace:"Lab",Name:"GYPi",RGBPoints:[-1,.152941,.392157,.098039,-.87451,.246444,.505344,.117724,-.74902,.351942,.614533,.161399,-.623529,.474971,.717878,.240138,-.498039,.611995,.811226,.392849,-.372549,.746328,.893118,.565321,-.247059,.859516,.94233,.747405,-.121569,.928105,.96386,.875663,.00392157,.969089,.966859,.968012,.129412,.983852,.910265,.948328,.254902,.979239,.833218,.914648,.380392,.949712,.729873,.862976,.505882,.905652,.58293,.763552,.631373,.85521,.410073,.652211,.756863,.793695,.183699,.531642,.882353,.683737,.063899,.420761,1,.556863,.003922,.321569]},{ColorSpace:"Lab",Name:"GnYlRd",RGBPoints:[-1,0,.407843,.215686,-.87451,.063975,.525952,.277201,-.74902,.177932,.633064,.332718,-.623529,.364937,.724106,.379469,-.498039,.527951,.797155,.40223,-.372549,.678431,.862822,.433449,-.247059,.803922,.916955,.514648,-.121569,.909419,.961861,.625067,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.939023,.389927,.245521,.756863,.867666,.239831,.176624,.882353,.762399,.110727,.151326,1,.647059,0,.14902]},{ColorSpace:"Lab",Name:"GBBr",RGBPoints:[-1,0,.235294,.188235,-.87451,.002461,.338639,.301423,-.74902,.055902,.448981,.417609,-.623529,.183852,.56955,.538178,-.498039,.357785,.700115,.660746,-.372549,.540177,.819531,.77624,-.247059,.714879,.890888,.864821,-.121569,.851134,.934564,.922645,.00392157,.960861,.959785,.95694,.129412,.963322,.927797,.83391,.254902,.939946,.868897,.68935,.380392,.883353,.775394,.517109,.505882,.808074,.625836,.324106,.631373,.717647,.476355,.15494,.756863,.592157,.358247,.06882,.882353,.458593,.26436,.031142,1,.329412,.188235,.019608]},{ColorSpace:"Lab",Name:"PuOr",RGBPoints:[-1,.498039,.231373,.031373,-.87451,.62599,.30273,.026451,-.74902,.746943,.387082,.037524,-.623529,.85767,.490427,.071972,-.498039,.936409,.617762,.236371,-.372549,.992695,.743099,.43291,-.247059,.995156,.841523,.63714,-.121569,.985313,.913802,.813687,.00392157,.966244,.966398,.967705,.129412,.889965,.89504,.938178,.254902,.806151,.804306,.894656,.380392,.712649,.688658,.833141,.505882,.594233,.554325,.744637,.631373,.474894,.404229,.652364,.756863,.366628,.217224,.563783,.882353,.266436,.089965,.434833,1,.176471,0,.294118]},{ColorSpace:"Lab",Name:"PRGn",RGBPoints:[-1,.25098,0,.294118,-.87451,.383852,.103345,.431911,-.74902,.497732,.234679,.55371,-.623529,.583852,.40692,.652134,-.498039,.681968,.545175,.742561,-.372549,.7807,.672357,.825221,-.247059,.871742,.788005,.886736,-.121569,.930488,.885198,.932872,.00392157,.966321,.968089,.965859,.129412,.892503,.950865,.877278,.254902,.796078,.91857,.772549,.380392,.670588,.866897,.647059,.505882,.493195,.765398,.496655,.631373,.314187,.649135,.354556,.756863,.15917,.516263,.251211,.882353,.062284,.386621,.170473,1,0,.266667,.105882]},{ColorSpace:"Lab",Name:"PiYG",RGBPoints:[-1,.556863,.003922,.321569,-.87451,.692195,.067897,.427374,-.74902,.797539,.197847,.539177,-.623529,.859054,.424221,.659746,-.498039,.908574,.592618,.770319,-.372549,.951557,.736332,.866205,-.247059,.981084,.839677,.917878,-.121569,.98293,.913802,.949558,.00392157,.96732,.968474,.965629,.129412,.92549,.963552,.869666,.254902,.852441,.939254,.736025,.380392,.739254,.890042,.553941,.505882,.60323,.805536,.382238,.631373,.467282,.711419,.235217,.756863,.344252,.608074,.156478,.882353,.2406,.49827,.116494,1,.152941,.392157,.098039]},{ColorSpace:"Lab",Name:"OrPu",RGBPoints:[-1,.176471,0,.294118,-.87451,.272434,.095963,.444214,-.74902,.373395,.228912,.56932,-.623529,.481661,.415917,.657901,-.498039,.601922,.562937,.750481,-.372549,.718493,.695886,.836986,-.247059,.811995,.811534,.898501,-.121569,.894733,.8995,.940023,.00392157,.969166,.966859,.963629,.129412,.98639,.910265,.803691,.254902,.995002,.835371,.624375,.380392,.992541,.736947,.420146,.505882,.931949,.609458,.224221,.631373,.85075,.483968,.069819,.756863,.740023,.380623,.035371,.882353,.617993,.29827,.026759,1,.498039,.231373,.031373]},{ColorSpace:"Lab",Name:"BrBG",RGBPoints:[-1,.329412,.188235,.019608,-.87451,.467205,.269435,.031911,-.74902,.6,.365629,.074202,-.623529,.72549,.483737,.160323,-.498039,.812995,.635832,.336409,-.372549,.88689,.781238,.527874,-.247059,.943483,.87474,.700115,-.121569,.963168,.929796,.841599,.00392157,.957247,.959938,.959554,.129412,.84406,.932872,.920185,.254902,.70396,.886428,.859285,.380392,.529258,.815071,.770704,.505882,.346251,.691811,.653057,.631373,.175855,.562015,.530642,.756863,.047905,.441446,.410073,.882353,.002307,.33218,.294348,1,0,.235294,.188235]},{ColorSpace:"Lab",Name:"GyRd",RGBPoints:[-1,.101961,.101961,.101961,-.87451,.227451,.227451,.227451,-.74902,.359939,.359939,.359939,-.623529,.502653,.502653,.502653,-.498039,.631373,.631373,.631373,-.372549,.749865,.749865,.749865,-.247059,.843368,.843368,.843368,-.121569,.926105,.926105,.926105,.00392157,.999846,.997232,.995694,.129412,.994925,.908651,.857901,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen",RGBPoints:[-1,.297553,0,.489074,-.87451,.40259,.151146,.567754,-.74902,.516038,.284843,.658231,-.623529,.629783,.423646,.750938,-.498039,.735198,.563697,.835956,-.372549,.82408,.695541,.903582,-.247059,.889091,.807454,.944862,-.121569,.92334,.886917,.951839,.00392157,.921045,.921084,.921003,.129412,.877324,.907455,.845381,.254902,.797649,.849713,.734695,.380392,.691646,.75964,.600532,.505882,.568981,.649159,.453807,.631373,.438945,.529756,.304259,.756863,.30973,.412001,.158303,.882353,.187078,.305111,.00251458,1,.101655,.220836,0]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen_dim",RGBPoints:[-1,.404088,.131038,.592767,-.87451,.486469,.230957,.651243,-.74902,.575165,.339335,.717723,-.623529,.662741,.454332,.784263,-.498039,.742071,.570213,.842918,-.372549,.806935,.678992,.886227,-.247059,.852219,.771315,.90763,-.121569,.873345,.837327,.901572,.00392157,.866783,.86682,.866745,.129412,.82839,.858225,.796812,.254902,.762578,.814287,.700202,.380392,.676429,.744229,.585735,.505882,.577033,.65732,.461526,.631373,.47128,.562476,.33476,.756863,.365461,.467957,.21076,.882353,.264758,.381138,.0878313,1,.182591,.312249,0]},{ColorSpace:"Lab",Name:"erdc_divLow_icePeach",RGBPoints:[-1,.480048,.817441,.998056,-.87451,.425898,.726921,.883187,-.74902,.366682,.629445,.761936,-.623529,.308756,.531002,.640217,-.498039,.258021,.43705,.523433,-.372549,.219244,.352381,.416348,-.247059,.195127,.281032,.322979,-.121569,.186286,.22627,.246525,.00392157,.192352,.19236,.192364,.129412,.255927,.214469,.191756,.254902,.340459,.254426,.206666,.380392,.444655,.309315,.234029,.505882,.565353,.376004,.270969,.631373,.697917,.450748,.314293,.756863,.836657,.529064,.360227,.882353,.972695,.614884,.413123,1,1,.705904,.472699]},{ColorSpace:"Lab",Name:"erdc_divLow_purpleGreen",RGBPoints:[-1,.956034,.666487,.952663,-.87451,.874457,.572698,.936352,-.74902,.753465,.488253,.909063,-.623529,.63309,.413507,.763833,-.498039,.514491,.345878,.620015,-.372549,.405008,.288141,.484376,-.247059,.311388,.241986,.363556,-.121569,.238722,.209044,.263449,.00392157,.192352,.192366,.192362,.129412,.200379,.233201,.168618,.254902,.230151,.291737,.165227,.380392,.279481,.366076,.178607,.505882,.344927,.453267,.205703,.631373,.421554,.549449,.242643,.756863,.503334,.649999,.284377,.882353,.583497,.749672,.324969,1,.650705,.837228,.356264]},{ColorSpace:"Lab",Name:"Haze_green",RGBPoints:[-1,1,.835294,.886275,-.87451,.937255,.756863,.870443,-.74902,.875817,.666376,.857807,-.623529,.778359,.583007,.808134,-.498039,.676253,.494118,.745098,-.372549,.561365,.390123,.682353,-.247059,.438344,.262745,.621496,-.121569,.321133,.141031,.558751,.00392157,.203922,.0217865,.495861,.129412,.265505,.129412,.433261,.254902,.311692,.255338,.37008,.380392,.356282,.377342,.310821,.505882,.39971,.488889,.258243,.631373,.442556,.604357,.205519,.756863,.48671,.71968,.152941,.882353,.529847,.830356,.100944,1,.572549,.933333,.054902]},{ColorSpace:"Lab",Name:"Haze_lime",RGBPoints:[-1,.704034,.784196,1,-.87451,.633111,.691418,.956078,-.74902,.564021,.600606,.912157,-.623529,.496827,.51189,.868235,-.498039,.43157,.425416,.824314,-.372549,.368248,.341347,.780392,-.247059,.306767,.259855,.736471,-.121569,.246862,.181069,.692549,.00392157,.191619,.109542,.648627,.129412,.257404,.194031,.604706,.254902,.321794,.278775,.560784,.380392,.387909,.364617,.516863,.505882,.456569,.451881,.472941,.631373,.527424,.540773,.42902,.756863,.599759,.631427,.385098,.882353,.673065,.723898,.341176,1,.742751,.812252,.3]},{ColorSpace:"RGB",Name:"Haze",RGBPoints:[-1,1,.835294,.996078,-.00392157,.023529,.141176,.498039,.00392157,.015686,.137255,.494118,1,.984314,.764706,0]},{ColorSpace:"Lab",Name:"Haze_cyan",RGBPoints:[-1,.956863,1,.835294,-.87451,.933188,.921714,.760784,-.74902,.870588,.803486,.671605,-.623529,.807843,.684096,.583297,-.498039,.745098,.569208,.494118,-.372549,.682353,.437763,.390123,-.247059,.621496,.288163,.262745,-.121569,.558751,.144517,.141031,.00392157,.495861,.0217865,.0413943,.129412,.433261,.137255,.129412,.254902,.37008,.263181,.255338,.380392,.306318,.381845,.372694,.505882,.243137,.503994,.494263,.631373,.180392,.629484,.619753,.756863,.117647,.754975,.747131,.882353,.054902,.876398,.866812,1,0,.988235,.976471]},{ColorSpace:"Lab",Name:"nic_Edge",RGBPoints:[-1,.191208,.191208,.191208,-.87451,.239484,.00545035,.614821,-.74902,.220593,.0617459,.863547,-.623529,.17509,.278988,.97794,-.498039,.143526,.576069,.998553,-.372549,.166456,.871883,.96594,-.247059,.376202,.993555,.981833,-.121569,.681996,.991297,.999239,.00392157,.954172,.952734,.94374,.129412,.999735,.99301,.662896,.254902,.979399,.991466,.357973,.380392,.968771,.854967,.162659,.505882,.999245,.556697,.144323,.631373,.973959,.26223,.177946,.756863,.852358,.0526707,.222974,.882353,.593889,.00912724,.238855,1,.191208,.191208,.191208]},{ColorSpace:"Lab",Name:"erdc_iceFire_H",RGBPoints:[-1,405432e-12,0,590122e-11,-.87451,0,.120401,.302675,-.74902,0,.216583,.524574,-.623529,.0552475,.345025,.6595,-.498039,.128047,.492588,.720288,-.372549,.188955,.641309,.792092,-.247059,.327673,.784935,.873434,-.121569,.60824,.892164,.935547,.00392157,.881371,.912178,.818099,.129412,.951407,.835621,.449279,.254902,.904481,.690489,0,.380392,.85407,.510864,0,.505882,.777093,.33018,88199e-8,.631373,.672862,.139087,.00269398,.756863,.508815,0,0,.882353,.299417,366289e-9,547829e-9,1,.0157519,.00332021,455569e-13]},{ColorSpace:"Lab",Name:"erdc_iceFire_L",RGBPoints:[-1,.870485,.913768,.832905,-.87451,.586919,.887865,.934003,-.74902,.31583,.776442,.867858,-.623529,.18302,.632034,.787722,-.498039,.117909,.484134,.713825,-.372549,.0507239,.335979,.654741,-.247059,0,.209874,.511832,-.121569,0,.114689,.28935,.00392157,.0157519,.00332021,455569e-13,.129412,.312914,0,0,.254902,.520865,0,0,.380392,.680105,.15255,.0025996,.505882,.785109,.339479,797922e-9,.631373,.857354,.522494,0,.756863,.910974,.699774,0,.882353,.951921,.842817,.478545,1,.881371,.912178,.818099]},{ColorSpace:"RGB",Name:"hsv",RGBPoints:[-1,1,0,0,-.666666,1,0,1,-.333333,0,0,1,0,0,1,1,.33333,0,1,0,.66666,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"hue_L60",RGBPoints:[-1,.964784,.400592,.349549,-.87451,.964915,.372498,.53785,-.74902,.892353,.401039,.759569,-.623529,.79263,.446956,.903017,-.498039,.682208,.49954,.966673,-.372549,.56392,.553082,.968836,-.247059,.442031,.606396,.901601,-.121569,.305499,.65701,.765784,.00392157,.197251,.687914,.620914,.129412,.193882,.701887,.472654,.254902,.249866,.706123,.320005,.380392,.35132,.697417,.202919,.505882,.498097,.669467,.125232,.631373,.637477,.626239,.107431,.756863,.762115,.56872,.155812,.882353,.889434,.481116,.240445,1,.964784,.400592,.349549]},{IndexedColors:[0,0,0,.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,.6509803921568628,.3372549019607843,.1568627450980392],Name:"Spectrum",NanColor:[.6509803921568628,.3372549019607843,.1568627450980392]},{IndexedColors:[.4745098039215686,.09019607843137255,.09019607843137255,.7098039215686275,.00392156862745098,.00392156862745098,.9372549019607843,.2784313725490196,.09803921568627451,.9764705882352941,.5137254901960784,.1411764705882353,1,.7058823529411765,0,1,.8980392156862745,.02352941176470588],Name:"Warm",NanColor:[1,.8980392156862745,.02352941176470588]},{IndexedColors:[.4588235294117647,.6941176470588235,.00392156862745098,.3450980392156863,.5019607843137255,.1607843137254902,.3137254901960784,.8431372549019608,.7490196078431373,.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.6039215686274509,.407843137254902,1,.3725490196078431,.2,.5019607843137255],Name:"Cool",NanColor:[.3725490196078431,.2,.5019607843137255]},{IndexedColors:[.2313725490196079,.407843137254902,.6705882352941176,.1098039215686274,.5843137254901961,.803921568627451,.3058823529411765,.8509803921568627,.9176470588235294,.4509803921568628,.6039215686274509,.8352941176470589,.2588235294117647,.2392156862745098,.6627450980392157,.3137254901960784,.3294117647058823,.5294117647058824,.06274509803921569,.1647058823529412,.3215686274509804],Name:"Blues",NanColor:[.06274509803921569,.1647058823529412,.3215686274509804]},{IndexedColors:[.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.4,.2431372549019608,.7176470588235294,.6352941176470588,.3294117647058823,.8117647058823529,.8705882352941177,.3803921568627451,.807843137254902,.8627450980392157,.3803921568627451,.5843137254901961,.2392156862745098,.06274509803921569,.3215686274509804],Name:"Wild Flower",NanColor:[.2392156862745098,.06274509803921569,.3215686274509804]},{IndexedColors:[.396078431372549,.4862745098039216,.2156862745098039,.4588235294117647,.6941176470588235,.00392156862745098,.6980392156862745,.7294117647058823,.1882352941176471,1,.8980392156862745,.02352941176470588,1,.7058823529411765,0,.9764705882352941,.5137254901960784,.1411764705882353],Name:"Citrus",NanColor:[.9764705882352941,.5137254901960784,.1411764705882353]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (11)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (10)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (9)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (8)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (7)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (6)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.9686274509803922,.9686274509803922,.9686274509803922,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (5)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (4)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9450980392156862,.6392156862745098,.2509803921568627,.9686274509803922,.9686274509803922,.9686274509803922,.6,.5568627450980392,.7647058823529411],Name:"Brewer Diverging Purple-Orange (3)",NanColor:[.6,.5568627450980392,.7647058823529411]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (11)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (10)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (9)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (8)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (7)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (6)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,1,1,.7490196078431373,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (5)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (4)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.9882352941176471,.5529411764705883,.3490196078431372,1,1,.7490196078431373,.6,.8352941176470589,.5803921568627451],Name:"Brewer Diverging Spectral (3)",NanColor:[.6,.8352941176470589,.5803921568627451]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (11)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (10)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (9)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (8)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (7)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (6)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.9607843137254902,.9607843137254902,.9607843137254902,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (5)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (4)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.8470588235294118,.7019607843137254,.396078431372549,.9607843137254902,.9607843137254902,.9607843137254902,.3529411764705883,.7058823529411765,.6745098039215687],Name:"Brewer Diverging Brown-Blue-Green (3)",NanColor:[.3529411764705883,.7058823529411765,.6745098039215687]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.4274509803921568,.1725490196078431,0,.2666666666666667,.1058823529411765],Name:"Brewer Sequential Blue-Green (9)",NanColor:[0,.2666666666666667,.1058823529411765]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (8)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.8,.9254901960784314,.9019607843137255,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (7)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (6)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (5)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1372549019607843,.5450980392156862,.2705882352941176],Name:"Brewer Sequential Blue-Green (4)",NanColor:[.1372549019607843,.5450980392156862,.2705882352941176]},{IndexedColors:[.8980392156862745,.9607843137254902,.9764705882352941,.6,.8470588235294118,.788235294117647,.1725490196078431,.6352941176470588,.3725490196078431],Name:"Brewer Sequential Blue-Green (3)",NanColor:[.1725490196078431,.6352941176470588,.3725490196078431]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.6,.203921568627451,.01568627450980392,.4,.1450980392156863,.02352941176470588],Name:"Brewer Sequential Yellow-Orange-Brown (9)",NanColor:[.4,.1450980392156863,.02352941176470588]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (8)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (7)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (6)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (5)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8,.2980392156862745,.00784313725490196],Name:"Brewer Sequential Yellow-Orange-Brown (4)",NanColor:[.8,.2980392156862745,.00784313725490196]},{IndexedColors:[1,.9686274509803922,.7372549019607844,.996078431372549,.7686274509803922,.3098039215686275,.8509803921568627,.3725490196078431,.05490196078431372],Name:"Brewer Sequential Yellow-Orange-Brown (3)",NanColor:[.8509803921568627,.3725490196078431,.05490196078431372]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.5058823529411764,.05882352941176471,.4862745098039216,.3019607843137255,0,.2941176470588235],Name:"Brewer Sequential Blue-Purple (9)",NanColor:[.3019607843137255,0,.2941176470588235]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (8)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (7)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (6)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (5)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.2549019607843137,.615686274509804],Name:"Brewer Sequential Blue-Purple (4)",NanColor:[.5333333333333333,.2549019607843137,.615686274509804]},{IndexedColors:[.8784313725490196,.9254901960784314,.9568627450980393,.6196078431372549,.7372549019607844,.8549019607843137,.5333333333333333,.3372549019607843,.6549019607843137],Name:"Brewer Sequential Blue-Purple (3)",NanColor:[.5333333333333333,.3372549019607843,.6549019607843137]},{IndexedColors:[.4980392156862745,.788235294117647,.4980392156862745,.7450980392156863,.6823529411764706,.8313725490196079,.9921568627450981,.7529411764705882,.5254901960784314,1,1,.6,.2196078431372549,.4235294117647059,.6901960784313725,.9411764705882353,.00784313725490196,.4980392156862745,.7490196078431373,.3568627450980392,.09019607843137255,.4,.4,.4],Name:"Brewer Qualitative Accent",NanColor:[.4,.4,.4]},{IndexedColors:[.1058823529411765,.6196078431372549,.4666666666666667,.8509803921568627,.3725490196078431,.00784313725490196,.4588235294117647,.4392156862745098,.7019607843137254,.9058823529411765,.1607843137254902,.5411764705882353,.4,.6509803921568628,.1176470588235294,.9019607843137255,.6705882352941176,.00784313725490196,.6509803921568628,.4627450980392157,.1137254901960784,.4,.4,.4],Name:"Brewer Qualitative Dark2",NanColor:[.4,.4,.4]},{IndexedColors:[.4,.7607843137254902,.6470588235294118,.9882352941176471,.5529411764705883,.3843137254901961,.5529411764705883,.6274509803921569,.796078431372549,.9058823529411765,.5411764705882353,.7647058823529411,.6509803921568628,.8470588235294118,.3294117647058823,1,.8509803921568627,.1843137254901961,.8980392156862745,.7686274509803922,.5803921568627451,.7019607843137254,.7019607843137254,.7019607843137254],Name:"Brewer Qualitative Set2",NanColor:[.7019607843137254,.7019607843137254,.7019607843137254]},{IndexedColors:[.7019607843137254,.8862745098039215,.803921568627451,.9921568627450981,.803921568627451,.6745098039215687,.796078431372549,.8352941176470589,.9098039215686274,.9568627450980393,.792156862745098,.8941176470588236,.9019607843137255,.9607843137254902,.788235294117647,1,.9490196078431372,.6823529411764706,.9450980392156862,.8862745098039215,.8,.8,.8,.8],Name:"Brewer Qualitative Pastel2",NanColor:[.8,.8,.8]},{IndexedColors:[.984313725490196,.7058823529411765,.6823529411764706,.7019607843137254,.803921568627451,.8901960784313725,.8,.9215686274509803,.7725490196078432,.8705882352941177,.796078431372549,.8941176470588236,.996078431372549,.8509803921568627,.6509803921568628,1,1,.8,.8980392156862745,.8470588235294118,.7411764705882353,.9921568627450981,.8549019607843137,.9254901960784314,.9490196078431372,.9490196078431372,.9490196078431372],Name:"Brewer Qualitative Pastel1",NanColor:[.9490196078431372,.9490196078431372,.9490196078431372]},{IndexedColors:[.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,1,1,.2,.6509803921568628,.3372549019607843,.1568627450980392,.9686274509803922,.5058823529411764,.7490196078431373,.6,.6,.6],Name:"Brewer Qualitative Set1",NanColor:[.6,.6,.6]},{IndexedColors:[.6509803921568628,.807843137254902,.8901960784313725,.1215686274509804,.4705882352941176,.7058823529411765,.6980392156862745,.8745098039215686,.5411764705882353,.2,.6274509803921569,.1725490196078431,.984313725490196,.6039215686274509,.6,.8901960784313725,.1019607843137255,.1098039215686274,.9921568627450981,.7490196078431373,.4352941176470588,1,.4980392156862745,0,.792156862745098,.6980392156862745,.8392156862745098,.4156862745098039,.2392156862745098,.6039215686274509,1,1,.6],Name:"Brewer Qualitative Paired",NanColor:[1,1,.6]},{IndexedColors:[.5529411764705883,.8274509803921568,.7803921568627451,1,1,.7019607843137254,.7450980392156863,.7294117647058823,.8549019607843137,.984313725490196,.5019607843137255,.4470588235294118,.5019607843137255,.6941176470588235,.8274509803921568,.9921568627450981,.7058823529411765,.3843137254901961,.7019607843137254,.8705882352941177,.4117647058823529,.9882352941176471,.803921568627451,.8980392156862745,.8509803921568627,.8509803921568627,.8509803921568627,.7372549019607844,.5019607843137255,.7411764705882353,.8,.9215686274509803,.7725490196078432,1,.9294117647058824,.4352941176470588],Name:"Brewer Qualitative Set3",NanColor:[1,.9294117647058824,.4352941176470588]},{IndexedColors:[1,0,0,1,.862745,0,0,.695201,0],Name:"Traffic Lights",NanColor:[.803922,0,.803922]},{IndexedColors:[.908659,.604013,.581857,1,.862745,0,0,.695201,0],Name:"Traffic Lights For Deuteranopes",NanColor:[.803922,0,.803922]},{IndexedColors:[.4196078431372549,0,.07058823529411765,.9019607843137255,.9411764705882353,.0196078431372549,.01568627450980392,.6196078431372549,.00784313725490196],Name:"Traffic Lights For Deuteranopes 2",NanColor:[.803922,0,.803922]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Muted Blue-Green",NanColor:[.25,0,0],RGBPoints:[0,.109804,.27451,.301961,.02,.129412,.309804,.341176,.05,.14902,.341176,.380392,.1,.188235,.403922,.458824,.15,.227451,.447059,.521569,.2,.290196,.494118,.588235,.25,.368627,.552941,.670588,.3,.458824,.619608,.74902,.35,.588235,.713725,.85098,.4,.72549,.815686,.941176,.45,.831373,.882353,.980392,.475,.909804,.933333,1,.5,.980392,.984314,1,.5,.996078,1,.94902,.5,1,1,.980392,.5,.980392,.984314,1,.525,.972549,.988235,.890196,.55,.917647,.960784,.835294,.6,.835294,.921569,.772549,.65,.768627,.901961,.737255,.7,.670588,.831373,.654902,.75,.576471,.760784,.584314,.8,.498039,.678431,.521569,.85,.392157,.560784,.427451,.9,.294118,.45098,.333333,.95,.211765,.34902,.254902,1,.152941,.278431,.196078]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Green-Blue Asymmetric Divergent (62Blbc)",NanColor:[.25,0,0],RGBPoints:[0,.121569,.2,.145098,.05,.196078,.301961,.223529,.1,.258824,.4,.278431,.2,.341176,.54902,.341176,.25,.419608,.619608,.376471,.3,.545098,.701961,.392157,.35,.643137,.780392,.403922,.4,.729412,.819608,.45098,.45,.811765,.870588,.521569,.5,.898039,.909804,.564706,.55,.941176,.92549,.686275,.6,.960784,.94902,.776471,.64,1,1,1,.65,.890196,.988235,.972549,.7,.721569,.894118,.901961,.75,.631373,.823529,.839216,.8,.517647,.662745,.701961,.85,.384314,.494118,.54902,.9,.298039,.360784,.45098,.95,.223529,.25098,.34902,.99,.156863,.172549,.25098,1,.137255,.137255,.188235]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Asymmtrical Earth Tones (6_21b)",NanColor:[.25,0,0],RGBPoints:[0,.141176,.14902,.2,.05,.215686,.258824,.321569,.1,.243137,.368627,.380392,.15,.27451,.439216,.4,.2,.32549,.501961,.384314,.25,.403922,.6,.419608,.3,.486275,.701961,.454902,.35,.556863,.74902,.494118,.4,.670588,.8,.545098,.5,.854902,.901961,.631373,.55,.92549,.941176,.694118,.6,.960784,.94902,.776471,.65,.988235,.968627,.909804,.7,.839216,.815686,.772549,.75,.701961,.662745,.615686,.8,.6,.529412,.478431,.85,.501961,.403922,.360784,.9,.439216,.313725,.290196,1,.301961,.164706,.176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Yellow 15",NanColor:[.25,0,0],RGBPoints:[0,1,1,.988235,.002,1,1,.988235,.05,.984314,.988235,.843137,.1,.988235,.988235,.741176,.15,.980392,.968627,.654902,.2,.980392,.945098,.576471,.25,.968627,.905882,.486275,.3,.968627,.862745,.388235,.35,.960784,.803922,.286275,.4,.94902,.741176,.219608,.45,.941176,.678431,.14902,.5,.929412,.607843,.094118,.55,.921569,.545098,.054902,.6,.909804,.486275,.035294,.65,.890196,.411765,.019608,.7,.8,.305882,0,.75,.760784,.239216,0,.8,.678431,.180392,.011765,.85,.6,.121569,.023529,.9,.501961,.054902,.031373,.95,.4,.039216,.058824,1,.301961,.047059,.090196]},{ColorSpace:"Diverging",Name:"Magma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002258,.001295,.018331,.007843,.003279,.002305,.023708,.011765,.004512,.00349,.029965,.015686,.00595,.004843,.03713,.019608,.007588,.006356,.044973,.023529,.009426,.008022,.052844,.027451,.011465,.009828,.06075,.031373,.013708,.011771,.068667,.035294,.016156,.01384,.076603,.039216,.018815,.016026,.084584,.043137,.021692,.01832,.09261,.047059,.024792,.020715,.100676,.05098,.028123,.023201,.108787,.054902,.031696,.025765,.116965,.058824,.03552,.028397,.125209,.062745,.039608,.03109,.133515,.066667,.04383,.03383,.141886,.070588,.048062,.036607,.150327,.07451,.05232,.039407,.158841,.078431,.056615,.04216,.167446,.082353,.060949,.044794,.176129,.086275,.06533,.047318,.184892,.090196,.069764,.049726,.193735,.094118,.074257,.052017,.20266,.098039,.078815,.054184,.211667,.101961,.083446,.056225,.220755,.105882,.088155,.058133,.229922,.109804,.092949,.059904,.239164,.113725,.097833,.061531,.248477,.117647,.102815,.06301,.257854,.121569,.107899,.064335,.267289,.12549,.113094,.065492,.276784,.129412,.118405,.066479,.286321,.133333,.123833,.067295,.295879,.137255,.12938,.067935,.305443,.141176,.135053,.068391,.315,.145098,.140858,.068654,.324538,.14902,.146785,.068738,.334011,.152941,.152839,.068637,.343404,.156863,.159018,.068354,.352688,.160784,.165308,.067911,.361816,.164706,.171713,.067305,.370771,.168627,.178212,.066576,.379497,.172549,.184801,.065732,.387973,.176471,.19146,.064818,.396152,.180392,.198177,.063862,.404009,.184314,.204935,.062907,.411514,.188235,.211718,.061992,.418647,.192157,.218512,.061158,.425392,.196078,.225302,.060445,.431742,.2,.232077,.059889,.437695,.203922,.238826,.059517,.443256,.207843,.245543,.059352,.448436,.211765,.25222,.059415,.453248,.215686,.258857,.059706,.45771,.219608,.265447,.060237,.46184,.223529,.271994,.060994,.46566,.227451,.278493,.061978,.46919,.231373,.284951,.063168,.472451,.235294,.291366,.064553,.475462,.239216,.29774,.066117,.478243,.243137,.304081,.067835,.480812,.247059,.310382,.069702,.483186,.25098,.316654,.07169,.48538,.254902,.322899,.073782,.487408,.258824,.329114,.075972,.489287,.262745,.335308,.078236,.491024,.266667,.341482,.080564,.492631,.270588,.347636,.082946,.494121,.27451,.353773,.085373,.495501,.278431,.359898,.087831,.496778,.282353,.366012,.090314,.49796,.286275,.372116,.092816,.499053,.290196,.378211,.095332,.500067,.294118,.384299,.097855,.501002,.298039,.390384,.100379,.501864,.301961,.396467,.102902,.502658,.305882,.402548,.10542,.503386,.309804,.408629,.10793,.504052,.313725,.414709,.110431,.504662,.317647,.420791,.11292,.505215,.321569,.426877,.115395,.505714,.32549,.432967,.117855,.50616,.329412,.439062,.120298,.506555,.333333,.445163,.122724,.506901,.337255,.451271,.125132,.507198,.341176,.457386,.127522,.507448,.345098,.463508,.129893,.507652,.34902,.46964,.132245,.507809,.352941,.47578,.134577,.507921,.356863,.481929,.136891,.507989,.360784,.488088,.139186,.508011,.364706,.494258,.141462,.507988,.368627,.500438,.143719,.50792,.372549,.506629,.145958,.507806,.376471,.512831,.148179,.507648,.380392,.519045,.150383,.507443,.384314,.52527,.152569,.507192,.388235,.531507,.154739,.506895,.392157,.537755,.156894,.506551,.396078,.544015,.159033,.506159,.4,.550287,.161158,.505719,.403922,.556571,.163269,.50523,.407843,.562866,.165368,.504692,.411765,.569172,.167454,.504105,.415686,.57549,.16953,.503466,.419608,.581819,.171596,.502777,.423529,.588158,.173652,.502035,.427451,.594508,.175701,.501241,.431373,.600868,.177743,.500394,.435294,.607238,.179779,.499492,.439216,.613617,.181811,.498536,.443137,.620005,.18384,.497524,.447059,.626401,.185867,.496456,.45098,.632805,.187893,.495332,.454902,.639216,.189921,.49415,.458824,.645633,.191952,.49291,.462745,.652056,.193986,.491611,.466667,.658483,.196027,.490253,.470588,.664915,.198075,.488836,.47451,.671349,.200133,.487358,.478431,.677786,.202203,.485819,.482353,.684224,.204286,.484219,.486275,.690661,.206384,.482558,.490196,.697098,.208501,.480835,.494118,.703532,.210638,.479049,.498039,.709962,.212797,.477201,.501961,.716387,.214982,.47529,.505882,.722805,.217194,.473316,.509804,.729216,.219437,.471279,.513725,.735616,.221713,.46918,.517647,.742004,.224025,.467018,.521569,.748378,.226377,.464794,.52549,.754737,.228772,.462509,.529412,.761077,.231214,.460162,.533333,.767398,.233705,.457755,.537255,.773695,.236249,.455289,.541176,.779968,.238851,.452765,.545098,.786212,.241514,.450184,.54902,.792427,.244242,.447543,.552941,.798608,.24704,.444848,.556863,.804752,.249911,.442102,.560784,.810855,.252861,.439305,.564706,.816914,.255895,.436461,.568627,.822926,.259016,.433573,.572549,.828886,.262229,.430644,.576471,.834791,.26554,.427671,.580392,.840636,.268953,.424666,.584314,.846416,.272473,.421631,.588235,.852126,.276106,.418573,.592157,.857763,.279857,.415496,.596078,.86332,.283729,.412403,.6,.868793,.287728,.409303,.603922,.874176,.291859,.406205,.607843,.879464,.296125,.403118,.611765,.884651,.30053,.400047,.615686,.889731,.305079,.397002,.619608,.8947,.309773,.393995,.623529,.899552,.314616,.391037,.627451,.904281,.31961,.388137,.631373,.908884,.324755,.385308,.635294,.913354,.330052,.382563,.639216,.917689,.3355,.379915,.643137,.921884,.341098,.377376,.647059,.925937,.346844,.374959,.65098,.929845,.352734,.372677,.654902,.933606,.358764,.370541,.658824,.937221,.364929,.368567,.662745,.940687,.371224,.366762,.666667,.944006,.377643,.365136,.670588,.94718,.384178,.363701,.67451,.95021,.39082,.362468,.678431,.953099,.397563,.361438,.682353,.955849,.4044,.360619,.686275,.958464,.411324,.360014,.690196,.960949,.418323,.35963,.694118,.96331,.42539,.359469,.698039,.965549,.432519,.359529,.701961,.967671,.439703,.35981,.705882,.96968,.446936,.360311,.709804,.971582,.45421,.36103,.713725,.973381,.46152,.361965,.717647,.975082,.468861,.363111,.721569,.97669,.476226,.364466,.72549,.97821,.483612,.366025,.729412,.979645,.491014,.367783,.733333,.981,.498428,.369734,.737255,.982279,.505851,.371874,.741176,.983485,.51328,.374198,.745098,.984622,.520713,.376698,.74902,.985693,.528148,.379371,.752941,.9867,.535582,.38221,.756863,.987646,.543015,.38521,.760784,.988533,.550446,.388365,.764706,.989363,.557873,.391671,.768627,.990138,.565296,.395122,.772549,.990871,.572706,.398714,.776471,.991558,.580107,.402441,.780392,.992196,.587502,.406299,.784314,.992785,.594891,.410283,.788235,.993326,.602275,.41439,.792157,.993834,.609644,.418613,.796078,.994309,.616999,.42295,.8,.994738,.62435,.427397,.803922,.995122,.631696,.431951,.807843,.99548,.639027,.436607,.811765,.99581,.646344,.441361,.815686,.996096,.653659,.446213,.819608,.996341,.660969,.45116,.823529,.99658,.668256,.456192,.827451,.996775,.675541,.461314,.831373,.996925,.682828,.466526,.835294,.997077,.690088,.471811,.839216,.997186,.697349,.477182,.843137,.997254,.704611,.482635,.847059,.997325,.711848,.488154,.85098,.997351,.719089,.493755,.854902,.997351,.726324,.499428,.858824,.997341,.733545,.505167,.862745,.997285,.740772,.510983,.866667,.997228,.747981,.516859,.870588,.997138,.75519,.522806,.87451,.997019,.762398,.528821,.878431,.996898,.769591,.534892,.882353,.996727,.776795,.541039,.886275,.996571,.783977,.547233,.890196,.996369,.791167,.553499,.894118,.996162,.798348,.55982,.898039,.995932,.805527,.566202,.901961,.99568,.812706,.572645,.905882,.995424,.819875,.57914,.909804,.995131,.827052,.585701,.913725,.994851,.834213,.592307,.917647,.994524,.841387,.598983,.921569,.994222,.84854,.605696,.92549,.993866,.855711,.612482,.929412,.993545,.862859,.619299,.933333,.99317,.870024,.626189,.937255,.992831,.877168,.633109,.941176,.99244,.88433,.640099,.945098,.992089,.89147,.647116,.94902,.991688,.898627,.654202,.952941,.991332,.905763,.661309,.956863,.99093,.912915,.668481,.960784,.99057,.920049,.675675,.964706,.990175,.927196,.682926,.968627,.989815,.934329,.690198,.972549,.989434,.94147,.697519,.976471,.989077,.948604,.704863,.980392,.988717,.955742,.712242,.984314,.988367,.962878,.719649,.988235,.988033,.970012,.727077,.992157,.987691,.977154,.734536,.996078,.987387,.984288,.742002,1,.987053,.991438,.749504]},{ColorSpace:"Diverging",Name:"Inferno (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002267,.00127,.01857,.007843,.003299,.002249,.024239,.011765,.004547,.003392,.030909,.015686,.006006,.004692,.038558,.019608,.007676,.006136,.046836,.023529,.009561,.007713,.055143,.027451,.011663,.009417,.06346,.031373,.013995,.011225,.071862,.035294,.016561,.013136,.080282,.039216,.019373,.015133,.088767,.043137,.022447,.017199,.097327,.047059,.025793,.019331,.10593,.05098,.029432,.021503,.114621,.054902,.033385,.023702,.123397,.058824,.037668,.025921,.132232,.062745,.042253,.028139,.141141,.066667,.046915,.030324,.150164,.070588,.051644,.032474,.159254,.07451,.056449,.034569,.168414,.078431,.06134,.03659,.177642,.082353,.066331,.038504,.186962,.086275,.071429,.040294,.196354,.090196,.076637,.041905,.205799,.094118,.081962,.043328,.215289,.098039,.087411,.044556,.224813,.101961,.09299,.045583,.234358,.105882,.098702,.046402,.243904,.109804,.104551,.047008,.25343,.113725,.110536,.047399,.262912,.117647,.116656,.047574,.272321,.121569,.122908,.047536,.281624,.12549,.129285,.047293,.290788,.129412,.135778,.046856,.299776,.133333,.142378,.046242,.308553,.137255,.149073,.045468,.317085,.141176,.15585,.044559,.325338,.145098,.162689,.043554,.333277,.14902,.169575,.042489,.340874,.152941,.176493,.041402,.348111,.156863,.183429,.040329,.354971,.160784,.190367,.039309,.361447,.164706,.197297,.0384,.367535,.168627,.204209,.037632,.373238,.172549,.211095,.03703,.378563,.176471,.217949,.036615,.383522,.180392,.224763,.036405,.388129,.184314,.231538,.036405,.3924,.188235,.238273,.036621,.396353,.192157,.244967,.037055,.400007,.196078,.25162,.037705,.403378,.2,.258234,.038571,.406485,.203922,.26481,.039647,.409345,.207843,.271347,.040922,.411976,.211765,.27785,.042353,.414392,.215686,.284321,.043933,.416608,.219608,.290763,.045644,.418637,.223529,.297178,.04747,.420491,.227451,.303568,.049396,.422182,.231373,.309935,.051407,.423721,.235294,.316282,.05349,.425116,.239216,.32261,.055634,.426377,.243137,.328921,.057827,.427511,.247059,.335217,.06006,.428524,.25098,.3415,.062325,.429425,.254902,.347771,.064616,.430217,.258824,.354032,.066925,.430906,.262745,.360284,.069247,.431497,.266667,.366529,.071579,.431994,.270588,.372768,.073915,.4324,.27451,.379001,.076253,.432719,.278431,.385228,.078591,.432955,.282353,.391453,.080927,.433109,.286275,.397674,.083257,.433183,.290196,.403894,.08558,.433179,.294118,.410113,.087896,.433098,.298039,.416331,.090203,.432943,.301961,.422549,.092501,.432714,.305882,.428768,.09479,.432412,.309804,.434987,.097069,.432039,.313725,.441207,.099338,.431594,.317647,.447428,.101597,.43108,.321569,.453651,.103848,.430498,.32549,.459875,.106089,.429846,.329412,.4661,.108322,.429125,.333333,.472328,.110547,.428334,.337255,.478558,.112764,.427475,.341176,.484789,.114974,.426548,.345098,.491022,.117179,.425552,.34902,.497257,.119379,.424488,.352941,.503493,.121575,.423356,.356863,.50973,.123769,.422156,.360784,.515967,.12596,.420887,.364706,.522206,.12815,.419549,.368627,.528444,.130341,.418142,.372549,.534683,.132534,.416667,.376471,.54092,.134729,.415123,.380392,.547157,.136929,.413511,.384314,.553392,.139134,.411829,.388235,.559624,.141346,.410078,.392157,.565854,.143567,.408258,.396078,.572081,.145797,.406369,.4,.578304,.148039,.404411,.403922,.584521,.150294,.402385,.407843,.590734,.152563,.40029,.411765,.59694,.154848,.398125,.415686,.603139,.157151,.395891,.419608,.60933,.159474,.393589,.423529,.615513,.161817,.391219,.427451,.621685,.164184,.388781,.431373,.627847,.166575,.386276,.435294,.633998,.168992,.383704,.439216,.640135,.171438,.381065,.443137,.64626,.173914,.378359,.447059,.652369,.176421,.375586,.45098,.658463,.178962,.372748,.454902,.66454,.181539,.369846,.458824,.670599,.184153,.366879,.462745,.676638,.186807,.363849,.466667,.682656,.189501,.360757,.470588,.688653,.192239,.357603,.47451,.694627,.195021,.354388,.478431,.700576,.197851,.351113,.482353,.7065,.200728,.347777,.486275,.712396,.203656,.344383,.490196,.718264,.206636,.340931,.494118,.724103,.20967,.337424,.498039,.729909,.212759,.333861,.501961,.735683,.215906,.330245,.505882,.741423,.219112,.326576,.509804,.747127,.222378,.322856,.513725,.752794,.225706,.319085,.517647,.758422,.229097,.315266,.521569,.76401,.232554,.311399,.52549,.769556,.236077,.307485,.529412,.775059,.239667,.303526,.533333,.780517,.243327,.299523,.537255,.785929,.247056,.295477,.541176,.791293,.250856,.29139,.545098,.796607,.254728,.287264,.54902,.801871,.258674,.283099,.552941,.807082,.262692,.278898,.556863,.812239,.266786,.274661,.560784,.817341,.270954,.27039,.564706,.822386,.275197,.266085,.568627,.827372,.279517,.26175,.572549,.832299,.283913,.257383,.576471,.837165,.288385,.252988,.580392,.841969,.292933,.248564,.584314,.846709,.297559,.244113,.588235,.851384,.30226,.239636,.592157,.855992,.307038,.235133,.596078,.860533,.311892,.230606,.6,.865006,.316822,.226055,.603922,.869409,.321827,.221482,.607843,.873741,.326906,.216886,.611765,.878001,.33206,.212268,.615686,.882188,.337287,.207628,.619608,.886302,.342586,.202968,.623529,.890341,.347957,.198286,.627451,.894305,.353399,.193584,.631373,.898192,.358911,.18886,.635294,.902003,.364492,.184116,.639216,.905735,.37014,.17935,.643137,.90939,.375856,.174563,.647059,.912966,.381636,.169755,.65098,.916462,.387481,.164924,.654902,.919879,.393389,.16007,.658824,.923215,.399359,.155193,.662745,.92647,.405389,.150292,.666667,.929644,.411479,.145367,.670588,.932737,.417627,.140417,.67451,.935747,.423831,.13544,.678431,.938675,.430091,.130438,.682353,.941521,.436405,.125409,.686275,.944285,.442772,.120354,.690196,.946965,.449191,.115272,.694118,.949562,.45566,.110164,.698039,.952075,.462178,.105031,.701961,.954506,.468744,.099874,.705882,.956852,.475356,.094695,.709804,.959114,.482014,.089499,.713725,.961293,.488716,.084289,.717647,.963387,.495462,.079073,.721569,.965397,.502249,.073859,.72549,.967322,.509078,.068659,.729412,.969163,.515946,.063488,.733333,.970919,.522853,.058367,.737255,.97259,.529798,.053324,.741176,.974176,.53678,.048392,.745098,.975677,.543798,.043618,.74902,.977092,.55085,.03905,.752941,.978422,.557937,.034931,.756863,.979666,.565057,.031409,.760784,.980824,.572209,.028508,.764706,.981895,.579392,.02625,.768627,.982881,.586606,.024661,.772549,.983779,.593849,.02377,.776471,.984591,.601122,.023606,.780392,.985315,.608422,.024202,.784314,.985952,.61575,.025592,.788235,.986502,.623105,.027814,.792157,.986964,.630485,.030908,.796078,.987337,.63789,.034916,.8,.987622,.64532,.039886,.803922,.987819,.652773,.045581,.807843,.987926,.66025,.05175,.811765,.987945,.667748,.058329,.815686,.987874,.675267,.065257,.819608,.987714,.682807,.072489,.823529,.987464,.690366,.07999,.827451,.987124,.697944,.087731,.831373,.986694,.70554,.095694,.835294,.986175,.713153,.103863,.839216,.985566,.720782,.112229,.843137,.984865,.728427,.120785,.847059,.984075,.736087,.129527,.85098,.983196,.743758,.138453,.854902,.982228,.751442,.147565,.858824,.981173,.759135,.156863,.862745,.980032,.766837,.166353,.866667,.978806,.774545,.176037,.870588,.977497,.782258,.185923,.87451,.976108,.789974,.196018,.878431,.974638,.797692,.206332,.882353,.973088,.805409,.216877,.886275,.971468,.813122,.227658,.890196,.969783,.820825,.238686,.894118,.968041,.828515,.249972,.898039,.966243,.836191,.261534,.901961,.964394,.843848,.273391,.905882,.962517,.851476,.285546,.909804,.960626,.859069,.29801,.913725,.95872,.866624,.31082,.917647,.956834,.874129,.323974,.921569,.954997,.881569,.337475,.92549,.953215,.888942,.351369,.929412,.951546,.896226,.365627,.933333,.950018,.903409,.380271,.937255,.948683,.910473,.395289,.941176,.947594,.917399,.410665,.945098,.946809,.924168,.426373,.94902,.946392,.930761,.442367,.952941,.946403,.937159,.458592,.956863,.946903,.943348,.47497,.960784,.947937,.949318,.491426,.964706,.949545,.955063,.50786,.968627,.95174,.960587,.524203,.972549,.954529,.965896,.540361,.976471,.957896,.971003,.556275,.980392,.961812,.975924,.571925,.984314,.966249,.980678,.587206,.988235,.971162,.985282,.602154,.992157,.976511,.989753,.61676,.996078,.982257,.994109,.631017,1,.988362,.998364,.644924]},{ColorSpace:"Diverging",Name:"Plasma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.050383,.029803,.527975,.003922,.063536,.028426,.533124,.007843,.075353,.027206,.538007,.011765,.086222,.026125,.542658,.015686,.096379,.025165,.547103,.019608,.10598,.024309,.551368,.023529,.115124,.023556,.555468,.027451,.123903,.022878,.559423,.031373,.132381,.022258,.56325,.035294,.140603,.021687,.566959,.039216,.148607,.021154,.570562,.043137,.156421,.020651,.574065,.047059,.16407,.020171,.577478,.05098,.171574,.019706,.580806,.054902,.17895,.019252,.584054,.058824,.186213,.018803,.587228,.062745,.193374,.018354,.59033,.066667,.200445,.017902,.593364,.070588,.207435,.017442,.596333,.07451,.21435,.016973,.599239,.078431,.221197,.016497,.602083,.082353,.227983,.016007,.604867,.086275,.234715,.015502,.607592,.090196,.241396,.014979,.610259,.094118,.248032,.014439,.612868,.098039,.254627,.013882,.615419,.101961,.261183,.013308,.617911,.105882,.267703,.012716,.620346,.109804,.274191,.012109,.622722,.113725,.280648,.011488,.625038,.117647,.287076,.010855,.627295,.121569,.293478,.010213,.62949,.12549,.299855,.009561,.631624,.129412,.30621,.008902,.633694,.133333,.312543,.008239,.6357,.137255,.318856,.007576,.63764,.141176,.32515,.006915,.639512,.145098,.331426,.006261,.641316,.14902,.337683,.005618,.643049,.152941,.343925,.004991,.64471,.156863,.35015,.004382,.646298,.160784,.356359,.003798,.64781,.164706,.362553,.003243,.649245,.168627,.368733,.002724,.650601,.172549,.374897,.002245,.651876,.176471,.381047,.001814,.653068,.180392,.387183,.001434,.654177,.184314,.393304,.001114,.655199,.188235,.399411,859e-6,.656133,.192157,.405503,678e-6,.656977,.196078,.41158,577e-6,.65773,.2,.417642,564e-6,.65839,.203922,.423689,646e-6,.658956,.207843,.429719,831e-6,.659425,.211765,.435734,.001127,.659797,.215686,.441732,.00154,.660069,.219608,.447714,.00208,.66024,.223529,.453677,.002755,.66031,.227451,.459623,.003574,.660277,.231373,.46555,.004545,.660139,.235294,.471457,.005678,.659897,.239216,.477344,.00698,.659549,.243137,.48321,.00846,.659095,.247059,.489055,.010127,.658534,.25098,.494877,.01199,.657865,.254902,.500678,.014055,.657088,.258824,.506454,.016333,.656202,.262745,.512206,.018833,.655209,.266667,.517933,.021563,.654109,.270588,.523633,.024532,.652901,.27451,.529306,.027747,.651586,.278431,.534952,.031217,.650165,.282353,.54057,.03495,.64864,.286275,.546157,.038954,.64701,.290196,.551715,.043136,.645277,.294118,.557243,.047331,.643443,.298039,.562738,.051545,.641509,.301961,.568201,.055778,.639477,.305882,.573632,.060028,.637349,.309804,.579029,.064296,.635126,.313725,.584391,.068579,.632812,.317647,.589719,.072878,.630408,.321569,.595011,.07719,.627917,.32549,.600266,.081516,.625342,.329412,.605485,.085854,.622686,.333333,.610667,.090204,.619951,.337255,.615812,.094564,.61714,.341176,.620919,.098934,.614257,.345098,.625987,.103312,.611305,.34902,.631017,.107699,.608287,.352941,.636008,.112092,.605205,.356863,.640959,.116492,.602065,.360784,.645872,.120898,.598867,.364706,.650746,.125309,.595617,.368627,.65558,.129725,.592317,.372549,.660374,.134144,.588971,.376471,.665129,.138566,.585582,.380392,.669845,.142992,.582154,.384314,.674522,.147419,.578688,.388235,.67916,.151848,.575189,.392157,.683758,.156278,.57166,.396078,.688318,.160709,.568103,.4,.69284,.165141,.564522,.403922,.697324,.169573,.560919,.407843,.701769,.174005,.557296,.411765,.706178,.178437,.553657,.415686,.710549,.182868,.550004,.419608,.714883,.187299,.546338,.423529,.719181,.191729,.542663,.427451,.723444,.196158,.538981,.431373,.72767,.200586,.535293,.435294,.731862,.205013,.531601,.439216,.736019,.209439,.527908,.443137,.740143,.213864,.524216,.447059,.744232,.218288,.520524,.45098,.748289,.222711,.516834,.454902,.752312,.227133,.513149,.458824,.756304,.231555,.509468,.462745,.760264,.235976,.505794,.466667,.764193,.240396,.502126,.470588,.76809,.244817,.498465,.47451,.771958,.249237,.494813,.478431,.775796,.253658,.491171,.482353,.779604,.258078,.487539,.486275,.783383,.2625,.483918,.490196,.787133,.266922,.480307,.494118,.790855,.271345,.476706,.498039,.794549,.27577,.473117,.501961,.798216,.280197,.469538,.505882,.801855,.284626,.465971,.509804,.805467,.289057,.462415,.513725,.809052,.293491,.45887,.517647,.812612,.297928,.455338,.521569,.816144,.302368,.451816,.52549,.819651,.306812,.448306,.529412,.823132,.311261,.444806,.533333,.826588,.315714,.441316,.537255,.830018,.320172,.437836,.541176,.833422,.324635,.434366,.545098,.836801,.329105,.430905,.54902,.840155,.33358,.427455,.552941,.843484,.338062,.424013,.556863,.846788,.342551,.420579,.560784,.850066,.347048,.417153,.564706,.853319,.351553,.413734,.568627,.856547,.356066,.410322,.572549,.85975,.360588,.406917,.576471,.862927,.365119,.403519,.580392,.866078,.36966,.400126,.584314,.869203,.374212,.396738,.588235,.872303,.378774,.393355,.592157,.875376,.383347,.389976,.596078,.878423,.387932,.3866,.6,.881443,.392529,.383229,.603922,.884436,.397139,.37986,.607843,.887402,.401762,.376494,.611765,.89034,.406398,.37313,.615686,.89325,.411048,.369768,.619608,.896131,.415712,.366407,.623529,.898984,.420392,.363047,.627451,.901807,.425087,.359688,.631373,.904601,.429797,.356329,.635294,.907365,.434524,.35297,.639216,.910098,.439268,.34961,.643137,.9128,.444029,.346251,.647059,.915471,.448807,.34289,.65098,.918109,.453603,.339529,.654902,.920714,.458417,.336166,.658824,.923287,.463251,.332801,.662745,.925825,.468103,.329435,.666667,.928329,.472975,.326067,.670588,.930798,.477867,.322697,.67451,.933232,.48278,.319325,.678431,.93563,.487712,.315952,.682353,.93799,.492667,.312575,.686275,.940313,.497642,.309197,.690196,.942598,.502639,.305816,.694118,.944844,.507658,.302433,.698039,.947051,.512699,.299049,.701961,.949217,.517763,.295662,.705882,.951344,.52285,.292275,.709804,.953428,.52796,.288883,.713725,.95547,.533093,.28549,.717647,.957469,.53825,.282096,.721569,.959424,.543431,.278701,.72549,.961336,.548636,.275305,.729412,.963203,.553865,.271909,.733333,.965024,.559118,.268513,.737255,.966798,.564396,.265118,.741176,.968526,.5697,.261721,.745098,.970205,.575028,.258325,.74902,.971835,.580382,.254931,.752941,.973416,.585761,.25154,.756863,.974947,.591165,.248151,.760784,.976428,.596595,.244767,.764706,.977856,.602051,.241387,.768627,.979233,.607532,.238013,.772549,.980556,.613039,.234646,.776471,.981826,.618572,.231287,.780392,.983041,.624131,.227937,.784314,.984199,.629718,.224595,.788235,.985301,.63533,.221265,.792157,.986345,.640969,.217948,.796078,.987332,.646633,.214648,.8,.98826,.652325,.211364,.803922,.989128,.658043,.2081,.807843,.989935,.663787,.204859,.811765,.990681,.669558,.201642,.815686,.991365,.675355,.198453,.819608,.991985,.681179,.195295,.823529,.992541,.68703,.19217,.827451,.993032,.692907,.189084,.831373,.993456,.69881,.186041,.835294,.993814,.704741,.183043,.839216,.994103,.710698,.180097,.843137,.994324,.716681,.177208,.847059,.994474,.722691,.174381,.85098,.994553,.728728,.171622,.854902,.994561,.734791,.168938,.858824,.994495,.74088,.166335,.862745,.994355,.746995,.163821,.866667,.994141,.753137,.161404,.870588,.993851,.759304,.159092,.87451,.993482,.765499,.156891,.878431,.993033,.77172,.154808,.882353,.992505,.777967,.152855,.886275,.991897,.784239,.151042,.890196,.991209,.790537,.149377,.894118,.990439,.796859,.14787,.898039,.989587,.803205,.146529,.901961,.988648,.809579,.145357,.905882,.987621,.815978,.144363,.909804,.986509,.822401,.143557,.913725,.985314,.828846,.142945,.917647,.984031,.835315,.142528,.921569,.982653,.841812,.142303,.92549,.98119,.848329,.142279,.929412,.979644,.854866,.142453,.933333,.977995,.861432,.142808,.937255,.976265,.868016,.143351,.941176,.974443,.874622,.144061,.945098,.97253,.88125,.144923,.94902,.970533,.887896,.145919,.952941,.968443,.894564,.147014,.956863,.966271,.901249,.14818,.960784,.964021,.90795,.14937,.964706,.961681,.914672,.15052,.968627,.959276,.921407,.151566,.972549,.956808,.928152,.152409,.976471,.954287,.934908,.152921,.980392,.951726,.941671,.152925,.984314,.949151,.948435,.152178,.988235,.946602,.95519,.150328,.992157,.944152,.961916,.146861,.996078,.941896,.96859,.140956,1,.940015,.975158,.131326]},{ColorSpace:"Diverging",Name:"Viridis (matplotlib)",NanColor:[1,0,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Eric Firing",RGBPoints:[0,.267004,.004874,.329415,.003922,.26851,.009605,.335427,.007843,.269944,.014625,.341379,.011765,.271305,.019942,.347269,.015686,.272594,.025563,.353093,.019608,.273809,.031497,.358853,.023529,.274952,.037752,.364543,.027451,.276022,.044167,.370164,.031373,.277018,.050344,.375715,.035294,.277941,.056324,.381191,.039216,.278791,.062145,.386592,.043137,.279566,.067836,.391917,.047059,.280267,.073417,.397163,.05098,.280894,.078907,.402329,.054902,.281446,.08432,.407414,.058824,.281924,.089666,.412415,.062745,.282327,.094955,.417331,.066667,.282656,.100196,.42216,.070588,.28291,.105393,.426902,.07451,.283091,.110553,.431554,.078431,.283197,.11568,.436115,.082353,.283229,.120777,.440584,.086275,.283187,.125848,.44496,.090196,.283072,.130895,.449241,.094118,.282884,.13592,.453427,.098039,.282623,.140926,.457517,.101961,.28229,.145912,.46151,.105882,.281887,.150881,.465405,.109804,.281412,.155834,.469201,.113725,.280868,.160771,.472899,.117647,.280255,.165693,.476498,.121569,.279574,.170599,.479997,.12549,.278826,.17549,.483397,.129412,.278012,.180367,.486697,.133333,.277134,.185228,.489898,.137255,.276194,.190074,.493001,.141176,.275191,.194905,.496005,.145098,.274128,.199721,.498911,.14902,.273006,.20452,.501721,.152941,.271828,.209303,.504434,.156863,.270595,.214069,.507052,.160784,.269308,.218818,.509577,.164706,.267968,.223549,.512008,.168627,.26658,.228262,.514349,.172549,.265145,.232956,.516599,.176471,.263663,.237631,.518762,.180392,.262138,.242286,.520837,.184314,.260571,.246922,.522828,.188235,.258965,.251537,.524736,.192157,.257322,.25613,.526563,.196078,.255645,.260703,.528312,.2,.253935,.265254,.529983,.203922,.252194,.269783,.531579,.207843,.250425,.27429,.533103,.211765,.248629,.278775,.534556,.215686,.246811,.283237,.535941,.219608,.244972,.287675,.53726,.223529,.243113,.292092,.538516,.227451,.241237,.296485,.539709,.231373,.239346,.300855,.540844,.235294,.237441,.305202,.541921,.239216,.235526,.309527,.542944,.243137,.233603,.313828,.543914,.247059,.231674,.318106,.544834,.25098,.229739,.322361,.545706,.254902,.227802,.326594,.546532,.258824,.225863,.330805,.547314,.262745,.223925,.334994,.548053,.266667,.221989,.339161,.548752,.270588,.220057,.343307,.549413,.27451,.21813,.347432,.550038,.278431,.21621,.351535,.550627,.282353,.214298,.355619,.551184,.286275,.212395,.359683,.55171,.290196,.210503,.363727,.552206,.294118,.208623,.367752,.552675,.298039,.206756,.371758,.553117,.301961,.204903,.375746,.553533,.305882,.203063,.379716,.553925,.309804,.201239,.38367,.554294,.313725,.19943,.387607,.554642,.317647,.197636,.391528,.554969,.321569,.19586,.395433,.555276,.32549,.1941,.399323,.555565,.329412,.192357,.403199,.555836,.333333,.190631,.407061,.556089,.337255,.188923,.41091,.556326,.341176,.187231,.414746,.556547,.345098,.185556,.41857,.556753,.34902,.183898,.422383,.556944,.352941,.182256,.426184,.55712,.356863,.180629,.429975,.557282,.360784,.179019,.433756,.55743,.364706,.177423,.437527,.557565,.368627,.175841,.44129,.557685,.372549,.174274,.445044,.557792,.376471,.172719,.448791,.557885,.380392,.171176,.45253,.557965,.384314,.169646,.456262,.55803,.388235,.168126,.459988,.558082,.392157,.166617,.463708,.558119,.396078,.165117,.467423,.558141,.4,.163625,.471133,.558148,.403922,.162142,.474838,.55814,.407843,.160665,.47854,.558115,.411765,.159194,.482237,.558073,.415686,.157729,.485932,.558013,.419608,.15627,.489624,.557936,.423529,.154815,.493313,.55784,.427451,.153364,.497,.557724,.431373,.151918,.500685,.557587,.435294,.150476,.504369,.55743,.439216,.149039,.508051,.55725,.443137,.147607,.511733,.557049,.447059,.14618,.515413,.556823,.45098,.144759,.519093,.556572,.454902,.143343,.522773,.556295,.458824,.141935,.526453,.555991,.462745,.140536,.530132,.555659,.466667,.139147,.533812,.555298,.470588,.13777,.537492,.554906,.47451,.136408,.541173,.554483,.478431,.135066,.544853,.554029,.482353,.133743,.548535,.553541,.486275,.132444,.552216,.553018,.490196,.131172,.555899,.552459,.494118,.129933,.559582,.551864,.498039,.128729,.563265,.551229,.501961,.127568,.566949,.550556,.505882,.126453,.570633,.549841,.509804,.125394,.574318,.549086,.513725,.124395,.578002,.548287,.517647,.123463,.581687,.547445,.521569,.122606,.585371,.546557,.52549,.121831,.589055,.545623,.529412,.121148,.592739,.544641,.533333,.120565,.596422,.543611,.537255,.120092,.600104,.54253,.541176,.119738,.603785,.5414,.545098,.119512,.607464,.540218,.54902,.119423,.611141,.538982,.552941,.119483,.614817,.537692,.556863,.119699,.61849,.536347,.560784,.120081,.622161,.534946,.564706,.120638,.625828,.533488,.568627,.12138,.629492,.531973,.572549,.122312,.633153,.530398,.576471,.123444,.636809,.528763,.580392,.12478,.640461,.527068,.584314,.126326,.644107,.525311,.588235,.128087,.647749,.523491,.592157,.130067,.651384,.521608,.596078,.132268,.655014,.519661,.6,.134692,.658636,.517649,.603922,.137339,.662252,.515571,.607843,.14021,.665859,.513427,.611765,.143303,.669459,.511215,.615686,.146616,.67305,.508936,.619608,.150148,.676631,.506589,.623529,.153894,.680203,.504172,.627451,.157851,.683765,.501686,.631373,.162016,.687316,.499129,.635294,.166383,.690856,.496502,.639216,.170948,.694384,.493803,.643137,.175707,.6979,.491033,.647059,.180653,.701402,.488189,.65098,.185783,.704891,.485273,.654902,.19109,.708366,.482284,.658824,.196571,.711827,.479221,.662745,.202219,.715272,.476084,.666667,.20803,.718701,.472873,.670588,.214,.722114,.469588,.67451,.220124,.725509,.466226,.678431,.226397,.728888,.462789,.682353,.232815,.732247,.459277,.686275,.239374,.735588,.455688,.690196,.24607,.73891,.452024,.694118,.252899,.742211,.448284,.698039,.259857,.745492,.444467,.701961,.266941,.748751,.440573,.705882,.274149,.751988,.436601,.709804,.281477,.755203,.432552,.713725,.288921,.758394,.428426,.717647,.296479,.761561,.424223,.721569,.304148,.764704,.419943,.72549,.311925,.767822,.415586,.729412,.319809,.770914,.411152,.733333,.327796,.77398,.40664,.737255,.335885,.777018,.402049,.741176,.344074,.780029,.397381,.745098,.35236,.783011,.392636,.74902,.360741,.785964,.387814,.752941,.369214,.788888,.382914,.756863,.377779,.791781,.377939,.760784,.386433,.794644,.372886,.764706,.395174,.797475,.367757,.768627,.404001,.800275,.362552,.772549,.412913,.803041,.357269,.776471,.421908,.805774,.35191,.780392,.430983,.808473,.346476,.784314,.440137,.811138,.340967,.788235,.449368,.813768,.335384,.792157,.458674,.816363,.329727,.796078,.468053,.818921,.323998,.8,.477504,.821444,.318195,.803922,.487026,.823929,.312321,.807843,.496615,.826376,.306377,.811765,.506271,.828786,.300362,.815686,.515992,.831158,.294279,.819608,.525776,.833491,.288127,.823529,.535621,.835785,.281908,.827451,.545524,.838039,.275626,.831373,.555484,.840254,.269281,.835294,.565498,.84243,.262877,.839216,.575563,.844566,.256415,.843137,.585678,.846661,.249897,.847059,.595839,.848717,.243329,.85098,.606045,.850733,.236712,.854902,.616293,.852709,.230052,.858824,.626579,.854645,.223353,.862745,.636902,.856542,.21662,.866667,.647257,.8584,.209861,.870588,.657642,.860219,.203082,.87451,.668054,.861999,.196293,.878431,.678489,.863742,.189503,.882353,.688944,.865448,.182725,.886275,.699415,.867117,.175971,.890196,.709898,.868751,.169257,.894118,.720391,.87035,.162603,.898039,.730889,.871916,.156029,.901961,.741388,.873449,.149561,.905882,.751884,.874951,.143228,.909804,.762373,.876424,.137064,.913725,.772852,.877868,.131109,.917647,.783315,.879285,.125405,.921569,.79376,.880678,.120005,.92549,.804182,.882046,.114965,.929412,.814576,.883393,.110347,.933333,.82494,.88472,.106217,.937255,.83527,.886029,.102646,.941176,.845561,.887322,.099702,.945098,.85581,.888601,.097452,.94902,.866013,.889868,.095953,.952941,.876168,.891125,.09525,.956863,.886271,.892374,.095374,.960784,.89632,.893616,.096335,.964706,.906311,.894855,.098125,.968627,.916242,.896091,.100717,.972549,.926106,.89733,.104071,.976471,.935904,.89857,.108131,.980392,.945636,.899815,.112838,.984314,.9553,.901065,.118128,.988235,.964894,.902323,.123941,.992157,.974417,.90359,.130215,.996078,.983868,.904867,.136897,1,.993248,.906157,.143936]},{ShowIndexedColorActiveValues:1,IndexedColors:[.07,.5,.7,1,1,1,.85,1,1,.8,.5,1,.76,1,0,1,.71,.71,.5,.5,.5,.05,.05,1,1,.05,.05,.7,1,1,.7,.89,.96,.67,.36,.95,.54,1,0,.75,.65,.65,.5,.6,.6,1,.5,0,1,1,.19,.12,.94,.12,.5,.82,.89,.56,.25,.83,.24,1,0,.9,.9,.9,.75,.76,.78,.65,.65,.67,.54,.6,.78,.61,.48,.78,.5,.48,.78,.44,.48,.78,.36,.48,.76,1,.48,.38,.49,.5,.69,.76,.56,.56,.4,.56,.56,.74,.5,.89,1,.63,0,.65,.16,.16,.36,.72,.82,.44,.18,.69,0,1,0,.58,1,1,.58,.88,.88,.45,.76,.79,.33,.71,.71,.23,.62,.62,.14,.56,.56,.04,.49,.55,0,.41,.52,.88,.88,1,1,.85,.56,.65,.46,.45,.4,.5,.5,.62,.39,.71,.83,.48,0,.58,0,.58,.26,.62,.69,.34,.09,.56,0,.79,0,.44,.83,1,1,1,.78,.85,1,.78,.78,1,.78,.64,1,.78,.56,1,.78,.38,1,.78,.27,1,.78,.19,1,.78,.12,1,.78,0,1,.61,0,.9,.46,0,.83,.32,0,.75,.22,0,.67,.14,.3,.76,1,.3,.65,1,.13,.58,.84,.15,.49,.67,.15,.4,.59,.09,.33,.53,.96,.93,.82,.8,.82,.12,.71,.71,.76,.65,.33,.3,.34,.35,.38,.62,.31,.71,.67,.36,0,.46,.31,.27,.26,.51,.59,.26,0,.4,0,.49,0,.44,.67,.98,0,.73,1,0,.63,1,0,.56,1,0,.5,1,0,.42,1,.33,.36,.95,.47,.36,.89,.54,.31,.89,.63,.21,.83,.7,.12,.83,.7,.12,.73,.7,.05,.65,.74,.05,.53,.78,0,.4,.8,0,.35,.82,0,.31,.85,0,.27,.88,0,.22,.9,0,.18,.91,0,.15,.92,0,.14,.93,0,.13,.94,0,.12,.95,0,.11,.96,0,.1,.97,0,.09,.98,0,.08,.99,0,.07,1,0,.06],Annotations:[0,"Xx",1,"H",2,"He",3,"Li",4,"Be",5,"B",6,"C",7,"N",8,"O",9,"F",10,"Ne",11,"Na",12,"Mg",13,"Al",14,"Si",15,"P",16,"S",17,"Cl",18,"Ar",19,"K",20,"Ca",21,"Sc",22,"Ti",23,"V",24,"Cr",25,"Mn",26,"Fe",27,"Co",28,"Ni",29,"Cu",30,"Zn",31,"Ga",32,"Ge",33,"As",34,"Se",35,"Br",36,"Kr",37,"Rb",38,"Sr",39,"Y",40,"Zr",41,"Nb",42,"Mo",43,"Tc",44,"Ru",45,"Rh",46,"Pd",47,"Ag",48,"Cd",49,"In",50,"Sn",51,"Sb",52,"Te",53,"I",54,"Xe",55,"Cs",56,"Ba",57,"La",58,"Ce",59,"Pr",60,"Nd",61,"Pm",62,"Sm",63,"Eu",64,"Gd",65,"Tb",66,"Dy",67,"Ho",68,"Er",69,"Tm",70,"Yb",71,"Lu",72,"Hf",73,"Ta",74,"W",75,"Re",76,"Os",77,"Ir",78,"Pt",79,"Au",80,"Hg",81,"Tl",82,"Pb",83,"Bi",84,"Po",85,"At",86,"Rn",87,"Fr",88,"Ra",89,"Ac",90,"Th",91,"Pa",92,"U",93,"Np",94,"Pu",95,"Am",96,"Cm",97,"Bk",98,"Cf",99,"Es",100,"Fm",101,"Md",102,"No",103,"Lr",104,"Rf",105,"Db",106,"Sg",107,"Bh",108,"Hs",109,"Mt",110,"Ds",111,"Rg",112,"Cn",113,"Uut",114,"Uuq",115,"Uup",116,"Uuh",117,"Uus",118,"Uuo"],Name:"BlueObeliskElements"}];const C8=Object.create(null);Qle.filter(n=>n.RGBPoints).filter(n=>n.ColorSpace!=="CIELAB").forEach(n=>{C8[n.Name]=n});const _8=Object.keys(C8);_8.sort();function eue(n){return C8[n]}function tue(n){!n.RGBPoints||n.ColorSpace==="CIELAB"||(C8[n.Name]||(_8.push(n.Name),_8.sort()),C8[n.Name]=n)}function nue(n){const e=_8.indexOf(n);e>-1&&_8.splice(e,1),delete C8[n]}var tv={addPreset:tue,removePresetByName:nue,getPresetByName:eue,rgbPresetNames:_8};function V$(n,e,o){return Math.abs(n-e)<=o}function rue(n,e,o=1e-5){if(n.length!==e.length)return!1;for(let i=0;i0&&typeof n[0]=="number"}function Qi(n,e,o=1e-5){return typeof n!=typeof e||n===null||e===null?!1:_L(n)&&_L(e)?V$(n,e,o):xL(n)&&xL(e)?rue(n,e,o):!1}const U$=n=>typeof n=="number"?-n:n!=null&&n.map?n.map(U$):!n,IE=n=>typeof n=="number"?Math.abs(n):n!=null&&n.map?n.map(IE):n,B$=(n,e,o=void 0)=>Qi(n,U$(e),o),iue=(n,e,o=void 0)=>Qi(IE(n),IE(e),o);function bs(n){return Array.isArray(n)?bs(n[0]):isFinite(n)&&!isNaN(n)}const $O=new Map;function oue(n){n.name=n.name||n.Name,$O.set(n.name,n)}function nv(n){return $O.get(n)}function G$(){return Array.from($O.keys())}function jO(n,e){const o=tv.rgbPresetNames.map(v=>tv.getPresetByName(v)),i=G$().map(v=>nv(v)),c=o.concat(i).find(v=>{const{RGBPoints:_}=v;if(_.length!==n.length)return!1;for(let T=0;T<_.length;T+=4)if(!Qi(_.slice(T+1,T+4),n.slice(T+1,T+4)))return!1;return!0});if(!c)return null;const g=[];if(Tl(e,"vtkVolume")){const v=e.getProperty().getScalarOpacity(0).getDataPointer();if(!v)return{name:c.Name};for(let _=0;_0)return c}return null}function KO(n){const e=n.getProperty().getScalarOpacity(0);if(!e)return 1;const o=e.getDataPointer();if(!o||o.length===0)return 1;let i=0;for(let l=1;li&&(i=o[l]);return i}const aue=Object.freeze(Object.defineProperty({__proto__:null,findMatchingColormap:jO,getColormap:nv,getColormapNames:G$,getMaxOpacity:KO,getThresholdValue:HO,registerColormap:oue,setColorMapTransferFunctionForVolumeActor:sue,updateOpacity:W$,updateThreshold:$$},Symbol.toStringTag,{value:"Module"}));function fm(n){if(!n)return;const e=n.getSize();for(let o=0;oe-o/4*Math.log((1-n)/n);function zv(n,e){const o=Math.abs(e-n)+1,i=(n+e+1)/2;return{windowWidth:o,windowCenter:i}}function Vd(n,e,o=j2.LINEAR){if(o===j2.LINEAR)return{lower:e-.5-(n-1)/2,upper:e-.5+(n-1)/2};if(o===j2.LINEAR_EXACT)return{lower:e-n/2,upper:e+n/2};if(o===j2.SAMPLED_SIGMOID){const i=OE(.01,e,n),l=OE(.99,e,n);return{lower:i,upper:l}}else throw new Error("Invalid VOI LUT function")}const lue=Object.freeze(Object.defineProperty({__proto__:null,toLowHighRange:Vd,toWindowLevel:zv},Symbol.toStringTag,{value:"Module"}));function qO(n,e=1024){const{windowWidth:o,windowCenter:i}=zv(n.lower,n.upper),c=Array.from({length:e},(v,_)=>(_+1)/(e+2)).flatMap(v=>[OE(v,i,o),v,v,v,.5,0]),g=wh.newInstance();return g.buildFunctionFromArray(d0.newInstance({values:c,numberOfComponents:6})),g}function qs(n,e){return n.worldToIndex(e).map(Math.round)}function H7(n,e){return n.worldToIndex(e)}function n9(n){const e=n.getSize(),o=[];for(let i=0;i{n.addRGBPoint(...o)}))}const uue=Object.freeze(Object.defineProperty({__proto__:null,getTransferFunctionNodes:n9,setTransferFunctionNodes:xC},Symbol.toStringTag,{value:"Module"})),{InterpolationType:$3,OpacityMode:cue}=FW,{vtkErrorMacro:dS}=At,K7=4;function fue(n,e){e.classHierarchy.push("vtkVolumeProperty"),n.getMTime=()=>{let l=e.mtime,c;for(let g=0;gc?l:c):e.componentData[g].colorChannels===3&&e.componentData[g].rGBTransferFunction&&(c=e.componentData[g].rGBTransferFunction.getMTime(),l=l>c?l:c),e.componentData[g].scalarOpacity&&(c=e.componentData[g].scalarOpacity.getMTime(),l=l>c?l:c),e.componentData[g].gradientOpacity&&(e.componentData[g].disableGradientOpacity||(c=e.componentData[g].gradientOpacity.getMTime(),l=l>c?l:c));return l},n.getColorChannels=l=>l<0||l>3?(dS("Bad index - must be between 0 and 3"),0):e.componentData[l].colorChannels,n.setGrayTransferFunction=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,g=!1;return e.componentData[l].grayTransferFunction!==c&&(e.componentData[l].grayTransferFunction=c,g=!0),e.componentData[l].colorChannels!==1&&(e.componentData[l].colorChannels=1,g=!0),g&&n.modified(),g},n.getGrayTransferFunction=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[l].grayTransferFunction===null&&(e.componentData[l].grayTransferFunction=Wg.newInstance(),e.componentData[l].grayTransferFunction.addPoint(0,0),e.componentData[l].grayTransferFunction.addPoint(1024,1),e.componentData[l].colorChannels!==1&&(e.componentData[l].colorChannels=1),n.modified()),e.componentData[l].grayTransferFunction},n.setRGBTransferFunction=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,g=!1;return e.componentData[l].rGBTransferFunction!==c&&(e.componentData[l].rGBTransferFunction=c,g=!0),e.componentData[l].colorChannels!==3&&(e.componentData[l].colorChannels=3,g=!0),g&&n.modified(),g},n.getRGBTransferFunction=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[l].rGBTransferFunction===null&&(e.componentData[l].rGBTransferFunction=wh.newInstance(),e.componentData[l].rGBTransferFunction.addRGBPoint(0,0,0,0),e.componentData[l].rGBTransferFunction.addRGBPoint(1024,1,1,1),e.componentData[l].colorChannels!==3&&(e.componentData[l].colorChannels=3),n.modified()),e.componentData[l].rGBTransferFunction},n.setScalarOpacity=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return e.componentData[l].scalarOpacity!==c?(e.componentData[l].scalarOpacity=c,n.modified(),!0):!1},n.getScalarOpacity=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[l].scalarOpacity===null&&(e.componentData[l].scalarOpacity=Wg.newInstance(),e.componentData[l].scalarOpacity.addPoint(0,1),e.componentData[l].scalarOpacity.addPoint(1024,1),n.modified()),e.componentData[l].scalarOpacity},n.setComponentWeight=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(l<0||l>=K7)return dS("Invalid index"),!1;const g=Math.min(1,Math.max(0,c));return e.componentData[l].componentWeight!==g?(e.componentData[l].componentWeight=g,n.modified(),!0):!1},n.getComponentWeight=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return l<0||l>=K7?(dS("Invalid index"),0):e.componentData[l].componentWeight},n.setInterpolationTypeToNearest=()=>n.setInterpolationType($3.NEAREST),n.setInterpolationTypeToLinear=()=>n.setInterpolationType($3.LINEAR),n.setInterpolationTypeToFastLinear=()=>n.setInterpolationType($3.FAST_LINEAR),n.getInterpolationTypeAsString=()=>At.enumToString($3,e.interpolationType),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(l=>{const c=At.capitalize(l);n[`set${c}`]=(g,v)=>e.componentData[g][`${l}`]!==v?(e.componentData[g][`${l}`]=v,n.modified(),!0):!1}),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(l=>{const c=At.capitalize(l);n[`get${c}`]=g=>e.componentData[g][`${l}`]})}const hue={colorMixPreset:null,independentComponents:!0,interpolationType:$3.FAST_LINEAR,shade:!1,ambient:.1,diffuse:.7,specular:.2,specularPower:10,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function due(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,hue,o),At.obj(n,e),!e.componentData){e.componentData=[];for(let i=0;in,n.makeProperty=pue.newInstance,n.getProperty=()=>(e.property===null&&(e.property=n.makeProperty()),e.property),n.getBounds=()=>{if(e.mapper===null)return e.bounds;const o=e.mapper.getBounds();if(!o||o.length!==6)return o;if(o[0]>o[1])return e.mapperBounds=o.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),o;const i=l=>l[0].map((c,g)=>l.map(v=>v[g]));if(!e.mapperBounds||!i([o,e.mapperBounds]).reduce((l,c)=>l&&c[0]===c[1],!0)||n.getMTime()>e.boundsMTime.getMTime()){mue("Recomputing bounds..."),e.mapperBounds=o.map(g=>g);const l=[];hs.getCorners(o,l),n.computeMatrix();const c=new Float64Array(16);po(c,e.matrix),l.forEach(g=>g0(g,g,c)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((g,v)=>v%2===0?l.reduce((_,T)=>_>T[v/2]?T[v/2]:_,g):l.reduce((_,T)=>_{let o=e.mtime;if(e.property!==null){const i=e.property.getMTime();o=i>o?i:o}return o},n.getRedrawMTime=()=>{let o=e.mtime;if(e.mapper!==null){let i=e.mapper.getMTime();o=i>o?i:o,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),i=e.mapper.getInput().getMTime(),o=i>o?i:o)}return o}}const kue={mapper:null,property:null,bounds:[1,-1,1,-1,1,-1]};function j$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kue,o),UO.extend(n,e,o),e.boundsMTime={},At.obj(e.boundsMTime),At.set(n,e,["property"]),At.setGet(n,e,["mapper"]),At.getArray(n,e,["bounds"],6),vue(n,e)}const yue=At.newInstance(j$,"vtkVolume");var wue={newInstance:yue,extend:j$};const{vtkErrorMacro:Cue}=At;class _ue{constructor(){this.segmentMapping={},this.segments=[null],this.faces=[]}addSegment(e){const o=e[0],i=e[e.length-1];if(o===i||e.length<2)return;const l=this.segmentMapping[o],c=this.segmentMapping[i];if(l!==void 0&&c!==void 0)if(Math.abs(l)===Math.abs(c)){const g=l0)for(let _=1;_0){const g=this.segments[l];for(let v=1;v0){const g=this.segments[c];for(let v=1;v{const l=o[0];if(!l){Cue("Invalid or missing input");return}const c=Sl.newInstance();c.shallowCopy(l);const g=new _ue,v=l.getLines().getData();let _=0;for(;_2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sue,o),At.obj(n,e),At.algo(n,e,1,1),xue(n,e)}const Tue=At.newInstance(z$,"vtkClosedPolyLineToSurfaceFilter");var Eue={newInstance:Tue,extend:z$};const{vtkErrorMacro:SL}=m1;function Due(n){const e=n.getPolys().getData(),o=n.getStrips().getData(),i={cellSize:0,cell:[],done:!1,polyIdx:0,stripIdx:0,remainingStripLength:0,next(){if(i.polyIdx{let l=o.getMTime();return e.cutFunction&&(l=Math.max(l,e.cutFunction.getMTime())),l};function i(l,c){const g=l.getPoints(),v=g.getData(),_=g.getNumberOfPoints(),T=[],P=[],I=[];(!e.cutScalars||e.cutScalars.length<_)&&(e.cutScalars=new Float32Array(_));let R=0,L=0;for(;R0;let ee=!0;for(let ce=1;ce0!==X){ee=!1;break}if(ee)continue;const ne=[];for(let ce=0;ce0;if(z[ge]>0===pe)continue;let Te=ce,Ve=ge,Pe=z[Ve]-z[Te];Pe<=0&&(Te=ge,Ve=ce,Pe*=-1);let je=0;Pe!==0&&(je=(e.cutValue-z[Te])/Pe);const Je=K.cell[Te],it=K.cell[Ve];U[0]=v[Je*3],U[1]=v[Je*3+1],U[2]=v[Je*3+2],j[0]=v[it*3],j[1]=v[it*3+1],j[2]=v[it*3+2];const Ge=[U[0]+je*(j[0]-U[0]),U[1]+je*(j[1]-U[1]),U[2]+je*(j[2]-U[2])];ne.push({pointEdge1:Je,pointEdge2:it,intersectedPoint:Ge,newPointID:-1})}for(let ce=0;ce2&&(I.push(le),ne.forEach(ce=>{I.push(ce.newPointID)}))}c.getPoints().setData(aC(g.getDataType(),T),3),P.length!==0&&c.getLines().setData(Uint16Array.from(P)),I.length!==0&&c.getPolys().setData(Uint16Array.from(I))}n.requestData=(l,c)=>{const g=l[0];if(!g){SL("Invalid or missing input");return}if(!e.cutFunction){SL("Missing cut function");return}const v=Sl.newInstance();i(g,v),c[0]=v}}const Oue={cutFunction:null,cutScalars:null,cutValue:0};function H$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Oue,o),_s(n,e),LI(n,e,1,1),s2(n,e,["cutFunction","cutValue"]),Iue(n,e)}const Mue=as(H$,"vtkCutter");var Pue={newInstance:Mue,extend:H$};const Rue=[2,0,1,2,2,3,2,4,5,2,6,7,2,0,2,2,1,3,2,4,6,2,5,7,2,0,4,2,1,5,2,2,6,2,3,7],Aue=[4,0,1,3,2,4,4,6,7,5,4,8,10,11,9,4,12,13,15,14,4,16,18,19,17,4,20,21,23,22];function Lue(n,e){e.classHierarchy.push("vtkCubeSource");function o(i,l){if(e.deleted)return;const c=Sl.newInstance();l[0]=c;const g=24,v=At.newTypedArray(e.pointType,g*3);c.getPoints().setData(v,3);const _=At.newTypedArray(e.pointType,g*3),T=d0.newInstance({name:"Normals",values:_,numberOfComponents:3});c.getPointData().setNormals(T);let P=2;e.generate3DTextureCoordinates===!0&&(P=3);const I=At.newTypedArray(e.pointType,g*P),R=d0.newInstance({name:"TextureCoordinates",values:I,numberOfComponents:P});c.getPointData().setTCoords(R);const L=[0,0,0],V=[0,0,0],U=[0,0];let j=0;L[0]=-e.xLength/2,V[0]=-1,V[1]=0,V[2]=0;for(let z=0;z<2;z++){L[1]=-e.yLength/2;for(let $=0;$<2;$++){U[1]=L[1]+.5,L[2]=-e.zLength/2;for(let K=0;K<2;K++)U[0]=(L[2]+.5)*(1-2*z),v[j*3]=L[0],v[j*3+1]=L[1],v[j*3+2]=L[2],_[j*3]=V[0],_[j*3+1]=V[1],_[j*3+2]=V[2],P===2?(I[j*P]=U[0],I[j*P+1]=U[1]):(I[j*P]=2*z-1,I[j*P+1]=2*$-1,I[j*P+2]=2*K-1),j++,L[2]+=e.zLength;L[1]+=e.yLength}L[0]+=e.xLength,V[0]+=2}L[1]=-e.yLength/2,V[1]=-1,V[0]=0,V[2]=0;for(let z=0;z<2;z++){L[0]=-e.xLength/2;for(let $=0;$<2;$++){U[0]=(L[0]+.5)*(2*z-1),L[2]=-e.zLength/2;for(let K=0;K<2;K++)U[1]=(L[2]+.5)*-1,v[j*3]=L[0],v[j*3+1]=L[1],v[j*3+2]=L[2],_[j*3]=V[0],_[j*3+1]=V[1],_[j*3+2]=V[2],P===2?(I[j*P]=U[0],I[j*P+1]=U[1]):(I[j*P]=2*$-1,I[j*P+1]=2*z-1,I[j*P+2]=2*K-1),j++,L[2]+=e.zLength;L[0]+=e.xLength}L[1]+=e.yLength,V[1]+=2}L[2]=-e.zLength/2,V[2]=-1,V[0]=0,V[1]=0;for(let z=0;z<2;z++){L[1]=-e.yLength/2;for(let $=0;$<2;$++){U[1]=L[1]+.5,L[0]=-e.xLength/2;for(let K=0;K<2;K++)U[0]=(L[0]+.5)*(2*z-1),v[j*3]=L[0],v[j*3+1]=L[1],v[j*3+2]=L[2],_[j*3]=V[0],_[j*3+1]=V[1],_[j*3+2]=V[2],P===2?(I[j*P]=U[0],I[j*P+1]=U[1]):(I[j*P]=2*K-1,I[j*P+1]=2*$-1,I[j*P+2]=2*z-1),j++,L[0]+=e.xLength;L[1]+=e.yLength}L[2]+=e.zLength,V[2]+=2}if(e.rotations&&M2.buildFromDegree().rotateX(e.rotations[0]).rotateY(e.rotations[1]).rotateZ(e.rotations[2]).apply(v).apply(_),e.center&&M2.buildFromRadian().translate(...e.center).apply(v),e.matrix){M2.buildFromRadian().setMatrix(e.matrix).apply(v);const z=[e.matrix[0],e.matrix[1],e.matrix[2],0,e.matrix[4],e.matrix[5],e.matrix[6],0,e.matrix[8],e.matrix[9],e.matrix[10],0,0,0,0,1];M2.buildFromRadian().setMatrix(z).apply(_)}e.generateFaces?c.getPolys().deepCopy(e._polys):c.getPolys().initialize(),e.generateLines?(c.getLines().deepCopy(e._lineCells),c.getPointData().setNormals(null)):c.getLines().initialize(),c.modified()}n.setBounds=function(){let i=[];if(Array.isArray(arguments.length<=0?void 0:arguments[0]))i=arguments.length<=0?void 0:arguments[0];else for(let l=0;l2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nue,o),At.obj(n,e),At.setGet(n,e,["xLength","yLength","zLength","generate3DTextureCoordinates","generateFaces","generateLines"]),At.setGetArray(n,e,["center","rotations"],3),At.setGetArray(n,e,["matrix"],16),e._polys=Gg.newInstance({values:Uint16Array.from(Aue)}),e._lineCells=Gg.newInstance({values:Uint16Array.from(Rue)}),At.moveToProtected(n,e,["polys","lineCells"]),At.algo(n,e,0,1),Lue(n,e)}const bue=At.newInstance(K$,"vtkCubeSource");var q$={newInstance:bue,extend:K$};const{vtkErrorMacro:TL}=At;function Fue(n,e){e.classHierarchy.push("vtkImageDataOutlineFilter");const o={...n};n.requestData=(i,l)=>{const c=i[0];if(!c||!c.isA("vtkImageData")){TL("Invalid or missing input");return}const g=c.getSpatialExtent();if(!g){TL("Unable to fetch spatial extents of input image.");return}e._cubeSource.setBounds(g),e._cubeSource.setMatrix(c.getIndexToWorld()),l[0]=e._cubeSource.getOutputData()},n.getMTime=()=>Math.max(o.getMTime(),e._cubeSource.getMTime()),n.setGenerateFaces=e._cubeSource.setGenerateFaces,n.setGenerateLines=e._cubeSource.setGenerateLines,n.getGenerateFaces=e._cubeSource.getGenerateFaces,n.getGenerateLines=e._cubeSource.getGenerateLines}const Vue={};function X$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vue,o),At.obj(n,e),At.algo(n,e,1,1),e._cubeSource=q$.newInstance(),At.moveToProtected(n,e,["cubeSource","tmpOut"]),Fue(n,e)}const Uue=At.newInstance(X$,"vtkImageDataOutlineFilter");var Bue={newInstance:Uue,extend:X$};let XO;function Gue(n,e){e.classHierarchy.push("vtkAbstractTransform","vtkHomogeneousTransform","vtkTransform"),n.transformPoint=(o,i)=>(g0(i,o,e.matrix),i),n.transformPoints=(o,i)=>{const l=new Float64Array(3),c=new Float64Array(3);for(let g=0;g{n.setPreMultiplyFlag(!0)},n.postMultiply=()=>{n.setPreMultiplyFlag(!1)},n.transformMatrix=(o,i)=>(e.preMultiplyFlag?Y0(i,e.matrix,o):Y0(i,o,e.matrix),i),n.transformMatrices=(o,i)=>{const l=new Float64Array(16),c=new Float64Array(16),g=e.preMultiplyFlag?()=>Y0(c,e.matrix,l):()=>Y0(c,l,e.matrix);for(let v=0;vXO({matrix:h0.invertMatrix(Array.from(e.matrix),[],4),preMultiplyFlag:e.preMultiplyFlag})}const Wue={preMultiplyFlag:!1,matrix:[...jI]};function Y$(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wue,o),At.obj(n,e),At.setGet(n,e,["preMultiplyFlag"]),At.setGetArray(n,e,["matrix"],16),Gue(n,e)}XO=At.newInstance(Y$,"vtkTransform");var $ue={newInstance:XO,extend:Y$},jue=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkImageResliceMapperVS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ + +// all variables that represent positions or directions have a suffix +// indicating the coordinate system they are in. The possible values are +// MC - Model coordinates +// WC - World coordinates +// VC - View coordinates +// DC - Display coordinates +// TC - Texture coordinates + +// frag position in VC +//VTK::PositionVC::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// camera and actor matrix values +//VTK::Camera::Dec + +void main() +{ + //VTK::PositionVC::Impl + + //VTK::TCoord::Impl + + //VTK::Picking::Impl +} +`,zue=`//VTK::System::Dec + +/*========================================================================= + + Program: Visualization Toolkit + Module: vtkImageResliceMapperFS.glsl + + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen + All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notice for more information. + +=========================================================================*/ +// Template for the gpu image mapper fragment shader + +// VC position of this fragment +//VTK::PositionVC::Dec + +// Texture coordinates +//VTK::TCoord::Dec + +// picking support +//VTK::Picking::Dec + +// handle coincident offsets +//VTK::Coincident::Dec + +//VTK::ZBuffer::Dec + +// the output of this shader +//VTK::Output::Dec + +void main() +{ + // VC position of this fragment. This should not branch/return/discard. + //VTK::PositionVC::Impl + + // Place any calls that require uniform flow (e.g. dFdx) here. + //VTK::UniformFlow::Impl + + // Set gl_FragDepth here (gl_FragCoord.z by default) + //VTK::Depth::Impl + + // Early depth peeling abort: + //VTK::DepthPeeling::PreColor + + //VTK::TCoord::Impl + + if (gl_FragData[0].a <= 0.0) + { + discard; + } + + //VTK::DepthPeeling::Impl + + //VTK::Picking::Impl + + // handle coincident offsets + //VTK::Coincident::Impl + + //VTK::ZBuffer::Impl + + //VTK::RenderPassFragmentShader::Impl +} +`;const{vtkErrorMacro:tg}=m1;function EL(n,e,o){return e.identity(o),n.reduce((i,l,c)=>c===0?l?e.copy(i,l):e.identity(i):l?e.multiply(i,i,l):i,o)}function Hue(n,e){e.classHierarchy.push("vtkOpenGLImageResliceMapper");function o(l){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(c=>l.unregisterGraphicsResourceUser(c,n))}n.buildPass=l=>{if(l){e.currentRenderPass=null,e._openGLImageSlice=n.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=n.getFirstAncestorOfType("vtkOpenGLRenderer");const c=e._openGLRenderer.getRenderable();e._openGLCamera=e._openGLRenderer.getViewNodeFor(c.getActiveCamera());const g=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),g&&!g.isDeleted()&&g!==e._openGLRenderWindow&&o(g),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},n.translucentPass=(l,c)=>{l&&(e.currentRenderPass=c,n.render())},n.zBufferPass=l=>{l&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,n.render(),e.renderDepth=!1)},n.opaqueZBufferPass=l=>n.zBufferPass(l),n.opaquePass=l=>{l&&n.render()},n.getCoincidentParameters=(l,c)=>e.renderable.getResolveCoincidentTopology()==yc.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,n.render=()=>{const l=e._openGLImageSlice.getRenderable(),c=e._openGLRenderer.getRenderable();n.renderPiece(c,l)},n.renderPiece=(l,c)=>{if(n.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),!e.currentInput){tg("No input!");return}n.updateResliceGeometry(),n.renderPieceStart(l,c),n.renderPieceDraw(l,c),n.renderPieceFinish(l,c),n.invokeEvent({type:"EndEvent"})},n.renderPieceStart=(l,c)=>{n.updateBufferObjects(l,c),c.getProperty().getInterpolationType()===Dg.NEAREST?(e.openGLTexture.setMinificationFilter(qi.NEAREST),e.openGLTexture.setMagnificationFilter(qi.NEAREST),e.colorTexture.setMinificationFilter(qi.NEAREST),e.colorTexture.setMagnificationFilter(qi.NEAREST),e.pwfTexture.setMinificationFilter(qi.NEAREST),e.pwfTexture.setMagnificationFilter(qi.NEAREST)):(e.openGLTexture.setMinificationFilter(qi.LINEAR),e.openGLTexture.setMagnificationFilter(qi.LINEAR),e.colorTexture.setMinificationFilter(qi.LINEAR),e.colorTexture.setMagnificationFilter(qi.LINEAR),e.pwfTexture.setMinificationFilter(qi.LINEAR),e.pwfTexture.setMagnificationFilter(qi.LINEAR)),e.lastBoundBO=null},n.renderPieceDraw=(l,c)=>{const g=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),n.updateShaders(e.tris,l,c),g.drawArrays(g.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},n.renderPieceFinish=(l,c)=>{},n.updateBufferObjects=(l,c)=>{n.getNeedToRebuildBufferObjects(l,c)&&n.buildBufferObjects(l,c)},n.getNeedToRebuildBufferObjects=(l,c)=>{var g,v,_;return e.VBOBuildTime.getMTime(){var ge,pe,we,Te;const g=e.currentInput;if(!g)return;const v=(ge=g.getPointData())==null?void 0:ge.getScalars();if(!v)return;const _=v.getNumberOfComponents();let T=OO(g,v);const P=e._openGLRenderWindow.getGraphicsResourceForObject(v),I=!((pe=P==null?void 0:P.oglObject)!=null&&pe.getHandle())||(P==null?void 0:P.hash)!==T,R=e.renderable.getUpdatedExtents(),L=!!R.length;if(I&&!L){e.openGLTexture=Cs.newInstance(),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.openGLTexture.resetFormatAndType();const Ve=g.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(Ve[0],Ve[1],Ve[2],v,!1,R),e._openGLRenderWindow.setGraphicsResourceForObject(v,e.openGLTexture,T),v!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(v,n),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,n)),e._scalars=v}else e.openGLTexture=P.oglObject;if(L){e.renderable.setUpdatedExtents([]);const Ve=g.getDimensions();e.openGLTexture.create3DFilterableFromDataArray(Ve[0],Ve[1],Ve[2],v,!1,R)}const V=c.getProperty(),U=V.getIndependentComponents(),j=U?_:1,z=U?2*j:1,$=V.getRGBTransferFunction();T=df($,U,j);const K=e._openGLRenderWindow.getGraphicsResourceForObject($);if(!((we=K==null?void 0:K.oglObject)!=null&&we.getHandle())||(K==null?void 0:K.hash)!==T){const Pe=1024*z*3,je=new Uint8ClampedArray(Pe);if(e.colorTexture=Cs.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),$){const Je=new Float32Array(3072);for(let it=0;it0){const Je=e.resliceGeom.getPointData().getNormals();Je?je.normals=Je:tg("Slab mode requested without normals")}e.tris.getCABO().createVBO(Pe,"polys",Au.SURFACE,je)}e.VBOBuildString=ce,e.VBOBuildTime.modified()},n.updateShaders=(l,c,g)=>{if(e.lastBoundBO=l,n.getNeedToRebuildShaders(l,c,g)){const v={Vertex:null,Fragment:null,Geometry:null};n.buildShaders(v,c,g);const _=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(v.Vertex,v.Fragment,v.Geometry);_!==l.getProgram()&&(l.setProgram(_),l.getVAO().releaseGraphicsResources()),l.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(l.getProgram());l.getVAO().bind(),n.setMapperShaderParameters(l,c,g),n.setCameraShaderParameters(l,c,g),n.setPropertyShaderParameters(l,c,g)},n.setMapperShaderParameters=(l,c,g)=>{const v=l.getProgram();if(l.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>l.getAttributeUpdateTime().getMTime()||l.getShaderSourceTime().getMTime()>l.getAttributeUpdateTime().getMTime())){v.isUniformUsed("texture1")&&v.setUniformi("texture1",e.openGLTexture.getTextureUnit()),v.isAttributeUsed("vertexWC")&&(l.getVAO().addAttributeArray(v,l.getCABO(),"vertexWC",l.getCABO().getVertexOffset(),l.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||tg("Error setting vertexWC in shader VAO.")),v.isAttributeUsed("normalWC")&&(l.getVAO().addAttributeArray(v,l.getCABO(),"normalWC",l.getCABO().getNormalOffset(),l.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||tg("Error setting normalWC in shader VAO.")),v.isUniformUsed("slabThickness")&&v.setUniformf("slabThickness",e.renderable.getSlabThickness()),v.isUniformUsed("spacing")&&v.setUniform3fv("spacing",e.currentInput.getSpacing()),v.isUniformUsed("slabType")&&v.setUniformi("slabType",e.renderable.getSlabType()),v.isUniformUsed("slabType")&&v.setUniformi("slabType",e.renderable.getSlabType()),v.isUniformUsed("slabTrapezoid")&&v.setUniformi("slabTrapezoid",e.renderable.getSlabTrapezoidIntegration());const T=l.getCABO().getCoordShiftAndScaleEnabled()?l.getCABO().getInverseShiftAndScaleMatrix():null;if(v.isUniformUsed("WCTCMatrix")){const P=e.currentInput,I=P.getDimensions();Ea(e.tmpMat4,P.getIndexToWorld()),Ns(e.tmpMat4,e.tmpMat4,[-.5,-.5,-.5]),hf(e.tmpMat4,e.tmpMat4,I),Ia(e.tmpMat4,e.tmpMat4),T&&Y0(e.tmpMat4,e.tmpMat4,T),v.setUniformMatrix("WCTCMatrix",e.tmpMat4)}v.isUniformUsed("vboScaling")&&v.setUniform3fv("vboScaling",l.getCABO().getCoordScale()??[1,1,1]),l.getAttributeUpdateTime().modified()}if(e.haveSeenDepthRequest&&l.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),l.getProgram().isUniformUsed("coffset")){const _=n.getCoincidentParameters(c,g);l.getProgram().setUniformf("coffset",_.offset),l.getProgram().isUniformUsed("cfactor")&&l.getProgram().setUniformf("cfactor",_.factor)}},n.setCameraShaderParameters=(l,c,g)=>{const v=e._openGLCamera.getKeyMatrices(c),_=e._openGLImageSlice.getKeyMatrices(),P=l.getCABO().getCoordShiftAndScaleEnabled()?l.getCABO().getInverseShiftAndScaleMatrix():null,I=l.getProgram();I.isUniformUsed("MCPCMatrix")&&(zi(e.tmpMat4),I.setUniformMatrix("MCPCMatrix",EL([v.wcpc,_.mcwc,P],Gw,e.tmpMat4))),I.isUniformUsed("MCVCMatrix")&&(zi(e.tmpMat4),I.setUniformMatrix("MCVCMatrix",EL([v.wcvc,_.mcwc,P],Gw,e.tmpMat4)))},n.setPropertyShaderParameters=(l,c,g)=>{const v=l.getProgram(),_=g.getProperty(),T=_.getOpacity();v.setUniformf("opacity",T);const P=e.openGLTexture.getComponents(),I=_.getIndependentComponents();if(I)for(let U=0;U{var L;const v=e.openGLTexture.getComponents(),_=g.getProperty().getIndependentComponents(),T=e.renderable.getSlabThickness(),P=e.renderable.getSlabType(),I=e.renderable.getSlabTrapezoidIntegration();let R=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(R=!0),R||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((L=l.getProgram())==null?void 0:L.getHandle())===0||e.lastTextureComponents!==v||e.lastIndependentComponents!==_||e.lastSlabThickness!==T||e.lastSlabType!==P||e.lastSlabTrapezoidIntegration!==I?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=v,e.lastIndependentComponents=_,e.lastSlabThickness=T,e.lastSlabType=P,e.lastSlabTrapezoidIntegration=I,!0):!1},n.getShaderTemplate=(l,c,g)=>{l.Vertex=jue,l.Fragment=zue,l.Geometry=""},n.replaceShaderValues=(l,c,g)=>{if(n.replaceShaderTCoord(l,c,g),n.replaceShaderPositionVC(l,c,g),e.haveSeenDepthRequest){let v=l.Fragment;v=zn.substitute(v,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,v=zn.substitute(v,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,l.Fragment=v}n.replaceShaderCoincidentOffset(l,c,g)},n.replaceShaderTCoord=(l,c,g)=>{let v=l.Vertex;const _=l.Geometry;let T=l.Fragment;const P=["uniform mat4 WCTCMatrix;","out vec3 fragTexCoord;"],I=e.renderable.getSlabThickness();v=zn.substitute(v,"//VTK::TCoord::Dec",P).result;const R=["fragTexCoord = (WCTCMatrix * vertexWC).xyz;"];v=zn.substitute(v,"//VTK::TCoord::Impl",R).result;const L=e.openGLTexture.getComponents(),V=g.getProperty().getIndependentComponents();let U=["in vec3 fragTexCoord;","uniform highp sampler3D texture1;","uniform mat4 WCTCMatrix;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;"];if(V){for(let z=1;z0&&(U=U.concat(["uniform vec3 spacing;","uniform float slabThickness;","uniform int slabType;","uniform int slabTrapezoid;","uniform vec3 vboScaling;"]),U=U.concat(["vec4 compositeValue(vec4 currVal, vec4 valToComp, int trapezoid)","{"," vec4 retVal = vec4(1.0);"," if (slabType == 0) // min"," {"," retVal = min(currVal, valToComp);"," }"," else if (slabType == 1) // max"," {"," retVal = max(currVal, valToComp);"," }"," else if (slabType == 3) // sum"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," else // mean"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," return retVal;","}"])),T=zn.substitute(T,"//VTK::TCoord::Dec",U).result;let j=["if (any(greaterThan(fragTexCoord, vec3(1.0))) || any(lessThan(fragTexCoord, vec3(0.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}","vec4 tvalue = texture(texture1, fragTexCoord);"];if(I>0&&(j=j.concat(["// Get the first and last samples","int numSlices = 1;","float scaling = min(min(spacing.x, spacing.y), spacing.z) * 0.5;","vec3 normalxspacing = scaling * normalWCVSOutput;","float distTraveled = length(normalxspacing);","int trapezoid = 0;","while (distTraveled < slabThickness * 0.5)","{"," distTraveled += length(normalxspacing);"," float fnumSlices = float(numSlices);"," if (distTraveled > slabThickness * 0.5)"," {"," // Before stepping outside the slab, sample at the boundaries"," normalxspacing = normalWCVSOutput * slabThickness * 0.5 / fnumSlices;"," trapezoid = slabTrapezoid;"," }"," vec3 fragTCoordNeg = (WCTCMatrix * vec4(vertexWCVSOutput.xyz - fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordNeg);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }"," vec3 fragTCoordPos = (WCTCMatrix * vec4(vertexWCVSOutput.xyz + fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordPos);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }","}","// Finally, if slab type is *mean*, divide the sum by the numSlices","if (slabType == 2)","{"," tvalue = tvalue / float(numSlices);","}"])),V){const z=["r","g","b","a"];for(let $=0;${let v=l.Vertex;const _=l.Geometry;let T=l.Fragment;const P=e.renderable.getSlabThickness();let I=["attribute vec4 vertexWC;"];I=I.concat([`//${n.getMTime()}${e.resliceGeomUpdateString}`]),P>0&&(I=I.concat(["attribute vec3 normalWC;","varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),v=zn.substitute(v,"//VTK::PositionVC::Dec",I).result;let R=["gl_Position = MCPCMatrix * vertexWC;"];P>0&&(R=R.concat(["normalWCVSOutput = normalWC;","vertexWCVSOutput = vertexWC;"])),v=zn.substitute(v,"//VTK::PositionVC::Impl",R).result,v=zn.substitute(v,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result;let L=[];P>0&&(L=L.concat(["varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),T=zn.substitute(T,"//VTK::PositionVC::Dec",L).result,l.Vertex=v,l.Geometry=_,l.Fragment=T};function i(l){h0.normalize(l);const c=[0,0,0];for(let g=0;g<3;++g){die(c),c[g]=1;const v=h0.dot(l,c);if(v<-.999999||v>.999999)return[!0,g]}return[!1,2]}n.updateResliceGeometry=()=>{var I;let l="";const c=e.currentInput,g=c==null?void 0:c.getBounds();let v=!0,_=2;const T=e.renderable.getSlicePolyData(),P=e.renderable.getSlicePlane();if(T)l=l.concat(`PolyData${T.getMTime()}`);else if(P){l=l.concat(`Plane${P.getMTime()}`);const R=QI();c&&(l=l.concat(`Image${c.getMTime()}`),qB(R,...c.getDirection()),Uv(R,R));const L=[...P.getNormal()];V7(L,L,R),[v,_]=i(L)}else{const R=h1.newInstance();R.setNormal(0,0,1);let L=[0,1,0,1,0,1];c&&(L=g),R.setOrigin(L[0],L[2],.5*(L[5]+L[4])),e.renderable.setSlicePlane(R),l=l.concat(`Plane${P==null?void 0:P.getMTime()}`),c&&(l=l.concat(`Image${c.getMTime()}`))}if(!e.resliceGeom||e.resliceGeomUpdateString!==l){if(T)e.resliceGeom||(e.resliceGeom=Sl.newInstance()),e.resliceGeom.getPoints().setData(T.getPoints().getData(),3),e.resliceGeom.getPolys().setData(T.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(T.getPointData().getNormals());else if(P)if(v){const R=new Float32Array(12),L=c.worldToIndex(P.getOrigin(),[0,0,0]),V=[(_+1)%3,(_+2)%3].sort(),U=c.getSpatialExtent();let j=0;for(let ee=0;ee<2;++ee)for(let ne=0;ne<2;++ne)R[j+_]=L[_],R[j+V[0]]=U[2*V[0]+ne],R[j+V[1]]=U[2*V[1]+ee],j+=3;e.transform.setMatrix(c.getIndexToWorld()),e.transform.transformPoints(R,R);const z=new Uint16Array(8);z[0]=3,z[1]=0,z[2]=1,z[3]=3,z[4]=3,z[5]=0,z[6]=3,z[7]=2;const $=P.getNormal();h0.normalize($);const K=new Float32Array(12);for(let ee=0;ee<4;++ee)K[3*ee]=$[0],K[3*ee+1]=$[1],K[3*ee+2]=$[2];e.resliceGeom||(e.resliceGeom=Sl.newInstance()),e.resliceGeom.getPoints().setData(R,3),e.resliceGeom.getPolys().setData(z,1);const X=d0.newInstance({numberOfComponents:3,values:K,name:"Normals"});e.resliceGeom.getPointData().setNormals(X)}else{e.outlineFilter.setInputData(c),e.cutter.setInputConnection(e.outlineFilter.getOutputPort()),e.cutter.setCutFunction(P),e.lineToSurfaceFilter.setInputConnection(e.cutter.getOutputPort()),e.lineToSurfaceFilter.update(),e.resliceGeom||(e.resliceGeom=Sl.newInstance());const R=e.lineToSurfaceFilter.getOutputData();e.resliceGeom.getPoints().setData(R.getPoints().getData(),3),e.resliceGeom.getPolys().setData(R.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(R.getPointData().getNormals());const L=P.getNormal(),V=e.resliceGeom.getNumberOfPoints();h0.normalize(L);const U=new Float32Array(V*3);for(let z=0;z{l&&(e.openGLTexture=l,e._externalOpenGLTexture=!0)},n.delete=Nv(()=>{e._openGLRenderWindow&&o(e._openGLRenderWindow)},n.delete)}const Kue={VBOBuildTime:{},VBOBuildString:null,haveSeenDepthRequest:!1,lastHaveSeenDepthRequest:!1,lastIndependentComponents:!1,lastTextureComponents:0,lastSlabThickness:0,lastSlabTrapezoidIntegration:0,lastSlabType:-1,openGLTexture:null,colorTextureString:null,pwfTextureString:null,resliceGeom:null,resliceGeomUpdateString:null,tris:null,colorTexture:null,pwfTexture:null,_externalOpenGLTexture:!1};function que(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Kue,o),Ha.extend(n,e,o),qd.implementReplaceShaderCoincidentOffset(n,e,o),qd.implementBuildShadersWithReplacements(n,e,o),e.tris=a4.newInstance(),e.openGLTexture=null,e.colorTexture=null,e.pwfTexture=null,e.VBOBuildTime={},_s(e.VBOBuildTime),e.tmpMat4=zi(new Float64Array(16)),e.outlineFilter=Bue.newInstance(),e.outlineFilter.setGenerateFaces(!0),e.outlineFilter.setGenerateLines(!1),e.cubePolyData=Sl.newInstance(),e.cutter=Pue.newInstance(),e.lineToSurfaceFilter=Eue.newInstance(),e.transform=$ue.newInstance(),el(n,e,["openGLTexture"]),Hue(n,e)}const Xue=as(que,"vtkOpenGLImageResliceMapper");R2("vtkImageResliceMapper",Xue);const J$=Object.create(null);function H8(n,e){J$[n]=e}function Yue(n,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const Jue={};function Zue(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jue,o),e.overrides=J$,JI.extend(n,e,o),Yue(n,e)}At.newInstance(Zue,"vtkWebGPUViewNodeFactory");function Que(n,e){e.classHierarchy.push("vtkWebGPUCamera"),n.getProjectionMatrix=(o,i,l,c)=>{if(zi(o),e.renderable.getParallelProjection()){const g=e.renderable.getParallelScale(),v=g*i,_=g,T=(c[0]-1)*v,P=(c[0]+1)*v,I=(c[1]-1)*_,R=(c[1]+1)*_,L=1/(P-T),V=1/(R-I);o[0]=2*L,o[5]=2*V,o[10]=1/(l[1]-l[0]),o[12]=(P+T)*L,o[13]=(R+I)*V,o[14]=l[1]/(l[1]-l[0])}else{const g=Math.tan(Math.PI*e.renderable.getViewAngle()/360);let v,_;e.renderable.getUseHorizontalViewAngle()===!0?(v=l[0]*g,_=l[0]*g/i):(v=l[0]*g*i,_=l[0]*g);const T=(c[0]-1)*v,P=(c[0]+1)*v,I=(c[1]-1)*_,R=(c[1]+1)*_;o[0]=2*l[0]/(P-T),o[5]=2*l[0]/(R-I),o[12]=(T+P)/(P-T),o[13]=(I+R)/(R-I),o[10]=0,o[14]=l[0],o[11]=-1,o[15]=0}},n.convertToOpenGLDepth=o=>{if(e.renderable.getParallelProjection())return 1-o;const i=e.renderable.getClippingRangeByReference();let l=-i[0]/o;return l=(i[0]+i[1])/(i[1]-i[0])+2*i[0]*i[1]/(l*(i[1]-i[0])),.5*l+.5},n.getKeyMatrices=o=>{const i=o.getRenderable(),l=o.getParent();if(Math.max(l.getMTime(),n.getMTime(),i.getMTime(),e.renderable.getMTime(),o.getStabilizedTime())>e.keyMatrixTime.getMTime()){const c=e.renderable.getViewMatrix();Ea(e.keyMatrices.normalMatrix,c),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,Ia(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),po(e.keyMatrices.wcvc,c);const g=o.getStabilizedCenterByReference();Ns(e.keyMatrices.scvc,e.keyMatrices.wcvc,g);const v=o.getAspectRatio(),_=e.renderable.getClippingRangeByReference();n.getProjectionMatrix(e.keyMatrices.vcpc,v,_,e.renderable.getWindowCenterByReference()),Y0(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),Ia(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const ece={keyMatrixTime:null,keyMatrices:null};function tce(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ece,o),Ha.extend(n,e,o),e.keyMatrixTime={},At.obj(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(16),vcpc:new Float64Array(16),pcsc:new Float64Array(16),wcvc:new Float64Array(16),scpc:new Float64Array(16),scvc:new Float64Array(16)},At.setGet(n,e,["keyMatrixTime"]),Que(n,e)}const nce=At.newInstance(tce);H8("vtkCamera",nce);function rce(n,e){e.classHierarchy.push("vtkWebGPUBindGroup"),n.setBindables=o=>{if(e.bindables.length===o.length){let i=!0;for(let l=0;l{const i=[];for(let l=0;l{let i=n.getMTime();for(let c=0;ci?g:i}if(i{const i=[],l=o.getBindGroupLayoutCount(e.label);for(let c=0;c2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ice,o),At.obj(n,e),e.bindables=[],e.bindGroupTime={},At.obj(e.bindGroupTime,{mtime:0}),At.get(n,e,["bindGroupTime","handle","sizeInBytes","usage"]),At.setGet(n,e,["label","device","arrayInformation"]),rce(n,e)}const oce=At.newInstance(Z$);var Q$={newInstance:oce,extend:Z$};function sce(n,e){e.classHierarchy.push("vtkWebGPUShaderModule"),n.initialize=(o,i)=>{e.device=o,e.handle=e.device.getHandle().createShaderModule({code:i.getCode()})}}const ace={device:null,handle:null};function ej(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ace,o),At.obj(n,e),At.get(n,e,["lastCameraMTime"]),At.setGet(n,e,["device","handle"]),sce(n,e)}const lce=At.newInstance(ej,"vtkWebGPUShaderModule");var uce={newInstance:lce,extend:ej};function cce(n,e,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const l=Array.isArray(o)?o.join(` +`):o;let c=!1;n.search(e)!==-1&&(c=!0);let g="";i&&(g="g");const v=new RegExp(e,g),_=n.replace(v,l);return{replace:c,result:_}}function fce(n,e){e.classHierarchy.push("vtkWebGPUShaderCache"),n.getShaderModule=o=>{const i=o.getType(),l=o.getHash(),c=e._shaderModules.keys();for(let v=0;v2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hce,o),e._shaderModules=new Map,At.obj(n,e),At.setGet(n,e,["device","window"]),fce(n,e)}const dce=At.newInstance(tj,"vtkWebGPUShaderCache");var Jl={newInstance:dce,extend:tj,substitute:cce};function gce(n,e){e.classHierarchy.push("vtkWebGPUPipeline"),n.getShaderDescriptions=()=>e.shaderDescriptions,n.initialize=(o,i)=>{e.pipelineDescription=e.renderEncoder.getPipelineSettings(),e.pipelineDescription.primitive.topology=e.topology,e.pipelineDescription.vertex=e.vertexState,e.pipelineDescription.label=i;const l=[];for(let c=0;c{for(let i=0;i{o&&e.layouts.push({layout:o.getBindGroupLayout(e.device),label:o.getLabel()})},n.getBindGroupLayout=o=>e.layouts[o].layout,n.getBindGroupLayoutCount=o=>{for(let i=0;i{i.bindBuffers(o)}}const pce={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function nj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pce,o),_s(n,e),e.layouts=[],e.shaderDescriptions=[],el(n,e,["handle","pipelineDescription"]),s2(n,e,["device","renderEncoder","topology","vertexState"]),gce(n,e)}const mce=as(nj,"vtkWebGPUPipeline");var vce={newInstance:mce,extend:nj};function kce(n,e){e.classHierarchy.push("vtkWebGPUShaderDescription"),n.hasOutput=o=>e.outputNames.includes(o),n.addOutput=function(o,i){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;e.outputTypes.push(o),e.outputNames.push(i),e.outputInterpolations.push(l)},n.addBuiltinOutput=(o,i)=>{e.builtinOutputTypes.push(o),e.builtinOutputNames.push(i)},n.addBuiltinInput=(o,i)=>{e.builtinInputTypes.push(o),e.builtinInputNames.push(i)},n.replaceShaderCode=(o,i)=>{const l=[];let c=[];if(i&&l.push(i.getShaderCode()),o||e.builtinInputNames.length){const g=[];if(g.push(`struct ${e.type}Input +{`),o){const v=o.getOutputNamesByReference(),_=o.getOutputTypesByReference(),T=o.getOutputInterpolationsByReference();for(let P=0;P1&&(g.push("};"),c=g,l[l.length-1]+=",",l.push(`input: ${e.type}Input`))}if(l.length&&(e.code=Jl.substitute(e.code,"//VTK::IOStructs::Input",l).result),e.outputNames.length+e.builtinOutputNames.length){const g=[`struct ${e.type}Output +{`];for(let v=0;v ${e.type}Output`]).result}e.code=Jl.substitute(e.code,"//VTK::IOStructs::Dec",c).result}}const yce={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function rj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yce,o),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],At.obj(n,e),At.setGet(n,e,["type","hash","code"]),At.getArray(n,e,["outputTypes","outputNames","outputInterpolations"]),kce(n,e)}const wce=At.newInstance(rj,"vtkWebGPUShaderDescription");var DL={newInstance:wce,extend:rj};const IL={r8unorm:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"float"},r8snorm:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"float"},r8uint:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},r8sint:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"sint"},r16uint:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"uint"},r16sint:{numComponents:1,nativeType:Int16Array,stride:2,elementSize:2,sampleType:"sint"},r16float:{numComponents:1,nativeType:Float32Array,stride:2,elementSize:2,sampleType:"float"},rg8unorm:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"float"},rg8snorm:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"float"},rg8uint:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"uint"},rg8sint:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"sint"},r32uint:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:4,sampleType:"uint"},r32sint:{numComponents:1,nativeType:Int32Array,stride:4,elementSize:4,sampleType:"sint"},r32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"unfilterable-float"},rg16uint:{numComponents:2,nativeType:Uint16Array,stride:4,elementSize:2,sampleType:"uint"},rg16sint:{numComponents:2,nativeType:Int16Array,stride:4,elementSize:2,sampleType:"sint"},rg16float:{numComponents:2,nativeType:Float32Array,stride:4,elementSize:2,sampleType:"float"},rgba8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"rgba8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgba8snorm:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"float"},rgba8uint:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"uint"},rgba8sint:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"sint"},bgra8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"bgra8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgb9e5ufloat:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rgb10a2unorm:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rg11b10ufloat:{numComponents:4,nativeType:Float32Array,stride:4,sampleType:"float"},rg32uint:{numComponents:2,nativeType:Uint32Array,stride:8,elementSize:4,sampleType:"uint"},rg32sint:{numComponents:2,nativeType:Int32Array,stride:8,elementSize:4,sampleType:"sint"},rg32float:{numComponents:2,nativeType:Float32Array,stride:8,elementSize:4,sampleType:"unfilterable-float"},rgba16uint:{numComponents:4,nativeType:Uint16Array,stride:8,elementSize:2,sampleType:"uint"},rgba16sint:{numComponents:4,nativeType:Int16Array,stride:8,elementSize:2,sampleType:"sint"},rgba16float:{numComponents:4,nativeType:Float32Array,stride:8,elementSize:2,sampleType:"float"},rgba32uint:{numComponents:4,nativeType:Uint32Array,stride:16,elementSize:4,sampleType:"uint"},rgba32sint:{numComponents:4,nativeType:Int32Array,stride:16,elementSize:4,sampleType:"sint"},rgba32float:{numComponents:4,nativeType:Float32Array,stride:16,elementSize:4,sampleType:"unfilterable-float"},stencil8:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},depth16unorm:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"depth"},depth24plus:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:3,sampleType:"depth"},"depth24plus-stencil8":{numComponents:2,nativeType:Uint32Array,stride:4,sampleType:"mixed"},depth32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"depth"}};function Cce(n){return!n||n.length<6?0:n in IL?IL[n]:(X0(`unknown format ${n}`),null)}function _ce(n){if(!n||n.length<5)return 0;let e=1;n[n.length-2]==="x"&&(e=Number(n[n.length-1]));const o=e===1?n.length-1:n.length-3,i=Number(n[o]);if(Number.isNaN(i))return X0(`unknown format ${n}`),0;const l=5-i/2;return e*l}function xce(n){if(!n||n.length<5)return 0;let e=1;return n[n.length-2]==="x"&&(e=Number(n[n.length-1])),e}function Sce(n){if(!n||n.length<5)return 0;let e;if(n[0]==="f")e="Float";else if(n[0]==="s")e="Int";else if(n[0]==="u")e="Uint";else{X0(`unknown format ${n}`);return}const o=n.split("x")[0],i=Number(o[o.length-1]);if(Number.isNaN(i)){X0(`unknown format ${n}`);return}return e+=8*(5-i/2),e+="Array",e}function Tce(n){let e;if(n[0]==="f"||n[1]==="n")e="f32";else if(n[0]==="s"&&n[1]==="i")e="i32";else if(n[0]==="u"&&n[1]==="i")e="u32";else{X0(`unknown format ${n}`);return}let o=1;return n[n.length-2]==="x"&&(o=Number(n[n.length-1])),o===4?`vec4<${e}>`:o===3?`vec3<${e}>`:o===2?`vec2<${e}>`:e}function Ece(n){if(!n)return 0;let e=1;return n.substring(0,3)==="vec"?e=Number(n[3]):n.substring(0,3)==="mat"&&(e=n[3]*n[5]),e*4}function Dce(n){if(n){if(n.includes("f32"))return"Float32Array";if(n.includes("i32"))return"Int32Array";if(n.includes("u32"))return"Uint32Array";X0(`unknown format ${n}`)}}var Qc={getDetailsFromTextureFormat:Cce,getByteStrideFromBufferFormat:_ce,getNumberOfComponentsFromBufferFormat:xce,getNativeTypeFromBufferFormat:Sce,getShaderTypeFromBufferFormat:Tce,getByteStrideFromShaderFormat:Ece,getNativeTypeFromShaderFormat:Dce};function Ice(n,e){if(n===e)return!0;if(n==null||e==null||n.length!==e.length)return!1;for(let o=0;o2&&arguments[2]!==void 0?arguments[2]:"vertex",c=i;Array.isArray(c)||(c=[c]);for(let g=0;gg.names[0]v.names[0]?1:0)},n.removeBufferIfPresent=o=>{for(let i=0;i{for(let i=0;i{for(let i=0;i{for(let i=0;i{let o="",i=0;for(let l=0;l0&&(o+=`, +`),o=`${o} @location(${i}) ${e.inputs[l].names[c]} : ${v}`,i++}return o},n.getVertexInputInformation=()=>{const o={};if(e.inputs.length){const i=[];let l=0;for(let c=0;c{for(let i=0;i{},n.releaseGraphicsResources=()=>{e.created&&(e.inputs=[],e.bindingDescriptions=[],e.attributeDescriptions=[])}}const Mce={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function ij(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Mce,o),_s(n,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],s2(n,e,["created","device","handle","indexBuffer"]),Oce(n,e)}const Pce=as(ij,"vtkWebGPUVertexInput");var Rce={newInstance:Pce,extend:ij};const Ace=` +//VTK::Renderer::Dec + +//VTK::Color::Dec + +//VTK::Normal::Dec + +//VTK::TCoord::Dec + +//VTK::Select::Dec + +//VTK::Mapper::Dec + +//VTK::IOStructs::Dec + +@vertex +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output : vertexOutput; + + // var vertex: vec4 = vertexBC; + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::TCoord::Impl + + //VTK::Select::Impl + + //VTK::Position::Impl + + return output; +} +`,Lce=` +//VTK::Renderer::Dec + +//VTK::Color::Dec + +//VTK::Normal::Dec + +//VTK::TCoord::Dec + +//VTK::Select::Dec + +//VTK::RenderEncoder::Dec + +//VTK::Mapper::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output : fragmentOutput; + + //VTK::Color::Impl + + //VTK::Normal::Impl + + //VTK::Light::Impl + + //VTK::TCoord::Impl + + //VTK::Select::Impl + + // var computedColor:vec4 = vec4(1.0,0.5,0.5,1.0); + + //VTK::RenderEncoder::Impl + return output; +} +`;function Nce(n,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),n.generateShaderDescriptions=(o,i,l)=>{const c=DL.newInstance({type:"vertex",hash:o,code:e.vertexShaderTemplate}),g=DL.newInstance({type:"fragment",hash:o,code:e.fragmentShaderTemplate}),v=i.getShaderDescriptions();v.push(c),v.push(g);const _=e.vertexShaderTemplate+e.fragmentShaderTemplate,T=new RegExp("//VTK::[^:]*::","g"),I=_.match(T).filter((R,L,V)=>V.indexOf(R)===L).map(R=>`replaceShader${R.substring(7,R.length-2)}`);for(let R=0;R{const c=i.getShaderDescription("vertex");c.replaceShaderCode(null,l),i.getShaderDescription("fragment").replaceShaderCode(c)},n.replaceShaderRenderEncoder=(o,i,l)=>{e.renderEncoder.replaceShaderCode(i)},e.shaderReplacements.set("replaceShaderRenderEncoder",n.replaceShaderRenderEncoder),n.replaceShaderRenderer=(o,i,l)=>{if(!e.WebGPURenderer)return;const c=e.WebGPURenderer.getBindGroup().getShaderCode(i),g=i.getShaderDescription("vertex");let v=g.getCode();v=Jl.substitute(v,"//VTK::Renderer::Dec",[c]).result,g.setCode(v);const _=i.getShaderDescription("fragment");v=_.getCode(),v=Jl.substitute(v,"//VTK::Renderer::Dec",[c]).result,_.setCode(v)},e.shaderReplacements.set("replaceShaderRenderer",n.replaceShaderRenderer),n.replaceShaderMapper=(o,i,l)=>{const c=e.bindGroup.getShaderCode(i),g=i.getShaderDescription("vertex");let v=g.getCode();v=Jl.substitute(v,"//VTK::Mapper::Dec",[c]).result,g.setCode(v);const _=i.getShaderDescription("fragment");_.addBuiltinInput("bool","@builtin(front_facing) frontFacing"),v=_.getCode(),v=Jl.substitute(v,"//VTK::Mapper::Dec",[c]).result,_.setCode(v)},e.shaderReplacements.set("replaceShaderMapper",n.replaceShaderMapper),n.replaceShaderPosition=(o,i,l)=>{const c=i.getShaderDescription("vertex");c.addBuiltinOutput("vec4","@builtin(position) Position");let g=c.getCode();g=Jl.substitute(g,"//VTK::Position::Impl",[" output.Position = rendererUBO.SCPCMatrix*vertexBC;"]).result,c.setCode(g)},e.shaderReplacements.set("replaceShaderPosition",n.replaceShaderPosition),n.replaceShaderTCoord=(o,i,l)=>{i.getShaderDescription("vertex").addOutput("vec2","tcoordVS")},e.shaderReplacements.set("replaceShaderTCoord",n.replaceShaderTCoord),n.addTextureView=o=>{e.textureViews.includes(o)||e.textureViews.push(o)},n.prepareToDraw=o=>{e.renderEncoder=o,n.updateInput(),n.updateBuffers(),n.updateBindings(),n.updatePipeline()},n.updateInput=()=>{},n.updateBuffers=()=>{},n.updateBindings=()=>{e.bindGroup.setBindables(n.getBindables())},n.computePipelineHash=()=>{},n.registerDrawCallback=o=>{o.registerDrawCallback(e.pipeline,n.draw)},n.prepareAndDraw=o=>{n.prepareToDraw(o),o.setPipeline(e.pipeline),n.draw(o)},n.draw=o=>{const i=o.getBoundPipeline();o.activateBindGroup(e.bindGroup),e.WebGPURenderer&&e.WebGPURenderer.bindUBO(o),i.bindVertexInput(o,e.vertexInput);const l=e.vertexInput.getIndexBuffer();l?o.drawIndexed(l.getIndexCount(),e.numberOfInstances,0,0,0):o.draw(e.numberOfVertices,e.numberOfInstances,0,0)},n.getBindables=()=>{const o=[...e.additionalBindables];e.UBO&&o.push(e.UBO),e.SSBO&&o.push(e.SSBO);for(let i=0;i{n.computePipelineHash(),e.pipeline=e.device.getPipeline(e.pipelineHash),e.pipeline||(e.pipeline=vce.newInstance(),e.pipeline.setDevice(e.device),e.WebGPURenderer&&e.pipeline.addBindGroupLayout(e.WebGPURenderer.getBindGroup()),e.pipeline.addBindGroupLayout(e.bindGroup),n.generateShaderDescriptions(e.pipelineHash,e.pipeline,e.vertexInput),e.pipeline.setTopology(e.topology),e.pipeline.setRenderEncoder(e.renderEncoder),e.pipeline.setVertexState(e.vertexInput.getVertexInputInformation()),e.device.createPipeline(e.pipelineHash,e.pipeline))}}const bce={additionalBindables:void 0,bindGroup:null,device:null,fragmentShaderTemplate:null,numberOfInstances:1,numberOfVertices:0,pipelineHash:null,shaderReplacements:null,SSBO:null,textureViews:null,topology:"triangle-list",UBO:null,vertexShaderTemplate:null,WebGPURenderer:null};function oj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,bce,o),Ha.extend(n,e,o),e.textureViews=[],e.vertexInput=Rce.newInstance(),e.bindGroup=Q$.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||Lce,e.vertexShaderTemplate=e.vertexShaderTemplate||Ace,e.shaderReplacements=new Map,At.get(n,e,["pipeline","vertexInput"]),At.setGet(n,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),Nce(n,e)}const Fce=At.newInstance(oj,"vtkWebGPUSimpleMapper");var Vce={newInstance:Fce,extend:oj};function Uce(n,e){e.classHierarchy.push("vtkWebGPUFullScreenQuad"),n.replaceShaderPosition=(o,i,l)=>{const c=i.getShaderDescription("vertex");c.addBuiltinOutput("vec4","@builtin(position) Position"),c.addOutput("vec4","vertexVC");let g=c.getCode();g=Jl.substitute(g,"//VTK::Position::Impl",["output.tcoordVS = vec2(vertexBC.x * 0.5 + 0.5, 1.0 - vertexBC.y * 0.5 - 0.5);","output.Position = vec4(vertexBC, 1.0);","output.vertexVC = vec4(vertexBC, 1);"]).result,c.setCode(g)},e.shaderReplacements.set("replaceShaderPosition",n.replaceShaderPosition),n.updateBuffers=()=>{const o=e.device.getBufferManager().getFullScreenQuadBuffer();e.vertexInput.addBuffer(o,["vertexBC"]),e.numberOfVertices=6}}const Bce={};function sj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bce,o),Vce.extend(n,e,o),Uce(n,e)}const Gce=At.newInstance(sj,"vtkWebGPUFullScreenQuad");var ME={newInstance:Gce,extend:sj};const Wce={Verts:0,Lines:1,Triangles:2,Strips:3,LinesFromStrips:4,LinesFromTriangles:5,Points:6,UniformArray:7,PointArray:8,NormalsFromPoints:9,Texture:10,RawVertex:11,Storage:12,Index:13},$ce={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var Hv={BufferUsage:Wce,PrimitiveTypes:$ce};const gS=["getMappedRange","mapAsync","unmap"];function jce(n,e,o,i){const l=i.byteLength,c=n.createBuffer({size:l,usage:GPUBufferUsage.COPY_SRC,mappedAtCreation:!0}),g=c.getMappedRange(0,l);new Uint8Array(g).set(new Uint8Array(i)),c.unmap();const v=n.createCommandEncoder();v.copyBufferToBuffer(c,0,e,o,l);const _=v.finish();n.queue.submit([_]),c.destroy()}function zce(n,e){e.classHierarchy.push("vtkWebGPUBuffer"),n.create=(o,i)=>{e.handle=e.device.getHandle().createBuffer({size:o,usage:i,label:e.label}),e.sizeInBytes=o,e.usage=i},n.write=o=>{jce(e.device.getHandle(),e.handle,0,o.buffer)},n.createAndWrite=(o,i)=>{e.handle=e.device.getHandle().createBuffer({size:o.byteLength,usage:i,mappedAtCreation:!0,label:e.label}),e.sizeInBytes=o.byteLength,e.usage=i,new Uint8Array(e.handle.getMappedRange()).set(new Uint8Array(o.buffer)),e.handle.unmap()};for(let o=0;o2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hce,o),At.obj(n,e),At.get(n,e,["handle","sizeInBytes","usage"]),At.setGet(n,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),zce(n,e)}const Kce=At.newInstance(aj);var PE={newInstance:Kce,extend:aj,...Hv};const{Representation:OL}=Gv,{PrimitiveTypes:pd}=Hv;class qce{constructor(){this.keys=new Uint32Array(10),this.values=new Uint32Array(10),this.count=0}clear(){this.count=0}has(e){for(let o=0;o2)for(let c=0;c2){for(let c=0;c{const i=o.cells,l=o.primitiveType,c=o.representation,g=o.cellOffset,v=i.getData(),_=v.length,T=Xce(l),P=o.numberOfPoints,I={provokedPointIds:new Uint8Array(P),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new qce};let R=null;c===OL.POINTS||l===pd.Points?R=pS.anythingToPoints:c===OL.WIREFRAME||l===pd.Lines?R=pS[`${T}ToWireframe`]:R=pS[`${T}ToSurface`],Yf=Jce;let L=g||0;for(let V=0;V<_;)I.cellProvokedMap.clear(),R(v[V],v,V+1,L,I),V+=v[V]+1,L++;P<=65535?I.flatIdToPointId=new Uint16Array(P+I.extraPoints):I.flatIdToPointId=new Uint32Array(P+I.extraPoints),P+I.extraPoints<36863?I.pointIdToFlatId=new Int16Array(P):I.pointIdToFlatId=new Int32Array(P),P+I.extraPoints<=65535?(I.ibo=new Uint16Array(I.iboSize),o.format="uint16"):(I.ibo=new Uint32Array(I.iboSize),o.format="uint32"),L<=65535?I.flatIdToCellId=new Uint16Array(P+I.extraPoints):I.flatIdToCellId=new Uint32Array(P+I.extraPoints),I.pointIdToFlatId.fill(-1),I.provokedPointIds.fill(0),Yf=Yce,L=g||0;for(let V=0;V<_;)I.cellProvokedMap.clear(),R(v[V],v,V+1,L,I),V+=v[V]+1,L++;delete I.provokedPointIds,delete I.pointIdToFlatId,o.nativeArray=I.ibo,e.flatIdToPointId=I.flatIdToPointId,e.flatIdToCellId=I.flatIdToCellId,e.flatSize=I.flatId,e.indexCount=I.iboId}}const Qce={flatIdToPointId:null,flatIdToCellId:null,flatSize:0,indexCount:0};function lj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Qce,o),PE.extend(n,e,o),At.setGet(n,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),Zce(n,e)}const efe=At.newInstance(lj);var tfe={newInstance:efe,extend:lj,...Hv};const{BufferUsage:id}=Hv,{vtkErrorMacro:nfe}=m1,{VtkDataTypes:ng}=d0,rfe={};function ife(n){let e;switch(n.getDataType()){case ng.UNSIGNED_CHAR:e="uint8";break;case ng.FLOAT:e="float32";break;case ng.UNSIGNED_INT:e="uint32";break;case ng.INT:e="sint32";break;case ng.DOUBLE:e="float32";break;case ng.UNSIGNED_SHORT:e="uint16";break;case ng.SHORT:e="sin16";break;default:e="float32";break}switch(n.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||nfe(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function PL(n,e,o,i,l){const c={},g=n.getFlatSize();if(!g)return c;let v=[0,0,0,0];l.shift&&(l.shift.length?v=l.shift:v.fill(l.shift));let _=[1,1,1,1];l.scale&&(l.scale.length?_=l.scale:_.fill(l.scale));const T=Object.prototype.hasOwnProperty.call(l,"packExtra")?l.packExtra:!1;let P,I=0;const R=o+(T?1:0),L=B8(i,g*R);let V=n.getFlatIdToPointId();l.cellData&&(V=n.getFlatIdToCellId()),o===1?P=function(j){L[I++]=_[0]*e[j]+v[0]}:o===2?P=function(j){L[I++]=_[0]*e[j]+v[0],L[I++]=_[1]*e[j+1]+v[1]}:o===3&&!T?P=function(j){L[I++]=_[0]*e[j]+v[0],L[I++]=_[1]*e[j+1]+v[1],L[I++]=_[2]*e[j+2]+v[2]}:o===3&&T?P=function(j){L[I++]=_[0]*e[j]+v[0],L[I++]=_[1]*e[j+1]+v[1],L[I++]=_[2]*e[j+2]+v[2],L[I++]=_[3]*1+v[3]}:o===4&&(P=function(j){L[I++]=_[0]*e[j]+v[0],L[I++]=_[1]*e[j+1]+v[1],L[I++]=_[2]*e[j+2]+v[2],L[I++]=_[3]*e[j+3]+v[3]});for(let U=0;Ue.device.hasCachedObject(i),n.getBuffer=i=>i.hash?e.device.getCachedObject(i.hash,o,i):o(i),n.getBufferForPointArray=(i,l)=>{const c=ife(i),g={hash:`${i.getMTime()}I${l.getMTime()}${c}`,usage:id.PointArray,format:c,dataArray:i,indexBuffer:l};return n.getBuffer(g)},n.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=PE.newInstance(),e.fullScreenQuadBuffer.setDevice(e.device);const i=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0]);return e.fullScreenQuadBuffer.createAndWrite(i,GPUBufferUsage.VERTEX),e.fullScreenQuadBuffer.setStrideInBytes(12),e.fullScreenQuadBuffer.setArrayInformation([{offset:0,format:"float32x3"}]),e.fullScreenQuadBuffer}}const lfe={device:null,fullScreenQuadBuffer:null};function ufe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,lfe,o),_s(n,e),s2(n,e,["device"]),afe(n,e)}as(ufe);var uj={...rfe,...Hv};const{BufferUsage:cfe}=uj,{vtkErrorMacro:o6}=At;function ffe(n,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),n.addEntry=(o,i)=>{if(e._bufferEntryNames.has(o)){o6(`entry named ${o} already exists`);return}e._bufferEntryNames.set(o,e.bufferEntries.length);const l=Qc.getByteStrideFromShaderFormat(i);e.bufferEntries.push({name:o,type:i,sizeInBytes:l,offset:e.sizeInBytes,nativeType:Qc.getNativeTypeFromShaderFormat(i)}),e.sizeInBytes+=l},n.send=o=>{if(!e._buffer){const i={nativeArray:e.Float32Array,usage:cfe.Storage,label:e.label};e._buffer=o.getBufferManager().getBuffer(i),e.bindGroupTime.modified(),e._sendTime.modified();return}o.getHandle().queue.writeBuffer(e._buffer.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes*e.numberOfInstances),e._sendTime.modified()},n.createView=o=>{o in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes*e.numberOfInstances)),e[o]=At.newTypedArray(o,e.arrayBuffer))},n.setValue=(o,i,l)=>{const c=e._bufferEntryNames.get(o);if(c===void 0){o6(`entry named ${o} not found in UBO`);return}const g=e.bufferEntries[c];n.createView(g.nativeType);const v=e[g.nativeType];v[(g.offset+i*e.sizeInBytes)/v.BYTES_PER_ELEMENT]=l},n.setArray=(o,i,l)=>{const c=e._bufferEntryNames.get(o);if(c===void 0){o6(`entry named ${o} not found in UBO`);return}const g=e.bufferEntries[c];n.createView(g.nativeType);const v=e[g.nativeType],_=(g.offset+i*e.sizeInBytes)/v.BYTES_PER_ELEMENT;for(let T=0;T{const l=e._bufferEntryNames.get(o);if(l===void 0){o6(`entry named ${o} not found in UBO`);return}const c=e.bufferEntries[l];n.createView(c.nativeType);const g=e[c.nativeType],v=i.length/e.numberOfInstances;for(let _=0;_{const l=e._bufferEntryNames.get(o);if(l===void 0){o6(`entry named ${o} not found in UBO`);return}const c=e.bufferEntries[l];n.createView(c.nativeType);const g=e[c.nativeType],v=i.length/e.numberOfInstances;for(let _=0;_{const l=e._bufferEntryNames.get(o);if(l===void 0){o6(`entry named ${o} not found in UBO`);return}const c=e.bufferEntries[l];n.createView(c.nativeType);const g=e[c.nativeType],v=9;for(let _=0;_e._sendTime.getMTime(),n.getShaderCode=(o,i)=>{const l=[`struct ${e.label}StructEntry +{`];for(let c=0;c, +}; +@binding(${o}) @group(${i}) var ${e.label}: ${e.label}Struct; +`),l.join(` +`)},n.getBindGroupEntry=()=>({resource:{buffer:e._buffer.getHandle()}}),n.clearData=()=>{e.numberOfInstances=0,e.sizeInBytes=0,e.bufferEntries=[],e._bufferEntryNames=new Map,e._buffer=null,delete e.arrayBuffer,delete e.Float32Array}}const hfe={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function cj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hfe,o),At.obj(n,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},At.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},At.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},At.get(n,e,["bindGroupTime"]),At.setGet(n,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),ffe(n,e)}const dfe=At.newInstance(cj,"vtkWebGPUStorageBuffer");var gfe={newInstance:dfe,extend:cj};const{BufferUsage:pfe}=uj,{vtkErrorMacro:mS}=At;function mfe(n,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),n.addEntry=(o,i)=>{if(e._bufferEntryNames.has(o)){mS(`entry named ${o} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(o,e.bufferEntries.length),e.bufferEntries.push({name:o,type:i,sizeInBytes:Qc.getByteStrideFromShaderFormat(i),offset:-1,nativeType:Qc.getNativeTypeFromShaderFormat(i),packed:!1})},n.sortBufferEntries=()=>{if(!e.sortDirty)return;let o=0;const i=[];let l=4;for(let c=0;c4&&(g.packed=!0,g.offset=o,i.push(g),o+=g.sizeInBytes)}for(let c=0;c{if(!e.UBO){const i={nativeArray:e.Float32Array,usage:pfe.UniformArray,label:e.label};e.UBO=o.getBufferManager().getBuffer(i),e.bindGroupTime.modified(),e.sendDirty=!1}e.sendDirty&&(o.getHandle().queue.writeBuffer(e.UBO.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes),e.sendDirty=!1),e.sendTime.modified()},n.createView=o=>{o in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes)),e[o]=At.newTypedArray(o,e.arrayBuffer))},n.setValue=(o,i)=>{n.sortBufferEntries();const l=e._bufferEntryNames.get(o);if(l===void 0){mS(`entry named ${o} not found in UBO`);return}const c=e.bufferEntries[l];n.createView(c.nativeType);const g=e[c.nativeType];c.lastValue!==i&&(g[c.offset/g.BYTES_PER_ELEMENT]=i,e.sendDirty=!0),c.lastValue=i},n.setArray=(o,i)=>{n.sortBufferEntries();const l=e._bufferEntryNames.get(o);if(l===void 0){mS(`entry named ${o} not found in UBO`);return}const c=e.bufferEntries[l];n.createView(c.nativeType);const g=e[c.nativeType];let v=!1;for(let _=0;_({resource:{buffer:e.UBO.getHandle()}}),n.getSendTime=()=>e.sendTime.getMTime(),n.getShaderCode=(o,i)=>{n.sortBufferEntries();const l=[`struct ${e.label}Struct +{`];for(let c=0;c ${e.label}: ${e.label}Struct;`),l.join(` +`)}}const vfe={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function fj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vfe,o),At.obj(n,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},At.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},At.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,At.get(n,e,["binding","bindGroupTime"]),At.setGet(n,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),mfe(n,e)}const kfe=At.newInstance(fj,"vtkWebGPUUniformBuffer");var hm={newInstance:kfe,extend:fj};const{vtkDebugMacro:yfe}=m1,RL=` +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + var computedColor: vec4 = mapperUBO.BackgroundColor; + + //VTK::RenderEncoder::Impl + return output; +} +`,wfe=` +fn vecToRectCoord(dir: vec3) -> vec2 { + var tau: f32 = 6.28318530718; + var pi: f32 = 3.14159265359; + var out: vec2 = vec2(0.0); + + out.x = atan2(dir.z, dir.x) / tau; + out.x += 0.5; + + var phix: f32 = length(vec2(dir.x, dir.z)); + out.y = atan2(dir.y, phix) / pi + 0.5; + + return out; +} + +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + var tcoord: vec4 = vec4(input.vertexVC.xy, -1, 1); + var V: vec4 = normalize(mapperUBO.FSQMatrix * tcoord); // vec2((input.tcoordVS.x - 0.5) * 2, -(input.tcoordVS.y - 0.5) * 2); + // textureSampleLevel gets rid of some ugly artifacts + var background = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, vecToRectCoord(V.xyz), 0.0); + var computedColor: vec4 = vec4(background.rgb, 1); + + //VTK::RenderEncoder::Impl + return output; +} +`,Hy=new Float64Array(16),AL=new Float64Array(16);function Cfe(n){return n.getPositional()?n.getConeAngle()>=90?0:2:1}function _fe(n,e){e.classHierarchy.push("vtkWebGPURenderer"),n.buildPass=o=>{if(o){if(!e.renderable)return;e.camera=e.renderable.getActiveCamera(),n.updateLights(),n.prepareNodes(),n.addMissingNode(e.camera),n.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),n.removeUnusedNodes(),e.webgpuCamera=n.getViewNodeFor(e.camera),n.updateStabilizedMatrix()}},n.updateStabilizedMatrix=()=>{const o=e.camera.getClippingRange(),i=e.camera.getPositionByReference(),l=e.camera.getDirectionOfProjectionByReference(),c=[],g=[];k2(g,l,.5*(o[0]+o[1])),v2(c,i,g),z0(g,c,e.stabilizedCenter),w8(g)/(o[1]-o[0])>e.recenterThreshold&&(e.stabilizedCenter=c,e.stabilizedTime.modified())},n.updateLights=()=>{let o=0;const i=e.renderable.getLightsByReference();for(let l=0;l0&&o++;return o||(yfe("No lights are on, creating one."),e.renderable.createLight()),o},n.updateUBO=()=>{var i;const o=e.UBO.getSendTime();if(e._parent.getMTime()>o||n.getMTime()>o||e.camera.getMTime()>o||e.renderable.getMTime()>o){const l=e.webgpuCamera.getKeyMatrices(n);e.UBO.setArray("WCVCMatrix",l.wcvc),e.UBO.setArray("SCPCMatrix",l.scpc),e.UBO.setArray("PCSCMatrix",l.pcsc),e.UBO.setArray("SCVCMatrix",l.scvc),e.UBO.setArray("VCPCMatrix",l.vcpc),e.UBO.setArray("WCVCNormals",l.normalMatrix),e.UBO.setValue("LightCount",e.renderable.getLights().length),e.UBO.setValue("MaxEnvironmentMipLevel",(i=e.renderable.getEnvironmentTexture())==null?void 0:i.getMipLevel()),e.UBO.setValue("BackgroundDiffuseStrength",e.renderable.getEnvironmentTextureDiffuseStrength()),e.UBO.setValue("BackgroundSpecularStrength",e.renderable.getEnvironmentTextureSpecularStrength());const c=n.getYInvertedTiledSizeAndOrigin();e.UBO.setArray("viewportSize",[c.usize,c.vsize]),e.UBO.setValue("cameraParallel",e.camera.getParallelProjection());const g=e._parent.getDevice();e.UBO.sendIfNeeded(g)}},n.updateSSBO=()=>{const o=e.renderable.getLights(),i=e.webgpuCamera.getKeyMatrices(n);let l=`${e.renderable.getMTime()}`;for(let c=0;c"),e.SSBO.addEntry("LightDir","vec4"),e.SSBO.addEntry("LightColor","vec4"),e.SSBO.addEntry("LightData","vec4"),e.SSBO.setAllInstancesFromArray("LightPos",c),e.SSBO.setAllInstancesFromArray("LightDir",g),e.SSBO.setAllInstancesFromArray("LightColor",v),e.SSBO.setAllInstancesFromArray("LightData",_);const T=e._parent.getDevice();e.SSBO.send(T)}e.lightTimeString=l},n.scissorAndViewport=o=>{const i=n.getYInvertedTiledSizeAndOrigin();o.getHandle().setViewport(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize,0,1),o.getHandle().setScissorRect(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize)},n.bindUBO=o=>{o.activateBindGroup(e.bindGroup)},n.opaquePass=o=>{o?(e.renderEncoder.begin(e._parent.getCommandEncoder()),n.updateUBO(),n.updateSSBO()):(n.scissorAndViewport(e.renderEncoder),n.clear(),e.renderEncoder.end())},n.clear=()=>{var c;if(e.renderable.getTransparent()||e.suppressClear)return;const o=e._parent.getDevice();if(!e.clearFSQ){e.clearFSQ=ME.newInstance(),e.clearFSQ.setDevice(o),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(RL);const g=hm.newInstance({label:"mapperUBO"});g.addEntry("FSQMatrix","mat4x4"),g.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(g),e.backgroundTex=e.renderable.getEnvironmentTexture()}if(e.clearFSQ.getPipelineHash()!=="clearfsqwithtexture"&&e.renderable.getUseEnvironmentTextureAsBackground()&&((c=e.backgroundTex)!=null&&c.getImageLoaded())){e.clearFSQ.setFragmentShaderTemplate(wfe);const g=hm.newInstance({label:"mapperUBO"});g.addEntry("FSQMatrix","mat4x4"),g.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(g);const v=o.getTextureManager().getTextureForVTKTexture(e.backgroundTex);if(v.getReady()){const _=v.createView("EnvironmentTexture");e.clearFSQ.setTextureViews([_]),e.backgroundTexLoaded=!0;const T=e.backgroundTex.getInterpolate()?"linear":"nearest";_.addSampler(o,{addressModeU:"repeat",addressModeV:"clamp-to-edge",addressModeW:"repeat",minFilter:T,magFilter:T,mipmapFilter:"linear"})}e.clearFSQ.setPipelineHash("clearfsqwithtexture")}else if(e.clearFSQ.getPipelineHash()==="clearfsqwithtexture"&&!e.renderable.getUseEnvironmentTextureAsBackground()){e.clearFSQ=ME.newInstance(),e.clearFSQ.setDevice(o),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(RL);const g=hm.newInstance({label:"mapperUBO"});g.addEntry("FSQMatrix","mat4x4"),g.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(g)}const i=e.webgpuCamera.getKeyMatrices(n),l=e.renderable.getBackgroundByReference();e.clearFSQ.getUBO().setArray("BackgroundColor",l),po(AL,i.normalMatrix),Bw(Hy,i.scvc,i.pcsc),Bw(Hy,AL,Hy),e.clearFSQ.getUBO().setArray("FSQMatrix",Hy),e.clearFSQ.getUBO().sendIfNeeded(o),e.clearFSQ.prepareAndDraw(e.renderEncoder)},n.translucentPass=o=>{o?e.renderEncoder.begin(e._parent.getCommandEncoder()):(n.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},n.volumeDepthRangePass=o=>{o?e.renderEncoder.begin(e._parent.getCommandEncoder()):(n.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},n.getAspectRatio=()=>{const o=e._parent.getSizeByReference(),i=e.renderable.getViewportByReference();return o[0]*(i[2]-i[0])/((i[3]-i[1])*o[1])},n.convertToOpenGLDepth=o=>e.webgpuCamera.convertToOpenGLDepth(o),n.getYInvertedTiledSizeAndOrigin=()=>{const o=n.getTiledSizeAndOrigin(),i=e._parent.getSizeByReference();return o.lowerLeftV=i[1]-o.vsize-o.lowerLeftV,o},n.getTiledSizeAndOrigin=()=>{const o=e.renderable.getViewportByReference(),i=[0,0,1,1],l=o[0]-i[0],c=o[1]-i[1],g=e._parent.normalizedDisplayToDisplay(l,c),v=Math.round(g[0]),_=Math.round(g[1]),T=o[2]-i[0],P=o[3]-i[1],I=e._parent.normalizedDisplayToDisplay(T,P);let R=Math.round(I[0])-v,L=Math.round(I[1])-_;return R<0&&(R=0),L<0&&(L=0),{usize:R,vsize:L,lowerLeftU:v,lowerLeftV:_}},n.getPropFromID=o=>{for(let i=0;ie.stabilizedTime.getMTime(),n.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources()}}const xfe={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function Sfe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xfe,o),Ha.extend(n,e,o),e.UBO=hm.newInstance({label:"rendererUBO"}),e.UBO.addEntry("WCVCMatrix","mat4x4"),e.UBO.addEntry("SCPCMatrix","mat4x4"),e.UBO.addEntry("PCSCMatrix","mat4x4"),e.UBO.addEntry("SCVCMatrix","mat4x4"),e.UBO.addEntry("VCPCMatrix","mat4x4"),e.UBO.addEntry("WCVCNormals","mat4x4"),e.UBO.addEntry("viewportSize","vec2"),e.UBO.addEntry("LightCount","i32"),e.UBO.addEntry("MaxEnvironmentMipLevel","f32"),e.UBO.addEntry("BackgroundDiffuseStrength","f32"),e.UBO.addEntry("BackgroundSpecularStrength","f32"),e.UBO.addEntry("cameraParallel","u32"),e.SSBO=gfe.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=Q$.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=zi(new Float64Array(16)),e.stabilizedTime={},_s(e.stabilizedTime,{mtime:0}),el(n,e,["bindGroup","stabilizedTime"]),G8(n,e,["stabilizedCenter"]),s2(n,e,["renderEncoder","selector","suppressClear","UBO"]),_fe(n,e)}const Tfe=as(Sfe,"vtkWebGPURenderer");H8("vtkRenderer",Tfe);function Efe(n,e){e.classHierarchy.push("vtkWebGPUSampler"),n.create=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.device=o,e.options.addressModeU=i.addressModeU?i.addressModeU:"clamp-to-edge",e.options.addressModeV=i.addressModeV?i.addressModeV:"clamp-to-edge",e.options.addressModeW=i.addressModeW?i.addressModeW:"clamp-to-edge",e.options.magFilter=i.magFilter?i.magFilter:"nearest",e.options.minFilter=i.minFilter?i.minFilter:"nearest",e.options.mipmapFilter=i.mipmapFilter?i.mipmapFilter:"nearest",e.options.label=e.label,e.handle=e.device.getHandle().createSampler(e.options),e.bindGroupTime.modified()},n.getShaderCode=(o,i)=>`@binding(${o}) @group(${i}) var ${e.label}: sampler;`,n.getBindGroupEntry=()=>({resource:e.handle})}const Dfe={device:null,handle:null,label:null,options:null};function hj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Dfe,o),At.obj(n,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},At.obj(e.bindGroupTime,{mtime:0}),At.get(n,e,["bindGroupTime","handle","options"]),At.setGet(n,e,["bindGroupLayoutEntry","device","label"]),Efe(n,e)}const Ife=At.newInstance(hj);var Ofe={newInstance:Ife,extend:hj};const{SlicingMode:LL}=yC,Mfe=` +//VTK::Renderer::Dec + +//VTK::Mapper::Dec + +//VTK::TCoord::Dec + +//VTK::Image::Dec + +//VTK::RenderEncoder::Dec + +//VTK::IOStructs::Dec + +@fragment +fn main( +//VTK::IOStructs::Input +) +//VTK::IOStructs::Output +{ + var output: fragmentOutput; + + //VTK::Image::Sample + + // var computedColor: vec4 = vec4(1.0,0.7, 0.5, 1.0); + +//VTK::RenderEncoder::Impl + + return output; +} +`;function Pfe(n,e,o){if(e.apply(n)){const l=n.getIndependentComponents();return`${n.getMTime()}-${l}-${o}`}return"0"}const Kl=new Float64Array(16),$c=new Float64Array(16),Ky=new Float64Array(16),zf=new Float64Array(4),Qa=new Float64Array(4);function Rfe(n,e){e.classHierarchy.push("vtkWebGPUImageMapper"),n.buildPass=l=>{if(l){e.WebGPUImageSlice=n.getFirstAncestorOfType("vtkWebGPUImageSlice"),e.WebGPURenderer=e.WebGPUImageSlice.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.device=e.WebGPURenderWindow.getDevice();const c=e.WebGPURenderer.getRenderable();e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(c.getActiveCamera())}},n.translucentPass=l=>{l&&n.render()},n.opaquePass=l=>{l&&n.render()},n.render=()=>{e.renderable.update(),e.currentInput=e.renderable.getInputData(),n.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,n.draw)},n.computePipelineHash=()=>{const l=e.currentInput.getExtent();l[0]===l[1]||l[2]===l[3]||l[4]===l[5]?(e.dimensions=2,e.pipelineHash="img2"):(e.dimensions=3,e.pipelineHash="img3")},n.updateUBO=()=>{const l=e.UBO.getSendTime(),c=e.WebGPUImageSlice.getRenderable(),g=c.getMapper();if(n.getMTime()>l||e.renderable.getMTime()>l||c.getProperty().getMTime()>l){const v=g.getInputData(),_=e.WebGPURenderer.getStabilizedCenterByReference();zi(Kl),Ns(Kl,Kl,_);const T=c.getMatrix();po($c,T),Ia($c,$c),Y0(Kl,$c,Kl);const P=v.getWorldToIndex();Y0(Kl,P,Kl),Ia(Ky,Kl),Bv($c,[.5,.5,.5]),Y0(Kl,$c,Kl);const I=v.getDimensions();zi($c),hf($c,$c,[1/I[0],1/I[1],1/I[2]]),Y0(Kl,$c,Kl),e.UBO.setArray("SCTCMatrix",Kl);const R=e.currentInput.getExtent(),{ijkMode:L}=e.renderable.getClosestIJKAxis();let V=e.renderable.getSlice();L!==e.renderable.getSlicingMode()&&(V=e.renderable.getSliceAtPosition(V));let U=2,j=0,z=1;L===LL.I?(U=0,j=1,z=2):L===LL.J&&(U=1,j=2,z=0),zf[U]=V,zf[j]=R[j*2]-.5,zf[z]=R[z*2]-.5,zf[3]=1,Ed(zf,zf,Ky),e.UBO.setArray("Origin",zf),Qa[U]=V,Qa[j]=R[j*2+1]+.5,Qa[z]=R[z*2]-.5,Qa[3]=1,Ed(Qa,Qa,Ky),bA(Qa,Qa,zf),Qa[3]=1,e.UBO.setArray("Axis1",Qa),Qa[U]=V,Qa[j]=R[j*2]-.5,Qa[z]=R[z*2+1]+.5,Qa[3]=1,Ed(Qa,Qa,Ky),bA(Qa,Qa,zf),Qa[3]=1,e.UBO.setArray("Axis2",Qa);const $=[1,1,1,1],K=[0,0,0,0],X=e.textureViews[0],ee=X.getTexture().getScale(),ne=X.getTexture().getNumberOfComponents();for(let le=0;le{const l=e.WebGPUImageSlice.getRenderable().getProperty();n.getTextureViews()[0].getTexture().getNumberOfComponents();const g=1,v=Pfe(l,l.getRGBTransferFunction,g);if(e.colorTextureString!==v){e.numRows=g;const _=new Uint8ClampedArray(e.numRows*2*e.rowLength*4);let T=l.getRGBTransferFunction();if(T){const P=new Float32Array(e.rowLength*3);for(let I=0;I{o();const l=e.device.getTextureManager().getTextureForImageData(e.currentInput),c=e.textureViews;if(!c[0]||c[0].getTexture()!==l){const _=l.createView("imgTexture");c[0]=_}n.updateLUTImage(),n.updateUBO();const v=e.WebGPUImageSlice.getRenderable().getProperty().getInterpolationType()===Dg.NEAREST?"nearest":"linear";(!e.clampSampler||v!==e.clampSampler.getOptions().minFilter)&&(e.clampSampler=Ofe.newInstance({label:"clampSampler"}),e.clampSampler.create(e.device,{minFilter:v,magFilter:v}),e.additionalBindables=[e.clampSampler])};const i=n.getShaderReplacements();n.replaceShaderPosition=(l,c,g)=>{const v=c.getShaderDescription("vertex");v.addBuiltinOutput("vec4","@builtin(position) Position");let _=v.getCode();const T=["var pos: vec4 = mapperUBO.Origin +"," (vertexBC.x * 0.5 + 0.5) * mapperUBO.Axis1 + (vertexBC.y * 0.5 + 0.5) * mapperUBO.Axis2;","pos.w = 1.0;"];e.dimensions===2?T.push("var tcoord : vec2 = (mapperUBO.SCTCMatrix * pos).xy;"):T.push("var tcoord : vec3 = (mapperUBO.SCTCMatrix * pos).xyz;"),T.push("output.tcoordVS = tcoord;","output.Position = rendererUBO.SCPCMatrix * pos;"),_=Jl.substitute(_,"//VTK::Position::Impl",T).result,v.setCode(_)},i.set("replaceShaderPosition",n.replaceShaderPosition),n.replaceShaderTCoord=(l,c,g)=>{const v=c.getShaderDescription("vertex");e.dimensions===2?v.addOutput("vec2","tcoordVS"):v.addOutput("vec3","tcoordVS")},i.set("replaceShaderTCoord",n.replaceShaderTCoord),n.replaceShaderImage=(l,c,g)=>{const v=c.getShaderDescription("fragment");let _=v.getCode();e.dimensions===3?_=Jl.substitute(_,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result:_=Jl.substitute(_,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result,_=Jl.substitute(_,"//VTK::Image::Sample",[" var coord: vec2 ="," vec2(computedColor.r * mapperUBO.cScale.r + mapperUBO.cShift.r, 0.5);"," computedColor = textureSampleLevel(tfunTexture, clampSampler, coord, 0.0);"]).result,v.setCode(_)},i.set("replaceShaderImage",n.replaceShaderImage)}const Afe={rowLength:1024};function Lfe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Afe,o),ME.extend(n,e,o),n.setFragmentShaderTemplate(Mfe),e.UBO=hm.newInstance({label:"mapperUBO"}),e.UBO.addEntry("SCTCMatrix","mat4x4"),e.UBO.addEntry("Origin","vec4"),e.UBO.addEntry("Axis2","vec4"),e.UBO.addEntry("Axis1","vec4"),e.UBO.addEntry("cScale","vec4"),e.UBO.addEntry("cShift","vec4"),e.lutBuildTime={},_s(e.lutBuildTime,{mtime:0}),e.imagemat=zi(new Float64Array(16)),e.imagematinv=zi(new Float64Array(16)),e.VBOBuildTime={},_s(e.VBOBuildTime),Rfe(n,e)}const Nfe=as(Lfe,"vtkWebGPUImageMapper");H8("vtkImageMapper",Nfe);function bfe(n,e){e.classHierarchy.push("vtkWebGPUImageSlice"),n.buildPass=o=>{if(!(!e.renderable||!e.renderable.getVisibility())&&o){if(!e.renderable)return;e.WebGPURenderer=n.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),n.prepareNodes(),n.addMissingNode(e.renderable.getMapper()),n.removeUnusedNodes()}},n.traverseOpaquePass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children.forEach(i=>{i.traverse(o)}),n.apply(o,!1))},n.traverseTranslucentPass=o=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(n.apply(o,!0),e.children.forEach(i=>{i.traverse(o)}),n.apply(o,!1))},n.queryPass=(o,i)=>{if(o){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?i.incrementOpaqueActorCount():i.incrementTranslucentActorCount()}},n.getBufferShift=o=>(n.getKeyMatrices(o),e.bufferShift),n.getKeyMatrices=o=>{if(Math.max(e.renderable.getMTime(),o.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const i=e.renderable.getMatrix(),l=o.getStabilizedCenterByReference();e.bufferShift[0]=i[3]-l[0],e.bufferShift[1]=i[7]-l[1],e.bufferShift[2]=i[11]-l[2],po(e.keyMatrices.bcwc,i),e.renderable.getIsIdentity()?zi(e.keyMatrices.normalMatrix):(Ea(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,Ia(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),po(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),Ns(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),Ns(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-l[0],-l[1],-l[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const Ffe={bufferShift:void 0,keyMatrixTime:null,keyMatrices:null,propID:void 0};function Vfe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ffe,o),Ha.extend(n,e,o),e.keyMatricesTime={},_s(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},e.keyMatrixTime={},_s(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:zi(new Float64Array(16))},e.bufferShift=[0,0,0,0],el(n,e,["propID","keyMatricesTime"]),bfe(n,e)}const Ufe=as(Vfe,"vtkWebGPUImageSlice");H8("vtkImageSlice",Ufe);function Bfe(n,e){e.classHierarchy.push("vtkWebGPUVolume"),n.buildPass=l=>{!e.renderable||!e.renderable.getVisibility()||l&&(e.WebGPURenderer=n.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),e.renderable.getMapper().update())},n.queryPass=(l,c)=>{if(l){if(!e.renderable||!e.renderable.getVisibility())return;const g=e.renderable.getMapper().getBounds();if(!g||g.length!==6||g[0]>g[1])return;c.addVolume(n)}};const o=new Float64Array(3),i=new Float64Array(3);n.getBoundingCubePoints=(l,c)=>{const g=e.renderable.getMapper().getInputData();if(!g)return;const v=g.getExtent(),_=e.renderable.getMatrix();let T=0;for(let P=4;P<6;P++){o[2]=v[P];for(let I=2;I<4;I++){o[1]=v[I];for(let R=0;R<2;R++){o[0]=v[R],g.indexToWorld(o,i);let L=c+T*3;l[L++]=_[0]*i[0]+_[1]*i[1]+_[2]*i[2]+_[3],l[L++]=_[4]*i[0]+_[5]*i[1]+_[6]*i[2]+_[7],l[L++]=_[8]*i[0]+_[9]*i[1]+_[10]*i[2]+_[11],T++}}}},n.getKeyMatrices=l=>{if(Math.max(e.renderable.getMTime(),l.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const c=e.renderable.getMatrix(),g=l.getStabilizedCenterByReference();po(e.keyMatrices.bcwc,c),Ns(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-g[0],-g[1],-g[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const Gfe={propID:void 0,keyMatricesTime:null};function Wfe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Gfe,o),Ha.extend(n,e,o),e.keyMatricesTime={},At.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={bcwc:new Float64Array(16),bcsc:new Float64Array(16)},At.get(n,e,["propID","keyMatricesTime"]),Bfe(n,e)}const $fe=At.newInstance(Wfe,"vtkWebGPUVolume");H8("vtkVolume",$fe);function jfe(n,e){e.classHierarchy.push("vtkWebGPUPixelSpaceCallbackMapper"),n.opaquePass=(o,i)=>{e.WebGPURenderer=n.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent();const l=e.WebGPURenderer.getAspectRatio(),c=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,g=e.WebGPURenderer.getTiledSizeAndOrigin(),v=null;e.renderable.getUseZValues(),e.renderable.invokeCallback(e.renderable.getInputData(),c,l,g,v)}}const zfe={};function Hfe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zfe,o),Ha.extend(n,e,o),jfe(n,e)}const Kfe=At.newInstance(Hfe,"vtkWebGPUPixelSpaceCallbackMapper");H8("vtkPixelSpaceCallbackMapper",Kfe);const NL=[[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],bL=[[0,-1,0],[0,1,0]],qfe=[[0,-1,0],[0,1,0],[0,0,-1]],Xfe=[[0,-1,0],[0,1,0],[0,0,1]];var f8;let m6=(f8=class{static copyMap(e,o){for(const[i,l]of o.rows)e.rows.set(i,structuredClone(l))}constructor(e,o,i=1){this.rows=new Map,this.height=1,this.width=1,this.depth=1,this.jMultiple=1,this.kMultiple=1,this.numComps=1,this.pixelDataConstructor=Uint8Array,this.updateScalarData=function(l){l.fill(0);const c=(g,v,_)=>{const{start:T,end:P,value:I}=v;for(let R=T;R{const c=l%this.jMultiple,g=(l-c)/this.jMultiple,v=this.getRLE(c,g);return(v==null?void 0:v.value)??this.defaultValue},this.getRun=(l,c)=>{const g=l+c*this.height;return this.rows.get(g)},this.set=(l,c)=>{if(c===void 0)return;const g=l%this.width,v=(l-g)/this.width,_=this.rows.get(v);if(!_){this.rows.set(v,[{start:g,end:g+1,value:c}]);return}const T=this.findIndex(_,g),P=_[T],I=_[T-1];if(!P){if(!I||I.value!==c||I.end!==g){_[T]={start:g,end:g+1,value:c};return}I.end++;return}const{start:R,end:L,value:V}=P;if(c===V&&g>=R)return;const U={start:g,end:g+1,value:c},j=g>R,z=j?T+1:T,$=j?P:I;let K=j?_[T+1]:P;if(($==null?void 0:$.value)===c&&($==null?void 0:$.end)===g){$.end++,(K==null?void 0:K.value)===c&&K.start===g+1?($.end=K.end,_.splice(T,1)):(K==null?void 0:K.start)===g&&(K.start++,K.start===K.end&&(_.splice(T,1),K=_[T],(K==null?void 0:K.start)===g+1&&K.value===c&&($.end=K.end,_.splice(T,1))));return}if((K==null?void 0:K.value)===c&&K.start===g+1){K.start--,($==null?void 0:$.end)>g&&($.end=g,$.end===$.start&&_.splice(T,1));return}if((K==null?void 0:K.start)===g&&K.end===g+1){K.value=c;const X=_[T+1];(X==null?void 0:X.start)==g+1&&X.value===c&&(_.splice(T+1,1),K.end=X.end);return}g===(K==null?void 0:K.start)&&K.start++,j&&L>g+1?_.splice(z,0,U,{start:g+1,end:$.end,value:$.value}):_.splice(z,0,U),($==null?void 0:$.end)>g&&($.end=g)},this.width=e,this.height=o,this.depth=i,this.jMultiple=e,this.kMultiple=this.jMultiple*o}toIJK(e){const o=e%this.jMultiple,i=(e-o)/this.jMultiple%this.height,l=Math.floor(e/this.kMultiple);return[o,i,l]}toIndex([e,o,i]){return e+i*this.kMultiple+o*this.jMultiple}getRLE(e,o,i=0){const l=this.rows.get(o+i*this.height);if(!l)return;const c=this.findIndex(l,e),g=l[c];return e>=(g==null?void 0:g.start)?g:void 0}has(e){const o=e%this.jMultiple,i=(e-o)/this.jMultiple,l=this.getRLE(o,i);return(l==null?void 0:l.value)!==void 0}delete(e){const o=e%this.width,i=(e-o)/this.width,l=this.rows.get(i);if(!l)return;const c=this.findIndex(l,o),g=l[c];if(!g||g.start>o)return;if(g.end===o+1){g.end--,g.start>=g.end&&(l.splice(c,1),l.length||this.rows.delete(i));return}if(g.start===o){g.start++;return}const v={value:g.value,start:o+1,end:g.end};g.end=o,l.splice(c+1,0,v)}findIndex(e,o){for(let i=0;iL&&L[0].value===o);e.push(...R)}return c}fillFrom(e,o){for(let i=o[2][0];i<=o[2][1];i++)for(let l=o[1][0];l<=o[1][1];l++){let c,g;for(let v=o[0][0];v<=o[0][1];v++){const _=e(v,l,i);if(_===void 0){c=void 0;continue}g||(g=[],this.rows.set(l+i*this.height,g)),c&&c.value!==_&&(c=void 0),c||(c={start:v,end:v,value:_},g.push(c)),c.end++}}}findAdjacents(e,{diagonals:o=!0,planar:i=!0,singlePlane:l=!1}){const[c,g,v,_]=e,{start:T,end:P}=c,I=T>0&&this.getRLE(T-1,g,v),R=P0?T-1:T,P=this.height||K<0||K>=this.depth)continue;const X=this.getRun($,K);if(X)for(const ee of X){const ne=_||l&&bL||i&&z>0&&Xfe||i&&z<0&&qfe||NL;ee.end<=L[0]||ee.start>=L[1]||V.push([ee,$,K,ne])}}return V}},f8.getScalarData=function(e=Uint8ClampedArray){const o=new e(this.frameSize);return this.map.updateScalarData(o),o},f8),q7=class j3{constructor(e={}){this._dimensions=3,this._length=0,this._byteSize=4,this.growSize=128;const{initialSize:o=1024,dimensions:i=3,growSize:l=128}=e,c=o*i;this.growSize=l,this.array=new ArrayBuffer(c*this._byteSize),this.data=new Float32Array(this.array),this._dimensions=i}forEach(e){for(let o=0;o=this._length)return;const o=this._dimensions*e;return this.data.subarray(o,o+this._dimensions)}getPointArray(e){const o=[];if(e<0&&(e+=this._length),e<0||e>=this._length)return;const i=this._dimensions*e;for(let l=0;le)}toXYZ(){const e={x:[],y:[]};this._dimensions>=3&&(e.z=[]);const{x:o,y:i,z:l}=e;return this.forEach(c=>{o.push(c[0]),i.push(c[1]),l&&l.push(c[2])}),e}static fromXYZ({x:e,y:o,z:i}){const l=j3.create3(e.length);let c=0;for(let g=0;gi.push(l)),i}static create2(e=128){return new j3({initialSize:e,dimensions:2})}};function dj(n){const e=nr(),o=n.getDimensions(),i=q7.create3(o[0]),l=q7.create3(o[1]),c=q7.create3(o[2]),g=n.getDirection(),v=g.slice(0,3),_=g.slice(3,6),T=g.slice(6,9),P=n.getSpacing(),[I,R,L]=P,V=n.indexToWorld([0,0,0]),U=Ei(v[0]*I,v[1]*I,v[2]*I),j=Ei(_[0]*R,_[1]*R,_[2]*R),z=Ei(T[0]*L,T[1]*L,T[2]*L),$=nr();for(let ne=0;ne{const[ce,ge,pe]=ne,we=ce*3,Te=ge*3,Ve=pe*3;return le[0]=K[we]+X[Te]+ee[Ve],le[1]=K[we+1]+X[Te+1]+ee[Ve+1],le[2]=K[we+2]+X[Te+2]+ee[Ve+2],le}}function YO(n,e){const{pointInShapeFn:o,callback:i,boundsIJK:l,returnPoints:c=!1}=e;let g;if(n.getScalarData)g=n.getScalarData();else{const I=n.getPointData().getScalars();if(I)g=I.getData();else{const{voxelManager:R}=n.get("voxelManager")||{};R&&(g=R.getCompleteScalarDataArray())}}const v=n.getDimensions(),_=[[0,v[0]],[0,v[1]],[0,v[2]]],P=Yfe({imageData:n,bounds:l||_,scalarData:g,pointInShapeFn:o,callback:i});return c?P:void 0}function Yfe({imageData:n,bounds:e,scalarData:o,pointInShapeFn:i,callback:l}){const[[c,g],[v,_],[T,P]]=e,{numComps:I}=n,R=n.getDimensions(),L=dj(n),V=[0,0,0],U=I||o.length/R[2]/R[1]/R[0],j=R[0]*U,z=R[1]*j,$=[];for(let K=T;K<=P;K++){V[2]=K;const X=K*z;for(let ee=v;ee<=_;ee++){V[1]=ee;const ne=X+ee*j;for(let le=c;le<=g;le++){V[0]=le;const ce=L(V);if(i(ce,V)){const ge=ne+le*U;let pe;U>2?pe=[o[ge],o[ge+1],o[ge+2]]:pe=o[ge],$.push({value:pe,index:ge,pointIJK:V,pointLPS:ce.slice()}),l({value:pe,index:ge,pointIJK:V,pointLPS:ce})}}}}return $}function Jfe({voxelManager:n,bounds:e,imageData:o,pointInShapeFn:i,callback:l,returnPoints:c}){const[[g,v],[_,T],[P,I]]=e,R=dj(o),L=[0,0,0],V=[];for(let U=P;U<=I;U++){L[2]=U;for(let j=_;j<=T;j++){L[1]=j;for(let z=g;z<=v;z++){L[0]=z;const $=R(L);if(i($,L)){const K=n.toIndex(L),X=n.getAtIndex(K);c&&V.push({value:X,index:K,pointIJK:[...L],pointLPS:$.slice()}),l==null||l({value:X,index:K,pointIJK:L,pointLPS:$})}}}}return V}const Zfe=5*1024;let gf=class e2{get id(){return this._id}constructor(e,o){this.modifiedSlices=new Set,this.boundsIJK=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],this.scalarData=null,this._sliceDataCache=null,this.getAtIJK=(i,l,c)=>{const g=this.toIndex([i,l,c]);return this._get(g)},this.setAtIJK=(i,l,c,g)=>{const v=this.toIndex([i,l,c]),_=this._set(v,g);return _!==!1&&(this.modifiedSlices.add(c),e2.addBounds(this.boundsIJK,[i,l,c])),_},this.getAtIJKPoint=([i,l,c])=>this.getAtIJK(i,l,c),this.setAtIJKPoint=([i,l,c],g)=>{this.setAtIJK(i,l,c,g)},this.getAtIndex=i=>this._get(i),this.setAtIndex=(i,l)=>{const c=this._set(i,l);if(c!==!1){const g=this.toIJK(i);this.modifiedSlices.add(g[2]),e2.addBounds(this.boundsIJK,g)}return c},this.getMiddleSliceData=()=>{const i=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:i,slicePlane:2})},this.forEach=(i,l={})=>{const c=l.boundsIJK||this.getBoundsIJK(),g=l.isInObject||this.isInObject||(()=>!0),v=l.returnPoints||!1,_=l.imageData,T=Math.min(c[0][0],c[0][1]),P=Math.max(c[0][0],c[0][1]),I=Math.min(c[1][0],c[1][1]),R=Math.max(c[1][0],c[1][1]),L=Math.min(c[2][0],c[2][1]),V=Math.max(c[2][0],c[2][1]),U=[];if(_)return Jfe({voxelManager:this,imageData:l.imageData,bounds:[[T,P],[I,R],[L,V]],pointInShapeFn:g,callback:i,returnPoints:v});if(this.map){if(this.map instanceof m6)return this.rleForEach(i,l);for(const j of this.map.keys()){const z=this.toIJK(j);if(!g(null,z))continue;const $=this._get(j);v&&U.push({value:$,index:j,pointIJK:z,pointLPS:null}),i({value:$,index:j,pointIJK:z,pointLPS:null})}return U}else{for(let j=L;j<=V;j++){const z=j*this.frameSize;for(let $=I;$<=R;$++){const K=z+$*this.width;for(let X=T,ee=K+X;X<=P;X++,ee++){const ne=this.getAtIndex(ee),le=[X,$,j];g(null,le)&&(v&&U.push({value:ne,index:ee,pointIJK:le,pointLPS:null}),i({value:ne,index:ee,pointIJK:[X,$,j],pointLPS:null}))}}}return U}},this.getSliceData=({sliceIndex:i,slicePlane:l})=>{const[c,g,v]=this.dimensions,_=c*g,T=i*_;let P;const I=this.getConstructor();function R(V){return typeof V=="function"}if(!R(I))return new Uint8Array(0);let L;switch(l){case 0:P=g*v,L=new I(P);for(let V=0;V{const c=Array.isArray(l);if(e===void 0&&(e=c?[...l]:l,o=c?[...l]:l),c)for(let g=0;g[0,e-1])}getBoundsIJK(){return this.boundsIJK[0][0]{e[0]=1/0,e[1]=-1/0})}clear(){var e,o;(e=this.map)==null||e.clear(),this.clearBounds(),this.modifiedSlices.clear(),(o=this.points)==null||o.clear()}getConstructor(){return this.scalarData?this.scalarData.constructor:this._getConstructor?this._getConstructor():(console.warn("No scalar data available or can be used to get the constructor"),Float32Array)}getArrayOfModifiedSlices(){return Array.from(this.modifiedSlices)}resetModifiedSlices(){this.modifiedSlices.clear()}setBounds(e){this.boundsIJK=e}static addBounds(e,o){e||(e=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]]),e[0][0]=Math.min(o[0],e[0][0]),e[0][1]=Math.max(o[0],e[0][1]),e[1][0]=Math.min(o[1],e[1][0]),e[1][1]=Math.max(o[1],e[1][1]),e[2][0]=Math.min(o[2],e[2][0]),e[2][1]=Math.max(o[2],e[2][1])}addPoint(e){const o=Array.isArray(e)?e[0]+this.width*e[1]+this.frameSize*e[2]:e;this.points||(this.points=new Set),this.points.add(o)}getPoints(){return this.points?[...this.points].map(e=>this.toIJK(e)):[]}setSliceDataValue(e,o,i){if(Array.isArray(i))for(let l=0;l(g*=i,[o[g++],o[g++],o[g++]]),_id:l||"_createRGBScalarVolumeVoxelManager",_set:(g,v)=>{g*=3;const _=!Qi(o[g],v);return o[g++]=v[0],o[g++]=v[1],o[g++]=v[2],_},numberOfComponents:i,scalarData:o});return c.clear=()=>{o.fill(0)},c}static createImageVolumeVoxelManager({dimensions:e,imageIds:o,numberOfComponents:i=1,id:l}){const c=e[0]*e[1];function g(I){const R=Math.floor(I/c);if(R<0||R>=e[2])return{};const L=o[R];if(!L)return console.warn(`ImageId not found for sliceIndex: ${R}`),{pixelData:null,pixelIndex:null};const V=Jn.getImage(L);if(!V)return console.warn(`Image not found for imageId: ${L}`),{pixelData:null,pixelIndex:null};const U=V.voxelManager,j=I%c;return{voxelManager:U,pixelIndex:j}}function v(I){const{voxelManager:R,pixelIndex:L}=g(I);return!R||L===null?null:R.getAtIndex(L)}function _(I,R){const{voxelManager:L,pixelIndex:V}=g(I);if(!L||V===null)return!1;const U=L.getAtIndex(V),j=!Qi(R,U);return j&&(L.setAtIndex(V,R),!0)}const T=()=>{const{voxelManager:I,pixelIndex:R}=g(0);return!I||R===null?null:I.getConstructor()},P=new e2(e,{_get:v,_set:_,numberOfComponents:i,_getConstructor:T,_id:l||"createImageVolumeVoxelManager"});return P.getMiddleSliceData=()=>{const I=Math.floor(e[2]/2);return P.getSliceData({sliceIndex:I,slicePlane:2})},P.clear=()=>{for(const I of o)Jn.getImage(I).voxelManager.clear()},P.getRange=()=>{let I=1/0,R=-1/0;for(const L of o){const V=Jn.getImage(L);V&&(V.minPixelValueR&&(R=V.maxPixelValue))}return I===1/0&&R===-1/0?[0,0]:[I,R]},P._getScalarDataLength=()=>{const{voxelManager:I,pixelIndex:R}=g(0);return!I||R===null?0:I.getScalarDataLength()*e[2]},P.getCompleteScalarDataArray=()=>{const I=P._getConstructor();if(!I)return new Uint8Array(0);const R=P.getScalarDataLength(),L=new I(R),V=e[0]*e[1]*i;for(let U=0;U{const R=e[0]*e[1]*i,L=P._getConstructor();let V=1/0,U=-1/0;for(let j=0;j4||i<1||i===2))throw new Error(`Number of components ${i} must be 1, 3 or 4`);return i>1?e2._createRGBScalarVolumeVoxelManager({dimensions:e,scalarData:o,numberOfComponents:i,id:l}):e2._createNumberVolumeVoxelManager({dimensions:e,scalarData:o,id:l})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:e,dimensions:o,dimensionGroupNumber:i=1,timePoint:l=0,numberOfComponents:c=1,id:g}){let v=0;if(i!==void 0?v=i-1:l!==void 0&&(console.warn("Warning: timePoint parameter is deprecated. Please use dimensionGroupNumber instead. timePoint is zero-based while dimensionGroupNumber starts at 1."),v=l),!c){const P=Jn.getImage(e[0][0]);if(!P)throw new Error("Unable to determine number of components: No image found");if(c=P.getPixelData().length/(o[0]*o[1]),c>4||c<1||c===2)throw new Error(`Number of components ${c} must be 1, 3 or 4`)}const _=e.map(P=>e2.createImageVolumeVoxelManager({dimensions:o,imageIds:P,numberOfComponents:c,id:g})),T=new e2(o,{_get:P=>_[v]._get(P),_set:(P,I)=>_[v]._set(P,I),numberOfComponents:c,_id:g||"createScalarDynamicVolumeVoxelManager"});return T.getScalarDataLength=()=>_[v].getScalarDataLength(),T.getConstructor=()=>_[v].getConstructor(),T.getRange=()=>_[v].getRange(),T.getMiddleSliceData=()=>_[v].getMiddleSliceData(),T.setTimePoint=P=>{console.warn("Warning: setTimePoint is deprecated. Please use setDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),T.setDimensionGroupNumber(P+1)},T.setDimensionGroupNumber=P=>{v=P-1,T._get=I=>_[v]._get(I),T._set=(I,R)=>_[v]._set(I,R)},T.getAtIndexAndTimePoint=(P,I)=>(console.warn("Warning: getAtIndexAndTimePoint is deprecated. Please use getAtIndexAndDimensionGroup instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),T.getAtIndexAndDimensionGroup(P,I+1)),T.getAtIndexAndDimensionGroup=(P,I)=>_[I-1]._get(P),T.getTimePointScalarData=P=>(console.warn("Warning: getTimePointScalarData is deprecated. Please use getDimensionGroupScalarData instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),T.getDimensionGroupScalarData(P+1)),T.getDimensionGroupScalarData=P=>_[P-1].getCompleteScalarDataArray(),T.getCurrentTimePointScalarData=()=>(console.warn("Warning: getCurrentTimePointScalarData is deprecated. Please use getCurrentDimensionGroupScalarData instead."),T.getCurrentDimensionGroupScalarData()),T.getCurrentDimensionGroupScalarData=()=>_[v].getCompleteScalarDataArray(),T.getCurrentTimePoint=()=>(console.warn("Warning: getCurrentTimePoint is deprecated. Please use getCurrentDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),v),T.getCurrentDimensionGroupNumber=()=>v+1,T}static createImageVoxelManager({width:e,height:o,scalarData:i,numberOfComponents:l=1,id:c}){const g=[e,o,1];if(!l&&(l=i.length/e/o,l>4||l<1||l===2))throw new Error(`Number of components ${l} must be 1, 3 or 4`);return l>1?e2._createRGBScalarVolumeVoxelManager({dimensions:g,scalarData:i,numberOfComponents:l,id:c}):e2._createNumberVolumeVoxelManager({dimensions:g,scalarData:i,id:c})}static _createNumberVolumeVoxelManager({dimensions:e,scalarData:o,id:i}){const l=new e2(e,{_get:c=>o[c],_set:(c,g)=>{const v=o[c]!==g;return o[c]=g,v},_getConstructor:()=>o.constructor,_id:i||"_createNumberVolumeVoxelManager"});return l.scalarData=o,l.clear=()=>{l.scalarData.fill(0)},l.getMiddleSliceData=()=>{const c=Math.floor(e[2]/2);return l.getSliceData({sliceIndex:c,slicePlane:2})},l}static createMapVoxelManager({dimension:e,id:o}){const i=new Map,l=new e2(e,{_get:i.get.bind(i),_set:(c,g)=>i.set(c,g)&&!0,_id:o||"createMapVoxelManager"});return l.map=i,l}static createHistoryVoxelManager(e,o){const i=new Map,{dimensions:l}=e,c=new e2(l,{_get:g=>i.get(g),_set:function(g,v){if(i.has(g))v===i.get(g)&&i.delete(g);else{const _=this.sourceVoxelManager.getAtIndex(g);if(_===v)return!1;i.set(g,_)}this.sourceVoxelManager.setAtIndex(g,v)},_id:o||"createHistoryVoxelManager"});return c.map=i,c.scalarData=e.scalarData,c.sourceVoxelManager=e,c}static createRLEHistoryVoxelManager(e,o){const{dimensions:i}=e,l=new m6(i[0],i[1],i[2]),c=new e2(i,{_get:g=>l.get(g),_set:function(g,v){const _=l.get(g);if(_===void 0){const T=this.sourceVoxelManager.getAtIndex(g);if(T===v||T===void 0&&v===0||v===null)return!1;l.set(g,T??0)}else(v===_||v===null)&&(l.delete(g),v=_);this.sourceVoxelManager.setAtIndex(g,v)},_getScalarData:m6.getScalarData,_updateScalarData:g=>(l.updateScalarData(g),g),_id:o||"createRLEHistoryVoxelManager"});return c.map=l,c.sourceVoxelManager=e,c}static createLazyVoxelManager({dimensions:e,planeFactory:o,id:i}){const l=new Map,[c,g]=e,v=c*g,_=new e2(e,{_get:T=>l.get(Math.floor(T/v))[T%v],_set:(T,P)=>{const I=Math.floor(T/v);let R=l.get(I);return R||(R=o(c,g),l.set(I,R)),R[T%v]=P,!0},_id:i||"createLazyVoxelManager"});return _.map=l,_}static createRLEVolumeVoxelManager({dimensions:e,id:o}){const[i,l,c]=e,g=new m6(i,l,c),v=new e2(e,{_get:_=>g.get(_),_set:(_,T)=>(g.set(_,T),!0),_getScalarData:m6.getScalarData,_updateScalarData:_=>(g.updateScalarData(_),_),_id:o||"createRLEVolumeVoxelManager"});return v.map=g,v.getPixelData=g.getPixelData.bind(g),v}static createRLEImageVoxelManager({dimensions:e,id:o}){const[i,l]=e;return e2.createRLEVolumeVoxelManager({dimensions:[i,l,1],id:o})}static addInstanceToImage(e){const{width:o,height:i}=e,l=e.voxelManager.getScalarData();if(l.length>=o*i){e.voxelManager=e2.createScalarVolumeVoxelManager({dimensions:[o,i,1],scalarData:l});return}e.voxelManager=e2.createRLEVolumeVoxelManager({dimensions:[o,i,1]}),e.getPixelData=e.voxelManager.getPixelData,e.sizeInBytes=Zfe}};class K8{constructor(e){this._imageIdsIndexMap=new Map,this._imageURIsIndexMap=new Map,this.cornerstoneImageMetaData=null,this.isPreScaled=!1,this.numTimePoints=null,this.numFrames=null;const{imageIds:o,scaling:i,dimensions:l,spacing:c,origin:g,direction:v,dataType:_,volumeId:T,referencedVolumeId:P,metadata:I,referencedImageIds:R,additionalDetails:L,voxelManager:V,numberOfComponents:U}=e;if(!_)throw new Error('Data type is required, please provide a data type as string such as "Uint8Array", "Float32Array", etc.');let{imageData:j}=e;this.imageIds=o,this.volumeId=T,this.metadata=I,this.dimensions=l,this.spacing=c,this.origin=g,this.direction=v,this.dataType=_,this.vtkOpenGLTexture=xle.newInstance(),this.vtkOpenGLTexture.setVolumeId(T),this.voxelManager=V??gf.createImageVolumeVoxelManager({dimensions:l,imageIds:o,numberOfComponents:U}),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],j||(j=Wv.newInstance(),j.setDimensions(l),j.setSpacing(c),j.setDirection(v),j.setOrigin(g)),j.set({dataType:_,voxelManager:this.voxelManager,id:T,numberOfComponents:U||1}),j.set({hasScalarVolume:!1}),this.imageData=j,this.numFrames=this._getNumFrames(),this._reprocessImageIds(),i&&(this.scaling=i),P&&(this.referencedVolumeId=P),R&&(this.referencedImageIds=R),L&&(this.additionalDetails=L)}get sizeInBytes(){return this.voxelManager.sizeInBytes}get imageIds(){return this._imageIds}set imageIds(e){this._imageIds=e,this._reprocessImageIds()}_reprocessImageIds(){this._imageIdsIndexMap.clear(),this._imageURIsIndexMap.clear(),this._imageIds.forEach((e,o)=>{const i=Bs(e);this._imageIdsIndexMap.set(e,o),this._imageURIsIndexMap.set(i,o)})}isDynamicVolume(){return this.numTimePoints>1}getImageIdIndex(e){return this._imageIdsIndexMap.get(e)}getImageIdByIndex(e){return this._imageIds[e]}getImageURIIndex(e){return this._imageURIsIndexMap.get(e)}load(e){}destroy(){this.imageData.delete(),this.imageData=null,this.voxelManager.clear(),this.vtkOpenGLTexture.releaseGraphicsResources(),this.vtkOpenGLTexture.delete()}invalidate(){for(let e=0;eJn.getImage(o))}}let v3={};const Dd={add:(n,e)=>{Dd.addRaw(n,{...e,metadata:structuredClone(e.metadata)})},addRaw:(n,e)=>{const o=e.type;v3[n]||(v3[n]={}),v3[n][o]=e.metadata},get:(n,e)=>{var o;return(o=v3[e])==null?void 0:o[n]},clear:()=>{v3={}}};j8(Dd.get);const Y1=new AO("imageLoadPool");Y1.grabDelay=0;Y1.setMaxSimultaneousRequests(R0.Interaction,1e3);Y1.setMaxSimultaneousRequests(R0.Thumbnail,1e3);Y1.setMaxSimultaneousRequests(R0.Prefetch,1e3);const gj={};let Qfe;function pj(n,e){const o=Jn.getImageLoadObject(n);if(o)return FL(o.promise,n),o;const i=n.split(":")[0],l=gj[i]||Qfe;if(!l)throw new Error(`loadImageFromImageLoader: No image loader found for scheme '${i}'`);const c=l(n,e);return FL(c.promise,n),c}function FL(n,e){Promise.resolve(n).then(o=>{ehe(o),Or(pr,vr.IMAGE_LOADED,{image:o})}).catch(o=>{const i={imageId:e,error:o};Or(pr,vr.IMAGE_LOAD_FAILED,i)})}function ehe(n){if(!n.voxelManager){const{width:e,height:o,numberOfComponents:i}=n,l=gf.createImageVoxelManager({scalarData:n.getPixelData(),width:e,height:o,numberOfComponents:i});n.voxelManager=l,n.getPixelData=()=>l.getScalarData(),delete n.imageFrame.pixelData}}function the(n,e={priority:0,requestType:"prefetch"}){if(n===void 0)throw new Error("loadImage: parameter imageId must not be undefined");return pj(n,e).promise}function Xd(n,e={priority:0,requestType:"prefetch"}){if(n===void 0)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const o=pj(n,e);return Jn.getImageLoadObject(n)||Jn.putImageLoadObject(n,o),o.promise}function RE(n,e={}){var U;if(n===void 0)throw new Error("createAndCacheDerivedImage: parameter imageId must not be undefined");e.imageId===void 0&&(e.imageId=`derived:${H0()}`);const{imageId:o,skipCreateBuffer:i,onCacheAdd:l,voxelRepresentation:c}=e,g=Hr("imagePlaneModule",n),v=g.rows*g.columns,{TypedArrayConstructor:_}=PO((U=e.targetBuffer)==null?void 0:U.type,v),T=new _(i?1:v),P=o,I=Hr("imagePlaneModule",n);Dd.add(P,{type:"imagePlaneModule",metadata:I});const R=Hr("generalSeriesModule",n);Dd.add(P,{type:"generalSeriesModule",metadata:R}),Dd.add(P,{type:"generalImageModule",metadata:{instanceNumber:e.instanceNumber}});const L=Hr("imagePixelModule",n);Dd.add(P,{type:"imagePixelModule",metadata:{...L,bitsAllocated:8,bitsStored:8,highBit:7,samplesPerPixel:1,pixelRepresentation:0}});const V=mj(o,{scalarData:T,onCacheAdd:l,skipCreateBuffer:i,targetBuffer:{type:T.constructor.name},voxelRepresentation:c,dimensions:[g.columns,g.rows],spacing:[g.columnPixelSpacing,g.rowPixelSpacing],origin:g.imagePositionPatient,direction:g.imageOrientationPatient,frameOfReferenceUID:g.frameOfReferenceUID,referencedImageId:n});return V.referencedImageId=n,Jn.getImageLoadObject(o)||Jn.putImageSync(o,V),V}function nhe(n,e={}){if(n.length===0)throw new Error("createAndCacheDerivedImages: parameter imageIds must be list of image Ids");return n.map((i,l)=>{var g;const c={imageId:((g=e==null?void 0:e.getDerivedImageId)==null?void 0:g.call(e,i))||`derived:${H0()}`,...e};return RE(i,{...c,instanceNumber:l+1})})}function mj(n,e){const{scalarData:o,origin:i,direction:l,targetBuffer:c,skipCreateBuffer:g,onCacheAdd:v,frameOfReferenceUID:_,voxelRepresentation:T,referencedImageId:P}=e,I=e.dimensions,R=e.spacing;if(!I||!R)throw new Error("createAndCacheLocalImage: dimensions and spacing are required");const L=I[0],V=I[1],U=R[0],j=R[1],z={frameOfReferenceUID:_,rows:V,columns:L,imageOrientationPatient:l??[1,0,0,0,1,0],rowCosines:l?l.slice(0,3):[1,0,0],columnCosines:l?l.slice(3,6):[0,1,0],imagePositionPatient:i??[0,0,0],pixelSpacing:[j,U],rowPixelSpacing:j,columnPixelSpacing:U},$=L*V,K=o.length/$;let X;if(o){if(!(o instanceof Uint8Array||o instanceof Float32Array||o instanceof Uint16Array||o instanceof Int16Array))throw new Error("createAndCacheLocalImage: scalarData must be of type Uint8Array, Uint16Array, Int16Array or Float32Array");X=o}else if(!g){const{TypedArrayConstructor:je}=PO(c==null?void 0:c.type,$);X=new je($)}let ee,ne,le;if(X instanceof Uint8Array)ee=8,ne=8,le=7;else if(X instanceof Uint16Array)ee=16,ne=16,le=15;else if(X instanceof Int16Array)ee=16,ne=16,le=15;else if(X instanceof Float32Array)ee=32,ne=32,le=31;else throw new Error("Unsupported scalarData type");const ce={samplesPerPixel:1,photometricInterpretation:X.length>I[0]*I[1]?"RGB":"MONOCHROME2",rows:V,columns:L,bitsAllocated:ee,bitsStored:ne,highBit:le},ge={imagePlaneModule:z,imagePixelModule:ce};["imagePlaneModule","imagePixelModule"].forEach(je=>{Dd.add(n,{type:je,metadata:ge[je]||{}})});const pe=n,we=T===Pw.RLE&&gf.createRLEImageVoxelManager({dimensions:I,id:pe})||gf.createImageVoxelManager({height:V,width:L,numberOfComponents:K,scalarData:X,id:pe});let Te=X[0],Ve=X[0];for(let je=1;jeVe&&(Ve=X[je]);const Pe={imageId:n,intercept:0,windowCenter:0,windowWidth:0,color:ce.photometricInterpretation==="RGB",numberOfComponents:ce.samplesPerPixel,dataType:c==null?void 0:c.type,slope:1,minPixelValue:Te,maxPixelValue:Ve,rows:ce.rows,columns:ce.columns,getCanvas:void 0,height:ce.rows,width:ce.columns,rgba:void 0,columnPixelSpacing:z.columnPixelSpacing,rowPixelSpacing:z.rowPixelSpacing,FrameOfReferenceUID:z.frameOfReferenceUID,invert:!1,getPixelData:()=>we.getScalarData(),voxelManager:we,sizeInBytes:o.byteLength,referencedImageId:P};return v==null||v(Pe),Jn.putImageSync(Pe.imageId,Pe),Pe}function X7(n,e){gj[n]=e}function vj(n){const e=n[0],{pixelRepresentation:o,bitsAllocated:i,bitsStored:l,highBit:c,photometricInterpretation:g,samplesPerPixel:v}=Hr("imagePixelModule",e),_=[],T=Hr("voiLutModule",e);let P;if(T){const{windowWidth:$,windowCenter:K}=T;if(P=T==null?void 0:T.voiLUTFunction,Array.isArray($))for(let X=0;X<$.length;X++)_.push({windowWidth:$[X],windowCenter:K[X]});else _.push({windowWidth:$,windowCenter:K})}else _.push({windowWidth:void 0,windowCenter:void 0});const{modality:I,seriesInstanceUID:R}=Hr("generalSeriesModule",e),{imageOrientationPatient:L,pixelSpacing:V,frameOfReferenceUID:U,columns:j,rows:z}=Hr("imagePlaneModule",e);return{BitsAllocated:i,BitsStored:l,SamplesPerPixel:v,HighBit:c,PhotometricInterpretation:g,PixelRepresentation:o,Modality:I,ImageOrientationPatient:L,PixelSpacing:V,FrameOfReferenceUID:U,Columns:j,Rows:z,voiLut:_,VOILUTFunction:P,SeriesInstanceUID:R}}function kj(n){const{imagePositionPatient:e,imageOrientationPatient:o}=Hr("imagePlaneModule",n[0]),i=Ei(o[0],o[1],o[2]),l=Ei(o[3],o[4],o[5]),c=nr();ro(c,i,l);const g=Ei(e[0],e[1],e[2]),v=n[0].split(":")[0]==="wadouri";let _;function T(L){const{imagePositionPatient:V}=Hr("imagePlaneModule",L),U=nr(),j=Ei(V[0],V[1],V[2]);return z0(U,g,j),mi(U,c)}if(v){const L=[n[0],n[Math.floor(n.length/2)]];T(L[0]),T(L[1]);const V=Hr("imagePlaneModule",L[1]);if(!V)throw new Error("Incomplete metadata required for volume construction.");const U=nr(),j=Ei(V.imagePositionPatient[0],V.imagePositionPatient[1],V.imagePositionPatient[2]);z0(U,g,j);const z=mi(U,c);_=Math.abs(z)/Math.floor(n.length/2)}else{const L=n.map(U=>({distance:T(U),imageId:U}));L.sort((U,j)=>j.distance-U.distance);const V=L.length;_=Math.abs(L[V-1].distance-L[0].distance)/(V-1)}const{sliceThickness:P,spacingBetweenSlices:I}=Hr("imagePlaneModule",n[0]),{strictZSpacingForVolumeViewport:R}=NO().rendering;return(_===0||isNaN(_))&&!R&&(I?(console.debug("Could not calculate spacing. Using spacingBetweenSlices"),_=I):P?(console.debug("Could not calculate spacing and no spacingBetweenSlices. Using sliceThickness"),_=P):(console.debug("Could not calculate spacing. The VolumeViewport visualization is compromised. Setting spacing to 1 to render"),_=1)),_}function yj(n,e){const{imagePositionPatient:o,imageOrientationPatient:i}=Hr("imagePlaneModule",n[0]);if(!e){const P=Ei(i[0],i[1],i[2]),I=Ei(i[3],i[4],i[5]);e=nr(),ro(e,P,I)}const l=n[0].split(":")[0]==="wadouri",c=kj(n);let g;function v(P){const{imagePositionPatient:I}=Hr("imagePlaneModule",P),R=nr();return z0(R,o,I),mi(R,e)}if(l){const P=[n[0],n[Math.floor(n.length/2)]];g=n;const I=v(P[0]),R=v(P[1]);I-R<0&&g.reverse()}else{const P=n.map(I=>({distance:v(I),imageId:I}));P.sort((I,R)=>R.distance-I.distance),g=P.map(I=>I.imageId)}const{imagePositionPatient:_}=Hr("imagePlaneModule",g[0]);return{zSpacing:c,origin:_,sortedImageIds:g}}function wj(n){const e=Hr("modalityLutModule",n)||{},o=Hr("generalSeriesModule",n)||{},{modality:i}=o,l={rescaleSlope:e.rescaleSlope||1,rescaleIntercept:e.rescaleIntercept??0,modality:i},c=Hr("scalingModule",n)||{};return{...l,...i==="PT"&&{suvbw:c.suvbw,suvbsa:c.suvbsa,suvlbm:c.suvlbm},...i==="RTDOSE"&&{doseGridScaling:c.DoseGridScaling,doseSummation:c.DoseSummation,doseType:c.DoseType,doseUnit:c.DoseUnit}}}const JO=n=>Object.values(n).some(o=>typeof o=="number"&&!Number.isInteger(o)),VL={Uint8Array:"Uint8Array",Int16Array:"Int16Array",Uint16Array:"Uint16Array",Float32Array:"Float32Array"};function SC(n,e){const o=vj(n),{ImageOrientationPatient:i,PixelSpacing:l,Columns:c,Rows:g}=o,v=Ei(i[0],i[1],i[2]),_=Ei(i[3],i[4],i[5]),T=nr();ro(T,v,_);const{zSpacing:P,origin:I,sortedImageIds:R}=yj(n,T),L=n.length,V=[l[1],l[0],P],U=[c,g,L].map(z=>Math.floor(z)),j=[...v,..._,...T];return{dimensions:U,spacing:V,origin:I,dataType:rhe(R,o),direction:j,metadata:o,imageIds:R,volumeId:e,voxelManager:null,numberOfComponents:o.PhotometricInterpretation==="RGB"?3:1}}function rhe(n,e){const{BitsAllocated:o,PixelRepresentation:i}=e,l=i===1,c=ihe(n);if(c)return c;const[g,v,_]=[0,Math.floor(n.length/2),n.length-1],T=[g,v,_].map(L=>wj(n[L])),P=T.some(L=>L.rescaleIntercept<0||L.rescaleSlope<0),I=T.some(L=>JO(L)),R=LO();switch(o){case 8:return"Uint8Array";case 16:return R&&I?"Float32Array":l||P?"Int16Array":!l&&!P?"Uint16Array":"Float32Array";case 24:return"Uint8Array";case 32:return"Float32Array";default:throw new Error(`Bits allocated of ${o} is not defined to generate scalarData for the volume.`)}}function ihe(n){const o=[0,Math.floor(n.length/2),n.length-1].map(l=>Jn.getImage(n[l]));if(!o.every(Boolean))return null;const i=o[0].getPixelData().constructor.name;return o.every(l=>l.getPixelData().constructor.name===i)&&i in VL?VL[i]:null}let r9=class Cj{constructor(e){this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const o=new Cj("as iterator");return e.then(i=>{try{o.add(i,!0)}catch(l){o.reject(l)}},i=>{o.reject(i)}),o}add(e,o=!1){this.nextValue=e,this.done||(this.done=o),this.waiting&&(this.waiting.resolve(e),this.waiting=void 0)}resolve(){this.done=!0,this.waiting&&(this.waiting.resolve(this.nextValue),this.waiting=void 0)}reject(e){var o;this.rejectReason=e,(o=this.waiting)==null||o.reject(e)}getRecent(){if(this.rejectReason)throw this.rejectReason;return this.nextValue}async*[Symbol.asyncIterator](){for(;!this.done;){if(this.rejectReason)throw this.rejectReason;if(this.nextValue!==void 0&&(yield this.nextValue,this.done))break;this.waiting||(this.waiting={},this.waiting.promise=new Promise((e,o)=>{this.waiting.resolve=e,this.waiting.reject=o})),await this.waiting.promise}yield this.nextValue}async forEach(e,o){let i=0;try{for await(const l of this){const{done:c}=this;try{await e(l,c,i),i++}catch(g){if(!c){console.warn("Caught exception in intermediate value",g);continue}if(o)o(g,c);else throw g}}}catch(l){if(o)o(l,!0);else throw l}}generate(e,o){return e(this,this.reject.bind(this)).then(()=>{this.done||this.resolve()},i=>{this.reject(i),o?o(i):console.warn("Couldn't process because",i)})}async nextPromise(){for await(const e of this)if(e)return e;return this.nextValue}async donePromise(){for await(const e of this);return this.nextValue}getNextPromise(){const e=this.nextPromise();return e.iterator=this,e}getDonePromise(){const e=this.donePromise();return e.iterator=this,e}};const s6=new Map,UL="imageRetrieveConfiguration",rv={IMAGE_RETRIEVE_CONFIGURATION:UL,clear:()=>{s6.clear()},add:(n,e)=>{s6.set(n,e)},clone:()=>new Map(s6),restore:n=>{s6.clear(),n.forEach((e,o)=>{s6.set(o,e)})},get:(n,...e)=>{if(n===UL)return e.map(o=>s6.get(o)).find(o=>o!==void 0)}};j8(rv.get.bind(rv));function Kv(n){const e=Il(),o=[];return e.forEach(i=>{const c=i.getVolumeViewports().filter(g=>g.hasVolumeId(n));o.push(...c)}),o}const AE=n=>{const e=ohe(n);e!=null&&e.length&&e.forEach(({renderingEngine:o,viewportIds:i})=>{o.hasBeenDestroyed||o.renderViewports(i)})};function ohe(n){const e=Il(),o=[];return e.forEach(i=>{const l=Kv(n);l.length&&o.push({renderingEngine:i,viewportIds:l.map(c=>c.id)})}),o}const BL=[{id:"initialImages",retrieveType:"single"}],she=[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}],vS=[{offset:-1,imageQualityStatus:eu.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:eu.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:eu.FAR_REPLICATE}],ahe=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:R0.Thumbnail,priority:5,nearbyFrames:vS},{id:"quarterThumb",decimate:4,offset:3,requestType:R0.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:vS},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:R0.Thumbnail,retrieveType:"multipleFast",nearbyFrames:vS},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:R0.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:R0.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:R0.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:R0.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function _j(n,e,o=0){const i=[];for(let l=o;l=g)continue;const _={...o,imageId:c,imageQualityStatus:g};Jn.setPartialImage(c,_),n.successCallback(c,_)}catch(c){console.warn("Couldn't fill nearby item ",l.itemId,c)}}const F6=class F6{constructor(e){this.stages=e.stages||BL,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,o){return new uhe(this,e,o).loadImages()}};F6.createProgressive=xj,F6.interleavedRetrieveStages={stages:ahe},F6.singleRetrieveStages={stages:BL},F6.sequentialRetrieveStages={stages:she};let i9=F6;class uhe{constructor(e,o,i){this.outstandingRequests=0,this.stageStatusMap=new Map,this.displayedIterator=new r9("displayed"),this.stages=e.stages,this.retrieveOptions=e.retrieveOptions,this.imageIds=o,this.listener=i}async loadImages(){const e=this.createStageRequests();this.outstandingRequests=e.length;for(const o of e)this.addRequest(o);return this.outstandingRequests===0?Promise.resolve(null):this.displayedIterator.getDonePromise()}sendRequest(e,o){const{imageId:i,next:l}=e,c=(P,I)=>{this.listener.errorCallback(i,_||!l,P),I&&this.updateStageStatus(e.stage,P)},g=(o.loader||Xd)(i,o),v=r9.as(g);let _=!1;return v.forEach(async(P,I)=>{const R=Jn.getImageQuality(i);if(!P){console.warn("No image retrieved",i);return}const{imageQualityStatus:L}=P;if(_||(_=L===eu.FULL_RESOLUTION),R!==void 0&&R>L){this.updateStageStatus(e.stage,null,!0);return}this.listener.successCallback(i,P),this.displayedIterator.add(P),I&&this.updateStageStatus(e.stage),lhe(this.listener,e,P)},c).finally(()=>{if(!_&&l)Jn.setPartialImage(i),this.addRequest(l,o.streamingData);else{_||this.listener.errorCallback(i,!0,"Couldn't decode"),this.outstandingRequests--;for(let P=l;P;P=P.next)this.updateStageStatus(P.stage,null,!0)}this.outstandingRequests<=0&&this.displayedIterator.resolve()}),v.getDonePromise().catch(P=>null)}addRequest(e,o={}){const{imageId:i,stage:l}=e,c=this.listener.getLoaderImageOptions(i);if(!c)return;const{retrieveType:g="default"}=l,{retrieveOptions:v}=this,_=v[g]||v.default,T={...c,retrieveType:g,retrieveOptions:_,streamingData:o},P=l.priority??-5,I=l.requestType||R0.Interaction,R={imageId:i};Y1.addRequest(this.sendRequest.bind(this,e,T),I,R,P)}updateStageStatus(e,o,i=!1){const{id:l}=e,c=this.stageStatusMap.get(l);if(c&&(c.imageLoadPendingCount--,o?c.imageLoadFailedCount++:i||c.totalImageCount++,!i&&!c.stageStartTime&&(c.stageStartTime=Date.now()),!c.imageLoadPendingCount)){const{imageLoadFailedCount:g,totalImageCount:v,stageStartTime:_=Date.now(),startTime:T}=c,P={stageId:l,numberOfFailures:g,numberOfImages:v,stageDurationInMS:_?Date.now()-_:null,startDurationInMS:Date.now()-T};Or(pr,vr.IMAGE_RETRIEVAL_STAGE,P),this.stageStatusMap.delete(l)}}createStageRequests(){const e=new Array,o=new Map,i=(l,c)=>{const g=c<0?this.imageIds.length+c:c<1?Math.floor((this.imageIds.length-1)*c):c,v=this.imageIds[g];if(!v)throw new Error(`No value found to add to requests at ${c}`);const _={imageId:v,stage:l,index:g,nearbyRequests:this.findNearbyRequests(g,l)};this.addStageStatus(l);const T=o.get(v);T?T.next=_:e.push(_),o.set(v,_)};for(const l of this.stages)(l.positions||_j(this.imageIds,l.decimate||1,l.offset??0)).forEach(g=>{i(l,g)});return e}findNearbyRequests(e,o){const i=new Array;if(!o.nearbyFrames)return i;for(const l of o.nearbyFrames){const c=e+l.offset;c<0||c>=this.imageIds.length||i.push({itemId:this.imageIds[c],imageQualityStatus:l.imageQualityStatus,index:c})}return i}addStageStatus(e){const{id:o}=e,i=this.stageStatusMap.get(o)||{stageId:o,startTime:Date.now(),stageStartTime:null,totalImageCount:0,imageLoadFailedCount:0,imageLoadPendingCount:0};return i.imageLoadPendingCount++,this.stageStatusMap.set(o,i),i}}function xj(n){return new i9(n)}const GL=R0.Prefetch;class che extends K8{constructor(e,o){super(e),this.framesLoaded=0,this.framesProcessed=0,this.framesUpdated=0,this.autoRenderOnLoad=!0,this.cachedFrames=[],this.reRenderTarget=0,this.reRenderFraction=2,this.imagesLoader=this,this.cancelLoading=()=>{const{loadStatus:i}=this;if(!i||!i.loading)return;i.loading=!1,i.cancelled=!0,this.clearLoadCallbacks();const l=({additionalDetails:c})=>c.volumeId!==this.volumeId;Y1.filterRequests(l)},this.loadStatus=o.loadStatus}invalidateVolume(e){const{vtkOpenGLTexture:o}=this,{numFrames:i}=this;for(let l=0;lthis.reRenderTarget||i===l)&&(this.reRenderTarget+=g,AE(c)),i===l){v.callbacks.forEach(I=>I(e));const P={FrameOfReferenceUID:T,volumeId:c};Or(pr,vr.IMAGE_VOLUME_LOADING_COMPLETED,P)}}updateTextureAndTriggerEvents(e,o,i=eu.FULL_RESOLUTION){const l=this.imageIdIndexToFrameIndex(e),{cachedFrames:c,numFrames:g,totalNumFrames:v}=this,{FrameOfReferenceUID:_}=this.metadata;if(c[l]>i||c[l]===eu.FULL_RESOLUTION)return;const P=i===eu.FULL_RESOLUTION;c[e]=i,this.framesUpdated++,P&&(this.framesLoaded++,this.framesProcessed++);const I={FrameOfReferenceUID:_,volumeId:this.volumeId,numberOfFrames:g,framesProcessed:this.framesProcessed};Or(pr,vr.IMAGE_VOLUME_MODIFIED,I),P&&this.framesProcessed===this.totalNumFrames&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!0,imageIdIndex:e,imageId:o,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:g,totalNumFrames:v,complete:P,imageQualityStatus:i}),this.vtkOpenGLTexture.setUpdatedFrame(l),this.loadStatus.loaded&&(this.loadStatus.callbacks=[])}successCallback(e,o){const i=this.getImageIdIndex(e),{imageQualityStatus:l}=o;if(this.loadStatus.cancelled){console.warn("volume load cancelled, returning for imageIdIndex: ",i);return}this.updateTextureAndTriggerEvents(i,e,l),this.isDynamicVolume()&&this.checkDimensionGroupCompletion(i)}errorCallback(e,o,i){if(!o)return;const{totalNumFrames:l,numFrames:c}=this,g=this.getImageIdIndex(e);this.framesProcessed++,this.framesProcessed===l&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!1,imageId:e,imageIdIndex:g,error:i,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:c,totalNumFrames:l}),this.loadStatus.loaded&&(this.loadStatus.callbacks=[]);const v={error:i,imageIdIndex:g,imageId:e};Or(pr,vr.IMAGE_LOAD_ERROR,v)}load(e){const{imageIds:o,loadStatus:i,numFrames:l}=this,{transferSyntaxUID:c}=Hr("transferSyntax",o[0])||{},g=Hr(rv.IMAGE_RETRIEVE_CONFIGURATION,this.volumeId,c,"volume");if(this.imagesLoader=this.isDynamicVolume()?this:g?(g.create||i9.createProgressive)(g):this,i.loading===!0)return;const{loaded:v}=this.loadStatus,_=o.length;if(v){e&&e({success:!0,framesLoaded:_,framesProcessed:_,numFrames:l,totalNumFrames:_});return}e&&this.loadStatus.callbacks.push(e),this._prefetchImageIds()}getLoaderImageOptions(e){const{transferSyntaxUID:o}=Hr("transferSyntax",e)||{},i=Hr("imagePlaneModule",e)||{},{rows:l,columns:c}=i,g=this.getImageIdIndex(e),v=Hr("modalityLutModule",e)||{},_=Hr("generalSeriesModule",e)||{},T={rescaleSlope:v.rescaleSlope,rescaleIntercept:v.rescaleIntercept,modality:_.modality},P=T.modality;if(P==="PT"||P==="RTDOSE"){const V=Hr("scalingModule",e);V&&(this._addScalingToVolume(V),Object.assign(T,V))}const I=JO(T),R=LO();if(this.isPreScaled=!0,T&&T.rescaleSlope!==void 0&&T.rescaleIntercept!==void 0){const{rescaleSlope:V,rescaleIntercept:U}=T;this.isPreScaled=typeof V=="number"&&typeof U=="number"}return!R&&I&&(this.isPreScaled=!1),{targetBuffer:{type:this.dataType,rows:l,columns:c},allowFloatRendering:R,preScale:{enabled:this.isPreScaled,scalingParameters:T},transferPixelData:!0,requestType:GL,transferSyntaxUID:o,additionalDetails:{imageId:e,imageIdIndex:g,volumeId:this.volumeId}}}callLoadImage(e,o,i){const{cachedFrames:l}=this;if(l[o]===eu.FULL_RESOLUTION)return;const c=v=>{const{image:_}=v.detail;_.imageId===e&&(this.vtkOpenGLTexture.setUpdatedFrame(o),pr.removeEventListener(vr.IMAGE_CACHE_IMAGE_ADDED,c))};return pr.addEventListener(vr.IMAGE_CACHE_IMAGE_ADDED,c),r9.as(Xd(e,i)).forEach(v=>{this.successCallback(e,v)},this.errorCallback.bind(this,o,e))}getImageIdsRequests(e,o){this.totalNumFrames=this.imageIds.length;const i=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(i/100),this.reRenderTarget=this.reRenderFraction),e.map(c=>{const g=this.getImageIdIndex(c),v=GL,_=o,T=this.getLoaderImageOptions(c);return{callLoadImage:this.callLoadImage.bind(this),imageId:c,imageIdIndex:g,options:T,priority:_,requestType:v,additionalDetails:{volumeId:this.volumeId}}})}getImageLoadRequests(e){throw new Error("Abstract method")}getImageIdsToLoad(){throw new Error("Abstract method")}loadImages(){return this.loadStatus.loading=!0,this.getImageLoadRequests(5).reverse().forEach(o=>{if(!o)return;const{callLoadImage:i,imageId:l,imageIdIndex:c,options:g,priority:v,requestType:_,additionalDetails:T}=o;Y1.addRequest(i.bind(this,l,c,g),_,T,v)}),Promise.resolve(!0)}_prefetchImageIds(){this.loadStatus.loading=!0;const e=[...this.getImageIdsToLoad()];this.totalNumFrames=this.imageIds.length;const o=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(o/100),this.reRenderTarget=this.reRenderFraction),this.imagesLoader.loadImages(e,this).catch(i=>{console.debug("progressive loading failed to complete",i)})}_addScalingToVolume(e){if(this.scaling)return;const{suvbw:o,suvlbm:i,suvbsa:l}=e,c={};i&&(c.suvbwToSuvlbm=i/o),l&&(c.suvbwToSuvbsa=l/o),o&&(c.suvbw=o),this.scaling={PT:c}}checkDimensionGroupCompletion(e){}}class fhe extends che{constructor(e,o){e.imageIds||(e.imageIds=o.imageIds),super(e,o),this.getImageIdsToLoad=()=>{const{imageIds:i}=this;return this.numFrames=i.length,i}}getScalarData(){return this.voxelManager.getScalarData()}getImageLoadRequests(e){const{imageIds:o}=this;return this.getImageIdsRequests(o,e)}}function hhe(n,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a streaming image volume");async function o(){if(e.imageIds[0].split(":")[0]==="wadouri"){const[V,U]=[Math.floor(e.imageIds.length/2),e.imageIds.length-1],j=[0,V,U];await Promise.all(j.map(z=>Jn.isLoaded(e.imageIds[z])?Promise.resolve(!0):new Promise(($,K)=>{const X=e.imageIds[z];Y1.addRequest(async()=>{the(X).then(()=>{console.log(`Prefetched imageId: ${X}`),$(!0)}).catch(ee=>{K(ee)})},R0.Prefetch,{volumeId:n},1)}))).catch(console.error)}const l=SC(e.imageIds,n),{dimensions:c,spacing:g,origin:v,direction:_,metadata:T,imageIds:P,dataType:I,numberOfComponents:R}=l;return new fhe({volumeId:n,metadata:T,dimensions:c,spacing:g,origin:v,direction:_,imageIds:P,dataType:I,numberOfComponents:R},{imageIds:P,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}})}const i=o();return{promise:i,decache:()=>{i.then(l=>{l.destroy(),l=null})},cancel:()=>{i.then(l=>{l.cancelLoading()})}}}const Sj={};let Y7=hhe;function Tj(n,e){const o=n.indexOf(":"),i=n.substring(0,o);let l=Sj[i];if(l==null){if(Y7==null||typeof Y7!="function")throw new Error(`No volume loader for scheme ${i} has been registered`);l=Y7}const c=l(n,e);return c.promise.then(function(g){Or(pr,vr.VOLUME_LOADED,{volume:g})},function(g){const v={volumeId:n,error:g};Or(pr,vr.VOLUME_LOADED_FAILED,v)}),c}function Ej(n,e={imageIds:[]}){if(n===void 0)throw new Error("loadVolume: parameter volumeId must not be undefined");let o=Jn.getVolumeLoadObject(n);return o!==void 0?o.promise:(o=Tj(n,e),o.promise.then(i=>i))}async function ZO(n,e){if(n===void 0)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let o=Jn.getVolumeLoadObject(n);return o!==void 0||(o=Tj(n,e),Jn.putVolumeLoadObject(n,o)),o.promise}function dhe(n,e){const o=Jn.getVolume(n);if(!o)throw new Error(`Cannot created derived volume: Referenced volume with id ${n} does not exist.`);let{volumeId:i}=e;const{voxelRepresentation:l}=e;i===void 0&&(i=H0());const{metadata:c,dimensions:g,spacing:v,origin:_,direction:T}=o,P=o.isDynamicVolume()?o.getCurrentDimensionGroupImageIds():o.imageIds??[],I=nhe(P,{targetBuffer:e.targetBuffer,voxelRepresentation:l}),R=I[0].dataType,L=I.map(U=>U.imageId),V=new K8({volumeId:i,dataType:R,metadata:structuredClone(c),dimensions:[g[0],g[1],g[2]],spacing:v,origin:_,direction:T,referencedVolumeId:n,imageIds:L,referencedImageIds:o.imageIds??[]});return Jn.putVolumeSync(i,V),V}async function Dj(n,e){if(e===void 0)throw new Error("createAndCacheVolumeFromImages: parameter imageIds must not be undefined");if(n===void 0)throw new Error("createAndCacheVolumeFromImages: parameter volumeId must not be undefined");const o=Jn.getVolume(n);return o||(e.filter(c=>!Jn.getImage(c)).length===0?TC(n,e):await ZO(n,{imageIds:e}))}function TC(n,e){if(e===void 0)throw new Error("createAndCacheVolumeFromImagesSync: parameter imageIds must not be undefined");if(n===void 0)throw new Error("createAndCacheVolumeFromImagesSync: parameter volumeId must not be undefined");const o=Jn.getVolume(n);if(o)return o;const i=SC(e,n),l=new K8({volumeId:n,dataType:i.dataType,metadata:structuredClone(i.metadata),dimensions:i.dimensions,spacing:i.spacing,origin:i.origin,direction:i.direction,referencedVolumeId:i.referencedVolumeId,imageIds:i.imageIds,referencedImageIds:i.referencedImageIds});return Jn.putVolumeSync(n,l),l}function QO(n,e={}){const{metadata:o,dimensions:i,spacing:l,origin:c,direction:g,scalarData:v,targetBuffer:_,preventCache:T=!1}=e,P=Jn.getVolume(n);if(P)return P;const I=i[0]*i[1],R=v?v.constructor.name:(_==null?void 0:_.type)??"Float32Array",L=I*i[2];let V;switch(R){case"Uint8Array":case"Int8Array":V=L;break;case"Uint16Array":case"Int16Array":V=L*2;break;case"Float32Array":V=L*4;break}if(!Jn.isCacheable(V))throw new Error(`Cannot created derived volume: Volume with id ${n} is not cacheable.`);const j=[];for(let K=0;K1&&(I=Math.min(...I),R=Math.max(...R)),{lower:I,upper:R}}function xhe(n,e){var o;return!(n!=="PT"||!e.isPreScaled||!((o=e.scaling)!=null&&o.PT.suvbw))}async function LE(n,e,o,i=!1){const{volumeId:l,callback:c,blendMode:g}=n,v=await Ej(l);if(!v)throw new Error(`imageVolume with id: ${v.volumeId} does not exist`);const{imageData:_,vtkOpenGLTexture:T}=v,P=mhe(_,T);g&&P.setBlendMode(g);const I=wue.newInstance();I.setMapper(P);const{numberOfComponents:R}=_.get("numberOfComponents");return I.getProperty().set({viewportId:o}),R===3&&I.getProperty().setIndependentComponents(!1),await eM(I,v),c&&c({volumeActor:I,volumeId:l}),i||She(e,o,I,l),I}function She(n,e,o,i){const l=o.getProperty().getRGBTransferFunction(0).getRange(),c={viewportId:e,range:{lower:l[0],upper:l[1]},volumeId:i};Or(n,vr.VOI_MODIFIED,c)}const wf=n=>{const e="volumeId:",o=n.includes(e)?n.substring(e.length):n,i=o.indexOf("sliceIndex=");return i===-1?o:o.substring(0,i-1)},The=1+ou,Ehe=(n,e)=>e===n.substring(0,Math.min(n.length,e.length)),WL=n=>!!ghe().find(e=>Ehe(n.volumeId,e));function q8(n,e,o,i=!1){const{viewPlaneNormal:l}=e,c=n.getActors();if(!c.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const g=c.map(T=>{const P=T.referencedId??T.uid;return Jn.getVolume(P)}).filter(T=>!!T);if(o){const T=wf(o),P=g.findIndex(V=>T.includes(V.volumeId)),I=g[P],{uid:R}=c[P],L=$L(I,l,n,i);return{imageVolume:I,spacingInNormalDirection:L,actorUID:R}}if(!g.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const v={spacingInNormalDirection:1/0,imageVolume:null,actorUID:null},_=g.find(WL);for(let T=0;TV.referencedId===i.volumeId||V.uid===i.volumeId);g||console.warn("No actor found for with actorUID of",i.volumeId);const v=g.actor,_=_C(v,l,c),{min:T,max:P,current:I}=_,R=Math.round((P-T)/o)+1;let L=(I-T)/(P-T)*R;return L=Math.floor(L),L>R-1?L=R-1:L<0&&(L=0),{numberOfSlices:R,imageIndex:L}}const M6={};function Dhe(n){M6[n]!==void 0&&delete M6[n]}function Ihe(n){const{renderingEngineId:e,viewportId:o}=n.detail,l=ha(e).getViewport(o);if(!("setVolumes"in l))throw new Error("volumeNewImageEventDispatcher: viewport does not have setVolumes method");M6[l.id]===void 0&&(M6[l.id]=0);const c=o9(l);if(!c){console.warn(`volumeNewImageEventDispatcher: sliceData is undefined for viewport ${l.id}`);return}const{numberOfSlices:g,imageIndex:v}=c;if(M6[l.id]===v)return;M6[l.id]=v;const _={imageIndex:v,viewportId:o,renderingEngineId:e,numberOfSlices:g};Or(l.element,vr.VOLUME_NEW_IMAGE,_)}function x8(n,e,o){const[i,l,c]=n,[g,v,_]=e,[T,P,I,R]=o,L=g-i,V=v-l,U=_-c,j=-1*(T*i+P*l+I*c-R)/(T*L+P*V+I*U),z=L*j+i,$=V*j+l,K=U*j+c;return[z,$,K]}function lf(n,e,o=!1){const[i,l,c]=n,g=i*e[0]+l*e[1]+c*e[2];if(o){const v=Math.sqrt(i*i+l*l+c*c);return[i/v,l/v,c/v,g/v]}return[i,l,c,g]}function Ij(n,e,o){const[i,l,c,g]=n,[v,_,T,P]=e,[I,R,L,V]=o,U=V3(i,v,I,l,_,R,c,T,L),j=V3(g,P,V,l,_,R,c,T,L),z=V3(i,v,I,g,P,V,c,T,L),$=V3(i,v,I,l,_,R,g,P,V),K=ug(j)/ug(U),X=ug(z)/ug(U),ee=ug($)/ug(U);return[K,X,ee]}function iv(n,e,o=!1){const[i,l,c,g]=n,[v,_,T]=e,P=i*v+l*_+c*T-g,I=Math.abs(P)/Math.sqrt(i*i+l*l+c*c);return(o?Math.sign(P):1)*I}function Oj(n,e,o=ou){return iv(e,n)Number.isNaN(e)):Number.isNaN(n)}function Ou(n){if(n===null||typeof n!="object"||typeof n=="function"||typeof structuredClone=="function")return n;if(Array.isArray(n))return n.map(Ou);{const e={};for(const o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=Ou(n[o]));return e}}const Sm=class Sm{constructor(e){this.insetImageMultiplier=1.1,this.flipHorizontal=!1,this.flipVertical=!1,this.viewportStatus=l1.NO_DATA,this._suppressCameraModifiedEvents=!1,this.hasPixelSpacing=!0,this.getProperties=()=>({}),this.setRotation=o=>{},this.viewportWidgets=new Map,this.addWidget=(o,i)=>{this.viewportWidgets.set(o,i)},this.getWidget=o=>this.viewportWidgets.get(o),this.getWidgets=()=>Array.from(this.viewportWidgets.values()),this.removeWidgets=()=>{this.getWidgets().forEach(i=>{if(i.getEnabled()&&i.setEnabled(!1),i.getActor&&i.getRenderer){const l=i.getActor(),c=i.getRenderer();c&&l&&c.removeActor(l)}})},this.id=e.id,this.renderingEngineId=e.renderingEngineId,this.type=e.type,this.element=e.element,this.canvas=e.canvas,this.sx=e.sx,this.sy=e.sy,this.sWidth=e.sWidth,this.sHeight=e.sHeight,this._actors=new Map,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.defaultOptions=Ou(e.defaultOptions),this.suppressEvents=e.defaultOptions.suppressEvents?e.defaultOptions.suppressEvents:!1,this.options=Ou(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus===l1.NO_DATA||this.viewportStatus===l1.LOADING||(this.viewportStatus=l1.RENDERED)}setColorTransform(e,o){let i=null;if(!e&&!o)return;const l=o||[255,255,255],c=Math.max(...l),g=l.map(I=>c/I),{lower:v=0,upper:_=255}=e||{},T=(_-v+1)/255,P=v/255;return i=`url('data:image/svg+xml, #colour')`,i}getRenderingEngine(){return Zm.get(this.renderingEngineId)}getRenderer(){var o;const e=this.getRenderingEngine();if(!e||e.hasBeenDestroyed)throw new Error("Rendering engine has been destroyed");return(o=e.offscreenMultiRenderWindow)==null?void 0:o.getRenderer(this.id)}render(){this.getRenderingEngine().renderViewport(this.id)}setOptions(e,o=!1){var i,l;this.options=structuredClone(e),(i=this.options)!=null&&i.displayArea&&this.setDisplayArea((l=this.options)==null?void 0:l.displayArea),o&&this.render()}reset(e=!1){this.options=structuredClone(this.defaultOptions),e&&this.render()}getSliceViewInfo(){throw new Error("Method not implemented.")}flip({flipHorizontal:e,flipVertical:o}){const i=this.getDefaultImageData();if(!i)return;const l=this.getCamera(),{viewPlaneNormal:c,viewUp:g,focalPoint:v,position:_}=l,T=ro(nr(),c,g);let P=sie(nr(),g);const I=sf(nr(),c),R=y2(_,v),V=i.getDimensions().map(ee=>Math.floor(ee/2)),U=[V[0],V[1],V[2]],j=i.indexToWorld(U,nr()),z=this._getFocalPointForResetCamera(j,l,{resetPan:!0,resetToCenter:!1}),$=Wo(nr(),v,z),K=K1($),X=ee=>{const ne=k2(nr(),ee,2*mi($,ee));return Wo(ne,ne,$),Uo(ne,ne),ne};if(e){const ee=X(P),ne=j0(nr(),z,ee,K),le=j0(nr(),ne,I,R);this.setCamera({viewPlaneNormal:I,position:le,focalPoint:ne}),this.flipHorizontal=!this.flipHorizontal}if(o){P=sf(P,g);const ee=X(T),ne=j0(nr(),z,ee,K),le=j0(nr(),ne,I,R);this.setCamera({focalPoint:ne,viewPlaneNormal:I,viewUp:P,position:le}),this.flipVertical=!this.flipVertical}this.render()}getDefaultImageData(){const e=this.getDefaultActor();if(e&&ac(e))return e.actor.getMapper().getInputData()}getDefaultActor(){return this.getActors()[0]}getActors(){return Array.from(this._actors.values())}getActorUIDs(){return Array.from(this._actors.keys())}getActor(e){return this._actors.get(e)}getImageActor(e){const o=this.getActors();let i=o[0];return e&&(i=o.find(c=>c.referencedId===e)),!i||!ac(i)?null:i.actor}getActorUIDByIndex(e){const o=this.getActors()[e];if(o)return o.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){const o=this.getActors();this.removeAllActors(),this.addActors(e,{resetCamera:!0}),Or(this.element,vr.ACTORS_CHANGED,{viewportId:this.id,removedActors:o,addedActors:e,currentActors:e})}_removeActor(e){const o=this.getActor(e);if(!o){console.warn(`Actor ${e} does not exist in ${this.id}, can't remove`);return}return this.getRenderer().removeActor(o.actor),this._actors.delete(e),o}removeActors(e){const o=[];e.forEach(l=>{const c=this._removeActor(l);c&&o.push(c)});const i=this.getActors();Or(this.element,vr.ACTORS_CHANGED,{viewportId:this.id,removedActors:o,addedActors:[],currentActors:i})}addActors(e,o={}){const{resetCamera:i=!1}=o,l=this.getRenderingEngine();if(!l||l.hasBeenDestroyed){console.warn("Viewport::addActors::Rendering engine has not been initialized or has been destroyed");return}e.forEach(v=>{this.addActor(v)});const c=this.getViewPresentation(),g=this.getViewReference();this.resetCamera(),i||(this.setViewReference(g),this.setViewPresentation(c)),Or(this.element,vr.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:e,currentActors:this.getActors()})}addActor(e){const{uid:o,actor:i}=e,l=this.getRenderingEngine();if(!l||l.hasBeenDestroyed){console.warn(`Cannot add actor UID of ${o} Rendering Engine has been destroyed`);return}if(!o||!i)throw new Error("Actors should have uid and vtk Actor properties");if(this.getActor(o)){console.warn(`Actor ${o} already exists for this viewport`);return}const c=this.getRenderer();c==null||c.addActor(i),this._actors.set(o,Object.assign({},e)),this.updateCameraClippingPlanesAndRange(),Or(this.element,vr.ACTORS_CHANGED,{viewportId:this.id,removedActors:[],addedActors:[e],currentActors:this.getActors()})}removeAllActors(){var o;const e=this.getActors();(o=this.getRenderer())==null||o.removeAllViewProps(),this._actors=new Map,Or(this.element,vr.ACTORS_CHANGED,{viewportId:this.id,removedActors:e,addedActors:[],currentActors:[]})}resetCameraNoEvent(){this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=!1}setCameraNoEvent(e){this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=!1}_getViewImageDataIntersections(e,o,i){const l=i[0],c=i[1],g=i[2],v=l*o[0]+c*o[1]+g*o[2],_=e.getBounds(),T=this._getEdges(_),P=[];for(const I of T){const[[R,L,V],[U,j,z]]=I;if(l*(U-R)+c*(j-L)+g*(z-V)===0)continue;const $=x8([R,L,V],[U,j,z],[l,c,g,v]);this._isInBounds($,_)&&P.push($)}return P}setInterpolationType(e,o){}setDisplayArea(e,o=!1){var g;if(!e)return;const{storeAsInitialCamera:i,type:l}=e;i&&(this.options.displayArea=e);const{_suppressCameraModifiedEvents:c}=this;if(this._suppressCameraModifiedEvents=!0,this.setCamera(this.fitToCanvasCamera),l==="SCALE"?this.setDisplayAreaScale(e):(this.setInterpolationType(((g=this.getProperties())==null?void 0:g.interpolationType)??oh.LINEAR),this.setDisplayAreaFit(e)),i&&(this.initialCamera=this.getCamera()),this._suppressCameraModifiedEvents=c,!o&&!c){const v={viewportId:this.id,displayArea:e,storeAsInitialCamera:i};Or(this.element,vr.DISPLAY_AREA_MODIFIED,v),this.setCamera(this.getCamera())}}setDisplayAreaScale(e){const{scale:o=1}=e,i=this.canvas,l=i.height,c=i.width;if(l<8||c<8)return;const _=this.getDefaultImageData().getSpacing()[1];this.setInterpolationType(oh.NEAREST),this.setCamera({parallelScale:l*_/(2*o)}),delete e.imageArea,this.setDisplayAreaFit(e);const{focalPoint:T,position:P,viewUp:I,viewPlaneNormal:R}=this.getCamera(),L=nr();if(i.height%2&&j0(L,L,I,o*.5*_),i.width%2){const V=ro(nr(),I,R);j0(L,L,V,o*.5*_)}!L[0]&&!L[1]&&!L[2]||this.setCamera({focalPoint:v2(nr(),T,L),position:v2(nr(),P,L)})}setDisplayAreaFit(e){const{imageArea:o,imageCanvasPoint:i}=e,l=(window==null?void 0:window.devicePixelRatio)||1,c=this.getDefaultImageData();if(!c)return;const g=this.sWidth/l,v=this.sHeight/l,_=c.getDimensions(),T=this.worldToCanvas(c.indexToWorld([0,0,0])),P=this.worldToCanvas(c.indexToWorld([_[0],_[1],_[2]])),I=[Math.abs(P[0]-T[0]),Math.abs(P[1]-T[1])],[R,L]=I;let V=this.getZoom()/this.insetImageMultiplier;if(o){const[U,j]=o,z=Math.max(Math.abs(R/g),Math.abs(L/v)),$=Math.abs(U*R/g),K=Math.abs(j*L/v),X=this.getZoom(),ee=this.getZoom(this.fitToCanvasCamera);V=($>K?z/$:z/K)*X/ee,this.setZoom(this.insetImageMultiplier*V,!1)}if(i){const{imagePoint:U,canvasPoint:j=U||[.5,.5]}=i,[z,$]=j,K=g*(z-.5),X=v*($-.5),[ee,ne]=U||j,le=V,ce=this.insetImageMultiplier*le*R*(.5-ee),ge=this.insetImageMultiplier*le*L*(.5-ne),pe=ce+K,we=ge+X,Te=[pe,we];W2(Te,Te,this.getPan()),this.setPan(Te,!1)}}getDisplayArea(){var e;return(e=this.options)==null?void 0:e.displayArea}resetCamera(e){const{resetPan:o=!0,resetZoom:i=!0,resetToCenter:l=!0,storeAsInitialCamera:c=!0}=e||{},g=this.getRenderer();this.setCameraNoEvent({flipHorizontal:!1,flipVertical:!1});const v=this.getCamera();let _;const T=this.getDefaultActor();T&&ac(T)?_=T.actor.getMapper().getInputData().getBounds():_=g.computeVisiblePropBounds();const P=[0,0,0],I=this.getDefaultImageData();if(I){const Pe=I.getSpacing();_[0]=_[0]+Pe[0]/2,_[1]=_[1]-Pe[0]/2,_[2]=_[2]+Pe[1]/2,_[3]=_[3]-Pe[1]/2,_[4]=_[4]+Pe[2]/2,_[5]=_[5]-Pe[2]/2}const R=this.getVtkActiveCamera(),L=R.getViewPlaneNormal(),V=R.getViewUp();if(P[0]=(_[0]+_[1])/2,P[1]=(_[2]+_[3])/2,P[2]=(_[4]+_[5])/2,I){const je=I.getDimensions().map(it=>Math.floor(it/2)),Je=[je[0],je[1],je[2]];I.indexToWorld(Je,P)}const{widthWorld:U,heightWorld:j}=this._getWorldDistanceViewUpAndViewRight(_,V,L),z=[this.sWidth,this.sHeight],$=U/j,K=z[0]/z[1],X=$/K,ee=X<1?this.insetImageMultiplier*j/2:this.insetImageMultiplier*j*X/2,ne=Sm.boundsRadius(_)*(this.type===fs.VOLUME_3D?10:1),le=this.insetImageMultiplier*ne,ce=Math.abs(h0.dot(V,L))>.999?[-V[2],V[0],V[1]]:V,ge=this._getFocalPointForResetCamera(P,v,{resetPan:o,resetToCenter:l}),pe=[ge[0]+le*L[0],ge[1]+le*L[1],ge[2]+le*L[2]];g.resetCameraClippingRange(_);const we=[-oa.MAXIMUM_RAY_DISTANCE,oa.MAXIMUM_RAY_DISTANCE];R.setPhysicalScale(ne),R.setPhysicalTranslation(-ge[0],-ge[1],-ge[2]),this.setCamera({parallelScale:i?ee:v.parallelScale,focalPoint:ge,position:pe,viewAngle:90,viewUp:ce,clippingRange:we});const Te=this.getCamera();this.setFitToCanvasCamera(this.getCamera()),c&&this.setInitialCamera(Te),i&&this.setZoom(1,c);const Ve={type:"ResetCameraEvent",renderer:g};return g.invokeEvent(Ve),this.triggerCameraModifiedEventIfNecessary(v,Te),I&&this.options.displayArea&&i&&o&&l&&this.setDisplayArea(this.options.displayArea),!0}setInitialCamera(e){this.initialCamera=e}setFitToCanvasCamera(e){this.fitToCanvasCamera=e}getPan(e=this.initialCamera){if(!e)return[0,0];const i=this.getVtkActiveCamera().getFocalPoint(),l=this.canvasToWorld([0,0]),c=this.worldToCanvas(Wo([0,0,0],e.focalPoint,l)),g=this.worldToCanvas(Wo([0,0,0],i,l));return ra([0,0],c,g)}getCurrentImageIdIndex(){throw new Error("Not implemented")}getSliceIndex(){throw new Error("Not implemented")}getImageData(){throw new Error("Not implemented")}getViewReferenceId(e){return null}setPan(e,o=!1){const i=this.getCamera(),{focalPoint:l,position:c}=i,g=this.canvasToWorld([0,0]),v=ra([0,0],e,this.getPan());if(Math.abs(v[0])<1&&Math.abs(v[1])<1&&!o)return;const _=Wo(nr(),this.canvasToWorld(v),g),T=Wo(nr(),l,_),P=Wo(nr(),c,_);this.setCamera({...i,focalPoint:T,position:P},o)}getZoom(e=this.initialCamera){if(!e)return 1;const o=this.getVtkActiveCamera(),{parallelScale:i}=e;return i/o.getParallelScale()}setZoom(e,o=!1){const i=this.getCamera(),{parallelScale:l}=this.initialCamera,c=l/e;i.parallelScale===c&&!o||this.setCamera({...i,parallelScale:c},o)}_getFocalPointForViewPlaneReset(e){const{focalPoint:o,viewPlaneNormal:i}=this.getCamera(),l=this._getViewImageDataIntersections(e,o,i);let c=0,g=0,v=0;return l.forEach(([T,P,I])=>{c+=T,g+=P,v+=I}),[c/l.length,g/l.length,v/l.length]}getCanvas(){return this.canvas}getVtkActiveCamera(){const e=this.getRenderer();return e?e.getActiveCamera():(console.warn("No renderer found for the viewport"),null)}getCameraNoRotation(){const e=this.getVtkActiveCamera(),o=(v,_)=>v.some(T=>isNaN(T))?_:v,i=o([...e.getViewUp()],[0,1,0]),l=o([...e.getViewPlaneNormal()],[0,0,-1]),c=o([...e.getPosition()],[0,0,1]),g=o([...e.getFocalPoint()],[0,0,0]);return{viewUp:i,viewPlaneNormal:l,position:c,focalPoint:g,parallelProjection:e.getParallelProjection(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle(),flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}getCamera(){return{...this.getCameraNoRotation(),rotation:this.getRotation()}}setCamera(e,o=!1){const i=this.getVtkActiveCamera(),l=this.getCamera(),c=Object.assign({},l,e),{viewUp:g,viewPlaneNormal:v,position:_,focalPoint:T,parallelScale:P,viewAngle:I,flipHorizontal:R,flipVertical:L,clippingRange:V}=e;if(R!==void 0){const z=R&&!this.flipHorizontal||!R&&this.flipHorizontal;z&&this.flip({flipHorizontal:z})}if(L!==void 0){const z=L&&!this.flipVertical||!L&&this.flipVertical;z&&this.flip({flipVertical:z})}g!==void 0&&i.setViewUp(g),v!==void 0&&i.setDirectionOfProjection(-v[0],-v[1],-v[2]),_!==void 0&&i.setPosition(..._),T!==void 0&&i.setFocalPoint(...T),P!==void 0&&i.setParallelScale(P),I!==void 0&&i.setViewAngle(I),V!==void 0&&i.setClippingRange(V);const U=l.focalPoint,j=l.viewUp;if(U&&T||j&&g){const z=i.getViewPlaneNormal(),$=i.getViewUp();let K=!1,X=!1;if(T){const ee=[T[0]-U[0],T[1]-U[1],T[2]-U[2]];K=Math.abs(h0.dot(ee,z))>0}if(g&&(X=!Qi($,j)),K||X){const ee=this.getDefaultActor();if(!(ee!=null&&ee.actor))return;Tl(ee,"vtkActor")||this.updateClippingPlanesForActors(c),(Tl(ee,"vtkImageSlice")||this.type===fs.VOLUME_3D)&&this.getRenderer().resetCameraClippingRange()}}o&&this.setInitialCamera(c),this.triggerCameraModifiedEventIfNecessary(l,this.getCamera())}triggerCameraModifiedEventIfNecessary(e,o){if(!this._suppressCameraModifiedEvents&&!this.suppressEvents){const i={previousCamera:e,camera:o,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.CAMERA_MODIFIED,i)}}updateCameraClippingPlanesAndRange(){const e=this.getCamera();this.updateClippingPlanesForActors(e),this.getRenderer().resetCameraClippingRange()}async updateClippingPlanesForActors(e){this.getActors().map(i=>{if(!i.actor)return;const l=i.actor.getMapper();let c=i!=null&&i.clippingFilter?i==null?void 0:i.clippingFilter.getClippingPlanes():l.getClippingPlanes();c.length===0&&(i!=null&&i.clippingFilter)&&(c=[h1.newInstance(),h1.newInstance()]);let g=oa.MINIMUM_SLAB_THICKNESS;i.slabThickness&&(g=i.slabThickness);const{viewPlaneNormal:v,focalPoint:_}=e;this.setOrientationOfClippingPlanes(c,g,v,_),Or(this.element,vr.CLIPPING_PLANES_UPDATED,{actorEntry:i,focalPoint:_,vtkPlanes:c,viewport:this})})}setOrientationOfClippingPlanes(e,o,i,l){if(e.length<2)return;const c=[i[0],i[1],i[2]];h0.multiplyScalar(c,o),e[0].setNormal(i);const g=[0,0,0];h0.subtract(l,c,g),e[0].setOrigin(g),e[1].setNormal(-i[0],-i[1],-i[2]);const v=[0,0,0];h0.add(l,c,v),e[1].setOrigin(v)}getClippingPlanesForActor(e){if(e||(e=this.getDefaultActor()),!e.actor)throw new Error("Invalid actor entry: Actor is undefined");const o=e.actor.getMapper();let i=e!=null&&e.clippingFilter?e==null?void 0:e.clippingFilter.getClippingPlanes():o.getClippingPlanes();return i.length===0&&(e!=null&&e.clippingFilter)&&(i=[h1.newInstance(),h1.newInstance()]),i}_getWorldDistanceViewUpAndViewRight(e,o,i){const l=this._getCorners(e),c=this._getCorners(e),g=ro(nr(),o,i);let v=M2.buildFromDegree().identity().rotateFromDirections(o,[1,0,0]);l.forEach(R=>v.apply(R));let _=1/0,T=-1/0;for(let R=0;R<8;R++){const L=l[R][0];L>T&&(T=L),L<_&&(_=L)}v=M2.buildFromDegree().identity().rotateFromDirections([g[0],g[1],g[2]],[1,0,0]),c.forEach(R=>v.apply(R));let P=1/0,I=-1/0;for(let R=0;R<8;R++){const L=c[R][0];L>I&&(I=L),L=0&&this.setRotation(c)}_getCorners(e){return[[e[0],e[2],e[4]],[e[0],e[2],e[5]],[e[0],e[3],e[4]],[e[0],e[3],e[5]],[e[1],e[2],e[4]],[e[1],e[2],e[5]],[e[1],e[3],e[4]],[e[1],e[3],e[5]]]}_getFocalPointForResetCamera(e,o,{resetPan:i=!0,resetToCenter:l=!0}){if(l&&i)return e;if(l&&!i)return NE(o.focalPoint)?e:o.focalPoint;if(!l&&i){const c=o,g=c.focalPoint,v=c.viewPlaneNormal,_=Wo(nr(),e,g),T=mi(_,v),P=j0(nr(),e,v,-1*T);return[P[0],P[1],P[2]]}if(!i&&!l)return NE(o.focalPoint)?e:o.focalPoint}_isInBounds(e,o){const[i,l,c,g,v,_]=o,[T,P,I]=e;return!(Tl||Pg||I_)}_getEdges(e){const[o,i,l,c,g,v,_,T]=this._getCorners(e);return[[o,i],[o,g],[o,l],[i,c],[i,v],[l,c],[l,_],[c,T],[g,_],[g,v],[v,T],[_,T]]}static boundsRadius(e){const o=(e[1]-e[0])**2,i=(e[3]-e[2])**2,l=(e[5]-e[4])**2;return Math.sqrt(o+i+l||1)*.5}setDataIds(e,o){throw new Error("Unsupported operatoin setDataIds")}};Sm.CameraViewPresentation={rotation:!0,pan:!0,zoom:!0,displayArea:!0},Sm.TransferViewPresentation={windowLevel:!0,paletteLut:!0};let S8=Sm;function Mj(n,e,o=!1){const i=n.getCamera(),{focalPoint:l,viewPlaneNormal:c}=i,{spacingInNormalDirection:g,actorUID:v}=q8(n,i,e,o);if(!v)throw new Error(`Could not find image volume with id ${e} in the viewport`);const _=n.getActor(v);if(!_)return console.warn("No actor found for with actorUID of",v),null;const T=_.actor;return{sliceRange:_C(T,c,l),spacingInNormalDirection:g,camera:i}}function Ig(n,e,o=!1){const{sliceRange:i,spacingInNormalDirection:l,camera:c}=Mj(n,e,o),{min:g,max:v,current:_}=i,T=Math.round((v-g)/l),I=(_-g)/(v-g)*T,R=Math.round(I);return{numScrollSteps:T,currentStepIndex:R,sliceRangeInfo:{sliceRange:i,spacingInNormalDirection:l,camera:c}}}function Pj(n){let e=[];const[o,i]=n.getRange();n.getTable(o,i,1024,e),e=e.filter((L,V)=>V%3===0);const l=[...Array(1024).keys()].map((L,V)=>o+(i-o)/1023*V),c=e[256],g=Math.log((1-c)/c),v=l[256],_=e[256*3],T=Math.log((1-_)/_),P=l[256*3],I=Math.round(4*(P-v)/(g-T)),R=Math.round(v+I*g/4);return[Math.round(R-I/2),Math.round(R+I/2)]}function Rj(n,e){const o=e.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:i}=Mhe(o),l=i[0],c=i[1]-i[0],g=wh.newInstance(),v=[];for(let X=0;X[c*i+e[0],g,v,_]);return o.removeAllPoints(),l.forEach(([c,g,v,_])=>o.addRGBPoint(c,g,v,_)),l}function Rhe(n,e,o){const i=e[1]-e[0],l=n.map(([c,g])=>[c*i+e[0],g]);return o.removeAllPoints(),l.forEach(([c,g])=>o.addPoint(c,g)),l}class xs extends S8{constructor(e){if(super(e),this.useCPURendering=!1,this.perVolumeIdDefaultProperties=new Map,this.viewportProperties={},this.volumeIds=new Set,this.setRotation=l=>{const c=this.getPan(this.fitToCanvasCamera),g=this.getPan(),v=this.getCamera(),_=Ru([0,0],c,g);this.setPan(_,!1);const{flipVertical:T}=this.getCamera(),P=T?sf([0,0,0],this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:P}),this.rotateCamera(l);const I=this.getPan(),R=this.getPan(this.fitToCanvasCamera),L=Ru([0,0],I,R),V=W2([0,0],c,L);if(this.setPan(V,!1),this._suppressCameraModifiedEvents)return;const U=this.getCamera(),j={previousCamera:v,camera:U,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.CAMERA_MODIFIED,j)},this.getDefaultProperties=l=>{let c;return l!==void 0&&(c=this.perVolumeIdDefaultProperties.get(l)),c!==void 0?c:{...this.globalDefaultProperties}},this.getProperties=l=>{var ee;if(!this._getApplicableVolumeActor(l))return;const{colormap:g,VOILUTFunction:v,interpolationType:_,invert:T,slabThickness:P,preset:I}=this.viewportProperties;if(l||(l=this.getVolumeId()),!Jn.getVolume(l))return null;const L=this.getActors().find(ne=>ne.referencedId===l);if(!L)return;const U=L.actor.getProperty().getRGBTransferFunction(0),[j,z]=((ee=this.viewportProperties)==null?void 0:ee.VOILUTFunction)==="SIGMOID"?Pj(U):U.getRange(),$={lower:j,upper:z},K=this.getColormap(l);return{colormap:l&&K?K:g,voiRange:$,VOILUTFunction:v,interpolationType:_,invert:T,slabThickness:P,preset:I}},this.getColormap=l=>{const c=this._getApplicableVolumeActor(l);if(!c)return;const{volumeActor:g}=c,v=this._getOrCreateColorTransferFunction(l),{nodes:_}=v.getState(),T=_.reduce((L,V)=>(L.push(V.x,V.r,V.g,V.b),L),[]),P=jO(T,g)||{},I=HO(g),R=KO(g);return P.threshold=I,P.opacity=R,P},this.getRotation=()=>{const{viewUp:l,viewPlaneNormal:c,flipVertical:g}=this.getCameraNoRotation(),v=g?sf([0,0,0],this.initialViewUp):this.initialViewUp;if(!v)return 0;const _=uO(v,l)*180/Math.PI,T=ro([0,0,0],v,l);return mi(T,c)>=0?_:(360-_)%360},this.getFrameOfReferenceUID=()=>this._FrameOfReferenceUID,this.canvasToWorld=l=>{var I,R;const c=this.getVtkActiveCamera();(I=c.setIsPerformingCoordinateTransformation)==null||I.call(c,!0);const g=this.getRenderer(),v=this.getVtkDisplayCoords(l),P=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().displayToWorld(v[0],v[1],v[2],g);return(R=c.setIsPerformingCoordinateTransformation)==null||R.call(c,!1),[P[0],P[1],P[2]]},this.getVtkDisplayCoords=l=>{const c=window.devicePixelRatio||1,g=[l[0]*c,l[1]*c],T=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow().getSize(),P=[g[0]+this.sx,g[1]+this.sy];return P[1]=T[1]-P[1],[P[0],P[1],0]},this.worldToCanvas=l=>{var V;const c=this.getVtkActiveCamera();(V=c.setIsPerformingCoordinateTransformation)==null||V.call(c,!0);const g=this.getRenderer(),_=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),T=_.getSize(),P=_.worldToDisplay(...l,g);P[1]=T[1]-P[1];const I=[P[0]-this.sx,P[1]-this.sy],R=window.devicePixelRatio||1,L=[I[0]/R,I[1]/R];return c.setIsPerformingCoordinateTransformation(!1),L},this.hasImageURI=l=>this.getActors().filter(g=>Tl(g,"vtkVolume")).some(({uid:g,referencedId:v})=>{const _=Jn.getVolume(v||g);return _!=null&&_.imageIds?_.imageIds.map(Bs).includes(l):!1}),this.getImageIds=l=>{const c=this._getApplicableVolumeActor(l);if(!c)throw new Error(`No actor found for the given volumeId: ${l}`);const g=c.volumeId,v=Jn.getVolume(g);if(!v)throw new Error(`imageVolume with id: ${g} does not exist in cache`);return v.imageIds},this.useCPURendering=cm(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");const o=this.getRenderer(),i=Dle.newInstance();switch(o.setActiveCamera(i),this.type){case fs.ORTHOGRAPHIC:i.setParallelProjection(!0);break;case fs.VOLUME_3D:i.setParallelProjection(!0);break;case fs.PERSPECTIVE:i.setParallelProjection(!1);break;default:throw new Error(`Unrecognized viewport type: ${this.type}`)}this.initializeVolumeNewImageEventDispatcher()}static get useCustomRenderingPipeline(){return!1}getSliceViewInfo(){throw new Error("Method not implemented.")}applyViewOrientation(e,o=!0){const{viewPlaneNormal:i,viewUp:l}=this._getOrientationVectors(e),c=this.getVtkActiveCamera();c.setDirectionOfProjection(-i[0],-i[1],-i[2]),c.setViewUpFrom(l),this.initialViewUp=l,o&&this.resetCamera({resetOrientation:!1,resetRotation:!1})}initializeVolumeNewImageEventDispatcher(){const e=i.bind(this),o=l.bind(this);function i(c){const{viewportId:g}=c.detail;g!==this.id||this.isDisabled||!this.getImageData()||Ihe(c)}function l(c){const{viewportId:g}=c.detail;g===this.id&&(this.element.removeEventListener(vr.CAMERA_MODIFIED,e),pr.removeEventListener(vr.ELEMENT_DISABLED,o),Dhe(g))}this.element.removeEventListener(vr.CAMERA_MODIFIED,e),this.element.addEventListener(vr.CAMERA_MODIFIED,e),pr.addEventListener(vr.ELEMENT_DISABLED,o)}setVOILUTFunction(e,o,i){Object.values(j2).includes(e)||(e=j2.LINEAR);const{voiRange:l}=this.getProperties();this.setVOI(l,o,i),this.viewportProperties.VOILUTFunction=e}setColormap(e,o,i){const l=this._getApplicableVolumeActor(o);if(!l)return;const{volumeActor:c}=l,g=wh.newInstance();let v=nv(e.name);const{name:_}=e;if(v||(v=tv.getPresetByName(_)),!v)throw new Error(`Colormap ${e} not found`);const T=c.getProperty().getRGBTransferFunction(0).getRange();if(g.applyColorMap(v),g.setMappingRange(T[0],T[1]),c.getProperty().setRGBTransferFunction(0,g),this.viewportProperties.colormap=e,!i){const P=this.getColormap(o),I={viewportId:this.id,colormap:P,volumeId:o};Or(this.element,vr.VOI_MODIFIED,I),Or(this.element,vr.COLORMAP_MODIFIED,I)}}setOpacity(e,o){const i=this._getApplicableVolumeActor(o);if(!i)return;const{volumeActor:l}=i,c=Wg.newInstance();typeof e.opacity=="number"?W$(l,e.opacity):(e.opacity.forEach(({opacity:_,value:T})=>{c.addPoint(T,_)}),l.getProperty().setScalarOpacity(0,c)),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.opacity=e.opacity;const g=this.getColormap(o),v={viewportId:this.id,colormap:g,volumeId:o};Or(this.element,vr.COLORMAP_MODIFIED,v)}setInvert(e,o,i){const l=this._getApplicableVolumeActor(o);if(!l)return;const c=l.volumeId,g=this._getOrCreateColorTransferFunction(c);if(fm(g),this.viewportProperties.invert=e,!i){const v={...this.getVOIModifiedEventDetail(c),invertStateChanged:!0};Or(this.element,vr.VOI_MODIFIED,v)}}getVOIModifiedEventDetail(e){const o=this._getApplicableVolumeActor(e);if(!o)throw new Error(`No actor found for the given volumeId: ${e}`);const c=o.volumeActor.getProperty().getRGBTransferFunction(0).getMappingRange(),g=this.getColormap(e),{VOILUTFunction:v,invert:_}=this.getProperties(e);return{viewportId:this.id,range:{lower:c[0],upper:c[1]},volumeId:o.volumeId,VOILUTFunction:v,colormap:g,invert:_}}_getOrCreateColorTransferFunction(e){const o=this._getApplicableVolumeActor(e);if(!o)return null;const{volumeActor:i}=o,l=i.getProperty().getRGBTransferFunction(0);if(l)return l;const c=wh.newInstance();return i.getProperty().setRGBTransferFunction(0,c),c}setInterpolationType(e,o){const i=this._getApplicableVolumeActor(o);if(!i)return;const{volumeActor:l}=i;l.getProperty().setInterpolationType(e),this.viewportProperties.interpolationType=e}setVOI(e,o,i=!1){const l=this._getApplicableVolumeActor(o);if(!l)return;const{volumeActor:c}=l,g=l.volumeId,v=e;if(typeof v>"u")throw new Error("voiRangeToUse is undefined, need to implement this in the new volume model");const{VOILUTFunction:_}=this.getProperties(g);if(_===j2.SAMPLED_SIGMOID){const T=qO(v);c.getProperty().setRGBTransferFunction(0,T)}else{const{lower:T,upper:P}=v;c.getProperty().getRGBTransferFunction(0).setRange(T,P)}if(!i){const T={...this.getVOIModifiedEventDetail(g)};Or(this.element,vr.VOI_MODIFIED,T)}this.viewportProperties.voiRange=v}rotateCamera(e){const o=e-this.getRotation();this.getVtkActiveCamera().roll(-o)}setDefaultProperties(e,o){o==null?this.globalDefaultProperties=e:this.perVolumeIdDefaultProperties.set(o,e)}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perVolumeIdDefaultProperties.delete(e),this.resetToDefaultProperties(e))}getViewReference(e={}){const o=super.getViewReference(e),i=this.getVolumeId(e);if((e==null?void 0:e.forFrameOfReference)!==!1&&(o.volumeId=i),typeof(e==null?void 0:e.sliceIndex)!="number")return o;const{viewPlaneNormal:l}=o,c=(e==null?void 0:e.sliceIndex)-this.getSliceIndex(),{sliceRangeInfo:g}=Ig(this,i,!0),{sliceRange:v,spacingInNormalDirection:_,camera:T}=g,{focalPoint:P,position:I}=T,{newFocalPoint:R}=t8(P,I,v,l,_,c);return o.cameraFocalPoint=R,o}isReferenceViewable(e,o){if(!e.FrameOfReferenceUID||!super.isReferenceViewable(e,o))return!1;if(o!=null&&o.withNavigation)return!0;const i=this.getSliceIndex(),{sliceIndex:l}=e;return Array.isArray(l)?l[0]<=i&&i<=l[1]:l===void 0||l===i}scroll(e=1){const o=this.getVolumeId(),{sliceRangeInfo:i}=Ig(this,o,!0);if(!i)return;const{sliceRange:l,spacingInNormalDirection:c,camera:g}=i,{focalPoint:v,viewPlaneNormal:_,position:T}=g,{newFocalPoint:P,newPosition:I}=t8(v,T,l,_,c,e);this.setCamera({focalPoint:P,position:I}),this.render()}setViewReference(e){if(!e)return;const o=this.getVolumeId(),{viewPlaneNormal:i,FrameOfReferenceUID:l,cameraFocalPoint:c,referencedImageId:g,viewUp:v}=e;let{sliceIndex:_}=e;const{focalPoint:T,viewPlaneNormal:P,position:I}=this.getCamera(),R=B$(P,i),L=Qi(P,i);if(typeof _=="number"&&o!==void 0&&e.volumeId===o&&(R||L)){const{currentStepIndex:V,sliceRangeInfo:U,numScrollSteps:j}=Ig(this,o,!0),{sliceRange:z,spacingInNormalDirection:$}=U;R&&(_=j-_-1);const K=_-V,{newFocalPoint:X,newPosition:ee}=t8(T,I,z,P,$,K);this.setCamera({focalPoint:X,position:ee})}else if(l===this.getFrameOfReferenceUID()){if(i&&!R&&!L){this.setOrientation({viewPlaneNormal:i,viewUp:v}),this.setViewReference(e);return}if(g&&this.isInAcquisitionPlane()){const V=Hr(z1.IMAGE_PLANE,g),{imagePositionPatient:U}=V,{focalPoint:j}=this.getCamera(),z=Wo(nr(),j,U),$=mi(z,P),K=j0(nr(),j,[-P[0],-P[1],-P[2]],$);this.setCamera({focalPoint:K}),this.render();return}if(c){const V=Wo([0,0,0],c,T),U=i??P,j=mi(V,U);Qi(j,0)||k2(V,U,j);const z=v2([0,0,0],T,V),$=v2([0,0,0],I,V);this.setCamera({focalPoint:z,position:$})}}else throw new Error(`Incompatible view refs: ${l}!==${this.getFrameOfReferenceUID()}`)}setThreshold(e,o){const i=this._getApplicableVolumeActor(o);if(!i)return;const{volumeActor:l}=i;$$(l,e.threshold),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.threshold=e.threshold;const c=this.getColormap(o),g={viewportId:this.id,colormap:c,volumeId:o};Or(this.element,vr.COLORMAP_MODIFIED,g)}setProperties({voiRange:e,VOILUTFunction:o,invert:i,colormap:l,preset:c,interpolationType:g,slabThickness:v}={},_,T=!1){this.globalDefaultProperties==null&&this.setDefaultProperties({voiRange:e,VOILUTFunction:o,invert:i,colormap:l,preset:c,slabThickness:v}),i!==void 0&&this.viewportProperties.invert!==i&&this.setInvert(i,_,T),l!=null&&l.name&&this.setColormap(l,_,T),(l==null?void 0:l.opacity)!=null&&this.setOpacity(l,_),(l==null?void 0:l.threshold)!=null&&this.setThreshold(l,_),e!==void 0&&this.setVOI(e,_,T),typeof g<"u"&&this.setInterpolationType(g),o!==void 0&&this.setVOILUTFunction(o,_,T),c!==void 0&&this.setPreset(c,_,T),v!==void 0&&this.setSlabThickness(v)}resetToDefaultProperties(e){var i,l;const o=this.globalDefaultProperties;(i=o.colormap)!=null&&i.name&&this.setColormap(o.colormap,e),((l=o.colormap)==null?void 0:l.opacity)!=null&&this.setOpacity(o.colormap,e),o.voiRange!==void 0&&this.setVOI(o.voiRange,e),o.VOILUTFunction!==void 0&&this.setVOILUTFunction(o.VOILUTFunction,e),o.invert!==void 0&&this.setInvert(o.invert,e),o.slabThickness!==void 0&&(this.setSlabThickness(o.slabThickness),this.viewportProperties.slabThickness=o.slabThickness),o.preset!==void 0&&this.setPreset(o.preset,e,!1),o.preset!==void 0&&this.setPreset(o.preset,e,!1),this.render()}setPreset(e,o,i){const l=this._getApplicableVolumeActor(o);if(!l)return;const{volumeActor:c}=l;let g=e;typeof g=="string"&&(g=MU.find(v=>v.name===e)),g&&(Rj(c,g),this.viewportProperties.preset=g,this.render(),i||Or(this.element,vr.PRESET_MODIFIED,{viewportId:this.id,volumeId:l.volumeId,actor:c,presetName:g.name}))}async setVolumes(e,o=!1,i=!1){const l=Jn.getVolume(e[0].volumeId);if(!l)throw new Error(`imageVolume with id: ${l.volumeId} does not exist, you need to create/allocate the volume first`);const c=l.metadata.FrameOfReferenceUID;this._isValidVolumeInputArray(e,c),this._FrameOfReferenceUID=c,e.forEach(v=>{this._addVolumeId(v.volumeId)});const g=[];for(let v=0;v{this._addVolumeId(g.volumeId)});for(let g=0;gc.referencedId===e);return l?{volumeActor:l.actor,volumeId:e,actorUID:l.uid}:void 0}const i=o[0];return{volumeActor:i.actor,volumeId:i.referencedId,actorUID:i.uid}}async _isValidVolumeInputArray(e,o){const i=e.length;for(let l=1;lP.referencedId===e);if(!Tl(i,"vtkVolume"))return;const l=i.actor,c=Jn.getVolume(e),g=l.getMapper().getInputData();return{dimensions:g.getDimensions(),spacing:g.getSpacing(),origin:g.getOrigin(),direction:g.getDirection(),imageData:l.getMapper().getInputData(),metadata:{Modality:(_=c==null?void 0:c.metadata)==null?void 0:_.Modality,FrameOfReferenceUID:(T=c==null?void 0:c.metadata)==null?void 0:T.FrameOfReferenceUID},get scalarData(){var P;return(P=c==null?void 0:c.voxelManager)==null?void 0:P.getScalarData()},scaling:c==null?void 0:c.scaling,hasPixelSpacing:!0,voxelManager:c==null?void 0:c.voxelManager}}setCameraClippingRange(){throw new Error("Method not implemented.")}getSliceIndex(){throw new Error("Method not implemented.")}setCamera(e,o){super.setCamera(e,o),this.setCameraClippingRange()}_setVolumeActors(e){for(let o=0;o-v),g=l.slice(3,6).map(v=>-v);return{viewPlaneNormal:c,viewUp:g}}getSlabThickness(){const e=this.getActors();let o=oa.MINIMUM_SLAB_THICKNESS;return e.forEach(i=>{i.slabThickness>o&&(o=i.slabThickness)}),o}getIntensityFromWorld(e){const o=this.getDefaultActor();if(!Tl(o,"vtkVolume"))return;const{actor:i}=o,l=i.getMapper().getInputData(),c=Jn.getVolume(this.getVolumeId()),g=qs(l,e);return c.voxelManager.getAtIJKPoint(g)}getVolumeId(e){const o=this.getActors();if(!o)return;if(!(e!=null&&e.volumeId)){const l=o.find(c=>c.actor.getClassName()==="vtkVolume");return(l==null?void 0:l.referencedId)||(l==null?void 0:l.uid)}const i=o.find(l=>l.actor.getClassName()==="vtkVolume"&&l.referencedId===(e==null?void 0:e.volumeId));return(i==null?void 0:i.referencedId)||(i==null?void 0:i.uid)}getViewReferenceId(e={}){var _;let{volumeId:o,sliceIndex:i}=e;if(!o){const T=this.getActors();if(!T)return;o=(_=T.find(P=>P.actor.getClassName()==="vtkVolume"))==null?void 0:_.referencedId}const l=this.getSliceIndex();i??(i=l);const{viewPlaneNormal:c,focalPoint:g}=this.getCamera(),v=o.includes("?")?"&":"?";return`volumeId:${o}${v}sliceIndex=${i}&viewPlaneNormal=${c.join(",")}`}_addVolumeId(e){this.volumeIds.add(e)}getAllVolumeIds(){return Array.from(this.volumeIds)}}function Cd(n,e){const{imageData:o}=n.getImageData(),i=n.canvasToWorld(e);return qs(o,i)}function T8(n,e){return n.indexToWorld(e)}function Ahe(n,e){const{imageData:o}=n.getImageData(),i=T8(o,e);return n.worldToCanvas(i)}class ns extends xs{constructor(e){super(e),this._useAcquisitionPlaneForViewPlane=!1,this.getNumberOfSlices=()=>{const{numberOfSlices:i}=o9(this)||{};return i},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!1,suppressEvents:!0}),this.getCurrentImageIdIndex=(i,l=!0)=>{const{currentStepIndex:c}=Ig(this,i||this.getVolumeId(),l);return c},this.getSliceIndex=()=>{const{imageIndex:i}=o9(this)||{};return i},this.getCurrentImageId=()=>{const i=this.getDefaultActor();if(!i||!Tl(i,"vtkVolume"))return;const l=Jn.getVolume(this.getVolumeId());if(!l)return;const{viewPlaneNormal:c,focalPoint:g}=this.getCamera();return yh(l,g,c)},this.getSlicePlaneCoordinates=()=>{const i=this.getDefaultActor();if(!(i!=null&&i.actor))return console.warn("No image data found for calculating vtkPlanes."),[];const l=this.getVolumeId(),c=Jn.getVolume(l),g=this.getCamera(),{focalPoint:v,position:_,viewPlaneNormal:T}=g,P=l4(c,T),I=_C(i.actor,T,v),R=Math.round((I.current-I.min)/P),L=Math.round((I.max-I.current)/P),V=this.getSliceIndex(),U=[];for(let j=-R;j<=L;j++){const{newFocalPoint:z}=t8(v,_,I,T,P,j);U.push({sliceIndex:V+j,point:z})}return U};const{orientation:o}=this.options;if(o&&o!==Vg.ACQUISITION){this.applyViewOrientation(o);return}this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e,o=!1,i=!1){const l=Jn.getVolume(e[0].volumeId);if(!l)throw new Error(`imageVolume with id: ${l.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(l),this._useAcquisitionPlaneForViewPlane=!1),super.setVolumes(e,o,i)}async addVolumes(e,o=!1,i=!1){const l=Jn.getVolume(e[0].volumeId);if(!l)throw new Error(`imageVolume with id: ${l.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(l),this._useAcquisitionPlaneForViewPlane=!1),super.addVolumes(e,o,i)}jumpToWorld(e){const{focalPoint:o}=this.getCamera(),i=[0,0,0];z0(i,e,o);const l=this.getCamera(),c=l.viewPlaneNormal,g=mi(i,c),v=Ei(c[0],c[1],c[2]);if(k2(v,v,g),Math.abs(v[0])>.001||Math.abs(v[1])>.001||Math.abs(v[2])>.001){const _=[0,0,0],T=[0,0,0];v2(_,l.focalPoint,v),v2(T,l.position,v),this.setCamera({focalPoint:_,position:T}),this.render()}return!0}setOrientation(e,o=!0){let i,l;if(typeof e=="string"){if(e===Vg.ACQUISITION)({viewPlaneNormal:i,viewUp:l}=super._getAcquisitionPlaneOrientation());else if(Sd[e])({viewPlaneNormal:i,viewUp:l}=Sd[e]);else throw new Error(`Invalid orientation: ${e}. Use Enums.OrientationAxis instead.`);this.setCamera({viewPlaneNormal:i,viewUp:l}),this.viewportProperties.orientation=e,this.resetCamera()}else({viewPlaneNormal:i,viewUp:l}=e),this.applyViewOrientation(e);o&&this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();if(!e){console.warn("No active camera found");return}e.getParallelProjection()?e.setClippingRange(-oa.MAXIMUM_RAY_DISTANCE,oa.MAXIMUM_RAY_DISTANCE):e.setClippingRange(oa.MINIMUM_SLAB_THICKNESS,oa.MAXIMUM_RAY_DISTANCE)}_setViewPlaneToAcquisitionPlane(e){let o,i;if(e){const{direction:l}=e;o=l.slice(6,9).map(c=>-c),i=l.slice(3,6).map(c=>-c)}else({viewPlaneNormal:o,viewUp:i}=this._getAcquisitionPlaneOrientation());this.setCamera({viewPlaneNormal:o,viewUp:i}),this.initialViewUp=i,this.resetCamera()}getBlendMode(e){const o=this.getActors(),i=(e==null?void 0:e.length)>0?o.find(l=>e.includes(l.uid)):o[0];return(i==null?void 0:i.blendMode)||(i==null?void 0:i.actor.getMapper().getBlendMode())}setBlendMode(e,o=[],i=!1){let l=this.getActors();(o==null?void 0:o.length)>0&&(l=l.filter(c=>o.includes(c.uid))),l.forEach(c=>{var _;const{actor:g}=c,v=g.getMapper();(_=v.setBlendMode)==null||_.call(v,e),c.blendMode=e}),i&&this.render()}resetCamera(e){const{resetPan:o=!0,resetZoom:i=!0,resetRotation:l=!0,resetToCenter:c=!0,suppressEvents:g=!1,resetOrientation:v=!0}=e||{},{orientation:_}=this.viewportProperties;_&&v&&this.applyViewOrientation(_,!1),super.resetCamera({resetPan:o,resetZoom:i,resetToCenter:c});const T=this.getVtkActiveCamera(),P=T.getViewPlaneNormal(),I=T.getFocalPoint();if(this.getActors().forEach(L=>{if(!L.actor)return;const V=L.actor.getMapper();if(V.getClippingPlanes().length===0&&!(L!=null&&L.clippingFilter)){const j=h1.newInstance(),z=h1.newInstance(),$=[j,z];let K=oa.MINIMUM_SLAB_THICKNESS;L.slabThickness&&(K=L.slabThickness),this.setOrientationOfClippingPlanes($,K,P,I),V.addClippingPlane(j),V.addClippingPlane(z)}}),l&&Sd[this.viewportProperties.orientation]!==void 0){const L=Sd[this.viewportProperties.orientation];this.setCameraNoEvent({viewUp:L.viewUp,viewPlaneNormal:L.viewPlaneNormal})}if(!g){const L={viewportId:this.id,camera:this.getCamera(),renderingEngineId:this.renderingEngineId,element:this.element};Or(this.element,vr.CAMERA_RESET,L)}return!0}setSlabThickness(e,o=[]){e<.1&&(e=.1);let i=this.getActors();(o==null?void 0:o.length)>0&&(i=i.filter(c=>o.includes(c.uid))),i.forEach(c=>{Tl(c,"vtkVolume")&&(c.slabThickness=e)});const l=this.getCamera();this.updateClippingPlanesForActors(l),this.triggerCameraModifiedEventIfNecessary(l,l),this.viewportProperties.slabThickness=e}resetSlabThickness(){this.getActors().forEach(i=>{Tl(i,"vtkVolume")&&(i.slabThickness=oa.MINIMUM_SLAB_THICKNESS)});const o=this.getCamera();this.updateClippingPlanesForActors(o),this.triggerCameraModifiedEventIfNecessary(o,o),this.viewportProperties.slabThickness=void 0}isInAcquisitionPlane(){const e=this.getImageData();if(!e)return!1;const{direction:o}=e,{viewPlaneNormal:i}=this.getCamera(),l=[o[6],o[7],o[8]];return Math.abs(mi(i,l))>.99}getSliceViewInfo(){const{width:e,height:o}=this.getCanvas(),i=Cd(this,[0,0]),l=Cd(this,[e-1,0]),c=Cd(this,[0,o-1]),g=z0(nr(),l,i),v=z0(nr(),c,i),_=ro(nr(),g,v);Uo(g,g),Uo(v,v),Uo(_,_);const{dimensions:T}=this.getImageData(),[P,I,R]=T,U=[[0,0,0],[P-1,0,0],[0,I-1,0],[P-1,I-1,0],[0,0,R-1],[P-1,0,R-1],[0,I-1,R-1],[P-1,I-1,R-1]].map(pe=>Ahe(this,pe)).reduce((pe,we)=>(pe.minX=Math.min(pe.minX,we[0]),pe.minY=Math.min(pe.minY,we[1]),pe.maxX=Math.max(pe.maxX,we[0]),pe.maxY=Math.max(pe.maxY,we[1]),pe),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),j=Cd(this,[U.minX,U.minY]),z=tO(g[0],g[1],g[2],0,v[0],v[1],v[2],0,_[0],_[1],_[2],0,j[0],j[1],j[2],1),$=Cd(this,[U.maxX,U.maxY]),K=z0(nr(),$,j),X=Ia(Dl(),z),{viewPlaneNormal:ee}=this.getCamera();if(ee.filter(pe=>Math.abs(pe)>ou).length>1)throw new Error("getSliceInfo is not supported for oblique views");const le=ee.findIndex(pe=>Math.abs(pe)>1-ou);if(le===-1)throw new Error("Unable to determine slice axis");const ce=mi(g,K)+1,ge=mi(v,K)+1;return{sliceIndex:this.getSliceIndex(),width:ce,height:ge,slicePlane:le,sliceToIndexMatrix:z,indexToSliceMatrix:X}}getCurrentSlicePixelData(){const{voxelManager:e}=this.getImageData();return e.getSliceData(this.getSliceViewInfo())}getViewReference(e={}){const o=super.getViewReference(e);if(!(o!=null&&o.volumeId))return;const i=Jn.getVolume(o.volumeId);return o.referencedImageId=yh(i,o.cameraFocalPoint,o.viewPlaneNormal),o}resetProperties(e){this._resetProperties(e)}_resetProperties(e){const o=e?this.getActor(e):this.getDefaultActor();if(!o)throw new Error(`No actor found for the given volumeId: ${e}`);o.slabThickness&&(o.slabThickness=oa.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const i=Jn.getVolume(e);if(!i)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(eM(o.actor,i),ac(o)){const T=o.actor.getProperty().getRGBTransferFunction(0);xC(T,this.initialTransferFunctionNodes)}const l={...super.getVOIModifiedEventDetail(e)};this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetCameraRotation:!0}),Or(this.element,vr.VOI_MODIFIED,l)}getSlicesClippingPlanes(){const e=this.getSlicePlaneCoordinates(),{viewPlaneNormal:o}=this.getCamera(),i=oa.MINIMUM_SLAB_THICKNESS;return e.map(({point:l,sliceIndex:c})=>{const g=[h1.newInstance(),h1.newInstance()];return this.setOrientationOfClippingPlanes(g,i,o,l),{sliceIndex:c,planes:g.map(v=>({normal:v.getNormal(),origin:v.getOrigin()}))}})}}function Lhe(n,e){e.classHierarchy.push("vtkAbstractImageMapper"),n.getIsOpaque=()=>!0,n.getCurrentImage=()=>null,n.getBoundsForSlice=()=>(At.vtkErrorMacro("vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED"),zd())}const Nhe={slice:0,customDisplayExtent:[0,0,0,0,0,0],useCustomExtents:!1,backgroundColor:[0,0,0,1]};function bhe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nhe,o),xO.extend(n,e,o),At.setGet(n,e,["slice","useCustomExtents"]),At.setGetArray(n,e,["customDisplayExtent"],6),At.setGetArray(n,e,["backgroundColor"],4),Lhe(n,e)}var Fhe={extend:bhe};function Aj(n,e,o){const i=o.getCurrentImage(),l=i.getExtent(),c=[l[0],l[2],l[4]],{ijkMode:g}=o.getClosestIJKAxis();let v=o.isA("vtkImageArrayMapper")?o.getSubSlice():o.getSlice();g!==o.getSlicingMode()&&(v=o.getSliceAtPosition(v)),c[g]+=v;const _=[0,0,0];i.indexToWorld(c,_),c[g]+=1;const T=[0,0,0];i.indexToWorld(c,T),T[0]-=_[0],T[1]-=_[1],T[2]-=_[2],Uo(T,T);const P=h1.intersectWithLine(n,e,_,T);if(P.intersection){const I=P.x,R=[0,0,0];return i.worldToIndex(I,R),{t:P.t,absoluteIJK:R}}return null}function Vhe(n,e,o){const i=Aj(n,e,o);if(i){const c=o.getCurrentImage().getExtent(),g=[Math.round(i.absoluteIJK[0]),Math.round(i.absoluteIJK[1]),Math.round(i.absoluteIJK[2])];return g[0]c[1]||g[1]c[3]||g[2]c[5]?null:{t:i.t,ijk:g}}return null}function Uhe(n,e,o){const i=Aj(n,e,o);if(i){const c=o.getCurrentImage().getExtent(),g=i.absoluteIJK,v=[Math.floor(g[0]),Math.floor(g[1]),Math.floor(g[2])];if(v[0]c[1]-1||v[1]c[3]-1||v[2](c[5]?c[5]-1:c[5]))return null;const _=[g[0]-v[0],g[1]-v[1],g[2]-v[2]];return{t:i.t,ijk:v,pCoords:_}}return null}const{staticOffsetAPI:Bhe,otherStaticMethods:Ghe}=vC,{SlicingMode:vo}=yC;function Whe(n,e){e.classHierarchy.push("vtkImageMapper"),n.getSliceAtPosition=i=>{const l=n.getCurrentImage();let c;if(i.length===3)c=i;else if(Number.isFinite(i)){const P=l.getBounds();switch(e.slicingMode){case vo.X:c=[i,(P[3]+P[2])/2,(P[5]+P[4])/2];break;case vo.Y:c=[(P[1]+P[0])/2,i,(P[5]+P[4])/2];break;case vo.Z:c=[(P[1]+P[0])/2,(P[3]+P[2])/2,i];break}}const g=[0,0,0];l.worldToIndex(c,g);const v=l.getExtent(),{ijkMode:_}=n.getClosestIJKAxis();let T=0;switch(_){case vo.I:T=cc(g[0],v[0],v[1]);break;case vo.J:T=cc(g[1],v[2],v[3]);break;case vo.K:T=cc(g[2],v[4],v[5]);break;default:return 0}return T},n.setSliceFromCamera=i=>{const l=i.getFocalPoint();switch(e.slicingMode){case vo.I:case vo.J:case vo.K:{const c=n.getSliceAtPosition(l);n.setSlice(c)}break;case vo.X:n.setSlice(l[0]);break;case vo.Y:n.setSlice(l[1]);break;case vo.Z:n.setSlice(l[2]);break}},n.setXSlice=i=>{n.setSlicingMode(vo.X),n.setSlice(i)},n.setYSlice=i=>{n.setSlicingMode(vo.Y),n.setSlice(i)},n.setZSlice=i=>{n.setSlicingMode(vo.Z),n.setSlice(i)},n.setISlice=i=>{n.setSlicingMode(vo.I),n.setSlice(i)},n.setJSlice=i=>{n.setSlicingMode(vo.J),n.setSlice(i)},n.setKSlice=i=>{n.setSlicingMode(vo.K),n.setSlice(i)},n.getSlicingModeNormal=()=>{const i=[0,0,0],l=n.getCurrentImage().getDirection();switch(e.slicingMode){case vo.X:i[0]=1;break;case vo.Y:i[1]=1;break;case vo.Z:i[2]=1;break;case vo.I:N7(l,[1,0,0],i);break;case vo.J:N7(l,[0,1,0],i);break;case vo.K:N7(l,[0,0,1],i);break}return i};function o(){let i;switch(e.slicingMode){case vo.X:i=0;break;case vo.Y:i=1;break;case vo.Z:i=2;break;default:e.closestIJKAxis={ijkMode:e.slicingMode,flip:!1};return}const l=n.getCurrentImage().getDirection(),c=NB(l);let g=0;for(;g<3&&c[i+3*g]===0;++g);const v=c[i+3*g]<0;e.closestIJKAxis={ijkMode:g,flip:v}}n.setSlicingMode=i=>{e.slicingMode!==i&&(e.slicingMode=i,n.getCurrentImage()&&o(),n.modified())},n.getClosestIJKAxis=()=>((e.closestIJKAxis===void 0||e.closestIJKAxis.ijkMode===vo.NONE)&&n.getCurrentImage()&&o(),e.closestIJKAxis),n.getBounds=()=>{const i=n.getCurrentImage();if(!i)return zd();if(!e.useCustomExtents)return i.getBounds();const l=e.customDisplayExtent.slice(),{ijkMode:c}=n.getClosestIJKAxis();let g=e.slice;switch(c!==e.slicingMode&&(g=n.getSliceAtPosition(e.slice)),c){case vo.I:l[0]=g,l[1]=g;break;case vo.J:l[2]=g,l[3]=g;break;case vo.K:l[4]=g,l[5]=g;break}return i.extentToBounds(l)},n.getBoundsForSlice=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.slice,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const c=n.getCurrentImage();if(!c)return zd();const g=c.getSpatialExtent(),{ijkMode:v}=n.getClosestIJKAxis();let _=i;switch(v!==e.slicingMode&&(_=n.getSliceAtPosition(i)),v){case vo.I:g[0]=_-l,g[1]=_+l;break;case vo.J:g[2]=_-l,g[3]=_+l;break;case vo.K:g[4]=_-l,g[5]=_+l;break}return c.extentToBounds(g)},n.intersectWithLineForPointPicking=(i,l)=>Vhe(i,l,n),n.intersectWithLineForCellPicking=(i,l)=>Uhe(i,l,n),n.getCurrentImage=()=>n.getInputData()}const $he={slicingMode:vo.NONE,closestIJKAxis:{ijkMode:vo.NONE,flip:!1},renderToRectangle:!1,sliceAtFocalPoint:!1,preferSizeOverAccuracy:!1};function Lj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$he,o),Fhe.extend(n,e,o),At.get(n,e,["slicingMode"]),At.setGet(n,e,["closestIJKAxis","renderToRectangle","sliceAtFocalPoint","preferSizeOverAccuracy"]),vC.implementCoincidentTopologyMethods(n,e),Whe(n,e)}const jhe=At.newInstance(Lj,"vtkImageMapper");var zhe={newInstance:jhe,extend:Lj,...Bhe,...Ghe,...yC};const{InterpolationType:J7}=nae,{vtkErrorMacro:jL}=At,Z7=4;function Hhe(n,e){e.classHierarchy.push("vtkImageProperty"),n.getMTime=()=>{let o=e.mtime,i;for(let l=0;li?o:i),e.componentData[l].piecewiseFunction&&(i=e.componentData[l].piecewiseFunction.getMTime(),o=o>i?o:i);return o},n.setRGBTransferFunction=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,l=o,c=i;return Number.isInteger(o)||(c=o,l=0),e.componentData[l].rGBTransferFunction!==c?(e.componentData[l].rGBTransferFunction=c,n.modified(),!0):!1},n.getRGBTransferFunction=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[o].rGBTransferFunction},n.setPiecewiseFunction=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,l=o,c=i;return Number.isInteger(o)||(c=o,l=0),e.componentData[l].piecewiseFunction!==c?(e.componentData[l].piecewiseFunction=c,n.modified(),!0):!1},n.getPiecewiseFunction=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[o].piecewiseFunction},n.setScalarOpacity=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,l=o,c=i;return Number.isInteger(o)||(c=o,l=0),n.setPiecewiseFunction(l,c)},n.getScalarOpacity=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return n.getPiecewiseFunction(o)},n.setComponentWeight=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(o<0||o>=Z7)return jL("Invalid index"),!1;const l=Math.min(1,Math.max(0,i));return e.componentData[o].componentWeight!==l?(e.componentData[o].componentWeight=l,n.modified(),!0):!1},n.getComponentWeight=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return o<0||o>=Z7?(jL("Invalid index"),0):e.componentData[o].componentWeight},n.setInterpolationTypeToNearest=()=>n.setInterpolationType(J7.NEAREST),n.setInterpolationTypeToLinear=()=>n.setInterpolationType(J7.LINEAR),n.getInterpolationTypeAsString=()=>At.enumToString(J7,e.interpolationType)}const Khe={independentComponents:!1,interpolationType:J7.LINEAR,colorWindow:255,colorLevel:127.5,ambient:1,diffuse:0,opacity:1,useLookupTableScalarRange:!1,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function qhe(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Khe,o),At.obj(n,e),!e.componentData){e.componentData=[];for(let i=0;in,n.getImages=()=>n,n.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||n.getProperty();let o=e.property.getOpacity()>=1;return o=o&&(!e.mapper||e.mapper.getIsOpaque()),o},n.hasTranslucentPolygonalGeometry=()=>!1,n.makeProperty=Yhe.newInstance,n.getProperty=()=>(e.property===null&&(e.property=n.makeProperty()),e.property),n.getBounds=()=>{if(e.mapper===null)return e.bounds;const o=e.mapper.getBounds();if(!o||o.length!==6)return o;if(o[0]>o[1])return e.mapperBounds=o.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),o;const i=l=>l[0].map((c,g)=>l.map(v=>v[g]));if(!e.mapperBounds||!i([o,e.mapperBounds]).reduce((l,c)=>l&&c[0]===c[1],!0)||n.getMTime()>e.boundsMTime.getMTime()){Jhe("Recomputing bounds..."),e.mapperBounds=o.map(c=>c),n.computeMatrix();const l=new Float64Array(16);po(l,e.matrix),hs.transformBounds(o,l,e.bounds),e.boundsMTime.modified()}return e.bounds},n.getBoundsForSlice=(o,i)=>{const l=e.mapper.getBoundsForSlice(o,i);if(!hs.isValid(l))return l;n.computeMatrix();const c=new Float64Array(16);return po(c,e.matrix),hs.transformBounds(l,c)},n.getMinXBound=()=>n.getBounds()[0],n.getMaxXBound=()=>n.getBounds()[1],n.getMinYBound=()=>n.getBounds()[2],n.getMaxYBound=()=>n.getBounds()[3],n.getMinZBound=()=>n.getBounds()[4],n.getMaxZBound=()=>n.getBounds()[5],n.getMTime=()=>{let o=e.mtime;if(e.property!==null){const i=e.property.getMTime();o=i>o?i:o}return o},n.getRedrawMTime=()=>{let o=e.mtime;if(e.mapper!==null){let i=e.mapper.getMTime();o=i>o?i:o,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),i=e.mapper.getInput().getMTime(),o=i>o?i:o)}if(e.property!==null){let i=e.property.getMTime();o=i>o?i:o,e.property.getRGBTransferFunction()!==null&&(i=e.property.getRGBTransferFunction().getMTime(),o=i>o?i:o)}return o},n.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1}const Qhe={mapper:null,property:null,forceOpaque:!1,forceTranslucent:!1,bounds:[...hs.INIT_BOUNDS]};function Nj(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Qhe,o),UO.extend(n,e,o),e.boundsMTime={},At.obj(e.boundsMTime),At.set(n,e,["property"]),At.setGet(n,e,["mapper","forceOpaque","forceTranslucent"]),At.getArray(n,e,["bounds"],6),Zhe(n,e)}const ede=At.newInstance(Nj,"vtkImageSlice");var tde={newInstance:ede,extend:Nj};function nde(n){return Object.values(j2).includes(n)?n:j2.LINEAR}function bj(n){const o={...Hr(z1.IMAGE_PLANE,n)};return o.columnPixelSpacing||(o.columnPixelSpacing=1),o.rowPixelSpacing||(o.rowPixelSpacing=1),o.columnCosines||(o.columnCosines=[0,1,0]),o.rowCosines||(o.rowCosines=[1,0,0]),o.imagePositionPatient||(o.imagePositionPatient=[0,0,0]),o.imageOrientationPatient||(o.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),o}function Fj(n){const e=n.imageId,{pixelRepresentation:o,bitsAllocated:i,bitsStored:l,highBit:c,photometricInterpretation:g,samplesPerPixel:v}=Hr("imagePixelModule",e),{windowWidth:_,windowCenter:T,voiLUTFunction:P}=n,{modality:I}=Hr("generalSeriesModule",e),R=Hr("scalingModule",e),L=Hr(z1.CALIBRATION,e),V=nde(P),U=bj(e);return{calibration:L,scalingFactor:R,voiLUTFunction:V,modality:I,imagePlaneModule:U,imagePixelModule:{bitsAllocated:i,bitsStored:l,samplesPerPixel:v,highBit:c,photometricInterpretation:g,pixelRepresentation:o,windowWidth:_,windowCenter:T,modality:I,voiLUTFunction:V}}}function DC(n){const{imagePlaneModule:e,imagePixelModule:o,voiLUTFunction:i,modality:l,scalingFactor:c,calibration:g}=Fj(n);let{rowCosines:v,columnCosines:_}=e;(v==null||_==null)&&(v=[1,0,0],_=[0,1,0]);const T=Ei(v[0],v[1],v[2]),P=Ei(_[0],_[1],_[2]),I=nr();ro(I,T,P);let R=e.imagePositionPatient;R==null&&(R=[0,0,0]);const L=e.columnPixelSpacing||n.columnPixelSpacing,V=e.rowPixelSpacing||n.rowPixelSpacing,U=n.columns,j=n.rows,z=ou,$=1;return!o.photometricInterpretation&&n.sizeInBytes===3*n.width*n.height&&(n.numberOfComponents=3),{numberOfComponents:n.numberOfComponents||rde(o.photometricInterpretation),origin:R,direction:[...T,...P,...I],dimensions:[U,j,$],spacing:[L,V,z],numVoxels:U*j*$,imagePlaneModule:e,imagePixelModule:o,bitsAllocated:o.bitsAllocated,voiLUTFunction:i,modality:l,scalingFactor:c,calibration:g,scanAxisNormal:I}}function rde(n){let e=1;return(n==="RGB"||n!=null&&n.includes("YBR")||n==="PALETTE COLOR")&&(e=3),e}function Vj(n){const e=wh.newInstance();let o=0,i=1024;return n.lower!==void 0&&n.upper!==void 0&&(o=n.lower,i=n.upper),e.addRGBPoint(o,0,0,0),e.addRGBPoint(i,1,1,1),e}function IC(n,e){const o=e.voxelManager.getScalarData();if(!n.getPointData)return;const i=n.getPointData().getScalars().getData();if(e.color&&e.rgba){const l=new Uint8Array(e.columns*e.rows*3);for(let c=0;cl,i.set(l)}else i.set(o);n.modified()}function G0(){return window.performance?performance.now():Date.now()}function ide(n,e){return function(o){const i=((o-(e-.5))/(n-1)+.5)*255;return Math.min(Math.max(i,0),255)}}function ode(n){const o=Math.max(...n.lut).toString(2).length-8,i=n.lut[0]>>o,l=n.lut[n.lut.length-1]>>o,c=n.firstValueMapped+n.lut.length-1;return function(g){return g=c?l:n.lut[g-n.firstValueMapped]>>o}}function Uj(n,e,o){return o?ode(o):ide(n,e)}function sde(n,e,o,i,l){const c=n.maxPixelValue,g=n.minPixelValue,v=Math.min(g,0);if(n.cachedLut===void 0){const P=c-v+1;n.cachedLut={},n.cachedLut.lutArray=new Uint8ClampedArray(P)}const _=n.cachedLut.lutArray,T=Uj(Array.isArray(e)?e[0]:e,Array.isArray(o)?o[0]:o,l);if(i)for(let P=g;P<=c;P++)_[P+-v]=255-T(P);else for(let P=g;P<=c;P++)_[P+-v]=T(P);return _}function ade(n,e,o){let i=G0();const l=n.voxelManager.getScalarData();n.stats.lastGetPixelDataTime=G0()-i;const c=n.minPixelValue;let g=0,v=0;const _=l.length;if(i=G0(),c<0)for(;v<_;)o[g++]=e[l[v++]+-c],o[g++]=e[l[v++]+-c],o[g++]=e[l[v++]+-c],o[g++]=255;else for(;v<_;)o[g++]=e[l[v++]],o[g++]=e[l[v++]],o[g++]=e[l[v++]],o[g++]=255;n.stats.lastStoredPixelDataToCanvasImageDataTime=G0()-i}function lde(n,e,o){let i=G0();const l=n.getPixelData();n.stats.lastGetPixelDataTime=G0()-i;const c=n.minPixelValue;let g=0,v=0;const _=l.length;if(i=G0(),c<0)for(;v<_;)o[g++]=e[l[v++]+-c],o[g++]=e[l[v++]+-c],o[g++]=e[l[v++]+-c],o[g++]=l[v++];else for(;v<_;)o[g++]=e[l[v++]],o[g++]=e[l[v++]],o[g++]=e[l[v++]],o[g++]=l[v++];n.stats.lastStoredPixelDataToCanvasImageDataTime=G0()-i}class X8{constructor(){this.reset()}getMatrix(){return this.m}reset(){this.m=[1,0,0,1,0,0]}clone(){const e=new X8;return e.m[0]=this.m[0],e.m[1]=this.m[1],e.m[2]=this.m[2],e.m[3]=this.m[3],e.m[4]=this.m[4],e.m[5]=this.m[5],e}multiply(e){const o=this.m[0]*e[0]+this.m[2]*e[1],i=this.m[1]*e[0]+this.m[3]*e[1],l=this.m[0]*e[2]+this.m[2]*e[3],c=this.m[1]*e[2]+this.m[3]*e[3],g=this.m[0]*e[4]+this.m[2]*e[5]+this.m[4],v=this.m[1]*e[4]+this.m[3]*e[5]+this.m[5];this.m[0]=o,this.m[1]=i,this.m[2]=l,this.m[3]=c,this.m[4]=g,this.m[5]=v}invert(){const e=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),o=this.m[3]*e,i=-this.m[1]*e,l=-this.m[2]*e,c=this.m[0]*e,g=e*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),v=e*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);this.m[0]=o,this.m[1]=i,this.m[2]=l,this.m[3]=c,this.m[4]=g,this.m[5]=v}rotate(e){const o=Math.cos(e),i=Math.sin(e),l=this.m[0]*o+this.m[2]*i,c=this.m[1]*o+this.m[3]*i,g=this.m[0]*-i+this.m[2]*o,v=this.m[1]*-i+this.m[3]*o;this.m[0]=l,this.m[1]=c,this.m[2]=g,this.m[3]=v}translate(e,o){this.m[4]+=this.m[0]*e+this.m[2]*o,this.m[5]+=this.m[1]*e+this.m[3]*o}scale(e,o){this.m[0]*=e,this.m[1]*=e,this.m[2]*=o,this.m[3]*=o}transformPoint(e){const o=e[0],i=e[1];return[o*this.m[0]+i*this.m[2]+this.m[4],o*this.m[1]+i*this.m[3]+this.m[5]]}}function ov(n,e){const o=new X8;if(!n.viewport.displayedArea)return o;o.translate(n.canvas.width/2,n.canvas.height/2);const i=n.viewport.rotation;i!==0&&o.rotate(i*Math.PI/180);let l=n.viewport.scale,c=n.viewport.scale;const g=n.viewport.displayedArea.brhc.x-(n.viewport.displayedArea.tlhc.x-1),v=n.viewport.displayedArea.brhc.y-(n.viewport.displayedArea.tlhc.y-1);if(n.viewport.displayedArea.presentationSizeMode==="NONE")n.image.rowPixelSpacing0||n.voi.windowWidth!==void 0&&n.voi.windowCenter!==void 0}function zL(n,e){return!n&&!e?!0:!n||!e?!1:n.id===e.id}function kde(n,e){return o=>o*n+e}function yde(n){const e=n.lut[0],o=n.lut[n.lut.length-1],i=n.firstValueMapped+n.lut.length;return l=>l=i?o:n.lut[l]}function wde(n,e,o){return o?yde(o):kde(n,e)}function Cde(n,e,o,i,l,c){const g=n.maxPixelValue,v=n.minPixelValue,_=Math.min(v,0);if(n.cachedLut===void 0){const R=g-_+1;n.cachedLut={},n.cachedLut.lutArray=new Uint8ClampedArray(R)}const T=n.cachedLut.lutArray,P=wde(n.slope,n.intercept,l),I=Uj(e,o,c);if(n.isPreScaled)if(i)for(let R=v;R<=g;R++)T[R+-_]=255-I(R);else for(let R=v;R<=g;R++)T[R+-_]=I(R);else if(i)for(let R=v;R<=g;R++)T[R+-_]=255-I(P(R));else for(let R=v;R<=g;R++)T[R+-_]=I(P(R));return T}function Wj(n,e,o){return n.cachedLut!==void 0&&n.cachedLut.windowCenter===e.voi.windowCenter&&n.cachedLut.windowWidth===e.voi.windowWidth&&zL(n.cachedLut.modalityLUT,e.modalityLUT)&&zL(n.cachedLut.voiLUT,e.voiLUT)&&n.cachedLut.invert===e.invert&&!o||(mde(e,n),Cde(n,e.voi.windowWidth,e.voi.windowCenter,e.invert,e.modalityLUT,e.voiLUT),n.cachedLut.windowWidth=e.voi.windowWidth,n.cachedLut.windowCenter=e.voi.windowCenter,n.cachedLut.invert=e.invert,n.cachedLut.voiLUT=e.voiLUT,n.cachedLut.modalityLUT=e.modalityLUT),n.cachedLut.lutArray}function _de(n,e,o,i=!0){const l=n.renderingTools.lastRenderedIsColor;(!n.renderingTools.renderCanvas||l)&&(n.renderingTools.renderCanvas=OC(null,e.width,e.height),s9(n,e));const c=n.renderingTools.renderCanvas;if(!nM(n,e)&&!o)return c;(c.width!==e.width||c.height!==e.height)&&s9(n,e),e.stats=e.stats||{};const g=n.renderingTools.renderCanvasData,v=n.renderingTools.renderCanvasContext;let _=G0();e.stats.lastLutGenerateTime=G0()-_;const{viewport:T}=n;if(T.modality==="PT"&&e.isPreScaled){const{windowWidth:P,windowCenter:I}=T.voi,R=I-P/2,U=255/(I+P/2-R);let j;T.invert?j=z=>255-(z-R)*U:j=z=>(z-R)*U,gde(e,j,g.data)}else{const P=Wj(e,T,o);i?dde(e,P,g.data):pde(e,P,g.data)}return _=G0(),v.putImageData(g,0,0),e.stats.lastPutImageDataTime=G0()-_,c}function xde(n,e){if(n===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const o=n.image;if(o===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const i=n.canvas.getContext("2d");i.setTransform(1,0,0,1,0,0),i.fillStyle="black",i.fillRect(0,0,n.canvas.width,n.canvas.height),i.imageSmoothingEnabled=!n.viewport.pixelReplication,tM(n,i);const l=_de(n,o,e),c=n.viewport.displayedArea.tlhc.x-1,g=n.viewport.displayedArea.tlhc.y-1,v=n.viewport.displayedArea.brhc.x-c,_=n.viewport.displayedArea.brhc.y-g;i.drawImage(l,c,g,v,_,0,0,v,_),n.renderingTools=rM(n)}const bE=0,FE=1,Sde=2;function Tde(n,e,o){if(n>1)throw new Error("HSVToRGB expects hue < 1");const i=[];if(e===0)return i[0]=o,i[1]=o,i[2]=o,i;const l=Math.floor(n*6),c=6*n-l,g=o*(1-e),v=o*(1-e*c),_=o*(1-e*(1-c));switch(l){case 0:case 6:i[0]=o,i[1]=_,i[2]=g;break;case 1:i[0]=v,i[1]=o,i[2]=g;break;case 2:i[0]=g,i[1]=o,i[2]=_;break;case 3:i[0]=g,i[1]=v,i[2]=o;break;case 4:i[0]=_,i[1]=g,i[2]=o;break;case 5:i[0]=o,i[1]=g,i[2]=v;break}return i}function Ede(n,e){let o;return ne.Range[1]?o=e.MaxIndex+FE+1.5:o=(n+e.Shift)*e.Scale,Math.floor(o)}class iM{constructor(){this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}setNumberOfTableValues(e){this.NumberOfColors=e}setRamp(e){this.Ramp=e}setTableRange(e,o){this.TableRange[0]=e,this.TableRange[1]=o}setHueRange(e,o){this.HueRange[0]=e,this.HueRange[1]=o}setSaturationRange(e,o){this.SaturationRange[0]=e,this.SaturationRange[1]=o}setValueRange(e,o){this.ValueRange[0]=e,this.ValueRange[1]=o}setRange(e,o){this.InputRange[0]=e,this.InputRange[1]=o}setAlphaRange(e,o){this.AlphaRange[0]=e,this.AlphaRange[1]=o}getColor(e){return this.mapValue(e)}build(e){if(this.Table.length>1&&!e)return;this.Table=[];const o=this.NumberOfColors-1;let i,l,c,g;o?(i=(this.HueRange[1]-this.HueRange[0])/o,l=(this.SaturationRange[1]-this.SaturationRange[0])/o,c=(this.ValueRange[1]-this.ValueRange[0])/o,g=(this.AlphaRange[1]-this.AlphaRange[0])/o):i=l=c=g=0;for(let v=0;v<=o;v++){const _=this.HueRange[0]+v*i,T=this.SaturationRange[0]+v*l,P=this.ValueRange[0]+v*c,I=this.AlphaRange[0]+v*g,R=Tde(_,T,P),L=[0,0,0,0];switch(this.Ramp){case"scurve":L[0]=Math.floor(127.5*(1+Math.cos((1-R[0])*Math.PI))),L[1]=Math.floor(127.5*(1+Math.cos((1-R[1])*Math.PI))),L[2]=Math.floor(127.5*(1+Math.cos((1-R[2])*Math.PI))),L[3]=Math.floor(I*255);break;case"linear":L[0]=Math.floor(R[0]*255+.5),L[1]=Math.floor(R[1]*255+.5),L[2]=Math.floor(R[2]*255+.5),L[3]=Math.floor(I*255+.5);break;case"sqrt":L[0]=Math.floor(Math.sqrt(R[0])*255+.5),L[1]=Math.floor(Math.sqrt(R[1])*255+.5),L[2]=Math.floor(Math.sqrt(R[2])*255+.5),L[3]=Math.floor(Math.sqrt(I)*255+.5);break;default:throw new Error(`Invalid Ramp value (${this.Ramp})`)}this.Table.push(L)}this.buildSpecialColors()}buildSpecialColors(){const e=this.NumberOfColors,o=e+bE,i=e+FE,l=e+Sde;this.UseBelowRangeColor||e===0?this.Table[o]=this.BelowRangeColor:this.Table[o]=this.Table[0],this.UseAboveRangeColor||e===0?this.Table[i]=this.AboveRangeColor:this.Table[i]=this.Table[e-1],this.Table[l]=this.NaNColor}mapValue(e){const o=this.getIndex(e);if(o<0)return this.NaNColor;if(o===0){if(this.UseBelowRangeColor&&ethis.TableRange[1])return this.AboveRangeColor;return this.Table[o]}getIndex(e){const o={Range:[],MaxIndex:this.NumberOfColors-1,Shift:-this.TableRange[0],Scale:1};if(this.TableRange[1]<=this.TableRange[0]?o.Scale=Number.MAX_VALUE:o.Scale=o.MaxIndex/(this.TableRange[1]-this.TableRange[0]),o.Range[0]=this.TableRange[0],o.Range[1]=this.TableRange[1],isNaN(e))return-1;let i=Ede(e,o);return i===this.NumberOfColors+bE?i=0:i===this.NumberOfColors+FE&&(i=this.NumberOfColors-1),i}setTableValue(e,o,i,l,c){let g;if(typeof o=="number"&&i!==void 0&&l!==void 0&&c!==void 0)g=[o,i,l,c];else if(Array.isArray(o))g=o;else throw new Error("Invalid arguments for setTableValue");if(e<0)throw new Error(`Can't set the table value for negative index (${e})`);if(e>=this.NumberOfColors)throw new Error(`Index ${e} is greater than the number of colors ${this.NumberOfColors}`);this.Table[e]=g,(e===0||e===this.NumberOfColors-1)&&this.buildSpecialColors()}}const HL=[0,0,0,0];function Dde(n,e,o){o=o===null?100:o;const i=(e-n)/(o-1),l=[];for(;o-- >0;)l.push(n),n+=i;return l[l.length-1]=e,l}function Ide(n,e){let o=0,i=n.length-1;for(;o<=i;){const l=o+Math.floor((i-o)/2),c=n[l];if(c===e)return l;e=0&&lVE(Math.floor(255-($-L)*j),0,255):z=$=>VE(Math.floor(($-L)*j),0,255),Ade(e,z,P,v.data)}else{const I=Wj(e,n.viewport,o);e.stats=e.stats||{},e.stats.lastLutGenerateTime=G0()-g,Rde(e,I,P,v.data)}return g=G0(),_.putImageData(v,0,0),e.stats.lastPutImageDataTime=G0()-g,i}function Nde(n,e){if(n===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const o=n.image;if(o===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const i=n.canvas.getContext("2d");i.setTransform(1,0,0,1,0,0),i.fillStyle="black",i.fillRect(0,0,n.canvas.width,n.canvas.height),i.imageSmoothingEnabled=!n.viewport.pixelReplication,tM(n,i);const l=Lde(n,o,e),c=n.viewport.displayedArea.tlhc.x-1,g=n.viewport.displayedArea.tlhc.y-1,v=n.viewport.displayedArea.brhc.x-c,_=n.viewport.displayedArea.brhc.y-g;i.drawImage(l,c,g,v,_,0,0,v,_),n.renderingTools=rM(n)}function $j(n,e){const o=n.image;if(!n.canvas||!n.image)return;const i=G0();if(o.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},o){let c=o.render;c||(n.viewport.colormap?c=Nde:o.color?c=hde:c=xde),c(n,e)}const l=G0()-i;o.stats.lastRenderTime=l,n.invalid=!1,n.needsRedraw=!1}function jj(n){return ov(n)}function qy(n,e){const o=jj(n);return o.invert(),o.transformPoint(e)}const bde={viewport:{}};function Fde(){return{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}}function Vde(){const n=Fde(),e={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0,voiLUTFunction:j2.LINEAR},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:n};return Object.assign({},e,bde.viewport)}function gm(n,e){if(n==null)throw new Error(e)}function Ude(n){return!(n==null||n===0||n===180)}function zj(n,e=null){return gm(n,"getImageSize: parameter image must not be undefined"),gm(n.width,"getImageSize: parameter image must have width"),gm(n.height,"getImageSize: parameter image must have height"),Ude(e)?{height:n.width,width:n.height}:{width:n.width,height:n.height}}function oM(n,e,o=null){gm(n,"getImageScale: parameter canvas must not be undefined"),gm(e,"getImageScale: parameter image must not be undefined");const i=zj(e,o),l=e.rowPixelSpacing||1,c=e.columnPixelSpacing||1;let g=1,v=1;l{this._configureRenderingPipeline()},this.resize=()=>{this.useCPURendering&&this._resizeCPU()},this._resizeCPU=()=>{this._cpuFallbackEnabledElement.viewport&&jde(this._cpuFallbackEnabledElement)},this.getFrameOfReferenceUID=o=>{var i;return(i=this.getImagePlaneReferenceData(o))==null?void 0:i.FrameOfReferenceUID},this.getCornerstoneImage=()=>this.csImage,this.createActorMapper=o=>{const i=zhe.newInstance();i.setInputData(o);const l=tde.newInstance();l.setMapper(i);const{preferSizeOverAccuracy:c}=NO().rendering;return c&&i.setPreferSizeOverAccuracy(!0),o.getPointData().getScalars().getNumberOfComponents()>1&&l.getProperty().setIndependentComponents(!1),l},this.getNumberOfSlices=()=>this.imageIds.length,this.getDefaultProperties=o=>{let i;return o!==void 0&&(i=this.perImageIdDefaultProperties.get(o)),i!==void 0?i:{...this.globalDefaultProperties}},this.getProperties=()=>{const{colormap:o,voiRange:i,VOILUTFunction:l,interpolationType:c,invert:g,voiUpdatedWithSetProperties:v}=this;return{colormap:o,voiRange:i,VOILUTFunction:l,interpolationType:c,invert:g,isComputedVOI:!v}},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,suppressEvents:!0}),this.getRotationCPU=()=>{const{viewport:o}=this._cpuFallbackEnabledElement;return o.rotation},this.getRotationGPU=()=>{const{viewUp:o,viewPlaneNormal:i,flipVertical:l,flipHorizontal:c}=this.getCameraNoRotation(),g=qL(this.initialViewUp,c,l,i),_=uO(g,o)*180/Math.PI,T=ro(nr(),g,o);return mi(T,i)>=0?_:(360-_)%360},this.setRotation=o=>{const i=this.getCamera();if(this.useCPURendering?this.setRotationCPU(o):this.setRotationGPU(o),this._suppressCameraModifiedEvents)return;const l=this.getCamera(),c={previousCamera:i,camera:l,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.CAMERA_MODIFIED,c)},this.renderImageObject=o=>{this._setCSImage(o),(this.useCPURendering?this._updateToDisplayImageCPU:this._updateActorToDisplayImageId).call(this,o)},this._setCSImage=o=>{var i;o.isPreScaled=(i=o.preScale)==null?void 0:i.scaled,this.csImage=o},this.canvasToWorldCPU=(o,i=[0,0,0])=>{if(!this._cpuFallbackEnabledElement.image)return;const[l,c]=qy(this._cpuFallbackEnabledElement,o),{origin:g,spacing:v,direction:_}=this.getImageData(),T=_.slice(0,3),P=_.slice(3,6);return j0(i,g,T,l*v[0]),j0(i,i,P,c*v[1]),i},this.worldToCanvasCPU=o=>{const{spacing:i,direction:l,origin:c}=this.getImageData(),g=l.slice(0,3),v=l.slice(3,6),_=Wo(nr(),o,c),T=[mi(_,g)/i[0],mi(_,v)/i[1]];return KL(this._cpuFallbackEnabledElement,T)},this.canvasToWorldGPU=o=>{const i=this.getRenderer(),l=this.getVtkActiveCamera(),c=l.getClippingRange(),g=l.getDistance();l.setClippingRange(g,g+.1);const _=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),T=_.getSize(),P=window.devicePixelRatio||1,I=[o[0]*P,o[1]*P],R=[I[0]+this.sx,I[1]+this.sy];R[1]=T[1]-R[1];const L=_.displayToWorld(R[0],R[1],0,i);return l.setClippingRange(c[0],c[1]),[L[0],L[1],L[2]]},this.worldToCanvasGPU=o=>{const i=this.getRenderer(),l=this.getVtkActiveCamera(),c=l.getClippingRange(),g=l.getDistance();l.setClippingRange(g,g+.1);const _=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),T=_.getSize(),P=_.worldToDisplay(...o,i);P[1]=T[1]-P[1];const I=[P[0]-this.sx,P[1]-this.sy];l.setClippingRange(c[0],c[1]);const R=window.devicePixelRatio||1;return[I[0]/R,I[1]/R]},this.getCurrentImageIdIndex=()=>this.currentImageIdIndex,this.getSliceIndex=()=>this.currentImageIdIndex,this.getTargetImageIdIndex=()=>this.targetImageIdIndex,this.getImageIds=()=>this.imageIds,this.getCurrentImageId=(o=this.getCurrentImageIdIndex())=>this.imageIds[o],this.hasImageId=o=>this.imageKeyToIndexMap.has(o),this.hasImageURI=o=>this.imageKeyToIndexMap.has(o),this.customRenderViewportToCanvas=()=>{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?($j(this._cpuFallbackEnabledElement,this.cpuRenderingInvalidated),this.cpuRenderingInvalidated=!1):this.fillWithBackgroundColor(),{canvas:this.canvas,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,viewportStatus:this.viewportStatus}},this.renderingPipelineFunctions={getImageData:{cpu:this.getImageDataCPU,gpu:this.getImageDataGPU},setColormap:{cpu:this.setColormapCPU,gpu:this.setColormapGPU},getCamera:{cpu:this.getCameraCPU,gpu:super.getCamera},setCamera:{cpu:this.setCameraCPU,gpu:super.setCamera},getPan:{cpu:this.getPanCPU,gpu:super.getPan},setPan:{cpu:this.setPanCPU,gpu:super.setPan},getZoom:{cpu:this.getZoomCPU,gpu:super.getZoom},setZoom:{cpu:this.setZoomCPU,gpu:super.setZoom},setVOI:{cpu:this.setVOICPU,gpu:this.setVOIGPU},getRotation:{cpu:this.getRotationCPU,gpu:this.getRotationGPU},setInterpolationType:{cpu:this.setInterpolationTypeCPU,gpu:this.setInterpolationTypeGPU},setInvertColor:{cpu:this.setInvertColorCPU,gpu:this.setInvertColorGPU},resetCamera:{cpu:(o={})=>{const{resetPan:i=!0,resetZoom:l=!0}=o;return this.resetCameraCPU({resetPan:i,resetZoom:l}),!0},gpu:(o={})=>{const{resetPan:i=!0,resetZoom:l=!0}=o;return this.resetCameraGPU({resetPan:i,resetZoom:l}),!0}},canvasToWorld:{cpu:this.canvasToWorldCPU,gpu:this.canvasToWorldGPU},worldToCanvas:{cpu:this.worldToCanvasCPU,gpu:this.worldToCanvasGPU},getRenderer:{cpu:()=>this.getCPUFallbackError("getRenderer"),gpu:super.getRenderer},getDefaultActor:{cpu:()=>this.getCPUFallbackError("getDefaultActor"),gpu:super.getDefaultActor},getActors:{cpu:()=>this.getCPUFallbackError("getActors"),gpu:super.getActors},getActor:{cpu:()=>this.getCPUFallbackError("getActor"),gpu:super.getActor},setActors:{cpu:()=>this.getCPUFallbackError("setActors"),gpu:super.setActors},addActors:{cpu:()=>this.getCPUFallbackError("addActors"),gpu:super.addActors},addActor:{cpu:()=>this.getCPUFallbackError("addActor"),gpu:super.addActor},removeAllActors:{cpu:()=>this.getCPUFallbackError("removeAllActors"),gpu:super.removeAllActors},unsetColormap:{cpu:this.unsetColormapCPU,gpu:this.unsetColormapGPU}},this.scaling={},this.modality=null,this.useCPURendering=cm(),this._configureRenderingPipeline(),this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport(),this.currentImageIdIndex=0,this.targetImageIdIndex=0,this.resetCamera(),this.initializeElementDisabledHandler()}setUseCPURendering(e){this.useCPURendering=e,this._configureRenderingPipeline(e)}static get useCustomRenderingPipeline(){return cm()}_configureRenderingPipeline(e){this.useCPURendering=e??cm();for(const o in this.renderingPipelineFunctions)if(Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions,o)){const i=this.renderingPipelineFunctions[o];this[o]=this.useCPURendering?i.cpu:i.gpu}this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}_resetCPUFallbackElement(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new X8,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),o=bO.newInstance();e.setActiveCamera(o),this.initialViewUp=[0,-1,0],o.setDirectionOfProjection(-0,-0,1),o.setViewUp(...this.initialViewUp),o.setParallelProjection(!0),o.setThicknessFromFocalPoint(.1),o.setFreezeFocalPoint(!0)}initializeElementDisabledHandler(){pr.addEventListener(vr.ELEMENT_DISABLED,function e(){clearTimeout(this.debouncedTimeout),pr.removeEventListener(vr.ELEMENT_DISABLED,e)})}getImageDataGPU(){const e=this.getDefaultActor();if(!e||!ac(e))return;const{actor:o}=e,i=o.getMapper().getInputData(),l=this.csImage;return{dimensions:i.getDimensions(),spacing:i.getSpacing(),origin:i.getOrigin(),direction:i.getDirection(),get scalarData(){return l==null?void 0:l.voxelManager.getScalarData()},imageData:o.getMapper().getInputData(),metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,hasPixelSpacing:this.hasPixelSpacing,calibration:{...l==null?void 0:l.calibration,...this.calibration},preScale:{...l==null?void 0:l.preScale},voxelManager:l==null?void 0:l.voxelManager}}getImageDataCPU(){const{metadata:e}=this._cpuFallbackEnabledElement;if(!e)return;const o=e.spacing,i=this.csImage;return{dimensions:e.dimensions,spacing:o,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,imageData:{getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getScalarData:()=>this.cpuImagePixelData,getSpacing:()=>o,worldToIndex:l=>{const c=this.worldToCanvasCPU(l),g=qy(this._cpuFallbackEnabledElement,c);return[g[0],g[1],0]},indexToWorld:(l,c)=>{const g=KL(this._cpuFallbackEnabledElement,[l[0],l[1]]);return this.canvasToWorldCPU(g,c)}},scalarData:this.cpuImagePixelData,hasPixelSpacing:this.hasPixelSpacing,calibration:{...i==null?void 0:i.calibration,...this.calibration},preScale:{...i==null?void 0:i.preScale},voxelManager:i==null?void 0:i.voxelManager}}calibrateIfNecessary(e,o){const i=Hr("calibratedPixelSpacing",e),l=this.calibration!==i,{scale:c}=i||{};return this.hasPixelSpacing=c>0||o.rowPixelSpacing>0,o.calibration=i,l&&(this.calibration=i,this._publishCalibratedEvent=!0,this._calibrationEvent={scale:c,calibration:i}),o}setDefaultProperties(e,o){o==null?this.globalDefaultProperties=e:(this.perImageIdDefaultProperties.set(o,e),this.getCurrentImageId()===o&&this.setProperties(e))}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perImageIdDefaultProperties.delete(e),this.resetToDefaultProperties())}setProperties({colormap:e,voiRange:o,VOILUTFunction:i,invert:l,interpolationType:c}={},g=!1){this.viewportStatus=this.csImage?l1.PRE_RENDER:l1.LOADING,this.globalDefaultProperties={colormap:this.globalDefaultProperties.colormap??e,voiRange:this.globalDefaultProperties.voiRange??o,VOILUTFunction:this.globalDefaultProperties.VOILUTFunction??i,invert:this.globalDefaultProperties.invert??l,interpolationType:this.globalDefaultProperties.interpolationType??c},typeof e<"u"&&this.setColormap(e),typeof o<"u"&&this.setVOI(o,{suppressEvents:g,voiUpdatedWithSetProperties:!0}),typeof i<"u"&&this.setVOILUTFunction(i,g),typeof l<"u"&&this.setInvertColor(l),typeof c<"u"&&this.setInterpolationType(c)}resetProperties(){this.cpuRenderingInvalidated=!0,this.voiUpdatedWithSetProperties=!1,this.viewportStatus=l1.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={}),this._resetProperties(),this.render()}_resetProperties(){let e;if(this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage(),this.setVOI(e),this.setInvertColor(this.initialInvert),this.setInterpolationType(oh.LINEAR),!this.useCPURendering){const o=this.getTransferFunction();xC(o,this.initialTransferFunctionNodes);const l=n9(o).reduce((v,_)=>(v.push(_[0],_[1],_[2],_[3]),v),[]),c=this.getDefaultActor(),g=jO(l,c.actor);this.setColormap(g)}}resetToDefaultProperties(){var l;this.cpuRenderingInvalidated=!0,this.viewportStatus=l1.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={});const e=this.getCurrentImageId(),o=this.perImageIdDefaultProperties.get(e)||this.globalDefaultProperties;(l=o.colormap)!=null&&l.name&&this.setColormap(o.colormap);let i;o.voiRange==null?i=this._getVOIRangeForCurrentImage():i=o.voiRange,this.setVOI(i),this.setInterpolationType(oh.LINEAR),this.setInvertColor(!1),this.render()}_getVOIFromCache(){let e;return this.voiUpdatedWithSetProperties?e=this.voiRange:this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage()??this.voiRange,e}_setPropertiesFromCache(){const e=this._getVOIFromCache(),{interpolationType:o,invert:i}=this;this.setVOI(e),this.setInterpolationType(o),this.setInvertColor(i)}getCameraCPU(){const{metadata:e,viewport:o}=this._cpuFallbackEnabledElement;if(!e)return{};const{direction:i}=e,l=i.slice(6,9).map(I=>-I);let c=i.slice(3,6).map(I=>-I);if(o.rotation){const I=sO(Dl(),o.rotation*Math.PI/180,l);c=g0(nr(),c,I)}const g=[this.element.clientWidth/2,this.element.clientHeight/2],v=this.canvasToWorld(g),_=this.canvasToWorld([0,0]),T=this.canvasToWorld([0,this.element.clientHeight]),P=y2(_,T)/2;return{parallelProjection:!0,focalPoint:v,position:[0,0,0],parallelScale:P,scale:o.scale,viewPlaneNormal:[l[0],l[1],l[2]],viewUp:[c[0],c[1],c[2]],flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}setCameraCPU(e){const{viewport:o,image:i}=this._cpuFallbackEnabledElement,l=this.getCameraCPU(),{focalPoint:c,parallelScale:g,scale:v,flipHorizontal:_,flipVertical:T}=e,{clientHeight:P}=this.element;if(c){const R=this.worldToCanvasCPU(c),L=qy(this._cpuFallbackEnabledElement,R),V=this.worldToCanvasCPU(l.focalPoint),U=qy(this._cpuFallbackEnabledElement,V),j=a0();ra(j,BA(L[0],L[1]),BA(U[0],U[1]));const z=zde({x:j[0],y:j[1]},o);o.translation.x-=z.x,o.translation.y-=z.y}if(g){const{rowPixelSpacing:R}=i,L=P*R*.5/g;o.scale=L,o.parallelScale=g}if(v){const{rowPixelSpacing:R}=i;o.scale=v,o.parallelScale=P*R*.5/v}(_!==void 0||T!==void 0)&&this.setFlipCPU({flipHorizontal:_,flipVertical:T}),this._cpuFallbackEnabledElement.transform=ov(this._cpuFallbackEnabledElement);const I={previousCamera:l,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.CAMERA_MODIFIED,I)}getPanCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return[e.translation.x,e.translation.y]}setPanCPU(e){const o=this.getCameraCPU();this.setCameraCPU({...o,focalPoint:[...e.map(i=>-i),0]})}getZoomCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return e.scale}setZoomCPU(e){const o=this.getCameraCPU();this.setCameraCPU({...o,scale:e})}setFlipCPU({flipHorizontal:e,flipVertical:o}){const{viewport:i}=this._cpuFallbackEnabledElement;e!==void 0&&(i.hflip=e,this.flipHorizontal=i.hflip),o!==void 0&&(i.vflip=o,this.flipVertical=i.vflip)}setVOILUTFunction(e,o){if(this.useCPURendering)throw new Error("VOI LUT function is not supported in CPU rendering");const i=this._getValidVOILUTFunction(e);let l=!1;this.VOILUTFunction!==i&&(l=!0),this.VOILUTFunction=i;const{voiRange:c}=this.getProperties();this.setVOI(c,{suppressEvents:o,forceRecreateLUTFunction:l})}setRotationCPU(e){const{viewport:o}=this._cpuFallbackEnabledElement;o.rotation=e}setRotationGPU(e){const o=this.getPan(this.fitToCanvasCamera),i=this.getPan(),l=Ru([0,0],o,i);this.setPan(l,!1);const{flipVertical:c,flipHorizontal:g,viewPlaneNormal:v}=this.getCamera(),_=qL(this.initialViewUp,g,c,v);this.setCameraNoEvent({viewUp:_}),this.getVtkActiveCamera().roll(-e);const T=this.getPan(),P=this.getPan(this.fitToCanvasCamera),I=Ru([0,0],T,P),R=W2([0,0],o,I);this.setPan(R,!1)}setInterpolationTypeGPU(e){const o=this.getDefaultActor();if(!o||!ac(o))return;const{actor:i}=o;i.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:o}=this._cpuFallbackEnabledElement;o.pixelReplication=e!==oh.LINEAR,this.interpolationType=e}setInvertColorCPU(e){const{viewport:o}=this._cpuFallbackEnabledElement;o&&(o.invert=e,this.invert=e)}setInvertColorGPU(e){const o=this.getDefaultActor();if(o&&ac(o)){if(Tl(o,"vtkVolume")){const l=o.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&fm(l),this.invert=e}else if(Tl(o,"vtkImageSlice")){const l=o.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&fm(l),this.invert=e}}}setVOICPU(e,o={}){const{suppressEvents:i=!1}=o,{viewport:l,image:c}=this._cpuFallbackEnabledElement;if(!l||!c)return;if(typeof e>"u"){const{windowWidth:v,windowCenter:_}=c,T=Array.isArray(v)?v[0]:v,P=Array.isArray(_)?_[0]:_;l.voi={windowWidth:T,windowCenter:P,voiLUTFunction:c.voiLUTFunction};const{lower:I,upper:R}=Vd(T,P,c.voiLUTFunction);e={lower:I,upper:R}}else{const{lower:v,upper:_}=e,{windowCenter:T,windowWidth:P}=zv(v,_);l.voi||(l.voi={windowWidth:0,windowCenter:0,voiLUTFunction:c.voiLUTFunction}),l.voi.windowWidth=P,l.voi.windowCenter=T}this.voiRange=e;const g={viewportId:this.id,range:e};i||Or(this.element,vr.VOI_MODIFIED,g)}getTransferFunction(){const e=this.getDefaultActor();return!e||!ac(e)?void 0:e.actor.getProperty().getRGBTransferFunction(0)}setVOIGPU(e,o={}){const{suppressEvents:i=!1,forceRecreateLUTFunction:l=!1,voiUpdatedWithSetProperties:c=!1}=o;if(e&&this.voiRange&&this.voiRange.lower===e.lower&&this.voiRange.upper===e.upper&&!l&&!this.stackInvalidated)return;const g=this.getDefaultActor();if(!g||!ac(g))return;const v=g.actor;let _=e;if(typeof _>"u"){const L=v.getMapper().getInputData().getPointData().getScalars().getRange();_={lower:L[0],upper:L[1]}}v.getProperty().setUseLookupTableScalarRange(!0);let T=v.getProperty().getRGBTransferFunction(0);const P=this.VOILUTFunction===j2.SAMPLED_SIGMOID;if((P||!T||l)&&(T=(P?qO:Vj)(_),this.invert&&fm(T),v.getProperty().setRGBTransferFunction(0,T),this.initialTransferFunctionNodes=n9(T)),P||T.setRange(_.lower,_.upper),this.voiRange=_,this.voiUpdatedWithSetProperties||(this.voiUpdatedWithSetProperties=c),i)return;const I={viewportId:this.id,range:_,VOILUTFunction:this.VOILUTFunction};Or(this.element,vr.VOI_MODIFIED,I)}_addScalingToViewport(e){if(this.scaling.PT)return;const{suvbw:o,suvlbm:i,suvbsa:l}=e,c={};i&&(c.suvbwToSuvlbm=i/o),l&&(c.suvbwToSuvbsa=l/o),this.scaling.PT=c}getImageDataMetadata(e){const o=e.imageId,i=DC(e),{numberOfComponents:l,origin:c,direction:g,dimensions:v,spacing:_,numVoxels:T,imagePixelModule:P,voiLUTFunction:I,modality:R,scalingFactor:L,calibration:V}=i;R==="PT"&&L&&this._addScalingToViewport(L),this.modality=R;const U=this._getValidVOILUTFunction(I);this.VOILUTFunction=U,this.calibration=V;let j=this._getImagePlaneModule(o);return this.useCPURendering||(j=this.calibrateIfNecessary(o,j)),{bitsAllocated:P.bitsAllocated,numberOfComponents:l,origin:c,direction:g,dimensions:v,spacing:_,numVoxels:T,imagePlaneModule:j,imagePixelModule:P}}matchImagesForOverlay(e,o){return(l=>{const c=Hr(z1.IMAGE_PLANE,o),g=Hr(z1.IMAGE_PLANE,l),v=c.imageOrientationPatient,_=g.imageOrientationPatient;if(v&&_){if(Qi(c.imageOrientationPatient,g.imageOrientationPatient)){const P=c.imagePositionPatient,I=g.imagePositionPatient;if(P&&I&&Qi(P,I)){const L=c.rows,V=c.columns,U=g.rows,j=g.columns;if(L===U&&V===j)return l}}}else{const T=c.rows,P=c.columns,I=g.rows,R=g.columns;if(T===I&&P===R)return l}})(e)}getImagePlaneReferenceData(e=this.getCurrentImageIdIndex()){const o=this.imageIds[e];if(!o)return;const i=Hr(z1.IMAGE_PLANE,o);if(!i)return;const{imagePositionPatient:l,frameOfReferenceUID:c}=i;let{rowCosines:g,columnCosines:v}=i;g||(g=[1,0,0]),v||(v=[0,1,0]);const _=ro([0,0,0],v,g);return{FrameOfReferenceUID:c,viewPlaneNormal:_,cameraFocalPoint:l,referencedImageId:o,sliceIndex:e}}_getCameraOrientation(e){const o=e.slice(6,9).map(l=>-l),i=e.slice(3,6).map(l=>-l);return{viewPlaneNormal:[o[0],o[1],o[2]],viewUp:[i[0],i[1],i[2]]}}createVTKImageData({origin:e,direction:o,dimensions:i,spacing:l,numberOfComponents:c,pixelArray:g}){const v=new g.constructor(g.length),_=d0.newInstance({name:"Pixels",numberOfComponents:c,values:v}),T=Wv.newInstance();return T.setDimensions(i),T.setSpacing(l),T.setDirection(o),T.setOrigin(e),T.getPointData().setScalars(_),T}_createVTKImageData({origin:e,direction:o,dimensions:i,spacing:l,numberOfComponents:c,pixelArray:g}){try{this._imageData=this.createVTKImageData({origin:e,direction:o,dimensions:i,spacing:l,numberOfComponents:c,pixelArray:g})}catch(v){XL.error(v)}}async setStack(e,o=0){if(this._throwIfDestroyed(),this.imageIds=e,o>e.length)throw new Error("Current image index is greater than the number of images in the stack");this.imageKeyToIndexMap.clear(),e.forEach((g,v)=>{this.imageKeyToIndexMap.set(g,v),this.imageKeyToIndexMap.set(Bs(g),v)}),this.currentImageIdIndex=o,this.targetImageIdIndex=o;const i=Hr(rv.IMAGE_RETRIEVE_CONFIGURATION,e[o],"stack");this.imagesLoader=i?(i.create||xj)(i):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=oh.LINEAR,this.invert=!1,this.viewportStatus=l1.LOADING,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={},delete this._cpuFallbackEnabledElement.viewport.colormap);const l=await this._setImageIdIndex(o),c={imageIds:e,viewportId:this.id,element:this.element,currentImageIdIndex:o};return Or(this.element,vr.VIEWPORT_NEW_IMAGE_SET,c),l}_throwIfDestroyed(){if(this.isDisabled)throw new Error("The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you are using the same viewportId and have re-enabled the viewport, you need to grab the new viewport instance using renderingEngine.getViewport(viewportId), instead of using your lexical scoped reference to the viewport instance.")}_checkVTKImageDataMatchesCornerstoneImage(e,o){if(!o)return!1;const[i,l]=o.getSpacing(),[c,g]=o.getDimensions(),v=this._getImagePlaneModule(e.imageId),_=o.getDirection(),T=_.slice(0,3),P=_.slice(3,6),I=o.getPointData().getScalars().getDataType(),R=Qi(i,e.columnPixelSpacing),L=Qi(l,e.rowPixelSpacing),V=R||e.columnPixelSpacing===null&&i===1,U=L||e.rowPixelSpacing===null&&l===1,j=c===e.columns,z=g===e.rows,$=Qi(v.rowCosines,T),K=Qi(v.columnCosines,P),X=I===e.voxelManager.getScalarData().constructor.name;return V&&U&&j&&z&&$&&K&&X}_updateVTKImageDataFromCornerstoneImage(e){let i=this._getImagePlaneModule(e.imageId).imagePositionPatient;i==null&&(i=[0,0,0]),this._imageData.setOrigin(i);const l=this.getActor(this.id);l&&(l.referencedId=e.imageId),IC(this._imageData,e)}_loadAndDisplayImage(e,o){return this.useCPURendering?this._loadAndDisplayImageCPU(e,o):this._loadAndDisplayImageGPU(e,o)}_loadAndDisplayImageCPU(e,o){return new Promise((i,l)=>{function c(L,V,U){if(this.currentImageIdIndex!==V)return;const j=L.voxelManager.getScalarData(),z=L.preScale,$=z==null?void 0:z.scalingParameters,K=(z==null?void 0:z.scaled)&&($==null?void 0:$.rescaleIntercept)%1!==0||($==null?void 0:$.rescaleSlope)%1!==0;if(j instanceof Float32Array&&K){const ee={min:L.minPixelValue,max:L.maxPixelValue},ce=Math.abs(ee.max-ee.min)/65535,ge=ee.min,pe=j.length,we=new Uint16Array(pe);let Te=65535,Ve=0;for(let Pe=0;Pewe:L.getPixelData=()=>we,L.preScale={...L.preScale,scaled:!1}}this._setCSImage(L),this.viewportStatus=l1.PRE_RENDER;const X={image:L,imageId:U,imageIdIndex:V,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.STACK_NEW_IMAGE,X),this._updateToDisplayImageCPU(L),this.render(),this.currentImageIdIndex=V,i(U)}function g(L,V,U){const j={error:L,imageIdIndex:V,imageId:U};this.suppressEvents||Or(pr,vr.IMAGE_LOAD_ERROR,j),l(L)}function v(L,V,U){return Xd(L,U).then(j=>{c.call(this,j,V,L)},j=>{g.call(this,j,V,L)})}const _=-5,T=R0.Interaction,P={imageId:e,imageIdIndex:o},I={useRGBA:!0,requestType:T},R={imageId:e,imageIdIndex:o,viewportId:this.id,renderingEngineId:this.renderingEngineId};Or(this.element,vr.PRE_STACK_NEW_IMAGE,R),Y1.addRequest(v.bind(this,e,o,I),T,P,_)})}successCallback(e,o){var T,P;const i=this.imageIds.indexOf(e);if(this.currentImageIdIndex!==i)return;const l=(T=this.csImage)==null?void 0:T.imageFrame,c=o==null?void 0:o.imageFrame,g=(l==null?void 0:l.photometricInterpretation)||((P=this.csImage)==null?void 0:P.photometricInterpretation),v=(c==null?void 0:c.photometricInterpretation)||(o==null?void 0:o.photometricInterpretation);g!==v&&(this.stackInvalidated=!0),this._setCSImage(o);const _={image:o,imageId:e,imageIdIndex:i,viewportId:this.id,renderingEngineId:this.renderingEngineId};this._updateActorToDisplayImageId(o),Or(this.element,vr.STACK_NEW_IMAGE,_),this.render(),this.currentImageIdIndex=i}errorCallback(e,o,i){if(!o)return;const l=this.imageIds.indexOf(e),c={error:i,imageIdIndex:l,imageId:e};Or(pr,vr.IMAGE_LOAD_ERROR,c)}getLoaderImageOptions(e){const o=this.imageIds.indexOf(e),{transferSyntaxUID:i}=Hr("transferSyntax",e)||{};return{useRGBA:!1,transferSyntaxUID:i,priority:5,requestType:R0.Interaction,additionalDetails:{imageId:e,imageIdIndex:o}}}async loadImages(e,o){const i=await Promise.allSettled(e.map(c=>{const g=this.getLoaderImageOptions(c);return Xd(c,g).then(v=>(o.successCallback(c,v),c),v=>(o.errorCallback(c,!0,v),c))})),l=i.filter(c=>c.status==="rejected");if(l&&l.length){const c=new CustomEvent(vr.IMAGE_LOAD_ERROR,{detail:l,cancelable:!0});pr.dispatchEvent(c)}return i}_loadAndDisplayImageGPU(e,o){if(!e){console.warn("No image id set yet to load");return}const i={imageId:e,imageIdIndex:o,viewportId:this.id,renderingEngineId:this.renderingEngineId};return Or(this.element,vr.PRE_STACK_NEW_IMAGE,i),this.imagesLoader.loadImages([e],this).then(l=>e)}_updateToDisplayImageCPU(e){const o=this.getImageDataMetadata(e),i=Hj(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:l,windowWidth:c,voiLUTFunction:g}=i.voi;this.voiRange=Vd(c,l,g),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...o},this.cpuImagePixelData=e.voxelManager.getScalarData();const v=Object.assign({},i,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?i:v,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=ov(this._cpuFallbackEnabledElement)}getSliceViewInfo(){throw new Error("Method not implemented.")}addImages(e){const o=[];e.forEach(i=>{const{imageId:l,...c}=i,g=Jn.getImage(l),{origin:v,dimensions:_,direction:T,spacing:P,numberOfComponents:I}=this.getImageDataMetadata(g),R=this.createVTKImageData({origin:v,dimensions:_,direction:T,spacing:P,numberOfComponents:I,pixelArray:g.voxelManager.getScalarData()}),L=this.createActorMapper(R);L&&(o.push({uid:i.actorUID??H0(),actor:L,referencedId:l,...c}),i.callback&&i.callback({imageActor:L,imageId:i.imageId}))}),this.addActors(o)}_updateActorToDisplayImageId(e){const o=this._checkVTKImageDataMatchesCornerstoneImage(e,this._imageData),i=this.getViewPresentation();if(o&&!this.stackInvalidated){this._updateVTKImageDataFromCornerstoneImage(e),this.resetCameraNoEvent(),this.setViewPresentation(i),this._setPropertiesFromCache(),this.stackActorReInitialized=!1;return}const{origin:l,direction:c,dimensions:g,spacing:v,numberOfComponents:_,imagePixelModule:T}=this.getImageDataMetadata(e),P=e.voxelManager.getScalarData();this._createVTKImageData({origin:l,direction:c,dimensions:g,spacing:v,numberOfComponents:_,pixelArray:P}),this._updateVTKImageDataFromCornerstoneImage(e);const I=this.createActorMapper(this._imageData),R=this.getActors();R.length&&R[0].uid===this.id?R[0].actor=I:R.unshift({uid:this.id,actor:I,referencedId:e.imageId}),this.setActors(R);const{viewPlaneNormal:L,viewUp:V}=this._getCameraOrientation(c),U=this.getCamera();this.setCameraNoEvent({viewUp:V,viewPlaneNormal:L}),this.initialViewUp=V,this.resetCameraNoEvent(),this.setViewPresentation(i),this.triggerCameraEvent(this.getCamera(),U);const j=T.photometricInterpretation==="MONOCHROME1";this.stackInvalidated=!0;const z=this._getInitialVOIRange(e);this.setVOI(z,{forceRecreateLUTFunction:!!j}),this.initialInvert=!!j,this.setInvertColor(this.invert||this.initialInvert),this.stackInvalidated=!1,this.stackActorReInitialized=!0,this._publishCalibratedEvent&&this.triggerCalibrationEvent()}_getInitialVOIRange(e){if(this.voiRange&&this.voiUpdatedWithSetProperties)return this.voiRange;const{windowCenter:o,windowWidth:i,voiLUTFunction:l}=e;let c=this._getVOIRangeFromWindowLevel(i,o,l);return c=this._getPTPreScaledRange()||c,c}_getPTPreScaledRange(){if(this._isCurrentImagePTPrescaled())return this._getDefaultPTPrescaledVOIRange()}_isCurrentImagePTPrescaled(){var e;return!(this.modality!=="PT"||!this.csImage.isPreScaled||!((e=this.csImage.preScale)!=null&&e.scalingParameters.suvbw))}_getDefaultPTPrescaledVOIRange(){return{lower:0,upper:5}}_getVOIRangeFromWindowLevel(e,o,i=j2.LINEAR){let l,c;if(typeof o=="number"&&typeof e=="number"?(l=o,c=e):Array.isArray(o)&&Array.isArray(e)&&(l=o[0],c=e[0]),l!==void 0&&c!==void 0)return Vd(c,l,i)}async _setImageIdIndex(e){if(e>=this.imageIds.length)throw new Error(`ImageIdIndex provided ${e} is invalid, the stack only has ${this.imageIds.length} elements`);this.currentImageIdIndex=e,this.hasPixelSpacing=!0,this.viewportStatus=l1.PRE_RENDER;const o=await this._loadAndDisplayImage(this.imageIds[e],e);if(this.perImageIdDefaultProperties.size>=1){const i=this.perImageIdDefaultProperties.get(o);i!==void 0?this.setProperties(i):this.globalDefaultProperties!==void 0&&this.setProperties(this.globalDefaultProperties)}return o}resetCameraCPU({resetPan:e=!0,resetZoom:o=!0}){const{image:i}=this._cpuFallbackEnabledElement;if(!i)return;Hde(this._cpuFallbackEnabledElement,e,o);const{scale:l}=this._cpuFallbackEnabledElement.viewport,{clientWidth:c,clientHeight:g}=this.element,v=[c/2,g/2],_=this.canvasToWorldCPU(v);this.setCameraCPU({focalPoint:_,scale:l})}resetCameraGPU({resetPan:e,resetZoom:o}){return this.setCamera({flipHorizontal:!1,flipVertical:!1,viewUp:this.initialViewUp}),super.resetCamera({resetPan:e,resetZoom:o,resetToCenter:!0})}scroll(e,o=!0,i=!1){const l=this.imageIds;if(isNaN(this.targetImageIdIndex))return;const c=this.targetImageIdIndex,g=l.length;let v=c+e;i?v=(v+g)%g:v=Math.max(0,Math.min(g-1,v)),this.targetImageIdIndex=v;const _=l[v];Jn.isLoaded(_)||!o?this.setImageIdIndex(v):(clearTimeout(this.debouncedTimeout),this.debouncedTimeout=window.setTimeout(()=>{this.setImageIdIndex(v)},40));const P={newImageIdIndex:v,imageId:_,direction:e};v!==c&&Or(this.element,vr.STACK_VIEWPORT_SCROLL,P)}setImageIdIndex(e){if(this._throwIfDestroyed(),this.currentImageIdIndex===e)return Promise.resolve(this.getCurrentImageId());const o=this._setImageIdIndex(e);return this.targetImageIdIndex=e,o}calibrateSpacing(e){const o=this.getImageIds().indexOf(e);this.stackInvalidated=!0,this._loadAndDisplayImage(e,o)}triggerCameraEvent(e,o){const i={previousCamera:o,camera:e,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};this.suppressEvents||Or(this.element,vr.CAMERA_MODIFIED,i)}triggerCalibrationEvent(){const{imageData:e}=this.getImageData(),o={element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,imageId:this.getCurrentImageId(),imageData:e,worldToIndex:e.getWorldToIndex(),...this._calibrationEvent};this.suppressEvents||Or(this.element,vr.IMAGE_SPACING_CALIBRATED,o),this._publishCalibratedEvent=!1}jumpToWorld(e){const o=this.getImageIds(),i=this.getImageData(),{direction:l,spacing:c}=i,g=yh({direction:l,spacing:c,imageIds:o},e,this.getCamera().viewPlaneNormal,{ignoreSpacing:!0}),v=o.indexOf(g);return v===-1?!1:(this.setImageIdIndex(v),this.render(),!0)}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:o,voiLUTFunction:i}=this.csImage;return this._getVOIRangeFromWindowLevel(o,e,i)}_getValidVOILUTFunction(e){return Object.values(j2).includes(e)?e:j2.LINEAR}getSliceInfo(){const e=this.getSliceIndex(),{dimensions:o}=this.getImageData();return{width:o[0],height:o[1],sliceIndex:e,slicePlane:2}}isReferenceViewable(e,o={}){const i=this.getCurrentImageIdIndex(),l=this.imageIds[i];if(!l||!e)return!1;const{referencedImageId:c,multiSliceReference:g}=e;if(c){if(c===l)return!0;e.referencedImageURI||(e.referencedImageURI=Bs(c));const{referencedImageURI:_}=e,T=this.imageKeyToIndexMap.get(_);if(o.asOverlay&&this.matchImagesForOverlay(l,c))return!0;if(T===void 0)return!1;if(o.withNavigation)return!0;const P=g&&this.imageKeyToIndexMap.get(g.referencedImageId);return i<=P&&i>=T}if(!super.isReferenceViewable(e,o))return!1;if(e.volumeId)return o.asVolume;const{cameraFocalPoint:v}=e;if(o.asNearbyProjection&&v){const{spacing:_,direction:T,origin:P}=this.getImageData(),I=T.slice(6,9),R=l4({direction:T,spacing:_},I),L=Wo(nr(),v,P),V=mi(L,I),U=R/2;if(Math.abs(V)<=U)return!0}return!1}getViewReference(e={}){const{sliceIndex:o=this.getCurrentImageIdIndex()}=e,i=super.getViewReference(e),l=this.getCurrentImageId(o);if(l){if(i.referencedImageId=l,this.getCurrentImageIdIndex()!==o){const c=this.getImagePlaneReferenceData(o);if(!c)return;Object.assign(i,c)}return i}}setViewReference(e){if(!(e!=null&&e.referencedImageId)){(e==null?void 0:e.sliceIndex)!==void 0&&this.scroll(e.sliceIndex-this.targetImageIdIndex);return}const{referencedImageId:o}=e;e.referencedImageURI||(e.referencedImageURI=Bs(o));const{referencedImageURI:i}=e,l=this.imageKeyToIndexMap.get(i);if(l===void 0){XL.error(`No image URI found for ${i}`);return}this.scroll(l-this.targetImageIdIndex)}getViewReferenceId(e={}){const{sliceIndex:o=this.currentImageIdIndex}=e;return`imageId:${this.imageIds[o]}`}getSliceIndexForImage(e){if(e){if(typeof e=="string")return this.imageKeyToIndexMap.get(e);if(e.referencedImageId)return this.imageKeyToIndexMap.get(e.referencedImageId)}}getCPUFallbackError(e){return new Error(`method ${e} cannot be used during CPU Fallback mode`)}fillWithBackgroundColor(){const e=this.getRenderingEngine();e&&e.fillCanvasWithBackgroundColor(this.canvas,this.options.background)}unsetColormapCPU(){delete this._cpuFallbackEnabledElement.viewport.colormap,this._cpuFallbackEnabledElement.renderingTools={},this.cpuRenderingInvalidated=!0,this.fillWithBackgroundColor(),this.render()}setColormapCPU(e){this.colormap=e;const o=nv(e.name);this._cpuFallbackEnabledElement.viewport.colormap=o,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render();const i={viewportId:this.id,colormap:e};Or(this.element,vr.COLORMAP_MODIFIED,i)}setColormapGPU(e){const l=this.getDefaultActor().actor.getProperty(),c=l.getRGBTransferFunction(),g=nv(e.name)||tv.getPresetByName(e.name);if(c)c.applyColorMap(g),c.setMappingRange(this.voiRange.lower,this.voiRange.upper),l.setRGBTransferFunction(0,c);else{const _=wh.newInstance();_.applyColorMap(g),_.setMappingRange(this.voiRange.lower,this.voiRange.upper),l.setRGBTransferFunction(0,_)}this.colormap=e,this.render();const v={viewportId:this.id,colormap:e};Or(this.element,vr.COLORMAP_MODIFIED,v)}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){var i,l;const o=bj(e);return this.hasPixelSpacing=!o.usingDefaultValues||((i=this.calibration)==null?void 0:i.scale)>0||((l=this.calibration)==null?void 0:l.rowPixelSpacing)>0,this.calibration||(this.calibration=o.calibration),o}isInAcquisitionPlane(){return!0}}class Kj extends xs{constructor(e){super(e),this.getNumberOfSlices=()=>1,this.getRotation=()=>0,this.getCurrentImageIdIndex=()=>0,this.getCurrentImageId=()=>null,this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0});const{parallelProjection:o,orientation:i}=this.options,l=this.getVtkActiveCamera();o!=null&&l.setParallelProjection(o),i&&i!==Vg.ACQUISITION&&this.applyViewOrientation(i)}isInAcquisitionPlane(){return!1}resetCamera({resetPan:e=!0,resetZoom:o=!0,resetToCenter:i=!0}={}){super.resetCamera({resetPan:e,resetZoom:o,resetToCenter:i});const l=this.getVtkActiveCamera();return l.getParallelProjection()?l.setClippingRange(-oa.MAXIMUM_RAY_DISTANCE,oa.MAXIMUM_RAY_DISTANCE):l.setClippingRange(oa.MINIMUM_SLAB_THICKNESS,oa.MAXIMUM_RAY_DISTANCE),this.getRenderer().resetCameraClippingRange(),!0}setSlabThickness(e,o){return null}setBlendMode(e,o,i){return null}resetProperties(e){const o=e?this.getActor(e):this.getDefaultActor();if(!o)throw new Error(`No actor found for the given volumeId: ${e}`);o.slabThickness&&(o.slabThickness=oa.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const i=Jn.getVolume(e);if(!i)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(eM(o.actor,i),ac(o)){const l=o.actor.getProperty().getRGBTransferFunction(0);xC(l,this.initialTransferFunctionNodes)}this.setCamera(this.initialCamera),Or(this.element,vr.VOI_MODIFIED,super.getVOIModifiedEventDetail(e))}getSliceIndex(){return null}setCamera(e){super.setCamera(e),this.getRenderer().resetCameraClippingRange(),this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(-oa.MAXIMUM_RAY_DISTANCE,oa.MAXIMUM_RAY_DISTANCE):e.setClippingRange(oa.MINIMUM_SLAB_THICKNESS,oa.MAXIMUM_RAY_DISTANCE)}resetSlabThickness(){return null}}async function qde(n,e,o,i=!1,l=!1){o.forEach(g=>{const v=n.getViewport(g);if(!v)throw new Error(`Viewport with Id ${g} does not exist`);if(!(v instanceof xs))throw new Error("setVolumesForViewports only supports VolumeViewport and VolumeViewport3D")});const c=o.map(async g=>{await n.getViewport(g).setVolumes(e,i,l)});await Promise.all(c)}async function Xde(n,e,o,i=!1,l=!1){for(const g of o){const v=n.getViewport(g);if(!v)throw new Error(`Viewport with Id ${g} does not exist`);if(!(v instanceof xs)){console.warn(`Viewport with Id ${g} is not a BaseVolumeViewport. Cannot add volume to this viewport.`);return}}const c=o.map(async g=>{await n.getViewport(g).addVolumes(e,i,l)});await Promise.all(c)}function Yde(n,e,o){for(const i of o){const l=n.getViewport(i);if(!l)throw new Error(`Viewport with Id ${i} does not exist`);if(!l.addImages){console.warn(`Viewport with Id ${i} does not have addImages. Cannot add image segmentation to this viewport.`);return}}o.forEach(i=>{n.getViewport(i).addImages(e)})}class Jde{constructor(e){this.opacity=.4,this.outlineOpacity=.4,this.transferFunction=[],this.actor=e}setRGBTransferFunction(e,o){this.transferFunction[e]=o}setScalarOpacity(e){}setInterpolationTypeToNearest(){}setUseLabelOutline(){}setLabelOutlineOpacity(e){this.outlineOpacity=e}setLabelOutlineThickness(){}getColor(e){const o=this.transferFunction[0],i=o.getRedValue(e),l=o.getGreenValue(e),c=o.getBlueValue(e);return[i,l,c,this.opacity]}}class Zde{constructor(e){this.actor=e}getInputData(){return this.actor.getImage()}}class Qde{constructor(e,o){this.canvasProperties=new Jde(this),this.visibility=!1,this.mapper=new Zde(this),this.className="CanvasActor",this.derivedImage=o,this.viewport=e}renderRLE(e,o,i){const{width:l,height:c}=this.image;let{canvas:g}=this;(!g||g.width!==l||g.height!==c)&&(this.canvas=g=new window.OffscreenCanvas(l,c));const v=g.getContext("2d"),_=v.createImageData(l,c),{data:T}=_;T.fill(0);const{map:P}=i;let I=1/0,R=1/0,L=-1/0,V=-1/0;for(let z=0;zwe*255);let pe=K+(ne<<2);for(let we=ne;wel)return;const U=L-I,j=V-R;v.putImageData(_,0,0,I-1,R-1,U+2,j+2),o.drawImage(g,I,R,U,j,I,R,U,j)}setMapper(e){this.mapper=e}render(e,o){if(!this.visibility)return;const i=this.image||this.getImage(),{width:l,height:c}=i,g=i.getScalarData();if(!g)return;const{voxelManager:v}=i;if(v&&v.map.getRun){this.renderRLE(e,o,v);return}let{canvas:_}=this;(!_||_.width!==l||_.height!==c)&&(this.canvas=_=new window.OffscreenCanvas(l,c));const T=_.getContext("2d"),P=T.createImageData(l,c),{data:I}=P;let R=0,L=0,V=1/0,U=1/0,j=-1/0,z=-1/0;for(let X=0;Xl)return;const $=j-V+1,K=z-U+1;T.putImageData(P,0,0,V,U,$,K),o.drawImage(_,V,U,$,K,V,U,$,K)}getClassName(){return this.className}getProperty(){return this.canvasProperties}setVisibility(e){this.visibility=e}getMapper(){return this.mapper}isA(e){return e===this.className}getImage(){if(this.image)return this.image;this.image={...this.derivedImage};const e=this.viewport.getImageData();return Object.assign(this.image,{worldToIndex:o=>e.imageData.worldToIndex(o),indexToWorld:(o,i)=>e.imageData.indexToWorld(o,i),getDimensions:()=>e.dimensions,getScalarData:()=>{var o;return(o=this.derivedImage)==null?void 0:o.getPixelData()},getDirection:()=>e.direction,getSpacing:()=>e.spacing,setOrigin:()=>null,setDerivedImage:o=>{this.derivedImage=o,this.image=null},modified:()=>null}),this.image}}const KP=class KP{static imageIdToFrames(e){const o=e.match(this.frameRangeExtractor);if(!o||!o[2])return null;const i=o[2].split("-").map(l=>Number(l));return i.length===1?i[0]:i}static imageIdToFrameEnd(e){const o=this.imageIdToFrames(e);return Array.isArray(o)?o[1]:o}static imageIdToFrameStart(e){const o=this.imageIdToFrames(e);return Array.isArray(o)?o[0]:o}static framesToString(e){return Array.isArray(e)?`${e[0]}-${e[1]}`:String(e)}static framesToImageId(e,o){const i=e.match(this.frameRangeExtractor);if(!i||!i[2])return null;const l=this.framesToString(o);return e.replace(this.frameRangeExtractor,`${i[1]}${l}`)}};KP.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let n8=KP;const Tm=class Tm extends S8{constructor(e){super({...e,canvas:e.canvas||th(e.element)}),this.videoWidth=0,this.videoHeight=0,this.loop=!0,this.mute=!0,this.isPlaying=!1,this.scrollSpeed=1,this.playbackRate=1,this.frameRange=[0,0],this.fps=30,this.videoCamera={panWorld:[0,0],parallelScale:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({loop:this.videoElement.loop,muted:this.videoElement.muted,playbackRate:this.playbackRate,scrollSpeed:this.scrollSpeed,voiRange:{...this.voiRange}}),this.getMiddleSliceData=()=>{throw new Error("Method not implemented.")},this.useCustomRenderingPipeline=!0,this.resetCamera=()=>(this.refreshRenderValues(),this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame(),!0),this.getNumberOfSlices=()=>{const o=Math.round(this.videoElement.duration*this.fps/this.scrollSpeed);return isNaN(o)?this.numberOfFrames:o},this.getFrameOfReferenceUID=()=>this.videoElement.src,this.resize=()=>{const o=this.canvas,{clientWidth:i,clientHeight:l}=o;(o.width!==i||o.height!==l)&&(o.width=i,o.height=l),this.refreshRenderValues(),this.isPlaying||this.renderFrame()},this.canvasToWorld=(o,i=[0,0,0])=>{const l=this.videoCamera.panWorld,c=this.getWorldToCanvasRatio(),g=[l[0]*c,l[1]*c],v=[o[0]-g[0],o[1]-g[1]];return i.splice(0,2,v[0]/c,v[1]/c),i},this.worldToCanvas=o=>{const i=this.videoCamera.panWorld,l=this.getWorldToCanvasRatio();return[(o[0]+i[0])*l,(o[1]+i[1])*l]},this.getRotation=()=>0,this.canvasToIndex=o=>{const i=this.getTransform();return i.invert(),i.transformPoint(o.map(l=>l*devicePixelRatio))},this.indexToCanvas=o=>this.getTransform().transformPoint(o).map(l=>l/devicePixelRatio),this.customRenderViewportToCanvas=()=>{this.renderFrame()},this.renderFrame=()=>{var v;const o=window.devicePixelRatio||1,l=this.getTransform().getMatrix(),c=this.canvasContext;c.resetTransform(),c.clearRect(0,0,this.canvas.width,this.canvas.height),c.transform(l[0]/o,l[1]/o,l[2]/o,l[3]/o,l[4]/o,l[5]/o),c.drawImage(this.videoElement,0,0,this.videoWidth,this.videoHeight);for(const _ of this.getActors())_.actor.render(this,this.canvasContext);this.canvasContext.resetTransform(),Or(this.element,vr.STACK_NEW_IMAGE,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),Or(this.element,vr.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,imageIndex:this.getCurrentImageIdIndex(),numberOfSlices:this.numberOfFrames,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),(v=this.initialRender)==null||v.call(this);const g=this.getFrameNumber();this.isPlaying&&(gthis.frameRange[1]&&(this.loop?this.setFrameNumber(this.frameRange[0]):this.pause()))},this.renderWhilstPlaying=()=>{this.renderFrame(),this.isPlaying&&requestAnimationFrame(this.renderWhilstPlaying)},this.canvasContext=this.canvas.getContext("2d"),this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.videoElement=document.createElement("video"),this.videoElement.muted=this.mute,this.videoElement.loop=this.loop,this.videoElement.autoplay=!0,this.videoElement.crossOrigin="anonymous",this.addEventListeners(),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(vr.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(vr.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}getImageDataMetadata(e){const o=typeof e=="string"?e:e.imageId,i=Hr(z1.IMAGE_PLANE,o);let l=i.rowCosines,c=i.columnCosines;(i.usingDefaultValues||l==null||c==null)&&(l=[1,0,0],c=[0,1,0]);const v=Ei(l[0],l[1],l[2]),_=Ei(c[0],c[1],c[2]),{rows:T,columns:P}=i,I=nr();ro(I,v,_);let R=i.imagePositionPatient;R==null&&(R=[0,0,0]);const L=i.columnPixelSpacing||1,V=i.rowPixelSpacing||1,U=i.columns,j=i.rows,z=1,$=1;return this.hasPixelSpacing=!!i.columnPixelSpacing,{bitsAllocated:8,numberOfComponents:3,origin:R,rows:T,columns:P,direction:[...v,..._,...I],dimensions:[U,j,$],spacing:[L,V,z],hasPixelSpacing:this.hasPixelSpacing,numVoxels:U*j*$,imagePlaneModule:i}}setDataIds(e,o){var i;this.setVideo(e[0],(((i=o.viewReference)==null?void 0:i.sliceIndex)||0)+1)}setVideo(e,o){this.imageId=Array.isArray(e)?e[0]:e;const i=Hr(z1.IMAGE_URL,e);if(!(i!=null&&i.rendered))throw new Error(`Video Image ID ${e} does not have a rendered video view`);const{rendered:l}=i,c=Hr(z1.GENERAL_SERIES,e);this.modality=c==null?void 0:c.Modality,this.metadata=this.getImageDataMetadata(e);let{cineRate:g,numberOfFrames:v}=Hr(z1.CINE,e);return this.numberOfFrames=v,this.setVideoURL(l).then(()=>((!v||v===1)&&(v=Math.round(this.videoElement.duration*(g||30))),g||(g=Math.round(v/this.videoElement.duration)),this.fps=g,this.numberOfFrames=v,this.setFrameRange([1,v]),this.initialRender=()=>{this.initialRender=null,this.pause(),this.setFrameNumber(o||1)},new Promise(_=>{window.setTimeout(()=>{this.setFrameNumber(o||1),_(this)},25)})))}async setVideoURL(e){return new Promise(o=>{this.videoElement.src=e,this.videoElement.preload="auto";const i=()=>{this.videoWidth=this.videoElement.videoWidth,this.videoHeight=this.videoElement.videoHeight,this.videoElement.removeEventListener("loadedmetadata",i),this.refreshRenderValues(),o(!0)};this.videoElement.addEventListener("loadedmetadata",i)})}getImageIds(){const e=new Array(this.numberOfFrames),o=this.imageId.replace(/[0-9]+$/,"");for(let i=0;i{i(),o.removeEventListener("seeked",g)};o.addEventListener("seeked",g)}async start(){const e=this.videoElement,o=this.renderFrame;if(e.currentTime=0,e.paused){const i=l=>{o(),e.removeEventListener("seeked",i)};e.addEventListener("seeked",i)}}async end(){const e=this.videoElement,o=this.renderFrame;if(e.currentTime=e.duration,e.paused){const i=l=>{o(),e.removeEventListener("seeked",i)};e.addEventListener("seeked",i)}}async setTime(e){const o=this.videoElement,i=this.renderFrame;if(o.currentTime=e,o.paused){const l=c=>{i(),o.removeEventListener("seeked",l)};o.addEventListener("seeked",l)}}getSliceViewInfo(){throw new Error("Method not implemented.")}async setFrameNumber(e){this.setTime((e-1)/this.fps)}setFrameRange(e){if(!e){this.frameRange=[1,this.numberOfFrames];return}e.length!==2||e[0]===e[1]||(this.frameRange=[e[0],e[1]])}getSliceIndexForImage(e){if(e){if(typeof e=="string")return n8.imageIdToFrameStart(e);if(e.referencedImageId)return n8.imageIdToFrameStart(e.referencedImageId)}}getFrameRange(){return this.frameRange}setProperties(e){e.loop!==void 0&&(this.videoElement.loop=e.loop),e.muted!==void 0&&(this.videoElement.muted=e.muted),e.playbackRate!==void 0&&this.setPlaybackRate(e.playbackRate),e.scrollSpeed!==void 0&&this.setScrollSpeed(e.scrollSpeed),e.voiRange&&this.setVOI(e.voiRange)}setPlaybackRate(e=1){if(this.playbackRate=e,e<.0625){this.pause();return}this.videoElement&&(this.videoElement.playbackRate=e,this.play())}setScrollSpeed(e=1,o=Jm.FRAME){this.scrollSpeed=o===Jm.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0,voiRange:{lower:0,upper:255}})}getScalarData(){var c;if(((c=this.scalarData)==null?void 0:c.frameNumber)===this.getFrameNumber())return this.scalarData;if(!this.videoElement||!this.videoElement.videoWidth||!this.videoElement.videoHeight){console.debug("Video not ready yet, returning empty scalar data");const g=new Uint8ClampedArray;return g.getRange=()=>[0,255],g.frameNumber=-1,g}const e=document.createElement("canvas");e.width=this.videoElement.videoWidth,e.height=this.videoElement.videoHeight;const o=e.getContext("2d");o.drawImage(this.videoElement,0,0);const l=o.getImageData(0,0,e.width,e.height).data;return l.getRange=()=>[0,255],l.frameNumber=this.getFrameNumber(),this.scalarData=l,l}getImageData(){const{metadata:e}=this,o=e.spacing,i={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:c=>{const g=this.worldToCanvas(c),v=this.canvasToIndex(g);return[v[0],v[1],0]},indexToWorld:(c,g)=>{const v=this.indexToCanvas([c[0],c[1]]);return this.canvasToWorld(v,g)}},l={dimensions:e.dimensions,spacing:o,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:e.FrameOfReferenceUID},getScalarData:()=>this.getScalarData(),scalarData:this.getScalarData(),imageData:i,voxelManager:{forEach:(c,g)=>YO(g.imageData,{pointInShapeFn:g.isInObject??(()=>!0),callback:c,boundsIJK:g.boundsIJK,returnPoints:g.returnPoints??!1})},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1}};return Object.defineProperty(i,"scalarData",{get:()=>this.getScalarData(),enumerable:!0}),l}hasImageURI(e){const o=e.match(Tm.frameRangeExtractor),i=o?e.substring(0,o.index):e;return this.imageId.includes(i)}setVOI(e){this.voiRange=e;const o=this.setColorTransform(e,this.averageWhite);this.canvas.style.filter=o}setWindowLevel(e=256,o=128){const i=o-e/2,l=o+e/2-1;this.setVOI({lower:i,upper:l}),this.setColorTransform({lower:i,upper:l},this.averageWhite)}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}setCamera(e){const{parallelScale:o,focalPoint:i}=e;if(o&&(this.videoCamera.parallelScale=this.element.clientHeight/2/o),i!==void 0){const l=this.worldToCanvas(i),c=[this.element.clientWidth/2,this.element.clientHeight/2],g=[(l[0]-c[0])/this.videoCamera.parallelScale,(l[1]-c[1])/this.videoCamera.parallelScale];this.videoCamera.panWorld=[this.videoCamera.panWorld[0]-g[0],this.videoCamera.panWorld[1]-g[1]]}this.canvasContext.fillStyle="rgba(0,0,0,1)",this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame()}getCurrentImageId(e=this.getCurrentImageIdIndex()){return this.imageId.replace("/frames/1",`/frames/${e+1}`)}getViewReferenceId(e={}){const{sliceIndex:o}=e;return o===void 0?`videoId:${this.getCurrentImageId()}`:Array.isArray(o)?`videoId:${this.imageId.substring(0,this.imageId.length-1)}${o[0]+1}-${o[1]+1}`:`videoId:${this.imageId.replace("/frames/1",`/frames/${1+o}`)}`}isReferenceViewable(e,o={}){let{imageURI:i}=o;const{referencedImageId:l,sliceIndex:c,multiSliceReference:g}=e;if(!super.isReferenceViewable(e))return!1;const v=this.getCurrentImageId();if(!i){const R=v.indexOf(":");i=v.substring(R+1,v.length-1)}if(o.withNavigation)return!0;const _=this.getSliceIndex();if(g){const R=n8.imageIdToFrameEnd(g.referencedImageId);return _>=c&&_<=R}if(c!==void 0)return _===c;if(!l)return!1;const T=l.match(Tm.frameRangeExtractor);if(!T||!T[2])return!0;const P=T[2].split("-").map(R=>Number(R)),I=_+1;return P[0]<=I&&I<=(P[1]??P[0])}setViewReference(e){typeof e.sliceIndex=="number"?this.setFrameNumber(e.sliceIndex+1):Array.isArray(e.sliceIndex)&&this.setFrameRange(e.sliceIndex)}getViewReference(e){const o=(e==null?void 0:e.sliceIndex)??(this.isPlaying?this.frameRange[0]:this.getCurrentImageIdIndex()),i=(e==null?void 0:e.rangeEndSliceIndex)??(this.isPlaying?this.frameRange[1]-1:void 0),l=i>o?{sliceIndex:i,referencedImageId:this.getCurrentImageId(i)}:void 0;return{...super.getViewReference(e),referencedImageId:this.getViewReferenceId(e),sliceIndex:o,multiSliceReference:l}}getFrameNumber(){return 1+this.getCurrentImageIdIndex()}getCurrentImageIdIndex(){return Math.round(this.videoElement.currentTime*this.fps)}getSliceIndex(){return this.getCurrentImageIdIndex()/this.scrollSpeed}getCamera(){const{parallelScale:e}=this.videoCamera,o=[this.element.clientWidth/2,this.element.clientHeight/2];return{parallelProjection:!0,focalPoint:this.canvasToWorld(o),position:[0,0,0],viewUp:[0,-1,0],parallelScale:this.element.clientHeight/2/e,viewPlaneNormal:[0,0,1]}}getFrameRate(){return this.fps}getPan(){const e=this.videoCamera.panWorld;return[e[0],e[1]]}refreshRenderValues(){let e=this.canvas.offsetWidth/this.videoWidth;this.videoHeight*e>this.canvas.height&&(e=this.canvas.offsetHeight/this.videoHeight);const o=Math.floor(this.videoWidth*e),i=Math.floor(this.videoHeight*e),l=(this.canvas.offsetWidth-o)/2,c=(this.canvas.offsetHeight-i)/2,g=l/e,v=c/e;this.videoCamera.panWorld=[g,v],this.videoCamera.parallelScale=e}getWorldToCanvasRatio(){return this.videoCamera.parallelScale}getCanvasToWorldRatio(){return 1/this.videoCamera.parallelScale}getTransform(){const e=this.videoCamera.panWorld,o=window.devicePixelRatio||1,i=this.getWorldToCanvasRatio(),l=this.getCanvasToWorldRatio(),c=[this.canvas.offsetWidth/2,this.canvas.offsetHeight/2],g=[c[0]*l,c[1]*l],v=new X8;return v.scale(o,o),v.translate(c[0],c[1]),v.scale(i,i),v.translate(e[0],e[1]),v.translate(-g[0],-g[1]),v}updateCameraClippingPlanesAndRange(){}addImages(e){const o=this.getActors();e.forEach(i=>{const{imageId:l,...c}=i,g=Jn.getImage(l),v=this.createActorMapper(g),_=i.actorUID??H0();v&&(o.push({uid:_,actor:v,referencedId:l,...c}),i.callback&&i.callback({imageActor:v,imageId:l}))}),this.setActors(o)}createActorMapper(e){return new Qde(this,e)}};Tm.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let sv=Tm;const e4e=` +.DicomMicroscopyViewer { + --ol-partial-background-color: rgba(127, 127, 127, 0.7); + --ol-foreground-color: #000000; + --ol-subtle-foreground-color: #000; + --ol-subtle-background-color: rgba(78, 78, 78, 0.5); +} + +.DicomMicroscopyViewer .ol-box { + box-sizing: border-box; + border-radius: 2px; + border: 1.5px solid var(--ol-background-color); + background-color: var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-mouse-position { + top: 8px; + right: 8px; + position: absolute; +} + +.DicomMicroscopyViewer .ol-scale-line { + background: var(--ol-partial-background-color); + border-radius: 4px; + bottom: 8px; + left: 8px; + padding: 2px; + position: absolute; +} + +.DicomMicroscopyViewer .ol-scale-line-inner { + border: 1px solid var(--ol-subtle-foreground-color); + border-top: none; + color: var(--ol-foreground-color); + font-size: 10px; + text-align: center; + margin: 1px; + will-change: contents, width; + transition: all 0.25s; +} + +.DicomMicroscopyViewer .ol-scale-bar { + position: absolute; + bottom: 8px; + left: 8px; +} + +.DicomMicroscopyViewer .ol-scale-bar-inner { + display: flex; +} + +.DicomMicroscopyViewer .ol-scale-step-marker { + width: 1px; + height: 15px; + background-color: var(--ol-foreground-color); + float: right; + z-index: 10; +} + +.DicomMicroscopyViewer .ol-scale-step-text { + position: absolute; + bottom: -5px; + font-size: 10px; + z-index: 11; + color: var(--ol-foreground-color); + text-shadow: + -1.5px 0 var(--ol-partial-background-color), + 0 1.5px var(--ol-partial-background-color), + 1.5px 0 var(--ol-partial-background-color), + 0 -1.5px var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-scale-text { + position: absolute; + font-size: 12px; + text-align: center; + bottom: 25px; + color: var(--ol-foreground-color); + text-shadow: + -1.5px 0 var(--ol-partial-background-color), + 0 1.5px var(--ol-partial-background-color), + 1.5px 0 var(--ol-partial-background-color), + 0 -1.5px var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar { + position: relative; + height: 10px; + z-index: 9; + box-sizing: border-box; + border: 1px solid var(--ol-foreground-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar-even { + background-color: var(--ol-subtle-foreground-color); +} + +.DicomMicroscopyViewer .ol-scale-singlebar-odd { + background-color: var(--ol-background-color); +} + +.DicomMicroscopyViewer .ol-unsupported { + display: none; +} + +.DicomMicroscopyViewer .ol-viewport, +.DicomMicroscopyViewer .ol-unselectable { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} + +.DicomMicroscopyViewer .ol-viewport canvas { + all: unset; +} + +.DicomMicroscopyViewer .ol-selectable { + -webkit-touch-callout: default; + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} + +.DicomMicroscopyViewer .ol-grabbing { + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} + +.DicomMicroscopyViewer .ol-grab { + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} + +.DicomMicroscopyViewer .ol-control { + position: absolute; + background-color: var(--ol-subtle-background-color); + border-radius: 4px; +} + +.DicomMicroscopyViewer .ol-zoom { + top: 0.5em; + left: 0.5em; +} + +.DicomMicroscopyViewer .ol-rotate { + top: 0.5em; + right: 0.5em; + transition: + opacity 0.25s linear, + visibility 0s linear; +} + +.DicomMicroscopyViewer .ol-rotate.ol-hidden { + opacity: 0; + visibility: hidden; + transition: + opacity 0.25s linear, + visibility 0s linear 0.25s; +} + +.DicomMicroscopyViewer .ol-zoom-extent { + top: 4.643em; + left: 0.5em; +} + +.DicomMicroscopyViewer .ol-full-screen { + right: 0.5em; + top: 0.5em; +} + +.DicomMicroscopyViewer .ol-control button { + display: block; + margin: 1px; + padding: 0; + color: var(--ol-subtle-foreground-color); + font-weight: bold; + text-decoration: none; + font-size: inherit; + text-align: center; + height: 1.375em; + width: 1.375em; + line-height: 0.4em; + background-color: var(--ol-background-color); + border: none; + border-radius: 2px; +} + +.DicomMicroscopyViewer .ol-control button::-moz-focus-inner { + border: none; + padding: 0; +} + +.DicomMicroscopyViewer .ol-zoom-extent button { + line-height: 1.4em; +} + +.DicomMicroscopyViewer .ol-compass { + display: block; + font-weight: normal; + will-change: transform; +} + +.DicomMicroscopyViewer .ol-touch .ol-control button { + font-size: 1.5em; +} + +.DicomMicroscopyViewer .ol-touch .ol-zoom-extent { + top: 5.5em; +} + +.DicomMicroscopyViewer .ol-control button:hover, +.DicomMicroscopyViewer .ol-control button:focus { + text-decoration: none; + outline: 1px solid var(--ol-subtle-foreground-color); + color: var(--ol-foreground-color); +} + +.DicomMicroscopyViewer .ol-zoom .ol-zoom-in { + border-radius: 2px 2px 0 0; +} + +.DicomMicroscopyViewer .ol-zoom .ol-zoom-out { + border-radius: 0 0 2px 2px; +} + +.DicomMicroscopyViewer .ol-attribution { + text-align: right; + bottom: 0.5em; + right: 0.5em; + max-width: calc(100% - 1.3em); + display: flex; + flex-flow: row-reverse; + align-items: center; +} + +.DicomMicroscopyViewer .ol-attribution a { + color: var(--ol-subtle-foreground-color); + text-decoration: none; +} + +.DicomMicroscopyViewer .ol-attribution ul { + margin: 0; + padding: 1px 0.5em; + color: var(--ol-foreground-color); + text-shadow: 0 0 2px var(--ol-background-color); + font-size: 12px; +} + +.DicomMicroscopyViewer .ol-attribution li { + display: inline; + list-style: none; +} + +.DicomMicroscopyViewer .ol-attribution li:not(:last-child):after { + content: ' '; +} + +.DicomMicroscopyViewer .ol-attribution img { + max-height: 2em; + max-width: inherit; + vertical-align: middle; +} + +.DicomMicroscopyViewer .ol-attribution button { + flex-shrink: 0; +} + +.DicomMicroscopyViewer .ol-attribution.ol-collapsed ul { + display: none; +} + +.DicomMicroscopyViewer .ol-attribution:not(.ol-collapsed) { + background: var(--ol-partial-background-color); +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible { + bottom: 0; + right: 0; + border-radius: 4px 0 0; +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible img { + margin-top: -0.2em; + max-height: 1.6em; +} + +.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible button { + display: none; +} + +.DicomMicroscopyViewer .ol-zoomslider { + top: 4.5em; + left: 0.5em; + height: 200px; +} + +.DicomMicroscopyViewer .ol-zoomslider button { + position: relative; + height: 10px; +} + +.DicomMicroscopyViewer .ol-touch .ol-zoomslider { + top: 5.5em; +} + +.DicomMicroscopyViewer .ol-overviewmap { + left: 0.5em; + bottom: 0.5em; +} + +.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible { + bottom: 0; + left: 0; + border-radius: 0 4px 0 0; +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map, +.DicomMicroscopyViewer .ol-overviewmap button { + display: block; +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map { + border: 1px solid var(--ol-subtle-foreground-color); + height: 150px; + width: 150px; +} + +.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) button { + bottom: 0; + left: 0; + position: absolute; +} + +.DicomMicroscopyViewer .ol-overviewmap.ol-collapsed .ol-overviewmap-map, +.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible button { + display: none; +} + +.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) { + background: var(--ol-subtle-background-color); +} + +.DicomMicroscopyViewer .ol-overviewmap-box { + border: 0.5px dotted var(--ol-subtle-foreground-color); +} + +.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-box:hover { + cursor: move; +} + +@layout-header-background: #007ea3; +@primary-color: #007ea3; +@processing-color: #8cb8c6; +@success-color: #3f9c35; +@warning-color: #eeaf30; +@error-color: #96172e; +@font-size-base: 14px; + +.DicomMicroscopyViewer .ol-tooltip { + font-size: 16px !important; +} +`;let k3=null;const YL=Symbol.for("map"),JL=Symbol.for("affine"),t4e="postrender",V6=class V6 extends S8{constructor(e){super({...e,canvas:e.canvas||th(e.element)}),this.internalCamera={rotation:0,centerIndex:[0,0],extent:[0,-2,1,-1],xSpacing:1,ySpacing:1,resolution:1,zoom:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({voiRange:{...this.voiRange}}),this.resetCamera=()=>!0,this.getNumberOfSlices=()=>1,this.getFrameOfReferenceUID=()=>this.frameOfReferenceUID,this.resize=()=>{const i=this.canvas,{clientWidth:l,clientHeight:c}=i;(i.width!==l||i.height!==c)&&(i.width=l,i.height=c),this.refreshRenderValues()},this.canvasToWorld=i=>{if(!this.metadata)return;const l=this.canvasToIndex(i);return l[1]=-l[1],this.indexToWorld(l)},this.worldToCanvas=i=>{if(!this.metadata)return;const l=this.worldToIndex(i);return l[1]=-l[1],this.indexToCanvas([l[0],l[1],0])},this.postrender=()=>{this.refreshRenderValues(),Or(this.element,vr.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId})},this.getRotation=()=>0,this.canvasToIndex=i=>{const l=this.getTransform();l.invert();const c=l.transformPoint(i.map(g=>g*devicePixelRatio));return[c[0],c[1],0]},this.indexToCanvas=i=>this.getTransform().transformPoint([i[0],i[1]]).map(c=>c/devicePixelRatio),this.customRenderViewportToCanvas=()=>{},this.getImageIds=()=>[this.imageIds[0]],this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.element.style.position="relative",this.microscopyElement=document.createElement("div"),this.microscopyElement.setAttribute("class","DicomMicroscopyViewer"),this.microscopyElement.id=H0(),this.microscopyElement.innerText="Initial",this.microscopyElement.style.background="grey",this.microscopyElement.style.width="100%",this.microscopyElement.style.height="100%",this.microscopyElement.style.position="absolute",this.microscopyElement.style.left="0",this.microscopyElement.style.top="0";const o=this.element.firstElementChild;o.insertBefore(this.microscopyElement,o.childNodes[1]),this.addEventListeners(),this.addWidget("DicomMicroscopyViewer",{getEnabled:()=>!!this.viewer,setEnabled:()=>{this.elementDisabledHandler()}}),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(vr.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(vr.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){var o;this.removeEventListeners(),(o=this.viewer)==null||o.cleanup(),this.viewer=null,this.element.firstElementChild.removeChild(this.microscopyElement),this.microscopyElement=null}getImageDataMetadata(e=0){var ge;const o=this.metadataDicomweb.reduce((pe,we)=>(pe==null?void 0:pe.NumberOfFrames){l.style.filter=o})}setAverageWhite(e){this.averageWhite=e,this.setColorTransform(this.voiRange,e)}getScalarData(){return null}computeTransforms(){const e=Dl(),o=Dl();return Bv(e,this.metadata.origin),e[0]=this.metadata.direction[0],e[1]=this.metadata.direction[1],e[2]=this.metadata.direction[2],e[4]=this.metadata.direction[3],e[5]=this.metadata.direction[4],e[6]=this.metadata.direction[5],e[8]=this.metadata.direction[6],e[9]=this.metadata.direction[7],e[10]=this.metadata.direction[8],hf(e,e,this.metadata.spacing),Ia(o,e),{indexToWorld:e,worldToIndex:o}}getImageData(){const{metadata:e}=this;if(!e)return null;const{spacing:o}=e,i={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:c=>this.worldToIndex(c),indexToWorld:c=>this.indexToWorld(c)};return{dimensions:e.dimensions,spacing:o,numberOfComponents:3,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.frameOfReferenceUID},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1},scalarData:this.getScalarData(),imageData:i}}hasImageURI(e){return!0}setCamera(e){const o=this.getCamera(),{parallelScale:i,focalPoint:l}=e,c=this.getView(),{xSpacing:g}=this.internalCamera;if(i){const _=this.element.clientHeight/i,T=1/g/_;c.setResolution(T)}if(l){const _=this.worldToCanvas(l),T=this.canvasToIndex(_);c.setCenter(T)}const v=this.getCamera();this.triggerCameraModifiedEventIfNecessary(o,v)}getCurrentImageId(){return this.imageIds[0]}getFrameNumber(){return 1}getCamera(){this.refreshRenderValues();const{resolution:e,xSpacing:o,centerIndex:i}=this.internalCamera,l=e*o,c=this.indexToCanvas([i[0],i[1],0]),g=this.canvasToWorld(c);return{parallelProjection:!0,focalPoint:g,position:g,viewUp:[0,-1,0],parallelScale:this.element.clientHeight*l,viewPlaneNormal:[0,0,1]}}worldToIndexWSI(e){if(!k3)return;const o=this.viewer[JL],i=k3.applyInverseTransform({coordinate:[e[0],e[1]],affine:o});return[i[0],i[1]]}indexToWorldWSI(e){if(!k3)return;const o=k3.applyTransform({coordinate:[e[0],e[1]],affine:this.viewer[JL]});return[o[0],o[1],0]}worldToIndex(e){const{worldToIndex:o}=this.computeTransforms(),i=nr();return g0(i,e,o),i}indexToWorld(e){const{indexToWorld:o}=this.computeTransforms(),i=nr(),l=Ei(...e);return g0(i,l,o),[i[0],i[1],i[2]]}setDataIds(e,o){(o==null?void 0:o.miniNavigationOverlay)!==!1&&V6.addMiniNavigationOverlayCss();const i=(o==null?void 0:o.webClient)||Hr(z1.WADO_WEB_CLIENT,e[0]);if(!i)throw new Error(`To use setDataIds on WSI data, you must provide metaData.webClient for ${e[0]}`);return this.setWSI(e,i)}async setWSI(e,o){this.microscopyElement.style.background="black",this.microscopyElement.innerText="Loading",this.imageIds=e;const i=await V6.getDicomMicroscopyViewer();k3||(k3=i.utils),this.frameOfReferenceUID=null;const l=this.imageIds.map(v=>{var I,R,L;const _=o.getDICOMwebMetadata(v);Object.defineProperty(_,"isMultiframe",{value:_.isMultiframe,enumerable:!1}),Object.defineProperty(_,"frameNumber",{value:void 0,enumerable:!1});const T=(I=_["00080008"])==null?void 0:I.Value;(T==null?void 0:T.length)===1&&(_["00080008"].Value=T[0].split("\\"));const P=(L=(R=_["00200052"])==null?void 0:R.Value)==null?void 0:L[0];return this.frameOfReferenceUID?P!==this.frameOfReferenceUID&&(_["00200052"].Value=[this.frameOfReferenceUID]):this.frameOfReferenceUID=P,_}),c=[];l.forEach(v=>{const _=new i.metadata.VLWholeSlideMicroscopyImage({metadata:v}),T=_.ImageType[2];T==="VOLUME"||T==="THUMBNAIL"?c.push(_):console.log("Unknown image type",_.ImageType)}),this.metadataDicomweb=c;const g=new i.viewer.VolumeImageViewer({client:o,metadata:c,controls:["overview","position"],retrieveRendered:!1,bindings:{}});g.render({container:this.microscopyElement}),this.metadata=this.getImageDataMetadata(),g.deactivateDragPanInteraction(),this.viewer=g,this.map=g[YL],this.map.on(t4e,this.postrender),this.resize(),this.microscopyElement.innerText="",Object.assign(this.microscopyElement.style,{"--ol-partial-background-color":"rgba(127, 127, 127, 0.7)","--ol-foreground-color":"#000000","--ol-subtle-foreground-color":"#000","--ol-subtle-background-color":"rgba(78, 78, 78, 0.5)",background:"none"})}scroll(e){const o=this.getCamera();this.setCamera({parallelScale:o.parallelScale*(1+.1*e)})}getSliceIndex(){return 0}getView(){if(!this.viewer)return;const e=this.viewer[YL],o=window;return o.map=e,o.viewer=this.viewer,o.view=e==null?void 0:e.getView(),o.wsi=this,e==null?void 0:e.getView()}refreshRenderValues(){const e=this.getView();if(!e)return;const o=e.getResolution();if(!o||oy2e("dicom-microscopy-viewer"),V6.overlayCssId="overlayCss";let UE=V6;const qj={[fs.ORTHOGRAPHIC]:ns,[fs.PERSPECTIVE]:ns,[fs.STACK]:ts,[fs.VOLUME_3D]:Kj,[fs.VIDEO]:sv,[fs.WHOLE_SLIDE]:UE};function a6(n){return qj[n].useCustomRenderingPipeline}const ZL=2;class Xj{constructor(e){if(this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this.renderFrameOfReference=o=>{const l=this._getViewportsAsArray().map(c=>{if(c.getFrameOfReferenceUID()===o)return c.id});this.renderViewports(l)},this._renderFlaggedViewports=()=>{this._throwIfDestroyed(),this.useCPURendering||this.performVtkDrawCall();const o=this._getViewportsAsArray(),i=[];for(let l=0;l{l!=null&&l.element&&Or(l.element,vr.IMAGE_RENDERED,l)})},this.id=e||H0(),this.useCPURendering=cm(),Zm.set(this),!k2e())throw new Error("@cornerstonejs/core is not initialized, run init() first");this.useCPURendering||(this.offscreenMultiRenderWindow=ole.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer)),this._viewports=new Map,this.hasBeenDestroyed=!1}enableElement(e){const o=this._normalizeViewportInputEntry(e);this._throwIfDestroyed();const{element:i,viewportId:l}=o;if(!i)throw new Error("No element provided");this.getViewport(l)&&this.disableElement(l);const{type:g}=o,v=a6(g);!this.useCPURendering&&!v?this.enableVTKjsDrivenViewport(o):this.addCustomViewport(o);const _=th(i),{background:T}=o.defaultOptions;this.fillCanvasWithBackgroundColor(_,T)}disableElement(e){this._throwIfDestroyed();const o=this.getViewport(e);if(!o){console.warn(`viewport ${e} does not exist`);return}this._resetViewport(o),!a6(o.type)&&!this.useCPURendering&&this.offscreenMultiRenderWindow.removeRenderer(e),this._removeViewport(e),o.isDisabled=!0,this._needsRender.delete(e),this.getViewports().length||this._clearAnimationFrame()}setViewports(e){const o=this._normalizeViewportInputEntries(e);this._throwIfDestroyed(),this._reset();const i=[],l=[];o.forEach(c=>{!this.useCPURendering&&!a6(c.type)?i.push(c):l.push(c)}),this.setVtkjsDrivenViewports(i),this.setCustomViewports(l),o.forEach(c=>{const g=th(c.element),{background:v}=c.defaultOptions;this.fillCanvasWithBackgroundColor(g,v)})}resize(e=!0,o=!0){this._throwIfDestroyed();const i=this._getViewportsAsArray(),l=[],c=[];i.forEach(g=>{a6(g.type)?c.push(g):l.push(g)}),l.length&&this._resizeVTKViewports(l,o,e),c.length&&this._resizeUsingCustomResizeHandler(c,o,e)}getViewport(e){var o;return(o=this._viewports)==null?void 0:o.get(e)}getViewports(){return this._throwIfDestroyed(),this._getViewportsAsArray()}getStackViewport(e){this._throwIfDestroyed();const o=this.getViewport(e);if(!o)throw new Error(`Viewport with Id ${e} does not exist`);if(!(o instanceof ts))throw new Error(`Viewport with Id ${e} is not a StackViewport.`);return o}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter(o=>o instanceof ts)}getVolumeViewports(){this._throwIfDestroyed();const e=this.getViewports(),o=i=>i instanceof xs;return e.filter(o)}render(){const o=this.getViewports().map(i=>i.id);this._setViewportsToBeRenderedNextFrame(o)}renderViewports(e){this._setViewportsToBeRenderedNextFrame(e)}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}destroy(){this.hasBeenDestroyed||(this.useCPURendering||(this._getViewportsAsArray().forEach(o=>{this.offscreenMultiRenderWindow.removeRenderer(o.id)}),this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),Zm.delete(this.id),this.hasBeenDestroyed=!0)}fillCanvasWithBackgroundColor(e,o){const i=e.getContext("2d");let l;if(o){const c=o.map(g=>Math.floor(255*g));l=`rgb(${c[0]}, ${c[1]}, ${c[2]})`}else l="black";i.fillStyle=l,i.fillRect(0,0,e.width,e.height)}_normalizeViewportInputEntry(e){const{type:o,defaultOptions:i}=e;let l=i;return(!l||Object.keys(l).length===0)&&(l={background:[0,0,0],orientation:null,displayArea:null},o===fs.ORTHOGRAPHIC&&(l={...l,orientation:Vg.AXIAL})),{...e,defaultOptions:l}}_normalizeViewportInputEntries(e){const o=[];return e.forEach(i=>{o.push(this._normalizeViewportInputEntry(i))}),o}_resizeUsingCustomResizeHandler(e,o=!0,i=!0){e.forEach(l=>{typeof l.resize=="function"&&l.resize()}),e.forEach(l=>{const c=l.getCamera();l.resetCamera(),o&&l.setCamera(c)}),i&&this.render()}_resizeVTKViewports(e,o=!0,i=!0){const l=e.map(c=>th(c.element));if(l.forEach(c=>{const g=window.devicePixelRatio||1;c.width=c.clientWidth*g,c.height=c.clientHeight*g}),l.length){const{offScreenCanvasWidth:c,offScreenCanvasHeight:g}=this._resizeOffScreenCanvas(l);this._resize(e,c,g)}e.forEach(c=>{const g=c.getCamera(),v=c.getRotation(),{flipHorizontal:_}=g;c.resetCameraForResize();const T=c.getDisplayArea();o&&(T?(_&&c.setCamera({flipHorizontal:_}),v&&c.setViewPresentation({rotation:v})):c.setCamera(g))}),i&&this.render()}enableVTKjsDrivenViewport(e){const i=this._getViewportsAsArray().filter(P=>a6(P.type)===!1),l=i.map(P=>P.canvas),c=th(e.element);l.push(c);const{offScreenCanvasWidth:g,offScreenCanvasHeight:v}=this._resizeOffScreenCanvas(l),_=this._resize(i,g,v),T={...e,canvas:c};this.addVtkjsDrivenViewport(T,{offScreenCanvasWidth:g,offScreenCanvasHeight:v,xOffset:_})}_removeViewport(e){if(!this.getViewport(e)){console.warn(`viewport ${e} does not exist`);return}this._viewports.delete(e)}addVtkjsDrivenViewport(e,o){const{element:i,canvas:l,viewportId:c,type:g,defaultOptions:v}=e;i.tabIndex=-1;const{offScreenCanvasWidth:_,offScreenCanvasHeight:T,xOffset:P}=o,{sxStartDisplayCoords:I,syStartDisplayCoords:R,sxEndDisplayCoords:L,syEndDisplayCoords:V,sx:U,sy:j,sWidth:z,sHeight:$}=this._getViewportCoordsOnOffScreenCanvas(e,_,T,P);this.offscreenMultiRenderWindow.addRenderer({viewport:[I,R,L,V],id:c,background:v.background?v.background:[0,0,0]});const K={id:c,element:i,renderingEngineId:this.id,type:g,canvas:l,sx:U,sy:j,sWidth:z,sHeight:$,defaultOptions:v||{}};let X;if(g===fs.STACK)X=new ts(K);else if(g===fs.ORTHOGRAPHIC||g===fs.PERSPECTIVE)X=new ns(K);else if(g===fs.VOLUME_3D)X=new Kj(K);else throw new Error(`Viewport Type ${g} is not supported`);this._viewports.set(c,X);const ee={element:i,viewportId:c,renderingEngineId:this.id};X.suppressEvents||Or(pr,vr.ELEMENT_ENABLED,ee)}addCustomViewport(e){const{element:o,viewportId:i,type:l,defaultOptions:c}=e;o.tabIndex=-1;const g=th(o),{clientWidth:v,clientHeight:_}=g;(g.width!==v||g.height!==_)&&(g.width=v,g.height=_);const T={id:i,renderingEngineId:this.id,element:o,type:l,canvas:g,sx:0,sy:0,sWidth:v,sHeight:_,defaultOptions:c||{}},P=qj[l],I=new P(T);this._viewports.set(i,I);const R={element:o,viewportId:i,renderingEngineId:this.id};Or(pr,vr.ELEMENT_ENABLED,R)}setCustomViewports(e){e.forEach(o=>{this.addCustomViewport(o)})}setVtkjsDrivenViewports(e){if(e.length){const o=e.map(g=>th(g.element));o.forEach(g=>{const v=window.devicePixelRatio||1,_=g.getBoundingClientRect();g.width=_.width*v,g.height=_.height*v});const{offScreenCanvasWidth:i,offScreenCanvasHeight:l}=this._resizeOffScreenCanvas(o);let c=0;for(let g=0;gg.height));let c=0;return e.forEach(g=>{c+=g.width}),o.width=c,o.height=l,i.resize(),{offScreenCanvasWidth:c,offScreenCanvasHeight:l}}_resize(e,o,i){let l=0;for(let c=0;c{this._needsRender.add(o)}),this._render()}_render(){this._needsRender.size>0&&!this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}performVtkDrawCall(){const{offscreenMultiRenderWindow:e}=this,o=e.getRenderWindow(),i=e.getRenderers();if(i.length){for(let l=0;l{this._resetViewport(o)}),this._clearAnimationFrame(),this._viewports=new Map}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_downloadOffScreenCanvas(){const e=this._debugRender();n4e(e)}_debugRender(){const{offscreenMultiRenderWindow:e}=this,o=e.getRenderWindow(),i=e.getRenderers();for(let _=0;_{const{sx:T,sy:P,sWidth:I,sHeight:R}=_,L=_.canvas,{width:V,height:U}=L;L.getContext("2d").drawImage(g,T,P,I,R,0,0,V,U)}),v}}function n4e(n){const e=document.createElement("a");e.download="viewport.png",e.href=n,document.body.appendChild(e),e.click(),document.body.removeChild(e)}function Yj(n){return new TextDecoder("latin1").decode(n)}function r4e(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;const i=Yj(n),l=e.exec(i);if(!l)return{text:i};const c=l.index+l[0].length,g=i.substring(0,c);let v=null;const _=o?o.exec(i):null;if(_){const T=i.substr(_.index);v={text:g+T,binaryBuffer:n.slice(c,_.index)}}else v={text:g,binaryBuffer:n.slice(c)};return v}var i4e={arrayBufferToString:Yj,extractBinary:r4e};const sM={};function Jj(n){return!!sM[n]}function o4e(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"http",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return sM[n](e)}function Zj(n,e){sM[n]=e}var s4e={get:o4e,has:Jj,registerType:Zj};function Qj(){const n=new ArrayBuffer(4),e=new Uint8Array(n),o=new Uint32Array(n);return e[0]=161,e[1]=178,e[2]=195,e[3]=212,o[0]===3569595041?"LittleEndian":o[0]===2712847316?"BigEndian":null}const a4e=Qj();function l4e(n,e){if(e<2)return;const o=new Int8Array(n),i=o.length,l=[];for(let c=0;c(ez("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead."),Promise.reject(new Error("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead.")));let E8=0;function MC(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=new XMLHttpRequest;return i.open(n,e,!0),o.headers&&Object.entries(o.headers).forEach(l=>{let[c,g]=l;return i.setRequestHeader(c,g)}),o.progressCallback&&i.addEventListener("progress",o.progressCallback),i}function c4e(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((o,i)=>{const l=MC("GET",n,e);l.onreadystatechange=c=>{l.readyState===4&&(l.status===200||l.status===0?o(l.response):i({xhr:l,e:c}))},l.responseType="arraybuffer",l.send()})}function f4e(n,e,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return i&&i.compression?aM():o.ref&&!o.ref.pending?new Promise((l,c)=>{const g=[e,o.ref.basepath,o.ref.id].join("/"),v=MC("GET",g,i);v.onreadystatechange=_=>{v.readyState===1&&(o.ref.pending=!0,++E8===1&&(n!=null&&n.invokeBusy)&&n.invokeBusy(!0)),v.readyState===4&&(o.ref.pending=!1,v.status===200||v.status===0?(o.buffer=v.response,o.ref.encode==="JSON"?o.values=JSON.parse(o.buffer):(yS.ENDIANNESS!==o.ref.encode&&yS.ENDIANNESS&&(u4e(`Swap bytes of ${o.name}`),yS.swapBytes(o.buffer,lB[o.dataType])),o.values=At.newTypedArray(o.dataType,o.buffer)),o.values.length!==o.size&&ez(`Error in FetchArray: ${o.name}, does not have the proper array size. Got ${o.values.length}, instead of ${o.size}`),delete o.ref,--E8===0&&(n!=null&&n.invokeBusy)&&n.invokeBusy(!1),n!=null&&n.modified&&n.modified(),l(o)):c({xhr:v,e:_}))},v.responseType=o.dataType!=="string"?"arraybuffer":"text",v.send()}):Promise.resolve(o)}function h4e(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return o&&o.compression?aM():new Promise((i,l)=>{const c=MC("GET",e,o);c.onreadystatechange=g=>{c.readyState===1&&++E8===1&&n!=null&&n.invokeBusy&&n.invokeBusy(!0),c.readyState===4&&(--E8===0&&(n!=null&&n.invokeBusy)&&n.invokeBusy(!1),c.status===200||c.status===0?i(JSON.parse(c.responseText)):l({xhr:c,e:g}))},c.responseType="text",c.send()})}function d4e(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return o&&o.compression?aM():new Promise((i,l)=>{const c=MC("GET",e,o);c.onreadystatechange=g=>{c.readyState===1&&++E8===1&&n!=null&&n.invokeBusy&&n.invokeBusy(!0),c.readyState===4&&(--E8===0&&(n!=null&&n.invokeBusy)&&n.invokeBusy(!1),c.status===200||c.status===0?i(c.responseText):l({xhr:c,e:g}))},c.responseType="text",c.send()})}function g4e(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return new Promise((i,l)=>{const c=new Image;o.crossOrigin&&(c.crossOrigin=o.crossOrigin),c.onload=()=>i(c),c.onerror=l,c.src=e})}const p4e={fetchArray:f4e,fetchJSON:h4e,fetchText:d4e,fetchBinary:c4e,fetchImage:g4e};Jj("http")||Zj("http",n=>p4e);var tz={exports:{}};(function(n,e){(function(o,i){n.exports=i()})(g2,function(){return function(o){var i={};function l(c){if(i[c])return i[c].exports;var g=i[c]={i:c,l:!1,exports:{}};return o[c].call(g.exports,g,g.exports,l),g.l=!0,g.exports}return l.m=o,l.c=i,l.d=function(c,g,v){l.o(c,g)||Object.defineProperty(c,g,{enumerable:!0,get:v})},l.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},l.t=function(c,g){if(1&g&&(c=l(c)),8&g||4&g&&typeof c=="object"&&c&&c.__esModule)return c;var v=Object.create(null);if(l.r(v),Object.defineProperty(v,"default",{enumerable:!0,value:c}),2&g&&typeof c!="string")for(var _ in c)l.d(v,_,(function(T){return c[T]}).bind(null,_));return v},l.n=function(c){var g=c&&c.__esModule?function(){return c.default}:function(){return c};return l.d(g,"a",g),g},l.o=function(c,g){return Object.prototype.hasOwnProperty.call(c,g)},l.p="",l(l.s=184)}([function(o,i,l){function c(g){for(var v in g)i.hasOwnProperty(v)||(i[v]=g[v])}Object.defineProperty(i,"__esModule",{value:!0}),c(l(240)),c(l(251)),c(l(175)),c(l(107)),c(l(29)),c(l(73)),c(l(106)),c(l(30)),c(l(252)),c(l(52)),c(l(97)),c(l(253)),c(l(37)),c(l(51)),c(l(173)),c(l(176)),c(l(172)),c(l(108)),c(l(254)),c(l(255)),c(l(256)),c(l(72)),c(l(177)),c(l(105)),c(l(17)),c(l(257)),c(l(12)),c(l(174))},function(o,i,l){var c=this&&this.__values||function(K){var X=typeof Symbol=="function"&&Symbol.iterator,ee=X&&K[X],ne=0;if(ee)return ee.call(K);if(K&&typeof K.length=="number")return{next:function(){return K&&ne>=K.length&&(K=void 0),{value:K&&K[ne++],done:!K}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(212);i.FixedSizeSet=g.FixedSizeSet;var v=l(213);i.ObjectCache=v.ObjectCache;var _=l(214);i.CompareCache=_.CompareCache;var T=l(215);i.Lazy=T.Lazy;var P=l(216);function I(K,X,ee){if(z(K))K.forEach(function(le,ce){return X.call(ee,ce,le)});else for(var ne in K)K.hasOwnProperty(ne)&&X.call(ee,ne,K[ne])}function R(K){var X,ee;if(L(K))return K;if(U(K)){var ne=[];try{for(var le=c(K),ce=le.next();!ce.done;ce=le.next()){var ge=ce.value;ne.push(R(ge))}}catch(Te){X={error:Te}}finally{try{ce&&!ce.done&&(ee=le.return)&&ee.call(le)}finally{if(X)throw X.error}}return ne}if(V(K)){ne={};for(var pe in K)if(K.hasOwnProperty(pe)){var we=K[pe];ne[pe]=R(we)}return ne}return K}function L(K){return!!K&&Object.prototype.toString.call(K)==="[object Function]"}function V(K){var X=typeof K;return!!K&&(X==="function"||X==="object")}function U(K){return Array.isArray(K)}function j(K){return K instanceof Set}function z(K){return K instanceof Map}function $(K){if(V(K)){var X=Object.getPrototypeOf(K),ee=X.constructor;return X&&ee&&typeof ee=="function"&&ee instanceof ee&&Function.prototype.toString.call(ee)===Function.prototype.toString.call(Object)}return!1}i.StringWalker=P.StringWalker,i.applyMixin=function(K,X){for(var ee=[],ne=2;ne>6|192;else{if(le>55295&&le<56320){if(++ne>=K.length)throw new Error("Incomplete surrogate pair.");var ce=K.charCodeAt(ne);if(ce<56320||ce>57343)throw new Error("Invalid surrogate character.");le=65536+((1023&le)<<10)+(1023&ce),X[ee++]=le>>18|240,X[ee++]=le>>12&63|128}else X[ee++]=le>>12|224;X[ee++]=le>>6&63|128}X[ee++]=63&le|128}}return X.subarray(0,ee)},i.utf8Decode=function(K){for(var X="",ee=0;ee127)if(ne>191&&ne<224){if(ee>=K.length)throw new Error("Incomplete 2-byte sequence.");ne=(31&ne)<<6|63&K[ee++]}else if(ne>223&&ne<240){if(ee+1>=K.length)throw new Error("Incomplete 3-byte sequence.");ne=(15&ne)<<12|(63&K[ee++])<<6|63&K[ee++]}else{if(!(ne>239&&ne<248))throw new Error("Unknown multi-byte start.");if(ee+2>=K.length)throw new Error("Incomplete 4-byte sequence.");ne=(7&ne)<<18|(63&K[ee++])<<12|(63&K[ee++])<<6|63&K[ee++]}if(ne<=65535)X+=String.fromCharCode(ne);else{if(!(ne<=1114111))throw new Error("Code point exceeds UTF-16 limit.");ne-=65536,X+=String.fromCharCode(ne>>10|55296),X+=String.fromCharCode(1023&ne|56320)}}return X}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),function(c){c[c.Before=0]="Before",c[c.Equal=1]="Equal",c[c.After=2]="After"}(i.BoundaryPosition||(i.BoundaryPosition={})),function(c){c[c.None=0]="None",c[c.Capturing=1]="Capturing",c[c.AtTarget=2]="AtTarget",c[c.Bubbling=3]="Bubbling"}(i.EventPhase||(i.EventPhase={})),function(c){c[c.Element=1]="Element",c[c.Attribute=2]="Attribute",c[c.Text=3]="Text",c[c.CData=4]="CData",c[c.EntityReference=5]="EntityReference",c[c.Entity=6]="Entity",c[c.ProcessingInstruction=7]="ProcessingInstruction",c[c.Comment=8]="Comment",c[c.Document=9]="Document",c[c.DocumentType=10]="DocumentType",c[c.DocumentFragment=11]="DocumentFragment",c[c.Notation=12]="Notation"}(i.NodeType||(i.NodeType={})),function(c){c[c.Disconnected=1]="Disconnected",c[c.Preceding=2]="Preceding",c[c.Following=4]="Following",c[c.Contains=8]="Contains",c[c.ContainedBy=16]="ContainedBy",c[c.ImplementationSpecific=32]="ImplementationSpecific"}(i.Position||(i.Position={})),function(c){c[c.Accept=1]="Accept",c[c.Reject=2]="Reject",c[c.Skip=3]="Skip"}(i.FilterResult||(i.FilterResult={})),function(c){c[c.All=4294967295]="All",c[c.Element=1]="Element",c[c.Attribute=2]="Attribute",c[c.Text=4]="Text",c[c.CDataSection=8]="CDataSection",c[c.EntityReference=16]="EntityReference",c[c.Entity=32]="Entity",c[c.ProcessingInstruction=64]="ProcessingInstruction",c[c.Comment=128]="Comment",c[c.Document=256]="Document",c[c.DocumentType=512]="DocumentType",c[c.DocumentFragment=1024]="DocumentFragment",c[c.Notation=2048]="Notation"}(i.WhatToShow||(i.WhatToShow={})),function(c){c[c.StartToStart=0]="StartToStart",c[c.StartToEnd=1]="StartToEnd",c[c.EndToEnd=2]="EndToEnd",c[c.EndToStart=3]="EndToStart"}(i.HowToCompare||(i.HowToCompare={}))},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(241);i.Cast=c.Cast;var g=l(150);i.Guard=g.Guard;var v=l(242);i.EmptySet=v.EmptySet},function(o,i,l){var c=l(11),g=l(55).f,v=l(21),_=l(25),T=l(80),P=l(119),I=l(123);o.exports=function(R,L){var V,U,j,z,$,K=R.target,X=R.global,ee=R.stat;if(V=X?c:ee?c[K]||T(K,{}):(c[K]||{}).prototype)for(U in L){if(z=L[U],j=R.noTargetGet?($=g(V,U))&&$.value:V[U],!I(X?U:K+(ee?".":"#")+U,R.forced)&&j!==void 0){if(typeof z==typeof j)continue;P(z,j)}(R.sham||j&&j.sham)&&v(z,"sham",!0),_(V,U,z,R)}}},function(o,i,l){var c=l(11),g=l(81),v=l(14),_=l(58),T=l(86),P=l(124),I=g("wks"),R=c.Symbol,L=P?R:R&&R.withoutSetter||_;o.exports=function(V){return v(I,V)||(T&&v(R,V)?I[V]=R[V]:I[V]=L("Symbol."+V)),I[V]}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(1),g=l(29),v=function(){function _(){this._features={mutationObservers:!0,customElements:!0,slots:!0,steps:!0},this._window=null,this._compareCache=new c.CompareCache,this._rangeList=new c.FixedSizeSet}return _.prototype.setFeatures=function(T){if(T===void 0&&(T=!0),c.isObject(T))for(var P in T)this._features[P]=T[P]||!1;else for(var P in this._features)this._features[P]=T},Object.defineProperty(_.prototype,"features",{get:function(){return this._features},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"window",{get:function(){return this._window===null&&(this._window=g.create_window()),this._window},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"compareCache",{get:function(){return this._compareCache},enumerable:!0,configurable:!0}),Object.defineProperty(_.prototype,"rangeList",{get:function(){return this._rangeList},enumerable:!0,configurable:!0}),Object.defineProperty(_,"instance",{get:function(){return _._instance||(_._instance=new _),_._instance},enumerable:!0,configurable:!0}),_}();i.dom=v.instance},function(o,i,l){var c=this&&this.__importStar||function($){if($&&$.__esModule)return $;var K={};if($!=null)for(var X in $)Object.hasOwnProperty.call($,X)&&(K[X]=$[X]);return K.default=$,K};Object.defineProperty(i,"__esModule",{value:!0});var g=c(l(228));i.base64=g;var v=c(l(146));i.byte=v;var _=c(l(147));i.byteSequence=_;var T=c(l(96));i.codePoint=T;var P=c(l(232));i.json=P;var I=c(l(233));i.list=I;var R=c(l(234));i.map=R;var L=c(l(235));i.namespace=L;var V=c(l(236));i.queue=V;var U=c(l(237));i.set=U;var j=c(l(238));i.stack=j;var z=c(l(239));i.string=z},function(o,i){o.exports=function(l){try{return!!l()}catch{return!0}}},function(o,i,l){var c,g=this&&this.__extends||(c=function(Ge,Ke){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(qe,ut){qe.__proto__=ut}||function(qe,ut){for(var wt in ut)ut.hasOwnProperty(wt)&&(qe[wt]=ut[wt])})(Ge,Ke)},function(Ge,Ke){function qe(){this.constructor=Ge}c(Ge,Ke),Ge.prototype=Ke===null?Object.create(Ke):(qe.prototype=Ke.prototype,new qe)});Object.defineProperty(i,"__esModule",{value:!0});var v=function(Ge){function Ke(qe,ut){ut===void 0&&(ut="");var wt=Ge.call(this,ut)||this;return wt.name=qe,wt}return g(Ke,Ge),Ke}(Error);i.DOMException=v;var _=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"DOMStringSizeError",qe)||this}return g(Ke,Ge),Ke}(v);i.DOMStringSizeError=_;var T=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"WrongDocumentError","The object is in the wrong document. "+qe)||this}return g(Ke,Ge),Ke}(v);i.WrongDocumentError=T;var P=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NoDataAllowedError",qe)||this}return g(Ke,Ge),Ke}(v);i.NoDataAllowedError=P;var I=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NoModificationAllowedError","The object can not be modified. "+qe)||this}return g(Ke,Ge),Ke}(v);i.NoModificationAllowedError=I;var R=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NotSupportedError","The operation is not supported. "+qe)||this}return g(Ke,Ge),Ke}(v);i.NotSupportedError=R;var L=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InUseAttributeError",qe)||this}return g(Ke,Ge),Ke}(v);i.InUseAttributeError=L;var V=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InvalidStateError","The object is in an invalid state. "+qe)||this}return g(Ke,Ge),Ke}(v);i.InvalidStateError=V;var U=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InvalidModificationError","The object can not be modified in this way. "+qe)||this}return g(Ke,Ge),Ke}(v);i.InvalidModificationError=U;var j=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NamespaceError","The operation is not allowed by Namespaces in XML. [XMLNS] "+qe)||this}return g(Ke,Ge),Ke}(v);i.NamespaceError=j;var z=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InvalidAccessError","The object does not support the operation or argument. "+qe)||this}return g(Ke,Ge),Ke}(v);i.InvalidAccessError=z;var $=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"ValidationError",qe)||this}return g(Ke,Ge),Ke}(v);i.ValidationError=$;var K=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"TypeMismatchError",qe)||this}return g(Ke,Ge),Ke}(v);i.TypeMismatchError=K;var X=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"SecurityError","The operation is insecure. "+qe)||this}return g(Ke,Ge),Ke}(v);i.SecurityError=X;var ee=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NetworkError","A network error occurred. "+qe)||this}return g(Ke,Ge),Ke}(v);i.NetworkError=ee;var ne=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"AbortError","The operation was aborted. "+qe)||this}return g(Ke,Ge),Ke}(v);i.AbortError=ne;var le=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"URLMismatchError","The given URL does not match another URL. "+qe)||this}return g(Ke,Ge),Ke}(v);i.URLMismatchError=le;var ce=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"QuotaExceededError","The quota has been exceeded. "+qe)||this}return g(Ke,Ge),Ke}(v);i.QuotaExceededError=ce;var ge=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"TimeoutError","The operation timed out. "+qe)||this}return g(Ke,Ge),Ke}(v);i.TimeoutError=ge;var pe=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InvalidNodeTypeError","The supplied node is incorrect or has an incorrect ancestor for this operation. "+qe)||this}return g(Ke,Ge),Ke}(v);i.InvalidNodeTypeError=pe;var we=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"DataCloneError","The object can not be cloned. "+qe)||this}return g(Ke,Ge),Ke}(v);i.DataCloneError=we;var Te=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NotImplementedError","The DOM method is not implemented by this module. "+qe)||this}return g(Ke,Ge),Ke}(v);i.NotImplementedError=Te;var Ve=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"HierarchyRequestError","The operation would yield an incorrect node tree. "+qe)||this}return g(Ke,Ge),Ke}(v);i.HierarchyRequestError=Ve;var Pe=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"NotFoundError","The object can not be found here. "+qe)||this}return g(Ke,Ge),Ke}(v);i.NotFoundError=Pe;var je=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"IndexSizeError","The index is not in the allowed range. "+qe)||this}return g(Ke,Ge),Ke}(v);i.IndexSizeError=je;var Je=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"SyntaxError","The string did not match the expected pattern. "+qe)||this}return g(Ke,Ge),Ke}(v);i.SyntaxError=Je;var it=function(Ge){function Ke(qe){return qe===void 0&&(qe=""),Ge.call(this,"InvalidCharacterError","The string contains invalid characters. "+qe)||this}return g(Ke,Ge),Ke}(v);i.InvalidCharacterError=it},function(o,i,l){var c=l(53),g=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],v=["scalar","sequence","mapping"];o.exports=function(_,T){var P,I;if(T=T||{},Object.keys(T).forEach(function(R){if(g.indexOf(R)===-1)throw new c('Unknown option "'+R+'" is met in definition of "'+_+'" YAML type.')}),this.tag=_,this.kind=T.kind||null,this.resolve=T.resolve||function(){return!0},this.construct=T.construct||function(R){return R},this.instanceOf=T.instanceOf||null,this.predicate=T.predicate||null,this.represent=T.represent||null,this.defaultStyle=T.defaultStyle||null,this.styleAliases=(P=T.styleAliases||null,I={},P!==null&&Object.keys(P).forEach(function(R){P[R].forEach(function(L){I[String(L)]=R})}),I),v.indexOf(this.kind)===-1)throw new c('Unknown kind "'+this.kind+'" is specified for "'+_+'" YAML type.')}},function(o,i,l){(function(c){var g=function(v){return v&&v.Math==Math&&v};o.exports=g(typeof globalThis=="object"&&globalThis)||g(typeof window=="object"&&window)||g(typeof self=="object"&&self)||g(typeof c=="object"&&c)||Function("return this")()}).call(this,l(78))},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),i.idl_defineConst=function(c,g,v){Object.defineProperty(c,g,{writable:!1,enumerable:!0,configurable:!1,value:v})}},function(o,i){o.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},function(o,i){var l={}.hasOwnProperty;o.exports=function(c,g){return l.call(c,g)}},function(o,i,l){var c=l(16),g=l(115),v=l(18),_=l(56),T=Object.defineProperty;i.f=c?T:function(P,I,R){if(v(P),I=_(I,!0),v(R),g)try{return T(P,I,R)}catch{}if("get"in R||"set"in R)throw TypeError("Accessors not supported");return"value"in R&&(P[I]=R.value),P}},function(o,i,l){var c=l(8);o.exports=!c(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},function(o,i,l){var c=this&&this.__values||function(K){var X=typeof Symbol=="function"&&Symbol.iterator,ee=X&&K[X],ne=0;if(ee)return ee.call(K);if(K&&typeof K.length=="number")return{next:function(){return K&&ne>=K.length&&(K=void 0),{value:K&&K[ne++],done:!K}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(3),v=l(2);function _(K,X,ee){if(ee===void 0&&(ee=!1),ee&&g.Guard.isElementNode(X)&&g.Guard.isShadowRoot(X.shadowRoot)&&X.shadowRoot._firstChild)return X.shadowRoot._firstChild;if(X._firstChild)return X._firstChild;if(X===K)return null;if(X._nextSibling)return X._nextSibling;for(var ne=X._parent;ne&&ne!==K;){if(ne._nextSibling)return ne._nextSibling;ne=ne._parent}return null}function T(){var K;return(K={})[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:null}}}},K}function P(K,X,ee,ne){X===void 0&&(X=!1),ee===void 0&&(ee=!1);for(var le=X?K:_(K,K,ee);le&&ne&&!ne(le);)le=_(K,le,ee);return le}function I(K,X,ee,ne,le){ne===void 0&&(ne=!1);for(var ce=_(K,X,ne);ce&&le&&!le(ce);)ce=_(K,ce,ne);return ce}function R(K,X,ee,ne){var le;return X===void 0&&(X=!1),ee===void 0&&(ee=!1),X||K._children.size!==0?((le={})[Symbol.iterator]=function(){var ce=X?K:_(K,K,ee);return{next:function(){for(;ce&&ne&&!ne(ce);)ce=_(K,ce,ee);if(ce===null)return{done:!0,value:null};var ge={done:!1,value:ce};return ce=_(K,ce,ee),ge}}},le):T()}function L(K,X,ee){X===void 0&&(X=!1);for(var ne=X?K:K._parent;ne&&ee&&!ee(ne);)ne=ne._parent;return ne}function V(K,X,ee,ne){for(var le=X._parent;le&&ne&&!ne(le);)le=le._parent;return le}function U(K){return g.Guard.isDocumentTypeNode(K)?0:g.Guard.isCharacterDataNode(K)?K._data.length:K._children.size}function j(K,X){if(X===void 0&&(X=!1),X){var ee=j(K,!1);return g.Guard.isShadowRoot(ee)?j(ee._host,!0):ee}return K._parent?j(K._parent):K}function z(K,X,ee,ne){ee===void 0&&(ee=!1),ne===void 0&&(ne=!1);for(var le=ee?K:ne&&g.Guard.isShadowRoot(K)?K._host:K._parent;le!==null;){if(le===X)return!0;le=ne&&g.Guard.isShadowRoot(le)?le._host:le._parent}return!1}function $(K){for(var X=j(K),ee=0,ne=P(X);ne!==null;){if(ee++,ne===K)return ee;ne=I(X,ne)}return-1}i.tree_getFirstDescendantNode=P,i.tree_getNextDescendantNode=I,i.tree_getDescendantNodes=R,i.tree_getDescendantElements=function(K,X,ee,ne){var le;return X===void 0&&(X=!1),ee===void 0&&(ee=!1),X||K._children.size!==0?((le={})[Symbol.iterator]=function(){var ce=R(K,X,ee,function(pe){return g.Guard.isElementNode(pe)})[Symbol.iterator](),ge=ce.next().value;return{next:function(){for(;ge&&ne&&!ne(ge);)ge=ce.next().value;if(ge===null)return{done:!0,value:null};var pe={done:!1,value:ge};return ge=ce.next().value,pe}}},le):T()},i.tree_getSiblingNodes=function(K,X,ee){var ne;return X===void 0&&(X=!1),K._parent&&K._parent._children.size!==0?((ne={})[Symbol.iterator]=function(){var le=K._parent?K._parent._firstChild:null;return{next:function(){for(;le&&(ee&&!ee(le)||!X&&le===K);)le=le._nextSibling;if(le===null)return{done:!0,value:null};var ce={done:!1,value:le};return le=le._nextSibling,ce}}},ne):T()},i.tree_getFirstAncestorNode=L,i.tree_getNextAncestorNode=V,i.tree_getAncestorNodes=function(K,X,ee){var ne;return X===void 0&&(X=!1),X||K._parent?((ne={})[Symbol.iterator]=function(){var le=L(K,X,ee);return{next:function(){if(le===null)return{done:!0,value:null};var ce={done:!1,value:le};return le=V(0,le,X,ee),ce}}},ne):T()},i.tree_getCommonAncestor=function(K,X){if(K===X)return K._parent;for(var ee=[],ne=[],le=L(K,!0);le!==null;)ee.push(le),le=V(0,le);for(var ce=L(X,!0);ce!==null;)ne.push(ce),ce=V(0,ce);for(var ge=ee.length,pe=ne.length,we=null,Te=Math.min(ge,pe);Te>0;Te--){var Ve=ee[--ge];if(Ve!==ne[--pe])break;we=Ve}return we},i.tree_getFollowingNode=function(K,X){if(X._firstChild)return X._firstChild;if(X._nextSibling)return X._nextSibling;for(;;){var ee=X._parent;if(ee===null||ee===K)return null;if(ee._nextSibling)return ee._nextSibling;X=ee}},i.tree_getPrecedingNode=function(K,X){return X===K?null:X._previousSibling?(X=X._previousSibling)._lastChild?X._lastChild:X:X._parent},i.tree_isConstrained=function K(X){var ee,ne,le,ce,ge,pe;switch(X._nodeType){case v.NodeType.Document:var we=!1,Te=!1;try{for(var Ve=c(X._children),Pe=Ve.next();!Pe.done;Pe=Ve.next())switch(Pe.value._nodeType){case v.NodeType.ProcessingInstruction:case v.NodeType.Comment:break;case v.NodeType.DocumentType:if(we||Te)return!1;we=!0;break;case v.NodeType.Element:if(Te)return!1;Te=!0;break;default:return!1}}catch(Ke){ee={error:Ke}}finally{try{Pe&&!Pe.done&&(ne=Ve.return)&&ne.call(Ve)}finally{if(ee)throw ee.error}}break;case v.NodeType.DocumentFragment:case v.NodeType.Element:try{for(var je=c(X._children),Je=je.next();!Je.done;Je=je.next())switch(Je.value._nodeType){case v.NodeType.Element:case v.NodeType.Text:case v.NodeType.ProcessingInstruction:case v.NodeType.CData:case v.NodeType.Comment:break;default:return!1}}catch(Ke){le={error:Ke}}finally{try{Je&&!Je.done&&(ce=je.return)&&ce.call(je)}finally{if(le)throw le.error}}break;case v.NodeType.DocumentType:case v.NodeType.Text:case v.NodeType.ProcessingInstruction:case v.NodeType.CData:case v.NodeType.Comment:return!X.hasChildNodes()}try{for(var it=c(X._children),Ge=it.next();!Ge.done;Ge=it.next())if(!K(Ge.value))return!1}catch(Ke){ge={error:Ke}}finally{try{Ge&&!Ge.done&&(pe=it.return)&&pe.call(it)}finally{if(ge)throw ge.error}}return!0},i.tree_nodeLength=U,i.tree_isEmpty=function(K){return U(K)===0},i.tree_rootNode=j,i.tree_isDescendantOf=function(K,X,ee,ne){ee===void 0&&(ee=!1),ne===void 0&&(ne=!1);for(var le=P(K,ee,ne);le!==null;){if(le===X)return!0;le=I(K,le,ee,ne)}return!1},i.tree_isAncestorOf=z,i.tree_isHostIncludingAncestorOf=function K(X,ee,ne){if(ne===void 0&&(ne=!1),z(X,ee,ne))return!0;var le=j(X);return!(!g.Guard.isDocumentFragmentNode(le)||le._host===null||!K(le._host,ee,ne))},i.tree_isSiblingOf=function(K,X,ee){return ee===void 0&&(ee=!1),K!==X?K._parent!==null&&K._parent===X._parent:!!ee},i.tree_isPreceding=function(K,X){var ee=$(K),ne=$(X);return ee!==-1&&ne!==-1&&j(K)===j(X)&&neee},i.tree_isParentOf=function(K,X){return K._parent===X},i.tree_isChildOf=function(K,X){return X._parent===K},i.tree_previousSibling=function(K){return K._previousSibling},i.tree_nextSibling=function(K){return K._nextSibling},i.tree_firstChild=function(K){return K._firstChild},i.tree_lastChild=function(K){return K._lastChild},i.tree_treePosition=$,i.tree_index=function(K){for(var X=0;K._previousSibling!==null;)X++,K=K._previousSibling;return X},i.tree_retarget=function(K,X){for(;;){if(!K||!g.Guard.isNode(K))return K;var ee=j(K);if(!g.Guard.isShadowRoot(ee)||X&&g.Guard.isNode(X)&&z(ee,X,!0,!0))return K;K=ee.host}}},function(o,i,l){var c=l(13);o.exports=function(g){if(!c(g))throw TypeError(String(g)+" is not an object");return g}},function(o,i,l){var c=l(24),g=l(130),v=l(49),_=l(43),T=l(88),P=_.set,I=_.getterFor("Array Iterator");o.exports=T(Array,"Array",function(R,L){P(this,{type:"Array Iterator",target:c(R),index:0,kind:L})},function(){var R=I(this),L=R.target,V=R.kind,U=R.index++;return!L||U>=L.length?(R.target=void 0,{value:void 0,done:!0}):V=="keys"?{value:U,done:!1}:V=="values"?{value:L[U],done:!1}:{value:[U,L[U]],done:!1}},"values"),v.Arguments=v.Array,g("keys"),g("values"),g("entries")},function(o,i,l){var c=l(90),g=l(25),v=l(202);c||g(Object.prototype,"toString",v,{unsafe:!0})},function(o,i,l){var c=l(16),g=l(15),v=l(40);o.exports=c?function(_,T,P){return g.f(_,T,v(1,P))}:function(_,T,P){return _[T]=P,_}},function(o,i,l){var c=l(137).charAt,g=l(43),v=l(88),_=g.set,T=g.getterFor("String Iterator");v(String,"String",function(P){_(this,{type:"String Iterator",string:String(P),index:0})},function(){var P,I=T(this),R=I.string,L=I.index;return L>=R.length?{value:void 0,done:!0}:(P=c(R,L),I.index+=P.length,{value:P,done:!1})})},function(o,i,l){var c=l(11),g=l(203),v=l(19),_=l(21),T=l(5),P=T("iterator"),I=T("toStringTag"),R=v.values;for(var L in g){var V=c[L],U=V&&V.prototype;if(U){if(U[P]!==R)try{_(U,P,R)}catch{U[P]=R}if(U[I]||_(U,I,L),g[L]){for(var j in v)if(U[j]!==v[j])try{_(U,j,v[j])}catch{U[j]=v[j]}}}}},function(o,i,l){var c=l(41),g=l(35);o.exports=function(v){return c(g(v))}},function(o,i,l){var c=l(11),g=l(21),v=l(14),_=l(80),T=l(117),P=l(43),I=P.get,R=P.enforce,L=String(String).split("String");(o.exports=function(V,U,j,z){var $=!!z&&!!z.unsafe,K=!!z&&!!z.enumerable,X=!!z&&!!z.noTargetGet;typeof j=="function"&&(typeof U!="string"||v(j,"name")||g(j,"name",U),R(j).source=L.join(typeof U=="string"?U:"")),V!==c?($?!X&&V[U]&&(K=!0):delete V[U],K?V[U]=j:g(V,U,j)):K?V[U]=j:_(U,j)})(Function.prototype,"toString",function(){return typeof this=="function"&&I(this).source||T(this)})},function(o,i,l){var c=l(47),g=Math.min;o.exports=function(v){return v>0?g(c(v),9007199254740991):0}},function(o,i,l){var c=l(35);o.exports=function(g){return Object(c(g))}},function(o,i,l){var c=l(16),g=l(8),v=l(14),_=Object.defineProperty,T={},P=function(I){throw I};o.exports=function(I,R){if(v(T,I))return T[I];R||(R={});var L=[][I],V=!!v(R,"ACCESSORS")&&R.ACCESSORS,U=v(R,0)?R[0]:P,j=v(R,1)?R[1]:void 0;return T[I]=!!L&&!g(function(){if(V&&!c)return!0;var z={length:-1};V?_(z,1,{enumerable:!0,get:P}):z[1]=1,L.call(z,U,j)})}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(148),g=l(149),v=l(151),_=l(98),T=l(153),P=l(154),I=l(155),R=l(99),L=l(100),V=l(156),U=l(157),j=l(101),z=l(158),$=l(159),K=l(160),X=l(161),ee=l(162),ne=l(163),le=l(164),ce=l(165),ge=l(166),pe=l(167),we=l(168),Te=l(169),Ve=l(170);i.create_domImplementation=function(Pe){return c.DOMImplementationImpl._create(Pe)},i.create_window=function(){return g.WindowImpl._create()},i.create_xmlDocument=function(){return new v.XMLDocumentImpl},i.create_document=function(){return new _.DocumentImpl},i.create_abortController=function(){return new T.AbortControllerImpl},i.create_abortSignal=function(){return P.AbortSignalImpl._create()},i.create_documentType=function(Pe,je,Je,it){return I.DocumentTypeImpl._create(Pe,je,Je,it)},i.create_element=function(Pe,je,Je,it){return R.ElementImpl._create(Pe,je,Je,it)},i.create_htmlElement=function(Pe,je,Je,it){return R.ElementImpl._create(Pe,je,Je,it)},i.create_htmlUnknownElement=function(Pe,je,Je,it){return R.ElementImpl._create(Pe,je,Je,it)},i.create_documentFragment=function(Pe){return L.DocumentFragmentImpl._create(Pe)},i.create_shadowRoot=function(Pe,je){return V.ShadowRootImpl._create(Pe,je)},i.create_attr=function(Pe,je){return U.AttrImpl._create(Pe,je)},i.create_text=function(Pe,je){return j.TextImpl._create(Pe,je)},i.create_cdataSection=function(Pe,je){return z.CDATASectionImpl._create(Pe,je)},i.create_comment=function(Pe,je){return $.CommentImpl._create(Pe,je)},i.create_processingInstruction=function(Pe,je,Je){return K.ProcessingInstructionImpl._create(Pe,je,Je)},i.create_htmlCollection=function(Pe,je){return je===void 0&&(je=function(){return!0}),X.HTMLCollectionImpl._create(Pe,je)},i.create_nodeList=function(Pe){return ee.NodeListImpl._create(Pe)},i.create_nodeListStatic=function(Pe,je){return ne.NodeListStaticImpl._create(Pe,je)},i.create_namedNodeMap=function(Pe){return le.NamedNodeMapImpl._create(Pe)},i.create_range=function(Pe,je){return ce.RangeImpl._create(Pe,je)},i.create_nodeIterator=function(Pe,je,Je){return ge.NodeIteratorImpl._create(Pe,je,Je)},i.create_treeWalker=function(Pe,je){return pe.TreeWalkerImpl._create(Pe,je)},i.create_nodeFilter=function(){return we.NodeFilterImpl._create()},i.create_mutationRecord=function(Pe,je,Je,it,Ge,Ke,qe,ut,wt){return Te.MutationRecordImpl._create(Pe,je,Je,it,Ge,Ke,qe,ut,wt)},i.create_domTokenList=function(Pe,je){return Ve.DOMTokenListImpl._create(Pe,je)}},function(o,i,l){var c=this&&this.__values||function(U){var j=typeof Symbol=="function"&&Symbol.iterator,z=j&&U[j],$=0;if(z)return z.call(U);if(U&&typeof U.length=="number")return{next:function(){return U&&$>=U.length&&(U=void 0),{value:U&&U[$++],done:!U}}};throw new TypeError(j?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(17),_=l(3),T=l(72),P=new Map;function I(U,j){if(j!==U._root&&v.tree_isAncestorOf(U._reference,j,!0)){if(U._pointerBeforeReference)for(;;){var z=v.tree_getFollowingNode(U._root,j);if(z!==null&&v.tree_isDescendantOf(U._root,z,!0)&&!v.tree_isDescendantOf(j,z,!0))return void(U._reference=z);if(z===null)return void(U._pointerBeforeReference=!1)}if(j._previousSibling===null)j._parent!==null&&(U._reference=j._parent);else{for(var $=j._previousSibling,K=v.tree_getFirstDescendantNode(j._previousSibling,!0,!1);K!==null;)K!==null&&($=K),K=v.tree_getNextDescendantNode(j._previousSibling,K,!0,!1);U._reference=$}}}function R(U,j,z,$,K){if(_.Guard.isSlot(U)&&j==="name"&&K===null){if($===z||$===null&&z===""||$===""&&z===null)return;U._name=$===null||$===""?"":$,T.shadowTree_assignSlotablesForATree(v.tree_rootNode(U))}}function L(U,j,z,$,K){if(_.Guard.isSlotable(U)&&j==="slot"&&K===null){if($===z||$===null&&z===""||$===""&&z===null)return;U._name=$===null||$===""?"":$,T.shadowTree_isAssigned(U)&&T.shadowTree_assignSlotables(U._assignedSlot),T.shadowTree_assignASlot(U)}}function V(U,j,z,$){j==="id"&&$===null&&(U._uniqueIdentifier=z||void 0)}i.dom_runRemovingSteps=function(U,j){},i.dom_runCloningSteps=function(U,j,z,$){},i.dom_runAdoptingSteps=function(U,j){},i.dom_runAttributeChangeSteps=function(U,j,z,$,K){var X,ee;g.dom.features.slots&&(L.call(U,U,j,z,$,K),R.call(U,U,j,z,$,K)),V.call(U,U,j,$,K);try{for(var ne=c(U._attributeChangeSteps),le=ne.next();!le.done;le=ne.next())le.value.call(U,U,j,z,$,K)}catch(ce){X={error:ce}}finally{try{le&&!le.done&&(ee=ne.return)&&ee.call(ne)}finally{if(X)throw X.error}}},i.dom_runInsertionSteps=function(U){},i.dom_runNodeIteratorPreRemovingSteps=function(U,j){I.call(U,U,j)},i.dom_hasSupportedTokens=function(U){return P.has(U)},i.dom_getSupportedTokens=function(U){return P.get(U)||new Set},i.dom_runEventConstructingSteps=function(U){},i.dom_runChildTextContentChangeSteps=function(U){}},function(o,i,l){var c=l(4),g=l(11),v=l(46),_=l(44),T=l(16),P=l(86),I=l(124),R=l(8),L=l(14),V=l(59),U=l(13),j=l(18),z=l(27),$=l(24),K=l(56),X=l(40),ee=l(60),ne=l(61),le=l(82),ce=l(190),ge=l(85),pe=l(55),we=l(15),Te=l(79),Ve=l(21),Pe=l(25),je=l(81),Je=l(57),it=l(45),Ge=l(58),Ke=l(5),qe=l(125),ut=l(126),wt=l(62),Et=l(43),qt=l(36).forEach,$t=Je("hidden"),Jt=Ke("toPrimitive"),Dn=Et.set,Nn=Et.getterFor("Symbol"),xn=Object.prototype,et=g.Symbol,Me=v("JSON","stringify"),ct=pe.f,st=we.f,yt=ce.f,St=Te.f,Pt=je("symbols"),mn=je("op-symbols"),Pn=je("string-to-symbol-registry"),Hn=je("symbol-to-string-registry"),Kn=je("wks"),Dt=g.QObject,Vt=!Dt||!Dt.prototype||!Dt.prototype.findChild,gn=T&&R(function(){return ee(st({},"a",{get:function(){return st(this,"a",{value:7}).a}})).a!=7})?function(hr,Cr,wr){var Fr=ct(xn,Cr);Fr&&delete xn[Cr],st(hr,Cr,wr),Fr&&hr!==xn&&st(xn,Cr,Fr)}:st,Bt=function(hr,Cr){var wr=Pt[hr]=ee(et.prototype);return Dn(wr,{type:"Symbol",tag:hr,description:Cr}),T||(wr.description=Cr),wr},rn=I?function(hr){return typeof hr=="symbol"}:function(hr){return Object(hr)instanceof et},Zn=function(hr,Cr,wr){hr===xn&&Zn(mn,Cr,wr),j(hr);var Fr=K(Cr,!0);return j(wr),L(Pt,Fr)?(wr.enumerable?(L(hr,$t)&&hr[$t][Fr]&&(hr[$t][Fr]=!1),wr=ee(wr,{enumerable:X(0,!1)})):(L(hr,$t)||st(hr,$t,X(1,{})),hr[$t][Fr]=!0),gn(hr,Fr,wr)):st(hr,Fr,wr)},Ut=function(hr,Cr){j(hr);var wr=$(Cr),Fr=ne(wr).concat(An(wr));return qt(Fr,function(ui){T&&!Ir.call(wr,ui)||Zn(hr,ui,wr[ui])}),hr},Ir=function(hr){var Cr=K(hr,!0),wr=St.call(this,Cr);return!(this===xn&&L(Pt,Cr)&&!L(mn,Cr))&&(!(wr||!L(this,Cr)||!L(Pt,Cr)||L(this,$t)&&this[$t][Cr])||wr)},br=function(hr,Cr){var wr=$(hr),Fr=K(Cr,!0);if(wr!==xn||!L(Pt,Fr)||L(mn,Fr)){var ui=ct(wr,Fr);return!ui||!L(Pt,Fr)||L(wr,$t)&&wr[$t][Fr]||(ui.enumerable=!0),ui}},jr=function(hr){var Cr=yt($(hr)),wr=[];return qt(Cr,function(Fr){L(Pt,Fr)||L(it,Fr)||wr.push(Fr)}),wr},An=function(hr){var Cr=hr===xn,wr=yt(Cr?mn:$(hr)),Fr=[];return qt(wr,function(ui){!L(Pt,ui)||Cr&&!L(xn,ui)||Fr.push(Pt[ui])}),Fr};P||(Pe((et=function(){if(this instanceof et)throw TypeError("Symbol is not a constructor");var hr=arguments.length&&arguments[0]!==void 0?String(arguments[0]):void 0,Cr=Ge(hr),wr=function(Fr){this===xn&&wr.call(mn,Fr),L(this,$t)&&L(this[$t],Cr)&&(this[$t][Cr]=!1),gn(this,Cr,X(1,Fr))};return T&&Vt&&gn(xn,Cr,{configurable:!0,set:wr}),Bt(Cr,hr)}).prototype,"toString",function(){return Nn(this).tag}),Pe(et,"withoutSetter",function(hr){return Bt(Ge(hr),hr)}),Te.f=Ir,we.f=Zn,pe.f=br,le.f=ce.f=jr,ge.f=An,qe.f=function(hr){return Bt(Ke(hr),hr)},T&&(st(et.prototype,"description",{configurable:!0,get:function(){return Nn(this).description}}),_||Pe(xn,"propertyIsEnumerable",Ir,{unsafe:!0}))),c({global:!0,wrap:!0,forced:!P,sham:!P},{Symbol:et}),qt(ne(Kn),function(hr){ut(hr)}),c({target:"Symbol",stat:!0,forced:!P},{for:function(hr){var Cr=String(hr);if(L(Pn,Cr))return Pn[Cr];var wr=et(Cr);return Pn[Cr]=wr,Hn[wr]=Cr,wr},keyFor:function(hr){if(!rn(hr))throw TypeError(hr+" is not a symbol");if(L(Hn,hr))return Hn[hr]},useSetter:function(){Vt=!0},useSimple:function(){Vt=!1}}),c({target:"Object",stat:!0,forced:!P,sham:!T},{create:function(hr,Cr){return Cr===void 0?ee(hr):Ut(ee(hr),Cr)},defineProperty:Zn,defineProperties:Ut,getOwnPropertyDescriptor:br}),c({target:"Object",stat:!0,forced:!P},{getOwnPropertyNames:jr,getOwnPropertySymbols:An}),c({target:"Object",stat:!0,forced:R(function(){ge.f(1)})},{getOwnPropertySymbols:function(hr){return ge.f(z(hr))}}),Me&&c({target:"JSON",stat:!0,forced:!P||R(function(){var hr=et();return Me([hr])!="[null]"||Me({a:hr})!="{}"||Me(Object(hr))!="{}"})},{stringify:function(hr,Cr,wr){for(var Fr,ui=[hr],Kr=1;arguments.length>Kr;)ui.push(arguments[Kr++]);if(Fr=Cr,(U(Cr)||hr!==void 0)&&!rn(hr))return V(Cr)||(Cr=function(ai,vi){if(typeof Fr=="function"&&(vi=Fr.call(this,ai,vi)),!rn(vi))return vi}),ui[1]=Cr,Me.apply(null,ui)}}),et.prototype[Jt]||Ve(et.prototype,Jt,et.prototype.valueOf),wt(et,"Symbol"),it[$t]=!0},function(o,i,l){var c=l(4),g=l(16),v=l(11),_=l(14),T=l(13),P=l(15).f,I=l(119),R=v.Symbol;if(g&&typeof R=="function"&&(!("description"in R.prototype)||R().description!==void 0)){var L={},V=function(){var K=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),X=this instanceof V?new R(K):K===void 0?R():R(K);return K===""&&(L[X]=!0),X};I(V,R);var U=V.prototype=R.prototype;U.constructor=V;var j=U.toString,z=String(R("test"))=="Symbol(test)",$=/^Symbol\((.*)\)[^)]+$/;P(U,"description",{configurable:!0,get:function(){var K=T(this)?this.valueOf():this,X=j.call(K);if(_(L,K))return"";var ee=z?X.slice(7,-1):X.replace($,"$1");return ee===""?void 0:ee}}),c({global:!0,forced:!0},{Symbol:V})}},function(o,i,l){l(126)("iterator")},function(o,i,l){var c,g=this&&this.__extends||(c=function(z,$){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(K,X){K.__proto__=X}||function(K,X){for(var ee in X)X.hasOwnProperty(ee)&&(K[ee]=X[ee])})(z,$)},function(z,$){function K(){this.constructor=z}c(z,$),z.prototype=$===null?Object.create($):(K.prototype=$.prototype,new K)}),v=this&&this.__values||function(z){var $=typeof Symbol=="function"&&Symbol.iterator,K=$&&z[$],X=0;if(K)return K.call(z);if(z&&typeof z.length=="number")return{next:function(){return z&&X>=z.length&&(z=void 0),{value:z&&z[X++],done:!z}}};throw new TypeError($?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(6),T=l(2),P=l(70),I=l(3),R=l(9),L=l(0),V=l(152),U=l(12),j=function(z){function $(){var K=z.call(this)||this;return K._parent=null,K._firstChild=null,K._lastChild=null,K._previousSibling=null,K._nextSibling=null,K}return g($,z),Object.defineProperty($.prototype,"_childNodes",{get:function(){return this.__childNodes||(this.__childNodes=L.create_nodeList(this))},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"_nodeDocument",{get:function(){return this._nodeDocumentOverride||_.dom.window._associatedDocument},set:function(K){this._nodeDocumentOverride=K},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"_registeredObserverList",{get:function(){return this.__registeredObserverList||(this.__registeredObserverList=[])},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"nodeType",{get:function(){return this._nodeType},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"nodeName",{get:function(){return I.Guard.isElementNode(this)?this._htmlUppercasedQualifiedName:I.Guard.isAttrNode(this)?this._qualifiedName:I.Guard.isExclusiveTextNode(this)?"#text":I.Guard.isCDATASectionNode(this)?"#cdata-section":I.Guard.isProcessingInstructionNode(this)?this._target:I.Guard.isCommentNode(this)?"#comment":I.Guard.isDocumentNode(this)?"#document":I.Guard.isDocumentTypeNode(this)?this._name:I.Guard.isDocumentFragmentNode(this)?"#document-fragment":""},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"baseURI",{get:function(){return V.urlSerializer(this._nodeDocument._URL)},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"isConnected",{get:function(){return I.Guard.isElementNode(this)&&L.shadowTree_isConnected(this)},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"ownerDocument",{get:function(){return this._nodeType===T.NodeType.Document?null:this._nodeDocument},enumerable:!0,configurable:!0}),$.prototype.getRootNode=function(K){return L.tree_rootNode(this,!!K&&K.composed)},Object.defineProperty($.prototype,"parentNode",{get:function(){return this._nodeType===T.NodeType.Attribute?null:this._parent},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"parentElement",{get:function(){return this._parent&&I.Guard.isElementNode(this._parent)?this._parent:null},enumerable:!0,configurable:!0}),$.prototype.hasChildNodes=function(){return this._firstChild!==null},Object.defineProperty($.prototype,"childNodes",{get:function(){return this._childNodes},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"firstChild",{get:function(){return this._firstChild},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"lastChild",{get:function(){return this._lastChild},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"previousSibling",{get:function(){return this._previousSibling},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"nextSibling",{get:function(){return this._nextSibling},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"nodeValue",{get:function(){return I.Guard.isAttrNode(this)?this._value:I.Guard.isCharacterDataNode(this)?this._data:null},set:function(K){K===null&&(K=""),I.Guard.isAttrNode(this)?L.attr_setAnExistingAttributeValue(this,K):I.Guard.isCharacterDataNode(this)&&L.characterData_replaceData(this,0,this._data.length,K)},enumerable:!0,configurable:!0}),Object.defineProperty($.prototype,"textContent",{get:function(){return I.Guard.isDocumentFragmentNode(this)||I.Guard.isElementNode(this)?L.text_descendantTextContent(this):I.Guard.isAttrNode(this)?this._value:I.Guard.isCharacterDataNode(this)?this._data:null},set:function(K){K===null&&(K=""),I.Guard.isDocumentFragmentNode(this)||I.Guard.isElementNode(this)?L.node_stringReplaceAll(K,this):I.Guard.isAttrNode(this)?L.attr_setAnExistingAttributeValue(this,K):I.Guard.isCharacterDataNode(this)&&L.characterData_replaceData(this,0,L.tree_nodeLength(this),K)},enumerable:!0,configurable:!0}),$.prototype.normalize=function(){for(var K,X,ee,ne,le=[],ce=L.tree_getFirstDescendantNode(this,!1,!1,function(qt){return I.Guard.isExclusiveTextNode(qt)});ce!==null;)le.push(ce),ce=L.tree_getNextDescendantNode(this,ce,!1,!1,function(qt){return I.Guard.isExclusiveTextNode(qt)});for(var ge=0;geVe;Ve++)if(($||Ve in pe)&&(ce=we(le=pe[Ve],Ve,ge),R)){if(L)je[Ve]=ce;else if(ce)switch(R){case 3:return!0;case 5:return le;case 6:return Ve;case 2:P.call(je,le)}else if(j)return!1}return z?-1:U||j?j:je}};o.exports={forEach:I(0),map:I(1),filter:I(2),some:I(3),every:I(4),find:I(5),findIndex:I(6)}},function(o,i,l){var c=this&&this.__values||function(ge){var pe=typeof Symbol=="function"&&Symbol.iterator,we=pe&&ge[pe],Te=0;if(we)return we.call(ge);if(ge&&typeof ge.length=="number")return{next:function(){return ge&&Te>=ge.length&&(ge=void 0),{value:ge&&ge[Te++],done:!ge}}};throw new TypeError(pe?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(ge,pe){var we=typeof Symbol=="function"&&ge[Symbol.iterator];if(!we)return ge;var Te,Ve,Pe=we.call(ge),je=[];try{for(;(pe===void 0||pe-- >0)&&!(Te=Pe.next()).done;)je.push(Te.value)}catch(Je){Ve={error:Je}}finally{try{Te&&!Te.done&&(we=Pe.return)&&we.call(Pe)}finally{if(Ve)throw Ve.error}}return je},v=this&&this.__spread||function(){for(var ge=[],pe=0;pe1)throw new T.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+Et+" element nodes.");if(Et===1){try{for(var Dn=c(pe._children),Nn=Dn.next();!Nn.done;Nn=Dn.next())if(Nn.value._nodeType===P.NodeType.Element)throw new T.HierarchyRequestError("The document node already has a document element node.")}catch(St){Pe={error:St}}finally{try{Nn&&!Nn.done&&(je=Dn.return)&&je.call(Dn)}finally{if(Pe)throw Pe.error}}if(we){if(wt===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node.");for(var xn=we._nextSibling;xn;){if(xn._nodeType===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node.");xn=xn._nextSibling}}}}else if(ut===P.NodeType.Element){try{for(var et=c(pe._children),Me=et.next();!Me.done;Me=et.next())if(Me.value._nodeType===P.NodeType.Element)throw new T.HierarchyRequestError("Document already has a document element node. Node is "+ge.nodeName+".")}catch(St){Je={error:St}}finally{try{Me&&!Me.done&&(it=et.return)&&it.call(et)}finally{if(Je)throw Je.error}}if(we){if(wt===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+ge.nodeName+".");for(xn=we._nextSibling;xn;){if(xn._nodeType===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+ge.nodeName+".");xn=xn._nextSibling}}}else if(ut===P.NodeType.DocumentType){try{for(var ct=c(pe._children),st=ct.next();!st.done;st=ct.next())if(st.value._nodeType===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Document already has a document type node. Node is "+ge.nodeName+".")}catch(St){Ge={error:St}}finally{try{st&&!st.done&&(Ke=ct.return)&&Ke.call(ct)}finally{if(Ge)throw Ge.error}}if(we)for(var yt=we._previousSibling;yt;){if(yt._nodeType===P.NodeType.Element)throw new T.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+ge.nodeName+".");yt=yt._previousSibling}else for(yt=pe._firstChild;yt;){if(yt._nodeType===P.NodeType.Element)throw new T.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+ge.nodeName+".");yt=yt._nextSibling}}}}function ne(ge,pe,we){ee(ge,pe,we);var Te=we;return Te===ge&&(Te=ge._nextSibling),X.document_adopt(ge,pe._nodeDocument),le(ge,pe,Te),ge}function le(ge,pe,we,Te){var Ve,Pe;if(we!==null||ge._nodeType===P.NodeType.DocumentFragment){var je=ge._nodeType===P.NodeType.DocumentFragment?ge._children.size:1;if(we!==null&&_.dom.rangeList.size!==0){var Je=U.tree_index(we);try{for(var it=c(_.dom.rangeList),Ge=it.next();!Ge.done;Ge=it.next()){var Ke=Ge.value;Ke._start[0]===pe&&Ke._start[1]>Je&&(Ke._start[1]+=je),Ke._end[0]===pe&&Ke._end[1]>Je&&(Ke._end[1]+=je)}}catch(Nn){Ve={error:Nn}}finally{try{Ge&&!Ge.done&&(Pe=it.return)&&Pe.call(it)}finally{if(Ve)throw Ve.error}}}var qe=ge._nodeType===P.NodeType.DocumentFragment?new(Array.bind.apply(Array,v([void 0],ge._children))):[ge];if(ge._nodeType===P.NodeType.DocumentFragment)for(;ge._firstChild;)ce(ge._firstChild,ge,!0);_.dom.features.mutationObservers&&ge._nodeType===P.NodeType.DocumentFragment&&$.observer_queueTreeMutationRecord(ge,[],qe,null,null);for(var ut=we?we._previousSibling:pe._lastChild,wt=we===null?-1:U.tree_index(we),Et=0;Etqe&&Et._start[1]--,Et._end[0]===pe&&Et._end[1]>qe&&Et._end[1]--}}catch(Pn){Te={error:Pn}}finally{try{wt&&!wt.done&&(Ve=ut.return)&&Ve.call(ut)}finally{if(Te)throw Te.error}}try{for(var qt=c(_.dom.rangeList),$t=qt.next();!$t.done;$t=qt.next())(Et=$t.value)._start[0]===pe&&Et._start[1]>qe&&(Et._start[1]-=1),Et._end[0]===pe&&Et._end[1]>qe&&(Et._end[1]-=1)}catch(Pn){Pe={error:Pn}}finally{try{$t&&!$t.done&&(je=qt.return)&&je.call(qt)}finally{if(Pe)throw Pe.error}}}if(_.dom.features.steps)try{for(var Jt=c(j.nodeIterator_iteratorList()),Dn=Jt.next();!Dn.done;Dn=Jt.next()){var Nn=Dn.value;Nn._root._nodeDocument===ge._nodeDocument&&K.dom_runNodeIteratorPreRemovingSteps(Nn,ge)}}catch(Pn){Je={error:Pn}}finally{try{Dn&&!Dn.done&&(it=Jt.return)&&it.call(Jt)}finally{if(Je)throw Je.error}}var xn=ge._previousSibling,et=ge._nextSibling;I.Guard.isDocumentNode(pe)&&I.Guard.isElementNode(ge)&&(pe._documentElement=null),ge._parent=null,pe._children.delete(ge);var Me=ge._previousSibling,ct=ge._nextSibling;ge._previousSibling=null,ge._nextSibling=null,Me&&(Me._nextSibling=ct),ct&&(ct._previousSibling=Me),Me||(pe._firstChild=ct),ct||(pe._lastChild=Me),_.dom.features.slots&&I.Guard.isSlotable(ge)&&ge._assignedSlot!==null&&z.shadowTree_isAssigned(ge)&&z.shadowTree_assignSlotables(ge._assignedSlot),_.dom.features.slots&&I.Guard.isShadowRoot(U.tree_rootNode(pe))&&I.Guard.isSlot(pe)&&R.isEmpty(pe._assignedNodes)&&z.shadowTree_signalASlotChange(pe),_.dom.features.slots&&U.tree_getFirstDescendantNode(ge,!0,!1,function(Pn){return I.Guard.isSlot(Pn)})!==null&&(z.shadowTree_assignSlotablesForATree(U.tree_rootNode(pe)),z.shadowTree_assignSlotablesForATree(ge)),_.dom.features.steps&&K.dom_runRemovingSteps(ge,pe),_.dom.features.customElements&&I.Guard.isCustomElementNode(ge)&&V.customElement_enqueueACustomElementCallbackReaction(ge,"disconnectedCallback",[]);for(var st=U.tree_getFirstDescendantNode(ge,!1,!0);st!==null;)_.dom.features.steps&&K.dom_runRemovingSteps(st,ge),_.dom.features.customElements&&I.Guard.isCustomElementNode(st)&&V.customElement_enqueueACustomElementCallbackReaction(st,"disconnectedCallback",[]),st=U.tree_getNextDescendantNode(ge,st,!1,!0);if(_.dom.features.mutationObservers)for(var yt=U.tree_getFirstAncestorNode(pe,!0);yt!==null;){try{for(var St=(Ge=void 0,c(yt._registeredObserverList)),Pt=St.next();!Pt.done;Pt=St.next()){var mn=Pt.value;mn.options.subtree&&ge._registeredObserverList.push({observer:mn.observer,options:mn.options,source:mn})}}catch(Pn){Ge={error:Pn}}finally{try{Pt&&!Pt.done&&(Ke=St.return)&&Ke.call(St)}finally{if(Ge)throw Ge.error}}yt=U.tree_getNextAncestorNode(pe,yt,!0)}_.dom.features.mutationObservers&&(we||$.observer_queueTreeMutationRecord(pe,[],[ge],xn,et)),_.dom.features.steps&&I.Guard.isTextNode(ge)&&K.dom_runChildTextContentChangeSteps(pe)}i.mutation_ensurePreInsertionValidity=ee,i.mutation_preInsert=ne,i.mutation_insert=le,i.mutation_append=function(ge,pe){return ne(ge,pe,null)},i.mutation_replace=function(ge,pe,we){var Te,Ve,Pe,je,Je,it,Ge,Ke;if(we._nodeType!==P.NodeType.Document&&we._nodeType!==P.NodeType.DocumentFragment&&we._nodeType!==P.NodeType.Element)throw new T.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is "+we.nodeName+".");if(U.tree_isHostIncludingAncestorOf(we,pe,!0))throw new T.HierarchyRequestError("The node to be inserted cannot be an ancestor of parent node. Node is "+pe.nodeName+", parent node is "+we.nodeName+".");if(ge._parent!==we)throw new T.NotFoundError("The reference child node cannot be found under parent node. Child node is "+ge.nodeName+", parent node is "+we.nodeName+".");if(pe._nodeType!==P.NodeType.DocumentFragment&&pe._nodeType!==P.NodeType.DocumentType&&pe._nodeType!==P.NodeType.Element&&pe._nodeType!==P.NodeType.Text&&pe._nodeType!==P.NodeType.ProcessingInstruction&&pe._nodeType!==P.NodeType.CData&&pe._nodeType!==P.NodeType.Comment)throw new T.HierarchyRequestError("Only document fragment, document type, element, text, processing instruction, cdata section or comment nodes can be inserted. Node is "+pe.nodeName+".");if(pe._nodeType===P.NodeType.Text&&we._nodeType===P.NodeType.Document)throw new T.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is "+pe.nodeName+".");if(pe._nodeType===P.NodeType.DocumentType&&we._nodeType!==P.NodeType.Document)throw new T.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is "+we.nodeName+".");if(we._nodeType===P.NodeType.Document){if(pe._nodeType===P.NodeType.DocumentFragment){var qe=0;try{for(var ut=c(pe._children),wt=ut.next();!wt.done;wt=ut.next()){var Et=wt.value;if(Et._nodeType===P.NodeType.Element)qe++;else if(Et._nodeType===P.NodeType.Text)throw new T.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is "+Et.nodeName+".")}}catch(mn){Te={error:mn}}finally{try{wt&&!wt.done&&(Ve=ut.return)&&Ve.call(ut)}finally{if(Te)throw Te.error}}if(qe>1)throw new T.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+qe+" element nodes.");if(qe===1){try{for(var qt=c(we._children),$t=qt.next();!$t.done;$t=qt.next())if((Me=$t.value)._nodeType===P.NodeType.Element&&Me!==ge)throw new T.HierarchyRequestError("The document node already has a document element node.")}catch(mn){Pe={error:mn}}finally{try{$t&&!$t.done&&(je=qt.return)&&je.call(qt)}finally{if(Pe)throw Pe.error}}for(var Jt=ge._nextSibling;Jt;){if(Jt._nodeType===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node.");Jt=Jt._nextSibling}}}else if(pe._nodeType===P.NodeType.Element){try{for(var Dn=c(we._children),Nn=Dn.next();!Nn.done;Nn=Dn.next())if((Me=Nn.value)._nodeType===P.NodeType.Element&&Me!==ge)throw new T.HierarchyRequestError("Document already has a document element node. Node is "+pe.nodeName+".")}catch(mn){Je={error:mn}}finally{try{Nn&&!Nn.done&&(it=Dn.return)&&it.call(Dn)}finally{if(Je)throw Je.error}}for(Jt=ge._nextSibling;Jt;){if(Jt._nodeType===P.NodeType.DocumentType)throw new T.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+pe.nodeName+".");Jt=Jt._nextSibling}}else if(pe._nodeType===P.NodeType.DocumentType){try{for(var xn=c(we._children),et=xn.next();!et.done;et=xn.next()){var Me;if((Me=et.value)._nodeType===P.NodeType.DocumentType&&Me!==ge)throw new T.HierarchyRequestError("Document already has a document type node. Node is "+pe.nodeName+".")}}catch(mn){Ge={error:mn}}finally{try{et&&!et.done&&(Ke=xn.return)&&Ke.call(xn)}finally{if(Ge)throw Ge.error}}for(var ct=ge._previousSibling;ct;){if(ct._nodeType===P.NodeType.Element)throw new T.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+pe.nodeName+".");ct=ct._previousSibling}}}var st=ge._nextSibling;st===pe&&(st=pe._nextSibling);var yt=ge._previousSibling;X.document_adopt(pe,we._nodeDocument);var St=[];ge._parent!==null&&(St.push(ge),ce(ge,ge._parent,!0));var Pt=[];return pe._nodeType===P.NodeType.DocumentFragment?Pt=Array.from(pe._children):Pt.push(pe),le(pe,we,st,!0),_.dom.features.mutationObservers&&$.observer_queueTreeMutationRecord(we,Pt,St,yt,st),ge},i.mutation_replaceAll=function(ge,pe){var we,Te;ge!==null&&X.document_adopt(ge,pe._nodeDocument);var Ve=Array.from(pe._children),Pe=[];ge&&ge._nodeType===P.NodeType.DocumentFragment?Pe=Array.from(ge._children):ge!==null&&Pe.push(ge);try{for(var je=c(Ve),Je=je.next();!Je.done;Je=je.next())ce(Je.value,pe,!0)}catch(it){we={error:it}}finally{try{Je&&!Je.done&&(Te=je.return)&&Te.call(je)}finally{if(we)throw we.error}}ge!==null&&le(ge,pe,null,!0),_.dom.features.mutationObservers&&$.observer_queueTreeMutationRecord(pe,Pe,Ve,null,null)},i.mutation_preRemove=function(ge,pe){if(ge._parent!==pe)throw new T.NotFoundError("The child node cannot be found under parent node. Child node is "+ge.nodeName+", parent node is "+pe.nodeName+".");return ce(ge,pe),ge},i.mutation_remove=ce},function(o,i,l){function c(g){return g==null}o.exports.isNothing=c,o.exports.isObject=function(g){return typeof g=="object"&&g!==null},o.exports.toArray=function(g){return Array.isArray(g)?g:c(g)?[]:[g]},o.exports.repeat=function(g,v){var _,T="";for(_=0;_0?c:l)(g)}},function(o,i,l){var c=l(8);o.exports=function(g,v){var _=[][g];return!!_&&c(function(){_.call(null,v||function(){throw 1},1)})}},function(o,i){o.exports={}},function(o,i,l){l(31),l(32),l(33),l(220),l(64),l(19),l(65),l(20),l(68),l(66),l(92),l(144),l(22),l(94),l(23);var c=this&&this.__values||function(V){var U=typeof Symbol=="function"&&Symbol.iterator,j=U&&V[U],z=0;if(j)return j.call(V);if(V&&typeof V.length=="number")return{next:function(){return V&&z>=V.length&&(V=void 0),{value:V&&V[z++],done:!V}}};throw new TypeError(U?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(V,U){var j=typeof Symbol=="function"&&V[Symbol.iterator];if(!j)return V;var z,$,K=j.call(V),X=[];try{for(;(U===void 0||U-- >0)&&!(z=K.next()).done;)X.push(z.value)}catch(ee){$={error:ee}}finally{try{z&&!z.done&&(j=K.return)&&j.call(K)}finally{if($)throw $.error}}return X},v=this&&this.__spread||function(){for(var V=[],U=0;U/g,">");this.text(z)},V.prototype._serializeDocumentFragmentNS=function(U,j,z,$,K){var X,ee;try{for(var ne=c(U.childNodes),le=ne.next();!le.done;le=ne.next()){var ce=le.value;this._serializeNodeNS(ce,j,z,$,K)}}catch(ge){X={error:ge}}finally{try{le&&!le.done&&(ee=ne.return)&&ee.call(ne)}finally{if(X)throw X.error}}},V.prototype._serializeDocumentFragment=function(U,j){var z,$;try{for(var K=c(U._children),X=K.next();!X.done;X=K.next()){var ee=X.value;this._serializeNode(ee,j)}}catch(ne){z={error:ne}}finally{try{X&&!X.done&&($=K.return)&&$.call(K)}finally{if(z)throw z.error}}},V.prototype._serializeDocumentType=function(U,j){if(j&&!R.xml_isPubidChar(U.publicId))throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");if(j&&(!R.xml_isLegalChar(U.systemId)||U.systemId.indexOf('"')!==-1&&U.systemId.indexOf("'")!==-1))throw new Error("DocType system identifier contains invalid characters (well-formed required).");this.docType(U.name,U.publicId,U.systemId)},V.prototype._serializeProcessingInstruction=function(U,j){if(j&&(U.target.indexOf(":")!==-1||/^xml$/i.test(U.target)))throw new Error("Processing instruction target contains invalid characters (well-formed required).");if(j&&(!R.xml_isLegalChar(U.data)||U.data.indexOf("?>")!==-1))throw new Error("Processing instruction data contains invalid characters (well-formed required).");this.instruction(U.target,U.data)},V.prototype._serializeCData=function(U,j){if(j&&U.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters (well-formed required).");this.cdata(U.data)},V.prototype._serializeAttributesNS=function(U,j,z,$,K,X){var ee,ne,le=[],ce=X?new T.LocalNameSet:void 0;try{for(var ge=c(U.attributes),pe=ge.next();!pe.done;pe=ge.next()){var we=pe.value;if(X||K||we.namespaceURI!==null){if(X&&ce&&ce.has(we.namespaceURI,we.localName))throw new Error("Element contains duplicate attributes (well-formed required).");X&&ce&&ce.set(we.namespaceURI,we.localName);var Te=we.namespaceURI,Ve=null;if(Te!==null)if(Ve=j.get(we.prefix,Te),Te===I.namespace.XMLNS){if(we.value===I.namespace.XML||we.prefix===null&&K||we.prefix!==null&&(!(we.localName in $)||$[we.localName]!==we.value)&&j.has(we.localName,we.value))continue;if(X&&we.value===I.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(X&&we.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");we.prefix==="xmlns"&&(Ve="xmlns")}else Ve===null&&(Ve=we.prefix===null||j.hasPrefix(we.prefix)&&!j.has(we.prefix,Te)?this._generatePrefix(Te,j,z):we.prefix,le.push([null,"xmlns",Ve,this._serializeAttributeValue(Te,X)]));if(X&&(we.localName.indexOf(":")!==-1||!R.xml_isName(we.localName)||we.localName==="xmlns"&&Te===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");le.push([Te,Ve,we.localName,this._serializeAttributeValue(we.value,X)])}else le.push([null,null,we.localName,this._serializeAttributeValue(we.value,X)])}}catch(Pe){ee={error:Pe}}finally{try{pe&&!pe.done&&(ne=ge.return)&&ne.call(ge)}finally{if(ee)throw ee.error}}return le},V.prototype._serializeAttributes=function(U,j){var z,$,K=[],X=j?{}:void 0;try{for(var ee=c(U.attributes),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;if(j){if(j&&X&&le.localName in X)throw new Error("Element contains duplicate attributes (well-formed required).");if(j&&X&&(X[le.localName]=!0),j&&(le.localName.indexOf(":")!==-1||!R.xml_isName(le.localName)))throw new Error("Attribute local name contains invalid characters (well-formed required).");K.push([null,null,le.localName,this._serializeAttributeValue(le.value,j)])}else K.push([null,null,le.localName,this._serializeAttributeValue(le.value,j)])}}catch(ce){z={error:ce}}finally{try{ne&&!ne.done&&($=ee.return)&&$.call(ee)}finally{if(z)throw z.error}}return K},V.prototype._recordNamespaceInformation=function(U,j,z){var $,K,X=null;try{for(var ee=c(U.attributes),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value,ce=le.namespaceURI,ge=le.prefix;if(ce===I.namespace.XMLNS){if(ge===null){X=le.value;continue}var pe=le.localName,we=le.value;if(we===I.namespace.XML||(we===""&&(we=null),j.has(pe,we)))continue;j.set(pe,we),z[pe]=we||""}}}catch(Te){$={error:Te}}finally{try{ne&&!ne.done&&(K=ee.return)&&K.call(ee)}finally{if($)throw $.error}}return X},V.prototype._generatePrefix=function(U,j,z){var $="ns"+z.value.toString();return z.value++,j.set($,U),$},V.prototype._serializeAttributeValue=function(U,j){if(j&&U!==null&&!R.xml_isLegalChar(U))throw new Error("Invalid characters in attribute value.");return U===null?"":U.replace(/(?!&([^&;]*);)&/g,"&").replace(//g,">").replace(/"/g,""")},V._VoidElementNames=new Set(["area","base","basefont","bgsound","br","col","embed","frame","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"]),V}();i.BaseWriter=L},function(o,i,l){var c=this&&this.__values||function(j){var z=typeof Symbol=="function"&&Symbol.iterator,$=z&&j[z],K=0;if($)return $.call(j);if(j&&typeof j.length=="number")return{next:function(){return j&&K>=j.length&&(j=void 0),{value:j&&j[K++],done:!j}}};throw new TypeError(z?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(j,z){var $=typeof Symbol=="function"&&j[Symbol.iterator];if(!$)return j;var K,X,ee=$.call(j),ne=[];try{for(;(z===void 0||z-- >0)&&!(K=ee.next()).done;)ne.push(K.value)}catch(le){X={error:le}}finally{try{K&&!K.done&&($=ee.return)&&$.call(ee)}finally{if(X)throw X.error}}return ne};Object.defineProperty(i,"__esModule",{value:!0});var v=l(6),_=l(3),T=l(7),P=l(29),I=l(17),R=l(97);function L(){var j=v.dom.window;j._mutationObserverMicrotaskQueued||(j._mutationObserverMicrotaskQueued=!0,Promise.resolve().then(function(){V()}))}function V(){var j,z,$,K,X=v.dom.window;X._mutationObserverMicrotaskQueued=!1;var ee=T.set.clone(X._mutationObservers),ne=T.set.clone(X._signalSlots);T.set.empty(X._signalSlots);var le=function(Ve){var Pe=T.list.clone(Ve._recordQueue);T.list.empty(Ve._recordQueue);for(var je=0;je"+z+"<\/script>"},j=function(){try{c=document.domain&&new ActiveXObject("htmlfile")}catch{}var z,$;j=c?function(X){X.write(U("")),X.close();var ee=X.parentWindow.Object;return X=null,ee}(c):(($=I("iframe")).style.display="none",P.appendChild($),$.src="javascript:",(z=$.contentWindow.document).open(),z.write(U("document.F=Object")),z.close(),z.F);for(var K=_.length;K--;)delete j.prototype[_[K]];return j()};T[L]=!0,o.exports=Object.create||function(z,$){var K;return z!==null?(V.prototype=g(z),K=new V,V.prototype=null,K[L]=z):K=j(),$===void 0?K:v(K,$)}},function(o,i,l){var c=l(121),g=l(84);o.exports=Object.keys||function(v){return c(v,g)}},function(o,i,l){var c=l(15).f,g=l(14),v=l(5)("toStringTag");o.exports=function(_,T,P){_&&!g(_=P?_:_.prototype,v)&&c(_,v,{configurable:!0,value:T})}},function(o,i,l){var c=l(8),g=l(5),v=l(129),_=g("species");o.exports=function(T){return v>=51||!c(function(){var P=[];return(P.constructor={})[_]=function(){return{foo:1}},P[T](Boolean).foo!==1})}},function(o,i,l){var c=l(4),g=l(122).indexOf,v=l(48),_=l(28),T=[].indexOf,P=!!T&&1/[1].indexOf(1,-0)<0,I=v("indexOf"),R=_("indexOf",{ACCESSORS:!0,1:0});c({target:"Array",proto:!0,forced:P||!I||!R},{indexOf:function(L){return P?T.apply(this,arguments)||0:g(this,L,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(16),g=l(15).f,v=Function.prototype,_=v.toString,T=/^\s*function ([^ (]*)/;c&&!("name"in v)&&g(v,"name",{configurable:!0,get:function(){try{return _.call(this).match(T)[1]}catch{return""}}})},function(o,i,l){var c=l(25),g=l(18),v=l(8),_=l(136),T=RegExp.prototype,P=T.toString,I=v(function(){return P.call({source:"a",flags:"b"})!="/a/b"}),R=P.name!="toString";(I||R)&&c(RegExp.prototype,"toString",function(){var L=g(this),V=String(L.source),U=L.flags;return"/"+V+"/"+String(U===void 0&&L instanceof RegExp&&!("flags"in T)?_.call(L):U)},{unsafe:!0})},function(o,i,l){l(31),l(32),l(33),l(19),l(138),l(20),l(66),l(22),l(23);var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)}),v=this&&this.__values||function(I){var R=typeof Symbol=="function"&&Symbol.iterator,L=R&&I[R],V=0;if(L)return L.call(I);if(I&&typeof I.length=="number")return{next:function(){return I&&V>=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(1),T=l(2),P=function(I){function R(L,V){var U=I.call(this,L)||this;return U._writerOptions=_.applyDefaults(V,{format:"object",wellFormed:!1,group:!1,verbose:!1}),U}return g(R,I),R.prototype.serialize=function(L){return this._currentList=[],this._currentIndex=0,this._listRegister=[this._currentList],this.serializeNode(L,this._writerOptions.wellFormed),this._process(this._currentList,this._writerOptions)},R.prototype._process=function(L,V){var U,j,z,$,K,X,ee;if(L.length===0)return{};for(var ne={},le=!1,ce=0,ge=0,pe=0,we=0,Te=0;Te2)try{for(var ee=v(L),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;V[j+($++).toString()]=le}}catch(ce){K={error:ce}}finally{try{ne&&!ne.done&&(X=ee.return)&&X.call(ee)}finally{if(K)throw K.error}}else V[z>1?j+($++).toString():j]=L;return $},R.prototype.beginElement=function(L){var V,U,j=[];if(this._currentList.length===0)this._currentList.push(((V={})[L]=j,V));else{var z=this._currentList[this._currentList.length-1];this._isElementNode(z,L)?z[L].length!==0&&_.isArray(z[L][0])?z[L].push(j):z[L]=[z[L],j]:this._currentList.push(((U={})[L]=j,U))}this._currentIndex++,this._listRegister.length>this._currentIndex?this._listRegister[this._currentIndex]=j:this._listRegister.push(j),this._currentList=j},R.prototype.endElement=function(){this._currentList=this._listRegister[--this._currentIndex]},R.prototype.attribute=function(L,V){var U,j;if(this._currentList.length===0)this._currentList.push({"@":(U={},U[L]=V,U)});else{var z=this._currentList[this._currentList.length-1];this._isAttrNode(z)?z["@"][L]=V:this._currentList.push({"@":(j={},j[L]=V,j)})}},R.prototype.comment=function(L){if(this._currentList.length===0)this._currentList.push({"!":L});else{var V=this._currentList[this._currentList.length-1];this._isCommentNode(V)?_.isArray(V["!"])?V["!"].push(L):V["!"]=[V["!"],L]:this._currentList.push({"!":L})}},R.prototype.text=function(L){if(this._currentList.length===0)this._currentList.push({"#":L});else{var V=this._currentList[this._currentList.length-1];this._isTextNode(V)?_.isArray(V["#"])?V["#"].push(L):V["#"]=[V["#"],L]:this._currentList.push({"#":L})}},R.prototype.instruction=function(L,V){var U=V===""?L:L+" "+V;if(this._currentList.length===0)this._currentList.push({"?":U});else{var j=this._currentList[this._currentList.length-1];this._isInstructionNode(j)?_.isArray(j["?"])?j["?"].push(U):j["?"]=[j["?"],U]:this._currentList.push({"?":U})}},R.prototype.cdata=function(L){if(this._currentList.length===0)this._currentList.push({$:L});else{var V=this._currentList[this._currentList.length-1];this._isCDATANode(V)?_.isArray(V.$)?V.$.push(L):V.$=[V.$,L]:this._currentList.push({$:L})}},R.prototype._isAttrNode=function(L){return"@"in L},R.prototype._isTextNode=function(L){return"#"in L},R.prototype._isCommentNode=function(L){return"!"in L},R.prototype._isInstructionNode=function(L){return"?"in L},R.prototype._isCDATANode=function(L){return"$"in L},R.prototype._isElementNode=function(L,V){return V in L},R.prototype._getAttrKey=function(){return this._builderOptions.convert.att},R.prototype._getNodeKey=function(L){switch(L){case T.NodeType.Comment:return this._builderOptions.convert.comment;case T.NodeType.Text:return this._builderOptions.convert.text;case T.NodeType.ProcessingInstruction:return this._builderOptions.convert.ins;case T.NodeType.CData:return this._builderOptions.convert.cdata;default:throw new Error("Invalid node type.")}},R}(l(50).BaseWriter);i.ObjectWriter=P},function(o,i,l){var c=l(4),g=l(93);c({target:"RegExp",proto:!0,forced:/./.exec!==g},{exec:g})},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(){this._items={},this._nullItems={}}return g.prototype.set=function(v,_){v===null?this._nullItems[_]=!0:(this._items[v]||(this._items[v]={}),this._items[v][_]=!0)},g.prototype.has=function(v,_){return v===null?this._nullItems[_]===!0:!!this._items[v]&&this._items[v][_]===!0},g}();i.LocalNameSet=c},function(o,i,l){var c=this&&this.__read||function(P,I){var R=typeof Symbol=="function"&&P[Symbol.iterator];if(!R)return P;var L,V,U=R.call(P),j=[];try{for(;(I===void 0||I-- >0)&&!(L=U.next()).done;)j.push(L.value)}catch(z){V={error:z}}finally{try{L&&!L.done&&(R=U.return)&&R.call(U)}finally{if(V)throw V.error}}return j};Object.defineProperty(i,"__esModule",{value:!0});var g=l(9),v=l(3),_=l(0),T=function(){function P(){}return Object.defineProperty(P.prototype,"_eventListenerList",{get:function(){return this.__eventListenerList||(this.__eventListenerList=[])},enumerable:!0,configurable:!0}),Object.defineProperty(P.prototype,"_eventHandlerMap",{get:function(){return this.__eventHandlerMap||(this.__eventHandlerMap={})},enumerable:!0,configurable:!0}),P.prototype.addEventListener=function(I,R,L){L===void 0&&(L={passive:!1,once:!1,capture:!1});var V,U=c(_.eventTarget_flattenMore(L),3),j=U[0],z=U[1],$=U[2];R&&(V=v.Guard.isEventListener(R)?R:{handleEvent:R},_.eventTarget_addEventListener(this,{type:I,callback:V,capture:j,passive:z,once:$,removed:!1}))},P.prototype.removeEventListener=function(I,R,L){L===void 0&&(L={capture:!1});var V=_.eventTarget_flatten(L);if(R)for(var U=0;U=z.length&&(z=void 0),{value:z&&z[X++],done:!z}}};throw new TypeError($?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(z,$){var K=typeof Symbol=="function"&&z[Symbol.iterator];if(!K)return z;var X,ee,ne=K.call(z),le=[];try{for(;($===void 0||$-- >0)&&!(X=ne.next()).done;)le.push(X.value)}catch(ce){ee={error:ce}}finally{try{X&&!X.done&&(K=ne.return)&&K.call(ne)}finally{if(ee)throw ee.error}}return le},v=this&&this.__spread||function(){for(var z=[],$=0;$",amp:"&",quot:'"',apos:"'"},v}();i.BaseReader=g},function(o,i,l){var c=l(39);o.exports=c.DEFAULT=new c({include:[l(54)],explicit:[l(299),l(300),l(301)]})},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(185);i.XMLBuilderImpl=c.XMLBuilderImpl;var g=l(304);i.XMLBuilderCBImpl=g.XMLBuilderCBImpl;var v=l(183);i.builder=v.builder,i.create=v.create,i.fragment=v.fragment,i.convert=v.convert;var _=l(309);i.createCB=_.createCB,i.fragmentCB=_.fragmentCB},function(o,i){var l;l=function(){return this}();try{l=l||new Function("return this")()}catch{typeof window=="object"&&(l=window)}o.exports=l},function(o,i,l){var c={}.propertyIsEnumerable,g=Object.getOwnPropertyDescriptor,v=g&&!c.call({1:2},1);i.f=v?function(_){var T=g(this,_);return!!T&&T.enumerable}:c},function(o,i,l){var c=l(11),g=l(21);o.exports=function(v,_){try{g(c,v,_)}catch{c[v]=_}return _}},function(o,i,l){var c=l(44),g=l(118);(o.exports=function(v,_){return g[v]||(g[v]=_!==void 0?_:{})})("versions",[]).push({version:"3.6.5",mode:c?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(o,i,l){var c=l(121),g=l(84).concat("length","prototype");i.f=Object.getOwnPropertyNames||function(v){return c(v,g)}},function(o,i,l){var c=l(47),g=Math.max,v=Math.min;o.exports=function(_,T){var P=c(_);return P<0?g(P+T,0):v(P,T)}},function(o,i){o.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(o,i){i.f=Object.getOwnPropertySymbols},function(o,i,l){var c=l(8);o.exports=!!Object.getOwnPropertySymbols&&!c(function(){return!String(Symbol())})},function(o,i,l){var c=l(127);o.exports=function(g,v,_){if(c(g),v===void 0)return g;switch(_){case 0:return function(){return g.call(v)};case 1:return function(T){return g.call(v,T)};case 2:return function(T,P){return g.call(v,T,P)};case 3:return function(T,P,I){return g.call(v,T,P,I)}}return function(){return g.apply(v,arguments)}}},function(o,i,l){var c=l(4),g=l(195),v=l(132),_=l(133),T=l(62),P=l(21),I=l(25),R=l(5),L=l(44),V=l(49),U=l(131),j=U.IteratorPrototype,z=U.BUGGY_SAFARI_ITERATORS,$=R("iterator"),K=function(){return this};o.exports=function(X,ee,ne,le,ce,ge,pe){g(ne,ee,le);var we,Te,Ve,Pe=function(ut){if(ut===ce&&Ke)return Ke;if(!z&&ut in it)return it[ut];switch(ut){case"keys":case"values":case"entries":return function(){return new ne(this,ut)}}return function(){return new ne(this)}},je=ee+" Iterator",Je=!1,it=X.prototype,Ge=it[$]||it["@@iterator"]||ce&&it[ce],Ke=!z&&Ge||Pe(ce),qe=ee=="Array"&&it.entries||Ge;if(qe&&(we=v(qe.call(new X)),j!==Object.prototype&&we.next&&(L||v(we)===j||(_?_(we,j):typeof we[$]!="function"&&P(we,$,K)),T(we,je,!0,!0),L&&(V[je]=K))),ce=="values"&&Ge&&Ge.name!=="values"&&(Je=!0,Ke=function(){return Ge.call(this)}),L&&!pe||it[$]===Ke||P(it,$,Ke),V[ee]=Ke,ce)if(Te={values:Pe("values"),keys:ge?Ke:Pe("keys"),entries:Pe("entries")},pe)for(Ve in Te)(z||Je||!(Ve in it))&&I(it,Ve,Te[Ve]);else c({target:ee,proto:!0,forced:z||Je},Te);return Te}},function(o,i,l){var c=l(4),g=l(13),v=l(59),_=l(83),T=l(26),P=l(24),I=l(134),R=l(5),L=l(63),V=l(28),U=L("slice"),j=V("slice",{ACCESSORS:!0,0:0,1:2}),z=R("species"),$=[].slice,K=Math.max;c({target:"Array",proto:!0,forced:!U||!j},{slice:function(X,ee){var ne,le,ce,ge=P(this),pe=T(ge.length),we=_(X,pe),Te=_(ee===void 0?pe:ee,pe);if(v(ge)&&(typeof(ne=ge.constructor)!="function"||ne!==Array&&!v(ne.prototype)?g(ne)&&(ne=ne[z])===null&&(ne=void 0):ne=void 0,ne===Array||ne===void 0))return $.call(ge,we,Te);for(le=new(ne===void 0?Array:ne)(K(Te-we,0)),ce=0;we0&&(!X.multiline||X.multiline&&U[X.lastIndex-1]!==` +`)&&(le="(?: "+le+")",ge=" "+ge,ce++),z=new RegExp("^(?:"+le+")",ne)),V&&(z=new RegExp("^"+le+"$(?!\\s)",ne)),R&&(j=X.lastIndex),$=T.call(ee?z:X,ge),ee?$?($.input=$.input.slice(ce),$[0]=$[0].slice(ce),$.index=X.lastIndex,X.lastIndex+=$[0].length):X.lastIndex=0:R&&$&&(X.lastIndex=X.global?$.index+$[0].length:j),V&&$&&$.length>1&&P.call($[0],z,function(){for(K=1;K]*>)/g,z=/\$([$&'`]|\d\d?)/g;c("replace",2,function($,K,X,ee){var ne=ee.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,le=ee.REPLACE_KEEPS_$0,ce=ne?"$":"$0";return[function(pe,we){var Te=P(this),Ve=pe==null?void 0:pe[$];return Ve!==void 0?Ve.call(pe,Te,we):K.call(String(Te),pe,we)},function(pe,we){if(!ne&&le||typeof we=="string"&&we.indexOf(ce)===-1){var Te=X(K,pe,this,we);if(Te.done)return Te.value}var Ve=g(pe),Pe=String(this),je=typeof we=="function";je||(we=String(we));var Je=Ve.global;if(Je){var it=Ve.unicode;Ve.lastIndex=0}for(var Ge=[];;){var Ke=R(Ve,Pe);if(Ke===null||(Ge.push(Ke),!Je))break;String(Ke[0])===""&&(Ve.lastIndex=I(Pe,_(Ve.lastIndex),it))}for(var qe,ut="",wt=0,Et=0;Et=wt&&(ut+=Pe.slice(wt,$t)+et,wt=$t+qt.length)}return ut+Pe.slice(wt)}];function ge(pe,we,Te,Ve,Pe,je){var Je=Te+pe.length,it=Ve.length,Ge=z;return Pe!==void 0&&(Pe=v(Pe),Ge=j),K.call(je,Ge,function(Ke,qe){var ut;switch(qe.charAt(0)){case"$":return"$";case"&":return pe;case"`":return we.slice(0,Te);case"'":return we.slice(Je);case"<":ut=Pe[qe.slice(1,-1)];break;default:var wt=+qe;if(wt===0)return Ke;if(wt>it){var Et=U(wt/10);return Et===0?Ke:Et<=it?Ve[Et-1]===void 0?qe.charAt(1):Ve[Et-1]+qe.charAt(1):Ke}ut=Ve[wt-1]}return ut===void 0?"":ut})}})},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(){this._items={},this._nullItems=[]}return g.prototype.copy=function(){var v=new g;for(var _ in this._items)v._items[_]=this._items[_].slice(0);return v._nullItems=this._nullItems.slice(0),v},g.prototype.get=function(v,_){var T=_===null?this._nullItems:this._items[_]||null;if(T===null)return null;for(var P=null,I=0;I=we.length&&(we=void 0),{value:we&&we[Pe++],done:!we}}};throw new TypeError(Te?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(we,Te){var Ve=typeof Symbol=="function"&&we[Symbol.iterator];if(!Ve)return we;var Pe,je,Je=Ve.call(we),it=[];try{for(;(Te===void 0||Te-- >0)&&!(Pe=Je.next()).done;)it.push(Pe.value)}catch(Ge){je={error:Ge}}finally{try{Pe&&!Pe.done&&(Ve=Je.return)&&Ve.call(Je)}finally{if(je)throw je.error}}return it},v=this&&this.__spread||function(){for(var we=[],Te=0;Te=0;mn--)if((Hn=Pt[mn]).shadowAdjustedTarget!==null){St=Hn;break}if(St!==null)if(P.Guard.isNode(St.shadowAdjustedTarget)&&P.Guard.isShadowRoot(V.tree_rootNode(St.shadowAdjustedTarget,!0)))Ke=!0;else if(P.Guard.isNode(St.relatedTarget)&&P.Guard.isShadowRoot(V.tree_rootNode(St.relatedTarget,!0)))Ke=!0;else for(var Pn=0;Pn=0;mn--)(Hn=Pt[mn]).shadowAdjustedTarget!==null?we._eventPhase=T.EventPhase.AtTarget:we._eventPhase=T.EventPhase.Capturing,ee(Hn,we,"capturing",Pe);for(mn=0;mn0&&(Ge=je[Je-1]).shadowAdjustedTarget!==null)&&(Te._target=Ge.shadowAdjustedTarget)}if(Te._relatedTarget=we.relatedTarget,Te._touchTargetList=we.touchTargetList,!Te._stopPropagationFlag){Te._currentTarget=we.invocationTarget;var Ke=Te._currentTarget._eventListenerList,qe=new(Array.bind.apply(Array,v([void 0],Ke)));if(!ne(Te,qe,Ve,we,Pe)&&Te._isTrusted){var ut=Te._type;ut==="animationend"?Te._type="webkitAnimationEnd":ut==="animationiteration"?Te._type="webkitAnimationIteration":ut==="animationstart"?Te._type="webkitAnimationStart":ut==="transitionend"&&(Te._type="webkitTransitionEnd"),ne(Te,qe,Ve,we,Pe),Te._type=ut}}}function ne(we,Te,Ve,Pe,je){je===void 0&&(je={value:!1});for(var Je=!1,it=0;it=X.length&&(X=void 0),{value:X&&X[le++],done:!X}}};throw new TypeError(ee?"Object is not iterable.":"Symbol.iterator is not defined.")},_=this&&this.__read||function(X,ee){var ne=typeof Symbol=="function"&&X[Symbol.iterator];if(!ne)return X;var le,ce,ge=ne.call(X),pe=[];try{for(;(ee===void 0||ee-- >0)&&!(le=ge.next()).done;)pe.push(le.value)}catch(we){ce={error:we}}finally{try{le&&!le.done&&(ne=ge.return)&&ne.call(ge)}finally{if(ce)throw ce.error}}return pe};Object.defineProperty(i,"__esModule",{value:!0});var T=l(6),P=l(2),I=l(9),R=l(34),L=l(3),V=l(1),U=l(7),j=l(152),z=l(0),$=l(12),K=function(X){function ee(){var ne=X.call(this)||this;return ne._children=new Set,ne._encoding={name:"UTF-8",labels:["unicode-1-1-utf-8","utf-8","utf8"]},ne._contentType="application/xml",ne._URL={scheme:"about",username:"",password:"",host:null,port:null,path:["blank"],query:null,fragment:null,_cannotBeABaseURLFlag:!0,_blobURLEntry:null},ne._origin=null,ne._type="xml",ne._mode="no-quirks",ne._documentElement=null,ne._hasNamespaces=!1,ne._nodeDocumentOverwrite=null,ne}return g(ee,X),Object.defineProperty(ee.prototype,"_nodeDocument",{get:function(){return this._nodeDocumentOverwrite||this},set:function(ne){this._nodeDocumentOverwrite=ne},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"implementation",{get:function(){return this._implementation||(this._implementation=z.create_domImplementation(this))},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"URL",{get:function(){return j.urlSerializer(this._URL)},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"documentURI",{get:function(){return this.URL},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"origin",{get:function(){return"null"},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"compatMode",{get:function(){return this._mode==="quirks"?"BackCompat":"CSS1Compat"},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"characterSet",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"charset",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"inputEncoding",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"contentType",{get:function(){return this._contentType},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"doctype",{get:function(){var ne,le;try{for(var ce=v(this._children),ge=ce.next();!ge.done;ge=ce.next()){var pe=ge.value;if(L.Guard.isDocumentTypeNode(pe))return pe}}catch(we){ne={error:we}}finally{try{ge&&!ge.done&&(le=ce.return)&&le.call(ce)}finally{if(ne)throw ne.error}}return null},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"documentElement",{get:function(){return this._documentElement},enumerable:!0,configurable:!0}),ee.prototype.getElementsByTagName=function(ne){return z.node_listOfElementsWithQualifiedName(ne,this)},ee.prototype.getElementsByTagNameNS=function(ne,le){return z.node_listOfElementsWithNamespace(ne,le,this)},ee.prototype.getElementsByClassName=function(ne){return z.node_listOfElementsWithClassNames(ne,this)},ee.prototype.createElement=function(ne,le){if(!z.xml_isName(ne))throw new I.InvalidCharacterError;this._type==="html"&&(ne=ne.toLowerCase());var ce=null;le!==void 0&&(ce=V.isString(le)?le:le.is);var ge=this._type==="html"||this._contentType==="application/xhtml+xml"?U.namespace.HTML:null;return z.element_createAnElement(this,ne,ge,null,ce,!0)},ee.prototype.createElementNS=function(ne,le,ce){return z.document_internalCreateElementNS(this,ne,le,ce)},ee.prototype.createDocumentFragment=function(){return z.create_documentFragment(this)},ee.prototype.createTextNode=function(ne){return z.create_text(this,ne)},ee.prototype.createCDATASection=function(ne){if(this._type==="html")throw new I.NotSupportedError;if(ne.indexOf("]]>")!==-1)throw new I.InvalidCharacterError;return z.create_cdataSection(this,ne)},ee.prototype.createComment=function(ne){return z.create_comment(this,ne)},ee.prototype.createProcessingInstruction=function(ne,le){if(!z.xml_isName(ne))throw new I.InvalidCharacterError;if(le.indexOf("?>")!==-1)throw new I.InvalidCharacterError;return z.create_processingInstruction(this,ne,le)},ee.prototype.importNode=function(ne,le){if(le===void 0&&(le=!1),L.Guard.isDocumentNode(ne)||L.Guard.isShadowRoot(ne))throw new I.NotSupportedError;return z.node_clone(ne,this,le)},ee.prototype.adoptNode=function(ne){if(L.Guard.isDocumentNode(ne))throw new I.NotSupportedError;if(L.Guard.isShadowRoot(ne))throw new I.HierarchyRequestError;return z.document_adopt(ne,this),ne},ee.prototype.createAttribute=function(ne){if(!z.xml_isName(ne))throw new I.InvalidCharacterError;return this._type==="html"&&(ne=ne.toLowerCase()),z.create_attr(this,ne)},ee.prototype.createAttributeNS=function(ne,le){var ce=_(z.namespace_validateAndExtract(ne,le),3),ge=ce[0],pe=ce[1],we=ce[2],Te=z.create_attr(this,we);return Te._namespace=ge,Te._namespacePrefix=pe,Te},ee.prototype.createEvent=function(ne){return z.event_createLegacyEvent(ne)},ee.prototype.createRange=function(){var ne=z.create_range();return ne._start=[this,0],ne._end=[this,0],ne},ee.prototype.createNodeIterator=function(ne,le,ce){le===void 0&&(le=P.WhatToShow.All),ce===void 0&&(ce=null);var ge=z.create_nodeIterator(ne,ne,!0);return ge._whatToShow=le,ge._iteratorCollection=z.create_nodeList(ne),V.isFunction(ce)?(ge._filter=z.create_nodeFilter(),ge._filter.acceptNode=ce):ge._filter=ce,ge},ee.prototype.createTreeWalker=function(ne,le,ce){le===void 0&&(le=P.WhatToShow.All),ce===void 0&&(ce=null);var ge=z.create_treeWalker(ne,ne);return ge._whatToShow=le,V.isFunction(ce)?(ge._filter=z.create_nodeFilter(),ge._filter.acceptNode=ce):ge._filter=ce,ge},ee.prototype._getTheParent=function(ne){return ne._type==="load"?null:T.dom.window},ee.prototype.getElementById=function(ne){throw new Error("Mixin: NonElementParentNode not implemented.")},Object.defineProperty(ee.prototype,"children",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"firstElementChild",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"lastElementChild",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"childElementCount",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),ee.prototype.prepend=function(){for(var ne=[],le=0;le=j.length&&(j=void 0),{value:j&&j[K++],done:!j}}};throw new TypeError(z?"Object is not iterable.":"Symbol.iterator is not defined.")},_=this&&this.__read||function(j,z){var $=typeof Symbol=="function"&&j[Symbol.iterator];if(!$)return j;var K,X,ee=$.call(j),ne=[];try{for(;(z===void 0||z-- >0)&&!(K=ee.next()).done;)ne.push(K.value)}catch(le){X={error:le}}finally{try{K&&!K.done&&($=ee.return)&&$.call(ee)}finally{if(X)throw X.error}}return ne};Object.defineProperty(i,"__esModule",{value:!0});var T=l(2),P=l(34),I=l(9),R=l(7),L=l(0),V=l(12),U=function(j){function z(){var $=j.call(this)||this;return $._children=new Set,$._namespace=null,$._namespacePrefix=null,$._localName="",$._customElementState="undefined",$._customElementDefinition=null,$._is=null,$._shadowRoot=null,$._attributeList=L.create_namedNodeMap($),$._attributeChangeSteps=[],$._name="",$._assignedSlot=null,$}return g(z,j),Object.defineProperty(z.prototype,"namespaceURI",{get:function(){return this._namespace},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"prefix",{get:function(){return this._namespacePrefix},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"localName",{get:function(){return this._localName},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"tagName",{get:function(){return this._htmlUppercasedQualifiedName},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"id",{get:function(){return L.element_getAnAttributeValue(this,"id")},set:function($){L.element_setAnAttributeValue(this,"id",$)},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"className",{get:function(){return L.element_getAnAttributeValue(this,"class")},set:function($){L.element_setAnAttributeValue(this,"class",$)},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"classList",{get:function(){var $=L.element_getAnAttributeByName("class",this);return $===null&&($=L.create_attr(this._nodeDocument,"class")),L.create_domTokenList(this,$)},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"slot",{get:function(){return L.element_getAnAttributeValue(this,"slot")},set:function($){L.element_setAnAttributeValue(this,"slot",$)},enumerable:!0,configurable:!0}),z.prototype.hasAttributes=function(){return this._attributeList.length!==0},Object.defineProperty(z.prototype,"attributes",{get:function(){return this._attributeList},enumerable:!0,configurable:!0}),z.prototype.getAttributeNames=function(){var $,K,X=[];try{for(var ee=v(this._attributeList),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;X.push(le._qualifiedName)}}catch(ce){$={error:ce}}finally{try{ne&&!ne.done&&(K=ee.return)&&K.call(ee)}finally{if($)throw $.error}}return X},z.prototype.getAttribute=function($){var K=L.element_getAnAttributeByName($,this);return K?K._value:null},z.prototype.getAttributeNS=function($,K){var X=L.element_getAnAttributeByNamespaceAndLocalName($,K,this);return X?X._value:null},z.prototype.setAttribute=function($,K){if(!L.xml_isName($))throw new I.InvalidCharacterError;this._namespace===R.namespace.HTML&&this._nodeDocument._type==="html"&&($=$.toLowerCase());for(var X=null,ee=0;ee=L.length&&(L=void 0),{value:L&&L[j++],done:!L}}};throw new TypeError(V?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(2),T=l(71),P=l(0),I=l(12),R=function(L){function V(U){U===void 0&&(U="");var j=L.call(this,U)||this;return j._name="",j._assignedSlot=null,j}return g(V,L),Object.defineProperty(V.prototype,"wholeText",{get:function(){var U,j,z="";try{for(var $=v(P.text_contiguousTextNodes(this,!0)),K=$.next();!K.done;K=$.next())z+=K.value._data}catch(X){U={error:X}}finally{try{K&&!K.done&&(j=$.return)&&j.call($)}finally{if(U)throw U.error}}return z},enumerable:!0,configurable:!0}),V.prototype.splitText=function(U){return P.text_split(this,U)},Object.defineProperty(V.prototype,"assignedSlot",{get:function(){throw new Error("Mixin: Slotable not implemented.")},enumerable:!0,configurable:!0}),V._create=function(U,j){j===void 0&&(j="");var z=new V(j);return z._nodeDocument=U,z},V}(T.CharacterDataImpl);i.TextImpl=R,I.idl_defineConst(R.prototype,"_nodeType",_.NodeType.Text)},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(){}return Object.defineProperty(g.prototype,"_startNode",{get:function(){return this._start[0]},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"_startOffset",{get:function(){return this._start[1]},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"_endNode",{get:function(){return this._end[0]},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"_endOffset",{get:function(){return this._end[1]},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"_collapsed",{get:function(){return this._start[0]===this._end[0]&&this._start[1]===this._end[1]},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"startContainer",{get:function(){return this._startNode},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"startOffset",{get:function(){return this._startOffset},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"endContainer",{get:function(){return this._endNode},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"endOffset",{get:function(){return this._endOffset},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"collapsed",{get:function(){return this._collapsed},enumerable:!0,configurable:!0}),g}();i.AbstractRangeImpl=c},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=function(){function v(_){this._activeFlag=!1,this._root=_,this._whatToShow=c.WhatToShow.All,this._filter=null}return Object.defineProperty(v.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),Object.defineProperty(v.prototype,"whatToShow",{get:function(){return this._whatToShow},enumerable:!0,configurable:!0}),Object.defineProperty(v.prototype,"filter",{get:function(){return this._filter},enumerable:!0,configurable:!0}),v}();i.TraverserImpl=g},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=l(0),v=l(12),_=function(){function T(P,I){this._target=null,this._relatedTarget=null,this._touchTargetList=[],this._path=[],this._currentTarget=null,this._eventPhase=c.EventPhase.None,this._stopPropagationFlag=!1,this._stopImmediatePropagationFlag=!1,this._canceledFlag=!1,this._inPassiveListenerFlag=!1,this._composedFlag=!1,this._initializedFlag=!1,this._dispatchFlag=!1,this._isTrusted=!1,this._bubbles=!1,this._cancelable=!1,this._type=P,I&&(this._bubbles=I.bubbles||!1,this._cancelable=I.cancelable||!1,this._composedFlag=I.composed||!1),this._initializedFlag=!0,this._timeStamp=new Date().getTime()}return Object.defineProperty(T.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"target",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"srcElement",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"currentTarget",{get:function(){return this._currentTarget},enumerable:!0,configurable:!0}),T.prototype.composedPath=function(){var P=[],I=this._path;if(I.length===0)return P;var R=this._currentTarget;if(R===null)throw new Error("Event currentTarget is null.");P.push(R);for(var L=0,V=0,U=I.length-1;U>=0;){if(I[U].rootOfClosedTree&&V++,I[U].invocationTarget===R){L=U;break}I[U].slotInClosedTree&&V--,U--}var j=V,z=V;for(U=L-1;U>=0;)I[U].rootOfClosedTree&&j++,j<=z&&P.unshift(I[U].invocationTarget),I[U].slotInClosedTree&&--j0)&&!(X=ne.next()).done;)le.push(X.value)}catch(ce){ee={error:ce}}finally{try{X&&!X.done&&(K=ne.return)&&K.call(ne)}finally{if(ee)throw ee.error}}return le},g=this&&this.__values||function(z){var $=typeof Symbol=="function"&&Symbol.iterator,K=$&&z[$],X=0;if(K)return K.call(z);if(z&&typeof z.length=="number")return{next:function(){return z&&X>=z.length&&(z=void 0),{value:z&&z[X++],done:!z}}};throw new TypeError($?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var v=l(6),_=l(3),T=l(1),P=l(99),I=l(73),R=l(17),L=l(173),V=l(30),U=l(52),j=l(37);i.document_elementInterface=function(z,$){return P.ElementImpl},i.document_internalCreateElementNS=function(z,$,K,X){var ee=c(L.namespace_validateAndExtract($,K),3),ne=ee[0],le=ee[1],ce=ee[2],ge=null;return X!==void 0&&(ge=T.isString(X)?X:X.is),U.element_createAnElement(z,ce,ne,le,ge,!0)},i.document_adopt=function(z,$){var K,X;if(z._nodeDocument!==$||z._parent!==null){var ee=z._nodeDocument;if(z._parent&&j.mutation_remove(z,z._parent),$!==ee)for(var ne=R.tree_getFirstDescendantNode(z,!0,!0);ne!==null;){if(ne._nodeDocument=$,_.Guard.isElementNode(ne))try{for(var le=(K=void 0,g(ne._attributeList._asArray())),ce=le.next();!ce.done;ce=le.next())ce.value._nodeDocument=$}catch(ge){K={error:ge}}finally{try{ce&&!ce.done&&(X=le.return)&&X.call(le)}finally{if(K)throw K.error}}v.dom.features.customElements&&_.Guard.isElementNode(ne)&&ne._customElementState==="custom"&&I.customElement_enqueueACustomElementCallbackReaction(ne,"adoptedCallback",[ee,$]),v.dom.features.steps&&V.dom_runAdoptingSteps(ne,ee),ne=R.tree_getNextDescendantNode(z,ne,!0,!0)}}}},function(o,i,l){var c=this&&this.__values||function(R){var L=typeof Symbol=="function"&&Symbol.iterator,V=L&&R[L],U=0;if(V)return V.call(R);if(R&&typeof R.length=="number")return{next:function(){return R&&U>=R.length&&(R=void 0),{value:R&&R[U++],done:!R}}};throw new TypeError(L?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(3),_=l(9),T=l(17),P=l(51),I=l(30);i.characterData_replaceData=function(R,L,V,U){var j,z,$=T.tree_nodeLength(R);if(L>$)throw new _.IndexSizeError("Offset exceeds character data length. Offset: "+L+", Length: "+$+", Node is "+R.nodeName+".");L+V>$&&(V=$-L),g.dom.features.mutationObservers&&P.observer_queueMutationRecord("characterData",R,null,null,R._data,[],[],null,null);var K=R._data.substring(0,L)+U+R._data.substring(L+V);R._data=K;try{for(var X=c(g.dom.rangeList),ee=X.next();!ee.done;ee=X.next()){var ne=ee.value;ne._start[0]===R&&ne._start[1]>L&&ne._start[1]<=L+V&&(ne._start[1]=L),ne._end[0]===R&&ne._end[1]>L&&ne._end[1]<=L+V&&(ne._end[1]=L),ne._start[0]===R&&ne._start[1]>L+V&&(ne._start[1]+=U.length-V),ne._end[0]===R&&ne._end[1]>L+V&&(ne._end[1]+=U.length-V)}}catch(le){j={error:le}}finally{try{ee&&!ee.done&&(z=X.return)&&z.call(X)}finally{if(j)throw j.error}}g.dom.features.steps&&v.Guard.isTextNode(R)&&R._parent!==null&&I.dom_runChildTextContentChangeSteps(R._parent)},i.characterData_substringData=function(R,L,V){var U=T.tree_nodeLength(R);if(L>U)throw new _.IndexSizeError("Offset exceeds character data length. Offset: "+L+", Length: "+U+", Node is "+R.nodeName+".");return L+V>U?R._data.substr(L):R._data.substr(L,V)}},function(o,i,l){var c=this&&this.__read||function(I,R){var L=typeof Symbol=="function"&&I[Symbol.iterator];if(!L)return I;var V,U,j=L.call(I),z=[];try{for(;(R===void 0||R-- >0)&&!(V=j.next()).done;)z.push(V.value)}catch($){U={error:$}}finally{try{V&&!V.done&&(L=j.return)&&L.call(j)}finally{if(U)throw U.error}}return z},g=this&&this.__spread||function(){for(var I=[],R=0;R=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(7);function T(I){var R=_.string.splitAStringOnASCIIWhitespace(I);return new Set(R)}function P(I){return g(I).join(" ")}i.orderedSet_parse=T,i.orderedSet_serialize=P,i.orderedSet_sanitize=function(I){return P(T(I))},i.orderedSet_contains=function(I,R,L){var V,U,j,z;try{for(var $=v(R),K=$.next();!K.done;K=$.next()){var X=K.value,ee=!1;try{for(var ne=(j=void 0,v(I)),le=ne.next();!le.done;le=ne.next()){var ce=le.value;if(L){if(ce===X){ee=!0;break}}else if(ce.toUpperCase()===X.toUpperCase()){ee=!0;break}}}catch(ge){j={error:ge}}finally{try{le&&!le.done&&(z=ne.return)&&z.call(ne)}finally{if(j)throw j.error}}if(!ee)return!1}}catch(ge){V={error:ge}}finally{try{K&&!K.done&&(U=$.return)&&U.call($)}finally{if(V)throw V.error}}return!0}},function(o,i,l){l(179),Object.defineProperty(i,"__esModule",{value:!0});var c=l(262),g=l(110),v=l(1);g.dom.setFeatures(!1),i.createDocument=function(){var _=new c.DOMImplementation().createDocument(null,"root",null);return _.documentElement&&_.removeChild(_.documentElement),_},i.sanitizeInput=function(_,T){if(_==null)return _;if(T===void 0)return _+"";var P="";_+="";for(var I=0;I<_.length;I++){var R=_.charCodeAt(I);if(R===9||R===10||R===13||R>=32&&R<=55295||R>=57344&&R<=65533)P+=_.charAt(I);else if(R>=55296&&R<=56319&&I<_.length-1){var L=_.charCodeAt(I+1);L>=56320&&L<=57343?(R=1024*(R-55296)+L-56320+65536,P+=String.fromCodePoint(R),I++):P+=v.isString(T)?T:T(_.charAt(I),I,_)}else P+=v.isString(T)?T:T(_.charAt(I),I,_)}return P}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(1),g=l(153);i.AbortController=g.AbortControllerImpl;var v=l(154);i.AbortSignal=v.AbortSignalImpl;var _=l(102);i.AbstractRange=_.AbstractRangeImpl;var T=l(157);i.Attr=T.AttrImpl;var P=l(158);i.CDATASection=P.CDATASectionImpl;var I=l(71);i.CharacterData=I.CharacterDataImpl;var R=l(263),L=l(159);i.Comment=L.CommentImpl;var V=l(171);i.CustomEvent=V.CustomEventImpl;var U=l(100);i.DocumentFragment=U.DocumentFragmentImpl;var j=l(98);i.Document=j.DocumentImpl;var z=l(264),$=l(155);i.DocumentType=$.DocumentTypeImpl;var K=l(6);i.dom=K.dom;var X=l(148);i.DOMImplementation=X.DOMImplementationImpl;var ee=l(170);i.DOMTokenList=ee.DOMTokenListImpl;var ne=l(99);i.Element=ne.ElementImpl;var le=l(104);i.Event=le.EventImpl;var ce=l(70);i.EventTarget=ce.EventTargetImpl;var ge=l(161);i.HTMLCollection=ge.HTMLCollectionImpl;var pe=l(265);i.MutationObserver=pe.MutationObserverImpl;var we=l(169);i.MutationRecord=we.MutationRecordImpl;var Te=l(164);i.NamedNodeMap=Te.NamedNodeMapImpl;var Ve=l(168);i.NodeFilter=Ve.NodeFilterImpl;var Pe=l(34);i.Node=Pe.NodeImpl;var je=l(166);i.NodeIterator=je.NodeIteratorImpl;var Je=l(162);i.NodeList=Je.NodeListImpl;var it=l(163);i.NodeListStatic=it.NodeListStaticImpl;var Ge=l(266),Ke=l(267),qe=l(268),ut=l(160);i.ProcessingInstruction=ut.ProcessingInstructionImpl;var wt=l(165);i.Range=wt.RangeImpl;var Et=l(156);i.ShadowRoot=Et.ShadowRootImpl;var qt=l(269),$t=l(270);i.StaticRange=$t.StaticRangeImpl;var Jt=l(101);i.Text=Jt.TextImpl;var Dn=l(103);i.Traverser=Dn.TraverserImpl;var Nn=l(167);i.TreeWalker=Nn.TreeWalkerImpl;var xn=l(149);i.Window=xn.WindowImpl;var et=l(151);i.XMLDocument=et.XMLDocumentImpl,c.applyMixin(ne.ElementImpl,R.ChildNodeImpl),c.applyMixin(I.CharacterDataImpl,R.ChildNodeImpl),c.applyMixin($.DocumentTypeImpl,R.ChildNodeImpl),c.applyMixin(j.DocumentImpl,z.DocumentOrShadowRootImpl),c.applyMixin(Et.ShadowRootImpl,z.DocumentOrShadowRootImpl),c.applyMixin(ne.ElementImpl,Ge.NonDocumentTypeChildNodeImpl),c.applyMixin(I.CharacterDataImpl,Ge.NonDocumentTypeChildNodeImpl),c.applyMixin(j.DocumentImpl,Ke.NonElementParentNodeImpl),c.applyMixin(U.DocumentFragmentImpl,Ke.NonElementParentNodeImpl),c.applyMixin(j.DocumentImpl,qe.ParentNodeImpl),c.applyMixin(U.DocumentFragmentImpl,qe.ParentNodeImpl),c.applyMixin(ne.ElementImpl,qe.ParentNodeImpl),c.applyMixin(Jt.TextImpl,qt.SlotableImpl),c.applyMixin(ne.ElementImpl,qt.SlotableImpl)},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),function(c){c[c.EOF=0]="EOF",c[c.Declaration=1]="Declaration",c[c.DocType=2]="DocType",c[c.Element=3]="Element",c[c.Text=4]="Text",c[c.CDATA=5]="CDATA",c[c.PI=6]="PI",c[c.Comment=7]="Comment",c[c.ClosingTag=8]="ClosingTag"}(i.TokenType||(i.TokenType={}))},function(o,i,l){l(64),l(20),l(66);var c,g=this&&this.__extends||(c=function(T,P){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(I,R){I.__proto__=R}||function(I,R){for(var L in R)R.hasOwnProperty(L)&&(I[L]=R[L])})(T,P)},function(T,P){function I(){this.constructor=T}c(T,P),T.prototype=P===null?Object.create(P):(I.prototype=P.prototype,new I)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(1),_=function(T){function P(){return T!==null&&T.apply(this,arguments)||this}return g(P,T),P.prototype._parse=function(I,R){var L=this,V=this._builderOptions,U=null;return v.isFunction(R)?U=this.parse(I,R.apply(this)):v.isArray(R)||v.isSet(R)?v.forEachArray(R,function(j){return U=L.parse(I,j)},this):v.isMap(R)||v.isObject(R)?v.forEachObject(R,function(j,z){if(v.isFunction(z)&&(z=z.apply(L)),V.ignoreConverters||j.indexOf(V.convert.att)!==0)if(V.ignoreConverters||j.indexOf(V.convert.text)!==0)if(V.ignoreConverters||j.indexOf(V.convert.cdata)!==0)if(V.ignoreConverters||j.indexOf(V.convert.comment)!==0)if(V.ignoreConverters||j.indexOf(V.convert.ins)!==0){if(!((v.isArray(z)||v.isSet(z))&&v.isEmpty(z))){if((v.isMap(z)||v.isObject(z))&&v.isEmpty(z))U=L.element(I,void 0,L.sanitize(j))||U;else if(V.keepNullNodes||z!=null)if(v.isArray(z)||v.isSet(z))v.forEachArray(z,function(ne){var le={};le[j]=ne,U=L.parse(I,le)},L);else if(v.isMap(z)||v.isObject(z))($=L.element(I,void 0,L.sanitize(j)))&&(U=$,L.parse($,z));else if(z!=null&&z!==""){var $;($=L.element(I,void 0,L.sanitize(j)))&&(U=$,L.text($,L._decodeText(L.sanitize(z))))}else U=L.element(I,void 0,L.sanitize(j))||U}}else if(v.isString(z)){var K=z.indexOf(" "),X=K===-1?z:z.substr(0,K),ee=K===-1?"":z.substr(K+1);U=L.instruction(I,L.sanitize(X),L.sanitize(ee))||U}else v.isArray(z)||v.isSet(z)?v.forEachArray(z,function(ne){var le=ne.indexOf(" "),ce=le===-1?ne:ne.substr(0,le),ge=le===-1?"":ne.substr(le+1);U=L.instruction(I,L.sanitize(ce),L.sanitize(ge))||U},L):v.forEachObject(z,function(ne,le){return U=L.instruction(I,L.sanitize(ne),L.sanitize(le))||U},L);else v.isArray(z)||v.isSet(z)?v.forEachArray(z,function(ne){return U=L.comment(I,L.sanitize(ne))||U},L):U=L.comment(I,L.sanitize(z))||U;else v.isArray(z)||v.isSet(z)?v.forEachArray(z,function(ne){return U=L.cdata(I,L.sanitize(ne))||U},L):U=L.cdata(I,L.sanitize(z))||U;else U=v.isMap(z)||v.isObject(z)?L.parse(I,z):L.text(I,L._decodeText(L.sanitize(z)))||U;else if(j===V.convert.att){if(v.isArray(z)||v.isSet(z))throw new Error("Invalid attribute: "+z.toString()+". "+I._debugInfo());v.forEachObject(z,function(ne,le){U=L.attribute(I,void 0,L.sanitize(ne),L._decodeAttributeValue(L.sanitize(le)))||U})}else U=L.attribute(I,void 0,L.sanitize(j.substr(V.convert.att.length)),L._decodeAttributeValue(L.sanitize(z)))||U},this):(V.keepNullNodes||R!=null)&&(U=this.text(I,this._decodeText(this.sanitize(R)))||U),U||I},P}(l(75).BaseReader);i.ObjectReader=_},function(o,i,l){var c=l(39);o.exports=new c({explicit:[l(286),l(287),l(288)]})},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(g){this.level=0,this._builderOptions=g,this._writerOptions=g};i.BaseCBWriter=c},function(o,i,l){var c=l(16),g=l(8),v=l(116);o.exports=!c&&!g(function(){return Object.defineProperty(v("div"),"a",{get:function(){return 7}}).a!=7})},function(o,i,l){var c=l(11),g=l(13),v=c.document,_=g(v)&&g(v.createElement);o.exports=function(T){return _?v.createElement(T):{}}},function(o,i,l){var c=l(118),g=Function.toString;typeof c.inspectSource!="function"&&(c.inspectSource=function(v){return g.call(v)}),o.exports=c.inspectSource},function(o,i,l){var c=l(11),g=l(80),v=c["__core-js_shared__"]||g("__core-js_shared__",{});o.exports=v},function(o,i,l){var c=l(14),g=l(187),v=l(55),_=l(15);o.exports=function(T,P){for(var I=g(P),R=_.f,L=v.f,V=0;VL;)c(R,I=P[L++])&&(~v(V,I)||V.push(I));return V}},function(o,i,l){var c=l(24),g=l(26),v=l(83),_=function(T){return function(P,I,R){var L,V=c(P),U=g(V.length),j=v(R,U);if(T&&I!=I){for(;U>j;)if((L=V[j++])!=L)return!0}else for(;U>j;j++)if((T||j in V)&&V[j]===I)return T||j||0;return!T&&-1}};o.exports={includes:_(!0),indexOf:_(!1)}},function(o,i,l){var c=l(8),g=/#|\.prototype\./,v=function(R,L){var V=T[_(R)];return V==I||V!=P&&(typeof L=="function"?c(L):!!L)},_=v.normalize=function(R){return String(R).replace(g,".").toLowerCase()},T=v.data={},P=v.NATIVE="N",I=v.POLYFILL="P";o.exports=v},function(o,i,l){var c=l(86);o.exports=c&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},function(o,i,l){var c=l(5);i.f=c},function(o,i,l){var c=l(120),g=l(14),v=l(125),_=l(15).f;o.exports=function(T){var P=c.Symbol||(c.Symbol={});g(P,T)||_(P,T,{value:v.f(T)})}},function(o,i){o.exports=function(l){if(typeof l!="function")throw TypeError(String(l)+" is not a function");return l}},function(o,i,l){var c=l(13),g=l(59),v=l(5)("species");o.exports=function(_,T){var P;return g(_)&&(typeof(P=_.constructor)!="function"||P!==Array&&!g(P.prototype)?c(P)&&(P=P[v])===null&&(P=void 0):P=void 0),new(P===void 0?Array:P)(T===0?0:T)}},function(o,i,l){var c,g,v=l(11),_=l(193),T=v.process,P=T&&T.versions,I=P&&P.v8;I?g=(c=I.split("."))[0]+c[1]:_&&(!(c=_.match(/Edge\/(\d+)/))||c[1]>=74)&&(c=_.match(/Chrome\/(\d+)/))&&(g=c[1]),o.exports=g&&+g},function(o,i,l){var c=l(5),g=l(60),v=l(15),_=c("unscopables"),T=Array.prototype;T[_]==null&&v.f(T,_,{configurable:!0,value:g(null)}),o.exports=function(P){T[_][P]=!0}},function(o,i,l){var c,g,v,_=l(132),T=l(21),P=l(14),I=l(5),R=l(44),L=I("iterator"),V=!1;[].keys&&("next"in(v=[].keys())?(g=_(_(v)))!==Object.prototype&&(c=g):V=!0),c==null&&(c={}),R||P(c,L)||T(c,L,function(){return this}),o.exports={IteratorPrototype:c,BUGGY_SAFARI_ITERATORS:V}},function(o,i,l){var c=l(14),g=l(27),v=l(57),_=l(196),T=v("IE_PROTO"),P=Object.prototype;o.exports=_?Object.getPrototypeOf:function(I){return I=g(I),c(I,T)?I[T]:typeof I.constructor=="function"&&I instanceof I.constructor?I.constructor.prototype:I instanceof Object?P:null}},function(o,i,l){var c=l(18),g=l(197);o.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var v,_=!1,T={};try{(v=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(T,[]),_=T instanceof Array}catch{}return function(P,I){return c(P),g(I),_?v.call(P,I):P.__proto__=I,P}}():void 0)},function(o,i,l){var c=l(56),g=l(15),v=l(40);o.exports=function(_,T,P){var I=c(T);I in _?g.f(_,I,v(0,P)):_[I]=P}},function(o,i,l){var c=l(90),g=l(42),v=l(5)("toStringTag"),_=g(function(){return arguments}())=="Arguments";o.exports=c?g:function(T){var P,I,R;return T===void 0?"Undefined":T===null?"Null":typeof(I=function(L,V){try{return L[V]}catch{}}(P=Object(T),v))=="string"?I:_?g(P):(R=g(P))=="Object"&&typeof P.callee=="function"?"Arguments":R}},function(o,i,l){var c=l(18);o.exports=function(){var g=c(this),v="";return g.global&&(v+="g"),g.ignoreCase&&(v+="i"),g.multiline&&(v+="m"),g.dotAll&&(v+="s"),g.unicode&&(v+="u"),g.sticky&&(v+="y"),v}},function(o,i,l){var c=l(47),g=l(35),v=function(_){return function(T,P){var I,R,L=String(g(T)),V=c(P),U=L.length;return V<0||V>=U?_?"":void 0:(I=L.charCodeAt(V))<55296||I>56319||V+1===U||(R=L.charCodeAt(V+1))<56320||R>57343?_?L.charAt(V):I:_?L.slice(V,V+2):R-56320+(I-55296<<10)+65536}};o.exports={codeAt:v(!1),charAt:v(!0)}},function(o,i,l){var c=l(4),g=l(27),v=l(61);c({target:"Object",stat:!0,forced:l(8)(function(){v(1)})},{keys:function(_){return v(g(_))}})},function(o,i,l){var c=l(4),g=l(11),v=l(123),_=l(25),T=l(140),P=l(141),I=l(142),R=l(13),L=l(8),V=l(208),U=l(62),j=l(209);o.exports=function(z,$,K){var X=z.indexOf("Map")!==-1,ee=z.indexOf("Weak")!==-1,ne=X?"set":"add",le=g[z],ce=le&&le.prototype,ge=le,pe={},we=function(it){var Ge=ce[it];_(ce,it,it=="add"?function(Ke){return Ge.call(this,Ke===0?0:Ke),this}:it=="delete"?function(Ke){return!(ee&&!R(Ke))&&Ge.call(this,Ke===0?0:Ke)}:it=="get"?function(Ke){return ee&&!R(Ke)?void 0:Ge.call(this,Ke===0?0:Ke)}:it=="has"?function(Ke){return!(ee&&!R(Ke))&&Ge.call(this,Ke===0?0:Ke)}:function(Ke,qe){return Ge.call(this,Ke===0?0:Ke,qe),this})};if(v(z,typeof le!="function"||!(ee||ce.forEach&&!L(function(){new le().entries().next()}))))ge=K.getConstructor($,z,X,ne),T.REQUIRED=!0;else if(v(z,!0)){var Te=new ge,Ve=Te[ne](ee?{}:-0,1)!=Te,Pe=L(function(){Te.has(1)}),je=V(function(it){new le(it)}),Je=!ee&&L(function(){for(var it=new le,Ge=5;Ge--;)it[ne](Ge,Ge);return!it.has(-0)});je||((ge=$(function(it,Ge){I(it,ge,z);var Ke=j(new le,it,ge);return Ge!=null&&P(Ge,Ke[ne],Ke,X),Ke})).prototype=ce,ce.constructor=ge),(Pe||Je)&&(we("delete"),we("has"),X&&we("get")),(Je||Ve)&&we(ne),ee&&ce.clear&&delete ce.clear}return pe[z]=ge,c({global:!0,forced:ge!=le},pe),U(ge,z),ee||K.setStrong(ge,z,X),ge}},function(o,i,l){var c=l(45),g=l(13),v=l(14),_=l(15).f,T=l(58),P=l(204),I=T("meta"),R=0,L=Object.isExtensible||function(){return!0},V=function(j){_(j,I,{value:{objectID:"O"+ ++R,weakData:{}}})},U=o.exports={REQUIRED:!1,fastKey:function(j,z){if(!g(j))return typeof j=="symbol"?j:(typeof j=="string"?"S":"P")+j;if(!v(j,I)){if(!L(j))return"F";if(!z)return"E";V(j)}return j[I].objectID},getWeakData:function(j,z){if(!v(j,I)){if(!L(j))return!0;if(!z)return!1;V(j)}return j[I].weakData},onFreeze:function(j){return P&&U.REQUIRED&&L(j)&&!v(j,I)&&V(j),j}};c[I]=!0},function(o,i,l){var c=l(18),g=l(205),v=l(26),_=l(87),T=l(206),P=l(207),I=function(R,L){this.stopped=R,this.result=L};(o.exports=function(R,L,V,U,j){var z,$,K,X,ee,ne,le,ce=_(L,V,U?2:1);if(j)z=R;else{if(typeof($=T(R))!="function")throw TypeError("Target is not iterable");if(g($)){for(K=0,X=v(R.length);X>K;K++)if((ee=U?ce(c(le=R[K])[0],le[1]):ce(R[K]))&&ee instanceof I)return ee;return new I(!1)}z=$.call(R)}for(ne=z.next;!(le=ne.call(z)).done;)if(typeof(ee=P(z,ce,le.value,U))=="object"&&ee&&ee instanceof I)return ee;return new I(!1)}).stop=function(R){return new I(!0,R)}},function(o,i){o.exports=function(l,c,g){if(!(l instanceof c))throw TypeError("Incorrect "+(g?g+" ":"")+"invocation");return l}},function(o,i,l){var c=l(15).f,g=l(60),v=l(210),_=l(87),T=l(142),P=l(141),I=l(88),R=l(211),L=l(16),V=l(140).fastKey,U=l(43),j=U.set,z=U.getterFor;o.exports={getConstructor:function($,K,X,ee){var ne=$(function(pe,we){T(pe,ne,K),j(pe,{type:K,index:g(null),first:void 0,last:void 0,size:0}),L||(pe.size=0),we!=null&&P(we,pe[ee],pe,X)}),le=z(K),ce=function(pe,we,Te){var Ve,Pe,je=le(pe),Je=ge(pe,we);return Je?Je.value=Te:(je.last=Je={index:Pe=V(we,!0),key:we,value:Te,previous:Ve=je.last,next:void 0,removed:!1},je.first||(je.first=Je),Ve&&(Ve.next=Je),L?je.size++:pe.size++,Pe!=="F"&&(je.index[Pe]=Je)),pe},ge=function(pe,we){var Te,Ve=le(pe),Pe=V(we);if(Pe!=="F")return Ve.index[Pe];for(Te=Ve.first;Te;Te=Te.next)if(Te.key==we)return Te};return v(ne.prototype,{clear:function(){for(var pe=le(this),we=pe.index,Te=pe.first;Te;)Te.removed=!0,Te.previous&&(Te.previous=Te.previous.next=void 0),delete we[Te.index],Te=Te.next;pe.first=pe.last=void 0,L?pe.size=0:this.size=0},delete:function(pe){var we=le(this),Te=ge(this,pe);if(Te){var Ve=Te.next,Pe=Te.previous;delete we.index[Te.index],Te.removed=!0,Pe&&(Pe.next=Ve),Ve&&(Ve.previous=Pe),we.first==Te&&(we.first=Ve),we.last==Te&&(we.last=Pe),L?we.size--:this.size--}return!!Te},forEach:function(pe){for(var we,Te=le(this),Ve=_(pe,arguments.length>1?arguments[1]:void 0,3);we=we?we.next:Te.first;)for(Ve(we.value,we.key,this);we&&we.removed;)we=we.previous},has:function(pe){return!!ge(this,pe)}}),v(ne.prototype,X?{get:function(pe){var we=ge(this,pe);return we&&we.value},set:function(pe,we){return ce(this,pe===0?0:pe,we)}}:{add:function(pe){return ce(this,pe=pe===0?0:pe,pe)}}),L&&c(ne.prototype,"size",{get:function(){return le(this).size}}),ne},setStrong:function($,K,X){var ee=K+" Iterator",ne=z(K),le=z(ee);I($,K,function(ce,ge){j(this,{type:ee,target:ce,state:ne(ce),kind:ge,last:void 0})},function(){for(var ce=le(this),ge=ce.kind,pe=ce.last;pe&&pe.removed;)pe=pe.previous;return ce.target&&(ce.last=pe=pe?pe.next:ce.state.first)?ge=="keys"?{value:pe.key,done:!1}:ge=="values"?{value:pe.value,done:!1}:{value:[pe.key,pe.value],done:!1}:(ce.target=void 0,{value:void 0,done:!0})},X?"entries":"values",!X,!0),R(K)}}},function(o,i,l){var c,g=l(4),v=l(55).f,_=l(26),T=l(222),P=l(35),I=l(224),R=l(44),L="".endsWith,V=Math.min,U=I("endsWith");g({target:"String",proto:!0,forced:!!(R||U||(c=v(String.prototype,"endsWith"),!c||c.writable))&&!U},{endsWith:function(j){var z=String(P(this));T(j);var $=arguments.length>1?arguments[1]:void 0,K=_(z.length),X=$===void 0?K:V(_($),K),ee=String(j);return L?L.call(z,ee,X):z.slice(X-ee.length,X)===ee}})},function(o,i,l){(function(c){/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */var g=l(229),v=l(230),_=l(231);function T(){return I.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function P(et,Me){if(T()=T())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+T().toString(16)+" bytes");return 0|et}function z(et,Me){if(I.isBuffer(et))return et.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(et)||et instanceof ArrayBuffer))return et.byteLength;typeof et!="string"&&(et=""+et);var ct=et.length;if(ct===0)return 0;for(var st=!1;;)switch(Me){case"ascii":case"latin1":case"binary":return ct;case"utf8":case"utf-8":case void 0:return Dn(et).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*ct;case"hex":return ct>>>1;case"base64":return Nn(et).length;default:if(st)return Dn(et).length;Me=(""+Me).toLowerCase(),st=!0}}function $(et,Me,ct){var st=!1;if((Me===void 0||Me<0)&&(Me=0),Me>this.length||((ct===void 0||ct>this.length)&&(ct=this.length),ct<=0)||(ct>>>=0)<=(Me>>>=0))return"";for(et||(et="utf8");;)switch(et){case"hex":return Je(this,Me,ct);case"utf8":case"utf-8":return Ve(this,Me,ct);case"ascii":return Pe(this,Me,ct);case"latin1":case"binary":return je(this,Me,ct);case"base64":return Te(this,Me,ct);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return it(this,Me,ct);default:if(st)throw new TypeError("Unknown encoding: "+et);et=(et+"").toLowerCase(),st=!0}}function K(et,Me,ct){var st=et[Me];et[Me]=et[ct],et[ct]=st}function X(et,Me,ct,st,yt){if(et.length===0)return-1;if(typeof ct=="string"?(st=ct,ct=0):ct>2147483647?ct=2147483647:ct<-2147483648&&(ct=-2147483648),ct=+ct,isNaN(ct)&&(ct=yt?0:et.length-1),ct<0&&(ct=et.length+ct),ct>=et.length){if(yt)return-1;ct=et.length-1}else if(ct<0){if(!yt)return-1;ct=0}if(typeof Me=="string"&&(Me=I.from(Me,st)),I.isBuffer(Me))return Me.length===0?-1:ee(et,Me,ct,st,yt);if(typeof Me=="number")return Me&=255,I.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?yt?Uint8Array.prototype.indexOf.call(et,Me,ct):Uint8Array.prototype.lastIndexOf.call(et,Me,ct):ee(et,[Me],ct,st,yt);throw new TypeError("val must be string, number or Buffer")}function ee(et,Me,ct,st,yt){var St,Pt=1,mn=et.length,Pn=Me.length;if(st!==void 0&&((st=String(st).toLowerCase())==="ucs2"||st==="ucs-2"||st==="utf16le"||st==="utf-16le")){if(et.length<2||Me.length<2)return-1;Pt=2,mn/=2,Pn/=2,ct/=2}function Hn(gn,Bt){return Pt===1?gn[Bt]:gn.readUInt16BE(Bt*Pt)}if(yt){var Kn=-1;for(St=ct;Stmn&&(ct=mn-Pn),St=ct;St>=0;St--){for(var Dt=!0,Vt=0;Vtyt&&(st=yt):st=yt;var St=Me.length;if(St%2!=0)throw new TypeError("Invalid hex string");st>St/2&&(st=St/2);for(var Pt=0;Pt>8,Pn=Pt%256,Hn.push(Pn),Hn.push(mn);return Hn}(Me,et.length-ct),et,ct,st)}function Te(et,Me,ct){return Me===0&&ct===et.length?g.fromByteArray(et):g.fromByteArray(et.slice(Me,ct))}function Ve(et,Me,ct){ct=Math.min(et.length,ct);for(var st=[],yt=Me;yt239?4:Hn>223?3:Hn>191?2:1;if(yt+Dt<=ct)switch(Dt){case 1:Hn<128&&(Kn=Hn);break;case 2:(192&(St=et[yt+1]))==128&&(Pn=(31&Hn)<<6|63&St)>127&&(Kn=Pn);break;case 3:St=et[yt+1],Pt=et[yt+2],(192&St)==128&&(192&Pt)==128&&(Pn=(15&Hn)<<12|(63&St)<<6|63&Pt)>2047&&(Pn<55296||Pn>57343)&&(Kn=Pn);break;case 4:St=et[yt+1],Pt=et[yt+2],mn=et[yt+3],(192&St)==128&&(192&Pt)==128&&(192&mn)==128&&(Pn=(15&Hn)<<18|(63&St)<<12|(63&Pt)<<6|63&mn)>65535&&Pn<1114112&&(Kn=Pn)}Kn===null?(Kn=65533,Dt=1):Kn>65535&&(Kn-=65536,st.push(Kn>>>10&1023|55296),Kn=56320|1023&Kn),st.push(Kn),yt+=Dt}return function(Vt){var gn=Vt.length;if(gn<=4096)return String.fromCharCode.apply(String,Vt);for(var Bt="",rn=0;rn0&&(et=this.toString("hex",0,Me).match(/.{2}/g).join(" "),this.length>Me&&(et+=" ... ")),""},I.prototype.compare=function(et,Me,ct,st,yt){if(!I.isBuffer(et))throw new TypeError("Argument must be a Buffer");if(Me===void 0&&(Me=0),ct===void 0&&(ct=et?et.length:0),st===void 0&&(st=0),yt===void 0&&(yt=this.length),Me<0||ct>et.length||st<0||yt>this.length)throw new RangeError("out of range index");if(st>=yt&&Me>=ct)return 0;if(st>=yt)return-1;if(Me>=ct)return 1;if(this===et)return 0;for(var St=(yt>>>=0)-(st>>>=0),Pt=(ct>>>=0)-(Me>>>=0),mn=Math.min(St,Pt),Pn=this.slice(st,yt),Hn=et.slice(Me,ct),Kn=0;Knyt)&&(ct=yt),et.length>0&&(ct<0||Me<0)||Me>this.length)throw new RangeError("Attempt to write outside buffer bounds");st||(st="utf8");for(var St=!1;;)switch(st){case"hex":return ne(this,et,Me,ct);case"utf8":case"utf-8":return le(this,et,Me,ct);case"ascii":return ce(this,et,Me,ct);case"latin1":case"binary":return ge(this,et,Me,ct);case"base64":return pe(this,et,Me,ct);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return we(this,et,Me,ct);default:if(St)throw new TypeError("Unknown encoding: "+st);st=(""+st).toLowerCase(),St=!0}},I.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Pe(et,Me,ct){var st="";ct=Math.min(et.length,ct);for(var yt=Me;ytst)&&(ct=st);for(var yt="",St=Me;Stct)throw new RangeError("Trying to access beyond buffer length")}function Ke(et,Me,ct,st,yt,St){if(!I.isBuffer(et))throw new TypeError('"buffer" argument must be a Buffer instance');if(Me>yt||Meet.length)throw new RangeError("Index out of range")}function qe(et,Me,ct,st){Me<0&&(Me=65535+Me+1);for(var yt=0,St=Math.min(et.length-ct,2);yt>>8*(st?yt:1-yt)}function ut(et,Me,ct,st){Me<0&&(Me=4294967295+Me+1);for(var yt=0,St=Math.min(et.length-ct,4);yt>>8*(st?yt:3-yt)&255}function wt(et,Me,ct,st,yt,St){if(ct+st>et.length)throw new RangeError("Index out of range");if(ct<0)throw new RangeError("Index out of range")}function Et(et,Me,ct,st,yt){return yt||wt(et,0,ct,4),v.write(et,Me,ct,st,23,4),ct+4}function qt(et,Me,ct,st,yt){return yt||wt(et,0,ct,8),v.write(et,Me,ct,st,52,8),ct+8}I.prototype.slice=function(et,Me){var ct,st=this.length;if((et=~~et)<0?(et+=st)<0&&(et=0):et>st&&(et=st),(Me=Me===void 0?st:~~Me)<0?(Me+=st)<0&&(Me=0):Me>st&&(Me=st),Me0&&(yt*=256);)st+=this[et+--Me]*yt;return st},I.prototype.readUInt8=function(et,Me){return Me||Ge(et,1,this.length),this[et]},I.prototype.readUInt16LE=function(et,Me){return Me||Ge(et,2,this.length),this[et]|this[et+1]<<8},I.prototype.readUInt16BE=function(et,Me){return Me||Ge(et,2,this.length),this[et]<<8|this[et+1]},I.prototype.readUInt32LE=function(et,Me){return Me||Ge(et,4,this.length),(this[et]|this[et+1]<<8|this[et+2]<<16)+16777216*this[et+3]},I.prototype.readUInt32BE=function(et,Me){return Me||Ge(et,4,this.length),16777216*this[et]+(this[et+1]<<16|this[et+2]<<8|this[et+3])},I.prototype.readIntLE=function(et,Me,ct){et|=0,Me|=0,ct||Ge(et,Me,this.length);for(var st=this[et],yt=1,St=0;++St=(yt*=128)&&(st-=Math.pow(2,8*Me)),st},I.prototype.readIntBE=function(et,Me,ct){et|=0,Me|=0,ct||Ge(et,Me,this.length);for(var st=Me,yt=1,St=this[et+--st];st>0&&(yt*=256);)St+=this[et+--st]*yt;return St>=(yt*=128)&&(St-=Math.pow(2,8*Me)),St},I.prototype.readInt8=function(et,Me){return Me||Ge(et,1,this.length),128&this[et]?-1*(255-this[et]+1):this[et]},I.prototype.readInt16LE=function(et,Me){Me||Ge(et,2,this.length);var ct=this[et]|this[et+1]<<8;return 32768&ct?4294901760|ct:ct},I.prototype.readInt16BE=function(et,Me){Me||Ge(et,2,this.length);var ct=this[et+1]|this[et]<<8;return 32768&ct?4294901760|ct:ct},I.prototype.readInt32LE=function(et,Me){return Me||Ge(et,4,this.length),this[et]|this[et+1]<<8|this[et+2]<<16|this[et+3]<<24},I.prototype.readInt32BE=function(et,Me){return Me||Ge(et,4,this.length),this[et]<<24|this[et+1]<<16|this[et+2]<<8|this[et+3]},I.prototype.readFloatLE=function(et,Me){return Me||Ge(et,4,this.length),v.read(this,et,!0,23,4)},I.prototype.readFloatBE=function(et,Me){return Me||Ge(et,4,this.length),v.read(this,et,!1,23,4)},I.prototype.readDoubleLE=function(et,Me){return Me||Ge(et,8,this.length),v.read(this,et,!0,52,8)},I.prototype.readDoubleBE=function(et,Me){return Me||Ge(et,8,this.length),v.read(this,et,!1,52,8)},I.prototype.writeUIntLE=function(et,Me,ct,st){et=+et,Me|=0,ct|=0,st||Ke(this,et,Me,ct,Math.pow(2,8*ct)-1,0);var yt=1,St=0;for(this[Me]=255&et;++St=0&&(St*=256);)this[Me+yt]=et/St&255;return Me+ct},I.prototype.writeUInt8=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,1,255,0),I.TYPED_ARRAY_SUPPORT||(et=Math.floor(et)),this[Me]=255&et,Me+1},I.prototype.writeUInt16LE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,2,65535,0),I.TYPED_ARRAY_SUPPORT?(this[Me]=255&et,this[Me+1]=et>>>8):qe(this,et,Me,!0),Me+2},I.prototype.writeUInt16BE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,2,65535,0),I.TYPED_ARRAY_SUPPORT?(this[Me]=et>>>8,this[Me+1]=255&et):qe(this,et,Me,!1),Me+2},I.prototype.writeUInt32LE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,4,4294967295,0),I.TYPED_ARRAY_SUPPORT?(this[Me+3]=et>>>24,this[Me+2]=et>>>16,this[Me+1]=et>>>8,this[Me]=255&et):ut(this,et,Me,!0),Me+4},I.prototype.writeUInt32BE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,4,4294967295,0),I.TYPED_ARRAY_SUPPORT?(this[Me]=et>>>24,this[Me+1]=et>>>16,this[Me+2]=et>>>8,this[Me+3]=255&et):ut(this,et,Me,!1),Me+4},I.prototype.writeIntLE=function(et,Me,ct,st){if(et=+et,Me|=0,!st){var yt=Math.pow(2,8*ct-1);Ke(this,et,Me,ct,yt-1,-yt)}var St=0,Pt=1,mn=0;for(this[Me]=255&et;++St>0)-mn&255;return Me+ct},I.prototype.writeIntBE=function(et,Me,ct,st){if(et=+et,Me|=0,!st){var yt=Math.pow(2,8*ct-1);Ke(this,et,Me,ct,yt-1,-yt)}var St=ct-1,Pt=1,mn=0;for(this[Me+St]=255&et;--St>=0&&(Pt*=256);)et<0&&mn===0&&this[Me+St+1]!==0&&(mn=1),this[Me+St]=(et/Pt>>0)-mn&255;return Me+ct},I.prototype.writeInt8=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,1,127,-128),I.TYPED_ARRAY_SUPPORT||(et=Math.floor(et)),et<0&&(et=255+et+1),this[Me]=255&et,Me+1},I.prototype.writeInt16LE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,2,32767,-32768),I.TYPED_ARRAY_SUPPORT?(this[Me]=255&et,this[Me+1]=et>>>8):qe(this,et,Me,!0),Me+2},I.prototype.writeInt16BE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,2,32767,-32768),I.TYPED_ARRAY_SUPPORT?(this[Me]=et>>>8,this[Me+1]=255&et):qe(this,et,Me,!1),Me+2},I.prototype.writeInt32LE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,4,2147483647,-2147483648),I.TYPED_ARRAY_SUPPORT?(this[Me]=255&et,this[Me+1]=et>>>8,this[Me+2]=et>>>16,this[Me+3]=et>>>24):ut(this,et,Me,!0),Me+4},I.prototype.writeInt32BE=function(et,Me,ct){return et=+et,Me|=0,ct||Ke(this,et,Me,4,2147483647,-2147483648),et<0&&(et=4294967295+et+1),I.TYPED_ARRAY_SUPPORT?(this[Me]=et>>>24,this[Me+1]=et>>>16,this[Me+2]=et>>>8,this[Me+3]=255&et):ut(this,et,Me,!1),Me+4},I.prototype.writeFloatLE=function(et,Me,ct){return Et(this,et,Me,!0,ct)},I.prototype.writeFloatBE=function(et,Me,ct){return Et(this,et,Me,!1,ct)},I.prototype.writeDoubleLE=function(et,Me,ct){return qt(this,et,Me,!0,ct)},I.prototype.writeDoubleBE=function(et,Me,ct){return qt(this,et,Me,!1,ct)},I.prototype.copy=function(et,Me,ct,st){if(ct||(ct=0),st||st===0||(st=this.length),Me>=et.length&&(Me=et.length),Me||(Me=0),st>0&&st=this.length)throw new RangeError("sourceStart out of bounds");if(st<0)throw new RangeError("sourceEnd out of bounds");st>this.length&&(st=this.length),et.length-Me=0;--yt)et[yt+Me]=this[yt+ct];else if(St<1e3||!I.TYPED_ARRAY_SUPPORT)for(yt=0;yt>>=0,ct=ct===void 0?this.length:ct>>>0,et||(et=0),typeof et=="number")for(St=Me;St55295&&ct<57344){if(!yt){if(ct>56319){(Me-=3)>-1&&St.push(239,191,189);continue}if(Pt+1===st){(Me-=3)>-1&&St.push(239,191,189);continue}yt=ct;continue}if(ct<56320){(Me-=3)>-1&&St.push(239,191,189),yt=ct;continue}ct=65536+(yt-55296<<10|ct-56320)}else yt&&(Me-=3)>-1&&St.push(239,191,189);if(yt=null,ct<128){if((Me-=1)<0)break;St.push(ct)}else if(ct<2048){if((Me-=2)<0)break;St.push(ct>>6|192,63&ct|128)}else if(ct<65536){if((Me-=3)<0)break;St.push(ct>>12|224,ct>>6&63|128,63&ct|128)}else{if(!(ct<1114112))throw new Error("Invalid code point");if((Me-=4)<0)break;St.push(ct>>18|240,ct>>12&63|128,ct>>6&63|128,63&ct|128)}}return St}function Nn(et){return g.toByteArray(function(Me){if((Me=function(ct){return ct.trim?ct.trim():ct.replace(/^\s+|\s+$/g,"")}(Me).replace($t,"")).length<2)return"";for(;Me.length%4!=0;)Me+="=";return Me}(et))}function xn(et,Me,ct,st){for(var yt=0;yt=Me.length||yt>=et.length);++yt)Me[yt+ct]=et[yt];return yt}}).call(this,l(78))},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),i.isASCIIByte=function(c){return c>=0&&c<=127}},function(o,i,l){var c=this&&this.__read||function(v,_){var T=typeof Symbol=="function"&&v[Symbol.iterator];if(!T)return v;var P,I,R=T.call(v),L=[];try{for(;(_===void 0||_-- >0)&&!(P=R.next()).done;)L.push(P.value)}catch(V){I={error:V}}finally{try{P&&!P.done&&(T=R.return)&&T.call(R)}finally{if(I)throw I.error}}return L},g=this&&this.__spread||function(){for(var v=[],_=0;_=65&&T<=90&&(v[_]=T+32)}},i.byteUppercase=function(v){for(var _=0;_=97&&T<=122&&(v[_]=T-32)}},i.byteCaseInsensitiveMatch=function(v,_){if(v.length!==_.length)return!1;for(var T=0;T=65&&P<=90&&(P+=32),I>=65&&I<=90&&(I+=32),P!==I)return!1}return!0},i.startsWith=function(v,_){for(var T=0;;){if(T>=v.length)return!1;if(T>=_.length)return!0;if(v[T]!==_[T])return!1;T++}},i.byteLessThan=function(v,_){for(var T=0;;){if(T>=v.length)return!1;if(T>=_.length)return!0;var P=v[T],I=_[T];if(PI)return!1;T++}},i.isomorphicDecode=function(v){return String.fromCodePoint.apply(String,g(v))}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(6),g=l(7),v=l(0),_=l(12),T=function(){function P(I){this._associatedDocument=I||c.dom.window.document}return P.prototype.createDocumentType=function(I,R,L){return v.namespace_validate(I),v.create_documentType(this._associatedDocument,I,R,L)},P.prototype.createDocument=function(I,R,L){L===void 0&&(L=null);var V=v.create_xmlDocument(),U=null;return R&&(U=v.document_internalCreateElementNS(V,I,R)),L&&V.appendChild(L),U&&V.appendChild(U),V._origin=this._associatedDocument._origin,I===g.namespace.HTML?V._contentType="application/xhtml+xml":I===g.namespace.SVG?V._contentType="image/svg+xml":V._contentType="application/xml",V},P.prototype.createHTMLDocument=function(I){var R=v.create_document();R._type="html",R._contentType="text/html",R.appendChild(v.create_documentType(R,"html","",""));var L=v.element_createAnElement(R,"html",g.namespace.HTML);R.appendChild(L);var V=v.element_createAnElement(R,"head",g.namespace.HTML);if(L.appendChild(V),I!==void 0){var U=v.element_createAnElement(R,"title",g.namespace.HTML);V.appendChild(U);var j=v.create_text(R,I);U.appendChild(j)}var z=v.element_createAnElement(R,"body",g.namespace.HTML);return L.appendChild(z),R._origin=this._associatedDocument._origin,R},P.prototype.hasFeature=function(){return!0},P._create=function(I){return new P(I)},P}();i.DOMImplementationImpl=T,_.idl_defineConst(T.prototype,"_ID","@oozcitak/dom")},function(o,i,l){var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(70),_=l(1),T=l(0),P=function(I){function R(){var L=I.call(this)||this;return L._signalSlots=new Set,L._mutationObserverMicrotaskQueued=!1,L._mutationObservers=new Set,L._iteratorList=new _.FixedSizeSet,L._associatedDocument=T.create_document(),L}return g(R,I),Object.defineProperty(R.prototype,"document",{get:function(){return this._associatedDocument},enumerable:!0,configurable:!0}),Object.defineProperty(R.prototype,"event",{get:function(){return this._currentEvent},enumerable:!0,configurable:!0}),R._create=function(){return new R},R}(v.EventTargetImpl);i.WindowImpl=P},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=function(){function v(){}return v.isNode=function(_){return!!_&&_._nodeType!==void 0},v.isDocumentNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.Document},v.isDocumentTypeNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.DocumentType},v.isDocumentFragmentNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.DocumentFragment},v.isAttrNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.Attribute},v.isCharacterDataNode=function(_){if(!v.isNode(_))return!1;var T=_._nodeType;return T===c.NodeType.Text||T===c.NodeType.ProcessingInstruction||T===c.NodeType.Comment||T===c.NodeType.CData},v.isTextNode=function(_){return v.isNode(_)&&(_._nodeType===c.NodeType.Text||_._nodeType===c.NodeType.CData)},v.isExclusiveTextNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.Text},v.isCDATASectionNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.CData},v.isCommentNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.Comment},v.isProcessingInstructionNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.ProcessingInstruction},v.isElementNode=function(_){return v.isNode(_)&&_._nodeType===c.NodeType.Element},v.isCustomElementNode=function(_){return v.isElementNode(_)&&_._customElementState==="custom"},v.isShadowRoot=function(_){return!!_&&_.host!==void 0},v.isMouseEvent=function(_){return!!_&&_.screenX!==void 0&&_.screenY!=null},v.isSlotable=function(_){return!!_&&_._name!==void 0&&_._assignedSlot!==void 0&&(v.isTextNode(_)||v.isElementNode(_))},v.isSlot=function(_){return!!_&&_._name!==void 0&&_._assignedNodes!==void 0&&v.isElementNode(_)},v.isWindow=function(_){return!!_&&_.navigator!==void 0},v.isEventListener=function(_){return!!_&&_.handleEvent!==void 0},v.isRegisteredObserver=function(_){return!!_&&_.observer!==void 0&&_.options!==void 0},v.isTransientRegisteredObserver=function(_){return!!_&&_.source!==void 0&&v.isRegisteredObserver(_)},v}();i.Guard=g},function(o,i,l){var c,g=this&&this.__extends||(c=function(_,T){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(P,I){P.__proto__=I}||function(P,I){for(var R in I)I.hasOwnProperty(R)&&(P[R]=I[R])})(_,T)},function(_,T){function P(){this.constructor=_}c(_,T),_.prototype=T===null?Object.create(T):(P.prototype=T.prototype,new P)});Object.defineProperty(i,"__esModule",{value:!0});var v=function(_){function T(){return _.call(this)||this}return g(T,_),T}(l(98).DocumentImpl);i.XMLDocumentImpl=v},function(o,i,l){var c=this&&this.__values||function(st){var yt=typeof Symbol=="function"&&Symbol.iterator,St=yt&&st[yt],Pt=0;if(St)return St.call(st);if(st&&typeof st.length=="number")return{next:function(){return st&&Pt>=st.length&&(st=void 0),{value:st&&st[Pt++],done:!st}}};throw new TypeError(yt?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(st,yt){var St=typeof Symbol=="function"&&st[Symbol.iterator];if(!St)return st;var Pt,mn,Pn=St.call(st),Hn=[];try{for(;(yt===void 0||yt-- >0)&&!(Pt=Pn.next()).done;)Hn.push(Pt.value)}catch(Kn){mn={error:Kn}}finally{try{Pt&&!Pt.done&&(St=Pn.return)&&St.call(Pn)}finally{if(mn)throw mn.error}}return Hn};Object.defineProperty(i,"__esModule",{value:!0});var v,_=l(1),T=l(243),P=l(7),I=l(244),R={ftp:21,file:null,http:80,https:443,ws:80,wss:443},L=/[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,V=/[ "<>`]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,U=/[ "<>`#?{}]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,j=/[ "<>`#?{}/:;=@\[\]\\\^\|]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,z=/[0-9A-Za-z!\$&-\/:;=\?@_~\xA0-\uD7FF\uE000-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uD83E\uD840-\uD87E\uD880-\uD8BE\uD8C0-\uD8FE\uD900-\uD93E\uD940-\uD97E\uD980-\uD9BE\uD9C0-\uD9FE\uDA00-\uDA3E\uDA40-\uDA7E\uDA80-\uDABE\uDAC0-\uDAFE\uDB00-\uDB3E\uDB40-\uDB7E\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDC00-\uDFFD]/,$=/[\0\t\f\r #%/:?@\[\\\]]/;function K(st){v!==void 0&&v.call(null,"Validation Error: "+st)}function X(){return{scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null}}function ee(st){return st in R}function ne(st){return ee(st.scheme)}function le(st){return R[st]||null}function ce(st){return st.username!==""||st.password!==""}function ge(st,yt){var St,Pt;yt===void 0&&(yt=!1);var mn=st.scheme+":";if(st.host!==null?(mn+="//",ce(st)&&(mn+=st.username,st.password!==""&&(mn+=":"+st.password),mn+="@"),mn+=pe(st.host),st.port!==null&&(mn+=":"+st.port)):st.host===null&&st.scheme==="file"&&(mn+="//"),st._cannotBeABaseURLFlag)mn+=st.path[0];else try{for(var Pn=c(st.path),Hn=Pn.next();!Hn.done;Hn=Pn.next())mn+="/"+Hn.value}catch(Kn){St={error:Kn}}finally{try{Hn&&!Hn.done&&(Pt=Pn.return)&&Pt.call(Pn)}finally{if(St)throw St.error}}return st.query!==null&&(mn+="?"+st.query),yt||st.fragment===null||(mn+="#"+st.fragment),mn}function pe(st){return _.isNumber(st)?we(st):_.isArray(st)?"["+Te(st)+"]":st}function we(st){for(var yt="",St=st,Pt=1;Pt<=4;Pt++)yt=(St%256).toString()+yt,Pt!==4&&(yt="."+yt),St=Math.floor(St/256);return yt}function Te(st){for(var yt="",St=null,Pt=-1,mn=0,Pn=0,Hn=0;Hn<8;Hn++)if(st[Hn]===0){mn=1;for(var Kn=Hn+1;Kn<8&&st[Kn]===0;Kn++)mn++;mn>Pn&&(Pn=mn,Pt=Hn)}Pn>1&&(St=Pt);for(var Dt=!1,Vt=0;Vt<8;Vt++)Dt&&st[Vt]===0||(Dt&&(Dt=!1),St!==Vt?(yt+=st[Vt].toString(16),Vt!==7&&(yt+=":")):(yt+=Vt===0?"::":":",Dt=!0));return yt}function Ve(st,yt,St,Pt,mn){var Pn,Hn,Kn,Dt;if(Pt===void 0){Pt={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null};var Vt=/^[\u0000-\u001F\u0020]+/,gn=/[\u0000-\u001F\u0020]+$/;(Vt.test(st)||gn.test(st))&&K("Input string contains leading or trailing control characters or space."),st=(st=st.replace(Vt,"")).replace(gn,"")}var Bt=/[\u0009\u000A\u000D]/g;Bt.test(st)&&K("Input string contains tab or newline characters."),st=st.replace(Bt,"");var rn=mn===void 0?T.ParserState.SchemeStart:mn;yt===void 0&&(yt=null);for(var Zn=St===void 0||St==="replacement"||St==="UTF-16BE"||St==="UTF-16LE"?"UTF-8":St,Ut="",Ir=!1,br=!1,jr=!1,An=new _.StringWalker(st);;){switch(rn){case T.ParserState.SchemeStart:if(P.codePoint.ASCIIAlpha.test(An.c()))Ut+=An.c().toLowerCase(),rn=T.ParserState.Scheme;else{if(mn!==void 0)return K("Invalid scheme start character."),null;rn=T.ParserState.NoScheme,An.pointer--}break;case T.ParserState.Scheme:if(P.codePoint.ASCIIAlphanumeric.test(An.c())||An.c()==="+"||An.c()==="-"||An.c()===".")Ut+=An.c().toLowerCase();else{if(An.c()!==":"){if(mn===void 0){Ut="",rn=T.ParserState.NoScheme,An.pointer=0;continue}return K("Invalid input string."),null}if(mn!==void 0&&(ee(Pt.scheme)&&!ee(Ut)||!ee(Pt.scheme)&&ee(Ut)||(ce(Pt)||Pt.port!==null)&&Ut==="file"||Pt.scheme==="file"&&(Pt.host===""||Pt.host===null)))return Pt;if(Pt.scheme=Ut,mn!==void 0)return Pt.port===le(Pt.scheme)&&(Pt.port=null),Pt;Ut="",Pt.scheme==="file"?(An.remaining().startsWith("//")||K("Invalid file URL scheme, '//' expected."),rn=T.ParserState.File):ne(Pt)&&yt!==null&&yt.scheme===Pt.scheme?rn=T.ParserState.SpecialRelativeOrAuthority:ne(Pt)?rn=T.ParserState.SpecialAuthoritySlashes:An.remaining().startsWith("/")?(rn=T.ParserState.PathOrAuthority,An.pointer++):(Pt._cannotBeABaseURLFlag=!0,Pt.path.push(""),rn=T.ParserState.CannotBeABaseURLPath)}break;case T.ParserState.NoScheme:if(yt===null||yt._cannotBeABaseURLFlag&&An.c()!=="#")return K("Invalid input string."),null;yt._cannotBeABaseURLFlag&&An.c()==="#"?(Pt.scheme=yt.scheme,Pt.path=P.list.clone(yt.path),Pt.query=yt.query,Pt.fragment="",Pt._cannotBeABaseURLFlag=!0,rn=T.ParserState.Fragment):yt.scheme!=="file"?(rn=T.ParserState.Relative,An.pointer--):(rn=T.ParserState.File,An.pointer--);break;case T.ParserState.SpecialRelativeOrAuthority:An.c()==="/"&&An.remaining().startsWith("/")?(rn=T.ParserState.SpecialAuthorityIgnoreSlashes,An.pointer++):(K("Invalid input string."),rn=T.ParserState.Relative,An.pointer--);break;case T.ParserState.PathOrAuthority:An.c()==="/"?rn=T.ParserState.Authority:(rn=T.ParserState.Path,An.pointer--);break;case T.ParserState.Relative:if(yt===null)throw new Error("Invalid parser state. Base URL is null.");switch(Pt.scheme=yt.scheme,An.c()){case"":Pt.username=yt.username,Pt.password=yt.password,Pt.host=yt.host,Pt.port=yt.port,Pt.path=P.list.clone(yt.path),Pt.query=yt.query;break;case"/":rn=T.ParserState.RelativeSlash;break;case"?":Pt.username=yt.username,Pt.password=yt.password,Pt.host=yt.host,Pt.port=yt.port,Pt.path=P.list.clone(yt.path),Pt.query="",rn=T.ParserState.Query;break;case"#":Pt.username=yt.username,Pt.password=yt.password,Pt.host=yt.host,Pt.port=yt.port,Pt.path=P.list.clone(yt.path),Pt.query=yt.query,Pt.fragment="",rn=T.ParserState.Fragment;break;default:ne(Pt)&&An.c()==="\\"?(K("Invalid input string."),rn=T.ParserState.RelativeSlash):(Pt.username=yt.username,Pt.password=yt.password,Pt.host=yt.host,Pt.port=yt.port,Pt.path=P.list.clone(yt.path),Pt.path.length!==0&&Pt.path.splice(Pt.path.length-1,1),rn=T.ParserState.Path,An.pointer--)}break;case T.ParserState.RelativeSlash:if(!ne(Pt)||An.c()!=="/"&&An.c()!=="\\")if(An.c()==="/")rn=T.ParserState.Authority;else{if(yt===null)throw new Error("Invalid parser state. Base URL is null.");Pt.username=yt.username,Pt.password=yt.password,Pt.host=yt.host,Pt.port=yt.port,rn=T.ParserState.Path,An.pointer--}else An.c()==="\\"&&K("Invalid input string."),rn=T.ParserState.SpecialAuthorityIgnoreSlashes;break;case T.ParserState.SpecialAuthoritySlashes:An.c()==="/"&&An.remaining().startsWith("/")?(rn=T.ParserState.SpecialAuthorityIgnoreSlashes,An.pointer++):(K("Expected '//'."),rn=T.ParserState.SpecialAuthorityIgnoreSlashes,An.pointer--);break;case T.ParserState.SpecialAuthorityIgnoreSlashes:An.c()!=="/"&&An.c()!=="\\"?(rn=T.ParserState.Authority,An.pointer--):K("Unexpected '/' or '\\'.");break;case T.ParserState.Authority:if(An.c()==="@"){K("Unexpected '@'."),Ir&&(Ut="%40"+Ut),Ir=!0;try{for(var hr=(Pn=void 0,c(Ut)),Cr=hr.next();!Cr.done;Cr=hr.next()){var wr=Cr.value;if(wr!==":"||jr){var Fr=xn(wr,j);jr?Pt.password+=Fr:Pt.username+=Fr}else jr=!0}}catch(T0){Pn={error:T0}}finally{try{Cr&&!Cr.done&&(Hn=hr.return)&&Hn.call(hr)}finally{if(Pn)throw Pn.error}}Ut=""}else if(An.c()===""||An.c()==="/"||An.c()==="?"||An.c()==="#"||ne(Pt)&&An.c()==="\\"){if(Ir&&Ut==="")return K("Invalid input string."),null;An.pointer-=Ut.length+1,Ut="",rn=T.ParserState.Host}else Ut+=An.c();break;case T.ParserState.Host:case T.ParserState.Hostname:if(mn!==void 0&&Pt.scheme==="file")An.pointer--,rn=T.ParserState.FileHost;else if(An.c()!==":"||br)if(An.c()===""||An.c()==="/"||An.c()==="?"||An.c()==="#"||ne(Pt)&&An.c()==="\\"){if(An.pointer--,ne(Pt)&&Ut==="")return K("Invalid input string."),null;if(mn!==void 0&&Ut===""&&(ce(Pt)||Pt.port!==null))return K("Invalid input string."),Pt;if((Kr=qe(Ut,!ne(Pt)))===null)return null;if(Pt.host=Kr,Ut="",rn=T.ParserState.PathStart,mn!==void 0)return Pt}else An.c()==="["&&(br=!0),An.c()==="]"&&(br=!1),Ut+=An.c();else{if(Ut==="")return K("Invalid input string."),null;if((Kr=qe(Ut,!ne(Pt)))===null)return null;if(Pt.host=Kr,Ut="",rn=T.ParserState.Port,mn===T.ParserState.Hostname)return Pt}break;case T.ParserState.Port:if(P.codePoint.ASCIIDigit.test(An.c()))Ut+=An.c();else{if(!(An.c()===""||An.c()==="/"||An.c()==="?"||An.c()==="#"||ne(Pt)&&An.c()==="\\"||mn))return K("Invalid input string."),null;if(Ut!==""&&Ut!==""){var ui=parseInt(Ut,10);if(ui>Math.pow(2,16)-1)return K("Invalid port number."),null;Pt.port=ui===le(Pt.scheme)?null:ui,Ut=""}if(mn!==void 0)return Pt;rn=T.ParserState.PathStart,An.pointer--}break;case T.ParserState.File:if(Pt.scheme="file",An.c()==="/"||An.c()==="\\")An.c()==="\\"&&K("Invalid input string."),rn=T.ParserState.FileSlash;else if(yt!==null&&yt.scheme==="file")switch(An.c()){case"":Pt.host=yt.host,Pt.path=P.list.clone(yt.path),Pt.query=yt.query;break;case"?":Pt.host=yt.host,Pt.path=P.list.clone(yt.path),Pt.query="",rn=T.ParserState.Query;break;case"#":Pt.host=yt.host,Pt.path=P.list.clone(yt.path),Pt.query=yt.query,Pt.fragment="",rn=T.ParserState.Fragment;break;default:Ke(An.substring())?K("Unexpected windows drive letter in input string."):(Pt.host=yt.host,Pt.path=P.list.clone(yt.path),Je(Pt)),rn=T.ParserState.Path,An.pointer--}else rn=T.ParserState.Path,An.pointer--;break;case T.ParserState.FileSlash:An.c()==="/"||An.c()==="\\"?(An.c()==="\\"&&K("Invalid input string."),rn=T.ParserState.FileHost):(yt===null||yt.scheme!=="file"||Ke(An.substring())||(it(yt.path[0])?Pt.path.push(yt.path[0]):Pt.host=yt.host),rn=T.ParserState.Path,An.pointer--);break;case T.ParserState.FileHost:if(An.c()===""||An.c()==="/"||An.c()==="\\"||An.c()==="?"||An.c()==="#")if(An.pointer--,mn===void 0&&Ge(Ut))K("Unexpected windows drive letter in input string."),rn=T.ParserState.Path;else if(Ut===""){if(Pt.host="",mn!==void 0)return Pt;rn=T.ParserState.PathStart}else{var Kr;if((Kr=qe(Ut,!ne(Pt)))===null)return null;if(Kr==="localhost"&&(Kr=""),Pt.host=Kr,mn!==void 0)return Pt;Ut="",rn=T.ParserState.PathStart}else Ut+=An.c();break;case T.ParserState.PathStart:ne(Pt)?(An.c()==="\\"&&K("Invalid input string."),rn=T.ParserState.Path,An.c()!=="/"&&An.c()!=="\\"&&An.pointer--):mn===void 0&&An.c()==="?"?(Pt.query="",rn=T.ParserState.Query):mn===void 0&&An.c()==="#"?(Pt.fragment="",rn=T.ParserState.Fragment):An.c()!==""&&(rn=T.ParserState.Path,An.c()!=="/"&&An.pointer--);break;case T.ParserState.Path:if(An.c()===""||An.c()==="/"||ne(Pt)&&An.c()==="\\"||mn===void 0&&(An.c()==="?"||An.c()==="#")){if(ne(Pt)&&An.c()==="\\"&&K("Invalid input string."),je(Ut))Je(Pt),An.c()==="/"||ne(Pt)&&An.c()==="\\"||Pt.path.push("");else if(!Pe(Ut)||An.c()==="/"||ne(Pt)&&An.c()==="\\"){if(!Pe(Ut)){if(Pt.scheme==="file"&&Pt.path.length===0&&Ge(Ut)){Pt.host!==null&&Pt.host!==""&&(K("Invalid input string."),Pt.host="");var ai=Array.from(Ut);Ut=ai.slice(0,1)+":"+ai.slice(2)}Pt.path.push(Ut)}}else Pt.path.push("");if(Ut="",Pt.scheme==="file"&&(An.c()===""||An.c()==="?"||An.c()==="#"))for(;Pt.path.length>1&&Pt.path[0]==="";)K("Invalid input string."),Pt.path.splice(0,1);An.c()==="?"&&(Pt.query="",rn=T.ParserState.Query),An.c()==="#"&&(Pt.fragment="",rn=T.ParserState.Fragment)}else z.test(An.c())||An.c()==="%"||K("Character is not a URL code point or a percent encoded character."),An.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(An.remaining())||K("Percent encoded character must be followed by two hex digits."),Ut+=xn(An.c(),U);break;case T.ParserState.CannotBeABaseURLPath:An.c()==="?"?(Pt.query="",rn=T.ParserState.Query):An.c()==="#"?(Pt.fragment="",rn=T.ParserState.Fragment):(An.c()===""||z.test(An.c())||An.c()==="%"||K("Character is not a URL code point or a percent encoded character."),An.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(An.remaining())||K("Percent encoded character must be followed by two hex digits."),An.c()!==""&&(Pt.path[0]+=xn(An.c(),L)));break;case T.ParserState.Query:if(Zn==="UTF-8"||ne(Pt)&&Pt.scheme!=="ws"&&Pt.scheme!=="wss"||(Zn="UTF-8"),mn===void 0&&An.c()==="#")Pt.fragment="",rn=T.ParserState.Fragment;else if(An.c()!==""){if(z.test(An.c())||An.c()==="%"||K("Character is not a URL code point or a percent encoded character."),An.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(An.remaining())||K("Percent encoded character must be followed by two hex digits."),Zn.toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var vi=_.utf8Encode(An.c());if(vi.length>=3&&vi[0]===38&&vi[1]===35&&vi[vi.length-1]===59)vi=vi.subarray(2,vi.length-1),Pt.query+="%26%23"+P.byteSequence.isomorphicDecode(vi)+"%3B";else try{for(var e0=(Kn=void 0,c(vi)),p0=e0.next();!p0.done;p0=e0.next()){var Hi=p0.value;Hi<33||Hi>126||Hi===34||Hi===35||Hi===60||Hi===62||Hi===39&&ne(Pt)?Pt.query+=Jt(Hi):Pt.query+=String.fromCharCode(Hi)}}catch(T0){Kn={error:T0}}finally{try{p0&&!p0.done&&(Dt=e0.return)&&Dt.call(e0)}finally{if(Kn)throw Kn.error}}}break;case T.ParserState.Fragment:An.c()===""||(An.c()==="\0"?K("NULL character in input string."):(z.test(An.c())||An.c()==="%"||K("Unexpected character in fragment string."),An.c()!=="%"||/^[A-Za-z0-9][A-Za-z0-9]/.test(An.remaining())||K("Unexpected character in fragment string."),Pt.fragment+=xn(An.c(),V)))}if(An.eof)break;An.pointer++}return Pt}function Pe(st){return st==="."||st.toLowerCase()==="%2e"}function je(st){var yt=st.toLowerCase();return yt===".."||yt===".%2e"||yt==="%2e."||yt==="%2e%2e"}function Je(st){var yt=st.path;yt.length!==0&&(st.scheme==="file"&&yt.length===1&&it(yt[0])||st.path.splice(st.path.length-1,1))}function it(st){return st.length>=2&&P.codePoint.ASCIIAlpha.test(st[0])&&st[1]===":"}function Ge(st){return st.length>=2&&P.codePoint.ASCIIAlpha.test(st[0])&&(st[1]===":"||st[1]==="|")}function Ke(st){return st.length>=2&&Ge(st)&&(st.length===2||st[2]==="/"||st[2]==="\\"||st[2]==="?"||st[2]==="#")}function qe(st,yt){if(yt===void 0&&(yt=!1),st.startsWith("["))return st.endsWith("]")?Et(st.substring(1,st.length-1)):(K("Expected ']' after '['."),null);if(yt)return qt(st);var St=ct(_.utf8Decode(Nn(st)));if(St===null||$.test(St))return K("Invalid domain."),null;var Pt=wt(St);return Pt===null||_.isNumber(Pt)?Pt:St}function ut(st,yt){yt===void 0&&(yt={value:!1});var St=10;return st.startsWith("0x")||st.startsWith("0X")?(yt.value=!0,st=st.substr(2),St=16):st.length>=2&&st[0]==="0"&&(yt.value=!0,st=st.substr(1),St=8),st===""?0:(St===10?/^[0-9]+$/:St===16?/^[0-9A-Fa-f]+$/:/^[0-7]+$/).test(st)?parseInt(st,St):null}function wt(st){var yt,St,Pt,mn,Pn={value:!1},Hn=st.split(".");if(Hn[Hn.length-1]===""&&(Pn.value=!0,Hn.length>1&&Hn.pop()),Hn.length>4)return st;var Kn=[];try{for(var Dt=c(Hn),Vt=Dt.next();!Vt.done;Vt=Dt.next()){var gn=Vt.value;if(gn===""||(br=ut(gn,Pn))===null)return st;Kn.push(br)}}catch(jr){yt={error:jr}}finally{try{Vt&&!Vt.done&&(St=Dt.return)&&St.call(Dt)}finally{if(yt)throw yt.error}}Pn.value&&K("Invalid IP v4 address.");for(var Bt=0;Bt255&&(K("Invalid IP v4 address."),Bt=Math.pow(256,5-Kn.length))return K("Invalid IP v4 address."),null;var rn=Kn[Kn.length-1];Kn.pop();var Zn=0;try{for(var Ut=c(Kn),Ir=Ut.next();!Ir.done;Ir=Ut.next()){var br;rn+=(br=Ir.value)*Math.pow(256,3-Zn),Zn++}}catch(jr){Pt={error:jr}}finally{try{Ir&&!Ir.done&&(mn=Ut.return)&&mn.call(Ut)}finally{if(Pt)throw Pt.error}}return rn}function Et(st){var yt,St=[0,0,0,0,0,0,0,0],Pt=0,mn=null,Pn=new _.StringWalker(st);if(Pn.c()===":"){if(!Pn.remaining().startsWith(":"))return K("Invalid IP v6 address."),null;Pn.pointer+=2,mn=Pt+=1}for(;Pn.c()!=="";){if(Pt===8)return K("Invalid IP v6 address."),null;if(Pn.c()!==":"){for(var Hn=0,Kn=0;Kn<4&&P.codePoint.ASCIIHexDigit.test(Pn.c());)Hn=16*Hn+parseInt(Pn.c(),16),Pn.pointer++,Kn++;if(Pn.c()==="."){if(Kn===0||(Pn.pointer-=Kn,Pt>6))return K("Invalid IP v6 address."),null;for(var Dt=0;Pn.c()!=="";){var Vt=null;if(Dt>0){if(!(Pn.c()==="."&&Dt<4))return K("Invalid IP v6 address."),null;Pn.pointer++}if(!P.codePoint.ASCIIDigit.test(Pn.c()))return K("Invalid IP v6 address."),null;for(;P.codePoint.ASCIIDigit.test(Pn.c());){var gn=parseInt(Pn.c(),10);if(Vt===null)Vt=gn;else{if(Vt===0)return K("Invalid IP v6 address."),null;Vt=10*Vt+gn}if(Vt>255)return K("Invalid IP v6 address."),null;Pn.pointer++}if(Vt===null)return K("Invalid IP v6 address."),null;St[Pt]=256*St[Pt]+Vt,++Dt!==2&&Dt!==4||Pt++}if(Dt!==4)return K("Invalid IP v6 address."),null;break}if(Pn.c()===":"){if(Pn.pointer++,Pn.c()==="")return K("Invalid IP v6 address."),null}else if(Pn.c()!=="")return K("Invalid IP v6 address."),null;St[Pt]=Hn,Pt++}else{if(mn!==null)return K("Invalid IP v6 address."),null;Pn.pointer++,mn=++Pt}}if(mn!==null){var Bt=Pt-mn;for(Pt=7;Pt!==0&&Bt>0;)yt=g([St[mn+Bt-1],St[Pt]],2),St[Pt]=yt[0],St[mn+Bt-1]=yt[1],Pt--,Bt--}else if(mn===null&&Pt!==8)return K("Invalid IP v6 address."),null;return St}function qt(st){var yt,St;if(/[\x00\t\f\r #/:?@\[\\\]]/.test(st))return K("Invalid host string."),null;var Pt="";try{for(var mn=c(st),Pn=mn.next();!Pn.done;Pn=mn.next())Pt+=xn(Pn.value,L)}catch(Hn){yt={error:Hn}}finally{try{Pn&&!Pn.done&&(St=mn.return)&&St.call(mn)}finally{if(yt)throw yt.error}}return Pt}function $t(st){return null}function Jt(st){return"%"+("00"+st.toString(16).toUpperCase()).slice(-2)}function Dn(st){for(var yt=function(Kn){return Kn>=48&&Kn<=57||Kn>=65&&Kn<=70||Kn>=97&&Kn<=102},St=new Uint8Array(st.length),Pt=0,mn=0;mn=st.length-2)St[Pt]=Pn,Pt++;else if(Pn!==37||yt(st[mn+1])&&yt(st[mn+2])){var Hn=parseInt(_.utf8Decode(Uint8Array.of(st[mn+1],st[mn+2])),16);St[Pt]=Hn,Pt++,mn+=2}else St[Pt]=Pn,Pt++}return St.subarray(0,Pt)}function Nn(st){return Dn(_.utf8Encode(st))}function xn(st,yt){var St,Pt;if(!yt.test(st))return st;var mn=_.utf8Encode(st),Pn="";try{for(var Hn=c(mn),Kn=Hn.next();!Kn.done;Kn=Hn.next())Pn+=Jt(Kn.value)}catch(Dt){St={error:Dt}}finally{try{Kn&&!Kn.done&&(Pt=Hn.return)&&Pt.call(Hn)}finally{if(St)throw St.error}}return Pn}function et(st){var yt,St,Pt,mn,Pn=[],Hn=[];try{for(var Kn=c(st),Dt=Kn.next();!Dt.done;Dt=Kn.next()){var Vt=Dt.value;Vt===38?(Pn.push(Uint8Array.from(Hn)),Hn=[]):Hn.push(Vt)}}catch(Cr){yt={error:Cr}}finally{try{Dt&&!Dt.done&&(St=Kn.return)&&St.call(Kn)}finally{if(yt)throw yt.error}}Hn.length!==0&&Pn.push(Uint8Array.from(Hn));var gn=[];try{for(var Bt=c(Pn),rn=Bt.next();!rn.done;rn=Bt.next()){var Zn=rn.value;if(Zn.length!==0){for(var Ut=Zn.indexOf(61),Ir=Ut!==-1?Zn.slice(0,Ut):Zn,br=Ut!==-1?Zn.slice(Ut+1):new Uint8Array,jr=0;jr=48&&Hn<=57||Hn>=65&&Hn<=90||Hn===95||Hn>=97&&Hn<=122?String.fromCodePoint(Hn):Jt(Hn)}}catch(Kn){yt={error:Kn}}finally{try{Pn&&!Pn.done&&(St=mn.return)&&St.call(mn)}finally{if(yt)throw yt.error}}return Pt}function ct(st,yt){var St=I.domainToASCII(st);return St===""?(K("Invalid domain name."),null):St}i.setValidationErrorCallback=function(st){v=st},i.newURL=X,i.isSpecialScheme=ee,i.isSpecial=ne,i.defaultPort=le,i.includesCredentials=ce,i.cannotHaveAUsernamePasswordPort=function(st){return st.host===null||st.host===""||st._cannotBeABaseURLFlag||st.scheme==="file"},i.urlSerializer=ge,i.hostSerializer=pe,i.iPv4Serializer=we,i.iPv6Serializer=Te,i.urlParser=function(st,yt,St){var Pt=Ve(st,yt,St);return Pt===null?null:(Pt.scheme!=="blob"||(Pt._blobURLEntry=null),Pt)},i.basicURLParser=Ve,i.setTheUsername=function(st,yt){var St,Pt,mn="";try{for(var Pn=c(yt),Hn=Pn.next();!Hn.done;Hn=Pn.next())mn+=xn(Hn.value,j)}catch(Kn){St={error:Kn}}finally{try{Hn&&!Hn.done&&(Pt=Pn.return)&&Pt.call(Pn)}finally{if(St)throw St.error}}st.username=mn},i.setThePassword=function(st,yt){var St,Pt,mn="";try{for(var Pn=c(yt),Hn=Pn.next();!Hn.done;Hn=Pn.next())mn+=xn(Hn.value,j)}catch(Kn){St={error:Kn}}finally{try{Hn&&!Hn.done&&(Pt=Pn.return)&&Pt.call(Pn)}finally{if(St)throw St.error}}st.password=mn},i.isSingleDotPathSegment=Pe,i.isDoubleDotPathSegment=je,i.shorten=Je,i.isNormalizedWindowsDriveLetter=it,i.isWindowsDriveLetter=Ge,i.startsWithAWindowsDriveLetter=Ke,i.hostParser=qe,i.iPv4NumberParser=ut,i.iPv4Parser=wt,i.iPv6Parser=Et,i.opaqueHostParser=qt,i.resolveABlobURL=$t,i.percentEncode=Jt,i.percentDecode=Dn,i.stringPercentDecode=Nn,i.utf8PercentEncode=xn,i.hostEquals=function(st,yt){return st===yt},i.urlEquals=function(st,yt,St){return St===void 0&&(St=!1),ge(st,St)===ge(yt,St)},i.urlEncodedStringParser=function(st){return et(_.utf8Encode(st))},i.urlEncodedParser=et,i.urlEncodedByteSerializer=Me,i.urlEncodedSerializer=function(st,yt){var St,Pt;if((yt===void 0||yt==="replacement"||yt==="UTF-16BE"||yt==="UTF-16LE"?"UTF-8":yt).toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var mn="";try{for(var Pn=c(st),Hn=Pn.next();!Hn.done;Hn=Pn.next()){var Kn=Hn.value,Dt=Me(_.utf8Encode(Kn[0])),Vt=Kn[1];Vt=Me(_.utf8Encode(Vt)),mn!==""&&(mn+="&"),mn+=Dt+"="+Vt}}catch(gn){St={error:gn}}finally{try{Hn&&!Hn.done&&(Pt=Pn.return)&&Pt.call(Pn)}finally{if(St)throw St.error}}return mn},i.origin=function st(yt){switch(yt.scheme){case"blob":yt._blobURLEntry;var St=Ve(yt.path[0]);return St===null?T.OpaqueOrigin:st(St);case"ftp":case"http":case"https":case"ws":case"wss":return[yt.scheme,yt.host===null?"":yt.host,yt.port,null];case"file":default:return T.OpaqueOrigin}},i.domainToASCII=ct,i.domainToUnicode=function(st,yt){var St=I.domainToUnicode(st);return St===""&&K("Invalid domain name."),St},i.asciiSerializationOfAnOrigin=function(st){if(st[0]===""&&st[1]===""&&st[2]===null&&st[3]===null)return"null";var yt=st[0]+"://"+pe(st[1]);return st[2]!==null&&(yt+=":"+st[2].toString()),yt}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(0),g=function(){function v(){this._signal=c.create_abortSignal()}return Object.defineProperty(v.prototype,"signal",{get:function(){return this._signal},enumerable:!0,configurable:!0}),v.prototype.abort=function(){c.abort_signalAbort(this._signal)},v}();i.AbortControllerImpl=g},function(o,i,l){var c,g=this&&this.__extends||(c=function(P,I){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(R,L){R.__proto__=L}||function(R,L){for(var V in L)L.hasOwnProperty(V)&&(R[V]=L[V])})(P,I)},function(P,I){function R(){this.constructor=P}c(P,I),P.prototype=I===null?Object.create(I):(R.prototype=I.prototype,new R)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(70),_=l(0),T=function(P){function I(){var R=P.call(this)||this;return R._abortedFlag=!1,R._abortAlgorithms=new Set,R}return g(I,P),Object.defineProperty(I.prototype,"aborted",{get:function(){return this._abortedFlag},enumerable:!0,configurable:!0}),Object.defineProperty(I.prototype,"onabort",{get:function(){return _.event_getterEventHandlerIDLAttribute(this,"onabort")},set:function(R){_.event_setterEventHandlerIDLAttribute(this,"onabort",R)},enumerable:!0,configurable:!0}),I._create=function(){return new I},I}(v.EventTargetImpl);i.AbortSignalImpl=T},function(o,i,l){var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(2),_=l(34),T=l(12),P=function(I){function R(L,V,U){var j=I.call(this)||this;return j._name="",j._publicId="",j._systemId="",j._name=L,j._publicId=V,j._systemId=U,j}return g(R,I),Object.defineProperty(R.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),Object.defineProperty(R.prototype,"publicId",{get:function(){return this._publicId},enumerable:!0,configurable:!0}),Object.defineProperty(R.prototype,"systemId",{get:function(){return this._systemId},enumerable:!0,configurable:!0}),R.prototype.before=function(){for(var L=[],V=0;V=P.length&&(P=void 0),{value:P&&P[L++],done:!P}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(1),_=l(0),T=function(){function P(I){return this._live=!0,this._filter=null,this._length=0,this._root=I,new Proxy(this,this)}return Object.defineProperty(P.prototype,"length",{get:function(){return this._root._children.size},enumerable:!0,configurable:!0}),P.prototype.item=function(I){if(I<0||I>this.length-1)return null;if(I=T.length&&(T=void 0),{value:T&&T[R++],done:!T}}};throw new TypeError(P?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(1),_=function(){function T(P){return this._live=!1,this._items=[],this._length=0,this._root=P,this._items=[],this._filter=function(I){return!0},new Proxy(this,this)}return Object.defineProperty(T.prototype,"length",{get:function(){return this._items.length},enumerable:!0,configurable:!0}),T.prototype.item=function(P){return P<0||P>this.length-1?null:this._items[P]},T.prototype.keys=function(){var P;return(P={})[Symbol.iterator]=(function(){var I=0;return{next:(function(){return I===this.length?{done:!0,value:null}:{done:!1,value:I++}}).bind(this)}}).bind(this),P},T.prototype.values=function(){var P;return(P={})[Symbol.iterator]=(function(){var I=this[Symbol.iterator]();return{next:function(){return I.next()}}}).bind(this),P},T.prototype.entries=function(){var P;return(P={})[Symbol.iterator]=(function(){var I=this[Symbol.iterator](),R=0;return{next:function(){var L=I.next();return L.done?{done:!0,value:null}:{done:!1,value:[R++,L.value]}}}}).bind(this),P},T.prototype[Symbol.iterator]=function(){var P=this._items[Symbol.iterator]();return{next:function(){return P.next()}}},T.prototype.forEach=function(P,I){var R,L;I===void 0&&(I=g.dom.window);var V=0;try{for(var U=c(this._items),j=U.next();!j.done;j=U.next()){var z=j.value;P.call(I,z,V++,this)}}catch($){R={error:$}}finally{try{j&&!j.done&&(L=U.return)&&L.call(U)}finally{if(R)throw R.error}}},T.prototype.get=function(P,I,R){if(!v.isString(I))return Reflect.get(P,I,R);var L=Number(I);return isNaN(L)?Reflect.get(P,I,R):P._items[L]||void 0},T.prototype.set=function(P,I,R,L){if(!v.isString(I))return Reflect.set(P,I,R,L);var V=Number(I);return isNaN(V)?Reflect.set(P,I,R,L):V>=0&&V=j.length&&(j=void 0),{value:j&&j[K++],done:!j}}};throw new TypeError(z?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(6),T=l(2),P=l(102),I=l(9),R=l(0),L=l(12),V=l(3),U=function(j){function z(){var $=j.call(this)||this,K=_.dom.window._associatedDocument;return $._start=[K,0],$._end=[K,0],_.dom.rangeList.add($),$}return g(z,j),Object.defineProperty(z.prototype,"commonAncestorContainer",{get:function(){for(var $=this._start[0];!R.tree_isAncestorOf(this._end[0],$,!0);){if($._parent===null)throw new Error("Parent node is null.");$=$._parent}return $},enumerable:!0,configurable:!0}),z.prototype.setStart=function($,K){R.range_setTheStart(this,$,K)},z.prototype.setEnd=function($,K){R.range_setTheEnd(this,$,K)},z.prototype.setStartBefore=function($){var K=$._parent;if(K===null)throw new I.InvalidNodeTypeError;R.range_setTheStart(this,K,R.tree_index($))},z.prototype.setStartAfter=function($){var K=$._parent;if(K===null)throw new I.InvalidNodeTypeError;R.range_setTheStart(this,K,R.tree_index($)+1)},z.prototype.setEndBefore=function($){var K=$._parent;if(K===null)throw new I.InvalidNodeTypeError;R.range_setTheEnd(this,K,R.tree_index($))},z.prototype.setEndAfter=function($){var K=$._parent;if(K===null)throw new I.InvalidNodeTypeError;R.range_setTheEnd(this,K,R.tree_index($)+1)},z.prototype.collapse=function($){$?this._end=this._start:this._start=this._end},z.prototype.selectNode=function($){R.range_select($,this)},z.prototype.selectNodeContents=function($){if(V.Guard.isDocumentTypeNode($))throw new I.InvalidNodeTypeError;var K=R.tree_nodeLength($);this._start=[$,0],this._end=[$,K]},z.prototype.compareBoundaryPoints=function($,K){if($!==T.HowToCompare.StartToStart&&$!==T.HowToCompare.StartToEnd&&$!==T.HowToCompare.EndToEnd&&$!==T.HowToCompare.EndToStart)throw new I.NotSupportedError;if(R.range_root(this)!==R.range_root(K))throw new I.WrongDocumentError;var X,ee;switch($){case T.HowToCompare.StartToStart:X=this._start,ee=K._start;break;case T.HowToCompare.StartToEnd:X=this._end,ee=K._start;break;case T.HowToCompare.EndToEnd:X=this._end,ee=K._end;break;case T.HowToCompare.EndToStart:X=this._start,ee=K._end;break;default:throw new I.NotSupportedError}var ne=R.boundaryPoint_position(X,ee);return ne===T.BoundaryPosition.Before?-1:ne===T.BoundaryPosition.After?1:0},z.prototype.deleteContents=function(){var $,K,X,ee;if(!R.range_collapsed(this)){var ne=this._startNode,le=this._startOffset,ce=this._endNode,ge=this._endOffset;if(ne===ce&&V.Guard.isCharacterDataNode(ne))R.characterData_replaceData(ne,le,ge-le,"");else{var pe,we,Te=[];try{for(var Ve=v(R.range_getContainedNodes(this)),Pe=Ve.next();!Pe.done;Pe=Ve.next()){var je=(Ke=Pe.value)._parent;je!==null&&R.range_isContained(je,this)||Te.push(Ke)}}catch(qe){$={error:qe}}finally{try{Pe&&!Pe.done&&(K=Ve.return)&&K.call(Ve)}finally{if($)throw $.error}}if(R.tree_isAncestorOf(ce,ne,!0))pe=ne,we=le;else{for(var Je=ne;Je._parent!==null&&!R.tree_isAncestorOf(ce,Je._parent,!0);)Je=Je._parent;if(Je._parent===null)throw new Error("Parent node is null.");pe=Je._parent,we=R.tree_index(Je)+1}V.Guard.isCharacterDataNode(ne)&&R.characterData_replaceData(ne,le,R.tree_nodeLength(ne)-le,"");try{for(var it=v(Te),Ge=it.next();!Ge.done;Ge=it.next()){var Ke;(Ke=Ge.value)._parent&&R.mutation_remove(Ke,Ke._parent)}}catch(qe){X={error:qe}}finally{try{Ge&&!Ge.done&&(ee=it.return)&&ee.call(it)}finally{if(X)throw X.error}}V.Guard.isCharacterDataNode(ce)&&R.characterData_replaceData(ce,0,ge,""),this._start=[pe,we],this._end=[pe,we]}}},z.prototype.extractContents=function(){return R.range_extract(this)},z.prototype.cloneContents=function(){return R.range_cloneTheContents(this)},z.prototype.insertNode=function($){return R.range_insert($,this)},z.prototype.surroundContents=function($){var K,X;try{for(var ee=v(R.range_getPartiallyContainedNodes(this)),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;if(!V.Guard.isTextNode(le))throw new I.InvalidStateError}}catch(ge){K={error:ge}}finally{try{ne&&!ne.done&&(X=ee.return)&&X.call(ee)}finally{if(K)throw K.error}}if(V.Guard.isDocumentNode($)||V.Guard.isDocumentTypeNode($)||V.Guard.isDocumentFragmentNode($))throw new I.InvalidNodeTypeError;var ce=R.range_extract(this);$._children.size!==0&&R.mutation_replaceAll(null,$),R.range_insert($,this),R.mutation_append(ce,$),R.range_select($,this)},z.prototype.cloneRange=function(){return R.create_range(this._start,this._end)},z.prototype.detach=function(){_.dom.rangeList.delete(this)},z.prototype.isPointInRange=function($,K){if(R.tree_rootNode($)!==R.range_root(this))return!1;if(V.Guard.isDocumentTypeNode($))throw new I.InvalidNodeTypeError;if(K>R.tree_nodeLength($))throw new I.IndexSizeError;var X=[$,K];return R.boundaryPoint_position(X,this._start)!==T.BoundaryPosition.Before&&R.boundaryPoint_position(X,this._end)!==T.BoundaryPosition.After},z.prototype.comparePoint=function($,K){if(R.tree_rootNode($)!==R.range_root(this))throw new I.WrongDocumentError;if(V.Guard.isDocumentTypeNode($))throw new I.InvalidNodeTypeError;if(K>R.tree_nodeLength($))throw new I.IndexSizeError;var X=[$,K];return R.boundaryPoint_position(X,this._start)===T.BoundaryPosition.Before?-1:R.boundaryPoint_position(X,this._end)===T.BoundaryPosition.After?1:0},z.prototype.intersectsNode=function($){if(R.tree_rootNode($)!==R.range_root(this))return!1;var K=$._parent;if(K===null)return!0;var X=R.tree_index($);return R.boundaryPoint_position([K,X],this._end)===T.BoundaryPosition.Before&&R.boundaryPoint_position([K,X+1],this._start)===T.BoundaryPosition.After},z.prototype.toString=function(){var $,K,X="";if(this._startNode===this._endNode&&V.Guard.isTextNode(this._startNode))return this._startNode._data.substring(this._startOffset,this._endOffset);V.Guard.isTextNode(this._startNode)&&(X+=this._startNode._data.substring(this._startOffset));try{for(var ee=v(R.range_getContainedNodes(this)),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;V.Guard.isTextNode(le)&&(X+=le._data)}}catch(ce){$={error:ce}}finally{try{ne&&!ne.done&&(K=ee.return)&&K.call(ee)}finally{if($)throw $.error}}return V.Guard.isTextNode(this._endNode)&&(X+=this._endNode._data.substring(0,this._endOffset)),X},z._create=function($,K){var X=new z;return $&&(X._start=$),K&&(X._end=K),X},z.START_TO_START=0,z.START_TO_END=1,z.END_TO_END=2,z.END_TO_START=3,z}(P.AbstractRangeImpl);i.RangeImpl=U,L.idl_defineConst(U.prototype,"START_TO_START",0),L.idl_defineConst(U.prototype,"START_TO_END",1),L.idl_defineConst(U.prototype,"END_TO_END",2),L.idl_defineConst(U.prototype,"END_TO_START",3)},function(o,i,l){var c,g=this&&this.__extends||(c=function(P,I){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(R,L){R.__proto__=L}||function(R,L){for(var V in L)L.hasOwnProperty(V)&&(R[V]=L[V])})(P,I)},function(P,I){function R(){this.constructor=P}c(P,I),P.prototype=I===null?Object.create(I):(R.prototype=I.prototype,new R)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(103),_=l(0),T=function(P){function I(R,L,V){var U=P.call(this,R)||this;return U._iteratorCollection=void 0,U._reference=L,U._pointerBeforeReference=V,_.nodeIterator_iteratorList().add(U),U}return g(I,P),Object.defineProperty(I.prototype,"referenceNode",{get:function(){return this._reference},enumerable:!0,configurable:!0}),Object.defineProperty(I.prototype,"pointerBeforeReferenceNode",{get:function(){return this._pointerBeforeReference},enumerable:!0,configurable:!0}),I.prototype.nextNode=function(){return _.nodeIterator_traverse(this,!0)},I.prototype.previousNode=function(){return _.nodeIterator_traverse(this,!1)},I.prototype.detach=function(){_.nodeIterator_iteratorList().delete(this)},I._create=function(R,L,V){return new I(R,L,V)},I}(v.TraverserImpl);i.NodeIteratorImpl=T},function(o,i,l){var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(2),_=l(103),T=l(0),P=function(I){function R(L,V){var U=I.call(this,L)||this;return U._current=V,U}return g(R,I),Object.defineProperty(R.prototype,"currentNode",{get:function(){return this._current},set:function(L){this._current=L},enumerable:!0,configurable:!0}),R.prototype.parentNode=function(){for(var L=this._current;L!==null&&L!==this._root;)if((L=L._parent)!==null&&T.traversal_filter(this,L)===v.FilterResult.Accept)return this._current=L,L;return null},R.prototype.firstChild=function(){return T.treeWalker_traverseChildren(this,!0)},R.prototype.lastChild=function(){return T.treeWalker_traverseChildren(this,!1)},R.prototype.nextSibling=function(){return T.treeWalker_traverseSiblings(this,!0)},R.prototype.previousNode=function(){for(var L=this._current;L!==this._root;){for(var V=L._previousSibling;V;){L=V;for(var U=T.traversal_filter(this,L);U!==v.FilterResult.Reject&&L._lastChild;)L=L._lastChild,U=T.traversal_filter(this,L);if(U===v.FilterResult.Accept)return this._current=L,L;V=L._previousSibling}if(L===this._root||L._parent===null)return null;if(L=L._parent,T.traversal_filter(this,L)===v.FilterResult.Accept)return this._current=L,L}return null},R.prototype.previousSibling=function(){return T.treeWalker_traverseSiblings(this,!1)},R.prototype.nextNode=function(){for(var L=this._current,V=v.FilterResult.Accept;;){for(;V!==v.FilterResult.Reject&&L._firstChild;)if(L=L._firstChild,(V=T.traversal_filter(this,L))===v.FilterResult.Accept)return this._current=L,L;for(var U=null,j=L;j!==null;){if(j===this._root)return null;if((U=j._nextSibling)!==null){L=U;break}j=j._parent}if((V=T.traversal_filter(this,L))===v.FilterResult.Accept)return this._current=L,L}},R._create=function(L,V){return new R(L,V)},R}(_.TraverserImpl);i.TreeWalkerImpl=P},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=l(12),v=function(){function _(){}return _.prototype.acceptNode=function(T){return c.FilterResult.Accept},_._create=function(){return new _},_.FILTER_ACCEPT=1,_.FILTER_REJECT=2,_.FILTER_SKIP=3,_.SHOW_ALL=4294967295,_.SHOW_ELEMENT=1,_.SHOW_ATTRIBUTE=2,_.SHOW_TEXT=4,_.SHOW_CDATA_SECTION=8,_.SHOW_ENTITY_REFERENCE=16,_.SHOW_ENTITY=32,_.SHOW_PROCESSING_INSTRUCTION=64,_.SHOW_COMMENT=128,_.SHOW_DOCUMENT=256,_.SHOW_DOCUMENT_TYPE=512,_.SHOW_DOCUMENT_FRAGMENT=1024,_.SHOW_NOTATION=2048,_}();i.NodeFilterImpl=v,g.idl_defineConst(v.prototype,"FILTER_ACCEPT",1),g.idl_defineConst(v.prototype,"FILTER_REJECT",2),g.idl_defineConst(v.prototype,"FILTER_SKIP",3),g.idl_defineConst(v.prototype,"SHOW_ALL",4294967295),g.idl_defineConst(v.prototype,"SHOW_ELEMENT",1),g.idl_defineConst(v.prototype,"SHOW_ATTRIBUTE",2),g.idl_defineConst(v.prototype,"SHOW_TEXT",4),g.idl_defineConst(v.prototype,"SHOW_CDATA_SECTION",8),g.idl_defineConst(v.prototype,"SHOW_ENTITY_REFERENCE",16),g.idl_defineConst(v.prototype,"SHOW_ENTITY",32),g.idl_defineConst(v.prototype,"SHOW_PROCESSING_INSTRUCTION",64),g.idl_defineConst(v.prototype,"SHOW_COMMENT",128),g.idl_defineConst(v.prototype,"SHOW_DOCUMENT",256),g.idl_defineConst(v.prototype,"SHOW_DOCUMENT_TYPE",512),g.idl_defineConst(v.prototype,"SHOW_DOCUMENT_FRAGMENT",1024),g.idl_defineConst(v.prototype,"SHOW_NOTATION",2048)},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(v,_,T,P,I,R,L,V,U){this._type=v,this._target=_,this._addedNodes=T,this._removedNodes=P,this._previousSibling=I,this._nextSibling=R,this._attributeName=L,this._attributeNamespace=V,this._oldValue=U}return Object.defineProperty(g.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"target",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"addedNodes",{get:function(){return this._addedNodes},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"removedNodes",{get:function(){return this._removedNodes},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"previousSibling",{get:function(){return this._previousSibling},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"nextSibling",{get:function(){return this._nextSibling},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"attributeName",{get:function(){return this._attributeName},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"attributeNamespace",{get:function(){return this._attributeNamespace},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"oldValue",{get:function(){return this._oldValue},enumerable:!0,configurable:!0}),g._create=function(v,_,T,P,I,R,L,V,U){return new g(v,_,T,P,I,R,L,V,U)},g}();i.MutationRecordImpl=c},function(o,i,l){var c=this&&this.__values||function(I){var R=typeof Symbol=="function"&&Symbol.iterator,L=R&&I[R],V=0;if(L)return L.call(I);if(I&&typeof I.length=="number")return{next:function(){return I&&V>=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(9),_=l(7),T=l(0),P=function(){function I(R,L){this._element=R,this._attribute=L,this._tokenSet=new Set;var V=L._localName,U=T.element_getAnAttributeValue(R,V),j=this;this._element._attributeChangeSteps.push(function(z,$,K,X,ee){$===j._attribute._localName&&ee===null&&(X?j._tokenSet=T.orderedSet_parse(X):j._tokenSet.clear())}),g.dom.features.steps&&T.dom_runAttributeChangeSteps(R,V,U,U,null)}return Object.defineProperty(I.prototype,"length",{get:function(){return this._tokenSet.size},enumerable:!0,configurable:!0}),I.prototype.item=function(R){var L,V,U=0;try{for(var j=c(this._tokenSet),z=j.next();!z.done;z=j.next()){var $=z.value;if(U===R)return $;U++}}catch(K){L={error:K}}finally{try{z&&!z.done&&(V=j.return)&&V.call(j)}finally{if(L)throw L.error}}return null},I.prototype.contains=function(R){return this._tokenSet.has(R)},I.prototype.add=function(){for(var R,L,V=[],U=0;U=97&&v<=122||v>=65&&v<=90||v===58||v===95||v>=192&&v<=214||v>=216&&v<=246||v>=248&&v<=767||v>=880&&v<=893||v>=895&&v<=8191||v>=8204&&v<=8205||v>=8304&&v<=8591||v>=11264&&v<=12271||v>=12289&&v<=55295||v>=63744&&v<=64975||v>=65008&&v<=65533)&&(g===0||!(v===45||v===46||v>=48&&v<=57||v===183||v>=768&&v<=879||v>=8255&&v<=8256))){if(v>=55296&&v<=56319&&g=56320&&_<=57343&&(g++,(v=1024*(v-55296)+_-56320+65536)>=65536&&v<=983039))continue}return!1}}return!0},i.xml_isQName=function(c){for(var g=!1,v=0;v=97&&_<=122||_>=65&&_<=90||_===95||_>=192&&_<=214||_>=216&&_<=246||_>=248&&_<=767||_>=880&&_<=893||_>=895&&_<=8191||_>=8204&&_<=8205||_>=8304&&_<=8591||_>=11264&&_<=12271||_>=12289&&_<=55295||_>=63744&&_<=64975||_>=65008&&_<=65533)&&(v===0||!(_===45||_===46||_>=48&&_<=57||_===183||_>=768&&_<=879||_>=8255&&_<=8256))){if(v===0||_!==58){if(_>=55296&&_<=56319&&v=56320&&T<=57343&&(v++,(_=1024*(_-55296)+T-56320+65536)>=65536&&_<=983039))continue}return!1}if(g||v===c.length-1)return!1;g=!0}}return!0},i.xml_isLegalChar=function(c){for(var g=0;g=32&&v<=55295||v>=57344&&v<=65533)){if(v>=55296&&v<=56319&&g=56320&&_<=57343&&(g++,(v=1024*(v-55296)+_-56320+65536)>=65536&&v<=1114111))continue}return!1}}return!0},i.xml_isPubidChar=function(c){for(var g=0;g=97&&v<=122||v>=65&&v<=90||v>=39&&v<=59||v===32||v===13||v===10||v>=35&&v<=37||v===33||v===61||v===63||v===64||v===95))return!1}return!0}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=l(17);i.boundaryPoint_position=function v(_,T){var P=_[0],I=_[1],R=T[0],L=T[1];if(console.assert(g.tree_rootNode(P)===g.tree_rootNode(R),"Boundary points must share the same root node."),P===R)return I===L?c.BoundaryPosition.Equal:I=V.length&&(V=void 0),{value:V&&V[z++],done:!V}}};throw new TypeError(U?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(3),_=l(7),T=l(29),P=l(108),I=l(30),R=l(37),L=l(52);i.node_stringReplaceAll=function(V,U){var j=null;V!==""&&(j=T.create_text(U._nodeDocument,V)),R.mutation_replaceAll(j,U)},i.node_clone=function V(U,j,z){var $,K,X,ee,ne;if(j===void 0&&(j=null),z===void 0&&(z=!1),j===null&&(j=U._nodeDocument),v.Guard.isElementNode(U)){ne=L.element_createAnElement(j,U._localName,U._namespace,U._namespacePrefix,U._is,!1);try{for(var le=c(U._attributeList),ce=le.next();!ce.done;ce=le.next()){var ge=V(ce.value,j);L.element_append(ge,ne)}}catch(je){$={error:je}}finally{try{ce&&!ce.done&&(K=le.return)&&K.call(le)}finally{if($)throw $.error}}}else if(v.Guard.isDocumentNode(U)){var pe=T.create_document();pe._encoding=U._encoding,pe._contentType=U._contentType,pe._URL=U._URL,pe._origin=U._origin,pe._type=U._type,pe._mode=U._mode,ne=pe}else if(v.Guard.isDocumentTypeNode(U))ne=T.create_documentType(j,U._name,U._publicId,U._systemId);else if(v.Guard.isAttrNode(U)){var we=T.create_attr(j,U.localName);we._namespace=U._namespace,we._namespacePrefix=U._namespacePrefix,we._value=U._value,ne=we}else ne=v.Guard.isExclusiveTextNode(U)?T.create_text(j,U._data):v.Guard.isCDATASectionNode(U)?T.create_cdataSection(j,U._data):v.Guard.isCommentNode(U)?T.create_comment(j,U._data):v.Guard.isProcessingInstructionNode(U)?T.create_processingInstruction(j,U._target,U._data):v.Guard.isDocumentFragmentNode(U)?T.create_documentFragment(j):Object.create(U);if(v.Guard.isDocumentNode(ne)?(ne._nodeDocument=ne,j=ne):ne._nodeDocument=j,g.dom.features.steps&&I.dom_runCloningSteps(ne,U,j,z),z)try{for(var Te=c(U._children),Ve=Te.next();!Ve.done;Ve=Te.next()){var Pe=V(Ve.value,j,!0);R.mutation_append(Pe,ne)}}catch(je){X={error:je}}finally{try{Ve&&!Ve.done&&(ee=Te.return)&&ee.call(Te)}finally{if(X)throw X.error}}return ne},i.node_equals=function V(U,j){var z,$,K,X;if(U._nodeType!==j._nodeType)return!1;if(v.Guard.isDocumentTypeNode(U)&&v.Guard.isDocumentTypeNode(j)){if(U._name!==j._name||U._publicId!==j._publicId||U._systemId!==j._systemId)return!1}else if(v.Guard.isElementNode(U)&&v.Guard.isElementNode(j)){if(U._namespace!==j._namespace||U._namespacePrefix!==j._namespacePrefix||U._localName!==j._localName||U._attributeList.length!==j._attributeList.length)return!1}else if(v.Guard.isAttrNode(U)&&v.Guard.isAttrNode(j)){if(U._namespace!==j._namespace||U._localName!==j._localName||U._value!==j._value)return!1}else if(v.Guard.isProcessingInstructionNode(U)&&v.Guard.isProcessingInstructionNode(j)){if(U._target!==j._target||U._data!==j._data)return!1}else if(v.Guard.isCharacterDataNode(U)&&v.Guard.isCharacterDataNode(j)&&U._data!==j._data)return!1;if(v.Guard.isElementNode(U)&&v.Guard.isElementNode(j)){var ee={};try{for(var ne=c(U._attributeList),le=ne.next();!le.done;le=ne.next())ee[(pe=le.value)._localName]=pe}catch(Je){z={error:Je}}finally{try{le&&!le.done&&($=ne.return)&&$.call(ne)}finally{if(z)throw z.error}}try{for(var ce=c(j._attributeList),ge=ce.next();!ge.done;ge=ce.next()){var pe,we=ge.value;if(!(pe=ee[we._localName])||!V(pe,we))return!1}}catch(Je){K={error:Je}}finally{try{ge&&!ge.done&&(X=ce.return)&&X.call(ce)}finally{if(K)throw K.error}}}if(U._children.size!==j._children.size)return!1;for(var Te=U._children[Symbol.iterator](),Ve=j._children[Symbol.iterator](),Pe=Te.next(),je=Ve.next();!Pe.done&&!je.done;){if(!V(Pe.value,je.value))return!1;Pe=Te.next(),je=Ve.next()}return!0},i.node_listOfElementsWithQualifiedName=function(V,U){return V==="*"?T.create_htmlCollection(U):U._nodeDocument._type==="html"?T.create_htmlCollection(U,function(j){return j._namespace===_.namespace.HTML&&j._qualifiedName===V.toLowerCase()||j._namespace!==_.namespace.HTML&&j._qualifiedName===V}):T.create_htmlCollection(U,function(j){return j._qualifiedName===V})},i.node_listOfElementsWithNamespace=function(V,U,j){return V===""&&(V=null),V==="*"&&U==="*"?T.create_htmlCollection(j):V==="*"?T.create_htmlCollection(j,function(z){return z._localName===U}):U==="*"?T.create_htmlCollection(j,function(z){return z._namespace===V}):T.create_htmlCollection(j,function(z){return z._localName===U&&z._namespace===V})},i.node_listOfElementsWithClassNames=function(V,U){var j=P.orderedSet_parse(V);if(j.size===0)return T.create_htmlCollection(U,function(){return!1});var z=U._nodeDocument._mode!=="quirks";return T.create_htmlCollection(U,function($){var K=$.classList;return P.orderedSet_contains(K._tokenSet,j,z)})},i.node_locateANamespacePrefix=function V(U,j){if(U._namespace===j&&U._namespacePrefix!==null)return U._namespacePrefix;for(var z=0;z=L.length&&(L=void 0),{value:L&&L[j++],done:!L}}};throw new TypeError(V?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(3),_=l(9),T=l(29),P=l(17),I=l(107),R=l(37);i.text_contiguousTextNodes=function(L,V){var U;return V===void 0&&(V=!1),(U={})[Symbol.iterator]=function(){for(var j=L;j&&v.Guard.isTextNode(j._previousSibling);)j=j._previousSibling;return{next:function(){if(j&&!V&&j===L&&(j=v.Guard.isTextNode(j._nextSibling)?j._nextSibling:null),j===null)return{done:!0,value:null};var z={done:!1,value:j};return j=v.Guard.isTextNode(j._nextSibling)?j._nextSibling:null,z}}},U},i.text_contiguousExclusiveTextNodes=function(L,V){var U;return V===void 0&&(V=!1),(U={})[Symbol.iterator]=function(){for(var j=L;j&&v.Guard.isExclusiveTextNode(j._previousSibling);)j=j._previousSibling;return{next:function(){if(j&&!V&&j===L&&(j=v.Guard.isExclusiveTextNode(j._nextSibling)?j._nextSibling:null),j===null)return{done:!0,value:null};var z={done:!1,value:j};return j=v.Guard.isExclusiveTextNode(j._nextSibling)?j._nextSibling:null,z}}},U},i.text_descendantTextContent=function(L){for(var V="",U=P.tree_getFirstDescendantNode(L,!1,!1,function(j){return v.Guard.isTextNode(j)});U!==null;)V+=U._data,U=P.tree_getNextDescendantNode(L,U,!1,!1,function(j){return v.Guard.isTextNode(j)});return V},i.text_split=function(L,V){var U,j,z=L._data.length;if(V>z)throw new _.IndexSizeError;var $=z-V,K=I.characterData_substringData(L,V,$),X=T.create_text(L._nodeDocument,K),ee=L._parent;if(ee!==null){R.mutation_insert(X,ee,L._nextSibling);try{for(var ne=c(g.dom.rangeList),le=ne.next();!le.done;le=ne.next()){var ce=le.value;ce._start[0]===L&&ce._start[1]>V&&(ce._start[0]=X,ce._start[1]-=V),ce._end[0]===L&&ce._end[1]>V&&(ce._end[0]=X,ce._end[1]-=V);var ge=P.tree_index(L);ce._start[0]===ee&&ce._start[1]===ge+1&&ce._start[1]++,ce._end[0]===ee&&ce._end[1]===ge+1&&ce._end[1]++}}catch(pe){U={error:pe}}finally{try{le&&!le.done&&(j=ne.return)&&j.call(ne)}finally{if(U)throw U.error}}}return I.characterData_replaceData(L,V,$,""),X}},function(o,i,l){var c=l(4),g=l(41),v=l(24),_=l(48),T=[].join,P=g!=Object,I=_("join",",");c({target:"Array",proto:!0,forced:P||!I},{join:function(R){return T.call(v(this),R===void 0?",":R)}})},function(o,i,l){var c=l(4),g=l(83),v=String.fromCharCode,_=String.fromCodePoint;c({target:"String",stat:!0,forced:!!_&&_.length!=1},{fromCodePoint:function(T){for(var P,I=[],R=arguments.length,L=0;R>L;){if(P=+arguments[L++],g(P,1114111)!==P)throw RangeError(P+" is not a valid code point");I.push(P<65536?v(P):v(55296+((P-=65536)>>10),P%1024+56320))}return I.join("")}})},function(o,i,l){var c=this&&this.__read||function(_,T){var P=typeof Symbol=="function"&&_[Symbol.iterator];if(!P)return _;var I,R,L=P.call(_),V=[];try{for(;(T===void 0||T-- >0)&&!(I=L.next()).done;)V.push(I.value)}catch(U){R={error:U}}finally{try{I&&!I.done&&(P=L.return)&&P.call(L)}finally{if(R)throw R.error}}return V};Object.defineProperty(i,"__esModule",{value:!0});var g=l(111),v=function(){function _(T,P){this._options={skipWhitespaceOnlyText:!1},this.err={line:-1,col:-1,index:-1,str:""},this._str=T,this._index=0,this._length=T.length,P&&(this._options.skipWhitespaceOnlyText=P.skipWhitespaceOnlyText||!1)}return _.prototype.nextToken=function(){if(this.eof())return{type:g.TokenType.EOF};var T=this.skipIfStartsWith("<")?this.openBracket():this.text();return this._options.skipWhitespaceOnlyText&&T.type===g.TokenType.Text&&_.isWhiteSpaceToken(T)&&(T=this.nextToken()),T},_.prototype.openBracket=function(){return this.skipIfStartsWith("?")?this.skipIfStartsWith("xml")?_.isSpace(this._str[this._index])?this.declaration():(this.seek(-3),this.pi()):this.pi():this.skipIfStartsWith("!")?this.skipIfStartsWith("--")?this.comment():this.skipIfStartsWith("[CDATA[")?this.cdata():this.skipIfStartsWith("DOCTYPE")?this.doctype():void this.throwError("Invalid '!' in opening tag."):this.skipIfStartsWith("/")?this.closeTag():this.openTag()},_.prototype.declaration=function(){for(var T="",P="",I="";!this.eof();){if(this.skipSpace(),this.skipIfStartsWith("?>"))return{type:g.TokenType.Declaration,version:T,encoding:P,standalone:I};var R=c(this.attribute(),2),L=R[0],V=R[1];L==="version"?T=V:L==="encoding"?P=V:L==="standalone"?I=V:this.throwError("Invalid attribute name: "+L)}this.throwError("Missing declaration end symbol `?>`")},_.prototype.doctype=function(){var T="",P="";this.skipSpace();var I=this.takeUntil2("[",">",!0);return this.skipSpace(),this.skipIfStartsWith("PUBLIC")?(T=this.quotedString(),P=this.quotedString()):this.skipIfStartsWith("SYSTEM")&&(P=this.quotedString()),this.skipSpace(),this.skipIfStartsWith("[")&&(this.skipUntil("]"),this.skipIfStartsWith("]")||this.throwError("Missing end bracket of DTD internal subset")),this.skipSpace(),this.skipIfStartsWith(">")||this.throwError("Missing doctype end symbol `>`"),{type:g.TokenType.DocType,name:I,pubId:T,sysId:P}},_.prototype.pi=function(){var T=this.takeUntilStartsWith("?>",!0);if(this.eof()&&this.throwError("Missing processing instruction end symbol `?>`"),this.skipSpace(),this.skipIfStartsWith("?>"))return{type:g.TokenType.PI,target:T,data:""};var P=this.takeUntilStartsWith("?>");return this.eof()&&this.throwError("Missing processing instruction end symbol `?>`"),this.seek(2),{type:g.TokenType.PI,target:T,data:P}},_.prototype.text=function(){var T=this.takeUntil("<");return{type:g.TokenType.Text,data:T}},_.prototype.comment=function(){var T=this.takeUntilStartsWith("-->");return this.eof()&&this.throwError("Missing comment end symbol `-->`"),this.seek(3),{type:g.TokenType.Comment,data:T}},_.prototype.cdata=function(){var T=this.takeUntilStartsWith("]]>");return this.eof()&&this.throwError("Missing CDATA end symbol `]>`"),this.seek(3),{type:g.TokenType.CDATA,data:T}},_.prototype.openTag=function(){this.skipSpace();var T=this.takeUntil2(">","/",!0);if(this.skipSpace(),this.skipIfStartsWith(">"))return{type:g.TokenType.Element,name:T,attributes:[],selfClosing:!1};if(this.skipIfStartsWith("/>"))return{type:g.TokenType.Element,name:T,attributes:[],selfClosing:!0};for(var P=[];!this.eof();){if(this.skipSpace(),this.skipIfStartsWith(">"))return{type:g.TokenType.Element,name:T,attributes:P,selfClosing:!1};if(this.skipIfStartsWith("/>"))return{type:g.TokenType.Element,name:T,attributes:P,selfClosing:!0};var I=this.attribute();P.push(I)}this.throwError("Missing opening element tag end symbol `>`")},_.prototype.closeTag=function(){this.skipSpace();var T=this.takeUntil(">",!0);return this.skipSpace(),this.skipIfStartsWith(">")||this.throwError("Missing closing element tag end symbol `>`"),{type:g.TokenType.ClosingTag,name:T}},_.prototype.attribute=function(){this.skipSpace();var T=this.takeUntil("=",!0);return this.skipSpace(),this.skipIfStartsWith("=")||this.throwError("Missing equals sign before attribute value"),[T,this.quotedString()]},_.prototype.quotedString=function(){this.skipSpace();var T=this.take(1);_.isQuote(T)||this.throwError("Missing start quote character before quoted value");var P=this.takeUntil(T);return this.skipIfStartsWith(T)||this.throwError("Missing end quote character after quoted value"),P},_.prototype.eof=function(){return this._index>=this._length},_.prototype.skipIfStartsWith=function(T){var P=T.length;if(P===1)return this._str[this._index]===T&&(this._index++,!0);for(var I=0;Ithis._length&&(this._index=this._length)},_.prototype.skipSpace=function(){for(;!this.eof()&&_.isSpace(this._str[this._index]);)this._index++},_.prototype.take=function(T){if(T===1)return this._str[this._index++];var P=this._index;return this.seek(T),this._str.slice(P,this._index)},_.prototype.takeUntil=function(T,P){P===void 0&&(P=!1);for(var I=this._index;this._indexthis._index){V=I.index;break}throw this.err={line:R,col:this._index-L,index:this._index,str:this._str.substring(L,V)},new Error(T+` +Index: `+this.err.index+` +Ln: `+this.err.line+", Col: "+this.err.col+` +Input: `+this.err.str)},_.prototype[Symbol.iterator]=function(){return this._index=0,{next:(function(){var T=this.nextToken();return T.type===g.TokenType.EOF?{done:!0,value:null}:{done:!1,value:T}}).bind(this)}},_}();i.XMLStringLexer=v},function(o,i,l){var c=l(39);o.exports=new c({include:[l(182)]})},function(o,i,l){var c=l(39);o.exports=new c({include:[l(113)],implicit:[l(289),l(290),l(291),l(292)]})},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(91),g=l(1),v=l(3),_=l(77),T=l(109);function P(V,U){var j=R(V===void 0||I(V)?V:c.DefaultBuilderOptions),z=I(V)?U:V,$=T.createDocument();L($,j);var K=new _.XMLBuilderImpl($);return z!==void 0&&K.ele(z),K}function I(V){if(!g.isPlainObject(V))return!1;for(var U in V)if(V.hasOwnProperty(U)&&!c.XMLBuilderOptionKeys.has(U))return!1;return!0}function R(V){V===void 0&&(V={});var U=g.applyDefaults(V,c.DefaultBuilderOptions);if(U.convert.att.length===0||U.convert.ins.length===0||U.convert.text.length===0||U.convert.cdata.length===0||U.convert.comment.length===0)throw new Error("JS object converter strings cannot be zero length.");return U}function L(V,U,j){var z=V;z._xmlBuilderOptions=U,z._isFragment=j}i.builder=function(V,U){var j=R(I(V)?V:c.DefaultBuilderOptions),z=v.Guard.isNode(V)||g.isArray(V)?V:U;if(z===void 0)throw new Error("Invalid arguments.");if(g.isArray(z)){for(var $=[],K=0;K0)&&!(X=ne.next()).done;)le.push(X.value)}catch(ce){ee={error:ce}}finally{try{X&&!X.done&&(K=ne.return)&&K.call(ne)}finally{if(ee)throw ee.error}}return le},g=this&&this.__values||function(z){var $=typeof Symbol=="function"&&Symbol.iterator,K=$&&z[$],X=0;if(K)return K.call(z);if(z&&typeof z.length=="number")return{next:function(){return z&&X>=z.length&&(z=void 0),{value:z&&z[X++],done:!z}}};throw new TypeError($?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var v=l(91),_=l(1),T=l(217),P=l(2),I=l(3),R=l(0),L=l(109),V=l(7),U=l(276),j=function(){function z($){this._domNode=$}return Object.defineProperty(z.prototype,"node",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),Object.defineProperty(z.prototype,"options",{get:function(){return this._options},enumerable:!0,configurable:!0}),z.prototype.set=function($){return this._options=_.applyDefaults(_.applyDefaults(this._options,$,!0),v.DefaultBuilderOptions),this},z.prototype.ele=function($,K,X){var ee,ne,le,ce,ge,pe;if(_.isObject($))return new U.ObjectReader(this._options).parse(this,$);if($!==null&&/^\s*0&&($===void 0&&($=K.slice(ee+1)),K=K.slice(0,ee)),$===void 0)$=X?this._options.defaultNamespace.ele:this._options.defaultNamespace.att;else if($!==null&&$[0]==="@"){var ne=$.slice(1);if(($=this._options.namespaceAlias[ne])===void 0)throw new Error("Namespace alias `"+ne+"` is not defined. "+this._debugInfo())}return[$,K]},z.prototype._updateNamespace=function($){var K,X,ee,ne,le=this._domNode;if(I.Guard.isElementNode(le)&&$!==null&&le.namespaceURI!==$){var ce=c(R.namespace_extractQName(le.prefix?le.prefix+":"+le.localName:le.localName),2),ge=ce[0],pe=ce[1],we=R.create_element(this._doc,pe,$,ge);try{for(var Te=g(le.attributes),Ve=Te.next();!Ve.done;Ve=Te.next()){var Pe=Ve.value,je=Pe.prefix?Pe.prefix+":"+Pe.localName:Pe.localName,Je=c(R.namespace_extractQName(je),1)[0],it=Pe.namespaceURI;it===null&&Je!==null&&(it=le.lookupNamespaceURI(Je)),it===null?we.setAttribute(je,Pe.value):we.setAttributeNS(it,je,Pe.value)}}catch(qt){K={error:qt}}finally{try{Ve&&!Ve.done&&(X=Te.return)&&X.call(Te)}finally{if(K)throw K.error}}var Ge=le.parentNode;if(Ge===null)throw new Error("Parent node is null."+this._debugInfo());Ge.replaceChild(we,le),this._domNode=we;try{for(var Ke=g(le.childNodes),qe=Ke.next();!qe.done;qe=Ke.next()){var ut=qe.value.cloneNode(!0);if(we.appendChild(ut),I.Guard.isElementNode(ut)){var wt=c(R.namespace_extractQName(ut.prefix?ut.prefix+":"+ut.localName:ut.localName),1)[0],Et=we.lookupNamespaceURI(wt);new z(ut)._updateNamespace(Et)}}}catch(qt){ee={error:qt}}finally{try{qe&&!qe.done&&(ne=Ke.return)&&ne.call(Ke)}finally{if(ee)throw ee.error}}}},Object.defineProperty(z.prototype,"_doc",{get:function(){var $=this.node;if(I.Guard.isDocumentNode($))return $;var K=$.ownerDocument;if(!K)throw new Error("Owner document is null. "+this._debugInfo());return K},enumerable:!0,configurable:!0}),z.prototype._debugInfo=function($){var K=this.node,X=K.parentNode;$=$||K.nodeName;var ee=X?X.nodeName:"";return ee?"node: <"+$+">, parent: <"+ee+">":"node: <"+$+">"},Object.defineProperty(z.prototype,"_options",{get:function(){var $=this._doc;if($._xmlBuilderOptions===void 0)throw new Error("Builder options is not set.");return $._xmlBuilderOptions},set:function($){this._doc._xmlBuilderOptions=$},enumerable:!0,configurable:!0}),z}();i.XMLBuilderImpl=j},function(o,i,l){var c=l(11),g=l(117),v=c.WeakMap;o.exports=typeof v=="function"&&/native code/.test(g(v))},function(o,i,l){var c=l(46),g=l(82),v=l(85),_=l(18);o.exports=c("Reflect","ownKeys")||function(T){var P=g.f(_(T)),I=v.f;return I?P.concat(I(T)):P}},function(o,i,l){var c=l(16),g=l(15),v=l(18),_=l(61);o.exports=c?Object.defineProperties:function(T,P){v(T);for(var I,R=_(P),L=R.length,V=0;L>V;)g.f(T,I=R[V++],P[I]);return T}},function(o,i,l){var c=l(46);o.exports=c("document","documentElement")},function(o,i,l){var c=l(24),g=l(82).f,v={}.toString,_=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];o.exports.f=function(T){return _&&v.call(T)=="[object Window]"?function(P){try{return g(P)}catch{return _.slice()}}(T):g(c(T))}},function(o,i,l){var c=l(4),g=l(36).every,v=l(48),_=l(28),T=v("every"),P=_("every");c({target:"Array",proto:!0,forced:!T||!P},{every:function(I){return g(this,I,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(4),g=l(36).filter,v=l(63),_=l(28),T=v("filter"),P=_("filter");c({target:"Array",proto:!0,forced:!T||!P},{filter:function(I){return g(this,I,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(46);o.exports=c("navigator","userAgent")||""},function(o,i,l){var c=l(4),g=l(36).find,v=l(130),_=l(28),T=!0,P=_("find");"find"in[]&&Array(1).find(function(){T=!1}),c({target:"Array",proto:!0,forced:T||!P},{find:function(I){return g(this,I,arguments.length>1?arguments[1]:void 0)}}),v("find")},function(o,i,l){var c=l(131).IteratorPrototype,g=l(60),v=l(40),_=l(62),T=l(49),P=function(){return this};o.exports=function(I,R,L){var V=R+" Iterator";return I.prototype=g(c,{next:v(1,L)}),_(I,V,!1,!0),T[V]=P,I}},function(o,i,l){var c=l(8);o.exports=!c(function(){function g(){}return g.prototype.constructor=null,Object.getPrototypeOf(new g)!==g.prototype})},function(o,i,l){var c=l(13);o.exports=function(g){if(!c(g)&&g!==null)throw TypeError("Can't set "+String(g)+" as a prototype");return g}},function(o,i,l){var c=l(4),g=l(36).map,v=l(63),_=l(28),T=v("map"),P=_("map");c({target:"Array",proto:!0,forced:!T||!P},{map:function(I){return g(this,I,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(4),g=l(200).left,v=l(48),_=l(28),T=v("reduce"),P=_("reduce",{1:0});c({target:"Array",proto:!0,forced:!T||!P},{reduce:function(I){return g(this,I,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(127),g=l(27),v=l(41),_=l(26),T=function(P){return function(I,R,L,V){c(R);var U=g(I),j=v(U),z=_(U.length),$=P?z-1:0,K=P?-1:1;if(L<2)for(;;){if($ in j){V=j[$],$+=K;break}if($+=K,P?$<0:z<=$)throw TypeError("Reduce of empty array with no initial value")}for(;P?$>=0:z>$;$+=K)$ in j&&(V=R(V,j[$],$,U));return V}};o.exports={left:T(!1),right:T(!0)}},function(o,i,l){var c=l(4),g=l(36).some,v=l(48),_=l(28),T=v("some"),P=_("some");c({target:"Array",proto:!0,forced:!T||!P},{some:function(I){return g(this,I,arguments.length>1?arguments[1]:void 0)}})},function(o,i,l){var c=l(90),g=l(135);o.exports=c?{}.toString:function(){return"[object "+g(this)+"]"}},function(o,i){o.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(o,i,l){var c=l(8);o.exports=!c(function(){return Object.isExtensible(Object.preventExtensions({}))})},function(o,i,l){var c=l(5),g=l(49),v=c("iterator"),_=Array.prototype;o.exports=function(T){return T!==void 0&&(g.Array===T||_[v]===T)}},function(o,i,l){var c=l(135),g=l(49),v=l(5)("iterator");o.exports=function(_){if(_!=null)return _[v]||_["@@iterator"]||g[c(_)]}},function(o,i,l){var c=l(18);o.exports=function(g,v,_,T){try{return T?v(c(_)[0],_[1]):v(_)}catch(I){var P=g.return;throw P!==void 0&&c(P.call(g)),I}}},function(o,i,l){var c=l(5)("iterator"),g=!1;try{var v=0,_={next:function(){return{done:!!v++}},return:function(){g=!0}};_[c]=function(){return this},Array.from(_,function(){throw 2})}catch{}o.exports=function(T,P){if(!P&&!g)return!1;var I=!1;try{var R={};R[c]=function(){return{next:function(){return{done:I=!0}}}},T(R)}catch{}return I}},function(o,i,l){var c=l(13),g=l(133);o.exports=function(v,_,T){var P,I;return g&&typeof(P=_.constructor)=="function"&&P!==T&&c(I=P.prototype)&&I!==T.prototype&&g(v,I),v}},function(o,i,l){var c=l(25);o.exports=function(g,v,_){for(var T in v)c(g,T,v[T],_);return g}},function(o,i,l){var c=l(46),g=l(15),v=l(5),_=l(16),T=v("species");o.exports=function(P){var I=c(P),R=g.f;_&&I&&!I[T]&&R(I,T,{configurable:!0,get:function(){return this}})}},function(o,i,l){var c=this&&this.__generator||function(_,T){var P,I,R,L,V={label:0,sent:function(){if(1&R[0])throw R[1];return R[1]},trys:[],ops:[]};return L={next:U(0),throw:U(1),return:U(2)},typeof Symbol=="function"&&(L[Symbol.iterator]=function(){return this}),L;function U(j){return function(z){return function($){if(P)throw new TypeError("Generator is already executing.");for(;V;)try{if(P=1,I&&(R=2&$[0]?I.return:$[0]?I.throw||((R=I.return)&&R.call(I),0):I.next)&&!(R=R.call(I,$[1])).done)return R;switch(I=0,R&&($=[2&$[0],R.value]),$[0]){case 0:case 1:R=$;break;case 4:return V.label++,{value:$[1],done:!1};case 5:V.label++,I=$[1],$=[0];continue;case 7:$=V.ops.pop(),V.trys.pop();continue;default:if(R=V.trys,!((R=R.length>0&&R[R.length-1])||$[0]!==6&&$[0]!==2)){V=0;continue}if($[0]===3&&(!R||$[1]>R[0]&&$[1]=_.length&&(_=void 0),{value:_&&_[I++],done:!_}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var v=function(){function _(T){T===void 0&&(T=1e3),this._items=new Set,this._limit=T}return _.prototype.add=function(T){if(this._items.add(T),this._items.size>this._limit){var P=this._items.values().next();P.done||this._items.delete(P.value)}return this},_.prototype.delete=function(T){return this._items.delete(T)},_.prototype.has=function(T){return this._items.has(T)},_.prototype.clear=function(){this._items.clear()},Object.defineProperty(_.prototype,"size",{get:function(){return this._items.size},enumerable:!0,configurable:!0}),_.prototype.forEach=function(T,P){var I=this;this._items.forEach(function(R){return T.call(P,R,R,I)})},_.prototype.keys=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.keys())];case 1:return T.sent(),[2]}})},_.prototype.values=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.values())];case 1:return T.sent(),[2]}})},_.prototype.entries=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.entries())];case 1:return T.sent(),[2]}})},_.prototype[Symbol.iterator]=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items)];case 1:return T.sent(),[2]}})},Object.defineProperty(_.prototype,Symbol.toStringTag,{get:function(){return"FixedSizeSet"},enumerable:!0,configurable:!0}),_}();i.FixedSizeSet=v},function(o,i,l){var c=this&&this.__generator||function(_,T){var P,I,R,L,V={label:0,sent:function(){if(1&R[0])throw R[1];return R[1]},trys:[],ops:[]};return L={next:U(0),throw:U(1),return:U(2)},typeof Symbol=="function"&&(L[Symbol.iterator]=function(){return this}),L;function U(j){return function(z){return function($){if(P)throw new TypeError("Generator is already executing.");for(;V;)try{if(P=1,I&&(R=2&$[0]?I.return:$[0]?I.throw||((R=I.return)&&R.call(I),0):I.next)&&!(R=R.call(I,$[1])).done)return R;switch(I=0,R&&($=[2&$[0],R.value]),$[0]){case 0:case 1:R=$;break;case 4:return V.label++,{value:$[1],done:!1};case 5:V.label++,I=$[1],$=[0];continue;case 7:$=V.ops.pop(),V.trys.pop();continue;default:if(R=V.trys,!((R=R.length>0&&R[R.length-1])||$[0]!==6&&$[0]!==2)){V=0;continue}if($[0]===3&&(!R||$[1]>R[0]&&$[1]=_.length&&(_=void 0),{value:_&&_[I++],done:!_}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var v=function(){function _(T){T===void 0&&(T=1e3),this._items=new Map,this._limit=T}return _.prototype.get=function(T){return this._items.get(T)},_.prototype.set=function(T,P){if(this._items.set(T,P),this._items.size>this._limit){var I=this._items.keys().next();I.done||this._items.delete(I.value)}},_.prototype.delete=function(T){return this._items.delete(T)},_.prototype.has=function(T){return this._items.has(T)},_.prototype.clear=function(){this._items.clear()},Object.defineProperty(_.prototype,"size",{get:function(){return this._items.size},enumerable:!0,configurable:!0}),_.prototype.forEach=function(T,P){this._items.forEach(function(I,R){return T.call(P,R,I)})},_.prototype.keys=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.keys())];case 1:return T.sent(),[2]}})},_.prototype.values=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.values())];case 1:return T.sent(),[2]}})},_.prototype.entries=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items.entries())];case 1:return T.sent(),[2]}})},_.prototype[Symbol.iterator]=function(){return c(this,function(T){switch(T.label){case 0:return[5,g(this._items)];case 1:return T.sent(),[2]}})},Object.defineProperty(_.prototype,Symbol.toStringTag,{get:function(){return"ObjectCache"},enumerable:!0,configurable:!0}),_}();i.ObjectCache=v},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(v){v===void 0&&(v=1e3),this._items=new Map,this._limit=v}return g.prototype.check=function(v,_){if(this._items.get(v)===_)return!0;if(this._items.get(_)===v)return!1;var T=Math.random()<.5;if(T?this._items.set(v,_):this._items.set(_,v),this._items.size>this._limit){var P=this._items.keys().next();P.done||this._items.delete(P.value)}return T},g}();i.CompareCache=c},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(v){this._initialized=!1,this._value=void 0,this._initFunc=v}return Object.defineProperty(g.prototype,"value",{get:function(){return this._initialized||(this._value=this._initFunc(),this._initialized=!0),this._value},enumerable:!0,configurable:!0}),g}();i.Lazy=c},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function g(v){this._pointer=0,this._chars=Array.from(v),this._length=this._chars.length}return Object.defineProperty(g.prototype,"eof",{get:function(){return this._pointer>=this._length},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),g.prototype.codePoint=function(){if(this._codePoint===void 0)if(this.eof)this._codePoint=-1;else{var v=this._chars[this._pointer].codePointAt(0);this._codePoint=v!==void 0?v:-1}return this._codePoint},g.prototype.c=function(){return this._c===void 0&&(this._c=this.eof?"":this._chars[this._pointer]),this._c},g.prototype.remaining=function(){return this._remaining===void 0&&(this._remaining=this.eof?"":this._chars.slice(this._pointer+1).join("")),this._remaining},g.prototype.substring=function(){return this._substring===void 0&&(this._substring=this.eof?"":this._chars.slice(this._pointer).join("")),this._substring},Object.defineProperty(g.prototype,"pointer",{get:function(){return this._pointer},set:function(v){v!==this._pointer&&(this._pointer=v,this._codePoint=void 0,this._c=void 0,this._remaining=void 0,this._substring=void 0)},enumerable:!0,configurable:!0}),g}();i.StringWalker=c},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(218);i.MapWriter=c.MapWriter;var g=l(258);i.XMLWriter=g.XMLWriter;var v=l(67);i.ObjectWriter=v.ObjectWriter;var _=l(260);i.JSONWriter=_.JSONWriter;var T=l(261);i.YAMLWriter=T.YAMLWriter},function(o,i,l){l(19),l(219),l(20),l(22),l(23);var c,g=this&&this.__extends||(c=function(P,I){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(R,L){R.__proto__=L}||function(R,L){for(var V in L)L.hasOwnProperty(V)&&(R[V]=L[V])})(P,I)},function(P,I){function R(){this.constructor=P}c(P,I),P.prototype=I===null?Object.create(I):(R.prototype=I.prototype,new R)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(1),_=l(67),T=function(P){function I(R,L){var V=P.call(this,R)||this;return V._writerOptions=v.applyDefaults(L,{format:"map",wellFormed:!1,group:!1,verbose:!1}),V}return g(I,P),I.prototype.serialize=function(R){var L=v.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1,verbose:!1}),V=new _.ObjectWriter(this._builderOptions,L).serialize(R);return this._convertObject(V)},I.prototype._convertObject=function(R){if(v.isArray(R)){for(var L=0;L=51||!g(function(){var X=[];return X[j]=!1,X.concat()[0]!==X}),$=L("concat"),K=function(X){if(!_(X))return!1;var ee=X[j];return ee!==void 0?!!ee:v(X)};c({target:"Array",proto:!0,forced:!z||!$},{concat:function(X){var ee,ne,le,ce,ge,pe=T(this),we=R(pe,0),Te=0;for(ee=-1,le=arguments.length;ee9007199254740991)throw TypeError("Maximum allowed index exceeded");for(ne=0;ne=9007199254740991)throw TypeError("Maximum allowed index exceeded");I(we,Te++,ge)}return we.length=Te,we}})},function(o,i,l){var c=l(8);function g(v,_){return RegExp(v,_)}i.UNSUPPORTED_Y=c(function(){var v=g("a","y");return v.lastIndex=2,v.exec("abcd")!=null}),i.BROKEN_CARET=c(function(){var v=g("^r","gy");return v.lastIndex=2,v.exec("str")!=null})},function(o,i,l){var c=l(223);o.exports=function(g){if(c(g))throw TypeError("The method doesn't accept regular expressions");return g}},function(o,i,l){var c=l(13),g=l(42),v=l(5)("match");o.exports=function(_){var T;return c(_)&&((T=_[v])!==void 0?!!T:g(_)=="RegExp")}},function(o,i,l){var c=l(5)("match");o.exports=function(g){var v=/./;try{"/./"[g](v)}catch{try{return v[c]=!1,"/./"[g](v)}catch{}}return!1}},function(o,i,l){l(68);var c=l(25),g=l(8),v=l(5),_=l(93),T=l(21),P=v("species"),I=!g(function(){var j=/./;return j.exec=function(){var z=[];return z.groups={a:"7"},z},"".replace(j,"$
")!=="7"}),R="a".replace(/./,"$0")==="$0",L=v("replace"),V=!!/./[L]&&/./[L]("a","$0")==="",U=!g(function(){var j=/(?:)/,z=j.exec;j.exec=function(){return z.apply(this,arguments)};var $="ab".split(j);return $.length!==2||$[0]!=="a"||$[1]!=="b"});o.exports=function(j,z,$,K){var X=v(j),ee=!g(function(){var we={};return we[X]=function(){return 7},""[j](we)!=7}),ne=ee&&!g(function(){var we=!1,Te=/a/;return j==="split"&&((Te={}).constructor={},Te.constructor[P]=function(){return Te},Te.flags="",Te[X]=/./[X]),Te.exec=function(){return we=!0,null},Te[X](""),!we});if(!ee||!ne||j==="replace"&&(!I||!R||V)||j==="split"&&!U){var le=/./[X],ce=$(X,""[j],function(we,Te,Ve,Pe,je){return Te.exec===_?ee&&!je?{done:!0,value:le.call(Te,Ve,Pe)}:{done:!0,value:we.call(Ve,Te,Pe)}:{done:!1}},{REPLACE_KEEPS_$0:R,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:V}),ge=ce[0],pe=ce[1];c(String.prototype,j,ge),c(RegExp.prototype,X,z==2?function(we,Te){return pe.call(we,this,Te)}:function(we){return pe.call(we,this)})}K&&T(RegExp.prototype[X],"sham",!0)}},function(o,i,l){var c=l(137).charAt;o.exports=function(g,v,_){return v+(_?c(g,v).length:1)}},function(o,i,l){var c=l(42),g=l(93);o.exports=function(v,_){var T=v.exec;if(typeof T=="function"){var P=T.call(v,_);if(typeof P!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return P}if(c(v)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return g.call(v,_)}},function(o,i,l){(function(c){Object.defineProperty(i,"__esModule",{value:!0});var g=l(96);i.forgivingBase64Encode=function(v){return c.from(v).toString("base64")},i.forgivingBase64Decode=function(v){return v===""?"":((v=v.replace(g.ASCIIWhiteSpace,"")).length%4==0&&(v.endsWith("==")?v=v.substr(0,v.length-2):v.endsWith("=")&&(v=v.substr(0,v.length-1))),v.length%4==1?null:/[0-9A-Za-z+/]/.test(v)?c.from(v,"base64").toString("utf8"):null)}}).call(this,l(145).Buffer)},function(o,i,l){i.byteLength=function(L){var V=I(L),U=V[0],j=V[1];return 3*(U+j)/4-j},i.toByteArray=function(L){var V,U,j=I(L),z=j[0],$=j[1],K=new v(function(ne,le,ce){return 3*(le+ce)/4-ce}(0,z,$)),X=0,ee=$>0?z-4:z;for(U=0;U>16&255,K[X++]=V>>8&255,K[X++]=255&V;return $===2&&(V=g[L.charCodeAt(U)]<<2|g[L.charCodeAt(U+1)]>>4,K[X++]=255&V),$===1&&(V=g[L.charCodeAt(U)]<<10|g[L.charCodeAt(U+1)]<<4|g[L.charCodeAt(U+2)]>>2,K[X++]=V>>8&255,K[X++]=255&V),K},i.fromByteArray=function(L){for(var V,U=L.length,j=U%3,z=[],$=0,K=U-j;$K?K:$+16383));return j===1?(V=L[U-1],z.push(c[V>>2]+c[V<<4&63]+"==")):j===2&&(V=(L[U-2]<<8)+L[U-1],z.push(c[V>>10]+c[V>>4&63]+c[V<<2&63]+"=")),z.join("")};for(var c=[],g=[],v=typeof Uint8Array<"u"?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=0,P=_.length;T0)throw new Error("Invalid string. Length must be a multiple of 4");var U=L.indexOf("=");return U===-1&&(U=V),[U,U===V?0:4-U%4]}function R(L,V,U){for(var j,z,$=[],K=V;K>18&63]+c[z>>12&63]+c[z>>6&63]+c[63&z]);return $.join("")}g[45]=62,g[95]=63},function(o,i){i.read=function(l,c,g,v,_){var T,P,I=8*_-v-1,R=(1<>1,V=-7,U=g?_-1:0,j=g?-1:1,z=l[c+U];for(U+=j,T=z&(1<<-V)-1,z>>=-V,V+=I;V>0;T=256*T+l[c+U],U+=j,V-=8);for(P=T&(1<<-V)-1,T>>=-V,V+=v;V>0;P=256*P+l[c+U],U+=j,V-=8);if(T===0)T=1-L;else{if(T===R)return P?NaN:1/0*(z?-1:1);P+=Math.pow(2,v),T-=L}return(z?-1:1)*P*Math.pow(2,T-v)},i.write=function(l,c,g,v,_,T){var P,I,R,L=8*T-_-1,V=(1<>1,j=_===23?Math.pow(2,-24)-Math.pow(2,-77):0,z=v?0:T-1,$=v?1:-1,K=c<0||c===0&&1/c<0?1:0;for(c=Math.abs(c),isNaN(c)||c===1/0?(I=isNaN(c)?1:0,P=V):(P=Math.floor(Math.log(c)/Math.LN2),c*(R=Math.pow(2,-P))<1&&(P--,R*=2),(c+=P+U>=1?j/R:j*Math.pow(2,1-U))*R>=2&&(P++,R/=2),P+U>=V?(I=0,P=V):P+U>=1?(I=(c*R-1)*Math.pow(2,_),P+=U):(I=c*Math.pow(2,U-1)*Math.pow(2,_),P=0));_>=8;l[g+z]=255&I,z+=$,I/=256,_-=8);for(P=P<<_|I,L+=_;L>0;l[g+z]=255&P,z+=$,P/=256,L-=8);l[g+z-$]|=128*K}},function(o,i){var l={}.toString;o.exports=Array.isArray||function(c){return l.call(c)=="[object Array]"}},function(o,i,l){var c=this&&this.__values||function(_){var T=typeof Symbol=="function"&&Symbol.iterator,P=T&&_[T],I=0;if(P)return P.call(_);if(_&&typeof _.length=="number")return{next:function(){return _&&I>=_.length&&(_=void 0),{value:_&&_[I++],done:!_}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(1);function v(_){var T,P;if(_===null||g.isString(_)||g.isNumber(_))return _;if(g.isArray(_)){var I=new Array;try{for(var R=c(_),L=R.next();!L.done;L=R.next()){var V=L.value;I.push(v(V))}}catch(z){T={error:z}}finally{try{L&&!L.done&&(P=R.return)&&P.call(R)}finally{if(T)throw T.error}}return I}if(g.isObject(_)){I=new Map;for(var U in _)if(_.hasOwnProperty(U)){var j=_[U];I.set(U,v(j))}return I}return _}i.parseJSONFromBytes=function(_){var T=g.utf8Decode(_);return JSON.parse.call(void 0,T)},i.serializeJSONToBytes=function(_){var T=JSON.stringify.call(void 0,_);return g.utf8Encode(T)},i.parseJSONIntoInfraValues=function(_){return v(JSON.parse.call(void 0,_))},i.convertAJSONDerivedJavaScriptValueToAnInfraValue=v},function(o,i,l){var c=this&&this.__generator||function(P,I){var R,L,V,U,j={label:0,sent:function(){if(1&V[0])throw V[1];return V[1]},trys:[],ops:[]};return U={next:z(0),throw:z(1),return:z(2)},typeof Symbol=="function"&&(U[Symbol.iterator]=function(){return this}),U;function z($){return function(K){return function(X){if(R)throw new TypeError("Generator is already executing.");for(;j;)try{if(R=1,L&&(V=2&X[0]?L.return:X[0]?L.throw||((V=L.return)&&V.call(L),0):L.next)&&!(V=V.call(L,X[1])).done)return V;switch(L=0,V&&(X=[2&X[0],V.value]),X[0]){case 0:case 1:V=X;break;case 4:return j.label++,{value:X[1],done:!1};case 5:j.label++,L=X[1],X=[0];continue;case 7:X=j.ops.pop(),j.trys.pop();continue;default:if(V=j.trys,!((V=V.length>0&&V[V.length-1])||X[0]!==6&&X[0]!==2)){j=0;continue}if(X[0]===3&&(!V||X[1]>V[0]&&X[1]0)&&!(L=U.next()).done;)j.push(L.value)}catch(z){V={error:z}}finally{try{L&&!L.done&&(R=U.return)&&R.call(U)}finally{if(V)throw V.error}}return j},v=this&&this.__spread||function(){for(var P=[],I=0;I=P.length&&(P=void 0),{value:P&&P[L++],done:!P}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var T=l(1);i.append=function(P,I){P.push(I)},i.extend=function(P,I){P.push.apply(P,v(I))},i.prepend=function(P,I){P.unshift(I)},i.replace=function(P,I,R){var L,V,U=0;try{for(var j=_(P),z=j.next();!z.done;z=j.next()){var $=z.value;if(T.isFunction(I))I.call(null,$)&&(P[U]=R);else if($===I)return void(P[U]=R);U++}}catch(K){L={error:K}}finally{try{z&&!z.done&&(V=j.return)&&V.call(j)}finally{if(L)throw L.error}}},i.insert=function(P,I,R){P.splice(R,0,I)},i.remove=function(P,I){for(var R=P.length;R--;){var L=P[R];if(T.isFunction(I))I.call(null,L)&&P.splice(R,1);else if(L===I)return void P.splice(R,1)}},i.empty=function(P){P.length=0},i.contains=function(P,I){var R,L;try{for(var V=_(P),U=V.next();!U.done;U=V.next()){var j=U.value;if(T.isFunction(I)){if(I.call(null,j))return!0}else if(j===I)return!0}}catch(z){R={error:z}}finally{try{U&&!U.done&&(L=V.return)&&L.call(V)}finally{if(R)throw R.error}}return!1},i.size=function(P,I){var R,L;if(I===void 0)return P.length;var V=0;try{for(var U=_(P),j=U.next();!j.done;j=U.next()){var z=j.value;I.call(null,z)&&V++}}catch($){R={error:$}}finally{try{j&&!j.done&&(L=U.return)&&L.call(U)}finally{if(R)throw R.error}}return V},i.isEmpty=function(P){return P.length===0},i.forEach=function(P,I){var R,L,V,U,j,z;return c(this,function($){switch($.label){case 0:return I!==void 0?[3,2]:[5,_(P)];case 1:return $.sent(),[3,9];case 2:$.trys.push([2,7,8,9]),R=_(P),L=R.next(),$.label=3;case 3:return L.done?[3,6]:(V=L.value,I.call(null,V)?[4,V]:[3,5]);case 4:$.sent(),$.label=5;case 5:return L=R.next(),[3,3];case 6:return[3,9];case 7:return U=$.sent(),j={error:U},[3,9];case 8:try{L&&!L.done&&(z=R.return)&&z.call(R)}finally{if(j)throw j.error}return[7];case 9:return[2]}})},i.clone=function(P){return new(Array.bind.apply(Array,v([void 0],P)))},i.sortInAscendingOrder=function(P,I){return P.sort(function(R,L){return I.call(null,R,L)?-1:1})},i.sortInDescendingOrder=function(P,I){return P.sort(function(R,L){return I.call(null,R,L)?1:-1})}},function(o,i,l){var c=this&&this.__generator||function(P,I){var R,L,V,U,j={label:0,sent:function(){if(1&V[0])throw V[1];return V[1]},trys:[],ops:[]};return U={next:z(0),throw:z(1),return:z(2)},typeof Symbol=="function"&&(U[Symbol.iterator]=function(){return this}),U;function z($){return function(K){return function(X){if(R)throw new TypeError("Generator is already executing.");for(;j;)try{if(R=1,L&&(V=2&X[0]?L.return:X[0]?L.throw||((V=L.return)&&V.call(L),0):L.next)&&!(V=V.call(L,X[1])).done)return V;switch(L=0,V&&(X=[2&X[0],V.value]),X[0]){case 0:case 1:V=X;break;case 4:return j.label++,{value:X[1],done:!1};case 5:j.label++,L=X[1],X=[0];continue;case 7:X=j.ops.pop(),j.trys.pop();continue;default:if(V=j.trys,!((V=V.length>0&&V[V.length-1])||X[0]!==6&&X[0]!==2)){j=0;continue}if(X[0]===3&&(!V||X[1]>V[0]&&X[1]=P.length&&(P=void 0),{value:P&&P[L++],done:!P}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")},v=this&&this.__read||function(P,I){var R=typeof Symbol=="function"&&P[Symbol.iterator];if(!R)return P;var L,V,U=R.call(P),j=[];try{for(;(I===void 0||I-- >0)&&!(L=U.next()).done;)j.push(L.value)}catch(z){V={error:z}}finally{try{L&&!L.done&&(R=U.return)&&R.call(U)}finally{if(V)throw V.error}}return j},_=this&&this.__spread||function(){for(var P=[],I=0;I0&&U[U.length-1])||ee[0]!==6&&ee[0]!==2)){z=0;continue}if(ee[0]===3&&(!U||ee[1]>U[0]&&ee[1]=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")},v=this&&this.__read||function(I,R){var L=typeof Symbol=="function"&&I[Symbol.iterator];if(!L)return I;var V,U,j=L.call(I),z=[];try{for(;(R===void 0||R-- >0)&&!(V=j.next()).done;)z.push(V.value)}catch($){U={error:$}}finally{try{V&&!V.done&&(L=j.return)&&L.call(j)}finally{if(U)throw U.error}}return z},_=this&&this.__spread||function(){for(var I=[],R=0;R=z.length&&(z=void 0),{value:z&&z[X++],done:!z}}};throw new TypeError($?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(96),v=l(147),_=l(146),T=l(1);function P(z,$){for(var K=0;;){var X=K=65&&ce<=90?String.fromCodePoint(ce+32):le}}catch(ge){$={error:ge}}finally{try{ne&&!ne.done&&(K=ee.return)&&K.call(ee)}finally{if($)throw $.error}}return X}function V(z){return z.replace(/^[\t\n\f\r ]+/,"").replace(/[\t\n\f\r ]+$/,"")}function U(z,$,K){if(!T.isArray($))return U(z,Array.from($),K);for(var X="";K.position<$.length&&z.call(null,$[K.position]);)X+=$[K.position],K.position++;return X}function j(z,$){U(function(K){return g.ASCIIWhiteSpace.test(K)},z,$)}i.isCodeUnitPrefix=P,i.isCodeUnitLessThan=function(z,$){if(P($,z))return!1;if(P(z,$))return!0;for(var K=0;K=97&&ce<=122?String.fromCodePoint(ce-32):le}}catch(ge){$={error:ge}}finally{try{ne&&!ne.done&&(K=ee.return)&&K.call(ee)}finally{if($)throw $.error}}return X},i.asciiCaseInsensitiveMatch=function(z,$){return L(z)===L($)},i.asciiEncode=function(z){return console.assert(R(z),"asciiEncode requires an ASCII string."),I(z)},i.asciiDecode=function(z){var $,K;try{for(var X=c(z),ee=X.next();!ee.done;ee=X.next()){var ne=ee.value;console.assert(_.isASCIIByte(ne),"asciiDecode requires an ASCII byte sequence.")}}catch(le){$={error:le}}finally{try{ee&&!ee.done&&(K=X.return)&&K.call(X)}finally{if($)throw $.error}}return v.isomorphicDecode(z)},i.stripNewlines=function(z){return z.replace(/[\n\r]/g,"")},i.normalizeNewlines=function(z){return z.replace(/\r\n/g,` +`).replace(/\r/g,` +`)},i.stripLeadingAndTrailingASCIIWhitespace=V,i.stripAndCollapseASCIIWhitespace=function(z){return V(z.replace(/[\t\n\f\r ]{2,}/g," "))},i.collectASequenceOfCodePoints=U,i.skipASCIIWhitespace=j,i.strictlySplit=function z($,K){if(!T.isArray($))return z(Array.from($),K);var X={position:0},ee=[],ne=U(function(le){return K!==le},$,X);for(ee.push(ne);X.position<$.length;)console.assert($[X.position]===K,"strictlySplit found no delimiter in input string."),X.position++,ne=U(function(le){return K!==le},$,X),ee.push(ne);return ee},i.splitAStringOnASCIIWhitespace=function z($){if(!T.isArray($))return z(Array.from($));var K={position:0},X=[];for(j($,K);K.position<$.length;){var ee=U(function(ne){return!g.ASCIIWhiteSpace.test(ne)},$,K);X.push(ee),j($,K)}return X},i.splitAStringOnCommas=function z($){if(!T.isArray($))return z(Array.from($));for(var K={position:0},X=[];K.position<$.length;){var ee=U(function(ne){return ne!==","},$,K);X.push(V(ee)),K.position<$.length&&(console.assert($[K.position]===",","splitAStringOnCommas found no delimiter in input string."),K.position++)}return X},i.concatenate=function(z,$){return $===void 0&&($=""),z.length===0?"":z.join($)}},function(o,i,l){var c=this&&this.__values||function(v){var _=typeof Symbol=="function"&&Symbol.iterator,T=_&&v[_],P=0;if(T)return T.call(v);if(v&&typeof v.length=="number")return{next:function(){return v&&P>=v.length&&(v=void 0),{value:v&&v[P++],done:!v}}};throw new TypeError(_?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(97);i.abort_add=function(v,_){_._abortedFlag||_._abortAlgorithms.add(v)},i.abort_remove=function(v,_){_._abortAlgorithms.delete(v)},i.abort_signalAbort=function(v){var _,T;if(!v._abortedFlag){v._abortedFlag=!0;try{for(var P=c(v._abortAlgorithms),I=P.next();!I.done;I=P.next())I.value.call(v)}catch(R){_={error:R}}finally{try{I&&!I.done&&(T=P.return)&&T.call(P)}finally{if(_)throw _.error}}v._abortAlgorithms.clear(),g.event_fireAnEvent("abort",v)}}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(150),g=function(){function v(){}return v.asNode=function(_){if(c.Guard.isNode(_))return _;throw new Error("Invalid object. Node expected.")},v}();i.Cast=g},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function v(){}return Object.defineProperty(v.prototype,"size",{get:function(){return 0},enumerable:!0,configurable:!0}),v.prototype.add=function(_){throw new Error("Cannot add to an empty set.")},v.prototype.clear=function(){},v.prototype.delete=function(_){return!1},v.prototype.forEach=function(_,T){},v.prototype.has=function(_){return!1},v.prototype[Symbol.iterator]=function(){return new g},v.prototype.entries=function(){return new g},v.prototype.keys=function(){return new g},v.prototype.values=function(){return new g},Object.defineProperty(v.prototype,Symbol.toStringTag,{get:function(){return"EmptySet"},enumerable:!0,configurable:!0}),v}();i.EmptySet=c;var g=function(){function v(){}return v.prototype[Symbol.iterator]=function(){return this},v.prototype.next=function(){return{done:!0,value:null}},v}()},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),function(c){c[c.SchemeStart=0]="SchemeStart",c[c.Scheme=1]="Scheme",c[c.NoScheme=2]="NoScheme",c[c.SpecialRelativeOrAuthority=3]="SpecialRelativeOrAuthority",c[c.PathOrAuthority=4]="PathOrAuthority",c[c.Relative=5]="Relative",c[c.RelativeSlash=6]="RelativeSlash",c[c.SpecialAuthoritySlashes=7]="SpecialAuthoritySlashes",c[c.SpecialAuthorityIgnoreSlashes=8]="SpecialAuthorityIgnoreSlashes",c[c.Authority=9]="Authority",c[c.Host=10]="Host",c[c.Hostname=11]="Hostname",c[c.Port=12]="Port",c[c.File=13]="File",c[c.FileSlash=14]="FileSlash",c[c.FileHost=15]="FileHost",c[c.PathStart=16]="PathStart",c[c.Path=17]="Path",c[c.CannotBeABaseURLPath=18]="CannotBeABaseURLPath",c[c.Query=19]="Query",c[c.Fragment=20]="Fragment"}(i.ParserState||(i.ParserState={})),i.OpaqueOrigin=["","",null,null]},function(o,i,l){var c=l(245),g=l(247);function v(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}i.parse=ee,i.resolve=function(ne,le){return ee(ne,!1,!0).resolve(le)},i.resolveObject=function(ne,le){return ne?ee(ne,!1,!0).resolveObject(le):le},i.format=function(ne){return g.isString(ne)&&(ne=ee(ne)),ne instanceof v?ne.format():v.prototype.format.call(ne)},i.Url=v;var _=/^([a-z0-9.+-]+:)/i,T=/:[0-9]*$/,P=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,I=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",` +`," "]),R=["'"].concat(I),L=["%","/","?",";","#"].concat(R),V=["/","?","#"],U=/^[+a-z0-9A-Z_-]{0,63}$/,j=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,z={javascript:!0,"javascript:":!0},$={javascript:!0,"javascript:":!0},K={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},X=l(248);function ee(ne,le,ce){if(ne&&g.isObject(ne)&&ne instanceof v)return ne;var ge=new v;return ge.parse(ne,le,ce),ge}v.prototype.parse=function(ne,le,ce){if(!g.isString(ne))throw new TypeError("Parameter 'url' must be a string, not "+typeof ne);var ge=ne.indexOf("?"),pe=ge!==-1&&ge127?Jt+="x":Jt+=$t[Dn];if(!Jt.match(U)){var xn=Et.slice(0,qe),et=Et.slice(qe+1),Me=$t.match(j);Me&&(xn.push(Me[1]),et.unshift(Me[2])),et.length&&(Te="/"+et.join(".")+Te),this.hostname=xn.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),wt||(this.hostname=c.toASCII(this.hostname));var ct=this.port?":"+this.port:"",st=this.hostname||"";this.host=st+ct,this.href+=this.host,wt&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),Te[0]!=="/"&&(Te="/"+Te))}if(!z[je])for(qe=0,qt=R.length;qe0)&&ce.host.split("@"))&&(ce.auth=Me.shift(),ce.host=ce.hostname=Me.shift())),ce.search=ne.search,ce.query=ne.query,g.isNull(ce.pathname)&&g.isNull(ce.search)||(ce.path=(ce.pathname?ce.pathname:"")+(ce.search?ce.search:"")),ce.href=ce.format(),ce;if(!$t.length)return ce.pathname=null,ce.search?ce.path="/"+ce.search:ce.path=null,ce.href=ce.format(),ce;for(var Dn=$t.slice(-1)[0],Nn=(ce.host||ne.host||$t.length>1)&&(Dn==="."||Dn==="..")||Dn==="",xn=0,et=$t.length;et>=0;et--)(Dn=$t[et])==="."?$t.splice(et,1):Dn===".."?($t.splice(et,1),xn++):xn&&($t.splice(et,1),xn--);if(!Et&&!qt)for(;xn--;xn)$t.unshift("..");!Et||$t[0]===""||$t[0]&&$t[0].charAt(0)==="/"||$t.unshift(""),Nn&&$t.join("/").substr(-1)!=="/"&&$t.push("");var Me,ct=$t[0]===""||$t[0]&&$t[0].charAt(0)==="/";return Jt&&(ce.hostname=ce.host=ct?"":$t.length?$t.shift():"",(Me=!!(ce.host&&ce.host.indexOf("@")>0)&&ce.host.split("@"))&&(ce.auth=Me.shift(),ce.host=ce.hostname=Me.shift())),(Et=Et||ce.host&&$t.length)&&!ct&&$t.unshift(""),$t.length?ce.pathname=$t.join("/"):(ce.pathname=null,ce.path=null),g.isNull(ce.pathname)&&g.isNull(ce.search)||(ce.path=(ce.pathname?ce.pathname:"")+(ce.search?ce.search:"")),ce.auth=ne.auth||ce.auth,ce.slashes=ce.slashes||ne.slashes,ce.href=ce.format(),ce},v.prototype.parseHost=function(){var ne=this.host,le=T.exec(ne);le&&((le=le[0])!==":"&&(this.port=le.substr(1)),ne=ne.substr(0,ne.length-le.length)),ne&&(this.hostname=ne)}},function(o,i,l){(function(c,g){var v;/*! https://mths.be/punycode v1.4.1 by @mathias */(function(_){i&&i.nodeType,c&&c.nodeType;var T=typeof g=="object"&&g;T.global!==T&&T.window!==T&&T.self;var P,I=2147483647,R=/^xn--/,L=/[^\x20-\x7E]/,V=/[\x2E\u3002\uFF0E\uFF61]/g,U={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},j=Math.floor,z=String.fromCharCode;function $(we){throw new RangeError(U[we])}function K(we,Te){for(var Ve=we.length,Pe=[];Ve--;)Pe[Ve]=Te(we[Ve]);return Pe}function X(we,Te){var Ve=we.split("@"),Pe="";return Ve.length>1&&(Pe=Ve[0]+"@",we=Ve[1]),Pe+K((we=we.replace(V,".")).split("."),Te).join(".")}function ee(we){for(var Te,Ve,Pe=[],je=0,Je=we.length;je=55296&&Te<=56319&&je65535&&(Ve+=z((Te-=65536)>>>10&1023|55296),Te=56320|1023&Te),Ve+=z(Te)}).join("")}function le(we,Te){return we+22+75*(we<26)-((Te!=0)<<5)}function ce(we,Te,Ve){var Pe=0;for(we=Ve?j(we/700):we>>1,we+=j(we/Te);we>455;Pe+=36)we=j(we/35);return j(Pe+36*we/(we+38))}function ge(we){var Te,Ve,Pe,je,Je,it,Ge,Ke,qe,ut,wt,Et=[],qt=we.length,$t=0,Jt=128,Dn=72;for((Ve=we.lastIndexOf("-"))<0&&(Ve=0),Pe=0;Pe=128&&$("not-basic"),Et.push(we.charCodeAt(Pe));for(je=Ve>0?Ve+1:0;je=qt&&$("invalid-input"),((Ke=(wt=we.charCodeAt(je++))-48<10?wt-22:wt-65<26?wt-65:wt-97<26?wt-97:36)>=36||Ke>j((I-$t)/it))&&$("overflow"),$t+=Ke*it,!(Ke<(qe=Ge<=Dn?1:Ge>=Dn+26?26:Ge-Dn));Ge+=36)it>j(I/(ut=36-qe))&&$("overflow"),it*=ut;Dn=ce($t-Je,Te=Et.length+1,Je==0),j($t/Te)>I-Jt&&$("overflow"),Jt+=j($t/Te),$t%=Te,Et.splice($t++,0,Jt)}return ne(Et)}function pe(we){var Te,Ve,Pe,je,Je,it,Ge,Ke,qe,ut,wt,Et,qt,$t,Jt,Dn=[];for(Et=(we=ee(we)).length,Te=128,Ve=0,Je=72,it=0;it=Te&&wtj((I-Ve)/(qt=Pe+1))&&$("overflow"),Ve+=(Ge-Te)*qt,Te=Ge,it=0;itI&&$("overflow"),wt==Te){for(Ke=Ve,qe=36;!(Ke<(ut=qe<=Je?1:qe>=Je+26?26:qe-Je));qe+=36)Jt=Ke-ut,$t=36-ut,Dn.push(z(le(ut+Jt%$t,0))),Ke=j(Jt/$t);Dn.push(z(le(Ke,0))),Je=ce(Ve,qt,Pe==je),Ve=0,++Pe}++Ve,++Te}return Dn.join("")}P={version:"1.4.1",ucs2:{decode:ee,encode:ne},decode:ge,encode:pe,toASCII:function(we){return X(we,function(Te){return L.test(Te)?"xn--"+pe(Te):Te})},toUnicode:function(we){return X(we,function(Te){return R.test(Te)?ge(Te.slice(4).toLowerCase()):Te})}},(v=(function(){return P}).call(i,l,i,c))===void 0||(c.exports=v)})()}).call(this,l(246)(o),l(78))},function(o,i){o.exports=function(l){return l.webpackPolyfill||(l.deprecate=function(){},l.paths=[],l.children||(l.children=[]),Object.defineProperty(l,"loaded",{enumerable:!0,get:function(){return l.l}}),Object.defineProperty(l,"id",{enumerable:!0,get:function(){return l.i}}),l.webpackPolyfill=1),l}},function(o,i,l){o.exports={isString:function(c){return typeof c=="string"},isObject:function(c){return typeof c=="object"&&c!==null},isNull:function(c){return c===null},isNullOrUndefined:function(c){return c==null}}},function(o,i,l){i.decode=i.parse=l(249),i.encode=i.stringify=l(250)},function(o,i,l){function c(v,_){return Object.prototype.hasOwnProperty.call(v,_)}o.exports=function(v,_,T,P){_=_||"&",T=T||"=";var I={};if(typeof v!="string"||v.length===0)return I;var R=/\+/g;v=v.split(_);var L=1e3;P&&typeof P.maxKeys=="number"&&(L=P.maxKeys);var V=v.length;L>0&&V>L&&(V=L);for(var U=0;U=0?(j=X.substr(0,ee),z=X.substr(ee+1)):(j=X,z=""),$=decodeURIComponent(j),K=decodeURIComponent(z),c(I,$)?g(I[$])?I[$].push(K):I[$]=[I[$],K]:I[$]=K}return I};var g=Array.isArray||function(v){return Object.prototype.toString.call(v)==="[object Array]"}},function(o,i,l){var c=function(T){switch(typeof T){case"string":return T;case"boolean":return T?"true":"false";case"number":return isFinite(T)?T:"";default:return""}};o.exports=function(T,P,I,R){return P=P||"&",I=I||"=",T===null&&(T=void 0),typeof T=="object"?v(_(T),function(L){var V=encodeURIComponent(c(L))+I;return g(T[L])?v(T[L],function(U){return V+encodeURIComponent(c(U))}).join(P):V+encodeURIComponent(c(T[L]))}).join(P):R?encodeURIComponent(c(R))+I+encodeURIComponent(c(T)):""};var g=Array.isArray||function(T){return Object.prototype.toString.call(T)==="[object Array]"};function v(T,P){if(T.map)return T.map(P);for(var I=[],R=0;R=_.length&&(_=void 0),{value:_&&_[I++],done:!_}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(1);function v(_){return g.isBoolean(_)?_:_.capture||!1}i.eventTarget_flatten=v,i.eventTarget_flattenMore=function(_){var T=v(_),P=!1,I=!1;return g.isBoolean(_)||(P=_.once||!1,I=_.passive||!1),[T,I,P]},i.eventTarget_addEventListener=function(_,T){if(T.callback!==null){for(var P=0;P<_._eventListenerList.length;P++){var I=_._eventListenerList[P];if(I.type===T.type&&I.callback.handleEvent===T.callback.handleEvent&&I.capture===T.capture)return}_._eventListenerList.push(T)}},i.eventTarget_removeEventListener=function(_,T,P){T.removed=!0,_._eventListenerList.splice(P,1)},i.eventTarget_removeAllEventListeners=function(_){var T,P;try{for(var I=c(_._eventListenerList),R=I.next();!R.done;R=I.next())R.value.removed=!0}catch(L){T={error:L}}finally{try{R&&!R.done&&(P=I.return)&&P.call(I)}finally{if(T)throw T.error}}_._eventListenerList.length=0}},function(o,i,l){var c=this&&this.__values||function(_){var T=typeof Symbol=="function"&&Symbol.iterator,P=T&&_[T],I=0;if(P)return P.call(_);if(_&&typeof _.length=="number")return{next:function(){return _&&I>=_.length&&(_=void 0),{value:_&&_[I++],done:!_}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(1),v=l(29);i.parentNode_convertNodesIntoANode=function(_,T){for(var P,I,R=null,L=0;L<_.length;L++){var V=_[L];if(g.isString(V)){var U=v.create_text(T,V);_[L]=U}}if(_.length===1)R=_[0];else{var j=R=v.create_documentFragment(T);try{for(var z=c(_),$=z.next();!$.done;$=z.next())V=$.value,j.appendChild(V)}catch(K){P={error:K}}finally{try{$&&!$.done&&(I=z.return)&&I.call(z)}finally{if(P)throw P.error}}}return R}},function(o,i,l){var c=this&&this.__values||function(le){var ce=typeof Symbol=="function"&&Symbol.iterator,ge=ce&&le[ce],pe=0;if(ge)return ge.call(le);if(le&&typeof le.length=="number")return{next:function(){return le&&pe>=le.length&&(le=void 0),{value:le&&le[pe++],done:!le}}};throw new TypeError(ce?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(le,ce){var ge=typeof Symbol=="function"&&le[Symbol.iterator];if(!ge)return le;var pe,we,Te=ge.call(le),Ve=[];try{for(;(ce===void 0||ce-- >0)&&!(pe=Te.next()).done;)Ve.push(pe.value)}catch(Pe){we={error:Pe}}finally{try{pe&&!pe.done&&(ge=Te.return)&&ge.call(Te)}finally{if(we)throw we.error}}return Ve},v=this&&this.__spread||function(){for(var le=[],ce=0;ce0;$t--){var Jt;if(ee(Jt=qt[$t],le)){Et=Jt;break}}var Dn,Nn,xn=[];try{for(var et=c(Ke._children),Me=et.next();!Me.done;Me=et.next())if(X(mn=Me.value,le)){if(P.Guard.isDocumentTypeNode(mn))throw new T.HierarchyRequestError;xn.push(mn)}}catch(Pn){pe={error:Pn}}finally{try{Me&&!Me.done&&(we=et.return)&&we.call(et)}finally{if(pe)throw pe.error}}if(R.tree_isAncestorOf(it,je,!0))Dn=je,Nn=Je;else{for(var ct=je;ct._parent!==null&&!R.tree_isAncestorOf(it,ct._parent);)ct=ct._parent;if(ct._parent===null)throw new Error("Parent node is null.");Dn=ct._parent,Nn=1+R.tree_index(ct)}if(P.Guard.isCharacterDataNode(qe))(st=U.node_clone(je))._data=V.characterData_substringData(je,Je,R.tree_nodeLength(je)-Je),j.mutation_append(st,Pe),V.characterData_replaceData(je,Je,R.tree_nodeLength(je)-Je,"");else if(qe!==null){var st=U.node_clone(qe);j.mutation_append(st,Pe);var yt=ne(I.create_range([je,Je],[qe,R.tree_nodeLength(qe)]));j.mutation_append(yt,st)}try{for(var St=c(xn),Pt=St.next();!Pt.done;Pt=St.next()){var mn=Pt.value;j.mutation_append(mn,Pe)}}catch(Pn){Te={error:Pn}}finally{try{Pt&&!Pt.done&&(Ve=St.return)&&Ve.call(St)}finally{if(Te)throw Te.error}}return P.Guard.isCharacterDataNode(Et)?((st=U.node_clone(it))._data=V.characterData_substringData(it,0,Ge),j.mutation_append(st,Pe),V.characterData_replaceData(it,0,Ge,"")):Et!==null&&(st=U.node_clone(Et),j.mutation_append(st,Pe),yt=ne(I.create_range([Et,0],[it,Ge])),j.mutation_append(yt,st)),le._start=[Dn,Nn],le._end=[Dn,Nn],Pe}i.range_collapsed=$,i.range_root=K,i.range_isContained=X,i.range_isPartiallyContained=ee,i.range_setTheStart=function(le,ce,ge){if(P.Guard.isDocumentTypeNode(ce))throw new T.InvalidNodeTypeError;if(ge>R.tree_nodeLength(ce))throw new T.IndexSizeError;var pe=[ce,ge];K(le)===R.tree_rootNode(ce)&&L.boundaryPoint_position(pe,le._end)!==_.BoundaryPosition.After||(le._end=pe),le._start=pe},i.range_setTheEnd=function(le,ce,ge){if(P.Guard.isDocumentTypeNode(ce))throw new T.InvalidNodeTypeError;if(ge>R.tree_nodeLength(ce))throw new T.IndexSizeError;var pe=[ce,ge];K(le)===R.tree_rootNode(ce)&&L.boundaryPoint_position(pe,le._start)!==_.BoundaryPosition.Before||(le._start=pe),le._end=pe},i.range_select=function(le,ce){var ge=le._parent;if(ge===null)throw new T.InvalidNodeTypeError;var pe=R.tree_index(le);ce._start=[ge,pe],ce._end=[ge,pe+1]},i.range_extract=ne,i.range_cloneTheContents=function le(ce){var ge,pe,we,Te,Ve,Pe,je=I.create_documentFragment(ce._startNode._nodeDocument);if($(ce))return je;var Je=ce._startNode,it=ce._startOffset,Ge=ce._endNode,Ke=ce._endOffset;Je===Ge&&P.Guard.isCharacterDataNode(Je)&&((Me=U.node_clone(Je))._data=V.characterData_substringData(Je,it,Ke-it),j.mutation_append(Me,je));for(var qe=Je;!R.tree_isAncestorOf(Ge,qe,!0);){if(qe._parent===null)throw new Error("Parent node is null.");qe=qe._parent}var ut=null;if(!R.tree_isAncestorOf(Ge,Je,!0))try{for(var wt=c(qe._children),Et=wt.next();!Et.done;Et=wt.next())if(ee(Dn=Et.value,ce)){ut=Dn;break}}catch(Pt){ge={error:Pt}}finally{try{Et&&!Et.done&&(pe=wt.return)&&pe.call(wt)}finally{if(ge)throw ge.error}}var qt=null;if(!R.tree_isAncestorOf(Je,Ge,!0))for(var $t=v(qe._children),Jt=$t.length-1;Jt>0;Jt--){var Dn;if(ee(Dn=$t[Jt],ce)){qt=Dn;break}}var Nn=[];try{for(var xn=c(qe._children),et=xn.next();!et.done;et=xn.next())if(X(St=et.value,ce)){if(P.Guard.isDocumentTypeNode(St))throw new T.HierarchyRequestError;Nn.push(St)}}catch(Pt){we={error:Pt}}finally{try{et&&!et.done&&(Te=xn.return)&&Te.call(xn)}finally{if(we)throw we.error}}if(P.Guard.isCharacterDataNode(ut))(Me=U.node_clone(Je))._data=V.characterData_substringData(Je,it,R.tree_nodeLength(Je)-it),j.mutation_append(Me,je);else if(ut!==null){var Me=U.node_clone(ut);j.mutation_append(Me,je);var ct=le(I.create_range([Je,it],[ut,R.tree_nodeLength(ut)]));j.mutation_append(ct,Me)}try{for(var st=c(Nn),yt=st.next();!yt.done;yt=st.next()){var St=yt.value,Me=U.node_clone(St);j.mutation_append(Me,je)}}catch(Pt){Ve={error:Pt}}finally{try{yt&&!yt.done&&(Pe=st.return)&&Pe.call(st)}finally{if(Ve)throw Ve.error}}return P.Guard.isCharacterDataNode(qt)?((Me=U.node_clone(Ge))._data=V.characterData_substringData(Ge,0,Ke),j.mutation_append(Me,je)):qt!==null&&(Me=U.node_clone(qt),je.append(Me),ct=ne(I.create_range([qt,0],[Ge,Ke])),j.mutation_append(ct,Me)),je},i.range_insert=function(le,ce){var ge,pe;if(P.Guard.isProcessingInstructionNode(ce._startNode)||P.Guard.isCommentNode(ce._startNode)||P.Guard.isTextNode(ce._startNode)&&ce._startNode._parent===null||ce._startNode===le)throw new T.HierarchyRequestError;var we,Te=null;if(P.Guard.isTextNode(ce._startNode))Te=ce._startNode;else{var Ve=0;try{for(var Pe=c(ce._startNode._children),je=Pe.next();!je.done;je=Pe.next()){var Je=je.value;if(Ve===ce._startOffset){Te=Je;break}Ve++}}catch(Ge){ge={error:Ge}}finally{try{je&&!je.done&&(pe=Pe.return)&&pe.call(Pe)}finally{if(ge)throw ge.error}}}if(Te===null)we=ce._startNode;else{if(Te._parent===null)throw new Error("Parent node is null.");we=Te._parent}j.mutation_ensurePreInsertionValidity(le,we,Te),P.Guard.isTextNode(ce._startNode)&&(Te=z.text_split(ce._startNode,ce._startOffset)),le===Te&&(Te=le._nextSibling),le._parent!==null&&j.mutation_remove(le,le._parent);var it=Te===null?R.tree_nodeLength(we):R.tree_index(Te);P.Guard.isDocumentFragmentNode(le)?it+=R.tree_nodeLength(le):it++,j.mutation_preInsert(le,we,Te),$(ce)&&(ce._end=[we,it])},i.range_getContainedNodes=function(le){var ce;return(ce={})[Symbol.iterator]=function(){var ge=le.commonAncestorContainer,pe=R.tree_getFirstDescendantNode(ge);return{next:function(){for(;pe&&!X(pe,le);)pe=R.tree_getNextDescendantNode(ge,pe);if(pe===null)return{done:!0,value:null};var we={done:!1,value:pe};return pe=R.tree_getNextDescendantNode(ge,pe),we}}},ce},i.range_getPartiallyContainedNodes=function(le){var ce;return(ce={})[Symbol.iterator]=function(){var ge=le.commonAncestorContainer,pe=R.tree_getFirstDescendantNode(ge);return{next:function(){for(;pe&&!ee(pe,le);)pe=R.tree_getNextDescendantNode(ge,pe);if(pe===null)return{done:!0,value:null};var we={done:!1,value:pe};return pe=R.tree_getNextDescendantNode(ge,pe),we}}},ce}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(9);i.selectors_scopeMatchASelectorsString=function(g,v){throw new c.NotSupportedError}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(2),g=l(105);i.treeWalker_traverseChildren=function(v,_){for(var T=_?v._current._firstChild:v._current._lastChild;T!==null;){var P=g.traversal_filter(v,T);if(P===c.FilterResult.Accept)return v._current=T,T;if(P===c.FilterResult.Skip){var I=_?T._firstChild:T._lastChild;if(I!==null){T=I;continue}}for(;T!==null;){var R=_?T._nextSibling:T._previousSibling;if(R!==null){T=R;break}var L=T._parent;if(L===null||L===v._root||L===v._current)return null;T=L}}return null},i.treeWalker_traverseSiblings=function(v,_){var T=v._current;if(T===v._root)return null;for(;;){for(var P=_?T._nextSibling:T._previousSibling;P!==null;){T=P;var I=g.traversal_filter(v,T);if(I===c.FilterResult.Accept)return v._current=T,T;P=_?T._firstChild:T._lastChild,I!==c.FilterResult.Reject&&P!==null||(P=_?T._nextSibling:T._previousSibling)}if((T=T._parent)===null||T===v._root||g.traversal_filter(v,T)===c.FilterResult.Accept)return null}}},function(o,i,l){l(89),l(74);var c,g=this&&this.__extends||(c=function(R,L){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(V,U){V.__proto__=U}||function(V,U){for(var j in U)U.hasOwnProperty(j)&&(V[j]=U[j])})(R,L)},function(R,L){function V(){this.constructor=R}c(R,L),R.prototype=L===null?Object.create(L):(V.prototype=L.prototype,new V)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(1),_=l(2),T=l(50),P=l(3),I=function(R){function L(V,U){var j=R.call(this,V)||this;return j._indentation={},j._lengthToLastNewline=0,j._writerOptions=v.applyDefaults(U,{wellFormed:!1,headless:!1,prettyPrint:!1,indent:" ",newline:` +`,offset:0,width:0,allowEmptyTags:!1,indentTextOnlyNodes:!1,spaceBeforeSlash:!1}),j}return g(L,R),L.prototype.serialize=function(V){return this._refs={suppressPretty:!1,emptyNode:!1,markup:""},V.nodeType!==_.NodeType.Document||this._writerOptions.headless||this.declaration(this._builderOptions.version,this._builderOptions.encoding,this._builderOptions.standalone),this.serializeNode(V,this._writerOptions.wellFormed),this._writerOptions.prettyPrint&&this._refs.markup.slice(-this._writerOptions.newline.length)===this._writerOptions.newline&&(this._refs.markup=this._refs.markup.slice(0,-this._writerOptions.newline.length)),this._refs.markup},L.prototype.declaration=function(V,U,j){this._beginLine(),this._refs.markup+='",this._endLine()},L.prototype.docType=function(V,U,j){this._beginLine(),this._refs.markup+=U&&j?"':U?"':j?"':"",this._endLine()},L.prototype.openTagBegin=function(V){this._beginLine(),this._refs.markup+="<"+V},L.prototype.openTagEnd=function(V,U,j){if(this._refs.suppressPretty=!1,this._refs.emptyNode=!1,this._writerOptions.prettyPrint&&!U&&!j){for(var z=!0,$=!0,K=this.currentNode.firstChild,X=0,ee=0;K;){if(P.Guard.isExclusiveTextNode(K))ee++;else{if(!P.Guard.isCDATASectionNode(K)){z=!1,$=!1;break}X++}K.data!==""&&($=!1),K=K.nextSibling}this._refs.suppressPretty=!this._writerOptions.indentTextOnlyNodes&&z&&(X<=1&&ee===0||X===0),this._refs.emptyNode=$}(j||U||this._refs.emptyNode)&&this._writerOptions.allowEmptyTags?this._refs.markup+=">":this._refs.markup+=j?" />":U||this._refs.emptyNode?this._writerOptions.spaceBeforeSlash?" />":"/>":">",this._endLine()},L.prototype.closeTag=function(V){this._refs.emptyNode||(this._beginLine(),this._refs.markup+=""),this._refs.suppressPretty=!1,this._refs.emptyNode=!1,this._endLine()},L.prototype.attribute=function(V,U){var j=V+'="'+U+'"';this._writerOptions.prettyPrint&&this._writerOptions.width>0&&this._refs.markup.length-this._lengthToLastNewline+1+j.length>this._writerOptions.width?(this._endLine(),this._beginLine(),this._refs.markup+=this._indent(1)+j):this._refs.markup+=" "+j},L.prototype.text=function(V){V!==""&&(this._beginLine(),this._refs.markup+=V,this._endLine())},L.prototype.cdata=function(V){V!==""&&(this._beginLine(),this._refs.markup+="",this._endLine())},L.prototype.comment=function(V){this._beginLine(),this._refs.markup+="",this._endLine()},L.prototype.instruction=function(V,U){this._beginLine(),this._refs.markup+="",this._endLine()},L.prototype._beginLine=function(){this._writerOptions.prettyPrint&&!this._refs.suppressPretty&&(this._refs.markup+=this._indent(this._writerOptions.offset+this.level))},L.prototype._endLine=function(){this._writerOptions.prettyPrint&&!this._refs.suppressPretty&&(this._refs.markup+=this._writerOptions.newline,this._lengthToLastNewline=this._refs.markup.length)},L.prototype._indent=function(V){if(V<=0)return"";if(this._indentation[V]!==void 0)return this._indentation[V];var U=this._writerOptions.indent.repeat(V);return this._indentation[V]=U,U},L}(T.BaseWriter);i.XMLWriter=I},function(o,i,l){var c=l(47),g=l(35);o.exports="".repeat||function(v){var _=String(g(this)),T="",P=c(v);if(P<0||P==1/0)throw RangeError("Wrong number of repetitions");for(;P>0;(P>>>=1)&&(_+=_))1&P&&(T+=_);return T}},function(o,i,l){l(31),l(32),l(33),l(19),l(178),l(20),l(22),l(23);var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)}),v=this&&this.__values||function(I){var R=typeof Symbol=="function"&&Symbol.iterator,L=R&&I[R],V=0;if(L)return L.call(I);if(I&&typeof I.length=="number")return{next:function(){return I&&V>=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(67),T=l(1),P=function(I){function R(L,V){var U=I.call(this,L)||this;return U._writerOptions=T.applyDefaults(V,{wellFormed:!1,prettyPrint:!1,indent:" ",newline:` +`,offset:0,group:!1,verbose:!1}),U}return g(R,I),R.prototype.serialize=function(L){var V=T.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1}),U=new _.ObjectWriter(this._builderOptions,V).serialize(L);return this._beginLine(this._writerOptions,0)+this._convertObject(U,this._writerOptions)},R.prototype._convertObject=function(L,V,U){var j,z,$=this;U===void 0&&(U=0);var K="",X=this._isLeafNode(L);if(T.isArray(L)){K+="[";var ee=L.length,ne=0;try{for(var le=v(L),ce=le.next();!ce.done;ce=le.next()){var ge=ce.value;K+=this._endLine(V,U+1)+this._beginLine(V,U+1)+this._convertObject(ge,V,U+1),ne0?new Array(U).join(L.indent):""},R.prototype._endLine=function(L,V){return L.prettyPrint?L.newline:""},R.prototype._key=function(L){return'"'+L+'":'},R.prototype._val=function(L){return JSON.stringify(L)},R.prototype._isLeafNode=function(L){return this._descendantCount(L)<=1},R.prototype._descendantCount=function(L,V){var U=this;return V===void 0&&(V=0),T.isArray(L)?T.forEachArray(L,function(j){return V+=U._descendantCount(j,V)},this):T.isObject(L)?T.forEachObject(L,function(j,z){return V+=U._descendantCount(z,V)},this):V++,V},R}(l(50).BaseWriter);i.JSONWriter=P},function(o,i,l){l(31),l(32),l(33),l(19),l(178),l(89),l(20),l(22),l(23);var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)}),v=this&&this.__values||function(I){var R=typeof Symbol=="function"&&Symbol.iterator,L=R&&I[R],V=0;if(L)return L.call(I);if(I&&typeof I.length=="number")return{next:function(){return I&&V>=I.length&&(I=void 0),{value:I&&I[V++],done:!I}}};throw new TypeError(R?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var _=l(67),T=l(1),P=function(I){function R(L,V){var U=I.call(this,L)||this;if(U._writerOptions=T.applyDefaults(V,{wellFormed:!1,indent:" ",newline:` +`,offset:0,group:!1,verbose:!1}),U._writerOptions.indent.length<2)throw new Error("YAML indententation string must be at least two characters long.");if(U._writerOptions.offset<0)throw new Error("YAML offset should be zero or a positive number.");return U}return g(R,I),R.prototype.serialize=function(L){var V=T.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1}),U=new _.ObjectWriter(this._builderOptions,V).serialize(L),j=this._beginLine(this._writerOptions,0)+"---"+this._endLine(this._writerOptions)+this._convertObject(U,this._writerOptions,0);return j.slice(-this._writerOptions.newline.length)===this._writerOptions.newline&&(j=j.slice(0,-this._writerOptions.newline.length)),j},R.prototype._convertObject=function(L,V,U,j){var z,$,K=this;j===void 0&&(j=!1);var X="";if(T.isArray(L))try{for(var ee=v(L),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;X+=this._beginLine(V,U,!0),T.isObject(le)?T.isEmpty(le)?X+='""'+this._endLine(V):X+=this._convertObject(le,V,U,!0):X+=this._val(le)+this._endLine(V)}}catch(ce){z={error:ce}}finally{try{ne&&!ne.done&&($=ee.return)&&$.call(ee)}finally{if(z)throw z.error}}else T.forEachObject(L,function(ce,ge){j?(X+=K._key(ce),j=!1):X+=K._beginLine(V,U)+K._key(ce),T.isObject(ge)?T.isEmpty(ge)?X+=' ""'+K._endLine(V):X+=K._endLine(V)+K._convertObject(ge,V,U+1):X+=" "+K._val(ge)+K._endLine(V)},this);return X},R.prototype._beginLine=function(L,V,U){U===void 0&&(U=!1);var j=L.offset+V+1,z=new Array(j).join(L.indent);return U?z.substr(0,z.length-2)+"-"+z.substr(-1,1):z},R.prototype._endLine=function(L){return L.newline},R.prototype._key=function(L){return'"'+L+'":'},R.prototype._val=function(L){return JSON.stringify(L)},R}(l(50).BaseWriter);i.YAMLWriter=P},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0}),l(110).dom.setFeatures(!0);var c=l(110);i.DOMImplementation=c.DOMImplementation;var g=l(271);i.DOMParser=g.DOMParser;var v=l(274);i.XMLSerializer=v.XMLSerializer},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(3),g=l(0),v=function(){function _(){}return _.prototype.before=function(){for(var T=[],P=0;P=P.length&&(P=void 0),{value:P&&P[L++],done:!P}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(6),v=l(3),_=l(7),T=function(){function P(I){this._nodeList=[],this._recordQueue=[],this._callback=I;var R=g.dom.window;_.set.append(R._mutationObservers,this)}return P.prototype.observe=function(I,R){var L,V;if((R=R||{childList:!1,subtree:!1}).attributeOldValue===void 0&&R.attributeFilter===void 0||R.attributes!==void 0||(R.attributes=!0),R.characterDataOldValue!==void 0&&R.characterData===void 0&&(R.characterData=!0),!R.childList&&!R.attributes&&!R.characterData)throw new TypeError;if(R.attributeOldValue&&!R.attributes)throw new TypeError;if(R.attributeFilter!==void 0&&!R.attributes)throw new TypeError;if(R.characterDataOldValue&&!R.characterData)throw new TypeError;var U=!1,j=R,z=function(ee){var ne,le;if(ee.observer===$){U=!0;try{for(var ce=(ne=void 0,c($._nodeList)),ge=ce.next();!ge.done;ge=ce.next()){var pe=ge.value;_.list.remove(pe._registeredObserverList,function(we){return v.Guard.isTransientRegisteredObserver(we)&&we.source===ee})}}catch(we){ne={error:we}}finally{try{ge&&!ge.done&&(le=ce.return)&&le.call(ce)}finally{if(ne)throw ne.error}}ee.options=j}},$=this;try{for(var K=c(I._registeredObserverList),X=K.next();!X.done;X=K.next())z(X.value)}catch(ee){L={error:ee}}finally{try{X&&!X.done&&(V=K.return)&&V.call(K)}finally{if(L)throw L.error}}U||(I._registeredObserverList.push({observer:this,options:R}),this._nodeList.push(I))},P.prototype.disconnect=function(){var I,R,L=this;try{for(var V=c(this._nodeList),U=V.next();!U.done;U=V.next()){var j=U.value;_.list.remove(j._registeredObserverList,function(z){return z.observer===L})}}catch(z){I={error:z}}finally{try{U&&!U.done&&(R=V.return)&&R.call(V)}finally{if(I)throw I.error}}this._recordQueue=[]},P.prototype.takeRecords=function(){var I=this._recordQueue;return this._recordQueue=[],I},P}();i.MutationObserverImpl=T},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(3),g=function(){function v(){}return Object.defineProperty(v.prototype,"previousElementSibling",{get:function(){for(var _=c.Cast.asNode(this)._previousSibling;_;){if(c.Guard.isElementNode(_))return _;_=_._previousSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(v.prototype,"nextElementSibling",{get:function(){for(var _=c.Cast.asNode(this)._nextSibling;_;){if(c.Guard.isElementNode(_))return _;_=_._nextSibling}return null},enumerable:!0,configurable:!0}),v}();i.NonDocumentTypeChildNodeImpl=g},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(3),g=l(0),v=function(){function _(){}return _.prototype.getElementById=function(T){for(var P=g.tree_getFirstDescendantNode(c.Cast.asNode(this),!1,!1,function(I){return c.Guard.isElementNode(I)});P!==null;){if(P._uniqueIdentifier===T)return P;P=g.tree_getNextDescendantNode(c.Cast.asNode(this),P,!1,!1,function(I){return c.Guard.isElementNode(I)})}return null},_}();i.NonElementParentNodeImpl=v},function(o,i,l){var c=this&&this.__values||function(T){var P=typeof Symbol=="function"&&Symbol.iterator,I=P&&T[P],R=0;if(I)return I.call(T);if(T&&typeof T.length=="number")return{next:function(){return T&&R>=T.length&&(T=void 0),{value:T&&T[R++],done:!T}}};throw new TypeError(P?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(3),v=l(0),_=function(){function T(){}return Object.defineProperty(T.prototype,"children",{get:function(){return v.create_htmlCollection(g.Cast.asNode(this))},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"firstElementChild",{get:function(){for(var P=g.Cast.asNode(this)._firstChild;P;){if(g.Guard.isElementNode(P))return P;P=P._nextSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"lastElementChild",{get:function(){for(var P=g.Cast.asNode(this)._lastChild;P;){if(g.Guard.isElementNode(P))return P;P=P._previousSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"childElementCount",{get:function(){var P,I,R=0;try{for(var L=c(g.Cast.asNode(this)._children),V=L.next();!V.done;V=L.next()){var U=V.value;g.Guard.isElementNode(U)&&R++}}catch(j){P={error:j}}finally{try{V&&!V.done&&(I=L.return)&&I.call(L)}finally{if(P)throw P.error}}return R},enumerable:!0,configurable:!0}),T.prototype.prepend=function(){for(var P=[],I=0;I0)&&!(j=$.next()).done;)K.push(j.value)}catch(X){z={error:X}}finally{try{j&&!j.done&&(U=$.return)&&U.call($)}finally{if(z)throw z.error}}return K},g=this&&this.__values||function(L){var V=typeof Symbol=="function"&&Symbol.iterator,U=V&&L[V],j=0;if(U)return U.call(L);if(L&&typeof L.length=="number")return{next:function(){return L&&j>=L.length&&(L=void 0),{value:L&&L[j++],done:!L}}};throw new TypeError(V?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var v=l(180),_=l(111),T=l(7),P=l(0),I=l(69),R=function(){function L(){}return L.prototype.parse=function(V){for(var U,j,z,$,K=new v.XMLStringLexer(V,{skipWhitespaceOnlyText:!0}),X=P.create_document(),ee=X,ne=K.nextToken();ne.type!==_.TokenType.EOF;){switch(ne.type){case _.TokenType.Declaration:var le=ne;if(le.version!=="1.0")throw new Error("Invalid xml version: "+le.version);break;case _.TokenType.DocType:var ce=ne;if(!P.xml_isPubidChar(ce.pubId))throw new Error("DocType public identifier does not match PubidChar construct.");if(!P.xml_isLegalChar(ce.sysId)||ce.sysId.indexOf('"')!==-1&&ce.sysId.indexOf("'")!==-1)throw new Error("DocType system identifier contains invalid characters.");ee.appendChild(X.implementation.createDocumentType(ce.name,ce.pubId,ce.sysId));break;case _.TokenType.CDATA:var ge=ne;if(!P.xml_isLegalChar(ge.data)||ge.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters.");ee.appendChild(X.createCDATASection(ge.data));break;case _.TokenType.Comment:var pe=ne;if(!P.xml_isLegalChar(pe.data)||pe.data.indexOf("--")!==-1||pe.data.endsWith("-"))throw new Error("Comment data contains invalid characters.");ee.appendChild(X.createComment(pe.data));break;case _.TokenType.PI:var we=ne;if(we.target.indexOf(":")!==-1||/^xml$/i.test(we.target))throw new Error("Processing instruction target contains invalid characters.");if(!P.xml_isLegalChar(we.data)||we.data.indexOf("?>")!==-1)throw new Error("Processing instruction data contains invalid characters.");ee.appendChild(X.createProcessingInstruction(we.target,we.data));break;case _.TokenType.Text:var Te=ne;if(!P.xml_isLegalChar(Te.data))throw new Error("Text data contains invalid characters.");ee.appendChild(X.createTextNode(this._decodeText(Te.data)));break;case _.TokenType.Element:var Ve=ne,Pe=c(P.namespace_extractQName(Ve.name),2),je=Pe[0],Je=Pe[1];if(Je.indexOf(":")!==-1||!P.xml_isName(Je))throw new Error("Node local name contains invalid characters.");if(je==="xmlns")throw new Error("An element cannot have the 'xmlns' prefix.");var it=ee.lookupNamespaceURI(je),Ge={};try{for(var Ke=(U=void 0,g(Ve.attributes)),qe=Ke.next();!qe.done;qe=Ke.next()){var ut=c(qe.value,2),wt=ut[0],Et=ut[1];if(wt==="xmlns")it=Et;else{var qt=c(P.namespace_extractQName(wt),2),$t=qt[0],Jt=qt[1];$t==="xmlns"&&(Jt===je&&(it=Et),Ge[Jt]=Et)}}}catch(yt){U={error:yt}}finally{try{qe&&!qe.done&&(j=Ke.return)&&j.call(Ke)}finally{if(U)throw U.error}}var Dn=it!==null?X.createElementNS(it,Ve.name):X.createElement(Ve.name);ee.appendChild(Dn);var Nn=new I.LocalNameSet;try{for(var xn=(z=void 0,g(Ve.attributes)),et=xn.next();!et.done;et=xn.next()){var Me=c(et.value,2),ct=(wt=Me[0],Et=Me[1],c(P.namespace_extractQName(wt),2)),st=($t=ct[0],Jt=ct[1],null);if($t==="xmlns"||$t===null&&Jt==="xmlns"?st=T.namespace.XMLNS:(st=Dn.lookupNamespaceURI($t))!==null&&Dn.isDefaultNamespace(st)?st=null:st===null&&$t!==null&&(st=Ge[$t]||null),Nn.has(st,Jt))throw new Error("Element contains duplicate attributes.");if(Nn.set(st,Jt),st===T.namespace.XMLNS&&Et===T.namespace.XMLNS)throw new Error("XMLNS namespace is reserved.");if(Jt.indexOf(":")!==-1||!P.xml_isName(Jt))throw new Error("Attribute local name contains invalid characters.");if($t==="xmlns"&&Et==="")throw new Error("Empty XML namespace is not allowed.");st!==null?Dn.setAttributeNS(st,wt,this._decodeAttributeValue(Et)):Dn.setAttribute(wt,this._decodeAttributeValue(Et))}}catch(yt){z={error:yt}}finally{try{et&&!et.done&&($=xn.return)&&$.call(xn)}finally{if(z)throw z.error}}Ve.selfClosing||(ee=Dn);break;case _.TokenType.ClosingTag:if(ne.name!==ee.nodeName)throw new Error("Closing tag name does not match opening tag name.");ee._parent&&(ee=ee._parent)}ne=K.nextToken()}return X},L.prototype._decodeText=function(V){return V==null?V:V.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},L.prototype._decodeAttributeValue=function(V){return V==null?V:V.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},L}();i.XMLParserImpl=R},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(275);i.XMLSerializer=c.XMLSerializerImpl},function(o,i,l){var c=this&&this.__values||function(L){var V=typeof Symbol=="function"&&Symbol.iterator,U=V&&L[V],j=0;if(U)return U.call(L);if(L&&typeof L.length=="number")return{next:function(){return L&&j>=L.length&&(L=void 0),{value:L&&L[j++],done:!L}}};throw new TypeError(V?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var g=l(2),v=l(69),_=l(95),T=l(9),P=l(7),I=l(0),R=function(){function L(){}return L.prototype.serializeToString=function(V){return this._xmlSerialization(V,!1)},L.prototype._xmlSerialization=function(V,U){if(V._nodeDocument===void 0||V._nodeDocument._hasNamespaces){var j=new _.NamespacePrefixMap;j.set("xml",P.namespace.XML);try{return this._serializeNodeNS(V,null,j,{value:1},U)}catch{throw new T.InvalidStateError}}else try{return this._serializeNode(V,U)}catch{throw new T.InvalidStateError}},L.prototype._serializeNodeNS=function(V,U,j,z,$){switch(V.nodeType){case g.NodeType.Element:return this._serializeElementNS(V,U,j,z,$);case g.NodeType.Document:return this._serializeDocumentNS(V,U,j,z,$);case g.NodeType.Comment:return this._serializeComment(V,$);case g.NodeType.Text:return this._serializeText(V,$);case g.NodeType.DocumentFragment:return this._serializeDocumentFragmentNS(V,U,j,z,$);case g.NodeType.DocumentType:return this._serializeDocumentType(V,$);case g.NodeType.ProcessingInstruction:return this._serializeProcessingInstruction(V,$);case g.NodeType.CData:return this._serializeCData(V,$);default:throw new Error("Unknown node type: "+V.nodeType)}},L.prototype._serializeNode=function(V,U){switch(V.nodeType){case g.NodeType.Element:return this._serializeElement(V,U);case g.NodeType.Document:return this._serializeDocument(V,U);case g.NodeType.Comment:return this._serializeComment(V,U);case g.NodeType.Text:return this._serializeText(V,U);case g.NodeType.DocumentFragment:return this._serializeDocumentFragment(V,U);case g.NodeType.DocumentType:return this._serializeDocumentType(V,U);case g.NodeType.ProcessingInstruction:return this._serializeProcessingInstruction(V,U);case g.NodeType.CData:return this._serializeCData(V,U);default:throw new Error("Unknown node type: "+V.nodeType)}},L.prototype._serializeElementNS=function(V,U,j,z,$){var K,X;if($&&(V.localName.indexOf(":")!==-1||!I.xml_isName(V.localName)))throw new Error("Node local name contains invalid characters (well-formed required).");var ee="<",ne="",le=!1,ce=!1,ge=j.copy(),pe={},we=this._recordNamespaceInformation(V,ge,pe),Te=U,Ve=V.namespaceURI;if(Te===Ve)we!==null&&(ce=!0),ee+=ne=Ve===P.namespace.XML?"xml:"+V.localName:V.localName;else{var Pe=V.prefix,je=null;if(Pe===null&&Ve===we||(je=ge.get(Pe,Ve)),Pe==="xmlns"){if($)throw new Error("An element cannot have the 'xmlns' prefix (well-formed required).");je=Pe}je!==null?(ne=je+":"+V.localName,we!==null&&we!==P.namespace.XML&&(Te=we||null),ee+=ne):Pe!==null?(Pe in pe&&(Pe=this._generatePrefix(Ve,ge,z)),ge.set(Pe,Ve),ee+=ne+=Pe+":"+V.localName,ee+=" xmlns:"+Pe+'="'+this._serializeAttributeValue(Ve,$)+'"',we!==null&&(Te=we||null)):we===null||we!==null&&we!==Ve?(ce=!0,Te=Ve,ee+=ne+=V.localName,ee+=' xmlns="'+this._serializeAttributeValue(Ve,$)+'"'):(Te=Ve,ee+=ne+=V.localName)}ee+=this._serializeAttributesNS(V,ge,z,pe,ce,$);var Je=Ve===P.namespace.HTML;if(Je&&V.childNodes.length===0&&L._VoidElementNames.has(V.localName)?(ee+=" /",le=!0):Je||V.childNodes.length!==0||(ee+="/",le=!0),ee+=">",le)return ee;if(!(Je&&V.localName==="template"))try{for(var it=c(V._children||V.childNodes),Ge=it.next();!Ge.done;Ge=it.next()){var Ke=Ge.value;ee+=this._serializeNodeNS(Ke,Te,ge,z,$)}}catch(qe){K={error:qe}}finally{try{Ge&&!Ge.done&&(X=it.return)&&X.call(it)}finally{if(K)throw K.error}}return ee+=""},L.prototype._serializeDocumentNS=function(V,U,j,z,$){var K,X;if($&&V.documentElement===null)throw new Error("Missing document element (well-formed required).");var ee="";try{for(var ne=c(V._children||V.childNodes),le=ne.next();!le.done;le=ne.next()){var ce=le.value;ee+=this._serializeNodeNS(ce,U,j,z,$)}}catch(ge){K={error:ge}}finally{try{le&&!le.done&&(X=ne.return)&&X.call(ne)}finally{if(K)throw K.error}}return ee},L.prototype._serializeComment=function(V,U){if(U&&(!I.xml_isLegalChar(V.data)||V.data.indexOf("--")!==-1||V.data.endsWith("-")))throw new Error("Comment data contains invalid characters (well-formed required).");return""},L.prototype._serializeText=function(V,U){if(U&&!I.xml_isLegalChar(V.data))throw new Error("Text data contains invalid characters (well-formed required).");for(var j="",z=0;z"?">":$}return j},L.prototype._serializeDocumentFragmentNS=function(V,U,j,z,$){var K,X,ee="";try{for(var ne=c(V._children||V.childNodes),le=ne.next();!le.done;le=ne.next()){var ce=le.value;ee+=this._serializeNodeNS(ce,U,j,z,$)}}catch(ge){K={error:ge}}finally{try{le&&!le.done&&(X=ne.return)&&X.call(ne)}finally{if(K)throw K.error}}return ee},L.prototype._serializeDocumentType=function(V,U){if(U&&!I.xml_isPubidChar(V.publicId))throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");if(U&&(!I.xml_isLegalChar(V.systemId)||V.systemId.indexOf('"')!==-1&&V.systemId.indexOf("'")!==-1))throw new Error("DocType system identifier contains invalid characters (well-formed required).");return V.publicId&&V.systemId?"':V.publicId?"':V.systemId?"':""},L.prototype._serializeProcessingInstruction=function(V,U){if(U&&(V.target.indexOf(":")!==-1||/^xml$/i.test(V.target)))throw new Error("Processing instruction target contains invalid characters (well-formed required).");if(U&&(!I.xml_isLegalChar(V.data)||V.data.indexOf("?>")!==-1))throw new Error("Processing instruction data contains invalid characters (well-formed required).");return""},L.prototype._serializeCData=function(V,U){if(U&&V.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters (well-formed required).");return""},L.prototype._serializeAttributesNS=function(V,U,j,z,$,K){var X,ee,ne="",le=K?new v.LocalNameSet:void 0;try{for(var ce=c(V.attributes),ge=ce.next();!ge.done;ge=ce.next()){var pe=ge.value;if($||K||pe.namespaceURI!==null){if(K&&le&&le.has(pe.namespaceURI,pe.localName))throw new Error("Element contains duplicate attributes (well-formed required).");K&&le&&le.set(pe.namespaceURI,pe.localName);var we=pe.namespaceURI,Te=null;if(we!==null)if(Te=U.get(pe.prefix,we),we===P.namespace.XMLNS){if(pe.value===P.namespace.XML||pe.prefix===null&&$||pe.prefix!==null&&(!(pe.localName in z)||z[pe.localName]!==pe.value)&&U.has(pe.localName,pe.value))continue;if(K&&pe.value===P.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(K&&pe.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");pe.prefix==="xmlns"&&(Te="xmlns")}else Te===null&&(ne+=" xmlns:"+(Te=pe.prefix===null||U.hasPrefix(pe.prefix)&&!U.has(pe.prefix,we)?this._generatePrefix(we,U,j):pe.prefix)+'="'+this._serializeAttributeValue(we,K)+'"');if(ne+=" ",Te!==null&&(ne+=Te+":"),K&&(pe.localName.indexOf(":")!==-1||!I.xml_isName(pe.localName)||pe.localName==="xmlns"&&we===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");ne+=pe.localName+'="'+this._serializeAttributeValue(pe.value,K)+'"'}else ne+=" "+pe.localName+'="'+this._serializeAttributeValue(pe.value,K)+'"'}}catch(Ve){X={error:Ve}}finally{try{ge&&!ge.done&&(ee=ce.return)&&ee.call(ce)}finally{if(X)throw X.error}}return ne},L.prototype._recordNamespaceInformation=function(V,U,j){var z,$,K=null;try{for(var X=c(V.attributes),ee=X.next();!ee.done;ee=X.next()){var ne=ee.value,le=ne.namespaceURI,ce=ne.prefix;if(le===P.namespace.XMLNS){if(ce===null){K=ne.value;continue}var ge=ne.localName,pe=ne.value;if(pe===P.namespace.XML||(pe===""&&(pe=null),U.has(ge,pe)))continue;U.set(ge,pe),j[ge]=pe||""}}}catch(we){z={error:we}}finally{try{ee&&!ee.done&&($=X.return)&&$.call(X)}finally{if(z)throw z.error}}return K},L.prototype._generatePrefix=function(V,U,j){var z="ns"+j.value;return j.value++,U.set(z,V),z},L.prototype._serializeAttributeValue=function(V,U){if(U&&V!==null&&!I.xml_isLegalChar(V))throw new Error("Invalid characters in attribute value.");if(V===null)return"";for(var j="",z=0;z"?">":$}return j},L.prototype._serializeElement=function(V,U){var j,z;if(U&&(V.localName.indexOf(":")!==-1||!I.xml_isName(V.localName)))throw new Error("Node local name contains invalid characters (well-formed required).");var $=!1,K=V.localName,X="<"+K;if(X+=this._serializeAttributes(V,U),V._children.size===0&&(X+="/",$=!0),X+=">",$)return X;try{for(var ee=c(V._children),ne=ee.next();!ne.done;ne=ee.next()){var le=ne.value;X+=this._serializeNode(le,U)}}catch(ce){j={error:ce}}finally{try{ne&&!ne.done&&(z=ee.return)&&z.call(ee)}finally{if(j)throw j.error}}return X+=""},L.prototype._serializeDocument=function(V,U){var j,z;if(U&&V.documentElement===null)throw new Error("Missing document element (well-formed required).");var $="";try{for(var K=c(V._children),X=K.next();!X.done;X=K.next()){var ee=X.value;$+=this._serializeNode(ee,U)}}catch(ne){j={error:ne}}finally{try{X&&!X.done&&(z=K.return)&&z.call(K)}finally{if(j)throw j.error}}return $},L.prototype._serializeDocumentFragment=function(V,U){var j,z,$="";try{for(var K=c(V._children),X=K.next();!X.done;X=K.next()){var ee=X.value;$+=this._serializeNode(ee,U)}}catch(ne){j={error:ne}}finally{try{X&&!X.done&&(z=K.return)&&z.call(K)}finally{if(j)throw j.error}}return $},L.prototype._serializeAttributes=function(V,U){var j,z,$="",K=U?{}:void 0;try{for(var X=c(V.attributes),ee=X.next();!ee.done;ee=X.next()){var ne=ee.value;if(U&&K&&ne.localName in K)throw new Error("Element contains duplicate attributes (well-formed required).");if(U&&K&&(K[ne.localName]=!0),U&&(ne.localName.indexOf(":")!==-1||!I.xml_isName(ne.localName)))throw new Error("Attribute local name contains invalid characters (well-formed required).");$+=" "+ne.localName+'="'+this._serializeAttributeValue(ne.value,U)+'"'}}catch(le){j={error:le}}finally{try{ee&&!ee.done&&(z=X.return)&&z.call(X)}finally{if(j)throw j.error}}return $},L._VoidElementNames=new Set(["area","base","basefont","bgsound","br","col","embed","frame","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"]),L}();i.XMLSerializerImpl=R},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(277);i.XMLReader=c.XMLReader;var g=l(112);i.ObjectReader=g.ObjectReader;var v=l(280);i.JSONReader=v.JSONReader;var _=l(281);i.YAMLReader=_.YAMLReader},function(o,i,l){l(31),l(32),l(33),l(19),l(65),l(20),l(22),l(23);var c,g=this&&this.__extends||(c=function(V,U){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(j,z){j.__proto__=z}||function(j,z){for(var $ in z)z.hasOwnProperty($)&&(j[$]=z[$])})(V,U)},function(V,U){function j(){this.constructor=V}c(V,U),V.prototype=U===null?Object.create(U):(j.prototype=U.prototype,new j)}),v=this&&this.__read||function(V,U){var j=typeof Symbol=="function"&&V[Symbol.iterator];if(!j)return V;var z,$,K=j.call(V),X=[];try{for(;(U===void 0||U-- >0)&&!(z=K.next()).done;)X.push(z.value)}catch(ee){$={error:ee}}finally{try{z&&!z.done&&(j=K.return)&&j.call(K)}finally{if($)throw $.error}}return X},_=this&&this.__values||function(V){var U=typeof Symbol=="function"&&Symbol.iterator,j=U&&V[U],z=0;if(j)return j.call(V);if(V&&typeof V.length=="number")return{next:function(){return V&&z>=V.length&&(V=void 0),{value:V&&V[z++],done:!V}}};throw new TypeError(U?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(i,"__esModule",{value:!0});var T=l(180),P=l(111),I=l(7),R=l(0),L=function(V){function U(){return V!==null&&V.apply(this,arguments)||this}return g(U,V),U.prototype._parse=function(j,z){for(var $,K,X,ee,ne=new T.XMLStringLexer(z,{skipWhitespaceOnlyText:!0}),le=j,ce=j,ge=ne.nextToken();ge.type!==P.TokenType.EOF;){switch(ge.type){case P.TokenType.Declaration:var pe=ge,we=this.sanitize(pe.version);if(we!=="1.0")throw new Error("Invalid xml version: "+we);var Te={version:we};pe.encoding&&(Te.encoding=this.sanitize(pe.encoding)),pe.standalone&&(Te.standalone=this.sanitize(pe.standalone)==="yes"),ce.set(Te);break;case P.TokenType.DocType:var Ve=ge;ce=this.docType(ce,this.sanitize(Ve.name),this.sanitize(Ve.pubId),this.sanitize(Ve.sysId))||ce;break;case P.TokenType.CDATA:var Pe=ge;ce=this.cdata(ce,this.sanitize(Pe.data))||ce;break;case P.TokenType.Comment:var je=ge;ce=this.comment(ce,this.sanitize(je.data))||ce;break;case P.TokenType.PI:var Je=ge;ce=this.instruction(ce,this.sanitize(Je.target),this.sanitize(Je.data))||ce;break;case P.TokenType.Text:var it=ge;ce=this.text(ce,this._decodeText(this.sanitize(it.data)))||ce;break;case P.TokenType.Element:var Ge=ge,Ke=this.sanitize(Ge.name),qe=v(R.namespace_extractQName(Ke),1)[0],ut=ce.node.lookupNamespaceURI(qe),wt={};try{for(var Et=($=void 0,_(Ge.attributes)),qt=Et.next();!qt.done;qt=Et.next()){var $t=v(qt.value,2),Jt=$t[0],Dn=$t[1];if(Jt=this.sanitize(Jt),Dn=this.sanitize(Dn),Jt==="xmlns")ut=Dn;else{var Nn=v(R.namespace_extractQName(Jt),2),xn=Nn[0],et=Nn[1];xn==="xmlns"&&(et===qe&&(ut=Dn),wt[et]=Dn)}}}catch(mn){$={error:mn}}finally{try{qt&&!qt.done&&(K=Et.return)&&K.call(Et)}finally{if($)throw $.error}}var Me=ut!==null?this.element(ce,ut,Ke):this.element(ce,void 0,Ke);if(Me===void 0)break;ce.node===j.node&&(le=Me);try{for(var ct=(X=void 0,_(Ge.attributes)),st=ct.next();!st.done;st=ct.next()){var yt=v(st.value,2);Jt=yt[0],Dn=yt[1],Jt=this.sanitize(Jt),Dn=this.sanitize(Dn);var St=v(R.namespace_extractQName(Jt),2),Pt=(xn=St[0],et=St[1],null);xn==="xmlns"||xn===null&&et==="xmlns"?Pt=I.namespace.XMLNS:(Pt=Me.node.lookupNamespaceURI(xn))!==null&&Me.node.isDefaultNamespace(Pt)?Pt=null:Pt===null&&xn!==null&&(Pt=wt[xn]||null),Pt!==null?this.attribute(Me,Pt,Jt,this._decodeAttributeValue(Dn)):this.attribute(Me,void 0,Jt,this._decodeAttributeValue(Dn))}}catch(mn){X={error:mn}}finally{try{st&&!st.done&&(ee=ct.return)&&ee.call(ct)}finally{if(X)throw X.error}}Ge.selfClosing||(ce=Me);break;case P.TokenType.ClosingTag:ce.node.parentNode&&(ce=ce.up())}ge=ne.nextToken()}return le},U}(l(75).BaseReader);i.XMLReader=L},function(o,i,l){var c=l(4),g=l(279);c({target:"Object",stat:!0,forced:Object.assign!==g},{assign:g})},function(o,i,l){var c=l(16),g=l(8),v=l(61),_=l(85),T=l(79),P=l(27),I=l(41),R=Object.assign,L=Object.defineProperty;o.exports=!R||g(function(){if(c&&R({b:1},R(L({},"a",{enumerable:!0,get:function(){L(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var V={},U={},j=Symbol();return V[j]=7,"abcdefghijklmnopqrst".split("").forEach(function(z){U[z]=z}),R({},V)[j]!=7||v(R({},U)).join("")!="abcdefghijklmnopqrst"})?function(V,U){for(var j=P(V),z=arguments.length,$=1,K=_.f,X=T.f;z>$;)for(var ee,ne=I(arguments[$++]),le=K?v(ne).concat(K(ne)):v(ne),ce=le.length,ge=0;ce>ge;)ee=le[ge++],c&&!X.call(ne,ee)||(j[ee]=ne[ee]);return j}:R},function(o,i,l){var c,g=this&&this.__extends||(c=function(T,P){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(I,R){I.__proto__=R}||function(I,R){for(var L in R)R.hasOwnProperty(L)&&(I[L]=R[L])})(T,P)},function(T,P){function I(){this.constructor=T}c(T,P),T.prototype=P===null?Object.create(P):(I.prototype=P.prototype,new I)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(112),_=function(T){function P(){return T!==null&&T.apply(this,arguments)||this}return g(P,T),P.prototype._parse=function(I,R){return new v.ObjectReader(this._builderOptions).parse(I,JSON.parse(R))},P}(l(75).BaseReader);i.JSONReader=_},function(o,i,l){var c,g=this&&this.__extends||(c=function(I,R){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(L,V){L.__proto__=V}||function(L,V){for(var U in V)V.hasOwnProperty(U)&&(L[U]=V[U])})(I,R)},function(I,R){function L(){this.constructor=I}c(I,R),I.prototype=R===null?Object.create(R):(L.prototype=R.prototype,new L)});Object.defineProperty(i,"__esModule",{value:!0});var v=l(112),_=l(75),T=l(282),P=function(I){function R(){return I!==null&&I.apply(this,arguments)||this}return g(R,I),R.prototype._parse=function(L,V){var U=T.safeLoad(V);if(U===void 0)throw new Error("Unable to parse YAML document.");return new v.ObjectReader(this._builderOptions).parse(L,U)},R}(_.BaseReader);i.YAMLReader=P},function(o,i,l){var c=l(283);o.exports=c},function(o,i,l){var c=l(284),g=l(303);function v(_){return function(){throw new Error("Function "+_+" is deprecated and cannot be used.")}}o.exports.Type=l(10),o.exports.Schema=l(39),o.exports.FAILSAFE_SCHEMA=l(113),o.exports.JSON_SCHEMA=l(182),o.exports.CORE_SCHEMA=l(181),o.exports.DEFAULT_SAFE_SCHEMA=l(54),o.exports.DEFAULT_FULL_SCHEMA=l(76),o.exports.load=c.load,o.exports.loadAll=c.loadAll,o.exports.safeLoad=c.safeLoad,o.exports.safeLoadAll=c.safeLoadAll,o.exports.dump=g.dump,o.exports.safeDump=g.safeDump,o.exports.YAMLException=l(53),o.exports.MINIMAL_SCHEMA=l(113),o.exports.SAFE_SCHEMA=l(54),o.exports.DEFAULT_SCHEMA=l(76),o.exports.scan=v("scan"),o.exports.parse=v("parse"),o.exports.compose=v("compose"),o.exports.addConstructor=v("addConstructor")},function(o,i,l){var c=l(38),g=l(53),v=l(285),_=l(54),T=l(76),P=Object.prototype.hasOwnProperty,I=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,R=/[\x85\u2028\u2029]/,L=/[,\[\]\{\}]/,V=/^(?:!|!!|![a-z\-]+!)$/i,U=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function j(Me){return Object.prototype.toString.call(Me)}function z(Me){return Me===10||Me===13}function $(Me){return Me===9||Me===32}function K(Me){return Me===9||Me===32||Me===10||Me===13}function X(Me){return Me===44||Me===91||Me===93||Me===123||Me===125}function ee(Me){var ct;return 48<=Me&&Me<=57?Me-48:97<=(ct=32|Me)&&ct<=102?ct-97+10:-1}function ne(Me){return Me===48?"\0":Me===97?"\x07":Me===98?"\b":Me===116||Me===9?" ":Me===110?` +`:Me===118?"\v":Me===102?"\f":Me===114?"\r":Me===101?"\x1B":Me===32?" ":Me===34?'"':Me===47?"/":Me===92?"\\":Me===78?"…":Me===95?" ":Me===76?"\u2028":Me===80?"\u2029":""}function le(Me){return Me<=65535?String.fromCharCode(Me):String.fromCharCode(55296+(Me-65536>>10),56320+(Me-65536&1023))}for(var ce=new Array(256),ge=new Array(256),pe=0;pe<256;pe++)ce[pe]=ne(pe)?1:0,ge[pe]=ne(pe);function we(Me,ct){this.input=Me,this.filename=ct.filename||null,this.schema=ct.schema||T,this.onWarning=ct.onWarning||null,this.legacy=ct.legacy||!1,this.json=ct.json||!1,this.listener=ct.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=Me.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Te(Me,ct){return new g(ct,new v(Me.filename,Me.input,Me.position,Me.line,Me.position-Me.lineStart))}function Ve(Me,ct){throw Te(Me,ct)}function Pe(Me,ct){Me.onWarning&&Me.onWarning.call(null,Te(Me,ct))}var je={YAML:function(Me,ct,st){var yt,St,Pt;Me.version!==null&&Ve(Me,"duplication of %YAML directive"),st.length!==1&&Ve(Me,"YAML directive accepts exactly one argument"),(yt=/^([0-9]+)\.([0-9]+)$/.exec(st[0]))===null&&Ve(Me,"ill-formed argument of the YAML directive"),St=parseInt(yt[1],10),Pt=parseInt(yt[2],10),St!==1&&Ve(Me,"unacceptable YAML version of the document"),Me.version=st[0],Me.checkLineBreaks=Pt<2,Pt!==1&&Pt!==2&&Pe(Me,"unsupported YAML version of the document")},TAG:function(Me,ct,st){var yt,St;st.length!==2&&Ve(Me,"TAG directive accepts exactly two arguments"),yt=st[0],St=st[1],V.test(yt)||Ve(Me,"ill-formed tag handle (first argument) of the TAG directive"),P.call(Me.tagMap,yt)&&Ve(Me,'there is a previously declared suffix for "'+yt+'" tag handle'),U.test(St)||Ve(Me,"ill-formed tag prefix (second argument) of the TAG directive"),Me.tagMap[yt]=St}};function Je(Me,ct,st,yt){var St,Pt,mn,Pn;if(ct1&&(Me.result+=c.repeat(` +`,ct-1))}function Et(Me,ct){var st,yt,St=Me.tag,Pt=Me.anchor,mn=[],Pn=!1;for(Me.anchor!==null&&(Me.anchorMap[Me.anchor]=mn),yt=Me.input.charCodeAt(Me.position);yt!==0&&yt===45&&K(Me.input.charCodeAt(Me.position+1));)if(Pn=!0,Me.position++,qe(Me,!0,-1)&&Me.lineIndent<=ct)mn.push(null),yt=Me.input.charCodeAt(Me.position);else if(st=Me.line,Jt(Me,ct,3,!1,!0),mn.push(Me.result),qe(Me,!0,-1),yt=Me.input.charCodeAt(Me.position),(Me.line===st||Me.lineIndent>ct)&&yt!==0)Ve(Me,"bad indentation of a sequence entry");else if(Me.lineIndentct?Bt=1:Me.lineIndent===ct?Bt=0:Me.lineIndentct?Bt=1:Me.lineIndent===ct?Bt=0:Me.lineIndentIr)&&(Jt(Ut,Ir,4,!0,An)&&(Hi?e0=Ut.result:p0=Ut.result),Hi||(Ge(Ut,Kr,ai,vi,e0,p0,hr,Cr),vi=e0=p0=null),qe(Ut,!0,-1),wr=Ut.input.charCodeAt(Ut.position)),Ut.lineIndent>Ir&&wr!==0)Ve(Ut,"bad indentation of a mapping entry");else if(Ut.lineIndent=0))break;An===0?Ve(Ut,"bad explicit indentation width of a block scalar; it cannot be less than one"):ui?Ve(Ut,"repeat of an indentation width identifier"):(Kr=Ir+An-1,ui=!0)}if($(hr)){do hr=Ut.input.charCodeAt(++Ut.position);while($(hr));if(hr===35)do hr=Ut.input.charCodeAt(++Ut.position);while(!z(hr)&&hr!==0)}for(;hr!==0;){for(Ke(Ut),Ut.lineIndent=0,hr=Ut.input.charCodeAt(Ut.position);(!ui||Ut.lineIndentKr&&(Kr=Ut.lineIndent),z(hr))ai++;else{if(Ut.lineIndent0){for(An=Cr,hr=0;An>0;An--)(Cr=ee(wr=Ut.input.charCodeAt(++Ut.position)))>=0?hr=(hr<<4)+Cr:Ve(Ut,"expected hexadecimal character");Ut.result+=le(hr),Ut.position++}else Ve(Ut,"unknown escape sequence");br=jr=Ut.position}else z(wr)?(Je(Ut,br,jr,!0),wt(Ut,qe(Ut,!1,Ir)),br=jr=Ut.position):Ut.position===Ut.lineStart&&ut(Ut)?Ve(Ut,"unexpected end of the document within a double quoted scalar"):(Ut.position++,jr=Ut.position)}Ve(Ut,"unexpected end of the stream within a double quoted scalar")}(Me,Vt)?Zn=!0:function(Ut){var Ir,br,jr;if((jr=Ut.input.charCodeAt(Ut.position))!==42)return!1;for(jr=Ut.input.charCodeAt(++Ut.position),Ir=Ut.position;jr!==0&&!K(jr)&&!X(jr);)jr=Ut.input.charCodeAt(++Ut.position);return Ut.position===Ir&&Ve(Ut,"name of an alias node must contain at least one character"),br=Ut.input.slice(Ir,Ut.position),Ut.anchorMap.hasOwnProperty(br)||Ve(Ut,'unidentified alias "'+br+'"'),Ut.result=Ut.anchorMap[br],qe(Ut,!0,-1),!0}(Me)?(Zn=!0,Me.tag===null&&Me.anchor===null||Ve(Me,"alias node should not have any properties")):function(Ut,Ir,br){var jr,An,hr,Cr,wr,Fr,ui,Kr,ai=Ut.kind,vi=Ut.result;if(K(Kr=Ut.input.charCodeAt(Ut.position))||X(Kr)||Kr===35||Kr===38||Kr===42||Kr===33||Kr===124||Kr===62||Kr===39||Kr===34||Kr===37||Kr===64||Kr===96||(Kr===63||Kr===45)&&(K(jr=Ut.input.charCodeAt(Ut.position+1))||br&&X(jr)))return!1;for(Ut.kind="scalar",Ut.result="",An=hr=Ut.position,Cr=!1;Kr!==0;){if(Kr===58){if(K(jr=Ut.input.charCodeAt(Ut.position+1))||br&&X(jr))break}else if(Kr===35){if(K(Ut.input.charCodeAt(Ut.position-1)))break}else{if(Ut.position===Ut.lineStart&&ut(Ut)||br&&X(Kr))break;if(z(Kr)){if(wr=Ut.line,Fr=Ut.lineStart,ui=Ut.lineIndent,qe(Ut,!1,-1),Ut.lineIndent>=Ir){Cr=!0,Kr=Ut.input.charCodeAt(Ut.position);continue}Ut.position=hr,Ut.line=wr,Ut.lineStart=Fr,Ut.lineIndent=ui;break}}Cr&&(Je(Ut,An,hr,!1),wt(Ut,Ut.line-wr),An=hr=Ut.position,Cr=!1),$(Kr)||(hr=Ut.position+1),Kr=Ut.input.charCodeAt(++Ut.position)}return Je(Ut,An,hr,!1),!!Ut.result||(Ut.kind=ai,Ut.result=vi,!1)}(Me,Vt,st===1)&&(Zn=!0,Me.tag===null&&(Me.tag="?")),Me.anchor!==null&&(Me.anchorMap[Me.anchor]=Me.result)):Bt===0&&(Zn=Pn&&Et(Me,gn))),Me.tag!==null&&Me.tag!=="!")if(Me.tag==="?"){for(Me.result!==null&&Me.kind!=="scalar"&&Ve(Me,'unacceptable node kind for ! tag; it should be "scalar", not "'+Me.kind+'"'),Hn=0,Kn=Me.implicitTypes.length;Hn tag; it should be "'+Dt.kind+'", not "'+Me.kind+'"'),Dt.resolve(Me.result)?(Me.result=Dt.construct(Me.result),Me.anchor!==null&&(Me.anchorMap[Me.anchor]=Me.result)):Ve(Me,"cannot resolve a node with !<"+Me.tag+"> explicit tag")):Ve(Me,"unknown tag !<"+Me.tag+">");return Me.listener!==null&&Me.listener("close",Me),Me.tag!==null||Me.anchor!==null||Zn}function Dn(Me){var ct,st,yt,St,Pt=Me.position,mn=!1;for(Me.version=null,Me.checkLineBreaks=Me.legacy,Me.tagMap={},Me.anchorMap={};(St=Me.input.charCodeAt(Me.position))!==0&&(qe(Me,!0,-1),St=Me.input.charCodeAt(Me.position),!(Me.lineIndent>0||St!==37));){for(mn=!0,St=Me.input.charCodeAt(++Me.position),ct=Me.position;St!==0&&!K(St);)St=Me.input.charCodeAt(++Me.position);for(yt=[],(st=Me.input.slice(ct,Me.position)).length<1&&Ve(Me,"directive name must not be less than one character in length");St!==0;){for(;$(St);)St=Me.input.charCodeAt(++Me.position);if(St===35){do St=Me.input.charCodeAt(++Me.position);while(St!==0&&!z(St));break}if(z(St))break;for(ct=Me.position;St!==0&&!K(St);)St=Me.input.charCodeAt(++Me.position);yt.push(Me.input.slice(ct,Me.position))}St!==0&&Ke(Me),P.call(je,st)?je[st](Me,st,yt):Pe(Me,'unknown document directive "'+st+'"')}qe(Me,!0,-1),Me.lineIndent===0&&Me.input.charCodeAt(Me.position)===45&&Me.input.charCodeAt(Me.position+1)===45&&Me.input.charCodeAt(Me.position+2)===45?(Me.position+=3,qe(Me,!0,-1)):mn&&Ve(Me,"directives end mark is expected"),Jt(Me,Me.lineIndent-1,4,!1,!0),qe(Me,!0,-1),Me.checkLineBreaks&&R.test(Me.input.slice(Pt,Me.position))&&Pe(Me,"non-ASCII line breaks are interpreted as content"),Me.documents.push(Me.result),Me.position===Me.lineStart&&ut(Me)?Me.input.charCodeAt(Me.position)===46&&(Me.position+=3,qe(Me,!0,-1)):Me.position0&&`\0\r +…\u2028\u2029`.indexOf(this.buffer.charAt(P-1))===-1;)if(P-=1,this.position-P>_/2-1){T=" ... ",P+=5;break}for(I="",R=this.position;R_/2-1){I=" ... ",R-=5;break}return L=this.buffer.slice(P,R),c.repeat(" ",v)+T+L+I+` +`+c.repeat(" ",v+this.position-P+T.length)+"^"},g.prototype.toString=function(v){var _,T="";return this.name&&(T+='in "'+this.name+'" '),T+="at line "+(this.line+1)+", column "+(this.column+1),v||(_=this.getSnippet())&&(T+=`: +`+_),T},o.exports=g},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:str",{kind:"scalar",construct:function(g){return g!==null?g:""}})},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(g){return g!==null?g:[]}})},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:map",{kind:"mapping",construct:function(g){return g!==null?g:{}}})},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(g){if(g===null)return!0;var v=g.length;return v===1&&g==="~"||v===4&&(g==="null"||g==="Null"||g==="NULL")},construct:function(){return null},predicate:function(g){return g===null},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(g){if(g===null)return!1;var v=g.length;return v===4&&(g==="true"||g==="True"||g==="TRUE")||v===5&&(g==="false"||g==="False"||g==="FALSE")},construct:function(g){return g==="true"||g==="True"||g==="TRUE"},predicate:function(g){return Object.prototype.toString.call(g)==="[object Boolean]"},represent:{lowercase:function(g){return g?"true":"false"},uppercase:function(g){return g?"TRUE":"FALSE"},camelcase:function(g){return g?"True":"False"}},defaultStyle:"lowercase"})},function(o,i,l){var c=l(38),g=l(10);function v(T){return 48<=T&&T<=55}function _(T){return 48<=T&&T<=57}o.exports=new g("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(T){if(T===null)return!1;var P,I,R=T.length,L=0,V=!1;if(!R)return!1;if((P=T[L])!=="-"&&P!=="+"||(P=T[++L]),P==="0"){if(L+1===R)return!0;if((P=T[++L])==="b"){for(L++;L=0?"0b"+T.toString(2):"-0b"+T.toString(2).slice(1)},octal:function(T){return T>=0?"0"+T.toString(8):"-0"+T.toString(8).slice(1)},decimal:function(T){return T.toString(10)},hexadecimal:function(T){return T>=0?"0x"+T.toString(16).toUpperCase():"-0x"+T.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},function(o,i,l){var c=l(38),g=l(10),v=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),_=/^[-+]?[0-9]+e/;o.exports=new g("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(T){return T!==null&&!(!v.test(T)||T[T.length-1]==="_")},construct:function(T){var P,I,R,L;return I=(P=T.replace(/_/g,"").toLowerCase())[0]==="-"?-1:1,L=[],"+-".indexOf(P[0])>=0&&(P=P.slice(1)),P===".inf"?I===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:P===".nan"?NaN:P.indexOf(":")>=0?(P.split(":").forEach(function(V){L.unshift(parseFloat(V,10))}),P=0,R=1,L.forEach(function(V){P+=V*R,R*=60}),I*P):I*parseFloat(P,10)},predicate:function(T){return Object.prototype.toString.call(T)==="[object Number]"&&(T%1!=0||c.isNegativeZero(T))},represent:function(T,P){var I;if(isNaN(T))switch(P){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===T)switch(P){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===T)switch(P){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(c.isNegativeZero(T))return"-0.0";return I=T.toString(10),_.test(I)?I.replace("e",".e"):I},defaultStyle:"lowercase"})},function(o,i,l){var c=l(10),g=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),v=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o.exports=new c("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(_){return _!==null&&(g.exec(_)!==null||v.exec(_)!==null)},construct:function(_){var T,P,I,R,L,V,U,j,z=0,$=null;if((T=g.exec(_))===null&&(T=v.exec(_)),T===null)throw new Error("Date resolve error");if(P=+T[1],I=+T[2]-1,R=+T[3],!T[4])return new Date(Date.UTC(P,I,R));if(L=+T[4],V=+T[5],U=+T[6],T[7]){for(z=T[7].slice(0,3);z.length<3;)z+="0";z=+z}return T[9]&&($=6e4*(60*+T[10]+ +(T[11]||0)),T[9]==="-"&&($=-$)),j=new Date(Date.UTC(P,I,R,L,V,U,z)),$&&j.setTime(j.getTime()-$),j},instanceOf:Date,represent:function(_){return _.toISOString()}})},function(o,i,l){var c=l(10);o.exports=new c("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(g){return g==="<<"||g===null}})},function(o,i,l){var c;try{c=l(145).Buffer}catch{}var g=l(10),v=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o.exports=new g("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(_){if(_===null)return!1;var T,P,I=0,R=_.length,L=v;for(P=0;P64)){if(T<0)return!1;I+=6}return I%8==0},construct:function(_){var T,P,I=_.replace(/[\r\n=]/g,""),R=I.length,L=v,V=0,U=[];for(T=0;T>16&255),U.push(V>>8&255),U.push(255&V)),V=V<<6|L.indexOf(I.charAt(T));return(P=R%4*6)===0?(U.push(V>>16&255),U.push(V>>8&255),U.push(255&V)):P===18?(U.push(V>>10&255),U.push(V>>2&255)):P===12&&U.push(V>>4&255),c?c.from?c.from(U):new c(U):U},predicate:function(_){return c&&c.isBuffer(_)},represent:function(_){var T,P,I="",R=0,L=_.length,V=v;for(T=0;T>18&63],I+=V[R>>12&63],I+=V[R>>6&63],I+=V[63&R]),R=(R<<8)+_[T];return(P=L%3)===0?(I+=V[R>>18&63],I+=V[R>>12&63],I+=V[R>>6&63],I+=V[63&R]):P===2?(I+=V[R>>10&63],I+=V[R>>4&63],I+=V[R<<2&63],I+=V[64]):P===1&&(I+=V[R>>2&63],I+=V[R<<4&63],I+=V[64],I+=V[64]),I}})},function(o,i,l){var c=l(10),g=Object.prototype.hasOwnProperty,v=Object.prototype.toString;o.exports=new c("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(_){if(_===null)return!0;var T,P,I,R,L,V=[],U=_;for(T=0,P=U.length;T3||v[v.length-T.length-1]!=="/"))},construct:function(g){var v=g,_=/\/([gim]*)$/.exec(g),T="";return v[0]==="/"&&(_&&(T=_[1]),v=v.slice(1,v.length-T.length-1)),new RegExp(v,T)},predicate:function(g){return Object.prototype.toString.call(g)==="[object RegExp]"},represent:function(g){var v="/"+g.source+"/";return g.global&&(v+="g"),g.multiline&&(v+="m"),g.ignoreCase&&(v+="i"),v}})},function(o,i,l){var c;try{c=l(302)}catch{typeof window<"u"&&(c=window.esprima)}var g=l(10);o.exports=new g("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(v){if(v===null)return!1;try{var _="("+v+")",T=c.parse(_,{range:!0});return T.type==="Program"&&T.body.length===1&&T.body[0].type==="ExpressionStatement"&&(T.body[0].expression.type==="ArrowFunctionExpression"||T.body[0].expression.type==="FunctionExpression")}catch{return!1}},construct:function(v){var _,T="("+v+")",P=c.parse(T,{range:!0}),I=[];if(P.type!=="Program"||P.body.length!==1||P.body[0].type!=="ExpressionStatement"||P.body[0].expression.type!=="ArrowFunctionExpression"&&P.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return P.body[0].expression.params.forEach(function(R){I.push(R.name)}),_=P.body[0].expression.body.range,P.body[0].expression.body.type==="BlockStatement"?new Function(I,T.slice(_[0]+1,_[1]-1)):new Function(I,"return "+T.slice(_[0],_[1]))},predicate:function(v){return Object.prototype.toString.call(v)==="[object Function]"},represent:function(v){return v.toString()}})},function(o,i,l){var c;c=function(){return function(g){var v={};function _(T){if(v[T])return v[T].exports;var P=v[T]={exports:{},id:T,loaded:!1};return g[T].call(P.exports,P,P.exports,_),P.loaded=!0,P.exports}return _.m=g,_.c=v,_.p="",_(0)}([function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(1),P=_(3),I=_(8),R=_(15);function L(U,j,z){var $=null,K=function(pe,we){z&&z(pe,we),$&&$.visit(pe,we)},X=typeof z=="function"?K:null,ee=!1;if(j){ee=typeof j.comment=="boolean"&&j.comment;var ne=typeof j.attachComment=="boolean"&&j.attachComment;(ee||ne)&&(($=new T.CommentHandler).attach=ne,j.comment=!0,X=K)}var le,ce=!1;j&&typeof j.sourceType=="string"&&(ce=j.sourceType==="module"),le=j&&typeof j.jsx=="boolean"&&j.jsx?new P.JSXParser(U,j,X):new I.Parser(U,j,X);var ge=ce?le.parseModule():le.parseScript();return ee&&$&&(ge.comments=$.comments),le.config.tokens&&(ge.tokens=le.tokens),le.config.tolerant&&(ge.errors=le.errorHandler.errors),ge}v.parse=L,v.parseModule=function(U,j,z){var $=j||{};return $.sourceType="module",L(U,$,z)},v.parseScript=function(U,j,z){var $=j||{};return $.sourceType="script",L(U,$,z)},v.tokenize=function(U,j,z){var $,K=new R.Tokenizer(U,j);$=[];try{for(;;){var X=K.getNextToken();if(!X)break;z&&(X=z(X)),$.push(X)}}catch(ee){K.errorHandler.tolerate(ee)}return K.errorHandler.tolerant&&($.errors=K.errors()),$};var V=_(2);v.Syntax=V.Syntax,v.version="4.0.1"},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(2),P=function(){function I(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return I.prototype.insertInnerComments=function(R,L){if(R.type===T.Syntax.BlockStatement&&R.body.length===0){for(var V=[],U=this.leading.length-1;U>=0;--U){var j=this.leading[U];L.end.offset>=j.start&&(V.unshift(j.comment),this.leading.splice(U,1),this.trailing.splice(U,1))}V.length&&(R.innerComments=V)}},I.prototype.findTrailingComments=function(R){var L=[];if(this.trailing.length>0){for(var V=this.trailing.length-1;V>=0;--V){var U=this.trailing[V];U.start>=R.end.offset&&L.unshift(U.comment)}return this.trailing.length=0,L}var j=this.stack[this.stack.length-1];if(j&&j.node.trailingComments){var z=j.node.trailingComments[0];z&&z.range[0]>=R.end.offset&&(L=j.node.trailingComments,delete j.node.trailingComments)}return L},I.prototype.findLeadingComments=function(R){for(var L,V=[];this.stack.length>0&&(z=this.stack[this.stack.length-1])&&z.start>=R.start.offset;)L=z.node,this.stack.pop();if(L){for(var U=(L.leadingComments?L.leadingComments.length:0)-1;U>=0;--U){var j=L.leadingComments[U];j.range[1]<=R.start.offset&&(V.unshift(j),L.leadingComments.splice(U,1))}return L.leadingComments&&L.leadingComments.length===0&&delete L.leadingComments,V}for(U=this.leading.length-1;U>=0;--U){var z;(z=this.leading[U]).start<=R.start.offset&&(V.unshift(z.comment),this.leading.splice(U,1))}return V},I.prototype.visitNode=function(R,L){if(!(R.type===T.Syntax.Program&&R.body.length>0)){this.insertInnerComments(R,L);var V=this.findTrailingComments(L),U=this.findLeadingComments(L);U.length>0&&(R.leadingComments=U),V.length>0&&(R.trailingComments=V),this.stack.push({node:R,start:L.start.offset})}},I.prototype.visitComment=function(R,L){var V=R.type[0]==="L"?"Line":"Block",U={type:V,value:R.value};if(R.range&&(U.range=R.range),R.loc&&(U.loc=R.loc),this.comments.push(U),this.attach){var j={comment:{type:V,value:R.value,range:[L.start.offset,L.end.offset]},start:L.start.offset};R.loc&&(j.comment.loc=R.loc),R.type=V,this.leading.push(j),this.trailing.push(j)}},I.prototype.visit=function(R,L){R.type==="LineComment"||R.type==="BlockComment"?this.visitComment(R,L):this.attach&&this.visitNode(R,L)},I}();v.CommentHandler=P},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(g,v,_){var T,P=this&&this.__extends||(T=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(X,ee){X.__proto__=ee}||function(X,ee){for(var ne in ee)ee.hasOwnProperty(ne)&&(X[ne]=ee[ne])},function(X,ee){function ne(){this.constructor=X}T(X,ee),X.prototype=ee===null?Object.create(ee):(ne.prototype=ee.prototype,new ne)});Object.defineProperty(v,"__esModule",{value:!0});var I=_(4),R=_(5),L=_(6),V=_(7),U=_(8),j=_(13),z=_(14);function $(X){var ee;switch(X.type){case L.JSXSyntax.JSXIdentifier:ee=X.name;break;case L.JSXSyntax.JSXNamespacedName:var ne=X;ee=$(ne.namespace)+":"+$(ne.name);break;case L.JSXSyntax.JSXMemberExpression:var le=X;ee=$(le.object)+"."+$(le.property)}return ee}j.TokenName[100]="JSXIdentifier",j.TokenName[101]="JSXText";var K=function(X){function ee(ne,le,ce){return X.call(this,ne,le,ce)||this}return P(ee,X),ee.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():X.prototype.parsePrimaryExpression.call(this)},ee.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column},ee.prototype.finishJSX=function(){this.nextToken()},ee.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},ee.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},ee.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},ee.prototype.scanXHTMLEntity=function(ne){for(var le="&",ce=!0,ge=!1,pe=!1,we=!1;!this.scanner.eof()&&ce&&!ge;){var Te=this.scanner.source[this.scanner.index];if(Te===ne)break;if(ge=Te===";",le+=Te,++this.scanner.index,!ge)switch(le.length){case 2:pe=Te==="#";break;case 3:pe&&(ce=(we=Te==="x")||I.Character.isDecimalDigit(Te.charCodeAt(0)),pe=pe&&!we);break;default:ce=(ce=ce&&!(pe&&!I.Character.isDecimalDigit(Te.charCodeAt(0))))&&!(we&&!I.Character.isHexDigit(Te.charCodeAt(0)))}}if(ce&&ge&&le.length>2){var Ve=le.substr(1,le.length-2);pe&&Ve.length>1?le=String.fromCharCode(parseInt(Ve.substr(1),10)):we&&Ve.length>2?le=String.fromCharCode(parseInt("0"+Ve.substr(1),16)):pe||we||!z.XHTMLEntities[Ve]||(le=z.XHTMLEntities[Ve])}return le},ee.prototype.lexJSX=function(){var ne=this.scanner.source.charCodeAt(this.scanner.index);if(ne===60||ne===62||ne===47||ne===58||ne===61||ne===123||ne===125)return{type:7,value:Te=this.scanner.source[this.scanner.index++],lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index};if(ne===34||ne===39){for(var le=this.scanner.index,ce=this.scanner.source[this.scanner.index++],ge="";!this.scanner.eof()&&(Ve=this.scanner.source[this.scanner.index++])!==ce;)ge+=Ve==="&"?this.scanXHTMLEntity(ce):Ve;return{type:8,value:ge,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:le,end:this.scanner.index}}if(ne===46){var pe=this.scanner.source.charCodeAt(this.scanner.index+1),we=this.scanner.source.charCodeAt(this.scanner.index+2),Te=pe===46&&we===46?"...":".";return le=this.scanner.index,this.scanner.index+=Te.length,{type:7,value:Te,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:le,end:this.scanner.index}}if(ne===96)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(I.Character.isIdentifierStart(ne)&&ne!==92){for(le=this.scanner.index,++this.scanner.index;!this.scanner.eof();){var Ve=this.scanner.source.charCodeAt(this.scanner.index);if(I.Character.isIdentifierPart(Ve)&&Ve!==92)++this.scanner.index;else{if(Ve!==45)break;++this.scanner.index}}return{type:100,value:this.scanner.source.slice(le,this.scanner.index),lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:le,end:this.scanner.index}}return this.scanner.lex()},ee.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;var ne=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(ne)),ne},ee.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;for(var ne=this.scanner.index,le="";!this.scanner.eof();){var ce=this.scanner.source[this.scanner.index];if(ce==="{"||ce==="<")break;++this.scanner.index,le+=ce,I.Character.isLineTerminator(ce.charCodeAt(0))&&(++this.scanner.lineNumber,ce==="\r"&&this.scanner.source[this.scanner.index]===` +`&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var ge={type:101,value:le,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:ne,end:this.scanner.index};return le.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(ge)),ge},ee.prototype.peekJSXToken=function(){var ne=this.scanner.saveState();this.scanner.scanComments();var le=this.lexJSX();return this.scanner.restoreState(ne),le},ee.prototype.expectJSX=function(ne){var le=this.nextJSXToken();le.type===7&&le.value===ne||this.throwUnexpectedToken(le)},ee.prototype.matchJSX=function(ne){var le=this.peekJSXToken();return le.type===7&&le.value===ne},ee.prototype.parseJSXIdentifier=function(){var ne=this.createJSXNode(),le=this.nextJSXToken();return le.type!==100&&this.throwUnexpectedToken(le),this.finalize(ne,new R.JSXIdentifier(le.value))},ee.prototype.parseJSXElementName=function(){var ne=this.createJSXNode(),le=this.parseJSXIdentifier();if(this.matchJSX(":")){var ce=le;this.expectJSX(":");var ge=this.parseJSXIdentifier();le=this.finalize(ne,new R.JSXNamespacedName(ce,ge))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var pe=le;this.expectJSX(".");var we=this.parseJSXIdentifier();le=this.finalize(ne,new R.JSXMemberExpression(pe,we))}return le},ee.prototype.parseJSXAttributeName=function(){var ne,le=this.createJSXNode(),ce=this.parseJSXIdentifier();if(this.matchJSX(":")){var ge=ce;this.expectJSX(":");var pe=this.parseJSXIdentifier();ne=this.finalize(le,new R.JSXNamespacedName(ge,pe))}else ne=ce;return ne},ee.prototype.parseJSXStringLiteralAttribute=function(){var ne=this.createJSXNode(),le=this.nextJSXToken();le.type!==8&&this.throwUnexpectedToken(le);var ce=this.getTokenRaw(le);return this.finalize(ne,new V.Literal(le.value,ce))},ee.prototype.parseJSXExpressionAttribute=function(){var ne=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var le=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(ne,new R.JSXExpressionContainer(le))},ee.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},ee.prototype.parseJSXNameValueAttribute=function(){var ne=this.createJSXNode(),le=this.parseJSXAttributeName(),ce=null;return this.matchJSX("=")&&(this.expectJSX("="),ce=this.parseJSXAttributeValue()),this.finalize(ne,new R.JSXAttribute(le,ce))},ee.prototype.parseJSXSpreadAttribute=function(){var ne=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var le=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(ne,new R.JSXSpreadAttribute(le))},ee.prototype.parseJSXAttributes=function(){for(var ne=[];!this.matchJSX("/")&&!this.matchJSX(">");){var le=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();ne.push(le)}return ne},ee.prototype.parseJSXOpeningElement=function(){var ne=this.createJSXNode();this.expectJSX("<");var le=this.parseJSXElementName(),ce=this.parseJSXAttributes(),ge=this.matchJSX("/");return ge&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(ne,new R.JSXOpeningElement(le,ge,ce))},ee.prototype.parseJSXBoundaryElement=function(){var ne=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var le=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(ne,new R.JSXClosingElement(le))}var ce=this.parseJSXElementName(),ge=this.parseJSXAttributes(),pe=this.matchJSX("/");return pe&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(ne,new R.JSXOpeningElement(ce,pe,ge))},ee.prototype.parseJSXEmptyExpression=function(){var ne=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(ne,new R.JSXEmptyExpression)},ee.prototype.parseJSXExpressionContainer=function(){var ne,le=this.createJSXNode();return this.expectJSX("{"),this.matchJSX("}")?(ne=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),ne=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(le,new R.JSXExpressionContainer(ne))},ee.prototype.parseJSXChildren=function(){for(var ne=[];!this.scanner.eof();){var le=this.createJSXChildNode(),ce=this.nextJSXText();if(ce.start0))break;we=this.finalize(ne.node,new R.JSXElement(ne.opening,ne.children,ne.closing)),(ne=le[le.length-1]).children.push(we),le.pop()}}return ne},ee.prototype.parseJSXElement=function(){var ne=this.createJSXNode(),le=this.parseJSXOpeningElement(),ce=[],ge=null;if(!le.selfClosing){var pe=this.parseComplexJSXElement({node:ne,opening:le,closing:ge,children:ce});ce=pe.children,ge=pe.closing}return this.finalize(ne,new R.JSXElement(le,ce,ge))},ee.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var ne=this.parseJSXElement();return this.finishJSX(),ne},ee.prototype.isStartOfExpression=function(){return X.prototype.isStartOfExpression.call(this)||this.match("<")},ee}(U.Parser);v.JSXParser=K},function(g,v){Object.defineProperty(v,"__esModule",{value:!0});var _={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};v.Character={fromCodePoint:function(T){return T<65536?String.fromCharCode(T):String.fromCharCode(55296+(T-65536>>10))+String.fromCharCode(56320+(T-65536&1023))},isWhiteSpace:function(T){return T===32||T===9||T===11||T===12||T===160||T>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(T)>=0},isLineTerminator:function(T){return T===10||T===13||T===8232||T===8233},isIdentifierStart:function(T){return T===36||T===95||T>=65&&T<=90||T>=97&&T<=122||T===92||T>=128&&_.NonAsciiIdentifierStart.test(v.Character.fromCodePoint(T))},isIdentifierPart:function(T){return T===36||T===95||T>=65&&T<=90||T>=97&&T<=122||T>=48&&T<=57||T===92||T>=128&&_.NonAsciiIdentifierPart.test(v.Character.fromCodePoint(T))},isDecimalDigit:function(T){return T>=48&&T<=57},isHexDigit:function(T){return T>=48&&T<=57||T>=65&&T<=70||T>=97&&T<=102},isOctalDigit:function(T){return T>=48&&T<=55}}},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(6),P=function(ee){this.type=T.JSXSyntax.JSXClosingElement,this.name=ee};v.JSXClosingElement=P;var I=function(ee,ne,le){this.type=T.JSXSyntax.JSXElement,this.openingElement=ee,this.children=ne,this.closingElement=le};v.JSXElement=I;var R=function(){this.type=T.JSXSyntax.JSXEmptyExpression};v.JSXEmptyExpression=R;var L=function(ee){this.type=T.JSXSyntax.JSXExpressionContainer,this.expression=ee};v.JSXExpressionContainer=L;var V=function(ee){this.type=T.JSXSyntax.JSXIdentifier,this.name=ee};v.JSXIdentifier=V;var U=function(ee,ne){this.type=T.JSXSyntax.JSXMemberExpression,this.object=ee,this.property=ne};v.JSXMemberExpression=U;var j=function(ee,ne){this.type=T.JSXSyntax.JSXAttribute,this.name=ee,this.value=ne};v.JSXAttribute=j;var z=function(ee,ne){this.type=T.JSXSyntax.JSXNamespacedName,this.namespace=ee,this.name=ne};v.JSXNamespacedName=z;var $=function(ee,ne,le){this.type=T.JSXSyntax.JSXOpeningElement,this.name=ee,this.selfClosing=ne,this.attributes=le};v.JSXOpeningElement=$;var K=function(ee){this.type=T.JSXSyntax.JSXSpreadAttribute,this.argument=ee};v.JSXSpreadAttribute=K;var X=function(ee,ne){this.type=T.JSXSyntax.JSXText,this.value=ee,this.raw=ne};v.JSXText=X},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(2),P=function(Yn){this.type=T.Syntax.ArrayExpression,this.elements=Yn};v.ArrayExpression=P;var I=function(Yn){this.type=T.Syntax.ArrayPattern,this.elements=Yn};v.ArrayPattern=I;var R=function(Yn,Tr,Ai){this.type=T.Syntax.ArrowFunctionExpression,this.id=null,this.params=Yn,this.body=Tr,this.generator=!1,this.expression=Ai,this.async=!1};v.ArrowFunctionExpression=R;var L=function(Yn,Tr,Ai){this.type=T.Syntax.AssignmentExpression,this.operator=Yn,this.left=Tr,this.right=Ai};v.AssignmentExpression=L;var V=function(Yn,Tr){this.type=T.Syntax.AssignmentPattern,this.left=Yn,this.right=Tr};v.AssignmentPattern=V;var U=function(Yn,Tr,Ai){this.type=T.Syntax.ArrowFunctionExpression,this.id=null,this.params=Yn,this.body=Tr,this.generator=!1,this.expression=Ai,this.async=!0};v.AsyncArrowFunctionExpression=U;var j=function(Yn,Tr,Ai){this.type=T.Syntax.FunctionDeclaration,this.id=Yn,this.params=Tr,this.body=Ai,this.generator=!1,this.expression=!1,this.async=!0};v.AsyncFunctionDeclaration=j;var z=function(Yn,Tr,Ai){this.type=T.Syntax.FunctionExpression,this.id=Yn,this.params=Tr,this.body=Ai,this.generator=!1,this.expression=!1,this.async=!0};v.AsyncFunctionExpression=z;var $=function(Yn){this.type=T.Syntax.AwaitExpression,this.argument=Yn};v.AwaitExpression=$;var K=function(Yn,Tr,Ai){var t0=Yn==="||"||Yn==="&&";this.type=t0?T.Syntax.LogicalExpression:T.Syntax.BinaryExpression,this.operator=Yn,this.left=Tr,this.right=Ai};v.BinaryExpression=K;var X=function(Yn){this.type=T.Syntax.BlockStatement,this.body=Yn};v.BlockStatement=X;var ee=function(Yn){this.type=T.Syntax.BreakStatement,this.label=Yn};v.BreakStatement=ee;var ne=function(Yn,Tr){this.type=T.Syntax.CallExpression,this.callee=Yn,this.arguments=Tr};v.CallExpression=ne;var le=function(Yn,Tr){this.type=T.Syntax.CatchClause,this.param=Yn,this.body=Tr};v.CatchClause=le;var ce=function(Yn){this.type=T.Syntax.ClassBody,this.body=Yn};v.ClassBody=ce;var ge=function(Yn,Tr,Ai){this.type=T.Syntax.ClassDeclaration,this.id=Yn,this.superClass=Tr,this.body=Ai};v.ClassDeclaration=ge;var pe=function(Yn,Tr,Ai){this.type=T.Syntax.ClassExpression,this.id=Yn,this.superClass=Tr,this.body=Ai};v.ClassExpression=pe;var we=function(Yn,Tr){this.type=T.Syntax.MemberExpression,this.computed=!0,this.object=Yn,this.property=Tr};v.ComputedMemberExpression=we;var Te=function(Yn,Tr,Ai){this.type=T.Syntax.ConditionalExpression,this.test=Yn,this.consequent=Tr,this.alternate=Ai};v.ConditionalExpression=Te;var Ve=function(Yn){this.type=T.Syntax.ContinueStatement,this.label=Yn};v.ContinueStatement=Ve;var Pe=function(){this.type=T.Syntax.DebuggerStatement};v.DebuggerStatement=Pe;var je=function(Yn,Tr){this.type=T.Syntax.ExpressionStatement,this.expression=Yn,this.directive=Tr};v.Directive=je;var Je=function(Yn,Tr){this.type=T.Syntax.DoWhileStatement,this.body=Yn,this.test=Tr};v.DoWhileStatement=Je;var it=function(){this.type=T.Syntax.EmptyStatement};v.EmptyStatement=it;var Ge=function(Yn){this.type=T.Syntax.ExportAllDeclaration,this.source=Yn};v.ExportAllDeclaration=Ge;var Ke=function(Yn){this.type=T.Syntax.ExportDefaultDeclaration,this.declaration=Yn};v.ExportDefaultDeclaration=Ke;var qe=function(Yn,Tr,Ai){this.type=T.Syntax.ExportNamedDeclaration,this.declaration=Yn,this.specifiers=Tr,this.source=Ai};v.ExportNamedDeclaration=qe;var ut=function(Yn,Tr){this.type=T.Syntax.ExportSpecifier,this.exported=Tr,this.local=Yn};v.ExportSpecifier=ut;var wt=function(Yn){this.type=T.Syntax.ExpressionStatement,this.expression=Yn};v.ExpressionStatement=wt;var Et=function(Yn,Tr,Ai){this.type=T.Syntax.ForInStatement,this.left=Yn,this.right=Tr,this.body=Ai,this.each=!1};v.ForInStatement=Et;var qt=function(Yn,Tr,Ai){this.type=T.Syntax.ForOfStatement,this.left=Yn,this.right=Tr,this.body=Ai};v.ForOfStatement=qt;var $t=function(Yn,Tr,Ai,t0){this.type=T.Syntax.ForStatement,this.init=Yn,this.test=Tr,this.update=Ai,this.body=t0};v.ForStatement=$t;var Jt=function(Yn,Tr,Ai,t0){this.type=T.Syntax.FunctionDeclaration,this.id=Yn,this.params=Tr,this.body=Ai,this.generator=t0,this.expression=!1,this.async=!1};v.FunctionDeclaration=Jt;var Dn=function(Yn,Tr,Ai,t0){this.type=T.Syntax.FunctionExpression,this.id=Yn,this.params=Tr,this.body=Ai,this.generator=t0,this.expression=!1,this.async=!1};v.FunctionExpression=Dn;var Nn=function(Yn){this.type=T.Syntax.Identifier,this.name=Yn};v.Identifier=Nn;var xn=function(Yn,Tr,Ai){this.type=T.Syntax.IfStatement,this.test=Yn,this.consequent=Tr,this.alternate=Ai};v.IfStatement=xn;var et=function(Yn,Tr){this.type=T.Syntax.ImportDeclaration,this.specifiers=Yn,this.source=Tr};v.ImportDeclaration=et;var Me=function(Yn){this.type=T.Syntax.ImportDefaultSpecifier,this.local=Yn};v.ImportDefaultSpecifier=Me;var ct=function(Yn){this.type=T.Syntax.ImportNamespaceSpecifier,this.local=Yn};v.ImportNamespaceSpecifier=ct;var st=function(Yn,Tr){this.type=T.Syntax.ImportSpecifier,this.local=Yn,this.imported=Tr};v.ImportSpecifier=st;var yt=function(Yn,Tr){this.type=T.Syntax.LabeledStatement,this.label=Yn,this.body=Tr};v.LabeledStatement=yt;var St=function(Yn,Tr){this.type=T.Syntax.Literal,this.value=Yn,this.raw=Tr};v.Literal=St;var Pt=function(Yn,Tr){this.type=T.Syntax.MetaProperty,this.meta=Yn,this.property=Tr};v.MetaProperty=Pt;var mn=function(Yn,Tr,Ai,t0,Mo){this.type=T.Syntax.MethodDefinition,this.key=Yn,this.computed=Tr,this.value=Ai,this.kind=t0,this.static=Mo};v.MethodDefinition=mn;var Pn=function(Yn){this.type=T.Syntax.Program,this.body=Yn,this.sourceType="module"};v.Module=Pn;var Hn=function(Yn,Tr){this.type=T.Syntax.NewExpression,this.callee=Yn,this.arguments=Tr};v.NewExpression=Hn;var Kn=function(Yn){this.type=T.Syntax.ObjectExpression,this.properties=Yn};v.ObjectExpression=Kn;var Dt=function(Yn){this.type=T.Syntax.ObjectPattern,this.properties=Yn};v.ObjectPattern=Dt;var Vt=function(Yn,Tr,Ai,t0,Mo,Fi){this.type=T.Syntax.Property,this.key=Tr,this.computed=Ai,this.value=t0,this.kind=Yn,this.method=Mo,this.shorthand=Fi};v.Property=Vt;var gn=function(Yn,Tr,Ai,t0){this.type=T.Syntax.Literal,this.value=Yn,this.raw=Tr,this.regex={pattern:Ai,flags:t0}};v.RegexLiteral=gn;var Bt=function(Yn){this.type=T.Syntax.RestElement,this.argument=Yn};v.RestElement=Bt;var rn=function(Yn){this.type=T.Syntax.ReturnStatement,this.argument=Yn};v.ReturnStatement=rn;var Zn=function(Yn){this.type=T.Syntax.Program,this.body=Yn,this.sourceType="script"};v.Script=Zn;var Ut=function(Yn){this.type=T.Syntax.SequenceExpression,this.expressions=Yn};v.SequenceExpression=Ut;var Ir=function(Yn){this.type=T.Syntax.SpreadElement,this.argument=Yn};v.SpreadElement=Ir;var br=function(Yn,Tr){this.type=T.Syntax.MemberExpression,this.computed=!1,this.object=Yn,this.property=Tr};v.StaticMemberExpression=br;var jr=function(){this.type=T.Syntax.Super};v.Super=jr;var An=function(Yn,Tr){this.type=T.Syntax.SwitchCase,this.test=Yn,this.consequent=Tr};v.SwitchCase=An;var hr=function(Yn,Tr){this.type=T.Syntax.SwitchStatement,this.discriminant=Yn,this.cases=Tr};v.SwitchStatement=hr;var Cr=function(Yn,Tr){this.type=T.Syntax.TaggedTemplateExpression,this.tag=Yn,this.quasi=Tr};v.TaggedTemplateExpression=Cr;var wr=function(Yn,Tr){this.type=T.Syntax.TemplateElement,this.value=Yn,this.tail=Tr};v.TemplateElement=wr;var Fr=function(Yn,Tr){this.type=T.Syntax.TemplateLiteral,this.quasis=Yn,this.expressions=Tr};v.TemplateLiteral=Fr;var ui=function(){this.type=T.Syntax.ThisExpression};v.ThisExpression=ui;var Kr=function(Yn){this.type=T.Syntax.ThrowStatement,this.argument=Yn};v.ThrowStatement=Kr;var ai=function(Yn,Tr,Ai){this.type=T.Syntax.TryStatement,this.block=Yn,this.handler=Tr,this.finalizer=Ai};v.TryStatement=ai;var vi=function(Yn,Tr){this.type=T.Syntax.UnaryExpression,this.operator=Yn,this.argument=Tr,this.prefix=!0};v.UnaryExpression=vi;var e0=function(Yn,Tr,Ai){this.type=T.Syntax.UpdateExpression,this.operator=Yn,this.argument=Tr,this.prefix=Ai};v.UpdateExpression=e0;var p0=function(Yn,Tr){this.type=T.Syntax.VariableDeclaration,this.declarations=Yn,this.kind=Tr};v.VariableDeclaration=p0;var Hi=function(Yn,Tr){this.type=T.Syntax.VariableDeclarator,this.id=Yn,this.init=Tr};v.VariableDeclarator=Hi;var T0=function(Yn,Tr){this.type=T.Syntax.WhileStatement,this.test=Yn,this.body=Tr};v.WhileStatement=T0;var wo=function(Yn,Tr){this.type=T.Syntax.WithStatement,this.object=Yn,this.body=Tr};v.WithStatement=wo;var uo=function(Yn,Tr){this.type=T.Syntax.YieldExpression,this.argument=Yn,this.delegate=Tr};v.YieldExpression=uo},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(9),P=_(10),I=_(11),R=_(7),L=_(12),V=_(2),U=_(13),j=function(){function z($,K,X){K===void 0&&(K={}),this.config={range:typeof K.range=="boolean"&&K.range,loc:typeof K.loc=="boolean"&&K.loc,source:null,tokens:typeof K.tokens=="boolean"&&K.tokens,comment:typeof K.comment=="boolean"&&K.comment,tolerant:typeof K.tolerant=="boolean"&&K.tolerant},this.config.loc&&K.source&&K.source!==null&&(this.config.source=String(K.source)),this.delegate=X,this.errorHandler=new P.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new L.Scanner($,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,await:!1,allowIn:!0,allowStrictDirective:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:!1},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}return z.prototype.throwError=function($){for(var K=[],X=1;X0&&this.delegate)for(var K=0;K<$.length;++K){var X=$[K],ee=void 0;ee={type:X.multiLine?"BlockComment":"LineComment",value:this.scanner.source.slice(X.slice[0],X.slice[1])},this.config.range&&(ee.range=X.range),this.config.loc&&(ee.loc=X.loc);var ne={start:{line:X.loc.start.line,column:X.loc.start.column,offset:X.range[0]},end:{line:X.loc.end.line,column:X.loc.end.column,offset:X.range[1]}};this.delegate(ee,ne)}}else this.scanner.scanComments()},z.prototype.getTokenRaw=function($){return this.scanner.source.slice($.start,$.end)},z.prototype.convertToken=function($){var K={type:U.TokenName[$.type],value:this.getTokenRaw($)};if(this.config.range&&(K.range=[$.start,$.end]),this.config.loc&&(K.loc={start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}),$.type===9){var X=$.pattern,ee=$.flags;K.regex={pattern:X,flags:ee}}return K},z.prototype.nextToken=function(){var $=this.lookahead;this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.collectComments(),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart);var K=this.scanner.lex();return this.hasLineTerminator=$.lineNumber!==K.lineNumber,K&&this.context.strict&&K.type===3&&this.scanner.isStrictModeReservedWord(K.value)&&(K.type=4),this.lookahead=K,this.config.tokens&&K.type!==2&&this.tokens.push(this.convertToken(K)),$},z.prototype.nextRegexToken=function(){this.collectComments();var $=this.scanner.scanRegExp();return this.config.tokens&&(this.tokens.pop(),this.tokens.push(this.convertToken($))),this.lookahead=$,this.nextToken(),$},z.prototype.createNode=function(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}},z.prototype.startNode=function($,K){K===void 0&&(K=0);var X=$.start-$.lineStart,ee=$.lineNumber;return X<0&&(X+=K,ee--),{index:$.start,line:ee,column:X}},z.prototype.finalize=function($,K){if(this.config.range&&(K.range=[$.index,this.lastMarker.index]),this.config.loc&&(K.loc={start:{line:$.line,column:$.column},end:{line:this.lastMarker.line,column:this.lastMarker.column}},this.config.source&&(K.loc.source=this.config.source)),this.delegate){var X={start:{line:$.line,column:$.column,offset:$.index},end:{line:this.lastMarker.line,column:this.lastMarker.column,offset:this.lastMarker.index}};this.delegate(K,X)}return K},z.prototype.expect=function($){var K=this.nextToken();K.type===7&&K.value===$||this.throwUnexpectedToken(K)},z.prototype.expectCommaSeparator=function(){if(this.config.tolerant){var $=this.lookahead;$.type===7&&$.value===","?this.nextToken():$.type===7&&$.value===";"?(this.nextToken(),this.tolerateUnexpectedToken($)):this.tolerateUnexpectedToken($,I.Messages.UnexpectedToken)}else this.expect(",")},z.prototype.expectKeyword=function($){var K=this.nextToken();K.type===4&&K.value===$||this.throwUnexpectedToken(K)},z.prototype.match=function($){return this.lookahead.type===7&&this.lookahead.value===$},z.prototype.matchKeyword=function($){return this.lookahead.type===4&&this.lookahead.value===$},z.prototype.matchContextualKeyword=function($){return this.lookahead.type===3&&this.lookahead.value===$},z.prototype.matchAssign=function(){if(this.lookahead.type!==7)return!1;var $=this.lookahead.value;return $==="="||$==="*="||$==="**="||$==="/="||$==="%="||$==="+="||$==="-="||$==="<<="||$===">>="||$===">>>="||$==="&="||$==="^="||$==="|="},z.prototype.isolateCoverGrammar=function($){var K=this.context.isBindingElement,X=this.context.isAssignmentTarget,ee=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var ne=$.call(this);return this.context.firstCoverInitializedNameError!==null&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=K,this.context.isAssignmentTarget=X,this.context.firstCoverInitializedNameError=ee,ne},z.prototype.inheritCoverGrammar=function($){var K=this.context.isBindingElement,X=this.context.isAssignmentTarget,ee=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var ne=$.call(this);return this.context.isBindingElement=this.context.isBindingElement&&K,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&X,this.context.firstCoverInitializedNameError=ee||this.context.firstCoverInitializedNameError,ne},z.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type===2||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)},z.prototype.parsePrimaryExpression=function(){var $,K,X,ee=this.createNode();switch(this.lookahead.type){case 3:(this.context.isModule||this.context.await)&&this.lookahead.value==="await"&&this.tolerateUnexpectedToken(this.lookahead),$=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(ee,new R.Identifier(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,I.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,K=this.nextToken(),X=this.getTokenRaw(K),$=this.finalize(ee,new R.Literal(K.value,X));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,K=this.nextToken(),X=this.getTokenRaw(K),$=this.finalize(ee,new R.Literal(K.value==="true",X));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,K=this.nextToken(),X=this.getTokenRaw(K),$=this.finalize(ee,new R.Literal(null,X));break;case 10:$=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,$=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":$=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":$=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,K=this.nextRegexToken(),X=this.getTokenRaw(K),$=this.finalize(ee,new R.RegexLiteral(K.regex,X,K.pattern,K.flags));break;default:$=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?$=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?$=this.finalize(ee,new R.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?$=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),$=this.finalize(ee,new R.ThisExpression)):$=this.matchKeyword("class")?this.parseClassExpression():this.throwUnexpectedToken(this.nextToken()));break;default:$=this.throwUnexpectedToken(this.nextToken())}return $},z.prototype.parseSpreadElement=function(){var $=this.createNode();this.expect("...");var K=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize($,new R.SpreadElement(K))},z.prototype.parseArrayInitializer=function(){var $=this.createNode(),K=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),K.push(null);else if(this.match("...")){var X=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),K.push(X)}else K.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize($,new R.ArrayExpression(K))},z.prototype.parsePropertyMethod=function($){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var K=this.context.strict,X=this.context.allowStrictDirective;this.context.allowStrictDirective=$.simple;var ee=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&$.firstRestricted&&this.tolerateUnexpectedToken($.firstRestricted,$.message),this.context.strict&&$.stricted&&this.tolerateUnexpectedToken($.stricted,$.message),this.context.strict=K,this.context.allowStrictDirective=X,ee},z.prototype.parsePropertyMethodFunction=function(){var $=this.createNode(),K=this.context.allowYield;this.context.allowYield=!0;var X=this.parseFormalParameters(),ee=this.parsePropertyMethod(X);return this.context.allowYield=K,this.finalize($,new R.FunctionExpression(null,X.params,ee,!1))},z.prototype.parsePropertyMethodAsyncFunction=function(){var $=this.createNode(),K=this.context.allowYield,X=this.context.await;this.context.allowYield=!1,this.context.await=!0;var ee=this.parseFormalParameters(),ne=this.parsePropertyMethod(ee);return this.context.allowYield=K,this.context.await=X,this.finalize($,new R.AsyncFunctionExpression(null,ee.params,ne))},z.prototype.parseObjectPropertyKey=function(){var $,K=this.createNode(),X=this.nextToken();switch(X.type){case 8:case 6:this.context.strict&&X.octal&&this.tolerateUnexpectedToken(X,I.Messages.StrictOctalLiteral);var ee=this.getTokenRaw(X);$=this.finalize(K,new R.Literal(X.value,ee));break;case 3:case 1:case 5:case 4:$=this.finalize(K,new R.Identifier(X.value));break;case 7:X.value==="["?($=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):$=this.throwUnexpectedToken(X);break;default:$=this.throwUnexpectedToken(X)}return $},z.prototype.isPropertyKey=function($,K){return $.type===V.Syntax.Identifier&&$.name===K||$.type===V.Syntax.Literal&&$.value===K},z.prototype.parseObjectProperty=function($){var K,X=this.createNode(),ee=this.lookahead,ne=null,le=null,ce=!1,ge=!1,pe=!1,we=!1;if(ee.type===3){var Te=ee.value;this.nextToken(),ce=this.match("["),ne=(we=!(this.hasLineTerminator||Te!=="async"||this.match(":")||this.match("(")||this.match("*")||this.match(",")))?this.parseObjectPropertyKey():this.finalize(X,new R.Identifier(Te))}else this.match("*")?this.nextToken():(ce=this.match("["),ne=this.parseObjectPropertyKey());var Ve=this.qualifiedPropertyName(this.lookahead);if(ee.type===3&&!we&&ee.value==="get"&&Ve)K="get",ce=this.match("["),ne=this.parseObjectPropertyKey(),this.context.allowYield=!1,le=this.parseGetterMethod();else if(ee.type===3&&!we&&ee.value==="set"&&Ve)K="set",ce=this.match("["),ne=this.parseObjectPropertyKey(),le=this.parseSetterMethod();else if(ee.type===7&&ee.value==="*"&&Ve)K="init",ce=this.match("["),ne=this.parseObjectPropertyKey(),le=this.parseGeneratorMethod(),ge=!0;else if(ne||this.throwUnexpectedToken(this.lookahead),K="init",this.match(":")&&!we)!ce&&this.isPropertyKey(ne,"__proto__")&&($.value&&this.tolerateError(I.Messages.DuplicateProtoProperty),$.value=!0),this.nextToken(),le=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))le=we?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),ge=!0;else if(ee.type===3)if(Te=this.finalize(X,new R.Identifier(ee.value)),this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),pe=!0;var Pe=this.isolateCoverGrammar(this.parseAssignmentExpression);le=this.finalize(X,new R.AssignmentPattern(Te,Pe))}else pe=!0,le=Te;else this.throwUnexpectedToken(this.nextToken());return this.finalize(X,new R.Property(K,ne,ce,le,ge,pe))},z.prototype.parseObjectInitializer=function(){var $=this.createNode();this.expect("{");for(var K=[],X={value:!1};!this.match("}");)K.push(this.parseObjectProperty(X)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize($,new R.ObjectExpression(K))},z.prototype.parseTemplateHead=function(){T.assert(this.lookahead.head,"Template literal must start with a template head");var $=this.createNode(),K=this.nextToken(),X=K.value,ee=K.cooked;return this.finalize($,new R.TemplateElement({raw:X,cooked:ee},K.tail))},z.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var $=this.createNode(),K=this.nextToken(),X=K.value,ee=K.cooked;return this.finalize($,new R.TemplateElement({raw:X,cooked:ee},K.tail))},z.prototype.parseTemplateLiteral=function(){var $=this.createNode(),K=[],X=[],ee=this.parseTemplateHead();for(X.push(ee);!ee.tail;)K.push(this.parseExpression()),ee=this.parseTemplateElement(),X.push(ee);return this.finalize($,new R.TemplateLiteral(X,K))},z.prototype.reinterpretExpressionAsPattern=function($){switch($.type){case V.Syntax.Identifier:case V.Syntax.MemberExpression:case V.Syntax.RestElement:case V.Syntax.AssignmentPattern:break;case V.Syntax.SpreadElement:$.type=V.Syntax.RestElement,this.reinterpretExpressionAsPattern($.argument);break;case V.Syntax.ArrayExpression:$.type=V.Syntax.ArrayPattern;for(var K=0;K<$.elements.length;K++)$.elements[K]!==null&&this.reinterpretExpressionAsPattern($.elements[K]);break;case V.Syntax.ObjectExpression:for($.type=V.Syntax.ObjectPattern,K=0;K<$.properties.length;K++)this.reinterpretExpressionAsPattern($.properties[K].value);break;case V.Syntax.AssignmentExpression:$.type=V.Syntax.AssignmentPattern,delete $.operator,this.reinterpretExpressionAsPattern($.left)}},z.prototype.parseGroupExpression=function(){var $;if(this.expect("("),this.match(")"))this.nextToken(),this.match("=>")||this.expect("=>"),$={type:"ArrowParameterPlaceHolder",params:[],async:!1};else{var K=this.lookahead,X=[];if(this.match("..."))$=this.parseRestElement(X),this.expect(")"),this.match("=>")||this.expect("=>"),$={type:"ArrowParameterPlaceHolder",params:[$],async:!1};else{var ee=!1;if(this.context.isBindingElement=!0,$=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var ne=[];for(this.context.isAssignmentTarget=!1,ne.push($);this.lookahead.type!==2&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(var le=0;le")||this.expect("=>"),this.context.isBindingElement=!1,le=0;le")&&($.type===V.Syntax.Identifier&&$.name==="yield"&&(ee=!0,$={type:"ArrowParameterPlaceHolder",params:[$],async:!1}),!ee)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),$.type===V.Syntax.SequenceExpression)for(le=0;le<$.expressions.length;le++)this.reinterpretExpressionAsPattern($.expressions[le]);else this.reinterpretExpressionAsPattern($);$={type:"ArrowParameterPlaceHolder",params:$.type===V.Syntax.SequenceExpression?$.expressions:[$],async:!1}}this.context.isBindingElement=!1}}}return $},z.prototype.parseArguments=function(){this.expect("(");var $=[];if(!this.match(")"))for(;;){var K=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAssignmentExpression);if($.push(K),this.match(")")||(this.expectCommaSeparator(),this.match(")")))break}return this.expect(")"),$},z.prototype.isIdentifierName=function($){return $.type===3||$.type===4||$.type===1||$.type===5},z.prototype.parseIdentifierName=function(){var $=this.createNode(),K=this.nextToken();return this.isIdentifierName(K)||this.throwUnexpectedToken(K),this.finalize($,new R.Identifier(K.value))},z.prototype.parseNewExpression=function(){var $,K=this.createNode(),X=this.parseIdentifierName();if(T.assert(X.name==="new","New expression must start with `new`"),this.match("."))if(this.nextToken(),this.lookahead.type===3&&this.context.inFunctionBody&&this.lookahead.value==="target"){var ee=this.parseIdentifierName();$=new R.MetaProperty(X,ee)}else this.throwUnexpectedToken(this.lookahead);else{var ne=this.isolateCoverGrammar(this.parseLeftHandSideExpression),le=this.match("(")?this.parseArguments():[];$=new R.NewExpression(ne,le),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return this.finalize(K,$)},z.prototype.parseAsyncArgument=function(){var $=this.parseAssignmentExpression();return this.context.firstCoverInitializedNameError=null,$},z.prototype.parseAsyncArguments=function(){this.expect("(");var $=[];if(!this.match(")"))for(;;){var K=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAsyncArgument);if($.push(K),this.match(")")||(this.expectCommaSeparator(),this.match(")")))break}return this.expect(")"),$},z.prototype.parseLeftHandSideExpressionAllowCall=function(){var $,K=this.lookahead,X=this.matchContextualKeyword("async"),ee=this.context.allowIn;for(this.context.allowIn=!0,this.matchKeyword("super")&&this.context.inFunctionBody?($=this.createNode(),this.nextToken(),$=this.finalize($,new R.Super),this.match("(")||this.match(".")||this.match("[")||this.throwUnexpectedToken(this.lookahead)):$=this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression);;)if(this.match(".")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");var ne=this.parseIdentifierName();$=this.finalize(this.startNode(K),new R.StaticMemberExpression($,ne))}else if(this.match("(")){var le=X&&K.lineNumber===this.lookahead.lineNumber;this.context.isBindingElement=!1,this.context.isAssignmentTarget=!1;var ce=le?this.parseAsyncArguments():this.parseArguments();if($=this.finalize(this.startNode(K),new R.CallExpression($,ce)),le&&this.match("=>")){for(var ge=0;ge0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var ne=[$,this.lookahead],le=K,ce=this.isolateCoverGrammar(this.parseExponentiationExpression),ge=[le,X.value,ce],pe=[ee];!((ee=this.binaryPrecedence(this.lookahead))<=0);){for(;ge.length>2&&ee<=pe[pe.length-1];){ce=ge.pop();var we=ge.pop();pe.pop(),le=ge.pop(),ne.pop();var Te=this.startNode(ne[ne.length-1]);ge.push(this.finalize(Te,new R.BinaryExpression(we,le,ce)))}ge.push(this.nextToken().value),pe.push(ee),ne.push(this.lookahead),ge.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var Ve=ge.length-1;K=ge[Ve];for(var Pe=ne.pop();Ve>1;){var je=ne.pop(),Je=Pe&&Pe.lineStart;Te=this.startNode(je,Je),we=ge[Ve-1],K=this.finalize(Te,new R.BinaryExpression(we,ge[Ve-2],K)),Ve-=2,Pe=je}}return K},z.prototype.parseConditionalExpression=function(){var $=this.lookahead,K=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var X=this.context.allowIn;this.context.allowIn=!0;var ee=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=X,this.expect(":");var ne=this.isolateCoverGrammar(this.parseAssignmentExpression);K=this.finalize(this.startNode($),new R.ConditionalExpression(K,ee,ne)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return K},z.prototype.checkPatternParam=function($,K){switch(K.type){case V.Syntax.Identifier:this.validateParam($,K,K.name);break;case V.Syntax.RestElement:this.checkPatternParam($,K.argument);break;case V.Syntax.AssignmentPattern:this.checkPatternParam($,K.left);break;case V.Syntax.ArrayPattern:for(var X=0;X")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var ne=$.async,le=this.reinterpretAsCoverFormalsList($);if(le){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var ce=this.context.strict,ge=this.context.allowStrictDirective;this.context.allowStrictDirective=le.simple;var pe=this.context.allowYield,we=this.context.await;this.context.allowYield=!0,this.context.await=ne;var Te=this.startNode(K);this.expect("=>");var Ve=void 0;if(this.match("{")){var Pe=this.context.allowIn;this.context.allowIn=!0,Ve=this.parseFunctionSourceElements(),this.context.allowIn=Pe}else Ve=this.isolateCoverGrammar(this.parseAssignmentExpression);var je=Ve.type!==V.Syntax.BlockStatement;this.context.strict&&le.firstRestricted&&this.throwUnexpectedToken(le.firstRestricted,le.message),this.context.strict&&le.stricted&&this.tolerateUnexpectedToken(le.stricted,le.message),$=ne?this.finalize(Te,new R.AsyncArrowFunctionExpression(le.params,Ve,je)):this.finalize(Te,new R.ArrowFunctionExpression(le.params,Ve,je)),this.context.strict=ce,this.context.allowStrictDirective=ge,this.context.allowYield=pe,this.context.await=we}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(I.Messages.InvalidLHSInAssignment),this.context.strict&&$.type===V.Syntax.Identifier){var Je=$;this.scanner.isRestrictedWord(Je.name)&&this.tolerateUnexpectedToken(X,I.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(Je.name)&&this.tolerateUnexpectedToken(X,I.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern($):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1);var it=(X=this.nextToken()).value,Ge=this.isolateCoverGrammar(this.parseAssignmentExpression);$=this.finalize(this.startNode(K),new R.AssignmentExpression(it,$,Ge)),this.context.firstCoverInitializedNameError=null}}return $},z.prototype.parseExpression=function(){var $=this.lookahead,K=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var X=[];for(X.push(K);this.lookahead.type!==2&&this.match(",");)this.nextToken(),X.push(this.isolateCoverGrammar(this.parseAssignmentExpression));K=this.finalize(this.startNode($),new R.SequenceExpression(X))}return K},z.prototype.parseStatementListItem=function(){var $;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,this.lookahead.type===4)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,I.Messages.IllegalExportDeclaration),$=this.parseExportDeclaration();break;case"import":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,I.Messages.IllegalImportDeclaration),$=this.parseImportDeclaration();break;case"const":$=this.parseLexicalDeclaration({inFor:!1});break;case"function":$=this.parseFunctionDeclaration();break;case"class":$=this.parseClassDeclaration();break;case"let":$=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:$=this.parseStatement()}else $=this.parseStatement();return $},z.prototype.parseBlock=function(){var $=this.createNode();this.expect("{");for(var K=[];!this.match("}");)K.push(this.parseStatementListItem());return this.expect("}"),this.finalize($,new R.BlockStatement(K))},z.prototype.parseLexicalBinding=function($,K){var X=this.createNode(),ee=this.parsePattern([],$);this.context.strict&&ee.type===V.Syntax.Identifier&&this.scanner.isRestrictedWord(ee.name)&&this.tolerateError(I.Messages.StrictVarName);var ne=null;return $==="const"?this.matchKeyword("in")||this.matchContextualKeyword("of")||(this.match("=")?(this.nextToken(),ne=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError(I.Messages.DeclarationMissingInitializer,"const")):(!K.inFor&&ee.type!==V.Syntax.Identifier||this.match("="))&&(this.expect("="),ne=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(X,new R.VariableDeclarator(ee,ne))},z.prototype.parseBindingList=function($,K){for(var X=[this.parseLexicalBinding($,K)];this.match(",");)this.nextToken(),X.push(this.parseLexicalBinding($,K));return X},z.prototype.isLexicalDeclaration=function(){var $=this.scanner.saveState();this.scanner.scanComments();var K=this.scanner.lex();return this.scanner.restoreState($),K.type===3||K.type===7&&K.value==="["||K.type===7&&K.value==="{"||K.type===4&&K.value==="let"||K.type===4&&K.value==="yield"},z.prototype.parseLexicalDeclaration=function($){var K=this.createNode(),X=this.nextToken().value;T.assert(X==="let"||X==="const","Lexical declaration must be either let or const");var ee=this.parseBindingList(X,$);return this.consumeSemicolon(),this.finalize(K,new R.VariableDeclaration(ee,X))},z.prototype.parseBindingRestElement=function($,K){var X=this.createNode();this.expect("...");var ee=this.parsePattern($,K);return this.finalize(X,new R.RestElement(ee))},z.prototype.parseArrayPattern=function($,K){var X=this.createNode();this.expect("[");for(var ee=[];!this.match("]");)if(this.match(","))this.nextToken(),ee.push(null);else{if(this.match("...")){ee.push(this.parseBindingRestElement($,K));break}ee.push(this.parsePatternWithDefault($,K)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(X,new R.ArrayPattern(ee))},z.prototype.parsePropertyPattern=function($,K){var X,ee,ne=this.createNode(),le=!1,ce=!1;if(this.lookahead.type===3){var ge=this.lookahead;X=this.parseVariableIdentifier();var pe=this.finalize(ne,new R.Identifier(ge.value));if(this.match("=")){$.push(ge),ce=!0,this.nextToken();var we=this.parseAssignmentExpression();ee=this.finalize(this.startNode(ge),new R.AssignmentPattern(pe,we))}else this.match(":")?(this.expect(":"),ee=this.parsePatternWithDefault($,K)):($.push(ge),ce=!0,ee=pe)}else le=this.match("["),X=this.parseObjectPropertyKey(),this.expect(":"),ee=this.parsePatternWithDefault($,K);return this.finalize(ne,new R.Property("init",X,le,ee,!1,ce))},z.prototype.parseObjectPattern=function($,K){var X=this.createNode(),ee=[];for(this.expect("{");!this.match("}");)ee.push(this.parsePropertyPattern($,K)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(X,new R.ObjectPattern(ee))},z.prototype.parsePattern=function($,K){var X;return this.match("[")?X=this.parseArrayPattern($,K):this.match("{")?X=this.parseObjectPattern($,K):(!this.matchKeyword("let")||K!=="const"&&K!=="let"||this.tolerateUnexpectedToken(this.lookahead,I.Messages.LetInLexicalBinding),$.push(this.lookahead),X=this.parseVariableIdentifier(K)),X},z.prototype.parsePatternWithDefault=function($,K){var X=this.lookahead,ee=this.parsePattern($,K);if(this.match("=")){this.nextToken();var ne=this.context.allowYield;this.context.allowYield=!0;var le=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=ne,ee=this.finalize(this.startNode(X),new R.AssignmentPattern(ee,le))}return ee},z.prototype.parseVariableIdentifier=function($){var K=this.createNode(),X=this.nextToken();return X.type===4&&X.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(X,I.Messages.StrictReservedWord):this.context.allowYield||this.throwUnexpectedToken(X):X.type!==3?this.context.strict&&X.type===4&&this.scanner.isStrictModeReservedWord(X.value)?this.tolerateUnexpectedToken(X,I.Messages.StrictReservedWord):(this.context.strict||X.value!=="let"||$!=="var")&&this.throwUnexpectedToken(X):(this.context.isModule||this.context.await)&&X.type===3&&X.value==="await"&&this.tolerateUnexpectedToken(X),this.finalize(K,new R.Identifier(X.value))},z.prototype.parseVariableDeclaration=function($){var K=this.createNode(),X=this.parsePattern([],"var");this.context.strict&&X.type===V.Syntax.Identifier&&this.scanner.isRestrictedWord(X.name)&&this.tolerateError(I.Messages.StrictVarName);var ee=null;return this.match("=")?(this.nextToken(),ee=this.isolateCoverGrammar(this.parseAssignmentExpression)):X.type===V.Syntax.Identifier||$.inFor||this.expect("="),this.finalize(K,new R.VariableDeclarator(X,ee))},z.prototype.parseVariableDeclarationList=function($){var K={inFor:$.inFor},X=[];for(X.push(this.parseVariableDeclaration(K));this.match(",");)this.nextToken(),X.push(this.parseVariableDeclaration(K));return X},z.prototype.parseVariableStatement=function(){var $=this.createNode();this.expectKeyword("var");var K=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize($,new R.VariableDeclaration(K,"var"))},z.prototype.parseEmptyStatement=function(){var $=this.createNode();return this.expect(";"),this.finalize($,new R.EmptyStatement)},z.prototype.parseExpressionStatement=function(){var $=this.createNode(),K=this.parseExpression();return this.consumeSemicolon(),this.finalize($,new R.ExpressionStatement(K))},z.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(I.Messages.StrictFunction),this.parseStatement()},z.prototype.parseIfStatement=function(){var $,K=this.createNode(),X=null;this.expectKeyword("if"),this.expect("(");var ee=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),$=this.finalize(this.createNode(),new R.EmptyStatement)):(this.expect(")"),$=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),X=this.parseIfClause())),this.finalize(K,new R.IfStatement(ee,$,X))},z.prototype.parseDoWhileStatement=function(){var $=this.createNode();this.expectKeyword("do");var K=this.context.inIteration;this.context.inIteration=!0;var X=this.parseStatement();this.context.inIteration=K,this.expectKeyword("while"),this.expect("(");var ee=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize($,new R.DoWhileStatement(X,ee))},z.prototype.parseWhileStatement=function(){var $,K=this.createNode();this.expectKeyword("while"),this.expect("(");var X=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),$=this.finalize(this.createNode(),new R.EmptyStatement);else{this.expect(")");var ee=this.context.inIteration;this.context.inIteration=!0,$=this.parseStatement(),this.context.inIteration=ee}return this.finalize(K,new R.WhileStatement(X,$))},z.prototype.parseForStatement=function(){var $,K,X,ee=null,ne=null,le=null,ce=!0,ge=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){ee=this.createNode(),this.nextToken();var pe=this.context.allowIn;this.context.allowIn=!1;var we=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=pe,we.length===1&&this.matchKeyword("in")){var Te=we[0];Te.init&&(Te.id.type===V.Syntax.ArrayPattern||Te.id.type===V.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(I.Messages.ForInOfLoopInitializer,"for-in"),ee=this.finalize(ee,new R.VariableDeclaration(we,"var")),this.nextToken(),$=ee,K=this.parseExpression(),ee=null}else we.length===1&&we[0].init===null&&this.matchContextualKeyword("of")?(ee=this.finalize(ee,new R.VariableDeclaration(we,"var")),this.nextToken(),$=ee,K=this.parseAssignmentExpression(),ee=null,ce=!1):(ee=this.finalize(ee,new R.VariableDeclaration(we,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){ee=this.createNode();var Ve=this.nextToken().value;this.context.strict||this.lookahead.value!=="in"?(pe=this.context.allowIn,this.context.allowIn=!1,we=this.parseBindingList(Ve,{inFor:!0}),this.context.allowIn=pe,we.length===1&&we[0].init===null&&this.matchKeyword("in")?(ee=this.finalize(ee,new R.VariableDeclaration(we,Ve)),this.nextToken(),$=ee,K=this.parseExpression(),ee=null):we.length===1&&we[0].init===null&&this.matchContextualKeyword("of")?(ee=this.finalize(ee,new R.VariableDeclaration(we,Ve)),this.nextToken(),$=ee,K=this.parseAssignmentExpression(),ee=null,ce=!1):(this.consumeSemicolon(),ee=this.finalize(ee,new R.VariableDeclaration(we,Ve)))):(ee=this.finalize(ee,new R.Identifier(Ve)),this.nextToken(),$=ee,K=this.parseExpression(),ee=null)}else{var Pe=this.lookahead;if(pe=this.context.allowIn,this.context.allowIn=!1,ee=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=pe,this.matchKeyword("in"))this.context.isAssignmentTarget&&ee.type!==V.Syntax.AssignmentExpression||this.tolerateError(I.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(ee),$=ee,K=this.parseExpression(),ee=null;else if(this.matchContextualKeyword("of"))this.context.isAssignmentTarget&&ee.type!==V.Syntax.AssignmentExpression||this.tolerateError(I.Messages.InvalidLHSInForLoop),this.nextToken(),this.reinterpretExpressionAsPattern(ee),$=ee,K=this.parseAssignmentExpression(),ee=null,ce=!1;else{if(this.match(",")){for(var je=[ee];this.match(",");)this.nextToken(),je.push(this.isolateCoverGrammar(this.parseAssignmentExpression));ee=this.finalize(this.startNode(Pe),new R.SequenceExpression(je))}this.expect(";")}}if($===void 0&&(this.match(";")||(ne=this.parseExpression()),this.expect(";"),this.match(")")||(le=this.parseExpression())),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),X=this.finalize(this.createNode(),new R.EmptyStatement);else{this.expect(")");var Je=this.context.inIteration;this.context.inIteration=!0,X=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=Je}return $===void 0?this.finalize(ge,new R.ForStatement(ee,ne,le,X)):ce?this.finalize(ge,new R.ForInStatement($,K,X)):this.finalize(ge,new R.ForOfStatement($,K,X))},z.prototype.parseContinueStatement=function(){var $=this.createNode();this.expectKeyword("continue");var K=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var X=this.parseVariableIdentifier();K=X;var ee="$"+X.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,ee)||this.throwError(I.Messages.UnknownLabel,X.name)}return this.consumeSemicolon(),K!==null||this.context.inIteration||this.throwError(I.Messages.IllegalContinue),this.finalize($,new R.ContinueStatement(K))},z.prototype.parseBreakStatement=function(){var $=this.createNode();this.expectKeyword("break");var K=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var X=this.parseVariableIdentifier(),ee="$"+X.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,ee)||this.throwError(I.Messages.UnknownLabel,X.name),K=X}return this.consumeSemicolon(),K!==null||this.context.inIteration||this.context.inSwitch||this.throwError(I.Messages.IllegalBreak),this.finalize($,new R.BreakStatement(K))},z.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(I.Messages.IllegalReturn);var $=this.createNode();this.expectKeyword("return");var K=(this.match(";")||this.match("}")||this.hasLineTerminator||this.lookahead.type===2)&&this.lookahead.type!==8&&this.lookahead.type!==10?null:this.parseExpression();return this.consumeSemicolon(),this.finalize($,new R.ReturnStatement(K))},z.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(I.Messages.StrictModeWith);var $,K=this.createNode();this.expectKeyword("with"),this.expect("(");var X=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),$=this.finalize(this.createNode(),new R.EmptyStatement)):(this.expect(")"),$=this.parseStatement()),this.finalize(K,new R.WithStatement(X,$))},z.prototype.parseSwitchCase=function(){var $,K=this.createNode();this.matchKeyword("default")?(this.nextToken(),$=null):(this.expectKeyword("case"),$=this.parseExpression()),this.expect(":");for(var X=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)X.push(this.parseStatementListItem());return this.finalize(K,new R.SwitchCase($,X))},z.prototype.parseSwitchStatement=function(){var $=this.createNode();this.expectKeyword("switch"),this.expect("(");var K=this.parseExpression();this.expect(")");var X=this.context.inSwitch;this.context.inSwitch=!0;var ee=[],ne=!1;for(this.expect("{");!this.match("}");){var le=this.parseSwitchCase();le.test===null&&(ne&&this.throwError(I.Messages.MultipleDefaultsInSwitch),ne=!0),ee.push(le)}return this.expect("}"),this.context.inSwitch=X,this.finalize($,new R.SwitchStatement(K,ee))},z.prototype.parseLabelledStatement=function(){var $,K=this.createNode(),X=this.parseExpression();if(X.type===V.Syntax.Identifier&&this.match(":")){this.nextToken();var ee=X,ne="$"+ee.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,ne)&&this.throwError(I.Messages.Redeclaration,"Label",ee.name),this.context.labelSet[ne]=!0;var le=void 0;if(this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),le=this.parseClassDeclaration();else if(this.matchKeyword("function")){var ce=this.lookahead,ge=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(ce,I.Messages.StrictFunction):ge.generator&&this.tolerateUnexpectedToken(ce,I.Messages.GeneratorInLegacyContext),le=ge}else le=this.parseStatement();delete this.context.labelSet[ne],$=new R.LabeledStatement(ee,le)}else this.consumeSemicolon(),$=new R.ExpressionStatement(X);return this.finalize(K,$)},z.prototype.parseThrowStatement=function(){var $=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(I.Messages.NewlineAfterThrow);var K=this.parseExpression();return this.consumeSemicolon(),this.finalize($,new R.ThrowStatement(K))},z.prototype.parseCatchClause=function(){var $=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var K=[],X=this.parsePattern(K),ee={},ne=0;ne0&&this.tolerateError(I.Messages.BadGetterArity);var ee=this.parsePropertyMethod(X);return this.context.allowYield=K,this.finalize($,new R.FunctionExpression(null,X.params,ee,!1))},z.prototype.parseSetterMethod=function(){var $=this.createNode(),K=this.context.allowYield;this.context.allowYield=!0;var X=this.parseFormalParameters();X.params.length!==1?this.tolerateError(I.Messages.BadSetterArity):X.params[0]instanceof R.RestElement&&this.tolerateError(I.Messages.BadSetterRestParameter);var ee=this.parsePropertyMethod(X);return this.context.allowYield=K,this.finalize($,new R.FunctionExpression(null,X.params,ee,!1))},z.prototype.parseGeneratorMethod=function(){var $=this.createNode(),K=this.context.allowYield;this.context.allowYield=!0;var X=this.parseFormalParameters();this.context.allowYield=!1;var ee=this.parsePropertyMethod(X);return this.context.allowYield=K,this.finalize($,new R.FunctionExpression(null,X.params,ee,!0))},z.prototype.isStartOfExpression=function(){var $=!0,K=this.lookahead.value;switch(this.lookahead.type){case 7:$=K==="["||K==="("||K==="{"||K==="+"||K==="-"||K==="!"||K==="~"||K==="++"||K==="--"||K==="/"||K==="/=";break;case 4:$=K==="class"||K==="delete"||K==="function"||K==="let"||K==="new"||K==="super"||K==="this"||K==="typeof"||K==="void"||K==="yield"}return $},z.prototype.parseYieldExpression=function(){var $=this.createNode();this.expectKeyword("yield");var K=null,X=!1;if(!this.hasLineTerminator){var ee=this.context.allowYield;this.context.allowYield=!1,(X=this.match("*"))?(this.nextToken(),K=this.parseAssignmentExpression()):this.isStartOfExpression()&&(K=this.parseAssignmentExpression()),this.context.allowYield=ee}return this.finalize($,new R.YieldExpression(K,X))},z.prototype.parseClassElement=function($){var K=this.lookahead,X=this.createNode(),ee="",ne=null,le=null,ce=!1,ge=!1,pe=!1,we=!1;if(this.match("*"))this.nextToken();else if(ce=this.match("["),(ne=this.parseObjectPropertyKey()).name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(K=this.lookahead,pe=!0,ce=this.match("["),this.match("*")?this.nextToken():ne=this.parseObjectPropertyKey()),K.type===3&&!this.hasLineTerminator&&K.value==="async"){var Te=this.lookahead.value;Te!==":"&&Te!=="("&&Te!=="*"&&(we=!0,K=this.lookahead,ne=this.parseObjectPropertyKey(),K.type===3&&K.value==="constructor"&&this.tolerateUnexpectedToken(K,I.Messages.ConstructorIsAsync))}var Ve=this.qualifiedPropertyName(this.lookahead);return K.type===3?K.value==="get"&&Ve?(ee="get",ce=this.match("["),ne=this.parseObjectPropertyKey(),this.context.allowYield=!1,le=this.parseGetterMethod()):K.value==="set"&&Ve&&(ee="set",ce=this.match("["),ne=this.parseObjectPropertyKey(),le=this.parseSetterMethod()):K.type===7&&K.value==="*"&&Ve&&(ee="init",ce=this.match("["),ne=this.parseObjectPropertyKey(),le=this.parseGeneratorMethod(),ge=!0),!ee&&ne&&this.match("(")&&(ee="init",le=we?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),ge=!0),ee||this.throwUnexpectedToken(this.lookahead),ee==="init"&&(ee="method"),ce||(pe&&this.isPropertyKey(ne,"prototype")&&this.throwUnexpectedToken(K,I.Messages.StaticPrototype),!pe&&this.isPropertyKey(ne,"constructor")&&((ee!=="method"||!ge||le&&le.generator)&&this.throwUnexpectedToken(K,I.Messages.ConstructorSpecialMethod),$.value?this.throwUnexpectedToken(K,I.Messages.DuplicateConstructor):$.value=!0,ee="constructor")),this.finalize(X,new R.MethodDefinition(ne,ce,le,ee,pe))},z.prototype.parseClassElementList=function(){var $=[],K={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():$.push(this.parseClassElement(K));return this.expect("}"),$},z.prototype.parseClassBody=function(){var $=this.createNode(),K=this.parseClassElementList();return this.finalize($,new R.ClassBody(K))},z.prototype.parseClassDeclaration=function($){var K=this.createNode(),X=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var ee=$&&this.lookahead.type!==3?null:this.parseVariableIdentifier(),ne=null;this.matchKeyword("extends")&&(this.nextToken(),ne=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var le=this.parseClassBody();return this.context.strict=X,this.finalize(K,new R.ClassDeclaration(ee,ne,le))},z.prototype.parseClassExpression=function(){var $=this.createNode(),K=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var X=this.lookahead.type===3?this.parseVariableIdentifier():null,ee=null;this.matchKeyword("extends")&&(this.nextToken(),ee=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var ne=this.parseClassBody();return this.context.strict=K,this.finalize($,new R.ClassExpression(X,ee,ne))},z.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var $=this.createNode(),K=this.parseDirectivePrologues();this.lookahead.type!==2;)K.push(this.parseStatementListItem());return this.finalize($,new R.Module(K))},z.prototype.parseScript=function(){for(var $=this.createNode(),K=this.parseDirectivePrologues();this.lookahead.type!==2;)K.push(this.parseStatementListItem());return this.finalize($,new R.Script(K))},z.prototype.parseModuleSpecifier=function(){var $=this.createNode();this.lookahead.type!==8&&this.throwError(I.Messages.InvalidModuleSpecifier);var K=this.nextToken(),X=this.getTokenRaw(K);return this.finalize($,new R.Literal(K.value,X))},z.prototype.parseImportSpecifier=function(){var $,K,X=this.createNode();return this.lookahead.type===3?(K=$=this.parseVariableIdentifier(),this.matchContextualKeyword("as")&&(this.nextToken(),K=this.parseVariableIdentifier())):(K=$=this.parseIdentifierName(),this.matchContextualKeyword("as")?(this.nextToken(),K=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(X,new R.ImportSpecifier(K,$))},z.prototype.parseNamedImports=function(){this.expect("{");for(var $=[];!this.match("}");)$.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),$},z.prototype.parseImportDefaultSpecifier=function(){var $=this.createNode(),K=this.parseIdentifierName();return this.finalize($,new R.ImportDefaultSpecifier(K))},z.prototype.parseImportNamespaceSpecifier=function(){var $=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(I.Messages.NoAsAfterImportNamespace),this.nextToken();var K=this.parseIdentifierName();return this.finalize($,new R.ImportNamespaceSpecifier(K))},z.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(I.Messages.IllegalImportDeclaration);var $,K=this.createNode();this.expectKeyword("import");var X=[];if(this.lookahead.type===8)$=this.parseModuleSpecifier();else{if(this.match("{")?X=X.concat(this.parseNamedImports()):this.match("*")?X.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(X.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?X.push(this.parseImportNamespaceSpecifier()):this.match("{")?X=X.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){var ee=this.lookahead.value?I.Messages.UnexpectedToken:I.Messages.MissingFromClause;this.throwError(ee,this.lookahead.value)}this.nextToken(),$=this.parseModuleSpecifier()}return this.consumeSemicolon(),this.finalize(K,new R.ImportDeclaration(X,$))},z.prototype.parseExportSpecifier=function(){var $=this.createNode(),K=this.parseIdentifierName(),X=K;return this.matchContextualKeyword("as")&&(this.nextToken(),X=this.parseIdentifierName()),this.finalize($,new R.ExportSpecifier(K,X))},z.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(I.Messages.IllegalExportDeclaration);var $,K=this.createNode();if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var X=this.parseFunctionDeclaration(!0);$=this.finalize(K,new R.ExportDefaultDeclaration(X))}else this.matchKeyword("class")?(X=this.parseClassDeclaration(!0),$=this.finalize(K,new R.ExportDefaultDeclaration(X))):this.matchContextualKeyword("async")?(X=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression(),$=this.finalize(K,new R.ExportDefaultDeclaration(X))):(this.matchContextualKeyword("from")&&this.throwError(I.Messages.UnexpectedToken,this.lookahead.value),X=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression(),this.consumeSemicolon(),$=this.finalize(K,new R.ExportDefaultDeclaration(X)));else if(this.match("*")){if(this.nextToken(),!this.matchContextualKeyword("from")){var ee=this.lookahead.value?I.Messages.UnexpectedToken:I.Messages.MissingFromClause;this.throwError(ee,this.lookahead.value)}this.nextToken();var ne=this.parseModuleSpecifier();this.consumeSemicolon(),$=this.finalize(K,new R.ExportAllDeclaration(ne))}else if(this.lookahead.type===4){switch(X=void 0,this.lookahead.value){case"let":case"const":X=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":X=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}$=this.finalize(K,new R.ExportNamedDeclaration(X,[],null))}else if(this.matchAsyncFunction())X=this.parseFunctionDeclaration(),$=this.finalize(K,new R.ExportNamedDeclaration(X,[],null));else{var le=[],ce=null,ge=!1;for(this.expect("{");!this.match("}");)ge=ge||this.matchKeyword("default"),le.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");this.expect("}"),this.matchContextualKeyword("from")?(this.nextToken(),ce=this.parseModuleSpecifier(),this.consumeSemicolon()):ge?(ee=this.lookahead.value?I.Messages.UnexpectedToken:I.Messages.MissingFromClause,this.throwError(ee,this.lookahead.value)):this.consumeSemicolon(),$=this.finalize(K,new R.ExportNamedDeclaration(null,le,ce))}return $},z}();v.Parser=j},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.assert=function(_,T){if(!_)throw new Error("ASSERT: "+T)}},function(g,v){Object.defineProperty(v,"__esModule",{value:!0});var _=function(){function T(){this.errors=[],this.tolerant=!1}return T.prototype.recordError=function(P){this.errors.push(P)},T.prototype.tolerate=function(P){if(!this.tolerant)throw P;this.recordError(P)},T.prototype.constructError=function(P,I){var R=new Error(P);try{throw R}catch(L){Object.create&&Object.defineProperty&&(R=Object.create(L),Object.defineProperty(R,"column",{value:I}))}return R},T.prototype.createError=function(P,I,R,L){var V="Line "+I+": "+L,U=this.constructError(V,R);return U.index=P,U.lineNumber=I,U.description=L,U},T.prototype.throwError=function(P,I,R,L){throw this.createError(P,I,R,L)},T.prototype.tolerateError=function(P,I,R,L){var V=this.createError(P,I,R,L);if(!this.tolerant)throw V;this.recordError(V)},T}();v.ErrorHandler=_},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(9),P=_(4),I=_(11);function R(U){return"0123456789abcdef".indexOf(U.toLowerCase())}function L(U){return"01234567".indexOf(U)}var V=function(){function U(j,z){this.source=j,this.errorHandler=z,this.trackComment=!1,this.isModule=!1,this.length=j.length,this.index=0,this.lineNumber=j.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return U.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}},U.prototype.restoreState=function(j){this.index=j.index,this.lineNumber=j.lineNumber,this.lineStart=j.lineStart},U.prototype.eof=function(){return this.index>=this.length},U.prototype.throwUnexpectedToken=function(j){return j===void 0&&(j=I.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,j)},U.prototype.tolerateUnexpectedToken=function(j){j===void 0&&(j=I.Messages.UnexpectedTokenIllegal),this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,j)},U.prototype.skipSingleLineComment=function(j){var z,$,K=[];for(this.trackComment&&(K=[],z=this.index-j,$={start:{line:this.lineNumber,column:this.index-this.lineStart-j},end:{}});!this.eof();){var X=this.source.charCodeAt(this.index);if(++this.index,P.Character.isLineTerminator(X)){if(this.trackComment){$.end={line:this.lineNumber,column:this.index-this.lineStart-1};var ee={multiLine:!1,slice:[z+j,this.index-1],range:[z,this.index-1],loc:$};K.push(ee)}return X===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,K}}return this.trackComment&&($.end={line:this.lineNumber,column:this.index-this.lineStart},ee={multiLine:!1,slice:[z+j,this.index],range:[z,this.index],loc:$},K.push(ee)),K},U.prototype.skipMultiLineComment=function(){var j,z,$=[];for(this.trackComment&&($=[],j=this.index-2,z={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var K=this.source.charCodeAt(this.index);if(P.Character.isLineTerminator(K))K===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(K===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){z.end={line:this.lineNumber,column:this.index-this.lineStart};var X={multiLine:!0,slice:[j+2,this.index-2],range:[j,this.index],loc:z};$.push(X)}return $}++this.index}else++this.index}return this.trackComment&&(z.end={line:this.lineNumber,column:this.index-this.lineStart},X={multiLine:!0,slice:[j+2,this.index],range:[j,this.index],loc:z},$.push(X)),this.tolerateUnexpectedToken(),$},U.prototype.scanComments=function(){var j;this.trackComment&&(j=[]);for(var z=this.index===0;!this.eof();){var $=this.source.charCodeAt(this.index);if(P.Character.isWhiteSpace($))++this.index;else if(P.Character.isLineTerminator($))++this.index,$===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,z=!0;else if($===47)if(($=this.source.charCodeAt(this.index+1))===47){this.index+=2;var K=this.skipSingleLineComment(2);this.trackComment&&(j=j.concat(K)),z=!0}else{if($!==42)break;this.index+=2,K=this.skipMultiLineComment(),this.trackComment&&(j=j.concat(K))}else if(z&&$===45){if(this.source.charCodeAt(this.index+1)!==45||this.source.charCodeAt(this.index+2)!==62)break;this.index+=3,K=this.skipSingleLineComment(3),this.trackComment&&(j=j.concat(K))}else{if($!==60||this.isModule||this.source.slice(this.index+1,this.index+4)!=="!--")break;this.index+=4,K=this.skipSingleLineComment(4),this.trackComment&&(j=j.concat(K))}}return j},U.prototype.isFutureReservedWord=function(j){switch(j){case"enum":case"export":case"import":case"super":return!0;default:return!1}},U.prototype.isStrictModeReservedWord=function(j){switch(j){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},U.prototype.isRestrictedWord=function(j){return j==="eval"||j==="arguments"},U.prototype.isKeyword=function(j){switch(j.length){case 2:return j==="if"||j==="in"||j==="do";case 3:return j==="var"||j==="for"||j==="new"||j==="try"||j==="let";case 4:return j==="this"||j==="else"||j==="case"||j==="void"||j==="with"||j==="enum";case 5:return j==="while"||j==="break"||j==="catch"||j==="throw"||j==="const"||j==="yield"||j==="class"||j==="super";case 6:return j==="return"||j==="typeof"||j==="delete"||j==="switch"||j==="export"||j==="import";case 7:return j==="default"||j==="finally"||j==="extends";case 8:return j==="function"||j==="continue"||j==="debugger";case 10:return j==="instanceof";default:return!1}},U.prototype.codePointAt=function(j){var z=this.source.charCodeAt(j);if(z>=55296&&z<=56319){var $=this.source.charCodeAt(j+1);$>=56320&&$<=57343&&(z=1024*(z-55296)+$-56320+65536)}return z},U.prototype.scanHexEscape=function(j){for(var z=j==="u"?4:2,$=0,K=0;K1114111||j!=="}")&&this.throwUnexpectedToken(),P.Character.fromCodePoint(z)},U.prototype.getIdentifier=function(){for(var j=this.index++;!this.eof();){var z=this.source.charCodeAt(this.index);if(z===92)return this.index=j,this.getComplexIdentifier();if(z>=55296&&z<57343)return this.index=j,this.getComplexIdentifier();if(!P.Character.isIdentifierPart(z))break;++this.index}return this.source.slice(j,this.index)},U.prototype.getComplexIdentifier=function(){var j,z=this.codePointAt(this.index),$=P.Character.fromCodePoint(z);for(this.index+=$.length,z===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,j=this.scanUnicodeCodePointEscape()):(j=this.scanHexEscape("u"))!==null&&j!=="\\"&&P.Character.isIdentifierStart(j.charCodeAt(0))||this.throwUnexpectedToken(),$=j);!this.eof()&&(z=this.codePointAt(this.index),P.Character.isIdentifierPart(z));)$+=j=P.Character.fromCodePoint(z),this.index+=j.length,z===92&&($=$.substr(0,$.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,j=this.scanUnicodeCodePointEscape()):(j=this.scanHexEscape("u"))!==null&&j!=="\\"&&P.Character.isIdentifierPart(j.charCodeAt(0))||this.throwUnexpectedToken(),$+=j);return $},U.prototype.octalToDecimal=function(j){var z=j!=="0",$=L(j);return!this.eof()&&P.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(z=!0,$=8*$+L(this.source[this.index++]),"0123".indexOf(j)>=0&&!this.eof()&&P.Character.isOctalDigit(this.source.charCodeAt(this.index))&&($=8*$+L(this.source[this.index++]))),{code:$,octal:z}},U.prototype.scanIdentifier=function(){var j,z=this.index,$=this.source.charCodeAt(z)===92?this.getComplexIdentifier():this.getIdentifier();if((j=$.length===1?3:this.isKeyword($)?4:$==="null"?5:$==="true"||$==="false"?1:3)!=3&&z+$.length!==this.index){var K=this.index;this.index=z,this.tolerateUnexpectedToken(I.Messages.InvalidEscapedReservedWord),this.index=K}return{type:j,value:$,lineNumber:this.lineNumber,lineStart:this.lineStart,start:z,end:this.index}},U.prototype.scanPunctuator=function(){var j=this.index,z=this.source[this.index];switch(z){case"(":case"{":z==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,z="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:(z=this.source.substr(this.index,4))===">>>="?this.index+=4:(z=z.substr(0,3))==="==="||z==="!=="||z===">>>"||z==="<<="||z===">>="||z==="**="?this.index+=3:(z=z.substr(0,2))==="&&"||z==="||"||z==="=="||z==="!="||z==="+="||z==="-="||z==="*="||z==="/="||z==="++"||z==="--"||z==="<<"||z===">>"||z==="&="||z==="|="||z==="^="||z==="%="||z==="<="||z===">="||z==="=>"||z==="**"?this.index+=2:(z=this.source[this.index],"<>=!+-*%&|^/".indexOf(z)>=0&&++this.index)}return this.index===j&&this.throwUnexpectedToken(),{type:7,value:z,lineNumber:this.lineNumber,lineStart:this.lineStart,start:j,end:this.index}},U.prototype.scanHexLiteral=function(j){for(var z="";!this.eof()&&P.Character.isHexDigit(this.source.charCodeAt(this.index));)z+=this.source[this.index++];return z.length===0&&this.throwUnexpectedToken(),P.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+z,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:j,end:this.index}},U.prototype.scanBinaryLiteral=function(j){for(var z,$="";!this.eof()&&((z=this.source[this.index])==="0"||z==="1");)$+=this.source[this.index++];return $.length===0&&this.throwUnexpectedToken(),this.eof()||(z=this.source.charCodeAt(this.index),(P.Character.isIdentifierStart(z)||P.Character.isDecimalDigit(z))&&this.throwUnexpectedToken()),{type:6,value:parseInt($,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:j,end:this.index}},U.prototype.scanOctalLiteral=function(j,z){var $="",K=!1;for(P.Character.isOctalDigit(j.charCodeAt(0))?(K=!0,$="0"+this.source[this.index++]):++this.index;!this.eof()&&P.Character.isOctalDigit(this.source.charCodeAt(this.index));)$+=this.source[this.index++];return K||$.length!==0||this.throwUnexpectedToken(),(P.Character.isIdentifierStart(this.source.charCodeAt(this.index))||P.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt($,8),octal:K,lineNumber:this.lineNumber,lineStart:this.lineStart,start:z,end:this.index}},U.prototype.isImplicitOctalLiteral=function(){for(var j=this.index+1;j=0&&($=$.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(X,ee,ne){var le=parseInt(ee||ne,16);return le>1114111&&K.throwUnexpectedToken(I.Messages.InvalidRegExp),le<=65535?String.fromCharCode(le):"￿"}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"￿"));try{RegExp($)}catch{this.throwUnexpectedToken(I.Messages.InvalidRegExp)}try{return new RegExp(j,z)}catch{return null}},U.prototype.scanRegExpBody=function(){var j=this.source[this.index];T.assert(j==="/","Regular expression literal must start with a slash");for(var z=this.source[this.index++],$=!1,K=!1;!this.eof();)if(z+=j=this.source[this.index++],j==="\\")j=this.source[this.index++],P.Character.isLineTerminator(j.charCodeAt(0))&&this.throwUnexpectedToken(I.Messages.UnterminatedRegExp),z+=j;else if(P.Character.isLineTerminator(j.charCodeAt(0)))this.throwUnexpectedToken(I.Messages.UnterminatedRegExp);else if($)j==="]"&&($=!1);else{if(j==="/"){K=!0;break}j==="["&&($=!0)}return K||this.throwUnexpectedToken(I.Messages.UnterminatedRegExp),z.substr(1,z.length-2)},U.prototype.scanRegExpFlags=function(){for(var j="";!this.eof();){var z=this.source[this.index];if(!P.Character.isIdentifierPart(z.charCodeAt(0)))break;if(++this.index,z!=="\\"||this.eof())j+=z;else if((z=this.source[this.index])==="u"){++this.index;var $=this.index,K=this.scanHexEscape("u");if(K!==null)for(j+=K;$=55296&&j<57343&&P.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},U}();v.Scanner=V},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.TokenName={},v.TokenName[1]="Boolean",v.TokenName[2]="",v.TokenName[3]="Identifier",v.TokenName[4]="Keyword",v.TokenName[5]="Null",v.TokenName[6]="Numeric",v.TokenName[7]="Punctuator",v.TokenName[8]="String",v.TokenName[9]="RegularExpression",v.TokenName[10]="Template"},function(g,v){Object.defineProperty(v,"__esModule",{value:!0}),v.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(g,v,_){Object.defineProperty(v,"__esModule",{value:!0});var T=_(10),P=_(12),I=_(13),R=function(){function V(){this.values=[],this.curly=this.paren=-1}return V.prototype.beforeFunctionExpression=function(U){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(U)>=0},V.prototype.isRegexStart=function(){var U=this.values[this.values.length-1],j=U!==null;switch(U){case"this":case"]":j=!1;break;case")":var z=this.values[this.paren-1];j=z==="if"||z==="while"||z==="for"||z==="with";break;case"}":if(j=!1,this.values[this.curly-3]==="function")j=!!($=this.values[this.curly-4])&&!this.beforeFunctionExpression($);else if(this.values[this.curly-4]==="function"){var $;j=!($=this.values[this.curly-5])||!this.beforeFunctionExpression($)}}return j},V.prototype.push=function(U){U.type===7||U.type===4?(U.value==="{"?this.curly=this.values.length:U.value==="("&&(this.paren=this.values.length),this.values.push(U.value)):this.values.push(null)},V}(),L=function(){function V(U,j){this.errorHandler=new T.ErrorHandler,this.errorHandler.tolerant=!!j&&typeof j.tolerant=="boolean"&&j.tolerant,this.scanner=new P.Scanner(U,this.errorHandler),this.scanner.trackComment=!!j&&typeof j.comment=="boolean"&&j.comment,this.trackRange=!!j&&typeof j.range=="boolean"&&j.range,this.trackLoc=!!j&&typeof j.loc=="boolean"&&j.loc,this.buffer=[],this.reader=new R}return V.prototype.errors=function(){return this.errorHandler.errors},V.prototype.getNextToken=function(){if(this.buffer.length===0){var U=this.scanner.scanComments();if(this.scanner.trackComment)for(var j=0;j0?Pe.charCodeAt(Ke-1):null,Dn=Dn&&K(qe,ut)}else{for(Ke=0;Keit&&Pe[Jt+1]!==" ",Jt=Ke);else if(!$(qe))return 5;ut=Ke>0?Pe.charCodeAt(Ke-1):null,Dn=Dn&&K(qe,ut)}qt=qt||$t&&Ke-Jt-1>it&&Pe[Jt+1]!==" "}return Et||qt?Je>9&&X(Pe)?5:qt?4:3:Dn&&!Ge(Pe)?1:2}function ne(Pe,je,Je,it){Pe.dump=function(){if(je.length===0)return"''";if(!Pe.noCompatMode&&R.indexOf(je)!==-1)return"'"+je+"'";var Ge=Pe.indent*Math.max(1,Je),Ke=Pe.lineWidth===-1?-1:Math.max(Math.min(Pe.lineWidth,40),Pe.lineWidth-Ge),qe=it||Pe.flowLevel>-1&&Je>=Pe.flowLevel;switch(ee(je,qe,Pe.indent,Ke,function(ut){return function(wt,Et){var qt,$t;for(qt=0,$t=wt.implicitTypes.length;qt<$t;qt+=1)if(wt.implicitTypes[qt].resolve(Et))return!0;return!1}(Pe,ut)})){case 1:return je;case 2:return"'"+je.replace(/'/g,"''")+"'";case 3:return"|"+le(je,Pe.indent)+ce(U(je,Ge));case 4:return">"+le(je,Pe.indent)+ce(U(function(ut,wt){for(var Et,qt,$t=/(\n+)([^\n]*)/g,Jt=(Nn=ut.indexOf(` +`),Nn=Nn!==-1?Nn:ut.length,$t.lastIndex=Nn,ge(ut.slice(0,Nn),wt)),Dn=ut[0]===` +`||ut[0]===" ",Nn;qt=$t.exec(ut);){var xn=qt[1],et=qt[2];Et=et[0]===" ",Jt+=xn+(Dn||Et||et===""?"":` +`)+ge(et,wt),Dn=Et}return Jt}(je,Ke),Ge));case 5:return'"'+function(ut){for(var wt,Et,qt,$t="",Jt=0;Jt=55296&&wt<=56319&&(Et=ut.charCodeAt(Jt+1))>=56320&&Et<=57343?($t+=L(1024*(wt-55296)+Et-56320+65536),Jt++):(qt=I[wt],$t+=!qt&&$(wt)?ut[Jt]:qt||L(wt));return $t}(je)+'"';default:throw new g("impossible error: invalid scalar style")}}()}function le(Pe,je){var Je=X(Pe)?String(je):"",it=Pe[Pe.length-1]===` +`;return Je+(it&&(Pe[Pe.length-2]===` +`||Pe===` +`)?"+":it?"":"-")+` +`}function ce(Pe){return Pe[Pe.length-1]===` +`?Pe.slice(0,-1):Pe}function ge(Pe,je){if(Pe===""||Pe[0]===" ")return Pe;for(var Je,it,Ge=/ [^ ]/g,Ke=0,qe=0,ut=0,wt="";Je=Ge.exec(Pe);)(ut=Je.index)-Ke>je&&(it=qe>Ke?qe:ut,wt+=` +`+Pe.slice(Ke,it),Ke=it+1),qe=ut;return wt+=` +`,Pe.length-Ke>je&&qe>Ke?wt+=Pe.slice(Ke,qe)+` +`+Pe.slice(qe+1):wt+=Pe.slice(Ke),wt.slice(1)}function pe(Pe,je,Je){var it,Ge,Ke,qe,ut,wt;for(Ke=0,qe=(Ge=Je?Pe.explicitTypes:Pe.implicitTypes).length;Ke tag resolver accepts not "'+wt+'" style');it=ut.represent[wt](je,wt)}Pe.dump=it}return!0}return!1}function we(Pe,je,Je,it,Ge,Ke){Pe.tag=null,Pe.dump=Je,pe(Pe,Je,!1)||pe(Pe,Je,!0);var qe=T.call(Pe.dump);it&&(it=Pe.flowLevel<0||Pe.flowLevel>je);var ut,wt,Et=qe==="[object Object]"||qe==="[object Array]";if(Et&&(wt=(ut=Pe.duplicates.indexOf(Je))!==-1),(Pe.tag!==null&&Pe.tag!=="?"||wt||Pe.indent!==2&&je>0)&&(Ge=!1),wt&&Pe.usedDuplicates[ut])Pe.dump="*ref_"+ut;else{if(Et&&wt&&!Pe.usedDuplicates[ut]&&(Pe.usedDuplicates[ut]=!0),qe==="[object Object]")it&&Object.keys(Pe.dump).length!==0?(function($t,Jt,Dn,Nn){var xn,et,Me,ct,st,yt,St="",Pt=$t.tag,mn=Object.keys(Dn);if($t.sortKeys===!0)mn.sort();else if(typeof $t.sortKeys=="function")mn.sort($t.sortKeys);else if($t.sortKeys)throw new g("sortKeys must be a boolean or a function");for(xn=0,et=mn.length;xn1024)&&($t.dump&&$t.dump.charCodeAt(0)===10?yt+="?":yt+="? "),yt+=$t.dump,st&&(yt+=j($t,Jt)),we($t,Jt+1,ct,!0,st)&&($t.dump&&$t.dump.charCodeAt(0)===10?yt+=":":yt+=": ",St+=yt+=$t.dump));$t.tag=Pt,$t.dump=St||"{}"}(Pe,je,Pe.dump,Ge),wt&&(Pe.dump="&ref_"+ut+Pe.dump)):(function($t,Jt,Dn){var Nn,xn,et,Me,ct,st="",yt=$t.tag,St=Object.keys(Dn);for(Nn=0,xn=St.length;Nn1024&&(ct+="? "),ct+=$t.dump+($t.condenseFlow?'"':"")+":"+($t.condenseFlow?"":" "),we($t,Jt,Me,!1,!1)&&(st+=ct+=$t.dump));$t.tag=yt,$t.dump="{"+st+"}"}(Pe,je,Pe.dump),wt&&(Pe.dump="&ref_"+ut+" "+Pe.dump));else if(qe==="[object Array]"){var qt=Pe.noArrayIndent&&je>0?je-1:je;it&&Pe.dump.length!==0?(function($t,Jt,Dn,Nn){var xn,et,Me="",ct=$t.tag;for(xn=0,et=Dn.length;xn "+Pe.dump)}return!0}function Te(Pe,je){var Je,it,Ge=[],Ke=[];for(function qe(ut,wt,Et){var qt,$t,Jt;if(ut!==null&&typeof ut=="object")if(($t=wt.indexOf(ut))!==-1)Et.indexOf($t)===-1&&Et.push($t);else if(wt.push(ut),Array.isArray(ut))for($t=0,Jt=ut.length;$t=ee.length&&(ee=void 0),{value:ee&&ee[ce++],done:!ee}}};throw new TypeError(ne?"Object is not iterable.":"Symbol.iterator is not defined.")},_=this&&this.__read||function(ee,ne){var le=typeof Symbol=="function"&&ee[Symbol.iterator];if(!le)return ee;var ce,ge,pe=le.call(ee),we=[];try{for(;(ne===void 0||ne-- >0)&&!(ce=pe.next()).done;)we.push(ce.value)}catch(Te){ge={error:Te}}finally{try{ce&&!ce.done&&(le=pe.return)&&le.call(pe)}finally{if(ge)throw ge.error}}return we};Object.defineProperty(i,"__esModule",{value:!0});var T=l(91),P=l(1),I=l(183),R=l(0),L=l(7),V=l(95),U=l(69),j=l(3),z=l(305),$=l(306),K=l(307),X=function(ee){function ne(le,ce){ce===void 0&&(ce=!1);var ge=ee.call(this)||this;return ge._hasDeclaration=!1,ge._docTypeName="",ge._hasDocumentElement=!1,ge._currentElementSerialized=!1,ge._openTags=[],ge._ended=!1,ge._fragment=ce,ge._options=P.applyDefaults(le||{},T.DefaultXMLBuilderCBOptions),ge._builderOptions={defaultNamespace:ge._options.defaultNamespace,namespaceAlias:ge._options.namespaceAlias},ge._options.format==="json"?ge._writer=new $.JSONCBWriter(ge._options):ge._options.format==="yaml"?ge._writer=new K.YAMLCBWriter(ge._options):ge._writer=new z.XMLCBWriter(ge._options),ge._options.data!==void 0&&ge.on("data",ge._options.data),ge._options.end!==void 0&&ge.on("end",ge._options.end),ge._options.error!==void 0&&ge.on("error",ge._options.error),ge._prefixMap=new V.NamespacePrefixMap,ge._prefixMap.set("xml",L.namespace.XML),ge._prefixIndex={value:1},ge._push(ge._writer.frontMatter()),ge}return g(ne,ee),ne.prototype.ele=function(le,ce,ge){var pe,we;if(P.isObject(le)||P.isString(le)&&(/^\s*/g,">");return this._push(this._writer.text(ge)),this},ne.prototype.ins=function(le,ce){var ge;ce===void 0&&(ce=""),this._serializeOpenTag(!0);try{ge=I.fragment(this._builderOptions).ins(le,ce).first().node}catch(pe){return this.emit("error",pe),this}return this._options.wellFormed&&(ge.target.indexOf(":")!==-1||/^xml$/i.test(ge.target))?(this.emit("error",new Error("Processing instruction target contains invalid characters (well-formed required).")),this):this._options.wellFormed&&!R.xml_isLegalChar(ge.data)?(this.emit("error",Error("Processing instruction data contains invalid characters (well-formed required).")),this):(this._push(this._writer.instruction(ge.target,ge.data)),this)},ne.prototype.dat=function(le){var ce;this._serializeOpenTag(!0);try{ce=I.fragment(this._builderOptions).dat(le).first().node}catch(ge){return this.emit("error",ge),this}return this._push(this._writer.cdata(ce.data)),this},ne.prototype.dec=function(le){return le===void 0&&(le={version:"1.0"}),this._fragment?(this.emit("error",Error("Cannot insert an XML declaration into a document fragment.")),this):this._hasDeclaration?(this.emit("error",Error("XML declaration is already inserted.")),this):(this._push(this._writer.declaration(le.version||"1.0",le.encoding,le.standalone)),this._hasDeclaration=!0,this)},ne.prototype.dtd=function(le){if(this._fragment)return this.emit("error",Error("Cannot insert a DocType declaration into a document fragment.")),this;if(this._docTypeName!=="")return this.emit("error",new Error("DocType declaration is already inserted.")),this;if(this._hasDocumentElement)return this.emit("error",new Error("Cannot insert DocType declaration after document element.")),this;var ce;try{ce=I.create().dtd(le).first().node}catch(ge){return this.emit("error",ge),this}return this._options.wellFormed&&!R.xml_isPubidChar(ce.publicId)?(this.emit("error",new Error("DocType public identifier does not match PubidChar construct (well-formed required).")),this):this._options.wellFormed&&(!R.xml_isLegalChar(ce.systemId)||ce.systemId.indexOf('"')!==-1&&ce.systemId.indexOf("'")!==-1)?(this.emit("error",new Error("DocType system identifier contains invalid characters (well-formed required).")),this):(this._docTypeName=le.name,this._push(this._writer.docType(le.name,ce.publicId,ce.systemId)),this)},ne.prototype.import=function(le){var ce,ge,pe=I.fragment().set(this._options);try{pe.import(le)}catch(Pe){return this.emit("error",Pe),this}try{for(var we=v(pe.node.childNodes),Te=we.next();!Te.done;Te=we.next()){var Ve=Te.value;this._fromNode(Ve)}}catch(Pe){ce={error:Pe}}finally{try{Te&&!Te.done&&(ge=we.return)&&ge.call(we)}finally{if(ce)throw ce.error}}return this},ne.prototype.up=function(){return this._serializeOpenTag(!1),this._serializeCloseTag(),this},ne.prototype.end=function(){for(this._serializeOpenTag(!1);this._openTags.length>0;)this._serializeCloseTag();return this._push(null),this},ne.prototype._serializeOpenTag=function(le){if(!this._currentElementSerialized&&this._currentElement!==void 0){var ce=this._currentElement.node;if(!this._options.wellFormed||ce.localName.indexOf(":")===-1&&R.xml_isName(ce.localName)){var ge="",pe=!1,we=this._prefixMap.copy(),Te={},Ve=this._recordNamespaceInformation(ce,we,Te),Pe=this._openTags.length===0?null:this._openTags[this._openTags.length-1][1],je=ce.namespaceURI;if(je===null&&(je=Pe),Pe===je)Ve!==null&&(pe=!0),ge=je===L.namespace.XML?"xml:"+ce.localName:ce.localName,this._writer.beginElement(ge),this._push(this._writer.openTagBegin(ge));else{var Je=ce.prefix,it=null;if(Je===null&&je===Ve||(it=we.get(Je,je)),Je==="xmlns"){if(this._options.wellFormed)return void this.emit("error",new Error("An element cannot have the 'xmlns' prefix (well-formed required)."));it=Je}it!==null?(ge=it+":"+ce.localName,Ve!==null&&Ve!==L.namespace.XML&&(Pe=Ve||null),this._writer.beginElement(ge),this._push(this._writer.openTagBegin(ge))):Je!==null?(Je in Te&&(Je=this._generatePrefix(je,we,this._prefixIndex)),we.set(Je,je),ge+=Je+":"+ce.localName,this._writer.beginElement(ge),this._push(this._writer.openTagBegin(ge)),this._push(this._writer.attribute("xmlns:"+Je,this._serializeAttributeValue(je,this._options.wellFormed))),Ve!==null&&(Pe=Ve||null)):Ve===null||Ve!==null&&Ve!==je?(pe=!0,ge+=ce.localName,Pe=je,this._writer.beginElement(ge),this._push(this._writer.openTagBegin(ge)),this._push(this._writer.attribute("xmlns",this._serializeAttributeValue(je,this._options.wellFormed)))):(ge+=ce.localName,Pe=je,this._writer.beginElement(ge),this._push(this._writer.openTagBegin(ge)))}this._serializeAttributes(ce,we,this._prefixIndex,Te,pe,this._options.wellFormed);var Ge=je===L.namespace.HTML;Ge&&!le&&ne._VoidElementNames.has(ce.localName)?(this._push(this._writer.openTagEnd(ge,!0,!0)),this._writer.endElement(ge)):Ge||le?this._push(this._writer.openTagEnd(ge,!1,!1)):(this._push(this._writer.openTagEnd(ge,!0,!1)),this._writer.endElement(ge)),this._currentElementSerialized=!0,this._openTags.push([ge,Pe,this._prefixMap,le]),this._isPrefixMapModified(this._prefixMap,we)&&(this._prefixMap=we),this._writer.level++}else this.emit("error",new Error("Node local name contains invalid characters (well-formed required)."))}},ne.prototype._serializeCloseTag=function(){this._writer.level--;var le=this._openTags.pop();if(le!==void 0){var ce=_(le,4),ge=ce[0],pe=(ce[1],ce[2]),we=ce[3];this._prefixMap=pe,we&&(this._push(this._writer.closeTag(ge)),this._writer.endElement(ge))}else this.emit("error",new Error("Last element is undefined."))},ne.prototype._push=function(le){le===null?(this._ended=!0,this.emit("end")):this._ended?this.emit("error",new Error("Cannot push to ended stream.")):le.length!==0&&(this._writer.hasData=!0,this.emit("data",le,this._writer.level))},ne.prototype._fromNode=function(le){var ce,ge,pe,we;if(j.Guard.isElementNode(le)){var Te=le.prefix?le.prefix+":"+le.localName:le.localName;le.namespaceURI!==null?this.ele(le.namespaceURI,Te):this.ele(Te);try{for(var Ve=v(le.attributes),Pe=Ve.next();!Pe.done;Pe=Ve.next()){var je=Pe.value,Je=je.prefix?je.prefix+":"+je.localName:je.localName;je.namespaceURI!==null?this.att(je.namespaceURI,Je,je.value):this.att(Je,je.value)}}catch(qe){ce={error:qe}}finally{try{Pe&&!Pe.done&&(ge=Ve.return)&&ge.call(Ve)}finally{if(ce)throw ce.error}}try{for(var it=v(le.childNodes),Ge=it.next();!Ge.done;Ge=it.next()){var Ke=Ge.value;this._fromNode(Ke)}}catch(qe){pe={error:qe}}finally{try{Ge&&!Ge.done&&(we=it.return)&&we.call(it)}finally{if(pe)throw pe.error}}this.up()}else j.Guard.isExclusiveTextNode(le)&&le.data?this.txt(le.data):j.Guard.isCommentNode(le)?this.com(le.data):j.Guard.isCDATASectionNode(le)?this.dat(le.data):j.Guard.isProcessingInstructionNode(le)&&this.ins(le.target,le.data)},ne.prototype._serializeAttributes=function(le,ce,ge,pe,we,Te){var Ve,Pe,je=Te?new U.LocalNameSet:void 0;try{for(var Je=v(le.attributes),it=Je.next();!it.done;it=Je.next()){var Ge=it.value;if(Te||we||Ge.namespaceURI!==null){if(Te&&je&&je.has(Ge.namespaceURI,Ge.localName))return void this.emit("error",new Error("Element contains duplicate attributes (well-formed required)."));Te&&je&&je.set(Ge.namespaceURI,Ge.localName);var Ke=Ge.namespaceURI,qe=null;if(Ke!==null)if(qe=ce.get(Ge.prefix,Ke),Ke===L.namespace.XMLNS){if(Ge.value===L.namespace.XML||Ge.prefix===null&&we||Ge.prefix!==null&&(!(Ge.localName in pe)||pe[Ge.localName]!==Ge.value)&&ce.has(Ge.localName,Ge.value))continue;if(Te&&Ge.value===L.namespace.XMLNS)return void this.emit("error",new Error("XMLNS namespace is reserved (well-formed required)."));if(Te&&Ge.value==="")return void this.emit("error",new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required)."));Ge.prefix==="xmlns"&&(qe="xmlns")}else qe===null&&(qe=Ge.prefix===null||ce.hasPrefix(Ge.prefix)&&!ce.has(Ge.prefix,Ke)?this._generatePrefix(Ke,ce,ge):Ge.prefix,this._push(this._writer.attribute("xmlns:"+qe,this._serializeAttributeValue(Ke,this._options.wellFormed))));if(Te&&(Ge.localName.indexOf(":")!==-1||!R.xml_isName(Ge.localName)||Ge.localName==="xmlns"&&Ke===null))return void this.emit("error",new Error("Attribute local name contains invalid characters (well-formed required)."));this._push(this._writer.attribute((qe!==null?qe+":":"")+Ge.localName,this._serializeAttributeValue(Ge.value,this._options.wellFormed)))}else this._push(this._writer.attribute(Ge.localName,this._serializeAttributeValue(Ge.value,this._options.wellFormed)))}}catch(ut){Ve={error:ut}}finally{try{it&&!it.done&&(Pe=Je.return)&&Pe.call(Je)}finally{if(Ve)throw Ve.error}}},ne.prototype._serializeAttributeValue=function(le,ce){return ce&&le!==null&&!R.xml_isLegalChar(le)?(this.emit("error",new Error("Invalid characters in attribute value.")),""):le===null?"":le.replace(/(?!&(lt|gt|amp|apos|quot);)&/g,"&").replace(//g,">").replace(/"/g,""")},ne.prototype._recordNamespaceInformation=function(le,ce,ge){var pe,we,Te=null;try{for(var Ve=v(le.attributes),Pe=Ve.next();!Pe.done;Pe=Ve.next()){var je=Pe.value,Je=je.namespaceURI,it=je.prefix;if(Je===L.namespace.XMLNS){if(it===null){Te=je.value;continue}var Ge=je.localName,Ke=je.value;if(Ke===L.namespace.XML||(Ke===""&&(Ke=null),ce.has(Ge,Ke)))continue;ce.set(Ge,Ke),ge[Ge]=Ke||""}}}catch(qe){pe={error:qe}}finally{try{Pe&&!Pe.done&&(we=Ve.return)&&we.call(Ve)}finally{if(pe)throw pe.error}}return Te},ne.prototype._generatePrefix=function(le,ce,ge){var pe="ns"+ge.value;return ge.value++,ce.set(pe,le),pe},ne.prototype._isPrefixMapModified=function(le,ce){var ge=le._items,pe=ce._items,we=le._nullItems,Te=ce._nullItems;for(var Ve in pe){var Pe=ge[Ve];if(Pe===void 0)return!0;var je=pe[Ve];if(Pe.length!==je.length)return!0;for(var Je=0;Je':I?"':R?"':""},T.prototype.comment=function(P){return this._beginLine()+""},T.prototype.text=function(P){return this._beginLine()+P},T.prototype.instruction=function(P,I){return I?this._beginLine()+"":this._beginLine()+""},T.prototype.cdata=function(P){return this._beginLine()+""},T.prototype.openTagBegin=function(P){return this._lineLength+=1+P.length,this._beginLine()+"<"+P},T.prototype.openTagEnd=function(P,I,R){return R?" />":I?this._writerOptions.allowEmptyTags?">":this._writerOptions.spaceBeforeSlash?" />":"/>":">"},T.prototype.closeTag=function(P){return this._beginLine()+""},T.prototype.attribute=function(P,I){var R=P+'="'+I+'"';return this._writerOptions.prettyPrint&&this._writerOptions.width>0&&this._lineLength+1+R.length>this._writerOptions.width?(R=this._beginLine()+this._indent(1)+R,this._lineLength=R.length,R):(this._lineLength+=1+R.length," "+R)},T.prototype.beginElement=function(P){},T.prototype.endElement=function(P){},T.prototype._beginLine=function(){if(this._writerOptions.prettyPrint){var P=(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level);return this._lineLength=P.length,P}return""},T.prototype._indent=function(P){return P<=0?"":this._writerOptions.indent.repeat(P)},T}(l(114).BaseCBWriter);i.XMLCBWriter=v},function(o,i,l){l(74);var c,g=this&&this.__extends||(c=function(_,T){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(P,I){P.__proto__=I}||function(P,I){for(var R in I)I.hasOwnProperty(R)&&(P[R]=I[R])})(_,T)},function(_,T){function P(){this.constructor=_}c(_,T),_.prototype=T===null?Object.create(T):(P.prototype=T.prototype,new P)});Object.defineProperty(i,"__esModule",{value:!0});var v=function(_){function T(P){var I=_.call(this,P)||this;return I._hasChildren=[],I._additionalLevel=0,I}return g(T,_),T.prototype.frontMatter=function(){return""},T.prototype.declaration=function(P,I,R){return""},T.prototype.docType=function(P,I,R){return""},T.prototype.comment=function(P){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.comment)+this._sep()+this._val(P)+this._sep()+"}"},T.prototype.text=function(P){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.text)+this._sep()+this._val(P)+this._sep()+"}"},T.prototype.instruction=function(P,I){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.ins)+this._sep()+this._val(I?P+" "+I:P)+this._sep()+"}"},T.prototype.cdata=function(P){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.cdata)+this._sep()+this._val(P)+this._sep()+"}"},T.prototype.attribute=function(P,I){return this._comma()+this._beginLine(1)+"{"+this._sep()+this._key(this._builderOptions.convert.att+P)+this._sep()+this._val(I)+this._sep()+"}"},T.prototype.openTagBegin=function(P){var I=this._comma()+this._beginLine()+"{"+this._sep()+this._key(P)+this._sep()+"{";return this._additionalLevel++,this.hasData=!0,I+=this._beginLine()+this._key(this._builderOptions.convert.text)+this._sep()+"[",this._hasChildren.push(!1),I},T.prototype.openTagEnd=function(P,I,R){if(I){var L=this._sep()+"]";return this._additionalLevel--,L+=this._beginLine()+"}"+this._sep()+"}"}return""},T.prototype.closeTag=function(P){var I=this._beginLine()+"]";return this._additionalLevel--,I+=this._beginLine()+"}"+this._sep()+"}"},T.prototype.beginElement=function(P){},T.prototype.endElement=function(P){this._hasChildren.pop()},T.prototype._beginLine=function(P){return P===void 0&&(P=0),this._writerOptions.prettyPrint?(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level+P):""},T.prototype._indent=function(P){return P+this._additionalLevel<=0?"":this._writerOptions.indent.repeat(P+this._additionalLevel)},T.prototype._comma=function(){var P=this._hasChildren[this._hasChildren.length-1]?",":"";return this._hasChildren.length>0&&(this._hasChildren[this._hasChildren.length-1]=!0),P},T.prototype._sep=function(){return this._writerOptions.prettyPrint?" ":""},T.prototype._key=function(P){return'"'+P+'":'},T.prototype._val=function(P){return JSON.stringify(P)},T}(l(114).BaseCBWriter);i.JSONCBWriter=v},function(o,i,l){l(74);var c,g=this&&this.__extends||(c=function(_,T){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(P,I){P.__proto__=I}||function(P,I){for(var R in I)I.hasOwnProperty(R)&&(P[R]=I[R])})(_,T)},function(_,T){function P(){this.constructor=_}c(_,T),_.prototype=T===null?Object.create(T):(P.prototype=T.prototype,new P)});Object.defineProperty(i,"__esModule",{value:!0});var v=function(_){function T(P){var I=_.call(this,P)||this;if(I._rootWritten=!1,I._additionalLevel=0,P.indent.length<2)throw new Error("YAML indententation string must be at least two characters long.");if(P.offset<0)throw new Error("YAML offset should be zero or a positive number.");return I}return g(T,_),T.prototype.frontMatter=function(){return this._beginLine()+"---"},T.prototype.declaration=function(P,I,R){return""},T.prototype.docType=function(P,I,R){return""},T.prototype.comment=function(P){return this._beginLine()+this._key(this._builderOptions.convert.comment)+" "+this._val(P)},T.prototype.text=function(P){return this._beginLine()+this._key(this._builderOptions.convert.text)+" "+this._val(P)},T.prototype.instruction=function(P,I){return this._beginLine()+this._key(this._builderOptions.convert.ins)+" "+this._val(I?P+" "+I:P)},T.prototype.cdata=function(P){return this._beginLine()+this._key(this._builderOptions.convert.cdata)+" "+this._val(P)},T.prototype.attribute=function(P,I){this._additionalLevel++;var R=this._beginLine()+this._key(this._builderOptions.convert.att+P)+" "+this._val(I);return this._additionalLevel--,R},T.prototype.openTagBegin=function(P){var I=this._beginLine()+this._key(P);return this._rootWritten||(this._rootWritten=!0),this.hasData=!0,this._additionalLevel++,I+=this._beginLine(!0)+this._key(this._builderOptions.convert.text)},T.prototype.openTagEnd=function(P,I,R){return I?" "+this._val(""):""},T.prototype.closeTag=function(P){return this._additionalLevel--,""},T.prototype.beginElement=function(P){},T.prototype.endElement=function(P){},T.prototype._beginLine=function(P){return P===void 0&&(P=!1),(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level,P)},T.prototype._indent=function(P,I){if(P+this._additionalLevel<=0)return"";var R=this._writerOptions.indent.repeat(P+this._additionalLevel);return!I&&this._rootWritten?R.substr(0,R.length-2)+"-"+R.substr(-1,1):R},T.prototype._key=function(P){return'"'+P+'":'},T.prototype._val=function(P){return JSON.stringify(P)},T}(l(114).BaseCBWriter);i.YAMLCBWriter=v},function(o,i,l){var c,g=typeof Reflect=="object"?Reflect:null,v=g&&typeof g.apply=="function"?g.apply:function(K,X,ee){return Function.prototype.apply.call(K,X,ee)};c=g&&typeof g.ownKeys=="function"?g.ownKeys:Object.getOwnPropertySymbols?function(K){return Object.getOwnPropertyNames(K).concat(Object.getOwnPropertySymbols(K))}:function(K){return Object.getOwnPropertyNames(K)};var _=Number.isNaN||function(K){return K!=K};function T(){T.init.call(this)}o.exports=T,T.EventEmitter=T,T.prototype._events=void 0,T.prototype._eventsCount=0,T.prototype._maxListeners=void 0;var P=10;function I(K){if(typeof K!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof K)}function R(K){return K._maxListeners===void 0?T.defaultMaxListeners:K._maxListeners}function L(K,X,ee,ne){var le,ce,ge,pe;if(I(ee),(ce=K._events)===void 0?(ce=K._events=Object.create(null),K._eventsCount=0):(ce.newListener!==void 0&&(K.emit("newListener",X,ee.listener?ee.listener:ee),ce=K._events),ge=ce[X]),ge===void 0)ge=ce[X]=ee,++K._eventsCount;else if(typeof ge=="function"?ge=ce[X]=ne?[ee,ge]:[ge,ee]:ne?ge.unshift(ee):ge.push(ee),(le=R(K))>0&&ge.length>le&&!ge.warned){ge.warned=!0;var we=new Error("Possible EventEmitter memory leak detected. "+ge.length+" "+String(X)+" listeners added. Use emitter.setMaxListeners() to increase limit");we.name="MaxListenersExceededWarning",we.emitter=K,we.type=X,we.count=ge.length,pe=we,console&&console.warn&&console.warn(pe)}return K}function V(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function U(K,X,ee){var ne={fired:!1,wrapFn:void 0,target:K,type:X,listener:ee},le=V.bind(ne);return le.listener=ee,ne.wrapFn=le,le}function j(K,X,ee){var ne=K._events;if(ne===void 0)return[];var le=ne[X];return le===void 0?[]:typeof le=="function"?ee?[le.listener||le]:[le]:ee?function(ce){for(var ge=new Array(ce.length),pe=0;pe0&&(ce=X[0]),ce instanceof Error)throw ce;var ge=new Error("Unhandled error."+(ce?" ("+ce.message+")":""));throw ge.context=ce,ge}var pe=le[K];if(pe===void 0)return!1;if(typeof pe=="function")v(pe,this,X);else{var we=pe.length,Te=$(pe,we);for(ee=0;ee=0;ce--)if(ee[ce]===X||ee[ce].listener===X){ge=ee[ce].listener,le=ce;break}if(le<0)return this;le===0?ee.shift():function(pe,we){for(;we+1=0;ne--)this.removeListener(K,X[ne]);return this},T.prototype.listeners=function(K){return j(this,K,!0)},T.prototype.rawListeners=function(K){return j(this,K,!1)},T.listenerCount=function(K,X){return typeof K.listenerCount=="function"?K.listenerCount(X):z.call(K,X)},T.prototype.listenerCount=z,T.prototype.eventNames=function(){return this._eventsCount>0?c(this._events):[]}},function(o,i,l){Object.defineProperty(i,"__esModule",{value:!0});var c=l(77);i.createCB=function(g){return new c.XMLBuilderCBImpl(g)},i.fragmentCB=function(g){return new c.XMLBuilderCBImpl(g,!0)}}])})})(tz);var m4e=tz.exports,Zl=Uint8Array,xg=Uint16Array,nz=Uint32Array,rz=new Zl([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),iz=new Zl([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),v4e=new Zl([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),oz=function(n,e){for(var o=new xg(31),i=0;i<31;++i)o[i]=e+=1<>>1|(Vs&21845)<<1;od=(od&52428)>>>2|(od&13107)<<2,od=(od&61680)>>>4|(od&3855)<<4,BE[Vs]=((od&65280)>>>8|(od&255)<<8)>>>1}var pm=function(n,e,o){for(var i=n.length,l=0,c=new xg(e);l>>_]=T}else for(v=new xg(i),l=0;l>>15-n[l]);return v},qv=new Zl(288);for(var Vs=0;Vs<144;++Vs)qv[Vs]=8;for(var Vs=144;Vs<256;++Vs)qv[Vs]=9;for(var Vs=256;Vs<280;++Vs)qv[Vs]=7;for(var Vs=280;Vs<288;++Vs)qv[Vs]=8;var lz=new Zl(32);for(var Vs=0;Vs<32;++Vs)lz[Vs]=5;var C4e=pm(qv,9,1),_4e=pm(lz,5,1),wS=function(n){for(var e=n[0],o=1;oe&&(e=n[o]);return e},Yu=function(n,e,o){var i=e/8|0;return(n[i]|n[i+1]<<8)>>(e&7)&o},CS=function(n,e){var o=e/8|0;return(n[o]|n[o+1]<<8|n[o+2]<<16)>>(e&7)},x4e=function(n){return(n+7)/8|0},S4e=function(n,e,o){(o==null||o>n.length)&&(o=n.length);var i=new(n.BYTES_PER_ELEMENT==2?xg:n.BYTES_PER_ELEMENT==4?nz:Zl)(o-e);return i.set(n.subarray(e,o)),i},T4e=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],rc=function(n,e,o){var i=new Error(e||T4e[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,rc),!o)throw i;return i},lM=function(n,e,o){var i=n.length;if(!i||o&&o.f&&!o.l)return e||new Zl(0);var l=!e||o,c=!o||o.i;o||(o={}),e||(e=new Zl(i*3));var g=function(Jt){var Dn=e.length;if(Jt>Dn){var Nn=new Zl(Math.max(Dn*2,Jt));Nn.set(e),e=Nn}},v=o.f||0,_=o.p||0,T=o.b||0,P=o.l,I=o.d,R=o.m,L=o.n,V=i*8;do{if(!P){v=Yu(n,_,1);var U=Yu(n,_+1,3);if(_+=3,U)if(U==1)P=C4e,I=_4e,R=9,L=5;else if(U==2){var K=Yu(n,_,31)+257,X=Yu(n,_+10,15)+4,ee=K+Yu(n,_+5,31)+1;_+=14;for(var ne=new Zl(ee),le=new Zl(19),ce=0;ce>>4;if(j<16)ne[ce++]=j;else{var Ve=0,Pe=0;for(j==16?(Pe=3+Yu(n,_,3),_+=2,Ve=ne[ce-1]):j==17?(Pe=3+Yu(n,_,7),_+=3):j==18&&(Pe=11+Yu(n,_,127),_+=7);Pe--;)ne[ce++]=Ve}}var je=ne.subarray(0,K),Je=ne.subarray(K);R=wS(je),L=wS(Je),P=pm(je,R,1),I=pm(Je,L,1)}else rc(1);else{var j=x4e(_)+4,z=n[j-4]|n[j-3]<<8,$=j+z;if($>i){c&&rc(0);break}l&&g(T+z),e.set(n.subarray(j,$),T),o.b=T+=z,o.p=_=$*8,o.f=v;continue}if(_>V){c&&rc(0);break}}l&&g(T+131072);for(var it=(1<>>4;if(_+=Ve&15,_>V){c&&rc(0);break}if(Ve||rc(2),qe<256)e[T++]=qe;else if(qe==256){Ke=_,P=null;break}else{var ut=qe-254;if(qe>264){var ce=qe-257,wt=rz[ce];ut=Yu(n,_,(1<>>4;Et||rc(3),_+=Et&15;var Je=w4e[qt];if(qt>3){var wt=iz[qt];Je+=CS(n,_)&(1<V){c&&rc(0);break}l&&g(T+131072);for(var $t=T+ut;T<$t;T+=4)e[T]=e[T-Je],e[T+1]=e[T+1-Je],e[T+2]=e[T+2-Je],e[T+3]=e[T+3-Je];T=$t}}o.l=P,o.p=Ke,o.b=T,o.f=v,P&&(v=1,o.m=R,o.d=I,o.n=L)}while(!v);return T==e.length?e:S4e(e,0,T)},E4e=new Zl(0),D4e=function(n){(n[0]!=31||n[1]!=139||n[2]!=8)&&rc(6,"invalid gzip data");var e=n[3],o=10;e&4&&(o+=n[10]|(n[11]<<8)+2);for(var i=(e>>3&1)+(e>>4&1);i>0;i-=!n[o++]);return o+(e&2)},I4e=function(n){var e=n.length;return(n[e-4]|n[e-3]<<8|n[e-2]<<16|n[e-1]<<24)>>>0},O4e=function(n){((n[0]&15)!=8||n[0]>>>4>7||(n[0]<<8|n[1])%31)&&rc(6,"invalid zlib data"),n[1]&32&&rc(6,"invalid zlib data: preset dictionaries not supported")};function M4e(n,e){return lM(n,e)}function P4e(n,e){return lM(n.subarray(D4e(n),-8),new Zl(I4e(n)))}function R4e(n,e){return lM((O4e(n),n.subarray(2,-4)),e)}function A4e(n,e){return n[0]==31&&n[1]==139&&n[2]==8?P4e(n):(n[0]&15)!=8||n[0]>>4>7||(n[0]<<8|n[1])%31?M4e(n,e):R4e(n,e)}var L4e=typeof TextDecoder<"u"&&new TextDecoder,N4e=0;try{L4e.decode(E4e,{stream:!0}),N4e=1}catch{}const ql=[];ql[45]=62;ql[95]=63;const P6="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let n=0;n>16&255,i[P++]=T>>8&255,i[P++]=T&255}switch(g){case 3:for(;!zc(n[_]);)_++;for(T=ql[n.charCodeAt(_++)]<<10;!zc(n[_]);)_++;for(T|=ql[n.charCodeAt(_++)]<<4;!zc(n[_]);)_++;T|=ql[n.charCodeAt(_++)]>>2,i[P++]=T>>8&255,i[P++]=T&255;break;case 2:for(;!zc(n[_]);)_++;for(T=ql[n.charCodeAt(_++)]<<2;!zc(n[_]);)_++;T|=ql[n.charCodeAt(_++)]>>4,i[P++]=T&255;break;case 1:throw new Error("BASE64: remain 1 should not happen")}return P}function V4e(n){const e=b4e(n),o=e[e.length-1].end+1,i=(4-o%4)%4,l=(o+i)*3/4-i,c=new ArrayBuffer(l),g=new Uint8Array(c);let v=0;for(let _=0;_>18]+P6[i>>12&63]+P6[i>>6&63]+P6[i&63]}function U4e(n){const e=new Uint8Array(n),o=n.byteLength%3,i=n.byteLength-o,l=Array(i/3);for(let c=0;c0){const c=QL(e[i],e[i+1]||0,e[i+2]||0);o===1?l.push(`${c.substr(0,2)}==`):o===2&&l.push(`${c.substr(0,3)}=`)}return l.join("")}var uM={toArrayBuffer:V4e,fromArrayBuffer:U4e};function B4e(n,e){e.classHierarchy.push("vtkStringArray"),n.getComponent=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[o*e.numberOfComponents+i]},n.setComponent=(o,i,l)=>{l!==e.values[o*e.numberOfComponents+i]&&(e.values[o*e.numberOfComponents+i]=l,n.modified())},n.getData=()=>e.values,n.getTuple=function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const l=e.numberOfComponents||1;i.length&&(i.length=l);const c=o*l;for(let g=0;g0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},n.getNumberOfComponents=()=>e.numberOfComponents,n.getNumberOfValues=()=>e.values.length,n.getNumberOfTuples=()=>e.values.length/e.numberOfComponents,n.getDataType=()=>e.dataType,n.newClone=()=>cz({name:e.name,numberOfComponents:e.numberOfComponents,empty:!0}),n.getName=()=>(e.name||n.setName(`vtkStringArray${n.getMTime()}`),e.name),n.setData=(o,i)=>{e.values=o,e.size=o.length,i&&(e.numberOfComponents=i),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),n.modified()}}const G4e={name:"",numberOfComponents:1,size:0,dataType:"string"};function uz(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,G4e,o),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkStringArray object without: size > 0, values");e.values?Array.isArray(e.values)&&(e.values=[...e.values]):e.values=[],e.values&&(e.size=e.values.length),At.obj(n,e),At.set(n,e,["name"]),B4e(n,e)}const cz=At.newInstance(uz,"vtkStringArray");var W4e={newInstance:cz,extend:uz};function $4e(n,e){return[...n.getElementsByTagName(e)]}function eN(n,e){return $4e(n,e)[0]}function j4e(n){return m4e.create(n)}function z4e(n){const e=/^\s*\s*_/m,o=/\n\s*<\/AppendedData>/m;return i4e.extractBinary(n,e,o)}const Id={Int8:Int8Array,UInt8:Uint8Array,Int16:Int16Array,UInt16:Uint16Array,Int32:Int32Array,UInt32:Uint32Array,Int64:Int32Array,UInt64:Uint32Array,Float32:Float32Array,Float64:Float64Array},av={Int8:1,UInt8:1,Int16:2,UInt16:2,Int32:4,UInt32:4,Int64:8,UInt64:8,Float32:4,Float64:8};function GE(n){const e=n.length-1;return n.filter((o,i)=>i0&&(c===0?g=i*l:g=(i-1)*l+c);const v=new ArrayBuffer(g),_={offset:0,uint8:new Uint8Array(v)};let T=K4e(o);for(;T{R.trim().length&&(P[I++]=Number(R))})}else if(_==="binary"){const I=new Uint8Array(uM.toArrayBuffer(e.firstChild.nodeValue.trim()));if(o==="vtkZLibDataCompressor"){const R=cM(I,l);P=new Id[g](R.buffer),/^U?Int64$/.test(g)&&(P=GE(P))}else P=new Id[g](I.buffer,av[l]),g.indexOf("Int64")!==-1&&(P=GE(P))}else if(_==="appended"){const I=Number(e.getAttribute("offset"));P=WE(new Uint8Array(c,I),g,l)}else console.error("Format not supported",_);return{name:v,values:P,numberOfComponents:T}}function _S(n){return new TextDecoder().decode(n).split("\0").slice(0,-1)}function X4e(n,e,o,i,l){const c=n.getAttribute("Name"),g=n.getAttribute("format"),v=Number(n.getAttribute("NumberOfComponents")||"1"),T=Number(n.getAttribute("NumberOfTuples")||"1")*v,P=[];if(g==="ascii"){const I=n.firstChild.nodeValue.trim().split(/\s+/);let R=0;const L=[];for(;P.length{const U=V-L;I[R++]=U;for(let j=0;j{const R=e.getAttribute(I);R&&(_[R]=o[`set${I}`])});const T=e.getElementsByTagName("DataArray"),P=T.length;for(let I=0;Id0.newInstance(lv(Number(v.getAttribute("NumberOfTuples")),v,e,o,i,l))),g=[...n.getElementsByTagName("Array")].filter(v=>v.getAttribute("type")==="String").map(v=>W4e.newInstance(X4e(v,e,o,i,l)));return[...c,...g]}function Q4e(n,e){e.classHierarchy.push("vtkXMLReader"),e.dataAccessHelper||(e.dataAccessHelper=s4e.get("http"));function o(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.dataAccessHelper.fetchBinary(i,l)}n.setUrl=function(i){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.url=i;const c=i.split("/");return c.pop(),e.baseURL=c.join("/"),n.loadData(l)},n.loadData=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(e.url,i).then(n.parseAsArrayBuffer)},n.parseAsArrayBuffer=i=>{if(!i)return!1;if(i!==e.rawDataBuffer)n.modified();else return!0;const{text:l,binaryBuffer:c}=z4e(i);e.rawDataBuffer=i,e.binaryBuffer=c;const v=j4e(l).root(),_=v.node,T=_.getAttribute("type"),P=_.getAttribute("compressor"),I=_.getAttribute("byte_order"),R=_.getAttribute("header_type")||"UInt32";if(P&&P!=="vtkZLibDataCompressor")return console.error("Invalid compressor",P),!1;if(I&&I!=="LittleEndian")return console.error("Only LittleEndian encoding is supported"),!1;if(T!==e.dataType)return console.error("Invalid data type",T,"expecting",e.dataType),!1;if(eN(_,"AppendedData")){const U=eN(_,"AppendedData"),j=U.getAttribute("encoding"),z=v.filter(le=>{const{node:ce}=le;return ce.nodeType===Node.ELEMENT_NODE&&ce.getAttribute("format")==="appended"&&ce.hasAttribute("offset")},!1,!0).map(le=>({node:le.node,offset:Number(le.node.getAttribute("offset"))}));z.sort((le,ce)=>le.offset-ce.offset);let $=e.binaryBuffer;j==="base64"&&($=U.textContent.trim().substr(1));const K=[];for(let le=0;lele+ce.length,0),ee=new ArrayBuffer(X),ne=new Uint8Array(ee);for(let le=0,ce=0;le{n.parseAsArrayBuffer(e.rawDataBuffer)}}const ege={};function tge(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ege,o),At.obj(n,e),At.get(n,e,["url","baseURL"]),At.setGet(n,e,["dataAccessHelper"]),At.algo(n,e,0,1),Q4e(n,e)}var uv={extend:tge,processDataArray:lv,processFieldData:J4e,processCells:Y4e};function nge(n,e,o,i,l,c,g){const v=Number(o.getAttribute(`NumberOf${e}`));if(v>0){const _=o.getElementsByTagName(e)[0].getElementsByTagName("DataArray")[0],{values:T,numberOfComponents:P}=uv.processDataArray(v,_,i,l,c,g);n[`get${e}`]().setData(T,P)}return v}function rge(n,e,o,i,l,c,g){const v=Number(o.getAttribute(`NumberOf${e}`));if(v>0){const _=uv.processCells(v,o.getElementsByTagName(e)[0],i,l,c,g);n[`get${e}`]().setData(_)}return v}function ige(n,e){e.classHierarchy.push("vtkXMLPolyDataReader"),n.parseXML=(o,i,l,c,g)=>{const _=o.getElementsByTagName(e.dataType)[0].getElementsByTagName("Piece"),T=_.length;for(let P=0;P{V+=rge(I,U,R,l,c,g,e.binaryBuffer)}),uv.processFieldData(L,R.getElementsByTagName("PointData")[0],I.getPointData(),l,c,g,e.binaryBuffer),uv.processFieldData(V,R.getElementsByTagName("CellData")[0],I.getCellData(),l,c,g,e.binaryBuffer),e.output[P]=I}}}const oge={dataType:"PolyData"};function fz(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oge,o),uv.extend(n,e,o),ige(n,e)}const sge=At.newInstance(fz,"vtkXMLPolyDataReader");var age={newInstance:sge,extend:fz},ec;(function(n){n[n.None=0]="None",n[n.Capture=1]="Capture",n[n.Bubble=2]="Bubble"})(ec||(ec={}));class PC{constructor(e){this._eventListeners=new Map,this._children=new Map,this._target=e}get isEmpty(){return this._eventListeners.size===0&&this._children.size===0}addEventListener(e,o,i){const l=e.indexOf(".");if(l!==-1){const g=e.substring(0,l);let v=this._children.get(g);v||(v=new PC(this._target),this._children.set(g,v)),e=e.substring(l+1),v.addEventListener(e,o,i)}else this._addEventListener(e,o,i)}removeEventListener(e,o,i){const l=e.indexOf(".");if(l!==-1){const g=e.substring(0,l),v=this._children.get(g);if(!v)return;e=e.substring(l+1),v.removeEventListener(e,o,i),v.isEmpty&&this._children.delete(g)}else this._removeEventListener(e,o,i)}reset(){Array.from(this._children.entries()).forEach(([e,o])=>{if(o.reset(),o.isEmpty)this._children.delete(e);else throw new Error("Child is not empty and cannot be removed")}),this._unregisterAllEvents()}_addEventListener(e,o,i){let l=this._eventListeners.get(e);l||(l=new Map,this._eventListeners.set(e,l));const g=(i==null?void 0:i.capture)??!1?ec.Capture:ec.Bubble,v=l.get(o)??ec.None;if(v&g){console.warn("A listener is already registered for this phase");return}l.set(o,v|g),this._target.addEventListener(e,o,i)}_removeEventListener(e,o,i){const c=(i==null?void 0:i.capture)??!1?ec.Capture:ec.Bubble,g=this._eventListeners.get(e);if(!g)return;(o?[o]:Array.from(g.keys())).forEach(_=>{const T=g.get(_)??ec.None;if(!!!(T&c))return;this._target.removeEventListener(e,_,i);const I=T^c;I===ec.None?g.delete(_):g.set(_,I)}),g.size||this._eventListeners.delete(e)}_unregisterAllListeners(e,o){Array.from(o.entries()).forEach(([i,l])=>{const c=ec.Capture;for(let g=c;l;g<<=1){if(!(l&g))continue;const v=g===ec.Capture;this.removeEventListener(e,i,{capture:v}),l^=g}})}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach(([e,o])=>{this._unregisterAllListeners(e,o)})}}class hz{constructor(){this._targetsEventListeners=new Map}addEventListener(e,o,i,l){let c=this._targetsEventListeners.get(e);c||(c=new PC(e),this._targetsEventListeners.set(e,c)),c.addEventListener(o,i,l)}removeEventListener(e,o,i,l){const c=this._targetsEventListeners.get(e);c&&(c.removeEventListener(o,i,l),c.isEmpty&&this._targetsEventListeners.delete(e))}reset(){Array.from(this._targetsEventListeners.entries()).forEach(([e,o])=>{o.reset(),this._targetsEventListeners.delete(e)})}}const lge=Object.freeze(Object.defineProperty({__proto__:null,MultiTargetEventListenerManager:hz,TargetEventListeners:PC},Symbol.toStringTag,{value:"Module"}));function uge(n,e){const o=n.getSize();for(let i=0;i0?o:hge)>>>0).join(typeof e=="string"?e:dge)}function gge(n,e,o){let i=n[e];i instanceof Array||(i=[0],Object.defineProperty(n,e,{value:i}));for(let l=!0,c=0;l&&c{const o=Bs(n);tN[o]=e},get:(n,e)=>{if(n==="calibratedPixelSpacing"){const o=Bs(e);return tN[o]}}};function z3(n,e,o=1e-5){return Math.abs(n[0]+e[0])=e[0]||n[1]<0||n[1]>=e[1]||n[2]<0||n[2]>=e[2])}function mge(n,e){let o;e?o=[ha(e)]:o=Il();const i=[];return o.forEach(l=>{const c=n.getActors(),g=l.getVolumeViewports();for(const v of g){const _=v.getActors();if(_.length!==c.length)continue;c.every(({uid:P})=>_.find(I=>P===I.uid))&&i.push(v)}}),i}const gz=n=>n.preScale.scaled&&n.preScale.scalingParameters.suvbw;function pz(n,e,o=void 0,i="_thumbnails",l={displayArea:{imageArea:[1,1]}}){if(!n||!(n instanceof HTMLCanvasElement))throw new Error("canvas element is required");const c=!e.imageId,g=!c&&e,v=c&&e,T=`renderGPUViewport-${g.imageId||v.volumeId}`,P=document.createElement("div"),I=window.devicePixelRatio||1;l.displayArea||(l.displayArea={imageArea:[1,1]});const R=n.width,L=n.height;P.style.width=`${R/I+dm}px`,P.style.height=`${L/I+dm}px`,P.style.visibility="hidden",P.style.position="absolute",document.body.appendChild(P);const V=T.split(":").join("-");P.setAttribute("viewport-id-for-remove",V);const U=th(P),j=ha(i)||new Xj(i);let z=j.getViewport(T);if(!z){const $={viewportId:T,type:c?fs.ORTHOGRAPHIC:fs.STACK,element:P,defaultOptions:{...l,suppressEvents:!0}};j.enableElement($),z=j.getViewport(T)}return new Promise($=>{let K=!1,{viewReference:X}=l;const ee=ne=>{if(K)return;if(X){const Pe=X;X=null,z.setViewReference(Pe),z.render();return}n.getContext("2d").drawImage(U,0,0,U.width,U.height,0,0,n.width,n.height);const ce=z.canvasToWorld([0,0]),ge=z.canvasToWorld([U.width/I,0]),pe=z.canvasToWorld([0,U.height/I]),we=z0([0,0,0],z.canvasToWorld([1/I,0]),ce),Te=z0([0,0,0],z.canvasToWorld([0,1/I]),ce),Ve=1;K=!0,P.removeEventListener(vr.IMAGE_RENDERED,ee),setTimeout(()=>{j.disableElement(T),document.querySelectorAll(`[viewport-id-for-remove="${V}"]`).forEach(je=>{je.remove()})},0),$({origin:ce,bottomLeft:pe,topRight:ge,thicknessMm:Ve,rightVector:we,downVector:Te})};P.addEventListener(vr.IMAGE_RENDERED,ee),c?z.setVolumes([v],!1,!0):z.renderImageObject(e),z.resetCamera(),o==="PT"&&!gz(g)&&z.setProperties({voiRange:{lower:g.minPixelValue,upper:g.maxPixelValue}}),z.render()})}function mz(n,e,o,i,l){if(e.volumeId)throw new Error("Unsupported volume rendering for CPU");const g=e,v=Hj(n,g,o),_={canvas:n,viewport:v,image:g,renderingTools:{}};_.transform=ov(_);const T=!0;return new Promise((P,I)=>{$j(_,T),P(null)})}function vge(n){const{canvas:e,imageId:o,viewReference:i,requestType:l=R0.Thumbnail,priority:c=-5,renderingEngineId:g="_thumbnails",useCPURendering:v=!1,thumbnail:_=!1,imageAspect:T=!1,viewportOptions:P}=n,I=i==null?void 0:i.volumeId,R=I&&!o,L=i&&P?{...P,viewReference:i}:P,V=v?mz:pz;return new Promise((U,j)=>{function z(ee,ne){var pe;const{modality:le}=Hr("generalSeriesModule",ne)||{},ce=!R&&ee,ge=R&ⅇce&&(ce.isPreScaled=ce.isPreScaled||((pe=ce.preScale)==null?void 0:pe.scaled)),_&&(e.height=256,e.width=256),T&&ce&&(e.width=ce&&e.height*ce.width/ce.height),e.style.width=`${e.width/devicePixelRatio}px`,e.style.height=`${e.height/devicePixelRatio}px`,ge&&v&&j(new Error("CPU rendering of volume not supported")),V(e,ee,le,g,L).then(U)}function $(ee,ne){console.error(ee,ne),j(ee)}function K(ee,ne,le){return Xd(ee,le).then(ce=>{z.call(this,ce,ee)},ce=>{$.call(this,ce,ee)})}const X={useRGBA:!!v,requestType:l};if(I){const ee=Jn.getVolume(I);ee||j(new Error(`Volume id ${I} not found in cache`));const ne=ee.imageIds[0];z(ee,ne)}else Y1.addRequest(K.bind(null,o,null,X),l,{imageId:o},c)})}const nN={HISTORY_UNDO:"CORNERSTONE_TOOLS_HISTORY_UNDO",HISTORY_REDO:"CORNERSTONE_TOOLS_HISTORY_REDO"};class vz{constructor(e="Tools",o=50){this.position=-1,this.redoAvailable=0,this.undoAvailable=0,this.ring=new Array,this.label=e,this._size=o}get size(){return this._size}set size(e){this.ring=new Array(e),this._size=e,this.position=-1,this.redoAvailable=0,this.undoAvailable=0}undo(e=1){for(;e>0&&this.undoAvailable>0;){const o=this.ring[this.position];o.restoreMemo(!0),o.id&&pr.dispatchEvent(new CustomEvent(nN.HISTORY_UNDO,{detail:{isUndo:!0,id:o.id,operationType:o.operationType||"annotation",memo:o}})),e--,this.redoAvailable++,this.undoAvailable--,this.position=(this.position-1+this.size)%this.size}}undoIf(e){return this.undoAvailable>0&&e(this.ring[this.position])?(this.undo(),!0):!1}redo(e=1){for(;e>0&&this.redoAvailable>0;){const o=(this.position+1)%this.size,i=this.ring[o];i.restoreMemo(!1),i.id&&pr.dispatchEvent(new CustomEvent(nN.HISTORY_REDO,{detail:{isUndo:!1,id:i.id,operationType:i.operationType||"annotation",memo:i}})),e--,this.position=o,this.undoAvailable++,this.redoAvailable--}}push(e){var i;if(!e)return;const o=e.restoreMemo?e:(i=e.createMemo)==null?void 0:i.call(e);if(o)return this.redoAvailable=0,this.undoAvailable{i.getViewports().forEach(c=>{c.hasImageURI(n)&&o.push(c)})}),o}function dM(n,e){const o=kge(n,e);return o?o.index:null}function kge(n,e){const o=e.getImageIds(),i=e.getCurrentImageIdIndex();if(o.length===0)return null;const l=_=>{const T=yge(_);if(!T)return null;const P=lf(T.planeNormal,T.imagePositionPatient);return iv(P,n)},c={distance:l(o[i])??1/0,index:i},g=o.slice(i+1);for(let _=0;_=0;_--){const T=v[_],P=l(T);if(!(P===null||P===c.distance))if(P{const[o,i]=n,l=`${o}_${i}`;rg[l]||(rg[l]={}),rg[l]=e},get:(n,e,o)=>{if(n!=="spatialRegistrationModule")return;const i=`${e}_${o}`;if(rg[i])return rg[i];const l=`${o}_${e}`;if(rg[l])return Ia(Dl(),rg[l])}};j8(cv.get.bind(cv));const wge=.05;function wz(n,e){const o=n.getSliceIndex(),i=e.getSliceIndex(),l=Hr("imagePlaneModule",o.toString()),c=Hr("imagePlaneModule",i.toString());if(!l||!c){console.log("Viewport spatial registration requires image plane module");return}const{imageOrientationPatient:g}=c;if(!l.imageOrientationPatient.every((R,L)=>Math.abs(R-g[L])0||n[0]0||n[1]0||n[2]{o.getViewports().forEach(({element:l})=>{n.push(_n(l))})}),n}function xge(n){const e=_n(n);if(!e)return;const{viewport:o}=e;if(!(o instanceof ts))throw new Error(`An image can only be fetched for a stack viewport and not for a viewport of type: ${o.type}`);return o.getCornerstoneImage()}function u4(n){if(n.length<=1)return!1;const e=n[0],{modality:o,seriesInstanceUID:i}=Hr("generalSeriesModule",e),{imageOrientationPatient:l,pixelSpacing:c,frameOfReferenceUID:g,columns:v,rows:_,usingDefaultValues:T}=Hr("imagePlaneModule",e);if(T)return!1;const P={modality:o,imageOrientationPatient:l,pixelSpacing:c,columns:v,rows:_,seriesInstanceUID:i};let I=!0;for(let R=0;RSge.has(o)):!1}async function Tge({viewport:n,options:e={}}){const o=n.getRenderingEngine();let i=e.volumeId||`${H0()}`;i.split(":").length===0&&(i=`${phe()}:${i}`);const{id:l,element:c}=n,g=e.viewportId||l,v=n.getImageIds(),_=n.getViewPresentation(),T=n.getViewReference();o.enableElement({viewportId:g,type:fs.ORTHOGRAPHIC,element:c,defaultOptions:{background:e.background,orientation:e.orientation}}),(await ZO(i,{imageIds:v})).load();const I=o.getViewport(g);await qde(o,[{volumeId:i}],[g]);const R=()=>{I.render(),c.removeEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,R)};return(()=>{c.addEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,R)})(),I.setViewPresentation(_),I.setViewReference(T),I.render(),I}async function Ege({viewport:n,options:e}){const o=n,{id:i,element:l}=o,c=n.getRenderingEngine(),{background:g}=e,v=e.viewportId||i,_=Jn.getVolume(o.getVolumeId());if(!(_ instanceof K8))throw new Error("Currently, you cannot decache a volume that is not an ImageVolume. So, unfortunately, volumes such as nifti (which are basic Volume, without imageIds) cannot be decached.");const T={viewportId:v,type:fs.STACK,element:l,defaultOptions:{background:g}},P=o.getViewReference();c.enableElement(T);const I=c.getViewport(v);return await I.setStack(_.imageIds),I.setViewReference(P),I.render(),I}function E0(n,e=2){if(Array.isArray(n))return n.map(l=>E0(l,e)).join(", ");if(n==null||n==="")return"NaN";n=Number(n);const o=Math.abs(n);if(o<1e-4)return`${n}`;const i=o>=100?e-2:o>=10?e-1:o>=1?e:o>=.1?e+1:o>=.01?e+2:o>=.001?e+3:e+4;return n.toFixed(i)}function Od(n){return Math.round(n/ou)*ou}function _z(n,e,o){const i=n.length===e*o*4,l=n.length===e*o*3;if(i||l){const c=new Float32Array(e*o);let g=0,v=0;const _=i?4:3;for(let T=0;T=o.length?(rN(o),o):(rN(o),o.slice(0,e))}function rN(n){for(let e=n.length-1;e>0;e--){const o=Math.floor(Math.random()*(e+1));[n[e],n[o]]=[n[o],n[e]]}}function xS(n){const e=n.toString(16);return e.length==1?"0"+e:e}function Ige(n,e,o){return"#"+xS(n)+xS(e)+xS(o)}function Oge(n){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}const Mge=Object.freeze(Object.defineProperty({__proto__:null,hexToRgb:Oge,rgbToHex:Ige},Symbol.toStringTag,{value:"Module"}));function xz(n,e){if(n===e)return!0;if(n==null||e==null)return!1;try{return JSON.stringify(n)===JSON.stringify(e)}catch(o){return console.debug("Error in JSON.stringify during deep comparison:",o),n===e}}function Pge(n,e,o){if(!o)throw new Error("getVolume is required, use the utilities export instead ");if(n.modality)return n.modality;if(n.setVolumes)return e=e??n.getVolumeId(),!e||!o?void 0:o(e).metadata.Modality;throw new Error("Invalid viewport type")}const Rge=(n,e)=>n.reduce((o,i)=>((o[i[e]]=o[i[e]]||[]).push(i),o),{});function Age(n){const e=n.map(g=>{const{imagePositionPatient:v}=Hr("imagePlaneModule",g)||{};return{imageId:g,imagePositionPatient:v}});if(!e.every(g=>g.imagePositionPatient))return null;const o=Rge(e,"imagePositionPatient"),i=Object.keys(o),l=o[i[0]].length;return l===1||!i.every(g=>o[g].length===l)?null:o}function Lge(n,e){const o={};let i=[];const l=Object.keys(n);for(let c=0;cy3(l,o[0]),l=>y3(l,o[1]),l=>y3(l,o[2]),l=>y3(l,o[3]),l=>y3(l,o[4]),Nge,bge,Fge,Uge];for(let l=0;l_-T).map(_=>c[_].map(T=>T.imageId)),splittingTag:o[l]}}return{imageIdGroups:[n],splittingTag:null}}function Bge(n){const{imageIdGroups:e,splittingTag:o}=Sz(n);return{isDynamicVolume:e.length>1,timePoints:e,splittingTag:o}}function Gge(n,e){const o=n.length,{rescaleSlope:i,rescaleIntercept:l,suvbw:c}=e;if(e.modality==="PT"&&typeof c=="number")for(let g=0;gn.getImageIds().length-1||g+l<0){const v={imageIdIndex:g,direction:l};Or(pr,vr.STACK_SCROLL_OUT_OF_BOUNDS,v)}n.scroll(l,e.debounceLoading,e.loop)}}function Wge(n,e,o,i=!1){const l=i,{numScrollSteps:c,currentStepIndex:g,sliceRangeInfo:v}=Ig(n,e,l);if(!v)return;const{sliceRange:_,spacingInNormalDirection:T,camera:P}=v,{focalPoint:I,viewPlaneNormal:R,position:L}=P,{newFocalPoint:V,newPosition:U}=t8(I,L,_,R,T,o);n.setCamera({focalPoint:V,position:U}),n.render();const j=g+o,z={volumeId:e,viewport:n,delta:o,desiredStepIndex:j,currentStepIndex:g,numScrollSteps:c,currentImageId:n.getCurrentImageId()};(j>c||j<0)&&n.getCurrentImageId()?Or(pr,vr.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,z):Or(pr,vr.VOLUME_VIEWPORT_SCROLL,z)}async function Yc(n,e={}){const{imageIndex:o,debounceLoading:i,volumeId:l}=e,c=_n(n);if(!c)throw new Error("Element has been disabled");const{viewport:g}=c,{imageIndex:v,numberOfSlices:_}=$ge(g,i),P=jge(_,o)-v;$g(g,{delta:P,debounceLoading:i,volumeId:l})}function $ge(n,e){return n instanceof ts?{numberOfSlices:n.getImageIds().length,imageIndex:e?n.getTargetImageIdIndex():n.getCurrentImageIdIndex()}:{numberOfSlices:n.getNumberOfSlices(),imageIndex:n.getSliceIndex()}}function jge(n,e){const o=n-1;return u9(e,0,o)}function mM(n,e,o={}){const i=Jn.getVolume(n);if(!i)throw new Error(`Referenced volume with id ${n} does not exist.`);const{metadata:l,spacing:c,direction:g,dimensions:v}=i,{minX:_,maxX:T,minY:P,maxY:I,minZ:R,maxZ:L}=e,V=[Math.min(_,T),Math.min(P,I),Math.min(R,L)],U=T8(i.imageData,V),j=[Math.abs(T-_)+1,Math.abs(I-P)+1,Math.abs(L-R)+1],{targetBuffer:z}=o,$={metadata:l,dimensions:j,spacing:c,origin:U,direction:g,targetBuffer:z,scalarData:(z==null?void 0:z.type)==="Float32Array"?new Float32Array(j[0]*j[1]*j[2]):void 0},K=QO(H0(),$),X=K.voxelManager.getCompleteScalarDataArray(),ee=j[0]*j[1],ne=v[0]*v[1],le=i.voxelManager.getCompleteScalarDataArray();for(let ce=0;ce=g)){for(let $=R-i;$<=R+i;$++)if(!($<0||$>=c))for(let K=I-i;K<=I+i;K++){if(K<0||K>=l)continue;const X=z*v+$*l+K,ee=n[X];_+=ee,T+=ee*ee,P++}}if(P===0){const z=L*v+R*l+I;return z>=0&&z_/i),type:oc.ERMF,isProjection:g}:(console.warn("EstimatedRadiographicMagnificationFactor was not present. Unable to correct ImagerPixelSpacing."),{PixelSpacing:o,type:oc.PROJECTION,isProjection:g}):{PixelSpacing:e,type:oc.UNKNOWN,isProjection:g}}function Kge(n){const{SequenceOfUltrasoundRegions:e}=n,o=Array.isArray(e);if(o&&e.length>1){console.warn("Sequence of Ultrasound Regions > one entry. This is not yet implemented, all measurements will be shown in pixels.");return}const{PhysicalDeltaX:i,PhysicalDeltaY:l}=o?e[0]:e;return{PixelSpacing:[i*10,l*10]}}function qge(n){const{PixelSpacing:e,SOPClassUID:o,SequenceOfUltrasoundRegions:i}=n;return i?Kge(n):zge.has(o)?Hge(n):{PixelSpacing:e,type:oc.NOT_APPLICABLE,isProjection:!1}}const Ez=(n,e)=>Pge(n,e,Jn.getVolume),J0=Object.freeze(Object.defineProperty({__proto__:null,FrameRange:n8,HistoryMemo:hM,PointsManager:q7,ProgressiveIterator:r9,RLEVoxelMap:m6,VoxelManager:gf,actorIsA:Tl,applyPreset:Rj,autoLoad:AE,buildMetadata:Fj,calculateNeighborhoodStats:Tz,calculateSpacingBetweenImageIds:kj,calculateViewportsSpatialRegistration:wz,calibratedPixelSpacingMetadataProvider:pge,clamp:VE,clip:u9,color:Mge,colormap:aue,convertStackToVolumeViewport:Tge,convertToGrayscale:_z,convertVolumeToStackViewport:Ege,createLinearRGBTransferFunction:Vj,createSigmoidRGBTransferFunction:qO,createSubVolume:mM,decimate:_j,deepClone:Ou,deepEqual:xz,deepMerge:o2,eventListener:lge,fnv1aHash:I$,generateVolumePropsFromImageIds:SC,genericMetadataProvider:Dd,getBufferConfiguration:PO,getClosestImageId:yh,getClosestStackImageIndexForPoint:dM,getCurrentVolumeViewportSlice:gM,getDynamicVolumeInfo:Bge,getImageDataMetadata:DC,getImageLegacy:xge,getImageSliceDataForVolumeViewport:o9,getMinMax:fM,getPixelSpacingInformation:qge,getRandomSampleFromArray:pM,getRuntimeId:dz,getScalingParameters:wj,getSliceRange:_C,getSpacingInNormalDirection:l4,getTargetVolumeAndSpacingInNormalDir:q8,getViewportImageCornersInWorld:l9,getViewportImageIds:Dge,getViewportModality:Ez,getViewportsWithImageURI:a9,getViewportsWithVolumeId:Kv,getVoiFromSigmoidRGBTransferFunction:Pj,getVolumeActorCorners:N$,getVolumeDirectionVectors:RC,getVolumeId:wf,getVolumeSliceRangeInfo:Mj,getVolumeViewportScrollInfo:Ig,getVolumeViewportsContainingSameVolumes:mge,hasFloatScalingParameters:JO,hasNaNValues:NE,imageIdToURI:Bs,imageRetrieveMetadataProvider:rv,imageToWorldCoords:yz,indexWithinDimensions:Qo,invertRgbTransferFunction:fm,isEqual:Qi,isEqualAbs:iue,isEqualNegative:B$,isImageActor:ac,isNumber:bs,isOpposite:z3,isPTPrescaledWithSUV:gz,isValidVolume:u4,isVideoTransferSyntax:Cz,jumpToSlice:Yc,loadImageToCanvas:vge,logger:Vle,makeVolumeMetadata:vj,planar:Ohe,pointInShapeCallback:YO,renderToCanvasCPU:mz,renderToCanvasGPU:pz,roundNumber:E0,roundToPrecision:Od,scaleArray:Gge,scaleRgbTransferFunction:uge,scroll:$g,snapFocalPointToSlice:t8,sortImageIdsAndGetSpacing:yj,spatialRegistrationMetadataProvider:cv,splitImageIdsBy4DTags:Sz,transferFunctionUtils:uue,transformIndexToWorld:T8,transformWorldToIndex:qs,transformWorldToIndexContinuous:H7,triggerEvent:Or,updateVTKImageDataWithCornerstoneImage:IC,uuidv4:H0,windowLevel:lue,worldToImageCoords:$E},Symbol.toStringTag,{value:"Module"})),Xv=new AO("imageRetrievalPool");Xv.setMaxSimultaneousRequests(R0.Interaction,200);Xv.setMaxSimultaneousRequests(R0.Thumbnail,200);Xv.setMaxSimultaneousRequests(R0.Prefetch,200);Xv.grabDelay=0;const iN=Symbol("DefaultSettings"),oN=Symbol("RuntimeSettings"),sN=Symbol("ObjectSettingsMap"),Hf=Symbol("Dictionary");class vs{constructor(e){const o=Object.create(e instanceof vs&&Hf in e?e[Hf]:null);Object.seal(Object.defineProperty(this,Hf,{value:o}))}set(e,o){return c9(this[Hf],e,o,null)}get(e){return Jge(this[Hf],e)}unset(e){return Xge(this[Hf],e+"")}forEach(e){aN(this[Hf],e)}extend(){return new vs(this)}import(e){Dz(e)&&Object.keys(e).forEach(o=>{c9(this[Hf],o,e[o],null)})}dump(){const e={};return aN(this[Hf],(o,i)=>{typeof i<"u"&&Iz(e,o,i)}),e}static assert(e){return e instanceof vs?e:vs.getRuntimeSettings()}static getDefaultSettings(e=null){let o=vs[iN];if(o instanceof vs||(o=new vs,vs[iN]=o),e){const i={};return o.forEach(l=>{if(l.startsWith(e)){const c=l.split(`${e}.`)[1];i[c]=o.get(l)}}),i}return o}static getRuntimeSettings(){let e=vs[oN];return e instanceof vs||(e=new vs(vs.getDefaultSettings()),vs[oN]=e),e}static getObjectSettings(e,o){let i=null;if(e instanceof vs)i=e;else if(typeof e=="object"&&e!==null){let l=vs[sN];l instanceof WeakMap||(l=new WeakMap,vs[sN]=l),i=l.get(e),i instanceof vs||(i=new vs(vs.assert(vs.getObjectSettings(o))),l.set(e,i))}return i}static extendRuntimeSettings(){return vs.getRuntimeSettings().extend()}}function Xge(n,e){if(e.endsWith(".")){let o=0;const i=e,l=i.slice(0,-1),c=l.length===0;for(const g in n)Object.prototype.hasOwnProperty.call(n,g)&&(c||g.startsWith(i)||g===l)&&(delete n[g],++o);return o>0}return delete n[e]}function aN(n,e){for(const o in n)e(o,n[o])}function Yge(n,e,o,i){let l;if(i.has(o))return c9(n,e,null,i);i.add(o),l=0;for(const c in o)if(Object.prototype.hasOwnProperty.call(o,c)){const g=c.length===0?e:`${e}.${c}`;c9(n,g,o[c],i)||++l}return i.delete(o),l===0}function c9(n,e,o,i){return Zge(e)?Dz(o)?Yge(n,e,o,i instanceof WeakSet?i:new WeakSet):(n[e]=o,!0):!1}function Jge(n,e){return n[e]}function Zge(n){let e,o,i;if(typeof n!="string"||(e=n.length-1)<0)return!1;for(i=-1;(o=n.indexOf(".",i+1))>=0;){if(o-i<2||o===e)return!1;i=o}return!0}function Dz(n){if(typeof n=="object"&&n!==null){const e=Object.getPrototypeOf(n);if(e===Object.prototype||e===null)return!0}return!1}function Iz(n,e,o){const i=e.indexOf(".");if(i>=0){const l=e.slice(0,i);let c=n[l];if(typeof c!="object"||c===null){const g=c;c={},typeof g<"u"&&(c[""]=g),n[l]=c}Iz(c,e.slice(i+1,e.length),o)}else n[e]=o}vs.getDefaultSettings().set("useCursors",!0);function Qge(n,e){let o;if(e===void 0)for(const i of n)i!=null&&(o>i||o===void 0&&i>=i)&&(o=i);else{let i=-1;for(let l of n)(l=e(l,++i,n))!=null&&(o>l||o===void 0&&l>=l)&&(o=l)}return o}function epe(n){if(!(c=n.length))return[];for(var e=-1,o=Qge(n,tpe),i=new Array(o);++e=1?(o=1,e-1):Math.floor(o*e),l=n[i],c=n[i+1],g=i>0?n[i-1]:2*l-c,v=i{e.image.removeEventListener("load",n.imageLoaded),e.imageLoaded=!0,n.modified()},n.setJsImageData=o=>{e.jsImageData!==o&&(o!==null&&(n.setInputData(null),n.setInputConnection(null),e.image=null,e.canvas=null),e.jsImageData=o,e.imageLoaded=!0,n.modified())},n.setCanvas=o=>{e.canvas!==o&&(o!==null&&(n.setInputData(null),n.setInputConnection(null),e.image=null,e.jsImageData=null),e.canvas=o,n.modified())},n.setImage=o=>{e.image!==o&&(o!==null&&(n.setInputData(null),n.setInputConnection(null),e.canvas=null,e.jsImageData=null),e.image=o,e.imageLoaded=!1,o.complete?n.imageLoaded():o.addEventListener("load",n.imageLoaded),n.modified())},n.getDimensionality=()=>{let o=0,i=0,l=1;if(n.getInputData()){const g=n.getInputData();o=g.getDimensions()[0],i=g.getDimensions()[1],l=g.getDimensions()[2]}return e.jsImageData&&(o=e.jsImageData.width,i=e.jsImageData.height),e.canvas&&(o=e.canvas.width,i=e.canvas.height),e.image&&(o=e.image.width,i=e.image.height),(o>1)+(i>1)+(l>1)},n.getInputAsJsImageData=()=>{if(!e.imageLoaded||n.getInputData())return null;if(e.jsImageData)return e.jsImageData();if(e.canvas)return e.canvas.getContext("2d").getImageData(0,0,e.canvas.width,e.canvas.height);if(e.image){const o=document.createElement("canvas");o.width=e.image.width,o.height=e.image.height;const i=o.getContext("2d");return i.translate(0,o.height),i.scale(1,-1),i.drawImage(e.image,0,0,e.image.width,e.image.height),i.getImageData(0,0,o.width,o.height)}return null}}const ipe=(n,e,o,i)=>{const l=[1,2,1],c=4,g=l,v=c,_=n.length/(e*o);let T=e,P=o,I=n;const R=[I];for(let L=0;L_&&(ce+=U),ge<-_&&(ce-=U),z[ce]?ne+=z[ce]*g[le]:ee-=g[le],X+=1}I[$+K]=ne/ee}z=[...I];for(let $=0;$2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ope,o),At.obj(n,e),At.algo(n,e,6,0),At.get(n,e,["canvas","image","jsImageData","imageLoaded","resizable"]),At.setGet(n,e,["repeat","edgeClamp","interpolate","mipLevel"]),rpe(n,e)}const spe=At.newInstance(Oz,"vtkTexture"),ape={generateMipmaps:ipe};var lpe={newInstance:spe,extend:Oz,...ape},pf;(function(n){n[n.Primary=1]="Primary",n[n.Secondary=2]="Secondary",n[n.Primary_And_Secondary=3]="Primary_And_Secondary",n[n.Auxiliary=4]="Auxiliary",n[n.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",n[n.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",n[n.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",n[n.Fourth_Button=8]="Fourth_Button",n[n.Fifth_Button=16]="Fifth_Button",n[n.Wheel=524288]="Wheel",n[n.Wheel_Primary=524289]="Wheel_Primary"})(pf||(pf={}));var h2;(function(n){n[n.Shift=16]="Shift",n[n.Ctrl=17]="Ctrl",n[n.Alt=18]="Alt",n[n.Meta=91]="Meta",n[n.ShiftCtrl=1617]="ShiftCtrl",n[n.ShiftAlt=1618]="ShiftAlt",n[n.ShiftMeta=1691]="ShiftMeta",n[n.CtrlAlt=1718]="CtrlAlt",n[n.CtrlMeta=1791]="CtrlMeta",n[n.AltMeta=1891]="AltMeta"})(h2||(h2={}));var ao;(function(n){n.Active="Active",n.Passive="Passive",n.Enabled="Enabled",n.Disabled="Disabled"})(ao||(ao={}));var lc;(function(n){n.Default="",n.Highlighted="Highlighted",n.Selected="Selected",n.Locked="Locked",n.AutoGenerated="AutoGenerated"})(lc||(lc={}));var Xe;(function(n){n.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",n.TOOLGROUP_VIEWPORT_ADDED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_ADDED",n.TOOLGROUP_VIEWPORT_REMOVED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED",n.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",n.CROSSHAIR_TOOL_CENTER_CHANGED="CORNERSTONE_TOOLS_CROSSHAIR_TOOL_CENTER_CHANGED",n.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",n.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",n.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",n.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",n.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",n.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",n.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",n.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",n.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_CUT_MERGE_PROCESS_COMPLETED",n.ANNOTATION_INTERPOLATION_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_INTERPOLATION_PROCESS_COMPLETED",n.INTERPOLATED_ANNOTATIONS_REMOVED="CORNERSTONE_TOOLS_INTERPOLATED_ANNOTATIONS_REMOVED",n.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",n.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",n.SEGMENTATION_REPRESENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_ADDED",n.SEGMENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_ADDED",n.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",n.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",n.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",n.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",n.HISTORY_UNDO="CORNERSTONE_TOOLS_HISTORY_UNDO",n.HISTORY_REDO="CORNERSTONE_TOOLS_HISTORY_REDO",n.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",n.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",n.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",n.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",n.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",n.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",n.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",n.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",n.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",n.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",n.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",n.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",n.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",n.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",n.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",n.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",n.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE"})(Xe||(Xe={}));var Ti;(function(n){n.Labelmap="Labelmap",n.Contour="Contour",n.Surface="Surface"})(Ti||(Ti={}));var Sg;(function(n){n.UP="UP",n.DOWN="DOWN",n.LEFT="LEFT",n.RIGHT="RIGHT"})(Sg||(Sg={}));var ci;(function(n){n.OnInteractionStart="onInteractionStart",n.OnInteractionEnd="onInteractionEnd",n.Preview="preview",n.RejectPreview="rejectPreview",n.AcceptPreview="acceptPreview",n.Fill="fill",n.Interpolate="interpolate",n.StrategyFunction="strategyFunction",n.CreateIsInThreshold="createIsInThreshold",n.Initialize="initialize",n.INTERNAL_setValue="setValue",n.AddPreview="addPreview",n.ComputeInnerCircleRadius="computeInnerCircleRadius",n.GetStatistics="getStatistics",n.EnsureImageVolumeFor3DManipulation="ensureImageVolumeFor3DManipulation",n.EnsureSegmentationVolumeFor3DManipulation="ensureSegmentationVolumeFor3DManipulation"})(ci||(ci={}));var n0;(function(n){n.Interaction="Interaction",n.HandlesUpdated="HandlesUpdated",n.StatsUpdated="StatsUpdated",n.InitialSetup="InitialSetup",n.Completed="Completed",n.InterpolationUpdated="InterpolationUpdated",n.History="History",n.MetadataReferenceModified="MetadataReferenceModified",n.LabelChange="LabelChange"})(n0||(n0={}));var su;(function(n){n.POLYSEG_CONTOUR_TO_LABELMAP="Converting Contour to Labelmap",n.POLYSEG_SURFACE_TO_LABELMAP="Converting Surfaces to Labelmap",n.POLYSEG_CONTOUR_TO_SURFACE="Converting Contour to Surface",n.POLYSEG_LABELMAP_TO_SURFACE="Converting Labelmap to Surface",n.SURFACE_CLIPPING="Clipping Surfaces",n.COMPUTE_STATISTICS="Computing Statistics",n.INTERPOLATE_LABELMAP="Interpolating Labelmap",n.COMPUTE_LARGEST_BIDIRECTIONAL="Computing Largest Bidirectional",n.GENERATE_CONTOUR_SETS="Generating Contour Sets"})(su||(su={}));const Mz=Object.freeze(Object.defineProperty({__proto__:null,AnnotationStyleStates:lc,ChangeTypes:n0,Events:Xe,get KeyboardBindings(){return h2},get MouseBindings(){return pf},SegmentationRepresentations:Ti,StrategyCallbacks:ci,get Swipe(){return Sg},ToolModes:ao,WorkerTypes:su},Symbol.toStringTag,{value:"Module"}));let AC={};function upe(){AC={}}const uN={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:AC,enabledElements:[],handleRadius:6};let ar={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:AC,enabledElements:[],handleRadius:6};function cpe(){upe(),ar={...structuredClone({...uN,svgNodeCache:{}}),svgNodeCache:{...uN.svgNodeCache}}}var fpe="Expected a function",Pz="__lodash_hash_undefined__",hpe="[object Function]",dpe="[object GeneratorFunction]",gpe="[object Symbol]",ppe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,mpe=/^\w*$/,vpe=/^\./,kpe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ype=/[\\^$.*+?()[\]{}|]/g,wpe=/\\(\\)?/g,Cpe=/^\[object .+?Constructor\]$/,_pe=typeof g2=="object"&&g2&&g2.Object===Object&&g2,xpe=typeof self=="object"&&self&&self.Object===Object&&self,vM=_pe||xpe||Function("return this")();function Spe(n,e){return n==null?void 0:n[e]}function Tpe(n){var e=!1;if(n!=null&&typeof n.toString!="function")try{e=!!(n+"")}catch{}return e}var Epe=Array.prototype,Dpe=Function.prototype,Rz=Object.prototype,TS=vM["__core-js_shared__"],cN=function(){var n=/[^.]+$/.exec(TS&&TS.keys&&TS.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),Az=Dpe.toString,kM=Rz.hasOwnProperty,Lz=Rz.toString,Ipe=RegExp("^"+Az.call(kM).replace(ype,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fN=vM.Symbol,Ope=Epe.splice,Mpe=Nz(vM,"Map"),fv=Nz(Object,"create"),hN=fN?fN.prototype:void 0,dN=hN?hN.toString:void 0;function jg(n){var e=-1,o=n?n.length:0;for(this.clear();++e-1}function Bpe(n,e){var o=this.__data__,i=LC(o,n);return i<0?o.push([n,e]):o[i][1]=e,this}Y8.prototype.clear=bpe;Y8.prototype.delete=Fpe;Y8.prototype.get=Vpe;Y8.prototype.has=Upe;Y8.prototype.set=Bpe;function np(n){var e=-1,o=n?n.length:0;for(this.clear();++e=0&&i>=0&&(o>0||i>0)&&(l+=` ${o} ${i}`),this.addFallbackStyleProperty(l)}static getUniqueInstanceName(e){return`${e}-${dz(hv)}`}}const ho={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:` + + + `},vl={x:127,y:60},l6=` + +`,sd=` + + +`,Yy='',u6='',Jy='',bC={Angle:go(ho,{name:"Angle",iconContent:``,viewBox:{x:1792,y:1792}}),ArrowAnnotate:go(ho,{name:"ArrowAnnotate",iconContent:` + + `,viewBox:{x:24,y:24}}),Bidirectional:go(ho,{name:"Bidirectional",iconContent:` + + + + + + + `,viewBox:{x:48,y:48}}),CobbAngle:go(ho,{name:"CobbAngle",iconContent:` + + + + + `,viewBox:{x:32,y:32}}),CircleROI:go(ho,{name:"CircleROI",iconContent:'',viewBox:{x:32,y:32}}),EllipticalROI:go(ho,{name:"EllipticalROI",iconContent:``,viewBox:{x:32,y:32}}),FreehandROI:go(ho,{name:"FreehandROI",iconContent:` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `,viewBox:{x:18,y:18}}),FreehandROISculptor:go(ho,{name:"FreehandROISculptor",iconContent:` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `,viewBox:{x:18,y:18}}),Length:go(ho,{name:"Length",iconContent:` + + `,viewBox:{x:24,y:24}}),Height:go(ho,{name:"Height",iconContent:'',viewBox:{x:24,y:24}}),Probe:go(ho,{name:"Probe",iconContent:``,viewBox:{x:1792,y:1792}}),RectangleROI:go(ho,{name:"RectangleROI",iconContent:``,viewBox:{x:1792,y:1792}}),Label:go(ho,{name:"Label",iconContent:``,viewBox:{x:1792,y:1792}}),Crosshairs:go(ho,{name:"Crosshairs",iconContent:``,viewBox:{x:1792,y:1792}}),Eraser:go(ho,{name:"Eraser",iconContent:``,viewBox:{x:2048,y:1792}}),Magnify:go(ho,{name:"Magnify",iconContent:``,viewBox:{x:512,y:512}}),Pan:go(ho,{name:"Pan",iconContent:``,viewBox:{x:1792,y:1792}}),Rotate:go(ho,{name:"Rotate",iconContent:``,viewBox:{x:1792,y:1792}}),StackScroll:go(ho,{name:"StackScroll",iconContent:``,viewBox:{x:24,y:28}}),WindowLevelRegion:go(ho,{name:"WindowLevelRegion",iconContent:``,viewBox:{x:1792,y:1792}}),WindowLevel:go(ho,{name:"WindowLevel",iconContent:` + + `,viewBox:{x:18,y:18}}),Zoom:go(ho,{name:"Zoom",iconContent:` + + `,viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:go(ho,{name:"SegmentationFreeHandEraseInside",iconContent:`${Yy} ${l6}`,viewBox:vl}),SegmentationFreeHandFillInside:go(ho,{name:"SegmentationFreeHandFillInside",iconContent:`${Yy} ${sd}`,viewBox:vl}),SegmentationFreeHandEraseOutside:go(ho,{name:"SegmentationFreeHandEraseOutside",iconContent:`${Yy} ${l6}`,viewBox:vl}),SegmentationFreeHandFillOutside:go(ho,{name:"SegmentationFreeHandFillOutside",iconContent:`${Yy} ${sd}`,viewBox:vl}),SegmentationRectangleEraseInside:go(ho,{name:"SegmentationRectangleEraseInside",iconContent:`${u6} ${l6}`,viewBox:vl}),RectangleScissor:go(ho,{name:"RectangleScissor",iconContent:`${u6} ${sd}`,viewBox:vl}),"RectangleScissor.FILL_INSIDE":go(ho,{name:"RectangleScissor.FILL_INSIDE",iconContent:`${u6} ${sd}`,viewBox:vl}),"RectangleScissor.FILL_OUTSIDE":go(ho,{name:"RectangleScissor.FILL_OUTSIDE",iconContent:`${u6} ${sd}`,viewBox:vl}),"RectangleScissor.ERASE_OUTSIDE":go(ho,{name:"RectangleScissor.ERASE_OUTSIDE",iconContent:`${u6} ${l6}`,viewBox:vl}),"RectangleScissor.ERASE_INSIDE":go(ho,{name:"RectangleScissor.ERASE_INSIDE",iconContent:`${u6} ${l6}`,viewBox:vl}),CircleScissor:go(ho,{name:"CircleScissor",iconContent:`${Jy} ${sd}`,viewBox:vl}),"CircleScissor.FILL_INSIDE":go(ho,{name:"CircleScissor.FILL_INSIDE",iconContent:`${Jy} ${sd}`,viewBox:vl}),"CircleScissor.ERASE_OUTSIDE":go(ho,{name:"CircleScissor.ERASE_OUTSIDE",iconContent:`${Jy} ${l6}`,viewBox:vl}),"CircleScissor.FILL_OUTSIDE":go(ho,{name:"CircleScissor.FILL_OUTSIDE",iconContent:`${Jy} ${sd}`,viewBox:vl})};function go(n,e){return Object.assign(Object.create(n),{...e,name:e.name||n.name})}function f6e(n,e,o){bC[n]=go(ho,{iconContent:e,viewBox:o})}function h6e(n){return bC[n]}const d6e=Object.keys(bC);class g6e{constructor(){const e={color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(209, 193, 90)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(209, 193, 90)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0,markerSize:"10",angleArcLineDash:""};this._initializeConfig(e)}getAnnotationToolStyles(e){return this.config.annotations&&this.config.annotations[e]}getViewportToolStyles(e){return this.config.viewports&&this.config.viewports[e]}getToolGroupToolStyles(e){return this.config.toolGroups&&this.config.toolGroups[e]}getDefaultToolStyles(){return this.config.default}setAnnotationStyles(e,o){let i=this.config.annotations;i||(this.config={...this.config,annotations:{}},i=this.config.annotations),i[e]=o}setViewportToolStyles(e,o){let i=this.config.viewports;i||(this.config={...this.config,viewports:{}},i=this.config.viewports),i[e]=o}setToolGroupToolStyles(e,o){let i=this.config.toolGroups;i||(this.config={...this.config,toolGroups:{}},i=this.config.toolGroups),i[e]=o}setDefaultToolStyles(e){this.config.default=e}getStyleProperty(e,o){const{annotationUID:i,viewportId:l,toolGroupId:c,toolName:g}=o;return this._getToolStyle(e,i,l,c,g)}_getToolStyle(e,o,i,l,c){if(o){const v=this.getAnnotationToolStyles(o);if(v&&v[e]!==void 0)return v[e]}if(i){const v=this.getViewportToolStyles(i);if(v){if(v[c]&&v[c][e]!==void 0)return v[c][e];if(v.global&&v.global[e]!==void 0)return v.global[e]}}if(l){const v=this.getToolGroupToolStyles(l);if(v){if(v[c]&&v[c][e]!==void 0)return v[c][e];if(v.global&&v.global[e]!==void 0)return v.global[e]}}const g=this.getDefaultToolStyles();if(g[c]&&g[c][e]!==void 0)return g[c][e];if(g.global&&g.global[e]!==void 0)return g.global[e]}_initializeConfig(e){const o={};for(const i in e)o[i]=e[i];this.config={default:{global:o}}}}const CM=new g6e;function p6e(n,e,o){const i=[`${n}`];return e&&i.push(`${i[0]}${e}`),o&&i.push(`${i[i.length-1]}${o}`),i}function D8(n,e,o,i){const l=p6e(n,o,i);for(let c=l.length-1;c>=0;--c){const g=CM.getStyleProperty(l[c],e);if(g!==void 0)return g}}const m6e="color",v6e=lc.Highlighted,k6e=ao.Active;class r8 extends hv{constructor(e,o,i,l,c){super(e,o,i,l,c)}static getDefinedCursor(e,o=!1,i){i||(i=D8(m6e,{},v6e,k6e));const l=y6e(e,o,i);let c=super.getDefinedCursor(l);if(!c){const g=h6e(e);g&&(c=w6e(g,l,o,i,super.getDefinedCursor("default")),super.setDefinedCursor(l,c))}return c}}function Uz(n,e){const o=Object(e),i=Object.prototype.hasOwnProperty.bind(o);return(n+"").replace(/\{\{(\w+)\}\}/g,(l,c)=>i(c)?o[c]+"":"")}function y6e(n,e,o){return`${e?"pointer":"cursor"}:${n}/${o}`}function w6e(n,e,o,i,l){const{x:c,y:g}=n.mousePoint;return new r8(C6e(n,o,{color:i}),c,g,e,l)}function C6e(n,e,o){const i=_6e(n,e,o);return`${URL.createObjectURL(i)}#${n.name||"unknown"}-${e?"pointer":"cursor"}`}function _6e(n,e,o){const i=(e?S6e:x6e)(n,o);return new Blob([i],{type:"image/svg+xml"})}function x6e(n,e){const{iconContent:o,iconSize:i,viewBox:l}=n,c=` + + ${o} + `;return Uz(c,e)}function S6e(n,e){const{iconContent:o,iconSize:i,viewBox:l,mousePointerGroupString:c}=n,g=i/Math.max(l.x,l.y,1),v=16+i,_=` + + ${c} + ${o} + `;return Uz(_,e)}const mN=Symbol("ElementCursorsMap");function Bz(n,e){dv(n)[0]=e,Yv(n,e)}function Yv(n,e){const o=dv(n);o[1]=o[0],o[0]=e,n.style.cursor=(e instanceof c1?e:c1.getDefinedCursor("auto")).getStyleProperty()}function Zi(n){Yv(n,dv(n)[1])}function Oi(n){Yv(n,c1.getDefinedCursor("none"))}function dv(n){let e=dv[mN];e instanceof WeakMap||(e=new WeakMap,Object.defineProperty(dv,mN,{value:e}));let o=e.get(n);return o||(o=[null,null],e.set(n,o)),o}const T6e=Object.freeze(Object.defineProperty({__proto__:null,hideElementCursor:Oi,initElementCursor:Bz,resetElementCursor:Zi,setElementCursor:Yv},Symbol.toStringTag,{value:"Module"}));function E6e(n,e){let o=r8.getDefinedCursor(e,!0);o||(o=c1.getDefinedCursor(e)),o||(console.log(`Cursor ${e} is not defined either as SVG or as a standard cursor.`),o=c1.getDefinedCursor(e)),Yv(n,o)}const D6e=[...d6e,...u6e],I6e=Object.freeze(Object.defineProperty({__proto__:null,CursorNames:D6e,CursorSVG:bC,ImageMouseCursor:hv,MouseCursor:c1,SVGMouseCursor:r8,elementCursor:T6e,registerCursor:f6e,setCursorForElement:E6e},Symbol.toStringTag,{value:"Module"}));function la(n){return ar.toolGroups.find(e=>e.id===n)}const{Active:C3,Passive:ES,Enabled:DS,Disabled:IS}=ao,O6e=[{mouseButton:pf.Primary}];class _M{constructor(e){this.viewportsInfo=[],this.toolOptions={},this.currentActivePrimaryToolName=null,this.prevActivePrimaryToolName=null,this.restoreToolOptions={},this._toolInstances={},this.id=e}getViewportIds(){return this.viewportsInfo.map(({viewportId:e})=>e)}getViewportsInfo(){return this.viewportsInfo.slice()}getToolInstance(e){const o=this._toolInstances[e];if(!o){console.warn(`'${e}' is not registered with this toolGroup (${this.id}).`);return}return o}getToolInstances(){return this._toolInstances}hasTool(e){return!!this._toolInstances[e]}addTool(e,o={}){const i=ar.tools[e],l=typeof e<"u"&&e!=="",c=this.toolOptions[e];if(!l){console.warn("Tool with configuration did not produce a toolName: ",o);return}if(!i){console.warn(`'${e}' is not registered with the library. You need to use cornerstoneTools.addTool to register it.`);return}if(c){console.warn(`'${e}' is already registered for ToolGroup ${this.id}.`);return}const{toolClass:g}=i,v={name:e,toolGroupId:this.id,configuration:o},_=new g(v);this._toolInstances[e]=_}addToolInstance(e,o,i={}){var c;let l=(c=ar.tools[e])==null?void 0:c.toolClass;if(!l){const g=ar.tools[o].toolClass;class v extends g{}v.toolName=e,l=v,ar.tools[e]={toolClass:v}}this.addTool(l.toolName,i)}addViewport(e,o){if(typeof e!="string")throw new Error("viewportId must be defined and be a string");const i=this._findRenderingEngine(e,o);this.viewportsInfo.some(({viewportId:v})=>v===e)||this.viewportsInfo.push({viewportId:e,renderingEngineId:i});const l=this.getActivePrimaryMouseButtonTool();vs.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(l);const g={toolGroupId:this.id,viewportId:e,renderingEngineId:i};Or(pr,Xe.TOOLGROUP_VIEWPORT_ADDED,g)}removeViewports(e,o){const i=[];if(this.viewportsInfo.forEach((c,g)=>{let v=!1;c.renderingEngineId===e&&(v=!0,o&&c.viewportId!==o&&(v=!1)),v&&i.push(g)}),i.length)for(let c=i.length-1;c>=0;c--)this.viewportsInfo.splice(i[c],1);const l={toolGroupId:this.id,viewportId:o,renderingEngineId:e};Or(pr,Xe.TOOLGROUP_VIEWPORT_REMOVED,l)}setActiveStrategy(e,o){const i=this._toolInstances[e];if(i===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool configuration.`);return}i.setActiveStrategy(o)}setToolMode(e,o,i={}){if(!e){console.warn("setToolMode: toolName must be defined");return}if(o===ao.Active){this.setToolActive(e,i||this.restoreToolOptions[e]);return}if(o===ao.Passive){this.setToolPassive(e);return}if(o===ao.Enabled){this.setToolEnabled(e);return}if(o===ao.Disabled){this.setToolDisabled(e);return}console.warn("setToolMode: mode must be defined")}setToolActive(e,o={}){const i=this._toolInstances[e];if(i===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}if(!i){console.warn(`'${e}' instance ${i} is not registered with this toolGroup, can't set tool mode.`);return}const l=this.toolOptions[e]?this.toolOptions[e].bindings:[],c=o.bindings?o.bindings:[],v={bindings:[...l,...c].reduce((I,R)=>{const L=R.numTouchPoints!==void 0,V=R.mouseButton!==void 0;return!I.some(U=>OS(U,R))&&(L||V)&&I.push(R),I},[]),mode:C3};this.toolOptions[e]=v,this._toolInstances[e].mode=C3;const T=vs.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(o)&&T)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&T){const R=c1.getDefinedCursor("default");this._setCursorForViewports(R)}this._hasMousePrimaryButtonBinding(o)&&(this.prevActivePrimaryToolName===null?this.prevActivePrimaryToolName=e:this.prevActivePrimaryToolName=this.currentActivePrimaryToolName,this.currentActivePrimaryToolName=e),typeof i.onSetToolActive=="function"&&i.onSetToolActive(),this._renderViewports();const P={toolGroupId:this.id,toolName:e,toolBindingsOptions:o};Or(pr,Xe.TOOL_ACTIVATED,P),this._triggerToolModeChangedEvent(e,C3,o)}setToolPassive(e,o){const i=this._toolInstances[e];if(i===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const l=this.getToolOptions(e),c=Object.assign({bindings:l?l.bindings:[]},l,{mode:ES}),g=Array.isArray(o==null?void 0:o.removeAllBindings)?o.removeAllBindings:this.getDefaultPrimaryBindings();c.bindings=c.bindings.filter(_=>(o==null?void 0:o.removeAllBindings)!==!0&&!g.some(T=>OS(_,T)));let v=ES;c.bindings.length!==0&&(v=C3,c.mode=v),this.toolOptions[e]=c,i.mode=v,typeof i.onSetToolPassive=="function"&&i.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,ES)}setToolEnabled(e){const o=this._toolInstances[e];if(o===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const i={bindings:[],mode:DS};this.toolOptions[e]=i,o.mode=DS,typeof o.onSetToolEnabled=="function"&&o.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,DS)}setToolDisabled(e){const o=this._toolInstances[e];if(o===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const i={bindings:[],mode:IS};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=i,o.mode=IS,typeof o.onSetToolDisabled=="function"&&o.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,IS)}getToolOptions(e){const o=this.toolOptions[e];if(o!==void 0)return o}getActivePrimaryMouseButtonTool(){return Object.keys(this.toolOptions).find(e=>{const o=this.toolOptions[e];return o.mode===C3&&this._hasMousePrimaryButtonBinding(o)})}setViewportsCursorByToolName(e,o){const i=this._getCursor(e,o);this._setCursorForViewports(i)}_getCursor(e,o){let i,l;return o&&(i=`${e}.${o}`,l=r8.getDefinedCursor(i,!0),l)||(i=`${e}`,l=r8.getDefinedCursor(i,!0),l)||(i=e,l=r8.getDefinedCursor(i,!0),l)?l:c1.getDefinedCursor("default")}_setCursorForViewports(e){this.viewportsInfo.forEach(({renderingEngineId:o,viewportId:i})=>{const l=i2(i,o);if(!l)return;const{viewport:c}=l;Bz(c.element,e)})}setToolConfiguration(e,o,i){const l=this._toolInstances[e];if(l===void 0)return console.warn(`Tool ${e} not present, can't set tool configuration.`),!1;let c;return i?c=o:c=Object.assign(l.configuration,o),l.configuration=c,typeof l.onSetToolConfiguration=="function"&&l.onSetToolConfiguration(),this._renderViewports(),!0}getDefaultMousePrimary(){return pf.Primary}getDefaultPrimaryBindings(){return O6e}getToolConfiguration(e,o){if(this._toolInstances[e]===void 0){console.warn(`Tool ${e} not present, can't set tool configuration.`);return}const i=l6e(this._toolInstances[e].configuration,o)||this._toolInstances[e].configuration;return Ou(i)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const o=this.getCurrentActivePrimaryToolName();this.setToolDisabled(o),this.setToolActive(e,{bindings:[{mouseButton:pf.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e,o=null){let i=la(e);return i?(console.debug(`ToolGroup ${e} already exists`),i):(i=new _M(e),ar.toolGroups.push(i),o=o??(()=>!0),Object.keys(this._toolInstances).filter(o).forEach(l=>{const c=this._toolInstances[l],g=this.toolOptions[l],v=c.mode;i.addTool(l),i.setToolMode(l,v,{bindings:g.bindings??[]})}),i)}_hasMousePrimaryButtonBinding(e){var i;const o=this.getDefaultPrimaryBindings();return(i=e==null?void 0:e.bindings)==null?void 0:i.some(l=>o.some(c=>OS(l,c)))}_renderViewports(){this.viewportsInfo.forEach(({renderingEngineId:e,viewportId:o})=>{ha(e).renderViewport(o)})}_triggerToolModeChangedEvent(e,o,i){const l={toolGroupId:this.id,toolName:e,mode:o,toolBindingsOptions:i};Or(pr,Xe.TOOL_MODE_CHANGED,l)}_findRenderingEngine(e,o){const i=Il();if((i==null?void 0:i.length)===0)throw new Error("No rendering engines found.");if(o)return o;const l=i.filter(c=>c.getViewport(e));if(l.length===0){if(i.length===1)return i[0].id;throw new Error("No rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.")}if(l.length>1)throw new Error("Multiple rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.");return l[0].id}}function OS(n,e){return n.mouseButton!==e.mouseButton||n.numTouchPoints!==e.numTouchPoints?!1:n.modifierKey===e.modifierKey}function Gz(n){if(ar.toolGroups.some(i=>i.id===n)){console.warn(`'${n}' already exists.`);return}const o=new _M(n);return ar.toolGroups.push(o),o}function Wz(n){const e=ar.toolGroups.findIndex(o=>o.id===n);e>-1&&ar.toolGroups.splice(e,1)}function $z(){const n=[...ar.toolGroups];for(const e of n)Wz(e.id);ar.toolGroups=[]}function Ss(n,e){var i;e||(e=(i=Il().find(l=>l.getViewports().find(c=>c.id===n)))==null?void 0:i.id);const o=ar.toolGroups.filter(l=>l.viewportsInfo.some(c=>c.renderingEngineId===e&&(!c.viewportId||c.viewportId===n)));if(o.length){if(o.length>1)throw new Error(`Multiple tool groups found for renderingEngineId: ${e} and viewportId: ${n}. You should only + have one tool group per viewport in a renderingEngine.`);return o[0]}}function M6e(){return ar.toolGroups}const P6e=[ao.Active,ao.Passive,ao.Enabled];function jz(n){return ar.toolGroups.filter(({toolOptions:e})=>{const o=Object.keys(e);for(let i=0;i{g.viewportsInfo.forEach(v=>{const{renderingEngineId:_,viewportId:T}=v,{FrameOfReferenceUID:P}=i2(T,_);n.metadata.FrameOfReferenceUID===P&&i.push(v)})});const l=Xe.ANNOTATION_ADDED,c={annotation:n};if(!i.length){Or(pr,l,c);return}i.forEach(({renderingEngineId:g,viewportId:v})=>{c.viewportId=v,c.renderingEngineId=g,Or(pr,l,c)})}function FC(n){const e=Xe.ANNOTATION_REMOVED;Or(pr,e,n)}function C0(n,e,o=n0.HandlesUpdated){const i=e&&_n(e),{viewportId:l,renderingEngineId:c}=i||{},g=Xe.ANNOTATION_MODIFIED;Or(pr,g,{annotation:n,viewportId:l,renderingEngineId:c,changeType:o})}function lo(n){qz({annotation:n})}function VC(n,e=!1){qz({annotation:n,contourHoleProcessingEnabled:e})}function qz(n){const e=Xe.ANNOTATION_COMPLETED;Or(pr,e,n)}const R6e=Object.freeze(Object.defineProperty({__proto__:null,triggerAnnotationAddedForElement:Hz,triggerAnnotationAddedForFOR:Kz,triggerAnnotationCompleted:lo,triggerAnnotationModified:C0,triggerAnnotationRemoved:FC,triggerContourAnnotationCompleted:VC},Symbol.toStringTag,{value:"Module"}));let Xz;function wc(){return Xz}function xM(n){Xz=n}function O0(n,e){const o=wc(),i=o.getGroupKey(e);return o.getAnnotations(i,n)}function Xs(n){return wc().getAnnotation(n)}function Jv(){return wc().getAllAnnotations()}function UC(n){const{annotationUID:e,parentAnnotationUID:o}=n;if(!o)return;const i=Xs(o),l=i.childAnnotationUIDs.indexOf(e);i.childAnnotationUIDs.splice(l,1),n.parentAnnotationUID=void 0}function Zv(n,e){const{annotationUID:o}=n,{annotationUID:i}=e;UC(e),n.childAnnotationUIDs||(n.childAnnotationUIDs=[]),!n.childAnnotationUIDs.includes(i)&&(n.childAnnotationUIDs.push(i),e.parentAnnotationUID=o)}function Yz(n){return n.parentAnnotationUID?Xs(n.parentAnnotationUID):void 0}function Qv(n){var e;return((e=n.childAnnotationUIDs)==null?void 0:e.map(o=>Xs(o)))??[]}function _0(n,e){n.annotationUID||(n.annotationUID=H0());const o=wc();if(e instanceof HTMLDivElement){const i=o.getGroupKey(e);o.addAnnotation(n,i),Hz(n,e)}else o.addAnnotation(n,void 0),Kz(n);return n.annotationUID}function A6e(n,e){const o=wc(),i=o.getGroupKey(e);return o.getNumberOfAnnotations(i,n)}function A0(n){var i;if(!n)return;const e=wc(),o=e.getAnnotation(n);o&&((i=o.childAnnotationUIDs)==null||i.forEach(l=>A0(l)),e.removeAnnotation(n),FC({annotation:o,annotationManagerUID:e.uid}))}function L6e(){const n=wc(),e=n.removeAllAnnotations();for(const o of e)FC({annotation:o,annotationManagerUID:n.uid})}function N6e(n,e){const o=wc(),i=o.getGroupKey(e),l=o.removeAnnotations(i,n);for(const c of l)FC({annotation:c,annotationManagerUID:o.uid})}function Jz(n){let e=n;for(;e;)e.invalidated=!0,e=e.parentAnnotationUID?Xs(e.parentAnnotationUID):void 0}const b6e=Object.freeze(Object.defineProperty({__proto__:null,addAnnotation:_0,addChildAnnotation:Zv,clearParentAnnotation:UC,getAllAnnotations:Jv,getAnnotation:Xs,getAnnotationManager:wc,getAnnotations:O0,getChildAnnotations:Qv,getNumberOfAnnotations:A6e,getParentAnnotation:Yz,invalidateAnnotation:Jz,removeAllAnnotations:L6e,removeAnnotation:A0,removeAnnotations:N6e,setAnnotationManager:xM},Symbol.toStringTag,{value:"Module"}));function t2(n){const e=n.toolName;if(!e)throw new Error(`No Tool Found for the ToolClass ${n.name}`);ar.tools[e]||(ar.tools[e]={toolClass:n})}function F6e(n){const e=n.toolName;return!!(e&&ar.tools[e])}function BC(n){return!!(n&&ar.tools[n])}function Zz(n){const e=n.toolName;if(!e)throw new Error(`No tool found for: ${n.name}`);if(!ar.tools[e]!==void 0)delete ar.tools[e];else throw new Error(`${e} cannot be removed because it has not been added`)}function rp(n,e){const o=e||n.currentTarget,{viewport:i}=_n(o)||{};if(!i)return;const l=B6e(n),c=U6e(n),g=V6e(o,c),v=i.canvasToWorld(g);return{page:c,client:l,canvas:g,world:v}}function V6e(n,e){const o=n.getBoundingClientRect();return[e[0]-o.left-window.pageXOffset,e[1]-o.top-window.pageYOffset]}function U6e(n){return[n.pageX,n.pageY]}function B6e(n){return[n.clientX,n.clientY]}function Qz(n){const e=n.currentTarget,{viewportId:o,renderingEngineId:i}=_n(e),l=rp(n,e),c={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},g={event:n,eventName:Xe.MOUSE_DOUBLE_CLICK,viewportId:o,renderingEngineId:i,camera:{},element:e,startPoints:l,lastPoints:l,currentPoints:l,deltaPoints:c};!Or(e,Xe.MOUSE_DOUBLE_CLICK,g)&&(n.stopImmediatePropagation(),n.preventDefault())}const vN=Xe.MOUSE_MOVE;function ek(n){const e=n.currentTarget,o=_n(e);if(!o)return;const{renderingEngineId:i,viewportId:l}=o,c=rp(n);!Or(e,vN,{renderingEngineId:i,viewportId:l,camera:{},element:e,currentPoints:c,eventName:vN,event:n})&&(n.stopImmediatePropagation(),n.preventDefault())}const{MOUSE_DOWN:kN,MOUSE_DOWN_ACTIVATE:G6e,MOUSE_CLICK:W6e,MOUSE_UP:$6e,MOUSE_DRAG:yN}=Xe,j6e=400,z6e=150,H6e=3,K6e={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};let v0={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};const n2={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function eH(n){if(n2.doubleClickTimeout){if(n.buttons===n2.mouseDownEvent.buttons)return;n2.mouseDownEvent=n,f9();return}n2.doubleClickTimeout=setTimeout(f9,n.buttons===1?j6e:z6e),n2.mouseDownEvent=n,n2.ignoreDoubleClick=!1,v0.element=n.currentTarget,v0.mouseButton=n.buttons;const e=_n(v0.element),{renderingEngineId:o,viewportId:i}=e;v0.renderingEngineId=o,v0.viewportId=i,v0.preventClickTimeout=setTimeout(X6e,v0.clickDelay),v0.element.removeEventListener("mousemove",ek);const l=rp(n,v0.element);v0.startPoints=Ud(l),v0.lastPoints=Ud(l),document.addEventListener("mouseup",SM),document.addEventListener("mousemove",tH)}function q6e(n){const e=GC(v0.startPoints,v0.startPoints),o={event:n,eventName:kN,element:v0.element,mouseButton:v0.mouseButton,renderingEngineId:v0.renderingEngineId,viewportId:v0.viewportId,camera:{},startPoints:v0.startPoints,lastPoints:v0.startPoints,currentPoints:v0.startPoints,deltaPoints:e};v0.lastPoints=Ud(o.lastPoints),Or(o.element,kN,o)&&Or(o.element,G6e,o)}function tH(n){const e=_n(v0.element);if(!(e!=null&&e.viewport))return;const o=rp(n,v0.element),i=oH(v0.element,v0.lastPoints),l=GC(o,i);if(n2.doubleClickTimeout)if(rH(l.canvas))f9();else return;const c={event:n,eventName:yN,mouseButton:v0.mouseButton,renderingEngineId:v0.renderingEngineId,viewportId:v0.viewportId,camera:{},element:v0.element,startPoints:Ud(v0.startPoints),lastPoints:Ud(i),currentPoints:o,deltaPoints:l};!Or(v0.element,yN,c)&&(n.stopImmediatePropagation(),n.preventDefault()),v0.lastPoints=Ud(o)}function SM(n){if(clearTimeout(v0.preventClickTimeout),n2.doubleClickTimeout)n2.mouseUpEvent?jE():(n2.mouseUpEvent=n,v0.element.addEventListener("mousemove",nH));else{const e=v0.isClickEvent?W6e:$6e,o=rp(n,v0.element),i=GC(o,v0.lastPoints),l={event:n,eventName:e,mouseButton:v0.mouseButton,element:v0.element,renderingEngineId:v0.renderingEngineId,viewportId:v0.viewportId,camera:{},startPoints:Ud(v0.startPoints),lastPoints:Ud(v0.lastPoints),currentPoints:o,deltaPoints:i};Or(l.element,e,l),jE()}document.removeEventListener("mousemove",tH)}function nH(n){const e=rp(n,v0.element),o=oH(v0.element,v0.lastPoints),i=GC(e,o);rH(i.canvas)&&(f9(),ek(n))}function rH(n){return Math.abs(n[0])+Math.abs(n[1])>H6e}function X6e(){v0.isClickEvent=!1}function f9(){n2.ignoreDoubleClick=!0;const n=n2.mouseDownEvent,e=n2.mouseUpEvent;iH(),q6e(n),e&&SM(e)}function iH(){n2.doubleClickTimeout&&(clearTimeout(n2.doubleClickTimeout),n2.doubleClickTimeout=null),n2.mouseDownEvent=null,n2.mouseUpEvent=null}function jE(){var n,e;document.removeEventListener("mouseup",SM),(n=v0.element)==null||n.removeEventListener("mousemove",nH),(e=v0.element)==null||e.addEventListener("mousemove",ek),iH(),v0=JSON.parse(JSON.stringify(K6e))}function Ud(n){return JSON.parse(JSON.stringify(n))}function oH(n,e){const{viewport:o}=_n(n)||{};if(!o)return e;const i=o.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:i}}function GC(n,e){return!n||!e?{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}:{page:MS(n.page,e.page),client:MS(n.client,e.client),canvas:MS(n.canvas,e.canvas),world:Y6e(n.world,e.world)}}function MS(n,e){return[n[0]-e[0],n[1]-e[1]]}function Y6e(n,e){return[n[0]-e[0],n[1]-e[1],n[2]-e[2]]}function J6e(){return v0.mouseButton}function sH(n){n2.ignoreDoubleClick?(n2.ignoreDoubleClick=!1,n.stopImmediatePropagation(),n.preventDefault()):jE()}function aH(n){n.removeEventListener("dblclick",Qz),n.removeEventListener("mousedown",eH),n.removeEventListener("mousemove",ek),n.removeEventListener("dblclick",sH,{capture:!0})}function Z6e(n){aH(n),n.addEventListener("dblclick",Qz),n.addEventListener("mousedown",eH),n.addEventListener("mousemove",ek),n.addEventListener("dblclick",sH,{capture:!0})}const lH={enable:Z6e,disable:aH},Q6e=2e3,I8={mouse:0,touch:1};let wN,CN;function uH(n,e){const o=Date.now();if(n!==wN){if(o-CN<=Q6e)return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1;wN=n}CN=o}const cH=uH.bind(null,I8.mouse),fH=uH.bind(null,I8.touch);function _N(n,e,o){const i=o?cH:fH;e.forEach(function(l){n.addEventListener(l,i,{passive:!1})})}function xN(n,e,o){const i=o?cH:fH;e.forEach(function(l){n.removeEventListener(l,i)})}const hH=["mousedown","mouseup","mousemove"],dH=["touchstart","touchend"];function gH(n){xN(n,hH,I8.mouse),xN(n,dH,I8.touch)}function e8e(n){gH(n),_N(n,hH,I8.mouse),_N(n,dH,I8.touch)}const pH={enable:e8e,disable:gH};function WC(n,e){const o=e||n.currentTarget,i=n.type==="touchend"?n.changedTouches:n.touches;return Object.keys(i).map(l=>{const c=r8e(i[l]),g=n8e(i[l]),v=t8e(o,g),{viewport:_}=_n(o),T=_.canvasToWorld(v);return{page:g,client:c,canvas:v,world:T,touch:{identifier:l,radiusX:i[l].radiusX,radiusY:i[l].radiusY,force:i[l].force,rotationAngle:i[l].rotationAngle}}})}function t8e(n,e){const o=n.getBoundingClientRect();return[e[0]-o.left-window.pageXOffset,e[1]-o.top-window.pageYOffset]}function n8e(n){return[n.pageX,n.pageY]}function r8e(n){return[n.clientX,n.clientY]}function h9(n,e){const o=gv(n),i=gv(e);return{page:PS(o.page,i.page),client:PS(o.client,i.client),canvas:PS(o.canvas,i.canvas),world:o8e(o.world,i.world)}}function TM(n,e){const o=gv(n),i=gv(e);return{page:i8(o.page,i.page),client:i8(o.client,i.client),canvas:i8(o.canvas,i.canvas),world:mH(o.world,i.world)}}function i8e(n,e){}function d9(n,e){const o=SN(n),i=SN(e);return{page:o.page-i.page,client:o.client-i.client,canvas:o.canvas-i.canvas,world:o.world-i.world}}function uf(n){return JSON.parse(JSON.stringify(n))}function zE(n){return JSON.parse(JSON.stringify(n))}function gv(n){return n.reduce((e,o)=>({page:[e.page[0]+o.page[0]/n.length,e.page[1]+o.page[1]/n.length],client:[e.client[0]+o.client[0]/n.length,e.client[1]+o.client[1]/n.length],canvas:[e.canvas[0]+o.canvas[0]/n.length,e.canvas[1]+o.canvas[1]/n.length],world:[e.world[0]+o.world[0]/n.length,e.world[1]+o.world[1]/n.length,e.world[2]+o.world[2]/n.length]}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function dc(n){return n.reduce((e,o)=>({page:[e.page[0]+o.page[0]/n.length,e.page[1]+o.page[1]/n.length],client:[e.client[0]+o.client[0]/n.length,e.client[1]+o.client[1]/n.length],canvas:[e.canvas[0]+o.canvas[0]/n.length,e.canvas[1]+o.canvas[1]/n.length],world:[e.world[0]+o.world[0]/n.length,e.world[1]+o.world[1]/n.length,e.world[2]+o.world[2]/n.length],touch:{identifier:null,radiusX:e.touch.radiusX+o.touch.radiusX/n.length,radiusY:e.touch.radiusY+o.touch.radiusY/n.length,force:e.touch.force+o.touch.force/n.length,rotationAngle:e.touch.rotationAngle+o.touch.rotationAngle/n.length}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function PS(n,e){return[n[0]-e[0],n[1]-e[1]]}function o8e(n,e){return[n[0]-e[0],n[1]-e[1],n[2]-e[2]]}function SN(n){const e=[];for(let o=0;o({page:o.page+i.page/e.length,client:o.client+i.client/e.length,canvas:o.canvas+i.canvas/e.length,world:o.world+i.world/e.length}),{page:0,client:0,canvas:0,world:0})}function i8(n,e){return Math.sqrt(Math.pow(n[0]-e[0],2)+Math.pow(n[1]-e[1],2))}function mH(n,e){return Math.sqrt(Math.pow(n[0]-e[0],2)+Math.pow(n[1]-e[1],2)+Math.pow(n[2]-e[2],2))}const s8e=Object.freeze(Object.defineProperty({__proto__:null,copyPoints:zE,copyPointsList:uf,getDeltaDistance:TM,getDeltaDistanceBetweenIPoints:d9,getDeltaPoints:h9,getDeltaRotation:i8e,getMeanPoints:gv,getMeanTouchPoints:dc},Symbol.toStringTag,{value:"Module"}));vs.getRuntimeSettings();const{TOUCH_START:TN,TOUCH_START_ACTIVATE:a8e,TOUCH_PRESS:EN,TOUCH_DRAG:DN,TOUCH_END:IN,TOUCH_TAP:ON,TOUCH_SWIPE:RS}=Xe,pv={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},g9={page:0,client:0,canvas:0,world:0},vH={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...pv,touch:null}],lastPointsList:[{...pv,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:g9,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},kH={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...pv,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let Ii=JSON.parse(JSON.stringify(vH)),Sa=JSON.parse(JSON.stringify(kH));function Yd(n,e,o){return Or(n,e,o)}function yH(n){Ii.element=n.currentTarget;const e=_n(Ii.element),{renderingEngineId:o,viewportId:i}=e;Ii.renderingEngineId=o,Ii.viewportId=i,!Ii.isTouchStart&&(clearTimeout(Ii.pressTimeout),Ii.pressTimeout=setTimeout(()=>l8e(n),Ii.pressDelay),u8e(n),document.addEventListener("touchmove",wH),document.addEventListener("touchend",CH))}function l8e(n){if(Ii.accumulatedDistance.canvas>Ii.pressMaxDistance)return;const o={event:n,eventName:EN,renderingEngineId:Ii.renderingEngineId,viewportId:Ii.viewportId,camera:{},element:Ii.element,startPointsList:uf(Ii.startPointsList),lastPointsList:uf(Ii.lastPointsList),startPoints:zE(dc(Ii.startPointsList)),lastPoints:zE(dc(Ii.lastPointsList))};Yd(o.element,EN,o)}function u8e(n){Ii.isTouchStart=!0,Ii.startTime=new Date;const e=WC(n,Ii.element),o=dc(e),i=pv,l=g9,c={event:n,eventName:TN,element:Ii.element,renderingEngineId:Ii.renderingEngineId,viewportId:Ii.viewportId,camera:{},startPointsList:e,lastPointsList:e,currentPointsList:e,startPoints:o,lastPoints:o,currentPoints:o,deltaPoints:i,deltaDistance:l};Ii.startPointsList=uf(c.startPointsList),Ii.lastPointsList=uf(c.lastPointsList),Yd(c.element,TN,c)&&Yd(c.element,a8e,c)}function wH(n){const e=WC(n,Ii.element),o=_H(Ii.element,Ii.lastPointsList),i=e.length===o.length?h9(e,o):pv,l=e.length===o.length?d9(e,o):g9,c=e.length===o.length?TM(e,Ii.lastPointsList):g9;Ii.accumulatedDistance={page:Ii.accumulatedDistance.page+c.page,client:Ii.accumulatedDistance.client+c.client,canvas:Ii.accumulatedDistance.canvas+c.canvas,world:Ii.accumulatedDistance.world+c.world};const g={event:n,eventName:DN,renderingEngineId:Ii.renderingEngineId,viewportId:Ii.viewportId,camera:{},element:Ii.element,startPoints:dc(Ii.startPointsList),lastPoints:dc(o),currentPoints:dc(e),startPointsList:uf(Ii.startPointsList),lastPointsList:uf(o),currentPointsList:e,deltaPoints:i,deltaDistance:l};Yd(Ii.element,DN,g),f8e(n,i),Ii.lastPointsList=uf(e)}function CH(n){clearTimeout(Ii.pressTimeout);const e=WC(n,Ii.element),o=_H(Ii.element,Ii.lastPointsList),i=e.length===o.length?h9(e,o):h9(e,e),l=e.length===o.length?d9(e,o):d9(e,e),c={event:n,eventName:IN,element:Ii.element,renderingEngineId:Ii.renderingEngineId,viewportId:Ii.viewportId,camera:{},startPointsList:uf(Ii.startPointsList),lastPointsList:uf(o),currentPointsList:e,startPoints:dc(Ii.startPointsList),lastPoints:dc(o),currentPoints:dc(e),deltaPoints:i,deltaDistance:l};Yd(c.element,IN,c),c8e(n),Ii=JSON.parse(JSON.stringify(vH)),document.removeEventListener("touchmove",wH),document.removeEventListener("touchend",CH)}function c8e(n){const e=new Date().getTime(),o=Ii.startTime.getTime();if(e-o>Sa.tapToleranceMs||(Sa.taps===0&&(Sa.element=Ii.element,Sa.renderingEngineId=Ii.renderingEngineId,Sa.viewportId=Ii.viewportId,Sa.startPointsList=Ii.startPointsList),Sa.taps>0&&!(Sa.element==Ii.element&&Sa.renderingEngineId==Ii.renderingEngineId&&Sa.viewportId==Ii.viewportId)))return;const i=WC(n,Sa.element);TM(i,Sa.startPointsList).canvas>Sa.tapMaxDistance||(clearTimeout(Sa.tapTimeout),Sa.taps+=1,Sa.tapTimeout=setTimeout(()=>{const c={event:n,eventName:ON,element:Sa.element,renderingEngineId:Sa.renderingEngineId,viewportId:Sa.viewportId,camera:{},currentPointsList:i,currentPoints:dc(i),taps:Sa.taps};Yd(c.element,ON,c),Sa=JSON.parse(JSON.stringify(kH))},Sa.tapToleranceMs))}function f8e(n,e){const o=new Date().getTime(),i=Ii.startTime.getTime();if(Ii.swiped||o-i>Ii.swipeToleranceMs)return;const[l,c]=e.canvas,g={event:n,eventName:RS,renderingEngineId:Ii.renderingEngineId,viewportId:Ii.viewportId,camera:{},element:Ii.element,swipe:null};Math.abs(l)>Ii.swipeDistanceThreshold&&(g.swipe=l>0?Sg.RIGHT:Sg.LEFT,Yd(g.element,RS,g),Ii.swiped=!0),Math.abs(c)>Ii.swipeDistanceThreshold&&(g.swipe=c>0?Sg.DOWN:Sg.UP,Yd(g.element,RS,g),Ii.swiped=!0)}function _H(n,e){const{viewport:o}=_n(n);return e.map(i=>{const l=o.canvasToWorld(i.canvas);return{page:i.page,client:i.client,canvas:i.canvas,world:l,touch:i.touch}})}function xH(n){pH.disable(n),n.removeEventListener("touchstart",yH)}function h8e(n){xH(n),pH.enable(n),n.addEventListener("touchstart",yH,{passive:!1})}const SH={enable:h8e,disable:xH},MN=10,PN=40,RN=800;function d8e(n){let e=0,o=0,i=0,l=0;return"detail"in n&&(o=n.detail),"wheelDelta"in n&&(o=-n.wheelDelta/120),"wheelDeltaY"in n&&(o=-n.wheelDeltaY/120),"wheelDeltaX"in n&&(e=-n.wheelDeltaX/120),i=e*MN,l=o*MN,"deltaY"in n&&(l=n.deltaY),"deltaX"in n&&(i=n.deltaX),(i||l)&&n.deltaMode&&(n.deltaMode===1?(i*=PN,l*=PN):(i*=RN,l*=RN)),i&&!e&&(e=i<1?-1:1),l&&!o&&(o=l<1?-1:1),{spinX:e,spinY:o,pixelX:i,pixelY:l}}function TH(n){const e=n.currentTarget,o=_n(e),{renderingEngineId:i,viewportId:l}=o;if(n.deltaY>-1&&n.deltaY<1)return;n.preventDefault();const{spinX:c,spinY:g,pixelX:v,pixelY:_}=d8e(n),T=g<0?-1:1,P={event:n,eventName:Xe.MOUSE_WHEEL,renderingEngineId:i,viewportId:l,element:e,camera:{},detail:n,wheel:{spinX:c,spinY:g,pixelX:v,pixelY:_,direction:T},points:rp(n)};Or(e,Xe.MOUSE_WHEEL,P)}function g8e(n){EH(n),n.addEventListener("wheel",TH,{passive:!1})}function EH(n){n.removeEventListener("wheel",TH)}const DH={enable:g8e,disable:EH},p8e={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let Wa={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function $C(n){Wa.element=n.currentTarget;const e=_n(Wa.element),{renderingEngineId:o,viewportId:i}=e;Wa.renderingEngineId=o,Wa.viewportId=i,Wa.key=n.key,Wa.keyCode=n.keyCode,n.preventDefault();const l={renderingEngineId:Wa.renderingEngineId,viewportId:Wa.viewportId,element:Wa.element,key:Wa.key,keyCode:Wa.keyCode};Or(l.element,Xe.KEY_DOWN,l),document.addEventListener("keyup",IH),document.addEventListener("visibilitychange",EM),Wa.element.removeEventListener("keydown",$C)}function EM(){document.removeEventListener("visibilitychange",EM),document.visibilityState==="hidden"&&OH()}function IH(n){const e={renderingEngineId:Wa.renderingEngineId,viewportId:Wa.viewportId,element:Wa.element,key:Wa.key,keyCode:Wa.keyCode};document.removeEventListener("keyup",IH),document.removeEventListener("visibilitychange",EM),Wa.element.addEventListener("keydown",$C),Wa=structuredClone(p8e),Or(e.element,Xe.KEY_UP,e)}function m8e(){return Wa.keyCode}function OH(){Wa.keyCode=void 0}function v8e(n){MH(n),n.addEventListener("keydown",$C)}function MH(n){n.removeEventListener("keydown",$C)}const J8={enable:v8e,disable:MH,getModifierKey:m8e},{EPSILON:c6}=ep;function PH(n,e,o=!1){var P;let i=1/0,l=o?-1/0:0,c=1/0,g=o?-1/0:0,v=1/0,_=o?-1/0:0;const T=((P=n[0])==null?void 0:P.length)===3;for(let I=0;IJSON.stringify(n)===JSON.stringify(e);function DM(n,e,o,i){const l=o[0]/2,c=o[1]/2,g=o[2]/2,v=new Array(8);v[0]=qs(n,[i[0]-l,i[1]-c,i[2]-g]);const _=[[1,-1,-1],[-1,1,-1],[1,1,-1],[-1,-1,1],[1,-1,1],[-1,1,1],[1,1,1]];for(let T=0;T<7;T++){const[P,I,R]=_[T];v[T+1]=qs(n,[i[0]+P*l,i[1]+I*c,i[2]+R*g])}return Jd(v,e)}function AH(n,e){const{spacing:o}=n,i=n.voxelManager.getScalarDataLength(),l=[];let c=0;for(let g=0;g{const e=IM.get(n);e&&(e.isDirty=!0)},w8e=n=>{const e=IM.get(n);return e&&!e.isDirty?e.indices:null},C8e=(n,e)=>{IM.set(n,{indices:e,isDirty:!1})};function K2(n,e,o){const i={segmentationId:n,modifiedSlicesToUse:e,segmentIndex:o};y8e(n),Or(pr,Xe.SEGMENTATION_DATA_MODIFIED,i)}function cu(n){const e={segmentationId:n};Or(pr,Xe.SEGMENTATION_MODIFIED,e)}function OM(n){const e={segmentationId:n};Or(pr,Xe.SEGMENTATION_REMOVED,e)}function ef(n,e,o){const i={segmentationId:e,type:o,viewportId:n};Or(pr,Xe.SEGMENTATION_REPRESENTATION_MODIFIED,i)}function HE(n,e,o){const i={viewportId:n,segmentationId:e,type:o};Or(pr,Xe.SEGMENTATION_REPRESENTATION_REMOVED,i)}const _8e=Object.freeze(Object.defineProperty({__proto__:null,triggerSegmentationDataModified:K2,triggerSegmentationModified:cu,triggerSegmentationRemoved:OM,triggerSegmentationRepresentationModified:ef,triggerSegmentationRepresentationRemoved:HE},Symbol.toStringTag,{value:"Module"})),x8e={renderOutline:!0,outlineWidthAutoGenerated:3,outlineWidth:1,outlineWidthInactive:1,outlineOpacity:1,outlineOpacityInactive:.85,outlineDash:void 0,outlineDashInactive:void 0,outlineDashAutoGenerated:"5,3",activeSegmentOutlineWidthDelta:0,renderFill:!0,fillAlpha:.5,fillAlphaInactive:.3,fillAlphaAutoGenerated:.3};function S8e(){return x8e}const T8e={renderOutline:!0,renderOutlineInactive:!0,outlineWidth:3,outlineWidthInactive:2,activeSegmentOutlineWidthDelta:0,renderFill:!0,renderFillInactive:!0,fillAlpha:.5,fillAlphaInactive:.4,outlineOpacity:1,outlineOpacityInactive:.85};function E8e(){return T8e}class D8e{constructor(){this.config={global:{},segmentations:{},viewportsStyle:{}}}setStyle(e,o){const{viewportId:i,segmentationId:l,type:c,segmentIndex:g}=e,v=this.getStyle(e);let _;if(!i&&!l?_={...v,...o}:_=this.copyActiveToInactiveIfNotProvided({...v,...o},c),!c)throw new Error("Type is required to set a style");if(i){this.config.viewportsStyle[i]||(this.config.viewportsStyle[i]={renderInactiveSegmentations:!1,representations:{}});const T=this.config.viewportsStyle[i].representations;if(l){T[l]||(T[l]={}),T[l][c]||(T[l][c]={});const P=T[l][c];g!==void 0?(P.perSegment||(P.perSegment={}),P.perSegment[g]=_):P.allSegments=_}else{const P="__allSegmentations__";T[P]||(T[P]={}),T[P][c]||(T[P][c]={}),T[P][c].allSegments=_}}else if(l){this.config.segmentations[l]||(this.config.segmentations[l]={}),this.config.segmentations[l][c]||(this.config.segmentations[l][c]={});const T=this.config.segmentations[l][c];g!==void 0?(T.perSegment||(T.perSegment={}),T.perSegment[g]=_):T.allSegments=_}else this.config.global[c]=_}copyActiveToInactiveIfNotProvided(e,o){const i={...e};if(o===Ti.Labelmap){const l=i;l.renderOutlineInactive??(l.renderOutlineInactive=l.renderOutline),l.outlineWidthInactive??(l.outlineWidthInactive=l.outlineWidth),l.renderFillInactive??(l.renderFillInactive=l.renderFill),l.fillAlphaInactive??(l.fillAlphaInactive=l.fillAlpha),l.outlineOpacityInactive??(l.outlineOpacityInactive=l.outlineOpacity)}else if(o===Ti.Contour){const l=i;l.outlineWidthInactive??(l.outlineWidthInactive=l.outlineWidth),l.outlineOpacityInactive??(l.outlineOpacityInactive=l.outlineOpacity),l.outlineDashInactive??(l.outlineDashInactive=l.outlineDash),l.renderOutlineInactive??(l.renderOutlineInactive=l.renderOutline),l.renderFillInactive??(l.renderFillInactive=l.renderFill),l.fillAlphaInactive??(l.fillAlphaInactive=l.fillAlpha)}return i}getStyle(e){var v,_,T,P,I;const{viewportId:o,segmentationId:i,type:l,segmentIndex:c}=e;let g=this.getDefaultStyle(l);if(this.config.global[l]&&(g={...g,...this.config.global[l]}),(v=this.config.segmentations[i])!=null&&v[l]&&(g={...g,...this.config.segmentations[i][l].allSegments},c!==void 0&&((_=this.config.segmentations[i][l].perSegment)!=null&&_[c])&&(g={...g,...this.config.segmentations[i][l].perSegment[c]})),o&&this.config.viewportsStyle[o]){this.config.viewportsStyle[o].renderInactiveSegmentations;const R="__allSegmentations__";(T=this.config.viewportsStyle[o].representations[R])!=null&&T[l]&&(g={...g,...this.config.viewportsStyle[o].representations[R][l].allSegments}),i&&((P=this.config.viewportsStyle[o].representations[i])!=null&&P[l])&&(g={...g,...this.config.viewportsStyle[o].representations[i][l].allSegments},c!==void 0&&((I=this.config.viewportsStyle[o].representations[i][l].perSegment)!=null&&I[c])&&(g={...g,...this.config.viewportsStyle[o].representations[i][l].perSegment[c]}))}return g}getRenderInactiveSegmentations(e){var o;return(o=this.config.viewportsStyle[e])==null?void 0:o.renderInactiveSegmentations}setRenderInactiveSegmentations(e,o){this.config.viewportsStyle[e]||(this.config.viewportsStyle[e]={renderInactiveSegmentations:!1,representations:{}}),this.config.viewportsStyle[e].renderInactiveSegmentations=o}getDefaultStyle(e){switch(e){case Ti.Labelmap:return E8e();case Ti.Contour:return S8e();case Ti.Surface:return{};default:throw new Error(`Unknown representation type: ${e}`)}}clearSegmentationStyle(e){this.config.segmentations[e]&&delete this.config.segmentations[e]}clearAllSegmentationStyles(){this.config.segmentations={}}clearViewportStyle(e){this.config.viewportsStyle[e]&&delete this.config.viewportsStyle[e]}clearAllViewportStyles(){for(const e in this.config.viewportsStyle){const i=this.config.viewportsStyle[e].renderInactiveSegmentations;this.config.viewportsStyle[e]={renderInactiveSegmentations:i,representations:{}}}}resetToGlobalStyle(){this.clearAllSegmentationStyles(),this.clearAllViewportStyles()}hasCustomStyle(e){const{type:o}=e,i=this.getStyle(e),l=this.getDefaultStyle(o);return!xz(i,l)}}const ru=new D8e;function I8e(n){const e={segmentationId:n};Or(pr,Xe.SEGMENTATION_ADDED,e)}const AN={colorLUT:[],segmentations:[],viewportSegRepresentations:{}};class O8e{constructor(e){this._stackLabelmapImageIdReferenceMap=new Map,this._labelmapImageIdReferenceMap=new Map,e||(e=H0()),this.state=Object.freeze(Ou(AN)),this.uid=e}getState(){return this.state}updateState(e){const o=Ou(this.state);e(o),this.state=Object.freeze(o)}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this._stackLabelmapImageIdReferenceMap.clear(),this._labelmapImageIdReferenceMap.clear(),this.state=Object.freeze(Ou(AN))}getSegmentation(e){return this.state.segmentations.find(o=>o.segmentationId===e)}updateSegmentation(e,o){this.updateState(i=>{const l=i.segmentations.find(c=>c.segmentationId===e);if(!l){console.warn(`Segmentation with id ${e} not found. Update aborted.`);return}Object.assign(l,o)}),cu(e)}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error(`Segmentation with id ${e.segmentationId} already exists`);this.updateState(o=>{const i=Ou(e);if(i.representationData.Labelmap&&"volumeId"in i.representationData.Labelmap&&!("imageIds"in i.representationData.Labelmap)){const l=this.getLabelmapImageIds(i.representationData);i.representationData.Labelmap.imageIds=l}o.segmentations.push(i)}),I8e(e.segmentationId)}removeSegmentation(e){this.updateState(o=>{const i=o.segmentations.filter(l=>l.segmentationId!==e);o.segmentations.splice(0,o.segmentations.length,...i)}),OM(e)}addSegmentationRepresentation(e,o,i,l){if(!yo(e))return;if(this.getSegmentationRepresentations(e,{type:i,segmentationId:o}).length>0){console.debug("A segmentation representation of type",i,"already exists in viewport",e,"for segmentation",o);return}this.updateState(v=>{v.viewportSegRepresentations[e]||(v.viewportSegRepresentations[e]=[],ru.setRenderInactiveSegmentations(e,!0)),i!==Ti.Labelmap?this.addDefaultSegmentationRepresentation(v,e,o,i,l):this.addLabelmapRepresentation(v,e,o,l)}),ef(e,o,i)}addDefaultSegmentationRepresentation(e,o,i,l,c){const g=e.segmentations.find(_=>_.segmentationId===i);if(!g)return;const v={};Object.keys(g.segments).forEach(_=>{v[Number(_)]={visible:!0}}),e.viewportSegRepresentations[o].push({segmentationId:i,type:l,active:!0,visible:!0,colorLUTIndex:(c==null?void 0:c.colorLUTIndex)||0,segments:v,config:{...LN(l),...c}}),this._setActiveSegmentation(e,o,i)}addLabelmapRepresentation(e,o,i,l=LN(Ti.Labelmap)){if(!yo(o))return;const g=this.getSegmentation(i);if(!g)return;const{representationData:v}=g;if(!v.Labelmap)return this.addDefaultSegmentationRepresentation(e,o,i,Ti.Labelmap,l);this.processLabelmapRepresentationAddition(o,i),this.addDefaultSegmentationRepresentation(e,o,i,Ti.Labelmap,l)}async processLabelmapRepresentationAddition(e,o){const i=yo(e);if(!i)return;const l=this.getSegmentation(o);if(!l)return;const c=i.viewport instanceof xs,{representationData:g}=l,v="volumeId"in g.Labelmap;i.viewport,!c&&!v&&this.updateLabelmapSegmentationImageReferences(e,l.segmentationId)}_updateLabelmapSegmentationReferences(e,o,i,l){const c=o.getCurrentImageId();let g=!1;for(const v of i)o.isReferenceViewable({referencedImageId:v},{asOverlay:!0})&&(g=!0,this._stackLabelmapImageIdReferenceMap.get(e).set(c,v),this._updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:c,labelmapImageId:v}));return l&&l(o,e,i),g?this._stackLabelmapImageIdReferenceMap.get(e).get(c):void 0}updateLabelmapSegmentationImageReferences(e,o){const i=this.getSegmentation(o);if(!i)return;this._stackLabelmapImageIdReferenceMap.has(o)||this._stackLabelmapImageIdReferenceMap.set(o,new Map);const{representationData:l}=i;if(!l.Labelmap)return;const c=this.getLabelmapImageIds(l),v=yo(e).viewport;return this._updateLabelmapSegmentationReferences(o,v,c,null)}_updateAllLabelmapSegmentationImageReferences(e,o){const i=this.getSegmentation(o);if(!i)return;this._stackLabelmapImageIdReferenceMap.has(o)||this._stackLabelmapImageIdReferenceMap.set(o,new Map);const{representationData:l}=i;if(!l.Labelmap)return;const c=this.getLabelmapImageIds(l),v=yo(e).viewport;this._updateLabelmapSegmentationReferences(o,v,c,(_,T,P)=>{_.getImageIds().forEach((R,L)=>{for(const V of P)_.isReferenceViewable({referencedImageId:V,sliceIndex:L},{asOverlay:!0,withNavigation:!0})&&(this._stackLabelmapImageIdReferenceMap.get(T).set(R,V),this._updateLabelmapImageIdReferenceMap({segmentationId:T,referenceImageId:R,labelmapImageId:V}))})})}getLabelmapImageIds(e){const o=e.Labelmap;let i;if(o.imageIds)i=o.imageIds;else if(!i&&o.volumeId){const l=o.volumeId;i=Jn.getVolume(l).imageIds}return i}getLabelmapImageIdsForImageId(e,o){const i=this._generateMapKey({segmentationId:o,referenceImageId:e});return this._labelmapImageIdReferenceMap.get(i)}getCurrentLabelmapImageIdsForViewport(e,o){const i=yo(e);if(!i)return;const c=i.viewport.getCurrentImageId();return this.getLabelmapImageIdsForImageId(c,o)}getCurrentLabelmapImageIdForViewport(e,o){const i=yo(e);if(!i||!this._stackLabelmapImageIdReferenceMap.has(o))return;const c=i.viewport.getCurrentImageId();return this._stackLabelmapImageIdReferenceMap.get(o).get(c)}getStackSegmentationImageIdsForViewport(e,o){if(!this.getSegmentation(o))return[];this._updateAllLabelmapSegmentationImageReferences(e,o);const{viewport:l}=yo(e),c=l.getImageIds(),g=this._stackLabelmapImageIdReferenceMap.get(o);return c.map(v=>g.get(v))}removeSegmentationRepresentationsInternal(e,o){const i=[];return this.updateState(l=>{if(!l.viewportSegRepresentations[e])return;const c=l.viewportSegRepresentations[e];let g=!1;if(!o||Object.values(o).every(v=>v===void 0))i.push(...c),delete l.viewportSegRepresentations[e];else{const{segmentationId:v,type:_}=o;l.viewportSegRepresentations[e]=c.filter(T=>{const P=v&&_&&T.segmentationId===v&&T.type===_||v&&!_&&T.segmentationId===v||!v&&_&&T.type===_;return P&&(i.push(T),T.active&&(g=!0)),!P}),l.viewportSegRepresentations[e].length===0?delete l.viewportSegRepresentations[e]:g&&(l.viewportSegRepresentations[e][0].active=!0)}}),i}removeSegmentationRepresentations(e,o){const i=this.removeSegmentationRepresentationsInternal(e,o);i.forEach(c=>{HE(e,c.segmentationId,c.type)});const l=this.getSegmentationRepresentations(e);return l.length>0&&l[0].active&&ef(e,l[0].segmentationId,l[0].type),i}removeSegmentationRepresentation(e,o,i){const l=this.removeSegmentationRepresentationsInternal(e,o);return i||l.forEach(({segmentationId:c,type:g})=>{HE(e,c,g)}),l}_updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:o,labelmapImageId:i}){const l=this._generateMapKey({segmentationId:e,referenceImageId:o});if(!this._labelmapImageIdReferenceMap.has(l)){this._labelmapImageIdReferenceMap.set(l,[i]);return}const c=this._labelmapImageIdReferenceMap.get(l),g=Array.from(new Set([...c,i]));this._labelmapImageIdReferenceMap.set(l,g)}_setActiveSegmentation(e,o,i){const l=e.viewportSegRepresentations[o];l&&l.forEach(c=>{c.active=c.segmentationId===i})}setActiveSegmentation(e,o){this.updateState(i=>{const l=i.viewportSegRepresentations[e];l&&l.forEach(c=>{c.active=c.segmentationId===o})}),ef(e,o)}getActiveSegmentation(e){if(!this.state.viewportSegRepresentations[e])return;const o=this.state.viewportSegRepresentations[e].find(i=>i.active);if(o)return this.getSegmentation(o.segmentationId)}getSegmentationRepresentations(e,o={}){const i=this.state.viewportSegRepresentations[e];return i?!o.type&&!o.segmentationId?i:i.filter(l=>{const c=o.type?l.type===o.type:!0,g=o.segmentationId?l.segmentationId===o.segmentationId:!0;return c&&g}):[]}getSegmentationRepresentation(e,o){return this.getSegmentationRepresentations(e,o)[0]}getSegmentationRepresentationVisibility(e,o){const i=this.getSegmentationRepresentation(e,o);return i==null?void 0:i.visible}setSegmentationRepresentationVisibility(e,o,i){this.updateState(l=>{const c=this.getSegmentationRepresentations(e,o);c&&c.forEach(g=>{g.visible=i,Object.entries(g.segments).forEach(([v,_])=>{_.visible=i})})}),ef(e,o.segmentationId,o.type)}addColorLUT(e,o){this.updateState(i=>{i.colorLUT[o]&&console.warn("Color LUT table already exists, overwriting"),i.colorLUT[o]=Ou(e)})}removeColorLUT(e){this.updateState(o=>{delete o.colorLUT[e]})}_getStackIdForImageIds(e){return e.map(o=>o.slice(-Math.round(o.length*.15))).join("_")}getAllViewportSegmentationRepresentations(){return Object.entries(this.state.viewportSegRepresentations).map(([e,o])=>({viewportId:e,representations:o}))}getSegmentationRepresentationsBySegmentationId(e){const o=[];return Object.entries(this.state.viewportSegRepresentations).forEach(([i,l])=>{const c=l.filter(g=>g.segmentationId===e);c.length>0&&o.push({viewportId:i,representations:c})}),o}_generateMapKey({segmentationId:e,referenceImageId:o}){return`${e}-${o}`}}async function LH({imageIds:n,options:e}){const o=n,i=(e==null?void 0:e.volumeId)||H0();return await Dj(i,o),{volumeId:i}}async function M8e({segmentationId:n,options:e}){const o=No.getSegmentation(n),i=o.representationData.Labelmap,{volumeId:l}=await LH({imageIds:i.imageIds,options:e});o.representationData.Labelmap.volumeId=l}function LN(n){const e=wh.newInstance(),o=Wg.newInstance();return o.addPoint(0,0),n===Ti.Labelmap?{cfun:e,ofun:o}:{}}const No=new O8e("DEFAULT");function El(n,e={}){return No.getSegmentationRepresentations(n,e)}function MM(n,e){const o=No;if(!e.segmentationId||!e.type)throw new Error("getSegmentationRepresentation: No segmentationId or type provided, you need to provide at least one of them");const i=o.getSegmentationRepresentations(n,e);return i==null?void 0:i[0]}function NH(n){return No.getSegmentationRepresentationsBySegmentationId(n)}function P8e(n,e){const o=_n(n),{viewport:i}=o,c=i.getActors().filter(g=>g.representationUID&&typeof g.representationUID=="string"&&g.representationUID.startsWith(e));i.removeActors(c.map(g=>g.uid))}function bH(n,e,o){const i=yo(n);if(!i)return;const{renderingEngine:l,viewport:c}=i;if(!l||!c)return;const v=c.getActors().filter(o);return v.length>0?v[0]:void 0}function R8e(n,e){const o=yo(n);if(!o)return;const{renderingEngine:i,viewport:l}=o;if(!i||!l)return;const g=l.getActors().filter(e);return g.length>0?g:void 0}function A8e(n,e){const o=jC(n,e);return o==null?void 0:o.uid}function mm(n,e){return R8e(n,o=>{var i;return(i=o.representationUID)==null?void 0:i.startsWith(`${e}-${Ti.Labelmap}`)})}function jC(n,e){return bH(n,e,o=>{var i;return(i=o.representationUID)==null?void 0:i.startsWith(`${e}-${Ti.Labelmap}`)})}function L8e(n,e,o){return bH(n,e,i=>i.representationUID===FH(e,o))}function FH(n,e){return`${n}-${Ti.Surface}-${e}`}function N8e(n,e,o){const i=_n(n),{viewport:l}=i,c=L8e(l.id,o,e.segmentIndex),g=c==null?void 0:c.actor,v=e.visible;if(g){if(g.setVisibility(v),!v)return;const z=g.getMapper(),$=z.getInputData(),K=e.points,X=e.polys,ee=$.getPoints().getData(),ne=$.getPolys().getData();if(K.length===ee.length&&X.length===ne.length)return;const le=Sl.newInstance();le.getPoints().setData(K,3);const ce=Gg.newInstance({values:Float32Array.from(X)});le.setPolys(ce),z.setInputData(le),z.modified(),l.getRenderer().resetCameraClippingRange();return}const _=e.points,T=e.polys,P=e.color,I=Sl.newInstance();I.getPoints().setData(_,3);const R=Gg.newInstance({values:Float32Array.from(T)});I.setPolys(R);const L=$v.newInstance({});let V;L.setInputData(I);const U=wC.newInstance();U.setMapper(L),U.getProperty().setColor(P[0]/255,P[1]/255,P[2]/255),U.getProperty().setLineWidth(2);const j=FH(o,e.segmentIndex);l.addActor({uid:H0(),actor:U,clippingFilter:V,representationUID:j}),l.resetCamera(),l.getRenderer().resetCameraClippingRange(),l.render()}function io(n){return No.getSegmentation(n)}function tk(n){return No.getColorLUT(n)}let p9={};function b8e(){return p9}function F8e(n){p9=n}let NN=!1;function hh(){var e;if(!((e=p9.addons)!=null&&e.polySeg))return console.warn("PolySeg add-on not configured. This will prevent automatic conversion between segmentation representations (labelmap, contour, surface). To enable these features, install @cornerstonejs/polymorphic-segmentation and register it during initialization: cornerstoneTools.init({ addons: { polySeg } })."),null;const n=p9.addons.polySeg;return NN||(n.init(),NN=!0),n}function PM({segmentationId:n,type:e,data:o}){const i=io(n);if(!i)throw new Error(`Segmentation ${n} not found`);switch(i.representationData[e]&&console.warn(`Representation data of type ${e} already exists for segmentation ${n}, overwriting it.`),e){case Ti.Labelmap:o&&(i.representationData[e]=o);break;case Ti.Contour:o&&(i.representationData[e]=o);break;case Ti.Surface:o&&(i.representationData[e]=o);break;default:throw new Error(`Invalid representation type ${e}`)}}function RM(n){const e=typeof n;return n!==null&&(e==="object"||e==="function")}function Z8(n,e,o){let i,l,c,g,v,_,T=0,P=!1,I=!1,R=!0;const L=!e&&e!==0&&typeof window.requestAnimationFrame=="function";if(typeof n!="function")throw new TypeError("Expected a function");e=Number(e)||0,RM(o)&&(P=!!o.leading,I="maxWait"in o,c=I?Math.max(Number(o.maxWait)||0,e):c,R="trailing"in o?!!o.trailing:R);function V(pe){const we=i,Te=l;return i=l=void 0,T=pe,g=n.apply(Te,we),g}function U(pe,we){return L?window.requestAnimationFrame(pe):setTimeout(pe,we)}function j(pe){if(L)return window.cancelAnimationFrame(pe);clearTimeout(pe)}function z(pe){return T=pe,v=U(X,e),P?V(pe):g}function $(pe){const we=pe-_,Te=pe-T,Ve=e-we;return I?Math.min(Ve,c-Te):Ve}function K(pe){const we=pe-_,Te=pe-T;return _===void 0||we>=e||we<0||I&&Te>=c}function X(){const pe=Date.now();if(K(pe))return ee(pe);v=U(X,$(pe))}function ee(pe){return v=void 0,R&&i?V(pe):(i=l=void 0,g)}function ne(){v!==void 0&&j(v),T=0,i=_=l=v=void 0}function le(){return v===void 0?g:ee(Date.now())}function ce(){return v!==void 0}function ge(...pe){const we=Date.now(),Te=K(we);if(i=pe,l=this,_=we,Te){if(v===void 0)return z(_);if(I)return v=U(X,e),V(_)}return v===void 0&&(v=U(X,e)),g}return ge.cancel=ne,ge.flush=le,ge.pending=ce,ge}const Q7=new Map;async function AM(n,e,o,i,l){const c=await o();PM({segmentationId:n,type:e,data:c}),l==null||l(),Q7.has(n)||Q7.set(n,[]);const g=Q7.get(n);return g.includes(e)||g.push(e),V8e(i),cu(n),c}function V8e(n){const e=o=>{U8e(o,n)};n._debouncedUpdateFunction=e,pr.removeEventListener(Xe.SEGMENTATION_DATA_MODIFIED,n._debouncedUpdateFunction),pr.addEventListener(Xe.SEGMENTATION_DATA_MODIFIED,n._debouncedUpdateFunction)}const U8e=Z8((n,e)=>{const o=n.detail.segmentationId,i=Q7.get(o);!i||!i.length||(e(o),i.length&&cu(o))},300);function LM(n,e){const o=MM(n,e);return o?Object.entries(o.segments).reduce((l,[c,g])=>(g.visible||l.add(Number(c)),l),new Set):new Set}function B8e(n,e,o=!1){const i=yo(n);if(!i)return;const{viewport:l}=i;P8e(l.element,e),o&&l.render()}async function G8e(n,e){var T;const{segmentationId:o,type:i}=e,l=io(o);if(!l)return;let c=l.representationData[Ti.Surface];if(!c&&((T=hh())!=null&&T.canComputeRequestedRepresentation(o,Ti.Surface))){const P=hh();if(c=await AM(o,Ti.Surface,()=>P.computeSurfaceData(o,{viewport:n}),()=>P.updateSurfaceData(o,{viewport:n})),!c)throw new Error(`No Surface data found for segmentationId ${o} even we tried to compute it`)}else!c&&!hh()&&console.debug(`No surface data found for segmentationId ${o} and PolySeg add-on is not configured. Unable to convert from other representations to surface. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`);if(!c){console.warn(`No Surface data found for segmentationId ${o}. Skipping render.`);return}const{geometryIds:g}=c;g!=null&&g.size||console.warn(`No Surfaces found for segmentationId ${o}. Skipping render.`);const{colorLUTIndex:v}=e,_=tk(v);g.forEach(P=>{const I=Jn.getGeometry(P);if(!(I!=null&&I.data)){console.warn(`No Surfaces found for geometryId ${P}. Skipping render.`);return}const{segmentIndex:R}=I.data,V=LM(n.id,{segmentationId:o,type:i}).has(R),U=I.data,j=_[R];U.color=j.slice(0,3),U.visible=!V,N8e(n.element,U,o)}),n.render()}const VH={render:G8e,removeRepresentation:B8e};function W8e(n,e,o,i){const l=n.getViewReference(),{viewPlaneNormal:c,FrameOfReferenceUID:g}=l,v={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:e,viewPlaneNormal:c,FrameOfReferenceUID:g,referencedImageId:$8e(n,o[0],c),...i}};return _0(v,n.element),v}function $8e(n,e,o){let i;if(n instanceof ts)i=NM(n,e,o);else if(n instanceof xs){const l=j8e(n),c=wf(l),g=Jn.getVolume(c);i=yh(g,e,o)}else throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");return i}function j8e(n){var o;const e=(o=n.getViewReferenceId)==null?void 0:o.call(n);if(e)return e;if(n instanceof xs)return`volumeId:${z8e(n)}`;throw new Error("getTargetId: viewport must have a getTargetId method")}function z8e(n){var o;const e=n.getActors();if(e)return(o=e.find(i=>i.actor.getClassName()==="vtkVolume"))==null?void 0:o.uid}function NM(n,e,o){const i=n.getImageIds();if(!i||!i.length)return;const l=i.map(c=>{const{imagePositionPatient:g}=Hr("imagePlaneModule",c),v=H8e(e,g,o);return{imageId:c,distance:v}});return l.sort((c,g)=>c.distance-g.distance),l[0].imageId}function H8e(n,e,o){const i=nr();z0(i,n,e);const l=mi(i,o);return Math.abs(l)}function UH(n,e){const{segmentation:o}=n.data,{segmentation:i}=e.data;return o.segmentationId===i.segmentationId&&o.segmentIndex===i.segmentIndex}class BH{constructor(e){this.getGroupKey=o=>{if(typeof o=="string")return o;const l=_n(o);if(!l)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return l.FrameOfReferenceUID},this._imageVolumeModifiedHandler=o=>{const i=o.detail,{FrameOfReferenceUID:l}=i,g=this.annotations[l];g&&Object.keys(g).forEach(v=>{g[v].forEach(T=>{T.invalidated!==void 0&&(T.invalidated=!0)})})},this.getFramesOfReference=()=>Object.keys(this.annotations),this.getAnnotations=(o,i)=>{const l=this.annotations;return l[o]?i?l[o][i]?l[o][i]:[]:l[o]:[]},this.getAnnotation=o=>{const i=this.annotations;for(const l in i){const c=i[l];for(const g in c){const v=c[g];for(const _ of v)if(o===_.annotationUID)return _}}},this.getNumberOfAnnotations=(o,i)=>{const l=this.getAnnotations(o,i);if(!l.length)return 0;if(i)return l.length;let c=0;for(const g in l)c+=l[g].length;return c},this.addAnnotation=(o,i)=>{const{metadata:l}=o,{FrameOfReferenceUID:c,toolName:g}=l;i=i||c;const v=this.annotations;let _=v[i];_||(v[i]={},_=v[i]);let T=_[g];T||(_[g]=[],T=_[g]),this.preprocessingFn&&(o=this.preprocessingFn(o)),T.push(o)},this.removeAnnotation=o=>{const{annotations:i}=this;for(const l in i){const c=i[l];for(const g in c){const v=c[g],_=v.findIndex(T=>T.annotationUID===o);_!==-1&&(v.splice(_,1),v.length===0&&delete c[g])}Object.keys(c).length===0&&delete i[l]}},this.removeAnnotations=(o,i)=>{const l=this.annotations,c=[];if(!l[o])return c;if(i){const g=l[o][i];for(const v of g)this.removeAnnotation(v.annotationUID),c.push(v)}else for(const g in l[o]){const v=l[o][g];for(const _ of v)this.removeAnnotation(_.annotationUID),c.push(_)}return c},this.saveAnnotations=(o,i)=>{const l=this.annotations;if(o&&i){const c=l[o];if(!c)return;const g=c[i];return structuredClone(g)}else if(o){const c=l[o];return structuredClone(c)}return structuredClone(l)},this.restoreAnnotations=(o,i,l)=>{const c=this.annotations;if(i&&l){let g=c[i];g||(c[i]={},g=c[i]),g[l]=o}else i?c[i]=o:this.annotations=structuredClone(o)},this.getAllAnnotations=()=>Object.values(this.annotations).map(o=>Object.values(o)).flat(2),this.getNumberOfAllAnnotations=()=>{let o=0;const i=this.annotations;for(const l in i){const c=i[l];for(const g in c){const v=c[g];o+=v.length}}return o},this.removeAllAnnotations=()=>{const o=[];for(const i of this.getAllAnnotations())this.removeAnnotation(i.annotationUID),o.push(i);return o},e||(e=H0()),this.annotations={},this.uid=e,pr.addEventListener(vr.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}setPreprocessingFn(e){this.preprocessingFn=e}}const K8e=new BH("DEFAULT"),Bd=new Set;function GH(n,e=!0){const o=$H();n&&(e?J8e(n,Bd,o):jH(n,Bd,o)),zH(o,Bd)}function q8e(){const n=$H();Z8e(Bd,n),zH(n,Bd)}function X8e(){return Array.from(Bd)}function da(n){return Bd.has(n)}function Y8e(){return Bd.size}function WH(n){const e=da(n);return GH(n,e),e}function $H(){return Object.freeze({added:[],removed:[],locked:[]})}function J8e(n,e,o){if(!e.has(n)){e.add(n),o.added.push(n);const i=Xs(n);i&&(i.isLocked=!0)}}function jH(n,e,o){if(e.delete(n)){o.removed.push(n);const i=Xs(n);i&&(i.isLocked=!1)}}function Z8e(n,e){n.forEach(o=>{jH(o,n,e)})}function zH(n,e){(n.added.length>0||n.removed.length>0)&&(e.forEach(o=>void n.locked.push(o)),Or(pr,Xe.ANNOTATION_LOCK_CHANGE,n))}const Q8e=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationLocked:WH,getAnnotationsLocked:X8e,getAnnotationsLockedCount:Y8e,isAnnotationLocked:da,setAnnotationLocked:GH,unlockAllAnnotations:q8e},Symbol.toStringTag,{value:"Module"})),tf=new Set;function q1(n,e=!0,o=!1){e?e5e(n,o):bM(n)}function e5e(n,e=!1){const o=KH();if(!e){qH(tf,o);const i=Xs(n);i&&(i.isSelected=!0)}if(n&&!tf.has(n)){tf.add(n),o.added.push(n);const i=Xs(n);i&&(i.isSelected=!0)}XH(o,tf)}function bM(n){const e=KH();if(n){if(tf.delete(n)){e.removed.push(n);const o=Xs(n);o.isSelected=!1}}else qH(tf,e);XH(e,tf)}function HH(){return Array.from(tf)}function t5e(n){return HH().filter(e=>{var i;const o=Xs(e);return((i=o==null?void 0:o.metadata)==null?void 0:i.toolName)===n})}function nk(n){return tf.has(n)}function n5e(){return tf.size}function KH(){return Object.freeze({added:[],removed:[],selection:[]})}function qH(n,e){n.forEach(o=>{if(n.delete(o)){e.removed.push(o);const i=Xs(o);i&&(i.isSelected=!1)}})}function XH(n,e){(n.added.length>0||n.removed.length>0)&&(e.forEach(o=>void n.selection.push(o)),Or(pr,Xe.ANNOTATION_SELECTION_CHANGE,n))}const r5e=Object.freeze(Object.defineProperty({__proto__:null,deselectAnnotation:bM,getAnnotationsSelected:HH,getAnnotationsSelectedByToolName:t5e,getAnnotationsSelectedCount:n5e,isAnnotationSelected:nk,setAnnotationSelected:q1},Symbol.toStringTag,{value:"Module"})),i5e=n=>(n.data||(n.data={}),n.data.handles||(n.data.handles={}),n.data.handles.textBox||(n.data.handles.textBox={}),n),o5e=n=>(n.data||(n.data={}),n.data.cachedStats||(n.data.cachedStats={}),n),zg=new Set;function YH(n,e=!0){const o=JH();n&&(e?ZH(n,zg,o):a5e(n,zg,o)),QH(o)}function s5e(){const n=JH();zg.forEach(e=>{ZH(e,zg,n)}),QH(n)}function Ys(n){if(Xs(n))return!zg.has(n)}function JH(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function ZH(n,e,o){if(e.delete(n)){o.lastVisible.push(n);const i=Xs(n);i.isVisible=!0}}function a5e(n,e,o){e.has(n)||(e.add(n),nk(n)&&bM(n),o.lastHidden.push(n))}function QH(n){(n.lastHidden.length>0||n.lastVisible.length>0)&&(zg.forEach(e=>void n.hidden.push(e)),Or(pr,Xe.ANNOTATION_VISIBILITY_CHANGE,n))}function eK(n){const e=!zg.has(n);return YH(n,e),e}const l5e=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationVisibility:eK,isAnnotationVisible:Ys,setAnnotationVisibility:YH,showAllAnnotations:s5e},Symbol.toStringTag,{value:"Module"})),FM=K8e,u5e=n=>{n=i5e(n),n=o5e(n);const e=n.annotationUID,o=WH(e);n.isLocked=o;const i=eK(e);return n.isVisible=i,n};FM.setPreprocessingFn(u5e);xM(FM);function c5e(){xM(FM)}function Ch(n){if(!n.data.segmentation)throw new Error("removeContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:e,segmentIndex:o}=n.data.segmentation,i=io(e),{annotationUIDsMap:l}=(i==null?void 0:i.representationData.Contour)||{},c=l==null?void 0:l.get(o);c&&(c.delete(n.annotationUID),c.size||l.delete(o))}function _h(n){if(n.parentAnnotationUID)return;if(!n.data.segmentation)throw new Error("addContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:e,segmentIndex:o}=n.data.segmentation,i=io(e);i.representationData.Contour||(i.representationData.Contour={annotationUIDsMap:new Map});let{annotationUIDsMap:l}=i.representationData.Contour;l||(l=new Map);let c=l==null?void 0:l.get(o);c||(c=new Set,l.set(o,c)),l.set(o,c.add(n.annotationUID))}const f5e="PlanarFreehandContourSegmentationTool";function VM(n){var c;const{polyline:e}=((c=n.data)==null?void 0:c.contour)||{};if(!e||e.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",e);return}A0(n.annotationUID),Ch(n);const o=e[0],i=e[e.length-1],l={metadata:{...n.metadata,toolName:f5e,originalToolName:n.metadata.originalToolName||n.metadata.toolName},data:{cachedStats:{},handles:{points:[o,i],textBox:n.data.handles.textBox?{...n.data.handles.textBox}:void 0},contour:{...n.data.contour},spline:n.data.spline,segmentation:{...n.data.segmentation}},annotationUID:H0(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:n.interpolationUID,interpolationCompleted:n.interpolationCompleted};return _0(l,n.metadata.FrameOfReferenceUID),_h(l),l}var X1;(function(n){n[n.CounterClockwise=-1]="CounterClockwise",n[n.Unknown=0]="Unknown",n[n.Clockwise=1]="Clockwise"})(X1||(X1={}));function UM(n,e){return n.minX<=e.maxX&&n.maxX>=e.minX&&n.minY<=e.maxY&&n.maxY>=e.minY}function m9(n,e){const o=n.maxX-n.minX,i=n.maxY-n.minY,l=[o,i],c=[n.minX+o/2,n.minY+i/2],g=[Math.abs(e[0]-c[0]),Math.abs(e[1]-c[1])],v=g[0]-l[0]*.5,_=g[1]-l[1]*.5;if(v>0&&_>0)return v*v+_*_;const T=Math.max(v,0)+Math.max(_,0);return T*T}function h5e(n,e){return Math.sqrt(m9(n,e))}const d5e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:h5e,distanceToPointSquared:m9,intersectAABB:UM},Symbol.toStringTag,{value:"Module"}));class tK{}class nK{constructor(e){this.storePointData=e.storePointData}getStatistics(){console.debug("InstanceCalculator getStatistics called")}}const{PointsManager:g5e}=J0;function mv(n){return{max:[-1/0],min:[1/0],sum:[0],count:0,maxIJK:null,maxLPS:null,minIJK:null,minLPS:null,runMean:[0],m2:[0],m3:[0],m4:[0],allValues:[[]],pointsInShape:n?g5e.create3(1024):null,sumLPS:[0,0,0]}}function rK(n,e,o=null,i=null){Array.isArray(e)&&e.length>1&&n.max.length===1&&(n.max.push(n.max[0],n.max[0]),n.min.push(n.min[0],n.min[0]),n.sum.push(n.sum[0],n.sum[0]),n.runMean.push(0,0),n.m2.push(n.m2[0],n.m2[0]),n.m3.push(n.m3[0],n.m3[0]),n.m4.push(n.m4[0],n.m4[0]),n.allValues.push([],[])),n!=null&&n.pointsInShape&&o&&n.pointsInShape.push(o);const l=Array.isArray(e)?e:[e];n.count+=1,o&&(n.sumLPS[0]+=o[0],n.sumLPS[1]+=o[1],n.sumLPS[2]+=o[2]),n.max.forEach((c,g)=>{const v=l[g];n.allValues[g].push(v);const _=n.count,T=v-n.runMean[g],P=T/_,I=T*P*(_-1);n.sum[g]+=v,n.runMean[g]+=P,n.m4[g]+=I*P*P*(_*_-3*_+3)+6*P*P*n.m2[g]-4*P*n.m3[g],n.m3[g]+=I*P*(_-2)-3*P*n.m2[g],n.m2[g]+=I,vn.max[g]&&(n.max[g]=v,g===0&&(n.maxIJK=i?[...i]:null,n.maxLPS=o?[...o]:null))})}function p5e(n){if(n.length===0)return 0;const e=[...n].sort((i,l)=>i-l),o=Math.floor(e.length/2);return e.length%2===0?(e[o-1]+e[o])/2:e[o]}function iK(n,e){const o=n.sum.map(I=>I/n.count),i=n.m2.map(I=>Math.sqrt(I/n.count)),l=n.sumLPS.map(I=>I/n.count),c=n.m3.map((I,R)=>{const L=n.m2[R]/n.count;return L===0?0:I/(n.count*Math.pow(L,1.5))}),g=n.m4.map((I,R)=>{const L=n.m2[R]/n.count;return L===0?0:I/(n.count*L*L)-3}),v=n.allValues.map(I=>p5e(I)),_={max:{name:"max",label:"Max Pixel",value:n.max.length===1?n.max[0]:n.max,unit:e,pointIJK:n.maxIJK?[...n.maxIJK]:null,pointLPS:n.maxLPS?[...n.maxLPS]:null},min:{name:"min",label:"Min Pixel",value:n.min.length===1?n.min[0]:n.min,unit:e,pointIJK:n.minIJK?[...n.minIJK]:null,pointLPS:n.minLPS?[...n.minLPS]:null},mean:{name:"mean",label:"Mean Pixel",value:o.length===1?o[0]:o,unit:e},stdDev:{name:"stdDev",label:"Standard Deviation",value:i.length===1?i[0]:i,unit:e},count:{name:"count",label:"Voxel Count",value:n.count,unit:null},median:{name:"median",label:"Median",value:v.length===1?v[0]:v,unit:e},skewness:{name:"skewness",label:"Skewness",value:c.length===1?c[0]:c,unit:null},kurtosis:{name:"kurtosis",label:"Kurtosis",value:g.length===1?g[0]:g,unit:null},maxLPS:{name:"maxLPS",label:"Max LPS",value:n.maxLPS?Array.from(n.maxLPS):null,unit:null},minLPS:{name:"minLPS",label:"Min LPS",value:n.minLPS?Array.from(n.minLPS):null,unit:null},pointsInShape:n.pointsInShape,center:{name:"center",label:"Center",value:l?[...l]:null,unit:null},array:[]};_.array.push(_.min,_.max,_.mean,_.stdDev,_.median,_.skewness,_.kurtosis,_.count,_.maxLPS,_.minLPS),_.center.value&&_.array.push(_.center);const T=n.pointsInShape!==null,P=mv(T);return n.max=P.max,n.min=P.min,n.sum=P.sum,n.count=P.count,n.maxIJK=P.maxIJK,n.maxLPS=P.maxLPS,n.minIJK=P.minIJK,n.minLPS=P.minLPS,n.runMean=P.runMean,n.m2=P.m2,n.m3=P.m3,n.m4=P.m4,n.allValues=P.allValues,n.pointsInShape=P.pointsInShape,n.sumLPS=P.sumLPS,_}const mg=class mg extends tK{static statsInit(e){e.storePointData||(this.state.pointsInShape=null),this.state=mv(e.storePointData)}};mg.state=mv(!0),mg.statsCallback=({value:e,pointLPS:o=null,pointIJK:i=null})=>{rK(mg.state,e,o,i)},mg.getStatistics=e=>iK(mg.state,e==null?void 0:e.unit);let mf=mg;class oK extends nK{constructor(e){super(e),this.state=mv(e.storePointData)}statsInit(e){this.state=mv(e.storePointData)}statsCallback(e){rK(this.state,e.value,e.pointLPS,e.pointIJK)}getStatistics(e){return iK(this.state,e==null?void 0:e.unit)}}const m5e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:mf,Calculator:tK,InstanceBasicStatsCalculator:oK,InstanceCalculator:nK},Symbol.toStringTag,{value:"Module"}));function xh(n,e){if(n.length!==e.length)throw Error("Both points should have the same dimensionality");const[o,i,l=0]=n,[c,g,v=0]=e,_=c-o,T=g-i,P=v-l;return _*_+T*T+P*P}function f1(n,e){return Math.sqrt(xh(n,e))}function KE(n,e){const[o,i]=n,[l,c]=e,g=2*l-o,v=2*c-i;return[g,v]}const v5e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:f1,distanceToPointSquared:xh,mirror:KE},Symbol.toStringTag,{value:"Module"}));function Gd(n){const[e,o]=n;return f1(e,o)}function o8(n){const[e,o]=n,i=f1(e,o),l=[e[0]-i,e[1]-i],c=[e[0]+i,e[1]+i];return[l,c]}const k5e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasCircleCorners:o8,getCanvasCircleRadius:Gd},Symbol.toStringTag,{value:"Module"}));function zC(n,e,o={}){return o.precalculated||BM(n,o),o.precalculated(e)}const BM=(n,e={})=>{const{xRadius:o,yRadius:i,zRadius:l}=n;(e.invXRadiusSq===void 0||e.invYRadiusSq===void 0||e.invZRadiusSq===void 0)&&(e.invXRadiusSq=o!==0?1/o**2:0,e.invYRadiusSq=i!==0?1/i**2:0,e.invZRadiusSq=l!==0?1/l**2:0);const{invXRadiusSq:c,invYRadiusSq:g,invZRadiusSq:v}=e,{center:_}=n,[T,P,I]=_;return e.precalculated=R=>{const L=R[0]-T;let V=L*L*c;if(V>1)return!1;const U=R[1]-P;if(V+=U*U*g,V>1)return!1;const j=R[2]-I;return V+=j*j*v,V<=1},e};function v9(n){const[e,o,i,l]=n,c=[i[0],o[1]],g=[l[0],e[1]];return[c,g]}const y5e=Object.freeze(Object.defineProperty({__proto__:null,getCanvasEllipseCorners:v9,pointInEllipse:zC,precalculatePointInEllipse:BM},Symbol.toStringTag,{value:"Module"}));function k9(n,e,o){let i;const l=xh(n,e);if(n[0]===e[0]&&n[1]===e[1]&&(i=n),!i){const c=((o[0]-n[0])*(e[0]-n[0])+(o[1]-n[1])*(e[1]-n[1]))/l;c<0?i=n:c>1?i=e:i=[n[0]+c*(e[0]-n[0]),n[1]+c*(e[1]-n[1])]}return{point:[...i],distanceSquared:xh(o,i)}}function rk(n,e,o){return k9(n,e,o).distanceSquared}function za(n,e,o){if(n.length!==2||e.length!==2||o.length!==2)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(rk(n,e,o))}function Zy(n){return typeof n=="number"?n?n<0?-1:1:n===n?0:NaN:NaN}function y9(n,e,o,i,l=!1){const[c,g]=n,[v,_]=e,[T,P]=o,[I,R]=i;if(l){const Te=(c-v)*(P-R)-(g-_)*(T-I);if(Math.abs(Te)<1e-10)return;const Ve=((c-T)*(P-R)-(g-P)*(T-I))/Te,Pe=c+Ve*(v-c),je=g+Ve*(_-g);return[Pe,je]}const L=_-g,V=c-v,U=v*g-c*_,j=L*T+V*P+U,z=L*I+V*R+U;if(j!==0&&z!==0&&Zy(j)===Zy(z))return;const $=R-P,K=T-I,X=I*P-T*R,ee=$*c+K*g+X,ne=$*v+K*_+X;if(ee!==0&&ne!==0&&Zy(ee)===Zy(ne))return;const le=L*K-$*V;let ce;ce=V*X-K*U;const ge=ce/le;ce=$*U-L*X;const pe=ce/le;return[ge,pe]}const _3=.01;function ew(n,e,o){const i=n[0]<=e[0]?n[0]:e[0],l=n[0]>=e[0]?n[0]:e[0],c=n[1]<=e[1]?n[1]:e[1],g=n[1]>=e[1]?n[1]:e[1];if(!(o[0]>=i-_3&&o[0]<=l+_3&&o[1]>=c-_3&&o[1]<=g+_3))return!1;const _=(e[1]-n[1])*(o[0]-e[0])-(e[0]-n[0])*(o[1]-e[1]);return(_>=0?_:-_)<=_3}const w5e=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:za,distanceToPointSquared:rk,distanceToPointSquaredInfo:k9,intersectLine:y9,isPointOnLineSegment:ew},Symbol.toStringTag,{value:"Module"}));function sK(n){if(n.length<3)return!1;const e=n.length,o=n[0],i=n[e-1],l=xh(o,i);return Hd(0,l)}function Zd(n,e,o={closed:void 0}){if(n.length<3)return!1;const i=n.length;let l=0;const{closed:c,holes:g}=o;if(g!=null&&g.length){for(const T of g)if(Zd(T,e))return!1}const v=!(c===void 0?sK(n):c),_=n.length-(v?1:2);for(let T=0;T<=_;T++){const P=n[T],I=T===i-1?0:T+1,R=n[I],L=P[0]>=R[0]?P[0]:R[0],V=P[1]>=R[1]?P[1]:R[1],U=P[1]<=R[1]?P[1]:R[1];if(e[0]<=L&&e[1]>=U&&e[1]L?v:L,_=_>V?_:V,l&&(T=TU?P:U)}return l?{minX:c,maxX:v,minY:g,maxY:_,minZ:T,maxZ:P}:{minX:c,maxX:v,minY:g,maxY:_}}function ok(n){const e=n.length;let o=0,i=e-1;for(let l=0;l=0?1:-1}function C5e(n){const e=nr(),o=n[0];for(let i=0,l=n.length;ie[0]?n[0]:e[0],_=n[1]>e[1]?n[1]:e[1],T=o[0]i[0]?o[0]:i[0],R=o[1]>i[1]?o[1]:i[1];if(c>I||vR||_0?1:2}function e7(n,e,o){return e[0]<=Math.max(n[0],o[0])&&e[0]>=Math.min(n[0],o[0])&&e[1]<=Math.max(n[1],o[1])&&e[1]>=Math.min(n[1],o[1])}function $M(n,e,o,i=!0){const l=[],c=n.length,g=c-(i?1:2);for(let v=0;v<=g;v++){const _=n[v],T=v===c-1?0:v+1,P=n[T];WM(e,o,_,P)&&l.push([v,T])}return l}const x5e=.01;function aK(n,e,o,i){const l=[e[0]-n[0],e[1]-n[1]],c=[i[0]-o[0],i[1]-o[1]],g=c[1]*l[0]-c[0]*l[1];if((g>=0?g:-g)e[0]?n[0]:e[0],n[1]e[1]?n[1]:e[1]],U=[o[0]i[0]?o[0]:i[0],o[1]i[1]?o[1]:i[1]];if(!(V[0]<=U[1]&&V[1]>=U[0]&&V[2]<=U[3]&&V[3]>=U[2])||!(ew(n,e,o)||ew(n,e,i)||ew(o,i,n)))return;const $=V[0]>U[0]?V[0]:U[0],K=V[1]U[2]?V[2]:U[2],ee=V[3]{const U=V[0],j=e[V[0]],z=e[V[1]],$=aK(T,R,j,z),K=xh(T,$);return{sourceLineSegmentId:U,coordinate:$,targetStartPointDistSquared:K}});L.sort((V,U)=>V.targetStartPointDistSquared-U.targetStartPointDistSquared),L.forEach(V=>{const{sourceLineSegmentId:U,coordinate:j}=V,z={type:Og.Intersection,coordinates:j,position:s8.Edge,direction:g,visited:!1,next:null},$={...z,direction:R6.Unknown,cloned:!0};g===R6.Entering?z.next=$:$.next=z;let K=l.get(U);K||(K=[],l.set(U,K)),o.push(z),K.push($),g*=-1})}for(let v=0,_=e.length;v<_;v++){const T=v,P=e[v],I={type:Og.Vertex,coordinates:P,visited:!1,next:null};i.push(I);const R=l.get(T);R!=null&&R.length&&R.map(L=>({intersectionPoint:L,lineSegStartDistSquared:xh(P,L.coordinates)})).sort((L,V)=>L.lineSegStartDistSquared-V.lineSegStartDistSquared).map(({intersectionPoint:L})=>L).forEach(L=>i.push(L))}return bN(o),bN(i),{targetPolylinePoints:o,sourcePolylinePoints:i}}function uK(n){for(let e=0,o=n.length;e=P&&console.warn("Maximum iterations reached in mergePolylines, possible infinite loop detected"),v}function KC(n,e){const o=vv(n),i=vv(e),l=mi(i,o);Hd(-1,l)||(e=e.slice().reverse());const{targetPolylinePoints:c}=lK(n,e);let g=null;const v=[];let _=0;const T=n.length*2;for(;(g=uK(c))&&_=L&&console.warn("Maximum inner iterations reached in subtractPolylines, possible infinite loop detected"),v.push(P)}return _>=T&&console.warn("Maximum outer iterations reached in subtractPolylines, possible infinite loop detected"),v}function cK(n,e,o,i=!0){let l,c;i?(c=n.length-1,l=0):(c=0,l=1);for(let g=l;gR&&(R=j,L=V)}R{const I=[n[P[0]],n[P[1]]],R=[(I[0][0]+I[1][0])/2,(I[0][1]+I[1][1])/2];v.push(ds(R,e))});const _=Math.min(...v),T=v.indexOf(_);return{segment:g[T],distance:_}}const f6=.001,E5e=(n,e)=>{let o,i,l;if(n instanceof ts){const g=n.getImageData();if(!g)return;i=g.direction.slice(0,3),l=g.direction.slice(3,6),o=g.spacing}else{const g=n.getImageData(),{direction:v,spacing:_}=g,{viewPlaneNormal:T,viewUp:P}=n.getCamera(),I=v.slice(0,3),R=v.slice(3,6),L=v.slice(6,9),V=nr();ro(V,P,T);const U=Math.abs(mi(V,I)),j=Math.abs(mi(V,R)),z=Math.abs(mi(V,L));let $;if(Math.abs(1-U)fO(n,e){const{xDir:l,yDir:c,spacing:g}=i,v=_n(n),{viewport:_}=v;if(!e.length)return e.push(o),console.log(">>>>> !canvasPoints. :: RETURN"),1;const T=_.canvasToWorld(e[e.length-1]),P=_.canvasToWorld(o),I=nr();Wo(I,P,T);const R=Math.abs(mi(I,l)),L=Math.abs(mi(I,c)),V=Math.max(Math.floor(R/g[0]),Math.floor(L/g[0]));if(V>1){const U=e[e.length-1],j=fO(U,o),z=a0();ra(z,o,U),Iu(z,z[0]/j,z[1]/j);const $=j/V;for(let K=1;K<=V;K++)e.push([U[0]+$*z[0]*K,U[1]+$*z[1]*K])}else e.push(o);return V},O5e=(n,e,o,i)=>{const l=[n[0]-e[0],n[1]-e[1]],c=[o[0]-e[0],o[1]-e[1]],g=l[0]*c[0]+l[1]*c[1];if(g<0)return!1;const v=Math.sqrt(c[0]*c[0]+c[1]*c[1]);if(v===0)return!1;const _=g/v,T=[c[0]/v,c[1]/v],P=[T[0]*_,T[1]*_],I=[e[0]+P[0],e[1]+P[1]];return!(ds(n,I)>i||ds(e,I)>ds(e,o))},M5e=1e-6;function hK(n){let e;const o=pM(n,50);for(let g=0;g<3;g++)if(o.every((v,_,T)=>Math.abs(v[g]-T[0][g])[c[0],c[1]]).sort((c,g)=>c[0]===g[0]?c[1]-g[1]:c[0]-g[0]);function o(c,g,v){return(g[0]-c[0])*(v[1]-c[1])-(g[1]-c[1])*(v[0]-c[0])}const i=[];for(const c of e){for(;i.length>=2&&o(i[i.length-2],i[i.length-1],c)<=0;)i.pop();i.push(c)}const l=[];for(let c=e.length-1;c>=0;c--){const g=e[c];for(;l.length>=2&&o(l[l.length-2],l[l.length-1],g)<=0;)l.pop();l.push(g)}return i.pop(),l.pop(),i.concat(l)}const c4=Object.freeze(Object.defineProperty({__proto__:null,addCanvasPointsToArray:I5e,containsPoint:Zd,containsPoints:ik,convexHull:dK,decimate:zM,getAABB:Qd,getArea:ok,getClosestLineSegmentIntersection:T5e,getFirstLineSegmentIntersectionIndexes:cK,getLineSegmentIntersectionsCoordinates:fK,getLineSegmentIntersectionsIndexes:$M,getNormal2:vv,getNormal3:_5e,getSignedArea:GM,getSubPixelSpacingAndXYDirections:E5e,getWindingDirection:tw,intersectPolyline:jM,isClosed:sK,isPointInsidePolyline3D:HM,mergePolylines:HC,pointCanProjectOnLine:O5e,pointsAreWithinCloseContourProximity:D5e,projectTo2D:hK,subtractPolylines:KC},Symbol.toStringTag,{value:"Module"}));function P5e(n,e,o,i){const l=[n,e],c=[n+o,e],g=[n+o,e],v=[n+o,e+i],_=[n+o,e+i],T=[n,e+i],P=[n,e+i];return{top:[l,c],right:[g,v],bottom:[_,T],left:[P,[n,e]]}}function KM(n,e){if(n.length!==4||e.length!==2)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");const[o,i,l,c]=n;let g=655535;const v=P5e(o,i,l,c);return Object.keys(v).forEach(_=>{const[T,P]=v[_],I=za(T,P,e);I0){if(c>l)return 0;c>i&&(o[0]=c)}else{if(c=o[0]&&c<=o[2]&&g>=o[1]&&g<=o[3])return FN;const I=[0,1];if(t7(o[0]-c,T,I)&&t7(c-o[2],-T,I)&&t7(o[1]-g,P,I)&&t7(g-o[3],-P,I)){const[R,L]=I;return L<1&&(l[0]=c+L*T,l[1]=g+L*P),R>0&&(i[0]+=R*T,i[1]+=R*P),FN}return L5e}const N5e=Object.freeze(Object.defineProperty({__proto__:null,findClosestPoint:qE,liangBarksyClip:H3},Symbol.toStringTag,{value:"Module"}));function b5e(n,e){const[o,i]=n,[l,c]=e,g=z0(nr(),i,o),v=z0(nr(),l,c),_=mi(g,v),T=K1(g),P=K1(v),I=_/(T*P);return Math.acos(I)*180/Math.PI}function F5e(n,e){const[o,i]=n,[l,c]=e,g=Ru(a0(),i,o),v=Ru(a0(),l,c),_=cO(g,v),T=Ww(g),P=Ww(v),I=_/(T*P);return Math.acos(I)*(180/Math.PI)}function a8(n,e){return n[0].length===3?b5e(n,e):F5e(n,e)}const V5e=Object.freeze(Object.defineProperty({__proto__:null,angleBetweenLines:a8},Symbol.toStringTag,{value:"Module"})),U5e=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:m5e,aabb:d5e,angle:V5e,circle:k5e,ellipse:y5e,lineSegment:w5e,point:v5e,polyline:c4,rectangle:R5e,vec2:N5e},Symbol.toStringTag,{value:"Module"}));function Cc(n,e,o,i){var V,U,j;const{canvasToWorld:l,worldToCanvas:c}=o,{data:g}=n,{targetWindingDirection:v}=e;let{points:_}=e,T=tw(_);(V=i==null?void 0:i.decimate)!=null&&V.enabled&&(_=zM(e.points,(U=i==null?void 0:i.decimate)==null?void 0:U.epsilon));let{closed:P}=e;const I=_.length,R=new Array(I);tw(_);const L=Yz(n);if(P===void 0){let z=!1;if(_.length>3){const $=xh(_[0],_[I-1]);z=Qi(0,$)}P=z}if((i==null?void 0:i.updateWindingDirection)!==!1){let z=L?L.data.contour.windingDirection*-1:v;z===void 0&&(z=T),z!==T&&_.reverse();const $=(((j=g.handles)==null?void 0:j.points)??[]).map(c);$.length>2&&tw($)!==z&&g.handles.points.reverse(),T=z}for(let z=0;z{ar.svgNodeCache[l][g].touched=!1}),{svgLayerElement:c,svgNodeCacheForCanvas:ar.svgNodeCache,getSvgNode:$5e.bind(this,l),appendNode:j5e.bind(this,c,l),setNodeTouched:z5e.bind(this,l),clearUntouched:H5e.bind(this,c,l)}}function W5e(n){const e=`.${B5e}`,o=n.querySelector(e);return o==null?void 0:o.querySelector(":scope > .svg-layer")}function $5e(n,e){if(ar.svgNodeCache[n]&&ar.svgNodeCache[n][e])return ar.svgNodeCache[n][e].domRef}function j5e(n,e,o,i){if(!ar.svgNodeCache[e])return null;ar.svgNodeCache[e][i]={touched:!0,domRef:o},n.appendChild(o)}function z5e(n,e){ar.svgNodeCache[n]&&ar.svgNodeCache[n][e]&&(ar.svgNodeCache[n][e].touched=!0)}function H5e(n,e){ar.svgNodeCache[e]&&Object.keys(ar.svgNodeCache[e]).forEach(o=>{const i=ar.svgNodeCache[e][o];!i.touched&&i.domRef&&(n.removeChild(i.domRef),delete ar.svgNodeCache[e][o])})}function gK(n,e){const o=G5e(n);e(o),o.clearUntouched()}function Cf(n,e,o){return`${n}::${e}::${o}`}function au(n,e){Object.keys(n).forEach(o=>{const i=e.getAttribute(o),l=n[o];l===void 0||l===""?e.removeAttribute(o):i!==l&&e.setAttribute(o,l)})}function _f(n,e){Object.keys(n).forEach(o=>{const i=n[o];i!==void 0&&i!==""&&e.setAttribute(o,i)})}function J1(n,e,o,i,l,c={},g=""){const{color:v,fill:_,width:T,lineWidth:P,lineDash:I,fillOpacity:R,strokeOpacity:L}=Object.assign({color:"rgb(0, 255, 0)",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},c),V=P||T,U="http://www.w3.org/2000/svg",j=Cf(e,"circle",o),z=n.getSvgNode(j),$={cx:`${i[0]}`,cy:`${i[1]}`,r:`${l}`,stroke:v,fill:_,"stroke-width":V,"stroke-dasharray":I,"fill-opacity":R,"stroke-opacity":L};if(z)au($,z),n.setNodeTouched(j);else{const K=document.createElementNS(U,"circle");g!==""&&K.setAttribute("data-id",g),_f($,K),n.appendNode(K,j)}}function qM(n,e,o,i,l={},c=""){const{color:g,width:v,lineWidth:_,lineDash:T}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},l),P=_||v,I="http://www.w3.org/2000/svg",R=Cf(e,"ellipse",o),L=n.getSvgNode(R),[V,U,j,z]=i,$=Math.hypot(j[0]-z[0],j[1]-z[1]),K=Math.hypot(U[0]-V[0],U[1]-V[1]),X=Math.atan2(j[1]-z[1],j[0]-z[0])*180/Math.PI,ee=[(j[0]+z[0])/2,(U[1]+V[1])/2],ne=$/2,le=K/2,ce={cx:`${ee[0]}`,cy:`${ee[1]}`,rx:`${ne}`,ry:`${le}`,stroke:g,fill:"transparent",transform:`rotate(${X} ${ee[0]} ${ee[1]})`,"stroke-width":P,"stroke-dasharray":T};if(L)au(ce,L),n.setNodeTouched(R);else{const ge=document.createElementNS(I,"ellipse");c!==""&&ge.setAttribute("data-id",c),_f(ce,ge),n.appendNode(ge,R)}}function K5e(n,e,o,i,l,c={},g=""){const v=[(i[0]+l[0])/2,i[1]],_=[(i[0]+l[0])/2,l[1]],T=[i[0],(i[1]+l[1])/2],P=[l[0],(i[1]+l[1])/2];qM(n,e,o,[_,v,T,P],c={},g="")}function w9(n,e,o,i,l={},c){const{color:g,handleRadius:v,width:_,lineWidth:T,fill:P,type:I,opacity:R}=Object.assign({color:"rgb(0, 255, 0)",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},l),L=T||_,V="http://www.w3.org/2000/svg",U=Cf(e,"handle",`hg-${o}-index-${c}`);let j;if(I==="circle")j={cx:`${i[0]}`,cy:`${i[1]}`,r:v,stroke:g,fill:P,"stroke-width":L,opacity:R};else if(I==="rect"){const K=parseFloat(v)*1.5,X=i[0]-K*.5,ee=i[1]-K*.5;j={x:`${X}`,y:`${ee}`,width:`${K}`,height:`${K}`,stroke:g,fill:P,"stroke-width":L,rx:`${K*.1}`,opacity:R}}else throw new Error(`Unsupported handle type: ${I}`);const z=n.getSvgNode(U);if(z)au(j,z),n.setNodeTouched(U);else{const $=document.createElementNS(V,I);_f(j,$),n.appendNode($,U)}}function $o(n,e,o,i,l={}){i.forEach((c,g)=>{w9(n,e,o,c,l,g)})}function V0(n,e,o,i,l,c={},g=""){if(isNaN(i[0])||isNaN(i[1])||isNaN(l[0])||isNaN(l[1]))return;const{color:v="rgb(0, 255, 0)",width:_=10,lineWidth:T,lineDash:P,markerStartId:I=null,markerEndId:R=null,shadow:L=!1,strokeOpacity:V=1}=c,U=T||_,j="http://www.w3.org/2000/svg",z=Cf(e,"line",o),$=n.getSvgNode(z),K=n.svgLayerElement.id,X=L?`filter:url(#shadow-${K});`:"",ee={x1:`${i[0]}`,y1:`${i[1]}`,x2:`${l[0]}`,y2:`${l[1]}`,stroke:v,style:X,"stroke-width":U,"stroke-dasharray":P,"marker-start":I?`url(#${I})`:"","marker-end":R?`url(#${R})`:"","stroke-opacity":V};if($)au(ee,$),n.setNodeTouched(z);else{const ne=document.createElementNS(j,"line");g!==""&&ne.setAttribute("data-id",g),_f(ee,ne),n.appendNode(ne,z)}}function pK(n,e,o,i,l,c={}){if(isNaN(i[0])||isNaN(i[1])||isNaN(l[0])||isNaN(l[1]))return;const{color:g,width:v,lineWidth:_,lineDash:T}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},c),P=l[0]+(i[0]-l[0])/2,I=[P,i[1]],R=[P,l[1]],L={start:i,end:I},V={start:I,end:R},U={start:R,end:l};V0(n,e,"1",L.start,L.end,{color:g,width:v,lineWidth:_,lineDash:T}),V0(n,e,"2",V.start,V.end,{color:g,width:v,lineWidth:_,lineDash:T}),V0(n,e,"3",U.start,U.end,{color:g,width:v,lineWidth:_,lineDash:T})}function mc(n,e,o,i,l){if(i.length<2)return;const{color:c="rgb(0, 255, 0)",width:g=10,fillColor:v="none",fillOpacity:_=0,lineWidth:T,lineDash:P,closePath:I=!1,markerStartId:R=null,markerEndId:L=null}=l,V=T||g,U="http://www.w3.org/2000/svg",j=Cf(e,"polyline",o),z=n.getSvgNode(j);let $="";for(const X of i)$+=`${X[0].toFixed(1)}, ${X[1].toFixed(1)} `;if(I){const X=i[0];$+=`${X[0]}, ${X[1]}`}const K={points:$,stroke:c,fill:v,"fill-opacity":_,"stroke-width":V,"stroke-dasharray":P,"marker-start":R?`url(#${R})`:"","marker-end":L?`url(#${L})`:""};if(z)au(K,z),n.setNodeTouched(j);else{const X=document.createElementNS(U,"polyline");_f(K,X),n.appendNode(X,j)}}function dh(n,e,o,i,l){const g=i.length&&i[0].length&&Array.isArray(i[0][0])?i:[i],{color:v="rgb(0, 255, 0)",width:_=10,fillColor:T="none",fillOpacity:P=0,lineWidth:I,lineDash:R,closePath:L=!1}=l,V=I||_,U="http://www.w3.org/2000/svg",j=Cf(e,"path",o),z=n.getSvgNode(j);let $="";for(let X=0,ee=g.length;X$.length){for(let ee=0;ee0?qE(i,l):l,_=J5e(c),T=qE(_,v),P=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},g);V0(n,e,`link-${o}`,v,T,P)}function J5e(n){const{x:e,y:o,height:i,width:l}=n,c=l/2,g=i/2,v=[e+c,o],_=[e,o+g],T=[e+c,o+i],P=[e+l,o+g];return[v,_,T,P]}function A2(n,e,o,i,l,c,g,v={}){const _=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},v),T=e4(n,e,o,i,l,_);return Y5e(n,e,o,c,l,T,_),T}function XM(n,e,o,i,l={},c=""){const{color:g,width:v,lineWidth:_,lineDash:T}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},l),P=_||v,I="http://www.w3.org/2000/svg",R=Cf(e,"rect",o),L=n.getSvgNode(R),[V,U,j,z]=i,$=Math.hypot(V[0]-U[0],V[1]-U[1]),K=Math.hypot(V[0]-j[0],V[1]-j[1]),X=[(z[0]+V[0])/2,(z[1]+V[1])/2],ee=[(j[0]+V[0])/2,(j[1]+V[1])/2],ne=Math.atan2(X[1]-ee[1],X[0]-ee[0])*180/Math.PI,le={x:`${X[0]-$/2}`,y:`${X[1]-K/2}`,width:`${$}`,height:`${K}`,stroke:g,fill:"transparent",transform:`rotate(${ne} ${X[0]} ${X[1]})`,"stroke-width":P,"stroke-dasharray":T};if(L)au(le,L),n.setNodeTouched(R);else{const ce=document.createElementNS(I,"rect");c!==""&&ce.setAttribute("data-id",c),_f(le,ce),n.appendNode(ce,R)}}function sk(n,e,o,i,l,c={},g=""){const v=[i[0],i[1]],_=[l[0],i[1]],T=[i[0],l[1]],P=[l[0],l[1]];XM(n,e,o,[v,_,T,P],c,g)}const BN="http://www.w3.org/2000/svg";function C9(n,e,o,i,l,c={}){if(isNaN(i[0])||isNaN(i[1])||isNaN(l[0])||isNaN(l[1]))return;const{viaMarker:g=!1,color:v="rgb(0, 255, 0)",markerSize:_=10}=c;if(!g){Z5e(n,e,o,i,l,c);return}const T=n.svgLayerElement.id,I=`${`arrow-${e}`}-${T}`,R=n.svgLayerElement.querySelector("defs");let L=R.querySelector(`#${I}`);if(L){L.setAttribute("markerWidth",`${_}`),L.setAttribute("markerHeight",`${_}`);const V=L.querySelector("path");V&&V.setAttribute("fill",v)}else{L=document.createElementNS(BN,"marker"),L.setAttribute("id",I),L.setAttribute("viewBox","0 0 10 10"),L.setAttribute("refX","8"),L.setAttribute("refY","5"),L.setAttribute("markerWidth",`${_}`),L.setAttribute("markerHeight",`${_}`),L.setAttribute("orient","auto");const V=document.createElementNS(BN,"path");V.setAttribute("d","M 0 0 L 10 5 L 0 10 z"),V.setAttribute("fill",v),L.appendChild(V),R.appendChild(L)}c.markerEndId=I,V0(n,e,o,i,l,c)}function Z5e(n,e,o,i,l,c={}){const{color:g="rgb(0, 255, 0)",width:v=2,lineWidth:_,lineDash:T}=c,P=10,I=Math.atan2(l[1]-i[1],l[0]-i[0]),R={start:[l[0]-P*Math.cos(I-Math.PI/7),l[1]-P*Math.sin(I-Math.PI/7)],end:l},L={start:[l[0]-P*Math.cos(I+Math.PI/7),l[1]-P*Math.sin(I+Math.PI/7)],end:l};V0(n,e,o,i,l,{color:g,width:v,lineWidth:_,lineDash:T}),V0(n,e,"2",R.start,R.end,{color:g,width:v,lineWidth:_,lineDash:T}),V0(n,e,"3",L.start,L.end,{color:g,width:v,lineWidth:_,lineDash:T})}function mK(n,e,o,i,l,c={}){const{color:g,width:v,lineWidth:_,lineDash:T}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},c),P=_||v,I="http://www.w3.org/2000/svg",R=Cf(e,"rect",o),L=n.getSvgNode(R),V=[Math.min(i[0],l[0]),Math.min(i[1],l[1])],U=Math.abs(i[0]-l[0]),j=Math.abs(i[1]-l[1]),z={x:`${V[0]}`,y:`${V[1]}`,width:`${U}`,height:`${j}`,stroke:g,fill:"black","stroke-width":P,"stroke-dasharray":T};if(L)au(z,L),n.setNodeTouched(R);else{const $=document.createElementNS(I,"rect");_f(z,$),n.appendNode($,R)}}const Q5e=Object.freeze(Object.defineProperty({__proto__:null,draw:gK,drawArrow:C9,drawCircle:J1,drawEllipse:K5e,drawEllipseByCoordinates:qM,drawFan:YE,drawHandle:w9,drawHandles:$o,drawHeight:pK,drawLine:V0,drawLinkedTextBox:A2,drawPath:dh,drawPolyline:mc,drawRect:sk,drawRectByCoordinates:XM,drawRedactionRect:mK,drawTextBox:e4,setAttributesIfNecessary:au,setNewAttributesIfValid:_f},Symbol.toStringTag,{value:"Module"}));function vK(n,e){const o=_n(n),{renderingEngineId:i,viewportId:l}=o,c=Ss(l,i);if(!c)return[];const g=[],v=Object.keys(c.toolOptions);for(let _=0;_{this._throwIfDestroyed();const e=Array.from(this._viewportElements.values());for(let o=0;o{this._needsRender.add(o)}),this._renderFlaggedViewports()}_setViewportsToBeRenderedNextFrame(e){const o=[...this._viewportElements.values()];e.forEach(i=>{o.indexOf(i)!==-1&&this._needsRender.add(i)}),this._render()}_render(){this._needsRender.size>0&&this._animationFrameSet===!1&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_triggerRender(e){const o=_n(e);if(!o)return;if(!ha(o.renderingEngineId)){console.warn("rendering Engine has been destroyed");return}const l=vK(e,[e3e,t3e,n3e]),{renderingEngineId:c,viewportId:g}=o,v={element:e,renderingEngineId:c,viewportId:g};gK(e,_=>{let T=!1;const P=I=>{if(I.renderAnnotation){const R=I.renderAnnotation(o,_);T=T||R}};l.forEach(P),T&&Or(e,Xe.ANNOTATION_RENDERED,{...v})})}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}const YM=new r3e;function Q8(n){YM.renderViewport(n)}function Un(n){n.length&&n.forEach(e=>{const o=yo(e);if(!o){console.warn(`Viewport not available for ${e}`);return}const{viewport:i}=o;if(!i){console.warn(`Viewport not available for ${e}`);return}const l=i.element;Q8(l)})}function kK(n,e){const o=n.length,i=[];for(let l=0;l{const l=i.getCamera();return Math.abs(mi(l.viewPlaneNormal,e.viewPlaneNormal))>o})}function fi(n,e,o=!0){const i=_n(n),{renderingEngine:l,FrameOfReferenceUID:c}=i;let g=l.getViewports();g=kK(g,c),g=qC(g,e);const v=l.getViewport(i.viewportId);return o&&(g=yK(g,v.getCamera())),g.map(T=>T.id)}const l3e=Object.freeze(Object.defineProperty({__proto__:null,filterViewportsWithFrameOfReferenceUID:kK,filterViewportsWithParallelNormals:yK,filterViewportsWithToolEnabled:qC,getViewportIdsWithToolToRender:fi},Symbol.toStringTag,{value:"Module"})),_9="PlanarFreehandContourSegmentationTool";function t4(n,e){const o=n.length,i=new Array(o);for(let l=0;l{const i=o,l=t4(i.data.contour.polyline,n);return{annotation:i,polyline:l}})}function YC(n,e,o){Zv(e,o),Ch(o);const{contour:i}=o.data,l=t4(i.polyline,n);Cc(o,{points:l,closed:i.closed,targetWindingDirection:e.data.contour.windingDirection===X1.Clockwise?X1.CounterClockwise:X1.Clockwise},n);const{element:c}=n;QM(n,[e,o])}function ZM(n,e,o,i,l){var $;if(!BC(_9)){console.warn(`${_9} is not registered in cornerstone. Cannot combine polylines.`);return}const c=l[0],g=Zd(o,c),v=wK(n,e),_=new Set(v),T=new Map,P=(K,X)=>{let ee=T.get(K);ee||(ee=[],T.set(K,ee)),ee.push(X),_.delete(X)},I=[];if(g){const K=HC(o,l);I.push(K),Array.from(_.keys()).forEach(X=>P(K,X))}else KC(o,l).forEach(X=>{I.push(X),Array.from(_.keys()).forEach(ee=>{ik(X,ee.polyline)&&P(X,ee)})});Array.from(T.values()).forEach(K=>K.forEach(X=>UC(X.annotation)));const{element:R}=n,{metadata:L,data:V}=e,{handles:U,segmentation:j}=V,{textBox:z}=U;A0(i.annotationUID),A0(e.annotationUID),Ch(i),Ch(e);for(let K=0;KZv(ee,ne.annotation))}QM(n,[e,i])}function CK(n,e,o){const i=n.canvasToWorld(o[0]),l=n.canvasToWorld(o[o.length-1]),c={metadata:{...e.metadata,toolName:_9,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[i,l],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:H0(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Cc(c,{points:o,closed:!0,targetWindingDirection:X1.Clockwise},n),c}function QM(n,e){const{element:o}=n,i=new Set([_9]);e.forEach(l=>{i.add(l.metadata.toolName)});for(const l of i.values())if(BC(l)){const c=fi(o,l);Un(c)}}function JC(n,e){const o=[],i=new Set,l=new Set;for(let c=0;c[...o]);let e=n[0].map(o=>[...o]);for(let o=1;ox9(c.data.contour.polyline,o)),l=e.map(c=>x9(c.data.contour.polyline,o));return JC(i,l)}function x9(n,e){const o=n.length,i=new Array(o);for(let l=0;l[...i]);let o=n.map(i=>[...i]);for(let i=0;ix9(c.data.contour.polyline,o)),l=e.map(c=>x9(c.data.contour.polyline,o));return ZC(i,l)}const d3e="PlanarFreehandContourSegmentationTool";function _K(n,e,o,i){const l=new Map;return o.forEach(c=>{if(c.length<3)return;const g={annotationUID:H0(),data:{contour:{closed:!0,polyline:c},segmentation:{segmentationId:e,segmentIndex:i},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d3e,...n.getViewReference()}};_0(g,n.element);const v=(l==null?void 0:l.get(i))||new Set;v.add(g.annotationUID),l.set(i,v)}),l}function GN(n,e){const o=[],{annotationUIDsMap:i}=n,l=i.get(e);for(const c of l){const g=Xs(c),{polyline:v}=g.data.contour;o.push(v)}return o}function xK(n,e,o,i){if(!e||!e.representationData.Contour)return;const l=e.representationData.Contour,{annotationUIDsMap:c}=l;if(!c||!c.get(o)||!c.get(i))return;const g=GN(l,o),v=GN(l,i),_=g.map(P=>t4(P,n)),T=v.map(P=>t4(P,n));return{polyLinesCanvas1:_,polyLinesCanvas2:T}}function g3e(n,e,o,i,{name:l,segmentIndex:c,color:g}){const{polyLinesCanvas1:v,polyLinesCanvas2:_}=xK(n,e,o,i)||{};if(!v||_)return;const P=JC(v,_).map(V=>JM(V,n)),I=_K(n,e.segmentationId,P,c),R=e.representationData.Contour,{annotationUIDsMap:L}=R;L&&L.set(c,I.get(c))}function p3e(n,e,o,i,{name:l,segmentIndex:c,color:g}){const{polyLinesCanvas1:v,polyLinesCanvas2:_}=xK(n,e,o,i)||{};if(!v||_)return;const P=ZC(v,_).map(V=>JM(V,n)),I=_K(n,e.segmentationId,P,c),R=e.representationData.Contour,{annotationUIDsMap:L}=R;L&&L.set(c,I.get(c))}function ak(n){var e;return!!((e=n.data)!=null&&e.segmentation)}function SK(n,e,o){const i=[],l=Qd(e);for(let c=0;cg.isContourHole),c=i.filter(g=>!g.isContourHole);if(l.length>0){const g=l[0];C3e(n,g.targetAnnotation,e),EK(n,[e,g.targetAnnotation]);return}if(c.length!==0){if(!BC(S9)){console.warn(`${S9} is not registered in cornerstone. Cannot process multiple intersections.`);return}v3e(n,e,o,c)}}function v3e(n,e,o,i){const{element:l}=n,c=[e],g=[],v=[];i.forEach(({targetAnnotation:R})=>{const L=w3e(n,R);v.push(...L),c.push(R)});const _=o[0];if(i.some(({targetPolyline:R})=>Zd(R,_))){let R=o;i.forEach(({targetPolyline:L})=>{R=HC(R,L)}),g.push(R)}else i.forEach(({targetPolyline:R})=>{const L=KC(R,o);g.push(...L)});c.forEach(R=>{A0(R.annotationUID),Ch(R)}),v.forEach(R=>UC(R.annotation));const P=i[0].targetAnnotation,I=[];g.forEach(R=>{if(!R||R.length<3){console.warn("Skipping creation of new annotation due to invalid polyline:",R);return}const L=k3e(n,P,R);_0(L,l),_h(L),C0(L,n.element),I.push(L)}),y3e(n,v,I),EK(n,c)}function k3e(n,e,o){const i=n.canvasToWorld(o[0]),l=n.canvasToWorld(o[o.length-1]),c={metadata:{...e.metadata,toolName:S9,originalToolName:e.metadata.originalToolName||e.metadata.toolName},data:{cachedStats:{},handles:{points:[i,l],textBox:e.data.handles.textBox?{...e.data.handles.textBox}:void 0},contour:{polyline:[],closed:!0},spline:e.data.spline,segmentation:{...e.data.segmentation}},annotationUID:H0(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:e.interpolationUID,interpolationCompleted:e.interpolationCompleted};return Cc(c,{points:o,closed:!0,targetWindingDirection:X1.Clockwise},n),c}function y3e(n,e,o){e.forEach(i=>{const l=o.find(c=>{const g=eP(c.data.contour.polyline,n);return ik(g,i.polyline)});l&&Zv(l,i.annotation)})}function w3e(n,e){return Qv(e).map(o=>{const i=o,l=eP(i.data.contour.polyline,n);return{annotation:i,polyline:l}})}function C3e(n,e,o){Zv(e,o),Ch(o);const{contour:i}=o.data,l=eP(i.polyline,n);Cc(o,{points:l,closed:i.closed,targetWindingDirection:e.data.contour.windingDirection===X1.Clockwise?X1.CounterClockwise:X1.Clockwise},n)}function eP(n,e){const o=n.length,i=new Array(o);for(let l=0;l{i.add(l.metadata.toolName)});for(const l of i.values())if(BC(l)){const c=fi(o,l);Un(c)}}const{isEqual:WN}=J0;function tP(n){const{metadata:e}=n;return _ge().filter(o=>{if(o.FrameOfReferenceUID===e.FrameOfReferenceUID){const i=o.viewport,{viewPlaneNormal:l,viewUp:c}=i.getCamera();return WN(l,e.viewPlaneNormal)&&(!e.viewUp||WN(c,e.viewUp))}}).map(o=>o.viewport)}async function _3e(n,e,o,i=!0){const l=typeof n=="string"?Xs(n):n,c=typeof e=="string"?Xs(e):e;if(!l||!c)throw new Error("Both source and target annotations must be valid");o||(o=x3e(l));const g=t4(l.data.contour.polyline,o),v=t4(c.data.contour.polyline,o),_=XC(g,v);if(!_.hasIntersection){console.warn("No intersection found between the two annotations");return}if(_.isContourHole){if(!i){console.warn("Hole processing is disabled");return}YC(o,c,l)}else ZM(o,c,v,l,g)}function x3e(n){const e=tP(n);if(!e.length)throw new Error("No viewport found for the annotation");return e[0]}const S3e=Object.freeze(Object.defineProperty({__proto__:null,addContourSegmentationAnnotation:_h,addition:g3e,areSameSegment:UH,checkIntersection:XC,combinePolylines:ZM,contourSegmentationOperation:_3e,convertContourPolylineToCanvasSpace:t4,convertContourPolylineToWorld:JM,convertContourSegmentationAnnotation:VM,createNewAnnotationFromPolyline:CK,createPolylineHole:YC,findAllIntersectingContours:SK,getContourHolesData:wK,isContourSegmentationAnnotation:ak,processMultipleIntersections:TK,removeContourSegmentationAnnotation:Ch,subtractAnnotationPolylines:h3e,subtractMultiplePolylineSets:f3e,subtractPolylineSets:ZC,subtraction:p3e,unifyAnnotationPolylines:c3e,unifyMultiplePolylineSets:u3e,unifyPolylineSets:JC,updateViewportsForAnnotations:QM},Symbol.toStringTag,{value:"Module"}));function T3e(n){if(!n)throw new Error(`No contours found for geometryId ${n.id}`);const e=n.id;if(n.type!==Mw.CONTOUR)throw new Error(`Geometry type ${n.type} not supported for rendering.`);if(!n.data){console.warn(`No contours found for geometryId ${e}. Skipping render.`);return}}function E3e(n,e,o,i){o.size?n.render():D3e(n,e,i)}function D3e(n,e,o){const{segmentationId:i}=o,l=new Map;e.forEach(c=>{const g=Jn.getGeometry(c);if(!g){console.warn(`No geometry found for geometryId ${c}. Skipping render.`);return}const v=g.data.segmentIndex;T3e(g);const _=ru.getStyle({viewportId:n.id,segmentationId:i,type:Ti.Contour,segmentIndex:v}),T=g.data,P=n.getCamera().viewPlaneNormal;T.contours.forEach(I=>{const{points:R,color:L,id:V}=I,U=NM(n,R[0],P),j={annotationUID:H0(),data:{contour:{closed:!0,polyline:R},segmentation:{segmentationId:i,segmentIndex:v,color:L,id:V},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!0,isVisible:!0,metadata:{referencedImageId:U,toolName:"PlanarFreehandContourSegmentationTool",FrameOfReferenceUID:n.getFrameOfReferenceUID(),viewPlaneNormal:n.getCamera().viewPlaneNormal}},z=n.element;_0(j,z),_h(j)}),_&&l.set(v,_)}),n.render()}function I3e(n,e,o=!1){const i=io(e),{annotationUIDsMap:l}=i.representationData.Contour;l.forEach(c=>{c.forEach(g=>{A0(g)})})}function DK(n){const e=w8e(n);if(e)return e;const o=io(n);if(!o)throw new Error(`No segmentation found for segmentationId ${n}`);let i;if(o.representationData.Labelmap)i=O3e(o,n);else if(o.representationData.Contour)i=R3e(o);else if(o.representationData.Surface)i=A3e(o);else throw new Error(`Unsupported segmentation type: ${o.representationData}`);return C8e(n,i),i}function O3e(n,e){const o=n.representationData[Ti.Labelmap],i=new Set;return o.imageIds?P3e(i,o.imageIds):M3e(i,e),Array.from(i).map(Number).sort((l,c)=>l-c)}function M3e(n,e){Jn.getVolume(e).voxelManager.forEach(({value:i})=>{i!==0&&n.add(i)})}function P3e(n,e){e.forEach(o=>{Jn.getImage(o).voxelManager.getScalarData().forEach(c=>{c!==0&&n.add(c)})})}function R3e(n){const{annotationUIDsMap:e,geometryIds:o}=n.representationData.Contour||{};if(!o)throw new Error(`No geometryIds found for segmentationId ${n.segmentationId}`);const i=new Set([...e.keys()]);return o.forEach(l=>{const c=Jn.getGeometry(l);i.add(c.data.segmentIndex)}),Array.from(i).sort((l,c)=>l-c)}function A3e(n){var o;const e=((o=n.representationData.Surface)==null?void 0:o.geometryIds)??[];return Array.from(e.keys()).map(Number).sort((i,l)=>i-l)}const h6=new Map,$N=new Map;function L3e(n,e,o=!1){const i=yo(n);if(!i)return;const{viewport:l}=i;I3e(n,e),o&&l.render()}async function N3e(n,e){var T,P;const{segmentationId:o}=e,i=io(o);if(!i)return;let l=i.representationData[Ti.Contour];const c=hh();if(!l&&((T=hh())!=null&&T.canComputeRequestedRepresentation(o,Ti.Contour))&&!h6.get(n.id)?(h6.set(n.id,!0),l=await AM(o,Ti.Contour,()=>c.computeContourData(o,{viewport:n}),()=>{}),h6.set(n.id,!1)):!l&&!hh()&&console.debug(`No contour data found for segmentationId ${o} and PolySeg add-on is not configured. Unable to convert from other representations to contour. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`),!l||!((P=l.geometryIds)!=null&&P.length))return;let g=!1;const v=n.getCamera().viewPlaneNormal;l.annotationUIDsMap&&(g=!F3e(l.annotationUIDsMap,v)),l.geometryIds.length>0&&(g=!b3e(l.geometryIds,v));const _=$N.get(n.id)||new Set;if(g&&!h6.get(n.id)&&!_.has(o)&&n.viewportStatus===l1.RENDERED){h6.set(n.id,!0);const I=DK(o),L=(await c.computeSurfaceData(o,{segmentIndices:I,viewport:n})).geometryIds,V=[];for(const $ of L.values()){const X=Jn.getGeometry($).data;V.push({points:X.points,polys:X.polys,segmentIndex:X.segmentIndex,id:X.segmentIndex})}const U=await c.clipAndCacheSurfacesForViewport(V,n),j=c.extractContourData(U),z=c.createAndAddContourSegmentationsFromClippedSurfaces(j,n,o);l.annotationUIDsMap=new Map([...l.annotationUIDsMap,...z]),_.add(o),$N.set(n.id,_),h6.set(n.id,!1)}E3e(n,l.geometryIds,l.annotationUIDsMap,e)}function b3e(n,e){var I,R,L;let o=null,i=null;for(const V of n){const U=Jn.getGeometry(V);if(!U)continue;const j=U.data;if(((L=(R=(I=j.contours)==null?void 0:I[0])==null?void 0:R.points)==null?void 0:L.length)>=3){o=U,i=j;break}}if(!o||!i)return!1;const c=i.contours[0].points,g=c[0],v=c[1],_=c[2];let T=ro(nr(),z0(nr(),v,g),z0(nr(),_,g));T=Uo(nr(),T);const P=mi(T,e);return Math.abs(P)>.9}function F3e(n,e){const o=Array.from(n.values()).flat().map(l=>Array.from(l)).flat(),i=pM(o,3);for(const l of i){const c=Xs(l);if(c!=null&&c.metadata){if(!c.metadata.viewPlaneNormal)continue;const g=c.metadata.viewPlaneNormal,v=Math.abs(e[0]*g[0]+e[1]*g[1]+e[2]*g[2]);if(Math.abs(v-1)>.01)return!1}}return!0}const IK={render:N3e,removeRepresentation:L3e};function f4(n,e){return Sh(n,e)[0]}function Sh(n,e){return No.getCurrentLabelmapImageIdsForViewport(n,e)}function V3e(n,e){return No.getLabelmapImageIdsForImageId(n,e)}const jN=new Map,U3e=({cfun:n,ofun:e,actor:o})=>{o.getProperty().setRGBTransferFunction(1,n),o.getProperty().setScalarOpacity(1,e)};async function B3e({viewport:n,volumeInputs:e,segmentationId:o}){var ge;const i=n.getDefaultActor(),{actor:l}=i,{uid:c,callback:g}=i,v=n.getVolumeId();if((ge=jN.get(c))!=null&&ge.added)return{uid:c,actor:l};const _=e,T=Jn.getVolume(_[0].volumeId);if(!T)throw new Error(`imageVolume with id: ${T.volumeId} does not exist`);const{volumeId:P}=_[0],I=await Ej(P);if(!I)throw new Error(`segImageVolume with id: ${I.volumeId} does not exist`);const L=I.voxelManager.getCompleteScalarDataArray(),{imageData:V}=I,U=Jn.getVolume(v),z=U.voxelManager.getCompleteScalarDataArray(),$=2,K=new Float32Array($*U.voxelManager.getScalarDataLength()),X=V.getDimensions();for(let pe=0;peEt);for(const wt of ut)for(let Et=0;Et{pr.removeEventListener(Xe.SEGMENTATION_DATA_MODIFIED,ce);const we=n.getActor(c),{element:Te,id:Ve}=n;n.removeActors([c]);const Pe=await LE({volumeId:c,blendMode:of.MAXIMUM_INTENSITY_BLEND,callback:({volumeActor:je})=>{we.callback&&we.callback({volumeActor:je,volumeId:P})}},Te,Ve);n.addActor({actor:Pe,uid:c}),n.render()}),{uid:c,actor:l}}const{uuidv4:OK}=J0;async function G3e(n,e,o,i){const l=_n(n),{renderingEngine:c,viewport:g}=l,{id:v}=g,_=!0,T=!1,P=!0;if(g instanceof xs){const R=W3e(e,o);Jn.getVolume(R)||await $3e(e);let L=(i==null?void 0:i.blendMode)??of.MAXIMUM_INTENSITY_BLEND,V=L===of.LABELMAP_EDGE_PROJECTION_BLEND;if(V){const j=g.getVolumeId(),z=Jn.getVolume(j),K=Jn.getVolume(R).dimensions,X=z.dimensions;(K[0]!==X[0]||K[1]!==X[1]||K[2]!==X[2])&&(V=!1,L=of.MAXIMUM_INTENSITY_BLEND,console.debug("Dimensions mismatch - falling back to regular volume addition"))}const U=[{volumeId:R,visibility:_,representationUID:`${o}-${Ti.Labelmap}`,useIndependentComponents:V,blendMode:L}];if(!U[0].useIndependentComponents)await Xde(c,U,[v],T,P);else return await B3e({viewport:g,volumeInputs:U,segmentationId:o})}else{const R=Sh(g.id,o).map(L=>({imageId:L,representationUID:`${o}-${Ti.Labelmap}-${L}`}));Yde(c,R,[v])}K2(o)}function W3e(n,e){let{volumeId:o}=n;if(!o){o=OK();const i=io(e);i.representationData.Labelmap={...i.representationData.Labelmap,volumeId:o},n.volumeId=o,cu(e)}return o}async function $3e(n){const e=n;if(!(e.imageIds.length>0))throw new Error("cannot create labelmap, no imageIds found for the volume labelmap");return await Dj(n.volumeId||OK(),e.imageIds)}function j3e(n,e){const o=_n(n),{viewport:i}=o;i.removeActors([A8e(i.id,e)])}function Hg(n){return No.getActiveSegmentation(n)}function z3e(n,e){No.setActiveSegmentation(n,e)}function Ph(n){return Hg(n)}function H3e(n,e){z3e(n,e)}const K3e=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentation:Ph,setActiveSegmentation:H3e},Symbol.toStringTag,{value:"Module"}));function Ol(n){const e=io(n);if(e){const o=Object.keys(e.segments).find(i=>e.segments[i].active);return o?Number(o):void 0}}const AS=255,vm=new Map;let LS=!1;function q3e(n,e,o=!1){const i=yo(n);if(vm.forEach((c,g)=>{g.includes(e)&&vm.delete(g)}),!i)return;const{viewport:l}=i;j3e(l.element,e),o&&l.render()}async function X3e(n,e){var v;const{segmentationId:o,config:i}=e,l=io(o);if(!l){console.warn("No segmentation found for segmentationId: ",o);return}let c=l.representationData[Ti.Labelmap],g=mm(n.id,o);if(!c&&((v=hh())!=null&&v.canComputeRequestedRepresentation(o,Ti.Labelmap))&&!LS){LS=!0;const _=hh();if(c=await AM(o,Ti.Labelmap,()=>_.computeLabelmapData(o,{viewport:n}),()=>null,()=>{No.processLabelmapRepresentationAddition(n.id,o),setTimeout(()=>{K2(o)},0)}),!c)throw new Error(`No labelmap data found for segmentationId ${o}.`);LS=!1}else!c&&!hh()&&console.debug(`No labelmap data found for segmentationId ${o} and PolySeg add-on is not configured. Unable to convert from other representations to labelmap. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`);if(c){if(n instanceof ns)g!=null&&g.length||await HN(n,c,o,i),g=mm(n.id,o);else{const _=Sh(n.id,o);if(!(_!=null&&_.length))return;g||await HN(n,c,o,i),g=mm(n.id,o)}if(g!=null&&g.length)for(const _ of g)Y3e(n.id,_,e)}}function Y3e(n,e,o){var ee;const{segmentationId:i}=o,{cfun:l,ofun:c}=o.config,{colorLUTIndex:g}=o,v=Ph(n),_=(v==null?void 0:v.segmentationId)===i,T=ru.getStyle({viewportId:n,type:Ti.Labelmap,segmentationId:i}),P=ru.getRenderInactiveSegmentations(n),I=tk(g),R=Math.min(256,I.length),{outlineWidth:L,renderOutline:V,outlineOpacity:U,activeSegmentOutlineWidthDelta:j}=zN(T,_),z=LM(n,{segmentationId:i,type:Ti.Labelmap});for(let ne=0;nec.getCurrentImageId()===o),!l||!l.length)?void 0:l[0].getImageData()}else if(e.startsWith("volumeId:")){const o=wf(e),i=Kv(o);return!i||!i.length?void 0:i[0].getImageData()}else if(e.startsWith("videoId:")){const o=Bs(e),i=a9(o);return!i||!i.length?void 0:i[0].getImageData()}else throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}getTargetId(e){var i;const o=(i=e.getViewReferenceId)==null?void 0:i.call(e);if(o)return o;throw new Error("getTargetId: viewport must have a getViewReferenceId method")}undo(){this.doneEditMemo(),n7.undo()}redo(){n7.redo()}static createZoomPanMemo(e){const o={pan:e.getPan(),zoom:e.getZoom()},i={restoreMemo:()=>{const l=e.getPan(),c=e.getZoom();e.setZoom(o.zoom),e.setPan(o.pan),e.render(),o.pan=l,o.zoom=c}};return n7.push(i),i}doneEditMemo(){var e,o;(o=(e=this.memo)==null?void 0:e.commitMemo)!=null&&o.call(e)&&n7.push(this.memo),this.memo=null}};Em.defaults={configuration:{strategies:{},defaultStrategy:void 0,activeStrategy:void 0,strategyOptions:{}}};let Oa=Em;Oa.toolName="BaseTool";const{isEqual:Z3e}=J0,{EPSILON:Q3e}=ep,eme=1-Q3e;function nP(n,e,o){var _;const{viewPlaneNormal:i}=e,l=n.filter(T=>{let P=T.metadata.viewPlaneNormal;if(!T.metadata.referencedImageId&&!P&&T.metadata.FrameOfReferenceUID){for(const R of T.data.handles.points){const L=z0(nr(),R,e.focalPoint),V=mi(L,e.viewPlaneNormal);if(!Z3e(V,0))return!1}return T.metadata.viewPlaneNormal=e.viewPlaneNormal,T.metadata.cameraFocalPoint=e.focalPoint,!0}if(!P){const{referencedImageId:R}=T.metadata,{imageOrientationPatient:L}=Hr("imagePlaneModule",R),V=Ei(L[0],L[1],L[2]),U=Ei(L[3],L[4],L[5]);P=nr(),ro(P,V,U),T.metadata.viewPlaneNormal=P}const I=Math.abs(mi(i,P))>eme;return P&&I});if(!l.length)return[];const c=o/2,{focalPoint:g}=e,v=[];for(const T of l){const P=T.data,I=P.handles.points[0]||((_=P.contour)==null?void 0:_.polyline[0]);if(!T.isVisible)continue;const R=nr();if(!I){v.push(T);continue}z0(R,g,I);const L=mi(R,i);Math.abs(L)i.isVisible?i.data.isCanvasAnnotation?!0:n.isReferenceViewable(i.metadata,o):!1)}function PK(n){if(n){if(n.data&&n.highlighted)return lc.Highlighted;if(nk(n.annotationUID))return lc.Selected;if(da(n.annotationUID))return lc.Locked;if(n.data&&n.autoGenerated)return lc.AutoGenerated}return lc.Default}function tme(n,e,o){const i=D8("textBoxFontSize",n,e,o),l=D8("textBoxFontFamily",n,e,o);return`${i}px ${l}`}const nme=Object.freeze(Object.defineProperty({__proto__:null,getFont:tme,getState:PK,style:CM},Symbol.toStringTag,{value:"Module"}));class h4 extends Oa{constructor(){super(...arguments),this.onImageSpacingCalibrated=e=>{const{element:o,imageId:i}=e.detail,l=Bs(i),c=wc();c.getFramesOfReference().forEach(v=>{const T=c.getAnnotations(v)[this.getToolName()];!T||!T.length||(T.forEach(P=>{var R;if(!((R=P.metadata)!=null&&R.referencedImageId))return;Bs(P.metadata.referencedImageId)===l&&(P.invalidated=!0,P.data.cachedStats={})}),Q8(o))})}}filterInteractableAnnotationsForElement(e,o){if(!(o!=null&&o.length))return[];const i=_n(e),{viewport:l}=i;return lk(l,o)}createAnnotation(e){const o=e.detail,{currentPoints:i,element:l}=o,{world:c}=i,g=_n(l),{viewport:v}=g,_=v.getCamera(),{viewPlaneNormal:T,viewUp:P,position:I}=_,R=this.getReferencedImageId(v,c,T,P),L=v.getViewReference({points:[c]});return{highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),...L,referencedImageId:R,viewUp:P,cameraPosition:I},data:{cachedStats:{},handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}}}getReferencedImageId(e,o,i,l){const c=this.getTargetId(e);let g=c.split(/^[a-zA-Z]+:/)[1];if(e instanceof xs){const v=wf(c),_=Jn.getVolume(v);g=yh(_,o,i)}return g}getStyle(e,o,i){return D8(e,o,PK(i),this.mode)}}h4.toolName="AnnotationDisplayTool";const{DefaultHistoryMemo:rme}=hM,{PointsManager:ime}=J0;class Yo extends h4{static createAnnotation(...e){let o={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.toolName},data:{text:"",handles:{points:new Array,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};for(const i of e)o=o2(o,i);return o}static createAnnotationForViewport(e,...o){return this.createAnnotation({metadata:e.getViewReference()},...o)}static createAndAddAnnotation(e,...o){const i=this.createAnnotationForViewport(e,...o);_0(i,e.element),C0(i,e.element)}constructor(e,o){var i,l;super(e,o),this.mouseMoveCallback=(c,g)=>{if(!g)return!1;const{element:v,currentPoints:_}=c.detail,T=_.canvas;let P=!1;for(const I of g){if(da(I.annotationUID)||!Ys(I.annotationUID))continue;const{data:R}=I,L=R.handles?R.handles.activeHandleIndex:void 0,V=this._imagePointNearToolOrHandle(v,I,T,6),U=V&&!I.highlighted,j=!V&&I.highlighted;U||j?(I.highlighted=!I.highlighted,P=!0):R.handles&&R.handles.activeHandleIndex!==L&&(P=!0)}return P},this.isSuvScaled=Yo.isSuvScaled,(i=e.configuration)!=null&&i.getTextLines&&(this.configuration.getTextLines=e.configuration.getTextLines),(l=e.configuration)!=null&&l.statsCalculator&&(this.configuration.statsCalculator=e.configuration.statsCalculator)}getHandleNearImagePoint(e,o,i,l){const c=_n(e),{viewport:g}=c,{data:v}=o,{isCanvasAnnotation:_}=v,{points:T,textBox:P}=v.handles;if(P){const{worldBoundingBox:I}=P;if(I){const R={topLeft:g.worldToCanvas(I.topLeft),topRight:g.worldToCanvas(I.topRight),bottomLeft:g.worldToCanvas(I.bottomLeft),bottomRight:g.worldToCanvas(I.bottomRight)};if(i[0]>=R.topLeft[0]&&i[0]<=R.bottomRight[0]&&i[1]>=R.topLeft[1]&&i[1]<=R.bottomRight[1])return v.handles.activeHandleIndex=null,P}}for(let I=0;I<(T==null?void 0:T.length);I++){const R=T[I],L=_?R.slice(0,2):g.worldToCanvas(R);if(ds(i,L)this.getStyle(U,i,o),{annotationUID:c}=o,g=Ys(c),v=da(c),_=l("lineWidth"),T=l("lineDash"),P=l("angleArcLineDash"),I=l("color"),R=l("markerSize"),L=l("shadow"),V=this.getLinkedTextBoxStyle(i,o);return{visibility:g,locked:v,color:I,lineWidth:_,lineDash:T,lineOpacity:1,fillColor:I,fillOpacity:0,shadow:L,textbox:V,markerSize:R,angleArcLineDash:P}}_imagePointNearToolOrHandle(e,o,i,l){if(this.getHandleNearImagePoint(e,o,i,l)||this.isPointNearTool(e,o,i,l,"mouse"))return!0}static createAnnotationState(e,o){const{data:i,annotationUID:l}=e,c={...i,cachedStats:{}};delete c.contour,delete c.spline;const g={annotationUID:l,data:structuredClone(c),deleting:o},v=i.contour;return v&&(g.data.contour={...v,polyline:null,pointsManager:ime.create3(v.polyline.length,v.polyline)}),g}static createAnnotationMemo(e,o,i){if(!o)return;const{newAnnotation:l,deleting:c=l?!1:void 0}=i||{},{annotationUID:g}=o,v=Yo.createAnnotationState(o,c),_={restoreMemo:()=>{const T=Yo.createAnnotationState(o,c),{viewport:P}=_n(e)||{};if(P==null||P.setViewReference(o.metadata),v.deleting===!0){if(v.deleting=!1,Object.assign(o.data,v.data),o.data.contour){const R=o.data;R.contour.polyline=v.data.contour.pointsManager.points,delete v.data.contour.pointsManager,R.segmentation&&_h(o)}v.data=T.data,_0(o,e),q1(o.annotationUID,!0),P==null||P.render();return}if(v.deleting===!1){v.deleting=!0,v.data=T.data,q1(o.annotationUID),A0(o.annotationUID),P==null||P.render();return}const I=Xs(g);if(!I){console.warn("No current annotation");return}Object.assign(I.data,v.data),I.data.contour&&(I.data.contour.polyline=v.data.contour.pointsManager.points),v.data=T.data,I.invalidated=!0,C0(I,e,n0.History)},id:g,operationType:"annotation"};return rme.push(_),_}createMemo(e,o,i){this.memo||(this.memo=Yo.createAnnotationMemo(e,o,i))}static hydrateBase(e,o,i,l={}){if(!o)return null;const{viewport:c}=o,g=c.getFrameOfReferenceUID(),v=c.getCamera(),_=l.viewplaneNormal??v.viewPlaneNormal,T=l.viewUp??v.viewUp,P=l.toolInstance||new e;let I,R=_,L=T;if(l.referencedImageId)I=l.referencedImageId,R=void 0,L=void 0;else if(c instanceof ts){const V=dM(i[0],c);V!==void 0&&(I=c.getImageIds()[V])}else if(c instanceof xs)I=P.getReferencedImageId(c,i[0],_,T);else throw new Error("Unsupported viewport type");return{FrameOfReferenceUID:g,referencedImageId:I,viewPlaneNormal:R,viewUp:L,instance:P,viewport:c}}}Yo.toolName="AnnotationTool";const{CalibrationTypes:ig}=bu,og="px",r7="voxels",RK=[1,2,3,4],ome=["3,3","4,7"],sme=["4,3","4,7"],JE={0:"px",1:"percent",2:"dB",3:"cm",4:"seconds",5:"hertz",6:"dB/seconds",7:"cm/sec",8:"cm²",9:"cm²/s",12:"degrees"},ame=.001,x3="²",Ml=(n,e)=>{const{calibration:o,hasPixelSpacing:i}=n;let l=i?"mm":og;const c=i?"mm³":r7;let g=l+x3,v=1,_="";if(!o||!o.type&&!o.sequenceOfUltrasoundRegions)return{unit:l,areaUnit:g,scale:v,volumeUnit:c};if(o.type===ig.UNCALIBRATED)return{unit:og,areaUnit:og+x3,scale:v,volumeUnit:r7};if(o.sequenceOfUltrasoundRegions){let P,I;if(Array.isArray(e)&&e.length===2)[P,I]=e;else if(typeof e=="function"){const z=e();P=z[0],I=z[1]}let R=o.sequenceOfUltrasoundRegions.filter(z=>P[0]>=z.regionLocationMinX0&&P[0]<=z.regionLocationMaxX1&&P[1]>=z.regionLocationMinY0&&P[1]<=z.regionLocationMaxY1&&I[0]>=z.regionLocationMinX0&&I[0]<=z.regionLocationMaxX1&&I[1]>=z.regionLocationMinY0&&I[1]<=z.regionLocationMaxY1);if(!(R!=null&&R.length))return{unit:l,areaUnit:g,scale:v,volumeUnit:c};if(R=R.filter(z=>RK.includes(z.regionDataType)&&ome.includes(`${z.physicalUnitsXDirection},${z.physicalUnitsYDirection}`)),!R.length)return{unit:og,areaUnit:og+x3,scale:v,volumeUnit:r7};const L=R[0],V=Math.abs(L.physicalDeltaX),U=Math.abs(L.physicalDeltaY);if(Qi(V,U,ame))v=1/V,_="US Region",l=JE[L.physicalUnitsXDirection]||"unknown",g=l+x3;else return{unit:og,areaUnit:og+x3,scale:v,volumeUnit:r7}}else o.scale&&(v=o.scale);return[ig.ERMF,ig.USER,ig.ERROR,ig.PROJECTION,ig.CALIBRATED,ig.UNKNOWN].includes(o==null?void 0:o.type)&&(_=o.type),{unit:l+(_?` ${_}`:""),areaUnit:g+(_?` ${_}`:""),scale:v,volumeUnit:c+(_?` ${_}`:"")}},T9=(n,e)=>{const[o]=e,{calibration:i}=n;let l=["raw"],c=[null],g="";if(!i||!i.type&&!i.sequenceOfUltrasoundRegions)return{units:l,values:c};if(i.sequenceOfUltrasoundRegions){const v=i.sequenceOfUltrasoundRegions.filter(U=>RK.includes(U.regionDataType)&&sme.includes(`${U.physicalUnitsXDirection},${U.physicalUnitsYDirection}`));if(!(v!=null&&v.length))return{units:l,values:c};const _=v.find(U=>o[0]>=U.regionLocationMinX0&&o[0]<=U.regionLocationMaxX1&&o[1]>=U.regionLocationMinY0&&o[1]<=U.regionLocationMaxY1);if(!_)return{units:l,values:c};const{referencePixelX0:T=0,referencePixelY0:P=0}=_,{physicalDeltaX:I,physicalDeltaY:R}=_,L=(o[1]-_.regionLocationMinY0-P)*R,V=(o[0]-_.regionLocationMinX0-T)*I;g="US Region",c=[V,L],l=[JE[_.physicalUnitsXDirection],JE[_.physicalUnitsYDirection]]}return{units:l,values:c,calibrationType:g}},rP=n=>{var e;return((e=n.calibration)==null?void 0:e.aspect)||1};function QC(n,e,o,i){const l=nr();ro(l,e,n);const c=Ei(...o),g=Ei(...i),v=nr();Wo(v,c,g);const _=K1(v);if(_<1e-4)return{worldWidth:0,worldHeight:0};const T=mi(v,l)/(_*K1(l)),I=Math.sqrt(1-T*T)*_,R=T*_;return{worldWidth:I,worldHeight:R}}function e5(n,e,o,i){const l=nr();ro(l,e,n);const c=Ei(...o),g=Ei(...i),v=nr();Wo(v,c,g);const _=K1(v);if(_<1e-4)return{worldWidth:0,worldHeight:0};const T=mi(v,l)/(_*K1(l)),I=Math.sqrt(1-T*T)*_,R=T*_;return{worldWidth:I,worldHeight:R}}function iP(n,e,o,i,l=.25){const c=oP(n,e,{targetVolumeId:o,stepSize:l});let g;for(const v of c){const _=n.getIntensityFromWorld(v),T=i(_,v);T&&(g=T)}return g}function oP(n,e,{targetVolumeId:o,stepSize:i}){const l=n.getCamera(),{viewPlaneNormal:c}=l,{spacingInNormalDirection:g}=q8(n,l,o),v=g*i||1,_=n.getBounds(),T=[];let P=[...e];for(;KN(P,_);)T.push([...P]),P[0]+=c[0]*v,P[1]+=c[1]*v,P[2]+=c[2]*v;for(P=[...e];KN(P,_);)T.push([...P]),P[0]-=c[0]*v,P[1]-=c[1]*v,P[2]-=c[2]*v;return T}const KN=function(n,e){const[o,i,l,c,g,v]=e,_=10;return n[0]>o+_&&n[0]l+_&&n[1]g+_&&n[2]{const _=[Ei(o,i,l),Ei(c,i,l),Ei(o,g,l),Ei(c,g,l),Ei(o,i,v),Ei(c,i,v),Ei(o,g,v),Ei(c,g,v)],T=Ei(e[0],e[1],e[2]),P=Ei(n[0],n[1],n[2]),I=-mi(T,P);let R=null;for(const L of _){const V=mi(T,L)+I;if(R===null)R=Math.sign(V);else if(Math.sign(V)!==R)return!0}return!1},{EPSILON:lme}=ep,ume=1-lme;function e_(n,e){const{viewPlaneNormal:o}=e,i=n.filter(l=>{let c=l.metadata.viewPlaneNormal;if(!c){const{referencedImageId:v}=l.metadata,{imageOrientationPatient:_}=Hr("imagePlaneModule",v),T=Ei(_[0],_[1],_[2]),P=Ei(_[3],_[4],_[5]);c=nr(),ro(c,T,P),l.metadata.viewPlaneNormal=c}const g=Math.abs(mi(o,c))>ume;return c&&g});return i.length?i:[]}const cme={filterAnnotationsWithinSlice:nP,getWorldWidthAndHeightFromCorners:QC,getWorldWidthAndHeightFromTwoPoints:e5,filterAnnotationsForDisplay:lk,getPointInLineOfSightWithCriteria:iP,isPlaneIntersectingAABB:AK,filterAnnotationsWithinSamePlane:e_,getPointsInLineOfSight:oP},fme=Object.freeze(Object.defineProperty({__proto__:null,default:cme,filterAnnotationsForDisplay:lk,filterAnnotationsWithinSamePlane:e_,filterAnnotationsWithinSlice:nP,getPointInLineOfSightWithCriteria:iP,getPointsInLineOfSight:oP,getWorldWidthAndHeightFromCorners:QC,getWorldWidthAndHeightFromTwoPoints:e5,isPlaneIntersectingAABB:AK},Symbol.toStringTag,{value:"Module"}));function v1(n,e,o){let i=!0,l=!0;if(typeof n!="function")throw new TypeError("Expected a function");return RM(o)&&(i="leading"in o?!!o.leading:i,l="trailing"in o?!!o.trailing:l),Z8(n,e,{leading:i,trailing:l,maxWait:e})}function hme(n){var e;return((e=n[0])==null?void 0:e.length)===3}function dme(n,e){if(!e||e.length===0||e.length===n.length)return n;const o=e[e.length-1]-e[0]+1,i=SS(e.map(c=>n[c][0])),l=SS(e.map(c=>n[c][1]));if(hme(n)){const c=SS(e.map(g=>n[g][2]));return lN(w3(i,o),w3(l,o),w3(c,o))}else return lN(w3(i,o),w3(l,o))}function gme(n,e){const o=[],[i,l]=e,c=l-i+1,g=Math.floor(c/n);let v=0,_=Math.round((c-1)/(g-1)*v)+i;for(;_<=l;)o.push(_),v++,_=Math.round((c-1)/(g-1)*v)+i;return o}function ZE(n,e,o,i){const l=o-e+1,c=Math.floor(i/100*l)??1,g=Math.floor(l/c)??1;if(isNaN(l)||!l||!g||l/g<2)return n;const v=Math.max(0,e),_=Math.min(n.length-1,o),T=n.slice(0,v),P=n.slice(_+1,n.length),I=gme(g,[v,_]),R=dme(n,I);return[...T,...R,...P]}function t_(n,e){var i,l;return e!=null&&e.autoGenerated?!1:((i=n==null?void 0:n.smoothing)==null?void 0:i.smoothOnAdd)===!0||((l=n==null?void 0:n.smoothing)==null?void 0:l.smoothOnEdit)===!0}function pme(n,e){return f1(n,e)<.001}function mme(n,e){return f1(n,e)===0}function vme(n,e){for(let o=0;opme(_,T)===!1,[c,g]=qN([A6(o,n.length,1),o,n],[A6(i,e.length,1),i,e],l,1),[v]=qN([A6(c,n.length,-1),c,n],[A6(g,e.length,-1),g,e],l,-1);return[c,v]}function n_(n,e,o){const{interpolation:i,smoothing:l}=n,c=e;if(i){const{knotsRatioPercentageOnAdd:g,knotsRatioPercentageOnEdit:v,smoothOnAdd:_=!1,smoothOnEdit:T=!1}=l,P=o?v:g;if(o?T:_){const[R,L]=o?kme(e,o):[0,e.length-1];return!e[R]||!e[L]?e:ZE(e,R,L,P)}}return c}const t5=n=>{if(n.shiftKey)return n.ctrlKey?h2.ShiftCtrl:n.altKey?h2.ShiftAlt:n.metaKey?h2.ShiftMeta:h2.Shift;if(n.ctrlKey)return n.altKey?h2.CtrlAlt:n.metaKey?h2.CtrlMeta:h2.Ctrl;if(n.altKey)return n.metaKey&&h2.AltMeta||h2.Alt;if(n.metaKey)return h2.Meta};function sP(n,e){const o=n[0],i=n[n.length-1],l=a0();Iu(l,i[0]-o[0],i[1]-o[1]),sh(l,l);const c=a0(),g=a0();Iu(c,-l[1],l[0]),Iu(g,l[1],-l[0]);const v=[(o[0]+i[0])/2,(o[1]+i[1])/2],_={dist:0,index:null};for(let I=0;I_.dist&&(_.dist=L,_.index=I)}return[n[_.index],v].map(e.canvasToWorld)}function yme(n,e){const{viewport:o}=n,i=e.data.contour.polyline.map(o.worldToCanvas);return sP(i,o)}const{addCanvasPointsToArray:aP,pointsAreWithinCloseContourProximity:LK,getFirstLineSegmentIntersectionIndexes:NK,getSubPixelSpacingAndXYDirections:wme}=c4;function Cme(n,e,o){this.isDrawing=!0;const i=n.detail,{currentPoints:l,element:c}=i,g=l.canvas,v=_n(c),{viewport:_}=v,T=t5(n.detail.event)===this.configuration.contourHoleAdditionModifierKey,{spacing:P,xDir:I,yDir:R}=wme(_,this.configuration.subPixelResolution)||{};!P||!I||!R||(this.drawData={canvasPoints:[g],polylineIndex:0,contourHoleProcessingEnabled:T,newAnnotation:!0},this.commonData={annotation:e,viewportIdsToRender:o,spacing:P,xDir:I,yDir:R,movingTextBox:!1},ar.isInteractingWithTool=!0,c.addEventListener(Xe.MOUSE_UP,this.mouseUpDrawCallback),c.addEventListener(Xe.MOUSE_DRAG,this.mouseDragDrawCallback),c.addEventListener(Xe.MOUSE_CLICK,this.mouseUpDrawCallback),c.addEventListener(Xe.TOUCH_END,this.mouseUpDrawCallback),c.addEventListener(Xe.TOUCH_DRAG,this.mouseDragDrawCallback),c.addEventListener(Xe.TOUCH_TAP,this.mouseUpDrawCallback),Oi(c))}function _me(n){ar.isInteractingWithTool=!1,n.removeEventListener(Xe.MOUSE_UP,this.mouseUpDrawCallback),n.removeEventListener(Xe.MOUSE_DRAG,this.mouseDragDrawCallback),n.removeEventListener(Xe.MOUSE_CLICK,this.mouseUpDrawCallback),n.removeEventListener(Xe.TOUCH_END,this.mouseUpDrawCallback),n.removeEventListener(Xe.TOUCH_DRAG,this.mouseDragDrawCallback),n.removeEventListener(Xe.TOUCH_TAP,this.mouseUpDrawCallback),Zi(n)}function xme(n){const e=n.detail,{currentPoints:o,element:i}=e,l=o.world,c=o.canvas,g=_n(i),{viewport:v}=g,{annotation:_,viewportIdsToRender:T,xDir:P,yDir:I,spacing:R,movingTextBox:L}=this.commonData,{polylineIndex:V,canvasPoints:U,newAnnotation:j}=this.drawData;this.createMemo(i,_,{newAnnotation:j});const z=U[U.length-1],$=v.canvasToWorld(z),K=nr();Wo(K,l,$);const X=Math.abs(mi(K,P)),ee=Math.abs(mi(K,I));if(!(X<=R[0]&&ee<=R[1])){if(L){this.isDrawing=!1;const{deltaPoints:ne}=e,le=ne.world,{textBox:ce}=_.data.handles,{worldPosition:ge}=ce;ge[0]+=le[0],ge[1]+=le[1],ge[2]+=le[2],ce.hasMoved=!0}else{const ne=this.findCrossingIndexDuringCreate(n);if(ne!==void 0)this.applyCreateOnCross(n,ne);else{const le=aP(i,U,c,this.commonData);this.drawData.polylineIndex=V+le}_.invalidated=!0}Un(T),_.invalidated&&C0(_,i,n0.HandlesUpdated)}}function Sme(n){const{allowOpenContours:e}=this.configuration,{canvasPoints:o,contourHoleProcessingEnabled:i}=this.drawData,l=o[0],c=o[o.length-1],g=n.detail,{element:v}=g;this.doneEditMemo(),this.drawData.newAnnotation=!1,e&&!LK(l,c,this.configuration.closeContourProximity)?this.completeDrawOpenContour(v,{contourHoleProcessingEnabled:i}):this.completeDrawClosedContour(v,{contourHoleProcessingEnabled:i})}function Tme(n,e){this.removeCrossedLinesOnCompleteDraw();const{canvasPoints:o}=this.drawData,{contourHoleProcessingEnabled:i,minPointsToSave:l}=e??{};if(l&&o.length=2)if(_.length>this.configuration.checkCanvasEditFallbackProximity){const I=_[0],R=[];for(let U=0;UU.distance-j.distance);const L=[R[0],R[1]],V=Math.min(L[0].index,L[1].index);this.editData.startCrossingIndex=V}else{const I=a0();ra(I,_[1],_[0]),sh(I,I);const R=6,L=[_[0][0]-I[0]*R,_[0][1]-I[1]*R],V=Kg(T,L,_[0],e);if(V){const U=[L];Lme(i,U,_[0],this.commonData),_.unshift(...U),this.removePointsUpUntilFirstCrossing(e),this.editData.editIndex=_.length-1,this.editData.startCrossingIndex=V[0]}}}function bme(n){const{editCanvasPoints:e,prevCanvasPoints:o}=this.editData;let i=0;for(let l=0;l0;i--){const l=[o[i],o[i-1]],c=!!Kg(e,l[0],l[1],n);if(o.pop(),c)break}}function Ume(){const{editCanvasPoints:n,prevCanvasPoints:e,startCrossingIndex:o}=this.editData;if(o===void 0)return;const i=n[n.length-1],l=[];for(let g=0;gg.distance-v.distance);const c=n.slice(0,-1);for(let g=0;g1&&this.checkForFirstCrossing(n,!0),this.editData.snapIndex=this.findSnapIndex(),this.editData.snapIndex===-1){this.finishEditAndStartNewEdit(n);return}this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(n),V!==void 0&&this.checkForSecondCrossing(n,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(n)),Un(_)}function Hme(n){const e=n.detail,{element:o}=e,i=_n(o),{viewport:l,renderingEngine:c}=i,{annotation:g,viewportIdsToRender:v}=this.commonData,{fusedCanvasPoints:_,editCanvasPoints:T}=this.editData;Cc(g,{points:_,closed:!0,targetWindingDirection:X1.Clockwise},l),g.autoGenerated&&(g.autoGenerated=!1),C0(g,o);const P=T.pop();this.editData={prevCanvasPoints:_,editCanvasPoints:[P],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0,annotation:g},Un(v)}function Kme(n){const{prevCanvasPoints:e,editCanvasPoints:o,startCrossingIndex:i,snapIndex:l}=this.editData;if(i===void 0||l===void 0)return;const c=n.detail,{element:g}=c,v=[...o];bK(g,v,e[l],this.commonData),v.length>o.length&&v.pop();let _,T;i>l?(_=l,T=i):(_=i,T=l);const P=ds(e[_],v[0]),I=ds(e[_],v[v.length-1]),R=ds(e[T],v[0]),L=ds(e[T],v[v.length-1]),V=[];for(let ee=0;ee<_;ee++){const ne=e[ee];V.push([ne[0],ne[1]])}let U=P+L,j=I+R;if(U=0;ee--){const ne=v[ee];V.push([ne[0],ne[1]])}for(let ee=T;ee=0;ee--){const ne=v[ee];z.push([ne[0],ne[1]])}const $=XN(V),K=XN(z);return $>K?V:z}function qme(n){const e=n.detail,{element:o}=e;this.completeClosedContourEdit(o)}function Xme(n){var v;const e=_n(n),{viewport:o}=e,{annotation:i,viewportIdsToRender:l}=this.commonData;this.doneEditMemo();const{fusedCanvasPoints:c,prevCanvasPoints:g}=this.editData;if(c){const _=t_(this.configuration,i)?n_(this.configuration,c,g):c,T=((v=this.configuration)==null?void 0:v.decimate)||{};Cc(i,{points:_,closed:!0,targetWindingDirection:X1.Clockwise},o,{decimate:{enabled:!!T.enabled,epsilon:T.epsilon}}),i.autoGenerated&&(i.autoGenerated=!1),C0(i,n)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,Un(l),this.deactivateClosedContourEdit(n)}function Yme(n){this.completeClosedContourEdit(n)}function Jme(n){n.activateClosedContourEdit=$me.bind(n),n.deactivateClosedContourEdit=jme.bind(n),n.mouseDragClosedContourEditCallback=zme.bind(n),n.mouseUpClosedContourEditCallback=qme.bind(n),n.finishEditAndStartNewEdit=Hme.bind(n),n.fuseEditPointsWithClosedContour=Kme.bind(n),n.cancelClosedContourEdit=Yme.bind(n),n.completeClosedContourEdit=Xme.bind(n)}const{addCanvasPointsToArray:FK,getSubPixelSpacingAndXYDirections:Zme}=c4;function Qme(n,e,o){this.isEditingOpen=!0;const i=n.detail,{currentPoints:l,element:c}=i,g=l.canvas,v=_n(c),{viewport:_}=v;this.doneEditMemo();const T=e.data.contour.polyline.map(_.worldToCanvas),{spacing:P,xDir:I,yDir:R}=Zme(_,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:T,editCanvasPoints:[g],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:e,viewportIdsToRender:o,spacing:P,xDir:I,yDir:R,movingTextBox:!1},ar.isInteractingWithTool=!0,c.addEventListener(Xe.MOUSE_UP,this.mouseUpOpenContourEditCallback),c.addEventListener(Xe.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),c.addEventListener(Xe.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),c.addEventListener(Xe.TOUCH_END,this.mouseUpOpenContourEditCallback),c.addEventListener(Xe.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),c.addEventListener(Xe.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Oi(c)}function eve(n){ar.isInteractingWithTool=!1,n.removeEventListener(Xe.MOUSE_UP,this.mouseUpOpenContourEditCallback),n.removeEventListener(Xe.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),n.removeEventListener(Xe.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),n.removeEventListener(Xe.TOUCH_END,this.mouseUpOpenContourEditCallback),n.removeEventListener(Xe.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),n.removeEventListener(Xe.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Zi(n)}function tve(n){const e=n.detail,{currentPoints:o,element:i}=e,l=o.world,c=o.canvas,g=_n(i),{viewport:v}=g,{viewportIdsToRender:_,xDir:T,yDir:P,spacing:I}=this.commonData,{editIndex:R,editCanvasPoints:L,startCrossingIndex:V}=this.editData,U=L[L.length-1],j=v.canvasToWorld(U),z=nr();this.createMemo(i,this.commonData.annotation),Wo(z,l,j);const $=Math.abs(mi(z,T)),K=Math.abs(mi(z,P));if($<=I[0]&&K<=I[1])return;V!==void 0&&this.checkAndRemoveCrossesOnEditLine(n);const X=FK(i,L,c,this.commonData),ee=R+X;this.editData.editIndex=ee,V===void 0&&L.length>1&&this.checkForFirstCrossing(n,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(n),V!==void 0&&this.checkForSecondCrossing(n,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(n)):this.checkIfShouldOverwriteAnEnd(n)&&this.openContourEditOverwriteEnd(n),Un(_)}function nve(n){const e=n.detail,{element:o}=e,i=_n(o),{viewport:l}=i,{annotation:c,viewportIdsToRender:g}=this.commonData,v=this.fuseEditPointsForOpenContourEndEdit();Cc(c,{points:v,closed:!1},l);const _=c.data.contour.polyline;c.data.handles.points=[_[0],_[_.length-1]],c.data.handles.activeHandleIndex=1,C0(c,o),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.doneEditMemo(),this.deactivateOpenContourEdit(o),this.activateOpenContourEndEdit(n,c,g,null)}function rve(n){const e=n.detail,{currentPoints:o,lastPoints:i}=e,l=o.canvas,c=i.canvas,{snapIndex:g,prevCanvasPoints:v,startCrossingIndex:_}=this.editData;if(_===void 0||g===void 0)return!1;if(g===-1)return!0;if(g!==0&&g!==v.length-1)return!1;const T=l,P=c,I=v[g],R=a0(),L=a0();Iu(R,T[0]-P[0],T[1]-P[1]),Iu(L,T[0]-I[0],T[1]-I[1]);const V=cO(R,L),U=Math.sqrt(R[0]*R[0]+R[1]*R[1]),j=Math.sqrt(L[0]*L[0]+L[1]*L[1]);return Math.acos(V/(U*j))=i;v--){const _=e[v];l.push([_[0],_[1]])}else for(let v=0;v=0;v--){const _=o[v];l.push([_[0],_[1]])}return l}function ove(n){const{prevCanvasPoints:e,editCanvasPoints:o,startCrossingIndex:i,snapIndex:l}=this.editData;if(i===void 0||l===void 0)return;const c=n.detail,{element:g}=c,v=[...o];FK(g,v,e[l],this.commonData),v.length>o.length&&v.pop();let _,T;i>l?(_=l,T=i):(_=i,T=l);const P=ds(e[_],v[0]),I=ds(e[_],v[v.length-1]),R=ds(e[T],v[0]),L=ds(e[T],v[v.length-1]),V=[];for(let z=0;z<_;z++){const $=e[z];V.push([$[0],$[1]])}const U=P+L,j=I+R;if(U=0;z--){const $=v[z];V.push([$[0],$[1]])}for(let z=T;zXs(o).data.contour.polyline)}function uk(n,e){const o=VK(n),i=[];return o.forEach(l=>{const c=l.length,g=new Array(c);for(let v=0;vi.worldToCanvas(T)),g=uk(o,i),v=[c,...g];dh(e,o.annotationUID,"1",v,l)}function yve(n,e,o){var _;const{viewport:i}=n,l=this._getRenderingOptions(n,o),c=o.data.contour.polyline.map(T=>i.worldToCanvas(T));mc(e,o.annotationUID,"1",c,l);const v=o.data.handles.activeHandleIndex;if(((_=this.configuration.alwaysRenderOpenContourHandles)==null?void 0:_.enabled)===!0){const T=this.configuration.alwaysRenderOpenContourHandles.radius,P="0",I=[c[0],c[c.length-1]];v===0?I.shift():v===1&&I.pop(),$o(e,o.annotationUID,P,I,{color:l.color,handleRadius:T})}if(v!==null){const T="1",P=v===0?0:c.length-1,I=c[P];$o(e,o.annotationUID,T,[I],{color:l.color})}}function wve(n,e,o){const{viewport:i}=n,{openUShapeContourVectorToPeak:l}=o.data,{polyline:c}=o.data.contour;if(this.renderOpenContour(n,e,o),!l)return;const g=i.worldToCanvas(c[0]),v=i.worldToCanvas(c[c.length-1]),_=[i.worldToCanvas(l[0]),i.worldToCanvas(l[1])],T=this._getRenderingOptions(n,o);mc(e,o.annotationUID,"first-to-last",[g,v],{color:T.color,width:T.width,closePath:!1,lineDash:"2,2"}),mc(e,o.annotationUID,"midpoint-to-open-contour",[_[0],_[1]],{color:T.color,width:T.width,closePath:!1,lineDash:"2,2"})}function Cve(n,e,o){const i=this._getRenderingOptions(n,o),{allowOpenContours:l}=this.configuration,{canvasPoints:c}=this.drawData;if(i.closePath=!1,mc(e,o.annotationUID,"1",c,i),l){const g=c[0],v=c[c.length-1];gve(g,v,this.configuration.closeContourProximity)?mc(e,o.annotationUID,"2",[v,g],i):$o(e,o.annotationUID,"0",[g],{color:i.color,handleRadius:2})}}function _ve(n,e,o){const{viewport:i}=n,{fusedCanvasPoints:l}=this.editData;if(l===void 0){this.renderClosedContour(n,e,o);return}const c=uk(o,i),g=[l,...c],v=this._getRenderingOptions(n,o),_="preview-1";o.parentAnnotationUID&&v.fillOpacity&&(v.fillOpacity=0),dh(e,o.annotationUID,_,g,v)}function xve(n,e,o){const{fusedCanvasPoints:i}=this.editData;if(i===void 0){this.renderOpenContour(n,e,o);return}const l=this._getRenderingOptions(n,o);mc(e,o.annotationUID,"preview-1",i,l)}function Sve(n,e,o){if(o.parentAnnotationUID)return;const{viewport:i}=n,l=this._getRenderingOptions(n,o),c=o.data.contour.polyline.map(V=>i.worldToCanvas(V)),g=uk(o,i),v="1",_=c[0],T=6,P=100,I=[];for(let V=0;V0}else if(n instanceof ts){const{preScale:o}=n.getImageData()||{};return!!(o!=null&&o.scaled)}else return!1}function QE(n,e){let o=0;for(let i=0;ithis.moveAnnotation(l,o))}updateContourPolyline(e,o,i,l){var g;const c=((g=this.configuration)==null?void 0:g.decimate)||{};Cc(e,o,i,{decimate:{enabled:!!c.enabled,epsilon:c.epsilon},updateWindingDirection:l==null?void 0:l.updateWindingDirection})}getPolylinePoints(e){var o;return((o=e.data.contour)==null?void 0:o.polyline)??e.data.polyline}renderAnnotationInstance(e){const{enabledElement:o,annotationStyle:i,svgDrawingHelper:l}=e,c=e.annotation;if(c.parentAnnotationUID)return;const{annotationUID:g}=c,{viewport:v}=o,{worldToCanvas:_}=v,T=this.getPolylinePoints(c).map(z=>_(z)),{lineWidth:P,lineDash:I,color:R,fillColor:L,fillOpacity:V}=i,U=uk(c,v),j=[T,...U];return dh(l,g,"contourPolyline",j,{color:R,lineDash:I,lineWidth:Math.max(.1,P),fillColor:L,fillOpacity:V}),!0}}class Ove{constructor(){this.annotationUIDs=new Set,this._isVisible=!0,this.visibleFilter=this.unboundVisibleFilter.bind(this)}unboundVisibleFilter(e){return!this._isVisible||!this.annotationUIDs.has(e)}has(e){return this.annotationUIDs.has(e)}setVisible(e=!0,o,i){this._isVisible!==e&&(this._isVisible=e,this.annotationUIDs.forEach(l=>{const c=Xs(l);if(!c){this.annotationUIDs.delete(l);return}if(c.isVisible===e||!e&&(i==null?void 0:i(l))===!1)return;c.isVisible=e;const g={...o,annotation:c};Or(pr,Xe.ANNOTATION_MODIFIED,g)}))}get isVisible(){return this._isVisible}findNearby(e,o){const i=[...this.annotationUIDs];if(i.length===0)return null;if(!e)return i[o===1?0:i.length-1];const l=i.indexOf(e);return l===-1||l+o<0||l+o>=i.length?null:i[l+o]}add(...e){e.forEach(o=>this.annotationUIDs.add(o))}remove(...e){e.forEach(o=>this.annotationUIDs.delete(o))}clear(){this.annotationUIDs.clear()}}const $a={...b6e,...R6e,resetAnnotationManager:c5e},Mve=Object.freeze(Object.defineProperty({__proto__:null,AnnotationGroup:Ove,FrameOfReferenceSpecificAnnotationManager:BH,config:nme,locking:Q8e,selection:r5e,state:$a,visibility:l5e},Symbol.toStringTag,{value:"Module"})),YN="PlanarFreehandContourSegmentationTool";function lP(n,e=[]){const{viewport:o,sliceData:i,annotation:l}=n,c=new Map,{toolName:g,originalToolName:v}=l.metadata,_=v||g,T=(O0(_,o.element)||[]).filter(P=>!P.metadata.originalToolName||P.metadata.originalToolName===_);if(_!==YN){const P=O0(YN,o.element);P!=null&&P.length&&P.forEach(I=>{const{metadata:R}=I;R.originalToolName===_&&R.originalToolName!==R.toolName&&T.push(I)})}if(!(T!=null&&T.length))return c;for(let P=0;PL.metadata.sliceIndex===P);if(!(I!=null&&I.length))continue;const R=I.filter(L=>e.every(V=>{const U=V.parentKey?V.parentKey(L):L,j=U==null?void 0:U[V.key];return Array.isArray(j)?j.every((z,$)=>z===V.value[$]):j===V.value}));R.length&&c.set(P,R)}return c}function Pve(n,e){const o=lP(n,e),i=[];if(!(o!=null&&o.size))return i;for(const l of o.values())l.forEach(c=>{i.push(c)});return i}function UK(n,e,o){const i=o2({data:{},metadata:{}},o);return Object.assign(i,{highlighted:!1,invalidated:!0,autoGenerated:!0,annotationUID:void 0,cachedStats:{},childAnnotationUIDs:[],parentAnnotationUID:void 0}),Object.assign(i.data,{handles:{points:e.points||e||[],interpolationSources:e.sources,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},contour:{...o.data.contour,polyline:n}}),i}function Rve(n,e){const o=lP(e,[{key:"interpolationUID",value:e.interpolationUID}]),i=Ave(o);if(!i){console.warn("No annotations found to interpolate",o);return}const l=Lve(o,n.annotationUID),c=[];for(let g=i[0]+1;g=e[0];c--){const g=o.get(c);if(g!=null&&g.length){if(g[0].autoGenerated)continue;g.length>1&&(l=!1),i.push(c);break}}if(!(!l||!i.length)){for(let c=n+1;c<=e[1];c++){const g=o.get(c);if(g!=null&&g.length){if(g[0].autoGenerated)continue;g.length>1&&(l=!1),i.push(c);break}}if(!(!l||i.length<2))return i}}const{PointsManager:JN}=J0;function Vve(n,e=12){const o=JN.create3(e);o.sources=[];const{sources:i}=o,{length:l,sources:c=[]}=n,g=5;if(li.push(JN.create3(e)));const _=Uve(n,g),T=Bve(_,e),P=[];if((T==null?void 0:T.length)>2){let I=-1;const R=v/3;T.forEach(U=>{const[j,,z]=U,$=Math.ceil((j+z)/2);z-I2*R?(d6(P,I,j,v,l),I=d6(P,j,$,v,l)):I=d6(P,I,$,v,l),z-I>R&&(I=d6(P,I,z,v,l)))});const L=P[0];eD(L+l-I,l)>2*R&&d6(P,I,L-R,v,l)}else{const I=Math.floor(l/e);d6(P,-1,l-I,I,l)}return P.forEach(I=>{const R=n.getPointArray(I);o.push(R),c.forEach((L,V)=>i[V].push(L.getPoint(I)))}),o}function Uve(n,e=6){const{length:o}=n,i=nr(),l=nr(),c=new Float32Array(o);for(let g=0;g{try{e&&(o.isInterpolationUpdate=!0,o.autoGenerated=!1),$ve(n)}finally{e&&(o.autoGenerated=!0)}})}function $ve(n){const{annotation:e}=n;Wve(e);const{interpolationData:o,interpolationList:i}=Rve(e,n)||{};if(!o||!i)return;const l={toolName:e.metadata.toolName,toolType:e.metadata.toolName,viewport:n.viewport};for(let T=0;Tv.x.length,i)})}function zve(n,e,o,i,l,c,g){const[v,_]=i,T=(o-v)/(_-v),P=l.get(v)[0],I=l.get(_)[0],R=qve(n,e,T,c),L=T>.5?I:P,V=Vve(R);l.has(o)?Kve(R,V,o,L,g):Hve(R,V,o,L,g)}function Hve(n,e,o,i,l){var P;const c=n.points,{viewport:g}=l,v=UK(c,e,i),_=g.getViewReference({sliceIndex:o});if(!_)throw new Error(`Can't find slice ${o}`);Object.assign(v.metadata,_),$a.addAnnotation(v,g.element),(P=i.onInterpolationComplete)==null||P.call(i,v,i);const{parentAnnotationUID:T}=i;if(T){const I=$a.getAnnotation(T),R=BK(I,o,l);YC(g,R,v)}}function BK(n,e,o){const{viewport:i}=o,l=$a.getAnnotations(n.metadata.toolName,i.element);for(let c=0;c!P.autoGenerated)||(v=c||v===i||_.forEach(T=>{T.autoGenerated&&($a.removeAnnotation(T.annotationUID),g.push(T))});if(g.length){const v={annotations:g,element:n.viewport.element,viewportId:n.viewport.id,renderingEngineId:n.viewport.getRenderingEngine().id};Or(n.viewport.element,Xe.INTERPOLATED_ANNOTATIONS_REMOVED,v)}if(l>=0&&c{var L;const o=e.detail.annotation;if(!(o!=null&&o.metadata))return;const{toolName:i,originalToolName:l}=o.metadata;if(!Tu.toolNames.includes(i)&&!Tu.toolNames.includes(l))return;const c=rw(o);if(!c){console.warn("Unable to find viewport for",o);return}const g=NS(c),v={viewport:c,sliceData:g,annotation:o,interpolationUID:o.interpolationUID},_=!!o.interpolationUID;if(o.autoGenerated=!1,_){sb(v),nw(v);return}const T=[{key:"segmentIndex",value:o.data.segmentation.segmentIndex,parentKey:V=>V.data.segmentation},{key:"viewPlaneNormal",value:o.metadata.viewPlaneNormal,parentKey:V=>V.metadata},{key:"viewUp",value:o.metadata.viewUp,parentKey:V=>V.metadata}];let P=Pve(v,T);const{sliceIndex:I}=o.metadata,R=new Set;P.forEach(V=>{if(V.interpolationCompleted||V.metadata.sliceIndex===I){const{interpolationUID:U}=V;R.add(U)}}),P=P.filter(V=>!R.has(V.interpolationUID)),o.interpolationUID=((L=P[0])==null?void 0:L.interpolationUID)||Zve(),v.interpolationUID=o.interpolationUID,nw(v)},Tu.handleAnnotationUpdate=e=>{const o=e.detail.annotation,{changeType:i=n0.HandlesUpdated}=e.detail;if(!(o!=null&&o.metadata))return;const{toolName:l,originalToolName:c}=o.metadata;if(!Tu.toolNames.includes(l)&&!Tu.toolNames.includes(c)||!Qve.includes(i))return;const g=rw(o);if(!g){console.warn("Unable to find matching viewport for annotation interpolation",o);return}o.autoGenerated&&(_h(o),o.autoGenerated=!1);const v=NS(g),_={viewport:g,sliceData:v,annotation:o,interpolationUID:o.interpolationUID,isInterpolationUpdate:i===n0.InterpolationUpdated};nw(_)},Tu.handleAnnotationDelete=e=>{const o=e.detail.annotation;if(!(o!=null&&o.metadata))return;const{toolName:i}=o.metadata;if(!Tu.toolNames.includes(i)||o.autoGenerated)return;const l=rw(o);if(!l){console.warn("No viewport, can't delete interpolated results",o);return}const c=NS(l),g={viewport:l,sliceData:c,annotation:o,interpolationUID:o.interpolationUID};o.autoGenerated=!1,sb(g)};let cf=Tu;function NS(n){return{numberOfSlices:n.getNumberOfSlices(),imageIndex:n.getCurrentImageIdIndex()}}function GK(n){n.forEach(e=>{const o=la(e);if(!o){console.warn(`ToolGroup not available for ${e}`);return}o.getViewportsInfo().forEach(l=>{const{renderingEngineId:c,viewportId:g}=l,v=ha(c);if(!v){console.warn(`RenderingEngine not available for ${c}`);return}const _=v.getViewport(g);Q8(_.element)})})}function n5(n){const i=No.getState().viewportSegRepresentations;return Object.entries(i).filter(([,c])=>c.some(g=>g.segmentationId===n)).map(([c])=>c)}function eke(n,e){const o=io(n);if(!o)throw new Error(`No segmentation state found for ${n}`);const{segments:i}=o;return i[e].locked}function tke(n,e,o=!0){const i=io(n);if(!i)throw new Error(`No segmentation state found for ${n}`);const{segments:l}=i;l[e].locked=o,cu(n)}function ip(n){const e=io(n);if(!e)throw new Error(`No segmentation state found for ${n}`);const{segments:o}=e;return Object.keys(o).filter(l=>o[l].locked).map(l=>parseInt(l))}const nke=Object.freeze(Object.defineProperty({__proto__:null,getLockedSegmentIndices:ip,isSegmentIndexLocked:eke,setSegmentIndexLocked:tke},Symbol.toStringTag,{value:"Module"}));function WK(){return No.getNextColorLUTIndex()}const E9=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]];function km(n,e){const o=No,i=e??WK();let l=[...n];if(Qi(l[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),l=[[0,0,0,0],...l]),l=l.map(c=>c.length===3?[c[0],c[1],c[2],255]:c),l.length<255){const c=E9.slice(l.length);l=[...l,...c]}return o.addColorLUT(l,i),i}function rke(n,e){if(!n)throw new Error("addColorLUT: colorLUT is required");return km(n,e)}function ike(n,e,o){if(!tk(o))throw new Error(`setColorLUT: could not find colorLUT with index ${o}`);const i=El(n,{segmentationId:e});if(!i)throw new Error(`viewport specific state for viewport ${n} does not exist`);i.forEach(l=>{l.colorLUTIndex=o}),ef(n,e)}function Th(n,e,o){const i=El(n,{segmentationId:e});if(!i||i.length===0)return null;const l=i[0],{colorLUTIndex:c}=l,g=tk(c);let v=g[o];if(!v){if(typeof o!="number")return console.warn(`Can't create colour for LUT index ${o}`),null;v=g[o]=[0,0,0,0]}return v}function $K(n,e,o,i){const l=Th(n,e,o);for(let c=0;cSs(_).id);GK(v)}return l}_getContourSegmentationStyle(e){const o=e.annotation,{segmentationId:i,segmentIndex:l}=o.data.segmentation,{viewportId:c}=e.styleSpecifier,g=El(c,{segmentationId:i});if(!(g!=null&&g.length))return{};g.length>1?g.find(j=>j.segmentationId===i&&j.type===Ti.Contour):g[0];const{autoGenerated:v}=o,T=ip(i).includes(l),{color:P,fillColor:I,lineWidth:R,fillOpacity:L,lineDash:V,visibility:U}=zK({segmentationId:i,segmentIndex:l,viewportId:c,autoGenerated:v});return{color:P,fillColor:I,lineWidth:R,fillOpacity:L,lineDash:V,textbox:{color:P},visibility:U,locked:T}}};qP.PreviewSegmentIndex=255;let kv=qP;function HK(n,e){const o=Hr("generalSeriesModule",n);return Ah(o.modality,n,e)}function Ah(n,e,o){return n==="CT"?"HU":n==="PT"?ske(e,o):""}function ske(n,e){if(!e.isPreScaled)return"raw";if(e.isSuvScaled)return"SUV";const o=Hr("generalSeriesModule",n);if((o==null?void 0:o.modality)==="PT"){const i=Hr("petSeriesModule",n);return(i==null?void 0:i.units)||"unitless"}return"unknown"}const{pointCanProjectOnLine:ab}=c4,{EPSILON:ake}=ep,lke=1-ake,XP=class XP extends kv{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,shadow:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:h2.Shift,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,makeClockWise:!0,subPixelResolution:4,smoothing:{smoothOnAdd:!1,smoothOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},interpolation:{enabled:!1,onInterpolationComplete:null},decimate:{enabled:!1,epsilon:.1},displayOnePointAsCrosshairs:!1,calculateStats:!0,getTextLines:uke,statsCalculator:mf}}){super(e,o),this.isDrawing=!1,this.isEditingClosed=!1,this.isEditingOpen=!1,this.addNewAnnotation=i=>{const l=i.detail,{element:c}=l,g=this.createAnnotation(i);this.addAnnotation(g,c);const v=fi(c,this.getToolName());return this.activateDraw(i,g,v),i.preventDefault(),Un(v),g},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,_=fi(v,this.getToolName());this.activateOpenContourEndEdit(i,l,_,c)},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c,v=fi(g,this.getToolName());l.data.contour.closed?this.activateClosedContourEdit(i,l,v):this.activateOpenContourEdit(i,l,v),i.preventDefault()},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{polyline:T}=l.data.contour;let P=_.worldToCanvas(T[0]);for(let L=1;L{const l=this.isDrawing,c=this.isEditingOpen,g=this.isEditingClosed;l?this.cancelDrawing(i):c?this.cancelOpenContourEdit(i):g&&this.cancelClosedContourEdit(i)},this._calculateCachedStats=(i,l,c,g)=>{const{data:v}=i,{cachedStats:_}=v,{polyline:T,closed:P}=v.contour,I=Object.keys(_);for(let L=0;Ll.worldToCanvas(Te)),K={isPreScaled:Rh(l,V),isSuvScaled:this.isSuvScaled(l,V,i.metadata.referencedImageId)},X=Ah(z.Modality,i.metadata.referencedImageId,K),ee=Ml(U,()=>{const Te=v.contour.polyline,Ve=Te.length,Pe=new Array(Ve);for(let Et=0;Et{const{data:v}=i,_=this.getTargetId(l),T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:c.viewport.id,annotationUID:i.annotationUID},P=this.getLinkedTextBoxStyle(T,i);if(!P.visibility)return;const I=this.configuration.getTextLines(v,_);if(!I||I.length===0)return;const R=v.contour.polyline.map(X=>l.worldToCanvas(X));if(!v.handles.textBox.hasMoved){const X=Pl(R);v.handles.textBox.worldPosition=l.canvasToWorld(X)}const L=l.worldToCanvas(v.handles.textBox.worldPosition),U=A2(g,i.annotationUID??"","1",I,L,R,{},P),{x:j,y:z,width:$,height:K}=U;v.handles.textBox.worldBoundingBox={topLeft:l.canvasToWorld([j,z]),topRight:l.canvasToWorld([j+$,z]),bottomLeft:l.canvasToWorld([j,z+K]),bottomRight:l.canvasToWorld([j+$,z+K])}},Ame(this),Gme(this),Jme(this),cve(this),dve(this),Tve(this),this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,o){if(!o||!o.length)return;const i=_n(e),{viewport:l}=i;let c;if(l instanceof ns){const g=l.getCamera(),{spacingInNormalDirection:v}=q8(l,g);c=this.filterAnnotationsWithinSlice(o,g,v)}else c=lk(l,o);return c}filterAnnotationsWithinSlice(e,o,i){const{viewPlaneNormal:l}=o,c=e.filter(T=>{let P=T.metadata.viewPlaneNormal;if(!T.metadata.referencedImageId&&!P&&T.metadata.FrameOfReferenceUID){for(const R of T.data.contour.polyline){const L=z0(nr(),R,o.focalPoint),V=mi(L,o.viewPlaneNormal);if(!Qi(V,0))return!1}return T.metadata.viewPlaneNormal=o.viewPlaneNormal,T.metadata.cameraFocalPoint=o.focalPoint,!0}if(!P){const{referencedImageId:R}=T.metadata,{imageOrientationPatient:L}=Hr("imagePlaneModule",R),V=Ei(L[0],L[1],L[2]),U=Ei(L[3],L[4],L[5]);P=nr(),ro(P,V,U),T.metadata.viewPlaneNormal=P}const I=Math.abs(mi(l,P))>lke;return P&&I});if(!c.length)return[];const g=i/2,{focalPoint:v}=o,_=[];for(const T of c){const I=T.data.contour.polyline[0];if(!T.isVisible)continue;const R=nr();z0(R,v,I);const L=mi(R,l);Math.abs(L){g.data.handles.points.length=0};return o2(i,{data:{contour:{polyline:[[...o]]},label:"",cachedStats:{}},onInterpolationComplete:l})}getAnnotationStyle(e){return super.getAnnotationStyle(e)}renderAnnotationInstance(e){const{enabledElement:o,targetId:i,svgDrawingHelper:l}=e,c=e.annotation;let g=!1;const{viewport:v,renderingEngine:_}=o,T=this.isDrawing,P=this.isEditingOpen,I=this.isEditingClosed;if(!(T||P||I))this.configuration.displayOnePointAsCrosshairs&&c.data.contour.polyline.length===1?this.renderPointContourWithMarker(o,l,c):this.renderContour(o,l,c);else{const R=this.commonData.annotation.annotationUID;if(c.annotationUID===R)if(T)this.renderContourBeingDrawn(o,l,c);else if(I)this.renderClosedContourBeingEdited(o,l,c);else if(P)this.renderOpenContourBeingEdited(o,l,c);else throw new Error(`Unknown ${this.getToolName()} annotation rendering state`);else this.configuration.displayOnePointAsCrosshairs&&c.data.contour.polyline.length===1?this.renderPointContourWithMarker(o,l,c):this.renderContour(o,l,c);g=!0}if(this.configuration.calculateStats)return this._calculateStatsIfActive(c,i,v,_,o),this._renderStats(c,v,o,l),g}_calculateStatsIfActive(e,o,i,l,c){var v,_,T,P;const g=(v=this.commonData)==null?void 0:v.annotation.annotationUID;if(!(e.annotationUID===g&&!((_=this.commonData)!=null&&_.movingTextBox))&&!((T=this.commonData)!=null&&T.movingTextBox)){const{data:I}=e;(P=I.cachedStats[o])!=null&&P.unit?e.invalidated&&this._throttledCalculateCachedStats(e,i,l,c):(I.cachedStats[o]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,unit:null},this._calculateCachedStats(e,i,l,c))}}updateClosedCachedStats({viewport:e,points:o,imageData:i,metadata:l,cachedStats:c,targetId:g,modalityUnit:v,canvasCoordinates:_,calibratedScale:T,deltaInX:P,deltaInY:I}){var ut,wt,Et,qt;const{scale:R,areaUnit:L,unit:V}=T,{voxelManager:U}=e.getImageData(),j=qs(i,o[0]);j[0]=Math.floor(j[0]),j[1]=Math.floor(j[1]),j[2]=Math.floor(j[2]);let z=j[0],$=j[0],K=j[1],X=j[1],ee=j[2],ne=j[2];for(let $t=1;$t{let Dn=!0;const Nn=e.worldToCanvas($t);return Nn[1]!=Je&&(Ge=0,Je=Nn[1],it=fK(_,Nn,[je[0],Nn[1]]),it.sort(function(xn){return function(et,Me){return et[xn]===Me[xn]?0:et[xn]it[0][0]&&(it.shift(),Ge++),Ge%2===0&&(Dn=!1),Dn},boundsIJK:Ve,returnPoints:this.configuration.storePointData}));const qe=this.configuration.statsCalculator.getStatistics();c[g]={Modality:l.Modality,area:ce,perimeter:ge,mean:(ut=qe.mean)==null?void 0:ut.value,max:(wt=qe.max)==null?void 0:wt.value,min:(Et=qe.min)==null?void 0:Et.value,stdDev:(qt=qe.stdDev)==null?void 0:qt.value,statsArray:qe.array,pointsInShape:Ke,areaUnit:L,modalityUnit:v,unit:V}}updateOpenCachedStats({targetId:e,metadata:o,canvasCoordinates:i,cachedStats:l,modalityUnit:c,calibratedScale:g,deltaInX:v,deltaInY:_}){const{scale:T,unit:P}=g;let I=QE(i,closed)/T;I*=Math.sqrt(Math.pow(v,2)+Math.pow(_,2)),l[e]={Modality:o.Modality,length:I,modalityUnit:c,unit:P}}};XP.toolName="PlanarFreehandROI";let n4=XP;function uke(n,e){const o=n.cachedStats[e],{area:i,mean:l,stdDev:c,length:g,perimeter:v,max:_,min:T,isEmptyArea:P,unit:I,areaUnit:R,modalityUnit:L}=o||{},V=[];if(bs(i)){const U=P?"Area: Oblique not supported":`Area: ${E0(i)} ${R}`;V.push(U)}return bs(l)&&V.push(`Mean: ${E0(l)} ${L}`),bs(_)&&V.push(`Max: ${E0(_)} ${L}`),bs(T)&&V.push(`Min: ${E0(T)} ${L}`),bs(c)&&V.push(`Std Dev: ${E0(c)} ${L}`),bs(v)&&V.push(`Perimeter: ${E0(v)} ${I}`),bs(g)&&V.push(`${E0(g)} ${I}`),V}const YP=class YP extends n4{constructor(e){const o=o2({configuration:{calculateStats:!1,allowOpenContours:!1}},e);super(o)}isContourSegmentationTool(){return!0}renderAnnotationInstance(e){const o=e.annotation,{invalidated:i}=o,l=super.renderAnnotationInstance(e);if(i){const{segmentationId:c}=o.data.segmentation;K2(c)}return l}};YP.toolName="PlanarFreehandContourSegmentationTool";let vf=YP;const cke={[Ti.Labelmap]:MK,[Ti.Contour]:IK,[Ti.Surface]:VH},o7=vf.toolName;class fke{constructor(){this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this._getAllViewports=()=>Il().flatMap(o=>o.getViewports()),this._renderFlaggedSegmentations=()=>{this._throwIfDestroyed(),Array.from(this._needsRender).forEach(o=>{this._triggerRender(o)}),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}}renderSegmentationsForViewport(e){const o=e?[e]:this._getViewportIdsForSegmentation();this._setViewportsToBeRenderedNextFrame(o)}renderSegmentation(e){const o=this._getViewportIdsForSegmentation(e);this._setViewportsToBeRenderedNextFrame(o)}_getViewportIdsForSegmentation(e){const o=this._getAllViewports(),i=[];for(const l of o){const c=l.id;if(e){const g=El(c,{segmentationId:e});(g==null?void 0:g.length)>0&&i.push(c)}else{const g=El(c);(g==null?void 0:g.length)>0&&i.push(c)}}return i}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setViewportsToBeRenderedNextFrame(e){e.forEach(o=>{this._needsRender.add(o)}),this._render()}_render(){this._needsRender.size>0&&this._animationFrameSet===!1&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedSegmentations),this._animationFrameSet=!0)}_triggerRender(e){const o=El(e);if(!(o!=null&&o.length))return;const{viewport:i}=yo(e)||{};if(!i)return;const l=[],c=o.map(g=>{g.type===Ti.Contour&&this._addPlanarFreeHandToolIfAbsent(i);const v=cke[g.type];try{const _=v.render(i,g);l.push(_)}catch(_){console.error(_)}return Promise.resolve({segmentationId:g.segmentationId,type:g.type})});Promise.allSettled(c).then(g=>{const v=g.filter(P=>P.status==="fulfilled").map(P=>P.value);function _(P){const{element:I,viewportId:R}=P.detail;I.removeEventListener(vr.IMAGE_RENDERED,_),v.forEach(L=>{const V={viewportId:R,segmentationId:L.segmentationId,type:L.type};Or(pr,Xe.SEGMENTATION_RENDERED,{...V})})}i.element.addEventListener(vr.IMAGE_RENDERED,_),i.render()})}_addPlanarFreeHandToolIfAbsent(e){o7 in ar.tools||t2(vf);const o=Ss(e.id);o.hasTool(o7)||(o.addTool(o7),o.setToolPassive(o7))}}function r5(n){KK.renderSegmentationsForViewport(n)}function r_(n){KK.renderSegmentation(n)}const KK=new fke;function hke({modifiedSlicesToUse:n,representationData:e,type:o}){const i=Jn.getVolume(e[o].volumeId);if(!i){console.warn("segmentation not found in cache");return}const{imageData:l,vtkOpenGLTexture:c}=i;let g;if((n==null?void 0:n.length)>0)g=n;else{const v=l.getDimensions()[2];g=[...Array(v).keys()]}g.forEach(v=>{c.setUpdatedFrame(v)}),l.modified()}function dke({viewportIds:n,segmentationId:e}){n.forEach(o=>{let i=El(o,{segmentationId:e});i=i.filter(l=>l.type===Ti.Labelmap),i.forEach(l=>{if(l.segmentationId!==e)return;const c=yo(o);if(!c)return;const{viewport:g}=c;if(g instanceof ns)return;const v=mm(o,e);v!=null&&v.length&&v.forEach((_,T)=>{const P=_.actor.getMapper().getInputData(),I=Sh(o,e),R=Jn.getImage(I[T]);P.modified(),IC(P,R)})})})}const gke=function(n){const{segmentationId:e,modifiedSlicesToUse:o}=n.detail,{representationData:i}=io(e),l=n5(e),c=l.some(_=>{const{viewport:T}=yo(_);return T instanceof ns}),g=l.some(_=>{const{viewport:T}=yo(_);return T instanceof ts}),v=c&&g;l.forEach(_=>{const{viewport:T}=yo(_);T instanceof ns&&hke({modifiedSlicesToUse:v?[]:o,representationData:i,type:Ti.Labelmap}),T instanceof ts&&dke({viewportIds:l,segmentationId:e})})},qK=function(n){const{segmentationId:e}=n.detail,{representationData:o}=io(e);o.Labelmap&&gke(n),r_(e)},XK=function(n){const{segmentationId:e}=n.detail;r_(e)};function YK(n,e){return No.updateLabelmapSegmentationImageReferences(n,e)}const pke=function(n){if(!n)return;const e=_n(n);if(!e)return;const{viewport:o}=e;o instanceof xs||(n.addEventListener(vr.STACK_NEW_IMAGE,yv),n.addEventListener(vr.IMAGE_RENDERED,yv))},mke=function(n){n.removeEventListener(vr.STACK_NEW_IMAGE,yv),n.removeEventListener(vr.IMAGE_RENDERED,yv)};function yv(n){const e=n.detail,{viewportId:o,renderingEngineId:i}=e,{viewport:l}=i2(o,i),c=El(o);if(!(c!=null&&c.length))return;const g=c.filter(T=>T.type===Ti.Labelmap),v=l.getActors();g.forEach(T=>{const{segmentationId:P}=T;YK(o,P)});const _=g.flatMap(T=>mm(o,T.segmentationId)).filter(T=>T!==void 0);_.length&&(_.forEach(T=>{g.find(I=>{const R=Sh(o,I.segmentationId);return R==null?void 0:R.includes(T.referencedId)})||l.removeActors([T.uid])}),g.forEach(T=>{const{segmentationId:P}=T,I=l.getCurrentImageId(),R=Sh(o,P);if(!R)return;const L=V=>{const U=Jn.getImage(V);if(!U){console.warn("No derived image found in the cache for segmentation representation",T);return}const j=v.find(z=>z.referencedId===V);if(j){const z=j.actor.getMapper().getInputData();z.setDerivedImage?z.setDerivedImage(U):IC(z,U)}else{const{dimensions:z,spacing:$,direction:K}=l.getImageDataMetadata(U),X=Jn.getImage(I)||{imageId:I},{origin:ee}=l.getImageDataMetadata(X),ne=ee,le=U.voxelManager.getConstructor(),ce=U.voxelManager.getScalarData(),ge=d0.newInstance({name:"Pixels",numberOfComponents:1,values:new le(ce)}),pe=Wv.newInstance();pe.setDimensions(z[0],z[1],1),pe.setSpacing($),pe.setDirection(K),pe.setOrigin(ne),pe.getPointData().setScalars(ge),pe.modified(),l.addImages([{imageId:V,representationUID:`${P}-${Ti.Labelmap}-${U.imageId}`,callback:({imageActor:we})=>{we.getMapper().setInputData(pe)}}]),r5(o);return}};R.forEach(L),l.render(),n.type===vr.IMAGE_RENDERED&&l.element.removeEventListener(vr.IMAGE_RENDERED,yv)}))}const JK={enable:pke,disable:mke};async function vke(n){const e=n.detail.annotation;if(!ak(e))return;const o=yke(e),i=wke(o,e);if(!i.length){Or(pr,Xe.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:o.element,sourceAnnotation:e});return}const l=t4(e.data.contour.polyline,o),c=SK(o,l,i);if(!c.length){Or(pr,Xe.ANNOTATION_CUT_MERGE_PROCESS_COMPLETED,{element:o.element,sourceAnnotation:e});return}if(c.length>1){TK(o,e,l,c);return}const{targetAnnotation:g,targetPolyline:v,isContourHole:_}=c[0];if(_){const{contourHoleProcessingEnabled:T=!1}=n.detail;if(!T)return;YC(o,g,e)}else ZM(o,g,v,e,l)}function kke(n,e=!1){const o="PlanarFreehandContourSegmentationTool",i=Ss(n.id,n.renderingEngineId);let l;return i?i.hasTool(o)?i.getToolOptions(o)||(l=`Tool ${o} must be in active/passive state in ${i.id} toolGroup`):l=`Tool ${o} not added to ${i.id} toolGroup`:l=`ToolGroup not found for viewport ${n.id}`,l&&!e&&console.warn(l),!l}function yke(n){const e=tP(n);return e.find(i=>kke(i,!0))??e[0]}function wke(n,e){const{annotationUID:o}=e;return Jv().filter(l=>l.annotationUID&&l.annotationUID!==o&&ak(l)&&UH(l,e)&&n.isReferenceViewable(l.metadata))}function Cke(n){const e=n.detail.annotation;Ch(e)}function ZK(n){const e=n.detail.annotation;ak(e)&&vke(n)}function D9(n){if(!n.detail.removed.length)return;Il().forEach(i=>{const c=i.getViewports().map(g=>g.id);Un(c)})}function QK(n){const{viewportId:e}=n.detail;Un([e])}function _ke(n){const e=n.detail.annotation;ak(e)&&Cke(n)}const eq=function(n){Q8(n.detail.element)},xke=function(n){n.addEventListener(vr.IMAGE_RENDERED,eq)},Ske=function(n){n.removeEventListener(vr.IMAGE_RENDERED,eq)},tq={enable:xke,disable:Ske},{Active:Tke}=ao;function i5(n,e,o){if(ar.isInteractingWithTool)return!1;const{renderingEngineId:i,viewportId:l}=o.detail,c=Ss(l,i);if(!c)return!1;let g;const v=Object.keys(c.toolOptions);for(let _=0;_{for(const _ of v){if(_.isLocked||!_.isVisible)continue;const T=g.getHandleNearImagePoint(n,_,o,l);if(T){c.push({tool:g,annotation:_,handle:T});break}}}),c}function ck(n,e){const o=[];for(let i=0;i0&&o.push({tool:l,annotations:c}))}return o}function uP(n,e,o,i="mouse"){const l=i==="touch"?36:6,c=[];return e.forEach(({tool:g,annotations:v})=>{for(const _ of v){if(_.isLocked||!_.isVisible)continue;if(g.isPointNearTool(n,_,o,l,i)){c.push({tool:g,annotation:_});break}}}),c}const{Active:Eke}=ao;function i_(n){const{renderingEngineId:e,viewportId:o,event:i}=n.detail,l=t5(i)||J8.getModifierKey(),c=Ss(o,e);if(!c)return null;const g=Object.keys(c.toolOptions),v=c.getDefaultMousePrimary(),_=n.detail.buttons??(i==null?void 0:i.buttons)??v;for(let T=0;TL.mouseButton===_&&L.modifierKey===l);if(I.mode===Eke&&R)return c.getToolInstance(P)}}function O8(n,e,o){const{renderingEngineId:i,viewportId:l}=n.detail,c=Ss(l,i);if(!c)return[];const g=[],v=Object.keys(c.toolOptions);for(let _=0;_R.mouseButton===o);if(e.includes(P.mode)&&(!o||I)){const R=c.getToolInstance(T);g.push(R)}}return g}function Dke(n,e){var I;const o=new Map,{renderingEngineId:i,viewportId:l}=n.detail,c=Ss(l,i);if(!c)return o;const g=Object.keys(c.toolOptions),v=c.getDefaultMousePrimary(),_=n.detail.event,T=(_==null?void 0:_.buttons)??v,P=t5(_)||J8.getModifierKey();for(let R=0;R{var K;return((K=$.bindings)==null?void 0:K.length)&&$.bindings.some(X=>X.mouseButton===T&&X.modifierKey===P)});z&&o.set(V,z)}return o}const{Active:Ike,Passive:Oke}=ao;function Mke(n){if(ar.isInteractingWithTool)return!1;const e=n.detail,{element:o}=e,i=_n(o),{canvas:l}=e.currentPoints;if(!i)return!1;const c=Dke(n,[Ike,Oke]),g=Array.from(c.keys()),v=ck(o,g),_=uP(o,v,l);if(_.length>0){const{tool:T,annotation:P}=_[0],I=c.get(T);return(typeof I.method=="string"?T[I.method]:I.method).call(T,n,P),!0}return!1}const{Active:Pke,Passive:Rke}=ao;function oq(n){if(ar.isInteractingWithTool)return;const e=i_(n);if(e&&typeof e.preMouseDownCallback=="function"&&e.preMouseDownCallback(n))return;const o=n.detail.event.buttons===1,i=O8(n,[Pke],n.detail.event.buttons),l=o?O8(n,[Rke]):void 0,c=[...i||[],...l||[]];if(Mke(n))return;const v=n.detail,{element:_}=v,T=ck(_,c),P=v.currentPoints.canvas,I=iq(_,T,P,"mouse"),R=!!n.detail.event.shiftKey;if(I.length>0){const{tool:V,annotation:U,handle:j}=lb(I);ub(U.annotationUID,R),V.handleSelectedCallback(n,U,j,"Mouse");return}const L=uP(_,T,P,"mouse");if(L.length>0){const{tool:V,annotation:U}=lb(L);ub(U.annotationUID,R),V.toolSelectedCallback(n,U,"Mouse",P);return}e&&typeof e.postMouseDownCallback=="function"&&e.postMouseDownCallback(n)}function lb(n){if(n.length>1){const e=n.find(o=>{const i=!da(o.annotation.annotationUID),l=Ys(o.annotation.annotationUID);return i&&l});if(e)return e}return n[0]}function ub(n,e=!1){e?nk(n)?q1(n,!1):q1(n,!0,!0):q1(n,!0,!1)}function sq(n){if(ar.isInteractingWithTool)return;const e=i_(n);if(e&&!ar.isMultiPartToolActive&&e.addNewAnnotation){const o=e.addNewAnnotation(n,"mouse");q1(o.annotationUID)}}function aq(n){if(ar.isInteractingWithTool)return;const e=i_(n);!e||typeof e.mouseDragCallback!="function"||e.mouseDragCallback(n)}const{Active:Ake,Passive:Lke}=ao;function lq(n){if(ar.isInteractingWithTool||ar.isMultiPartToolActive)return;const e=O8(n,[Ake,Lke]),o=n.detail,{element:i}=o,l=ck(i,e),c=e.filter(v=>!l.some(T=>T.tool.getToolName()===v.getToolName()));let g=!1;for(const{tool:v,annotations:_}of l)typeof v.mouseMoveCallback=="function"&&(g=v.mouseMoveCallback(n,_)||g);c.forEach(v=>{typeof v.mouseMoveCallback=="function"&&v.mouseMoveCallback(n)}),g===!0&&Q8(i)}const uq=i5.bind(null,"Mouse","mouseUpCallback");function cq(n){if(ar.isInteractingWithTool)return;n.detail.buttons=pf.Wheel|(n.detail.event.buttons||0);const e=i_(n);if(e)return e.mouseWheelCallback(n)}const Nke=function(n){n.addEventListener(Xe.MOUSE_CLICK,nq),n.addEventListener(Xe.MOUSE_DOWN,oq),n.addEventListener(Xe.MOUSE_DOWN_ACTIVATE,sq),n.addEventListener(Xe.MOUSE_DOUBLE_CLICK,rq),n.addEventListener(Xe.MOUSE_DRAG,aq),n.addEventListener(Xe.MOUSE_MOVE,lq),n.addEventListener(Xe.MOUSE_UP,uq),n.addEventListener(Xe.MOUSE_WHEEL,cq)},bke=function(n){n.removeEventListener(Xe.MOUSE_CLICK,nq),n.removeEventListener(Xe.MOUSE_DOWN,oq),n.removeEventListener(Xe.MOUSE_DOWN_ACTIVATE,sq),n.removeEventListener(Xe.MOUSE_DOUBLE_CLICK,rq),n.removeEventListener(Xe.MOUSE_DRAG,aq),n.removeEventListener(Xe.MOUSE_MOVE,lq),n.removeEventListener(Xe.MOUSE_UP,uq),n.removeEventListener(Xe.MOUSE_WHEEL,cq)},fq={enable:Nke,disable:bke},{Active:Fke}=ao;function hq(n){const{renderingEngineId:e,viewportId:o}=n.detail,i=J6e(),l=J8.getModifierKey(),c=Ss(o,e);if(!c)return null;const g=Object.keys(c.toolOptions),v=c.getDefaultMousePrimary();for(let _=0;_R.mouseButton===(i??v)&&R.modifierKey===l))return c.getToolInstance(T)}}function Vke(n,e){var _;const o=new Map,{renderingEngineId:i,viewportId:l}=n.detail,c=Ss(l,i);if(!c)return o;const g=Object.keys(c.toolOptions),v=n.detail.key;for(let T=0;T{var j;return(j=U.bindings)==null?void 0:j.some(z=>z.key===v)});V&&o.set(I,V)}return o}function dq(n){const e=hq(n);if(e){const{renderingEngineId:i,viewportId:l}=n.detail,c=Ss(l,i),g=e.getToolName();Object.keys(c.toolOptions).includes(g)&&c.setViewportsCursorByToolName(g)}const o=Vke(n,[ao.Active]);if(o!=null&&o.size){const{element:i}=n.detail;for(const[l,c]of[...o.entries()])(typeof c.method=="function"?c.method:l[c.method]).call(l,i,c,n)}}function gq(n){const e=hq(n);if(!e)return;const{renderingEngineId:o,viewportId:i}=n.detail,l=Ss(i,o);OH();const c=e.getToolName();Object.keys(l.toolOptions).includes(c)&&l.setViewportsCursorByToolName(c)}const Uke=function(n){n.addEventListener(Xe.KEY_DOWN,dq),n.addEventListener(Xe.KEY_UP,gq)},Bke=function(n){n.removeEventListener(Xe.KEY_DOWN,dq),n.removeEventListener(Xe.KEY_UP,gq)},pq={enable:Uke,disable:Bke},{Active:Gke,Passive:Wke,Enabled:$ke}=ao,mq=function(n){O8(n,[Gke,Wke,$ke]).forEach(o=>{o.onCameraModified&&o.onCameraModified(n)})},jke=function(n){n.addEventListener(vr.CAMERA_MODIFIED,mq)},zke=function(n){n.removeEventListener(vr.CAMERA_MODIFIED,mq)},vq={enable:jke,disable:zke},{Active:Hke,Passive:Kke,Enabled:qke}=ao,kq=function(n){O8(n,[Hke,Kke,qke]).forEach(o=>{o.onImageSpacingCalibrated&&o.onImageSpacingCalibrated(n)})},Xke=function(n){n.addEventListener(vr.IMAGE_SPACING_CALIBRATED,kq)},Yke=function(n){n.removeEventListener(vr.IMAGE_SPACING_CALIBRATED,kq)},yq={enable:Xke,disable:Yke},{Active:Jke}=ao;function cP(n){const{renderingEngineId:e,viewportId:o}=n.detail,i=n.detail.event,l=Ss(o,e);if(!l)return null;const c=Object.keys(l.toolOptions),g=Object.keys(i.touches).length,v=t5(i)||J8.getModifierKey(),_=l.getDefaultMousePrimary();for(let T=0;T(L.numTouchPoints===g||g===1&&L.mouseButton===_)&&L.modifierKey===v);if(I.mode===Jke&&R)return l.getToolInstance(P)}}function cb(n,e,o){const{renderingEngineId:i,viewportId:l}=n.detail,c=Ss(l,i);if(!c)return[];const g=[],v=Object.keys(c.toolOptions);for(let _=0;_R.numTouchPoints===o);if(e.includes(P.mode)&&(!o||I)){const R=c.getToolInstance(T);g.push(R)}}return g}const{Active:Zke,Passive:Qke}=ao;function wq(n){if(ar.isInteractingWithTool)return;const e=cP(n);if(e&&typeof e.preTouchStartCallback=="function"&&e.preTouchStartCallback(n))return;const o=Object.keys(n.detail.event.touches).length===1,i=cb(n,[Zke],Object.keys(n.detail.event.touches).length),l=o?cb(n,[Qke]):void 0,c=[...i||[],...l||[],e],g=n.detail,{element:v}=g,_=ck(v,c),T=g.currentPoints.canvas,P=iq(v,_,T,"touch"),I=!1;if(P.length>0){const{tool:L,annotation:V,handle:U}=fb(P);hb(V.annotationUID,I),L.handleSelectedCallback(n,V,U,"Touch");return}const R=uP(v,_,T,"touch");if(R.length>0){const{tool:L,annotation:V}=fb(R);hb(V.annotationUID,I),L.toolSelectedCallback(n,V,"Touch",T);return}e&&typeof e.postTouchStartCallback=="function"&&e.postTouchStartCallback(n)}function fb(n){return n.length>1&&n.find(e=>!da(e.annotation.annotationUID)&&Ys(e.annotation.annotationUID))||n[0]}function hb(n,e=!1){e?nk(n)?q1(n,!1):q1(n,!0,!0):q1(n,!0,!1)}function Cq(n){if(ar.isInteractingWithTool)return;const e=cP(n);if(e&&!ar.isMultiPartToolActive&&e.addNewAnnotation){const o=e.addNewAnnotation(n,"touch");q1(o.annotationUID)}}function _q(n){if(ar.isInteractingWithTool)return;const e=cP(n);!e||typeof e.touchDragCallback!="function"||e.touchDragCallback(n)}const xq=i5.bind(null,"Touch","touchEndCallback"),eye=i5.bind(null,"Touch","touchTapCallback"),Sq=i5.bind(null,"Touch","touchPressCallback"),tye=function(n){n.addEventListener(Xe.TOUCH_START,wq),n.addEventListener(Xe.TOUCH_START_ACTIVATE,Cq),n.addEventListener(Xe.TOUCH_DRAG,_q),n.addEventListener(Xe.TOUCH_END,xq),n.addEventListener(Xe.TOUCH_TAP,eye),n.addEventListener(Xe.TOUCH_PRESS,Sq)},nye=function(n){n.removeEventListener(Xe.TOUCH_START,wq),n.removeEventListener(Xe.TOUCH_START_ACTIVATE,Cq),n.removeEventListener(Xe.TOUCH_DRAG,_q),n.removeEventListener(Xe.TOUCH_END,xq),n.removeEventListener(Xe.TOUCH_PRESS,Sq)},Tq={enable:tye,disable:nye},rye=function(){pr.addEventListener(Xe.ANNOTATION_COMPLETED,cf.handleAnnotationCompleted),pr.addEventListener(Xe.ANNOTATION_MODIFIED,cf.handleAnnotationUpdate),pr.addEventListener(Xe.ANNOTATION_REMOVED,cf.handleAnnotationDelete)},iye=function(){pr.removeEventListener(Xe.ANNOTATION_COMPLETED,cf.handleAnnotationCompleted),pr.removeEventListener(Xe.ANNOTATION_MODIFIED,cf.handleAnnotationUpdate),pr.removeEventListener(Xe.ANNOTATION_REMOVED,cf.handleAnnotationDelete)},Eq={enable:rye,disable:iye},{Active:oye,Passive:sye,Enabled:aye}=ao,Dq=function(n){O8(n,[oye,sye,aye]).forEach(o=>{o.onResetCamera&&o.onResetCamera(n)})},lye=function(n){n.addEventListener(vr.CAMERA_RESET,Dq)},uye=function(n){n.removeEventListener(vr.CAMERA_RESET,Dq)},Iq={enable:lye,disable:uye};function fP(n){const{element:e,viewportId:o}=n.detail,i=cye(o);fye(e),hye(i,e),YM.addViewportElement(o,e),lH.enable(e),DH.enable(e),SH.enable(e),J8.enable(e),JK.enable(e),tq.enable(e),vq.enable(e),yq.enable(e),Iq.enable(e),fq.enable(e),pq.enable(e),Tq.enable(e),ar.enabledElements.push(e)}function cye(n){const e="http://www.w3.org/2000/svg",o=document.createElementNS(e,"svg"),i=`svg-layer-${n}`;o.classList.add("svg-layer"),o.setAttribute("id",i),o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.style.width="100%",o.style.height="100%",o.style.pointerEvents="none",o.style.position="absolute";const l=document.createElementNS(e,"defs"),c=document.createElementNS(e,"filter"),g=document.createElementNS(e,"feOffset"),v=document.createElementNS(e,"feColorMatrix"),_=document.createElementNS(e,"feBlend");return c.setAttribute("id",`shadow-${i}`),c.setAttribute("filterUnits","userSpaceOnUse"),g.setAttribute("result","offOut"),g.setAttribute("in","SourceGraphic"),g.setAttribute("dx","0.5"),g.setAttribute("dy","0.5"),v.setAttribute("result","matrixOut"),v.setAttribute("in","offOut"),v.setAttribute("in2","matrix"),v.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),_.setAttribute("in","SourceGraphic"),_.setAttribute("in2","matrixOut"),_.setAttribute("mode","normal"),c.appendChild(g),c.appendChild(v),c.appendChild(_),l.appendChild(c),o.appendChild(l),o}function fye(n){const{viewportUid:e,renderingEngineUid:o}=n.dataset,i=`${e}:${o}`;ar.svgNodeCache[i]={}}function hye(n,e){e.querySelector("div.viewport-element").appendChild(n)}function Oq(n,e){const o=[];if(!e&&!n)throw new Error("At least one of renderingEngineId or viewportId should be given");for(let i=0;i{const e=_n(n);if(!e)return;Oq(e.viewportId,e.renderingEngineId).forEach(i=>{i.remove(e)})},pye=n=>{const e=_n(n);if(!e)return;const{renderingEngineId:o,viewportId:i}=e,l=Ss(i,o);l&&l.removeViewports(o,i)};function mye(n){const{viewportUid:e,renderingEngineUid:o}=n.dataset,i=`${e}:${o}`;delete ar.svgNodeCache[i]}function vye(n){const e=n.querySelector(`div.${dye}`),o=e.querySelector("svg");o&&e.removeChild(o)}const kye=function(n){const e=ar.enabledElements.findIndex(o=>o===n);e>-1&&ar.enabledElements.splice(e,1)};function Mq(n){const e=vK(n,[ao.Active,ao.Passive]),o=ck(n,e);for(const{tool:i}of o){const l=i.cancel(n);if(l)return l}}class dP{constructor(e,o,i,l){this._viewportOptions={},this._onEvent=c=>{var T;if(this._ignoreFiredEvents===!0||!this._targetViewports.length)return;const g=this._eventSource==="element"?_n(c.currentTarget):yo((T=c.detail)==null?void 0:T.viewportId);if(!g)return;const{renderingEngineId:v,viewportId:_}=g;this._sourceViewports.find(P=>P.viewportId===_)&&this.fireEvent({renderingEngineId:v,viewportId:_},c)},this._enabled=!0,this._eventName=o,this._eventHandler=i,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=l||{},this._eventSource=this._options.eventSource||"element",this._auxiliaryEvents=this._options.auxiliaryEvents||[],this.id=e}isDisabled(){return!this._enabled||!this._hasSourceElements()}setOptions(e,o={}){this._viewportOptions[e]=o}setEnabled(e){this._enabled=e}getOptions(e){return this._viewportOptions[e]}add(e){this.addTarget(e),this.addSource(e)}addSource(e){if(s7(this._sourceViewports,e))return;const{renderingEngineId:o,viewportId:i}=e,l=ha(o).getViewport(i);if(!l){console.warn(`Synchronizer.addSource: No viewport for ${o} ${i}`);return}(this._eventSource==="element"?l.element:pr).addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEvents.forEach(({name:g,source:v})=>{(v==="element"?l.element:pr).addEventListener(g,this._onEvent.bind(this))}),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){s7(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}getSourceViewports(){return this._sourceViewports}getTargetViewports(){return this._targetViewports}destroy(){this._sourceViewports.forEach(e=>this.removeSource(e)),this._targetViewports.forEach(e=>this.removeTarget(e))}remove(e){this.removeTarget(e),this.removeSource(e)}removeSource(e){const o=db(this._sourceViewports,e);if(o===-1)return;const i=this._eventSource==="element"?this.getViewportElement(e):pr;this._sourceViewports.splice(o,1),i.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEvents.forEach(({name:l,source:c})=>{(c==="element"?this.getViewportElement(e):pr).removeEventListener(l,this._eventHandler)}),this._updateDisableHandlers()}removeTarget(e){const o=db(this._targetViewports,e);o!==-1&&(this._targetViewports.splice(o,1),this._updateDisableHandlers())}hasSourceViewport(e,o){return s7(this._sourceViewports,{renderingEngineId:e,viewportId:o})}hasTargetViewport(e,o){return s7(this._targetViewports,{renderingEngineId:e,viewportId:o})}fireEvent(e,o){if(this.isDisabled()||this._ignoreFiredEvents)return;this._ignoreFiredEvents=!0;const i=[];try{for(let l=0;l{this._ignoreFiredEvents=!1}):this._ignoreFiredEvents=!1}}_hasSourceElements(){return this._sourceViewports.length!==0}_updateDisableHandlers(){const e=yye(this._sourceViewports,this._targetViewports),o=this.remove.bind(this),i=l=>{o(l.detail.element)};e.forEach(l=>{const c=this.getEventSource(l);c&&(c.removeEventListener(vr.ELEMENT_DISABLED,i),c.addEventListener(vr.ELEMENT_DISABLED,i))})}getEventSource(e){return this._eventSource==="element"?this.getViewportElement(e):pr}getViewportElement(e){const{renderingEngineId:o,viewportId:i}=e,l=ha(o);if(!l)return null;const c=l.getViewport(i);return c?c.element:null}}function yye(n,e){const o=[],i=n.concat(e);for(let l=0;lc.renderingEngineId===g.renderingEngineId&&c.viewportId===g.viewportId)||o.push(c)}return o}function db(n,e){return n.findIndex(o=>e.renderingEngineId===o.renderingEngineId&&e.viewportId===o.viewportId)}function s7(n,e){return n.some(o=>o.renderingEngineId===e.renderingEngineId&&o.viewportId===e.viewportId)}function op(n,e,o,i){if(ar.synchronizers.some(g=>g.id===n))throw new Error(`Synchronizer with id '${n}' already exists.`);const c=new dP(n,e,o,i);return ar.synchronizers.push(c),c}function wye(){for(;ar.synchronizers.length>0;)ar.synchronizers.pop().destroy()}function Cye(n){return ar.synchronizers.find(e=>e.id===n)}function _ye(){return ar.synchronizers}function xye(n){const e=ar.synchronizers.findIndex(o=>o.id===n);e>-1&&(ar.synchronizers[e].destroy(),ar.synchronizers.splice(e,1))}const Pq=Object.freeze(Object.defineProperty({__proto__:null,createSynchronizer:op,destroy:wye,destroySynchronizer:xye,getAllSynchronizers:_ye,getSynchronizer:Cye,getSynchronizersForViewport:Oq},Symbol.toStringTag,{value:"Module"})),Sye=Object.freeze(Object.defineProperty({__proto__:null,Synchronizer:dP,SynchronizerManager:Pq,ToolGroupManager:zz,addEnabledElement:fP,addTool:t2,cancelActiveManipulations:Mq,hasTool:F6e,removeEnabledElement:hP,removeTool:Zz,get state(){return ar},svgNodeCache:AC},Symbol.toStringTag,{value:"Module"})),I9=function(n){const{viewportId:e}=n.detail;r5(e)};let tD=!1;function Rq(n={}){tD||(F8e(n),Eye(),Dye(),tD=!0)}function Tye(){Aq(),Lq(),$z(),cpe();const n=wc(),e=No;n.restoreAnnotations({}),e.resetState(),tD=!1}function Eye(){Aq();const n=vr.ELEMENT_ENABLED,e=vr.ELEMENT_DISABLED;pr.addEventListener(n,fP),pr.addEventListener(e,hP),Eq.enable()}function Aq(){const n=vr.ELEMENT_ENABLED,e=vr.ELEMENT_DISABLED;pr.removeEventListener(n,fP),pr.removeEventListener(e,hP),Eq.disable()}function Dye(){Lq(),pr.addEventListener(Xe.ANNOTATION_COMPLETED,ZK),pr.addEventListener(Xe.ANNOTATION_MODIFIED,QK),pr.addEventListener(Xe.ANNOTATION_SELECTION_CHANGE,D9),pr.addEventListener(Xe.ANNOTATION_SELECTION_CHANGE,D9),pr.addEventListener(Xe.ANNOTATION_REMOVED,_ke),pr.addEventListener(Xe.SEGMENTATION_MODIFIED,XK),pr.addEventListener(Xe.SEGMENTATION_DATA_MODIFIED,qK),pr.addEventListener(Xe.SEGMENTATION_REPRESENTATION_MODIFIED,I9),pr.addEventListener(Xe.SEGMENTATION_REPRESENTATION_ADDED,I9)}function Lq(){pr.removeEventListener(Xe.ANNOTATION_COMPLETED,ZK),pr.removeEventListener(Xe.ANNOTATION_MODIFIED,QK),pr.removeEventListener(Xe.ANNOTATION_SELECTION_CHANGE,D9),pr.removeEventListener(Xe.ANNOTATION_SELECTION_CHANGE,D9),pr.removeEventListener(Xe.SEGMENTATION_MODIFIED,XK),pr.removeEventListener(Xe.SEGMENTATION_DATA_MODIFIED,qK),pr.removeEventListener(Xe.SEGMENTATION_REPRESENTATION_MODIFIED,I9),pr.removeEventListener(Xe.SEGMENTATION_REPRESENTATION_ADDED,I9)}const Iye=Object.freeze(Object.defineProperty({__proto__:null,COLOR_LUT:E9},Symbol.toStringTag,{value:"Module"})),Oye="3.20.0";function Mye(n,e,o,i){const{camera:l}=i.detail,c=ha(o.renderingEngineId);if(!c)throw new Error(`No RenderingEngine for Id: ${o.renderingEngineId}`);const g=c.getViewport(o.viewportId);g.setCamera(l),g.render()}const{CAMERA_MODIFIED:Pye}=vr;function Rye(n){return op(n,Pye,Mye)}function Aye(n,e,o,i,l){const c=ha(o.renderingEngineId);if(!c)throw new Error(`No RenderingEngine for Id: ${o.renderingEngineId}`);const g=c.getViewport(o.viewportId),_=c.getViewport(e.viewportId).getViewPresentation(l);g.setViewPresentation(_),g.render()}const{CAMERA_MODIFIED:Lye}=vr;function Nye(n,e){return op(n,Lye,Aye,{viewPresentation:e})}function bye(n,e,o,i,l){const c=i.detail,{volumeId:g,range:v,invertStateChanged:_,invert:T,colormap:P}=c,I=ha(o.renderingEngineId);if(!I)throw new Error(`Rendering Engine does not exist: ${o.renderingEngineId}`);const R=I.getViewport(o.viewportId),L={voiRange:v};if(l!=null&&l.syncInvertState&&_&&(L.invert=T),l!=null&&l.syncColormap&&P&&(L.colormap=P),R instanceof xs)R._actors&&R._actors.size>1?R.setProperties(L,g):R.setProperties(L);else if(R instanceof ts)R.setProperties(L);else throw new Error("Viewport type not supported.");R.render()}function Fye(n,e){return e=Object.assign({syncInvertState:!0,syncColormap:!0},e),op(n,vr.VOI_MODIFIED,bye,{auxiliaryEvents:[{name:vr.COLORMAP_MODIFIED}],...e})}function Vye(n,e,o){const i=ha(o.renderingEngineId);if(!i)throw new Error(`No RenderingEngine for Id: ${o.renderingEngineId}`);const l=n.getOptions(o.viewportId),c=i.getViewport(o.viewportId),g=i.getViewport(e.viewportId);if((l==null?void 0:l.syncZoom)!==!1){const v=g.getZoom();c.setZoom(v)}if((l==null?void 0:l.syncPan)!==!1){const v=g.getPan();c.setPan(v)}c.render()}const{CAMERA_MODIFIED:Uye}=vr;function Bye(n){return op(n,Uye,Vye)}function Gye(n,e){const{viewPlaneNormal:o}=n.getCamera(),{viewPlaneNormal:i}=e.getCamera(),l=mi(o,i);return Math.abs(l)>.9}const gb=(n,e)=>cv.get("spatialRegistrationModule",n,e);async function Wye(n,e,o){const i=ha(o.renderingEngineId);if(!i)throw new Error(`No RenderingEngine for Id: ${o.renderingEngineId}`);const l=i.getViewport(e.viewportId),c=n.getOptions(o.viewportId);if(c!=null&&c.disabled)return;const g=i.getViewport(o.viewportId),v=l.getCurrentImageId(),T=Hr("imagePlaneModule",v).imagePositionPatient,P=g.getImageIds();if(!Gye(l,g))return;let I=gb(o.viewportId,e.viewportId);if(!I){const U=l.getFrameOfReferenceUID(),j=g.getFrameOfReferenceUID();if(U===j&&(c==null?void 0:c.useInitialPosition)!==!1?I=zi(Dl()):(wz(l,g),I=gb(o.viewportId,e.viewportId)),!I)return}const R=g0(nr(),T,I),L=$ye(R,P);let V=L.index;g instanceof ns&&(V=P.length-L.index-1),L.index!==-1&&g.getCurrentImageIdIndex()!==L.index&&await Yc(g.element,{imageIndex:V})}function $ye(n,e){return e.reduce((o,i,l)=>{const{imagePositionPatient:c}=Hr("imagePlaneModule",i),g=y2(c,n);return g{l.getImageIds().includes(n)&&l.calibrateSpacing(n)})}function Fq(n,e){const o=n.findIndex(([i,l])=>i===l);if(o===-1)throw new Error("3D bounding boxes not supported in an oblique plane");return n[o][0]-=e,n[o][1]+=e,n}const e7e=Object.freeze(Object.defineProperty({__proto__:null,extend2DBoundingBoxInViewAxis:Fq,getBoundingBoxAroundShape:Jd,getBoundingBoxAroundShapeIJK:Jd,getBoundingBoxAroundShapeWorld:RH},Symbol.toStringTag,{value:"Module"})),{transformWorldToIndex:bS}=J0;function Vq(n,e,o){const[i,l]=n,c=Ei((i[0]+l[0])/2,(i[1]+l[1])/2,(i[2]+l[2])/2),g=y2(i,l)/2,{boundsIJK:v,topLeftWorld:_,bottomRightWorld:T}=n7e(e,o,n,c,g);return{boundsIJK:v,centerWorld:c,radiusWorld:g,topLeftWorld:_,bottomRightWorld:T}}function Uq(n,e){const o=e.getDirection(),i=Ei(o[0],o[1],o[2]),l=Ei(o[3],o[4],o[5]),c=Ei(o[6],o[7],o[8]),g=sf(nr(),c);return Vq(n,e,{row:i,column:l,normal:g})}function t7e(n,e,o){if(!o)throw new Error("viewport is required in order to calculate the sphere bounds");const i=o.getCamera(),l=Ei(i.viewUp[0],i.viewUp[1],i.viewUp[2]),c=Ei(i.viewPlaneNormal[0],i.viewPlaneNormal[1],i.viewPlaneNormal[2]),g=nr();ro(g,l,c);const v={row:g,normal:c,column:sf(nr(),l)};return Vq(n,e,v)}function n7e(n,e,o,i,l){const c=n.getDimensions(),{row:g,column:v,normal:_}=e,T=nr(),P=nr();j0(T,i,_,l),j0(P,i,_,-l),j0(T,T,v,-l),j0(P,P,v,l),j0(T,T,g,-l),j0(P,P,g,l);const I=bS(n,T),R=bS(n,P),L=o.map(U=>bS(n,U));return{boundsIJK:Jd([I,R,...L],c),topLeftWorld:T,bottomRightWorld:P}}function Bq(n,e=5){return parseFloat(n[0]).toFixed(e)+","+parseFloat(n[1]).toFixed(e)+","+parseFloat(n[2]).toFixed(e)+","}class r7e{static setStartRange(e,o,i=e.getCurrentImageIdIndex()){this.setRange(e,o,i)}static setEndRange(e,o,i=e.getCurrentImageIdIndex()){this.setRange(e,o,void 0,i)}static setRange(e,o,i,l){var _;const{metadata:c}=o;i===void 0&&(i=c.sliceIndex=i?g:e.getNumberOfSlices()-1),l=Math.max(i,l),c.sliceIndex=Math.min(i,l),c.referencedImageId=e.getCurrentImageId(c.sliceIndex),c.referencedImageURI=void 0,l===c.sliceIndex?c.multiSliceReference=void 0:l!==((_=c.multiSliceReference)==null?void 0:_.sliceIndex)&&(c.multiSliceReference={referencedImageId:e.getCurrentImageId(l),sliceIndex:l});const v={viewportId:e.id,renderingEngineId:e.renderingEngineId,changeType:n0.MetadataReferenceModified,annotation:o};Or(pr,Xe.ANNOTATION_MODIFIED,v),this.setViewportFrameRange(e,c)}static setSingle(e,o,i=e.getCurrentImageIdIndex()){this.setRange(e,o,i,i)}static getFrameRange(e){const{metadata:o}=e,{sliceIndex:i,multiSliceReference:l}=o,c=l==null?void 0:l.sliceIndex;return c?[i+1,c+1]:i+1}static getFrameRangeStr(e){const o=this.getFrameRange(e);return Array.isArray(o)?`${o[0]}-${o[1]}`:String(o)}static setViewportFrameRange(e,o){var i;e.setFrameRange&&((i=o.multiSliceReference)!=null&&i.sliceIndex)&&e.setFrameRange(o.sliceIndex+1,o.multiSliceReference.sliceIndex+1)}}function i7e(n,e){const{viewPlaneNormal:o}=n.metadata,{viewPlaneNormal:i}=e.metadata,l=mi(o,i);if(!Hd(1,Math.abs(l)))return!1;const{polyline:g}=n.data.contour,{polyline:v}=e.data.contour,_=mi(o,g[0]),T=mi(o,v[0]);return Hd(_,T)}function Gq(n,e,o){let i=-1;if(e.forEach((l,c)=>{i>=0||l.a==n.b&&(i=c)}),i>=0){const l=e[i];return e.splice(i,1),o.push(l.b),o[0]==l.b?{remainingLines:e,contourPoints:o,type:"CLOSED_PLANAR"}:Gq(l,e,o)}return{remainingLines:e,contourPoints:o,type:"OPEN_PLANAR"}}function gP(n){if(n.length==0)return[];const e=[],o=n.shift();e.push(o.a),e.push(o.b);const i=Gq(o,n,e);if(i.remainingLines.length==0)return[{type:i.type,contourPoints:i.contourPoints}];{const l=gP(i.remainingLines);return l.push({type:i.type,contourPoints:i.contourPoints}),l}}function o7e(n){return gP(n)}const s7e={findContours:gP,findContoursFromReducedSet:o7e};function a7e(n,e=!1){const o=n.getPoints(),i=n.getLines(),l=new Array(o.getNumberOfPoints()).fill(0).map((_,T)=>o.getPoint(T).slice()),c=new Array(i.getNumberOfCells()).fill(0).map((_,T)=>{const P=i.getCell(T*3).slice();return{a:P[0],b:P[1]}});if(e)return{points:l,lines:c};const g=[];for(const[_,T]of l.entries()){const P=g.findIndex(I=>I[0]===T[0]&&I[1]===T[1]&&I[2]===T[2]);if(P>=0)c.map(I=>(I.a===_&&(I.a=P),I.b===_&&(I.b=P),I));else{const I=g.length;g.push(T),c.map(R=>(R.a===_&&(R.a=I),R.b===_&&(R.b=I),R))}}const v=c.filter(_=>_.a!==_.b);return{points:g,lines:v}}const l7e=(n,e)=>{const o=n[0],i=n[1];let l=!1;for(let c=0,g=e.length-1;ci!=P>i&&o<(T-v)*(i-_)/(P-_)+v&&(l=!l)}return l};function u7e(n,e,o){const i=[];n.contourPoints.forEach(c=>{i.push([o[c][0],o[c][1]])});let l=0;return e.contourPoints.forEach(c=>{l7e([o[c][0],o[c][1]],i)||l++}),l===0}function c7e(n,e,o=!0){const i=n.filter(v=>v.type!=="CLOSED_PLANAR"),l=n.filter(v=>v.type==="CLOSED_PLANAR"),c=[];let g=[];return l.forEach((v,_)=>{const T=[];l.forEach((P,I)=>{_!=I&&u7e(v,P,e)&&T.push(I)}),T.length>0?c.push({contour:v,holes:T}):g.push(_)}),o&&(c.forEach(v=>{v.contour.type="CLOSEDPLANAR_XOR",i.push(v.contour),v.holes.forEach(_=>{l[_].type="CLOSEDPLANAR_XOR",i.push(l[_]),g=g.filter(T=>T!==_)})}),g.forEach(v=>{i.push(l[v])})),i}const f7e={processContourHoles:c7e};let pb=!1;function o_(){if(pb)return;pb=!0;const n=()=>new Worker(new URL("/static/dv3d/assets/computeWorker-FOqOvCDJ.js",import.meta.url),{name:"compute",type:"module"}),e=Mh(),i=b8e().computeWorker,l={maxWorkerInstances:1,autoTerminateOnIdle:(i==null?void 0:i.autoTerminateOnIdle)??{enabled:!0,idleTimeThreshold:2e3}};e.registerWorker("compute",n,l)}function s_(){return No.getState().segmentations}function h7e(n){const{segmentationId:e,representation:o,config:i}=n,{type:l,data:c}=o,g=c?{...c}:{};if(!g)throw new Error("Segmentation representation data may not be undefined");l===Ti.Contour&&d7e(g);const v=g7e(i==null?void 0:i.segments,l,g);return i==null||delete i.segments,{segmentationId:e,label:(i==null?void 0:i.label)??null,cachedStats:(i==null?void 0:i.cachedStats)??{},segments:v,representationData:{[l]:{...g}}}}function d7e(n){n.geometryIds=n.geometryIds??[],n.annotationUIDsMap=n.annotationUIDsMap??new Map}function g7e(n,e,o){const i={};return n?Object.entries(n).forEach(([l,c])=>{const{label:g,locked:v,cachedStats:_,active:T,...P}=c,I={segmentIndex:Number(l),label:g??`Segment ${l}`,locked:v??!1,cachedStats:_??{},active:T??!1,...P};i[l]=I}):e===Ti.Surface?p7e(i,o):i[1]=m7e(),i}function p7e(n,e){const{geometryIds:o}=e;o==null||o.forEach(i=>{const l=Jn.getGeometry(i);if(l!=null&&l.data){const{segmentIndex:c}=l.data;n[c]={segmentIndex:c}}})}function m7e(){return{segmentIndex:1,label:"Segment 1",locked:!1,cachedStats:{},active:!0}}function Wq(n,e){const o=No;n.forEach(i=>{const l=h7e(i);o.addSegmentation(l),e||cu(l.segmentationId)})}function o5(n,e,o){return jq(n,e,o)}function $q(n,e,o){return jq(n,e,o)}function jq(n,e,o){const{segmentationId:i,type:l}=e;return v7e(n,i,l,o),No.removeSegmentationRepresentations(n,{segmentationId:i,type:l})}function zq(){No.getAllViewportSegmentationRepresentations().forEach(({viewportId:e,representations:o})=>{o.forEach(({segmentationId:i,type:l})=>{o5(e,{segmentationId:i,type:l})})}),No.resetState()}function Hq(n,e,o){o5(n,{segmentationId:e,type:Ti.Labelmap},o)}function Kq(n,e,o){o5(n,{segmentationId:e,type:Ti.Contour},o)}function qq(n,e,o){o5(n,{segmentationId:e,type:Ti.Surface},o)}function v7e(n,e,o,i){El(n,{segmentationId:e,type:o}).forEach(g=>{g.type===Ti.Labelmap?MK.removeRepresentation(n,g.segmentationId,i):g.type===Ti.Contour?IK.removeRepresentation(n,g.segmentationId,i):g.type===Ti.Surface&&VH.removeRepresentation(n,g.segmentationId,i)});const{viewport:c}=yo(n)||{};c&&c.render()}function pP(n){const e=No;e.getAllViewportSegmentationRepresentations().filter(({representations:i})=>i.some(l=>l.segmentationId===n)).map(({viewportId:i})=>i).forEach(i=>{$q(i,{segmentationId:n})}),e.removeSegmentation(n),OM(n)}function Xq(){const n=No;n.getState().segmentations.map(i=>i.segmentationId).forEach(i=>{pP(i)}),n.resetState()}function k7e(n){No.removeColorLUT(n)}function Yq(n,e){return Jq(n).map(c=>(e&&c.type===e,io(c.segmentationId))).filter(c=>c!==void 0)}function Jq(n){return No.getState().viewportSegRepresentations[n]}function y7e(n,e){return No.getStackSegmentationImageIdsForViewport(n,e)}function w7e(){No.resetState()}const C7e=Object.freeze(Object.defineProperty({__proto__:null,addColorLUT:km,addSegmentations:Wq,destroy:w7e,getColorLUT:tk,getCurrentLabelmapImageIdForViewport:f4,getCurrentLabelmapImageIdsForViewport:Sh,getNextColorLUTIndex:WK,getSegmentation:io,getSegmentationRepresentation:MM,getSegmentationRepresentations:El,getSegmentationRepresentationsBySegmentationId:NH,getSegmentations:s_,getStackSegmentationImageIdsForViewport:y7e,getViewportIdsWithSegmentation:n5,getViewportSegmentationRepresentations:Jq,getViewportSegmentations:Yq,removeAllSegmentationRepresentations:zq,removeAllSegmentations:Xq,removeColorLUT:k7e,removeContourRepresentation:Kq,removeLabelmapRepresentation:Hq,removeSegmentation:pP,removeSegmentationRepresentation:o5,removeSurfaceRepresentation:qq,updateLabelmapSegmentationImageReferences:YK},Symbol.toStringTag,{value:"Module"}));function Zq(n){if("volumeId"in n){if(n=n,!Jn.getVolume(n.volumeId))throw new Error(`volumeId of ${n.volumeId} not found in cache, you should load and cache volume before adding segmentation`)}else if("imageIds"in n){if(n=n,!n.imageIds)throw new Error("The segmentationInput.representationData.imageIds is undefined, please provide a valid representationData.imageIds for stack data")}else throw new Error("The segmentationInput.representationData is undefined, please provide a valid representationData")}function _7e(n){if(!n.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");const e=n.representation.data;Zq(e)}function x7e(n){Zq(n)}const S7e=Object.freeze(Object.defineProperty({__proto__:null,validate:x7e,validatePublic:_7e},Symbol.toStringTag,{value:"Module"}));function Qq(n){const e=Jn.getVolume(n);if(!e)return null;const o=e.referencedVolumeId;let i;if(o)i=Jn.getVolume(o);else{const l=e.imageIds,g=Jn.getImage(l[0]).referencedImageId,v=Jn.getVolumeContainingImageId(g);i=v==null?void 0:v.volume}return i}function T7e({operationData:n}){const{volumeId:e}=n;if(!e){const _=new CustomEvent(vr.ERROR_EVENT,{detail:{type:"Segmentation",message:"No volume id found for the segmentation"},cancelable:!0});return pr.dispatchEvent(_),null}const o=Jn.getVolume(e),i=Qq(e);if(!o||!i)return null;const{imageData:l}=o,{voxelManager:c}=o,{voxelManager:g,imageData:v}=i;return{segmentationImageData:l,segmentationVoxelManager:c,segmentationScalarData:null,imageScalarData:null,imageVoxelManager:g,imageData:v}}function E7e({operationData:n,viewport:e,strategy:o}){var P;const{segmentationId:i}=n;let l,c,g,v,_,T;if(o.ensureSegmentationVolumeFor3DManipulation)o.ensureSegmentationVolumeFor3DManipulation({operationData:n,viewport:e}),c=n.segmentationVoxelManager,l=n.segmentationImageData,g=null;else{const I=f4(e.id,i);if(!I)return null;const R=jC(e.id,i);if(!R)return null;const L=Jn.getImage(I);l=R.actor.getMapper().getInputData(),c=L.voxelManager;const V=n.imageId,U=Jn.getImage(V);if(!U)return null;g=(P=U.getPixelData)==null?void 0:P.call(U)}if(o.ensureImageVolumeFor3DManipulation)o.ensureImageVolumeFor3DManipulation({operationData:n,viewport:e}),_=n.imageVoxelManager,v=n.imageScalarData,T=n.imageData;else{const I=e.getCurrentImageId();if(!I)return null;const R=Jn.getImage(I);T=R?null:e.getImageData(),v=(R==null?void 0:R.getPixelData())||T.getScalarData(),_=R==null?void 0:R.voxelManager}return{segmentationImageData:l,segmentationScalarData:g,imageScalarData:v,segmentationVoxelManager:c,imageVoxelManager:_,imageData:T}}function mP({operationData:n,viewport:e,strategy:o}){return n?"volumeId"in n&&n.volumeId!=null||"referencedVolumeId"in n&&n.referencedVolumeId!=null?T7e({operationData:n}):E7e({operationData:n,viewport:e,strategy:o}):null}function s5(n){const{representationData:e}=io(n);let{volumeId:o}=e.Labelmap,i;if(o&&(i=Jn.getVolume(o),i))return i;const{imageIds:l}=e.Labelmap;if(o=Jn.generateVolumeId(l),!(!l||l.length===1||!u4(l)))return i=TC(o,l),i}const eX={[ci.EnsureSegmentationVolumeFor3DManipulation]:n=>{const{operationData:e,viewport:o}=n,{segmentationId:i,imageIds:l}=e,c=o?o.getImageIds():l.map(_=>Jn.getImage(_).referencedImageId);if(!u4(c))throw new Error("Volume is not reconstructable for sphere manipulation");const v=s5(i);v&&(e.segmentationVoxelManager=v.voxelManager,e.segmentationImageData=v.imageData)}};function a_(n){if(!n||n.length<=1||!u4(n))return;const o=Jn.generateVolumeId(n);let i=Jn.getVolume(o);return i||(i=TC(o,n),i)}const tX={[ci.EnsureImageVolumeFor3DManipulation]:n=>{const{operationData:e,viewport:o}=n;let i;if(o){if(i=o.getImageIds(),!u4(i))throw new Error("Volume is not reconstructable for sphere manipulation")}else i=io(e.segmentationId).representationData.Labelmap.imageIds.map(v=>Jn.getImage(v).referencedImageId);const l=a_(i);if(!l)throw new Error("Failed to create or get image volume");e.imageVoxelManager=l.voxelManager,e.imageData=l.imageData}},kf=(n,e)=>{Or(pr,vr.WEB_WORKER_PROGRESS,{progress:e,type:n})},nX=(n,e)=>{const o=io(n),{representationData:i}=o,{Labelmap:l}=i;if(!l)return console.debug("No labelmap found for segmentation",n),null;const c=l.volumeId,g=l.imageIds,v={segmentationId:n,volumeId:c,imageIds:g};let _=!1;if(g){const P=g.map(I=>Jn.getImage(I).referencedImageId);_=u4(P)}let T=e;return T?Array.isArray(T)||(T=[T,255]):T=[Ol(n)],{operationData:v,segVolumeId:c,segImageIds:g,reconstructableVolume:_,indices:T}},rX=n=>mP({operationData:n,strategy:{ensureSegmentationVolumeFor3DManipulation:eX.ensureSegmentationVolumeFor3DManipulation,ensureImageVolumeFor3DManipulation:tX.ensureImageVolumeFor3DManipulation}}),iX=n=>{const e=[],o=[];for(const i of n){const l=Jn.getImage(i),c=l.getPixelData(),{origin:g,direction:v,spacing:_,dimensions:T}=DC(l);e.push({scalarData:c,dimensions:T,spacing:_,origin:g,direction:v});const P=l.referencedImageId;if(P){const I=Jn.getImage(P);if(!I)continue;const R=I.getPixelData(),L=I.voxelManager,V=[I.rowPixelSpacing,I.columnPixelSpacing];o.push({scalarData:R,dimensions:L?L.dimensions:[I.columns,I.rows,1],spacing:V})}}return{segmentationInfo:e,imageInfo:o}},D7e=(n,e)=>{var g;let o;if(n){const _=Jn.getVolume(n).imageIds,T=Jn.getImage(_[0]);T&&(o=T.referencedImageId)}else e!=null&&e.length&&(o=Jn.getImage(e[0]).referencedImageId);const i=Jn.getImage(o),l=Hr("scalingModule",o),c={isPreScaled:!!((g=i==null?void 0:i.preScale)!=null&&g.scaled),isSuvScaled:typeof(l==null?void 0:l.suvbw)=="number"};return{refImageId:o,modalityUnitOptions:c}},{Labelmap:I7e}=Ti;async function oX({segmentations:n}){o_(),kf(su.GENERATE_CONTOUR_SETS,0);const{representationData:e,segments:o=[0,1],segmentationId:i}=n;let{volumeId:l}=e[I7e];if(!l){const V=s5(i);V&&(l=V.volumeId)}const c=Jn.getVolume(l);if(!c){console.warn(`No volume found for ${l}`);return}const _={scalarData:c.voxelManager.getCompleteScalarDataArray(),dimensions:c.dimensions,spacing:c.imageData.getSpacing(),origin:c.imageData.getOrigin(),direction:c.imageData.getDirection()},T=Array.isArray(o)?o.filter(V=>V!==null).map(V=>V.segmentIndex||V):Object.values(o).filter(V=>V!==null).map(V=>V.segmentIndex||V),P=await Mh().executeTask("compute","generateContourSetsFromLabelmapVolume",{segmentation:_,indices:T,mode:"individual"}),I=c.imageIds.map(V=>{var j;const U=(j=Jn.getImage(V))==null?void 0:j.referencedImageId;return U?Jn.getImage(U):void 0}),R=I.map(V=>DC(V)),L=P.map(V=>{const U=o[V.segment.segmentIndex]||{};if(!V.sliceContours.length)return null;const j=V.sliceContours[0].polyData.points[0];let z;if(j){const $=R.findIndex(K=>{const{scanAxisNormal:X,origin:ee}=K,ne=lf(X,ee);return Oj(j,ne)});$!==-1&&(z=I[$].imageId)}return{label:U.label,color:U.color,metadata:{FrameOfReferenceUID:c.metadata.FrameOfReferenceUID,referencedImageId:z},sliceContours:V.sliceContours.map($=>({contours:$.contours,polyData:$.polyData,FrameNumber:$.sliceIndex+1,sliceIndex:$.sliceIndex,FrameOfReferenceUID:c.metadata.FrameOfReferenceUID,referencedImageId:z}))}}).filter(V=>V!==null);return kf(su.GENERATE_CONTOUR_SETS,100),L}class sX{constructor(){}static getContourSequence(e,o){const{data:i}=e,{projectionPoints:l,projectionPointsImageIds:c}=i.cachedStats;return l.map((g,v)=>{const _=O7e(g),T=M7e(c[v],o);return{NumberOfContourPoints:_.length/3,ContourImageSequence:T,ContourGeometricType:"CLOSED_PLANAR",ContourData:_}})}}sX.toolName="RectangleROIStartEndThreshold";function O7e(n){return[...n[0],...n[1],...n[3],...n[2]].flat().map(l=>l.toFixed(2))}function M7e(n,e){const o=e.get("sopCommonModule",n);return{ReferencedSOPClassUID:o.sopClassUID,ReferencedSOPInstanceUID:o.sopInstanceUID}}function P7e(n){if(!(n!=null&&n.data))throw new Error("Tool data is empty");if(!n.metadata||n.metadata.referencedImageId)throw new Error("Tool data is not associated with any imageId")}const Dm=class Dm{constructor(){}static convert(e,o,i){P7e(e);const{toolName:l}=e.metadata,c=Dm.TOOL_NAMES[l];if(!c)throw new Error(`Unknown tool type: ${l}, cannot convert to RTSSReport`);const g=c.getContourSequence(e,i),v=[Math.floor(Math.random()*255),Math.floor(Math.random()*255),Math.floor(Math.random()*255)];return{ReferencedROINumber:o+1,ROIDisplayColor:v,ContourSequence:g}}static register(e){Dm.TOOL_NAMES[e.toolName]=e}};Dm.TOOL_NAMES={};let O9=Dm;O9.register(sX);function R7e(n,e){cf.acceptAutoGenerated(n,e)}const{isEqual:A7e}=J0;function nD(n,e){const{polyline:o}=n.data.contour,{points:i}=n.data.handles,{length:l}=i;if(e===l)return o.length;if(e<0&&(e=(e+l)%l),e===0)return 0;const c=i[e],g=o.findIndex(_=>A7e(c,_));if(g!==-1)return g;let v=1/0;return o.reduce((_,T,P)=>{const I=iG(T,c);return I{const ne=({value:Pe})=>{L=L+1,Pe>=V.lower&&Pe<=V.upper&&(R=R+1)},{imageData:le,dimensions:ce,lower:ge,upper:pe}=K,we=DM(le,ce,X,ee);L=0,R=0,V={lower:ge,upper:pe};let Te=!1;const{voxelManager:Ve}=le.get("voxelManager");return Ve.forEach(ne,{imageData:le,boundsIJK:we}),v===0?Te=R>0:v==1&&(Te=R===L),Te},j=(K,X)=>{const{imageData:ee,lower:ne,upper:le}=K,ce=ee.get("voxelManager").voxelManager,ge=ce.toIndex(X),pe=ce.getAtIndex(ge);return!(pe<=ne||pe>=le)},z=({index:K,pointIJK:X,pointLPS:ee})=>{let ne=I.length>0;for(let le=0;le{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;this.isDrawing=!0;const P=this.constructor.createAnnotationForViewport(T,{data:{handles:{points:[[...v],[...v],[...v],[...v]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},cachedStats:{}}});_0(P,g);const I=fi(g,this.getToolName());return this.editData={annotation:P,viewportIdsToRender:I,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(I),P},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{points:P}=T.handles,I=_.worldToCanvas(P[0]),R=_.worldToCanvas(P[3]),L=this._getRectangleImageCoordinates([I,R]),V=[c[0],c[1]],{left:U,top:j,width:z,height:$}=L;return KM([U,j,z,$],V)<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;let T=!1,P;c.worldPosition?T=!0:P=_.handles.points.findIndex(V=>V===c);const I=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P,movingTextBox:T},this._activateModify(v),Oi(v);const R=_n(v),{renderingEngine:L}=R;Un(I),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;_&&!T||(P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c),this.doneEditMemo(),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g))},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(T){const{deltaPoints:R}=l,L=R.world,{textBox:V}=I.handles,{worldPosition:U}=V;U[0]+=L[0],U[1]+=L[1],U[2]+=L[2],V.hasMoved=!0}else if(_===void 0){const{deltaPoints:R}=l,L=R.world,{points:V}=I.handles;V.forEach(U=>{U[0]+=L[0],U[1]+=L[1],U[2]+=L[2]}),g.invalidated=!0}else{const{currentPoints:R}=l,L=_n(c),{worldToCanvas:V,canvasToWorld:U}=L.viewport,j=R.world,{points:z}=I.handles;z[_]=[...j];let $,K,X,ee,ne,le,ce,ge;switch(_){case 0:case 3:$=V(z[0]),ee=V(z[3]),K=[ee[0],$[1]],X=[$[0],ee[1]],le=U(K),ce=U(X),z[1]=le,z[2]=ce;break;case 1:case 2:K=V(z[1]),X=V(z[2]),$=[X[0],K[1]],ee=[K[0],X[1]],ne=U($),ge=U(ee),z[0]=ne,z[3]=ge;break}g.invalidated=!0}this.editData.hasMoved=!0,_n(c),Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j,activeHandleIndex:z}=U.handles,$=j.map(qe=>g.worldToCanvas(qe));I.annotationUID=V;const{color:K,lineWidth:X,lineDash:ee}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),{viewPlaneNormal:ne,viewUp:le}=g.getCamera();if(!U.cachedStats[T]||U.cachedStats[T].areaUnit==null)U.cachedStats[T]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(L,ne,le,P,i);else if(L.invalidated&&(this._throttledCalculateCachedStats(L,ne,le,P,i),g instanceof ns)){const{referencedImageId:qe}=L.metadata;for(const ut in U.cachedStats)ut.startsWith("imageId")&&P.getStackViewports().find(qt=>{const $t=Bs(qe),Jt=qt.hasImageURI($t),Dn=Bs(qt.getCurrentImageId());return Jt&&Dn!==$t})&&delete U.cachedStats[ut]}if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let ce;if(!Ys(V))continue;!da(V)&&!this.editData&&z!==null&&(ce=[$[z]]),ce&&$o(l,V,"0",ce,{color:K});const ge=`${V}-rect`;XM(l,V,"0",$,{color:K,lineDash:ee,lineWidth:X},ge),c=!0;const we=this.getLinkedTextBoxStyle(I,L);if(!we.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const Te=this.configuration.getTextLines(U,T);if(!Te||Te.length===0)continue;if(!U.handles.textBox.hasMoved){const qe=Pl($);U.handles.textBox.worldPosition=g.canvasToWorld(qe)}const Ve=g.worldToCanvas(U.handles.textBox.worldPosition),je=A2(l,V,"1",Te,Ve,$,{},we),{x:Je,y:it,width:Ge,height:Ke}=je;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Je,it]),topRight:g.canvasToWorld([Je+Ge,it]),bottomLeft:g.canvasToWorld([Je,it+Ke]),bottomRight:g.canvasToWorld([Je+Ge,it+Ke])}}return c},this._getRectangleImageCoordinates=i=>{const[l,c]=i;return{left:Math.min(l[0],c[0]),top:Math.min(l[1],c[1]),width:Math.abs(l[0]-c[0]),height:Math.abs(l[1]-c[1])}},this._calculateCachedStats=(i,l,c,g,v)=>{var j,z,$,K;if(!this.configuration.calculateStats)return;const{data:_}=i,{viewport:T}=v,{element:P}=T,I=_.handles.points[0],R=_.handles.points[3],{cachedStats:L}=_,V=Object.keys(L);for(let X=0;XQo(i,c)&&Qo(l,c),this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}};U6.toolName="RectangleROI",U6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=U6.hydrateBase(U6,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let Eh=U6;function N7e(n,e){const o=n.cachedStats[e],{area:i,mean:l,max:c,stdDev:g,areaUnit:v,modalityUnit:_,min:T}=o;if(l==null)return;const P=[];return bs(i)&&P.push(`Area: ${E0(i)} ${v}`),bs(l)&&P.push(`Mean: ${E0(l)} ${_}`),bs(c)&&P.push(`Max: ${E0(c)} ${_}`),bs(T)&&P.push(`Max: ${E0(T)} ${_}`),bs(g)&&P.push(`Std Dev: ${E0(g)} ${_}`),P}const{transformWorldToIndex:T3}=J0;class vP extends Eh{constructor(e={},o={configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:b7e,statsCalculator:mf,showTextBox:!1,throttleTimeout:100}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I;let V,U,j;if(T instanceof ts)throw new Error("Stack Viewport Not implemented");{const le=this.getTargetId(T);j=wf(le),U=Jn.getVolume(j),V=yh(U,v,R)}const z=l4(U,R),$=this._getStartCoordinate(v,R),K=this._getEndCoordinate(v,z,R),X=T.getFrameOfReferenceUID(),ee={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...R],enabledElement:_,viewUp:[...L],FrameOfReferenceUID:X,referencedImageId:V,toolName:this.getToolName(),volumeId:j,spacingInNormal:z},data:{label:"",startCoordinate:$,endCoordinate:K,cachedStats:{pointsInVolume:[],projectionPoints:[],projectionPointsImageIds:[V],statistics:[]},handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null},labelmapUID:null}};this._computeProjectionPoints(ee,U),_0(ee,g);const ne=fi(g,this.getToolName());return this.editData={annotation:ee,viewportIdsToRender:ne,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(ne),ee},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID);const R=this.getTargetId(I.viewport),L=Jn.getVolume(R.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(g,R,L,I),Un(v),_?lo(g):C0(g,c)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i;let v=O0(this.getToolName(),g.element);if(!(v!=null&&v.length))return c;v=e_(v,g.getCamera());const _={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let T=0;Tg.worldToCanvas(Ge));_.annotationUID=I;const K=this.getStyle("lineWidth",_,P),X=this.getStyle("lineDash",_,P),ee=this.getStyle("color",_,P),ne=g.getCamera().focalPoint,le=g.getCamera().viewPlaneNormal;let ce=V,ge=U;if(Array.isArray(V)){ce=this._getCoordinateForViewplaneNormal(ce,le);const Ge=this._getIndexOfCoordinatesForViewplaneNormal(le);R.handles.points.forEach(Ke=>{Ke[Ge]=ce}),R.startCoordinate=ce}Array.isArray(U)&&(ge=this._getCoordinateForViewplaneNormal(ge,le),R.endCoordinate=ge,R.endCoordinate=ge);const pe=Od(ce),we=Od(ge),Te=this._getCoordinateForViewplaneNormal(ne,le),Ve=Od(Te);if(VeMath.max(pe,we))continue;P.invalidated&&this._throttledCalculateCachedStats(P,i);let Pe=!1;if((Ve===pe||Ve===we)&&(Pe=!0),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let je;if(!Ys(I))continue;!da(I)&&!this.editData&&z!==null&&Pe&&(je=[$[z]]),je&&$o(l,I,"0",je,{color:ee});let Je=X;if(Pe||(Je=2),sk(l,I,"0",$[0],$[3],{color:ee,lineDash:Je,lineWidth:K}),c=!0,this.configuration.showTextBox){const Ge=this.getLinkedTextBoxStyle(_,P);if(!Ge.visibility){R.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const Ke=this.configuration.getTextLines(R,{metadata:L});if(!Ke||Ke.length===0)continue;if(!R.handles.textBox.hasMoved){const Dn=Pl($);R.handles.textBox.worldPosition=g.canvasToWorld(Dn)}const qe=g.worldToCanvas(R.handles.textBox.worldPosition),wt=A2(l,I,"1",Ke,qe,$,{},Ge),{x:Et,y:qt,width:$t,height:Jt}=wt;R.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Et,qt]),topRight:g.canvasToWorld([Et+$t,qt]),bottomLeft:g.canvasToWorld([Et,qt+Jt]),bottomRight:g.canvasToWorld([Et+$t,qt+Jt])}}}return c},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=v1(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=Z8(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_computeProjectionPoints(e,o){const{data:i,metadata:l}=e,{viewPlaneNormal:c,spacingInNormal:g}=l,{imageData:v}=o,{startCoordinate:_,endCoordinate:T}=i,{points:P}=i.handles,I=T3(v,P[0]),R=T3(v,P[0]),L=nr();v.indexToWorldVec3(I,L);const V=nr();v.indexToWorldVec3(R,V),this._getIndexOfCoordinatesForViewplaneNormal(c)==2?(L[2]=_,V[2]=T):this._getIndexOfCoordinatesForViewplaneNormal(c)==0?(L[0]=_,V[0]=T):this._getIndexOfCoordinatesForViewplaneNormal(c)==1&&(L[1]=_,V[1]=T);const U=y2(L,V),j=[];for(let z=0;z{const K=nr();return j0(K,$,c,z),Array.from(K)}));i.cachedStats.projectionPoints=j}_computePointsInsideVolume(e,o,i,l){var ne,le,ce;const{data:c,metadata:g}=e,{viewPlaneNormal:v,viewUp:_}=g,{viewport:T}=l,P=c.cachedStats.projectionPoints,I=[[]],R=this.getTargetImageData(o),L=c.handles.points[0],V=c.handles.points[3],{worldWidth:U,worldHeight:j}=QC(v,_,L,V),z=Ml(R,c.habdles),$=Math.abs(U*j)/(z.scale*z.scale),K={isPreScaled:Rh(T,o),isSuvScaled:this.isSuvScaled(T,o,e.metadata.referencedImageId)},X=Ah(g.Modality,e.metadata.referencedImageId,K);for(let ge=0;ge{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getTargetId(T);let U,j;if(T instanceof ts)U=V.split("imageId:")[1];else{j=wf(V);const X=Jn.getVolume(j);U=yh(X,v,R)}const z=T.getFrameOfReferenceUID(),$={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...R],enabledElement:_,viewUp:[...L],FrameOfReferenceUID:z,referencedImageId:U,toolName:this.getToolName(),volumeId:j},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null},segmentationId:null}};_0($,g);const K=fi(g,this.getToolName());return this.editData={annotation:$,viewportIdsToRender:K,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(K),$},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I,{points:V,activeHandleIndex:U}=L.handles,j=V.map(ne=>g.worldToCanvas(ne));T.annotationUID=R;const z=this.getStyle("lineWidth",T,I),$=this.getStyle("lineDash",T,I),K=this.getStyle("color",T,I);if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;C0(I,v);let X;if(!Ys(R))continue;!da(R)&&!this.editData&&U!==null&&(X=[j[U]]),X&&$o(l,R,"0",X,{color:K}),sk(l,R,"0",j[0],j[3],{color:K,lineDash:$,lineWidth:z}),c=!0}return c}}}kP.toolName="RectangleROIThreshold";function lX(n,e,o={}){const i=[];return n.forEach(c=>{var L,V;const{data:g}=c,{points:v}=g.handles,{imageData:_,dimensions:T}=e;let P=v;if((L=g.cachedStats)!=null&&L.projectionPoints){const{projectionPoints:U}=g.cachedStats;P=[].concat(...U)}const I=P.map(U=>qs(_,U));let R=Jd(I,T);o.numSlicesToProject&&!((V=g.cachedStats)!=null&&V.projectionPoints)&&(R=Fq(R,o.numSlicesToProject)),i.push(R)}),i.length===1?i[0]:i.reduce((c,g)=>({iMin:Math.min(c.iMin,g.iMin),jMin:Math.min(c.jMin,g.jMin),kMin:Math.min(c.kMin,g.kMin),iMax:Math.max(c.iMax,g.iMax),jMax:Math.max(c.jMax,g.jMax),kMax:Math.max(c.kMax,g.kMax)}),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})}function F7e(n,e,o,i){const l=n.map(v=>$a.getAnnotation(v));V7e(l);let c;for(let v=0;v{if(!Qi(P,n[0].dimensions)||!Qi(T,n[0].direction)||!Qi(R,n[0].spacing)||!Qi(I,n[0].origin))throw new Error("labelmaps must have the same size and shape")});const i=n[0],l=i.voxelManager.getConstructor(),c=new l(i.voxelManager.getScalarDataLength());n.forEach(T=>{const P=T.voxelManager,I=P.getScalarDataLength();for(let R=0;R0;)V(P.pop());return{flooded:I};function V(ce){const ge=ce.currentArgs,pe=ce.previousArgs;U(ge)||(j(ge),z(ge)?($(ge),X(ge)):K(pe))}function U(ce){const[ge,pe,we=0]=ce,Te=ge+32768+65536*(pe+32768+65536*(we+32768));return R.has(Te)}function j(ce){const[ge,pe,we=0]=ce,Te=ge+32768+65536*(pe+32768+65536*(we+32768));R.add(Te)}function z(ce){const ge=ee(ce);return c?c(ge,_):ge===_}function $(ce){I.push(ce),i&&i(...ce)}function K(ce){const[ge,pe,we=0]=ce,Te=ge+32768+65536*(pe+32768+65536*(we+32768));L==null||L.set(Te,ce),l&&l(...ce)}function X(ce){for(let ge=0;ge{const{segmentIndex:e,previewSegmentIndex:o,segmentationVoxelManager:i,centerIJK:l,viewPlaneNormal:c,segmentationImageData:g,configuration:v}=n;if(!(v!=null&&v.useCenterSegmentIndex))return;let _=!1,T=!1;const P=[...i.getBoundsIJK()];Math.abs(c[0])>.8?P[0]=[l[0],l[0]]:Math.abs(c[1])>.8?P[1]=[l[1],l[1]]:Math.abs(c[2])>.8&&(P[2]=[l[2],l[2]]);const I=({value:L})=>{_||(_=L===e),T||(T=L===o)};if(i.forEach(I,{imageData:g,isInObject:n.isInObject,boundsIJK:P}),!_&&!T){n.centerSegmentIndexInfo.segmentIndex=null;return}const R=i.getAtIJKPoint(l);n.centerSegmentIndexInfo.segmentIndex=R,n.centerSegmentIndexInfo.hasSegmentIndex=_,n.centerSegmentIndexInfo.hasPreviewIndex=T}},$7e={[ci.Initialize]:n=>{var z;const{operationName:e,centerIJK:o,segmentationVoxelManager:i,imageVoxelManager:l,configuration:c,segmentIndex:g,viewport:v}=n;if(!((z=c==null?void 0:c.threshold)!=null&&z.isDynamic)||!o||!g||e===ci.RejectPreview||e===ci.OnInteractionEnd)return;const _=i.getBoundsIJK(),{range:T,dynamicRadius:P=0}=c.threshold,I=T?0:P,{viewPlaneNormal:R}=v.getCamera(),L=_.map(($,K)=>{const[X,ee]=$;return[Math.max(X,o[K]-I),Math.min(ee,o[K]+I)]});Math.abs(R[0])>.8?L[0]=[o[0],o[0]]:Math.abs(R[1])>.8?L[1]=[o[1],o[1]]:Math.abs(R[2])>.8&&(L[2]=[o[2],o[2]]);const V=T||[1/0,-1/0],U=I*I,j=({value:$,pointIJK:K})=>{if(pE(o,K)>U)return;const ee=Array.isArray($)?w8($):$;V[0]=Math.min(ee,V[0]),V[1]=Math.max(ee,V[1])};l.forEach(j,{boundsIJK:L}),c.threshold.range=V},[ci.OnInteractionStart]:n=>{var o;const{configuration:e}=n;(o=e==null?void 0:e.threshold)!=null&&o.isDynamic&&(e.threshold.range=null)},[ci.ComputeInnerCircleRadius]:n=>{const{configuration:e,viewport:o}=n,{dynamicRadius:i=0,isDynamic:l}=e.threshold;if(!l){e.threshold.dynamicRadiusInCanvas=0;return}if(i===0)return;const c=o.getImageData();if(!c)return;const{spacing:g}=c,v=[o.element.clientWidth/2,o.element.clientHeight/2],_=i*g[0],P=o.canvasToWorld(v).map(L=>L+_),I=o.worldToCanvas(P),R=Math.abs(v[0]-I[0]);e.threshold.dynamicRadiusInCanvas||(e.threshold.dynamicRadiusInCanvas=0),e.threshold.dynamicRadiusInCanvas=3+R}},j7e={[ci.Initialize]:n=>{n.segmentIndex=0}},{isEqual:FS}=J0,vb={toIJK:n=>n,fromIJK:n=>n,type:"acquistion"},z7e={toIJK:([n,e,o])=>[o,n,e],fromIJK:([n,e,o])=>[e,o,n],type:"jk"},H7e={toIJK:([n,e,o])=>[n,o,e],fromIJK:([n,e,o])=>[n,o,e],type:"ik"};function cX(n,e){if(!(n instanceof xs))return{...vb,boundsIJKPrime:e};const{viewPlaneNormal:o}=n.getCamera(),i=FS(Math.abs(o[0]),1)&&z7e||FS(Math.abs(o[1]),1)&&H7e||FS(Math.abs(o[2]),1)&&vb;return i?{...i,boundsIJKPrime:i.fromIJK(e)}:{toIJK:null,boundsIJKPrime:null,fromIJK:null,error:`Only mappings orthogonal to acquisition plane are permitted, but requested ${o}`}}const{RLEVoxelMap:K7e,VoxelManager:q7e}=J0,X7e=65535;var G2;(function(n){n[n.SEGMENT=-1]="SEGMENT",n[n.ISLAND=-2]="ISLAND",n[n.INTERIOR=-3]="INTERIOR",n[n.EXTERIOR=-4]="EXTERIOR",n[n.INTERIOR_SMALL=-5]="INTERIOR_SMALL",n[n.INTERIOR_TEST=-6]="INTERIOR_TEST"})(G2||(G2={}));class qg{constructor(e){this.fillInternalEdge=!1,this.maxInternalRemove=128,this.maxInternalRemove=(e==null?void 0:e.maxInternalRemove)??this.maxInternalRemove,this.fillInternalEdge=(e==null?void 0:e.fillInternalEdge)??this.fillInternalEdge}initialize(e,o,i){const l=!!o.sourceVoxelManager,c=l?o.sourceVoxelManager:o,g=l?o:q7e.createRLEHistoryVoxelManager(c),{segmentIndex:v=1,previewSegmentIndex:_=1}=i,T=i.points||c.getPoints();if(!(T!=null&&T.length))return;const P=c.getBoundsIJK().map((X,ee)=>[Math.min(X[0],...T.map(ne=>ne[ee])),Math.max(X[1],...T.map(ne=>ne[ee]))]);if(P.find(X=>X[0]<0||X[1]>X7e))return;const{toIJK:I,fromIJK:R,boundsIJKPrime:L,error:V}=cX(e,P);if(V){console.warn("Not performing island removal for planes not orthogonal to acquisition plane",V);return}const[U,j,z]=R(c.dimensions),$=new K7e(U,j,z),K=(X,ee,ne)=>{const le=c.toIndex(I([X,ee,ne])),ce=c.getAtIndex(le);if(ce===_||ce===v)return G2.SEGMENT};return $.fillFrom(K,L),$.normalizer={toIJK:I,fromIJK:R,boundsIJKPrime:L},this.segmentSet=$,this.previewVoxelManager=g,this.segmentIndex=v,this.previewSegmentIndex=_??v,this.selectedPoints=T,!0}floodFillSegmentIsland(){const{selectedPoints:e,segmentSet:o}=this;let i=0;const{fromIJK:l}=o.normalizer;return e.forEach(c=>{const g=l(c),v=o.toIndex(g),[_,T,P]=g;o.get(v)===G2.SEGMENT&&(i+=o.floodFill(_,T,P,G2.ISLAND))}),i}removeExternalIslands(){const{previewVoxelManager:e,segmentSet:o}=this,{toIJK:i}=o.normalizer,l=(c,g)=>{const[,v,_]=o.toIJK(c);if(g.value!==G2.ISLAND)for(let T=g.start;T{let P;for(const I of[...T])if(I.value===G2.ISLAND){if(!P){if(this.fillInternalEdge&&I.start>0)for(let R=0;R{if(T.value!==G2.INTERIOR)return;const[,P,I]=e.toIJK(_),R=P>0?e.getRun(P-1,I):null,L=P+12&&(!j||!z)&&e.floodFill(T.start,P,I,G2.EXTERIOR,{singlePlane:!0})}),e.forEach((_,T)=>{if(T.value!==G2.INTERIOR)return;const[,P,I]=e.toIJK(_),V=e.floodFill(T.start,P,I,G2.INTERIOR_TEST)>this.maxInternalRemove?G2.EXTERIOR:G2.INTERIOR_SMALL;e.floodFill(T.start,P,I,V)}),e.forEach((_,T)=>{if(T.value===G2.INTERIOR_SMALL)for(let P=T.start;P=c.start&&i=l))return!0;return!1}}const Y7e={[ci.OnInteractionEnd]:n=>{const{previewSegmentIndex:e,segmentIndex:o,viewport:i,segmentationVoxelManager:l,activeStrategy:c,memo:g}=n;if(c!=="THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL"||o===null)return;const v=new qg,_=(g==null?void 0:g.voxelManager)||l;if(!v.initialize(i,_,{previewSegmentIndex:e,segmentIndex:o}))return;v.floodFillSegmentIsland(),v.removeExternalIslands(),v.removeInternalIslands();const T=_.getArrayOfModifiedSlices();T&&K2(n.segmentationId,T,e)}},J7e={[ci.Preview]:function(n){var c,g;const{previewSegmentIndex:e,configuration:o,enabledElement:i}=n;if(!e||!o)return;(c=this.onInteractionStart)==null||c.call(this,i,n);const l=this.fill(i,n);return l&&((g=this.onInteractionEnd)==null||g.call(this,i,n)),l},[ci.Initialize]:n=>{const{segmentIndex:e,previewColor:o,previewSegmentIndex:i}=n;if(i==null||e==null)return;const l=n5(n.segmentationId);l==null||l.forEach(c=>{$K(c,n.segmentationId,i,o)})},[ci.AcceptPreview]:n=>{const{previewSegmentIndex:e,segmentationVoxelManager:o,memo:i,segmentIndex:l,centerSegmentIndexInfo:c}=n||{},{changedIndices:g}=c||{},v=i,_=({index:T})=>{const P=o.getAtIndex(T);(g==null?void 0:g.length)>0?g.includes(T)&&v.voxelManager.setAtIndex(T,0):P===e&&v.voxelManager.setAtIndex(T,l)};o.forEach(_),K2(n.segmentationId,o.getArrayOfModifiedSlices(),l),n.centerSegmentIndexInfo.changedIndices=[]},[ci.RejectPreview]:n=>{n&&kz.undoIf(e=>{const o=e;if(!(o!=null&&o.voxelManager))return!1;const{segmentationVoxelManager:i}=o;let l=!1;const c=({value:g})=>{g===n.previewSegmentIndex&&(l=!0)};return i.forEach(c),l})}},Z7e={[ci.Fill]:n=>{var T;const{segmentsLocked:e,segmentationImageData:o,segmentationVoxelManager:i,brushStrategy:l,centerIJK:c}=n,g=(T=l.createIsInThreshold)==null?void 0:T.call(l,n),{setValue:v}=l,_=g?P=>{const{value:I,index:R}=P;e.includes(I)||!g(R)||v(n,P)}:P=>v(n,P);i.forEach(_,{imageData:o,isInObject:n.isInObject,boundsIJK:n.isInObjectBoundsIJK}),i.addPoint(c)}};function Q7e({operationData:n,existingValue:e,index:o}){const{previewSegmentIndex:i,memo:l,centerSegmentIndexInfo:c,previewOnHover:g,segmentIndex:v}=n,{hasPreviewIndex:_,hasSegmentIndex:T,segmentIndex:P}=c;if(P===0&&T&&_){if(e===v||g)return;if(e===i){l.voxelManager.setAtIndex(o,0);return}return}if(P===0&&T&&!_){if(e===0||e!==v)return;l.voxelManager.setAtIndex(o,i),c.changedIndices.push(o);return}if(P===0&&!T&&_){if(e===v||g)return;if(e===i){l.voxelManager.setAtIndex(o,0);return}return}if(P===0&&!T&&!_){if(e===v)return;if(e===i){l.voxelManager.setAtIndex(o,i);return}return}if(P===i&&T&&_){if(e===v)return;l.voxelManager.setAtIndex(o,i);return}if(P===i&&!T&&_){if(e===v)return;l.voxelManager.setAtIndex(o,i);return}if(P===v&&T&&_){if(e===v)return;l.voxelManager.setAtIndex(o,i);return}if(P===v&&T&&!_){if(e===v)return;l.voxelManager.setAtIndex(o,i);return}}const ewe={[ci.INTERNAL_setValue]:(n,{value:e,index:o})=>{const{segmentsLocked:i,previewSegmentIndex:l,memo:c,segmentationVoxelManager:g,centerSegmentIndexInfo:v,segmentIndex:_}=n,T=g.getAtIndex(o);if(!i.includes(e)&&!(!v&&T===_)&&!((v==null?void 0:v.segmentIndex)!==0&&T===_)){if((v==null?void 0:v.segmentIndex)===null){c.voxelManager.setAtIndex(o,l??_);return}if(!l){let P=_;v&&(P=v.segmentIndex),c.voxelManager.setAtIndex(o,P);return}Q7e({operationData:n,existingValue:T,index:o})}}},twe={[ci.CreateIsInThreshold]:n=>{const{imageVoxelManager:e,segmentIndex:o,configuration:i}=n;if(!(!i||!o))return l=>{var _;const c=e.getAtIndex(l),g=Array.isArray(c)?K1(c):c,{threshold:v}=i||{};return(_=v==null?void 0:v.range)!=null&&_.length?v.range[0]<=g&&g<=v.range[1]:!0}}},kb=10;function M9(){return{maxIJKs:[]}}function fX(n,e){const{value:o}=e,{maxIJKs:i}=n,l=i.length;if(typeof o!="number"||l>=kb&&o=i[l-1].value)i.push(c);else for(let g=0;g=kb&&i.splice(0,1)}function hX(n,e,o){const{spacing:i,calibration:l}=o,{volumeUnit:c}=Ml({calibration:l,hasPixelSpacing:!0},[]),g=i?i[0]*i[1]*i[2]:1;return e.volume={value:Array.isArray(e.count.value)?e.count.value.map(v=>v*g):e.count.value*g,unit:c,name:"volume",label:"Volume"},e.maxIJKs=n.maxIJKs.filter(v=>v.pointIJK!==void 0),e.array.push(e.volume),n.maxIJKs=[],e}const JP=class JP extends mf{static statsInit(e){super.statsInit(e),this.volumetricState=M9()}static statsCallback(e){super.statsCallback(e),fX(this.volumetricState,e)}static getStatistics(e){const o={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},i=super.getStatistics(o);return hX(this.volumetricState,i,o)}};JP.volumetricState=M9();let Mg=JP;class yb extends oK{constructor(e){super(e),this.volumetricState=M9()}statsInit(e){super.statsInit(e),this.volumetricState=M9()}statsCallback(e){super.statsCallback(e),fX(this.volumetricState,e)}getStatistics(e){const o={...e,unit:(e==null?void 0:e.unit)||"none",calibration:e==null?void 0:e.calibration,hasPixelSpacing:e==null?void 0:e.hasPixelSpacing},i=super.getStatistics(o);return hX(this.volumetricState,i,o)}}const nwe=Math.pow(3*1e3/(4*Math.PI),1/3);async function dX({segmentationId:n,segmentIndices:e,mode:o="collective"}){o_(),kf(su.COMPUTE_STATISTICS,0);const i=nX(n,e);if(!i)return;const{operationData:l,segVolumeId:c,segImageIds:g,reconstructableVolume:v,indices:_}=i,{refImageId:T,modalityUnitOptions:P}=D7e(c,g),I=HK(T,P);return v?await rwe({operationData:l,indices:_,unit:I,mode:o}):await iwe({segImageIds:g,indices:_,unit:I,mode:o})}async function rwe({operationData:n,indices:e,unit:o,mode:i}){var U;const l=rX(n),{segmentationVoxelManager:c,imageVoxelManager:g,segmentationImageData:v,imageData:_}=l;if(!c||!v)return;const T=v.getSpacing(),{boundsIJK:P}=c;if(!P)return Mg.getStatistics({spacing:T});const R={scalarData:c.getCompleteScalarDataArray(),dimensions:v.getDimensions(),spacing:v.getSpacing(),origin:v.getOrigin(),direction:v.getDirection()},L={scalarData:g.getCompleteScalarDataArray(),dimensions:_.getDimensions(),spacing:_.getSpacing(),origin:_.getOrigin(),direction:_.getDirection()};if(!((U=L.scalarData)!=null&&U.length))return;const V=await Mh().executeTask("compute","calculateSegmentsStatisticsVolume",{segmentationInfo:R,imageInfo:L,indices:e,unit:o,mode:i});if(kf(su.COMPUTE_STATISTICS,100),i==="collective")return P9({stats:V,unit:o,spacing:T,segmentationImageData:v,imageVoxelManager:g});{const j={};return Object.entries(V).forEach(([z,$])=>{j[z]=P9({stats:$,unit:o,spacing:T,segmentationImageData:v,imageVoxelManager:g})}),j}}const VS=(n,e)=>{if(!n.array)return;const o=n.array.findIndex(i=>i.name===e.name);o!==-1?n.array[o]=e:n.array.push(e)},P9=({stats:n,unit:e,spacing:o,segmentationImageData:i,imageVoxelManager:l})=>{if(n.mean.unit=e,n.max.unit=e,n.min.unit=e,e!=="SUV")return n;const c=o.map(g=>Math.max(1,Math.round(1.1*nwe/g)));for(const g of n.maxIJKs){const v=owe(g,c,i,l,o);if(!v)continue;const{mean:_}=v;(!n.peakValue||n.peakValue.value<=_.value)&&(n.peakValue={name:"peakValue",label:"Peak Value",value:_.value,unit:e},n.peakPoint={name:"peakLPS",label:"Peak SUV Point",value:g.pointLPS?[...g.pointLPS]:null,unit:null},VS(n,n.peakValue),VS(n,n.peakPoint))}if(n.volume&&n.mean){const g=n.volume.value,v=n.mean.value;n.lesionGlycolysis={name:"lesionGlycolysis",label:"Lesion Glycolysis",value:g*v,unit:`${n.volume.unit}·${e}`},VS(n,n.lesionGlycolysis)}return n};async function iwe({segImageIds:n,indices:e,unit:o,mode:i}){kf(su.COMPUTE_STATISTICS,0);const{segmentationInfo:l,imageInfo:c}=iX(n),g=await Mh().executeTask("compute","calculateSegmentsStatisticsStack",{segmentationInfo:l,imageInfo:c,indices:e,mode:i});kf(su.COMPUTE_STATISTICS,100);const v=l[0].spacing,_=l[0],T=c[0].voxelManager;if(i==="collective")return P9({stats:g,unit:o,spacing:v,segmentationImageData:_,imageVoxelManager:T});{const P={};return Object.entries(g).forEach(([I,R])=>{P[I]=P9({stats:R,unit:o,spacing:v,segmentationImageData:_,imageVoxelManager:T})}),P}}function owe(n,e,o,i,l){const{pointIJK:c,pointLPS:g}=n;if(!c)return;const v=c.map((P,I)=>[P-e[I],P+e[I]]),_=(P,I)=>{const R=(I[0]-c[0])/e[0],L=(I[1]-c[1])/e[1],V=(I[2]-c[2])/e[2];return R*R+L*L+V*V<=1},T=({pointIJK:P,pointLPS:I})=>{const R=i.getAtIJKPoint(P);R!==void 0&&Mg.statsCallback({value:R,pointLPS:I,pointIJK:P})};return Mg.statsInit({storePointData:!1}),YO(o,{pointInShapeFn:_,callback:T,boundsIJK:v}),Mg.getStatistics({spacing:l})}const swe={[ci.GetStatistics]:function(n,e,o){const{indices:i}=o,{segmentationId:l,viewport:c}=e;dX({segmentationId:l,segmentIndices:i})}},F0={determineSegmentIndex:W7e,dynamicThreshold:$7e,erase:j7e,islandRemoval:Y7e,preview:J7e,regionFill:Z7e,setValue:ewe,threshold:twe,labelmapStatistics:swe,ensureSegmentationVolumeFor3DManipulation:eX,ensureImageVolumeFor3DManipulation:tX},vg=class vg{constructor(e,...o){this._initialize=[],this._fill=[],this._onInteractionStart=[],this.fill=(i,l)=>{const c=this.initialize(i,l,ci.Fill);if(!c)return;this._fill.forEach(_=>_(c));const{segmentationVoxelManager:g,segmentIndex:v}=c;return K2(c.segmentationId,g.getArrayOfModifiedSlices(),v),c},this.onInteractionStart=(i,l)=>{const c=this.initialize(i,l);c&&this._onInteractionStart.forEach(g=>g.call(this,c))},this.addPreview=(i,l)=>{const c=this.initialize(i,l,ci.AddPreview);if(c)return c},this.configurationName=e,this.compositions=o,o.forEach(i=>{const l=typeof i=="function"?i():i;if(l)for(const c in l){if(!vg.childFunctions[c])throw new Error(`Didn't find ${c} as a brush strategy`);vg.childFunctions[c](this,l[c])}}),this.strategyFunction=(i,l)=>this.fill(i,l);for(const i of Object.keys(vg.childFunctions))this.strategyFunction[i]=this[i]}initialize(e,o,i){const{viewport:l}=e,c=mP({operationData:o,viewport:l,strategy:this});if(!c)return null;const{imageVoxelManager:g,segmentationVoxelManager:v,segmentationImageData:_}=c,T=o.createMemo(o.segmentationId,v),P={operationName:i,...o,segmentIndex:o.segmentIndex,enabledElement:e,imageVoxelManager:g,segmentationVoxelManager:v,segmentationImageData:_,viewport:l,centerWorld:null,isInObject:null,isInObjectBoundsIJK:null,brushStrategy:this,memo:T};return this._initialize.forEach(I=>I(P)),P}};vg.COMPOSITIONS=F0,vg.childFunctions={[ci.OnInteractionStart]:Ju(ci.OnInteractionStart,ci.Initialize),[ci.OnInteractionEnd]:Ju(ci.OnInteractionEnd,ci.Initialize),[ci.Fill]:Ju(ci.Fill),[ci.Initialize]:Ju(ci.Initialize),[ci.CreateIsInThreshold]:a7(ci.CreateIsInThreshold),[ci.Interpolate]:Ju(ci.Interpolate,ci.Initialize),[ci.AcceptPreview]:Ju(ci.AcceptPreview,ci.Initialize),[ci.RejectPreview]:Ju(ci.RejectPreview,ci.Initialize),[ci.INTERNAL_setValue]:a7(ci.INTERNAL_setValue),[ci.Preview]:a7(ci.Preview,!1),[ci.ComputeInnerCircleRadius]:Ju(ci.ComputeInnerCircleRadius),[ci.EnsureSegmentationVolumeFor3DManipulation]:Ju(ci.EnsureSegmentationVolumeFor3DManipulation),[ci.EnsureImageVolumeFor3DManipulation]:Ju(ci.EnsureImageVolumeFor3DManipulation),[ci.AddPreview]:Ju(ci.AddPreview),[ci.GetStatistics]:a7(ci.GetStatistics),compositions:null};let vc=vg;function Ju(n,e){const o=`_${n}`;return(i,l)=>{i[o]||(i[o]=[]),i[o].push(l),i[n]||(i[n]=e?(c,g,...v)=>{const _=i[e](c,g,n);let T;return i[o].forEach(P=>{const I=P.call(i,_,...v);T||(T=I)}),T}:(c,...g)=>{i[o].forEach(v=>v.call(i,c,...g))})}}function a7(n,e=!0){return(o,i)=>{if(o[n])throw new Error(`The singleton method ${n} already exists`);o[n]=e?i:(l,c,...g)=>(c.enabledElement=l,i.call(o,c,...g))}}function gX(n,e){const{center:o,radius:i}=n,l=n.radius2||i*i;return(e[0]-o[0])*(e[0]-o[0])+(e[1]-o[1])*(e[1]-o[1])+(e[2]-o[2])*(e[2]-o[2])<=l}const{transformWorldToIndex:wb,isEqual:US}=J0,pX={[ci.Initialize]:n=>{const{points:e,viewport:o,segmentationImageData:i}=n;if(!e)return;const l=Ei(0,0,0);e.forEach(R=>{v2(l,l,R)}),k2(l,l,1/e.length),n.centerWorld=l,n.centerIJK=wb(i,l);const c=e.map(R=>o.worldToCanvas(R)),[g,v]=v9(c),_=o.canvasToWorld(g),T=o.canvasToWorld(v),P=e.map(R=>wb(i,R)),I=Jd(P,i.getDimensions());n.isInObject=mX({topLeftWorld:_,bottomRightWorld:T,center:l}),n.isInObjectBoundsIJK=I}};function mX(n){const{topLeftWorld:e,bottomRightWorld:o,center:i}=n,l=Math.abs(e[0]-o[0])/2,c=Math.abs(e[1]-o[1])/2,g=Math.abs(e[2]-o[2])/2,v=Math.max(l,c,g);if(US(l,v)&&US(c,v)&&US(g,v)){const P={center:i,radius:v,radius2:v*v};return I=>gX(P,I)}const _={center:i,xRadius:l,yRadius:c,zRadius:g},{precalculated:T}=BM(_,{});return T}const vX=new vc("Circle",F0.regionFill,F0.setValue,pX,F0.determineSegmentIndex,F0.preview,F0.labelmapStatistics),awe=new vc("CircleThreshold",F0.regionFill,F0.setValue,pX,F0.determineSegmentIndex,F0.dynamicThreshold,F0.threshold,F0.preview,F0.islandRemoval,F0.labelmapStatistics),l_=vX.strategyFunction,lwe=awe.strategyFunction;function uwe(){throw new Error("Not yet implemented")}const{transformWorldToIndex:cwe}=J0,fwe={[ci.Initialize]:n=>{const{points:e,viewport:o,segmentationImageData:i}=n;if(!e)return;const l=Ei(0,0,0);e.forEach(_=>{v2(l,l,_)}),k2(l,l,1/e.length),n.centerWorld=l,n.centerIJK=cwe(i,l);const{boundsIJK:c,topLeftWorld:g,bottomRightWorld:v}=t7e(e.slice(0,2),i,o);n.isInObjectBoundsIJK=c,n.isInObject=mX({topLeftWorld:g,bottomRightWorld:v,center:l})}},u_=new vc("Sphere",F0.regionFill,F0.setValue,fwe,F0.determineSegmentIndex,F0.preview,F0.labelmapStatistics,F0.ensureSegmentationVolumeFor3DManipulation),kX=u_.strategyFunction,hwe=new vc("SphereThreshold",...u_.compositions,F0.dynamicThreshold,F0.threshold,F0.ensureSegmentationVolumeFor3DManipulation,F0.ensureImageVolumeFor3DManipulation),dwe=new vc("SphereThreshold",...u_.compositions,F0.dynamicThreshold,F0.threshold,F0.islandRemoval,F0.ensureSegmentationVolumeFor3DManipulation,F0.ensureImageVolumeFor3DManipulation),gwe=hwe.strategyFunction,pwe=dwe.strategyFunction,mwe=new vc("EraseSphere",F0.erase,...u_.compositions),yX=mwe.strategyFunction,vwe=new vc("EraseCircle",F0.erase,...vX.compositions),wX=vwe.strategyFunction,{VoxelManager:rD,RLEVoxelMap:kwe}=J0;function iD(n,e){return _X(n,e)}function CX(n){const{segmentationVoxelManager:e,undoVoxelManager:o,redoVoxelManager:i}=this,l=n===!1?i:o;l.forEach(({value:g,pointIJK:v})=>{e.setAtIJKPoint(v,g)});const c=l.getArrayOfModifiedSlices();K2(this.segmentationId,c)}function _X(n,e){const o=rD.createRLEHistoryVoxelManager(e);return{segmentationId:n,restoreMemo:CX,commitMemo:ywe,segmentationVoxelManager:e,voxelManager:o,id:H0(),operationType:"labelmap"}}function ywe(){if(this.redoVoxelManager)return!0;if(!this.voxelManager.modifiedSlices.size)return!1;const{segmentationVoxelManager:n}=this,e=rD.createRLEHistoryVoxelManager(n);kwe.copyMap(e.map,this.voxelManager.map);for(const i of this.voxelManager.modifiedSlices.keys())e.modifiedSlices.add(i);this.undoVoxelManager=e;const o=rD.createRLEVolumeVoxelManager({dimensions:this.segmentationVoxelManager.dimensions});return this.redoVoxelManager=o,e.forEach(({index:i,pointIJK:l,value:c})=>{const g=n.getAtIJKPoint(l);g!==c&&o.setAtIndex(i,g)}),!0}const wwe=Object.freeze(Object.defineProperty({__proto__:null,createLabelmapMemo:iD,createRleMemo:_X,restoreMemo:CX},Symbol.toStringTag,{value:"Module"})),{isEqual:l7}=J0,Cwe=Ei(1,0,0),_we=Ei(0,1,0),xwe=Ei(0,0,1),Cb=[Cwe,_we,xwe];function xX(n){const e=Wo(nr(),n[0],n[1]),o=Wo(nr(),n[0],n[2]),i=_b(e,Cb),l=_b(o,Cb);return[...i,...l].every(g=>l7(g,0)||l7(g,90)||l7(g,180)||l7(g,270))}function _b(n,e){return e.map(o=>uO(n,o)*180/Math.PI)}const{transformWorldToIndex:SX}=J0,TX={[ci.Initialize]:n=>{const{points:e,imageVoxelManager:o,viewport:i,segmentationImageData:l,segmentationVoxelManager:c}=n;if(!e)return;const g=Ei(0,0,0);e.forEach(T=>{v2(g,g,T)}),k2(g,g,1/e.length),n.centerWorld=g,n.centerIJK=SX(l,g);const{boundsIJK:v,pointInShapeFn:_}=Swe(i,e,l);n.isInObject=_,n.isInObjectBoundsIJK=v}};function Swe(n,e,o){let i=e.map(K=>SX(o,K));i=i.map(K=>K.map(X=>Math.round(X)));const l=Jd(i,o.getDimensions()),g=n instanceof ts||xX(i),v=o.getDirection(),_=o.getSpacing(),{viewPlaneNormal:T}=n.getCamera(),P=l4({direction:v,spacing:_},T),I=RH(e);let[[R,L],[V,U],[j,z]]=I;return R-=P,L+=P,V-=P,U+=P,j-=P,z+=P,{boundsIJK:l,pointInShapeFn:g?()=>!0:K=>{const[X,ee,ne]=K,le=X>=R&&X<=L,ce=ee>=V&&ee<=U,ge=ne>=j&&ne<=z;return le&&ce&&ge}}}const Twe=new vc("Rectangle",F0.regionFill,F0.setValue,TX,F0.determineSegmentIndex,F0.preview,F0.labelmapStatistics),Ewe=new vc("RectangleThreshold",F0.regionFill,F0.setValue,TX,F0.determineSegmentIndex,F0.dynamicThreshold,F0.threshold,F0.preview,F0.islandRemoval,F0.labelmapStatistics),wP=Twe.strategyFunction,Dwe=Ewe.strategyFunction,Iwe=Object.freeze(Object.defineProperty({__proto__:null,fillInsideCircle:l_,fillInsideRectangle:wP,fillOutsideCircle:uwe,thresholdInsideRectangle:Dwe},Symbol.toStringTag,{value:"Module"})),Im=class Im extends Oa{constructor(e,o){super(e,o),this.memoMap=new Map,this.acceptedMemoIds=new Map,this.centerSegmentIndexInfo={segmentIndex:null,hasSegmentIndex:!1,hasPreviewIndex:!1,changedIndices:[]}}_historyRedoHandler(e){const{id:o,operationType:i}=e.detail;if(i==="labelmap"){if(this.acceptedMemoIds.has(o)){this._hoverData=null;const l=this.acceptedMemoIds.get(o),c=l==null?void 0:l.element,g=this.getOperationData(c);g.segmentIndex=l==null?void 0:l.segmentIndex,c&&this.applyActiveStrategyCallback(_n(c),g,ci.AcceptPreview)}this._previewData.isDrag=!0}}get _previewData(){return Im.previewData}createMemo(e,o){const i=o.id;if(this.memo&&this.memo.segmentationVoxelManager===o)return this.memo;let l=this.memoMap.get(i);return l?l.redoVoxelManager&&(l=iD(e,o),this.memoMap.set(i,l)):(l=iD(e,o),this.memoMap.set(i,l)),this.memo=l,l}createEditData(e){const o=_n(e),{viewport:i}=o,l=Hg(i.id);if(!l){const T=new CustomEvent(vr.ERROR_EVENT,{detail:{type:"Segmentation",message:"No active segmentation detected, create a segmentation representation before using the brush tool"},cancelable:!0});return pr.dispatchEvent(T),null}const{segmentationId:c}=l,g=ip(c),{representationData:v}=io(c);return this.getEditData({viewport:i,representationData:v,segmentsLocked:g,segmentationId:c})}getEditData({viewport:e,representationData:o,segmentsLocked:i,segmentationId:l}){var c,g,v;if(e instanceof xs){const{volumeId:_}=o[Ti.Labelmap],T=e.getActors();if(e instanceof ts){const V=new CustomEvent(vr.ERROR_EVENT,{detail:{type:"Segmentation",message:"Cannot perform brush operation on the selected viewport"},cancelable:!0});return pr.dispatchEvent(V),null}const I=T.map(V=>Jn.getVolume(V.referencedId)),R=Jn.getVolume(_),L=((c=I.find(V=>Qi(V.dimensions,R.dimensions)))==null?void 0:c.volumeId)||((g=I[0])==null?void 0:g.volumeId);return{volumeId:_,referencedVolumeId:((v=this.configuration.threshold)==null?void 0:v.volumeId)??L,segmentsLocked:i}}else{const _=f4(e.id,l);return _?{imageId:_,segmentsLocked:i}:void 0}}createHoverData(e,o){const i=_n(e),{viewport:l}=i,c=l.getCamera(),{viewPlaneNormal:g,viewUp:v}=c,_=[l.id],{segmentIndex:T,segmentationId:P,segmentColor:I}=this.getActiveSegmentationData(l)||{};return{brushCursor:{metadata:{viewPlaneNormal:[...g],viewUp:[...v],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:I},data:{}},centerCanvas:o,segmentIndex:T,viewport:l,segmentationId:P,segmentColor:I,viewportIdsToRender:_}}getActiveSegmentationData(e){const o=e.id,i=Hg(o);if(!i)return;const{segmentationId:l}=i,c=Ol(l);if(!c)return;const g=Th(o,l,c);return{segmentIndex:c,segmentationId:l,segmentColor:g}}getOperationData(e){var j,z,$,K;const o=this._editData||this.createEditData(e),{segmentIndex:i,segmentationId:l,brushCursor:c}=this._hoverData||this.createHoverData(e),{data:g,metadata:v={}}=c||{},{viewPlaneNormal:_,viewUp:T}=v,P=(z=(j=this.configuration.preview)==null?void 0:j.previewColors)==null?void 0:z[i],{viewport:I}=_n(e),R=Th(I.id,l,i);if(!P&&!R)return;let L=null,V=null;return($=this.configuration.preview)!=null&&$.enabled&&(L=P||Owe(...R),V=255),{...o,points:(K=g==null?void 0:g.handles)==null?void 0:K.points,segmentIndex:i,viewPlaneNormal:_,previewOnHover:!this._previewData.isDrag,toolGroupId:this.toolGroupId,segmentationId:l,viewUp:T,centerSegmentIndexInfo:this.centerSegmentIndexInfo,activeStrategy:this.configuration.activeStrategy,configuration:this.configuration,previewColor:L,previewSegmentIndex:V,createMemo:this.createMemo.bind(this)}}addPreview(e=this._previewData.element,o){const{_previewData:i}=this,l=o==null?void 0:o.acceptReject;l===!0?this.acceptPreview(e):l===!1&&this.rejectPreview(e);const c=_n(e),g=this.applyActiveStrategyCallback(c,this.getOperationData(e),ci.AddPreview);return i.isDrag=!0,g}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const o=_n(e);this.applyActiveStrategyCallback(o,this.getOperationData(e),ci.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(e=this._previewData.element){if(!e)return;const o=this.getOperationData(e);this.memo&&this.memo.id&&this.acceptedMemoIds.set(this.memo.id,{element:e,segmentIndex:o.segmentIndex});const i=_n(e);this.applyActiveStrategyCallback(i,o,ci.AcceptPreview),this.doneEditMemo(),this._previewData.preview=null,this._previewData.isDrag=!1}static viewportContoursToLabelmap(e,o){var j;const i=(o==null?void 0:o.removeContours)??!0,l=Jv(),c=lk(e,l);if(!(c!=null&&c.length))return;const g=c.filter(z=>{var $,K;return(K=($=z.data.contour)==null?void 0:$.polyline)==null?void 0:K.length});if(!g.length)return;const _=new Im({},{configuration:{strategies:{FILL_INSIDE_CIRCLE:l_},activeStrategy:"FILL_INSIDE_CIRCLE"}}).addPreview(e.element),{memo:T,segmentationId:P}=_,I=T==null?void 0:T.voxelManager,R=I.sourceVoxelManager||I,{dimensions:L}=I,V=e.getDefaultActor().actor.getMapper().getInputData();for(const z of g){const $=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],{polyline:K}=z.data.contour;for(const Te of K)V.worldToIndex(Te).forEach((Pe,je)=>{$[je][0]=Math.min($[je][0],Pe),$[je][1]=Math.max($[je][1],Pe)});$.forEach((Te,Ve)=>{Te[0]=Math.round(Math.max(0,Te[0])),Te[1]=Math.round(Math.min(L[Ve]-1,Te[1]))});const X=Ol(P),ee=((j=z.data.handles)==null?void 0:j[0])||K[0],ne=V.worldToIndex(ee).map(Math.round),le=R.getAtIJKPoint(ne)||0;let ce=!1,ge=!1;for(const Te of K){const Ve=V.worldToIndex(Te).map(Math.round),Pe=R.getAtIJKPoint(Ve);Pe===le?ce=!0:Pe>=0&&(ge=!0)}const we=ce&&ge?le:le===0?X:0;for(let Te=$[0][0];Te<=$[0][1];Te++)for(let Ve=$[1][0];Ve<=$[1][1];Ve++)for(let Pe=$[2][0];Pe<=$[2][1];Pe++){const je=V.indexToWorld([Te,Ve,Pe]);HM(je,K)&&I.setAtIJK(Te,Ve,Pe,we)}i&&A0(z.annotationUID)}const U=I.getArrayOfModifiedSlices();K2(P,U)}};Im.previewData={preview:null,element:null,timerStart:0,timer:null,startPoint:[NaN,NaN],isDrag:!1};let Xg=Im;function Owe(n,e,o,i,l=.4){return[Math.round(n+(255-n)*l),Math.round(e+(255-e)*l),Math.round(o+(255-o)*l),i]}class c_ extends Xg{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:l_,ERASE_INSIDE_CIRCLE:wX,FILL_INSIDE_SPHERE:kX,ERASE_INSIDE_SPHERE:yX,THRESHOLD_INSIDE_CIRCLE:lwe,THRESHOLD_INSIDE_SPHERE:gwe,THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL:pwe},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:25,useCenterSegmentIndex:!1,preview:{enabled:!1,previewColors:{0:[255,255,255,128]},previewTimeMs:250,previewMoveDistance:8,dragMoveDistance:4,dragTimeMs:500},actions:{[ci.AcceptPreview]:{method:ci.AcceptPreview,bindings:[{key:"Enter"}]},[ci.RejectPreview]:{method:ci.RejectPreview,bindings:[{key:"Escape"}]},[ci.Interpolate]:{method:ci.Interpolate,bindings:[{key:"i"}],configuration:{useBallStructuringElement:!0,noUseDistanceTransform:!0,noUseExtrapolation:!0}},interpolateExtrapolation:{method:ci.Interpolate,bindings:[{key:"e"}],configuration:{}}}}}){super(e,o),this.onSetToolPassive=i=>{this.disableCursor()},this.onSetToolEnabled=()=>{this.disableCursor()},this.onSetToolDisabled=i=>{this.disableCursor()},this.preMouseDownCallback=i=>{const l=i.detail,{element:c}=l,g=_n(c);this._editData=this.createEditData(c),this._activateDraw(c),Oi(c),i.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const v=this._hoverData||this.createHoverData(c);Un(v.viewportIdsToRender);const _=this.getOperationData(c);return this.applyActiveStrategyCallback(g,_,ci.OnInteractionStart),!0},this.mouseMoveCallback=i=>{if(this.mode===ao.Active){if(this.updateCursor(i),!this.configuration.preview.enabled)return;const{previewTimeMs:l,previewMoveDistance:c,dragMoveDistance:g}=this.configuration.preview,{currentPoints:v,element:_}=i.detail,{canvas:T}=v,{startPoint:P,timer:I,timerStart:R,isDrag:L}=this._previewData;if(L)return;const V=ds(T,P),U=Date.now()-R;if((V>c||U>l&&V>g)&&(I&&(window.clearTimeout(I),this._previewData.timer=null),L||this.rejectPreview(_)),!this._previewData.timer){const j=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:j,startPoint:T,element:_})}}},this.previewCallback=()=>{if(this._previewData.isDrag){this._previewData.timer=null;return}this._previewData.timer=null;const i=this.getOperationData(this._previewData.element),l=_n(this._previewData.element);if(!l)return;const{viewport:c}=l,g=this.configuration.activeStrategy,v=mP({operationData:i,viewport:c,strategy:g});if(!i)return;const _=this.createMemo(i.segmentationId,v.segmentationVoxelManager);this._previewData.preview=this.applyActiveStrategyCallback(_n(this._previewData.element),{...i,...v,memo:_},ci.Preview)},this._dragCallback=i=>{const l=i.detail,{element:c,currentPoints:g}=l,v=_n(c);this.updateCursor(i);const{viewportIdsToRender:_}=this._hoverData;Un(_);const T=ds(g.canvas,this._previewData.startPoint),{dragTimeMs:P,dragMoveDistance:I}=this.configuration.preview;!this._previewData.isDrag&&Date.now()-this._previewData.timerStart{const l=i.detail,{element:c}=l,g=_n(c),v=this.getOperationData(c);!this._previewData.preview&&!this._previewData.isDrag&&this.applyActiveStrategy(g,v),this.doneEditMemo(),this._deactivateDraw(c),Zi(c),this.updateCursor(i),this._editData=null,this.applyActiveStrategyCallback(g,v,ci.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(c)},this._activateDraw=i=>{i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback)},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback)}}disableCursor(){this._hoverData=void 0,this.rejectPreview()}updateCursor(e){const o=e.detail,{element:i}=o,{currentPoints:l}=o,c=l.canvas;this._hoverData=this.createHoverData(i,c),this._calculateCursor(i,c),this._hoverData&&Un(this._hoverData.viewportIdsToRender)}_calculateCursor(e,o){const i=_n(e),{viewport:l}=i,{canvasToWorld:c}=l,g=l.getCamera(),{brushSize:v}=this.configuration,_=Ei(g.viewUp[0],g.viewUp[1],g.viewUp[2]),T=Ei(g.viewPlaneNormal[0],g.viewPlaneNormal[1],g.viewPlaneNormal[2]),P=nr();ro(P,_,T);const I=c([o[0],o[1]]),R=nr(),L=nr(),V=nr(),U=nr();for(let X=0;X<=2;X++)R[X]=I[X]-_[X]*v,L[X]=I[X]+_[X]*v,V[X]=I[X]-P[X]*v,U[X]=I[X]+P[X]*v;if(!this._hoverData)return;const{brushCursor:j}=this._hoverData,{data:z}=j;z.handles===void 0&&(z.handles={}),z.handles.points=[R,L,V,U];const $=this.configuration.activeStrategy,K=this.configuration.strategies[$];typeof(K==null?void 0:K.computeInnerCircleRadius)=="function"&&K.computeInnerCircleRadius({configuration:this.configuration,viewport:l}),z.invalidated=!1}getStatistics(e,o){if(!e)return;const i=_n(e);return this.applyActiveStrategyCallback(i,this.getOperationData(e),ci.GetStatistics,o)}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const o=_n(e);o&&(this.applyActiveStrategyCallback(o,this.getOperationData(e),ci.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1)}acceptPreview(e=this._previewData.element){e&&super.acceptPreview(e)}interpolate(e,o){if(!e)return;const i=_n(e);this._previewData.preview=this.applyActiveStrategyCallback(i,this.getOperationData(e),ci.Interpolate,o.configuration),this._previewData.isDrag=!0}invalidateBrushCursor(){if(this._hoverData===void 0)return;const{data:e}=this._hoverData.brushCursor,{viewport:o}=this._hoverData;e.invalidated=!0;const{segmentColor:i}=this.getActiveSegmentationData(o)||{};this._hoverData.brushCursor.metadata.segmentColor=i}renderAnnotation(e,o){var $,K;if(!this._hoverData)return;const{viewport:i}=e;if(!this._hoverData.viewportIdsToRender.includes(i.id))return;const c=this._hoverData.brushCursor;if(c.data.invalidated===!0){const{centerCanvas:X}=this._hoverData,{element:ee}=i;this._calculateCursor(ee,X)}const g=c.metadata;if(!g)return;const v=g.brushCursorUID,_=c.data,{points:T}=_.handles,P=T.map(X=>i.worldToCanvas(X)),I=P[0],R=P[1],L=[Math.floor((I[0]+R[0])/2),Math.floor((I[1]+R[1])/2)],V=Math.abs(I[1]-Math.floor((I[1]+R[1])/2)),U=`rgb(${(($=g.segmentColor)==null?void 0:$.slice(0,3))||[0,0,0]})`;if(!i.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}J1(o,v,"0",L,V,{color:U,lineDash:this.centerSegmentIndexInfo.segmentIndex===0?[1,2]:null});const{dynamicRadiusInCanvas:z}=((K=this.configuration)==null?void 0:K.threshold)||{dynamicRadiusInCanvas:0};z&&J1(o,v,"1",L,z,{color:U})}}c_.toolName="Brush";function a5(n,e){const o=la(n);if(o===void 0)return;const i=o._toolInstances;return Object.keys(i).length?e&&i[e]?[i[e]]:Object.values(i).filter(c=>c instanceof c_):void 0}function Mwe(n,e,o){const i=la(n);if(i===void 0)return;a5(n,o).forEach(T=>{T.configuration.brushSize=e,T.invalidateBrushCursor()});const c=i.getViewportsInfo(),g=Object.keys(c).map(T=>c[T]);if(!g.length)return;const{renderingEngineId:v}=g[0],_=i.getViewportIds();ha(v),Un(_)}function Pwe(n,e){const o=la(n);if(o===void 0)return;const i=o._toolInstances;if(!Object.keys(i).length)return;const c=a5(n,e)[0];if(c)return c.configuration.brushSize}function Rwe(n,e){const o=la(n);if(o===void 0||(a5(n).forEach(g=>{g.configuration.activeStrategy.toLowerCase().includes("threshold")&&(g.configuration={...g.configuration,threshold:{...g.configuration.threshold,...e}})}),!o.getViewportsInfo().length))return;const c=o.getViewportIds();Un(c)}function Awe(n){const e=la(n);if(e===void 0)return;const o=e._toolInstances;if(!Object.keys(o).length)return;const l=a5(n)[0];if(l)return l.configuration.threshold.range}const Om=class Om{static statsInit(e){const{storePointData:o,indices:i,mode:l}=e;this.mode=l,this.indices=i,this.calculators.clear(),this.mode==="individual"?i.forEach(c=>{this.calculators.set(c,new yb({storePointData:o}))}):this.calculators.set(i,new yb({storePointData:o}))}static statsCallback(e){const{segmentIndex:o,...i}=e;if(!o)throw new Error("Segment index is required for stats calculation");const l=this.mode==="individual"?this.calculators.get(o):this.calculators.get(this.indices);if(!l)throw new Error(`No calculator found for segment ${o}`);l.statsCallback(i)}static getStatistics(e){if(this.mode==="individual"){const i={};return this.calculators.forEach((l,c)=>{i[c]=l.getStatistics(e)}),i}return this.calculators.get(this.indices).getStatistics(e)}};Om.calculators=new Map,Om.indices=[],Om.mode="collective";let oD=Om;function Lwe(n,e,o,i,l){if(!l)throw new Error("Segmentation ID is required to be passed inside thresholdSegmentationByRange");const{baseVolumeIdx:c,volumeInfoList:g}=AH(n,o),{voxelManager:v}=g[c],_=v,T=n.voxelManager.getScalarDataLength(),P=n.voxelManager;return g.forEach(I=>{const{volumeSize:R}=I;R===T?bwe(P,_,e,I):Nwe(P,_,e,I,g,c,i)}),K2(l),n}function Nwe(n,e,o,i,l,c,g){const{imageData:v,lower:_,upper:T,dimensions:P}=i;let I,R,L;const V=n.getScalarDataLength();for(let U=0;U{I=I+1,K>=L.lower&&K<=L.upper&&(R=R+1)};I=0,R=0,L={lower:_,upper:T};let $=!1;n.forEach(z,{imageData:v,boundsIJK:j}),$=g===0?R>0:R===I,n.setAtIndex(U,$?o:0)}return{total:I,range:L,overlaps:R}}function bwe(n,e,o,i){const{lower:l,upper:c}=i,g=n.getScalarDataLength();for(let v=0;v=l&&_<=c?o:0)}}function xb(n,e,o){const i=o.toIJK(n),l=o.toIJK(e),c=nr(),{testIJK:g}=o,v=z0(nr(),i,l),_=Math.round(Math.max(...v.map(Math.abs)));if(_<2)return!0;const T=k2(nr(),v,1/_);for(let P=1;P<_;P++)if(j0(c,l,T,P),!g(c))return!1;return!0}function Fwe({dimensions:n,imageData:e,voxelManager:o,segmentIndex:i,containedSegmentIndices:l}){const c=n[0],g=c*n[1];return{testCenter:(v,_)=>{const T=v2(nr(),v,_).map(j=>j/2),P=e.worldToIndex(T).map(Math.round),[I,R,L]=P,V=I+R*c+L*g,U=o.getAtIndex(V);return U===i||(l==null?void 0:l.has(U))},toIJK:v=>e.worldToIndex(v),testIJK:v=>{const[_,T,P]=v,I=Math.round(_)+Math.round(T)*c+Math.round(P)*g,R=o.getAtIndex(I);return R===i||(l==null?void 0:l.has(R))}}}function Vwe(n,e,o){const i=Jn.getVolume(n);if(!i){console.warn(`No volume found for ${n}`);return}return Fwe({dimensions:i.dimensions,imageData:i.imageData,voxelManager:i.voxelManager,segmentIndex:e,containedSegmentIndices:o})}const E3=.01;function Uwe(n,e,o){const{sliceContours:i}=n,{segmentIndex:l,containedSegmentIndices:c}=o;let g;const v=Vwe(e,l,c);for(const _ of i){const T=Bwe(_,v,g);T&&(g=T)}return g&&Object.assign(g,o),g}function Bwe(n,e,o={maxMajor:0,maxMinor:0}){const{points:i}=n.polyData,{maxMinor:l,maxMajor:c}=o;let g=c*c,v=l*l,_;for(let j=0;jE3||e.testCenter($,K)&&xb($,K,e)&&(v=X,R=[j,z])}if(!R)return;v=Math.sqrt(v);const L=i[R[0]],V=i[R[1]];return{majorAxis:[T,P],minorAxis:[L,V],maxMajor:g,maxMinor:v,...n}}async function EX(n){const e=await oX({segmentations:n});if(!(e!=null&&e.length)||!e[0].sliceContours.length)return;const{segments:o=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=n,i=s5(n.segmentationId);if(!i)return;const l=o.findIndex(c=>!!c);if(l!==-1)return o[l].segmentIndex=l,Uwe(e[0],i.volumeId,o[l])}function DX(n,e){const{majorAxis:o,minorAxis:i,label:l="",sliceIndex:c}=n,[g,v]=o,[_,T]=i,P=[g,v,_,T];return{highlighted:!0,invalidated:!0,metadata:{toolName:"Bidirectional",...e.getViewReference({sliceIndex:c})},data:{handles:{points:P,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:l,cachedStats:{}},isLocked:!1,isVisible:!0}}const{transformWorldToIndex:u7}=J0,B6=class B6 extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Gwe}}){super(e,o),this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{points:P}=T.handles;let I=_.worldToCanvas(P[0]),R=_.worldToCanvas(P[1]),L={start:{x:I[0],y:I[1]},end:{x:R[0],y:R[1]}},V=za([L.start.x,L.start.y],[L.end.x,L.end.y],[c[0],c[1]]);return V<=g||(I=_.worldToCanvas(P[2]),R=_.worldToCanvas(P[3]),L={start:{x:I[0],y:I[1]},end:{x:R[0],y:R[1]}},V=za([L.start.x,L.start.y],[L.end.x,L.end.y],[c[0],c[1]]),V<=g)},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g);const _=_n(g),{renderingEngine:T}=_;Un(v),Oi(g),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,_=l.data;l.highlighted=!0;let T=!1,P;c.worldPosition?T=!0:P=_.handles.points.findIndex(V=>V===c);const I=fi(v,this.getToolName());Oi(v),this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P,movingTextBox:T},this._activateModify(v);const R=_n(v),{renderingEngine:L}=R;Un(I),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;this.doneEditMemo(),P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const{renderingEngine:I}=_n(c);if(this.editData.handleIndex!==void 0){const{points:R}=P.handles,L=y2(R[0],R[1]);if(y2(R[2],R[3])>L){const U=[[...R[2]],[...R[3]]],j=[...R[0]],z=[...R[1]],$=a0();Iu($,U[1][0]-U[0][0],U[1][1]-U[1][0]);const K=a0();Iu(K,-$[1],$[0]);const X=a0();Iu(X,z[0]-j[0],z[1]-j[0]);let ee;cO(X,K)>0?ee=[j,z]:ee=[z,j],P.handles.points=[U[0],U[1],ee[0],ee[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g),this.editData=null,this.isDrawing=!1},this._dragDrawCallback=i=>{this.isDrawing=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=_n(g),{viewport:_}=v,{worldToCanvas:T}=_,{annotation:P,viewportIdsToRender:I,handleIndex:R,newAnnotation:L}=this.editData;this.createMemo(g,P,{newAnnotation:L});const{data:V}=P,U=c.world;V.handles.points[R]=[...U];const j=V.handles.points.map(T),z={longLineSegment:{start:{x:j[0][0],y:j[0][1]},end:{x:j[1][0],y:j[1][1]}},shortLineSegment:{start:{x:j[2][0],y:j[2][1]},end:{x:j[3][0],y:j[3][1]}}},K=ds(j[0],j[1])/3,X=z.longLineSegment.start.x-z.longLineSegment.end.x,ee=z.longLineSegment.start.y-z.longLineSegment.end.y,ne=Math.sqrt(X*X+ee*ee),le=X/ne,ce=ee/ne,ge=(z.longLineSegment.start.x+z.longLineSegment.end.x)/2,pe=(z.longLineSegment.start.y+z.longLineSegment.end.y)/2,we=ge+K*ce,Te=pe-K*le,Ve=ge-K*ce,Pe=pe+K*le;V.handles.points[2]=_.canvasToWorld([we,Te]),V.handles.points[3]=_.canvasToWorld([Ve,Pe]),P.invalidated=!0,Un(I),C0(P,g,n0.HandlesUpdated),this.editData.hasMoved=!0},this._dragModifyCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(T){const{deltaPoints:R}=l,L=R.world,{textBox:V}=I.handles,{worldPosition:U}=V;U[0]+=L[0],U[1]+=L[1],U[2]+=L[2],V.hasMoved=!0}else if(_===void 0){const{deltaPoints:R}=l,L=R.world;I.handles.points.forEach(U=>{U[0]+=L[0],U[1]+=L[1],U[2]+=L[2]}),g.invalidated=!0}else this._dragModifyHandle(i),g.invalidated=!0;Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this._dragModifyHandle=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=_n(g),{viewport:_}=v,{annotation:T,handleIndex:P}=this.editData,{data:I}=T,R=c.world,L=[_.worldToCanvas(I.handles.points[0]),_.worldToCanvas(I.handles.points[1]),_.worldToCanvas(I.handles.points[2]),_.worldToCanvas(I.handles.points[3])],V={start:{x:L[0][0],y:L[0][1]},end:{x:L[1][0],y:L[1][1]}},U={start:{x:L[2][0],y:L[2][1]},end:{x:L[3][0],y:L[3][1]}},j=[...R],z=_.worldToCanvas(j);if(P===0||P===1){const K=L[P===0?1:0],X=Iu(a0(),z[0]-K[0],z[1]-K[1]),ee=Iu(a0(),L[P][0]-K[0],L[P][1]-K[1]);sh(X,X),sh(ee,ee);const ne={start:{x:K[0],y:K[1]},end:{x:z[0],y:z[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(ne,U))return;const le=K,ce=this._getSignedAngle(ee,X);let ge=L[2][0],pe=L[2][1],we=L[3][0],Te=L[3][1];ge-=le[0],pe-=le[1],we-=le[0],Te-=le[1];const Ve=ge*Math.cos(ce)-pe*Math.sin(ce),Pe=ge*Math.sin(ce)+pe*Math.cos(ce),je=we*Math.cos(ce)-Te*Math.sin(ce),Je=we*Math.sin(ce)+Te*Math.cos(ce);ge=Ve+le[0],pe=Pe+le[1],we=je+le[0],Te=Je+le[1];const it=_.canvasToWorld([ge,pe]),Ge=_.canvasToWorld([we,Te]);I.handles.points[P]=j,I.handles.points[2]=it,I.handles.points[3]=Ge}else{const $=P===2?3:2,K={longLineSegment:{start:V.start,end:V.end},shortLineSegment:{start:U.start,end:U.end}},X=ra(a0(),[K.longLineSegment.end.x,K.longLineSegment.end.y],[K.longLineSegment.start.x,K.longLineSegment.start.y]),ee=sh(a0(),X),ne=ra(a0(),[z[0],z[1]],[L[P][0],L[P][1]]),le=Ww(ne),ce=this._getSignedAngle(ee,ne),ge=Math.cos(ce)*le,pe=yie(a0(),[L[$][0],L[$][1]],ee,ge);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:z[0],y:z[1]},end:{x:pe[0],y:pe[1]}},{start:{x:K.longLineSegment.start.x,y:K.longLineSegment.start.y},end:{x:K.longLineSegment.end.x,y:K.longLineSegment.end.y}})||!y9([z[0],z[1]],[pe[0],pe[1]],[V.start.x,V.start.y],[V.end.x,V.end.y]))return;I.handles.points[$]=_.canvasToWorld(pe),I.handles.points[P]=j}},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback)},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!0;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j,activeHandleIndex:z}=U.handles,$=j.map(wt=>g.worldToCanvas(wt));I.annotationUID=V;const{color:K,lineWidth:X,lineDash:ee,shadow:ne}=this.getAnnotationStyle({annotation:L,styleSpecifier:I});if(!U.cachedStats[T]||U.cachedStats[T].unit==null?(U.cachedStats[T]={length:null,width:null,unit:null},this._calculateCachedStats(L,P,i)):L.invalidated&&this._throttledCalculateCachedStats(L,P,i),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let le;if(!Ys(V))continue;!da(V)&&!this.editData&&z!==null&&(le=[$[z]]),le&&$o(l,V,"0",le,{color:K});const ce=`${V}-line-1`,ge=`${V}-line-2`;V0(l,V,"0",$[0],$[1],{color:K,lineDash:ee,lineWidth:X,shadow:ne},ce),V0(l,V,"1",$[2],$[3],{color:K,lineDash:ee,lineWidth:X,shadow:ne},ge),c=!0;const Te=this.getLinkedTextBoxStyle(I,L);if(!Te.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const Ve=this.configuration.getTextLines(U,T);if(!Ve||Ve.length===0)continue;let Pe;U.handles.textBox.hasMoved||(Pe=Pl($),U.handles.textBox.worldPosition=g.canvasToWorld(Pe));const je=g.worldToCanvas(U.handles.textBox.worldPosition),it=A2(l,V,"1",Ve,je,$,{},Te),{x:Ge,y:Ke,width:qe,height:ut}=it;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Ge,Ke]),topRight:g.canvasToWorld([Ge+qe,Ke]),bottomLeft:g.canvasToWorld([Ge,Ke+ut]),bottomRight:g.canvasToWorld([Ge+qe,Ke+ut])}}return c},this._movingLongAxisWouldPutItThroughShortAxis=(i,l)=>{const c=a0();Iu(c,l.end.x-l.start.x,l.end.y-l.start.y),sh(c,c);const g={start:{x:l.start.x-c[0]*10,y:l.start.y-c[1]*10},end:{x:l.end.x+c[0]*10,y:l.end.y+c[1]*10}};return!y9([g.start.x,g.start.y],[g.end.x,g.end.y],[i.start.x,i.start.y],[i.end.x,i.end.y])},this._calculateCachedStats=(i,l,c)=>{const{data:g}=i,{element:v}=c.viewport,_=g.handles.points[0],T=g.handles.points[1],P=g.handles.points[2],I=g.handles.points[3],{cachedStats:R}=g,L=Object.keys(R);for(let U=0;Uje?Pe:je,it=Pe>je?je:Pe,Ge=Pe>je?we:Ve,Ke=Pe>je?Ve:we;this._isInsideVolume(X,ee,ne,le,K)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,R[j]={length:Je,width:it,unit:Ge,widthUnit:Ke}}const V=i.invalidated;return i.invalidated=!1,V&&C0(i,v,n0.StatsUpdated),R},this._isInsideVolume=(i,l,c,g,v)=>Qo(i,v)&&Qo(l,v)&&Qo(c,v)&&Qo(g,v),this._getSignedAngle=(i,l)=>Math.atan2(i[0]*l[1]-i[1]*l[0],i[0]*l[0]+i[1]*l[1]),this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const o=e.detail,{currentPoints:i,element:l}=o,c=i.world,g=_n(l),{viewport:v,renderingEngine:_}=g;this.isDrawing=!0;const T=v.getCamera(),{viewPlaneNormal:P,viewUp:I}=T,R=this.getReferencedImageId(v,c,P,I),L=v.getFrameOfReferenceUID(),V={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...P],viewUp:[...I],FrameOfReferenceUID:L,referencedImageId:R,...v.getViewReference({points:[c]})},data:{handles:{points:[[...c],[...c],[...c],[...c]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};_0(V,l);const U=fi(l,this.getToolName());return this.editData={annotation:V,viewportIdsToRender:U,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(l),Oi(l),e.preventDefault(),Un(U),V}_calculateLength(e,o){const i=e[0]-o[0],l=e[1]-o[1],c=e[2]-o[2];return Math.sqrt(i*i+l*l+c*c)}};B6.toolName="Bidirectional",B6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=B6.hydrateBase(B6,l,o[0],i),[P,I]=o,[R,L]=P,[V,U]=I,j=[R,L,V,U],{toolInstance:z,...$}=i||{},K={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:j,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...$}};return _0(K,T.element),Un([T.id]),K};let wv=B6;function Gwe(n,e){const{cachedStats:o,label:i}=n,{length:l,width:c,unit:g}=o[e],v=[];return i&&v.push(i),l===void 0||v.push(`L: ${E0(l)} ${g||g}`,`W: ${E0(c)} ${g}`),v}async function Wwe(n,e){console.warn("Deprecation Alert: There is a new getSegmentLargestBidirectional function that handles volume, stack and individual segment cases properly. This function is deprecated and will be removed in a future version.");const{data:o}=e,i=_n(n),l=(o.getSegment||$we)(i,o);if(!l)return;const c=i.viewport.getFrameOfReferenceUID(),g=s_(),{segmentIndex:v,segmentationId:_}=l,T=$a.getAnnotations(this.toolName||wv.toolName,c);let P=!1;const I=T.filter(L=>{const V=L.data.segment;return V?(V.segmentationId===_&&V.segmentIndex===v&&(P=!0,L.data.segment=V),!0):!1});P||I.push({data:{segment:l}});let R;if(I.forEach(async L=>{const V=[],U=L.data.segment,{segmentIndex:j,segmentationId:z}=U;V[j]=U,$a.removeAnnotation(L.annotationUID);const $=await EX({...g.find(ee=>ee.segmentationId===z),segments:V});if(!$)return;const K=DX($,i.viewport);K.annotationUID=L.annotationUID,K.data.segment=U;const X=$a.addAnnotation(K,c);if(U.segmentIndex===l.segmentIndex&&U.segmentationId===l.segmentationId){R=$;const{style:ee}=l;ee&&CM.setAnnotationStyles(X,ee)}}),R){const{sliceIndex:L}=R,V=i.viewport.getImageIds();Yc(n,{imageIndex:V.length-1-L}),i.viewport.render()}else console.warn("No bidirectional found");return R}function $we(n,e){var g;const o=s_();if(!o.length)return;const i=e.segmentationId||o[0].segmentationId,l=e.segmentIndex??Ol(i);if(!l)return;const c=(g=e.segmentData)==null?void 0:g.get(l);return{label:`Segment ${l}`,segmentIndex:l,segmentationId:i,...c}}function IX(n){const e=la(n);if(e===void 0)return;a5(n).forEach(g=>{g.invalidateBrushCursor()});const i=e.getViewportsInfo();if(!Object.keys(i).map(g=>i[g]).length)return;const c=e.getViewportIds();Un(c)}function CP(n,e,o={}){const i=io(n),l=i.representationData,c=(o==null?void 0:o.representationType)??Object.keys(l)[0];if(!c)throw new Error(`Segmentation ${n} does not have any representations`);switch(c){case Ti.Labelmap:return jwe(i,e,o);case Ti.Contour:return zwe(i,e,o);default:return}}function jwe(n,e,{viewport:o}){const i=n.representationData.Labelmap;if(o instanceof xs){const{volumeId:L}=i,V=Jn.getVolume(L);return V?V.imageData.getScalarValueFromWorld(e):void 0}const l=Sh(o.id,n.segmentationId);if(l.length>1){console.warn("Segment selection for labelmaps with multiple imageIds in stack viewports is not supported yet.");return}const c=l[0];if(!Jn.getImage(c))return;const v=jC(o.id,n.segmentationId),_=v==null?void 0:v.actor.getMapper().getInputData(),T=qs(_,e),P=_.getDimensions();return(_.voxelManager||gf.createScalarVolumeVoxelManager({dimensions:P,scalarData:_.getPointData().getScalars().getData()})).getAtIJKPoint(T)}function zwe(n,e,{viewport:o}){const i=n.representationData.Contour,l=Array.from(i.annotationUIDsMap.keys()),{viewPlaneNormal:c}=o.getCamera();for(const g of l){const v=i.annotationUIDsMap.get(g);if(v)for(const _ of v){const T=Xs(_);if(!T)continue;const{polyline:P}=T.data.contour;if(Qi(c,T.metadata.viewPlaneNormal)&&HM(e,P))return Number(g)}}}function OX(n,e,{viewport:o,searchRadius:i}){const c=io(n).representationData.Labelmap;if(o instanceof xs){const{volumeId:U}=c,j=Jn.getVolume(U);if(!j)return;const z=j.voxelManager,$=j.imageData,K=qs($,e),X=z.getAtIJK(K[0],K[1],K[2]),ee=o.worldToCanvas(e);return Kwe(ee,X,o,$,i)?X:void 0}const g=f4(o.id,n);if(!Jn.getImage(g))return;const _=jC(o.id,n),T=_==null?void 0:_.actor.getMapper().getInputData(),P=qs(T,e),I=T.getDimensions(),R=T.voxelManager||gf.createScalarVolumeVoxelManager({dimensions:I,scalarData:T.getPointData().getScalars().getData()}),L=R.getAtIJKPoint(P);return Hwe(P,I,R,L)?L:void 0}function MX(n,e,o=1){const i=Array.from({length:2*o+1},(l,c)=>c-o);for(const l of i)for(const c of i)for(const g of i){if(l===0&&c===0&&g===0)continue;const v=n(l,c,g);if(v!==void 0&&e!==v)return!0}return!1}function Hwe(n,e,o,i,l){return MX((g,v,_)=>{const T=[n[0]+g,n[1]+v,n[2]+_];return o.getAtIJK(T[0],T[1],T[2])},i,l)}function Kwe(n,e,o,i,l){return MX((g,v)=>{const _=[n[0]+g,n[1]+v],T=o.canvasToWorld(_),P=i.get("voxelManager").voxelManager,I=qs(i,T);return P.getAtIJK(I[0],I[1],I[2])},e,l)}function PX(n){const e=io(n),{annotationUIDsMap:o}=e.representationData.Contour;for(const[i,l]of o.entries())if(Array.from(l).find(g=>Xs(g).highlighted))return i}const qwe=` +const MAX_STRENGTH = 65535f; + +// Workgroup size - X*Y*Z must be multiple of 32 for better performance +override workGroupSizeX = 1u; +override workGroupSizeY = 1u; +override workGroupSizeZ = 1u; + +// Compare the current voxel to neighbors using a 9x9x9 window +override windowSize = 9i; + +struct Params { + size: vec3u, + iteration: u32, +} + +// New structure to track bounds of modified voxels +struct Bounds { + minX: atomic, + minY: atomic, + minZ: atomic, + maxX: atomic, + maxY: atomic, + maxZ: atomic, +} + +@group(0) @binding(0) var params: Params; +@group(0) @binding(1) var volumePixelData: array; +@group(0) @binding(2) var labelmap: array; +@group(0) @binding(3) var strengthData: array; +@group(0) @binding(4) var prevLabelmap: array; +@group(0) @binding(5) var prevStrengthData: array; +@group(0) @binding(6) var updatedVoxelsCounter: array>; +@group(0) @binding(7) var modifiedBounds: Bounds; + +fn getPixelIndex(ijkPos: vec3u) -> u32 { + let numPixelsPerSlice = params.size.x * params.size.y; + return ijkPos.x + ijkPos.y * params.size.x + ijkPos.z * numPixelsPerSlice; +} + +fn updateBounds(position: vec3i) { + // Atomically update min bounds (use min operation) + let oldMinX = atomicMin(&modifiedBounds.minX, position.x); + let oldMinY = atomicMin(&modifiedBounds.minY, position.y); + let oldMinZ = atomicMin(&modifiedBounds.minZ, position.z); + + // Atomically update max bounds (use max operation) + let oldMaxX = atomicMax(&modifiedBounds.maxX, position.x); + let oldMaxY = atomicMax(&modifiedBounds.maxY, position.y); + let oldMaxZ = atomicMax(&modifiedBounds.maxZ, position.z); +} + +@compute @workgroup_size(workGroupSizeX, workGroupSizeY, workGroupSizeZ) +fn main( + @builtin(global_invocation_id) globalId: vec3u, +) { + // Make sure it will not get out of bounds for volume with sizes that + // are not multiple of workGroupSize + if ( + globalId.x >= params.size.x || + globalId.y >= params.size.y || + globalId.z >= params.size.z + ) { + return; + } + + // Initialize bounds for the first iteration + if (params.iteration == 0 && globalId.x == 0 && globalId.y == 0 && globalId.z == 0) { + // Initialize to opposite extremes to ensure any update will improve the bounds + atomicStore(&modifiedBounds.minX, i32(params.size.x)); + atomicStore(&modifiedBounds.minY, i32(params.size.y)); + atomicStore(&modifiedBounds.minZ, i32(params.size.z)); + atomicStore(&modifiedBounds.maxX, -1); + atomicStore(&modifiedBounds.maxY, -1); + atomicStore(&modifiedBounds.maxZ, -1); + } + + let currentCoord = vec3i(globalId); + let currentPixelIndex = getPixelIndex(globalId); + + let numPixels = arrayLength(&volumePixelData); + let currentPixelValue = volumePixelData[currentPixelIndex]; + + if (params.iteration == 0) { + // All non-zero initial labels are given maximum strength + strengthData[currentPixelIndex] = select(MAX_STRENGTH, 0., labelmap[currentPixelIndex] == 0); + + // Update bounds for non-zero initial labels + if (labelmap[currentPixelIndex] != 0) { + updateBounds(currentCoord); + } + return; + } + + // It should at least copy the values from previous state + var newLabel = prevLabelmap[currentPixelIndex]; + var newStrength = prevStrengthData[currentPixelIndex]; + + let window = i32(ceil(f32(windowSize - 1) * .5)); + let minWindow = -1i * window; + let maxWindow = 1i * window; + + for (var k = minWindow; k <= maxWindow; k++) { + for (var j = minWindow; j <= maxWindow; j++) { + for (var i = minWindow; i <= maxWindow; i++) { + // Skip current voxel + if (i == 0 && j == 0 && k == 0) { + continue; + } + + let neighborCoord = currentCoord + vec3i(i, j, k); + + // Boundary conditions. Do not grow outside of the volume + if ( + neighborCoord.x < 0i || neighborCoord.x >= i32(params.size.x) || + neighborCoord.y < 0i || neighborCoord.y >= i32(params.size.y) || + neighborCoord.z < 0i || neighborCoord.z >= i32(params.size.z) + ) { + continue; + } + + let neighborIndex = getPixelIndex(vec3u(neighborCoord)); + let neighborPixelValue = volumePixelData[neighborIndex]; + let prevNeighborStrength = prevStrengthData[neighborIndex]; + let strengthCost = abs(neighborPixelValue - currentPixelValue); + let takeoverStrength = prevNeighborStrength - strengthCost; + + if (takeoverStrength > newStrength) { + newLabel = prevLabelmap[neighborIndex]; + newStrength = takeoverStrength; + } + } + } + } + + if (labelmap[currentPixelIndex] != newLabel) { + atomicAdd(&updatedVoxelsCounter[params.iteration], 1u); + + // Update bounds for modified voxels + updateBounds(currentCoord); + } + + labelmap[currentPixelIndex] = newLabel; + strengthData[currentPixelIndex] = newStrength; +} +`,Xwe=1024*1024*1024,Sb=1.99*Xwe,BS={windowSize:3,maxProcessingTime:3e4,inspection:{numCyclesInterval:5,numCyclesBelowThreshold:3,threshold:1e-4}};async function f_(n,e,o=BS){var mn;const i=[8,8,4],{windowSize:l,maxProcessingTime:c}=Object.assign({},BS,o),g=Object.assign({},BS.inspection,o.inspection),v=Jn.getVolume(n),_=Jn.getVolume(e),[T,P,I]=v.dimensions;if(_.dimensions[0]!==T||_.dimensions[1]!==P||_.dimensions[2]!==I)throw new Error("Volume and labelmap must have the same size");let R=Math.floor(Math.sqrt(P**2+T**2+I**2)/2);R=Math.min(R,500);const L=_.voxelManager.getCompleteScalarDataArray();let V=v.voxelManager.getCompleteScalarDataArray();V instanceof Float32Array||(V=new Float32Array(V));const U={maxStorageBufferBindingSize:Sb,maxBufferSize:Sb},z=await(await((mn=navigator.gpu)==null?void 0:mn.requestAdapter())).requestDevice({requiredLimits:U}),$=V.byteLength,K=R*Uint32Array.BYTES_PER_ELEMENT,X=6*Int32Array.BYTES_PER_ELEMENT,ee=z.createShaderModule({code:qwe}),ne=3,le=new Uint32Array([T,P,I,0]),ce=z.createBuffer({size:le.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),ge=z.createBuffer({size:$,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});z.queue.writeBuffer(ge,0,V);const pe=[0,1].map(()=>z.createBuffer({size:$,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}));z.queue.writeBuffer(pe[0],0,new Uint32Array(L));const we=[0,1].map(()=>z.createBuffer({size:$,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST})),Te=z.createBuffer({size:K,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),Ve=z.createBuffer({size:X,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),Pe=new Int32Array([T,P,I,-1,-1,-1]);z.queue.writeBuffer(Ve,0,Pe);const je=z.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:4,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:6,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:7,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]}),Je=[0,1].map(Pn=>{const Hn=pe[Pn],Kn=we[Pn],Dt=pe[(Pn+1)%2],Vt=we[(Pn+1)%2];return z.createBindGroup({layout:je,entries:[{binding:0,resource:{buffer:ce}},{binding:1,resource:{buffer:ge}},{binding:2,resource:{buffer:Hn}},{binding:3,resource:{buffer:Kn}},{binding:4,resource:{buffer:Dt}},{binding:5,resource:{buffer:Vt}},{binding:6,resource:{buffer:Te}},{binding:7,resource:{buffer:Ve}}]})}),it=z.createComputePipeline({layout:z.createPipelineLayout({bindGroupLayouts:[je]}),compute:{module:ee,entryPoint:"main",constants:{workGroupSizeX:i[0],workGroupSizeY:i[1],workGroupSizeZ:i[2],windowSize:l}}}),Ge=[Math.ceil(T/i[0]),Math.ceil(P/i[1]),Math.ceil(I/i[2])],Ke=z.createBuffer({size:K,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),qe=c?performance.now()+c:0;let ut=g.numCyclesInterval,wt=0;for(let Pn=0;Pn0&&!(Pn%ut)){await Ke.mapAsync(GPUMapMode.READ,0,K);const Vt=Ke.getMappedRange(0,K),Bt=new Uint32Array(Vt.slice(0))[Pn]/V.length;if(Ke.unmap(),Pn>=1&&Btqe){console.warn(`Exceeded processing time limit (${c})ms`);break}}const Et=z.createCommandEncoder(),qt=(R+1)%2,$t=z.createBuffer({size:$,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),Jt=z.createBuffer({size:X,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});Et.copyBufferToBuffer(pe[qt],0,$t,0,$),Et.copyBufferToBuffer(Ve,0,Jt,0,X),z.queue.submit([Et.finish()]),await $t.mapAsync(GPUMapMode.READ,0,$);const Dn=$t.getMappedRange(0,$),Nn=new Uint32Array(Dn);L.set(Nn),$t.unmap(),await Jt.mapAsync(GPUMapMode.READ,0,X);const xn=Jt.getMappedRange(0,X),et=new Int32Array(xn.slice(0));Jt.unmap();const Me=et[0],ct=et[1],st=et[2],yt=et[3],St=et[4],Pt=et[5];_.voxelManager.setCompleteScalarDataArray(L),_.voxelManager.clearBounds(),_.voxelManager.setBounds([[Me,yt],[ct,St],[st,Pt]])}const{transformWorldToIndex:Cv}=J0,Ywe=254,Jwe=255,Zwe=.1,Qwe=.8;function e9e(n,e){const{topLeftWorld:o,bottomRightWorld:i}=e,l=Cv(n.imageData,o),c=Cv(n.imageData,i);return{...e,topLeftIJK:l,bottomRightIJK:c}}function t9e(n,e){const o=n.imageData.getDirection(),i=Ei(o[3],o[4],o[5]),{center:l,radius:c}=e,g=n.imageData,v=j0(nr(),l,i,-c),_=j0(nr(),l,i,c),T=Uq([_,v],g);return e9e(n,T)}function n9e(n,e,o){const i=n.imageData,l=o.getCamera(),{ijkVecRowDir:c,ijkVecColDir:g}=RC(i,l);if([c,g].some(P=>!Qi(Math.abs(P[0]),1)&&!Qi(Math.abs(P[1]),1)&&!Qi(Math.abs(P[2]),1))){console.warn("Oblique view is not supported!");return}const{boundsIJK:_}=t9e(n,e),T={minX:_[0][0],maxX:_[0][1]+1,minY:_[1][0],maxY:_[1][1]+1,minZ:_[2][0],maxZ:_[2][1]+1};return mM(n.volumeId,T,{targetBuffer:{type:"Float32Array"}})}function r9e(n,e,o,i){const l=n.voxelManager.getCompleteScalarDataArray(),c=o.center,[g,v,_]=n.dimensions,T=g*v,P=Cv(n.imageData,c),I=l[P[2]*T+P[1]*g+P[0]],R=i.positiveSeedValue??Ywe,L=i.positiveSeedVariance??Zwe,V=Math.abs(I*L),U=I-V,j=I+V,z=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],$=P[2]*T+P[1]*g+P[0];e.voxelManager.setAtIndex($,R);const K=[P];for(;K.length;){const X=K.shift(),[ee,ne,le]=X;for(let ce=0,ge=z.length;ce=g||Te<0||Te>=v||Ve<0||Ve>=_)continue;const Pe=Ve*T+Te*g+we,je=l[Pe];e.voxelManager.getAtIndex(Pe)===R||jej||(e.voxelManager.setAtIndex(Pe,R),K.push([we,Te,Ve]))}}}function i9e(n,e,o,i,l){const c=n.voxelManager.getCompleteScalarDataArray(),[g,v,_]=e.dimensions,T=g*v,{worldVecRowDir:P,worldVecSliceDir:I}=RC(e.imageData,i.getCamera()),R=Cv(n.imageData,o.center),L=c[R[2]*g*v+R[1]*g+R[0]],V=l.negativeSeedVariance??Qwe,U=(l==null?void 0:l.negativeSeedValue)??Jwe,j=Math.abs(L*V),z=L-j,$=L+j,K=360,X=2*Math.PI/K,ee=hC(Kd(),I,X),ne=rG(P);for(let le=0;le=g||we<0||we>=v||Te<0||Te>=_)continue;const Ve=pe+we*g+Te*T,Pe=c[Ve];(Pe$)&&e.voxelManager.setAtIndex(Ve,U)}}async function o9e(n,e,o,i){const l=await EC(n.volumeId);return r9e(n,l,e,i),i9e(n,l,e,o,i),l}async function RX(n,e,o,i){const l=Jn.getVolume(n),c=n9e(l,e,o),g=await o9e(c,e,o,i);return await f_(c.volumeId,g.volumeId),g}const s9e=254,a9e=255,l9e=[-1/0,-995],u9e=[0,1900];function c9e(n,e,o){const{negativeSeedValue:i=a9e,negativePixelRange:l=l9e}=o,c=n.voxelManager.getCompleteScalarDataArray(),[g,v,_]=e.dimensions,T=Math.floor(_/2),P=new Array(g*v).fill(!1),I=T*g*v,R=(V,U)=>{const j=[[V,U]];for(;j.length;){const[z,$]=j.shift(),K=$*g+z;if(z<0||z>=g||$<0||$>=v||P[K])continue;P[K]=!0;const X=I+K,ee=c[X];eel[1]||(e.voxelManager.setAtIndex(X,i),j.push([z-1,$]),j.push([z+1,$]),j.push([z,$-1]),j.push([z,$+1]))}},L=(V,U,j,z)=>{for(let $=V;$!==U;$+=j){const K=z*g+$,X=I+K,ee=c[X];if(eel[1])break;P[K]||R($,z)}};for(let V=0;V=l[0]&&K<=l[1]&&e.voxelManager.setAtIndex($,i)}}}}async function h9e(n,e){const o=EC(n.volumeId);return f9e(n,o,e),c9e(n,o,e),o}async function AX(n,e,o){const{boundingBox:i}=e,{ijkTopLeft:l,ijkBottomRight:c}=i,g={minX:l[0],maxX:c[0],minY:l[1],maxY:c[1],minZ:l[2],maxZ:c[2]},v=mM(n,g,{targetBuffer:{type:"Float32Array"}}),_=await h9e(v,o);return await f_(v.volumeId,_.volumeId),_}const d9e=254,g9e=255,p9e=1,LX=1.8,m9e=3.2,sD=30,v9e=70,k9e=50,{transformWorldToIndex:y9e}=J0,K3=1e5;function NX(n,e,o){const{dimensions:i,imageData:l}=n,[c,g,v]=i,_=n.voxelManager,T=_.getCompleteScalarDataArray(),P=c*g,I=(o==null?void 0:o.initialNeighborhoodRadius)??p9e,R=(o==null?void 0:o.positiveStdDevMultiplier)??LX,L=(o==null?void 0:o.negativeStdDevMultiplier)??m9e,V=(o==null?void 0:o.negativeSeedMargin)??sD,U=(o==null?void 0:o.negativeSeedsTargetPatches)??v9e,j=y9e(l,e).map(Math.round),z=_.toIndex(j);if(j[0]<0||j[0]>=c||j[1]<0||j[1]>=g||j[2]<0||j[2]>=v)return console.warn("Click position is outside volume bounds."),null;const $=Tz(T,i,j,I);$.count===0&&($.mean=T[z],$.stdDev=0);const K=$.mean-R*$.stdDev,X=$.mean+R*$.stdDev,ee=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]];let ne=1/0,le=1/0,ce=1/0,ge=-1/0,pe=-1/0,we=-1/0;const Te=new Set,Ve=[],Pe=T[z];if(Pe>=K&&Pe<=X)Te.add(z),Ve.push(j),ne=ge=j[0],le=pe=j[1],ce=we=j[2];else return console.warn("Clicked voxel intensity is outside the calculated positive range. No positive seeds generated."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};let je=0;for(;je=c||Dt<0||Dt>=g||Vt<0||Vt>=v)continue;const gn=Vt*P+Dt*c+Kn;if(Te.has(gn))continue;const Bt=T[gn];Bt>=K&&Bt<=X&&(Te.add(gn),Te.size=K3&&console.debug(`Reached maximum number of positive seeds (${K3}). Stopping BFS.`),Te.size===0)return console.warn("No positive seeds found after BFS."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};let Je=0,it=0;Te.forEach(st=>{const yt=T[st];Je+=yt,it+=yt*yt});const Ge=Te.size,Ke=Je/Ge,qe=it/Ge-Ke*Ke,ut=Math.sqrt(Math.max(0,qe)),wt=L*ut,Et=Math.max(0,ne-V),qt=Math.max(0,le-V),$t=Math.max(0,ce-V),Jt=Math.min(c-1,ge+V),Dn=Math.min(g-1,pe+V),Nn=Math.min(v-1,we+V),xn=new Set;let et=0,Me=0;const ct=U*k9e;for(;Mewt){let Pn=!1;for(let Hn=-1;Hn<=1;Hn++){const Kn=yt+Hn;if(!(Kn<0||Kn>=g))for(let Dt=-1;Dt<=1;Dt++){const Vt=st+Dt;if(Vt<0||Vt>=c)continue;const gn=St*P+Kn*c+Vt;Te.has(gn)||xn.has(gn)||(xn.add(gn),Pn=!0)}}Pn&&Me++}}return xn.size===0&&console.warn("Could not find any negative seeds. GrowCut might fail or produce poor results."),console.debug("positiveSeedIndices",Te.size),console.debug("negativeSeedIndices",xn.size),{positiveSeedIndices:Te,negativeSeedIndices:xn}}async function bX({referencedVolumeId:n,worldPosition:e,options:o}){const i=Jn.getVolume(n),l=EC(n);l.voxelManager.forEach(({index:P,value:I})=>{I!==0&&l.voxelManager.setAtIndex(P,0)});const c=o.seeds??NX(i,e,o),g=(o==null?void 0:o.positiveSeedValue)??d9e,v=(o==null?void 0:o.negativeSeedValue)??g9e;if(!c)return null;const{positiveSeedIndices:_,negativeSeedIndices:T}=c;return _.size<10||_.size>K3||T.size<10?(console.warn("Not enough seeds found. GrowCut might fail or produce poor results."),l):(_.forEach(P=>{l.voxelManager.setAtIndex(P,g)}),T.forEach(P=>{l.voxelManager.setAtIndex(P,v)}),await f_(n,l.volumeId,o),l)}const w9e=Object.freeze(Object.defineProperty({__proto__:null,run:f_,runGrowCutForBoundingBox:AX,runGrowCutForSphere:RX,runOneClickGrowCut:bX},Symbol.toStringTag,{value:"Module"}));function C9e(n,e){const{segmentationId:o,config:i}=e,l={colorLUTIndex:_9e(i),...i};No.addSegmentationRepresentation(n,o,e.type,l),e.type===Ti.Contour&&Un([n]),cu(o)}function _9e(n){const{colorLUTOrIndex:e}=n||{};return e===void 0?km(JSON.parse(JSON.stringify(E9))):typeof e=="number"?e:Array.isArray(e)&&e.every(i=>Array.isArray(i)&&i.length===4)?km(e):km(JSON.parse(JSON.stringify(E9)))}function l5(n,e){e.map(o=>C9e(n,o))}function _P(n,e){return l5(n,e.map(o=>({...o,type:Ti.Contour})))}function x9e(n){const e={};for(const[o,i]of Object.entries(n))e[o]=_P(o,i);return e}function FX(n,e){return l5(n,e.map(o=>({...o,type:Ti.Labelmap})))}function S9e(n){for(const[e,o]of Object.entries(n))FX(e,o.map(i=>({...i,type:Ti.Labelmap})))}function VX(n,e){return l5(n,e.map(o=>({...o,type:Ti.Surface})))}function T9e(n){const e={};for(const[o,i]of Object.entries(n))e[o]=VX(o,i);return e}async function E9e({segmentationId:n,viewportId:e,imageIds:o,options:i}){const l=io(n);if(i!=null&&i.removeOriginal){const c=l.representationData.Labelmap;Jn.getVolume(c.volumeId)&&Jn.removeVolumeLoadObject(c.volumeId),l.representationData.Labelmap={imageIds:o}}else l.representationData.Labelmap={...l.representationData.Labelmap,imageIds:o};await l5(e,[{segmentationId:n,type:Ti.Labelmap}]),pr.addEventListenerOnce(Xe.SEGMENTATION_RENDERED,()=>K2(n))}async function D9e({volumeId:n}){return{imageIds:Jn.getVolume(n).imageIds}}function I9e({segmentationId:n,options:e}){const o=io(n);if(!o)return;const{volumeId:i}=o.representationData.Labelmap,l=Jn.getVolume(i);return E9e({segmentationId:n,viewportId:e.viewportId,imageIds:l.imageIds,options:e})}async function UX(n){return LH(n)}async function O9e({segmentationId:n,segmentIndices:e,mode:o="individual"}){o_(),kf(su.COMPUTE_LARGEST_BIDIRECTIONAL,0);const i=nX(n,e);if(!i)return;const{operationData:l,segImageIds:c,reconstructableVolume:g,indices:v}=i,_=g?await M9e({operationData:l,indices:v,mode:o}):await P9e({segImageIds:c,indices:v,mode:o});return kf(su.COMPUTE_LARGEST_BIDIRECTIONAL,100),_}async function M9e({operationData:n,indices:e,mode:o}){const i=rX(n),{segmentationVoxelManager:l,segmentationImageData:c}=i,v={scalarData:l.getCompleteScalarDataArray(),dimensions:c.getDimensions(),spacing:c.getSpacing(),origin:c.getOrigin(),direction:c.getDirection()};return await Mh().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:v,indices:e,mode:o})}async function P9e({segImageIds:n,indices:e,mode:o}){const{segmentationInfo:i}=iX(n);return await Mh().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:i,indices:e,mode:o,isStack:!0})}function R9e(n){const e=io(n);if(!e)return null;let o;const i=e.representationData.Labelmap;if("imageIds"in i){const{imageIds:l}=i,c=Jn.getImage(l[0]),g=Jn.getVolumeContainingImageId(c.referencedImageId);if(g!=null&&g.volume)return g.volume;o=l.map(v=>Jn.getImage(v).referencedImageId)}else if("volumeId"in i){const{volumeId:l,referencedVolumeId:c}=i;if(c){const v=Jn.getVolume(c);if(v)return v}const g=Jn.getVolume(l);g&&(o=g.imageIds.map(v=>Jn.getImage(v).referencedImageId))}return a_(o)}async function A9e({segmentationIds:n,segmentIndex:e}){o_(),kf(su.COMPUTE_STATISTICS,0);const o=io(n[0]),{imageIds:i}=o.representationData.Labelmap;if(!u4(i))throw new Error("Invalid volume - TMTV cannot be calculated");return await L9e({segmentationIds:n,segmentIndex:e})}async function L9e({segmentationIds:n,segmentIndex:e}){const o=n.map(U=>s5(U)),i=uX(o,e);if(!i)throw new Error("Invalid volume - TMTV cannot be calculated");const{imageData:l,dimensions:c,direction:g,origin:v,voxelManager:_}=i,T=l.getSpacing(),I={scalarData:_.getCompleteScalarDataArray(),dimensions:c,spacing:T,origin:v,direction:g},R=R9e(n[0]),L={dimensions:R.dimensions,spacing:R.spacing,origin:R.origin,direction:R.direction,scalarData:R.voxelManager.getCompleteScalarDataArray()};if(L.scalarData.length===0||I.scalarData.length===0)return{[e]:{name:"TMTV",value:0}};const V=await Mh().executeTask("compute","computeMetabolicStats",{segmentationInfo:I,imageInfo:L});return kf(su.COMPUTE_STATISTICS,100),V}const N9e=Object.freeze(Object.defineProperty({__proto__:null,IslandRemoval:qg,LabelmapMemo:wwe,SegmentStatsCalculator:oD,VolumetricCalculator:Mg,computeMetabolicStats:A9e,computeStackLabelmapFromVolume:D9e,computeVolumeLabelmapFromStack:UX,contourAndFindLargestBidirectional:EX,createBidirectionalToolData:DX,createLabelmapVolumeForViewport:U7e,createMergedLabelmapForIndex:uX,floodFill:yP,getBrushSizeForToolGroup:Pwe,getBrushThresholdForToolGroup:Awe,getBrushToolInstances:a5,getHoveredContourSegmentationAnnotation:PX,getOrCreateImageVolume:a_,getOrCreateSegmentationVolume:s5,getReferenceVolumeForSegmentationVolume:Qq,getSegmentIndexAtLabelmapBorder:OX,getSegmentIndexAtWorldPoint:CP,getSegmentLargestBidirectional:O9e,getStatistics:dX,getUniqueSegmentIndices:DK,growCut:w9e,invalidateBrushCursor:IX,rectangleROIThresholdVolumeByRange:F7e,segmentContourAction:Wwe,setBrushSizeForToolGroup:Mwe,setBrushThresholdForToolGroup:Rwe,thresholdSegmentationByRange:Lwe,thresholdVolumeByRange:aX,triggerSegmentationRender:r5,triggerSegmentationRenderBySegmentationId:r_,validateLabelmap:S7e},Symbol.toStringTag,{value:"Module"}));function b9e(n){let e="";const o=n[0]<0?"R":"L",i=n[1]<0?"A":"P",l=n[2]<0?"F":"H",c=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])],g=1e-4;for(let v=0;v<3;v++)if(c[0]>g&&c[0]>c[1]&&c[0]>c[2])e+=o,c[0]=0;else if(c[1]>g&&c[1]>c[0]&&c[1]>c[2])e+=i,c[1]=0;else if(c[2]>g&&c[2]>c[0]&&c[2]>c[1])e+=l,c[2]=0;else if(c[0]>g&&c[1]>g&&c[0]===c[1])e+=o+i,c[0]=0,c[1]=0;else if(c[0]>g&&c[2]>g&&c[0]===c[2])e+=o+l,c[0]=0,c[2]=0;else if(c[1]>g&&c[2]>g&&c[1]===c[2])e+=i+l,c[1]=0,c[2]=0;else break;return e}function F9e(n){let e=n.replace("H","f");return e=e.replace("F","h"),e=e.replace("R","l"),e=e.replace("L","r"),e=e.replace("A","p"),e=e.replace("P","a"),e=e.toUpperCase(),e}const V9e=Object.freeze(Object.defineProperty({__proto__:null,getOrientationStringLPS:b9e,invertOrientationStringLPS:F9e},Symbol.toStringTag,{value:"Module"}));var l8;(function(n){n.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",n.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED"})(l8||(l8={}));const xP={};function BX(n,e){const o=_n(n),{viewportId:i}=o;xP[i]=e}function SP(n){const e=_n(n),{viewportId:o}=e;return xP[o]}function U9e(n){return xP[n]}const{ViewportStatus:GX}=bu,{triggerEvent:GS}=J0,WX=!0,aD=new Map;function B9e(n,e){let o,i;if(n===void 0)throw new Error("playClip: element must not be undefined");const l=_n(n);if(!l)throw new Error("playClip: element must be a valid Cornerstone enabled element");e||(e={}),e.dynamicCineEnabled=e.dynamicCineEnabled??!0;const{viewport:c}=l,g=H9e(c,e);let v=SP(n);const _=e.dynamicCineEnabled;if(_&&jX(n),v?lD(n,{stopDynamicCine:!_,viewportId:c.id}):(v={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:e.frameTimeVector??void 0,speed:e.frameTimeVectorSpeedMultiplier??1,reverse:e.reverse??!1,loop:e.loop??!0,bounce:e.bounce??!1},BX(n,v)),v.dynamicCineEnabled=e.dynamicCineEnabled,(e.framesPerSecond<0||e.framesPerSecond>0)&&(v.framesPerSecond=Number(e.framesPerSecond),v.reverse=v.framesPerSecond<0,v.ignoreFrameTimeVector=!0),v.ignoreFrameTimeVector!==!0&&v.frameTimeVector&&v.frameTimeVector.length===g.numScrollSteps&&g.frameTimeVectorEnabled){const{timeouts:I,isTimeVarying:R}=G9e(v.frameTimeVector,v.speed);o=I,i=R}e.bounce!==void 0&&(v.bounce=e.bounce);const T=()=>{const{numScrollSteps:I,currentStepIndex:R}=g;let L=R+(v.reverse?-1:1);if(L<0||L>=I)if(v.bounce)v.reverse=!v.reverse,L=R+(v.reverse?-1:1),L=Math.max(0,Math.min(I-1,L));else if(v.loop)L=v.reverse?I-1:0;else{lD(n,{stopDynamicCine:!_,viewportId:c.id}),GS(n,l8.CLIP_STOPPED,{element:n});return}const U=L-R;if(U)try{g.scroll(U)}catch(j){console.warn("Play clip not scrolling",j),zX(v),GS(n,l8.CLIP_STOPPED,{element:n})}};if(_){const I=TP(c);I&&aD.set(I.volumeId,n)}g.play?v.framesPerSecond=g.play(e.framesPerSecond):o&&o.length>0&&i?(v.usingFrameTimeVector=!0,v.intervalId=window.setTimeout(function I(){v.intervalId=window.setTimeout(I,o[g.currentStepIndex]),T()},0)):(v.usingFrameTimeVector=!1,v.intervalId=window.setInterval(T,1e3/Math.abs(v.framesPerSecond)));const P={element:n};GS(n,l8.CLIP_STARTED,P)}function $X(n,e={}){lD(n,{stopDynamicCine:!0,...e})}function lD(n,e={stopDynamicCine:!0,viewportId:void 0}){const{stopDynamicCine:o,viewportId:i}=e,l=_n(n);let c;const g=l==null?void 0:l.viewport;if(l){const{viewport:v}=l;c=SP(v.element)}else if(i)c=U9e(i);else return;c&&zX(c),g instanceof sv?g.pause():o&&g instanceof xs&&jX(n)}function jX(n){const{viewport:e}=_n(n);if(e instanceof ns){const o=TP(e);if(o!=null&&o.isDynamicVolume()){const i=aD.get(o.volumeId);aD.delete(o.volumeId),i&&i!==n&&$X(i)}}}function G9e(n,e){let o,i,l,c=0;const g=n.length,v=[];let _=!1;for((typeof e!="number"||e<=0)&&(e=1),o=1;o0&&(_?l=c/v.length|0:l=v[0],v.push(l)),{timeouts:v,isTimeVarying:_}}function zX(n){const e=n.intervalId;typeof e<"u"&&(n.intervalId=void 0,n.usingFrameTimeVector?clearTimeout(e):clearInterval(e))}function TP(n){if(!(n instanceof ns))return;const e=n.getAllVolumeIds();if(!(e!=null&&e.length))return;const i=e.find(l=>{var c;return(c=Jn.getVolume(l))==null?void 0:c.isDynamicVolume()})??e[0];return Jn.getVolume(i)}function W9e(n,e){const o=n.getImageIds();return{get numScrollSteps(){return o.length},get currentStepIndex(){return n.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(i){if(this.waitForRenderedCount<=e&&n.viewportStatus!==GX.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,$g(n,{delta:i,debounceLoading:WX})}}}function $9e(n,e){return{get numScrollSteps(){return n.getNumberOfSlices()},get currentStepIndex(){return n.getSliceIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(o){if(this.waitForRenderedCount<=e&&n.viewportStatus!==GX.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,$g(n,{delta:o,debounceLoading:WX})},play(o){return o&&n.setPlaybackRate(o/24),n.play(),n.getFrameRate()}}}function j9e(n,e){const{volumeId:o}=e,i={viewPlaneNormal:nr(),scrollInfo:null},l=()=>{const c=n.getCamera();if(!i.scrollInfo||!gE(c.viewPlaneNormal,i.viewPlaneNormal)){const v=Ig(n,o);i.viewPlaneNormal=c.viewPlaneNormal,i.scrollInfo=v}return i.scrollInfo};return{get numScrollSteps(){return l().numScrollSteps},get currentStepIndex(){return l().currentStepIndex},get frameTimeVectorEnabled(){const c=n.getCamera(),g=e.direction.slice(6,9).map(_=>-_),v=mi(g,c.viewPlaneNormal);return Hd(v,1)},scroll(c){l().currentStepIndex+=c,$g(n,{delta:c})}}}function z9e(n){return{get numScrollSteps(){return n.numDimensionGroups},get currentStepIndex(){return n.dimensionGroupNumber-1},get frameTimeVectorEnabled(){return!1},scroll(e){n.scroll(e)}}}function H9e(n,e){if(n instanceof ts)return W9e(n,e.waitForRendered??30);if(n instanceof ns){const o=TP(n);return e.dynamicCineEnabled&&(o!=null&&o.isDynamicVolume())?z9e(o):j9e(n,o)}if(n instanceof sv)return $9e(n,e.waitForRendered??30);throw new Error("Unknown viewport type")}const K9e=Object.freeze(Object.defineProperty({__proto__:null,Events:l8,addToolState:BX,getToolState:SP,playClip:B9e,stopClip:$X},Symbol.toStringTag,{value:"Module"}));function q9e(n,e){var i,l,c;const o=(e==null?void 0:e.knotsRatioPercentage)||30;return!((c=(l=(i=n==null?void 0:n.data)==null?void 0:i.contour)==null?void 0:l.polyline)!=null&&c.length)||o<=0}function X9e(n,e){const o=Dl(),i=v2(nr(),e,n),l=Math.abs(n[0])>.1?Ei(-n[1],n[0],0):Ei(0,-n[2],n[1]);return lO(o,e,i,l),o}function c7(n,e=Math.floor(Math.random()*(n.length-1))){if(e===0)return 0;const o=[...n],{length:i}=n;for(let l=0;l{const I=g0(nr(),P,c);return[I[0],I[1]]});let v=i?c7(g):0,_=ZE(g,0,g.length,(e==null?void 0:e.knotsRatioPercentage)||30);if(_===g)return!1;c7(_,-v);for(let P=1;P<(e==null?void 0:e.loop);P++)v=i?c7(_):0,_=ZE(_,0,g.length,(e==null?void 0:e.knotsRatioPercentage)||30),c7(_,-v);const T=Ia(Dl(),c);return n.data.contour.polyline=_.map(P=>g0([0,0,0],[...P,0],T)),!0}const Y9e={smoothAnnotation:HX},J9e=Object.freeze(Object.defineProperty({__proto__:null,default:Y9e,smoothAnnotation:HX},Symbol.toStringTag,{value:"Module"})),Z9e=Object.freeze(Object.defineProperty({__proto__:null,getBoundsIJKFromRectangleAnnotations:lX,isAxisAlignedRectangle:xX},Symbol.toStringTag,{value:"Module"})),KX={};function qX(n,e){const o=_n(n),{viewportId:i}=o;KX[i]=e}function u5(n){const e=_n(n),{viewportId:o}=e;return KX[o]}const Pg=R0.Prefetch,XX=0;function Q9e(n,e){n=Math.round(n)||0,e=Math.round(e)||0;const o=[];let i=e-n+1;if(i<=0)return o;for(;i--;)o[i]=e--;return o}function eCe(n,e){let o=0,i=n.length-1;return n.forEach((l,c)=>{le&&(i=Math.min(c,i))}),{low:o,high:i}}function c5(n){const e=_n(n);if(!e)return null;const{viewport:o}=e;return o instanceof ts?{currentImageIdIndex:o.getCurrentImageIdIndex(),imageIds:o.getImageIds()}:null}function h_(n){return function(e){const o=e.detail;let i;try{i=c5(n)}catch{return}if(!i||!i.imageIds||i.imageIds.length===0)return;const c=i.imageIds.indexOf(o.imageId);if(c<0)return;const g=u5(n);!g||!g.indicesToRequest||!g.indicesToRequest.length||g.indicesToRequest.push(c)}}const tCe=n=>{const e=new Set(n.imageIds);return o=>o.type!==Pg||!e.has(o.additionalDetails.imageId)};let ym={maxImagesToPrefetch:1/0,preserveExistingPool:!0},uD;const nCe=10;function YX(n){var V,U;const e=u5(n);if(!e)return;const o=e||{},i=c5(n);if(!((V=i==null?void 0:i.imageIds)!=null&&V.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const{currentImageIdIndex:l}=i;if(o.enabled=o.enabled&&(((U=o.indicesToRequest)==null?void 0:U.length)??0)>0,o.enabled===!1)return;function c(j){const z=o.indicesToRequest.indexOf(j);z>-1&&o.indicesToRequest.splice(z,1)}if(e.indicesToRequest.sort((j,z)=>j-z),o.indicesToRequest.slice().forEach(function(j){const z=i.imageIds[j];if(!z)return;(Math.abs(l-j)<6?Jn.getImageLoadObject(z):Jn.isLoaded(z))&&c(j)}),!o.indicesToRequest.length)return;ym.preserveExistingPool||Y1.clearRequestStack(Pg);const v=eCe(o.indicesToRequest,i.currentImageIdIndex);let _,T,P=v.low,I=v.high;const R=[];for(;P>=0||Iym.maxImagesToPrefetch,$=o.indicesToRequest[I]-j>ym.maxImagesToPrefetch,K=!z&&P>=0,X=!$&&IXd(j,z);R.forEach(j=>{const z={requestType:Pg};Y1.addRequest(L.bind(null,j,z),Pg,{imageId:j},XX)})}function cD(n){clearTimeout(uD),uD=setTimeout(function(){const e=n.target;try{YX(e)}catch{return}},nCe)}function rCe(n){const e=c5(n);if(!e||!e.imageIds||e.imageIds.length===0){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const o={indicesToRequest:Q9e(0,e.imageIds.length-1),enabled:!0,direction:1},i=o.indicesToRequest.indexOf(e.currentImageIdIndex);o.indicesToRequest.splice(i,1),qX(n,o),YX(n),n.removeEventListener(vr.STACK_NEW_IMAGE,cD),n.addEventListener(vr.STACK_NEW_IMAGE,cD);const l=h_(n);pr.removeEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,l),pr.addEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,l)}function iCe(n){clearTimeout(uD),n.removeEventListener(vr.STACK_NEW_IMAGE,cD);const e=h_(n);pr.removeEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,e);const o=u5(n);o&&o.indicesToRequest.length&&(o.enabled=!1,Y1.clearRequestStack(Pg))}function oCe(){return ym}function sCe(n){ym=n}const aCe={enable:rCe,disable:iCe,getConfiguration:oCe,setConfiguration:sCe};let _v={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1},fD;const lCe=5,uCe=n=>{var i;const e=c5(n);if(!e)return;if(!((i=e.imageIds)!=null&&i.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}DP(n),EP(n),n.removeEventListener(vr.STACK_NEW_IMAGE,hD),n.addEventListener(vr.STACK_NEW_IMAGE,hD);const o=h_(n);pr.removeEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,o),pr.addEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,o)};function EP(n){var T,P;const e=c5(n);if(!e)return;if(!((T=e==null?void 0:e.imageIds)!=null&&T.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const o=u5(n);if(!o)return;const i=o||{};if(i.enabled=i.enabled&&(((P=i.indicesToRequest)==null?void 0:P.length)??0)>0,i.enabled===!1)return;function l(I){const R=i.indicesToRequest.indexOf(I);R>-1&&i.indicesToRequest.splice(R,1)}const c=i.indicesToRequest.slice(),{currentImageIdIndex:g}=e;if(c.forEach(I=>{const R=e.imageIds[I];if(!R)return;(Math.abs(g-I)<6?Jn.getImageLoadObject(R):Jn.isLoaded(R))&&l(I)}),!i.indicesToRequest.length)return;_v.preserveExistingPool||Y1.filterRequests(tCe(e));function v(I){var j,z;const R=e.imageIds.indexOf(I);l(R);const L=Jn.getCachedImageBasedOnImageURI(I),{stats:V}=i,U=((j=L==null?void 0:L.image)==null?void 0:j.decodeTimeInMS)||0;if(U){V.imageIds.set(I,U),V.decodeTimeInMS+=U;const $=((z=L==null?void 0:L.image)==null?void 0:z.loadTimeInMS)||0;V.loadTimeInMS+=$}if(!i.indicesToRequest.length&&L!=null&&L.sizeInBytes){const{sizeInBytes:$}=L,K=Jn.getMaxCacheSize()/4/$;if(!i.cacheFill)V.initialTime=Date.now()-V.start,V.initialSize=V.imageIds.size,DP(n,K),EP(n);else if(V.imageIds.size){V.fillTime=Date.now()-V.start;const{size:X}=V.imageIds;V.fillSize=X}}}const _=(I,R)=>Xd(I,R).then(()=>v(I));i.indicesToRequest.forEach(I=>{const R=e.imageIds[I],L={requestType:Pg};Y1.addRequest(_.bind(null,R,L),Pg,{imageId:R},XX)})}function hD(n){clearTimeout(fD),fD=setTimeout(function(){const e=n.target;try{DP(e),EP(e)}catch{return}},lCe)}const cCe=n=>n<0?-1:1,DP=(n,e)=>{var R;const o=c5(n);if(!o)return;if(!((R=o.imageIds)!=null&&R.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const{currentImageIdIndex:i}=o;let{maxAfter:l=2,minBefore:c=2}=_v;const{directionExtraImages:g=10}=_v,v=u5(n)||{indicesToRequest:[],currentImageIdIndex:i,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},_=i-v.currentImageIdIndex;if(v.direction=cCe(_),v.currentImageIdIndex=i,v.enabled=!0,v.stackCount<100&&(v.stackCount+=g),Math.abs(_)>l||!_)if(v.stackCount=0,e){const L=i/o.imageIds.length;c=Math.ceil(e*L),l=Math.ceil(e*(1-L)),v.cacheFill=!0}else v.cacheFill=!1;else _<0?(c+=v.stackCount,l=0):(l+=v.stackCount,c=0);const T=Math.max(0,i-c),P=Math.min(o.imageIds.length-1,i+l),I=[];for(let L=i+1;L<=P;L++)I.push(L);for(let L=i-1;L>=T;L--)I.push(L);v.indicesToRequest=I,qX(n,v)};function fCe(n){clearTimeout(fD),n.removeEventListener(vr.STACK_NEW_IMAGE,hD);const e=h_(n);pr.removeEventListener(vr.IMAGE_CACHE_IMAGE_REMOVED,e);const o=u5(n);o&&(o.enabled=!1)}function hCe(){return _v}function dCe(n){_v=n}const gCe={enable:uCe,disable:fCe,getConfiguration:hCe,setConfiguration:dCe},pCe=Object.freeze(Object.defineProperty({__proto__:null,isViewportPreScaled:Rh},Symbol.toStringTag,{value:"Module"}));function mCe(n,e){let o;const i=e.dimensionGroupNumbers||e.frameNumbers||Array.from({length:n.numDimensionGroups},(l,c)=>c+1);if(e.frameNumbers&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead."),!e.maskVolumeId&&!e.worldCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(e.maskVolumeId&&e.worldCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(e.maskVolumeId){const l=Jn.getVolume(e.maskVolumeId);if(!l)throw new Error("Segmentation volume not found");const[c,g]=kCe(i,n,l);return[c,g]}return e.worldCoordinate?vCe(i,e.worldCoordinate,n):o}function vCe(n,e,o){const{dimensions:i,imageData:l}=o,c=l.worldToIndex(e);if(c[0]=Math.floor(c[0]),c[1]=Math.floor(c[1]),c[2]=Math.floor(c[2]),!Qo(c,i))throw new Error("outside bounds");const g=i[0],v=i[0]*i[1],_=[];return n.forEach(T=>{const P=c[2]*v+c[1]*g+c[0];_.push(o.voxelManager.getAtIndexAndDimensionGroup(P,T))}),_}function kCe(n,e,o){const{imageData:i}=o,l=o.voxelManager,c=l.getScalarDataLength(),g=[];g.length=c;let v=0;for(let R=0,L=c;R{if(L===0)return;const U=DM(e.imageData,e.dimensions,e.spacing,R);let j=0;const z=new Map;n.forEach(X=>z.set(X,0));const $=({index:X})=>{for(let ee=0;ee{K.push(X/j)}),P.push(V),_.push(K)};return o.voxelManager.forEach(I,{imageData:i}),[_,P]}function JX(n,e){const o=n.getScalarDataLength(),i=new Float32Array(o);for(const l of e){const c=n.getDimensionGroupScalarData(l);for(let g=0;g{const i=JX(n,e);for(let l=0;l{const i=yCe(n,e);for(let l=0;l{if(e.length!==2)throw new Error("Please provide only 2 dimension groups for subtraction.");const i=n.getScalarDataLength(),l=n.getDimensionGroupScalarData(e[0]),c=n.getDimensionGroupScalarData(e[1]);for(let g=0;gI+1);if(c.length<=1)throw new Error("Please provide two or more dimension groups");const g=n.voxelManager,v=g.getScalarDataLength(),_=ZX[e];if(!_)throw new Error(`Unsupported operation: ${e}`);const T=new Float32Array(v);return _(g,c,(P,I)=>{T[P]=I}),T}function CCe(n,e,o){const{dimensionGroupNumbers:i,frameNumbers:l,targetVolume:c}=o;if(!c)throw new Error("A target volume must be provided");l&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead.");const g=i||l||Array.from({length:n.numDimensionGroups},(P,I)=>I+1);if(g.length<=1)throw new Error("Please provide two or more dimension groups");const v=n.voxelManager,_=c.voxelManager,T=ZX[e];if(!T)throw new Error(`Unsupported operation: ${e}`);T(v,g,(P,I)=>{_.setAtIndex(P,I)}),_.resetModifiedSlices();for(let P=0;P{for(const[_,T]of v.entries())if(T!==void 0)return _;return-1};let g=c(i);for(;g!==-1;){const v=[g];for(;i.has(g);){const _=i.get(g)[1];i.has(_)&&v.push(_),i.delete(g),g=_}l.push(v),g=c(i)}return l.length?l:void 0}function tY(n){const e=eY(n);if(!e)return;const o=n.getPoints().getData();return e.map(i=>i.map(l=>QX(o,l)))}const xCe=Object.freeze(Object.defineProperty({__proto__:null,getPoint:QX,getPolyDataPointIndexes:eY,getPolyDataPoints:tY},Symbol.toStringTag,{value:"Module"}));var tu;(function(n){n.Top="top",n.Left="left",n.Bottom="bottom",n.Right="right"})(tu||(tu={}));const SCe=Object.freeze(Object.defineProperty({__proto__:null,get ColorbarRangeTextPosition(){return tu}},Symbol.toStringTag,{value:"Module"})),lh=n=>n&&n.upper>n.lower,R9=n=>!!n&&n.width>0&&n.height>0,xv=(n,e)=>!!n&&!!e&&n.lower===e.lower&&n.upper===e.upper,nY=(n,e)=>!!n&&!!e&&n.width===e.width&&n.height===e.height,TCe=(n,e,o)=>[n[0]*(1-o)+e[0]*o,n[1]*(1-o)+e[1]*o,n[2]*(1-o)+e[2]*o],{clamp:ECe}=J0;class IP{constructor(e){IP.validateProps(e);const{colormap:o,size:i={width:20,height:100},imageRange:l={lower:0,upper:1},voiRange:c={lower:0,upper:1},container:g,showFullPixelValueRange:v=!1}=e;this._colormap=o,this._imageRange=l,this._voiRange=c,this._showFullImageRange=v,this._canvas=this._createRootElement(i),g&&this.appendTo(g)}get colormap(){return this._colormap}set colormap(e){this._colormap=e,this.render()}get size(){const{width:e,height:o}=this._canvas;return{width:e,height:o}}set size(e){const{_canvas:o}=this;!R9(e)||nY(o,e)||(this._setCanvasSize(o,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!lh(e)||xv(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!lh(e)||xv(e,this._voiRange)||(this._voiRange=e,this.render())}get showFullImageRange(){return this._showFullImageRange}set showFullImageRange(e){e!==this._showFullImageRange&&(this._showFullImageRange=e,this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}dispose(){const{_canvas:e}=this,{parentElement:o}=e;o==null||o.removeChild(e)}static validateProps(e){const{size:o,imageRange:i,voiRange:l}=e;if(o&&!R9(o))throw new Error('Invalid "size"');if(i&&!lh(i))throw new Error('Invalid "imageRange"');if(l&&!lh(l))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,o){const{width:i,height:l}=o;e.width=i,e.height=l,Object.assign(e.style,{width:`${i}px`,height:`${l}px`})}_createRootElement(e){const o=document.createElement("canvas");return Object.assign(o.style,{position:"absolute",top:"0",left:"0",pointerEvents:"none",boxSizing:"border-box"}),this._setCanvasSize(o,e),o}render(){if(!this._canvas.isConnected)return;const{_colormap:e}=this,{RGBPoints:o}=e,i=o.length/4,l=j=>{const z=4*j;if(!(j<0||j>=i))return{index:j,position:o[z],color:[o[z+1],o[z+2],o[z+3]]}},{width:c,height:g}=this._canvas,v=this._canvas.getContext("2d");if(!v)return;const _=c>g,T=_?c:g,{_voiRange:P}=this,I=this._showFullImageRange?this._imageRange:{...P};let R,L=l(0);const V=(I.upper-I.lower)/(T-1);let U=I.lower;for(let j=0;jECe(Math.round(X*255),0,255));v.fillStyle=`rgb(${K[0]}, ${K[1]}, ${K[2]})`,_?v.fillRect(j,0,1,g):v.fillRect(0,g-j-1,c,1),U+=V}}}const sg={FONT:"10px Arial",COLOR:"white",TICK_SIZE:5,TICK_WIDTH:1,TICK_LABEL_MARGIN:3,MAX_NUM_TICKS:8,TICKS_STEPS:[1,2.5,5,10]};class OP{constructor(e){OP.validateProps(e);const{top:o=0,left:i=0,size:l={width:20,height:100},imageRange:c={lower:0,upper:1},voiRange:g={lower:0,upper:1},ticks:v,container:_,showFullPixelValueRange:T=!1}=e,{style:P,position:I}=v??{};this._imageRange=c,this._voiRange=g,this._font=(P==null?void 0:P.font)??sg.FONT,this._color=(P==null?void 0:P.color)??sg.COLOR,this._tickSize=(P==null?void 0:P.tickSize)??sg.TICK_SIZE,this._tickWidth=(P==null?void 0:P.tickWidth)??sg.TICK_WIDTH,this._labelMargin=(P==null?void 0:P.labelMargin)??sg.TICK_LABEL_MARGIN,this._maxNumTicks=(P==null?void 0:P.maxNumTicks)??sg.MAX_NUM_TICKS,this._rangeTextPosition=I??tu.Right,this._showFullPixelValueRange=T,this._canvas=this._createCanvasElement(l,o,i),_&&this.appendTo(_)}get size(){const{width:e,height:o}=this._canvas;return{width:e,height:o}}set size(e){const{_canvas:o}=this;!R9(e)||nY(o,e)||(this._setCanvasSize(o,e),this.render())}get top(){return Number.parseInt(this._canvas.style.top)}set top(e){const{_canvas:o}=this,i=this.top;e!==i&&(o.style.top=`${e}px`,this.render())}get left(){return Number.parseInt(this._canvas.style.left)}set left(e){const{_canvas:o}=this,i=this.left;e!==i&&(o.style.left=`${e}px`,this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!lh(e)||xv(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!lh(e)||xv(e,this._voiRange)||(this._voiRange=e,this.render())}get tickSize(){return this._tickSize}set tickSize(e){e!==this._tickSize&&(this._tickSize=e,this.render())}get tickWidth(){return this._tickWidth}set tickWidth(e){e!==this._tickWidth&&(this._tickWidth=e,this.render())}get color(){return this._color}set color(e){e!==this._color&&(this._color=e,this.render())}get showFullPixelValueRange(){return this._showFullPixelValueRange}set showFullPixelValueRange(e){e!==this._showFullPixelValueRange&&(this._showFullPixelValueRange=e,this.render())}get visible(){return this._canvas.style.display==="block"}set visible(e){e!==this.visible&&(this._canvas.style.display=e?"block":"none",e&&this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}static validateProps(e){const{size:o,imageRange:i,voiRange:l}=e;if(o&&!R9(o))throw new Error('Invalid "size"');if(i&&!lh(i))throw new Error('Invalid "imageRange"');if(l&&!lh(l))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,o){const{width:i,height:l}=o;e.width=i,e.height=l,Object.assign(e.style,{width:`${i}px`,height:`${l}px`})}_createCanvasElement(e,o,i){const l=document.createElement("canvas");return Object.assign(l.style,{display:"none",position:"absolute",boxSizing:"border-box",top:`${o}px`,left:`${i}px`}),this._setCanvasSize(l,e),l}_getTicks(e){const{lower:o,upper:i}=e,c=(i-o)/(this._maxNumTicks-1),g=Math.pow(10,-Math.floor(Math.log10(Math.abs(c)))),v=c*g,T=sg.TICKS_STEPS.find(V=>V>=v)/g,P=Math.ceil(i/T)*T,I=Math.floor(o/T)*T,R=Math.round((P-I)/T)+1,L=[];for(let V=0;V=i,c=l?o:i,g=e.getContext("2d"),{_voiRange:v}=this,_=this._showFullPixelValueRange?this._imageRange:{...v},T=_.upper-_.lower,{ticks:P}=this._getTicks(_);g.clearRect(0,0,o,i),g.font=this._font,g.textBaseline=l?"top":"middle",g.textAlign=l?"center":"left",g.fillStyle=this._color,g.strokeStyle=this._color,g.lineWidth=this.tickWidth,P.forEach(I=>{let R=Math.round(c*((I-_.lower)/T));if(l||(R=i-R),R<0||R>c)return;const L=I.toString(),V=g.measureText(L);let U;l?this._rangeTextPosition===tu.Top?U=this._getTopTickInfo({position:R,labelMeasure:V}):U=this._getBottomTickInfo({position:R,labelMeasure:V}):this._rangeTextPosition===tu.Left?U=this._getLeftTickInfo({position:R,labelMeasure:V}):U=this._getRightTickInfo({position:R});const{labelPoint:j,tickPoints:z}=U,{start:$,end:K}=z;return g.beginPath(),g.moveTo($[0],$[1]),g.lineTo(K[0],K[1]),g.fillText(L,j[0],j[1]),g.stroke(),R})}}function DCe(n,e,o){return(n>=e?[tu.Top,tu.Bottom]:[tu.Left,tu.Right]).includes(o)}class ICe{constructor({id:e,container:o}){this._containerResizeCallback=i=>{let l,c;const{contentRect:g,contentBoxSize:v}=i[0];g?(l=g.width,c=g.height):v!=null&&v.length&&(l=v[0].inlineSize,c=v[0].blockSize),this._containerSize={width:l,height:c},this.onContainerResize()},this._id=e,this._containerSize={width:0,height:0},this._rootElement=this.createRootElement(e),this._containerResizeObserver=new ResizeObserver(this._containerResizeCallback),o&&this.appendTo(o)}get id(){return this._id}get rootElement(){return this._rootElement}appendTo(e){const{_rootElement:o,_containerResizeObserver:i}=this,{parentElement:l}=o;!e||e===l||(l&&i.unobserve(l),e.appendChild(o),i.observe(e))}destroy(){const{_rootElement:e,_containerResizeObserver:o}=this,{parentElement:i}=e;i==null||i.removeChild(e),o.disconnect()}get containerSize(){return{...this._containerSize}}createRootElement(e){const o=document.createElement("div");return o.id=e,o.classList.add("widget"),Object.assign(o.style,{width:"100%",height:"100%"}),o}onContainerResize(){}}const D3={MULTIPLIER:1,RANGE_TEXT_POSITION:tu.Right,TICKS_BAR_SIZE:50};class Sv extends ICe{constructor(e){var o;super(e),this._isMouseOver=!1,this._isInteracting=!1,this._mouseOverCallback=i=>{this._isMouseOver=!0,this.showTicks(),i.stopPropagation()},this._mouseOutCallback=i=>{this._isMouseOver=!1,this.hideTicks(),i.stopPropagation()},this._mouseDownCallback=i=>{this._isInteracting=!0,this.showTicks(),this._addVOIEventListeners(i),i.stopPropagation()},this._mouseDragCallback=(i,l)=>{const c=this.getVOIMultipliers(),g=this._getPointsFromMouseEvent(i),{points:v,voiRange:_}=l,T=Ru(a0(),g.local,v.local),P=T[0]*c[0],I=T[1]*c[1];if(!P&&!I)return;const{lower:R,upper:L}=_;let{windowWidth:V,windowCenter:U}=zv(R,L);V=Math.max(V+P,1),U+=I;const j=Vd(V,U);this.voiRange=j,i.stopPropagation(),i.preventDefault()},this._mouseUpCallback=i=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),i.stopPropagation()},this._eventListenersManager=new hz,this._colormaps=Sv.getColormapsMap(e),this._activeColormapName=Sv.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=((o=e.ticks)==null?void 0:o.position)??D3.RANGE_TEXT_POSITION,this._canvas.appendTo(this.rootElement),this._ticksBar.appendTo(this.rootElement),this._addRootElementEventListeners()}get activeColormapName(){return this._activeColormapName}set activeColormapName(e){if(e===this._activeColormapName)return;const o=this._colormaps.get(e);if(!o){console.warn(`Invalid colormap name (${e})`);return}this._activeColormapName=e,this._canvas.colormap=o}get imageRange(){return this._canvas.imageRange}set imageRange(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}get voiRange(){return this._canvas.voiRange}set voiRange(e){const{voiRange:o}=this._canvas;!lh(e)||xv(e,o)||(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}get showFullImageRange(){return this._canvas.showFullImageRange}set showFullImageRange(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}destroy(){super.destroy(),this._eventListenersManager.reset()}createRootElement(){const e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}onContainerResize(){super.onContainerResize(),this.updateTicksBar(),this._canvas.size=this.containerSize}getVOIMultipliers(){return[D3.MULTIPLIER,D3.MULTIPLIER]}onVoiChange(e){}showTicks(){this.updateTicksBar(),this._ticksBar.visible=!0}hideTicks(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}static getColormapsMap(e){const{colormaps:o}=e;return o.reduce((i,l)=>i.set(l.Name,l),new Map)}static getInitialColormapName(e){const{activeColormapName:o,colormaps:i}=e;return!!o&&i.some(c=>c.Name===o)?o:i[0].Name}_createCanvas(e){const{imageRange:o,voiRange:i,showFullPixelValueRange:l}=e,c=this._colormaps.get(this._activeColormapName);return new IP({colormap:c,imageRange:o,voiRange:i,showFullPixelValueRange:l})}_createTicksBar(e){const o=e.ticks;return new OP({imageRange:e.imageRange,voiRange:e.voiRange,ticks:o,showFullPixelValueRange:e.showFullPixelValueRange})}_getPointsFromMouseEvent(e){const{rootElement:o}=this,i=[e.clientX,e.clientY],l=[e.pageX,e.pageY],c=o.getBoundingClientRect(),g=[l[0]-c.left-window.pageXOffset,l[1]-c.top-window.pageYOffset];return{client:i,page:l,local:g}}updateTicksBar(){const{width:e,height:o}=this.containerSize;if(e===0&&o===0)return;const{_ticksBar:i,_rangeTextPosition:l}=this,c=e>=o,g=c?e:D3.TICKS_BAR_SIZE,v=c?D3.TICKS_BAR_SIZE:o;if(!DCe(e,o,l))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");let _,T;i.size={width:g,height:v},c?(T=0,_=l===tu.Top?-v:o):(_=0,T=l===tu.Left?-g:e),i.top=_,i.left=T}_addRootElementEventListeners(){const{_eventListenersManager:e}=this,{rootElement:o}=this;e.addEventListener(o,"mouseover",this._mouseOverCallback),e.addEventListener(o,"mouseout",this._mouseOutCallback),e.addEventListener(o,"mousedown",this._mouseDownCallback)}_addVOIEventListeners(e){const{_eventListenersManager:o}=this,i=this._getPointsFromMouseEvent(e),l={...this._canvas.voiRange},c={points:i,voiRange:l};this._removeVOIEventListeners(),o.addEventListener(document,"voi.mouseup",this._mouseUpCallback),o.addEventListener(document,"voi.mousemove",g=>this._mouseDragCallback(g,c))}_removeVOIEventListeners(){const{_eventListenersManager:e}=this;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}const WS=4;function OCe(n,e,o){if(Ez(n,e)==="PT"){const{clientWidth:l,clientHeight:c}=n.element,g=5/Math.max(l,c),v=Rh(n,e),{fixedPTWindowWidth:_=!0}=o??{},T=_?0:g;return v?[T,g]:[T,WS]}return[WS,WS]}const{Events:ad}=bu,f7={lower:-1e3,upper:1e3};class L6 extends Sv{constructor(e){const{element:o,volumeId:i}=e,l=L6._getImageRange(o,i),c=L6._getVOIRange(o,i);super({...e,imageRange:l,voiRange:c}),this.autoHideTicks=()=>{if(this._hideTicksTimeoutId)return;const g=this._hideTicksTime-Date.now();g<=0?this.hideTicks():this._hideTicksTimeoutId=window.setTimeout(()=>{this._hideTicksTimeoutId=0,this.autoHideTicks()},g)},this._stackNewImageCallback=()=>{this.imageRange=L6._getImageRange(this._element)},this._imageVolumeModifiedCallback=g=>{const{volumeId:v}=g.detail;if(v!==this._volumeId)return;const{_element:_}=this;this.imageRange=L6._getImageRange(_,v)},this._viewportVOIModifiedCallback=g=>{const{viewportId:v,volumeId:_,range:T,colormap:P}=g.detail,{viewport:I}=this.enabledElement;v!==I.id||_!==this._volumeId||(this.voiRange=T,P&&(this.activeColormapName=P.name),this.showAndAutoHideTicks())},this._viewportColormapModifiedCallback=g=>{const{viewportId:v,colormap:_,volumeId:T}=g.detail,{viewport:P}=this.enabledElement;v!==P.id||T!==this._volumeId||(this.activeColormapName=_.name)},this._element=o,this._volumeId=i,this._addCornerstoneEventListener()}get element(){return this._element}get enabledElement(){return _n(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return OCe(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:o}=this.enabledElement;if(o instanceof ts)o.setProperties({voiRange:e}),o.render();else if(o instanceof ns){const{_volumeId:i}=this,l=Kv(i);o.setProperties({voiRange:e},i),l.forEach(c=>c.render())}}static _getImageRange(e,o){const i=_n(e),{viewport:l}=i,c=l.getImageActor(o);if(!c)return f7;const v=c.getMapper().getInputData().getPointData().getScalars();let _;if(v)_=v.getRange();else{if(!o)throw new Error("volumeId is required when scalarData is not available");const T=Jn.getVolume(o),[P,I]=T.voxelManager.getRange();_=[P,I]}return _[0]===0&&_[1]===0?f7:{lower:_[0],upper:_[1]}}static _getVOIRange(e,o){const i=_n(e),{viewport:l}=i,c=l.getImageActor(o);if(!c)return f7;const g=c.getProperty().getRGBTransferFunction(0).getRange();return g[0]===0&&g[1]===0?f7:{lower:g[0],upper:g[1]}}showAndAutoHideTicks(e=1e3){this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;pr.addEventListener(ad.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(ad.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(ad.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(ad.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}destroy(){super.destroy();const{_element:e}=this;pr.removeEventListener(ad.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.removeEventListener(ad.STACK_NEW_IMAGE,this._stackNewImageCallback),e.removeEventListener(ad.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.removeEventListener(ad.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}const MCe=Object.freeze(Object.defineProperty({__proto__:null,Colorbar:Sv,Enums:SCe,ViewportColorbar:L6},Symbol.toStringTag,{value:"Module"}));function rY(n,e,o,i,l){const c=[];let g=0;const v=n.scalarData;let _,T,P;if(n.color)for(T=0;TgX(v,P),imageData:n})}function bCe(n,e,o){const[i,l]=n,c=Ei((i[0]+l[0])/2,(i[1]+l[1])/2,(i[2]+l[2])/2),g=y2(i,l)/2;let v;if(!o){const _=dD(e,c),T=e.getSpacing(),P=Math.min(...T),I=Math.ceil(g/P);return v=[[_[0]-I,_[0]+I],[_[1]-I,_[1]+I],[_[2]-I,_[2]+I]],{boundsIJK:v,centerWorld:c,radiusWorld:g}}return v=FCe(e,o,n,c,g),{boundsIJK:v,centerWorld:c,radiusWorld:g}}function FCe(n,e,o,i,l){const[c,g]=o,v=n.getDimensions(),_=e.getCamera(),T=Ei(_.viewUp[0],_.viewUp[1],_.viewUp[2]),P=Ei(_.viewPlaneNormal[0],_.viewPlaneNormal[1],_.viewPlaneNormal[2]),I=nr();ro(I,T,P);const R=nr(),L=nr();j0(R,g,P,l),j0(L,c,P,-l),j0(R,R,I,-l),j0(L,L,I,l);const V=[dD(n,R),dD(n,L)];return Jd(V,v)}function sY(n){if(!Array.isArray(n)||n.length!==9)throw new Error("Matrix must be an array of 9 numbers");if(!n.every(e=>typeof e=="number"&&!isNaN(e)))throw new Error("Matrix must contain only valid numbers")}function aY(n){sY(n);const e=[[n[0],n[1],n[2]],[n[3],n[4],n[5]],[n[6],n[7],n[8]]],o=e[0][0]*(e[1][1]*e[2][2]-e[1][2]*e[2][1])-e[0][1]*(e[1][0]*e[2][2]-e[1][2]*e[2][0])+e[0][2]*(e[1][0]*e[2][1]-e[1][1]*e[2][0]);if(Math.abs(o)<1e-10)throw new Error("Matrix is not invertible (determinant is zero)");const i=[[e[1][1]*e[2][2]-e[1][2]*e[2][1],-(e[0][1]*e[2][2]-e[0][2]*e[2][1]),e[0][1]*e[1][2]-e[0][2]*e[1][1]],[-(e[1][0]*e[2][2]-e[1][2]*e[2][0]),e[0][0]*e[2][2]-e[0][2]*e[2][0],-(e[0][0]*e[1][2]-e[0][2]*e[1][0])],[e[1][0]*e[2][1]-e[1][1]*e[2][0],-(e[0][0]*e[2][1]-e[0][1]*e[2][0]),e[0][0]*e[1][1]-e[0][1]*e[1][0]]],l=[];for(let c=0;c<3;c++)for(let g=0;g<3;g++)l.push(i[c][g]/o);return l}function $S(n){const e=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);return n.map(o=>o/e)}function VCe(n){sY(n);const e=n.slice(0,3),o=n.slice(3,6),i=n.slice(6,9),l=$S(e),c=$S(o),g=$S(i),v={x:[1,0,0],y:[0,1,0],z:[0,0,1]},_=1e-10,T=l.every((I,R)=>Math.abs(I-v.x[R])<_)&&c.every((I,R)=>Math.abs(I-v.y[R])<_)&&g.every((I,R)=>Math.abs(I-v.z[R])<_),P=T?[...v.x,...v.y,...v.z]:aY([...l,...c,...g]);return{isStandard:T,rotationMatrix:P}}function UCe(n,e,o){const i=n[0]-e[0],l=n[1]-e[1],c=n[2]-e[2];return[o[0]*i+o[1]*l+o[2]*c+e[0],o[3]*i+o[4]*l+o[5]*c+e[1],o[6]*i+o[7]*l+o[8]*c+e[2]]}function BCe(n,e,o){const i=[];for(let l=0;l{v2(v,v,k2(nr(),[-c[0],-c[1],-c[2]],g))}),e instanceof ts&&(n.metadata.referencedImageId=e.getCurrentImageId()),n}function $Ce(n,e,o){const i=e*o,l=n.length/i;if(![1,3,4].includes(l))throw new Error("Buffer must be 1, 3, or 4 channels per pixel");const c=Array.from({length:o},()=>new Array(e).fill(!1));for(let j=0;j0){X=!0;break}c[j][z]=X}const g=Array.from({length:o},()=>new Array(e).fill(0));let v=0;const _={};for(let j=0;jee<0||ee>=e||ne<0||ne>=o?!1:c[ne][ee]&&g[ne][ee]===0;let K=0;yP($,[z,j],{onFlood:(ee,ne)=>{g[ne][ee]=v,K++},diagonals:!1}),_[v]=K}if(v===0)return[];const T=Object.keys(_).reduce((j,z)=>_[j]>_[z]?j:z);function P(j,z){if(g[z][j]!==+T)return!1;for(const[$,K]of[[1,0],[-1,0],[0,1],[0,-1]]){const X=j+$,ee=z+K;if(X<0||X>=e||ee<0||ee>=o||g[ee][X]!==+T)return!0}return!1}let I=null;e:for(let j=0;jX[0]===j&&X[1]===z);$<0&&($=0);let K=null;for(let X=1;X<=8;X++){const[ee,ne]=R[($+X)%8],le=V[0]+ee,ce=V[1]+ne;if(le>=0&&le=0&&ce(z+1)%o,l=(z,$)=>{const K=[];for(let X=z;K.push(X),X!==$;X=i(X));return K};let c=0,g=0;for(let z=1;zn[g][0]&&(g=z);const v=n[c],_=n[g],T=l(c,g),P=l(g,c),I=Math.min(...n.map(z=>z[1])),R=T.some(z=>n[z][1]===I)?T:P,L=Math.min(...R.map(z=>n[z][1]));let V=R.map(z=>n[z]).filter(z=>Math.abs(z[1]-L)<=e);V.length<2&&(V=R.map(z=>n[z]).sort((z,$)=>z[1]-$[1]).slice(0,2));const U=V.reduce((z,$)=>$[0]$[0]>z[0]?$:z,V[0]);return{P1:U,P2:v,P3:_,P4:j}}function HCe(n,e,o,i,l,c={}){const{maxDist:g=15,slack:v=2}=c,_={P1:{dx:-1,dy:-1},P2:{dx:-1,dy:1},P3:{dx:1,dy:1},P4:{dx:1,dy:-1}};function T(P,{dx:I,dy:R},L=5){const V=I<0?P[0]-g:P[0]-v,U=I<0?P[0]+v:P[0]+g,j=R<0?P[1]-g:P[1]-v,z=R<0?P[1]+v:P[1]+g;let $=P;for(const[K,X]of l){if(KU||Xz)continue;const ee=Math.round(K),ne=Math.round(X);if(ee<0||ee>=e||ne<0||ne>=o)continue;const le=(ee-$[0])*I,ce=(ne-$[0])*R;n[ne*e+ee]>L&&(le>0||ce>0)&&($=[K,X])}return $}return{P1:T(i.P1,_.P1),P2:T(i.P2,_.P2),P3:T(i.P3,_.P3),P4:T(i.P4,_.P4)}}function KCe(n,e,o,i,l){const c=zCe(i);return HCe(n,e,o,c,l,{maxDist:20})}function Tb(n,e){return Math.atan2(e[1]-n[1],e[0]-n[0])}function qCe(n){const{P1:e,P2:o,P3:i,P4:l}=n,c=y9(e,o,l,i,!0);if(!c)throw new Error("Fan edges appear parallel — no apex found");const g=c;let v=Tb(g,e)*(180/Math.PI),_=Tb(g,l)*(180/Math.PI);if(_<=v){const U=v;v=_,_=U}const T=Math.hypot(e[0]-g[0],e[1]-g[1]),P=Math.hypot(l[0]-g[0],l[1]-g[1]),I=Math.hypot(o[0]-g[0],o[1]-g[1]),R=Math.hypot(i[0]-g[0],i[1]-g[1]),L=Math.min(T,P),V=Math.max(I,R);return{center:g,startAngle:v,endAngle:_,innerRadius:L,outerRadius:V}}function q3(n,e,o,i,l={}){const{strokeStyle:c="#f00",lineWidth:g=2,quality:v=.92}=l,_=document.createElement("canvas");_.width=e,_.height=o;const T=_.getContext("2d"),P=e*o,I=n.length/P,R=T.createImageData(e,o),L=R.data;for(let V=0;V0){T.strokeStyle=c,T.lineWidth=g,T.beginPath(),T.moveTo(i[0][0]+.5,i[0][1]+.5);for(let V=1;V=L;ee-=.01){const ne=c[0]+T*Math.cos(ee),le=c[1]+T*Math.sin(ee);j.lineTo(ne,le)}return j.closePath(),j.strokeStyle=P,j.lineWidth=I,j.stroke(),U.toDataURL("image/jpeg",R)}function YCe(n,e=5){const{contour:o,simplified:i,hull:l,refined:c,fanGeometry:g}=PP(n),{pixelData:v,width:_,height:T}=MP(n)||{};if(!v)return;let P;e===1?P=q3(v,_,T,o):e===2?P=q3(v,_,T,i):e===3?P=q3(v,_,T,l):e===4?P=q3(v,_,T,[c.P1,c.P2,c.P3,c.P4]):P=XCe(v,_,T,g,{strokeStyle:"#f00",lineWidth:3,quality:.95}),uY(P,"contour.jpg")}function PP(n){const{pixelData:e,width:o,height:i}=MP(n)||{};if(!e)return;const l=$Ce(e,o,i),{simplified:c,hull:g}=jCe(l),v=KCe(e,o,i,g,c),_=qCe({P1:v.P1,P2:v.P2,P3:v.P3,P4:v.P4});return{contour:l,simplified:c,hull:g,refined:v,fanGeometry:_}}const JCe=Object.freeze(Object.defineProperty({__proto__:null,calculateFanGeometry:PP,default:uY,downloadFanJpeg:YCe,exportContourJpeg:q3,getPixelData:MP},Symbol.toStringTag,{value:"Module"})),ZCe=E0,QCe=Object.freeze(Object.defineProperty({__proto__:null,AnnotationMultiSlice:r7e,IslandRemoval:qg,annotationHydration:W8e,boundingBox:e7e,calibrateImageSpacing:Qye,cine:K9e,contourSegmentation:S3e,contours:L7e,debounce:Z8,drawing:Dve,dynamicVolume:_Ce,geometricSurfaceUtils:GCe,getAnnotationNearPoint:Yye,getAnnotationNearPointOnEnabledElement:bq,getCalibratedAspect:rP,getCalibratedLengthUnitsAndScale:Ml,getCalibratedProbeUnitsAndValue:T9,getClosestImageIdForStackViewport:NM,getOrCreateImageVolume:a_,getPixelValueUnits:Ah,getPixelValueUnitsImageId:HK,getSphereBoundsInfo:Uq,getViewportForAnnotation:rw,isObject:RM,math:U5e,moveAnnotationToViewPlane:WCe,normalizeViewportPlane:cX,orientation:V9e,planar:fme,planarFreehandROITool:J9e,pointInSurroundingSphereCallback:NCe,pointToString:Bq,polyDataUtils:xCe,rectangleROITool:Z9e,roundNumber:ZCe,segmentation:N9e,setAnnotationLabel:lY,stackContextPrefetch:gCe,stackPrefetch:aCe,throttle:v1,touch:s8e,triggerAnnotationRender:Q8,triggerAnnotationRenderForToolGroupIds:GK,triggerAnnotationRenderForViewportIds:Un,triggerEvent:Or,usFanExtraction:JCe,viewport:pCe,viewportFilters:l3e,voi:LCe},Symbol.toStringTag,{value:"Module"})),e_e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function cY(n,e){const o=No;n.forEach(i=>{o.updateSegmentation(i.segmentationId,i.payload),e||cu(i.segmentationId)})}function t_e(n,e,o){No.setSegmentationRepresentationVisibility(n,e,o)}function n_e(n,e,o){const i=El(n,e);i&&i.forEach(l=>{t_e(n,{segmentationId:l.segmentationId,type:l.type},o)})}function r_e(n,e){return jK(n,e)}function i_e(n,e,o,i){const l=El(n,e);l&&(l.forEach(c=>{c.segments[o].visible=i}),r_(e.segmentationId),ef(n,e.segmentationId))}function o_e(n,e,o){return!fY(n,e).has(o)}function fY(n,e){const o=MM(n,e);return o?Object.entries(o.segments).reduce((l,[c,g])=>(g.visible||l.add(Number(c)),l),new Set):new Set}const s_e=Object.freeze(Object.defineProperty({__proto__:null,getHiddenSegmentIndices:fY,getSegmentIndexVisibility:o_e,getSegmentationRepresentationVisibility:r_e,setSegmentIndexVisibility:i_e,setSegmentationRepresentationVisibility:n_e},Symbol.toStringTag,{value:"Module"}));function a_e(n){return ru.getStyle(n)}function l_e(n,e){ru.setStyle(n,e),!n.viewportId&&!n.segmentationId&&s_().forEach(i=>{r5(i.segmentationId)}),ef(n.viewportId,n.segmentationId,n.type)}function u_e(n,e){ru.setRenderInactiveSegmentations(n,e),r5(n),Yq(n).forEach(i=>{ef(n,i.segmentationId)})}function c_e(n){return ru.getRenderInactiveSegmentations(n)}function f_e(){ru.resetToGlobalStyle(),r5()}function h_e(n){return ru.hasCustomStyle(n)}const d_e=Object.freeze(Object.defineProperty({__proto__:null,getRenderInactiveSegmentations:c_e,getStyle:a_e,hasCustomStyle:h_e,resetToGlobalStyle:f_e,setRenderInactiveSegmentations:u_e,setStyle:l_e},Symbol.toStringTag,{value:"Module"})),g_e=Object.freeze(Object.defineProperty({__proto__:null,color:oke,style:d_e,visibility:s_e},Symbol.toStringTag,{value:"Module"}));function A9(n,e){const o=io(n);typeof e=="string"&&(console.warn("segmentIndex is a string, converting to number"),e=Number(e)),Object.values(o.segments).forEach(l=>{l.active=!1}),o.segments[e]||(o.segments[e]={segmentIndex:e,label:"",locked:!1,cachedStats:{},active:!1}),o.segments[e].active!==!0&&(o.segments[e].active=!0,cu(n));const i=n5(n);i.forEach(l=>{El(l,{segmentationId:n}).forEach(g=>{g.segments[e]||(g.segments[e]={visible:!0})})}),i.forEach(l=>{const c=Ss(l);IX(c.id)})}const p_e=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentIndex:Ol,setActiveSegmentIndex:A9},Symbol.toStringTag,{value:"Module"}));async function m_e(n){const e=M8e(n);return cu(n.segmentationId),e}function hY(n,e){const o=io(n);if(o.representationData.Labelmap){const{representationData:i}=o,l=i.Labelmap;("imageIds"in l||"volumeId"in l)&&("imageIds"in l?l.imageIds.map(g=>Jn.getImage(g)):[Jn.getVolume(l.volumeId)]).forEach(g=>{if(!g)return;const{voxelManager:v}=g;v.forEach(({value:_,index:T})=>{_===e&&v.setAtIndex(T,0)})}),K2(n)}else throw new Error("Invalid segmentation type, only labelmap is supported right now")}function v_e(n,e,o={setNextSegmentAsActive:!0}){hY(n,e);const i=Ol(n)===e,l=io(n),{segments:c}=l;delete c[e];const g={...c};if(cY([{segmentationId:n,payload:{segments:g}}]),i&&o.setNextSegmentAsActive){const _=Object.keys(c).map(Number).sort((R,L)=>R-L),T=_.indexOf(e),P=_[T+1],I=_[T-1];P!==void 0?A9(n,P):I!==void 0&&A9(n,I)}n5(n).forEach(_=>{El(_,{segmentationId:n}).forEach(P=>{delete P.segments[e]})})}function k_e(n){const e=No,o=io(n);return e.getLabelmapImageIds(o.representationData)}const y_e={clearSegmentValue:hY,convertStackToVolumeLabelmap:m_e,computeVolumeLabelmapFromStack:UX,convertVolumeToStackLabelmap:I9e},w_e=Object.freeze(Object.defineProperty({__proto__:null,activeSegmentation:K3e,addContourRepresentationToViewport:_P,addContourRepresentationToViewportMap:x9e,addLabelmapRepresentationToViewport:FX,addLabelmapRepresentationToViewportMap:S9e,addRepresentationData:PM,addSegmentationRepresentations:l5,addSegmentations:Wq,addSurfaceRepresentationToViewport:VX,addSurfaceRepresentationToViewportMap:T9e,config:g_e,defaultSegmentationStateManager:No,getActiveSegmentation:Hg,getCurrentLabelmapImageIdsForViewport:Sh,getLabelmapImageIds:k_e,getLabelmapImageIdsForImageId:V3e,helpers:y_e,removeAllSegmentationRepresentations:zq,removeAllSegmentations:Xq,removeContourRepresentation:Kq,removeLabelmapRepresentation:Hq,removeSegment:v_e,removeSegmentation:pP,removeSegmentationRepresentation:o5,removeSegmentationRepresentations:$q,removeSurfaceRepresentation:qq,segmentIndex:p_e,segmentLocking:nke,segmentationStyle:ru,state:C7e,strategies:Iwe,triggerSegmentationEvents:_8e,updateSegmentations:cY},Symbol.toStringTag,{value:"Module"}));class RP{constructor(e){this._controlPoints=[],this._invalidated=!1,this._length=0,this._controlPoints=[],this._resolution=(e==null?void 0:e.resolution)??20,this._fixedResolution=(e==null?void 0:e.fixedResolution)??!1,this._closed=(e==null?void 0:e.closed)??!1,this._invalidated=!0}get controlPoints(){return this._controlPoints}get numControlPoints(){return this._controlPoints.length}get resolution(){return this._resolution}set resolution(e){this._fixedResolution||this._resolution===e||(this._resolution=e,this.invalidated=!0)}get fixedResolution(){return this._fixedResolution}get closed(){return this._closed}set closed(e){this._closed!==e&&(this._closed=e,this.invalidated=!0)}get aabb(){return this._update(),this._aabb}get length(){return this._update(),this._length}get invalidated(){return this._invalidated}set invalidated(e){this._invalidated=e}hasTangentPoints(){return!1}addControlPoint(e){this._controlPoints.push([e[0],e[1]]),this.invalidated=!0}addControlPoints(e){e.forEach(o=>this.addControlPoint(o))}addControlPointAtU(e){const o=this._getLineSegmentAt(e),{start:i,end:l}=o.points,c=Math.floor(e),g=this._curveSegments[c],v=e-Math.floor(c),_=[i[0]+v*(l[0]-i[0]),i[1]+v*(l[1]-i[1])],T=this._controlPoints.indexOf(g.controlPoints.p1)+1;return this._controlPoints.splice(T,0,_),this.invalidated=!0,{index:T,point:_}}deleteControlPointByIndex(e){const o=this._closed?3:1;return e>=0&&eo?(this._controlPoints.splice(e,1),this.invalidated=!0,!0):!1}clearControlPoints(){this._controlPoints=[],this.invalidated=!0}setControlPoints(e){this.clearControlPoints(),this.addControlPoints(e)}updateControlPoint(e,o){if(e<0||e>=this._controlPoints.length)throw new Error("Index out of bounds");this._controlPoints[e]=[...o],this.invalidated=!0}getControlPoints(){return this._controlPoints.map(e=>[e[0],e[1]])}getClosestControlPoint(e){const o=this._controlPoints;let i=1/0,l=-1;for(let c=0,g=o.length;cI.distanceSquared-R.distanceSquared);let i,l=-1,c=1/0,g,v;for(let I=0;Ic)continue;const{curveSegmentIndex:L,curveSegment:V}=R,{lineSegments:U}=V;for(let j=0;j=_.minY&&e[1]<_.maxY))continue;const{lineSegments:P}=v;for(let I=0;I=L.minY&&e[1]=T.maxX?c:T.maxX,g=g>=T.maxY?g:T.maxY,o+=P}this._curveSegments=e,this._aabb={minX:i,minY:l,maxX:c,maxY:g},this._length=o,this._invalidated=!1}_convertCurveSegmentsToPolyline(e){this._update();const o=[];return e.forEach(({lineSegments:i},l)=>{i.forEach((c,g)=>{l===0&&g===0&&o.push([...c.points.start]),o.push([...c.points.end])})}),o}_getCurveSegmmentsDistanceSquaredInfo(e){this._update();const o=[],{_curveSegments:i}=this;for(let l=0;li)return[];const l=this._getCurveSegmmentsDistanceSquaredInfo(e),c=[];for(let g=0,v=l.length;g=_.previousLineSegmentsLength&&g<=T)return _}}_getClosingCurveSegmentWithStraightLineSegment(){if(this.closed)return;const e=this._controlPoints,o=e[0],i=e[e.length-1],l={points:{start:[...o],end:[...i]},aabb:{minX:Math.min(o[0],i[0]),minY:Math.min(o[1],i[1]),maxX:Math.max(o[0],i[0]),maxY:Math.max(o[1],i[1])}};return{aabb:{minX:l.aabb.minX,minY:l.aabb.minY,maxX:l.aabb.maxX,maxY:l.aabb.maxY},lineSegments:[l]}}}const C_e=1e-8;class AP extends RP{getPreviewCurveSegments(e,o){const i=this._getNumCurveSegments()+1,l=Math.max(0,i-2),c=o?i:i-1,g=this.getTransformMatrix(),v=[...this.controlPoints],_=[];o||v.push(e);for(let T=l;T<=c;T++){const P=this._getCurveSegment(T,g,v,o);_.push(P)}return _}getSplineCurves(){const e=this._getNumCurveSegments(),o=new Array(e);if(e<=0)return[];const i=this.getTransformMatrix();let l=0;for(let c=0;c=c)if(this.closed)v=(c+v)%c;else return;const{p0:P,p1:I,p2:R,p3:L}=this._getCurveSegmentPoints(v,i,l),V=_*_,U=V*_,j=U7(1,_,V,U),z=Ed(sG(),j,o);return[FA(z,U7(P[0],I[0],R[0],L[0])),FA(z,U7(P[1],I[1],R[1],L[1]))]}_getCurveSegmentPoints(e,o=this.controlPoints,i=this.closed){const l=this._getNumCurveSegments(o,i),c=e,g=c-1,v=i?(c+1)%l:c+1,_=v+1,T=o[c],P=o[v];let I,R;return g>=0?I=o[g]:I=i?o[o.length-1]:KE(P,T),_T?T:U;const j=this._getPoint(U,o,i,l);if(!V){I=j;continue}R=j;const z=R[0]-I[0],$=R[1]-I[1],K=Math.sqrt(z**2+$**2),X={minX:I[0]<=R[0]?I[0]:R[0],maxX:I[0]>=R[0]?I[0]:R[0],minY:I[1]<=R[1]?I[1]:R[1],maxY:I[1]>=R[1]?I[1]:R[1]};P.push({points:{start:I,end:R},aabb:X,length:K,previousLineSegmentsLength:L}),I=R,L+=K}return P}_getCurveSegment(e,o=this.getTransformMatrix(),i=this.controlPoints,l=this.closed){const{p0:c,p1:g,p2:v,p3:_}=this._getCurveSegmentPoints(e,i,l),T=this._getLineSegments(e,o,i,l);let P=0,I=1/0,R=1/0,L=-1/0,V=-1/0;return T.forEach(({aabb:U,length:j})=>{I=Math.min(I,U.minX),R=Math.min(R,U.minY),L=Math.max(L,U.maxX),V=Math.max(V,U.maxY),P+=j}),{controlPoints:{p0:c,p1:g,p2:v,p3:_},aabb:{minX:I,minY:R,maxX:L,maxY:V},length:P,previousCurveSegmentsLength:0,lineSegments:T}}}const __e=nG(Dl(),tO(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class dY extends AP{getTransformMatrix(){return __e}}class Tv extends AP{constructor(e){super(e),this._scale=(e==null?void 0:e.scale)??.5,this._fixedScale=(e==null?void 0:e.fixedScale)??!1}get scale(){return this._scale}set scale(e){this._fixedScale||this._scale===e||(this._scale=e,this.invalidated=!0)}get fixedScale(){return this._fixedScale}getTransformMatrix(){const{scale:e}=this,o=2*e;return[0,1,0,0,-e,0,e,0,o,e-3,3-o,-e,-e,2-e,e-2,e]}}class gY extends Tv{constructor(){super({scale:.5,fixedScale:!0})}}class pY extends Tv{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}class mY extends RP{getSplineCurves(){return[]}getLineSegments(){return[]}getPreviewCurveSegments(e,o){return[]}}const x_e=[1,0,0,-2,2,0,1,-2,1];class S_e extends mY{hasTangentPoints(){return!0}getTransformMatrix(){return x_e}}const T_e=Object.freeze(Object.defineProperty({__proto__:null,BSpline:dY,CardinalSpline:Tv,CatmullRomSpline:gY,CubicSpline:AP,LinearSpline:pY,QuadraticBezier:S_e,QuadraticSpline:mY,Spline:RP},Symbol.toStringTag,{value:"Module"}));class M8 extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"]}){super(e,o)}touchDragCallback(e){this._dragCallback(e)}mouseDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{element:o,deltaPoints:i}=e.detail,l=_n(o),c=i.world;if(c[0]===0&&c[1]===0&&c[2]===0)return;const g=l.viewport.getCamera(),{focalPoint:v,position:_}=g,T=[_[0]-c[0],_[1]-c[1],_[2]-c[2]],P=[v[0]-c[0],v[1]-c[1],v[2]-c[2]];l.viewport.setCamera({focalPoint:P,position:T}),l.viewport.render()}}M8.toolName="Pan";class vY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2,rotateSampleDistanceFactor:2}}){super(e,o),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.preMouseDownCallback=i=>{const l=i.detail,{element:c}=l,g=_n(c),{viewport:v}=g,P=v.getDefaultActor().actor.getMapper();if(!("getSampleDistance"in P||"getCurrentSampleDistance"in P))return!0;const R=P.getSampleDistance();if(!this._hasResolutionChanged){const{rotateSampleDistanceFactor:L}=this.configuration;P.setSampleDistance(R*L),this._hasResolutionChanged=!0,this.cleanUp!==null&&document.removeEventListener("mouseup",this.cleanUp),this.cleanUp=()=>{P.setSampleDistance(R),v.render(),this._hasResolutionChanged=!1},document.addEventListener("mouseup",this.cleanUp,{once:!0})}return!0},this._getViewportsInfo=()=>la(this.toolGroupId).viewportsInfo,this.onSetToolActive=()=>{const i=()=>{this._getViewportsInfo().forEach(({viewportId:c,renderingEngineId:g})=>{if(!this._resizeObservers.has(c)){const{viewport:v}=i2(c,g)||{viewport:null};if(!v)return;const{element:_}=v,T=new ResizeObserver(()=>{const P=i2(c,g);if(!P)return;const{viewport:I}=P,R=I.getViewPresentation();I.resetCamera(),I.setViewPresentation(R),I.render()});T.observe(_),this._resizeObservers.set(c,T)}})};i(),this._viewportAddedListener=l=>{l.detail.toolGroupId===this.toolGroupId&&i()},pr.addEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)},this.onSetToolDisabled=()=>{this._resizeObservers.forEach((i,l)=>{i.disconnect(),this._resizeObservers.delete(l)}),this._viewportAddedListener&&(pr.removeEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._viewportAddedListener=null)},this.rotateCamera=(i,l,c,g)=>{const v=i.getVtkActiveCamera(),_=v.getViewUp(),T=v.getFocalPoint(),P=v.getPosition(),I=[0,0,0],R=[0,0,0],L=[0,0,0],V=zi(new Float32Array(16));Ns(V,V,l),a1(V,V,g,c),Ns(V,V,[-l[0],-l[1],-l[2]]),g0(I,P,V),g0(R,T,V),zi(V),a1(V,V,g,c),g0(L,_,V),i.setCamera({position:I,viewUp:L,focalPoint:R})},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:o,currentPoints:i,lastPoints:l}=e.detail,c=i.canvas,g=l.canvas,{rotateIncrementDegrees:v}=this.configuration,_=_n(o),{viewport:T}=_,P=T.getCamera(),I=o.clientWidth,R=o.clientHeight,L=[c[0]/I,c[1]/R],V=[g[0]/I,g[1]/R],U=[I*.5,R*.5],j=T.canvasToWorld(U),$=(1+Math.abs([.5,.5][0]))**2,K=[V[0],0,0],X=[L[0],0,0],ee=K[0]**2,ne=X[0]**2,le=ee>$?0:Math.sqrt($-ee),ce=ne>$?0:Math.sqrt($-ne),ge=[K[0],0,le];h0.normalize(ge);const pe=[X[0],0,ce];h0.normalize(pe);const we=h0.dot(ge,pe);if(Math.abs(we)>1e-4){const Te=-2*Math.acos(h0.clampValue(we,-1,1))*Math.sign(L[0]-V[0])*v,Ve=P.viewUp,Pe=P.viewPlaneNormal,je=[0,0,0],Je=[0,0,0];h0.cross(Ve,Pe,je),h0.normalize(je),h0.cross(Pe,je,Je),h0.normalize(Je),h0.normalize(Ve),this.rotateCamera(T,j,Je,Te);const it=(V[1]-L[1])*v;this.rotateCamera(T,j,je,it),T.render()}}}vY.toolName="TrackballRotate";const jS=4,E_e=1024,D_e="PT";class P8 extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"]}){super(e,o),this._getImageDynamicRangeFromMiddleSlice=(i,l)=>{const c=Math.floor(l[2]/2),g=l[0]*l[1];let v,_;i instanceof Float32Array?(v=4,_=Float32Array):i instanceof Uint8Array?(v=1,_=Uint8Array):i instanceof Uint16Array?(v=2,_=Uint16Array):i instanceof Int16Array&&(v=2,_=Int16Array);const T=i.buffer,P=c*g*v,I=new _(T,P,g),{max:R,min:L}=this._getMinMax(I,g);return R-L}}touchDragCallback(e){this.mouseDragCallback(e)}mouseDragCallback(e){var V,U;const{element:o,deltaPoints:i}=e.detail,l=_n(o),{viewport:c}=l;let g,v,_,T,P,I,R=!1;const L=c.getProperties();if(c instanceof ns){g=c.getVolumeId(),I=Kv(g),{lower:v,upper:_}=L.voiRange;const j=Jn.getVolume(g);if(!j)throw new Error("Volume not found "+g);T=j.metadata.Modality,R=j.scaling&&Object.keys(j.scaling).length>0}else if(L.voiRange){T=c.modality,{lower:v,upper:_}=L.voiRange;const{preScale:j={scaled:!1}}=((V=c.getImageData)==null?void 0:V.call(c))||{};R=j.scaled&&((U=j.scalingParameters)==null?void 0:U.suvbw)!==void 0}else throw new Error("Viewport is not a valid type");if(T===D_e&&R?P=this.getPTScaledNewRange({deltaPointsCanvas:i.canvas,lower:v,upper:_,clientHeight:o.clientHeight,isPreScaled:R,viewport:c,volumeId:g}):P=this.getNewRange({viewport:c,deltaPointsCanvas:i.canvas,volumeId:g,lower:v,upper:_}),!(P.lower>=P.upper)&&(c.setProperties({voiRange:P}),c.render(),c instanceof ns)){I.forEach(j=>{c!==j&&j.render()});return}}getPTScaledNewRange({deltaPointsCanvas:e,lower:o,upper:i,clientHeight:l,viewport:c,volumeId:g,isPreScaled:v}){let _=jS;v?_=5/l:_=this._getMultiplierFromDynamicRange(c,g)||jS;const P=e[1]*_;return i-=P,i=v?Math.max(i,.1):i,{lower:o,upper:i}}getNewRange({viewport:e,deltaPointsCanvas:o,volumeId:i,lower:l,upper:c}){const g=this._getMultiplierFromDynamicRange(e,i)||jS,v=o[0]*g,_=o[1]*g;let{windowWidth:T,windowCenter:P}=zv(l,c);T+=v,P+=_,T=Math.max(T,1);const I=e.getProperties().VOILUTFunction;return Vd(T,P,I)}_getMultiplierFromDynamicRange(e,o){var c;let i;if(o){const g=Jn.getVolume(o),{voxelManager:v}=e.getImageData(),T=v.getMiddleSliceData().reduce((R,L)=>[Math.min(R[0],L),Math.max(R[1],L)],[1/0,-1/0]),P=(c=g==null?void 0:g.metadata)==null?void 0:c.BitsStored,I=P?2**P:1/0;i=Math.min(T,I)}else i=this._getImageDynamicRangeFromViewport(e);const l=i/E_e;return l>1?Math.round(l):l}_getImageDynamicRangeFromViewport(e){const{imageData:o,voxelManager:i}=e.getImageData();if(i!=null&&i.getRange){const v=i.getRange();return v[1]-v[0]}const l=o.getDimensions();if(o.getRange){const v=o.getRange();return v[1]-v[0]}let c;if(o.getScalarData?c=o.getScalarData():c=o.getPointData().getScalars().getData(),l[2]!==1)return this._getImageDynamicRangeFromMiddleSlice(c,l);let g;if(c.getRange)g=c.getRange();else{const{min:v,max:_}=this._getMinMax(c,c.length);g=[v,_]}return g[1]-g[0]}_getMinMax(e,o){let i=1/0,l=-1/0;for(let c=0;cl&&(l=g)}return{max:l,min:i}}}P8.toolName="WindowLevel";class kY extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{minWindowWidth:10}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;this.isDrawing=!0;const P=T.getCamera(),{viewPlaneNormal:I,viewUp:R}=P,L=this.getReferencedImageId(T,v,I,R),V=T.getFrameOfReferenceUID(),U={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...I],viewUp:[...R],FrameOfReferenceUID:V,referencedImageId:L},data:{handles:{points:[[...v],[...v],[...v],[...v]]},cachedStats:{}}};_0(U,g);const j=fi(g,this.getToolName());return this.editData={annotation:U,viewportIdsToRender:j},this._activateDraw(g),Oi(g),i.preventDefault(),Un(j),U},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v}=this.editData;this._deactivateDraw(c),Zi(c),this.editData=null,this.isDrawing=!1,A0(g.annotationUID),Un(v),lo(g),this.applyWindowLevelRegion(g,c)},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v}=this.editData,{data:_}=g,{currentPoints:T}=l,P=_n(c),{worldToCanvas:I,canvasToWorld:R}=P.viewport,L=T.world,{points:V}=_.handles,U=3;V[U]=[...L];const j=I(V[0]),z=I(V[3]),$=[z[0],j[1]],K=[j[0],z[1]],X=R($),ee=R(K);V[1]=X,V[2]=ee,g.invalidated=!0,Un(v)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I,{points:V}=L.handles,U=V.map(ee=>g.worldToCanvas(ee));T.annotationUID=R;const{color:j,lineWidth:z,lineDash:$}=this.getAnnotationStyle({annotation:I,styleSpecifier:T});if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;const K=`${R}-rect`;sk(l,R,"0",U[0],U[3],{color:j,lineDash:$,lineWidth:z},K),c=!0}return c},this.applyWindowLevelRegion=(i,l)=>{const c=_n(l),{viewport:g}=c,v=oY(g),{data:_}=i,{points:T}=_.handles,P=T.map(le=>g.worldToCanvas(le)),I=P[0],R=P[3];let L=Math.min(I[0],R[0]),V=Math.min(I[1],R[1]),U=Math.abs(I[0]-R[0]),j=Math.abs(I[1]-R[1]);L=u9(L,0,v.width),V=u9(V,0,v.height),U=Math.floor(Math.min(U,Math.abs(v.width-L))),j=Math.floor(Math.min(j,Math.abs(v.height-V)));const z=rY(v,Math.round(L),Math.round(V),U,j),$=iY(z,v.minPixelValue,v.maxPixelValue);this.configuration.minWindowWidth===void 0&&(this.configuration.minWindowWidth=10);const K=Math.max(Math.abs($.max-$.min),this.configuration.minWindowWidth),X=$.mean,ee=g.getProperties().VOILUTFunction,ne=Vd(K,X,ee);g.setProperties({voiRange:ne}),g.render()},this.cancel=()=>null,this.isPointNearTool=()=>null,this.toolSelectedCallback=()=>null,this.handleSelectedCallback=()=>null,this._activateModify=()=>null,this._deactivateModify=()=>null}}kY.toolName="WindowLevelRegion";class Yg extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}){super(e,o),this.deltaY=1}mouseWheelCallback(e){this._scroll(e)}mouseDragCallback(e){this._dragCallback(e)}touchDragCallback(e){this._dragCallback(e)}_dragCallback(e){this._scrollDrag(e)}_scrollDrag(e){const{deltaPoints:o,viewportId:i,renderingEngineId:l}=e.detail,{viewport:c}=i2(i,l),{debounceIfNotLoaded:g,invert:v,loop:_}=this.configuration,T=o.canvas[1];let P;c instanceof ns&&(P=c.getVolumeId());const I=this._getPixelPerImage(c),R=T+this.deltaY;if(I)if(Math.abs(R)>=I){const L=Math.round(R/I);$g(c,{delta:v?-L:L,volumeId:P,debounceLoading:g,loop:_}),this.deltaY=R%I}else this.deltaY=R}_scroll(e){const{wheel:o,element:i}=e.detail,{direction:l}=o,{invert:c}=this.configuration,{viewport:g}=_n(i),v=l*(c?-1:1);$g(g,{delta:v,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:g instanceof xs?g.getVolumeId():void 0,scrollSlabs:this.configuration.scrollSlabs})}_getPixelPerImage(e){const{element:o}=e,i=e.getNumberOfSlices();return Math.max(2,o.offsetHeight/Math.max(i,8))}}Yg.toolName="StackScroll";class R8 extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"]}){super(e,o),this.mouseWheelCallback=i=>{const{element:l,wheel:c}=i.detail,g=_n(l),{viewport:v}=g,{invert:_}=this.configuration,T=c.direction*10*(_?-1:1);this.setAngle(v,T)},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:o,currentPoints:i,startPoints:l}=e.detail,c=i.world,g=l.world,v=_n(o),{viewport:_}=v,T=_.getCamera(),P=o.clientWidth,I=o.clientHeight,R=[P*.5,I*.5],L=_.canvasToWorld(R);let V=a8([g,L],[L,c]);const{viewPlaneNormal:U}=T,j=z0(nr(),L,g),z=z0(nr(),L,c),$=ro(nr(),j,z);mi(U,$)>0&&(V=-V),!Number.isNaN(V)&&this.setAngle(_,V)}setAngle(e,o){const{viewPlaneNormal:i,viewUp:l}=e.getCamera();if(e instanceof xs){const c=(o+360)%360*Math.PI/180,g=zi(new Float32Array(16));a1(g,g,c,i);const v=g0(nr(),l,g);e.setCamera({viewUp:v})}else{const{rotation:c}=e.getViewPresentation();e.setViewPresentation({rotation:(c+o+360)%360})}e.render()}}R8.toolName="PlanarRotate";class A8 extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.001,maxZoomScale:3e3,pinchToZoom:!0,pan:!0,invert:!1}}){super(e,o),this.preMouseDownCallback=i=>{const l=i.detail,{element:c,currentPoints:g}=l,v=g.world,T=_n(c).viewport.getCamera(),{focalPoint:P}=T;this.initialMousePosWorld=v;let I=Ei(P[0]-v[0],P[1]-v[1],P[2]-v[2]);return I=Uo(nr(),I),this.dirVec=I,!1},this.preTouchStartCallback=i=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(i)},this._dragParallelProjection=(i,l,c,g=!1)=>{var le,ce,ge;const{element:v,deltaPoints:_}=i.detail,T=g?i.detail.deltaDistance.canvas:_.canvas[1],P=[v.clientWidth,v.clientHeight],{parallelScale:I,focalPoint:R,position:L}=c,V=5/P[1],U=T*V*(this.configuration.invert?-1:1),j=(1-U)*I;let z=R,$=L;if(!this.configuration.zoomToCenter){const pe=y2(R,this.initialMousePosWorld);$=j0(nr(),L,this.dirVec,-pe*U),z=j0(nr(),R,this.dirVec,-pe*U)}const K=l.getImageData();let X=[1,1,1],ee=j,ne=!1;if(K){X=K.spacing;const{dimensions:pe}=K,we=pe[0]*X[0],Te=pe[1]*X[1],Ve=P[0]/P[1],Pe=(le=l.options)==null?void 0:le.displayArea,je=((ce=Pe==null?void 0:Pe.imageArea)==null?void 0:ce[0])??1.1,Je=((ge=Pe==null?void 0:Pe.imageArea)==null?void 0:ge[1])??1.1,it=we*je,Ge=Te*Je,Ke=it/Ge;let qe;Ke>Ve?qe=it/Ve*.5:qe=Ge*.5;const{minZoomScale:ut,maxZoomScale:wt}=this.configuration,Et=qe/wt,qt=qe/ut;jqt&&(ee=qt,ne=!0)}l.setCamera({parallelScale:ee,focalPoint:ne?R:z,position:ne?L:$})},this._dragPerspectiveProjection=(i,l,c,g=!1)=>{const{element:v,deltaPoints:_}=i.detail,T=g?i.detail.deltaDistance.canvas:_.canvas[1],P=[v.clientWidth,v.clientHeight],{position:I,focalPoint:R,viewPlaneNormal:L}=c,V=h0.distance2BetweenPoints(I,R),U=Math.sqrt(V)/P[1],j=[-L[0],-L[1],-L[2]],z=this.configuration.invert?T/U:T*U;let $=z*j[0];I[0]+=$,R[0]+=$,$=z*j[1],I[1]+=$,R[1]+=$,$=z*j[2],I[2]+=$,R[2]+=$,l.setCamera({position:I,focalPoint:R})},this.initialMousePosWorld=[0,0,0],this.dirVec=[0,0,0],this.configuration.pinchToZoom?this.touchDragCallback=this._pinchCallback.bind(this):this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}mouseWheelCallback(e){this._zoom(e)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:i,currentPoints:l}=e.detail,c=_n(i),{viewport:g}=c,v=g.getCamera(),_=l.world,{focalPoint:T}=v;this.initialMousePosWorld=_;let P=Ei(T[0]-_[0],T[1]-_[1],T[2]-_[2]);P=Uo(nr(),P),this.dirVec=P,v.parallelProjection?this._dragParallelProjection(e,g,v,!0):this._dragPerspectiveProjection(e,g,v,!0),g.render()}this.configuration.pan&&this._panCallback(e)}_dragCallback(e){const{element:o}=e.detail,i=_n(o),{viewport:l}=i,c=l.getCamera();c.parallelProjection?this._dragParallelProjection(e,l,c):this._dragPerspectiveProjection(e,l,c),l.render()}_zoom(e){const{element:o,points:i}=e.detail,l=_n(o),{viewport:c}=l;c.getCamera();const v=e.detail.wheel.direction,_={detail:{element:o,eventName:Xe.MOUSE_WHEEL,renderingEngineId:l.renderingEngineId,viewportId:c.id,camera:{},deltaPoints:{page:i.page,client:i.client,world:i.world,canvas:[0,-v*5]},startPoints:i,lastPoints:i,currentPoints:i}};c.type===fs.STACK&&this.preMouseDownCallback(_),this._dragCallback(_)}_panCallback(e){const{element:o,deltaPoints:i}=e.detail,l=_n(o),c=i.world,g=l.viewport.getCamera(),{focalPoint:v,position:_}=g,T=[_[0]-c[0],_[1]-c[1],_[2]-c[2]],P=[v[0]-c[0],v[1]-c[1],v[2]-c[2]];l.viewport.setCamera({focalPoint:P,position:T}),l.viewport.render()}}A8.toolName="Zoom";class yY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}){super(e,o)}mouseClickCallback(e){const{element:o,currentPoints:i}=e.detail,l=_n(o),{viewport:c,renderingEngine:g}=l,v=c.getVolumeId();if(!v)throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");let _=-1/0;const T=(V,U)=>{if(V>_)return _=V,U},P=iP(c,i.world,v,T);if(!P||!P.length)return;const{targetViewportIds:I,toolGroupId:R}=this.configuration;g.getViewports().filter(V=>{if((I==null?void 0:I.indexOf(V.id))>=0)return!0;const U=Ss(V.id,g.id);return!!(R&&R===(U==null?void 0:U.id))}).forEach(V=>{V instanceof ns?V.jumpToWorld(P):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")})}}yY.toolName="MIPJumpToClickTool";const{RENDERING_DEFAULTS:zS}=ep;function I_e(){return"rgb(0, 200, 0)"}function O_e(){return!0}function M_e(){return!0}function P_e(){return!0}const Zu={DRAG:1,ROTATE:2,SLAB:3};class Jc extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!1,viewportIndicatorsConfig:{radius:5,x:null,y:null},autoPan:{enabled:!1,panSize:10},handleRadius:3,enableHDPIHandles:!1,referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:of.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}}){var i,l,c,g;super(e,o),this.toolCenter=[0,0,0],this.initializeViewport=({renderingEngineId:v,viewportId:_})=>{const T=i2(_,v);if(!T)return;const{FrameOfReferenceUID:P,viewport:I}=T,{element:R}=I,{position:L,focalPoint:V,viewPlaneNormal:U}=I.getCamera();let j=this._getAnnotations(T);j=this.filterInteractableAnnotationsForElement(R,j),j!=null&&j.length&&A0(j[0].annotationUID);const z={highlighted:!1,metadata:{cameraPosition:[...L],cameraFocalPoint:[...V],FrameOfReferenceUID:P,toolName:this.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:this.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:_}};return _0(z,R),{normal:U,point:I.canvasToWorld([I.canvas.clientWidth/2,I.canvas.clientHeight/2])}},this._getViewportsInfo=()=>la(this.toolGroupId).viewportsInfo,this.resetCrosshairs=()=>{const v=this._getViewportsInfo();for(const _ of v){const{viewportId:T,renderingEngineId:P}=_,I=i2(T,P),R=I.viewport;R.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),R.resetSlabThickness();const{element:$}=R;let K=this._getAnnotations(I);K=this.filterInteractableAnnotationsForElement($,K),K.length&&A0(K[0].annotationUID),R.render()}this._computeToolCenter(v)},this.computeToolCenter=()=>{const v=this._getViewportsInfo();this._computeToolCenter(v)},this._computeToolCenter=v=>{if(!v.length||v.length===1){console.warn("For crosshairs to operate, at least two viewports must be given.");return}const[_,T,P]=v,{normal:I,point:R}=this.initializeViewport(_),{normal:L,point:V}=this.initializeViewport(T);let U=[0,0,0],j=nr();P?{normal:U,point:j}=this.initializeViewport(P):(v2(j,R,V),k2(j,j,.5),ro(U,I,L));const z=lf(I,R),$=lf(L,V),K=lf(U,j),X=Ij(z,$,K);this.setToolCenter(X)},this.addNewAnnotation=v=>{const _=v.detail,{element:T}=_,{currentPoints:P}=_,I=P.world,R=_n(T),{viewport:L}=R;this._jump(R,I);const V=this._getAnnotations(R),U=this.filterInteractableAnnotationsForElement(L.element,V),{data:j}=U[0],{rotationPoints:z}=j.handles,$=[];for(let K=0;K{console.log("Not implemented yet")},this.handleSelectedCallback=(v,_)=>{const T=v.detail,{element:P}=T;_.highlighted=!0,this._activateModify(P),Oi(P),v.preventDefault()},this.isPointNearTool=(v,_,T,P)=>!!this._pointNearTool(v,_,T,6),this.toolSelectedCallback=(v,_,T)=>{const P=v.detail,{element:I}=P;_.highlighted=!0,this._activateModify(I),Oi(I),v.preventDefault()},this.onCameraModified=v=>{var ge;const _=v.detail,{element:T}=_,P=_n(T),{renderingEngine:I}=P,R=P.viewport,L=this._getAnnotations(P),U=this.filterInteractableAnnotationsForElement(T,L)[0];if(!U)return;const j=R.getCamera(),z=U.metadata.cameraPosition,$=[0,0,0];h0.subtract(j.position,z,$);const K=U.metadata.cameraFocalPoint,X=[0,0,0];h0.subtract(j.focalPoint,K,X),U.metadata.cameraPosition=[...j.position],U.metadata.cameraFocalPoint=[...j.focalPoint];const ee=this._getReferenceLineControllable(R.id),ne=this._getReferenceLineDraggableRotatable(R.id);if(!Qi(j.position,z,.001)&&ee&&ne){let pe=!1;Qi($,X,.001)||(pe=!0);const Te=Math.abs(h0.dot($,j.viewPlaneNormal))<.01;!pe&&!Te&&(this.toolCenter[0]+=$[0],this.toolCenter[1]+=$[1],this.toolCenter[2]+=$[2],Or(pr,Xe.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter}))}(ge=this.configuration.autoPan)!=null&&ge.enabled&&Ss(R.id,I.id).getViewportIds().filter(Te=>Te!==R.id).forEach(Te=>{this._autoPanViewportIfNecessary(Te,I)});const ce=fi(T,this.getToolName(),!1);Un(ce)},this.onResetCamera=v=>{this.resetCrosshairs()},this.mouseMoveCallback=(v,_)=>{const{element:T,currentPoints:P}=v.detail,I=P.canvas;let R=!1;for(let L=0;L<_.length;L++){const V=_[L];if(da(V.annotationUID))continue;const{data:U,highlighted:j}=V;if(!U.handles)continue;const z=U.handles.activeOperation,$=U.activeViewportIds&&U.activeViewportIds.length>0?[...U.activeViewportIds]:[];U.activeViewportIds=[],U.handles.activeOperation=null;const K=this.getHandleNearImagePoint(T,V,I,6);let X=!1;K?X=!0:X=this._pointNearTool(T,V,I,6),X&&!j||!X&&j?(V.highlighted=!j,R=!0):(U.handles.activeOperation!==z||!this._areViewportIdArraysEqual(U.activeViewportIds,$))&&(R=!0)}return R},this.filterInteractableAnnotationsForElement=(v,_)=>{if(!_||!_.length)return[];const T=_n(v),{viewportId:P}=T;return _.filter(R=>R.data.viewportId===P)},this.renderAnnotation=(v,_)=>{let T=!1;const{viewport:P,renderingEngine:I}=v,{element:R}=P,L=this._getAnnotations(v),V=P.getCamera(),j=this.filterInteractableAnnotationsForElement(R,L)[0];if(!(L!=null&&L.length)||!(j!=null&&j.data))return T;const z=j.annotationUID,{clientWidth:$,clientHeight:K}=P.canvas,X=Math.sqrt($*$+K*K),ee=Math.min($,K),ne=j.data,le=P.worldToCanvas(this.toolCenter),ce=this._filterAnnotationsByUniqueViewportOrientations(v,L),ge=[],pe=[0,0,$,K];ce.forEach(je=>{const{data:Je}=je;Je.handles.toolCenter=this.toolCenter;const it=I.getViewport(Je.viewportId),Ge=it.getCamera(),Ke=this._getReferenceLineControllable(it.id),qe=this._getReferenceLineDraggableRotatable(it.id),ut=this._getReferenceLineSlabThicknessControlsOn(it.id),{clientWidth:wt,clientHeight:Et}=it.canvas,qt=Math.sqrt(wt*wt+Et*Et),$t=[wt*.5,Et*.5],Jt=it.canvasToWorld($t),Dn=[0,0,0];h0.cross(V.viewPlaneNormal,Ge.viewPlaneNormal,Dn),h0.normalize(Dn),h0.multiplyScalar(Dn,qt);const Nn=[0,0,0];h0.add(Jt,Dn,Nn);const xn=[0,0,0];h0.subtract(Jt,Dn,xn);const et=P.worldToCanvas(Nn),Me=P.worldToCanvas(Jt),ct=a0();ra(ct,et,Me),sh(ct,ct);const st=a0();eh(st,ct,X*100);const yt=a0();eh(yt,ct,ee*.4);const St=a0();eh(St,ct,ee*.2);const Pt=a0(),mn=this.configuration.referenceLinesCenterGapRadius;eh(Pt,ct,ce.length===2?mn:0);const Pn=a0(),Hn=a0(),Kn=a0(),Dt=a0();let Vt=Iy(le);(!qe||!Ke)&&(Vt=Iy(Me)),W2(Pn,Vt,Pt),W2(Hn,Vt,st),ra(Kn,Vt,Pt),ra(Dt,Vt,st),H3(Pn,Hn,pe),H3(Kn,Dt,pe);const gn=a0();ra(gn,le,yt);const Bt=a0();W2(Bt,le,yt);let rn=Iy(le);!qe&&ut&&(rn=Iy(Me));let Zn=[...this.toolCenter];!qe&&ut&&(Zn=[...Jt]);const Ut=[0,0,0];h0.subtract(Nn,xn,Ut),h0.normalize(Ut);const{viewPlaneNormal:Ir}=V,{matrix:br}=M2.buildFromDegree().rotate(90,Ir),jr=[0,0,0];g0(jr,Ut,br);const An=it.getSlabThickness(),hr=[...jr];h0.multiplyScalar(hr,An);const Cr=[0,0,0];h0.add(Zn,hr,Cr);const wr=P.worldToCanvas(Cr),Fr=a0();ra(Fr,rn,wr);const ui=a0();ra(ui,rn,st),W2(ui,ui,Fr);const Kr=a0();W2(Kr,rn,st),W2(Kr,Kr,Fr),H3(ui,Kr,pe);const ai=a0();W2(ai,rn,st),ra(ai,ai,Fr);const vi=a0();ra(vi,rn,st),ra(vi,vi,Fr),H3(ai,vi,pe);const e0=a0(),p0=a0(),Hi=a0(),T0=a0();ra(e0,rn,St),W2(e0,e0,Fr),W2(p0,rn,St),W2(p0,p0,Fr),ra(Hi,rn,St),ra(Hi,Hi,Fr),W2(T0,rn,St),ra(T0,T0,Fr),ge.push([it,Pn,Hn,Kn,Dt,ui,Kr,ai,vi,gn,Bt,e0,p0,Hi,T0])});const we=[],Te=[],Ve=this._getReferenceLineColor(P.id),Pe=Ve!==void 0?Ve:"rgb(200, 200, 200)";if(ge.forEach((je,Je)=>{var Dn,Nn,xn,et;const it=je[0],Ge=this._getReferenceLineColor(it.id),Ke=this._getReferenceLineControllable(it.id),qe=this._getReferenceLineDraggableRotatable(it.id)||((Dn=this.configuration.mobile)==null?void 0:Dn.enabled),ut=this._getReferenceLineSlabThicknessControlsOn(it.id)||((Nn=this.configuration.mobile)==null?void 0:Nn.enabled),wt=ne.activeViewportIds.find(Me=>Me===it.id);let Et=Ge!==void 0?Ge:"rgb(200, 200, 200)",qt=1;const $t=ne.handles.activeOperation!==null&&ne.handles.activeOperation===Zu.DRAG&&wt;$t&&(qt=2.5);let Jt=`${Je}`;if(Ke&&qe?(Jt=`${Je}One`,V0(_,z,Jt,je[1],je[2],{color:Et,lineWidth:qt}),Jt=`${Je}Two`,V0(_,z,Jt,je[3],je[4],{color:Et,lineWidth:qt})):V0(_,z,Jt,je[2],je[4],{color:Et,lineWidth:qt}),Ke){Et=Ge!==void 0?Ge:"rgb(200, 200, 200)";const Me=ne.handles.activeOperation===Zu.ROTATE,ct=[je[9],je[10]],st=[P.canvasToWorld(je[9]),it,je[1],je[2]],yt=[P.canvasToWorld(je[10]),it,je[3],je[4]];we.push(st,yt);const St=ne.handles.activeOperation===Zu.SLAB,Pt=[je[11],je[12],je[13],je[14]],mn=[P.canvasToWorld(je[11]),it,je[5],je[6]],Pn=[P.canvasToWorld(je[12]),it,je[5],je[6]],Hn=[P.canvasToWorld(je[13]),it,je[7],je[8]],Kn=[P.canvasToWorld(je[14]),it,je[7],je[8]];Te.push(mn,Pn,Hn,Kn);let Dt=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1),Vt=1;if((xn=this.configuration.mobile)!=null&&xn.enabled&&(Dt=this.configuration.mobile.handleRadius,Vt=this.configuration.mobile.opacity),($t||(et=this.configuration.mobile)!=null&&et.enabled)&&!Me&&!St&&qe&&ut){let Bt=`${Je}One`;$o(_,z,Bt,ct,{color:Et,handleRadius:Dt,opacity:Vt,type:"circle"}),Bt=`${Je}Two`,$o(_,z,Bt,Pt,{color:Et,handleRadius:Dt,opacity:Vt,type:"rect"})}else if($t&&!Me&&!St&&qe){const Bt=`${Je}`;$o(_,z,Bt,ct,{color:Et,handleRadius:Dt,opacity:Vt,type:"circle"})}else if(wt&&!Me&&!St&&ut){const Bt=`${Je}`;$o(_,z,Bt,Pt,{color:Et,handleRadius:Dt,opacity:Vt,type:"rect"})}else if(Me&&qe){const Bt=`${Je}`,rn=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);$o(_,z,Bt,ct,{color:Et,handleRadius:rn,fill:Et,type:"circle"})}else if(St&&wt&&ut){const Bt=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);$o(_,z,Jt,Pt,{color:Et,handleRadius:Bt,fill:Et,type:"rect"})}it.getSlabThickness()>.5&&ut&&(Jt=`${Je}STOne`,V0(_,z,Jt,je[5],je[6],{color:Et,width:1,lineDash:[2,3]}),Jt=`${Je}STTwo`,V0(_,z,Jt,je[7],je[8],{color:Et,width:je,lineDash:[2,3]}))}}),T=!0,ne.handles.rotationPoints=we,ne.handles.slabThicknessPoints=Te,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:je}=this.configuration,Je=(je==null?void 0:je.xOffset)||.95,it=(je==null?void 0:je.yOffset)||.05,Ge=[$*Je,K*it],Ke=(je==null?void 0:je.circleRadius)||X*.01;J1(_,z,"0",Ge,Ke,{color:Pe,fill:Pe})}return T},this._getAnnotations=v=>{const{viewport:_}=v,T=O0(this.getToolName(),_.element)||[],P=this._getViewportsInfo().map(({viewportId:R})=>R);return T.filter(R=>{const{data:L}=R;return P.includes(L.viewportId)})},this._onNewVolume=()=>{const v=this._getViewportsInfo();this._computeToolCenter(v)},this._areViewportIdArraysEqual=(v,_)=>v.length!==_.length?!1:(v.forEach(T=>{let P=!1;for(let I=0;I<_.length;++I)if(T===_[I]){P=!0;break}if(P===!1)return!1}),!0),this._getAnnotationsForViewportsWithDifferentCameras=(v,_)=>{const{viewportId:T,renderingEngine:P,viewport:I}=v,R=_.filter(z=>z.data.viewportId!==T);if(!R||!R.length)return[];const L=I.getCamera(),{viewPlaneNormal:V,position:U}=L;return R.filter(z=>{const{viewportId:$}=z.data,X=P.getViewport($).getCamera();return!(Qi(X.viewPlaneNormal,V,.01)&&Qi(X.position,U,1))})},this._filterViewportWithSameOrientation=(v,_,T)=>{const{renderingEngine:P}=v,{data:I}=_,R=P.getViewport(I.viewportId),L=T.filter(z=>{const{data:$}=z,K=P.getViewport($.viewportId);return this._getReferenceLineControllable(K.id)===!0});if(!L||!L.length)return[];const V=R.getCamera(),U=V.viewPlaneNormal;return h0.normalize(U),L.filter(z=>{const{viewportId:$}=z.data,X=P.getViewport($).getCamera(),ee=X.viewPlaneNormal;return h0.normalize(ee),Qi(U,ee,.01)&&Qi(V.viewUp,X.viewUp,.01)})},this._filterAnnotationsByUniqueViewportOrientations=(v,_)=>{const{renderingEngine:T,viewport:P}=v,R=P.getCamera().viewPlaneNormal;h0.normalize(R);const L=_.filter(z=>{const{data:$}=z,K=T.getViewport($.viewportId),X=this._getReferenceLineControllable(K.id);return P!==K&&X===!0}),V=[];for(let z=0;z{const{data:$}=z,K=T.getViewport($.viewportId),X=this._getReferenceLineControllable(K.id);return P!==K&&X!==!0});for(let z=0;zce===$))continue;const{viewportId:K}=$.data,ee=T.getViewport(K).getCamera(),ne=ee.viewPlaneNormal;if(h0.normalize(ne),Qi(R,ne,.01)||z3(R,ne,.01))continue;let le=!1;for(let ce=0;ce{const T=v.getAllVolumeIds(),P=_.getAllVolumeIds();return T.length===P.length&&T.every(I=>P.includes(I))},this._jump=(v,_)=>{ar.isInteractingWithTool=!0;const{viewport:T,renderingEngine:P}=v,I=this._getAnnotations(v),R=[0,0,0];h0.subtract(_,this.toolCenter,R);const V=this._getAnnotationsForViewportsWithDifferentCameras(v,I).filter(U=>{const{data:j}=U,z=P.getViewport(j.viewportId),$=this._checkIfViewportsRenderingSameScene(T,z);return this._getReferenceLineControllable(z.id)&&this._getReferenceLineDraggableRotatable(z.id)&&$});return V.length===0?(ar.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(P,V,R),ar.isInteractingWithTool=!1,!0)},this._activateModify=v=>{var _;ar.isInteractingWithTool=!((_=this.configuration.mobile)!=null&&_.enabled),v.addEventListener(Xe.MOUSE_UP,this._endCallback),v.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),v.addEventListener(Xe.MOUSE_CLICK,this._endCallback),v.addEventListener(Xe.TOUCH_END,this._endCallback),v.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),v.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=v=>{ar.isInteractingWithTool=!1,v.removeEventListener(Xe.MOUSE_UP,this._endCallback),v.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),v.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),v.removeEventListener(Xe.TOUCH_END,this._endCallback),v.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),v.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._endCallback=v=>{const _=v.detail,{element:T}=_;this.editData.annotation.data.handles.activeOperation=null,this.editData.annotation.data.activeViewportIds=[],this._deactivateModify(T),Zi(T),this.editData=null;const I=fi(T,this.getToolName(),!1);Un(I)},this._dragCallback=v=>{const _=v.detail,T=_.deltaPoints.world;if(Math.abs(T[0])<.001&&Math.abs(T[1])<.001&&Math.abs(T[2])<.001)return;const{element:P}=_,I=_n(P),{renderingEngine:R,viewport:L}=I,V=this._getAnnotations(I),j=this.filterInteractableAnnotationsForElement(P,V)[0];if(!j)return;const{handles:z}=j.data,{currentPoints:$}=v.detail,K=$.canvas;if(z.activeOperation===Zu.DRAG){const ee=this._getAnnotationsForViewportsWithDifferentCameras(I,V).filter(ne=>{const{data:le}=ne,ce=R.getViewport(le.viewportId),ge=this._getReferenceLineControllable(ce.id),pe=this._getReferenceLineDraggableRotatable(ce.id);return ge===!0&&pe===!0&&j.data.activeViewportIds.find(we=>we===ce.id)});this._applyDeltaShiftToSelectedViewportCameras(R,ee,T)}else if(z.activeOperation===Zu.ROTATE){const ee=this._getAnnotationsForViewportsWithDifferentCameras(I,V).filter(Je=>{const{data:it}=Je,Ge=R.getViewport(it.viewportId),Ke=this._getReferenceLineControllable(Ge.id),qe=this._getReferenceLineDraggableRotatable(Ge.id);return Ke===!0&&qe===!0}),ne=a0(),le=a0(),ce=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],ge=L.worldToCanvas(ce),pe=_.currentPoints.canvas,we=a0();Ru(we,pe,_.deltaPoints.canvas),Ru(ne,we,ge),Ru(le,pe,ge);let Te=Cie(ne,le);this._isClockWise(ge,we,pe)&&(Te*=-1),Te=Math.round(Te*100)/100;const Ve=L.getCamera().viewPlaneNormal,{matrix:Pe}=M2.buildFromRadian().translate(ce[0],ce[1],ce[2]).rotate(Te,Ve).translate(-ce[0],-ce[1],-ce[2]),je=[];ee.forEach(Je=>{const{data:it}=Je;it.handles.toolCenter=ce;const Ge=R.getViewport(it.viewportId),Ke=Ge.getCamera(),{viewUp:qe,position:ut,focalPoint:wt}=Ke;qe[0]+=ut[0],qe[1]+=ut[1],qe[2]+=ut[2],g0(wt,wt,Pe),g0(ut,ut,Pe),g0(qe,qe,Pe),qe[0]-=ut[0],qe[1]-=ut[1],qe[2]-=ut[2],Ge.setCamera({position:ut,viewUp:qe,focalPoint:wt}),je.push(Ge.id)}),R.renderViewports(je)}else if(z.activeOperation===Zu.SLAB){const ee=this._getAnnotationsForViewportsWithDifferentCameras(I,V).filter(ce=>{const{data:ge}=ce,pe=R.getViewport(ge.viewportId),we=this._getReferenceLineControllable(pe.id),Te=this._getReferenceLineSlabThicknessControlsOn(pe.id);return we===!0&&Te===!0&&j.data.activeViewportIds.find(Ve=>Ve===pe.id)});if(ee.length===0)return;const ne=this._filterViewportWithSameOrientation(I,ee[0],V),le=[];le.push(L.id),ne.forEach(ce=>{const{data:ge}=ce,pe=R.getViewport(ge.viewportId),Te=pe.getCamera().viewPlaneNormal,Ve=h0.dot(T,Te),Pe=[...Te];if(h0.multiplyScalar(Pe,Ve),Math.abs(Pe[0])>.001||Math.abs(Pe[1])>.001||Math.abs(Pe[2])>.001){const je=Math.sqrt(Pe[0]*Pe[0]+Pe[1]*Pe[1]+Pe[2]*Pe[2]),Je=_.lastPoints.world,it=[0,0,0],Ge=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(pe.id)){const{rotationPoints:Nn}=this.editData.annotation.data.handles,xn=Nn.filter(et=>et[1].uid===pe.id);if(xn.length===2){const et=L.canvasToWorld(xn[0][3]),Me=L.canvasToWorld(xn[1][3]);h0.add(et,Me,Ge),h0.multiplyScalar(Ge,.5)}}h0.subtract(Je,Ge,it);const qe=h0.dot(it,Te),ut=[...Te];h0.multiplyScalar(ut,qe);const wt=[ut[0],ut[1],ut[2]];Uo(wt,wt);const Et=[Pe[0],Pe[1],Pe[2]];Uo(Et,Et);let qt=pe.getSlabThickness();z3(wt,Et,.001)?qt-=je:qt+=je,qt=Math.abs(qt),qt=Math.max(zS.MINIMUM_SLAB_THICKNESS,qt),this._pointNearReferenceLine(j,K,6,pe)&&(qt=zS.MINIMUM_SLAB_THICKNESS),Ss(pe.id,R.id).getToolInstance(this.getToolName()).setSlabThickness(pe,qt),le.push(pe.id)}}),R.renderViewports(le)}},this._pointNearReferenceLine=(v,_,T,P)=>{const{data:I}=v,{rotationPoints:R}=I.handles;for(let L=0;L{const l=i2(i,o);if(!l)return;const c=this._getAnnotations(l);c!=null&&c.length&&c.forEach(g=>{A0(g.annotationUID)})})}setToolCenter(e,o=!1){this.toolCenter=e;const i=this._getViewportsInfo();Un(i.map(({viewportId:l})=>l)),o||Or(pr,Xe.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter})}getHandleNearImagePoint(e,o,i,l){const c=_n(e),{viewport:g}=c;let v=this._getRotationHandleNearImagePoint(g,o,i,l);if(v!==null||(v=this._getSlabThicknessHandleNearImagePoint(g,o,i,l),v!==null))return v}_unsubscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:o,renderingEngineId:i})=>{const{viewport:l}=i2(o,i),{element:c}=l;c.removeEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:o,renderingEngineId:i})=>{const{viewport:l}=i2(o,i),{element:c}=l;c.addEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_autoPanViewportIfNecessary(e,o){const i=o.getViewport(e),{clientWidth:l,clientHeight:c}=i.canvas,g=i.worldToCanvas(this.toolCenter),v=this.configuration.autoPan.panSize,_=[g[0],g[1]];if(g[0]<0?_[0]=v:g[0]>l&&(_[0]=l-v),g[1]<0?_[1]=v:g[1]>c&&(_[1]=c-v),_[0]===g[0]&&_[1]===g[1])return;const T=i.canvasToWorld(_),P=[T[0]-this.toolCenter[0],T[1]-this.toolCenter[1],T[2]-this.toolCenter[2]],I=i.getCamera(),{focalPoint:R,position:L}=I,V=[L[0]-P[0],L[1]-P[1],L[2]-P[2]],U=[R[0]-P[0],R[1]-P[1],R[2]-P[2]];i.setCamera({focalPoint:U,position:V}),i.render()}setSlabThickness(e,o){let i;const{filterActorUIDsToSetSlabThickness:l}=this.configuration;l&&l.length>0&&(i=l);let c=this.configuration.slabThicknessBlendMode;o===zS.MINIMUM_SLAB_THICKNESS&&(c=of.COMPOSITE),e.setBlendMode(c,i,!1),e.setSlabThickness(o,i)}_isClockWise(e,o,i){return(o[0]-e[0])*(i[1]-e[1])-(o[1]-e[1])*(i[0]-e[0])>0}_applyDeltaShiftToSelectedViewportCameras(e,o,i){o.forEach(l=>{this._applyDeltaShiftToViewportCamera(e,l,i)})}_applyDeltaShiftToViewportCamera(e,o,i){const{data:l}=o,c=e.getViewport(l.viewportId),g=c.getCamera(),v=g.viewPlaneNormal,_=h0.dot(i,v),T=[...v];if(h0.multiplyScalar(T,_),Math.abs(T[0])>.001||Math.abs(T[1])>.001||Math.abs(T[2])>.001){const P=[0,0,0],I=[0,0,0];h0.add(g.focalPoint,T,P),h0.add(g.position,T,I),c.setCamera({focalPoint:P,position:I}),c.render()}}_getRotationHandleNearImagePoint(e,o,i,l){const{data:c}=o,{rotationPoints:g}=c.handles;for(let v=0;vVe===U.id))continue;const j=this._getReferenceLineControllable(U.id),z=this._getReferenceLineSlabThicknessControlsOn(U.id);if(!j||!z)continue;const $=R[V][2],K=R[V][3],X=a0();W2(X,$,K),eh(X,X,.5);const ee=a0();ra(ee,$,X),sh(ee,ee);const ne=a0();eh(ne,ee,T*.05);const le=a0(),ce=a0();W2(le,X,ne),ra(ce,X,ne);const ge={start:{x:le[0],y:le[1]},end:{x:$[0],y:$[1]}},pe=za([ge.start.x,ge.start.y],[ge.end.x,ge.end.y],[i[0],i[1]]),we={start:{x:ce[0],y:ce[1]},end:{x:K[0],y:K[1]}},Te=za([we.start.x,we.start.y],[we.end.x,we.end.y],[i[0],i[1]]);(pe<=l||Te<=l)&&(L.push(U.id),P.handles.activeOperation=null),V++}return P.activeViewportIds=[...L],this.editData={annotation:o},P.handles.activeOperation===Zu.DRAG}}Jc.toolName="Crosshairs";const h7="magnify-viewport";class wY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}}){super(e,o),this._hasBeenRemoved=!1,this.preMouseDownCallback=i=>{const l=i.detail,{element:c,currentPoints:g}=l,v=_n(c),{viewport:_,renderingEngine:T}=v;if(!(_ instanceof ts))throw new Error("MagnifyTool only works on StackViewports");const P=this._getReferencedImageId(_);if(!P)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");const I=fi(c,this.getToolName());return this.editData={referencedImageId:P,viewportIdsToRender:I,enabledElement:v,renderingEngine:T,currentPoints:g},this._createMagnificationViewport(),this._activateDraw(c),Oi(c),i.preventDefault(),Un(I),!0},this.preTouchStartCallback=i=>{this.preMouseDownCallback(i)},this._createMagnificationViewport=()=>{const{enabledElement:i,referencedImageId:l,viewportIdsToRender:c,renderingEngine:g,currentPoints:v}=this.editData,{viewport:_}=i,{element:T}=_,P=_.getProperties(),{rotation:I}=_.getViewPresentation(),{canvas:R,world:L}=v;let V;if(V=T.querySelector(".magnifyTool"),V===null){const j=document.createElement("div");j.classList.add("magnifyTool"),j.style.display="block",j.style.width=`${this.configuration.magnifyWidth}px`,j.style.height=`${this.configuration.magnifyHeight}px`,j.style.position="absolute",V=j,T.querySelector(".viewport-element").appendChild(j);const $={viewportId:h7,type:fs.STACK,element:V};g.enableElement($)}V.style.top=`${R[1]-this.configuration.magnifyHeight/2}px`,V.style.left=`${R[0]-this.configuration.magnifyWidth/2}px`;const U=g.getViewport(h7);U.setStack([l]).then(()=>{if(this._hasBeenRemoved)return;U.setProperties(P),U.setViewPresentation({rotation:I});const{parallelScale:j}=_.getCamera(),{focalPoint:z,position:$,viewPlaneNormal:K}=U.getCamera(),X=Math.sqrt(Math.pow(z[0]-$[0],2)+Math.pow(z[1]-$[1],2)+Math.pow(z[2]-$[2],2)),ee=[L[0],L[1],L[2]],ne=[ee[0]+X*K[0],ee[1]+X*K[1],ee[2]+X*K[2]];U.setCamera({parallelScale:j*(1/this.configuration.magnifySize),focalPoint:ee,position:ne}),U.render()}),V.style.display="block",Un(c)},this._dragCallback=i=>{const l=i.detail,{deltaPoints:c,element:g,currentPoints:v}=l,_=c.world,T=v.canvas,P=_n(g),{renderingEngine:I}=P,R=I.getViewport(h7),L=g.querySelector(".magnifyTool");if(!L)return;L.style.top=`${T[1]-this.configuration.magnifyHeight/2}px`,L.style.left=`${T[0]-this.configuration.magnifyWidth/2}px`;const{focalPoint:V,position:U}=R.getCamera(),j=[U[0]+_[0],U[1]+_[1],U[2]+_[2]],z=[V[0]+_[0],V[1]+_[1],V[2]+_[2]];R.setCamera({focalPoint:z,position:j}),R.render()},this._dragEndCallback=i=>{const{element:l}=i.detail,c=_n(l),{renderingEngine:g}=c;g.disableElement(h7);const v=l.querySelector(".viewport-element"),_=v.querySelector(".magnifyTool");v.removeChild(_),this._deactivateDraw(l),Zi(l),this._hasBeenRemoved=!0},this._activateDraw=i=>{ar.isInteractingWithTool=!0,this._hasBeenRemoved=!1,i.addEventListener(Xe.MOUSE_UP,this._dragEndCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._dragEndCallback),i.addEventListener(Xe.TOUCH_END,this._dragEndCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._dragEndCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._dragEndCallback),i.removeEventListener(Xe.TOUCH_END,this._dragEndCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)}}_getReferencedImageId(e){const o=this.getTargetId(e);let i;return e instanceof ts&&(i=o.split("imageId:")[1]),i}}wY.toolName="Magnify";const R_e="advancedMagnifyTool",A_e=125,{Events:ld}=bu,Eb=n=>n.uid!==n.referencedId;var gD;(function(n){n.ShowZoomFactorsList="showZoomFactorsList"})(gD||(gD={}));const L_e="AdvancedMagnify",N_e=1-ou,ZP=class ZP extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:3,zoomFactorList:[1.5,2,2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:{showZoomFactorsList:{method:"showZoomFactorsList",bindings:[{mouseButton:pf.Secondary,modifierKey:h2.Shift}]}}}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=_n(g),{viewport:_,renderingEngine:T}=v,P=c.world,I=c.canvas,{magnifyingGlass:R}=this.configuration,{radius:L,zoomFactor:V,autoPan:U}=R,j=this._getCanvasHandlePoints(I,L),z=_.getCamera(),{viewPlaneNormal:$,viewUp:K}=z,X=this.getReferencedImageId(_,P,$,K),ee=H0(),ne=H0(),le=_.getFrameOfReferenceUID(),ce={annotationUID:ee,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...$],viewUp:[...K],FrameOfReferenceUID:le,referencedImageId:X},data:{sourceViewportId:_.id,magnifyViewportId:ne,zoomFactor:V,isCanvasAnnotation:!0,handles:{points:j,activeHandleIndex:null}}};this.magnifyViewportManager.createViewport(ce,{magnifyViewportId:ne,sourceEnabledElement:v,position:I,radius:L,zoomFactor:V,autoPan:{enabled:U.enabled,padding:U.padding,callback:pe=>{const we=ce.data.handles.points,{canvas:Te}=pe.delta;for(let Ve=0,Pe=we.length;Ve{this.magnifyViewportManager.dispose(),Jv().forEach(l=>{l.metadata.toolName===this.getToolName()&&A0(l.annotationUID)})},this.isPointNearTool=(i,l,c,g)=>{const{data:v}=l,{points:_}=v.handles,T=_,P=T[0],I=T[2],R=T[3],L=Math.abs(I[1]-P[1])*.5,V=[R[0]+L,P[1]+L],U=Gd([V,c]);return Math.abs(U-L){const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v},Oi(g),this._activateModify(g),Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;const{points:T}=_.handles,P=T.findIndex(R=>R===c),I=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P},this._activateModify(v),Oi(v),Un(I),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_}=this.editData,{data:T}=g;T.handles.activeHandleIndex=null,this._deactivateModify(c),Zi(c),this.editData=null,this.isDrawing=!1,Un(v),_&&lo(g)},this._dragDrawCallback=i=>{this.isDrawing=!0;const l=i.detail,{deltaPoints:c}=l,g=(c==null?void 0:c.canvas)??[0,0,0],{annotation:v,viewportIdsToRender:_}=this.editData,{points:T}=v.data.handles;T.forEach(P=>{P[0]+=g[0],P[1]+=g[1]}),v.invalidated=!0,this.editData.hasMoved=!0,Un(_)},this._dragModifyCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_}=this.editData,{data:T}=g;if(_===void 0){const{deltaPoints:P}=l,I=P.canvas;T.handles.points.forEach(L=>{L[0]+=I[0],L[1]+=I[1]}),g.invalidated=!0}else this._dragHandle(i),g.invalidated=!0;Un(v)},this._dragHandle=i=>{const l=i.detail,{annotation:c}=this.editData,{data:g}=c,{points:v}=g.handles,_=v,T=_[0],P=_[2],I=_[3],R=Math.abs(P[1]-T[1])*.5,L=[I[0]+R,T[1]+R],{currentPoints:V}=l,U=V.canvas,j=Gd([L,U]),z=this._getCanvasHandlePoints(L,j);v[0]=z[0],v[1]=z[1],v[2]=z[2],v[3]=z[3]},this.cancel=i=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length))return c;_=_==null?void 0:_.filter(I=>I.data.sourceViewportId===g.id);const T=this.filterInteractableAnnotationsForElement(v,_);if(!(T!=null&&T.length))return c;const P={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let I=0;I[[i[0],i[1]-l,0],[i[0]+l,i[1],0],[i[0],i[1]+l,0],[i[0]-l,i[1],0]],this.magnifyViewportManager=N6.getInstance()}showZoomFactorsList(e,o){const{element:i,currentPoints:l}=e.detail,c=_n(i),{viewport:g}=c,{canvas:v}=l,_=i.querySelector(":scope .viewport-element"),T=o.data.zoomFactor,P=()=>I.parentElement.removeChild(I),I=this._getZoomFactorsListDropdown(T,R=>{R!==void 0&&(o.data.zoomFactor=Number.parseFloat(R),o.invalidated=!0),P(),g.render()});Object.assign(I.style,{left:`${v[0]}px`,top:`${v[1]}px`}),_.appendChild(I),I.focus()}_getZoomFactorsListDropdown(e,o){const{zoomFactorList:i}=this.configuration.magnifyingGlass,l=document.createElement("select");return l.size=5,Object.assign(l.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach(c=>{l.addEventListener(c,g=>g.stopPropagation())}),l.addEventListener("change",c=>{c.stopPropagation(),o(l.value)}),l.addEventListener("keydown",c=>{var v;((c.keyCode??c.which===27)||((v=c.key)==null?void 0:v.toLowerCase())==="escape")&&(c.stopPropagation(),o())}),i.forEach(c=>{const g=document.createElement("option");g.label=c,g.title=`Zoom factor ${c.toFixed(1)}`,g.value=c,g.defaultSelected=c===e,l.add(g)}),l}};ZP.Actions=gD;let Ev=ZP;class N6{constructor(){this.createViewport=(e,o)=>{const{magnifyViewportId:i,sourceEnabledElement:l,position:c,radius:g,zoomFactor:v,autoPan:_}=o,{viewport:T}=l,{element:P}=T,I=new b_e({magnifyViewportId:i,sourceEnabledElement:l,radius:g,position:c,zoomFactor:v,autoPan:_});return this._addSourceElementEventListener(P),this._magnifyViewportsMap.set(I.viewportId,{annotation:e,magnifyViewport:I,magnifyViewportInfo:o}),I},this._annotationRemovedCallback=e=>{const{annotation:o}=e.detail;o.metadata.toolName===L_e&&this.destroyViewport(o.data.magnifyViewportId)},this._newStackImageCallback=e=>{const{viewportId:o,imageId:i}=e.detail,l=this._getMagnifyViewportsMapEntriesBySourceViewportId(o),{viewport:c}=yo(o);c.stackActorReInitialized&&this._reset(o),l.forEach(({annotation:g})=>{g.metadata.referencedImageId=i,g.invalidated=!0})},this._newVolumeImageCallback=e=>{const{renderingEngineId:o,viewportId:i}=e.detail,c=ha(o).getViewport(i),{viewPlaneNormal:g}=c.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(i).forEach(({annotation:_})=>{const{viewPlaneNormal:T}=_.metadata;if(!(Math.abs(mi(T,g))>N_e))return;const{handles:I}=_.data,R=c.canvasToWorld([0,0]),L=z0(nr(),R,I.points[0]),V=mi(L,g),U=k2(nr(),g,V);for(let j=0,z=I.points.length;jthis.destroyViewport(o))}_getMagnifyViewportsMapEntriesBySourceViewportId(e){return Array.from(this._magnifyViewportsMap.values()).filter(({magnifyViewport:i})=>{const{viewport:l}=i.sourceEnabledElement;return l.id===e})}_reset(e){this._getMagnifyViewportsMapEntriesBySourceViewportId(e).forEach(({magnifyViewport:i,annotation:l,magnifyViewportInfo:c})=>{this.destroyViewport(i.viewportId);const g=yo(e);this.createViewport(l,{...c,sourceEnabledElement:{...g}})})}_addEventListeners(){pr.addEventListener(Xe.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){pr.removeEventListener(Xe.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(ld.STACK_NEW_IMAGE,this._newStackImageCallback);const o=l=>{const{viewportId:c}=l.detail;this._reset(c)};e.addEventListener(ld.VIEWPORT_NEW_IMAGE_SET,o);const i=l=>{const{viewportId:c}=l.detail;this._reset(c)};e.addEventListener(ld.VOLUME_VIEWPORT_NEW_VOLUME,i),e.addEventListener(ld.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=o,e.newVolumeHandler=i}_removeSourceElementEventListener(e){e.removeEventListener(ld.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(ld.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(ld.VIEWPORT_NEW_IMAGE_SET,e.newStackHandler),e.removeEventListener(ld.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}class b_e{constructor({magnifyViewportId:e,sourceEnabledElement:o,radius:i=A_e,position:l=[0,0],zoomFactor:c,autoPan:g}){this._enabledElement=null,this._sourceToolGroup=null,this._magnifyToolGroup=null,this._isViewportReady=!1,this._radius=0,this._resized=!1,this._canAutoPan=!1,this._viewportId=e??H0(),this._sourceEnabledElement=o,this._autoPan=g,this.radius=i,this.position=l,this.zoomFactor=c,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=Z8(this._resizeViewport.bind(this),1),this._initialize()}get sourceEnabledElement(){return this._sourceEnabledElement}get viewportId(){return this._viewportId}get radius(){return this._radius}set radius(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}update(){const{radius:e,position:o,visible:i}=this,{viewport:l}=this._enabledElement,{element:c}=l,g=2*e,[v,_]=o;this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(c.style,{display:i?"block":"hidden",width:`${g}px`,height:`${g}px`,left:`${-e}px`,top:`${-e}px`,transform:`translate(${v}px, ${_}px)`}),this._isViewportReady&&(this._syncViewports(),l.render())}dispose(){const{viewport:e}=this._enabledElement,{element:o}=e,i=e.getRenderingEngine();this._removeEventListeners(o),i.disableElement(e.id),o.parentNode&&o.parentNode.removeChild(o)}_handleToolModeChanged(e){var v;const{_magnifyToolGroup:o}=this,{toolGroupId:i,toolName:l,mode:c,toolBindingsOptions:g}=e.detail;if(((v=this._sourceToolGroup)==null?void 0:v.id)===i)switch(c){case ao.Active:o.setToolActive(l,g);break;case ao.Passive:o.setToolPassive(l);break;case ao.Enabled:o.setToolEnabled(l);break;case ao.Disabled:o.setToolDisabled(l);break;default:throw new Error(`Unknow tool mode (${c})`)}}_inheritBorderRadius(e){const o=e.querySelector(".viewport-element"),i=e.querySelector(".cornerstone-canvas");o.style.borderRadius="inherit",i.style.borderRadius="inherit"}_createViewportNode(){const e=document.createElement("div"),{radius:o}=this,i=o*2;return e.classList.add(R_e),Object.assign(e.style,{display:"block",width:`${i}px`,height:`${i}px`,position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:`${-o}px`,top:`${-o}px`,transform:"translate(-1000px, -1000px)"}),e}_convertZoomFactorToParallelScale(e,o,i){const{parallelScale:l}=e.getCamera(),c=o.canvas.offsetWidth/e.canvas.offsetWidth;return l*(1/i)*c}_isStackViewport(e){return"setStack"in e}_isVolumeViewport(e){return"addVolumes"in e}_cloneToolGroups(e,o){const i=e.getActors(),l=`${o.id}-toolGroup`,c=Ss(e.id,e.renderingEngineId),g=c.clone(l,v=>{const _=c.getToolInstance(v);return _ instanceof Yo&&!(_ instanceof Ev)});return g.addViewport(o.id,o.renderingEngineId),i.filter(Eb).forEach(v=>{l5(this.viewportId,[{segmentationId:v.referencedId,type:Ti.Labelmap}])}),{sourceToolGroup:c,magnifyToolGroup:g}}_cloneStack(e,o){const i=e.getImageIds();o.setStack(i).then(()=>{this._isViewportReady=!0,this.update()})}_cloneVolumes(e,o){const l=e.getActors().filter(c=>!Eb(c)).map(c=>({volumeId:c.uid}));return o.setVolumes(l).then(()=>{this._isViewportReady=!0,this.update()}),o}_cloneViewport(e,o){const{viewportId:i}=this,l=e.getRenderingEngine(),{options:c}=e,g={element:o,viewportId:i,type:e.type,defaultOptions:{...c}};l.enableElement(g);const v=l.getViewport(i);this._isStackViewport(e)?this._cloneStack(e,v):this._isVolumeViewport(e)&&this._cloneVolumes(e,v),this._inheritBorderRadius(o);const _=this._cloneToolGroups(e,v);this._sourceToolGroup=_.sourceToolGroup,this._magnifyToolGroup=_.magnifyToolGroup}_cancelMouseEventCallback(e){e.stopPropagation(),e.preventDefault()}_browserMouseUpCallback(e){const{element:o}=this._enabledElement.viewport;document.removeEventListener("mouseup",this._browserMouseUpCallback),o.addEventListener("mouseup",this._cancelMouseEventCallback),o.addEventListener("mousemove",this._cancelMouseEventCallback)}_browserMouseDownCallback(e){var i;const{element:o}=this._enabledElement.viewport;this._canAutoPan=!!((i=e.target)!=null&&i.closest(".advancedMagnifyTool")),document.addEventListener("mouseup",this._browserMouseUpCallback),o.removeEventListener("mouseup",this._cancelMouseEventCallback),o.removeEventListener("mousemove",this._cancelMouseEventCallback)}_mouseDragCallback(e){if(!ar.isInteractingWithTool)return;const{_autoPan:o}=this;if(!o.enabled||!this._canAutoPan)return;const{currentPoints:i}=e.detail,{viewport:l}=this._enabledElement,{canvasToWorld:c}=l,{canvas:g}=i,{radius:v}=this,_=[v,v],T=f1(_,g),P=v-o.padding;if(T<=P)return;const I=T-P,R=Ru(a0(),g,_);sh(R,R),eh(R,R,I);const L=W2(a0(),this.position,R),V=c(this.position),U=c(L),j=z0(nr(),U,V),z={points:{currentPosition:{canvas:this.position,world:V},newPosition:{canvas:L,world:U}},delta:{canvas:R,world:j}};o.callback(z)}_addBrowserEventListeners(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}_removeBrowserEventListeners(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}_addEventListeners(e){pr.addEventListener(Xe.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Xe.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Xe.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){pr.removeEventListener(Xe.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Xe.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Xe.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}_initialize(){const{_sourceEnabledElement:e}=this,{viewport:o}=e,{canvas:i}=o,l=this._createViewportNode();i.parentNode.appendChild(l),this._addEventListeners(l),this._cloneViewport(o,l),this._enabledElement=_n(l)}_syncViewportsCameras(e,o){const i=e.canvasToWorld(this.position),l=this._convertZoomFactorToParallelScale(e,o,this.zoomFactor),{focalPoint:c,position:g,viewPlaneNormal:v}=o.getCamera(),_=Math.sqrt(Math.pow(c[0]-g[0],2)+Math.pow(c[1]-g[1],2)+Math.pow(c[2]-g[2],2)),T=[i[0],i[1],i[2]],P=[T[0]+_*v[0],T[1]+_*v[1],T[2]+_*v[2]];o.setCamera({parallelScale:l,focalPoint:T,position:P})}_syncStackViewports(e,o){o.setImageIdIndex(e.getCurrentImageIdIndex())}_syncViewports(){const{viewport:e}=this._sourceEnabledElement,{viewport:o}=this._enabledElement,i=e.getProperties();o.getImageData()&&(o.setProperties(i),this._syncViewportsCameras(e,o),this._isStackViewport(e)&&this._syncStackViewports(e,o),this._syncViewportsCameras(e,o),o.render())}_resizeViewport(){const{viewport:e}=this._enabledElement;e.getRenderingEngine().resize()}}Ev.toolName="AdvancedMagnify";const{EPSILON:HS}=ep;class Rg extends h4{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",enforceSameFrameOfReference:!0,showFullDimension:!1}}){super(e,o),this.editData=null,this._init=()=>{var L;const l=Il()[0];if(!l)return;let c=l.getViewports();c=qC(c,this.getToolName());const g=l.getViewport(this.configuration.sourceViewportId);if(!(g!=null&&g.getImageData()))return;const{element:v}=g,{viewUp:_,viewPlaneNormal:T}=g.getCamera(),P=l9(g);let I=(L=this.editData)==null?void 0:L.annotation;const R=g.getFrameOfReferenceUID();if(I)this.editData.annotation.data.handles.points=P;else{const V={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...T],viewUp:[..._],FrameOfReferenceUID:R,referencedImageId:null},data:{handles:{points:P}}};_0(V,v),I=V}this.editData={sourceViewportId:g.id,renderingEngine:l,annotation:I},Un(c.filter(V=>V.id!==g.id).map(V=>V.id))},this.onSetToolEnabled=()=>{this._init()},this.onSetToolConfiguration=()=>{this._init()},this.onCameraModified=i=>{this._init()},this.renderAnnotation=(i,l)=>{var qe,ut;const{viewport:c}=i;if(!this.editData)return!1;const{annotation:g,sourceViewportId:v}=this.editData;let _=!1;const{viewport:T}=yo(v)||{};if(!T||T.id===c.id||!g||!((ut=(qe=g==null?void 0:g.data)==null?void 0:qe.handles)!=null&&ut.points)||this.configuration.enforceSameFrameOfReference&&T.getFrameOfReferenceUID()!==c.getFrameOfReferenceUID())return _;const P={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id},I=g.data.handles.points[0],R=g.data.handles.points[1],L=g.data.handles.points[2],V=g.data.handles.points[3],{focalPoint:U,viewPlaneNormal:j,viewUp:z}=c.getCamera(),{viewPlaneNormal:$}=T.getCamera();if(this.isParallel(j,$))return _;const K=lf(j,U),X=[I,L,R,V],ee=[I,R,L,V];let ne=X,le=Wo(nr(),X[0],X[1]);le=Uo(nr(),le);let ce=Wo(nr(),X[2],X[0]);ce=Uo(nr(),ce);const ge=ro(nr(),le,ce);if(this.isParallel(ge,j))return _;this.isPerpendicular(le,j)&&(ne=ee);const pe=x8(ne[0],ne[1],K),we=x8(ne[2],ne[3],K),{annotationUID:Te}=g;P.annotationUID=Te;const Ve=this.getStyle("lineWidth",P,g),Pe=this.getStyle("lineDash",P,g),je=this.getStyle("color",P,g),Je=this.getStyle("shadow",P,g);let it=[pe,we].map(wt=>c.worldToCanvas(wt));if(this.configuration.showFullDimension&&(it=this.handleFullDimension(c,pe,j,z,we,it)),it.length<2)return _;const Ge=`${Te}-line`;return V0(l,Te,"1",it[0],it[1],{color:je,width:Ve,lineDash:Pe,shadow:Je},Ge),_=!0,_},this.isPerpendicular=(i,l)=>{const c=mi(i,l);return Math.abs(c)$E(T,$)),[j,z]=[o,c].map($=>$E(T,$));g=[[R,L],[L,V],[U,V],[R,U]].map(([$,K])=>this.intersectInfiniteLines($,K,j,z)).filter($=>$&&this.isInBound($,I)).map($=>{const K=yz(T,$);return e.worldToCanvas(K)})}catch(P){console.log(P)}return g}intersectInfiniteLines(e,o,i,l){const[c,g]=e,[v,_]=o,[T,P]=i,[I,R]=l,L=_-g,V=c-v,U=v*g-c*_,j=R-P,z=T-I,$=I*P-T*R;if(Math.abs(L*z-j*V)1-HS}isInBound(e,o){return e[0]>=0&&e[0]<=o[0]&&e[1]>=0&&e[1]<=o[1]}}Rg.toolName="ReferenceLines";const{EPSILON:Db}=ep;class CY extends h4{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}}){super(e,o),this.onSetToolEnabled=()=>{this._init()},this.onSetToolActive=()=>{this._init()},this._init=()=>{const i=this.configuration.sourceImageIds;if(!(i!=null&&i.length)){console.warn("OverlayGridTool: No sourceImageIds provided in configuration");return}const l=Hr("imagePlaneModule",i[0]);if(!l){console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");return}const{frameOfReferenceUID:c}=l,g=la(this.toolGroupId).viewportsInfo;if(!(g!=null&&g.length)){console.warn("OverlayGridTool: No viewports found");return}const v=O0(this.getToolName(),c);if(!(v!=null&&v.length)){const _=i.map(P=>this.calculateImageIdPointSets(P)),T={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:c,referencedImageId:null},data:{viewportData:new Map,pointSets:_}};_0(T,c)}Un(g.map(({viewportId:_})=>_))},this.calculateImageIdPointSets=i=>{const{imagePositionPatient:l,rows:c,columns:g,rowCosines:v,columnCosines:_,rowPixelSpacing:T,columnPixelSpacing:P}=Hr("imagePlaneModule",i),I=[...l],R=[...l],L=[...l],V=[...l];return j0(R,l,_,g*P),j0(L,l,v,c*T),j0(V,L,_,g*P),{pointSet1:[I,L,R,V],pointSet2:[I,R,L,V]}},this.renderAnnotation=(i,l)=>{const c=this.configuration.sourceImageIds;let g=!1;if(!(c!=null&&c.length))return g;const{viewport:v,FrameOfReferenceUID:_}=i;if(v.getImageIds().length<2)return g;const P=O0(this.getToolName(),_);if(!(P!=null&&P.length))return g;const I=P[0],{annotationUID:R}=I,{focalPoint:L,viewPlaneNormal:V}=v.getCamera(),U={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id},j=this.getImageIdNormal(c[0]);if(this.isParallel(V,j))return g;const z=lf(V,L),$=I.data.pointSets,K=I.data.viewportData;for(let X=0;Xv.worldToCanvas(it)),je=`${R}-line`,Je=`${X}`;V0(l,R,Je,Pe[0],Pe[1],{color:Te,width:pe,lineDash:we,shadow:Ve},je)}return g=!0,g},this.initializeViewportData=(i,l)=>(i.set(l,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),i.get(l)),this.isPerpendicular=(i,l)=>{const c=mi(i,l);return Math.abs(c)1-Db}getImageIdNormal(e){const{imageOrientationPatient:o}=Hr("imagePlaneModule",e),i=Ei(o[0],o[1],o[2]),l=Ei(o[3],o[4],o[5]);return ro(nr(),i,l)}}CY.toolName="OverlayGrid";class _Y extends h4{constructor(e={},o={configuration:{opacity:.5}}){super(e,o),this._init=()=>{var v;const i=la(this.toolGroupId).viewportsInfo;if(!(i!=null&&i.length)){console.warn(this.getToolName()+"Tool: No viewports found");return}const l=(v=ha(i[0].renderingEngineId))==null?void 0:v.getViewport(i[0].viewportId);if(!l)return;const c=l.getFrameOfReferenceUID(),g=O0(this.getToolName(),c);if(!(g!=null&&g.length)){const _=new Map;F_e(_,i);const T={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:c,referencedImageId:null},data:{actorsWorldPointsMap:_}};_0(T,c)}Un(i.map(({viewportId:_})=>_))},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=i=>{this._init()},this.renderAnnotation=(i,l)=>{const{viewport:c,FrameOfReferenceUID:g}=i;let v=!1;const _=O0(this.getToolName(),g);if(!(_!=null&&_.length))return v;const T=_[0],{annotationUID:P}=T,I=T.data.actorsWorldPointsMap;xY(I,c);const R=c.getActors(),L=SY(c);return R.forEach(V=>{if(!(V!=null&&V.clippingFilter))return;const U=I.get(V.uid);if(!U||!U.get(L))return;let j=1;const{worldPointsSet:z,color:$}=U.get(L);for(let K=0;Kc.worldToCanvas(ce)),ne={color:$,fillColor:$,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},le=V.uid+"#"+j;dh(l,P,le,ee,ne),j++}}),v=!0,v}}}function F_e(n,e){e.forEach(({viewportId:o,renderingEngineId:i})=>{var c;const l=(c=ha(i))==null?void 0:c.getViewport(o);xY(n,l)})}function xY(n,e){const o=e.getActors(),i=SY(e);o.forEach(l=>{if(!(l!=null&&l.clippingFilter))return;let c=n.get(l.uid);if(c||(c=new Map,n.set(l.uid,c)),!c.get(i)){const g=l.clippingFilter.getOutputData(),v=tY(g);if(!v)return;const _=l.actor.getProperty().getColor(),T=V_e(_);c.set(i,{worldPointsSet:v,color:T})}})}function SY(n){const{viewPlaneNormal:e}=n.getCamera(),o=n.getCurrentImageIdIndex();return`${n.id}-${Bq(e)}-${o}`}function V_e(n){function e(o){let i=Math.floor(o*255).toString(16);return i.length===1&&(i="0"+i),i}return"#"+e(n[0])+e(n[1])+e(n[2])}_Y.toolName="SegmentationIntersection";class Yl extends h4{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}}){super(e,o),this.isDrawing=!1,this.isHandleOutsideImage=!1,this._elementWithCursor=null,this._currentCursorWorldPosition=null,this._currentCanvasPosition=null,this._disableCursorEnabled=!1,this.mouseMoveCallback=i=>{const{detail:l}=i,{element:c,currentPoints:g}=l;this._currentCursorWorldPosition=g.world,this._currentCanvasPosition=g.canvas,this._elementWithCursor=c;const v=this.getActiveAnnotation(c);return v===null?(this.createInitialAnnotation(g.world,c),!1):(this.updateAnnotationPosition(c,v),!1)},this.createInitialAnnotation=(i,l)=>{const c=_n(l);if(!c)throw new Error("No enabled element found");const{viewport:g,renderingEngine:v}=c;this.isDrawing=!0;const _=g.getCamera(),{viewPlaneNormal:T,viewUp:P}=_;if(!T||!P)throw new Error("Camera not found");const I=this.getReferencedImageId(g,i,T,P),R=g.getFrameOfReferenceUID(),L={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...T],viewUp:[...P],FrameOfReferenceUID:R,referencedImageId:I},data:{label:"",handles:{points:[[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(O0(this.getToolName(),l).length>0)return null;if(_0(L,l)===null)return;const j=fi(l,this.getToolName(),!1);Un(j)},this.onCameraModified=i=>{const l=i.detail,{element:c,previousCamera:g,camera:v}=l,T=_n(c).viewport;if(c!==this._elementWithCursor)return;const P=g.focalPoint,I=v.viewPlaneNormal,R=v.focalPoint,L=[0,0,0];if(h0.subtract(R,P,L),L.reduce((j,z)=>j+z,0)===0)return;const V=h0.dot(L,I);if(Math.abs(V)<.01||!this._currentCanvasPosition)return;const U=T.canvasToWorld(this._currentCanvasPosition);this._currentCursorWorldPosition=U,this.updateAnnotationPosition(c,this.getActiveAnnotation(c))},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g,FrameOfReferenceUID:v}=i,_=this._elementWithCursor===g.element;this.configuration.positionSync&&!_&&this.updateViewportImage(g);const{element:T}=g;let P=O0(this.getToolName(),T);if(!(P!=null&&P.length)||(P=this.filterInteractableAnnotationsForElement(T,P),!(P!=null&&P.length)))return c;const I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;RisNaN(Te)))return c;const ne=z.map(Te=>g.worldToCanvas(Te));if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(V))continue;const le={upper:"upper",right:"right",lower:"lower",left:"left"},[ce,ge]=ne[0],pe=_?20:7,we=_?5:7;V0(l,V,le.upper,[ce,ge-(pe/2+we)],[ce,ge-pe/2],{color:ee,lineDash:X,lineWidth:K}),V0(l,V,le.lower,[ce,ge+(pe/2+we)],[ce,ge+pe/2],{color:ee,lineDash:X,lineWidth:K}),V0(l,V,le.right,[ce+(pe/2+we),ge],[ce+pe/2,ge],{color:ee,lineDash:X,lineWidth:K}),V0(l,V,le.left,[ce-(pe/2+we),ge],[ce-pe/2,ge],{color:ee,lineDash:X,lineWidth:K}),c=!0}return c},this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=la(this.toolGroupId).viewportsInfo;if(!e)return;e.map(i=>i2(i.viewportId,i.renderingEngineId)).forEach(i=>{i&&Oi(i.viewport.element)})}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=la(this.toolGroupId).viewportsInfo;if(!e)return;e.map(i=>i2(i.viewportId,i.renderingEngineId)).forEach(i=>{i&&Zi(i.viewport.element)})}getActiveAnnotation(e){const o=O0(this.getToolName(),e);return o.length?o[0]:null}updateAnnotationPosition(e,o){var g,v;const i=this._currentCursorWorldPosition;if(!i||!((v=(g=o.data)==null?void 0:g.handles)!=null&&v.points))return;o.data.handles.points=[[...i]],o.invalidated=!0;const l=fi(e,this.getToolName(),!1);_n(e)&&Un(l)}filterInteractableAnnotationsForElement(e,o){var R,L,V;if(!(o instanceof Array)||o.length===0)return[];const i=o[0],l=(R=_n(e))==null?void 0:R.viewport;if(!l)return[];const c=l.getCamera(),{viewPlaneNormal:g,focalPoint:v}=c;if(!g||!v)return[];const _=(V=(L=i.data)==null?void 0:L.handles)==null?void 0:V.points;if(!(_ instanceof Array)||_.length!==1)return[];const T=_[0],P=lf(g,v);return iv(P,T)isNaN(i)))){if(e instanceof ts){const i=dM(o,e);if(i===null)return;i!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(i)}else if(e instanceof ns){const{focalPoint:i,viewPlaneNormal:l}=e.getCamera();if(!i||!l)return;const c=lf(l,i),g=iv(c,o,!0);if(Math.abs(g)<.5)return;const v=Uo(nr(),Ei(...l)),_=k2(nr(),v,g),T=v2(nr(),Ei(...i),_);{e.setCamera({focalPoint:T});const P=e.getRenderingEngine();P&&P.renderViewport(e.id)}}}}}Yl.toolName="ReferenceCursors";const Ib=[];class TY extends h4{constructor(e={},o={configuration:{viewportId:"",scaleLocation:"bottom"}}){super(e,o),this.editData=null,this._init=()=>{var V,U;const l=Il()[0];if(!l)return;const c=la(this.toolGroupId).viewportsInfo;if(!c)return;const g=c.map(j=>i2(j.viewportId,j.renderingEngineId));let{viewport:v}=g[0];const{FrameOfReferenceUID:_}=g[0];if(this.configuration.viewportId&&g.forEach(j=>{j.viewport.id==this.configuration.viewportId&&(v=j.viewport)}),!v)return;const{viewUp:T,viewPlaneNormal:P}=v.getCamera(),I=l9(v);let R=(V=this.editData)==null?void 0:V.annotation;const L=O0(this.getToolName(),v.element);L.length&&(R=L.filter(j=>j.data.viewportId==v.id)[0]),g.forEach(j=>{const{viewport:z}=j;if(!Ib.includes(z.id)){const $={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...P],viewUp:[...T],FrameOfReferenceUID:_,referencedImageId:null},data:{handles:{points:l9(z)},viewportId:z.id}};Ib.push(z.id),_0($,z.element),R=$}}),(U=this.editData)!=null&&U.annotation&&this.editData.annotation.data.viewportId==v.id&&(this.editData.annotation.data.handles.points=I,this.editData.annotation.data.viewportId=v.id),this.editData={viewport:v,renderingEngine:l,annotation:R}},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=i=>{this.configuration.viewportId=i.detail.viewportId,this._init()},this.computeScaleSize=(i,l,c)=>{const g=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];let v;return c=="top"||c=="bottom"?v=g.filter(_=>_i*.2):v=g.filter(_=>_l*.2),v[0]},this.computeEndScaleTicks=(i,l)=>{const c={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]},g=[[i[1][0]+c[l][0][0],i[1][1]+c[l][0][0]],[i[1][0]+c[l][1][0],i[1][1]+c[l][1][1]]],v=[[i[0][0]+c[l][0][0],i[0][1]+c[l][0][0]],[i[0][0]+c[l][1][0],i[0][1]+c[l][1][1]]];return{endTick1:g,endTick2:v}},this.computeInnerScaleTicks=(i,l,c,g,v)=>{let _;l=="bottom"||l=="top"?_=v[0][0]-g[0][0]:(l=="left"||l=="right")&&(_=v[0][1]-g[0][1]);const T=[],P=[],I=[];let R=i;i>=50&&(R=i/10);const L=_/R;for(let V=0;V{let g,v=Wo(nr(),c[0],c[1]);v=Uo(nr(),v);let _=Wo(nr(),c[2],c[0]);_=Uo(nr(),_);const T={bottom:[c[1],c[2]],top:[c[0],c[3]],right:[c[2],c[3]],left:[c[0],c[1]]},P=v2(nr(),T[l][0],T[l][0]).map(R=>R/2),I=i/2/Math.sqrt(Math.pow(v[0],2)+Math.pow(v[1],2)+Math.pow(v[2],2));return l=="top"||l=="bottom"?g=[Wo(nr(),P,_.map(R=>R*I)),v2(nr(),P,_.map(R=>R*I))]:(l=="left"||l=="right")&&(g=[v2(nr(),P,v.map(R=>R*I)),Wo(nr(),P,v.map(R=>R*I))]),g},this.computeCanvasScaleCoordinates=(i,l,c,g,v)=>{let _;if(v=="top"||v=="bottom"){const T=l[0][0]-l[1][0];_=[[i.width/2-T/2,c.height],[i.width/2+T/2,c.height]]}else if(v=="left"||v=="right"){const T=l[0][1]-l[1][1];_=[[g.width,i.height/2-T/2],[g.width,i.height/2+T/2]]}return _},this.computeScaleBounds=(i,l,c,g)=>{const v=l*Math.min(1e3,i.width),_=c*Math.min(1e3,i.height),T={bottom:[-_,-v],top:[_,v],left:[_,v],right:[-_,-v]},P={bottom:[i.height,i.width],top:[0,i.width],left:[i.height,0],right:[i.height,i.width]};return{height:P[g][0]+T[g][0],width:P[g][1]+T[g][1]}}}renderAnnotation(e,o){if(!this.editData||!this.editData.viewport)return;const i=this.configuration.scaleLocation,{viewport:l}=e,g=O0(this.getToolName(),l.element).filter(Jt=>Jt.data.viewportId==l.id)[0],v=e.viewport.canvas,_=!1;if(!l)return _;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},P={width:v.width/window.devicePixelRatio||1,height:v.height/window.devicePixelRatio||1},I=g.data.handles.points[0],R=g.data.handles.points[1],L=g.data.handles.points[2],V=g.data.handles.points[3],U=[I,L,R,V],j=y2(L,V),z=y2(I,L),$=this.computeScaleBounds(P,.05,.05,i),K=this.computeScaleBounds(P,.05,.05,i),X=this.computeScaleSize(j,z,i),ee=this.computeWorldScaleCoordinates(X,i,U).map(Jt=>l.worldToCanvas(Jt)),ne=this.computeCanvasScaleCoordinates(P,ee,K,$,i),le=this.computeEndScaleTicks(ne,i),{annotationUID:ce}=g;T.annotationUID=ce;const ge=this.getStyle("lineWidth",T,g),pe=this.getStyle("lineDash",T,g),we=this.getStyle("color",T,g),Te=this.getStyle("shadow",T,g),Ve=`${ce}-scaleline`;V0(o,ce,"1",ne[0],ne[1],{color:we,width:ge,lineDash:pe,shadow:Te},Ve);const je=`${ce}-left`;V0(o,ce,"2",le.endTick1[0],le.endTick1[1],{color:we,width:ge,lineDash:pe,shadow:Te},je);const it=`${ce}-right`;V0(o,ce,"3",le.endTick2[0],le.endTick2[1],{color:we,width:ge,lineDash:pe,shadow:Te},it);const Ke={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},qe=[ne[0][0]+Ke[i][0],ne[0][1]+Ke[i][1]],ut=this._getTextLines(X),{tickIds:wt,tickUIDs:Et,tickCoordinates:qt}=this.computeInnerScaleTicks(X,i,ce,le.endTick1,le.endTick2);for(let Jt=0;Jt=50?(o=e/10,i=" cm"):(o=e,i=" mm"),[o.toString().concat(i)]}}TY.toolName="ScaleOverlay";const EY=(n,e,o)=>{var g,v,_;if(!((_=(v=(g=e==null?void 0:e.data)==null?void 0:g.contour)==null?void 0:v.polyline)!=null&&_.length))return;const{polyline:i}=e.data.contour,{length:l}=i;let c=1/0;for(let T=0;Tthis.toolInfo.toolSize||(this.pushOneHandle(v,g,o),c.first===void 0&&(c.first=v),c.last=v)}if(c.first!==void 0&&c.last!==void 0)for(let v=0;v0&&(l.toolSize=Math.min(l.maxToolSize,c))}getMaxSpacing(e){return Math.max(this.toolInfo.toolSize/4,e)}getInsertPosition(e,o,i){let l;const{points:c,element:g,mouseCanvasPoint:v}=i,_=this.toolInfo.toolSize,T=_n(g),{viewport:P}=T,I=P.worldToCanvas(c[e]),R=P.worldToCanvas(c[o]),L=[(I[0]+R[0])/2,(I[1]+R[1])/2],V=f1(v,L);if(V<_){const j={x:(L[0]-v[0])/V,y:(L[1]-v[1])/V};l=[v[0]+_*j.x,v[1]+_*j.y]}else l=L;return P.canvasToWorld(l)}pushOneHandle(e,o,i){const{points:l,mousePoint:c}=i,g=l[e],v=this.directionalVector(c,g),_=j0(nr(),c,v,o);g[0]=_[0],g[1]=_[1],g[2]=_[2]}directionalVector(e,o){return Uo(nr(),[o[0]-e[0],o[1]-e[1],o[2]-e[2]])}calculateMeanConsecutiveDistance(e){if(e.length<2)return 0;let o=0;const i=e.length;for(let l=0;l=0;T--){if(T>=v-1||T<0)continue;const P=T+1,I=f1(i[T],i[P]);if(I>_){const R=this.directionalVector(i[T],i[P]),V=(I-e.meanDistance)/e.meanDistance*e.meanDistance*Kc.CHAIN_PULL_STRENGTH_FACTOR;i[T][0]+=R[0]*V,i[T][1]+=R[1]*V,i[T][2]+=R[2]*V}}for(let T=g+1;T=v||T<=0)continue;const P=T-1,I=f1(i[T],i[P]);if(I>_){const R=this.directionalVector(i[T],i[P]),V=(I-e.meanDistance)/e.meanDistance*e.meanDistance*Kc.CHAIN_PULL_STRENGTH_FACTOR;i[T][0]+=R[0]*V,i[T][1]+=R[1]*V,i[T][2]+=R[2]*V}}}};Kc.shapeName="Circle",Kc.CHAIN_MAINTENANCE_ITERATIONS=3,Kc.CHAIN_PULL_STRENGTH_FACTOR=.3,Kc.MAX_INTER_DISTANCE_FACTOR=1.2;let wm=Kc;class L8 extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{minSpacing:1,referencedToolNames:["PlanarFreehandROI","PlanarFreehandContourSegmentationTool"],toolShape:"circle",referencedToolName:"PlanarFreehandROI",updateCursorSize:"dynamic"}}){super(e,o),this.registeredShapes=new Map,this.isActive=!1,this.commonData={activeAnnotationUID:null,viewportIdsToRender:[],isEditingOpenContour:!1,canvasLocation:void 0},this.preMouseDownCallback=i=>{const l=i.detail,c=l.element;if(this.configureToolSize(i),this.selectFreehandTool(l),this.commonData.activeAnnotationUID!==null)return this.isActive=!0,Oi(c),this.activateModify(c),!0},this.mouseMoveCallback=i=>{this.mode===ao.Active?(this.configureToolSize(i),this.updateCursor(i)):this.commonData.canvasLocation=void 0},this.endCallback=i=>{const l=i.detail,{element:c}=l,g=this.configuration,v=_n(c);this.isActive=!1,this.deactivateModify(c),Zi(c);const{renderingEngineId:_,viewportId:T}=v,I=Ss(T,_).getToolInstance(g.referencedToolName),L=this.filterSculptableAnnotationsForElement(c).find(V=>V.annotationUID===this.commonData.activeAnnotationUID);I.configuration.calculateStats&&(L.invalidated=!0),C0(L,c,n0.HandlesUpdated)},this.dragCallback=i=>{const l=i.detail,c=l.element;this.updateCursor(i);const g=this.filterSculptableAnnotationsForElement(c),v=g.find(T=>T.annotationUID===this.commonData.activeAnnotationUID);if(!(g!=null&&g.length)||!this.isActive)return;const _=v.data.contour.polyline;this.sculpt(l,_)},this.registerShapes(wm.shapeName,wm),this.setToolShape(this.configuration.toolShape)}registerShapes(e,o){const i=new o;this.registeredShapes.set(e,i)}sculpt(e,o){const i=this.configuration,l=e.element,c=_n(l),{viewport:g}=c,v=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,deltaWorld:e.deltaPoints.world,points:o,maxSpacing:v.getMaxSpacing(i.minSpacing),element:l};const _=v.pushHandles(g,this.sculptData);_.first!==void 0&&this.insertNewHandles(_)}interpolatePointsWithinMaxSpacing(e,o,i,l){const{element:c}=this.sculptData,g=_n(c),{viewport:v}=g,_=Ob(e+1,o.length),T=v.worldToCanvas(o[e]),P=v.worldToCanvas(o[_]);f1(T,P)>l&&i.push(e)}updateCursor(e){const o=e.detail,i=o.element,l=_n(i),{renderingEngine:c,viewport:g}=l;this.commonData.viewportIdsToRender=[g.id];const v=this.filterSculptableAnnotationsForElement(i);if(!(v!=null&&v.length))return;const _=v.find(T=>T.annotationUID===this.commonData.activeAnnotationUID);if(this.commonData.canvasLocation=o.currentPoints.canvas,this.isActive)_.highlighted=!0;else{const T=this.registeredShapes.get(this.selectedShape),P=o.currentPoints.canvas;this.configuration.updateCursorSize==="dynamic"&&T.updateToolSize(P,g,_)}Un(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const o=this.configuration,i=_n(e),{renderingEngineId:l,viewportId:c}=i,g=[],_=Ss(c,l).getToolInstance(o.referencedToolName);return o.referencedToolNames.forEach(T=>{const P=O0(T,e);P&&g.push(...P)}),_.filterInteractableAnnotationsForElement(e,g)}configureToolSize(e){this.registeredShapes.get(this.selectedShape).configureToolSize(e)}insertNewHandles(e){const o=this.findNewHandleIndices(e);let i=0;for(let l=0;l<(o==null?void 0:o.length);l++){const c=o[l]+1+i;this.insertHandleRadially(c),i++}}findNewHandleIndices(e){const{points:o,maxSpacing:i}=this.sculptData,l=[];for(let c=e.first;c<=e.last;c++)this.interpolatePointsWithinMaxSpacing(c,o,l,i);return l}insertHandleRadially(e){const{points:o}=this.sculptData;if(e>o.length-1&&this.commonData.isEditingOpenContour)return;const i=this.registeredShapes.get(this.selectedShape),l=e-1,c=Ob(e,o.length),v=i.getInsertPosition(l,c,this.sculptData);o.splice(e,0,v)}selectFreehandTool(e){const o=this.getClosestFreehandToolOnElement(e);o!==void 0&&(this.commonData.activeAnnotationUID=o)}getClosestFreehandToolOnElement(e){const{element:o}=e,i=_n(o),{viewport:l}=i,c=this.configuration,g=this.filterSculptableAnnotationsForElement(o);if(!(g!=null&&g.length))return;const v=e.currentPoints.canvas,_={distance:1/0,toolIndex:void 0,annotationUID:void 0};for(let T=0;T<(g==null?void 0:g.length);T++){if(g[T].isLocked||!g[T].isVisible)continue;const P=EY(l,g[T],v);P!==-1&&P<_.distance&&(_.distance=P,_.toolIndex=T,_.annotationUID=g[T].annotationUID)}return this.commonData.isEditingOpenContour=!g[_.toolIndex].data.contour.closed,c.referencedToolName=g[_.toolIndex].metadata.toolName,_.annotationUID}activateModify(e){e.addEventListener(Xe.MOUSE_UP,this.endCallback),e.addEventListener(Xe.MOUSE_CLICK,this.endCallback),e.addEventListener(Xe.MOUSE_DRAG,this.dragCallback),e.addEventListener(Xe.TOUCH_TAP,this.endCallback),e.addEventListener(Xe.TOUCH_END,this.endCallback),e.addEventListener(Xe.TOUCH_DRAG,this.dragCallback)}deactivateModify(e){e.removeEventListener(Xe.MOUSE_UP,this.endCallback),e.removeEventListener(Xe.MOUSE_CLICK,this.endCallback),e.removeEventListener(Xe.MOUSE_DRAG,this.dragCallback),e.removeEventListener(Xe.TOUCH_TAP,this.endCallback),e.removeEventListener(Xe.TOUCH_END,this.endCallback),e.removeEventListener(Xe.TOUCH_DRAG,this.dragCallback)}setToolShape(e){this.selectedShape=this.registeredShapes.get(e)??wm.shapeName}renderAnnotation(e,o){const{viewport:i}=e,{element:l}=i,c=this.commonData.viewportIdsToRender;if(!this.commonData.canvasLocation||this.mode!==ao.Active||!c.includes(i.id))return;const g=this.filterSculptableAnnotationsForElement(l);if(!(g!=null&&g.length))return;const v={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};let _=D8("color",v,lc.Default,this.mode);this.isActive&&(_=D8("color",v,lc.Highlighted,this.mode)),this.registeredShapes.get(this.selectedShape).renderShape(o,this.commonData.canvasLocation,{color:_})}}const Ob=(n,e)=>(n+e)%e;L8.toolName="SculptorTool";const U_e={Z:[0,0,1]};class DY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:U_e.Z,rotateIncrementDegrees:30}}){super(e,o)}mouseWheelCallback(e){const{element:o,wheel:i}=e.detail,l=_n(o),{viewport:c}=l,{direction:g,rotateIncrementDegrees:v}=this.configuration,_=c.getCamera(),{viewUp:T,position:P,focalPoint:I}=_,{direction:R}=i,[L,V,U]=I,[j,z,$]=g,K=R*(v*Math.PI)/180,X=[0,0,0],ee=[0,0,0],ne=[0,0,0],le=zi(new Float32Array(16));Ns(le,le,[L,V,U]),a1(le,le,K,[j,z,$]),Ns(le,le,[-L,-V,-U]),g0(X,P,le),g0(ee,I,le),zi(le),a1(le,le,K,[j,z,$]),g0(ne,T,le),c.setCamera({position:X,viewUp:ne,focalPoint:ee}),c.render()}}DY.toolName="VolumeRotateMouseWheel";const Mm=class Mm extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:B_e,changeTextCallback:G_e,preventHandleOutsideImage:!1}}){super(e,o),this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{annotationUID:T}=l,P=l.data.handles.points[0],I=_.worldToCanvas(P);if(ds(c,I)=X&&c[0]<=X+j.width&&c[1]>=ee&&c[1]<=ee+j.height},this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;Oi(g),this.isDrawing=!0;const P=T.getCamera(),{viewPlaneNormal:I,viewUp:R}=P,L=this.getReferencedImageId(T,v,I,R),V=T.getFrameOfReferenceUID(),U={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...I],viewUp:[...R],FrameOfReferenceUID:V,referencedImageId:L,...T.getViewReference({points:[v]})},data:{text:"",handles:{points:[[...v],[...v]]},label:""}};_0(U,g);const j=fi(g,this.getToolName());return this.editData={annotation:U,newAnnotation:!0,viewportIdsToRender:j,offset:[0,0,0]},i.preventDefault(),Un(j),this.configuration.getTextCallback(z=>{if(!z){A0(U.annotationUID),Un(j),this.isDrawing=!1;return}Zi(g),U.data.text=z,lo(U),Un(j)}),this.createMemo(g,U,{newAnnotation:!0}),U},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g,currentPoints:v}=c;l.highlighted=!0;const _=fi(g,this.getToolName());let T=[0,0,0];if(v&&v.world){const P=v.world,I=l.data.handles.points[0];T=[I[0]-P[0],I[1]-P[1],I[2]-P[2]]}this.editData={annotation:l,viewportIdsToRender:_,offset:T},this._activateModify(g),Oi(g),Un(_),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_}=this.editData;this._deactivateDraw(c),this._deactivateModify(c),Zi(c),_&&this.createMemo(c,g,{newAnnotation:_}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g)},this._dragCallback=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,{annotation:_,viewportIdsToRender:T,offset:P}=this.editData;P?_.data.handles.points[0]=[v[0]+P[0],v[1]+P[1],v[2]+P[2]]:_.data.handles.points[0]=[...v],_.invalidated=!0,Un(T),C0(_,g,n0.LabelChange)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length))return c;_=this.filterInteractableAnnotationsForElement(v,_);const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I,V=L.handles.points[0];T.annotationUID=R;const U=g.worldToCanvas(V);if(c=!0,!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(R)||!L.text)continue;const j=this.getLinkedTextBoxStyle(T,I);e4(l,R,"1",[L.text],U,{...j,padding:0})}return c}}handleSelectedCallback(e,o,i,l){}_doneChangingTextCallback(e,o,i){o.data.text=i;const l=fi(e,this.getToolName());Un(l),C0(o,e)}_isInsideVolume(e,o,i){return Qo(e,i)&&Qo(o,i)}};Mm.toolName="Label",Mm.hydrate=(e,o,i,l)=>{const c=yo(e);if(!c)return;const{viewport:g}=c,v=g.getFrameOfReferenceUID(),{viewPlaneNormal:_,viewUp:T}=g.getCamera(),P=new Mm,I=P.getReferencedImageId(g,o,_,T),R={annotationUID:(l==null?void 0:l.annotationUID)||H0(),data:{text:i,handles:{points:[o]}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:P.getToolName(),viewPlaneNormal:_,FrameOfReferenceUID:v,referencedImageId:I,...l}};_0(R,g.element),Un([g.id])};let L9=Mm;function B_e(n){return n(prompt("Enter your annotation:"))}function G_e(n,e,o){return o(prompt("Enter your annotation:"))}L9.toolName="Label";const{transformWorldToIndex:Mb}=J0,G6=class G6 extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:W_e,actions:{undo:{method:"undo",bindings:[{key:"z"}]},redo:{method:"redo",bindings:[{key:"y"}]}}}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;Oi(g),this.isDrawing=!0;const{viewPlaneNormal:P,viewUp:I,position:R}=T.getCamera(),L=this.getReferencedImageId(T,v,P,I),V={highlighted:!0,invalidated:!0,metadata:{...T.getViewReference({points:[v]}),toolName:this.getToolName(),referencedImageId:L,viewUp:I,cameraPosition:R},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};_0(V,g);const U=fi(g,this.getToolName());return this.editData={annotation:V,viewportIdsToRender:U,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(U),V},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I]=T.handles.points,R=_.worldToCanvas(P),L=_.worldToCanvas(I),V={start:{x:R[0],y:R[1]},end:{x:L[0],y:L[1]}};return za([V.start.x,V.start.y],[V.end.x,V.end.y],[c[0],c[1]])<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g),Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;_&&!T||(P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),this.doneEditMemo(),_&&lo(g),this.editData=null,this.isDrawing=!1)},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData,{data:I}=g;if(this.createMemo(c,g,{newAnnotation:P}),T){const{deltaPoints:R}=l,L=R.world,{textBox:V}=I.handles,{worldPosition:U}=V;U[0]+=L[0],U[1]+=L[1],U[2]+=L[2],V.hasMoved=!0}else if(_===void 0){const{deltaPoints:R}=l,L=R.world;I.handles.points.forEach(U=>{U[0]+=L[0],U[1]+=L[1],U[2]+=L[2]}),g.invalidated=!0}else{const{currentPoints:R}=l,L=R.world;I.handles.points[_]=[...L],g.invalidated=!0}this.editData.hasMoved=!0,Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j,activeHandleIndex:z}=U.handles;I.annotationUID=V;const{color:$,lineWidth:K,lineDash:X,shadow:ee}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),ne=j.map(Ke=>g.worldToCanvas(Ke));if(!U.cachedStats[T]||U.cachedStats[T].unit==null?(U.cachedStats[T]={length:null,unit:null},this._calculateCachedStats(L,P,i)):L.invalidated&&this._throttledCalculateCachedStats(L,P,i),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let le;if(!Ys(V))continue;!da(V)&&!this.editData&&z!==null&&(le=[ne[z]]),le&&$o(l,V,"0",ne,{color:$,lineDash:X,lineWidth:K});const ce=`${V}-line`;if(V0(l,V,"1",ne[0],ne[1],{color:$,width:K,lineDash:X,shadow:ee},ce),c=!0,!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;const pe=this.getLinkedTextBoxStyle(I,L);if(!pe.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const we=this.configuration.getTextLines(U,T);if(!U.handles.textBox.hasMoved){const Ke=Pl(ne);U.handles.textBox.worldPosition=g.canvasToWorld(Ke)}const Te=g.worldToCanvas(U.handles.textBox.worldPosition),Pe=A2(l,V,"1",we,Te,ne,{},pe),{x:je,y:Je,width:it,height:Ge}=Pe;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([je,Je]),topRight:g.canvasToWorld([je+it,Je]),bottomLeft:g.canvasToWorld([je,Je+Ge]),bottomRight:g.canvasToWorld([je+it,Je+Ge])}}return c},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;let v=!1,_;i.worldPosition?v=!0:_=g.handles.points.findIndex(P=>P===i);const T=fi(c,this.getToolName());this.editData={annotation:o,viewportIdsToRender:T,handleIndex:_,movingTextBox:v},this._activateModify(c),Oi(c),Un(T),e.preventDefault()}_calculateLength(e,o){const i=e[0]-o[0],l=e[1]-o[1],c=e[2]-o[2];return Math.sqrt(i*i+l*l+c*c)}_calculateCachedStats(e,o,i){const l=e.data,{element:c}=i.viewport,g=l.handles.points[0],v=l.handles.points[1],{cachedStats:_}=l,T=Object.keys(_);for(let I=0;I{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=G6.hydrateBase(G6,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let r4=G6;function W_e(n,e){const o=n.cachedStats[e],{length:i,unit:l}=o;return i==null||isNaN(i)?void 0:[`${E0(i)} ${l}`]}const{transformWorldToIndex:Pb}=J0,QP=class QP extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:$_e}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;Oi(g),this.isDrawing=!0;const{viewPlaneNormal:I,viewUp:R,position:L}=T.getCamera(),V=this.getReferencedImageId(T,v,I,R),U={highlighted:!0,invalidated:!0,metadata:{...T.getViewReference({points:[v]}),toolName:this.getToolName(),referencedImageId:V,viewUp:R,cameraPosition:L},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};_0(U,g);const j=fi(g,this.getToolName());return this.editData={annotation:U,viewportIdsToRender:j,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(j),U},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I]=T.handles.points,R=_.worldToCanvas(P),L=_.worldToCanvas(I),V={start:{x:R[0],y:R[1]},end:{x:L[0],y:L[1]}};return za([V.start.x,V.start.y],[V.end.x,V.end.y],[c[0],c[1]])<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g),_n(g),Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c),{renderingEngine:R}=I;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g),this.editData=null,this.isDrawing=!1},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T}=this.editData,{data:P}=g;if(T){const{deltaPoints:L}=l,V=L.world,{textBox:U}=P.handles,{worldPosition:j}=U;j[0]+=V[0],j[1]+=V[1],j[2]+=V[2],U.hasMoved=!0}else if(_===void 0){const{deltaPoints:L}=l,V=L.world;P.handles.points.forEach(j=>{j[0]+=V[0],j[1]+=V[1],j[2]+=V[2]}),g.invalidated=!0}else{const{currentPoints:L}=l,V=L.world;P.handles.points[_]=[...V],g.invalidated=!0}this.editData.hasMoved=!0;const I=_n(c),{renderingEngine:R}=I;Un(v)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,_n(i),Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j,activeHandleIndex:z}=U.handles;I.annotationUID=V;const{color:$,lineWidth:K,lineDash:X,shadow:ee}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),ne=j.map(Ge=>g.worldToCanvas(Ge));let le;if(!U.cachedStats[T]||U.cachedStats[T].unit==null?(U.cachedStats[T]={length:null,unit:null},this._calculateCachedStats(L,P,i)):L.invalidated&&this._throttledCalculateCachedStats(L,P,i),!Ys(V))continue;if(!da(V)&&!this.editData&&z!==null&&(le=[ne[z]]),le&&$o(l,V,"0",ne,{color:$,lineDash:X,lineWidth:K}),pK(l,V,"0",ne[0],ne[1],{color:$,width:K,lineDash:X}),c=!0,!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;const ge=this.getLinkedTextBoxStyle(I,L);if(!ge.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const pe=this.configuration.getTextLines(U,T);if(!U.handles.textBox.hasMoved){const Ge=Pl(ne);U.handles.textBox.worldPosition=g.canvasToWorld(Ge)}const we=g.worldToCanvas(U.handles.textBox.worldPosition),Ve=A2(l,V,"1",pe,we,ne,{},ge),{x:Pe,y:je,width:Je,height:it}=Ve;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Pe,je]),topRight:g.canvasToWorld([Pe+Je,je]),bottomLeft:g.canvasToWorld([Pe,je+it]),bottomRight:g.canvasToWorld([Pe+Je,je+it])}}return c},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;let v=!1,_;i.worldPosition?v=!0:_=g.handles.points.findIndex(R=>R===i);const T=fi(c,this.getToolName());this.editData={annotation:o,viewportIdsToRender:T,handleIndex:_,movingTextBox:v},this._activateModify(c),Oi(c);const P=_n(c),{renderingEngine:I}=P;Un(T),e.preventDefault()}_calculateHeight(e,o){const i=o[0]-e[0],l=o[1]-e[1],c=o[2]-e[2];if(i==0)return l!=0?Math.abs(c):0;if(l==0)return Math.abs(c);if(c==0)return Math.abs(l)}_calculateCachedStats(e,o,i){const l=e.data,{element:c}=i.viewport,g=l.handles.points[0],v=l.handles.points[1],{cachedStats:_}=l,T=Object.keys(_);for(let I=0;I{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;this.isDrawing=!0;const P=this.constructor.createAnnotationForViewport(T,{data:{handles:{points:[[...v]]}}});_0(P,g);const I=fi(g,this.getToolName());return this.editData={annotation:P,newAnnotation:!0,viewportIdsToRender:I},this._activateModify(g),Oi(g),i.preventDefault(),Un(I),P},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_}=this.editData,{viewportId:T,renderingEngine:P}=_n(c);this.eventDispatchDetail={viewportId:T,renderingEngineId:P.id},this._deactivateModify(c),Zi(c),_&&this.createMemo(c,g,{newAnnotation:_}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g)},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,{annotation:_,viewportIdsToRender:T,newAnnotation:P}=this.editData,{data:I}=_;this.createMemo(g,_,{newAnnotation:P}),I.handles.points[0]=[...v],_.invalidated=!0,Un(T)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],V=L.annotationUID,U=L.data,j=U.handles.points[0],z=g.worldToCanvas(j);I.annotationUID=V;const{color:$,lineWidth:K}=this.getAnnotationStyle({annotation:L,styleSpecifier:I});if(U.cachedStats||(U.cachedStats={}),!U.cachedStats[T]||U.cachedStats[T].value===null)U.cachedStats[T]={Modality:null,index:null,value:null},this._calculateCachedStats(L,P,i,n0.StatsUpdated);else if(L.invalidated&&(this._calculateCachedStats(L,P,i),g instanceof ns)){const{referencedImageId:le}=L.metadata;for(const ce in U.cachedStats)ce.startsWith("imageId")&&P.getStackViewports().find(we=>{const Te=Bs(le),Ve=we.hasImageURI(Te),Pe=Bs(we.getCurrentImageId());return Ve&&Pe!==Te})&&delete U.cachedStats[ce]}if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(V))continue;$o(l,V,"0",[z],{color:$,lineWidth:K,handleRadius:this.configuration.handleRadius}),c=!0;const ee=this.getLinkedTextBoxStyle(I,L);if(!ee.visibility)continue;const ne=this.configuration.getTextLines(U,T);if(ne){const le=[z[0]+this.configuration.textCanvasOffset.x,z[1]+this.configuration.textCanvasOffset.y];e4(l,V,"0",ne,[le[0],le[1]],ee)}}return c}}isPointNearTool(e,o,i,l){const c=_n(e),{viewport:g}=c,{data:v}=o,_=v.handles.points[0],T=g.worldToCanvas(_);return ds(i,T)we!==null);le=pe?ge.values:le,ce=pe?ge.units:"raw"}else ce=Ah(ee,e.metadata.referencedImageId,U);P[V]={index:ne,value:le,Modality:ee,modalityUnit:ce}}else this.isHandleOutsideImage=!0,P[V]={index:ne,Modality:ee}}const R=e.invalidated;return e.invalidated=!1,R&&C0(e,_,l),P}};md.toolName="Probe",md.probeDefaults={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:z_e,handleRadius:"6",textCanvasOffset:{x:6,y:-6}}},md.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,viewUp:_,instance:T,viewport:P}=md.hydrateBase(md,l,o,i),{toolInstance:I,...R}=i||{},L={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:T.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...R}};_0(L,P.element),Un([P.id])};let Dh=md;function z_e(n,e){const o=n.cachedStats[e],{index:i,value:l,modalityUnit:c}=o;if(l===void 0||!i)return;const g=[];if(g.push(`(${i[0]}, ${i[1]}, ${i[2]})`),l instanceof Array&&c instanceof Array)for(let v=0;v{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:T.getFrameOfReferenceUID(),referencedImageId:V},data:{label:"",handles:{points:[[...v]]},cachedStats:{}}},j=fi(g,this.getToolName());return this.editData={annotation:U,newAnnotation:!0,viewportIdsToRender:j},this._activateModify(g),Oi(g),i.preventDefault(),Un(j),U},this.postTouchStartCallback=i=>this.postMouseDownCallback(i),this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i;if(!this.editData)return c;const v=this.filterInteractableAnnotationsForElement(g.element,[this.editData.annotation]);if(!(v!=null&&v.length))return c;const _=this.getTargetId(g),T=g.getRenderingEngine(),P={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id},I=this.editData.annotation,R=I.annotationUID,L=I.data,V=L.handles.points[0],U=g.worldToCanvas(V);P.annotationUID=R;const{color:j}=this.getAnnotationStyle({annotation:I,styleSpecifier:P});if(!L.cachedStats[_]||L.cachedStats[_].value===null?(L.cachedStats[_]={Modality:null,index:null,value:null},this._calculateCachedStats(I,T,i)):I.invalidated&&this._calculateCachedStats(I,T,i),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;$o(l,R,"0",[U],{color:j}),c=!0;const $=this.configuration.getTextLines(L,_);if($){const K=[U[0]+6,U[1]-6];e4(l,R,"0",$,[K[0],K[1]],this.getLinkedTextBoxStyle(P,I))}return c}}};eR.toolName="DragProbe";let mD=eR;function H_e(n,e){const o=n.cachedStats[e],{index:i,value:l,modalityUnit:c}=o;if(l===void 0)return;const g=[];return g.push(`(${i[0]}, ${i[1]}, ${i[2]})`),g.push(`${l.toFixed(2)} ${c}`),g}const{transformWorldToIndex:Rb}=J0,W6=class W6 extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:K_e,statsCalculator:mf}}){super(e,o),this.isHandleOutsideImage=!1,this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world;c.canvas;const _=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V,...T.getViewReference({points:[v]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null},cachedStats:{},initialRotation:T.getRotation()}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,centerWorld:v,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{points:P}=T.handles,I=P.map(ce=>_.worldToCanvas(ce)),[R,L,V,U]=I,j=Math.hypot(V[0]-U[0],V[1]-U[1]),z=Math.hypot(L[0]-R[0],L[1]-R[1]),$=Math.atan2(V[1]-U[1],V[0]-U[0]),K=[(V[0]+U[0])/2,(L[1]+R[1])/2],X={center:K,xRadius:(j-g)/2,yRadius:(z-g)/2,angle:$},ee={center:K,xRadius:(j+g)/2,yRadius:(z+g)/2,angle:$},ne=this._pointInEllipseCanvas(X,c);return!!(this._pointInEllipseCanvas(ee,c)&&!ne)},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},Oi(g),this._activateModify(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;let T=!1,P,I,R,L,V,U;if(c.worldPosition)T=!0;else{const{points:z}=_.handles,{viewport:$}=_n(v),{worldToCanvas:K,canvasToWorld:X}=$;P=z.findIndex(ne=>ne===c);const ee=z.map(K);U=ee[P],L=Math.abs(ee[2][0]-ee[3][0]),V=Math.abs(ee[0][1]-ee[1][1]),I=[(ee[2][0]+ee[3][0])/2,(ee[0][1]+ee[1][1])/2],R=X(I)}const j=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:j,handleIndex:P,canvasWidth:L,canvasHeight:V,centerWorld:R,originalHandleCanvas:U,movingTextBox:T},this._activateModify(v),Oi(v),Un(j),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;_&&!T||(this.doneEditMemo(),g.highlighted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g))},this._dragDrawCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{currentPoints:g}=l,v=g.canvas,_=_n(c),{viewport:T}=_,{canvasToWorld:P}=T,{annotation:I,viewportIdsToRender:R,centerWorld:L,newAnnotation:V}=this.editData;this.createMemo(c,I,{newAnnotation:V});const U=T.worldToCanvas(L),{data:j}=I,z=Math.abs(v[0]-U[0]),$=Math.abs(v[1]-U[1]),K=[U[0],U[1]-$],X=[U[0],U[1]+$],ee=[U[0]-z,U[1]],ne=[U[0]+z,U[1]];j.handles.points=[P(K),P(X),P(ee),P(ne)],I.invalidated=!0,this.editData.hasMoved=!0,Un(R),C0(I,c,n0.HandlesUpdated)},this._dragModifyCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(T){const{deltaPoints:V}=l,U=V.world,{textBox:j}=I.handles,{worldPosition:z}=j;z[0]+=U[0],z[1]+=U[1],z[2]+=U[2],j.hasMoved=!0}else if(_===void 0){const{deltaPoints:V}=l,U=V.world;I.handles.points.forEach(z=>{z[0]+=U[0],z[1]+=U[1],z[2]+=U[2]}),g.invalidated=!0}else this._dragHandle(i),g.invalidated=!0;const R=_n(c),{renderingEngine:L}=R;Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this._dragHandle=i=>{const l=i.detail,{element:c}=l,{viewport:g}=_n(c),{canvasToWorld:v,worldToCanvas:_}=g,{annotation:T,canvasWidth:P,canvasHeight:I,handleIndex:R,centerWorld:L,originalHandleCanvas:V}=this.editData,U=g.worldToCanvas(L),{data:j}=T,{points:z}=j.handles,{currentPoints:$}=l,K=$.canvas;if(R===0||R===1){const X=Math.abs(K[1]-U[1]),ee=[U[0],U[1]-X],ne=[U[0],U[1]+X];z[0]=v(ee),z[1]=v(ne);const le=K[0]-V[0],ce=P/2+le,ge=[U[0]-ce,U[1]],pe=[U[0]+ce,U[1]];z[2]=v(ge),z[3]=v(pe)}else{const X=Math.abs(K[0]-U[0]),ee=[U[0]-X,U[1]],ne=[U[0]+X,U[1]];z[2]=v(ee),z[3]=v(ne);const le=K[1]-V[1],ce=I/2+le,ge=[U[0],U[1]-ce],pe=[U[0],U[1]+ce];z[0]=v(ge),z[1]=v(pe)}},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{handles:j}=U,{points:z,activeHandleIndex:$}=j;I.annotationUID=V;const{color:K,lineWidth:X,lineDash:ee}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),ne=z.map(wt=>g.worldToCanvas(wt)),le=v9(ne),{centerPointRadius:ce}=this.configuration;if(!U.cachedStats[T]||U.cachedStats[T].areaUnit==null)U.cachedStats[T]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(L,g,P);else if(L.invalidated&&(this._throttledCalculateCachedStats(L,g,P,i),g instanceof ns)){const{referencedImageId:wt}=L.metadata;for(const Et in U.cachedStats)Et.startsWith("imageId")&&P.getStackViewports().find(Jt=>{const Dn=Bs(wt),Nn=Jt.hasImageURI(Dn),xn=Bs(Jt.getCurrentImageId());return Nn&&xn!==Dn})&&delete U.cachedStats[Et]}if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let ge;if(!Ys(V))continue;!da(V)&&!this.editData&&$!==null&&(ge=[ne[$]]),ge&&$o(l,V,"0",ge,{color:K});const pe=`${V}-ellipse`,we="0";if(qM(l,V,we,ne,{color:K,lineDash:ee,lineWidth:X},pe),ce>0&&Math.min(Math.abs(le[0][0]-le[1][0])/2,Math.abs(le[0][1]-le[1][1])/2)>3*ce){const Et=this._getCanvasEllipseCenter(ne);J1(l,V,`${we}-center`,Et,ce,{color:K,lineDash:ee,lineWidth:X})}c=!0;const Te=this.getLinkedTextBoxStyle(I,L);if(!Te.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const Ve=this.configuration.getTextLines(U,T);if(!Ve||Ve.length===0)continue;let Pe;U.handles.textBox.hasMoved||(Pe=Pl(le),U.handles.textBox.worldPosition=g.canvasToWorld(Pe));const je=g.worldToCanvas(U.handles.textBox.worldPosition),it=A2(l,V,"1",Ve,je,ne,{},Te),{x:Ge,y:Ke,width:qe,height:ut}=it;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Ge,Ke]),topRight:g.canvasToWorld([Ge+qe,Ke]),bottomLeft:g.canvasToWorld([Ge,Ke+ut]),bottomRight:g.canvasToWorld([Ge+qe,Ke+ut])}}return c},this._calculateCachedStats=(i,l,c)=>{var ee,ne,le,ce;if(!this.configuration.calculateStats)return;const g=i.data,{element:v}=l,{points:_}=g.handles,T=_.map(ge=>l.worldToCanvas(ge)),{viewPlaneNormal:P,viewUp:I}=l.getCamera(),[R,L]=v9(T),V=l.canvasToWorld(R),U=l.canvasToWorld(L),{cachedStats:j}=g,z=Object.keys(j),$=V,K=U;for(let ge=0;gezC(Jt,Pn,{fast:!0}),returnPoints:this.configuration.storePointData});const mn=this.configuration.statsCalculator.getStatistics();j[pe]={Modality:Pe.Modality,area:st,mean:(ee=mn.mean)==null?void 0:ee.value,max:(ne=mn.max)==null?void 0:ne.value,min:(le=mn.min)==null?void 0:le.value,stdDev:(ce=mn.stdDev)==null?void 0:ce.value,statsArray:mn.array,pointsInShape:Pt,isEmptyArea:xn,areaUnit:ct,modalityUnit:St}}const X=i.invalidated;return i.invalidated=!1,X&&C0(i,v,n0.StatsUpdated),j},this._isInsideVolume=(i,l,c)=>Qo(i,c)&&Qo(l,c),this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,o){const{xRadius:i,yRadius:l,center:c,angle:g}=e,v=wie(a0(),o,c,-g);if(i<=0||l<=0)return!1;const _=[v[0]-c[0],v[1]-c[1]];return _[0]*_[0]/(i*i)+_[1]*_[1]/(l*l)<=1}_getCanvasEllipseCenter(e){const[o,i,l,c]=e,g=[l[0],i[1]],v=[c[0],o[1]];return[(g[0]+v[0])/2,(g[1]+v[1])/2]}};W6.toolName="EllipticalROI",W6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=W6.hydrateBase(W6,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let Jg=W6;function K_e(n,e){const o=n.cachedStats[e],{area:i,mean:l,stdDev:c,max:g,isEmptyArea:v,areaUnit:_,modalityUnit:T,min:P}=o,I=[];if(bs(i)){const R=v?"Area: Oblique not supported":`Area: ${E0(i)} ${_}`;I.push(R)}return bs(l)&&I.push(`Mean: ${E0(l)} ${T}`),bs(g)&&I.push(`Max: ${E0(g)} ${T}`),bs(P)&&I.push(`Min: ${E0(P)} ${T}`),bs(c)&&I.push(`Std Dev: ${E0(c)} ${T}`),I}const{transformWorldToIndex:Ab}=J0,$6=class $6 extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:q_e,statsCalculator:mf}}){super(e,o),this.isHandleOutsideImage=!1,this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V,...T.getViewReference({points:[v]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...v],[...v]],activeHandleIndex:null},cachedStats:{}}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{points:P}=T.handles,I=P.map(V=>_.worldToCanvas(V)),R=Gd(I),L=Gd([I[0],c]);return Math.abs(L-R){const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},Oi(g),this._activateModify(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;let T=!1,P;if(c.worldPosition)T=!0;else{const{points:V}=_.handles;P=V.findIndex(U=>U===c)}const I=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P,movingTextBox:T},this._activateModify(v),Oi(v);const R=_n(v),{renderingEngine:L}=R;Un(I),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;this.doneEditMemo(),g.highlighted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const{renderingEngine:I}=_n(c);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g)},this._dragDrawCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{currentPoints:g}=l,v=g.canvas,_=_n(c),{viewport:T}=_,{canvasToWorld:P}=T,{annotation:I,viewportIdsToRender:R,newAnnotation:L}=this.editData;this.createMemo(c,I,{newAnnotation:L});const{data:V}=I;V.handles.points=[V.handles.points[0],P(v)],I.invalidated=!0,this.editData.hasMoved=!0,Un(R),C0(I,c,n0.HandlesUpdated)},this._dragModifyCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(T){const{deltaPoints:V}=l,U=V.world,{textBox:j}=I.handles,{worldPosition:z}=j;z[0]+=U[0],z[1]+=U[1],z[2]+=U[2],j.hasMoved=!0}else if(_===void 0){const{deltaPoints:V}=l,U=V.world;I.handles.points.forEach(z=>{z[0]+=U[0],z[1]+=U[1],z[2]+=U[2]}),g.invalidated=!0}else this._dragHandle(i),g.invalidated=!0;const R=_n(c),{renderingEngine:L}=R;Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this._dragHandle=i=>{const l=i.detail,{element:c}=l,g=_n(c),{canvasToWorld:v,worldToCanvas:_}=g.viewport,{annotation:T,handleIndex:P}=this.editData,{data:I}=T,{points:R}=I.handles,L=R.map(j=>_(j)),{currentPoints:V}=l,U=V.canvas;if(P===0){const j=U[0]-L[0][0],z=U[1]-L[0][1],$=U,K=[L[1][0]+j,L[1][1]+z];R[0]=v($),R[1]=v(K)}else R[1]=v(U)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{handles:j}=U,{points:z,activeHandleIndex:$}=j;I.annotationUID=V;const{color:K,lineWidth:X,lineDash:ee}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),ne=z.map(qt=>g.worldToCanvas(qt)),le=ne[0],ce=Gd(ne),ge=o8(ne),{centerPointRadius:pe}=this.configuration;if(!U.cachedStats[T]||U.cachedStats[T].areaUnit==null)U.cachedStats[T]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},this._calculateCachedStats(L,g,P,i);else if(L.invalidated&&(this._throttledCalculateCachedStats(L,g,P,i),g instanceof ns)){const{referencedImageId:qt}=L.metadata;for(const $t in U.cachedStats)$t.startsWith("imageId")&&P.getStackViewports().find(Nn=>{const xn=Bs(qt),et=Nn.hasImageURI(xn),Me=Bs(Nn.getCurrentImageId());return et&&Me!==xn})&&delete U.cachedStats[$t]}if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let we;if(!Ys(V))continue;!da(V)&&!this.editData&&$!==null&&(we=[ne[$]]),we&&$o(l,V,"0",we,{color:K});const Te=`${V}-circle`,Ve="0";J1(l,V,Ve,le,ce,{color:K,lineDash:ee,lineWidth:X},Te),pe>0&&ce>3*pe&&J1(l,V,`${Ve}-center`,le,pe,{color:K,lineDash:ee,lineWidth:X}),c=!0;const Pe=this.getLinkedTextBoxStyle(I,L);if(!Pe.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const je=this.configuration.getTextLines(U,T);if(!je||je.length===0)continue;let Je;U.handles.textBox.hasMoved||(Je=Pl(ge),U.handles.textBox.worldPosition=g.canvasToWorld(Je));const it=g.worldToCanvas(U.handles.textBox.worldPosition),Ke=A2(l,V,"1",je,it,ne,{},Pe),{x:qe,y:ut,width:wt,height:Et}=Ke;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([qe,ut]),topRight:g.canvasToWorld([qe+wt,ut]),bottomLeft:g.canvasToWorld([qe,ut+Et]),bottomRight:g.canvasToWorld([qe+wt,ut+Et])}}return c},this._calculateCachedStats=(i,l,c,g)=>{var ne,le,ce,ge;if(!this.configuration.calculateStats)return;const v=i.data,{element:_}=l,T=i.invalidated,{points:P}=v.handles,I=P.map(pe=>l.worldToCanvas(pe)),{viewPlaneNormal:R,viewUp:L}=l.getCamera(),[V,U]=o8(I),j=l.canvasToWorld(V),z=l.canvasToWorld(U),{cachedStats:$}=v,K=Object.keys($),X=j,ee=z;for(let pe=0;pezC(et,Bt,{fast:!0}),boundsIJK:$t,imageData:Pe,returnPoints:this.configuration.storePointData}));const gn=this.configuration.statsCalculator.getStatistics();$[we]={Modality:je.Modality,area:Hn,mean:(ne=gn.mean)==null?void 0:ne.value,max:(le=gn.max)==null?void 0:le.value,min:(ce=gn.min)==null?void 0:ce.value,pointsInShape:Vt,stdDev:(ge=gn.stdDev)==null?void 0:ge.value,statsArray:gn.array,isEmptyArea:st,areaUnit:mn,radius:Me/2/St,radiusUnit:Pt,perimeter:2*Math.PI*(Me/2)/St,modalityUnit:Dt}}else this.isHandleOutsideImage=!0,$[we]={Modality:je.Modality}}return i.invalidated=!1,T&&C0(i,_,n0.StatsUpdated),$},this._isInsideVolume=(i,l,c)=>Qo(i,c)&&Qo(l,c),this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}};$6.toolName="CircleROI",$6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=$6.hydrateBase($6,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let N9=$6;function q_e(n,e){const o=n.cachedStats[e],{radius:i,radiusUnit:l,area:c,mean:g,stdDev:v,max:_,min:T,isEmptyArea:P,areaUnit:I,modalityUnit:R}=o,L=[];if(bs(i)){const V=P?"Radius: Oblique not supported":`Radius: ${E0(i)} ${l}`;L.push(V)}if(bs(c)){const V=P?"Area: Oblique not supported":`Area: ${E0(c)} ${I}`;L.push(V)}return bs(g)&&L.push(`Mean: ${E0(g)} ${R}`),bs(_)&&L.push(`Max: ${E0(_)} ${R}`),bs(T)&&L.push(`Min: ${E0(T)} ${R}`),bs(v)&&L.push(`Std Dev: ${E0(v)} ${R}`),L}const d7=5,tR=class tR extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,degrees:[45,135,225,315],diameters:[10,30,60]}}){super(e,o),this.isHandleOutsideImage=!1,this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V,...T.getViewReference({points:[v]})},data:{label:"",handles:{points:[[...v]]}}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,newAnnotation:!0},this._activateDraw(g),Oi(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{points:P}=T.handles,I=_.worldToCanvas(P[0]),R=Gd([I,c]);return Math.abs(R){const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v},Oi(g),this._activateModify(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v},this._activateModify(g),Oi(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;g.highlighted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const{renderingEngine:I}=_n(c);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g)},this._dragDrawCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{currentPoints:g}=l,v=g.canvas,_=_n(c),{renderingEngine:T,viewport:P}=_,{canvasToWorld:I}=P,{annotation:R,viewportIdsToRender:L}=this.editData,{data:V}=R;V.handles.points=[I(v),I(v)],R.invalidated=!0,this.editData.hasMoved=!0,Un(L)},this._dragModifyCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v}=this.editData,{data:_}=g,{deltaPoints:T}=l,P=T.world;_.handles.points.forEach(V=>{V[0]+=P[0],V[1]+=P[1],V[2]+=P[2]}),g.invalidated=!0;const R=_n(c),{renderingEngine:L}=R;Un(v)},this._dragHandle=i=>{const l=i.detail,{element:c}=l,g=_n(c),{canvasToWorld:v,worldToCanvas:_}=g.viewport,{annotation:T}=this.editData,{data:P}=T,{points:I}=P.handles,R=I.map(K=>_(K)),{currentPoints:L}=l,V=L.canvas,U=V[0]-R[0][0],j=V[1]-R[0][1],z=V,$=[R[1][0]+U,R[1][1]+j];I[0]=v(z),I[1]=v($)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;l.highlighted=!1,v.handles.activeHandleIndex=null;const{renderingEngine:_}=_n(i);return Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragModifyCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragDrawCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragDrawCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I,{handles:V}=L,{points:U}=V;T.annotationUID=R;const{color:j,lineWidth:z,lineDash:$}=this.getAnnotationStyle({annotation:I,styleSpecifier:T}),X=U.map(we=>g.worldToCanvas(we))[0];if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(R))continue;let ee=`${R}-crosshair-vertical`,ne=[X[0],X[1]+d7],le=[X[0],X[1]-d7];V0(l,R,ee,ne,le,{color:j,lineDash:$,lineWidth:z}),ee=`${R}-crosshair-horizontal`,ne=[X[0]+d7,X[1]],le=[X[0]-d7,X[1]],V0(l,R,ee,ne,le,{color:j,lineDash:$,lineWidth:z});const ce=this.configuration.diameters.map(we=>this.worldMeasureToCanvas(we,g));for(let we=0;wewe*Math.PI/180,pe=this.configuration.degrees.map(we=>ge(we));for(let we=0;we{const{instance:v}=l.data.spline;return v.isPointNearCurve(c,g)},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;let T=!1,P;if(c.worldPosition)T=!0;else{const{points:R}=_.handles;P=R.findIndex(L=>L===c)}const I=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P,movingTextBox:T},this._activateModify(v),Un(I),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,contourHoleProcessingEnabled:T}=this.editData,{data:P}=g;g.autoGenerated=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c),R=this.getTargetImageData(this.getTargetId(I.viewport)),{imageData:L,dimensions:V}=R;this.isHandleOutsideImage=P.handles.points.map(j=>qs(L,j)).some(j=>!Qo(j,V)),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID);const U=_?n0.Completed:n0.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=g.annotationUID,this.fireChangeOnUpdate.changeType=U):this.fireChangeOnUpdate={annotationUID:g.annotationUID,changeType:U,contourHoleProcessingEnabled:T},Un(v),this.doneEditMemo(),this.editData=null,this.isDrawing=!1},this._keyDownCallback=i=>{const l=i.detail,{element:c}=l,g=l.key??"",{lastControlPointDeletionKeys:v}=this.configuration.spline;if(!v.includes(g))return;const{annotation:T}=this.editData,{data:P}=T;if(P.handles.points.length===Lb){this.cancel(c);return}else{const I=P.handles.points.length-1;this._deleteControlPointByIndex(c,T,I)}i.preventDefault()},this._mouseMoveCallback=i=>{const{drawPreviewEnabled:l}=this.configuration.spline;if(!l)return;const{element:c}=i.detail,{renderingEngine:g}=_n(c),v=fi(c,this.getToolName());this.editData.lastCanvasPoint=i.detail.currentPoints.canvas,Un(v),i.preventDefault()},this._mouseDownCallback=i=>{const l=i.type===Xe.MOUSE_DOUBLE_CLICK,{annotation:c,viewportIdsToRender:g}=this.editData,{data:v}=c;if(v.contour.closed)return;this.doneEditMemo();const _=i.detail,{currentPoints:T,element:P}=_,{canvas:I,world:R}=T;let L=v.handles.points.length>=2&&l,V=!0;if(v.handles.points.length&&this.createMemo(P,c,{newAnnotation:v.handles.points.length===1}),v.handles.points.length>=3){this.createMemo(P,c);const{instance:U}=v.spline,j=U.getClosestControlPointWithinDistance(I,Nb);(j==null?void 0:j.index)===0&&(V=!1,L=!0)}V&&v.handles.points.push(R),v.contour.closed=v.contour.closed||L,c.invalidated=!0,Un(g),v.contour.closed&&this._endCallback(i),i.preventDefault()},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData,{data:I}=g;if(this.createMemo(c,g,{newAnnotation:P}),T){const{deltaPoints:V}=l,U=V.world,{textBox:j}=I.handles,{worldPosition:z}=j;z[0]+=U[0],z[1]+=U[1],z[2]+=U[2],j.hasMoved=!0}else if(_===void 0){const{deltaPoints:V}=l,U=V.world;this.moveAnnotation(g,U)}else{const{currentPoints:V}=l,U=V.world;I.handles.points[_]=[...U],g.invalidated=!0}this.editData.hasMoved=!0;const R=_n(c),{renderingEngine:L}=R;Un(v)},this.triggerAnnotationCompleted=(i,l)=>{const c=Xe.ANNOTATION_COMPLETED,g={annotation:i,changeType:n0.Completed,contourHoleProcessingEnabled:l};Or(pr,c,g)},this.triggerAnnotationModified=(i,l,c=n0.StatsUpdated)=>{const{viewportId:g,renderingEngineId:v}=l,_=Xe.ANNOTATION_MODIFIED;Or(pr,_,{annotation:i,viewportId:g,renderingEngineId:v,changeType:c})},this.triggerChangeEvent=(i,l,c=n0.StatsUpdated,g)=>{c===n0.Completed?this.triggerAnnotationCompleted(i,g):this.triggerAnnotationModified(i,l,c)},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.KEY_DOWN,this._keyDownCallback),i.addEventListener(Xe.MOUSE_MOVE,this._mouseMoveCallback),i.addEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.addEventListener(Xe.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),i.addEventListener(Xe.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.KEY_DOWN,this._keyDownCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._mouseMoveCallback),i.removeEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.removeEventListener(Xe.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),i.removeEventListener(Xe.TOUCH_TAP,this._mouseDownCallback)},this._renderStats=(i,l,c,g)=>{const v=i.data,_=this.getTargetId(l);if(!v.spline.instance.closed||!g.visibility)return;const T=this.configuration.getTextLines(v,_);if(!T||T.length===0)return;const P=v.handles.points.map($=>l.worldToCanvas($));if(!v.handles.textBox.hasMoved){const $=Pl(P);v.handles.textBox.worldPosition=l.canvasToWorld($)}const I=l.worldToCanvas(v.handles.textBox.worldPosition),L=A2(c,i.annotationUID??"","textBox",T,I,P,{},g),{x:V,y:U,width:j,height:z}=L;v.handles.textBox.worldBoundingBox={topLeft:l.canvasToWorld([V,U]),topRight:l.canvasToWorld([V+j,U]),bottomLeft:l.canvasToWorld([V,U+z]),bottomRight:l.canvasToWorld([V+j,U+z])}},this.addControlPointCallback=(i,l)=>{const{data:c}=l,g=c.spline.type,v=this._getSplineConfig(g),_=v.controlPointAdditionDistance;if(v.controlPointAdditionEnabled===!1)return;const T=i.detail,{element:P}=T,I=_n(P),{renderingEngine:R,viewport:L}=I,{canvasToWorld:V}=L,{instance:U}=c.spline,j=i.detail.currentPoints.canvas,z=U.getClosestPoint(j);if(z.distance>_)return;const{index:$,point:K}=U.addControlPointAtU(z.uValue);c.handles.points.splice($,0,V(K)),l.invalidated=!0;const X=fi(P,this.getToolName());Un(X)},this.deleteControlPointCallback=(i,l)=>{const c=l.data.spline.type,g=this._getSplineConfig(c),v=g.controlPointDeletionDistance;if(g.controlPointDeletionEnabled===!1)return;const _=i.detail,{element:T,currentPoints:P}=_,{canvas:I}=P,{instance:R}=l.data.spline,L=R.getClosestControlPointWithinDistance(I,v);L&&this._deleteControlPointByIndex(T,l,L.index)},this._calculateCachedStats=(i,l)=>{if(!this.configuration.calculateStats)return;const c=i.data;if(!c.contour.closed)return;const g=_n(l);if(!g)return;const{viewport:v}=g,{cachedStats:_}=c,{polyline:T}=c.contour,P=Object.keys(_);for(let R=0;Rv.worldToCanvas(we)),z=j[0],$=v.canvasToWorld(z),K=v.canvasToWorld([z[0]+1,z[1]]),X=v.canvasToWorld([z[0],z[1]+1]),ee=y2($,K),ne=y2($,X),{imageData:le}=V,{scale:ce,areaUnit:ge}=Ml(V,()=>{const{maxX:we,maxY:Te,minX:Ve,minY:Pe}=Qd(j),je=v.canvasToWorld([Ve,Pe]),Je=qs(le,je),it=v.canvasToWorld([we,Te]),Ge=qs(le,it);return[Je,Ge]});let pe=ok(j)/ce/ce;pe*=ee*ne,_[L]={Modality:U.Modality,area:pe,areaUnit:ge}}const I=i.invalidated;return i.invalidated=!1,I&&this.triggerAnnotationModified(i,g,n0.StatsUpdated),_},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0}),this.annotationCompletedBinded=this.annotationCompleted.bind(this)}annotationCompleted(e){var i;const{sourceAnnotation:o}=e.detail;!this.splineToolNames.includes((i=o==null?void 0:o.metadata)==null?void 0:i.toolName)||!this.configuration.simplifiedSpline||!this.isContourSegmentationTool()||VM(o)}initializeListeners(){pr.addEventListener(Xe.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}removeListeners(){pr.removeEventListener(Xe.ANNOTATION_COMPLETED,this.annotationCompletedBinded)}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.removeListeners()}addNewAnnotation(e){const o=e.detail,{currentPoints:i,element:l}=o,{canvas:c}=i,g=t5(e.detail.event)===this.configuration.contourHoleAdditionModifierKey,v=_n(l),{renderingEngine:_}=v,T=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(T,l);const P=fi(l,this.getToolName());return this.editData={annotation:T,viewportIdsToRender:P,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,lastCanvasPoint:c,contourHoleProcessingEnabled:g},this._activateDraw(l),e.preventDefault(),Un(P),T}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),Zi(e);const{annotation:o,viewportIdsToRender:i,newAnnotation:l}=this.editData;l&&A0(o.annotationUID),super.cancelAnnotation(o);const c=_n(e),{renderingEngine:g}=c;return Un(i),this.editData=null,o.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){var Pe,je,Je;const{enabledElement:o,targetId:i,svgDrawingHelper:l,annotationStyle:c}=e,{viewport:g}=o,{worldToCanvas:v}=g,{element:_}=g,T=e.annotation,{annotationUID:P,data:I,highlighted:R}=T,{handles:L}=I,{points:V,activeHandleIndex:U}=L,j=(Pe=this.editData)==null?void 0:Pe.newAnnotation,{lineWidth:z,lineDash:$,color:K,locked:X}=c,ee=V.map(it=>v(it)),{drawPreviewEnabled:ne}=this.configuration.spline,le=T.data.spline.type,ce=this._getSplineConfig(le),ge=T.data.spline.instance,pe=Qv(T);if(pe.findIndex(it=>!it)!==-1)throw new Error(`Can't find annotation for child ${T.childAnnotationUIDs.join()}`);[T,...pe].filter(it=>this._isSplineROIAnnotation(it)).forEach(it=>{const Ke=this._updateSplineInstance(_,it).getPolylinePoints();this.updateContourPolyline(it,{points:Ke,closed:I.contour.closed,targetWindingDirection:X1.Clockwise},g,{updateWindingDirection:I.contour.closed})}),super.renderAnnotationInstance(e),!I.cachedStats[i]||I.cachedStats[i].areaUnit==null?(I.cachedStats[i]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(T,_)):T.invalidated&&this._throttledCalculateCachedStats(T,_);let Ve;if(!X&&!this.editData&&U!==null&&(Ve=[ee[U]]),(Ve||j||R)&&$o(l,P,"0",ee,{color:K,lineWidth:z,handleRadius:"3"}),ne&&ge.numControlPoints>1&&((je=this.editData)!=null&&je.lastCanvasPoint)&&!ge.closed){const{lastCanvasPoint:it}=this.editData,Ge=ge.getPreviewPolylinePoints(it,Nb);mc(l,P,"previewSplineChange",Ge,{color:"#9EA0CA",lineDash:$,lineWidth:1})}if(ce.showControlPointsConnectors){const it=[...ee];ge.closed&&it.push(ee[0]),mc(l,P,"controlPointsConnectors",it,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(T,g,l,c.textbox),((Je=this.fireChangeOnUpdate)==null?void 0:Je.annotationUID)===P&&(this.triggerChangeEvent(T,o,this.fireChangeOnUpdate.changeType,this.fireChangeOnUpdate.contourHoleProcessingEnabled),this.fireChangeOnUpdate=null),T.invalidated=!1,!0}createInterpolatedSplineControl(e){var c;if((c=e.data.handles.points)!=null&&c.length)return;const{polyline:o}=e.data.contour;if(!o||!o.length)return;e.data.handles.points=[];const{points:i}=e.data.handles,l=Math.max(10,Math.floor(o.length/20));for(let g=0;g({type:c.type,instance:g,resolution:c.resolution});let _;return(T=this.configuration.interpolation)!=null&&T.enabled&&(_=P=>{var I;(I=P.data).spline||(I.spline=v()),this.createInterpolatedSplineControl(P)}),o2(o,{data:{handles:{points:[[...i]]},spline:v(),cachedStats:{}},onInterpolationComplete:_})}_deleteControlPointByIndex(e,o,i){const l=_n(e),{points:c}=o.data.handles;c.length===3?A0(o.annotationUID):c.splice(i,1);const{renderingEngine:g}=l,v=fi(e,this.getToolName());o.invalidated=!0,Un(v)}_isSplineROIAnnotation(e){var o;return!!((o=e.data)!=null&&o.spline)}_getSplineConfig(e){const{configuration:o}=this,i=o.spline.configuration;return Object.assign({type:e},X_e,i[e])}_updateSplineInstance(e,o){const i=_n(e),{viewport:l}=i,{worldToCanvas:c}=l,{data:g}=o,{type:v,instance:_}=o.data.spline,T=this._getSplineConfig(v),I=g.handles.points.map(c),R=T.resolution!==void 0?parseInt(T.resolution):void 0,L=T.scale!==void 0?parseFloat(T.scale):void 0;return _.setControlPoints(I),_.closed=!!g.contour.closed,!_.fixedResolution&&R!==void 0&&_.resolution!==R&&(_.resolution=R,o.invalidated=!0),_ instanceof Tv&&!_.fixedScale&&L!==void 0&&_.scale!==L&&(_.scale=L,o.invalidated=!0),_}};vd.toolName="SplineROI",vd.SplineTypes=Jf,vd.Actions=Cm,vd.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;if(o.lengthl,this._areEqual=typeof i=="function"?i:(l,c)=>l===c}push(e){const o=this._getBucketIndex(e),i=this._buckets[o],l={value:e,next:i};this._buckets[o]=l,this._size++}pop(){if(this._size===0)throw new Error("Cannot pop because the queue is empty.");for(;this._buckets[this._currentBucketIndex]===null;)this._currentBucketIndex=(this._currentBucketIndex+1)%this._bucketCount;const e=this._buckets[this._currentBucketIndex];return this._buckets[this._currentBucketIndex]=e.next,this._size--,e.value}remove(e){if(!e)return!1;const o=this._getBucketIndex(e),i=this._buckets[o];let l=i,c;for(;l!==null&&!this._areEqual(e,l.value);)c=l,l=l.next;return l===null?!1:(l===i?this._buckets[o]=l.next:c.next=l.next,this._size--,!0)}isEmpty(){return this._size===0}_getBucketIndex(e){return this._getPriority(e)&this._mask}_buildArray(e){const o=new Array(e);return o.fill(null),o}}const KS=4294967295,Z_e=2/(3*Math.PI);class F9{constructor(e,o,i){this._getPointIndex=(c,g)=>{const{width:v}=this;return c*v+g},this._getPointCoordinate=c=>{const g=c%this.width,v=Math.floor(c/this.width);return[g,v]},this._getPointCost=c=>Math.round(this.searchGranularity*this.costs[c]);const l=e.length;this.searchGranularityBits=8,this.searchGranularity=1<.33?0:1;l[i(c,e-2)]=1,l[i(c,e-1)]=1}return l.fill(1,i(o-2,0)),l}_computeGradientX(){const{width:e,height:o}=this,i=new Float32Array(e*o);let l=0;for(let c=0;c=l||T<0||T>=c)return 1;if(g<0||v<0||g>=l||v>=c)return 0;const P=i(T,_);let I=this.gradMagnitude[P];(g===_||v===T)&&(I*=Math.SQRT1_2);const R=this.laplace[P],L=this._getGradientDirection(g,v,_,T);return .43*I+.43*R+.11*L}_getNeighborPoints(e){const{width:o,height:i}=this,l=[],c=Math.max(e[0]-1,0),g=Math.max(e[1]-1,0),v=Math.min(e[0]+1,o-1),_=Math.min(e[1]+1,i-1);for(let T=g;T<=_;T++)for(let P=c;P<=v;P++)(P!==e[0]||T!==e[1])&&l.push([P,T]);return l}static createInstanceFromRawPixelData(e,o,i,l){const c=e.length,g=new Float32Array(c),{lower:v,upper:_}=l,T=_-v;for(let P=0,I=e.length;Pthis.pointArray[e])}getNumControlPoints(){return this._controlPointIndexes.length}removeLastControlPoint(){this._controlPointIndexes.length&&this._controlPointIndexes.pop()}getLastControlPoint(){if(this._controlPointIndexes.length)return this.pointArray[this._controlPointIndexes[this._controlPointIndexes.length-1]]}removeLastPoints(e){this.pointArray.splice(this.pointArray.length-e,e)}addPoints(e){this.pointArray=this.pointArray.concat(e)}prependPath(e){const o=e.pointArray.length,i=[];this.pointArray=e.pointArray.concat(this.pointArray);for(let l=0;lthis._controlPointIndexes.push(o))}}const Q_e=10**2,rR=class rR extends kv{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextLines:exe,calculateStats:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:h2.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{cancelInProgress:{method:"cancelInProgress",bindings:[{key:"Escape"}]}}}}){super(e,o),this.isHandleOutsideImage=!1,this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,T=g*g,P=l.data.contour.polyline.map(R=>_.worldToCanvas(R));let I=P[P.length-1];for(let R=0;R{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1};const _=_n(g),{renderingEngine:T}=_;this._activateModify(g),Un(v),i.preventDefault()},this.handleSelectedCallback=(i,l,c)=>{const g=i.detail,{element:v}=g,{data:_}=l;l.highlighted=!0;let T=!1,P;if(c.worldPosition)T=!0;else{const{points:V}=_.handles;P=V.findIndex(U=>U===c)}const I=fi(v,this.getToolName());this.editData={annotation:l,viewportIdsToRender:I,handleIndex:P,movingTextBox:T},this._activateModify(v);const R=_n(v),{renderingEngine:L}=R;Un(I),i.preventDefault()},this._endCallback=(i,l=!1)=>{const c=i.detail,{element:g}=c,{annotation:v,viewportIdsToRender:_,newAnnotation:T,contourHoleProcessingEnabled:P}=this.editData,{data:I}=v;this.doneEditMemo(),I.handles.activeHandleIndex=null,this._deactivateModify(g),this._deactivateDraw(g),Zi(g);const R=_n(g);if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage||l){A0(v.annotationUID),this.clearEditData(),Un(_);return}Un(_);const L=T?n0.Completed:n0.HandlesUpdated;this.triggerChangeEvent(v,R,L,P),this.clearEditData()},this.triggerChangeEvent=(i,l,c=n0.StatsUpdated,g=!1)=>{c===n0.Completed?VC(i,g):C0(i,l.viewport.element,c)},this._mouseDownCallback=i=>{const l=i.type===Xe.MOUSE_DOUBLE_CLICK,{annotation:c,viewportIdsToRender:g,worldToSlice:v,sliceToWorld:_,newAnnotation:T}=this.editData;if(this.editData.closed)return;const P=i.detail,{element:I}=P,{currentPoints:R}=P,{canvas:L,world:V}=R;let U=V;const j=_n(I),{viewport:z,renderingEngine:$}=j,K=this.editData.currentPath.getControlPoints();let X=K.length>=2&&l;if(this.doneEditMemo(),this.createMemo(I,c,{newAnnotation:T&&K.length===1}),K.length>=2){const le={index:-1,distSquared:1/0};for(let ce=0,ge=K.length;ce{const{element:l,currentPoints:c}=i.detail,{world:g,canvas:v}=c,{renderingEngine:_}=_n(l),T=fi(l,this.getToolName());this.editData.lastCanvasPoint=v;const{width:P,height:I}=this.scissors,{worldToSlice:R}=this.editData,L=R(g);if(L[0]<0||L[1]<0||L[0]>=P||L[1]>=I)return;const V=this.scissors.findPathToPoint(L),U=new qf;U.addPoints(V),U.prependPath(this.editData.confirmedPath),this.editData.currentPath=U,Un(T),i.preventDefault()},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,movingTextBox:_,handleIndex:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(_){const{deltaPoints:V}=l,U=V.world,{textBox:j}=I.handles,{worldPosition:z}=j;z[0]+=U[0],z[1]+=U[1],z[2]+=U[2],j.hasMoved=!0}else if(T===void 0)console.warn("Drag annotation not implemented");else{const{currentPoints:V}=l,U=V.world;this.editHandle(U,c,g,T)}this.editData.hasMoved=!0;const R=_n(c),{renderingEngine:L}=R;Un(v)},this.cancel=i=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData;return g&&A0(l.annotationUID),Un(c),this.doneEditMemo(),this.scissors=null,l.annotationUID},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_MOVE,this._mouseMoveCallback),i.addEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.addEventListener(Xe.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),i.addEventListener(Xe.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_MOVE,this._mouseMoveCallback),i.removeEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.removeEventListener(Xe.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),i.removeEventListener(Xe.TOUCH_TAP,this._mouseDownCallback)},this._calculateCachedStats=(i,l)=>{if(!this.configuration.calculateStats)return;const c=i.data;if(!c.contour.closed)return;const g=_n(l),{viewport:v,renderingEngine:_}=g,{cachedStats:T}=c,{polyline:P}=c.contour,I=Object.keys(T);for(let L=0;Lv.worldToCanvas(Te)),$=z[0],K=v.canvasToWorld($),X=v.canvasToWorld([$[0]+1,$[1]]),ee=v.canvasToWorld([$[0],$[1]+1]),ne=y2(K,X),le=y2(K,ee),{imageData:ce}=U,{scale:ge,areaUnit:pe}=Ml(U,()=>{const{maxX:Te,maxY:Ve,minX:Pe,minY:je}=Qd(z),Je=v.canvasToWorld([Pe,je]),it=qs(ce,Je),Ge=v.canvasToWorld([Te,Ve]),Ke=qs(ce,Ge);return[it,Ke]});let we=ok(z)/ge/ge;we*=ne*le,T[V]={Modality:j.Modality,area:we,areaUnit:pe}}const R=i.invalidated;return i.invalidated=!1,R&&this.triggerAnnotationModified(i,g,n0.StatsUpdated),T},this._renderStats=(i,l,c,g)=>{const v=i.data,_=this.getTargetId(l);if(!v.contour.closed||!g.visibility)return;const T=this.configuration.getTextLines(v,_);if(!T||T.length===0)return;const P=v.handles.points.map($=>l.worldToCanvas($));if(!v.handles.textBox.hasMoved){const $=Pl(P);v.handles.textBox.worldPosition=l.canvasToWorld($)}const I=l.worldToCanvas(v.handles.textBox.worldPosition),L=A2(c,i.annotationUID??"","textBox",T,I,P,{},g),{x:V,y:U,width:j,height:z}=L;v.handles.textBox.worldBoundingBox={topLeft:l.canvasToWorld([V,U]),topRight:l.canvasToWorld([V+j,U]),bottomLeft:l.canvasToWorld([V,U+z]),bottomRight:l.canvasToWorld([V+j,U+z])}},this.triggerAnnotationModified=(i,l,c=n0.StatsUpdated)=>{const{viewportId:g,renderingEngineId:v}=l,_=Xe.ANNOTATION_MODIFIED;Or(pr,_,{annotation:i,viewportId:g,renderingEngineId:v,changeType:c})},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}setupBaseEditData(e,o,i,l,c){var le,ce;const g=_n(o),{viewport:v}=g;this.isDrawing=!0;const _=v.getImageData(),{imageData:T}=_;let P,I,R,L,V;if(!(v instanceof ns))R=_.dimensions[0],L=_.dimensions[1],P=ge=>{const pe=qs(T,ge);return[pe[0],pe[1]]},I=ge=>T8(T,[ge[0],ge[1],0]),V=_.scalarData;else if(v instanceof ns){const ge=gM(v),{sliceToIndexMatrix:pe,indexToSliceMatrix:we}=ge;P=Te=>{const Ve=qs(T,Te),Pe=g0([0,0,0],Ve,we);return[Pe[0],Pe[1]]},I=Te=>{const Ve=g0([0,0,0],[Te[0],Te[1],0],pe);return T8(T,Ve)},V=ge.scalarData,R=ge.width,L=ge.height}else throw new Error("Viewport not supported");V=_z(V,R,L);const{voiRange:U}=v.getProperties(),j=P(e);this.scissors=F9.createInstanceFromRawPixelData(V,R,L,U),l&&(this.scissorsNext=F9.createInstanceFromRawPixelData(V,R,L,U),this.scissorsNext.startSearch(P(l))),this.scissors.startSearch(j);const z=!l,$=new qf,K=new qf,X=z?void 0:new qf;$.addPoint(j),$.addControlPoint(j);const ee=fi(o,this.getToolName()),ne=v.worldToCanvas(e);this.editData={annotation:i,viewportIdsToRender:ee,newAnnotation:z,hasMoved:!1,lastCanvasPoint:ne,confirmedPath:$,currentPath:K,confirmedPathNext:X,closed:!1,handleIndex:((le=this.editData)==null?void 0:le.handleIndex)??((ce=i.handles)==null?void 0:ce.activeHandleIndex),worldToSlice:P,sliceToWorld:I,contourHoleProcessingEnabled:c}}addNewAnnotation(e){const o=e.detail,{currentPoints:i,element:l}=o,{world:c}=i,g=this.createAnnotation(e),v=t5(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(c,l,g,void 0,v),this.addAnnotation(g,l),this._activateDraw(l),e.preventDefault(),Un(this.editData.viewportIdsToRender),g}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,o,i,l){var K;const{data:c}=i,{points:g}=c.handles,{length:v}=g,_=g[(l-1+v)%v],T=g[(l+1)%v];if(!((K=this.editData)!=null&&K.confirmedPathNext)){this.setupBaseEditData(_,o,i,T);const{polyline:X}=c.contour,ee=new qf,ne=new qf,{worldToSlice:le}=this.editData,ce=nD(i,l-1),ge=nD(i,l+1);if(ge===-1||ce===-1)throw new Error(`Can't find handle index ${ge===-1&&T} ${ce===-1&&_}`);l===0?ne.addPoints(X.slice(ge+1,ce).map(le)):(ee.addPoints(X.slice(0,ce+1).map(le)),ne.addPoints(X.slice(ge,X.length).map(le))),this.editData.confirmedPath=ee,this.editData.confirmedPathNext=ne}const{editData:P,scissors:I}=this,{worldToSlice:R,sliceToWorld:L}=P,{activeHandleIndex:V}=c.handles;if(V==null)c.handles.activeHandleIndex=l;else if(V!==l)throw new Error(`Trying to edit a different handle than the one currently being edited ${l}!==${c.handles.activeHandleIndex}`);const U=R(e);if(U[0]<0||U[0]>=I.width||U[1]<0||U[1]>=I.height)return;g[l]=L(U);const j=I.findPathToPoint(U),z=this.scissorsNext.findPathToPoint(U),$=new qf;$.prependPath(P.confirmedPath),l!==0&&$.addPoints(j),$.addPoints(z.reverse()),$.appendPath(P.confirmedPathNext),l===0&&$.addPoints(j),P.currentPath=$,i.invalidated=!0,P.hasMoved=!0,P.closed=!0}renderAnnotation(e,o){var i;return this.updateAnnotation((i=this.editData)==null?void 0:i.currentPath),super.renderAnnotation(e,o)}isContourSegmentationTool(){return!1}createAnnotation(e){const o=super.createAnnotation(e),{world:i}=e.detail.currentPoints;return o2(o,{data:{handles:{points:[[...i]]}}})}cancelInProgress(e,o,i){if(!this.editData){this.undo();return}this._endCallback(i,!0)}renderAnnotationInstance(e){var $,K,X,ee;const{annotation:o,enabledElement:i,svgDrawingHelper:l,annotationStyle:c,targetId:g}=e,{viewport:v}=i,{element:_}=v,{worldToCanvas:T}=v,{annotationUID:P,data:I,highlighted:R}=o,{handles:L}=I,V=($=this.editData)==null?void 0:$.newAnnotation,{lineWidth:U,lineDash:j,color:z}=c;if(R||V&&o.annotationUID===((X=(K=this.editData)==null?void 0:K.annotation)==null?void 0:X.annotationUID)){const ne="0",le=L.points.map(T);$o(l,P,ne,le,{color:z,lineDash:j,lineWidth:U})}return super.renderAnnotationInstance(e),!I.cachedStats[g]||((ee=I.cachedStats[g])==null?void 0:ee.areaUnit)===null?(I.cachedStats[g]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(o,_)):o.invalidated&&this._throttledCalculateCachedStats(o,_),this._renderStats(o,v,l,c.textbox),!0}updateAnnotation(e){if(!this.editData||!e)return;const{annotation:o,sliceToWorld:i,worldToSlice:l,closed:c,newAnnotation:g}=this.editData;let{pointArray:v}=e;v.length>1&&(v=[...v,v[0]]);const _=g&&c?X1.Clockwise:void 0;this.updateContourPolyline(o,{points:v,closed:c,targetWindingDirection:_},{canvasToWorld:i,worldToCanvas:l})}};rR.toolName="LivewireContour";let V9=rR;function exe(n,e){const o=n.cachedStats[e],{area:i,areaUnit:l}=o,c=[];if(i){const g=`Area: ${E0(i)} ${l}`;c.push(g)}return c}const iR=class iR extends V9{updateInterpolatedAnnotation(e,o){this.editData||!e.invalidated||!e.data.handles.interpolationSources||(e.data.contour.originalPolyline=e.data.contour.polyline,queueMicrotask(()=>{if(!e.data.handles.interpolationSources)return;const{points:i}=e.data.handles,{element:l}=o.viewport;this.setupBaseEditData(i[0],l,e);const{length:c}=i,{scissors:g}=this,{nearestEdge:v,repeatInterpolation:_}=this.configuration.interpolation;e.data.handles.originalPoints=i;const{worldToSlice:T,sliceToWorld:P}=this.editData,I=[];if(v){let L=T(i[i.length-1]);i.forEach((V,U)=>{const j=T(V);L=j,I.push(j),g.startSearch(L),g.findPathToPoint(j),g.findPathToPoint(T(i[(U+3)%i.length]));const z=g.findMinNearby(j,v);Qi(j,z)||(I[U]=z,L=z,i[U]=P(z))})}const R=new qf;for(let L=0;L{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;Oi(g),this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),{arrowFirst:U}=this.configuration,j=T.getFrameOfReferenceUID(),z={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:j,referencedImageId:V,...T.getViewReference({points:[v]})},data:{text:"",handles:{points:[[...v],[...v]],activeHandleIndex:null,arrowFirst:U,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};_0(z,g);const $=fi(g,this.getToolName());return this.editData={annotation:z,viewportIdsToRender:$,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un($),z},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I]=T.handles.points,R=_.worldToCanvas(P),L=_.worldToCanvas(I),V={start:{x:R[0],y:R[1]},end:{x:L[0],y:L[1]}};return za([V.start.x,V.start.y],[V.end.x,V.end.y],[c[0],c[1]])<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T,movingTextBox:P}=this.editData,{data:I}=g;_&&!T||(I.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),_?this.configuration.getTextCallback(R=>{if(!R){A0(g.annotationUID),Un(v),this.editData=null,this.isDrawing=!1;return}g.data.text=R,C0(g,c,n0.HandlesUpdated),lo(g),this.createMemo(c,g,{newAnnotation:!!this.memo}),lY(g,c,R),Un(v)}):P||C0(g,c,n0.HandlesUpdated),this.doneEditMemo(),this.editData=null,this.isDrawing=!1)},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData;this.createMemo(c,g,{newAnnotation:P});const{data:I}=g;if(T){const{deltaPoints:R}=l,L=R.world,{textBox:V}=I.handles,{worldPosition:U}=V;U[0]+=L[0],U[1]+=L[1],U[2]+=L[2],V.hasMoved=!0}else if(_===void 0){const{deltaPoints:R}=l,L=R.world;I.handles.points.forEach(U=>{U[0]+=L[0],U[1]+=L[1],U[2]+=L[2]}),g.invalidated=!0}else{const{currentPoints:R}=l,L=R.world;I.handles.points[_]=[...L],g.invalidated=!0}this.editData.hasMoved=!0,Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this.touchTapCallback=i=>{i.detail.taps==2&&this.doubleClickCallback(i)},this.doubleClickCallback=i=>{const l=i.detail,{element:c}=l;let g=O0(this.getToolName(),c);if(g=this.filterInteractableAnnotationsForElement(c,g),!(g!=null&&g.length))return;const v=g.find(T=>this.isPointNearTool(c,T,l.currentPoints.canvas,6));if(!v)return;const _=v;this.configuration.changeTextCallback(v,i.detail,this._doneChangingTextCallback.bind(this,c,_)),this.editData=null,this.isDrawing=!1,i.stopImmediatePropagation(),i.preventDefault()},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I,{handles:V,text:U}=L,{points:j,activeHandleIndex:z}=V;T.annotationUID=R;const{color:$,lineWidth:K,lineDash:X,markerSize:ee}=this.getAnnotationStyle({annotation:I,styleSpecifier:T}),ne=j.map(it=>g.worldToCanvas(it));let le;if(!da(R)&&!this.editData&&z!==null&&(le=[ne[z]]),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(R))continue;le&&$o(l,R,"0",ne,{color:$,lineWidth:K});const ce="1";if(this.configuration.arrowFirst?C9(l,R,ce,ne[1],ne[0],{color:$,width:K,lineDash:X,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:ee}):C9(l,R,ce,ne[0],ne[1],{color:$,width:K,lineDash:X,viaMarker:this.configuration.arrowHeadStyle!=="legacy",markerSize:ee}),c=!0,!U)continue;const ge=this.getLinkedTextBoxStyle(T,I);if(!ge.visibility){L.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}if(!L.handles.textBox.hasMoved){const it=ne[1];L.handles.textBox.worldPosition=g.canvasToWorld(it)}const pe=g.worldToCanvas(L.handles.textBox.worldPosition),Te=A2(l,R,"1",[U],pe,ne,{},ge),{x:Ve,y:Pe,width:je,height:Je}=Te;L.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([Ve,Pe]),topRight:g.canvasToWorld([Ve+je,Pe]),bottomLeft:g.canvasToWorld([Ve,Pe+Je]),bottomRight:g.canvasToWorld([Ve+je,Pe+Je])}}return c}}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;let v=!1,_;i.worldPosition?v=!0:_=g.handles.points.findIndex(R=>R===i);const T=fi(c,this.getToolName());this.editData={annotation:o,viewportIdsToRender:T,handleIndex:_,movingTextBox:v},this._activateModify(c),Oi(c);const P=_n(c),{renderingEngine:I}=P;Un(T),e.preventDefault()}_doneChangingTextCallback(e,o,i){o.data.text=i,_n(e);const l=fi(e,this.getToolName());Un(l),C0(o,e)}_isInsideVolume(e,o,i){return Qo(e,i)&&Qo(o,i)}};j6.toolName="ArrowAnnotate",j6.hydrate=(e,o,i,l)=>{const c=yo(e);if(!c)return;const{FrameOfReferenceUID:g,referencedImageId:v,viewPlaneNormal:_,instance:T,viewport:P}=j6.hydrateBase(j6,c,o,l),{toolInstance:I,...R}=l||{},L={annotationUID:(l==null?void 0:l.annotationUID)||H0(),data:{text:i||"",handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:T.getToolName(),viewPlaneNormal:_,FrameOfReferenceUID:g,referencedImageId:v,...R}};_0(L,P.element),Un([P.id])};let Ih=j6;function txe(n){return n(prompt("Enter your annotation:"))}function nxe(n,e,o){return o(prompt("Enter your annotation:"))}const z6=class z6 extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,showAngleArc:!1,arcOffset:5,preventHandleOutsideImage:!1,getTextLines:rxe}}){super(e,o),this.addNewAnnotation=i=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;Oi(g),this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V,...T.getViewReference({points:[v]})},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I,R]=T.handles.points,L=_.worldToCanvas(P),V=_.worldToCanvas(I),U={start:{x:L[0],y:L[1]},end:{x:V[0],y:V[1]}};if(za([U.start.x,U.start.y],[U.end.x,U.end.y],[c[0],c[1]])<=g)return!0;if(!R)return!1;const z=_.worldToCanvas(R),$={start:{x:V[0],y:V[1]},end:{x:z[0],y:z[1]}};return za([$.start.x,$.start.y],[$.end.x,$.end.y],[c[0],c[1]])<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g);const _=_n(g),{renderingEngine:T}=_;Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;if(this.angleStartedNotYetCompleted&&P.handles.points.length===2){this.editData.handleIndex=2;return}this.angleStartedNotYetCompleted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c),{renderingEngine:R}=I;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),this.doneEditMemo(),_&&lo(g),this.editData=null,this.isDrawing=!1},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,newAnnotation:P}=this.editData,{data:I}=g;if(this.createMemo(c,g,{newAnnotation:P}),T){const{deltaPoints:V}=l,U=V.world,{textBox:j}=I.handles,{worldPosition:z}=j;z[0]+=U[0],z[1]+=U[1],z[2]+=U[2],j.hasMoved=!0}else if(_===void 0){const{deltaPoints:V}=l,U=V.world;I.handles.points.forEach(z=>{z[0]+=U[0],z[1]+=U[1],z[2]+=U[2]}),g.invalidated=!0}else{const{currentPoints:V}=l,U=V.world;I.handles.points[_]=[...U],g.invalidated=!0}this.editData.hasMoved=!0;const R=_n(c),{renderingEngine:L}=R;Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,this.angleStartedNotYetCompleted=!1,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(i,l)=>{var R;let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let L=0;L<_.length;L++){const V=_[L],{annotationUID:U,data:j}=V,{points:z,activeHandleIndex:$}=j.handles;I.annotationUID=U;const{color:K,lineWidth:X,lineDash:ee,angleArcLineDash:ne}=this.getAnnotationStyle({annotation:V,styleSpecifier:I}),le=z.map(Ke=>g.worldToCanvas(Ke));!j.cachedStats[T]||j.cachedStats[T].angle==null?(j.cachedStats[T]={angle:null},this._calculateCachedStats(V,P,i)):V.invalidated&&this._throttledCalculateCachedStats(V,P,i);let ce;if(!da(V.annotationUID)&&!this.editData&&$!==null&&(ce=[le[$]]),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(U))continue;ce&&$o(l,U,"0",le,{color:K,lineDash:ee,lineWidth:X});let ge="1";if(V0(l,U,ge,le[0],le[1],{color:K,width:X,lineDash:ee}),c=!0,le.length!==3)return c;if(ge="2",V0(l,U,ge,le[1],le[2],{color:K,width:X,lineDash:ee}),this.configuration.showAngleArc){const Ke=le[1],qe=this.configuration.arcOffset,ut=Math.min(za([Ke[0],Ke[1]],[le[0][0],le[0][1]],[le[2][0],le[2][1]]),za([Ke[0],Ke[1]],[le[2][0],le[2][1]],[le[0][0],le[0][1]]))/qe,wt=[];let Et=Math.atan2(le[0][1]-Ke[1],le[0][0]-Ke[0]),qt=Math.atan2(le[2][1]-Ke[1],le[2][0]-Ke[0]);if(qtMath.PI){const Dn=Et;Et=qt,qt=Dn+2*Math.PI}const Jt=32;for(let Dn=0;Dn<=Jt;Dn++){const Nn=Et+Dn/Jt*(qt-Et);wt.push([Ke[0]+ut*Math.cos(Nn),Ke[1]+ut*Math.sin(Nn)])}dh(l,U,"3",wt,{color:K,width:X,lineDash:ne})}if(!((R=j.cachedStats[T])!=null&&R.angle))continue;const pe=this.getLinkedTextBoxStyle(I,V);if(!pe.visibility){j.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const we=this.configuration.getTextLines(j,T);if(!j.handles.textBox.hasMoved){const Ke=le[1];j.handles.textBox.worldPosition=g.canvasToWorld(Ke)}const Te=g.worldToCanvas(j.handles.textBox.worldPosition),Pe=A2(l,U,"1",we,Te,le,{},pe),{x:je,y:Je,width:it,height:Ge}=Pe;j.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([je,Je]),topRight:g.canvasToWorld([je+it,Je]),bottomLeft:g.canvasToWorld([je,Je+Ge]),bottomRight:g.canvasToWorld([je+it,Je+Ge])}}return c},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;let v=!1,_;i.worldPosition?v=!0:_=g.handles.points.findIndex(R=>R===i);const T=fi(c,this.getToolName());this.editData={annotation:o,viewportIdsToRender:T,handleIndex:_,movingTextBox:v},this._activateModify(c),Oi(c);const P=_n(c),{renderingEngine:I}=P;Un(T),e.preventDefault()}_calculateCachedStats(e,o,i){const l=e.data,{element:c}=i.viewport;if(l.handles.points.length!==3)return;const g=l.handles.points[0],v=l.handles.points[1],_=l.handles.points[2],{cachedStats:T}=l,P=Object.keys(T);for(let R=0;Rqs(j,z)).some(z=>!Qo(z,U)),T[L]={angle:isNaN(V)?"Incomplete Angle":V}}const I=e.invalidated;return e.invalidated=!1,I&&C0(e,c,n0.StatsUpdated),T}};z6.toolName="Angle",z6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=z6.hydrateBase(z6,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let wD=z6;function rxe(n,e){const o=n.cachedStats[e],{angle:i}=o;return i===void 0?void 0:isNaN(i)?[`${i}`]:[`${E0(i)} °`]}const ixe=(...n)=>{const e=n[0].length===2?[0,0]:[0,0,0],o=n.length;for(const i of n)e[0]+=i[0]/o,e[1]+=i[1]/o,e.length===3&&(e[2]+=i[2]/o);return e},Kf=ixe,oR=class oR extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:oxe,showArcLines:!1}}){super(e,o),this.addNewAnnotation=i=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;Oi(g),this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V,...T.getViewReference({points:[v]})},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,{distanceToPoint:P,distanceToPoint2:I}=this.distanceToLines({viewport:_,points:T.handles.points,canvasCoords:c,proximity:g});return P<=g||I<=g},this.toolSelectedCallback=(i,l,c,g,v=6)=>{const _=i.detail,{element:T}=_;l.highlighted=!0;const P=fi(T,this.getToolName()),I=_n(T),{renderingEngine:R,viewport:L}=I,{isNearFirstLine:V,isNearSecondLine:U}=this.distanceToLines({viewport:L,points:l.data.handles.points,canvasCoords:g,proximity:v});this.editData={annotation:l,viewportIdsToRender:P,movingTextBox:!1,isNearFirstLine:V,isNearSecondLine:U},this._activateModify(T),Oi(T),Un(P),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;if(this.doneEditMemo(),this.angleStartedNotYetCompleted&&P.handles.points.length<4){Zi(c),this.editData.handleIndex=P.handles.points.length;return}this.angleStartedNotYetCompleted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c),{renderingEngine:R}=I;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g),this.editData=null,this.isDrawing=!1},this._mouseDownCallback=i=>{const{annotation:l,handleIndex:c}=this.editData,g=i.detail,{element:v,currentPoints:_}=g,T=_.world,{data:P}=l;if(c===1){P.handles.points[1]=T,this.editData.hasMoved=P.handles.points[1][0]!==P.handles.points[0][0]||P.handles.points[1][1]!==P.handles.points[0][0];return}if(c===3){P.handles.points[3]=T,this.editData.hasMoved=P.handles.points[3][0]!==P.handles.points[2][0]||P.handles.points[3][1]!==P.handles.points[2][0],this.angleStartedNotYetCompleted=!1;return}this.editData.hasMoved=!1,Oi(v),P.handles.points[2]=P.handles.points[3]=T,this.editData.handleIndex=P.handles.points.length-1},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T,isNearFirstLine:P,isNearSecondLine:I,newAnnotation:R}=this.editData;this.createMemo(c,g,{newAnnotation:R});const{data:L}=g;if(T){const{deltaPoints:j}=l,z=j.world,{textBox:$}=L.handles,{worldPosition:K}=$;K[0]+=z[0],K[1]+=z[1],K[2]+=z[2],$.hasMoved=!0}else if(_===void 0&&(P||I)){const{deltaPoints:j}=l,z=j.world,$=L.handles.points;P?[$[0],$[1]].forEach(X=>{X[0]+=z[0],X[1]+=z[1],X[2]+=z[2]}):I&&[$[2],$[3]].forEach(X=>{X[0]+=z[0],X[1]+=z[1],X[2]+=z[2]}),g.invalidated=!0}else{const{currentPoints:j}=l,z=j.world;L.handles.points[_]=[...z],g.invalidated=!0}this.editData.hasMoved=!0;const V=_n(c),{renderingEngine:U}=V;Un(v),g.invalidated&&C0(g,c,n0.HandlesUpdated)},this.cancel=i=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;v.handles.points.length<4&&A0(l.annotationUID),l.highlighted=!1,v.handles.activeHandleIndex=null;const _=_n(i),{renderingEngine:T}=_;return Un(c),g&&lo(l),this.editData=null,this.angleStartedNotYetCompleted=!1,l.annotationUID},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_START,this._mouseDownCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_START,this._mouseDownCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_START,this._mouseDownCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.MOUSE_DOWN,this._mouseDownCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_START,this._mouseDownCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{var R;let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let L=0;L<_.length;L++){const V=_[L],{annotationUID:U,data:j}=V,{points:z,activeHandleIndex:$}=j.handles;I.annotationUID=U;const{color:K,lineWidth:X,lineDash:ee}=this.getAnnotationStyle({annotation:V,styleSpecifier:I}),ne=z.map(Nn=>g.worldToCanvas(Nn));!j.cachedStats[T]||j.cachedStats[T].angle==null?(j.cachedStats[T]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},this._calculateCachedStats(V,P,i)):V.invalidated&&this._throttledCalculateCachedStats(V,P,i);let le;if(!da(U)&&!this.editData&&$!==null&&(le=[ne[$]]),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;if(!Ys(U))continue;le&&$o(l,U,"0",ne,{color:K,lineDash:ee,lineWidth:X});const ce=[ne[0],ne[1]],ge=[ne[2],ne[3]];let pe="line1";if(V0(l,U,pe,ce[0],ce[1],{color:K,width:X,lineDash:ee}),c=!0,ne.length<4)return c;pe="line2",V0(l,U,pe,ge[0],ge[1],{color:K,width:X,lineDash:ee}),pe="linkLine";const we=Kf(ce[0],ce[1]),Te=Kf(ge[0],ge[1]);V0(l,U,pe,we,Te,{color:K,lineWidth:"1",lineDash:"1,4"});const{arc1Start:Ve,arc1End:Pe,arc2End:je,arc2Start:Je}=j.cachedStats[T].points.canvas,{arc1Angle:it,arc2Angle:Ge}=j.cachedStats[T];if(this.configuration.showArcLines&&(pe="arc1",V0(l,U,pe,Ve,Pe,{color:K,lineWidth:"1"}),pe="arc2",V0(l,U,pe,Je,je,{color:K,lineWidth:"1"})),!((R=j.cachedStats[T])!=null&&R.angle))continue;const Ke=this.getLinkedTextBoxStyle(I,V);if(!Ke.visibility){j.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const qe=this.configuration.getTextLines(j,T);if(!j.handles.textBox.hasMoved){const Nn=Pl(ne);j.handles.textBox.worldPosition=g.canvasToWorld(Nn)}const ut=g.worldToCanvas(j.handles.textBox.worldPosition),Et=A2(l,U,"cobbAngleText",qe,ut,ne,{},Ke),{x:qt,y:$t,width:Jt,height:Dn}=Et;if(j.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([qt,$t]),topRight:g.canvasToWorld([qt+Jt,$t]),bottomLeft:g.canvasToWorld([qt,$t+Dn]),bottomRight:g.canvasToWorld([qt+Jt,$t+Dn])},this.configuration.showArcLines){const Nn="arcAngle1",xn=[`${it.toFixed(2)} °`],et=Kf(Ve,Pe);e4(l,U,Nn,xn,et,{...Ke,padding:3});const Me="arcAngle2",ct=[`${Ge.toFixed(2)} °`],st=Kf(Je,je);e4(l,U,Me,ct,st,{...Ke,padding:3})}}return c},this.distanceToLines=({viewport:i,points:l,canvasCoords:c,proximity:g})=>{const[v,_,T,P]=l,I=i.worldToCanvas(v),R=i.worldToCanvas(_),L=i.worldToCanvas(T),V=i.worldToCanvas(P),U={start:{x:I[0],y:I[1]},end:{x:R[0],y:R[1]}},j={start:{x:L[0],y:L[1]},end:{x:V[0],y:V[1]}},z=za([U.start.x,U.start.y],[U.end.x,U.end.y],[c[0],c[1]]),$=za([j.start.x,j.start.y],[j.end.x,j.end.y],[c[0],c[1]]);let K=!1,X=!1;return z<=g?K=!0:$<=g&&(X=!0),{distanceToPoint:z,distanceToPoint2:$,isNearFirstLine:K,isNearSecondLine:X}},this.getArcsStartEndPoints=({firstLine:i,secondLine:l,mid1:c,mid2:g})=>{const v=[c,g],_=a8(i,v),T=a8(l,v),P=_>90?1:0,I=T>90?0:1,R=Kf(v[0],v[1]),L=Math.sqrt((v[1][0]-v[0][0])**2+(v[1][1]-v[0][1])**2),V=.1,U=Kf(i[0],i[1]),j=Kf(l[0],l[1]),z=[i[P][0]-U[0],i[P][1]-U[1]],$=Math.sqrt(z[0]**2+z[1]**2),K=[z[0]/$,z[1]/$],X=[U[0]+K[0]*L*V,U[1]+K[1]*L*V],ee=[R[0]-c[0],R[1]-c[1]],ne=Math.sqrt(ee[0]**2+ee[1]**2),le=[ee[0]/ne,ee[1]/ne],ce=[c[0]+le[0]*L*V,c[1]+le[1]*L*V],ge=[l[I][0]-j[0],l[I][1]-j[1]],pe=Math.sqrt(ge[0]**2+ge[1]**2),we=[ge[0]/pe,ge[1]/pe],Te=[j[0]+we[0]*L*V,j[1]+we[1]*L*V],Ve=[R[0]-g[0],R[1]-g[1]],Pe=Math.sqrt(Ve[0]**2+Ve[1]**2),je=[Ve[0]/Pe,Ve[1]/Pe],Je=[g[0]+je[0]*L*V,g[1]+je[1]*L*V];return{arc1Start:X,arc1End:ce,arc2Start:Te,arc2End:Je,arc1Angle:_>90?180-_:_,arc2Angle:T>90?180-T:T}},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,25,{trailing:!0})}handleSelectedCallback(e,o,i,l="mouse"){const c=e.detail,{element:g}=c,{data:v}=o;o.highlighted=!0;let _=!1,T;i.worldPosition?_=!0:T=v.handles.points.findIndex(I=>I===i);const P=fi(g,this.getToolName());this.editData={annotation:o,viewportIdsToRender:P,handleIndex:T,movingTextBox:_},this._activateModify(g),Oi(g),Un(P),e.preventDefault()}_calculateCachedStats(e,o,i){const l=e.data;if(l.handles.points.length!==4)return;const c=[null,null],g=[null,null];let v=Number.MAX_VALUE;for(let ce=0;ce<2;ce+=1)for(let ge=2;ge<4;ge+=1){const pe=y2(l.handles.points[ce],l.handles.points[ge]);pe_.worldToCanvas(ce)),I=[P[0],P[1]],R=[P[2],P[3]],L=Kf(I[0],I[1]),V=Kf(R[0],R[1]),{arc1Start:U,arc1End:j,arc2End:z,arc2Start:$,arc1Angle:K,arc2Angle:X}=this.getArcsStartEndPoints({firstLine:I,secondLine:R,mid1:L,mid2:V}),{cachedStats:ee}=l,ne=Object.keys(ee);for(let ce=0;ce{if(this.startedDrawing)return;this.startedDrawing=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;if(!(T instanceof ts))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");Oi(g),this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=this.getReferencedImageId(T,v,R,L),U=T.getFrameOfReferenceUID(),j={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:U,referencedImageId:V},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};_0(j,g);const z=fi(g,this.getToolName());return this.editData={annotation:j,viewportIdsToRender:z,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(z),j},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I]=T.handles.points,R=_.worldToCanvas(P),L=_.worldToCanvas(I),V={start:{x:R[0],y:R[1]},end:{x:L[0],y:L[1]}};return za([V.start.x,V.start.y],[V.end.x,V.end.y],[c[0],c[1]])<=g},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;if(this.startedDrawing&&P.handles.points.length===1){this.editData.handleIndex=1;return}this.startedDrawing=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c),{renderingEngine:R}=I;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g),this.editData=null,this.isDrawing=!1},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_,movingTextBox:T}=this.editData,{data:P}=g;if(T){const{deltaPoints:L}=l,V=L.world,{textBox:U}=P.handles,{worldPosition:j}=U;j[0]+=V[0],j[1]+=V[1],j[2]+=V[2],U.hasMoved=!0}else if(_===void 0){const{deltaPoints:L}=l,V=L.world;P.handles.points.forEach(j=>{j[0]+=V[0],j[1]+=V[1],j[2]+=V[2]}),g.invalidated=!0}else{const{currentPoints:L}=l,V=L.world;P.handles.points[_]=[...V],g.invalidated=!0}this.editData.hasMoved=!0;const I=_n(c),{renderingEngine:R}=I;Un(v)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,this.startedDrawing=!1,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T=this.getTargetId(g),P=g.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j}=U.handles;I.annotationUID=V;const z=this.getStyle("color",I,L),$=j.map(Pe=>g.worldToCanvas(Pe));if(!U.cachedStats[T]||U.cachedStats[T].xValues==null?(U.cachedStats[T]={xValues:[0,0],yValues:[0,0],isHorizontal:!1,units:[""],isUnitless:!1},this._calculateCachedStats(L,P,i)):L.invalidated&&this._throttledCalculateCachedStats(L,P,i),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let K="0";if(w9(l,V,K,$[0],{color:z},0),c=!0,$.length!==2)return c;if(K="1",w9(l,V,K,$[1],{color:z},1),U.cachedStats[T].isUnitless){const Pe=`${V}-line-1`;V0(l,V,"1",$[0],$[1],{color:z,width:1,shadow:this.configuration.shadow},Pe)}else{const Pe=$[0],je=$[1],Je=je[1]-Pe[1],it=je[0]-Pe[0],Ge=U.cachedStats[T].isHorizontal;let Ke=[0,0];Ge?Ke=[Pe[0]+it,Pe[1]]:Ke=[Pe[0],Pe[1]+Je];let qe=`${V}-line-1`,ut="1";V0(l,V,ut,$[0],Ke,{color:z,width:1,shadow:this.configuration.shadow},qe),qe=`${V}-line-2`,ut="2",V0(l,V,ut,$[1],Ke,{color:z,width:1,lineDash:[1,1],shadow:this.configuration.shadow},qe)}const ee=this.getLinkedTextBoxStyle(I,L);if(!ee.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const ne=this.configuration.getTextLines(U,T,this.configuration);if(!U.handles.textBox.hasMoved){const Pe=$[1];U.handles.textBox.worldPosition=g.canvasToWorld(Pe)}const le=g.worldToCanvas(U.handles.textBox.worldPosition),ge=A2(l,V,"1",ne,le,$,{},ee),{x:pe,y:we,width:Te,height:Ve}=ge;U.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([pe,we]),topRight:g.canvasToWorld([pe+Te,we]),bottomLeft:g.canvasToWorld([pe,we+Ve]),bottomRight:g.canvasToWorld([pe+Te,we+Ve])}}return c},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}toolSelectedCallback(e,o,i,l){}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;const v=fi(c,this.getToolName());let _;i.worldPosition||(_=g.handles.points.findIndex(I=>I===i)),this.editData={handleIndex:_,annotation:o,viewportIdsToRender:v},this._activateModify(c),Oi(c);const T=_n(c),{renderingEngine:P}=T;Un(v),e.preventDefault()}_calculateCachedStats(e,o,i){const l=e.data,{element:c}=i.viewport;if(l.handles.points.length!==2)return;const{cachedStats:g}=l,v=Object.keys(g);for(let T=0;TMath.abs(Te),ee=[z[0],K[0]],ne=[z[1],K[1]],le=[$[0],$[1]]}g[P]={xValues:ee,yValues:ne,isHorizontal:ce,units:le,isUnitless:ge}}const _=e.invalidated;return e.invalidated=!1,_&&C0(e,c,n0.StatsUpdated),g}};sR.toolName="UltrasoundDirectionalTool";let _D=sR;function sxe(n,e,o){const i=n.cachedStats[e],{xValues:l,yValues:c,units:g,isUnitless:v,isHorizontal:_}=i;if(v)return[`${E0(l[0])} px`];if(o.displayBothAxesDistances){const T=Math.abs(l[1]-l[0]),P=Math.abs(c[1]-c[0]);return[`${E0(T)} ${g[0]}`,`${E0(P)} ${g[1]}`]}if(_){const T=Math.abs(l[1]-l[0]);return[`${E0(T)} ${g[0]}`]}else{const T=Math.abs(c[1]-c[0]);return[`${E0(T)} ${g[1]}`]}}function axe(n){return(n%360+360)%360}function xD(n,e){const o=e[0]-n[0],i=e[1]-n[1],l=Math.atan2(i,o)*(180/Math.PI);return axe(l)}function U9(n,e){const o=xD(n,e[0]),i=xD(n,e[1]);return oo[0]-i[0]);const e=[n[0].slice()];for(let o=1;o[Math.max(P,o),Math.min(I,i)]).filter(([P,I])=>I>P);if(l.length===0)return[[o,i]];l.sort((P,I)=>P[0]-I[0]);const c=[];let[g,v]=l[0];for(let P=1;PT&&_.push([T,P]),T=Math.max(T,I);return TU9(n,P)),l=SD(i),c=l.reduce((P,[I,R])=>P+(R-I),0);if(c===0)return 0;const g=[];for(const P of o){const I=U9(n,P),R=IY(I,l);g.push(...R)}const T=SD(g).reduce((P,[I,R])=>P+(R-I),0)/c*100;return Math.min(100,Math.max(0,T))}const{transformIndexToWorld:Vb}=J0,cs=class cs extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:uxe,center:null,innerRadius:null,outerRadius:null,startAngle:null,endAngle:null,bLineColor:"rgb(60, 255, 60)",pleuraColor:"rgb(0, 4, 255)",drawDepthGuide:!0,depth_ratio:.5,depthGuideColor:"rgb(0, 255, 255)",depthGuideThickness:4,depthGuideDashLength:20,depthGuideDashGap:16,depthGuideOpacity:.2,fanOpacity:.1,showFanAnnotations:!0,updatePercentageCallback:null,actions:{undo:{method:"undo",bindings:[{key:"z"}]},redo:{method:"redo",bindings:[{key:"y"}]}}}}){super(e,o),this.pleuraAnnotations=[],this.bLineAnnotations=[],this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;Oi(g),this.isDrawing=!0;const{viewPlaneNormal:P,viewUp:I,position:R}=T.getCamera(),L=this.getReferencedImageId(T,v,P,I),V={highlighted:!0,invalidated:!0,metadata:{...T.getViewReference({points:[v]}),toolName:this.getToolName(),referencedImageId:L,viewUp:I,cameraPosition:R},data:{handles:{points:[[...v],[...v]],activeHandleIndex:null},annotationType:this.getActiveAnnotationType(),label:""}};_0(V,g);const U=fi(g,this.getToolName());return this.editData={annotation:V,viewportIdsToRender:U,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),i.preventDefault(),Un(U),V},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l,[P,I]=T.handles.points,R=_.worldToCanvas(P),L=_.worldToCanvas(I),V={start:{x:R[0],y:R[1]},end:{x:L[0],y:L[1]}};return za([V.start.x,V.start.y],[V.end.x,V.end.y],[c[0],c[1]])<=g},this.toolSelectedCallback=(i,l)=>{const c=i.detail,{element:g}=c;l.highlighted=!0;const v=fi(g,this.getToolName());this.editData={annotation:l,viewportIdsToRender:v,movingTextBox:!1},this._activateModify(g),Oi(g),Un(v),i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;_&&!T||(P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),this.doneEditMemo(),_&&lo(g),this.editData=null,this.isDrawing=!1)},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{viewport:g}=_n(c)||{};if(!g)return;const{annotation:v,viewportIdsToRender:_,handleIndex:T,movingTextBox:P,newAnnotation:I}=this.editData,{data:R}=v;if(this.createMemo(c,v,{newAnnotation:I}),P){const{deltaPoints:L}=l,V=L.world,{textBox:U}=R.handles,{worldPosition:j}=U;j[0]+=V[0],j[1]+=V[1],j[2]+=V[2],U.hasMoved=!0}else if(T===void 0){const{deltaPoints:L}=l,V=L.world,U=R.handles.points;U.every(z=>{const $=[z[0]+V[0],z[1]+V[1],z[2]+V[2]];return this.isInsideFanShape(g,$)})&&(U.forEach(z=>{z[0]+=V[0],z[1]+=V[1],z[2]+=V[2]}),v.invalidated=!0)}else{const{currentPoints:L}=l,V=L.world;this.isInsideFanShape(g,V)&&(R.handles.points[T]=[...V],v.invalidated=!0)}this.editData.hasMoved=!0,Un(_),v.invalidated&&C0(v,c,n0.HandlesUpdated)},this.cancel=i=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(i),this._deactivateModify(i),Zi(i);const{annotation:l,viewportIdsToRender:c,newAnnotation:g}=this.editData,{data:v}=l;return l.highlighted=!1,v.handles.activeHandleIndex=null,Un(c),g&&lo(l),this.editData=null,l.annotationUID}},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this._activateDraw=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;if(!this.getFanShapeGeometryParameters(g))return;const{imageData:_}=g.getImageData()||{};if(!_)return c;this.configuration.drawDepthGuide&&this.drawDepthGuide(l,g);let T=O0(this.getToolName(),v);if(!(T!=null&&T.length)||(T=this.filterInteractableAnnotationsForElement(v,T),!(T!=null&&T.length)))return c;this.getTargetId(g),g.getRenderingEngine();const P={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id},I=g.worldToCanvas(Vb(_,this.configuration.center)),R=this.getIndexToCanvasRatio(g),L=this.configuration.innerRadius*R,V=this.configuration.outerRadius*R,U=g.getCurrentImageId(),j=T.filter(le=>le.data.annotationType===cs.USPleuraBLineAnnotationType.PLEURA&&le.metadata.referencedImageId===U).map(le=>{const ce=le.data.handles.points.map(pe=>g.worldToCanvas(pe));return U9(I,ce)}),z=SD(j),$=[],K=[],X=le=>{const{annotationUID:ce,data:ge}=le,{points:pe,activeHandleIndex:we}=ge.handles;P.annotationUID=ce;const{color:Te,lineWidth:Ve,lineDash:Pe,shadow:je}=this.getAnnotationStyle({annotation:le,styleSpecifier:P}),Je=pe.map(qe=>g.worldToCanvas(qe));if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let it;if(!Ys(ce))return;!da(ce)&&!this.editData&&we!==null&&(it=[Je[we]]),it&&$o(l,ce,"0",Je,{color:this.getColorForLineType(le),fill:this.getColorForLineType(le),lineDash:Pe,lineWidth:Ve});const Ge=`${ce}-line`;if(V0(l,ce,"1",Je[0],Je[1],{color:this.getColorForLineType(le),width:Ve,lineDash:Pe,shadow:je},Ge),this.configuration.showFanAnnotations){const qe=U9(I,Je);let ut=0;le.data.annotationType===cs.USPleuraBLineAnnotationType.BLINE?Fb(K,qe).forEach(Et=>{IY(Et,z).forEach($t=>{ut++;const Jt=ut,Dn=`${ce}-fan-${Jt}`,Nn=`2-${Jt}`;YE(l,ce,Nn,I,L,V,$t[0],$t[1],{color:"transparent",fill:this.getColorForLineType(le),fillOpacity:this.configuration.fanOpacity,width:Ve,lineDash:Pe,shadow:je},Dn,10),K.push($t)})}):le.data.annotationType===cs.USPleuraBLineAnnotationType.PLEURA&&Fb($,qe).forEach((Et,qt)=>{ut++;const $t=ut,Jt=`${ce}-fan-${$t}`,Dn=`2-${$t}`;YE(l,ce,Dn,I,L,V,Et[0],Et[1],{color:"transparent",fill:this.getColorForLineType(le),fillOpacity:this.configuration.fanOpacity,width:Ve,lineDash:Pe,shadow:je},Jt,5),$.push(Et)})}};return T.filter(le=>le.data.annotationType===cs.USPleuraBLineAnnotationType.PLEURA&&le.metadata.referencedImageId===U).forEach(le=>{if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;X(le)}),T.filter(le=>le.data.annotationType===cs.USPleuraBLineAnnotationType.BLINE&&le.metadata.referencedImageId===U).forEach(le=>{if(!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;X(le)}),c=!0,this.configuration.updatePercentageCallback&&g&&this.configuration.updatePercentageCallback(this.calculateBLinePleuraPercentage(g)),c},this.activeAnnotationType=cs.USPleuraBLineAnnotationType.BLINE}static filterAnnotations(e,o=()=>!0){const i=O0(cs.toolName,e);return i!=null&&i.length?i.filter(c=>{const g=c.metadata.referencedImageId;return o(g)}):[]}static countAnnotations(e,o=()=>!0){const i=O0(cs.toolName,e),{viewport:l}=_n(e),c=l.getImageIds(),g=_=>{const T=c.findIndex(P=>P===_);return T===-1?0:T};if(!(i!=null&&i.length))return;const v=new Map;return i.forEach(_=>{const T=_.metadata.referencedImageId;if(!o(T))return;const{annotationType:P}=_.data;let I;v.has(T)?I=v.get(T):I={frame:g(T),bLine:0,pleura:0},P===cs.USPleuraBLineAnnotationType.PLEURA?I.pleura++:P===cs.USPleuraBLineAnnotationType.BLINE&&I.bLine++,v.set(T,I)}),v}static deleteAnnotations(e,o=()=>!1){const i=O0(cs.toolName,e);i!=null&&i.length&&i.forEach(l=>{o(l.metadata.referencedImageId)&&A0(l.annotationUID)})}setActiveAnnotationType(e){this.activeAnnotationType=e}getActiveAnnotationType(){return this.activeAnnotationType}deleteLastAnnotationType(e,o){let i;const l=O0(cs.toolName,e);if(o===cs.USPleuraBLineAnnotationType.PLEURA?i=l.filter(c=>c.data.annotationType===cs.USPleuraBLineAnnotationType.PLEURA):o===cs.USPleuraBLineAnnotationType.BLINE&&(i=l.filter(c=>c.data.annotationType===cs.USPleuraBLineAnnotationType.BLINE)),(i==null?void 0:i.length)>0){const c=i.pop();A0(c.annotationUID)}}handleSelectedCallback(e,o,i){const l=e.detail,{element:c}=l,{data:g}=o;o.highlighted=!0;let v=!1,_;i.worldPosition?v=!0:_=g.handles.points.findIndex(P=>P===i);const T=fi(c,this.getToolName());this.editData={annotation:o,viewportIdsToRender:T,handleIndex:_,movingTextBox:v},this._activateModify(c),Oi(c),Un(T),e.preventDefault()}isInsideFanShape(e,o){if(!this.getFanShapeGeometryParameters(e))return!1;const{imageData:i}=e.getImageData()||{};if(i){const l=e.worldToCanvas(i.indexToWorld(this.configuration.center)),c=e.worldToCanvas(o),g=xD(l,c);return g>=this.configuration.startAngle&&g<=this.configuration.endAngle}}updateFanGeometryConfiguration(e){e&&(this.isFanShapeGeometryParametersValid(e)&&(this.configuration.center=[e.center[0],e.center[1],0]),this.configuration.innerRadius=e.innerRadius,this.configuration.outerRadius=e.outerRadius,this.configuration.startAngle=e.startAngle,this.configuration.endAngle=e.endAngle)}deriveFanGeometryFromViewport(e){const o=e.getCurrentImageId(),{fanGeometry:i}=PP(o)||{};i&&this.updateFanGeometryConfiguration(i)}isFanShapeGeometryParametersValid(e){return e||(e=this.configuration),(e==null?void 0:e.center)&&(e==null?void 0:e.innerRadius)>0&&(e==null?void 0:e.outerRadius)&&(e==null?void 0:e.startAngle)>0&&(e==null?void 0:e.startAngle)<360&&(e==null?void 0:e.endAngle)>0&&(e==null?void 0:e.endAngle)<360}getFanShapeGeometryParameters(e){if(this.isFanShapeGeometryParametersValid())return!0;if(!this.isFanShapeGeometryParametersValid()){const o=e.getCurrentImageId(),i=Hr("ultrasoundFanShapeGeometry",o);this.updateFanGeometryConfiguration(i)}return this.isFanShapeGeometryParametersValid()||this.deriveFanGeometryFromViewport(e),this.isFanShapeGeometryParametersValid()}calculateBLinePleuraPercentage(e){if(!this.getFanShapeGeometryParameters(e))return;const{imageData:o}=e.getImageData()||{};if(!o)return;const{element:i}=e,l=e.worldToCanvas(o.indexToWorld(this.configuration.center)),c=e.getCurrentImageId(),g=O0(this.getToolName(),i)||[],v=g.filter(T=>T.data.annotationType===cs.USPleuraBLineAnnotationType.PLEURA&&T.metadata.referencedImageId===c).map(T=>T.data.handles.points.map(I=>e.worldToCanvas(I))),_=g.filter(T=>T.data.annotationType===cs.USPleuraBLineAnnotationType.BLINE&&T.metadata.referencedImageId===c).map(T=>T.data.handles.points.map(I=>e.worldToCanvas(I)));return lxe(l,v,_)}getColorForLineType(e){const{annotationType:o}=e.data,{bLineColor:i,pleuraColor:l}=this.configuration;return o===cs.USPleuraBLineAnnotationType.BLINE?i:o===cs.USPleuraBLineAnnotationType.PLEURA?l:i}getIndexToCanvasRatio(e){const{imageData:o}=e.getImageData()||{},i=e.worldToCanvas(o.indexToWorld([1,0,0])),l=e.worldToCanvas(o.indexToWorld([2,0,0])),c=[l[0]-i[0],l[1]-i[1]];return Math.sqrt(c[0]*c[0]+c[1]*c[1])}drawDepthGuide(e,o){if(!this.getFanShapeGeometryParameters(o))return;const{imageData:i}=o.getImageData()||{};if(!i)return;const l=V=>V*180/Math.PI,c=V=>V*Math.PI/180,g=V=>o.worldToCanvas(Vb(i,V)),v=this.configuration.innerRadius+this.configuration.depth_ratio*(this.configuration.outerRadius-this.configuration.innerRadius),_=this.configuration.startAngle,P=this.configuration.endAngle-_,I=c(P)*v;let R=Math.round(I/(this.configuration.depthGuideDashLength+this.configuration.depthGuideDashGap));R<=0&&(R=Math.max(15,Math.round(P/5)));const L=P/R;for(let V=0;V{const l=yo(e);if(!l)return;const{FrameOfReferenceUID:c,referencedImageId:g,viewPlaneNormal:v,instance:_,viewport:T}=cs.hydrateBase(cs,l,o,i),{toolInstance:P,...I}=i||{},R={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:o}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:_.getToolName(),viewPlaneNormal:v,FrameOfReferenceUID:c,referencedImageId:g,...I}};_0(R,T.element),Un([T.id])};let TD=cs;function uxe(n,e){return[""]}const Pm=class Pm extends Yo{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:cxe,changeTextCallback:fxe,canvasPosition:[10,10],canvasSize:10,handleRadius:"6",seriesLevel:!1,isPoint:!1}}){super(e,o),this.addNewAnnotation=i=>{const l=i.detail,{element:c,currentPoints:g}=l,v=_n(c),{viewport:_}=v,T=g.world,P=this.constructor.createAnnotationForViewport(_,{data:{handles:{points:[[...T]]},seriesLevel:this.configuration.seriesLevel,isPoint:this.configuration.isPoint}});_0(P,c);const I=fi(c,this.getToolName());return i.preventDefault(),Un(I),this.configuration.getTextCallback(R=>{if(!R){A0(P.annotationUID),Un(I),this.isDrawing=!1;return}P.data.text=R,lo(P),Un(I)}),this.createMemo(c,P,{newAnnotation:!0}),P},this.isPointNearTool=(i,l,c,g)=>{const v=_n(i),{viewport:_}=v,{data:T}=l;if(!(T!=null&&T.isPoint))return!1;const{canvasPosition:P,canvasSize:I}=this.configuration;return P!=null&&P.length?Math.abs(c[0]-P[0]+I/2)<=I/2&&Math.abs(c[1]-P[1]+I/2)<=I/2:!1},this.toolSelectedCallback=(i,l)=>{l.highlighted=!0,i.preventDefault()},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_}=this.editData,{viewportId:T,renderingEngine:P}=_n(c);this.eventDispatchDetail={viewportId:T,renderingEngineId:P.id},this._deactivateModify(c),Zi(c),_&&this.createMemo(c,g,{newAnnotation:_}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID),Un(v),_&&lo(g)},this.doubleClickCallback=i=>{const l=i.detail,{element:c}=l;let g=O0(this.getToolName(),c);if(g=this.filterInteractableAnnotationsForElement(c,g),!(g!=null&&g.length))return;const v=g.find(T=>this.isPointNearTool(c,T,l.currentPoints.canvas,6));if(!v)return;const _=v;this.createMemo(c,_),this.configuration.changeTextCallback(v,i.detail,this._doneChangingTextCallback.bind(this,c,_)),this.isDrawing=!1,this.doneEditMemo(),i.stopImmediatePropagation(),i.preventDefault()},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,{annotation:_,viewportIdsToRender:T,newAnnotation:P}=this.editData,{data:I}=_;this.createMemo(g,_,{newAnnotation:P}),I.handles.points[0]=[...v],_.invalidated=!0,Un(T)},this._activateModify=i=>{ar.isInteractingWithTool=!0,i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateModify=i=>{ar.isInteractingWithTool=!1,i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i,{element:v}=g;let _=O0(this.getToolName(),v);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(v,_),!(_!=null&&_.length)))return c;const T={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let P=0;P<_.length;P++){const I=_[P],{annotationUID:R,data:L}=I;T.annotationUID=R;const{color:V,lineWidth:U}=this.getAnnotationStyle({annotation:I,styleSpecifier:T}),{canvasPosition:j,canvasSize:z}=this.configuration,$="1";if(L!=null&&L.isPoint){const K=L.handles.points[0],X=g.worldToCanvas(K);$o(l,R,$,[X],{color:V,lineWidth:U,handleRadius:this.configuration.handleRadius})}else j!=null&&j.length&&C9(l,R,$,j.map(K=>K+z),j,{color:V,width:1});if(c=!0,!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c}return c}}handleSelectedCallback(e,o){const i=e.detail,{element:l}=i;o.highlighted=!0;const c=fi(l,this.getToolName());this.editData={annotation:o,viewportIdsToRender:c},this._activateModify(l),Oi(l),Un(c),e.preventDefault()}static setPoint(e,o=!e.data.isPoint,i){e.data.isPoint=o,C0(e,i)}_doneChangingTextCallback(e,o,i){o.data.text=i;const l=fi(e,this.getToolName());Un(l),C0(o,e)}cancel(e){if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),Zi(e);const{annotation:o,viewportIdsToRender:i,newAnnotation:l}=this.editData,{data:c}=o;return o.highlighted=!1,c.handles.activeHandleIndex=null,Un(i),l&&lo(o),this.editData=null,o.annotationUID}}_isInsideVolume(e,o,i){return Qo(e,i)&&Qo(o,i)}};Pm.toolName="KeyImage",Pm.dataSeries={data:{seriesLevel:!0}},Pm.dataPoint={data:{isPoint:!0}};let ED=Pm;function cxe(n){return n(prompt("Enter your annotation:"))}function fxe(n,e,o){return o(prompt("Enter your annotation:"))}class OY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"]}){super(e,o),this.preMouseDownCallback=i=>this._deleteNearbyAnnotations(i,"mouse"),this.preTouchStartCallback=i=>this._deleteNearbyAnnotations(i,"touch")}_deleteNearbyAnnotations(e,o){const{renderingEngineId:i,viewportId:l,element:c,currentPoints:g}=e.detail,v=Ss(l,i);if(!v)return!1;const _=v._toolInstances,T=[];for(const P in _){const I=_[P];if(typeof I.isPointNearTool!="function"||typeof I.filterInteractableAnnotationsForElement!="function")continue;const R=O0(P,c),L=I.filterInteractableAnnotationsForElement(c,R);if(L)for(const V of L)I.isPointNearTool(c,V,g.canvas,10,o)&&T.push(V.annotationUID)}for(const P of T){q1(P);const I=Xs(P);Yo.createAnnotationMemo(c,I,{deleting:!0}),A0(P)}return e.preventDefault(),!0}}OY.toolName="Eraser";const{transformWorldToIndex:Ub,transformIndexToWorld:hxe}=J0,Rm=class Rm extends Oa{constructor(e,o){const i=o2({configuration:{positiveStdDevMultiplier:LX,shrinkExpandIncrement:.1,islandRemoval:{enabled:!1}}},o);super(e,i)}async preMouseDownCallback(e){const o=e.detail,{element:i,currentPoints:l}=o,{world:c}=l,g=_n(i),{viewport:v,renderingEngine:_}=g,{viewUp:T}=v.getCamera(),{segmentationId:P,segmentIndex:I,labelmapVolumeId:R,referencedVolumeId:L}=await this.getLabelmapSegmentationData(v);if(!this._isOrthogonalView(v,L))throw new Error("Oblique view is not supported yet");return this.growCutData={metadata:{...v.getViewReference({points:[c]}),viewUp:T},segmentation:{segmentationId:P,segmentIndex:I,labelmapVolumeId:R,referencedVolumeId:L},viewportId:v.id,renderingEngineId:_.id},e.preventDefault(),!0}shrink(){this._runLastCommand({shrinkExpandAmount:-this.configuration.shrinkExpandIncrement})}expand(){this._runLastCommand({shrinkExpandAmount:this.configuration.shrinkExpandIncrement})}refresh(){this._runLastCommand()}async getGrowCutLabelmap(e){throw new Error("Not implemented")}async runGrowCut(){const{growCutData:e,configuration:o}=this,{segmentation:{segmentationId:i,segmentIndex:l,labelmapVolumeId:c}}=e,g=Jn.getVolume(c);let v=0;const _=async({shrinkExpandAmount:T=0}={})=>{T!==0&&(this.seeds=null),v+=T;const P=Math.max(.1,o.positiveStdDevMultiplier+v),I=T<0?Math.max(1,sD-Math.abs(v)*3):sD+v*3,R={...e,options:{...e.options||{},positiveSeedValue:l,negativeSeedValue:255,positiveStdDevMultiplier:P,negativeSeedMargin:I}},L=await this.getGrowCutLabelmap(R),{isPartialVolume:V}=o;(V?this.applyPartialGrowCutLabelmap:this.applyGrowCutLabelmap)(i,l,g,L),this._removeIslands(R)};await _(),Rm.lastGrowCutCommand=_,this.growCutData=null}applyPartialGrowCutLabelmap(e,o,i,l){const c=l.voxelManager.getCompleteScalarDataArray(),g=i.voxelManager,[v,_,T]=l.dimensions,[P,I]=i.dimensions,R=v*_,L=P*I;for(let V=0;V{v===o&&c.setAtIndex(_,v)}),K2(e)}_runLastCommand({shrinkExpandAmount:e=0}={}){const o=Rm.lastGrowCutCommand;o&&o({shrinkExpandAmount:e})}async getLabelmapSegmentationData(e){const o=Ph(e.id);if(!o)throw new Error("No active segmentation found");const{segmentationId:i}=o,l=Ol(i),{representationData:c}=io(i),g=c[Ti.Labelmap];let{volumeId:v,referencedVolumeId:_}=g;if(!v){const T=e.getImageIds();if(u4(T))v=s5(i).volumeId;else{const P=e.getCurrentImageId(),I=Jn.getImage(P),R=RE(P);_=this._createFakeVolume([I.imageId,R.imageId]).volumeId;const V=f4(e.id,i),U=RE(V);v=this._createFakeVolume([V,U.imageId]).volumeId}}if(!_){const{imageIds:T}=g,P=T.map(L=>Jn.getImage(L).referencedImageId),I=Jn.generateVolumeId(P),R=Jn.getVolume(I);_=R?R.volumeId:(await TC(I,P)).volumeId}return{segmentationId:i,segmentIndex:l,labelmapVolumeId:v,referencedVolumeId:_}}_createFakeVolume(e){const o=Jn.generateVolumeId(e),i=Jn.getVolume(o);if(i)return i;const l=SC(e,o),c=l.spacing;c[2]===0&&(c[2]=1);const g=new K8({volumeId:o,dataType:l.dataType,metadata:structuredClone(l.metadata),dimensions:l.dimensions,spacing:l.spacing,origin:l.origin,direction:l.direction,referencedVolumeId:l.referencedVolumeId,imageIds:l.imageIds,referencedImageIds:l.referencedImageIds});return Jn.putVolumeSync(o,g),g}_isOrthogonalView(e,o){const l=Jn.getVolume(o).imageData,c=e.getCamera(),{ijkVecColDir:g,ijkVecSliceDir:v}=RC(l,c);return[g,v].every(_=>Qi(Math.abs(_[0]),1)||Qi(Math.abs(_[1]),1)||Qi(Math.abs(_[2]),1))}getRemoveIslandData(e){}_removeIslands(e){const{islandRemoval:o}=this.configuration;if(!o.enabled)return;const{segmentation:{segmentIndex:i,labelmapVolumeId:l},renderingEngineId:c,viewportId:g}=e,v=Jn.getVolume(l),_=this.getRemoveIslandData(e);if(!_)return;const[T,P]=v.dimensions,I=T*P,{worldIslandPoints:R=[],islandPointIndexes:L=[]}=_;let V=[...(_==null?void 0:_.ijkIslandPoints)??[]];const j=ha(c).getViewport(g),{voxelManager:z}=v,$=new qg;V=V.concat(R.map(K=>Ub(v.imageData,K))),V=V.concat(L.map(K=>{const X=K%T,ee=Math.floor(K/T)%P,ne=Math.floor(K/I);return[X,ee,ne]})),$.initialize(j,z,{points:V,previewSegmentIndex:i,segmentIndex:i}),$.floodFillSegmentIsland(),$.removeExternalIslands(),$.removeInternalIslands()}getSegmentStyle({segmentationId:e,viewportId:o,segmentIndex:i}){return zK({segmentationId:e,segmentIndex:i,viewportId:o})}};Rm.lastGrowCutCommand=null;let N8=Rm;N8.toolName="GrowCutBaseTool";const aR=class aR extends N8{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positiveSeedVariance:.5,negativeSeedVariance:.9}}){super(e,o),this._dragCallback=i=>{const l=i.detail,{element:c,currentPoints:g}=l,{world:v}=g,_=_n(c),{viewport:T}=_;this.growCutData.circleBorderPoint=v,Un([T.id])},this._endCallback=async i=>{const l=i.detail,{element:c}=l,g=_n(c),{viewport:v}=g;this.runGrowCut(),this._deactivateDraw(c),this.growCutData=null,Zi(c),Un([v.id])},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const o=e.detail,{element:i,currentPoints:l}=o,{world:c}=l,g=_n(i),{viewport:v,renderingEngine:_}=g;return await super.preMouseDownCallback(e),Object.assign(this.growCutData,{circleCenterPoint:c,circleBorderPoint:c}),this._activateDraw(i),Oi(i),Un([v.id]),!0}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:o},renderingEngineId:i,viewportId:l,circleCenterPoint:c,circleBorderPoint:g,options:v}=e,T=ha(i).getViewport(l),P=w8(z0(nr(),c,g));return RX(o,{center:c,radius:P},T,v)}_activateDraw(e){e.addEventListener(Xe.MOUSE_UP,this._endCallback),e.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),e.addEventListener(Xe.MOUSE_CLICK,this._endCallback)}renderAnnotation(e,o){if(!this.growCutData)return;const{viewport:i}=e,{segmentation:l,circleCenterPoint:c,circleBorderPoint:g}=this.growCutData,v=i.worldToCanvas(c),_=i.worldToCanvas(g),T=Ru(a0(),_,v),P=_ie(T);if(Qi(P,0))return;const I="growcut",R="0",{color:L}=this.getSegmentStyle({segmentationId:l.segmentationId,segmentIndex:l.segmentIndex,viewportId:i.id});J1(o,I,R,v,P,{color:L})}};aR.toolName="RegionSegment";let DD=aR;const lR=class lR extends N8{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!1,positiveSeedVariance:.4,negativeSeedVariance:.9,subVolumePaddingPercentage:.1,islandRemoval:{enabled:!1}}}){super(e,o),this.mouseTimer=null,this.allowedToProceed=!1}mouseMoveCallback(e){if(this.mode!==ao.Active)return;const o=e.detail,{currentPoints:i,element:l}=o,{world:c}=i;l.style.cursor="default",this.mouseTimer!==null&&(window.clearTimeout(this.mouseTimer),this.mouseTimer=null),this.mouseTimer=window.setTimeout(()=>{this.onMouseStable(e,c,l)},this.configuration.mouseStabilityDelay||500)}async onMouseStable(e,o,i){await super.preMouseDownCallback(e);const l=Jn.getVolume(this.growCutData.segmentation.referencedVolumeId),c=NX(l,o,{})||{positiveSeedIndices:new Set,negativeSeedIndices:new Set},{positiveSeedIndices:g,negativeSeedIndices:v}=c;let _;g.size/v.size>20||v.size<30?(_="not-allowed",this.allowedToProceed=!1):(_="copy",this.allowedToProceed=!0);const T=_n(i);i&&(i.style.cursor=_,requestAnimationFrame(()=>{i.style.cursor!==_&&(i.style.cursor=_)})),this.allowedToProceed&&(this.seeds=c),T&&T.viewport&&T.viewport.render()}async preMouseDownCallback(e){if(!this.allowedToProceed)return!1;const o=e.detail,{currentPoints:i,element:l}=o;_n(l)&&(l.style.cursor="wait",requestAnimationFrame(()=>{l.style.cursor!=="wait"&&(l.style.cursor="wait")}));const{world:g}=i;return await super.preMouseDownCallback(e),this.growCutData=o2(this.growCutData,{worldPoint:g,islandRemoval:{worldIslandPoints:[g]}}),this.growCutData.worldPoint=g,this.growCutData.islandRemoval={worldIslandPoints:[g]},await this.runGrowCut(),l&&(l.style.cursor="default"),!0}getRemoveIslandData(e){const{worldPoint:o}=e;return{worldIslandPoints:[o]}}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:o},worldPoint:i,options:l}=e,{subVolumePaddingPercentage:c}=this.configuration,g={...l,subVolumePaddingPercentage:c,seeds:this.seeds};return bX({referencedVolumeId:o,worldPosition:i,options:g})}};lR.toolName="RegionSegmentPlus";let ID=lR;const dxe=[-1/0,-995],gxe=[0,1900],pxe=[1e3,1900],{transformWorldToIndex:g7,transformIndexToWorld:qS}=J0;class MY extends N8{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positivePixelRange:gxe,negativePixelRange:dxe,islandRemoval:{enabled:!0,islandPixelRange:pxe}}}){super(e,o),this._dragCallback=i=>{const l=i.detail,{element:c,currentPoints:g}=l,{world:v}=g,_=_n(c),{viewport:T}=_,P=this._getHorizontalLineWorldPoints(_,v);this.growCutData.horizontalLines[1]=P,Un([T.id])},this._endCallback=async i=>{const l=i.detail,{element:c}=l,g=_n(c),{viewport:v}=g;await this.runGrowCut(),this._deactivateDraw(c),this.growCutData=null,Zi(c),Un([v.id])},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const o=e.detail,{element:i,currentPoints:l}=o,{world:c}=l,g=_n(i),{viewport:v,renderingEngine:_}=g,T=this._getHorizontalLineWorldPoints(g,c);return await super.preMouseDownCallback(e),this.growCutData.horizontalLines=[T,T],this._activateDraw(i),Oi(i),Un([v.id]),!0}renderAnnotation(e,o){if(!this.growCutData)return;const{segmentation:i,horizontalLines:l}=this.growCutData;if(l.length!==2)return;const{viewport:c}=e,{segmentationId:g,segmentIndex:v}=i,[_,T]=l,[P,I]=_,[R,L]=T,V=[P,I,L,R].map(ne=>c.worldToCanvas(ne)),U="growCutRect",j="0",{color:z,fillColor:$,lineWidth:K,fillOpacity:X,lineDash:ee}=this.getSegmentStyle({segmentationId:g,segmentIndex:v,viewportId:c.id});mc(o,U,j,V,{color:z,fillColor:$,fillOpacity:X,lineWidth:K,lineDash:ee,closePath:!0})}async getGrowCutLabelmap(e){const{segmentation:{segmentIndex:o,referencedVolumeId:i},renderingEngineId:l,viewportId:c,horizontalLines:g}=e,_=ha(l).getViewport(c),[T,P]=g,I=[T[0],T[1],P[1],P[0]],R=Jn.getVolume(i),{topLeft:L,bottomRight:V}=this._getWorldBoundingBoxFromProjectedSquare(_,I),U=g7(R.imageData,L),j=g7(R.imageData,V),z={boundingBox:{ijkTopLeft:U,ijkBottomRight:j}},$=this.configuration,K={positiveSeedValue:o,negativeSeedValue:255,negativePixelRange:$.negativePixelRange,positivePixelRange:$.positivePixelRange};return AX(i,z,K)}getRemoveIslandData(){const{segmentation:{segmentIndex:e,referencedVolumeId:o,labelmapVolumeId:i}}=this.growCutData,l=Jn.getVolume(o),c=Jn.getVolume(i),g=l.voxelManager.getCompleteScalarDataArray(),v=c.voxelManager.getCompleteScalarDataArray(),{islandPixelRange:_}=this.configuration.islandRemoval,T=[];for(let P=0,I=v.length;P=_[0]&&R<=_[1]&&T.push(P)}return{islandPointIndexes:T}}_activateDraw(e){e.addEventListener(Xe.MOUSE_UP,this._endCallback),e.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),e.addEventListener(Xe.MOUSE_CLICK,this._endCallback)}_projectWorldPointAcrossSlices(e,o,i){const l=this._getViewportVolume(e),{dimensions:c}=l,g=g7(l.imageData,o),v=i.findIndex(P=>Qi(Math.abs(P),1));if(v===-1)throw new Error("Non-orthogonal direction vector");const _=[...g],T=[...g];return _[v]=0,T[v]=c[v]-1,[_,T]}_getCuboidIJKEdgePointsFromProjectedWorldPoint(e,o){const{viewPlaneNormal:i}=e.getCamera();return this._projectWorldPointAcrossSlices(e,o,i)}_getWorldCuboidCornerPoints(e,o){const i=[],l=this._getViewportVolume(e);return o.forEach(c=>{const v=this._getCuboidIJKEdgePointsFromProjectedWorldPoint(e,c).map(_=>qS(l.imageData,_));i.push(...v)}),i}_getWorldBoundingBoxFromProjectedSquare(e,o){const i=this._getWorldCuboidCornerPoints(e,o),l=[...i[0]],c=[...i[0]];return i.forEach(g=>{uie(l,l,g),cie(c,c,g)}),{topLeft:l,bottomRight:c}}_getViewportVolume(e){if(!(e instanceof xs))throw new Error("Viewport is not a BaseVolumeViewport");const o=e.getAllVolumeIds()[0];return Jn.getVolume(o)}_getHorizontalLineIJKPoints(e,o){const{viewport:i}=e,l=this._getViewportVolume(i),{dimensions:c}=l,g=g7(l.imageData,o),{viewUp:v,viewPlaneNormal:_}=i.getCamera(),P=ro(nr(),v,_).findIndex(L=>Qi(Math.abs(L),1)),I=[...g],R=[...g];return I[P]=0,R[P]=c[P]-1,[I,R]}_getHorizontalLineWorldPoints(e,o){const{viewport:i}=e,l=this._getViewportVolume(i),[c,g]=this._getHorizontalLineIJKPoints(e,o),v=qS(l.imageData,c),_=qS(l.imageData,g);return[v,_]}}MY.toolName="WholeBodySegment";function mxe(n,e,o=!0){const i=Object.assign({},e,{segmentIndex:0});wP(n,i)}function vxe(n,e){mxe(n,e,!0)}class PY extends Xg{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:wP,ERASE_INSIDE:vxe},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,o),this.preMouseDownCallback=i=>{if(this.isDrawing===!0)return;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_;this.isDrawing=!0;const P=T.getCamera(),{viewPlaneNormal:I,viewUp:R}=P,L=Ph(T.id);if(!L)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:V}=L,U=Ol(V),j=ip(V),z=Th(T.id,V,U),{representationData:$}=io(V),K=$[Ti.Labelmap],X={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...I],viewUp:[...R],FrameOfReferenceUID:T.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:z},data:{handles:{points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null}}},ee=fi(g,this.getToolName());if(this.editData={annotation:X,segmentIndex:U,segmentationId:V,segmentsLocked:j,segmentColor:z,viewportIdsToRender:ee,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},T instanceof xs){const{volumeId:ne}=K,le=Jn.getVolume(ne);this.editData={...this.editData,volumeId:ne,referencedVolumeId:le.referencedVolumeId}}else{const ne=f4(T.id,V);this.editData={...this.editData,imageId:ne}}return this._activateDraw(g),Oi(g),i.preventDefault(),Un(ee),!0},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,handleIndex:_}=this.editData,{data:T}=g,{currentPoints:P}=l,I=_n(c),{worldToCanvas:R,canvasToWorld:L}=I.viewport,V=P.world,{points:U}=T.handles;U[_]=[...V];let j,z,$,K,X,ee,ne,le;switch(_){case 0:case 3:j=R(U[0]),K=R(U[3]),z=[K[0],j[1]],$=[j[0],K[1]],ee=L(z),ne=L($),U[1]=ee,U[2]=ne;break;case 1:case 2:z=R(U[1]),$=R(U[2]),j=[$[0],z[1]],K=[z[0],$[1]],X=L(j),le=L(K),U[0]=X,U[3]=le;break}g.invalidated=!0,this.editData.hasMoved=!0,Un(v)},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,newAnnotation:v,hasMoved:_}=this.editData,{data:T}=g;if(v&&!_)return;T.handles.activeHandleIndex=null,this._deactivateDraw(c),Zi(c);const P=_n(c),I={...this.editData,points:T.handles.points,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(P,I),this.doneEditMemo()},this._activateDraw=i=>{i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback)},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(i,l)=>{let c=!1;if(!this.editData)return c;const{viewport:g}=i,{annotation:v}=this.editData,_=v.metadata,T=v.annotationUID,P=v.data,{points:I}=P.handles,R=I.map(U=>g.worldToCanvas(U)),L=`rgb(${_.segmentColor.slice(0,3)})`;return g.getRenderingEngine()?(sk(l,T,"0",R[0],R[3],{color:L}),c=!0,c):(console.warn("Rendering Engine has been destroyed"),c)}}}PY.toolName="RectangleScissor";class RY extends Xg{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:l_,ERASE_INSIDE:wX},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,o),this.preMouseDownCallback=i=>{if(this.isDrawing===!0)return;const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=c.canvas,T=_n(g),{viewport:P}=T;this.isDrawing=!0;const I=P.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=Ph(P.id);if(!V)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:U}=V,j=Ol(U),z=ip(U),$=Th(P.id,U,j),{representationData:K}=io(U),X=K.Labelmap;if(!X)throw new Error("No labelmap data found for the active segmentation, create one before using scissors tool");const ee={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:P.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:$},data:{handles:{points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},ne=[P.id];if(this.editData={annotation:ee,centerCanvas:_,segmentIndex:j,segmentationId:U,segmentsLocked:z,segmentColor:$,viewportIdsToRender:ne,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},P instanceof xs){const{volumeId:le}=X,ce=Jn.getVolume(le);this.editData={...this.editData,volumeId:le,referencedVolumeId:ce.referencedVolumeId}}else{const le=f4(P.id,U);this.editData={...this.editData,imageId:le}}return this._activateDraw(g),Oi(g),i.preventDefault(),Un(ne),!0},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{currentPoints:g}=l,v=g.canvas,_=_n(c),{renderingEngine:T,viewport:P}=_,{canvasToWorld:I}=P,{annotation:R,viewportIdsToRender:L,centerCanvas:V}=this.editData,{data:U}=R,j=Math.abs(v[0]-V[0]),z=Math.abs(v[1]-V[1]),$=Math.sqrt(j*j+z*z),K=[V[0],V[1]+$],X=[V[0],V[1]-$],ee=[V[0]-$,V[1]],ne=[V[0]+$,V[1]];U.handles.points=[I(K),I(X),I(ee),I(ne)],R.invalidated=!0,this.editData.hasMoved=!0,Un(L)},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,newAnnotation:v,hasMoved:_}=this.editData,{data:T}=g,{viewPlaneNormal:P,viewUp:I}=g.metadata;if(v&&!_)return;T.handles.activeHandleIndex=null,this._deactivateDraw(c),Zi(c);const R=_n(c),L={...this.editData,points:T.handles.points,viewPlaneNormal:P,viewUp:I,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(R,L),this.doneEditMemo()},this._activateDraw=i=>{i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback)},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;if(!this.editData)return c;const{viewport:g}=i,{viewportIdsToRender:v}=this.editData;if(!v.includes(g.id))return c;const{annotation:_}=this.editData,T=_.metadata,P=_.annotationUID,I=_.data,{points:R}=I.handles,L=R.map(X=>g.worldToCanvas(X)),V=L[0],U=L[1],j=[Math.floor((V[0]+U[0])/2),Math.floor((V[1]+U[1])/2)],z=Math.abs(V[1]-Math.floor((V[1]+U[1])/2)),$=`rgb(${T.segmentColor.slice(0,3)})`;return g.getRenderingEngine()?(J1(l,P,"0",j,z,{color:$}),c=!0,c):(console.warn("Rendering Engine has been destroyed"),c)}}}RY.toolName="CircleScissor";class AY extends Xg{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:kX,ERASE_INSIDE:yX},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,o),this.preMouseDownCallback=i=>{if(this.isDrawing===!0)return;this.doneEditMemo();const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=c.canvas,T=_n(g),{viewport:P}=T;this.isDrawing=!0;const I=P.getCamera(),{viewPlaneNormal:R,viewUp:L}=I,V=Ph(P.id);if(!V)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:U}=V,j=Ol(U),z=ip(U),$=Th(P.id,U,j);this.isDrawing=!0;const K={metadata:{viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:P.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:$},data:{invalidated:!0,handles:{points:[[...v],[...v],[...v],[...v]],activeHandleIndex:null},cachedStats:{},highlighted:!0}},X=[P.id];this.editData={annotation:K,centerCanvas:_,segmentIndex:j,segmentationId:U,segmentsLocked:z,segmentColor:$,toolGroupId:this.toolGroupId,viewportIdsToRender:X,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null};const{representationData:ee}=io(U),ne=this.getEditData({viewport:P,representationData:ee,segmentsLocked:z,segmentationId:U});return this.editData={...this.editData,...ne},this._activateDraw(g),Oi(g),i.preventDefault(),Un(X),!0},this._dragCallback=i=>{this.isDrawing=!0;const l=i.detail,{element:c}=l,{currentPoints:g}=l,v=g.canvas,_=_n(c),{renderingEngine:T,viewport:P}=_,{canvasToWorld:I}=P,{annotation:R,viewportIdsToRender:L,centerCanvas:V}=this.editData,{data:U}=R,j=Math.abs(v[0]-V[0]),z=Math.abs(v[1]-V[1]),$=Math.sqrt(j*j+z*z),K=[V[0],V[1]+$],X=[V[0],V[1]-$],ee=[V[0]-$,V[1]],ne=[V[0]+$,V[1]];U.handles.points=[I(K),I(X),I(ee),I(ne)],R.invalidated=!0,this.editData.hasMoved=!0,Un(L)},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,newAnnotation:v,hasMoved:_,segmentIndex:T,segmentsLocked:P}=this.editData,{data:I}=g,{viewPlaneNormal:R,viewUp:L}=g.metadata;if(v&&!_)return;g.highlighted=!1,I.handles.activeHandleIndex=null,this._deactivateDraw(c),Zi(c);const V=_n(c),U={...this.editData,points:I.handles.points,segmentIndex:T,segmentsLocked:P,viewPlaneNormal:R,viewUp:L,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(V,U),this.doneEditMemo()},this._activateDraw=i=>{i.addEventListener(Xe.MOUSE_UP,this._endCallback),i.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.addEventListener(Xe.MOUSE_CLICK,this._endCallback),i.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.addEventListener(Xe.TOUCH_END,this._endCallback),i.addEventListener(Xe.TOUCH_TAP,this._endCallback),i.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=i=>{i.removeEventListener(Xe.MOUSE_UP,this._endCallback),i.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),i.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),i.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),i.removeEventListener(Xe.TOUCH_END,this._endCallback),i.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback),i.removeEventListener(Xe.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(i,l)=>{let c=!1;if(!this.editData)return c;const{viewport:g}=i,{viewportIdsToRender:v}=this.editData;if(!v.includes(g.id))return c;const{annotation:_}=this.editData,T=_.metadata,P=_.annotationUID,I=_.data,{points:R}=I.handles,L=R.map(X=>g.worldToCanvas(X)),V=L[0],U=L[1],j=[Math.floor((V[0]+U[0])/2),Math.floor((V[1]+U[1])/2)],z=Math.abs(V[1]-Math.floor((V[1]+U[1])/2)),$=`rgb(${T.segmentColor.slice(0,3)})`;return g.getRenderingEngine()?(J1(l,P,"0",j,z,{color:$}),c=!0,c):(console.warn("Rendering Engine has been destroyed"),c)}}}AY.toolName="SphereScissor";const{transformWorldToIndex:I3}=J0;class LY extends N9{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!0,getTextLines:kxe,statsCalculator:mf,showTextBox:!1,throttleTimeout:100}}){super(e,o),this.isHandleOutsideImage=!1,this.addNewAnnotation=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T,renderingEngine:P}=_;this.isDrawing=!0;const I=T.getCamera(),{viewPlaneNormal:R,viewUp:L}=I;let V,U,j;if(T instanceof ts)throw new Error("Stack Viewport Not implemented");{const le=this.getTargetId(T);j=wf(le),U=Jn.getVolume(j),V=yh(U,v,R)}const z=l4(U,R),$=this._getStartCoordinate(v,z,R),K=this._getEndCoordinate(v,z,R),X=T.getFrameOfReferenceUID(),ee={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...R],viewUp:[...L],FrameOfReferenceUID:X,referencedImageId:V,volumeId:j,spacingInNormal:z,enabledElement:_},data:{label:"",startCoordinate:$,endCoordinate:K,handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...v],[...v]],activeHandleIndex:null},cachedStats:{pointsInVolume:[],projectionPoints:[],statistics:[]},labelmapUID:null}};this._computeProjectionPoints(ee,U),_0(ee,g);const ne=fi(g,this.getToolName());return this.editData={annotation:ee,viewportIdsToRender:ne,newAnnotation:!0,hasMoved:!1},this._activateDraw(g),Oi(g),i.preventDefault(),Un(ne),ee},this._endCallback=i=>{const l=i.detail,{element:c}=l,{annotation:g,viewportIdsToRender:v,newAnnotation:_,hasMoved:T}=this.editData,{data:P}=g;if(_&&!T)return;g.highlighted=!1,P.handles.activeHandleIndex=null,this._deactivateModify(c),this._deactivateDraw(c),Zi(c);const I=_n(c);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(g.annotationUID);const R=this.getTargetId(I.viewport),L=Jn.getVolume(R.split(/volumeId:|\?/)[1]);this._computePointsInsideVolume(g,L,R,I),Un(v),_?lo(g):C0(g,c)},this.renderAnnotation=(i,l)=>{let c=!1;const{viewport:g}=i;let v=O0(this.getToolName(),g.element);if(!(v!=null&&v.length))return c;v=e_(v,g.getCamera());const _={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:i.viewport.id};for(let T=0;Tg.worldToCanvas(qt)),ne=ee[0],le=Gd(ee),{centerPointRadius:ce}=this.configuration,ge=o8(ee),pe=g.getCamera().focalPoint,we=g.getCamera().viewPlaneNormal;let Te=V,Ve=U;Array.isArray(V)&&(Te=this._getCoordinateForViewplaneNormal(Te,we),R.startCoordinate=Te),Array.isArray(U)&&(Ve=this._getCoordinateForViewplaneNormal(Ve,we),R.endCoordinate=Ve);const Pe=Od(R.startCoordinate),je=Od(R.endCoordinate),Je=this._getCoordinateForViewplaneNormal(pe,we),it=Od(Je);if(itMath.max(Pe,je))continue;const Ge=Od((R.startCoordinate+R.endCoordinate)/2);let Ke=!1;if(it===Ge&&(Ke=!0),R.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(we)]=Ge,P.invalidated&&this._throttledCalculateCachedStats(P,i),!g.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),c;let qe;if(!Ys(I))continue;!da(I)&&!this.editData&&z!==null&&Ke&&(qe=[ee[z]]),qe&&$o(l,I,"0",qe,{color:X});let ut=$,wt=K;Ke?(ut=$,wt=[]):wt=[5,5];const Et="0";if(J1(l,I,Et,ne,le,{color:X,lineDash:wt,lineWidth:ut}),ce>0&&le>3*ce&&J1(l,I,`${Et}-center`,ne,ce,{color:X,lineDash:K,lineWidth:$}),c=!0,this.configuration.showTextBox){const qt=this.getLinkedTextBoxStyle(_,P);if(!qt.visibility){R.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const $t=this.configuration.getTextLines(R,{metadata:L});if(!$t||$t.length===0)continue;let Jt;R.handles.textBox.hasMoved||(Jt=Pl(ge),R.handles.textBox.worldPosition=g.canvasToWorld(Jt));const Dn=g.worldToCanvas(R.handles.textBox.worldPosition),xn=A2(l,I,"1",$t,Dn,ee,{},qt),{x:et,y:Me,width:ct,height:st}=xn;R.handles.textBox.worldBoundingBox={topLeft:g.canvasToWorld([et,Me]),topRight:g.canvasToWorld([et+ct,Me]),bottomLeft:g.canvasToWorld([et,Me+st]),bottomRight:g.canvasToWorld([et+ct,Me+st])}}}return c},this.configuration.calculatePointsInsideVolume?this._throttledCalculateCachedStats=v1(this._calculateCachedStatsTool,this.configuration.throttleTimeout,{trailing:!0}):this._throttledCalculateCachedStats=Z8(this._calculateCachedStatsTool,this.configuration.throttleTimeout)}_computeProjectionPoints(e,o){const{data:i,metadata:l}=e,{viewPlaneNormal:c,spacingInNormal:g}=l,{imageData:v}=o,{startCoordinate:_,endCoordinate:T}=i,{points:P}=i.handles,I=I3(v,P[0]),R=I3(v,P[0]),L=Ou(P),V=nr();v.indexToWorldVec3(I,V);const U=nr();v.indexToWorldVec3(R,U),this._getIndexOfCoordinatesForViewplaneNormal(c)==2?(V[2]=_,U[2]=T,L[0][2]=_,L[1][2]=_):this._getIndexOfCoordinatesForViewplaneNormal(c)==0?(V[0]=_,U[0]=T,L[0][0]=_,L[1][0]=_):this._getIndexOfCoordinatesForViewplaneNormal(c)==1&&(V[1]=_,U[1]=T,L[0][1]=_,L[1][1]=_);const j=y2(V,U),z=[];for(let $=0;${const X=nr();return j0(X,K,c,$),Array.from(X)}));i.cachedStats.projectionPoints=z}_computePointsInsideVolume(e,o,i,l){var pe,we,Te;const{data:c,metadata:g}=e,{viewPlaneNormal:v,viewUp:_}=g,{viewport:T}=l,P=c.cachedStats.projectionPoints,I=[[]],R=this.getTargetImageData(i),L=c.handles.points.map(Ve=>T.worldToCanvas(Ve)),[V,U]=o8(L),j=T.canvasToWorld(V),z=T.canvasToWorld(U),{worldWidth:$,worldHeight:K}=e5(v,_,j,z),X=Ml(R,c.handles),ee=rP(R),ne=Math.abs(Math.PI*($/X.scale/2)*(K/ee/X.scale/2)),le={isPreScaled:Rh(T,i),isSuvScaled:this.isSuvScaled(T,i,e.metadata.referencedImageId)},ce=Ah(g.Modality,e.metadata.referencedImageId,le);for(let Ve=0;VeT.worldToCanvas(xn)),[Je,it]=o8(je),Ge=T.canvasToWorld(Je),Ke=T.canvasToWorld(it),qe=Ge,ut=Ke,{dimensions:wt,imageData:Et,voxelManager:qt}=o,$t=I3(Et,qe),Jt=I3(Et,Pe),Dn=this._getIndexOfCoordinatesForViewplaneNormal(v);$t[0]=Math.floor($t[0]),$t[1]=Math.floor($t[1]),$t[2]=Math.floor($t[2]),$t[Dn]=Jt[Dn];const Nn=I3(Et,ut);if(Nn[0]=Math.floor(Nn[0]),Nn[1]=Math.floor(Nn[1]),Nn[2]=Math.floor(Nn[2]),Nn[Dn]=Jt[Dn],this._isInsideVolume($t,Nn,wt)){const xn=Math.min($t[0],Nn[0]),et=Math.max($t[0],Nn[0]),Me=Math.min($t[1],Nn[1]),ct=Math.max($t[1],Nn[1]),st=Math.min($t[2],Nn[2]),yt=Math.max($t[2],Nn[2]),St=[[xn,et],[Me,ct],[st,yt]],mn={center:Pe,xRadius:Math.abs(Ge[0]-Ke[0])/2,yRadius:Math.abs(Ge[1]-Ke[1])/2,zRadius:Math.abs(Ge[2]-Ke[2])/2},Pn=qt.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:Hn=>zC(mn,Hn),boundsIJK:St,imageData:Et,returnPoints:this.configuration.storePointData});I.push(Pn)}}const ge=this.configuration.statsCalculator.getStatistics();c.cachedStats.pointsInVolume=I,c.cachedStats.statistics={Modality:g.Modality,area:ne,mean:(pe=ge.mean)==null?void 0:pe.value,stdDev:(we=ge.stdDev)==null?void 0:we.value,max:(Te=ge.max)==null?void 0:Te.value,statsArray:ge.array,areaUnit:X.areaUnit,modalityUnit:ce}}_calculateCachedStatsTool(e,o){const i=e.data,{viewport:l}=o,{cachedStats:c}=i,g=this.getTargetId(l),v=Jn.getVolume(g.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,v),this._computePointsInsideVolume(e,v,g,o),e.invalidated=!1,C0(e,l.element),c}_getStartCoordinate(e,o,i){const l=this.configuration.numSlicesToPropagate,c=Math.round(l/2),g=nr();return j0(g,e,i,c*-o),this._getCoordinateForViewplaneNormal(g,i)}_getEndCoordinate(e,o,i){const l=this.configuration.numSlicesToPropagate,c=l-Math.round(l/2),g=nr();return j0(g,e,i,c*o),this._getCoordinateForViewplaneNormal(g,i)}_getIndexOfCoordinatesForViewplaneNormal(e){const o=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])];return o.indexOf(Math.max(...o))}_getCoordinateForViewplaneNormal(e,o){const i=this._getIndexOfCoordinatesForViewplaneNormal(o);return e[i]}}function kxe(n,e={}){const o=n.cachedStats.statistics,{area:i,mean:l,max:c,stdDev:g,areaUnit:v,modalityUnit:_}=o;if(l===void 0)return;const T=[];return T.push(`Area: ${E0(i)} ${v}`),T.push(`Mean: ${E0(l)} ${_}`),T.push(`Max: ${E0(c)} ${_}`),T.push(`Std Dev: ${E0(g)} ${_}`),T}LY.toolName="CircleROIStartEndThreshold";const{transformWorldToIndex:Bb,isEqual:XS}=J0;class NY extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"]}){super(e,o),this.preMouseDownCallback=i=>{const l=i.detail,{currentPoints:c,element:g}=l,v=c.world,_=_n(g),{viewport:T}=_,P=T.getCamera(),{viewPlaneNormal:I}=P,R=Ph(T.id);if(!R)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:L}=R,V=Ol(L),U=ip(L),{representationData:j}=io(L);let z,$,K,X;if(this.doneEditMemo(),T instanceof xs){const{volumeId:je}=j[Ti.Labelmap],Je=Jn.getVolume(je);({dimensions:z,direction:$}=Je),X=Je.voxelManager,K=Bb(Je.imageData,v)}else{const je=f4(T.id,L);if(!je)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const{imageData:Je}=T.getImageData();z=Je.getDimensions(),$=Je.getDirection(),X=Jn.getImage(je).voxelManager,K=Bb(Je,v)}const ee=this.getFixedDimension(I,$);if(ee===void 0){console.warn("Oblique paint fill not yet supported");return}const{floodFillGetter:ne,getLabelValue:le,getScalarDataPositionFromPlane:ce,inPlaneSeedPoint:ge,fixedDimensionValue:pe}=this.generateHelpers(X,z,K,ee);if(K[0]<0||K[0]>=z[0]||K[1]<0||K[1]>=z[1]||K[2]<0||K[2]>=z[2])return;const we=le(K[0],K[1],K[2]);if(U.includes(we))return;const Te=yP(ne,ge),{flooded:Ve}=Te;Ve.forEach(je=>{const Je=ce(je[0],je[1]);X.setAtIndex(Je,V)});const Pe=this.getFramesModified(ee,pe,Te);return K2(L,Pe),!0},this.getFramesModified=(i,l,c)=>{const{flooded:g}=c;if(i===2)return[l];let v=1/0,_=-1/0;for(let P=0;P_&&(_=I)}const T=[];for(let P=v;P<=_;P++)T.push(P);return T},this.generateHelpers=(i,l,c,g=2)=>{let v,_;switch(g){case 0:v=c[0],_=[c[1],c[2]];break;case 1:v=c[1],_=[c[0],c[2]];break;case 2:v=c[2],_=[c[0],c[1]];break;default:throw new Error(`Invalid fixedDimension: ${g}`)}const T=(L,V,U)=>i.toIndex([L,V,U]),P=(L,V,U)=>i.getAtIJK(L,V,U),I=this.generateFloodFillGetter(l,g,v,P);return{getScalarDataPositionFromPlane:this.generateGetScalarDataPositionFromPlane(T,g,v),getLabelValue:P,floodFillGetter:I,inPlaneSeedPoint:_,fixedDimensionValue:v}},this.generateFloodFillGetter=(i,l,c,g)=>{let v;switch(l){case 0:v=(_,T)=>{if(!(_>=i[1]||_<0||T>=i[2]||T<0))return g(c,_,T)};break;case 1:v=(_,T)=>{if(!(_>=i[0]||_<0||T>=i[2]||T<0))return g(_,c,T)};break;case 2:v=(_,T)=>{if(!(_>=i[0]||_<0||T>=i[1]||T<0))return g(_,T,c)};break;default:throw new Error(`Invalid fixedDimension: ${l}`)}return v},this.generateGetScalarDataPositionFromPlane=(i,l,c)=>{let g;switch(l){case 0:g=(v,_)=>i(c,v,_);break;case 1:g=(v,_)=>i(v,c,_);break;case 2:g=(v,_)=>i(v,_,c);break;default:throw new Error(`Invalid fixedDimension: ${l}`)}return g}}getFixedDimension(e,o){const i=o.slice(0,3),l=o.slice(3,6),c=o.slice(6,9),g=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],v=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];if(XS(g,v))return 0;const _=[Math.abs(l[0]),Math.abs(l[1]),Math.abs(l[2])];if(XS(g,_))return 1;const T=[Math.abs(c[0]),Math.abs(c[1]),Math.abs(c[2])];if(XS(g,T))return 2}}NY.toolName="PaintFill";const yxe={TOP_LEFT:"TOP_LEFT",TOP_RIGHT:"TOP_RIGHT",BOTTOM_LEFT:"BOTTOM_LEFT",BOTTOM_RIGHT:"BOTTOM_RIGHT"};var LP={Corners:yxe};const{vtkErrorMacro:YS}=At,{Corners:p7}=LP;function wxe(n,e){e.classHierarchy.push("vtkOrientationMarkerWidget");const o={...n},i=[],l=o$.newInstance(),c=new ResizeObserver(R=>{n.updateViewport()});let g=null,v=null,_=null,T=null,P=null;function I(){e._interactor.isAnimating()||n.updateMarkerOrientation()}e._onParentRendererChanged=()=>n.updateViewport(),n.computeViewport=()=>{const R=e.parentRenderer||e._interactor.getCurrentRenderer(),[L,V,U,j]=R.getViewport(),z=e._interactor.getView(),$=z.getSize(),[K,X]=z.getViewportSize(R),ee=Math.min(K,X);let ne=e.viewportSize*ee;ne=Math.max(Math.min(e.minPixelSize,ee),Math.min(e.maxPixelSize,ne));const le=ne/$[0],ce=ne/$[1];switch(e.viewportCorner){case p7.TOP_LEFT:return[L,j-ce,L+le,j];case p7.TOP_RIGHT:return[U-le,j-ce,U,j];case p7.BOTTOM_LEFT:return[L,V,L+le,V+ce];case p7.BOTTOM_RIGHT:return[U-le,V,U,V+ce];default:return YS("Invalid widget corner"),null}},n.updateViewport=()=>{e.enabled&&(l.setViewport(...n.computeViewport()),e._interactor.render())},n.updateMarkerOrientation=()=>{const L=(e.parentRenderer||e._interactor.getCurrentRenderer()).getActiveCamera();if(!L)return;const V=L.getReferenceByName("position"),U=L.getReferenceByName("focalPoint"),j=L.getReferenceByName("viewUp");if(i[0]!==V[0]||i[1]!==V[1]||i[2]!==V[2]||i[3]!==U[0]||i[4]!==U[1]||i[5]!==U[2]||i[6]!==j[0]||i[7]!==j[1]||i[8]!==j[2]){i[0]=V[0],i[1]=V[1],i[2]=V[2],i[3]=U[0],i[4]=U[1],i[5]=U[2],i[6]=j[0],i[7]=j[1],i[8]=j[2];const z=l.getActiveCamera();z.setPosition(V[0],V[1],V[2]),z.setFocalPoint(U[0],U[1],U[2]),z.setViewUp(j[0],j[1],j[2]),l.resetCamera()}},n.setEnabled=R=>{var L,V;if(R){if(e.enabled)return;if(!e.actor){YS("Must set actor before enabling orientation marker.");return}if(!e._interactor){YS("Must set interactor before enabling orientation marker.");return}const U=e.parentRenderer||e._interactor.getCurrentRenderer(),j=U.getRenderWindow();j.addRenderer(l),j.getNumberOfLayers()<2&&j.setNumberOfLayers(2),l.setLayer(j.getNumberOfLayers()-1),l.setInteractive(e.interactiveRenderer),l.addViewProp(e.actor),e.actor.setVisibility(!0),g=U.onEvent(z=>{z.type==="ActiveCameraEvent"&&(v&&v.unsubscribe(),v=z.camera.onModified(I))}),v=U.getActiveCamera().onModified(I),_=e._interactor.onAnimation(n.updateMarkerOrientation),T=e._interactor.onEndAnimation(n.updateMarkerOrientation),c.observe(e._interactor.getView().getCanvas()),n.updateViewport(),n.updateMarkerOrientation(),e.enabled=!0}else{if(!e.enabled)return;e.enabled=!1,c.disconnect(),g.unsubscribe(),g=null,v.unsubscribe(),v=null,_.unsubscribe(),_=null,T.unsubscribe(),T=null,e.actor.setVisibility(!1),l.removeViewProp(e.actor);const U=(V=(L=e._interactor)==null?void 0:L.findPokedRenderer())==null?void 0:V.getRenderWindow();U&&U.removeRenderer(l)}n.modified()},n.setViewportCorner=R=>{R!==e.viewportCorner&&(e.viewportCorner=R,n.updateViewport())},n.setViewportSize=R=>{const L=Math.min(1,Math.max(0,R));L!==e.viewportSize&&(e.viewportSize=L,n.updateViewport())},n.setActor=R=>{const L=e.enabled;n.setEnabled(!1),e.actor=R,n.setEnabled(L)},n.getRenderer=()=>l,n.delete=()=>{o.delete(),P&&(P.unsubscribe(),P=null),g&&(g.unsubscribe(),g=null),v&&(v.unsubscribe(),v=null),_&&(_.unsubscribe(),_=null),T&&(T.unsubscribe(),T=null),c.disconnect()},P=n.onModified(n.updateViewport)}const Cxe={viewportCorner:LP.Corners.BOTTOM_LEFT,viewportSize:.2,minPixelSize:50,maxPixelSize:200,parentRenderer:null,interactiveRenderer:!1};function bY(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cxe,o),At.obj(n,e),At.get(n,e,["enabled","viewportCorner","viewportSize","interactiveRenderer"]),At.setGet(n,e,["_interactor","minPixelSize","maxPixelSize","parentRenderer"]),At.get(n,e,["actor"]),At.moveToProtected(n,e,["interactor"]),wxe(n,e)}const _xe=At.newInstance(bY,"vtkOrientationMarkerWidget");var Gb={newInstance:_xe,extend:bY,...LP};function FY(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0,0];const[o,i,l,c]=e,v=n.getContext("2d").getImageData(o,i,l||n.width,c||n.height),_=Wv.newInstance({type:"vtkImageData"});_.setOrigin(0,0,0),_.setSpacing(1,1,1),_.setExtent(0,(l||n.width)-1,0,(c||n.height)-1,0,0);const T=d0.newInstance({numberOfComponents:4,values:new Uint8Array(v.data.buffer)});return T.setName("scalars"),_.getPointData().setScalars(T),_}function xxe(n){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{flipX:!1,flipY:!1,rotate:0};const o=document.createElement("canvas");o.width=n.width,o.height=n.height;const i=o.getContext("2d"),{flipX:l,flipY:c,rotate:g}=e;return i.translate(o.width/2,o.height/2),i.scale(l?-1:1,c?-1:1),i.rotate(g*Math.PI/180),i.drawImage(n,-n.width/2,-n.height/2),FY(o)}var Sxe={canvasToImageData:FY,imageToImageData:xxe};const VY={default:{defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:n=>n/2,faceColor:"white",edgeThickness:.1,edgeColor:"black",resolution:400},xMinusFaceProperty:{text:"X-",faceColor:"yellow"},xPlusFaceProperty:{text:"X+",faceColor:"yellow"},yMinusFaceProperty:{text:"Y-",faceColor:"red"},yPlusFaceProperty:{text:"Y+",faceColor:"red"},zMinusFaceProperty:{text:"Z-",faceColor:"#008000"},zPlusFaceProperty:{text:"Z+",faceColor:"#008000"}},lps:{xMinusFaceProperty:{text:"R",faceRotation:-90},xPlusFaceProperty:{text:"L",faceRotation:90},yMinusFaceProperty:{text:"A",faceRotation:0},yPlusFaceProperty:{text:"P",faceRotation:180},zMinusFaceProperty:{text:"I",faceRotation:180},zPlusFaceProperty:{text:"S",faceRotation:0}}};function UY(n,e){e.set(n)}function Txe(n,e){return UY(VY[n],e)}function Exe(n,e){VY[n]=e}var Dxe={applyDefinitions:UY,applyPreset:Txe,registerStylePreset:Exe};const Ixe={xPlus:0,xMinus:1,yPlus:2,yMinus:3,zPlus:4,zMinus:5};function Oxe(n,e){e.classHierarchy.push("vtkAnnotatedCubeActor"),e.xPlusFaceProperty={...e.xPlusFaceProperty},e.xMinusFaceProperty={...e.xMinusFaceProperty},e.yPlusFaceProperty={...e.yPlusFaceProperty},e.yMinusFaceProperty={...e.yMinusFaceProperty},e.zPlusFaceProperty={...e.zPlusFaceProperty},e.zMinusFaceProperty={...e.zMinusFaceProperty};let o=null;const i=document.createElement("canvas"),l=$v.newInstance(),c=lpe.newInstance();c.setInterpolate(!0);function g(_){let T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;T&&Object.assign(e[`${_}FaceProperty`],T);const P={...e.defaultStyle,...e[`${_}FaceProperty`]};i.width=P.resolution,i.height=P.resolution;const I=i.getContext("2d");I.fillStyle=P.faceColor,I.fillRect(0,0,i.width,i.height),P.edgeThickness>0&&(I.strokeStyle=P.edgeColor,I.lineWidth=P.edgeThickness*i.width,I.strokeRect(0,0,i.width,i.height)),I.save(),I.translate(0,i.height),I.scale(1,-1),I.translate(i.width/2,i.height/2),I.rotate(-Math.PI*(P.faceRotation/180));const R=P.fontSizeScale(P.resolution);I.fillStyle=P.fontColor,I.textAlign="center",I.textBaseline="middle",I.font=`${P.fontStyle} ${R}px "${P.fontFamily}"`,I.fillText(P.text,0,0),I.restore();const L=Sxe.canvasToImageData(i);c.setInputData(L,Ixe[_]),n.modified()}function v(){o=q$.newInstance({generate3DTextureCoordinates:!0}),l.setInputConnection(o.getOutputPort()),g("xPlus"),g("xMinus"),g("yPlus"),g("yMinus"),g("zPlus"),g("zMinus")}n.setDefaultStyle=_=>{e.defaultStyle={...e.defaultStyle,..._},v()},n.setXPlusFaceProperty=_=>g("xPlus",_),n.setXMinusFaceProperty=_=>g("xMinus",_),n.setYPlusFaceProperty=_=>g("yPlus",_),n.setYMinusFaceProperty=_=>g("yMinus",_),n.setZPlusFaceProperty=_=>g("zPlus",_),n.setZMinusFaceProperty=_=>g("zMinus",_),v(),l.setInputConnection(o.getOutputPort()),n.setMapper(l),n.addTexture(c)}const Mxe={defaultStyle:{text:"",faceColor:"white",faceRotation:0,fontFamily:"Arial",fontColor:"black",fontStyle:"normal",fontSizeScale:n=>n/1.8,edgeThickness:.1,edgeColor:"black",resolution:200}};function BY(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Mxe,o),wC.extend(n,e,o),At.get(n,e,["defaultStyle","xPlusFaceProperty","xMinusFaceProperty","yPlusFaceProperty","yMinusFaceProperty","zPlusFaceProperty","zMinusFaceProperty"]),Oxe(n,e)}const Pxe=At.newInstance(BY,"vtkAnnotatedCubeActor");var Wb={newInstance:Pxe,extend:BY,Presets:Dxe};const{vtkErrorMacro:Rxe}=At;function Axe(n,e){let o=0;return n.map((i,l)=>l===o?(o+=i+1,i):i+e)}function m7(n,e,o,i){n.set(Axe(e,o),i)}function Lxe(n,e){e.classHierarchy.push("vtkAppendPolyData"),n.requestData=(o,i)=>{const l=n.getNumberOfInputPorts();if(!l){Rxe("No input specified.");return}if(l===1){i[0]=o[0];return}const c=Sl.newInstance();let g=0,v=0,_=1,T=1,P=0,I=0,R=0,L=0,V=!0,U=!0,j=!0;for(let we=0;we_?v:_);const Pe=Te.getPointData();Pe?(V=V&&Pe.getNormals()!==null,U=U&&Pe.getTCoords()!==null,j=j&&Pe.getScalars()!==null):(V=!1,U=!1,j=!1)}e.outputPointsPrecision===$w.SINGLE?v=b0.FLOAT:e.outputPointsPrecision===$w.DOUBLE&&(v=b0.DOUBLE);const z=Qw.newInstance({dataType:v});z.setNumberOfPoints(g);const $=z.getData(),K=new Uint32Array(P),X=new Uint32Array(I),ee=new Uint32Array(R),ne=new Uint32Array(L);let le=null,ce=null,ge=null;const pe=o[l-1];if(V){const we=pe.getPointData().getNormals();le=d0.newInstance({numberOfComponents:3,numberOfTuples:g,size:3*g,dataType:we.getDataType(),name:we.getName()})}if(U){const we=pe.getPointData().getTCoords();ce=d0.newInstance({numberOfComponents:2,numberOfTuples:g,size:2*g,dataType:we.getDataType(),name:we.getName()})}if(j){const we=pe.getPointData().getScalars();ge=d0.newInstance({numberOfComponents:we.getNumberOfComponents(),numberOfTuples:g,size:g*we.getNumberOfComponents(),dataType:we.getDataType(),name:we.getName()})}g=0,P=0,I=0,R=0,L=0;for(let we=0;we2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nxe,o),At.setGet(n,e,["outputPointsPrecision"]),At.obj(n,e),At.algo(n,e,1,1),Lxe(n,e)}const bxe=At.newInstance(GY,"vtkAppendPolyData");var WY={newInstance:bxe,extend:GY};function Fxe(n,e){e.classHierarchy.push("vtkConeSource");function o(i,l){if(e.deleted)return;let c=l[0];const g=2*Math.PI/e.resolution,v=-e.height/2,_=e.resolution+1,T=4*e.resolution+1+e.resolution;let P=0;const I=At.newTypedArray(e.pointType,_*3);let R=0;const L=new Uint32Array(T);I[0]=e.height/2,I[1]=0,I[2]=0,e.capping&&(L[R++]=e.resolution);for(let V=0;Ve.resolution?1:V+2;M2.buildFromRadian().translate(...e.center).rotateFromDirections([1,0,0],e.direction).apply(I),c=Sl.newInstance(),c.getPoints().setData(I,3),c.getPolys().setData(L,1),l[0]=c}n.requestData=o}const Vxe={height:1,radius:.5,resolution:6,center:[0,0,0],direction:[1,0,0],capping:!0,pointType:"Float64Array"};function $Y(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vxe,o),At.obj(n,e),At.setGet(n,e,["height","radius","resolution","capping"]),At.setGetArray(n,e,["center","direction"],3),At.algo(n,e,0,1),Fxe(n,e)}const Uxe=At.newInstance($Y,"vtkConeSource");var Bxe={newInstance:Uxe,extend:$Y};function Gxe(n,e){e.classHierarchy.push("vtkCylinderSource");function o(i,l){if(e.deleted)return;let c=l[0];const g=2*Math.PI/e.resolution;let v=2*e.resolution,_=5*e.resolution;e.capping&&(v=4*e.resolution,_=7*e.resolution+2);const T=At.newTypedArray(e.pointType,v*3);let P=0;const I=new Uint32Array(_),R=new Float32Array(v*3),L=d0.newInstance({numberOfComponents:3,values:R,name:"Normals"}),V=new Float32Array(v*2),U=d0.newInstance({numberOfComponents:2,values:V,name:"TCoords"}),j=[0,0,0],z=[0,0,0],$=[0,0,0],K=[0,0,0],X=[0,0],ee=[0,0],ne=e.otherRadius==null?e.radius:e.otherRadius;for(let le=0;lele*-1)).apply(T),c=Sl.newInstance(),c.getPoints().setData(T,3),c.getPolys().setData(I,1),c.getPointData().setNormals(L),c.getPointData().setTCoords(U),l[0]=c}n.requestData=o}const Wxe={height:1,initAngle:0,radius:1,resolution:6,center:[0,0,0],direction:[0,1,0],capping:!0,pointType:"Float64Array"};function jY(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wxe,o),At.obj(n,e),At.setGet(n,e,["height","initAngle","otherRadius","radius","resolution","capping"]),At.setGetArray(n,e,["center","direction"],3),At.algo(n,e,0,1),Gxe(n,e)}const $xe=At.newInstance(jY,"vtkCylinderSource");var jxe={newInstance:$xe,extend:jY};function zxe(n,e){e.classHierarchy.push("vtkArrowSource");function o(i,l){if(e.deleted)return;const c=jxe.newInstance({capping:!0});c.setResolution(e.shaftResolution),c.setRadius(e.shaftRadius),c.setHeight(1-e.tipLength),c.setCenter(0,(1-e.tipLength)*.5,0);const g=c.getOutputData(),v=g.getPoints().getData(),_=g.getPointData().getNormals().getData();M2.buildFromDegree().rotateZ(-90).apply(v).apply(_);const T=Bxe.newInstance();T.setResolution(e.tipResolution),T.setHeight(e.tipLength),T.setRadius(e.tipRadius);const P=T.getOutputData(),I=P.getPoints().getData();M2.buildFromRadian().translate(1-e.tipLength*.5,0,0).apply(I);const R=WY.newInstance();R.setInputData(g),R.addInputData(P);const L=R.getOutputData(),V=L.getPoints().getData();M2.buildFromRadian().translate(-.5+e.tipLength*.5,0,0).apply(V),e.invert?(M2.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(-1,-1,-1).apply(V),l[0]=L):(M2.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(1,1,1).apply(V),l[0]=R.getOutputData())}n.requestData=o}const Hxe={tipResolution:6,tipRadius:.1,tipLength:.35,shaftResolution:6,shaftRadius:.03,invert:!1,direction:[1,0,0],pointType:"Float64Array"};function zY(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hxe,o),At.obj(n,e),At.setGet(n,e,["tipResolution","tipRadius","tipLength","shaftResolution","shaftRadius","invert"]),At.setGetArray(n,e,["direction"],3),At.algo(n,e,0,1),zxe(n,e)}const Kxe=At.newInstance(zY,"vtkArrowSource");var JS={newInstance:Kxe,extend:zY};function ZS(n){const e=n.getPoints().getBounds(),o=[-(e[0]+e[1])*.5,-(e[2]+e[3])*.5,-(e[4]+e[5])*.5];M2.buildFromDegree().translate(...o).apply(n.getPoints().getData())}function QS(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const i=n.getPoints().getBounds(),l=[0,0,0];o?l[e]=-i[e*2+1]:l[e]=-i[e*2],M2.buildFromDegree().translate(...l).apply(n.getPoints().getData())}function eT(n,e,o,i){const l=n.getPoints().getData().length,c=new Uint8ClampedArray(l);let g=0;for(;g{let l={...e.config,...e.xConfig};const c=JS.newInstance({direction:[1,0,0],...l}).getOutputData();e.config.recenter?ZS(c):QS(c,0,l.invert),eT(c,...l.color),l={...e.config,...e.yConfig};const g=JS.newInstance({direction:[0,1,0],...l}).getOutputData();e.config.recenter?ZS(g):QS(g,1,l.invert),eT(g,...l.color),l={...e.config,...e.zConfig};const v=JS.newInstance({direction:[0,0,1],...l}).getOutputData();e.config.recenter?ZS(v):QS(v,2,l.invert),eT(v,...l.color);const _=WY.newInstance();_.setInputData(c),_.addInputData(g),_.addInputData(v),o.setInputConnection(_.getOutputPort())},n.update();const i=At.debounce(n.update,0);n.setXAxisColor=l=>n.setXConfig({...n.getXConfig(),color:l}),n.setYAxisColor=l=>n.setYConfig({...n.getYConfig(),color:l}),n.setZAxisColor=l=>n.setZConfig({...n.getZConfig(),color:l}),n.getXAxisColor=()=>e.getXConfig().color,n.getYAxisColor=()=>e.getYConfig().color,n.getZAxisColor=()=>e.getZConfig().color,e._onConfigChanged=i,e._onXConfigChanged=i,e._onYConfigChanged=i,e._onZConfigChanged=i}function Xxe(n){return{config:{recenter:!0,tipResolution:60,tipRadius:.1,tipLength:.2,shaftResolution:60,shaftRadius:.03,invert:!1,...n==null?void 0:n.config},xConfig:{color:[255,0,0],invert:!1,...n==null?void 0:n.xConfig},yConfig:{color:[255,255,0],invert:!1,...n==null?void 0:n.yConfig},zConfig:{color:[0,128,0],invert:!1,...n==null?void 0:n.zConfig}}}function HY(n,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};wC.extend(n,e,Xxe(o)),At.setGet(n,e,["config","xConfig","yConfig","zConfig"]),qxe(n,e)}const Yxe=At.newInstance(HY,"vtkAxesActor");var Jxe={newInstance:Yxe,extend:HY},B9;(function(n){n[n.ANNOTATED_CUBE=1]="ANNOTATED_CUBE",n[n.AXES=2]="AXES",n[n.CUSTOM=3]="CUSTOM"})(B9||(B9={}));const qc=class qc extends Oa{constructor(e={},o={configuration:{orientationWidget:{enabled:!0,viewportCorner:Gb.Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:qc.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[qc.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE]:{faceProperties:{xPlus:{text:"L",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"R",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:i=>i/2,faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}},[qc.OVERLAY_MARKER_TYPES.AXES]:{},[qc.OVERLAY_MARKER_TYPES.CUSTOM]:{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}}}}){super(e,o),this._resizeObservers=new Map,this.onSetToolEnabled=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolActive=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolDisabled=()=>{this.cleanUpData(),this._unsubscribeToViewportNewVolumeSet()},this._getViewportsInfo=()=>la(this.toolGroupId).viewportsInfo,this.resize=i=>{const l=this.orientationMarkers[i];if(!l)return;const{orientationWidget:c}=l;c.updateViewport()},this.orientationMarkers={},this.updatingOrientationMarker={}}_unsubscribeToViewportNewVolumeSet(){const e=()=>{this._getViewportsInfo().forEach(({viewportId:i,renderingEngineId:l})=>{const{viewport:c}=i2(i,l),{element:g}=c;g.removeEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this)),this._resizeObservers.get(i).unobserve(g)})};pr.removeEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,o=>{o.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}_subscribeToViewportEvents(){const e=()=>{this._getViewportsInfo().forEach(({viewportId:i,renderingEngineId:l})=>{const{viewport:c}=i2(i,l),{element:g}=c;this.initViewports(),g.addEventListener(vr.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const v=new ResizeObserver(()=>{setTimeout(()=>{const _=i2(i,l);if(!_)return;const{viewport:T}=_;this.resize(i),T.render()},100)});v.observe(g),this._resizeObservers.set(i,v)})};e(),pr.addEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,o=>{o.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}cleanUpData(){Il()[0].getViewports().forEach(l=>{const c=this.orientationMarkers[l.id];if(!c)return;const{actor:g,orientationWidget:v}=c;v==null||v.setEnabled(!1),v==null||v.delete(),g==null||g.delete(),l.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),l.getRenderingEngine().render(),delete this.orientationMarkers[l.id]})}initViewports(){const o=Il()[0];if(!o)return;let i=o.getViewports();i=qC(i,this.getToolName()),i.forEach(l=>{const c=l.getWidget(this.getToolName());(!c||c.isDeleted())&&this.addAxisActorInViewport(l)})}async addAxisActorInViewport(e){const o=e.id;if(!this.updatingOrientationMarker[o]){this.updatingOrientationMarker[o]=!0;const i=this.configuration.overlayMarkerType,l=this.configuration.overlayConfiguration[i];if(this.orientationMarkers[o]){const{actor:V,orientationWidget:U}=this.orientationMarkers[o];e.getRenderer().removeActor(V),U.setEnabled(!1)}let c;i===1?c=this.createAnnotationCube(l):i===2?c=Jxe.newInstance():i===3&&(c=await this.createCustomActor());const g=e.getRenderer(),v=e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),{enabled:_,viewportCorner:T,viewportSize:P,minPixelSize:I,maxPixelSize:R}=this.configuration.orientationWidget,L=Gb.newInstance({actor:c,interactor:v.getInteractor(),parentRenderer:g});L.setEnabled(_),L.setViewportCorner(T),L.setViewportSize(P),L.setMinPixelSize(I),L.setMaxPixelSize(R),L.updateMarkerOrientation(),this.orientationMarkers[o]={orientationWidget:L,actor:c},e.addWidget(this.getToolName(),L),v.render(),e.getRenderingEngine().render(),this.updatingOrientationMarker[o]=!1}}async createCustomActor(){const e=this.configuration.overlayConfiguration[B9.CUSTOM].polyDataURL,i=await(await fetch(e)).arrayBuffer(),l=age.newInstance();l.parseAsArrayBuffer(i),l.update();const c=Sl.newInstance();c.shallowCopy(l.getOutputData()),c.getPointData().setActiveScalars("Color");const g=$v.newInstance();g.setInputData(c),g.setColorModeToDirectScalars();const v=wC.newInstance();return v.setMapper(g),v.rotateZ(180),v}createAnnotationCube(e){const o=Wb.newInstance();return o.setDefaultStyle({...e.defaultStyle}),o.setXPlusFaceProperty({...e.faceProperties.xPlus}),o.setXMinusFaceProperty({...e.faceProperties.xMinus}),o.setYPlusFaceProperty({...e.faceProperties.yPlus}),o.setYMinusFaceProperty({...e.faceProperties.yMinus}),o.setZPlusFaceProperty({...e.faceProperties.zPlus}),o.setZMinusFaceProperty({...e.faceProperties.zMinus}),o}async createAnnotatedCubeActor(){const e=Wb.newInstance(),{faceProperties:o,defaultStyle:i}=this.configuration.annotatedCube;return e.setDefaultStyle(i),Object.keys(o).forEach(l=>{const c=`set${l.charAt(0).toUpperCase()+l.slice(1)}FaceProperty`;e[c](o[l])}),e}};qc.CUBE=1,qc.AXIS=2,qc.VTPFILE=3,qc.OVERLAY_MARKER_TYPES=B9;let G9=qc;G9.toolName="OrientationMarker";const Am=class Am extends Oa{constructor(e={},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:Am.SelectMode.Border,searchRadius:6}}){super(e,o),this.mouseMoveCallback=i=>{if(this.mode===ao.Active)return this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout(()=>{this._setActiveSegment(i),this.hoverTimer=null},this.configuration.hoverTimeout),!0},this.onSetToolEnabled=()=>{this.onSetToolActive()},this.onSetToolActive=()=>{this.hoverTimer=null},this.onSetToolDisabled=()=>{this.hoverTimer=null},this.hoverTimer=null}_setActiveSegment(e={}){if(ar.isInteractingWithTool)return;const{element:o,currentPoints:i}=e.detail,l=i.world,c=_n(o);if(!c)return;const{viewport:g}=c,v=Ph(g.id);v&&this._setActiveSegmentForType(v,l,g)}_setActiveSegmentForType(e,o,i){if(!i.getImageData())return;const{segmentationId:c,representationData:g}=e;let v;if(this.configuration.mode===Am.SelectMode.Inside?v=CP(c,o,{viewport:i}):g.Labelmap?v=OX(c,o,{viewport:i,searchRadius:this.configuration.searchRadius}):g.Contour?v=PX(c):g.Surface,!v||v===0)return;A9(c,v);const T=i.getRenderingEngine().getViewports().map(P=>P.id);cu(c),Un(T)}};Am.SelectMode={Inside:"Inside",Border:"Border"};let W9=Am;W9.toolName="SegmentSelectTool";const H6=class H6 extends wv{constructor(e={}){super(e),this.renderAnnotation=(o,i)=>{let l=!0;const{viewport:c}=o,{element:g}=c,v=c.id;let _=O0(this.getToolName(),g);if(!(_!=null&&_.length)||(_=this.filterInteractableAnnotationsForElement(g,_),!(_!=null&&_.length)))return l;const T=this.getTargetId(c),P=c.getRenderingEngine(),I={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:o.viewport.id};for(let R=0;R<_.length;R++){const L=_[R],{annotationUID:V,data:U}=L,{points:j,activeHandleIndex:z}=U.handles,$=j.map($t=>c.worldToCanvas($t));I.annotationUID=V;const{segmentIndex:K,segmentationId:X}=L.metadata,{lineWidth:ee,lineDash:ne,shadow:le}=this.getAnnotationStyle({annotation:L,styleSpecifier:I}),ge=`rgb(${Th(v,X,K).slice(0,3).join(",")})`;if(!U.cachedStats[T]||U.cachedStats[T].unit==null?(U.cachedStats[T]={length:null,width:null,unit:null},this._calculateCachedStats(L,P,o)):L.invalidated&&this._throttledCalculateCachedStats(L,P,o),!c.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),l;let pe;if(!Ys(V))continue;!da(V)&&!this.editData&&z!==null&&(pe=[$[z]]),pe&&$o(i,V,"0",pe,{color:ge});const we=`${V}-line-1`,Te=`${V}-line-2`;V0(i,V,"0",$[0],$[1],{color:ge,lineWidth:ee,lineDash:ne,shadow:le},we),V0(i,V,"1",$[2],$[3],{color:ge,lineWidth:ee,lineDash:ne,shadow:le},Te),l=!0;const je=this.getLinkedTextBoxStyle(I,L);if(!je.visibility){U.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}je.color=ge;const Je=this.configuration.getTextLines(U,T);if(!Je||Je.length===0)continue;let it;U.handles.textBox.hasMoved||(it=Pl($),U.handles.textBox.worldPosition=c.canvasToWorld(it));const Ge=c.worldToCanvas(U.handles.textBox.worldPosition),qe=A2(i,V,"1",Je,Ge,$,{},je),{x:ut,y:wt,width:Et,height:qt}=qe;U.handles.textBox.worldBoundingBox={topLeft:c.canvasToWorld([ut,wt]),topRight:c.canvasToWorld([ut+Et,wt]),bottomLeft:c.canvasToWorld([ut,wt+qt]),bottomRight:c.canvasToWorld([ut+Et,wt+qt])}}return l}}addNewAnnotation(e){const o=e.detail,{currentPoints:i,element:l}=o,c=i.world,g=_n(l),{viewport:v}=g;this.isDrawing=!0;const _=v.getCamera(),{viewPlaneNormal:T,viewUp:P}=_,I=this.getReferencedImageId(v,c,T,P),R=v.getFrameOfReferenceUID(),L={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...T],viewUp:[...P],FrameOfReferenceUID:R,referencedImageId:I,...v.getViewReference({points:[c]})},data:{handles:{points:[[...c],[...c],[...c],[...c]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};_0(L,l);const V=fi(l,this.getToolName());return this.editData={annotation:L,viewportIdsToRender:V,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(l),Oi(l),e.preventDefault(),Un(V),L}};H6.toolName="SegmentBidirectional",H6.hydrate=(e,o,i)=>{const l=yo(e);if(!l)return;const{viewport:c}=l,_=Jv().filter(le=>le.metadata.toolName==="SegmentBidirectional").find(le=>{const{metadata:ce}=le;return ce.segmentIndex===(i==null?void 0:i.segmentIndex)&&ce.segmentationId===(i==null?void 0:i.segmentationId)});_&&A0(_.annotationUID);const{FrameOfReferenceUID:T,referencedImageId:P,viewPlaneNormal:I,instance:R}=H6.hydrateBase(H6,l,o[0],i),[L,V]=o,[U,j]=L,[z,$]=V,K=[U,j,z,$],{toolInstance:X,...ee}=i||{},ne={annotationUID:(i==null?void 0:i.annotationUID)||H0(),data:{handles:{points:K,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{segmentIndex:i==null?void 0:i.segmentIndex,segmentationId:i==null?void 0:i.segmentationId,toolName:R.getToolName(),viewPlaneNormal:I,FrameOfReferenceUID:T,referencedImageId:P,...ee}};return _0(ne,c.element),Un([c.id]),ne};let OD=H6;class KY extends Oa{constructor(e={data:{handles:{textBox:{worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}},o={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,searchRadius:6}}){super(e,o),this.mouseMoveCallback=i=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout(()=>{this._setHoveredSegment(i),this.hoverTimer=null},this.configuration.hoverTimeout),!0),this.onSetToolEnabled=()=>{this.onSetToolActive()},this.onSetToolActive=()=>{this.hoverTimer=null},this.onSetToolDisabled=()=>{this.hoverTimer=null},this.data=e.data??{handles:{textBox:{worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}},this.hoverTimer=null}_setHoveredSegment(e={}){if(ar.isInteractingWithTool)return;const{element:o,currentPoints:i}=e.detail,l=i.world,c=_n(o);if(!c)return;const{viewport:g}=c,v=Ph(g.id);v&&this._setHoveredSegmentForType(v,l,g)}_setHoveredSegmentForType(e,o,i){if(!i.getImageData())return;const{segmentationId:c}=e,g=CP(c,o,{viewport:i}),v=e.segments[g],_=v==null?void 0:v.label,T=i.worldToCanvas(o);if(this._editData={hoveredSegmentIndex:g,hoveredSegmentLabel:_,canvasCoordinates:T,worldPoint:o},!g||g===0)return;const I=i.getRenderingEngine().getViewports().map(R=>R.id);cu(c),Un(I)}renderAnnotation(e,o){if(!this._editData)return;const{viewport:i}=e,{hoveredSegmentIndex:l,hoveredSegmentLabel:c,canvasCoordinates:g,worldPoint:v}=this._editData;if(!l)return;const _=i.worldToCanvas(v),T=A2(o,"segmentSelectLabelAnnotation","segmentSelectLabelTextBox",[c||"(unnamed segment)"],_,[g],{},{}),P=g[0],I=g[1],{width:R,height:L}=T;this.data.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([P,I]),topRight:i.canvasToWorld([P+R,I]),bottomLeft:i.canvasToWorld([P,I+L]),bottomRight:i.canvasToWorld([P+R,I+L])}}}KY.toolName="SegmentLabelTool";const o1=class o1 extends vf{constructor(e={}){const o=o2({configuration:{calculateStats:!1,allowOpenContours:!1}},e);super(o),this.onViewportAddedToToolGroupBinded=this.onViewportAddedToToolGroup.bind(this),this.onSegmentationModifiedBinded=this.onSegmentationModified.bind(this)}initializeListeners(){o1.annotationsToViewportMap.clear(),o1.viewportIdsChecked=[],pr.addEventListener(Xe.ANNOTATION_MODIFIED,this.annotationModified),pr.addEventListener(Xe.ANNOTATION_COMPLETED,this.annotationCompleted),pr.addEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroupBinded),pr.addEventListener(Xe.SEGMENTATION_MODIFIED,this.onSegmentationModifiedBinded)}cleanUpListeners(){o1.annotationsToViewportMap.clear(),o1.viewportIdsChecked=[],pr.removeEventListener(Xe.ANNOTATION_MODIFIED,this.annotationModified),pr.removeEventListener(Xe.ANNOTATION_COMPLETED,this.annotationCompleted),pr.removeEventListener(Xe.TOOLGROUP_VIEWPORT_ADDED,this.onViewportAddedToToolGroup.bind(this)),pr.removeEventListener(Xe.SEGMENTATION_MODIFIED,this.onSegmentationModified.bind(this))}async checkContourSegmentation(e){if(o1.viewportIdsChecked.includes(e))return;const o=Hg(e);if(!o)return console.log("No active segmentation detected"),!1;const i=o.segmentationId;return o.representationData.Contour?o1.viewportIdsChecked.push(e):(o1.viewportIdsChecked.push(e),await _P(e,[{segmentationId:i,type:Ti.Contour}]),PM({segmentationId:i,type:Ti.Contour,data:{}})),!0}onViewportAddedToToolGroup(e){const{toolGroupId:o,viewportId:i}=e.detail;o===this.toolGroupId&&this.checkContourSegmentation(i)}onSegmentationModified(e){const{segmentationId:o}=e.detail||{};if(!o)return;const i=NH(o);i&&i.forEach(async({viewportId:l})=>await this.checkContourSegmentation(l))}onSetToolEnabled(){this.initializeListeners()}onSetToolActive(){this.initializeListeners()}onSetToolDisabled(){this.cleanUpListeners()}annotationModified(e){var g;const{annotation:o,renderingEngineId:i,viewportId:l}=e.detail,c=(g=ha(i))==null?void 0:g.getViewport(l);c&&o1.annotationsToViewportMap.set(o.annotationUID,c)}annotationCompleted(e){var l,c;const{annotation:o}=e.detail,{polyline:i}=((l=o.data)==null?void 0:l.contour)||{};if(((c=o==null?void 0:o.metadata)==null?void 0:c.toolName)===o1.toolName&&i&&o1.annotationsToViewportMap.has(o.annotationUID)){const g=o1.annotationsToViewportMap.get(o.annotationUID);i.length>3&&c_.viewportContoursToLabelmap(g)}}};o1.toolName="LabelMapEditWithContour",o1.annotationsToViewportMap=new Map,o1.viewportIdsChecked=[];let MD=o1;const uR=class uR extends Yo{constructor(e={}){super(e,{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),this.addNewAnnotation=o=>{const i=o.detail,{currentPoints:l,element:c}=i,g=l.world,v=_n(c),{viewport:_}=v;this.isDrawing=!0;const T=this.constructor.createAnnotationForViewport(_,{data:{handles:{points:[[...g],[...g],[...g],[...g]]}}});_0(T,c);const P=fi(c,this.getToolName(),!1);return this.editData={annotation:T,viewportUIDsToRender:P,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(c),Oi(c),o.preventDefault(),Un(P),T},this.getHandleNearImagePoint=(o,i,l,c)=>{const g=_n(o),{viewport:v}=g,{data:_}=i,{points:T}=_.handles;for(let P=0;P{const g=_n(o),{viewport:v}=g,{data:_}=i,{points:T}=_.handles,P=v.worldToCanvas(T[0]),I=v.worldToCanvas(T[3]),R=this._getRectangleImageCoordinates([P,I]),L=[l[0],l[1]],{left:V,top:U,width:j,height:z}=R;if(KM([V,U,j,z],L)<=c)return!0},this.toolSelectedCallback=(o,i,l="mouse")=>{const c=o.detail,{element:g}=c,{data:v}=i;v.active=!0;const _=fi(g,this.getToolName(),!1);this.editData={annotation:i,viewportUIDsToRender:_},this._activateModify(g),Oi(g),Un(_),o.preventDefault()},this.handleSelectedCallback=(o,i,l,c="mouse")=>{const g=o.detail,{element:v}=g,{data:_}=i;_.active=!0;let T;l.worldPosition||(T=_.handles.points.findIndex(I=>I===l));const P=fi(v,this.getToolName(),!1);this.editData={annotation:i,viewportUIDsToRender:P,handleIndex:T},this._activateModify(v),Oi(v),Un(P),o.preventDefault()},this._endCallback=o=>{const i=o.detail,{element:l}=i,{annotation:c,viewportUIDsToRender:g,newAnnotation:v,hasMoved:_}=this.editData,{data:T}=c;v&&!_||(this.doneEditMemo(),T.active=!1,T.handles.activeHandleIndex=null,this._deactivateModify(l),this._deactivateDraw(l),Zi(l),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&A0(c.annotationUID),Un(g))},this._dragCallback=o=>{this.isDrawing=!0;const i=o.detail,{element:l}=i,{annotation:c,viewportUIDsToRender:g,handleIndex:v,newAnnotation:_}=this.editData;this.createMemo(l,c,{newAnnotation:_});const{data:T}=c;if(v===void 0){const{deltaPoints:P}=i,I=P.world,{points:R}=T.handles;R.forEach(L=>{L[0]+=I[0],L[1]+=I[1],L[2]+=I[2]}),T.invalidated=!0}else{const{currentPoints:P}=i,I=_n(l),{worldToCanvas:R,canvasToWorld:L}=I.viewport,V=P.world,{points:U}=T.handles;U[v]=[...V];let j,z,$,K,X,ee,ne,le;switch(v){case 0:case 3:j=R(U[0]),K=R(U[3]),z=[K[0],j[1]],$=[j[0],K[1]],ee=L(z),ne=L($),U[1]=ee,U[2]=ne;break;case 1:case 2:z=R(U[1]),$=R(U[2]),j=[$[0],z[1]],K=[z[0],$[1]],X=L(j),le=L(K),U[0]=X,U[3]=le;break}T.invalidated=!0}this.editData.hasMoved=!0,_n(l),Un(g)},this._activateDraw=o=>{ar.isInteractingWithTool=!0,o.addEventListener(Xe.MOUSE_UP,this._endCallback),o.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),o.addEventListener(Xe.MOUSE_MOVE,this._dragCallback),o.addEventListener(Xe.MOUSE_CLICK,this._endCallback),o.addEventListener(Xe.TOUCH_END,this._endCallback),o.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=o=>{ar.isInteractingWithTool=!1,o.removeEventListener(Xe.MOUSE_UP,this._endCallback),o.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),o.removeEventListener(Xe.MOUSE_MOVE,this._dragCallback),o.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),o.removeEventListener(Xe.TOUCH_END,this._endCallback),o.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._activateModify=o=>{ar.isInteractingWithTool=!0,o.addEventListener(Xe.MOUSE_UP,this._endCallback),o.addEventListener(Xe.MOUSE_DRAG,this._dragCallback),o.addEventListener(Xe.MOUSE_CLICK,this._endCallback),o.addEventListener(Xe.TOUCH_END,this._endCallback),o.addEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=o=>{ar.isInteractingWithTool=!1,o.removeEventListener(Xe.MOUSE_UP,this._endCallback),o.removeEventListener(Xe.MOUSE_DRAG,this._dragCallback),o.removeEventListener(Xe.MOUSE_CLICK,this._endCallback),o.removeEventListener(Xe.TOUCH_END,this._endCallback),o.removeEventListener(Xe.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(o,i)=>{const{viewport:c}=o,{element:g}=c;let v=O0(this.getToolName(),g);if(!(v!=null&&v.length)||(v=this.filterInteractableAnnotationsForElement(g,v),!(v!=null&&v.length)))return!1;const _={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:o.viewport.id};for(let T=0;Tc.worldToCanvas(ee)),j=this.getStyle("lineWidth",_,P),z=this.getStyle("lineDash",_,P),$=this.getStyle("color",_,P);if(!c.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}let K;!this.editData&&V!==null&&(K=[U[V]]),K&&$o(i,I,"0",K,{color:$}),mK(i,I,"0",U[0],U[3],{color:"black",lineDash:z,lineWidth:j})}},this._getRectangleImageCoordinates=o=>{const[i,l]=o;return{left:Math.min(i[0],l[0]),top:Math.min(i[1],l[1]),width:Math.abs(i[0]-l[0]),height:Math.abs(i[1]-l[1])}},this._calculateCachedStats=(o,i,l,c,g)=>{const{data:v}=o,{viewportUID:_,renderingEngineUID:T,sceneUID:P}=g,I=v.handles.points[0],R=v.handles.points[3],{cachedStats:L}=v,V=Object.keys(L);for(let j=0;jQo(o,l)&&Qo(i,l),this._getTargetVolumeUID=o=>{if(this.configuration.volumeUID)return this.configuration.volumeUID;const i=o.getVolumeActors();if(!(!i&&!i.length))return i[0].uid},this._throttledCalculateCachedStats=v1(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),Zi(e);const{annotation:o,viewportUIDsToRender:i}=this.editData,{data:l}=o;return l.active=!1,l.handles.activeHandleIndex=null,Un(i),this.editData=null,o.metadata.annotationUID}_getImageVolumeFromTargetUID(e,o){let i,l;if(e.startsWith("stackTarget")){const c=e.indexOf(":"),g=e.substring(c+1);i=o.getViewport(g).getImageData()}else i=Jn.getVolume(e);return{imageVolume:i,viewport:l}}_getTargetStackUID(e){return`stackTarget:${e.uid}`}};uR.toolName="VideoRedaction";let PD=uR;const Zxe=Object.freeze(Object.defineProperty({__proto__:null,AdvancedMagnifyTool:Ev,AngleTool:wD,AnnotationDisplayTool:h4,AnnotationTool:Yo,ArrowAnnotateTool:Ih,BaseTool:Oa,BidirectionalTool:wv,BrushTool:c_,CONSTANTS:Iye,CircleROIStartEndThresholdTool:LY,CircleROITool:N9,CircleScissorsTool:RY,CobbAngleTool:CD,CrosshairsTool:Jc,DragProbeTool:mD,ETDRSGridTool:vD,EllipticalROITool:Jg,Enums:Mz,EraserTool:OY,HeightTool:pD,KeyImageTool:ED,LabelMapEditWithContourTool:MD,LabelTool:L9,LabelmapBaseTool:Xg,LengthTool:r4,LivewireContourSegmentationTool:yD,LivewireContourTool:V9,MIPJumpToClickTool:yY,MagnifyTool:wY,OrientationMarkerTool:G9,OverlayGridTool:CY,PaintFillTool:NY,PanTool:M8,PlanarFreehandContourSegmentationTool:vf,PlanarFreehandROITool:n4,PlanarRotateTool:R8,ProbeTool:Dh,RectangleROIStartEndThresholdTool:vP,RectangleROIThresholdTool:kP,RectangleROITool:Eh,RectangleScissorsTool:PY,ReferenceCursors:Yl,ReferenceLinesTool:Rg,RegionSegmentPlusTool:ID,RegionSegmentTool:DD,ScaleOverlayTool:TY,SculptorTool:L8,SegmentBidirectionalTool:OD,SegmentLabelTool:KY,SegmentSelectTool:W9,SegmentationIntersectionTool:_Y,SphereScissorsTool:AY,SplineContourSegmentationTool:kD,SplineROITool:b9,StackScrollTool:Yg,Synchronizer:dP,SynchronizerManager:Pq,ToolGroupManager:zz,TrackballRotateTool:vY,Types:e_e,UltrasoundDirectionalTool:_D,UltrasoundPleuraBLineTool:TD,VideoRedactionTool:PD,VolumeRotateTool:DY,WholeBodySegmentTool:MY,WindowLevelRegionTool:kY,WindowLevelTool:P8,ZoomTool:A8,addTool:t2,annotation:Mve,cancelActiveManipulations:Mq,cursors:I6e,destroy:Tye,drawing:Q5e,init:Rq,removeTool:Zz,segmentation:w_e,splines:T_e,get state(){return ar},store:Sye,synchronizers:Xye,utilities:QCe,version:Oye},Symbol.toStringTag,{value:"Module"}));function qY(n,e,o){if(n===void 0)throw new Error("decodeRGB: rgbBuffer must be defined");if(n.length%3!==0)throw new Error(`decodeRGB: rgbBuffer length ${n.length} must be divisible by 3`);const i=n.length/3;let l=0,c=0;if(o){for(let g=0;g>e;return i}function nT(n,e,o){const i=n[`${e}PaletteColorLookupTableData`];if(i)return Promise.resolve(i);const l=Hr("imagePixelModule",n.imageId);return l&&typeof l.then=="function"?l.then(c=>c?c[`${e}PaletteColorLookupTableData`]:o):Promise.resolve(l?l[`${e}PaletteColorLookupTableData`]:o)}function ZY(n,e,o){const i=n.columns*n.rows,l=n.pixelData;Promise.all([nT(n,"red",null),nT(n,"green",null),nT(n,"blue",null)]).then(([c,g,v])=>{if(!c||!g||!v)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const _=c.length;let T=0,P=0;const I=n.redPaletteColorLookupTableDescriptor[1],R=n.redPaletteColorLookupTableDescriptor[2]===8?0:8,L=tT(c,R),V=tT(g,R),U=tT(v,R);if(o){for(let j=0;jI+_-1?z=_-1:z-=I,e[P++]=L[z],e[P++]=V[z],e[P++]=U[z],e[P++]=255}return}for(let j=0;jI+_-1?z=_-1:z-=I,e[P++]=L[z],e[P++]=V[z],e[P++]=U[z]}})}function rT(n,e){if(!(!n.elements[e]||n.elements[e].length!==6))return[n.uint16(e,0),n.uint16(e,1),n.uint16(e,2)]}function iT(n,e,o){const i=[],l=n.elements[e];for(let c=0;c0?0:n.uint16("x00280103")}function kc(n,e,o){const i=[],l=n.string(e);if(!l)return;const c=l.split("\\");if(!(o&&c.lengthDt.byteArray.length-Dt.position&&(br=Dt.byteArray.length-Dt.position),Vt.fragments.push({offset:Dt.position-Ut-8,position:Dt.position,length:br}),Dt.seek(br),void(Vt.length=Dt.position-Vt.dataOffset);Vt.fragments.push({offset:Dt.position-Ut-8,position:Dt.position,length:br}),Dt.seek(br)}gn&&gn.push("pixel data element ".concat(Vt.tag," missing sequence delimiter tag xfffee0dd"))}function le(Dt,Vt){if(Dt===void 0)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var gn=Dt.byteArray.length-8;Dt.position<=gn;)if(Dt.readUint16()===65534){var Bt=Dt.readUint16();if(Bt===57565)return Dt.readUint32()!==0&&Dt.warnings("encountered non zero length following item delimiter at position ".concat(Dt.position-4," while reading element of undefined length with tag ").concat(Vt.tag)),void(Vt.length=Dt.position-Vt.dataOffset)}Vt.length=Dt.byteArray.length-Vt.dataOffset,Dt.seek(Dt.byteArray.length-Dt.position)}function ce(Dt,Vt,gn){if(gn<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(Vt+gn>Dt.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var Bt,rn="",Zn=0;ZnVt.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var rn=Dt.elements;Vt.positiongn)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function Et(Dt,Vt,gn){var Bt=3Vt.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var rn=Dt.elements;Vt.positionDt.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(Dt[Vt]<<8)+Dt[Vt+1]},readInt16:function(Dt,Vt){if(Vt<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(Vt+2>Dt.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";return Vt=(Dt[Vt]<<8)+Dt[Vt+1],Vt=32768&Vt?Vt-65535-1:Vt},readUint32:function(Dt,Vt){if(Vt<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(Vt+4>Dt.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*Dt[Vt]+Dt[Vt+1])+Dt[Vt+2])+Dt[Vt+3]},readInt32:function(Dt,Vt){if(Vt<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(Vt+4>Dt.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(Dt[Vt]<<24)+(Dt[Vt+1]<<16)+(Dt[Vt+2]<<8)+Dt[Vt+3]},readFloat:function(Dt,Vt){if(Vt<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(Vt+4>Dt.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var gn=new Uint8Array(4);return gn[3]=Dt[Vt],gn[2]=Dt[Vt+1],gn[1]=Dt[Vt+2],gn[0]=Dt[Vt+3],new Float32Array(gn.buffer)[0]},readDouble:function(Dt,Vt){if(Vt<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(Vt+8>Dt.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var gn=new Uint8Array(8);return gn[7]=Dt[Vt],gn[6]=Dt[Vt+1],gn[5]=Dt[Vt+2],gn[4]=Dt[Vt+3],gn[3]=Dt[Vt+4],gn[2]=Dt[Vt+5],gn[1]=Dt[Vt+6],gn[0]=Dt[Vt+7],new Float64Array(gn.buffer)[0]}};function Dn(Dt,Vt,gn){if(typeof Buffer<"u"&&Dt instanceof Buffer)return Dt.slice(Vt,Vt+gn);if(Dt instanceof Uint8Array)return new Uint8Array(Dt.buffer,Dt.byteOffset+Vt,gn);throw"dicomParser.from: unknown type for byteArray"}function Nn(Dt,Vt){for(var gn=0;gn"u"||!(rn instanceof Buffer)))throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(Zn<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(Zn>=rn.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=Bt,this.byteArray=rn,this.position=Zn||0,this.warnings=[]}var Vt,gn;return Vt=Dt,(gn=[{key:"seek",value:function(Bt){if(this.position+Bt<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=Bt}},{key:"readByteStream",value:function(Bt){if(this.position+Bt>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var rn=Dn(this.byteArray,this.position,Bt);return this.position+=Bt,new Dt(this.byteArrayParser,rn)}},{key:"getSize",value:function(){return this.byteArray.length}},{key:"readUint16",value:function(){var Bt=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,Bt}},{key:"readUint32",value:function(){var Bt=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,Bt}},{key:"readFixedString",value:function(Bt){var rn=ce(this.byteArray,this.position,Bt);return this.position+=Bt,rn}}])&&Nn(Vt.prototype,gn),Object.defineProperty(Vt,"prototype",{writable:!1}),Dt}(),et={readUint16:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(Vt+2>Dt.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return Dt[Vt]+256*Dt[Vt+1]},readInt16:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(Vt+2>Dt.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";return Vt=Dt[Vt]+(Dt[Vt+1]<<8),Vt=32768&Vt?Vt-65535-1:Vt},readUint32:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(Vt+4>Dt.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return Dt[Vt]+256*Dt[Vt+1]+256*Dt[Vt+2]*256+256*Dt[Vt+3]*256*256},readInt32:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(Vt+4>Dt.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return Dt[Vt]+(Dt[Vt+1]<<8)+(Dt[Vt+2]<<16)+(Dt[Vt+3]<<24)},readFloat:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(Vt+4>Dt.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var gn=new Uint8Array(4);return gn[0]=Dt[Vt],gn[1]=Dt[Vt+1],gn[2]=Dt[Vt+2],gn[3]=Dt[Vt+3],new Float32Array(gn.buffer)[0]},readDouble:function(Dt,Vt){if(Vt<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(Vt+8>Dt.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var gn=new Uint8Array(8);return gn[0]=Dt[Vt],gn[1]=Dt[Vt+1],gn[2]=Dt[Vt+2],gn[3]=Dt[Vt+3],gn[4]=Dt[Vt+4],gn[5]=Dt[Vt+5],gn[6]=Dt[Vt+6],gn[7]=Dt[Vt+7],new Float64Array(gn.buffer)[0]}};function Me(Dt){var Vt=1"u")throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax";return Cr=Dt.slice(An),wr=pako.inflateRaw(Cr),(Cr=qt(Dt,wr.length+An)).set(Dt.slice(0,An),0),Cr.set(wr,An),new xn(et,Cr,0)}(Ir,br.position),br=new we(Ir.byteArrayParser,Ir.byteArray,{});br.warnings=Ir.warnings;try{(Ut?wt:Et)(br,Ir,Ir.byteArray.length,Vt)}catch(jr){throw{exception:jr,dataSet:br}}return br}return function(Zn,Ut){for(var Ir in Zn.elements)Zn.elements.hasOwnProperty(Ir)&&(Ut.elements[Ir]=Zn.elements[Ir]);return Zn.warnings!==void 0&&(Ut.warnings=Zn.warnings.concat(Ut.warnings)),Ut}(gn=Me(Dt,Vt),rn(gn))}var yt=function(Dt,Vt,gn){for(var Bt=0,rn=Vt;rn= 0";if(gn>=Ut.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(Bt<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(gn+Bt>Ut.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var Zn=new xn(Dt.byteArrayParser,Dt.byteArray,Ut.dataOffset),Ut=je(Zn);if(Ut.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";Zn.seek(Ut.length);var Ir=Zn.position;if(Bt===1)return Dn(Zn.byteArray,Ir+rn[gn].offset+8,rn[gn].length);for(var Ut=yt(rn,gn,Bt),br=qt(Zn.byteArray,Ut),jr=0,An=gn;An= 0";if(gn>=Bt.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var Zn=Bt[gn],Zn=Pt(rn,Zn);if(Zn===void 0)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return St(Dt,Vt,Zn,mn(gn,Bt,rn,Zn),rn)}var Hn=!1;function Kn(Dt,Vt,gn){if(Hn||(Hn=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),Dt===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(Vt===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(gn===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if(Vt.tag!=="x7fe00010")throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(Vt.encapsulatedPixelData!==!0||Vt.hadUndefinedLength!==!0||Vt.basicOffsetTable===void 0||Vt.fragments===void 0)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(gn<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return Vt.basicOffsetTable.length!==0?Pn(Dt,Vt,gn):St(Dt,Vt,0,Vt.fragments.length)}v.default={isStringVr:P,isPrivateTag:I,parsePN:R,parseTM:L,parseDA:U,explicitElementToString:j,explicitDataSetToJS:z,createJPEGBasicOffsetTable:X,parseDicomDataSetExplicit:wt,parseDicomDataSetImplicit:Et,readFixedString:ce,alloc:qt,version:$t,bigEndianByteArrayParser:Jt,ByteStream:xn,sharedCopy:Dn,DataSet:we,findAndSetUNElementLength:le,findEndOfEncapsulatedElement:ne,findItemDelimitationItemAndSetElementLength:Te,littleEndianByteArrayParser:et,parseDicom:st,readDicomElementExplicit:ut,readDicomElementImplicit:Pe,readEncapsulatedImageFrame:Pn,readEncapsulatedPixelData:Kn,readEncapsulatedPixelDataFromFragments:St,readPart10Header:Me,readSequenceItemsExplicit:Ke,readSequenceItemsImplicit:it,readSequenceItem:je,readTag:ee,LEI:"1.2.840.10008.1.2",LEE:"1.2.840.10008.1.2.1"}}],c={},i.m=l,i.c=c,i.d=function(g,v,_){i.o(g,v)||Object.defineProperty(g,v,{enumerable:!0,get:_})},i.r=function(g){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},i.t=function(g,v){if(1&v&&(g=i(g)),8&v||4&v&&typeof g=="object"&&g&&g.__esModule)return g;var _=Object.create(null);if(i.r(_),Object.defineProperty(_,"default",{enumerable:!0,value:g}),2&v&&typeof g!="string")for(var T in g)i.d(_,T,(function(P){return g[P]}).bind(null,T));return _},i.n=function(g){var v=g&&g.__esModule?function(){return g.default}:function(){return g};return i.d(v,"a",v),v},i.o=function(g,v){return Object.prototype.hasOwnProperty.call(g,v)},i.p="",i(i.s=1);function i(g){if(c[g])return c[g].exports;var v=c[g]={i:g,l:!1,exports:{}};return l[g].call(v.exports,v,v.exports,i),v.l=!0,v.exports}var l,c})})(tJ);var Fs=tJ.exports;function fk(n){const e=n.indexOf(":");let o=n.substring(e+1);const i=o.indexOf("frame=");let l;if(i!==-1){const v=o.substring(i+6);l=parseInt(v,10),o=o.substring(0,i-1)}const c=n.substring(0,e),g=l!==void 0?l-1:void 0;return{scheme:c,url:o,frame:l,pixelDataFrame:g}}let AD={open(n,e){n.open("get",e,!0)},beforeSend(){},beforeProcessing(n){return Promise.resolve(n.response)},imageCreated(){},strict:!1};function nJ(n){AD=Object.assign(AD,n)}function hk(){return AD}function d_(n,e,o={},i={}){const l=hk(),c=_=>{if(typeof l.errorInterceptor=="function"){const T=new Error("request failed");T.request=_,T.response=_.response,T.status=_.status,l.errorInterceptor(T)}},g=new XMLHttpRequest,v=new Promise((_,T)=>{l.open(g,n,o,i);const P=l.beforeSend(g,e,o,i);g.responseType="arraybuffer";const I=Object.assign({},o,P);Object.keys(I).forEach(function(R){I[R]!==null&&(R==="Accept"&&n.indexOf("accept=")!==-1||g.setRequestHeader(R,I[R]))}),i.deferred={resolve:_,reject:T},i.url=n,i.imageId=e,g.onloadstart=function(R){l.onloadstart&&l.onloadstart(R,i),Or(pr,"cornerstoneimageloadstart",{url:n,imageId:e})},g.onloadend=function(R){l.onloadend&&l.onloadend(R,i),Or(pr,"cornerstoneimageloadend",{url:n,imageId:e})},g.onreadystatechange=function(R){l.onreadystatechange&&l.onreadystatechange(R,i),g.readyState===4&&(g.status===200||g.status===206?l.beforeProcessing(g).then(_).catch(()=>{c(g),T(g)}):(c(g),T(g)))},g.onprogress=function(R){const L=R.loaded;let V,U;R.lengthComputable&&(V=R.total,U=Math.round(L/V*100)),Or(pr,"cornerstoneimageloadprogress",{url:n,imageId:e,loaded:L,total:V,percentComplete:U}),l.onprogress&&l.onprogress(R,i)},g.onerror=function(){c(g),T(g)},g.onabort=function(){c(g),T(g)},g.send()});return v.xhr=g,v}function iSe(n,e,o){if(o+n.length>e.length)return!1;let i=o;for(let l=0;l{if(typeof l.errorInterceptor=="function"){const I=new Error("request failed");l.errorInterceptor(I)}},T=new uSe("streamRequest");return T.generate(async(P,I)=>{var V,U;const R=(V=l.beforeSend)==null?void 0:V.call(l,null,n,o,{}),L=Object.assign({},o,R);Object.keys(L).forEach(function(j){L[j]===null&&(L[j]=void 0),j==="Accept"&&n.indexOf("accept=")!==-1&&(L[j]=void 0)});try{const j=await fetch(n,{headers:L,signal:void 0});if(j.status!==200)throw new Error(`Couldn't retrieve ${n} got status ${j.status}`);const z=j.body.getReader(),$=j.headers,K=$.get("content-type"),X=Number($.get("Content-Length"));let ee=!1,ne=g.encodedData,le=g.lastSize||0;for(g.isPartial=!0;!ee;){const{done:ce,value:ge}=await z.read();if(ne=cSe(ne,ge),!ne){if(ee)throw new Error(`Done but no image frame available ${e}`);continue}if(ee=ce||ne.byteLength===X,!ee&&ne.lengtho-l&&(console.log(`Truncated fragment, changing fragment length from ${i.length} to ${o-l}`),i.length=o-l)}return n}function dSe(n){let e=Fs.parseDicom(n,{untilTag:"x7fe00010"});e.elements.x7fe00010||console.warn("Pixel data not found!");let o;try{o=Fs.parseDicom(n)}catch(i){console.error(i),console.log("pixel data dataset:",i.dataSet),o=i.dataSet}return e.elements.x7fe00010=o.elements.x7fe00010,e=hSe(e),e}async function iJ(n,e,o){const i=dSe(n),{uri:l,imageId:c,fileTotalLength:g}=o;return i.fetchMore=async function(v){const _=Object.assign({uri:l,imageId:c,fetchedLength:n.length,lengthToFetch:g-n.length},v),{fetchedLength:T,lengthToFetch:P}=_,{arrayBuffer:I}=await e(l,c,{byteRange:`${T}-${T+P}`}),R=new Uint8Array(I),L=new Uint8Array(i.byteArray.length+R.length);return L.set(i.byteArray),L.set(R,i.byteArray.length),iJ(L,e,o)},i}function gSe(n,e){if(!n)return;const{NumberOfFrames:o,PerFrameFunctionalGroupsSequence:i,SharedFunctionalGroupsSequence:l}=sJ(n);if(i||o>1){const{shared:c,perFrame:g}=oJ(i,l,e);return{NumberOfFrames:o,PerFrameFunctionalInformation:g,SharedFunctionalInformation:c}}return{NumberOfFrames:o}}function oJ(n,e,o){const i={};(e?Object.values(e.items[0].dataSet.elements):[]).map(c=>i[c.tag]=c);const l={};return(n?Object.values(n.items[o-1].dataSet.elements):[]).map(c=>l[c.tag]=c),{shared:i,perFrame:l}}function sJ(n){if(!n)return;const{elements:e,...o}=n,{x52009230:i,x52009229:l,...c}=e;return{NumberOfFrames:n.intString("x00280008"),PerFrameFunctionalGroupsSequence:i,SharedFunctionalGroupsSequence:l,otherElements:c,otherAttributtes:o}}function pSe(n,e){if(!e)return;const{NumberOfFrames:o,PerFrameFunctionalGroupsSequence:i,SharedFunctionalGroupsSequence:l,otherElements:c}=sJ(e);if(i||o>1){const{shared:g,perFrame:v}=oJ(i,l,n),_={elements:{...c,...g,...v}},T=Object.create(e);return Object.assign(T,_)}return e}let p2={};const mSe=()=>{p2={}};function FP(n){if(p2[n])return p2[n]}function vSe(n){const e=FP(n);return aJ(e)}function aJ(n){if(!n)return!1;const e=n.intString("x00280008");return e&&e>1}function kSe(n){return n.indexOf("&frame=")}function ySe(n){const e=kSe(n),o=e===-1?n:n.slice(0,e),i=parseInt(n.slice(e+7),10)||1;let l;return p2[o]?l=p2[o].dataSet:l=void 0,{dataSet:l,frame:i}}function wSe(n){const e=[],o=FP(n);if(aJ(o)){const i=o.intString("x00280008");for(let l=1;l<=i;l++)e.push(`${n}&frame=${l}`)}else e.push(n);return e}const lJ={_get:FP,generateMultiframeWADOURIs:wSe,retrieveMultiframeDataset:ySe,isMultiframeDataset:vSe};let b8=0,fg={};function CSe(n){return p2[n]!==void 0}function _Se(n){let e;if(n.includes("&frame=")){const{frame:o,dataSet:i}=lJ.retrieveMultiframeDataset(n);e=pSe(o,i)}else p2[n]&&(e=p2[n].dataSet);return e}function xSe(n,e){const o=p2[n];if(!o){console.error(`No loaded dataSet for uri ${n}`);return}b8-=o.dataSet.byteArray.length,o.dataSet=e,b8+=e.byteArray.length,Or(pr,"datasetscachechanged",{uri:n,action:"updated",cacheInfo:g_()})}function SSe(n,e=d_,o){if(p2[n])return new Promise(c=>{p2[n].cacheCount++,c(p2[n].dataSet)});if(fg[n])return fg[n].cacheCount++,fg[n];const i=e(n,o),l=new Promise((c,g)=>{i.then(async function(v){const _={isPartialContent:!1,fileTotalLength:null};if(!(v instanceof ArrayBuffer)){if(!v.arrayBuffer)return g(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));_.isPartialContent=v.flags.isPartialContent,_.fileTotalLength=v.flags.fileTotalLength,v=v.arrayBuffer}const T=new Uint8Array(v);let P;try{_.isPartialContent?P=await iJ(T,e,{uri:n,imageId:o,fileTotalLength:_.fileTotalLength}):P=Fs.parseDicom(T)}catch(I){return g(I)}p2[n]={dataSet:P,cacheCount:l.cacheCount},b8+=P.byteArray.length,c(P),Or(pr,"datasetscachechanged",{uri:n,action:"loaded",cacheInfo:g_()})},g).then(()=>{delete fg[n]},()=>{delete fg[n]})});return l.cacheCount=1,fg[n]=l,l}function TSe(n){p2[n]&&(p2[n].cacheCount--,p2[n].cacheCount===0&&(b8-=p2[n].dataSet.byteArray.length,delete p2[n],Or(pr,"datasetscachechanged",{uri:n,action:"unloaded",cacheInfo:g_()})))}function g_(){return{cacheSizeInBytes:b8,numberOfDataSetsCached:Object.keys(p2).length}}function ESe(){mSe(),fg={},b8=0}const u8={isLoaded:CSe,load:SSe,unload:TSe,getInfo:g_,purge:ESe,get:_Se,update:xSe};function DSe(n){const e=[];for(let o=0;o<=30;o+=2){let i=`x60${o.toString(16)}`;i.length===4&&(i=`x600${o.toString(16)}`);const l=n.elements[`${i}3000`];if(!l)continue;const c=[];for(let g=0;g>v&1}e.push({rows:n.uint16(`${i}0010`),columns:n.uint16(`${i}0011`),type:n.string(`${i}0040`),x:n.int16(`${i}0050`,1)-1,y:n.int16(`${i}0050`,0)-1,pixelData:c,description:n.string(`${i}0022`),label:n.string(`${i}1500`),roiArea:n.string(`${i}1301`),roiMean:n.string(`${i}1302`),roiStandardDeviation:n.string(`${i}1303`)})}return{overlays:e}}function f5(n){return n==="RECON TOMO"||n==="RECON GATED TOMO"}function VP(n,e){const o=n.string("x00080008");if(o){const i=o.split("\\");if(i.length>e)return i[e]}}function ISe(n){let e;const o=n.string("x00080060");if(o!=null&&o.includes("NM")){const i=VP(n,2);i&&f5(i)&&n.elements.x00540022&&(e=kc(n.elements.x00540022.items[0].dataSet,"x00200037",6))}return e}function OSe(n){let e;const o=n.string("x00080060");if(o!=null&&o.includes("NM")){const i=VP(n,2);i&&f5(i)&&n.elements.x00540022&&(e=kc(n.elements.x00540022.items[0].dataSet,"x00200032",3))}return e}function zb(n){let e=kc(n,"x00200037",6);return!e&&n.elements.x00209116&&(e=kc(n.elements.x00209116.items[0].dataSet,"x00200037",6)),e||(e=ISe(n)),e}function Hb(n){let e=kc(n,"x00200032",3);return!e&&n.elements.x00209113&&(e=kc(n.elements.x00209113.items[0].dataSet,"x00200032",3)),e||(e=OSe(n)),e}function Kb(n){let e=kc(n,"x00280030",2);return!e&&n.elements.x00289110&&(e=kc(n.elements.x00289110.items[0].dataSet,"x00280030",2)),e}function qb(n){let e;return n.elements.x00180050?e=n.floatString("x00180050"):n.elements.x00289110&&n.elements.x00289110.items.length&&n.elements.x00289110.items[0].dataSet.elements.x00180050&&(e=n.elements.x00289110.items[0].dataSet.floatString("x00180050")),e}function uJ(n,e,o){const i={};for(const l of o)try{const c=e(l,n);if(c){const g={};for(const v in c)if(v in c){const _=MSe(v);g[_]=c[v]}Object.assign(i,g)}}catch(c){console.error(`Error retrieving ${l} data:`,c)}return i}const MSe=n=>n.charAt(0).toUpperCase()+n.slice(1),cJ=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function Xb(n){const e=n.elements.x00186011;return!e||!e.items?[]:e.items.map(i=>{const l=i.dataSet.double("x0018602c"),c=i.dataSet.double("x0018602e"),g=i.dataSet.uint16("x00186024"),v=i.dataSet.uint16("x00186026"),_=i.dataSet.uint16("x0018601a"),T=i.dataSet.uint16("x0018601e"),P=i.dataSet.uint16("x00186018"),I=i.dataSet.uint16("x0018601c"),R=i.dataSet.int32("x00186020")||null,L=i.dataSet.int32("x00186022")||null,V=i.dataSet.uint16("x0018602a"),U=i.dataSet.uint16("x00186028"),j=i.dataSet.uint16("x00186012"),z=i.dataSet.uint16("x00186014"),$=i.dataSet.uint16("x00186016"),K=i.dataSet.uint16("x00186030");return{regionLocationMinY0:_,regionLocationMaxY1:T,regionLocationMinX0:P,regionLocationMaxX1:I,referencePixelX0:R,referencePixelY0:L,physicalDeltaX:l,physicalDeltaY:c,physicalUnitsXDirection:g,physicalUnitsYDirection:v,referencePhysicalPixelValueY:V,referencePhysicalPixelValueX:U,regionSpatialFormat:j,regionDataType:z,regionFlags:$,transducerFrequency:K}})}function UP(n,e){const{MetadataModules:o}=bu;if(Array.isArray(e))return;const i=fk(e);if(n===o.MULTIFRAME){const g=lJ.retrieveMultiframeDataset(i.url);return g.dataSet?gSe(g.dataSet,g.frame):void 0}let l=i.url;i.frame&&(l=`${l}&frame=${i.frame}`);const c=u8.get(l);if(c)return fJ(n,e,c)}function fJ(n,e,o){const{MetadataModules:i}=bu;if(n===i.GENERAL_STUDY)return{studyDescription:o.string("x00081030"),studyDate:Fs.parseDA(o.string("x00080020")),studyTime:Fs.parseTM(o.string("x00080030")||""),accessionNumber:o.string("x00080050")};if(n===i.GENERAL_SERIES)return{modality:o.string("x00080060"),seriesInstanceUID:o.string("x0020000e"),seriesDescription:o.string("x0008103e"),seriesNumber:o.intString("x00200011"),studyInstanceUID:o.string("x0020000d"),seriesDate:Fs.parseDA(o.string("x00080021")),seriesTime:Fs.parseTM(o.string("x00080031")||""),acquisitionDate:Fs.parseDA(o.string("x00080022")),acquisitionTime:Fs.parseTM(o.string("x00080032")||"")};if(n===i.GENERAL_IMAGE)return{sopInstanceUID:o.string("x00080018"),instanceNumber:o.intString("x00200013"),lossyImageCompression:o.string("x00282110"),lossyImageCompressionRatio:o.floatString("x00282112"),lossyImageCompressionMethod:o.string("x00282114")};if(n===i.PATIENT)return{patientID:o.string("x00100020"),patientName:o.string("x00100010")};if(n===i.PATIENT_STUDY)return{patientAge:o.intString("x00101010"),patientSize:o.floatString("x00101020"),patientSex:o.string("x00100040"),patientWeight:o.floatString("x00101030")};if(n===i.NM_MULTIFRAME_GEOMETRY){const l=o.string("x00080060"),c=VP(o,2);return{modality:l,imageType:o.string("x00080008"),imageSubType:c,imageOrientationPatient:zb(o),imagePositionPatient:Hb(o),sliceThickness:qb(o),pixelSpacing:Kb(o),numberOfFrames:o.uint16("x00280008"),isNMReconstructable:f5(c)&&l.includes("NM")}}if(n===i.IMAGE_PLANE){const l=zb(o),c=Hb(o),g=Kb(o),v=qb(o);let _=null,T=null;g&&(T=g[0],_=g[1]);let P=null,I=null;return l&&(P=[parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2])],I=[parseFloat(l[3]),parseFloat(l[4]),parseFloat(l[5])]),{frameOfReferenceUID:o.string("x00200052"),rows:o.uint16("x00280010"),columns:o.uint16("x00280011"),imageOrientationPatient:l,rowCosines:P,columnCosines:I,imagePositionPatient:c,sliceThickness:v,sliceLocation:o.floatString("x00201041"),pixelSpacing:g,rowPixelSpacing:T,columnPixelSpacing:_}}if(n===i.CINE)return{frameTime:o.floatString("x00181063")};if(n===i.IMAGE_PIXEL)return QY(o);if(n===i.VOI_LUT){const l=eJ(o);return{windowCenter:kc(o,"x00281050",1),windowWidth:kc(o,"x00281051",1),voiLUTSequence:RD(l,o.elements.x00283010),voiLUTFunction:o.string("x00281056")}}if(n===i.MODALITY_LUT)return{rescaleIntercept:o.floatString("x00281052"),rescaleSlope:o.floatString("x00281053"),rescaleType:o.string("x00281054"),modalityLUTSequence:RD(o.uint16("x00280103"),o.elements.x00283000)};if(n===i.SOP_COMMON)return{sopClassUID:o.string("x00080016"),sopInstanceUID:o.string("x00080018")};if(n===i.PET_ISOTOPE){const l=o.elements.x00540016;if(l===void 0)return;const c=l.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:Fs.parseTM(c.string("x00181072")||""),radionuclideTotalDose:c.floatString("x00181074"),radionuclideHalfLife:c.floatString("x00181075")}}}if(n===i.OVERLAY_PLANE)return DSe(o);if(n==="transferSyntax"){let l;try{l=o.string("x00020010")}catch{}return{transferSyntaxUID:l}}if(n===i.PET_SERIES)return{correctedImage:o.string("x00280051"),units:o.string("x00541001"),decayCorrection:o.string("x00541102")};if(n===i.PET_IMAGE)return{frameReferenceTime:o.floatString(o.string("x00541300")||""),actualFrameDuration:o.intString(o.string("x00181242"))};if(n===i.ULTRASOUND_ENHANCED_REGION)return Xb(o);if(n===i.CALIBRATION&&o.string("x00080060")==="US")return{sequenceOfUltrasoundRegions:Xb(o)};if(n==="instance")return uJ(e,UP,cJ)}let p_=[];function PSe(n){return`dicomfile:${p_.push(n)-1}`}function RSe(n){return p_[n]}function ASe(n){p_[n]=void 0}function LSe(){p_=[]}const hJ={add:PSe,get:RSe,remove:ASe,purge:LSe};function NSe(n){const e=n.intString("x00280008"),o=n.elements.x7fe00010;return e!==o.fragments.length}function dJ(n,e){if(n.elements.x7fe00010&&n.elements.x7fe00010.basicOffsetTable.length)return Fs.readEncapsulatedImageFrame(n,n.elements.x7fe00010,e);if(NSe(n)){const T=Fs.createJPEGBasicOffsetTable(n,n.elements.x7fe00010);return Fs.readEncapsulatedImageFrame(n,n.elements.x7fe00010,e,T)}const o=n.elements.x7fe00010.fragments,i=new Fs.ByteStream(n.byteArrayParser,n.byteArray,n.elements.x7fe00010.dataOffset),l=Fs.readSequenceItem(i);if(l.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";i.seek(l.length);const c=i.position;if(e+1>o.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const v=c+o[e].offset+8,_=o[e].length;return new Uint8Array(i.byteArray.buffer.slice(i.byteArray.byteOffset+v,i.byteArray.byteOffset+v+_))}function bSe(n,e){return n&1<=n.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(n.byteArray.buffer.slice(P,P+T))}else if(i===16){if(P=_+e*T*2,P>=n.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(n.byteArray.buffer.slice(P,P+T*2))}else if(i===1){if(P=_+e*T*.125,P>=n.byteArray.length)throw new Error("frame exceeds size of pixelData");return gJ(n.byteArray,P,T)}else if(i===32){if(P=_+e*T*4,P>=n.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(n.byteArray.buffer.slice(P,P+T*4))}throw new Error("unsupported pixel format")}function mJ(n){const e=fk(n),o=parseInt(e.url,10),i=hJ.get(o);return new Promise((l,c)=>{const g=new FileReader;g.onload=v=>{const _=v.target.result;l(_)},g.onerror=c,g.readAsArrayBuffer(i)})}function BP(n,e=0){const o=n.elements.x7fe00010||n.elements.x7fe00008;return o?o.encapsulatedPixelData?dJ(n,e):pJ(n,e):null}function m_(n){let e=n[0],o=n[0],i;const l=n.length;for(let c=1;c{const v=new FileReader;v.readAsBinaryString===void 0?v.readAsArrayBuffer(l):v.readAsBinaryString(l),v.onload=function(){const _=new Image;_.onload=function(){o.height=_.height,o.width=_.width,n.rows=_.height,n.columns=_.width;const T=o.getContext("2d");T.drawImage(this,0,0);const P=T.getImageData(0,0,_.width,_.height),I=new Date().getTime();n.pixelData=new Uint8Array(P.data.buffer),n.imageData=P,n.decodeTimeInMS=I-i;const R=m_(n.pixelData);n.smallestPixelValue=R.min,n.largestPixelValue=R.max,n.pixelDataLength=n.pixelData.length,c(n)},_.onerror=function(T){g(T)},v.readAsBinaryString===void 0?_.src=`data:image/jpeg;base64,${window.btoa(USe(v.result))}`:_.src=`data:image/jpeg;base64,${window.btoa(v.result)}`},v.onerror=_=>{g(_)}})}function kl(n,e,o,i,l){const c={...i};delete c.loader,delete c.streamingData;const g=Mh(),v=c.priority||void 0;return c.transferPixelData&&o.buffer,g.executeTask("dicomImageLoader","decodeTask",{imageFrame:n,transferSyntax:e,pixelData:o,options:c,decodeConfig:l},{priority:v,requestType:c==null?void 0:c.requestType})}function GSe(n,e,o,i,l={},c){switch(e){case"1.2.840.10008.1.2":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.1":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.2":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.1.99":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.5":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.50":return n.bitsAllocated===8&&(n.samplesPerPixel===3||n.samplesPerPixel===4)?kJ(n,o,i):kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.51":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.57":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.70":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.80":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.81":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.90":return kl(n,e,o,l,c);case"1.2.840.10008.1.2.4.91":return kl(n,e,o,l,c);case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return kl(n,e,o,l,c)}return Promise.reject(new Error(`No decoder for transfer syntax ${e}`))}function yJ(n){const e=Hr("imagePixelModule",n);return{samplesPerPixel:e.samplesPerPixel,photometricInterpretation:e.photometricInterpretation,planarConfiguration:e.planarConfiguration,rows:e.rows,columns:e.columns,bitsAllocated:e.bitsAllocated,bitsStored:e.bitsStored,pixelRepresentation:e.pixelRepresentation,smallestPixelValue:e.smallestPixelValue,largestPixelValue:e.largestPixelValue,redPaletteColorLookupTableDescriptor:e.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:e.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:e.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:e.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:e.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:e.bluePaletteColorLookupTableData,pixelData:void 0,imageId:n}}function WSe(n,e){const o=n.get("modalityLutModule",e)||{},i=n.get("generalSeriesModule",e)||{},{modality:l}=i,c={rescaleSlope:o.rescaleSlope,rescaleIntercept:o.rescaleIntercept,modality:l},g=n.get("scalingModule",e)||{};return{...c,...l==="PT"&&{suvbw:g.suvbw},...l==="RTDOSE"&&{doseGridScaling:g.DoseGridScaling,doseSummation:g.DoseSummation,doseType:g.DoseType,doseUnit:g.DoseUnit}}}function GP(n){return n==="RGB"||n==="PALETTE COLOR"||n==="YBR_FULL"||n==="YBR_FULL_422"||n==="YBR_PARTIAL_422"||n==="YBR_PARTIAL_420"||n==="YBR_RCT"||n==="YBR_ICT"}function $Se(n,e){const o=n.length/4;let i=0,l=0;for(let c=0;c=0?e<=255?o=Uint8Array:e<=65535?o=Uint16Array:e<=4294967295&&(o=Uint32Array):n>=-128&&e<=127?o=Int8Array:n>=-32768&&e<=32767&&(o=Int16Array)),o||Float32Array}function zSe(n,e,o){return WP(n,e)===o}function HSe(n){const e=n.smallestPixelValue,o=n.largestPixelValue,i=WP(e,o);if(i){const l=new i(n.pixelData);n.pixelData=l}else throw new Error("Could not apply a typed array to the pixel data")}let Yb="";function v_(n,e,o,i={}){const l=i.useRGBA;if(i.preScale={enabled:i.preScale&&i.preScale.enabled!==void 0?i.preScale.enabled:!0},!(e!=null&&e.length))return Promise.reject(new Error("The pixel data is missing"));const{MetadataModules:c}=bu,g=document.createElement("canvas"),v=yJ(n);if(v.decodeLevel=i.decodeLevel,i.allowFloatRendering=LO(),i.preScale.enabled){const I=WSe(P$,n);I&&(i.preScale={...i.preScale,scalingParameters:I})}const{decodeConfig:_}=hk();Object.keys(v).forEach(I=>{(typeof v[I]=="function"||v[I]instanceof Promise)&&delete v[I]});const T=GSe(v,o,e,g,i,_),P=GP(v.photometricInterpretation);return new Promise((I,R)=>{T.then(function(L){let V=!1;if(i.targetBuffer&&i.targetBuffer.type&&!P){const{arrayBuffer:ce,type:ge,offset:pe=0,length:we}=i.targetBuffer,Te=L.pixelDataLength,Ve=pe,Pe=we??Te-Ve,je={Uint8Array,Uint16Array,Int16Array,Float32Array,Uint32Array};if(Pe!==L.pixelDataLength)throw new Error(`target array for image does not have the same length (${Pe}) as the decoded image length (${L.pixelDataLength}).`);const Je=je[ge],it=ce?new Je(ce,Ve,Pe):new Je(L.pixelData);if(Pe!==L.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");L.pixelData=it,V=!0}V||HSe(L);const U=Hr(c.IMAGE_PLANE,n)||{},j=Hr(c.VOI_LUT,n)||{},z=Hr(c.MODALITY_LUT,n)||{},$=Hr(c.SOP_COMMON,n)||{},K=Hr(c.CALIBRATION,n)||{},{rows:X,columns:ee}=L;if(P){if(VSe(L)){g.height=L.rows,g.width=L.columns;let pe=g.getContext("2d").createImageData(L.columns,L.rows);l||(pe={...pe,data:new Uint8ClampedArray(3*L.columns*L.rows)}),vJ(L,pe.data,l),L.imageData=pe,L.pixelData=pe.data,L.pixelDataLength=pe.data.length}else if(!l&&L.pixelDataLength===4*X*ee){const ge=new Uint8Array(L.pixelData.length/4*3);L.pixelData=$Se(L.pixelData,ge),L.pixelDataLength=L.pixelData.length}const ce=m_(L.pixelData);L.smallestPixelValue=ce.min,L.largestPixelValue=ce.max}const ne=gf.createImageVoxelManager({scalarData:L.pixelData,width:L.columns,height:L.rows,numberOfComponents:L.samplesPerPixel}),le={imageId:n,dataType:L.pixelData.constructor.name,color:P,calibration:K,columnPixelSpacing:U.columnPixelSpacing,columns:L.columns,height:L.rows,preScale:L.preScale,intercept:z.rescaleIntercept?z.rescaleIntercept:0,slope:z.rescaleSlope?z.rescaleSlope:1,invert:L.photometricInterpretation==="MONOCHROME1",minPixelValue:L.smallestPixelValue,maxPixelValue:L.largestPixelValue,rowPixelSpacing:U.rowPixelSpacing,rows:L.rows,sizeInBytes:L.pixelData.byteLength,width:L.columns,windowCenter:j.windowCenter?j.windowCenter[0]:void 0,windowWidth:j.windowWidth?j.windowWidth[0]:void 0,voiLUTFunction:j.voiLUTFunction?j.voiLUTFunction:void 0,decodeTimeInMS:L.decodeTimeInMS,floatPixelData:void 0,imageFrame:L,voxelManager:ne,rgba:P&&l,getPixelData:()=>L.pixelData,getCanvas:void 0,numberOfComponents:L.samplesPerPixel};if(le.color&&(le.getCanvas=function(){if(Yb===n)return g;const ce=le.columns,ge=le.rows;g.height=ge,g.width=ce;const pe=g.getContext("2d"),we=pe.createImageData(ce,ge),Te=L.pixelData;if(Te.length===ce*ge*4)for(let Ve=0;Ve0&&jSe($.sopClassUID)&&(le.modalityLUT=z.modalityLUTSequence[0]),j.voiLUTSequence&&j.voiLUTSequence.length>0&&(le.voiLUT=j.voiLUTSequence[0]),le.color&&(le.windowWidth=256,le.windowCenter=128),le.windowCenter===void 0||le.windowWidth===void 0){const ce=le.imageFrame.smallestPixelValue,ge=le.imageFrame.largestPixelValue;le.windowWidth=ge-ce,le.windowCenter=(ge+ce)/2}I(le)},R)})}const{ImageQualityStatus:wJ}=bu;function KSe(n,e){n.decache=function(){const o=fk(e);u8.unload(o.url)}}function CJ(n,e,o=0,i,l,c){const g=new Date().getTime(),v={cancelFn:void 0,promise:void 0};return v.promise=new Promise((_,T)=>{n.then(P=>{const I=BP(P,o),R=P.string("x00020010"),L=new Date().getTime(),V=v_(e,I,R,l);KSe(v,e),V.then(U=>{U=U,U.data=P,U.sharedCacheKey=i;const j=new Date().getTime();U.loadTimeInMS=L-g,U.totalTimeInMS=j-g,U.imageQualityStatus=wJ.FULL_RESOLUTION,c!==void 0&&c.imageDoneCallback!==void 0&&c.imageDoneCallback(U),_(U)},function(U){T({error:U,dataSet:P})})},function(P){T({error:P})})}),v}function qSe(n,e,o=0,i,l){const c=new Date().getTime();return{promise:new Promise((v,_)=>{const T=new Date().getTime();let P;try{const I=BP(n,o),R=n.string("x00020010");P=v_(e,I,R,l)}catch(I){_({error:I,dataSet:n});return}P.then(I=>{I=I,I.data=n;const R=new Date().getTime();I.loadTimeInMS=T-c,I.totalTimeInMS=R-c,I.imageQualityStatus=wJ.FULL_RESOLUTION,v(I)},_)}),cancelFn:void 0}}function _J(n){if(n==="dicomweb"||n==="wadouri")return d_;if(n==="dicomfile")return mJ}function iw(n,e={}){const o=fk(n);e=Object.assign({},e),delete e.loader;const i=_J(o.scheme);if(u8.isLoaded(o.url)){const c=u8.get(o.url,i,n);return qSe(c,n,o.pixelDataFrame,o.url,e)}const l=u8.load(o.url,i,n);return CJ(l,n,o.frame,o.url,e)}function xJ(){X7("dicomweb",iw),X7("wadouri",iw),X7("dicomfile",iw),j8(UP)}const XSe={getImagePixelModule:QY,getLUTs:RD,getModalityLUTOutputPixelRepresentation:eJ,getNumberValues:kc,metaDataProvider:UP,metadataForDataset:fJ},YSe={metaData:XSe,dataSetCacheManager:u8,fileManager:hJ,getEncapsulatedImageFrame:dJ,getUncompressedImageFrame:pJ,loadFileRequest:mJ,loadImageFromPromise:CJ,getLoaderForScheme:_J,getPixelData:BP,loadImage:iw,parseImageId:fk,unpackBinaryFrame:gJ,register:xJ};function w0(n,e,o){return e=e||0,!n||!n.Value||Array.isArray(n.Value)&&n.Value.length<=e?o:n.Value[e]}function JSe(n,e,o){const i=w0(n,e,o);if(i!==void 0)return parseFloat(String(i))}function Oo(n,e){const o=w0(n,e);if(o!==void 0)return parseFloat(o)}function s1(n,e){if(!n||!n.Value||!Array.isArray(n.Value)||e&&n.Value.length>v&1}e.push({rows:Oo(n[`${i}0010`]),columns:Oo(n[`${i}0011`]),type:w0(n[`${i}0040`]),x:Oo(n[`${i}0050`],1)-1,y:Oo(n[`${i}0050`],0)-1,pixelData:c,description:w0(n[`${i}0022`]),label:w0(n[`${i}1500`]),roiArea:w0(n[`${i}1301`]),roiMean:w0(n[`${i}1302`]),roiStandardDeviation:w0(n[`${i}1303`])})}return{overlays:e}}function k_(n){const e=n.indexOf(":");return n.substring(e+1)}function c8(n,e=!0){return n&&n.Value?n.Value[0]&&e?n.Value[0]:n.Value:n}function SJ(n,e,o){const i=(e?Object.values(e[0]):[]).map(c=>{var g;return(g=c.Value)==null?void 0:g[0]}).filter(c=>c!==void 0&&typeof c=="object"),l=(n?Object.values(n[o-1]):[]).map(c=>{var g;return(g=c.Value)==null?void 0:g[0]}).filter(c=>c!==void 0&&typeof c=="object");return{shared:i,perFrame:l}}function TJ(n){let{52009230:e,52009229:o,"00280008":i,...l}=n;return e=c8(e,!1),o=c8(o,!1),i=c8(i),{PerFrameFunctionalGroupsSequence:e,SharedFunctionalGroupsSequence:o,NumberOfFrames:i,rest:l}}function QSe(n,e){const{PerFrameFunctionalGroupsSequence:o,SharedFunctionalGroupsSequence:i,NumberOfFrames:l,rest:c}=TJ(e);if(o||l>1){const{shared:g,perFrame:v}=SJ(o,i,n),_=Object.assign(e,{frameNumber:n});return[...g,...v].forEach(T=>{Object.entries(T).forEach(([P,I])=>{_[P]=I})}),Object.assign(c,{"00280008":l},_)}return e}let dk=[],$9={};function EJ(n){const e=n.indexOf("/frames/")+8,o=n.slice(0,e),i=parseInt(n.slice(e),10);return{metadata:dk[`${o}1`],frame:i}}function eTe(n){const e=k_(n);return EJ(e)}function tTe(n){if(n[52009230]!==void 0||n[52009229]!==void 0)return!0;const e=w0(n["00280008"]);return e&&e>1}function nTe(n,e){const o=k_(n);Object.defineProperty(e,"isMultiframe",{value:tTe(e),enumerable:!1}),dk[o]=e}function rTe(n){const e=k_(n),o=dk[e];if(o&&!(o!=null&&o.isMultiframe))return o;const i=$9[e];if(i)return i;const l=EJ(e);if(!l||!l.metadata)return;const{metadata:c,frame:g}=l;if(c){const v=QSe(g,c);return $9[e]=v,v}}function iTe(n){const e=k_(n);dk[e]=void 0,$9[e]=void 0}function oTe(){dk=[],$9={}}const $P={add:nTe,get:rTe,remove:iTe,purge:oTe};function DJ(n){return w0(n["00080060"]).includes("NM")}function jP(n,e){const o=c8(n["00080008"],!1);if(o)return o[e]}function sTe(n){let e;const o=jP(n,2);if(o&&f5(o)){const i=c8(n["00540022"]);i&&(e=s1(i["00200037"],6))}return e}function aTe(n){let e;const o=jP(n,2);if(o&&f5(o)){const i=c8(n["00540022"]);i&&(e=s1(i["00200032"],3))}return e}function Jb(n){let e=s1(n["00200037"],6);return!e&&DJ(n)&&(e=sTe(n)),e}function Zb(n){let e=s1(n["00200032"],3);return!e&&DJ(n)&&(e=aTe(n)),e}function i1(n,e){const o=s1(n[e]);return o?o[0]:null}function lTe(n){var e;return(e=n==null?void 0:n.Value)!=null&&e.length?Array.isArray(n.Value)?n.Value:typeof n.Value=="object"?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[n.Value]):[]:[]}function Qb(n){const e=lTe(n["00186011"]);return!e||!e.length?null:e.map(i=>{const l=i1(i,"0018602C"),c=i1(i,"0018602E"),g=i1(i,"00186024"),v=i1(i,"00186026"),_=i1(i,"0018601A"),T=i1(i,"0018601E"),P=i1(i,"00186018"),I=i1(i,"0018601C"),R=i1(i,"00186020"),L=i1(i,"00186022"),V=i1(i,"0018602A"),U=i1(i,"00186028"),j=i1(i,"00186012"),z=i1(i,"00186014"),$=i1(i,"00186016"),K=i1(i,"00186030");return{regionLocationMinY0:_,regionLocationMaxY1:T,regionLocationMinX0:P,regionLocationMaxX1:I,referencePixelX0:R,referencePixelY0:L,physicalDeltaX:l,physicalDeltaY:c,physicalUnitsXDirection:g,physicalUnitsYDirection:v,referencePhysicalPixelValueY:V,referencePhysicalPixelValueX:U,regionSpatialFormat:j,regionDataType:z,regionFlags:$,transducerFrequency:K}})}function zP(n,e){const{MetadataModules:o}=bu;if(n===o.MULTIFRAME){const{metadata:l,frame:c}=eTe(e);if(!l)return;const{PerFrameFunctionalGroupsSequence:g,SharedFunctionalGroupsSequence:v,NumberOfFrames:_}=TJ(l);if(g||_>1){const{shared:T,perFrame:P}=SJ(g,v,c);return{NumberOfFrames:_,PerFrameFunctionalInformation:P,SharedFunctionalInformation:T}}return{NumberOfFrames:_}}const i=$P.get(e);if(i){if(n===o.GENERAL_STUDY)return{studyDescription:w0(i["00081030"]),studyDate:Fs.parseDA(w0(i["00080020"])),studyTime:Fs.parseTM(w0(i["00080030"],0,"")),accessionNumber:w0(i["00080050"])};if(n===o.GENERAL_SERIES)return{modality:w0(i["00080060"]),seriesInstanceUID:w0(i["0020000E"]),seriesDescription:w0(i["0008103E"]),seriesNumber:Oo(i["00200011"]),studyInstanceUID:w0(i["0020000D"]),seriesDate:Fs.parseDA(w0(i["00080021"])),seriesTime:Fs.parseTM(w0(i["00080031"],0,"")),acquisitionDate:Fs.parseDA(w0(i["00080022"])),acquisitionTime:Fs.parseTM(w0(i["00080032"],0,""))};if(n===o.GENERAL_IMAGE)return{sopInstanceUID:w0(i["00080018"]),instanceNumber:Oo(i["00200013"]),lossyImageCompression:w0(i["00282110"]),lossyImageCompressionRatio:Oo(i["00282112"]),lossyImageCompressionMethod:w0(i["00282114"])};if(n===o.PATIENT)return{patientID:w0(i["00100020"]),patientName:w0(i["00100010"])};if(n===o.PATIENT_STUDY)return{patientAge:Oo(i["00101010"]),patientSize:Oo(i["00101020"]),patientSex:w0(i["00100040"]),patientWeight:Oo(i["00101030"])};if(n===o.NM_MULTIFRAME_GEOMETRY){const l=w0(i["00080060"]),c=jP(i,2);return{modality:l,imageType:w0(i["00080008"]),imageSubType:c,imageOrientationPatient:Jb(i),imagePositionPatient:Zb(i),sliceThickness:Oo(i["00180050"]),spacingBetweenSlices:Oo(i["00180088"]),pixelSpacing:s1(i["00280030"],2),numberOfFrames:Oo(i["00280008"]),isNMReconstructable:f5(c)&&l.includes("NM")}}if(n===o.IMAGE_PLANE){let l=Jb(i),c=Zb(i);const g=s1(i["00280030"],2);let v=null,_=null,T=null,P=null,I=!1;return g?(_=g[0],v=g[1]):(I=!0,_=1,v=1),l?(T=[parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2])],P=[parseFloat(l[3]),parseFloat(l[4]),parseFloat(l[5])]):(T=[1,0,0],P=[0,1,0],I=!0,l=[...T,...P]),c||(c=[0,0,0],I=!0),{frameOfReferenceUID:w0(i["00200052"]),rows:Oo(i["00280010"]),columns:Oo(i["00280011"]),imageOrientationPatient:l,rowCosines:T,columnCosines:P,imagePositionPatient:c,sliceThickness:Oo(i["00180050"]),sliceLocation:Oo(i["00201041"]),pixelSpacing:g,rowPixelSpacing:_,columnPixelSpacing:v,usingDefaultValues:I}}if(n===o.ULTRASOUND_ENHANCED_REGION)return Qb(i);if(n===o.CALIBRATION&&w0(i["00080060"])==="US")return{sequenceOfUltrasoundRegions:Qb(i)};if(n===o.IMAGE_URL)return uTe(e,i);if(n===o.CINE)return cTe(e,i);if(n===o.IMAGE_PIXEL)return{samplesPerPixel:Oo(i["00280002"]),photometricInterpretation:w0(i["00280004"]),rows:Oo(i["00280010"]),columns:Oo(i["00280011"]),bitsAllocated:Oo(i["00280100"]),bitsStored:Oo(i["00280101"]),highBit:w0(i["00280102"]),pixelRepresentation:Oo(i["00280103"]),planarConfiguration:Oo(i["00280006"]),pixelAspectRatio:w0(i["00280034"]),smallestPixelValue:Oo(i["00280106"]),largestPixelValue:Oo(i["00280107"]),redPaletteColorLookupTableDescriptor:s1(i["00281101"]),greenPaletteColorLookupTableDescriptor:s1(i["00281102"]),bluePaletteColorLookupTableDescriptor:s1(i["00281103"]),redPaletteColorLookupTableData:s1(i["00281201"]),greenPaletteColorLookupTableData:s1(i["00281202"]),bluePaletteColorLookupTableData:s1(i["00281203"])};if(n===o.VOI_LUT)return{windowCenter:s1(i["00281050"],1),windowWidth:s1(i["00281051"],1),voiLUTFunction:w0(i["00281056"])};if(n===o.MODALITY_LUT)return{rescaleIntercept:Oo(i["00281052"]),rescaleSlope:Oo(i["00281053"]),rescaleType:w0(i["00281054"])};if(n===o.SOP_COMMON)return{sopClassUID:w0(i["00080016"]),sopInstanceUID:w0(i["00080018"])};if(n===o.PET_ISOTOPE){const l=w0(i["00540016"]);return l===void 0?void 0:{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:Fs.parseTM(w0(l["00181072"],0,"")),radiopharmaceuticalStartDateTime:w0(l["00181078"],0,""),radionuclideTotalDose:Oo(l["00181074"]),radionuclideHalfLife:Oo(l["00181075"])}}}if(n===o.OVERLAY_PLANE)return ZSe(i);if(n==="transferSyntax")return IJ(e,i);if(n===o.PET_SERIES)return{correctedImage:w0(i["00280051"]),units:w0(i["00541001"]),decayCorrection:w0(i["00541102"])};if(n===o.PET_IMAGE)return{frameReferenceTime:Oo(i["00541300"]),actualFrameDuration:Oo(i["00181242"])};if(n==="instance")return uJ(e,zP,cJ)}}function uTe(n,e){const{transferSyntaxUID:o}=IJ(n,e),i=Cz(o),l=n.substring(7),c=l.replace("/frames/","/thumbnail/");let g=l.replace("/frames/","/rendered/");return i&&(g=g.replace("/rendered/1","/rendered")),{isVideo:i,rendered:g,thumbnail:c}}function cTe(n,e){return{cineRate:w0(e["00180040"]),numberOfFrames:Oo(e["00280008"])}}function IJ(n,e){return{transferSyntaxUID:w0(e["00020010"])||w0(e["00083002"])}}function fTe(n,e,o={},i={}){const l=hk(),{retrieveOptions:c={},streamingData:g}=i,v=g.chunkSize||dTe(e,c,"chunkSize")||65536,_=P=>{if(typeof l.errorInterceptor=="function"){const I=new Error("request failed");l.errorInterceptor(I)}else console.warn("rangeRequest:Caught",P)};return new Promise(async(P,I)=>{const R=Object.assign({},o);Object.keys(R).forEach(function(L){(R[L]===null||R[L]===void 0)&&delete R[L]});try{g.encodedData||(g.chunkSize=v,g.rangesFetched=0);const L=gTe(g,c),{encodedData:V,responseHeaders:U}=await hTe(n,R,L,g),j=U.get("content-type"),{totalBytes:z}=g,$=z===V.byteLength,K=NP(j,V,{isPartial:!0}),X=bP(c,$||K.extractDone);P({...K,imageQualityStatus:X,percentComplete:K.extractDone?100:v*100/z})}catch(L){_(L),console.error(L),I(L)}})}async function hTe(n,e,o,i){o&&(e=Object.assign(e,{Range:`bytes=${o[0]}-${o[1]}`}));let{encodedData:l}=i;if(o[1]&&(l==null?void 0:l.byteLength)>o[1])return i;const c=await fetch(n,{headers:e,signal:void 0}),g=await c.arrayBuffer(),v=new Uint8Array(g),{status:_}=c;let T;l?(T=new Uint8Array(l.length+v.length),T.set(l,0),T.set(v,l.length),i.rangesFetched=1):(T=new Uint8Array(v.length),T.set(v,0),i.rangesFetched++),i.encodedData=l=T,i.responseHeaders=c.headers;const P=c.headers.get("Content-Range");return P?i.totalBytes=Number(P.split("/")[1]):_!==206||!o?i.totalBytes=l==null?void 0:l.byteLength:o[1]===""||(l==null?void 0:l.length)o-l?[(i==null?void 0:i.byteLength)||0,""]:[(i==null?void 0:i.byteLength)||0,l*(c+1)-1]}function HP(n,e,o="application/octet-stream",i){const{streamingData:l,retrieveOptions:c={}}=i||{},g={Accept:o};let v=c.urlArguments?`${n}${n.indexOf("?")===-1?"?":"&"}${c.urlArguments}`:n;if(c.framesPath&&(v=v.replace("/frames/",c.framesPath)),(l==null?void 0:l.url)!==v&&(i.streamingData={url:v}),c.rangeIndex!==void 0)return fTe(v,e,g,i);if(c.streaming)return rJ(v,e,g,i);const _=d_(v,e,g),{xhr:T}=_;return _.then(function(P){const I=T.getResponseHeader("Content-Type")||"application/octet-stream",R=NP(I,new Uint8Array(P));return R.imageQualityStatus=bP(c,!0),R})}const{ProgressiveIterator:eF}=J0,{ImageQualityStatus:tF}=bu,pTe=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function mTe(n){const e="1.2.840.10008.1.2";if(!n)return e;const o=n.split(";"),i={};o.forEach(c=>{const g=c.split("=");if(g.length!==2)return;const v=g[1].trim().replace(/"/g,"");i[g[0].trim()]=v});const l={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return i["transfer-syntax"]?i["transfer-syntax"]:n&&!Object.keys(i).length&&l[n]?l[n]:i.type&&l[i.type]?l[i.type]:l[n]?l[n]:e}function vTe(){return Xv}const kTe="multipart/related; type=application/octet-stream; transfer-syntax=*";function OJ(n,e={}){const o=vTe(),i=new Date().getTime(),l=new eF("decompress");async function c(P,I,R){l.generate(async L=>{var j;const V=eF.as(HP(P,I,R,e));let U=10;for await(const z of V){const{pixelData:$,imageQualityStatus:K=tF.FULL_RESOLUTION,percentComplete:X,done:ee=!0,extractDone:ne=!0}=z,le=mTe(z.contentType);if(!ne&&!pTe.has(le))continue;const ce=z.decodeLevel??(K===tF.FULL_RESOLUTION?0:yTe(X,(j=e.retrieveOptions)==null?void 0:j.decodeLevel));if(!(!ee&&U<=ce))try{const ge={...e,decodeLevel:ce},pe=await v_(I,$,le,ge),we=new Date().getTime();pe.loadTimeInMS=we-i,pe.transferSyntaxUID=le,pe.imageQualityStatus=K,L.add(pe,ee),U=ce}catch(ge){if(ne)throw console.warn("Couldn't decode",ge),ge}}})}const g=e.requestType||R0.Interaction,v=e.additionalDetails||{imageId:n},_=e.priority===void 0?5:e.priority,T=n.substring(7);return o.addRequest(c.bind(this,T,n,kTe),g,v,_),{promise:l.getDonePromise(),cancelFn:void 0}}function yTe(n,e=4){const o=n/100-.02;return o>1/4?Math.min(e,0):o>1/16?Math.min(e,1):o>1/64?Math.min(e,2):Math.min(e,3)}function MJ(){X7("wadors",OJ),j8(zP)}const wTe={getNumberString:JSe,getNumberValue:Oo,getNumberValues:s1,getValue:w0,metaDataProvider:zP},CTe={metaData:wTe,findIndexOfString:LD,getPixelData:HP,loadImage:OJ,metaDataManager:$P,register:MJ};function _Te(){MJ(),xJ()}const xTe=()=>new Worker(new URL("/static/dv3d/assets/decodeImageFrameWorker-DhtpjVX0.js",import.meta.url),{type:"module"});function PJ(n={}){nJ(n),_Te();const e=Mh(),o=(n==null?void 0:n.maxWebWorkers)||STe();e.registerWorker("dicomImageLoader",xTe,{maxWorkerInstances:o})}function STe(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.max(1,Math.floor(navigator.hardwareConcurrency/2)):1}function TTe(n,e){if(e=e||n.transferSyntax,n.bitsAllocated===8&&e==="1.2.840.10008.1.2.4.50"&&(n.samplesPerPixel===3||n.samplesPerPixel===4))return!0}const ETe={IMPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2",EXPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2.1",DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2.1.99",EXPLICIT_VR_BIG_ENDIAN:"1.2.840.10008.1.2.2",JPEG_BASELINE_PROCESS_1:"1.2.840.10008.1.2.4.50",JPEG_EXTENDED_PROCESS_2_4:"1.2.840.10008.1.2.4.51",JPEG_EXTENDED_PROCESSES_3_5:"1.2.840.10008.1.2.4.52",JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_6_8:"1.2.840.10008.1.2.4.53",JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_7_9:"1.2.840.10008.1.2.4.54",JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_10_12:"1.2.840.10008.1.2.4.55",JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_11_13:"1.2.840.10008.1.2.4.56",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_14:"1.2.840.10008.1.2.4.57",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_15:"1.2.840.10008.1.2.4.58",JPEG_EXTENDED_HIERARCHICAL_PROCESSES_16_18:"1.2.840.10008.1.2.4.59",JPEG_EXTENDED_HIERARCHICAL_PROCESSES_17_19:"1.2.840.10008.1.2.4.60",JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_20_22:"1.2.840.10008.1.2.4.61",JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_21_23:"1.2.840.10008.1.2.4.62",JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_24_26:"1.2.840.10008.1.2.4.63",JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_25_27:"1.2.840.10008.1.2.4.64",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_28:"1.2.840.10008.1.2.4.65",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_29:"1.2.840.10008.1.2.4.66",JPEG_LOSSLESS_NONHIERARCHICAL_FIRST_ORDER_PREDICTION_PROCESS_14:"1.2.840.10008.1.2.4.70",JPEG_LS_LOSSLESS_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.80",JPEG_LS_LOSSY_NEAR_LOSSLESS_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.81",JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY:"1.2.840.10008.1.2.4.90",JPEG_2000_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.91",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY:"1.2.840.10008.1.2.4.92",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.93",JPIP_REFERENCED:"1.2.840.10008.1.2.4.94",JPIP_REFERENCED_DEFLATE:"1.2.840.10008.1.2.4.95",MPEG2_MAIN_PROFILE_MAIN_LEVEL:"1.2.840.10008.1.2.4.100",MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1:"1.2.840.10008.1.2.4.101",MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1:"1.2.840.10008.1.2.4.102",MPEG4_AVC_H264_HIGH_PROFILE_FOR_2D_VIDEO:"1.2.840.10008.1.2.4.103",MPEG4_AVC_H264_HIGH_PROFILE_FOR_3D_VIDEO:"1.2.840.10008.1.2.4.104",JPIP_LOSSLESS:"1.2.840.10008.1.2.4.96",JPIP_PART2_MULTICOMPONENT_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.97",RFC_2557_MIME_ENCAPSULATION:"1.2.840.10008.1.2.6.1",JPEG_XR_IMAGE_COMPRESSION:"1.2.840.10008.1.2.6.2",JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED:"1.2.840.10008.1.2.4.90R",JPEG_2000_IMAGE_COMPRESSION_RETIRED:"1.2.840.10008.1.2.4.91R",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED:"1.2.840.10008.1.2.4.92R",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_RETIRED:"1.2.840.10008.1.2.4.93R"},DTe=Object.freeze(Object.defineProperty({__proto__:null,transferSyntaxes:ETe},Symbol.toStringTag,{value:"Module"}));function ITe(n,e){const{rows:o,columns:i,data:l}=n,{rows:c,columns:g,data:v}=e,_=[],T=[],P=[];for(let I=0;I>8&255}async function PTe(n,e){if(n.bitsAllocated===16){let o=e.buffer,i=e.byteOffset;const l=e.length;i%2&&(o=o.slice(i),i=0),n.pixelRepresentation===0?n.pixelData=new Uint16Array(o,i,l/2):n.pixelData=new Int16Array(o,i,l/2);for(let c=0;c=0&&V<=127)for(let U=0;U=-127){const U=g[I++];for(let j=0;j<-V+1&&_=0&&V<=127)for(let U=0;U=-127){const U=g[I++];for(let j=0;j<-V+1&&_=0&&V<=127)for(let U=0;U=-127){const U=g[R++];for(let j=0;j<-V+1&&P{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(oe,ke){g=oe,v=ke});var _=Object.assign({},c),T="./this.program",P=(oe,ke)=>{throw ke},I=typeof window=="object",R=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",V="";function U(oe){return c.locateFile?c.locateFile(oe,V):V+oe}var j,z,$;if(L){var K=p1,X=p1;R?V=X.dirname(V)+"/":V=__dirname+"/",j=(oe,ke)=>(oe=Bt(oe)?new URL(oe):X.normalize(oe),K.readFileSync(oe,ke?void 0:"utf8")),$=oe=>{var ke=j(oe,!0);return ke.buffer||(ke=new Uint8Array(ke)),ke},z=(oe,ke,s)=>{oe=Bt(oe)?new URL(oe):X.normalize(oe),K.readFile(oe,function(de,Re){de?s(de):ke(Re.buffer)})},process.argv.length>1&&(T=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(oe){if(!(oe instanceof br))throw oe}),process.on("unhandledRejection",function(oe){throw oe}),P=(oe,ke)=>{throw process.exitCode=oe,ke},c.inspect=function(){return"[Emscripten Module object]"}}else(I||R)&&(R?V=self.location.href:typeof document<"u"&&document.currentScript&&(V=document.currentScript.src),i&&(V=i),V.indexOf("blob:")!==0?V=V.substr(0,V.replace(/[?#].*/,"").lastIndexOf("/")+1):V="",j=oe=>{var ke=new XMLHttpRequest;return ke.open("GET",oe,!1),ke.send(null),ke.responseText},R&&($=oe=>{var ke=new XMLHttpRequest;return ke.open("GET",oe,!1),ke.responseType="arraybuffer",ke.send(null),new Uint8Array(ke.response)}),z=(oe,ke,s)=>{var de=new XMLHttpRequest;de.open("GET",oe,!0),de.responseType="arraybuffer",de.onload=()=>{if(de.status==200||de.status==0&&de.response){ke(de.response);return}s()},de.onerror=s,de.send(null)});var ee=c.print||console.log.bind(console),ne=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&(T=c.thisProgram),c.quit&&(P=c.quit);var le;c.wasmBinary&&(le=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&Dt("no native wasm support detected");var ce,ge=!1;function pe(oe,ke){oe||Dt(ke)}var we=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Te(oe,ke,s){for(var de=ke+s,Re=ke;oe[Re]&&!(Re>=de);)++Re;if(Re-ke>16&&oe.buffer&&we)return we.decode(oe.subarray(ke,Re));for(var bt="";ke>10,56320|tt&1023)}}return bt}function Ve(oe,ke){return oe?Te(Ke,oe,ke):""}function Pe(oe,ke,s,de){if(!(de>0))return 0;for(var Re=s,bt=s+de-1,Qt=0;Qt=55296&&Ae<=57343){var Qe=oe.charCodeAt(++Qt);Ae=65536+((Ae&1023)<<10)|Qe&1023}if(Ae<=127){if(s>=bt)break;ke[s++]=Ae}else if(Ae<=2047){if(s+1>=bt)break;ke[s++]=192|Ae>>6,ke[s++]=128|Ae&63}else if(Ae<=65535){if(s+2>=bt)break;ke[s++]=224|Ae>>12,ke[s++]=128|Ae>>6&63,ke[s++]=128|Ae&63}else{if(s+3>=bt)break;ke[s++]=240|Ae>>18,ke[s++]=128|Ae>>12&63,ke[s++]=128|Ae>>6&63,ke[s++]=128|Ae&63}}return ke[s]=0,s-Re}function je(oe,ke,s){return Pe(oe,Ke,ke,s)}function Je(oe){for(var ke=0,s=0;s=55296&&de<=57343?(ke+=4,++s):ke+=3}return ke}var it,Ge,Ke,qe,ut,wt,Et,qt,$t;function Jt(oe){it=oe,c.HEAP8=Ge=new Int8Array(oe),c.HEAP16=qe=new Int16Array(oe),c.HEAP32=wt=new Int32Array(oe),c.HEAPU8=Ke=new Uint8Array(oe),c.HEAPU16=ut=new Uint16Array(oe),c.HEAPU32=Et=new Uint32Array(oe),c.HEAPF32=qt=new Float32Array(oe),c.HEAPF64=$t=new Float64Array(oe)}c.INITIAL_MEMORY;var Dn,Nn=[],xn=[],et=[];function Me(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)yt(c.preRun.shift());jr(Nn)}function ct(){jr(xn)}function st(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Pt(c.postRun.shift());jr(et)}function yt(oe){Nn.unshift(oe)}function St(oe){xn.unshift(oe)}function Pt(oe){et.unshift(oe)}var mn=0,Pn=null;function Hn(oe){mn++,c.monitorRunDependencies&&c.monitorRunDependencies(mn)}function Kn(oe){if(mn--,c.monitorRunDependencies&&c.monitorRunDependencies(mn),mn==0&&Pn){var ke=Pn;Pn=null,ke()}}function Dt(oe){c.onAbort&&c.onAbort(oe),oe="Aborted("+oe+")",ne(oe),ge=!0,oe+=". Build with -sASSERTIONS for more info.";var ke=new WebAssembly.RuntimeError(oe);throw v(ke),ke}var Vt="data:application/octet-stream;base64,";function gn(oe){return oe.startsWith(Vt)}function Bt(oe){return oe.startsWith("file://")}var rn;rn="libjpegturbowasm_decode.wasm",gn(rn)||(rn=U(rn));function Zn(oe){try{if(oe==rn&&le)return new Uint8Array(le);if($)return $(oe);throw"both async and sync fetching of the wasm failed"}catch(ke){Dt(ke)}}function Ut(){if(!le&&(I||R)){if(typeof fetch=="function"&&!Bt(rn))return fetch(rn,{credentials:"same-origin"}).then(function(oe){if(!oe.ok)throw"failed to load wasm binary file at '"+rn+"'";return oe.arrayBuffer()}).catch(function(){return Zn(rn)});if(z)return new Promise(function(oe,ke){z(rn,function(s){oe(new Uint8Array(s))},ke)})}return Promise.resolve().then(function(){return Zn(rn)})}function Ir(){var oe={a:Ft};function ke(Qt,Ae){var Qe=Qt.exports;c.asm=Qe,ce=c.asm.K,Jt(ce.buffer),Dn=c.asm.M,St(c.asm.L),Kn()}Hn();function s(Qt){ke(Qt.instance)}function de(Qt){return Ut().then(function(Ae){return WebAssembly.instantiate(Ae,oe)}).then(function(Ae){return Ae}).then(Qt,function(Ae){ne("failed to asynchronously prepare wasm: "+Ae),Dt(Ae)})}function Re(){return!le&&typeof WebAssembly.instantiateStreaming=="function"&&!gn(rn)&&!Bt(rn)&&!L&&typeof fetch=="function"?fetch(rn,{credentials:"same-origin"}).then(function(Qt){var Ae=WebAssembly.instantiateStreaming(Qt,oe);return Ae.then(s,function(Qe){return ne("wasm streaming compile failed: "+Qe),ne("falling back to ArrayBuffer instantiation"),de(s)})}):de(s)}if(c.instantiateWasm)try{var bt=c.instantiateWasm(oe,ke);return bt}catch(Qt){ne("Module.instantiateWasm callback failed with error: "+Qt),v(Qt)}return Re().catch(v),{}}function br(oe){this.name="ExitStatus",this.message="Program terminated with exit("+oe+")",this.status=oe}function jr(oe){for(;oe.length>0;)oe.shift()(c)}function An(oe){this.excPtr=oe,this.ptr=oe-24,this.set_type=function(ke){Et[this.ptr+4>>2]=ke},this.get_type=function(){return Et[this.ptr+4>>2]},this.set_destructor=function(ke){Et[this.ptr+8>>2]=ke},this.get_destructor=function(){return Et[this.ptr+8>>2]},this.set_refcount=function(ke){wt[this.ptr>>2]=ke},this.set_caught=function(ke){ke=ke?1:0,Ge[this.ptr+12>>0]=ke},this.get_caught=function(){return Ge[this.ptr+12>>0]!=0},this.set_rethrown=function(ke){ke=ke?1:0,Ge[this.ptr+13>>0]=ke},this.get_rethrown=function(){return Ge[this.ptr+13>>0]!=0},this.init=function(ke,s){this.set_adjusted_ptr(0),this.set_type(ke),this.set_destructor(s),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var ke=wt[this.ptr>>2];wt[this.ptr>>2]=ke+1},this.release_ref=function(){var ke=wt[this.ptr>>2];return wt[this.ptr>>2]=ke-1,ke===1},this.set_adjusted_ptr=function(ke){Et[this.ptr+16>>2]=ke},this.get_adjusted_ptr=function(){return Et[this.ptr+16>>2]},this.get_exception_ptr=function(){var ke=zt(this.get_type());if(ke)return Et[this.excPtr>>2];var s=this.get_adjusted_ptr();return s!==0?s:this.excPtr}}function hr(oe,ke,s){var de=new An(oe);throw de.init(ke,s),oe}var Cr={};function wr(oe){for(;oe.length;){var ke=oe.pop(),s=oe.pop();s(ke)}}function Fr(oe){return this.fromWireType(wt[oe>>2])}var ui={},Kr={},ai={},vi=48,e0=57;function p0(oe){if(oe===void 0)return"_unknown";oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ke=oe.charCodeAt(0);return ke>=vi&&ke<=e0?"_"+oe:oe}function Hi(oe,ke){return oe=p0(oe),new Function("body","return function "+oe+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(ke)}function T0(oe,ke){var s=Hi(ke,function(de){this.name=ke,this.message=de;var Re=new Error(de).stack;Re!==void 0&&(this.stack=this.toString()+` +`+Re.replace(/^Error(:[^\n]*)?\n/,""))});return s.prototype=Object.create(oe.prototype),s.prototype.constructor=s,s.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},s}var wo=void 0;function uo(oe){throw new wo(oe)}function Yn(oe,ke,s){oe.forEach(function(Ae){ai[Ae]=ke});function de(Ae){var Qe=s(Ae);Qe.length!==oe.length&&uo("Mismatched type converter count");for(var tt=0;tt{Kr.hasOwnProperty(Ae)?Re[Qe]=Kr[Ae]:(bt.push(Ae),ui.hasOwnProperty(Ae)||(ui[Ae]=[]),ui[Ae].push(()=>{Re[Qe]=Kr[Ae],++Qt,Qt===bt.length&&de(Re)}))}),bt.length===0&&de(Re)}function Tr(oe){var ke=Cr[oe];delete Cr[oe];var s=ke.rawConstructor,de=ke.rawDestructor,Re=ke.fields,bt=Re.map(Qt=>Qt.getterReturnType).concat(Re.map(Qt=>Qt.setterArgumentType));Yn([oe],bt,Qt=>{var Ae={};return Re.forEach((Qe,tt)=>{var xt=Qe.fieldName,Kt=Qt[tt],fn=Qe.getter,Bn=Qe.getterContext,dt=Qt[tt+Re.length],tn=Qe.setter,t=Qe.setterContext;Ae[xt]={read:xe=>Kt.fromWireType(fn(Bn,xe)),write:(xe,Qn)=>{var ln=[];tn(t,xe,dt.toWireType(ln,Qn)),wr(ln)}}}),[{name:ke.name,fromWireType:function(Qe){var tt={};for(var xt in Ae)tt[xt]=Ae[xt].read(Qe);return de(Qe),tt},toWireType:function(Qe,tt){for(var xt in Ae)if(!(xt in tt))throw new TypeError('Missing field: "'+xt+'"');var Kt=s();for(xt in Ae)Ae[xt].write(Kt,tt[xt]);return Qe!==null&&Qe.push(de,Kt),Kt},argPackAdvance:8,readValueFromPointer:Fr,destructorFunction:de}]})}function Ai(oe,ke,s,de,Re){}function t0(oe){switch(oe){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+oe)}}function Mo(){for(var oe=new Array(256),ke=0;ke<256;++ke)oe[ke]=String.fromCharCode(ke);Fi=oe}var Fi=void 0;function x0(oe){for(var ke="",s=oe;Ke[s];)ke+=Fi[Ke[s++]];return ke}var xi=void 0;function Ki(oe){throw new xi(oe)}function ki(oe,ke,s={}){if(!("argPackAdvance"in ke))throw new TypeError("registerType registeredInstance requires argPackAdvance");var de=ke.name;if(oe||Ki('type "'+de+'" must have a positive integer typeid pointer'),Kr.hasOwnProperty(oe)){if(s.ignoreDuplicateRegistrations)return;Ki("Cannot register type '"+de+"' twice")}if(Kr[oe]=ke,delete ai[oe],ui.hasOwnProperty(oe)){var Re=ui[oe];delete ui[oe],Re.forEach(bt=>bt())}}function k0(oe,ke,s,de,Re){var bt=t0(s);ke=x0(ke),ki(oe,{name:ke,fromWireType:function(Qt){return!!Qt},toWireType:function(Qt,Ae){return Ae?de:Re},argPackAdvance:8,readValueFromPointer:function(Qt){var Ae;if(s===1)Ae=Ge;else if(s===2)Ae=qe;else if(s===4)Ae=wt;else throw new TypeError("Unknown boolean type size: "+ke);return this.fromWireType(Ae[Qt>>bt])},destructorFunction:null})}function r0(oe){if(!(this instanceof Js)||!(oe instanceof Js))return!1;for(var ke=this.$$.ptrType.registeredClass,s=this.$$.ptr,de=oe.$$.ptrType.registeredClass,Re=oe.$$.ptr;ke.baseClass;)s=ke.upcast(s),ke=ke.baseClass;for(;de.baseClass;)Re=de.upcast(Re),de=de.baseClass;return ke===de&&s===Re}function Yi(oe){return{count:oe.count,deleteScheduled:oe.deleteScheduled,preservePointerOnDelete:oe.preservePointerOnDelete,ptr:oe.ptr,ptrType:oe.ptrType,smartPtr:oe.smartPtr,smartPtrType:oe.smartPtrType}}function jo(oe){function ke(s){return s.$$.ptrType.registeredClass.name}Ki(ke(oe)+" instance already deleted")}var ga=!1;function Ma(oe){}function Co(oe){oe.smartPtr?oe.smartPtrType.rawDestructor(oe.smartPtr):oe.ptrType.registeredClass.rawDestructor(oe.ptr)}function ls(oe){oe.count.value-=1;var ke=oe.count.value===0;ke&&Co(oe)}function pn(oe,ke,s){if(ke===s)return oe;if(s.baseClass===void 0)return null;var de=pn(oe,ke,s.baseClass);return de===null?null:s.downcast(de)}var yr={};function Fn(){return Object.keys(Si).length}function Mn(){var oe=[];for(var ke in Si)Si.hasOwnProperty(ke)&&oe.push(Si[ke]);return oe}var Sr=[];function Ar(){for(;Sr.length;){var oe=Sr.pop();oe.$$.deleteScheduled=!1,oe.delete()}}var Lr=void 0;function qr(oe){Lr=oe,Sr.length&&Lr&&Lr(Ar)}function Vr(){c.getInheritedInstanceCount=Fn,c.getLiveInheritedInstances=Mn,c.flushPendingDeletes=Ar,c.setDelayFunction=qr}var Si={};function Ui(oe,ke){for(ke===void 0&&Ki("ptr should not be undefined");oe.baseClass;)ke=oe.upcast(ke),oe=oe.baseClass;return ke}function S0(oe,ke){return ke=Ui(oe,ke),Si[ke]}function i0(oe,ke){(!ke.ptrType||!ke.ptr)&&uo("makeClassHandle requires ptr and ptrType");var s=!!ke.smartPtrType,de=!!ke.smartPtr;return s!==de&&uo("Both smartPtrType and smartPtr must be specified"),ke.count={value:1},L0(Object.create(oe,{$$:{value:ke}}))}function yi(oe){var ke=this.getPointee(oe);if(!ke)return this.destructor(oe),null;var s=S0(this.registeredClass,ke);if(s!==void 0){if(s.$$.count.value===0)return s.$$.ptr=ke,s.$$.smartPtr=oe,s.clone();var de=s.clone();return this.destructor(oe),de}function Re(){return this.isSmartPointer?i0(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:ke,smartPtrType:this,smartPtr:oe}):i0(this.registeredClass.instancePrototype,{ptrType:this,ptr:oe})}var bt=this.registeredClass.getActualType(ke),Qt=yr[bt];if(!Qt)return Re.call(this);var Ae;this.isConst?Ae=Qt.constPointerType:Ae=Qt.pointerType;var Qe=pn(ke,this.registeredClass,Ae.registeredClass);return Qe===null?Re.call(this):this.isSmartPointer?i0(Ae.registeredClass.instancePrototype,{ptrType:Ae,ptr:Qe,smartPtrType:this,smartPtr:oe}):i0(Ae.registeredClass.instancePrototype,{ptrType:Ae,ptr:Qe})}function L0(oe){return typeof FinalizationRegistry>"u"?(L0=ke=>ke,oe):(ga=new FinalizationRegistry(ke=>{ls(ke.$$)}),L0=ke=>{var s=ke.$$,de=!!s.smartPtr;if(de){var Re={$$:s};ga.register(ke,Re,ke)}return ke},Ma=ke=>ga.unregister(ke),L0(oe))}function Z0(){if(this.$$.ptr||jo(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var oe=L0(Object.create(Object.getPrototypeOf(this),{$$:{value:Yi(this.$$)}}));return oe.$$.count.value+=1,oe.$$.deleteScheduled=!1,oe}function oo(){this.$$.ptr||jo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ki("Object already scheduled for deletion"),Ma(this),ls(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function _o(){return!this.$$.ptr}function Bo(){return this.$$.ptr||jo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ki("Object already scheduled for deletion"),Sr.push(this),Sr.length===1&&Lr&&Lr(Ar),this.$$.deleteScheduled=!0,this}function xo(){Js.prototype.isAliasOf=r0,Js.prototype.clone=Z0,Js.prototype.delete=oo,Js.prototype.isDeleted=_o,Js.prototype.deleteLater=Bo}function Js(){}function Ts(oe,ke,s){if(oe[ke].overloadTable===void 0){var de=oe[ke];oe[ke]=function(){return oe[ke].overloadTable.hasOwnProperty(arguments.length)||Ki("Function '"+s+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+oe[ke].overloadTable+")!"),oe[ke].overloadTable[arguments.length].apply(this,arguments)},oe[ke].overloadTable=[],oe[ke].overloadTable[de.argCount]=de}}function L2(oe,ke,s){c.hasOwnProperty(oe)?(Ki("Cannot register public name '"+oe+"' twice"),Ts(c,oe,oe),c.hasOwnProperty(s)&&Ki("Cannot register multiple overloads of a function with the same number of arguments ("+s+")!"),c[oe].overloadTable[s]=ke):c[oe]=ke}function Zs(oe,ke,s,de,Re,bt,Qt,Ae){this.name=oe,this.constructor=ke,this.instancePrototype=s,this.rawDestructor=de,this.baseClass=Re,this.getActualType=bt,this.upcast=Qt,this.downcast=Ae,this.pureVirtualFunctions=[]}function us(oe,ke,s){for(;ke!==s;)ke.upcast||Ki("Expected null or instance of "+s.name+", got an instance of "+ke.name),oe=ke.upcast(oe),ke=ke.baseClass;return oe}function N2(oe,ke){if(ke===null)return this.isReference&&Ki("null is not a valid "+this.name),0;ke.$$||Ki('Cannot pass "'+b2(ke)+'" as a '+this.name),ke.$$.ptr||Ki("Cannot pass deleted object as a pointer of type "+this.name);var s=ke.$$.ptrType.registeredClass,de=us(ke.$$.ptr,s,this.registeredClass);return de}function Rl(oe,ke){var s;if(ke===null)return this.isReference&&Ki("null is not a valid "+this.name),this.isSmartPointer?(s=this.rawConstructor(),oe!==null&&oe.push(this.rawDestructor,s),s):0;ke.$$||Ki('Cannot pass "'+b2(ke)+'" as a '+this.name),ke.$$.ptr||Ki("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&ke.$$.ptrType.isConst&&Ki("Cannot convert argument of type "+(ke.$$.smartPtrType?ke.$$.smartPtrType.name:ke.$$.ptrType.name)+" to parameter type "+this.name);var de=ke.$$.ptrType.registeredClass;if(s=us(ke.$$.ptr,de,this.registeredClass),this.isSmartPointer)switch(ke.$$.smartPtr===void 0&&Ki("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:ke.$$.smartPtrType===this?s=ke.$$.smartPtr:Ki("Cannot convert argument of type "+(ke.$$.smartPtrType?ke.$$.smartPtrType.name:ke.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:s=ke.$$.smartPtr;break;case 2:if(ke.$$.smartPtrType===this)s=ke.$$.smartPtr;else{var Re=ke.clone();s=this.rawShare(s,Aa.toHandle(function(){Re.delete()})),oe!==null&&oe.push(this.rawDestructor,s)}break;default:Ki("Unsupporting sharing policy")}return s}function k1(oe,ke){if(ke===null)return this.isReference&&Ki("null is not a valid "+this.name),0;ke.$$||Ki('Cannot pass "'+b2(ke)+'" as a '+this.name),ke.$$.ptr||Ki("Cannot pass deleted object as a pointer of type "+this.name),ke.$$.ptrType.isConst&&Ki("Cannot convert argument of type "+ke.$$.ptrType.name+" to parameter type "+this.name);var s=ke.$$.ptrType.registeredClass,de=us(ke.$$.ptr,s,this.registeredClass);return de}function y1(oe){return this.rawGetPointee&&(oe=this.rawGetPointee(oe)),oe}function Pa(oe){this.rawDestructor&&this.rawDestructor(oe)}function Ra(oe){oe!==null&&oe.delete()}function pa(){Es.prototype.getPointee=y1,Es.prototype.destructor=Pa,Es.prototype.argPackAdvance=8,Es.prototype.readValueFromPointer=Fr,Es.prototype.deleteObject=Ra,Es.prototype.fromWireType=yi}function Es(oe,ke,s,de,Re,bt,Qt,Ae,Qe,tt,xt){this.name=oe,this.registeredClass=ke,this.isReference=s,this.isConst=de,this.isSmartPointer=Re,this.pointeeType=bt,this.sharingPolicy=Qt,this.rawGetPointee=Ae,this.rawConstructor=Qe,this.rawShare=tt,this.rawDestructor=xt,!Re&&ke.baseClass===void 0?de?(this.toWireType=N2,this.destructorFunction=null):(this.toWireType=k1,this.destructorFunction=null):this.toWireType=Rl}function ma(oe,ke,s){c.hasOwnProperty(oe)||uo("Replacing nonexistant public symbol"),c[oe].overloadTable!==void 0&&s!==void 0||(c[oe]=ke,c[oe].argCount=s)}function a2(oe,ke,s){var de=c["dynCall_"+oe];return s&&s.length?de.apply(null,[ke].concat(s)):de.call(null,ke)}var Ds=[];function W0(oe){var ke=Ds[oe];return ke||(oe>=Ds.length&&(Ds.length=oe+1),Ds[oe]=ke=Dn.get(oe)),ke}function w1(oe,ke,s){if(oe.includes("j"))return a2(oe,ke,s);var de=W0(ke).apply(null,s);return de}function gs(oe,ke){var s=[];return function(){return s.length=0,Object.assign(s,arguments),w1(oe,ke,s)}}function zo(oe,ke){oe=x0(oe);function s(){return oe.includes("j")?gs(oe,ke):W0(ke)}var de=s();return typeof de!="function"&&Ki("unknown function pointer with signature "+oe+": "+ke),de}var Eo=void 0;function l2(oe){var ke=Xn(oe),s=x0(ke);return Sn(ke),s}function Do(oe,ke){var s=[],de={};function Re(bt){if(!de[bt]&&!Kr[bt]){if(ai[bt]){ai[bt].forEach(Re);return}s.push(bt),de[bt]=!0}}throw ke.forEach(Re),new Eo(oe+": "+s.map(l2).join([", "]))}function Ho(oe,ke,s,de,Re,bt,Qt,Ae,Qe,tt,xt,Kt,fn){xt=x0(xt),bt=zo(Re,bt),Ae&&(Ae=zo(Qt,Ae)),tt&&(tt=zo(Qe,tt)),fn=zo(Kt,fn);var Bn=p0(xt);L2(Bn,function(){Do("Cannot construct "+xt+" due to unbound types",[de])}),Yn([oe,ke,s],de?[de]:[],function(dt){dt=dt[0];var tn,t;de?(tn=dt.registeredClass,t=tn.instancePrototype):t=Js.prototype;var xe=Hi(Bn,function(){if(Object.getPrototypeOf(this)!==Qn)throw new xi("Use 'new' to construct "+xt);if(ln.constructor_body===void 0)throw new xi(xt+" has no accessible constructor");var Ye=ln.constructor_body[arguments.length];if(Ye===void 0)throw new xi("Tried to invoke ctor of "+xt+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ln.constructor_body).toString()+") parameters instead!");return Ye.apply(this,arguments)}),Qn=Object.create(t,{constructor:{value:xe}});xe.prototype=Qn;var ln=new Zs(xt,xe,Qn,fn,tn,bt,Ae,tt),Ue=new Es(xt,ln,!0,!1,!1),mr=new Es(xt+"*",ln,!1,!1,!1),De=new Es(xt+" const*",ln,!1,!0,!1);return yr[oe]={pointerType:mr,constPointerType:De},ma(Bn,xe),[Ue,mr,De]})}function q2(oe,ke){for(var s=[],de=0;de>2]);return s}function Ka(oe,ke){if(!(oe instanceof Function))throw new TypeError("new_ called with constructor type "+typeof oe+" which is not a function");var s=Hi(oe.name||"unknownFunctionName",function(){});s.prototype=oe.prototype;var de=new s,Re=oe.apply(de,ke);return Re instanceof Object?Re:de}function w2(oe,ke,s,de,Re){var bt=ke.length;bt<2&&Ki("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Qt=ke[1]!==null&&s!==null,Ae=!1,Qe=1;Qe0?", ":"")+Kt),fn+=(tt?"var rv = ":"")+"invoker(fn"+(Kt.length>0?", ":"")+Kt+`); +`,Ae)fn+=`runDestructors(destructors); +`;else for(var Qe=Qt?1:2;Qe0);var Qt=q2(ke,s);Re=zo(de,Re),Yn([],[oe],function(Ae){Ae=Ae[0];var Qe="constructor "+Ae.name;if(Ae.registeredClass.constructor_body===void 0&&(Ae.registeredClass.constructor_body=[]),Ae.registeredClass.constructor_body[ke-1]!==void 0)throw new xi("Cannot register multiple constructors with identical number of parameters ("+(ke-1)+") for class '"+Ae.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Ae.registeredClass.constructor_body[ke-1]=()=>{Do("Cannot construct "+Ae.name+" due to unbound types",Qt)},Yn([],Qt,function(tt){return tt.splice(1,0,null),Ae.registeredClass.constructor_body[ke-1]=w2(Qe,tt,null,Re,bt),[]}),[]})}function C2(oe,ke,s,de,Re,bt,Qt,Ae){var Qe=q2(s,de);ke=x0(ke),bt=zo(Re,bt),Yn([],[oe],function(tt){tt=tt[0];var xt=tt.name+"."+ke;ke.startsWith("@@")&&(ke=Symbol[ke.substring(2)]),Ae&&tt.registeredClass.pureVirtualFunctions.push(ke);function Kt(){Do("Cannot call "+xt+" due to unbound types",Qe)}var fn=tt.registeredClass.instancePrototype,Bn=fn[ke];return Bn===void 0||Bn.overloadTable===void 0&&Bn.className!==tt.name&&Bn.argCount===s-2?(Kt.argCount=s-2,Kt.className=tt.name,fn[ke]=Kt):(Ts(fn,ke,xt),fn[ke].overloadTable[s-2]=Kt),Yn([],Qe,function(dt){var tn=w2(xt,dt,tt,bt,Qt);return fn[ke].overloadTable===void 0?(tn.argCount=s-2,fn[ke]=tn):fn[ke].overloadTable[s-2]=tn,[]}),[]})}var rs=[],Ko=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Gs(oe){oe>4&&--Ko[oe].refcount===0&&(Ko[oe]=void 0,rs.push(oe))}function Is(){for(var oe=0,ke=5;ke(oe||Ki("Cannot use deleted val. handle = "+oe),Ko[oe].value),toHandle:oe=>{switch(oe){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var ke=rs.length?rs.pop():Ko.length;return Ko[ke]={refcount:1,value:oe},ke}}}};function va(oe,ke){ke=x0(ke),ki(oe,{name:ke,fromWireType:function(s){var de=Aa.toValue(s);return Gs(s),de},toWireType:function(s,de){return Aa.toHandle(de)},argPackAdvance:8,readValueFromPointer:Fr,destructorFunction:null})}function b2(oe){if(oe===null)return"null";var ke=typeof oe;return ke==="object"||ke==="array"||ke==="function"?oe.toString():""+oe}function bo(oe,ke){switch(ke){case 2:return function(s){return this.fromWireType(qt[s>>2])};case 3:return function(s){return this.fromWireType($t[s>>3])};default:throw new TypeError("Unknown float type: "+oe)}}function La(oe,ke,s){var de=t0(s);ke=x0(ke),ki(oe,{name:ke,fromWireType:function(Re){return Re},toWireType:function(Re,bt){return bt},argPackAdvance:8,readValueFromPointer:bo(ke,de),destructorFunction:null})}function C1(oe,ke,s){switch(ke){case 0:return s?function(Re){return Ge[Re]}:function(Re){return Ke[Re]};case 1:return s?function(Re){return qe[Re>>1]}:function(Re){return ut[Re>>1]};case 2:return s?function(Re){return wt[Re>>2]}:function(Re){return Et[Re>>2]};default:throw new TypeError("Unknown integer type: "+oe)}}function _1(oe,ke,s,de,Re){ke=x0(ke);var bt=t0(s),Qt=Kt=>Kt;if(de===0){var Ae=32-8*s;Qt=Kt=>Kt<>>Ae}var Qe=ke.includes("unsigned"),tt=(Kt,fn)=>{},xt;Qe?xt=function(Kt,fn){return tt(fn,this.name),fn>>>0}:xt=function(Kt,fn){return tt(fn,this.name),fn},ki(oe,{name:ke,fromWireType:Qt,toWireType:xt,argPackAdvance:8,readValueFromPointer:C1(ke,bt,de!==0),destructorFunction:null})}function tl(oe,ke,s){var de=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Re=de[ke];function bt(Qt){Qt=Qt>>2;var Ae=Et,Qe=Ae[Qt],tt=Ae[Qt+1];return new Re(it,tt,Qe)}s=x0(s),ki(oe,{name:s,fromWireType:bt,argPackAdvance:8,readValueFromPointer:bt},{ignoreDuplicateRegistrations:!0})}function F2(oe,ke){ke=x0(ke);var s=ke==="std::string";ki(oe,{name:ke,fromWireType:function(de){var Re=Et[de>>2],bt=de+4,Qt;if(s)for(var Ae=bt,Qe=0;Qe<=Re;++Qe){var tt=bt+Qe;if(Qe==Re||Ke[tt]==0){var xt=tt-Ae,Kt=Ve(Ae,xt);Qt===void 0?Qt=Kt:(Qt+="\0",Qt+=Kt),Ae=tt+1}}else{for(var fn=new Array(Re),Qe=0;Qe>2]=bt,s&&Qt)je(Re,Qe,bt+1);else if(Qt)for(var tt=0;tt255&&(Sn(Qe),Ki("String has UTF-16 code units that do not fit in 8 bits")),Ke[Qe+tt]=xt}else for(var tt=0;tt>1,Re=de+ke/2;!(de>=Re)&&ut[de];)++de;if(s=de<<1,s-oe>32&&nl)return nl.decode(Ke.subarray(oe,s));for(var bt="",Qt=0;!(Qt>=ke/2);++Qt){var Ae=qe[oe+Qt*2>>1];if(Ae==0)break;bt+=String.fromCharCode(Ae)}return bt}function rl(oe,ke,s){if(s===void 0&&(s=2147483647),s<2)return 0;s-=2;for(var de=ke,Re=s>1]=Qt,ke+=2}return qe[ke>>1]=0,ke-de}function Al(oe){return oe.length*2}function S1(oe,ke){for(var s=0,de="";!(s>=ke/4);){var Re=wt[oe+s*4>>2];if(Re==0)break;if(++s,Re>=65536){var bt=Re-65536;de+=String.fromCharCode(55296|bt>>10,56320|bt&1023)}else de+=String.fromCharCode(Re)}return de}function Ll(oe,ke,s){if(s===void 0&&(s=2147483647),s<4)return 0;for(var de=ke,Re=de+s-4,bt=0;bt=55296&&Qt<=57343){var Ae=oe.charCodeAt(++bt);Qt=65536+((Qt&1023)<<10)|Ae&1023}if(wt[ke>>2]=Qt,ke+=4,ke+4>Re)break}return wt[ke>>2]=0,ke-de}function Nl(oe){for(var ke=0,s=0;s=55296&&de<=57343&&++s,ke+=4}return ke}function bl(oe,ke,s){s=x0(s);var de,Re,bt,Qt,Ae;ke===2?(de=x1,Re=rl,Qt=Al,bt=()=>ut,Ae=1):ke===4&&(de=S1,Re=Ll,Qt=Nl,bt=()=>Et,Ae=2),ki(oe,{name:s,fromWireType:function(Qe){for(var tt=Et[Qe>>2],xt=bt(),Kt,fn=Qe+4,Bn=0;Bn<=tt;++Bn){var dt=Qe+4+Bn*ke;if(Bn==tt||xt[dt>>Ae]==0){var tn=dt-fn,t=de(fn,tn);Kt===void 0?Kt=t:(Kt+="\0",Kt+=t),fn=dt+ke}}return Sn(Qe),Kt},toWireType:function(Qe,tt){typeof tt!="string"&&Ki("Cannot pass non-string to C++ string type "+s);var xt=Qt(tt),Kt=sn(4+xt+ke);return Et[Kt>>2]=xt>>Ae,Re(tt,Kt+4,xt+ke),Qe!==null&&Qe.push(Sn,Kt),Kt},argPackAdvance:8,readValueFromPointer:Fr,destructorFunction:function(Qe){Sn(Qe)}})}function Fl(oe,ke,s,de,Re,bt){Cr[oe]={name:x0(ke),rawConstructor:zo(s,de),rawDestructor:zo(Re,bt),fields:[]}}function il(oe,ke,s,de,Re,bt,Qt,Ae,Qe,tt){Cr[oe].fields.push({fieldName:x0(ke),getterReturnType:s,getter:zo(de,Re),getterContext:bt,setterArgumentType:Qt,setter:zo(Ae,Qe),setterContext:tt})}function Vl(oe,ke){ke=x0(ke),ki(oe,{isVoid:!0,name:ke,argPackAdvance:0,fromWireType:function(){},toWireType:function(s,de){}})}function ol(){throw 1/0}var sl={};function Ul(oe){var ke=sl[oe];return ke===void 0?x0(oe):ke}function T1(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function E1(oe){return oe===0?Aa.toHandle(T1()):(oe=Ul(oe),Aa.toHandle(T1()[oe]))}function al(oe){oe>4&&(Ko[oe].refcount+=1)}function X2(oe,ke){var s=Kr[oe];return s===void 0&&Ki(ke+" has unknown type "+l2(oe)),s}function D1(oe){for(var ke="",s=0;sEt,Re="return function emval_allocator_"+oe+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,s=0;s>2)], 'parameter "+s+`'); +var arg`+s+" = argType"+s+`.readValueFromPointer(args); +args += argType`+s+`['argPackAdvance']; +argTypes += 4; +`;return Re+="var obj = new constructor("+ke+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",Re)(X2,c,Aa.toHandle,de)}var ll={};function I1(oe,ke,s,de){oe=Aa.toValue(oe);var Re=ll[ke];return Re||(Re=D1(ke),ll[ke]=Re),Re(oe,s,de)}function O1(oe,ke){oe=X2(oe,"_emval_take_value");var s=oe.readValueFromPointer(ke);return Aa.toHandle(s)}function ul(){Dt("")}function cl(oe,ke,s){Ke.copyWithin(oe,ke,ke+s)}function Bl(){return 2147483648}function Gl(oe){try{return ce.grow(oe-it.byteLength+65535>>>16),Jt(ce.buffer),1}catch{}}function Y2(oe){var ke=Ke.length;oe=oe>>>0;var s=Bl();if(oe>s)return!1;let de=(Qe,tt)=>Qe+(tt-Qe%tt)%tt;for(var Re=1;Re<=4;Re*=2){var bt=ke*(1+.2/Re);bt=Math.min(bt,oe+100663296);var Qt=Math.min(s,de(Math.max(oe,bt),65536)),Ae=Gl(Qt);if(Ae)return!0}return!1}var M1={};function u2(){return T||"./this.program"}function _2(){if(!_2.strings){var oe=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",ke={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:oe,_:u2()};for(var s in M1)M1[s]===void 0?delete ke[s]:ke[s]=M1[s];var de=[];for(var s in ke)de.push(s+"="+ke[s]);_2.strings=de}return _2.strings}function Na(oe,ke,s){for(var de=0;de>0]=oe.charCodeAt(de);Ge[ke>>0]=0}function x2(oe,ke){var s=0;return _2().forEach(function(de,Re){var bt=ke+s;Et[oe+Re*4>>2]=bt,Na(de,bt),s+=de.length+1}),0}function J2(oe,ke){var s=_2();Et[oe>>2]=s.length;var de=0;return s.forEach(function(Re){de+=Re.length+1}),Et[ke>>2]=de,0}function Ws(oe){P(oe,new br(oe))}function ka(oe,ke){Ws(oe)}var V2=ka;function P1(oe){return 52}function Tt(oe,ke,s,de,Re){return 70}var It=[null,[],[]];function dn(oe,ke){var s=It[oe];ke===0||ke===10?((oe===1?ee:ne)(Te(s,0)),s.length=0):s.push(ke)}function qn(oe,ke,s,de){for(var Re=0,bt=0;bt>2],Ae=Et[ke+4>>2];ke+=8;for(var Qe=0;Qe>2]=Re,0}function cr(oe){var ke=c["_"+oe];return ke}function ft(oe,ke){Ge.set(oe,ke)}function gt(oe,ke,s,de,Re){var bt={string:dt=>{var tn=0;if(dt!=null&&dt!==0){var t=(dt.length<<2)+1;tn=ht(t),je(dt,tn,t)}return tn},array:dt=>{var tn=ht(dt.length);return ft(dt,tn),tn}};function Qt(dt){return ke==="string"?Ve(dt):ke==="boolean"?!!dt:dt}var Ae=cr(oe),Qe=[],tt=0;if(de)for(var xt=0;xt0||(Me(),mn>0))return;function ke(){Fe||(Fe=!0,c.calledRun=!0,!ge&&(ct(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),st()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),ke()},1)):ke()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return ze(),l.ready}})();n.exports=o})(RJ);var bTe=RJ.exports;const FTe=yf(bTe),VTe=new URL("/static/dv3d/assets/libjpegturbowasm_decode-daqMmuVl.wasm",import.meta.url),ow={codec:void 0,decoder:void 0};function UTe(){if(ow.codec)return Promise.resolve();const n=FTe({locateFile:e=>e.endsWith(".wasm")?VTe.toString():e});return new Promise((e,o)=>{n.then(i=>{ow.codec=i,ow.decoder=new i.JPEGDecoder,e()},o)})}async function BTe(n,e){await UTe();const o=ow.decoder;o.getEncodedBuffer(n.length).set(n),o.decode();const l=o.getFrameInfo(),c=o.getDecodedBuffer(),g={columns:l.width,rows:l.height,bitsPerPixel:l.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:l.componentCount},v=GTe(l,c),_={frameInfo:l};return{...e,pixelData:v,imageInfo:g,encodeOptions:_,..._,...g}}function GTe(n,e){return n.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}const WTe="modulepreload",$Te=function(n){return"/static/dv3d/"+n},rF={},AJ=function(e,o,i){let l=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const g=document.querySelector("meta[property=csp-nonce]"),v=(g==null?void 0:g.nonce)||(g==null?void 0:g.getAttribute("nonce"));l=Promise.allSettled(o.map(_=>{if(_=$Te(_),_ in rF)return;rF[_]=!0;const T=_.endsWith(".css"),P=T?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${_}"]${P}`))return;const I=document.createElement("link");if(I.rel=T?"stylesheet":WTe,T||(I.as="script"),I.crossOrigin="",I.href=_,v&&I.setAttribute("nonce",v),document.head.appendChild(I),T)return new Promise((R,L)=>{I.addEventListener("load",R),I.addEventListener("error",()=>L(new Error(`Unable to preload CSS for ${_}`)))})}))}function c(g){const v=new Event("vite:preloadError",{cancelable:!0});if(v.payload=g,window.dispatchEvent(v),!v.defaultPrevented)throw g}return l.then(g=>{for(const v of g||[])v.status==="rejected"&&c(v.reason);return e().catch(c)})},_m={JpegImage:void 0,decodeConfig:{}};function jTe(n){return _m.decodeConfig=n,_m.JpegImage?Promise.resolve():new Promise((e,o)=>{AJ(()=>import("./jpeg-BQEpTZHd.js"),[]).then(i=>{_m.JpegImage=i.default,e()}).catch(o)})}async function zTe(n,e){if(await jTe(),typeof _m.JpegImage>"u")throw new Error("No JPEG Baseline decoder loaded");const o=new _m.JpegImage;if(o.parse(e),o.colorTransform=!1,n.bitsAllocated===8)return n.pixelData=o.getData(n.columns,n.rows),n;if(n.bitsAllocated===16)return n.pixelData=o.getData16(n.columns,n.rows),n}const xm={jpeg:void 0,decodeConfig:{}};function HTe(n){return xm.decodeConfig=n,xm.jpeg?Promise.resolve():new Promise((e,o)=>{AJ(async()=>{const{Decoder:i}=await import("./lossless-BIYWXcdg.js");return{Decoder:i}},[]).then(({Decoder:i})=>{const l=new i;xm.jpeg=l,e()},o)})}async function iF(n,e){if(await HTe(),typeof xm.jpeg>"u")throw new Error("No JPEG Lossless decoder loaded");const o=n.bitsAllocated<=8?1:2,i=e.buffer,l=xm.jpeg.decode(i,e.byteOffset,e.length,o);return n.pixelRepresentation===0?n.bitsAllocated===16?(n.pixelData=new Uint16Array(l.buffer),n):(n.pixelData=new Uint8Array(l.buffer),n):(n.pixelData=new Int16Array(l.buffer),n)}var LJ={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(Tt,It){g=Tt,v=It});var _=Object.assign({},c),T=typeof window=="object",P=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",R="";function L(Tt){return c.locateFile?c.locateFile(Tt,R):R+Tt}var V,U,j;if(I){var z=p1,$=p1;P?R=$.dirname(R)+"/":R=__dirname+"/",V=(Tt,It)=>(Tt=Dt(Tt)?new URL(Tt):$.normalize(Tt),z.readFileSync(Tt,It?void 0:"utf8")),j=Tt=>{var It=V(Tt,!0);return It.buffer||(It=new Uint8Array(It)),It},U=(Tt,It,dn)=>{Tt=Dt(Tt)?new URL(Tt):$.normalize(Tt),z.readFile(Tt,function(qn,cr){qn?dn(qn):It(cr.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(Tt){if(!(Tt instanceof Zn))throw Tt}),process.on("unhandledRejection",function(Tt){throw Tt}),c.inspect=function(){return"[Emscripten Module object]"}}else(T||P)&&(P?R=self.location.href:typeof document<"u"&&document.currentScript&&(R=document.currentScript.src),i&&(R=i),R.indexOf("blob:")!==0?R=R.substr(0,R.replace(/[?#].*/,"").lastIndexOf("/")+1):R="",V=Tt=>{var It=new XMLHttpRequest;return It.open("GET",Tt,!1),It.send(null),It.responseText},P&&(j=Tt=>{var It=new XMLHttpRequest;return It.open("GET",Tt,!1),It.responseType="arraybuffer",It.send(null),new Uint8Array(It.response)}),U=(Tt,It,dn)=>{var qn=new XMLHttpRequest;qn.open("GET",Tt,!0),qn.responseType="arraybuffer",qn.onload=()=>{if(qn.status==200||qn.status==0&&qn.response){It(qn.response);return}dn()},qn.onerror=dn,qn.send(null)});c.print||console.log.bind(console);var K=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&c.thisProgram,c.quit&&c.quit;var X;c.wasmBinary&&(X=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&Pn("no native wasm support detected");var ee,ne=!1;function le(Tt,It){Tt||Pn(It)}var ce=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function ge(Tt,It,dn){for(var qn=It+dn,cr=It;Tt[cr]&&!(cr>=qn);)++cr;if(cr-It>16&&Tt.buffer&&ce)return ce.decode(Tt.subarray(It,cr));for(var ft="";It>10,56320|Sn&1023)}}return ft}function pe(Tt,It){return Tt?ge(Je,Tt,It):""}function we(Tt,It,dn,qn){if(!(qn>0))return 0;for(var cr=dn,ft=dn+qn-1,gt=0;gt=55296&&Ft<=57343){var sn=Tt.charCodeAt(++gt);Ft=65536+((Ft&1023)<<10)|sn&1023}if(Ft<=127){if(dn>=ft)break;It[dn++]=Ft}else if(Ft<=2047){if(dn+1>=ft)break;It[dn++]=192|Ft>>6,It[dn++]=128|Ft&63}else if(Ft<=65535){if(dn+2>=ft)break;It[dn++]=224|Ft>>12,It[dn++]=128|Ft>>6&63,It[dn++]=128|Ft&63}else{if(dn+3>=ft)break;It[dn++]=240|Ft>>18,It[dn++]=128|Ft>>12&63,It[dn++]=128|Ft>>6&63,It[dn++]=128|Ft&63}}return It[dn]=0,dn-cr}function Te(Tt,It,dn){return we(Tt,Je,It,dn)}function Ve(Tt){for(var It=0,dn=0;dn=55296&&qn<=57343?(It+=4,++dn):It+=3}return It}var Pe,je,Je,it,Ge,Ke,qe,ut,wt;function Et(Tt){Pe=Tt,c.HEAP8=je=new Int8Array(Tt),c.HEAP16=it=new Int16Array(Tt),c.HEAP32=Ke=new Int32Array(Tt),c.HEAPU8=Je=new Uint8Array(Tt),c.HEAPU16=Ge=new Uint16Array(Tt),c.HEAPU32=qe=new Uint32Array(Tt),c.HEAPF32=ut=new Float32Array(Tt),c.HEAPF64=wt=new Float64Array(Tt)}c.INITIAL_MEMORY;var qt,$t=[],Jt=[],Dn=[];function Nn(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Me(c.preRun.shift());Ut($t)}function xn(){Ut(Jt)}function et(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)st(c.postRun.shift());Ut(Dn)}function Me(Tt){$t.unshift(Tt)}function ct(Tt){Jt.unshift(Tt)}function st(Tt){Dn.unshift(Tt)}var yt=0,St=null;function Pt(Tt){yt++,c.monitorRunDependencies&&c.monitorRunDependencies(yt)}function mn(Tt){if(yt--,c.monitorRunDependencies&&c.monitorRunDependencies(yt),yt==0&&St){var It=St;St=null,It()}}function Pn(Tt){c.onAbort&&c.onAbort(Tt),Tt="Aborted("+Tt+")",K(Tt),ne=!0,Tt+=". Build with -sASSERTIONS for more info.";var It=new WebAssembly.RuntimeError(Tt);throw v(It),It}var Hn="data:application/octet-stream;base64,";function Kn(Tt){return Tt.startsWith(Hn)}function Dt(Tt){return Tt.startsWith("file://")}var Vt;Vt="charlswasm_decode.wasm",Kn(Vt)||(Vt=L(Vt));function gn(Tt){try{if(Tt==Vt&&X)return new Uint8Array(X);if(j)return j(Tt);throw"both async and sync fetching of the wasm failed"}catch(It){Pn(It)}}function Bt(){if(!X&&(T||P)){if(typeof fetch=="function"&&!Dt(Vt))return fetch(Vt,{credentials:"same-origin"}).then(function(Tt){if(!Tt.ok)throw"failed to load wasm binary file at '"+Vt+"'";return Tt.arrayBuffer()}).catch(function(){return gn(Vt)});if(U)return new Promise(function(Tt,It){U(Vt,function(dn){Tt(new Uint8Array(dn))},It)})}return Promise.resolve().then(function(){return gn(Vt)})}function rn(){var Tt={a:M1};function It(gt,Ft){var sn=gt.exports;c.asm=sn,ee=c.asm.z,Et(ee.buffer),qt=c.asm.C,ct(c.asm.A),mn()}Pt();function dn(gt){It(gt.instance)}function qn(gt){return Bt().then(function(Ft){return WebAssembly.instantiate(Ft,Tt)}).then(function(Ft){return Ft}).then(gt,function(Ft){K("failed to asynchronously prepare wasm: "+Ft),Pn(Ft)})}function cr(){return!X&&typeof WebAssembly.instantiateStreaming=="function"&&!Kn(Vt)&&!Dt(Vt)&&!I&&typeof fetch=="function"?fetch(Vt,{credentials:"same-origin"}).then(function(gt){var Ft=WebAssembly.instantiateStreaming(gt,Tt);return Ft.then(dn,function(sn){return K("wasm streaming compile failed: "+sn),K("falling back to ArrayBuffer instantiation"),qn(dn)})}):qn(dn)}if(c.instantiateWasm)try{var ft=c.instantiateWasm(Tt,It);return ft}catch(gt){K("Module.instantiateWasm callback failed with error: "+gt),v(gt)}return cr().catch(v),{}}function Zn(Tt){this.name="ExitStatus",this.message="Program terminated with exit("+Tt+")",this.status=Tt}function Ut(Tt){for(;Tt.length>0;)Tt.shift()(c)}function Ir(Tt){this.excPtr=Tt,this.ptr=Tt-24,this.set_type=function(It){qe[this.ptr+4>>2]=It},this.get_type=function(){return qe[this.ptr+4>>2]},this.set_destructor=function(It){qe[this.ptr+8>>2]=It},this.get_destructor=function(){return qe[this.ptr+8>>2]},this.set_refcount=function(It){Ke[this.ptr>>2]=It},this.set_caught=function(It){It=It?1:0,je[this.ptr+12>>0]=It},this.get_caught=function(){return je[this.ptr+12>>0]!=0},this.set_rethrown=function(It){It=It?1:0,je[this.ptr+13>>0]=It},this.get_rethrown=function(){return je[this.ptr+13>>0]!=0},this.init=function(It,dn){this.set_adjusted_ptr(0),this.set_type(It),this.set_destructor(dn),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var It=Ke[this.ptr>>2];Ke[this.ptr>>2]=It+1},this.release_ref=function(){var It=Ke[this.ptr>>2];return Ke[this.ptr>>2]=It-1,It===1},this.set_adjusted_ptr=function(It){qe[this.ptr+16>>2]=It},this.get_adjusted_ptr=function(){return qe[this.ptr+16>>2]},this.get_exception_ptr=function(){var It=ka(this.get_type());if(It)return qe[this.excPtr>>2];var dn=this.get_adjusted_ptr();return dn!==0?dn:this.excPtr}}function br(Tt,It,dn){var qn=new Ir(Tt);throw qn.init(It,dn),Tt}var jr={};function An(Tt){for(;Tt.length;){var It=Tt.pop(),dn=Tt.pop();dn(It)}}function hr(Tt){return this.fromWireType(Ke[Tt>>2])}var Cr={},wr={},Fr={},ui=48,Kr=57;function ai(Tt){if(Tt===void 0)return"_unknown";Tt=Tt.replace(/[^a-zA-Z0-9_]/g,"$");var It=Tt.charCodeAt(0);return It>=ui&&It<=Kr?"_"+Tt:Tt}function vi(Tt,It){return Tt=ai(Tt),new Function("body","return function "+Tt+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(It)}function e0(Tt,It){var dn=vi(It,function(qn){this.name=It,this.message=qn;var cr=new Error(qn).stack;cr!==void 0&&(this.stack=this.toString()+` +`+cr.replace(/^Error(:[^\n]*)?\n/,""))});return dn.prototype=Object.create(Tt.prototype),dn.prototype.constructor=dn,dn.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},dn}var p0=void 0;function Hi(Tt){throw new p0(Tt)}function T0(Tt,It,dn){Tt.forEach(function(Ft){Fr[Ft]=It});function qn(Ft){var sn=dn(Ft);sn.length!==Tt.length&&Hi("Mismatched type converter count");for(var Sn=0;Sn{wr.hasOwnProperty(Ft)?cr[sn]=wr[Ft]:(ft.push(Ft),Cr.hasOwnProperty(Ft)||(Cr[Ft]=[]),Cr[Ft].push(()=>{cr[sn]=wr[Ft],++gt,gt===ft.length&&qn(cr)}))}),ft.length===0&&qn(cr)}function wo(Tt){var It=jr[Tt];delete jr[Tt];var dn=It.rawConstructor,qn=It.rawDestructor,cr=It.fields,ft=cr.map(gt=>gt.getterReturnType).concat(cr.map(gt=>gt.setterArgumentType));T0([Tt],ft,gt=>{var Ft={};return cr.forEach((sn,Sn)=>{var Xn=sn.fieldName,tr=gt[Sn],Wn=sn.getter,at=sn.getterContext,ht=gt[Sn+cr.length],zt=sn.setter,kn=sn.setterContext;Ft[Xn]={read:_t=>tr.fromWireType(Wn(at,_t)),write:(_t,dr)=>{var ot=[];zt(kn,_t,ht.toWireType(ot,dr)),An(ot)}}}),[{name:It.name,fromWireType:function(sn){var Sn={};for(var Xn in Ft)Sn[Xn]=Ft[Xn].read(sn);return qn(sn),Sn},toWireType:function(sn,Sn){for(var Xn in Ft)if(!(Xn in Sn))throw new TypeError('Missing field: "'+Xn+'"');var tr=dn();for(Xn in Ft)Ft[Xn].write(tr,Sn[Xn]);return sn!==null&&sn.push(qn,tr),tr},argPackAdvance:8,readValueFromPointer:hr,destructorFunction:qn}]})}function uo(Tt,It,dn,qn,cr){}function Yn(Tt){switch(Tt){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+Tt)}}function Tr(){for(var Tt=new Array(256),It=0;It<256;++It)Tt[It]=String.fromCharCode(It);Ai=Tt}var Ai=void 0;function t0(Tt){for(var It="",dn=Tt;Je[dn];)It+=Ai[Je[dn++]];return It}var Mo=void 0;function Fi(Tt){throw new Mo(Tt)}function x0(Tt,It,dn={}){if(!("argPackAdvance"in It))throw new TypeError("registerType registeredInstance requires argPackAdvance");var qn=It.name;if(Tt||Fi('type "'+qn+'" must have a positive integer typeid pointer'),wr.hasOwnProperty(Tt)){if(dn.ignoreDuplicateRegistrations)return;Fi("Cannot register type '"+qn+"' twice")}if(wr[Tt]=It,delete Fr[Tt],Cr.hasOwnProperty(Tt)){var cr=Cr[Tt];delete Cr[Tt],cr.forEach(ft=>ft())}}function xi(Tt,It,dn,qn,cr){var ft=Yn(dn);It=t0(It),x0(Tt,{name:It,fromWireType:function(gt){return!!gt},toWireType:function(gt,Ft){return Ft?qn:cr},argPackAdvance:8,readValueFromPointer:function(gt){var Ft;if(dn===1)Ft=je;else if(dn===2)Ft=it;else if(dn===4)Ft=Ke;else throw new TypeError("Unknown boolean type size: "+It);return this.fromWireType(Ft[gt>>ft])},destructorFunction:null})}function Ki(Tt){if(!(this instanceof _o)||!(Tt instanceof _o))return!1;for(var It=this.$$.ptrType.registeredClass,dn=this.$$.ptr,qn=Tt.$$.ptrType.registeredClass,cr=Tt.$$.ptr;It.baseClass;)dn=It.upcast(dn),It=It.baseClass;for(;qn.baseClass;)cr=qn.upcast(cr),qn=qn.baseClass;return It===qn&&dn===cr}function ki(Tt){return{count:Tt.count,deleteScheduled:Tt.deleteScheduled,preservePointerOnDelete:Tt.preservePointerOnDelete,ptr:Tt.ptr,ptrType:Tt.ptrType,smartPtr:Tt.smartPtr,smartPtrType:Tt.smartPtrType}}function k0(Tt){function It(dn){return dn.$$.ptrType.registeredClass.name}Fi(It(Tt)+" instance already deleted")}var r0=!1;function Yi(Tt){}function jo(Tt){Tt.smartPtr?Tt.smartPtrType.rawDestructor(Tt.smartPtr):Tt.ptrType.registeredClass.rawDestructor(Tt.ptr)}function ga(Tt){Tt.count.value-=1;var It=Tt.count.value===0;It&&jo(Tt)}function Ma(Tt,It,dn){if(It===dn)return Tt;if(dn.baseClass===void 0)return null;var qn=Ma(Tt,It,dn.baseClass);return qn===null?null:dn.downcast(qn)}var Co={};function ls(){return Object.keys(Lr).length}function pn(){var Tt=[];for(var It in Lr)Lr.hasOwnProperty(It)&&Tt.push(Lr[It]);return Tt}var yr=[];function Fn(){for(;yr.length;){var Tt=yr.pop();Tt.$$.deleteScheduled=!1,Tt.delete()}}var Mn=void 0;function Sr(Tt){Mn=Tt,yr.length&&Mn&&Mn(Fn)}function Ar(){c.getInheritedInstanceCount=ls,c.getLiveInheritedInstances=pn,c.flushPendingDeletes=Fn,c.setDelayFunction=Sr}var Lr={};function qr(Tt,It){for(It===void 0&&Fi("ptr should not be undefined");Tt.baseClass;)It=Tt.upcast(It),Tt=Tt.baseClass;return It}function Vr(Tt,It){return It=qr(Tt,It),Lr[It]}function Si(Tt,It){(!It.ptrType||!It.ptr)&&Hi("makeClassHandle requires ptr and ptrType");var dn=!!It.smartPtrType,qn=!!It.smartPtr;return dn!==qn&&Hi("Both smartPtrType and smartPtr must be specified"),It.count={value:1},S0(Object.create(Tt,{$$:{value:It}}))}function Ui(Tt){var It=this.getPointee(Tt);if(!It)return this.destructor(Tt),null;var dn=Vr(this.registeredClass,It);if(dn!==void 0){if(dn.$$.count.value===0)return dn.$$.ptr=It,dn.$$.smartPtr=Tt,dn.clone();var qn=dn.clone();return this.destructor(Tt),qn}function cr(){return this.isSmartPointer?Si(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:It,smartPtrType:this,smartPtr:Tt}):Si(this.registeredClass.instancePrototype,{ptrType:this,ptr:Tt})}var ft=this.registeredClass.getActualType(It),gt=Co[ft];if(!gt)return cr.call(this);var Ft;this.isConst?Ft=gt.constPointerType:Ft=gt.pointerType;var sn=Ma(It,this.registeredClass,Ft.registeredClass);return sn===null?cr.call(this):this.isSmartPointer?Si(Ft.registeredClass.instancePrototype,{ptrType:Ft,ptr:sn,smartPtrType:this,smartPtr:Tt}):Si(Ft.registeredClass.instancePrototype,{ptrType:Ft,ptr:sn})}function S0(Tt){return typeof FinalizationRegistry>"u"?(S0=It=>It,Tt):(r0=new FinalizationRegistry(It=>{ga(It.$$)}),S0=It=>{var dn=It.$$,qn=!!dn.smartPtr;if(qn){var cr={$$:dn};r0.register(It,cr,It)}return It},Yi=It=>r0.unregister(It),S0(Tt))}function i0(){if(this.$$.ptr||k0(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var Tt=S0(Object.create(Object.getPrototypeOf(this),{$$:{value:ki(this.$$)}}));return Tt.$$.count.value+=1,Tt.$$.deleteScheduled=!1,Tt}function yi(){this.$$.ptr||k0(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Fi("Object already scheduled for deletion"),Yi(this),ga(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function L0(){return!this.$$.ptr}function Z0(){return this.$$.ptr||k0(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Fi("Object already scheduled for deletion"),yr.push(this),yr.length===1&&Mn&&Mn(Fn),this.$$.deleteScheduled=!0,this}function oo(){_o.prototype.isAliasOf=Ki,_o.prototype.clone=i0,_o.prototype.delete=yi,_o.prototype.isDeleted=L0,_o.prototype.deleteLater=Z0}function _o(){}function Bo(Tt,It,dn){if(Tt[It].overloadTable===void 0){var qn=Tt[It];Tt[It]=function(){return Tt[It].overloadTable.hasOwnProperty(arguments.length)||Fi("Function '"+dn+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+Tt[It].overloadTable+")!"),Tt[It].overloadTable[arguments.length].apply(this,arguments)},Tt[It].overloadTable=[],Tt[It].overloadTable[qn.argCount]=qn}}function xo(Tt,It,dn){c.hasOwnProperty(Tt)?((dn===void 0||c[Tt].overloadTable!==void 0&&c[Tt].overloadTable[dn]!==void 0)&&Fi("Cannot register public name '"+Tt+"' twice"),Bo(c,Tt,Tt),c.hasOwnProperty(dn)&&Fi("Cannot register multiple overloads of a function with the same number of arguments ("+dn+")!"),c[Tt].overloadTable[dn]=It):(c[Tt]=It,dn!==void 0&&(c[Tt].numArguments=dn))}function Js(Tt,It,dn,qn,cr,ft,gt,Ft){this.name=Tt,this.constructor=It,this.instancePrototype=dn,this.rawDestructor=qn,this.baseClass=cr,this.getActualType=ft,this.upcast=gt,this.downcast=Ft,this.pureVirtualFunctions=[]}function Ts(Tt,It,dn){for(;It!==dn;)It.upcast||Fi("Expected null or instance of "+dn.name+", got an instance of "+It.name),Tt=It.upcast(Tt),It=It.baseClass;return Tt}function L2(Tt,It){if(It===null)return this.isReference&&Fi("null is not a valid "+this.name),0;It.$$||Fi('Cannot pass "'+So(It)+'" as a '+this.name),It.$$.ptr||Fi("Cannot pass deleted object as a pointer of type "+this.name);var dn=It.$$.ptrType.registeredClass,qn=Ts(It.$$.ptr,dn,this.registeredClass);return qn}function Zs(Tt,It){var dn;if(It===null)return this.isReference&&Fi("null is not a valid "+this.name),this.isSmartPointer?(dn=this.rawConstructor(),Tt!==null&&Tt.push(this.rawDestructor,dn),dn):0;It.$$||Fi('Cannot pass "'+So(It)+'" as a '+this.name),It.$$.ptr||Fi("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&It.$$.ptrType.isConst&&Fi("Cannot convert argument of type "+(It.$$.smartPtrType?It.$$.smartPtrType.name:It.$$.ptrType.name)+" to parameter type "+this.name);var qn=It.$$.ptrType.registeredClass;if(dn=Ts(It.$$.ptr,qn,this.registeredClass),this.isSmartPointer)switch(It.$$.smartPtr===void 0&&Fi("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:It.$$.smartPtrType===this?dn=It.$$.smartPtr:Fi("Cannot convert argument of type "+(It.$$.smartPtrType?It.$$.smartPtrType.name:It.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:dn=It.$$.smartPtr;break;case 2:if(It.$$.smartPtrType===this)dn=It.$$.smartPtr;else{var cr=It.clone();dn=this.rawShare(dn,Is.toHandle(function(){cr.delete()})),Tt!==null&&Tt.push(this.rawDestructor,dn)}break;default:Fi("Unsupporting sharing policy")}return dn}function us(Tt,It){if(It===null)return this.isReference&&Fi("null is not a valid "+this.name),0;It.$$||Fi('Cannot pass "'+So(It)+'" as a '+this.name),It.$$.ptr||Fi("Cannot pass deleted object as a pointer of type "+this.name),It.$$.ptrType.isConst&&Fi("Cannot convert argument of type "+It.$$.ptrType.name+" to parameter type "+this.name);var dn=It.$$.ptrType.registeredClass,qn=Ts(It.$$.ptr,dn,this.registeredClass);return qn}function N2(Tt){return this.rawGetPointee&&(Tt=this.rawGetPointee(Tt)),Tt}function Rl(Tt){this.rawDestructor&&this.rawDestructor(Tt)}function k1(Tt){Tt!==null&&Tt.delete()}function y1(){Pa.prototype.getPointee=N2,Pa.prototype.destructor=Rl,Pa.prototype.argPackAdvance=8,Pa.prototype.readValueFromPointer=hr,Pa.prototype.deleteObject=k1,Pa.prototype.fromWireType=Ui}function Pa(Tt,It,dn,qn,cr,ft,gt,Ft,sn,Sn,Xn){this.name=Tt,this.registeredClass=It,this.isReference=dn,this.isConst=qn,this.isSmartPointer=cr,this.pointeeType=ft,this.sharingPolicy=gt,this.rawGetPointee=Ft,this.rawConstructor=sn,this.rawShare=Sn,this.rawDestructor=Xn,!cr&&It.baseClass===void 0?qn?(this.toWireType=L2,this.destructorFunction=null):(this.toWireType=us,this.destructorFunction=null):this.toWireType=Zs}function Ra(Tt,It,dn){c.hasOwnProperty(Tt)||Hi("Replacing nonexistant public symbol"),c[Tt].overloadTable!==void 0&&dn!==void 0?c[Tt].overloadTable[dn]=It:(c[Tt]=It,c[Tt].argCount=dn)}function pa(Tt,It,dn){var qn=c["dynCall_"+Tt];return dn&&dn.length?qn.apply(null,[It].concat(dn)):qn.call(null,It)}var Es=[];function ma(Tt){var It=Es[Tt];return It||(Tt>=Es.length&&(Es.length=Tt+1),Es[Tt]=It=qt.get(Tt)),It}function a2(Tt,It,dn){if(Tt.includes("j"))return pa(Tt,It,dn);var qn=ma(It).apply(null,dn);return qn}function Ds(Tt,It){var dn=[];return function(){return dn.length=0,Object.assign(dn,arguments),a2(Tt,It,dn)}}function W0(Tt,It){Tt=t0(Tt);function dn(){return Tt.includes("j")?Ds(Tt,It):ma(It)}var qn=dn();return typeof qn!="function"&&Fi("unknown function pointer with signature "+Tt+": "+It),qn}var w1=void 0;function gs(Tt){var It=_2(Tt),dn=t0(It);return Na(It),dn}function zo(Tt,It){var dn=[],qn={};function cr(ft){if(!qn[ft]&&!wr[ft]){if(Fr[ft]){Fr[ft].forEach(cr);return}dn.push(ft),qn[ft]=!0}}throw It.forEach(cr),new w1(Tt+": "+dn.map(gs).join([", "]))}function Eo(Tt,It,dn,qn,cr,ft,gt,Ft,sn,Sn,Xn,tr,Wn){Xn=t0(Xn),ft=W0(cr,ft),Ft&&(Ft=W0(gt,Ft)),Sn&&(Sn=W0(sn,Sn)),Wn=W0(tr,Wn);var at=ai(Xn);xo(at,function(){zo("Cannot construct "+Xn+" due to unbound types",[qn])}),T0([Tt,It,dn],qn?[qn]:[],function(ht){ht=ht[0];var zt,kn;qn?(zt=ht.registeredClass,kn=zt.instancePrototype):kn=_o.prototype;var _t=vi(at,function(){if(Object.getPrototypeOf(this)!==dr)throw new Mo("Use 'new' to construct "+Xn);if(ot.constructor_body===void 0)throw new Mo(Xn+" has no accessible constructor");var oe=ot.constructor_body[arguments.length];if(oe===void 0)throw new Mo("Tried to invoke ctor of "+Xn+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ot.constructor_body).toString()+") parameters instead!");return oe.apply(this,arguments)}),dr=Object.create(kn,{constructor:{value:_t}});_t.prototype=dr;var ot=new Js(Xn,_t,dr,Wn,zt,ft,Ft,Sn),nt=new Pa(Xn,ot,!0,!1,!1),Fe=new Pa(Xn+"*",ot,!1,!1,!1),ze=new Pa(Xn+" const*",ot,!1,!0,!1);return Co[Tt]={pointerType:Fe,constPointerType:ze},Ra(at,_t),[nt,Fe,ze]})}function l2(Tt,It){for(var dn=[],qn=0;qn>2]);return dn}function Do(Tt,It){if(!(Tt instanceof Function))throw new TypeError("new_ called with constructor type "+typeof Tt+" which is not a function");var dn=vi(Tt.name||"unknownFunctionName",function(){});dn.prototype=Tt.prototype;var qn=new dn,cr=Tt.apply(qn,It);return cr instanceof Object?cr:qn}function Ho(Tt,It,dn,qn,cr){var ft=It.length;ft<2&&Fi("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var gt=It[1]!==null&&dn!==null,Ft=!1,sn=1;sn0?", ":"")+tr),Wn+=(Sn?"var rv = ":"")+"invoker(fn"+(tr.length>0?", ":"")+tr+`); +`,Ft)Wn+=`runDestructors(destructors); +`;else for(var sn=gt?1:2;sn0);var gt=l2(It,dn);cr=W0(qn,cr),T0([],[Tt],function(Ft){Ft=Ft[0];var sn="constructor "+Ft.name;if(Ft.registeredClass.constructor_body===void 0&&(Ft.registeredClass.constructor_body=[]),Ft.registeredClass.constructor_body[It-1]!==void 0)throw new Mo("Cannot register multiple constructors with identical number of parameters ("+(It-1)+") for class '"+Ft.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Ft.registeredClass.constructor_body[It-1]=()=>{zo("Cannot construct "+Ft.name+" due to unbound types",gt)},T0([],gt,function(Sn){return Sn.splice(1,0,null),Ft.registeredClass.constructor_body[It-1]=Ho(sn,Sn,null,cr,ft),[]}),[]})}function Ka(Tt,It,dn,qn,cr,ft,gt,Ft){var sn=l2(dn,qn);It=t0(It),ft=W0(cr,ft),T0([],[Tt],function(Sn){Sn=Sn[0];var Xn=Sn.name+"."+It;It.startsWith("@@")&&(It=Symbol[It.substring(2)]),Ft&&Sn.registeredClass.pureVirtualFunctions.push(It);function tr(){zo("Cannot call "+Xn+" due to unbound types",sn)}var Wn=Sn.registeredClass.instancePrototype,at=Wn[It];return at===void 0||at.overloadTable===void 0&&at.className!==Sn.name&&at.argCount===dn-2?(tr.argCount=dn-2,tr.className=Sn.name,Wn[It]=tr):(Bo(Wn,It,Xn),Wn[It].overloadTable[dn-2]=tr),T0([],sn,function(ht){var zt=Ho(Xn,ht,Sn,ft,gt);return Wn[It].overloadTable===void 0?(zt.argCount=dn-2,Wn[It]=zt):Wn[It].overloadTable[dn-2]=zt,[]}),[]})}var w2=[],co=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function C2(Tt){Tt>4&&--co[Tt].refcount===0&&(co[Tt]=void 0,w2.push(Tt))}function rs(){for(var Tt=0,It=5;It(Tt||Fi("Cannot use deleted val. handle = "+Tt),co[Tt].value),toHandle:Tt=>{switch(Tt){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var It=w2.length?w2.pop():co.length;return co[It]={refcount:1,value:Tt},It}}}};function Os(Tt,It){It=t0(It),x0(Tt,{name:It,fromWireType:function(dn){var qn=Is.toValue(dn);return C2(dn),qn},toWireType:function(dn,qn){return Is.toHandle(qn)},argPackAdvance:8,readValueFromPointer:hr,destructorFunction:null})}function So(Tt){if(Tt===null)return"null";var It=typeof Tt;return It==="object"||It==="array"||It==="function"?Tt.toString():""+Tt}function Aa(Tt,It){switch(It){case 2:return function(dn){return this.fromWireType(ut[dn>>2])};case 3:return function(dn){return this.fromWireType(wt[dn>>3])};default:throw new TypeError("Unknown float type: "+Tt)}}function va(Tt,It,dn){var qn=Yn(dn);It=t0(It),x0(Tt,{name:It,fromWireType:function(cr){return cr},toWireType:function(cr,ft){return ft},argPackAdvance:8,readValueFromPointer:Aa(It,qn),destructorFunction:null})}function b2(Tt,It,dn,qn,cr,ft){var gt=l2(It,dn);Tt=t0(Tt),cr=W0(qn,cr),xo(Tt,function(){zo("Cannot call "+Tt+" due to unbound types",gt)},It-1),T0([],gt,function(Ft){var sn=[Ft[0],null].concat(Ft.slice(1));return Ra(Tt,Ho(Tt,sn,null,cr,ft),It-1),[]})}function bo(Tt,It,dn){switch(It){case 0:return dn?function(cr){return je[cr]}:function(cr){return Je[cr]};case 1:return dn?function(cr){return it[cr>>1]}:function(cr){return Ge[cr>>1]};case 2:return dn?function(cr){return Ke[cr>>2]}:function(cr){return qe[cr>>2]};default:throw new TypeError("Unknown integer type: "+Tt)}}function La(Tt,It,dn,qn,cr){It=t0(It);var ft=Yn(dn),gt=tr=>tr;if(qn===0){var Ft=32-8*dn;gt=tr=>tr<>>Ft}var sn=It.includes("unsigned"),Sn=(tr,Wn)=>{},Xn;sn?Xn=function(tr,Wn){return Sn(Wn,this.name),Wn>>>0}:Xn=function(tr,Wn){return Sn(Wn,this.name),Wn},x0(Tt,{name:It,fromWireType:gt,toWireType:Xn,argPackAdvance:8,readValueFromPointer:bo(It,ft,qn!==0),destructorFunction:null})}function C1(Tt,It,dn){var qn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],cr=qn[It];function ft(gt){gt=gt>>2;var Ft=qe,sn=Ft[gt],Sn=Ft[gt+1];return new cr(Pe,Sn,sn)}dn=t0(dn),x0(Tt,{name:dn,fromWireType:ft,argPackAdvance:8,readValueFromPointer:ft},{ignoreDuplicateRegistrations:!0})}function _1(Tt,It){It=t0(It);var dn=It==="std::string";x0(Tt,{name:It,fromWireType:function(qn){var cr=qe[qn>>2],ft=qn+4,gt;if(dn)for(var Ft=ft,sn=0;sn<=cr;++sn){var Sn=ft+sn;if(sn==cr||Je[Sn]==0){var Xn=Sn-Ft,tr=pe(Ft,Xn);gt===void 0?gt=tr:(gt+="\0",gt+=tr),Ft=Sn+1}}else{for(var Wn=new Array(cr),sn=0;sn>2]=ft,dn&>)Te(cr,sn,ft+1);else if(gt)for(var Sn=0;Sn255&&(Na(sn),Fi("String has UTF-16 code units that do not fit in 8 bits")),Je[sn+Sn]=Xn}else for(var Sn=0;Sn>1,cr=qn+It/2;!(qn>=cr)&&Ge[qn];)++qn;if(dn=qn<<1,dn-Tt>32&&tl)return tl.decode(Je.subarray(Tt,dn));for(var ft="",gt=0;!(gt>=It/2);++gt){var Ft=it[Tt+gt*2>>1];if(Ft==0)break;ft+=String.fromCharCode(Ft)}return ft}function nl(Tt,It,dn){if(dn===void 0&&(dn=2147483647),dn<2)return 0;dn-=2;for(var qn=It,cr=dn>1]=gt,It+=2}return it[It>>1]=0,It-qn}function x1(Tt){return Tt.length*2}function rl(Tt,It){for(var dn=0,qn="";!(dn>=It/4);){var cr=Ke[Tt+dn*4>>2];if(cr==0)break;if(++dn,cr>=65536){var ft=cr-65536;qn+=String.fromCharCode(55296|ft>>10,56320|ft&1023)}else qn+=String.fromCharCode(cr)}return qn}function Al(Tt,It,dn){if(dn===void 0&&(dn=2147483647),dn<4)return 0;for(var qn=It,cr=qn+dn-4,ft=0;ft=55296&><=57343){var Ft=Tt.charCodeAt(++ft);gt=65536+((gt&1023)<<10)|Ft&1023}if(Ke[It>>2]=gt,It+=4,It+4>cr)break}return Ke[It>>2]=0,It-qn}function S1(Tt){for(var It=0,dn=0;dn=55296&&qn<=57343&&++dn,It+=4}return It}function Ll(Tt,It,dn){dn=t0(dn);var qn,cr,ft,gt,Ft;It===2?(qn=F2,cr=nl,gt=x1,ft=()=>Ge,Ft=1):It===4&&(qn=rl,cr=Al,gt=S1,ft=()=>qe,Ft=2),x0(Tt,{name:dn,fromWireType:function(sn){for(var Sn=qe[sn>>2],Xn=ft(),tr,Wn=sn+4,at=0;at<=Sn;++at){var ht=sn+4+at*It;if(at==Sn||Xn[ht>>Ft]==0){var zt=ht-Wn,kn=qn(Wn,zt);tr===void 0?tr=kn:(tr+="\0",tr+=kn),Wn=ht+It}}return Na(sn),tr},toWireType:function(sn,Sn){typeof Sn!="string"&&Fi("Cannot pass non-string to C++ string type "+dn);var Xn=gt(Sn),tr=u2(4+Xn+It);return qe[tr>>2]=Xn>>Ft,cr(Sn,tr+4,Xn+It),sn!==null&&sn.push(Na,tr),tr},argPackAdvance:8,readValueFromPointer:hr,destructorFunction:function(sn){Na(sn)}})}function Nl(Tt,It,dn,qn,cr,ft){jr[Tt]={name:t0(It),rawConstructor:W0(dn,qn),rawDestructor:W0(cr,ft),fields:[]}}function bl(Tt,It,dn,qn,cr,ft,gt,Ft,sn,Sn){jr[Tt].fields.push({fieldName:t0(It),getterReturnType:dn,getter:W0(qn,cr),getterContext:ft,setterArgumentType:gt,setter:W0(Ft,sn),setterContext:Sn})}function Fl(Tt,It){It=t0(It),x0(Tt,{isVoid:!0,name:It,argPackAdvance:0,fromWireType:function(){},toWireType:function(dn,qn){}})}var il={};function Vl(Tt){var It=il[Tt];return It===void 0?t0(Tt):It}function ol(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function sl(Tt){return Tt===0?Is.toHandle(ol()):(Tt=Vl(Tt),Is.toHandle(ol()[Tt]))}function Ul(Tt){Tt>4&&(co[Tt].refcount+=1)}function T1(Tt,It){var dn=wr[Tt];return dn===void 0&&Fi(It+" has unknown type "+gs(Tt)),dn}function E1(Tt){for(var It="",dn=0;dnqe,cr="return function emval_allocator_"+Tt+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,dn=0;dn>2)], 'parameter "+dn+`'); +var arg`+dn+" = argType"+dn+`.readValueFromPointer(args); +args += argType`+dn+`['argPackAdvance']; +argTypes += 4; +`;return cr+="var obj = new constructor("+It+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",cr)(T1,c,Is.toHandle,qn)}var al={};function X2(Tt,It,dn,qn){Tt=Is.toValue(Tt);var cr=al[It];return cr||(cr=E1(It),al[It]=cr),cr(Tt,dn,qn)}function D1(Tt,It){Tt=T1(Tt,"_emval_take_value");var dn=Tt.readValueFromPointer(It);return Is.toHandle(dn)}function ll(){Pn("")}function I1(Tt,It,dn){Je.copyWithin(Tt,It,It+dn)}function O1(){return 2147483648}function ul(Tt){try{return ee.grow(Tt-Pe.byteLength+65535>>>16),Et(ee.buffer),1}catch{}}function cl(Tt){var It=Je.length;Tt=Tt>>>0;var dn=O1();if(Tt>dn)return!1;let qn=(sn,Sn)=>sn+(Sn-sn%Sn)%Sn;for(var cr=1;cr<=4;cr*=2){var ft=It*(1+.2/cr);ft=Math.min(ft,Tt+100663296);var gt=Math.min(dn,qn(Math.max(Tt,ft),65536)),Ft=ul(gt);if(Ft)return!0}return!1}function Bl(Tt){var It=c["_"+Tt];return It}function Gl(Tt,It){je.set(Tt,It)}function Y2(Tt,It,dn,qn,cr){var ft={string:ht=>{var zt=0;if(ht!=null&&ht!==0){var kn=(ht.length<<2)+1;zt=Ws(kn),Te(ht,zt,kn)}return zt},array:ht=>{var zt=Ws(ht.length);return Gl(ht,zt),zt}};function gt(ht){return It==="string"?pe(ht):It==="boolean"?!!ht:ht}var Ft=Bl(Tt),sn=[],Sn=0;if(qn)for(var Xn=0;Xn0||(Nn(),yt>0))return;function It(){V2||(V2=!0,c.calledRun=!0,!ne&&(xn(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),et()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),It()},1)):It()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return P1(),l.ready}})();n.exports=o})(LJ);var KTe=LJ.exports;const qTe=yf(KTe),XTe=new URL("/static/dv3d/assets/charlswasm_decode-484ovEoR.wasm",import.meta.url),b6={codec:void 0,decoder:void 0,decodeConfig:{}};function YTe(n){return typeof n=="number"?b6.codec.getExceptionMessage(n):n}function JTe(n){if(b6.decodeConfig=n,b6.codec)return Promise.resolve();const e=qTe({locateFile:o=>o.endsWith(".wasm")?XTe.toString():o});return new Promise((o,i)=>{e.then(l=>{b6.codec=l,b6.decoder=new l.JpegLSDecoder,o()},i)})}async function oF(n,e){try{await JTe();const o=b6.decoder;o.getEncodedBuffer(n.length).set(n),o.decode();const l=o.getFrameInfo(),c=o.getInterleaveMode(),g=o.getNearLossless(),v=o.getDecodedBuffer(),_={columns:l.width,rows:l.height,bitsPerPixel:l.bitsPerSample,signed:e.signed,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:l.componentCount},T=ZTe(l,v,e.signed),P={nearLossless:g,interleaveMode:c,frameInfo:l};return{...e,pixelData:T,imageInfo:_,encodeOptions:P,...P,..._}}catch(o){throw YTe(o)}}function ZTe(n,e,o){return n.bitsPerSample>8?o?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):o?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var NJ={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(at,ht){g=at,v=ht});var _=Object.assign({},c),T="./this.program",P=typeof window=="object",I=typeof importScripts=="function",R=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",L="";function V(at){return c.locateFile?c.locateFile(at,L):L+at}var U,j,z;if(R){var $=p1,K=p1;I?L=K.dirname(L)+"/":L=__dirname+"/",U=(at,ht)=>(at=gn(at)?new URL(at):K.normalize(at),$.readFileSync(at,ht?void 0:"utf8")),z=at=>{var ht=U(at,!0);return ht.buffer||(ht=new Uint8Array(ht)),ht},j=(at,ht,zt)=>{at=gn(at)?new URL(at):K.normalize(at),$.readFile(at,function(kn,_t){kn?zt(kn):ht(_t.buffer)})},process.argv.length>1&&(T=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(at){if(!(at instanceof Ir))throw at}),process.on("unhandledRejection",function(at){throw at}),c.inspect=function(){return"[Emscripten Module object]"}}else(P||I)&&(I?L=self.location.href:typeof document<"u"&&document.currentScript&&(L=document.currentScript.src),i&&(L=i),L.indexOf("blob:")!==0?L=L.substr(0,L.replace(/[?#].*/,"").lastIndexOf("/")+1):L="",U=at=>{var ht=new XMLHttpRequest;return ht.open("GET",at,!1),ht.send(null),ht.responseText},I&&(z=at=>{var ht=new XMLHttpRequest;return ht.open("GET",at,!1),ht.responseType="arraybuffer",ht.send(null),new Uint8Array(ht.response)}),j=(at,ht,zt)=>{var kn=new XMLHttpRequest;kn.open("GET",at,!0),kn.responseType="arraybuffer",kn.onload=()=>{if(kn.status==200||kn.status==0&&kn.response){ht(kn.response);return}zt()},kn.onerror=zt,kn.send(null)});var X=c.print||console.log.bind(console),ee=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&(T=c.thisProgram),c.quit&&c.quit;var ne;c.wasmBinary&&(ne=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&Kn("no native wasm support detected");var le,ce=!1;function ge(at,ht){at||Kn(ht)}var pe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function we(at,ht,zt){for(var kn=ht+zt,_t=ht;at[_t]&&!(_t>=kn);)++_t;if(_t-ht>16&&at.buffer&&pe)return pe.decode(at.subarray(ht,_t));for(var dr="";ht<_t;){var ot=at[ht++];if(!(ot&128)){dr+=String.fromCharCode(ot);continue}var nt=at[ht++]&63;if((ot&224)==192){dr+=String.fromCharCode((ot&31)<<6|nt);continue}var Fe=at[ht++]&63;if((ot&240)==224?ot=(ot&15)<<12|nt<<6|Fe:ot=(ot&7)<<18|nt<<12|Fe<<6|at[ht++]&63,ot<65536)dr+=String.fromCharCode(ot);else{var ze=ot-65536;dr+=String.fromCharCode(55296|ze>>10,56320|ze&1023)}}return dr}function Te(at,ht){return at?we(Ge,at,ht):""}function Ve(at,ht,zt,kn){if(!(kn>0))return 0;for(var _t=zt,dr=zt+kn-1,ot=0;ot=55296&&nt<=57343){var Fe=at.charCodeAt(++ot);nt=65536+((nt&1023)<<10)|Fe&1023}if(nt<=127){if(zt>=dr)break;ht[zt++]=nt}else if(nt<=2047){if(zt+1>=dr)break;ht[zt++]=192|nt>>6,ht[zt++]=128|nt&63}else if(nt<=65535){if(zt+2>=dr)break;ht[zt++]=224|nt>>12,ht[zt++]=128|nt>>6&63,ht[zt++]=128|nt&63}else{if(zt+3>=dr)break;ht[zt++]=240|nt>>18,ht[zt++]=128|nt>>12&63,ht[zt++]=128|nt>>6&63,ht[zt++]=128|nt&63}}return ht[zt]=0,zt-_t}function Pe(at,ht,zt){return Ve(at,Ge,ht,zt)}function je(at){for(var ht=0,zt=0;zt=55296&&kn<=57343?(ht+=4,++zt):ht+=3}return ht}var Je,it,Ge,Ke,qe,ut,wt,Et,qt;function $t(at){Je=at,c.HEAP8=it=new Int8Array(at),c.HEAP16=Ke=new Int16Array(at),c.HEAP32=ut=new Int32Array(at),c.HEAPU8=Ge=new Uint8Array(at),c.HEAPU16=qe=new Uint16Array(at),c.HEAPU32=wt=new Uint32Array(at),c.HEAPF32=Et=new Float32Array(at),c.HEAPF64=qt=new Float64Array(at)}c.INITIAL_MEMORY;var Jt,Dn=[],Nn=[],xn=[];function et(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)st(c.preRun.shift());br(Dn)}function Me(){br(Nn)}function ct(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)St(c.postRun.shift());br(xn)}function st(at){Dn.unshift(at)}function yt(at){Nn.unshift(at)}function St(at){xn.unshift(at)}var Pt=0,mn=null;function Pn(at){Pt++,c.monitorRunDependencies&&c.monitorRunDependencies(Pt)}function Hn(at){if(Pt--,c.monitorRunDependencies&&c.monitorRunDependencies(Pt),Pt==0&&mn){var ht=mn;mn=null,ht()}}function Kn(at){c.onAbort&&c.onAbort(at),at="Aborted("+at+")",ee(at),ce=!0,at+=". Build with -sASSERTIONS for more info.";var ht=new WebAssembly.RuntimeError(at);throw v(ht),ht}var Dt="data:application/octet-stream;base64,";function Vt(at){return at.startsWith(Dt)}function gn(at){return at.startsWith("file://")}var Bt;Bt="openjpegwasm_decode.wasm",Vt(Bt)||(Bt=V(Bt));function rn(at){try{if(at==Bt&&ne)return new Uint8Array(ne);if(z)return z(at);throw"both async and sync fetching of the wasm failed"}catch(ht){Kn(ht)}}function Zn(){if(!ne&&(P||I)){if(typeof fetch=="function"&&!gn(Bt))return fetch(Bt,{credentials:"same-origin"}).then(function(at){if(!at.ok)throw"failed to load wasm binary file at '"+Bt+"'";return at.arrayBuffer()}).catch(function(){return rn(Bt)});if(j)return new Promise(function(at,ht){j(Bt,function(zt){at(new Uint8Array(zt))},ht)})}return Promise.resolve().then(function(){return rn(Bt)})}function Ut(){var at={a:qn};function ht(ot,nt){var Fe=ot.exports;c.asm=Fe,le=c.asm.E,$t(le.buffer),Jt=c.asm.G,yt(c.asm.F),Hn()}Pn();function zt(ot){ht(ot.instance)}function kn(ot){return Zn().then(function(nt){return WebAssembly.instantiate(nt,at)}).then(function(nt){return nt}).then(ot,function(nt){ee("failed to asynchronously prepare wasm: "+nt),Kn(nt)})}function _t(){return!ne&&typeof WebAssembly.instantiateStreaming=="function"&&!Vt(Bt)&&!gn(Bt)&&!R&&typeof fetch=="function"?fetch(Bt,{credentials:"same-origin"}).then(function(ot){var nt=WebAssembly.instantiateStreaming(ot,at);return nt.then(zt,function(Fe){return ee("wasm streaming compile failed: "+Fe),ee("falling back to ArrayBuffer instantiation"),kn(zt)})}):kn(zt)}if(c.instantiateWasm)try{var dr=c.instantiateWasm(at,ht);return dr}catch(ot){ee("Module.instantiateWasm callback failed with error: "+ot),v(ot)}return _t().catch(v),{}}function Ir(at){this.name="ExitStatus",this.message="Program terminated with exit("+at+")",this.status=at}function br(at){for(;at.length>0;)at.shift()(c)}function jr(at){this.excPtr=at,this.ptr=at-24,this.set_type=function(ht){wt[this.ptr+4>>2]=ht},this.get_type=function(){return wt[this.ptr+4>>2]},this.set_destructor=function(ht){wt[this.ptr+8>>2]=ht},this.get_destructor=function(){return wt[this.ptr+8>>2]},this.set_refcount=function(ht){ut[this.ptr>>2]=ht},this.set_caught=function(ht){ht=ht?1:0,it[this.ptr+12>>0]=ht},this.get_caught=function(){return it[this.ptr+12>>0]!=0},this.set_rethrown=function(ht){ht=ht?1:0,it[this.ptr+13>>0]=ht},this.get_rethrown=function(){return it[this.ptr+13>>0]!=0},this.init=function(ht,zt){this.set_adjusted_ptr(0),this.set_type(ht),this.set_destructor(zt),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var ht=ut[this.ptr>>2];ut[this.ptr>>2]=ht+1},this.release_ref=function(){var ht=ut[this.ptr>>2];return ut[this.ptr>>2]=ht-1,ht===1},this.set_adjusted_ptr=function(ht){wt[this.ptr+16>>2]=ht},this.get_adjusted_ptr=function(){return wt[this.ptr+16>>2]},this.get_exception_ptr=function(){var ht=Xn(this.get_type());if(ht)return wt[this.excPtr>>2];var zt=this.get_adjusted_ptr();return zt!==0?zt:this.excPtr}}function An(at,ht,zt){var kn=new jr(at);throw kn.init(ht,zt),at}var hr={};function Cr(at){for(;at.length;){var ht=at.pop(),zt=at.pop();zt(ht)}}function wr(at){return this.fromWireType(ut[at>>2])}var Fr={},ui={},Kr={},ai=48,vi=57;function e0(at){if(at===void 0)return"_unknown";at=at.replace(/[^a-zA-Z0-9_]/g,"$");var ht=at.charCodeAt(0);return ht>=ai&&ht<=vi?"_"+at:at}function p0(at,ht){return at=e0(at),new Function("body","return function "+at+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(ht)}function Hi(at,ht){var zt=p0(ht,function(kn){this.name=ht,this.message=kn;var _t=new Error(kn).stack;_t!==void 0&&(this.stack=this.toString()+` +`+_t.replace(/^Error(:[^\n]*)?\n/,""))});return zt.prototype=Object.create(at.prototype),zt.prototype.constructor=zt,zt.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},zt}var T0=void 0;function wo(at){throw new T0(at)}function uo(at,ht,zt){at.forEach(function(nt){Kr[nt]=ht});function kn(nt){var Fe=zt(nt);Fe.length!==at.length&&wo("Mismatched type converter count");for(var ze=0;ze{ui.hasOwnProperty(nt)?_t[Fe]=ui[nt]:(dr.push(nt),Fr.hasOwnProperty(nt)||(Fr[nt]=[]),Fr[nt].push(()=>{_t[Fe]=ui[nt],++ot,ot===dr.length&&kn(_t)}))}),dr.length===0&&kn(_t)}function Yn(at){var ht=hr[at];delete hr[at];var zt=ht.rawConstructor,kn=ht.rawDestructor,_t=ht.fields,dr=_t.map(ot=>ot.getterReturnType).concat(_t.map(ot=>ot.setterArgumentType));uo([at],dr,ot=>{var nt={};return _t.forEach((Fe,ze)=>{var oe=Fe.fieldName,ke=ot[ze],s=Fe.getter,de=Fe.getterContext,Re=ot[ze+_t.length],bt=Fe.setter,Qt=Fe.setterContext;nt[oe]={read:Ae=>ke.fromWireType(s(de,Ae)),write:(Ae,Qe)=>{var tt=[];bt(Qt,Ae,Re.toWireType(tt,Qe)),Cr(tt)}}}),[{name:ht.name,fromWireType:function(Fe){var ze={};for(var oe in nt)ze[oe]=nt[oe].read(Fe);return kn(Fe),ze},toWireType:function(Fe,ze){for(var oe in nt)if(!(oe in ze))throw new TypeError('Missing field: "'+oe+'"');var ke=zt();for(oe in nt)nt[oe].write(ke,ze[oe]);return Fe!==null&&Fe.push(kn,ke),ke},argPackAdvance:8,readValueFromPointer:wr,destructorFunction:kn}]})}function Tr(at,ht,zt,kn,_t){}function Ai(at){switch(at){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+at)}}function t0(){for(var at=new Array(256),ht=0;ht<256;++ht)at[ht]=String.fromCharCode(ht);Mo=at}var Mo=void 0;function Fi(at){for(var ht="",zt=at;Ge[zt];)ht+=Mo[Ge[zt++]];return ht}var x0=void 0;function xi(at){throw new x0(at)}function Ki(at,ht,zt={}){if(!("argPackAdvance"in ht))throw new TypeError("registerType registeredInstance requires argPackAdvance");var kn=ht.name;if(at||xi('type "'+kn+'" must have a positive integer typeid pointer'),ui.hasOwnProperty(at)){if(zt.ignoreDuplicateRegistrations)return;xi("Cannot register type '"+kn+"' twice")}if(ui[at]=ht,delete Kr[at],Fr.hasOwnProperty(at)){var _t=Fr[at];delete Fr[at],_t.forEach(dr=>dr())}}function ki(at,ht,zt,kn,_t){var dr=Ai(zt);ht=Fi(ht),Ki(at,{name:ht,fromWireType:function(ot){return!!ot},toWireType:function(ot,nt){return nt?kn:_t},argPackAdvance:8,readValueFromPointer:function(ot){var nt;if(zt===1)nt=it;else if(zt===2)nt=Ke;else if(zt===4)nt=ut;else throw new TypeError("Unknown boolean type size: "+ht);return this.fromWireType(nt[ot>>dr])},destructorFunction:null})}function k0(at){if(!(this instanceof xo)||!(at instanceof xo))return!1;for(var ht=this.$$.ptrType.registeredClass,zt=this.$$.ptr,kn=at.$$.ptrType.registeredClass,_t=at.$$.ptr;ht.baseClass;)zt=ht.upcast(zt),ht=ht.baseClass;for(;kn.baseClass;)_t=kn.upcast(_t),kn=kn.baseClass;return ht===kn&&zt===_t}function r0(at){return{count:at.count,deleteScheduled:at.deleteScheduled,preservePointerOnDelete:at.preservePointerOnDelete,ptr:at.ptr,ptrType:at.ptrType,smartPtr:at.smartPtr,smartPtrType:at.smartPtrType}}function Yi(at){function ht(zt){return zt.$$.ptrType.registeredClass.name}xi(ht(at)+" instance already deleted")}var jo=!1;function ga(at){}function Ma(at){at.smartPtr?at.smartPtrType.rawDestructor(at.smartPtr):at.ptrType.registeredClass.rawDestructor(at.ptr)}function Co(at){at.count.value-=1;var ht=at.count.value===0;ht&&Ma(at)}function ls(at,ht,zt){if(ht===zt)return at;if(zt.baseClass===void 0)return null;var kn=ls(at,ht,zt.baseClass);return kn===null?null:zt.downcast(kn)}var pn={};function yr(){return Object.keys(Vr).length}function Fn(){var at=[];for(var ht in Vr)Vr.hasOwnProperty(ht)&&at.push(Vr[ht]);return at}var Mn=[];function Sr(){for(;Mn.length;){var at=Mn.pop();at.$$.deleteScheduled=!1,at.delete()}}var Ar=void 0;function Lr(at){Ar=at,Mn.length&&Ar&&Ar(Sr)}function qr(){c.getInheritedInstanceCount=yr,c.getLiveInheritedInstances=Fn,c.flushPendingDeletes=Sr,c.setDelayFunction=Lr}var Vr={};function Si(at,ht){for(ht===void 0&&xi("ptr should not be undefined");at.baseClass;)ht=at.upcast(ht),at=at.baseClass;return ht}function Ui(at,ht){return ht=Si(at,ht),Vr[ht]}function S0(at,ht){(!ht.ptrType||!ht.ptr)&&wo("makeClassHandle requires ptr and ptrType");var zt=!!ht.smartPtrType,kn=!!ht.smartPtr;return zt!==kn&&wo("Both smartPtrType and smartPtr must be specified"),ht.count={value:1},yi(Object.create(at,{$$:{value:ht}}))}function i0(at){var ht=this.getPointee(at);if(!ht)return this.destructor(at),null;var zt=Ui(this.registeredClass,ht);if(zt!==void 0){if(zt.$$.count.value===0)return zt.$$.ptr=ht,zt.$$.smartPtr=at,zt.clone();var kn=zt.clone();return this.destructor(at),kn}function _t(){return this.isSmartPointer?S0(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:ht,smartPtrType:this,smartPtr:at}):S0(this.registeredClass.instancePrototype,{ptrType:this,ptr:at})}var dr=this.registeredClass.getActualType(ht),ot=pn[dr];if(!ot)return _t.call(this);var nt;this.isConst?nt=ot.constPointerType:nt=ot.pointerType;var Fe=ls(ht,this.registeredClass,nt.registeredClass);return Fe===null?_t.call(this):this.isSmartPointer?S0(nt.registeredClass.instancePrototype,{ptrType:nt,ptr:Fe,smartPtrType:this,smartPtr:at}):S0(nt.registeredClass.instancePrototype,{ptrType:nt,ptr:Fe})}function yi(at){return typeof FinalizationRegistry>"u"?(yi=ht=>ht,at):(jo=new FinalizationRegistry(ht=>{Co(ht.$$)}),yi=ht=>{var zt=ht.$$,kn=!!zt.smartPtr;if(kn){var _t={$$:zt};jo.register(ht,_t,ht)}return ht},ga=ht=>jo.unregister(ht),yi(at))}function L0(){if(this.$$.ptr||Yi(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var at=yi(Object.create(Object.getPrototypeOf(this),{$$:{value:r0(this.$$)}}));return at.$$.count.value+=1,at.$$.deleteScheduled=!1,at}function Z0(){this.$$.ptr||Yi(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xi("Object already scheduled for deletion"),ga(this),Co(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function oo(){return!this.$$.ptr}function _o(){return this.$$.ptr||Yi(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xi("Object already scheduled for deletion"),Mn.push(this),Mn.length===1&&Ar&&Ar(Sr),this.$$.deleteScheduled=!0,this}function Bo(){xo.prototype.isAliasOf=k0,xo.prototype.clone=L0,xo.prototype.delete=Z0,xo.prototype.isDeleted=oo,xo.prototype.deleteLater=_o}function xo(){}function Js(at,ht,zt){if(at[ht].overloadTable===void 0){var kn=at[ht];at[ht]=function(){return at[ht].overloadTable.hasOwnProperty(arguments.length)||xi("Function '"+zt+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+at[ht].overloadTable+")!"),at[ht].overloadTable[arguments.length].apply(this,arguments)},at[ht].overloadTable=[],at[ht].overloadTable[kn.argCount]=kn}}function Ts(at,ht,zt){c.hasOwnProperty(at)?(xi("Cannot register public name '"+at+"' twice"),Js(c,at,at),c.hasOwnProperty(zt)&&xi("Cannot register multiple overloads of a function with the same number of arguments ("+zt+")!"),c[at].overloadTable[zt]=ht):c[at]=ht}function L2(at,ht,zt,kn,_t,dr,ot,nt){this.name=at,this.constructor=ht,this.instancePrototype=zt,this.rawDestructor=kn,this.baseClass=_t,this.getActualType=dr,this.upcast=ot,this.downcast=nt,this.pureVirtualFunctions=[]}function Zs(at,ht,zt){for(;ht!==zt;)ht.upcast||xi("Expected null or instance of "+zt.name+", got an instance of "+ht.name),at=ht.upcast(at),ht=ht.baseClass;return at}function us(at,ht){if(ht===null)return this.isReference&&xi("null is not a valid "+this.name),0;ht.$$||xi('Cannot pass "'+va(ht)+'" as a '+this.name),ht.$$.ptr||xi("Cannot pass deleted object as a pointer of type "+this.name);var zt=ht.$$.ptrType.registeredClass,kn=Zs(ht.$$.ptr,zt,this.registeredClass);return kn}function N2(at,ht){var zt;if(ht===null)return this.isReference&&xi("null is not a valid "+this.name),this.isSmartPointer?(zt=this.rawConstructor(),at!==null&&at.push(this.rawDestructor,zt),zt):0;ht.$$||xi('Cannot pass "'+va(ht)+'" as a '+this.name),ht.$$.ptr||xi("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&ht.$$.ptrType.isConst&&xi("Cannot convert argument of type "+(ht.$$.smartPtrType?ht.$$.smartPtrType.name:ht.$$.ptrType.name)+" to parameter type "+this.name);var kn=ht.$$.ptrType.registeredClass;if(zt=Zs(ht.$$.ptr,kn,this.registeredClass),this.isSmartPointer)switch(ht.$$.smartPtr===void 0&&xi("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:ht.$$.smartPtrType===this?zt=ht.$$.smartPtr:xi("Cannot convert argument of type "+(ht.$$.smartPtrType?ht.$$.smartPtrType.name:ht.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:zt=ht.$$.smartPtr;break;case 2:if(ht.$$.smartPtrType===this)zt=ht.$$.smartPtr;else{var _t=ht.clone();zt=this.rawShare(zt,So.toHandle(function(){_t.delete()})),at!==null&&at.push(this.rawDestructor,zt)}break;default:xi("Unsupporting sharing policy")}return zt}function Rl(at,ht){if(ht===null)return this.isReference&&xi("null is not a valid "+this.name),0;ht.$$||xi('Cannot pass "'+va(ht)+'" as a '+this.name),ht.$$.ptr||xi("Cannot pass deleted object as a pointer of type "+this.name),ht.$$.ptrType.isConst&&xi("Cannot convert argument of type "+ht.$$.ptrType.name+" to parameter type "+this.name);var zt=ht.$$.ptrType.registeredClass,kn=Zs(ht.$$.ptr,zt,this.registeredClass);return kn}function k1(at){return this.rawGetPointee&&(at=this.rawGetPointee(at)),at}function y1(at){this.rawDestructor&&this.rawDestructor(at)}function Pa(at){at!==null&&at.delete()}function Ra(){pa.prototype.getPointee=k1,pa.prototype.destructor=y1,pa.prototype.argPackAdvance=8,pa.prototype.readValueFromPointer=wr,pa.prototype.deleteObject=Pa,pa.prototype.fromWireType=i0}function pa(at,ht,zt,kn,_t,dr,ot,nt,Fe,ze,oe){this.name=at,this.registeredClass=ht,this.isReference=zt,this.isConst=kn,this.isSmartPointer=_t,this.pointeeType=dr,this.sharingPolicy=ot,this.rawGetPointee=nt,this.rawConstructor=Fe,this.rawShare=ze,this.rawDestructor=oe,!_t&&ht.baseClass===void 0?kn?(this.toWireType=us,this.destructorFunction=null):(this.toWireType=Rl,this.destructorFunction=null):this.toWireType=N2}function Es(at,ht,zt){c.hasOwnProperty(at)||wo("Replacing nonexistant public symbol"),c[at].overloadTable!==void 0&&zt!==void 0||(c[at]=ht,c[at].argCount=zt)}function ma(at,ht,zt){var kn=c["dynCall_"+at];return zt&&zt.length?kn.apply(null,[ht].concat(zt)):kn.call(null,ht)}var a2=[];function Ds(at){var ht=a2[at];return ht||(at>=a2.length&&(a2.length=at+1),a2[at]=ht=Jt.get(at)),ht}function W0(at,ht,zt){if(at.includes("j"))return ma(at,ht,zt);var kn=Ds(ht).apply(null,zt);return kn}function w1(at,ht){var zt=[];return function(){return zt.length=0,Object.assign(zt,arguments),W0(at,ht,zt)}}function gs(at,ht){at=Fi(at);function zt(){return at.includes("j")?w1(at,ht):Ds(ht)}var kn=zt();return typeof kn!="function"&&xi("unknown function pointer with signature "+at+": "+ht),kn}var zo=void 0;function Eo(at){var ht=gt(at),zt=Fi(ht);return ft(ht),zt}function l2(at,ht){var zt=[],kn={};function _t(dr){if(!kn[dr]&&!ui[dr]){if(Kr[dr]){Kr[dr].forEach(_t);return}zt.push(dr),kn[dr]=!0}}throw ht.forEach(_t),new zo(at+": "+zt.map(Eo).join([", "]))}function Do(at,ht,zt,kn,_t,dr,ot,nt,Fe,ze,oe,ke,s){oe=Fi(oe),dr=gs(_t,dr),nt&&(nt=gs(ot,nt)),ze&&(ze=gs(Fe,ze)),s=gs(ke,s);var de=e0(oe);Ts(de,function(){l2("Cannot construct "+oe+" due to unbound types",[kn])}),uo([at,ht,zt],kn?[kn]:[],function(Re){Re=Re[0];var bt,Qt;kn?(bt=Re.registeredClass,Qt=bt.instancePrototype):Qt=xo.prototype;var Ae=p0(de,function(){if(Object.getPrototypeOf(this)!==Qe)throw new x0("Use 'new' to construct "+oe);if(tt.constructor_body===void 0)throw new x0(oe+" has no accessible constructor");var Bn=tt.constructor_body[arguments.length];if(Bn===void 0)throw new x0("Tried to invoke ctor of "+oe+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(tt.constructor_body).toString()+") parameters instead!");return Bn.apply(this,arguments)}),Qe=Object.create(Qt,{constructor:{value:Ae}});Ae.prototype=Qe;var tt=new L2(oe,Ae,Qe,s,bt,dr,nt,ze),xt=new pa(oe,tt,!0,!1,!1),Kt=new pa(oe+"*",tt,!1,!1,!1),fn=new pa(oe+" const*",tt,!1,!0,!1);return pn[at]={pointerType:Kt,constPointerType:fn},Es(de,Ae),[xt,Kt,fn]})}function Ho(at,ht){for(var zt=[],kn=0;kn>2]);return zt}function q2(at,ht){if(!(at instanceof Function))throw new TypeError("new_ called with constructor type "+typeof at+" which is not a function");var zt=p0(at.name||"unknownFunctionName",function(){});zt.prototype=at.prototype;var kn=new zt,_t=at.apply(kn,ht);return _t instanceof Object?_t:kn}function Ka(at,ht,zt,kn,_t){var dr=ht.length;dr<2&&xi("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var ot=ht[1]!==null&&zt!==null,nt=!1,Fe=1;Fe0?", ":"")+ke),s+=(ze?"var rv = ":"")+"invoker(fn"+(ke.length>0?", ":"")+ke+`); +`,nt)s+=`runDestructors(destructors); +`;else for(var Fe=ot?1:2;Fe0);var ot=Ho(ht,zt);_t=gs(kn,_t),uo([],[at],function(nt){nt=nt[0];var Fe="constructor "+nt.name;if(nt.registeredClass.constructor_body===void 0&&(nt.registeredClass.constructor_body=[]),nt.registeredClass.constructor_body[ht-1]!==void 0)throw new x0("Cannot register multiple constructors with identical number of parameters ("+(ht-1)+") for class '"+nt.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return nt.registeredClass.constructor_body[ht-1]=()=>{l2("Cannot construct "+nt.name+" due to unbound types",ot)},uo([],ot,function(ze){return ze.splice(1,0,null),nt.registeredClass.constructor_body[ht-1]=Ka(Fe,ze,null,_t,dr),[]}),[]})}function co(at,ht,zt,kn,_t,dr,ot,nt){var Fe=Ho(zt,kn);ht=Fi(ht),dr=gs(_t,dr),uo([],[at],function(ze){ze=ze[0];var oe=ze.name+"."+ht;ht.startsWith("@@")&&(ht=Symbol[ht.substring(2)]),nt&&ze.registeredClass.pureVirtualFunctions.push(ht);function ke(){l2("Cannot call "+oe+" due to unbound types",Fe)}var s=ze.registeredClass.instancePrototype,de=s[ht];return de===void 0||de.overloadTable===void 0&&de.className!==ze.name&&de.argCount===zt-2?(ke.argCount=zt-2,ke.className=ze.name,s[ht]=ke):(Js(s,ht,oe),s[ht].overloadTable[zt-2]=ke),uo([],Fe,function(Re){var bt=Ka(oe,Re,ze,dr,ot);return s[ht].overloadTable===void 0?(bt.argCount=zt-2,s[ht]=bt):s[ht].overloadTable[zt-2]=bt,[]}),[]})}var C2=[],rs=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ko(at){at>4&&--rs[at].refcount===0&&(rs[at]=void 0,C2.push(at))}function Gs(){for(var at=0,ht=5;ht(at||xi("Cannot use deleted val. handle = "+at),rs[at].value),toHandle:at=>{switch(at){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var ht=C2.length?C2.pop():rs.length;return rs[ht]={refcount:1,value:at},ht}}}};function Aa(at,ht){ht=Fi(ht),Ki(at,{name:ht,fromWireType:function(zt){var kn=So.toValue(zt);return Ko(zt),kn},toWireType:function(zt,kn){return So.toHandle(kn)},argPackAdvance:8,readValueFromPointer:wr,destructorFunction:null})}function va(at){if(at===null)return"null";var ht=typeof at;return ht==="object"||ht==="array"||ht==="function"?at.toString():""+at}function b2(at,ht){switch(ht){case 2:return function(zt){return this.fromWireType(Et[zt>>2])};case 3:return function(zt){return this.fromWireType(qt[zt>>3])};default:throw new TypeError("Unknown float type: "+at)}}function bo(at,ht,zt){var kn=Ai(zt);ht=Fi(ht),Ki(at,{name:ht,fromWireType:function(_t){return _t},toWireType:function(_t,dr){return dr},argPackAdvance:8,readValueFromPointer:b2(ht,kn),destructorFunction:null})}function La(at,ht,zt){switch(ht){case 0:return zt?function(_t){return it[_t]}:function(_t){return Ge[_t]};case 1:return zt?function(_t){return Ke[_t>>1]}:function(_t){return qe[_t>>1]};case 2:return zt?function(_t){return ut[_t>>2]}:function(_t){return wt[_t>>2]};default:throw new TypeError("Unknown integer type: "+at)}}function C1(at,ht,zt,kn,_t){ht=Fi(ht);var dr=Ai(zt),ot=ke=>ke;if(kn===0){var nt=32-8*zt;ot=ke=>ke<>>nt}var Fe=ht.includes("unsigned"),ze=(ke,s)=>{},oe;Fe?oe=function(ke,s){return ze(s,this.name),s>>>0}:oe=function(ke,s){return ze(s,this.name),s},Ki(at,{name:ht,fromWireType:ot,toWireType:oe,argPackAdvance:8,readValueFromPointer:La(ht,dr,kn!==0),destructorFunction:null})}function _1(at,ht,zt){var kn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],_t=kn[ht];function dr(ot){ot=ot>>2;var nt=wt,Fe=nt[ot],ze=nt[ot+1];return new _t(Je,ze,Fe)}zt=Fi(zt),Ki(at,{name:zt,fromWireType:dr,argPackAdvance:8,readValueFromPointer:dr},{ignoreDuplicateRegistrations:!0})}function tl(at,ht){ht=Fi(ht);var zt=ht==="std::string";Ki(at,{name:ht,fromWireType:function(kn){var _t=wt[kn>>2],dr=kn+4,ot;if(zt)for(var nt=dr,Fe=0;Fe<=_t;++Fe){var ze=dr+Fe;if(Fe==_t||Ge[ze]==0){var oe=ze-nt,ke=Te(nt,oe);ot===void 0?ot=ke:(ot+="\0",ot+=ke),nt=ze+1}}else{for(var s=new Array(_t),Fe=0;Fe<_t;++Fe)s[Fe]=String.fromCharCode(Ge[dr+Fe]);ot=s.join("")}return ft(kn),ot},toWireType:function(kn,_t){_t instanceof ArrayBuffer&&(_t=new Uint8Array(_t));var dr,ot=typeof _t=="string";ot||_t instanceof Uint8Array||_t instanceof Uint8ClampedArray||_t instanceof Int8Array||xi("Cannot pass non-string to std::string"),zt&&ot?dr=je(_t):dr=_t.length;var nt=cr(4+dr+1),Fe=nt+4;if(wt[nt>>2]=dr,zt&&ot)Pe(_t,Fe,dr+1);else if(ot)for(var ze=0;ze255&&(ft(Fe),xi("String has UTF-16 code units that do not fit in 8 bits")),Ge[Fe+ze]=oe}else for(var ze=0;ze>1,_t=kn+ht/2;!(kn>=_t)&&qe[kn];)++kn;if(zt=kn<<1,zt-at>32&&F2)return F2.decode(Ge.subarray(at,zt));for(var dr="",ot=0;!(ot>=ht/2);++ot){var nt=Ke[at+ot*2>>1];if(nt==0)break;dr+=String.fromCharCode(nt)}return dr}function x1(at,ht,zt){if(zt===void 0&&(zt=2147483647),zt<2)return 0;zt-=2;for(var kn=ht,_t=zt>1]=ot,ht+=2}return Ke[ht>>1]=0,ht-kn}function rl(at){return at.length*2}function Al(at,ht){for(var zt=0,kn="";!(zt>=ht/4);){var _t=ut[at+zt*4>>2];if(_t==0)break;if(++zt,_t>=65536){var dr=_t-65536;kn+=String.fromCharCode(55296|dr>>10,56320|dr&1023)}else kn+=String.fromCharCode(_t)}return kn}function S1(at,ht,zt){if(zt===void 0&&(zt=2147483647),zt<4)return 0;for(var kn=ht,_t=kn+zt-4,dr=0;dr=55296&&ot<=57343){var nt=at.charCodeAt(++dr);ot=65536+((ot&1023)<<10)|nt&1023}if(ut[ht>>2]=ot,ht+=4,ht+4>_t)break}return ut[ht>>2]=0,ht-kn}function Ll(at){for(var ht=0,zt=0;zt=55296&&kn<=57343&&++zt,ht+=4}return ht}function Nl(at,ht,zt){zt=Fi(zt);var kn,_t,dr,ot,nt;ht===2?(kn=nl,_t=x1,ot=rl,dr=()=>qe,nt=1):ht===4&&(kn=Al,_t=S1,ot=Ll,dr=()=>wt,nt=2),Ki(at,{name:zt,fromWireType:function(Fe){for(var ze=wt[Fe>>2],oe=dr(),ke,s=Fe+4,de=0;de<=ze;++de){var Re=Fe+4+de*ht;if(de==ze||oe[Re>>nt]==0){var bt=Re-s,Qt=kn(s,bt);ke===void 0?ke=Qt:(ke+="\0",ke+=Qt),s=Re+ht}}return ft(Fe),ke},toWireType:function(Fe,ze){typeof ze!="string"&&xi("Cannot pass non-string to C++ string type "+zt);var oe=ot(ze),ke=cr(4+oe+ht);return wt[ke>>2]=oe>>nt,_t(ze,ke+4,oe+ht),Fe!==null&&Fe.push(ft,ke),ke},argPackAdvance:8,readValueFromPointer:wr,destructorFunction:function(Fe){ft(Fe)}})}function bl(at,ht,zt,kn,_t,dr){hr[at]={name:Fi(ht),rawConstructor:gs(zt,kn),rawDestructor:gs(_t,dr),fields:[]}}function Fl(at,ht,zt,kn,_t,dr,ot,nt,Fe,ze){hr[at].fields.push({fieldName:Fi(ht),getterReturnType:zt,getter:gs(kn,_t),getterContext:dr,setterArgumentType:ot,setter:gs(nt,Fe),setterContext:ze})}function il(at,ht){ht=Fi(ht),Ki(at,{isVoid:!0,name:ht,argPackAdvance:0,fromWireType:function(){},toWireType:function(zt,kn){}})}var Vl={};function ol(at){var ht=Vl[at];return ht===void 0?Fi(at):ht}function sl(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function Ul(at){return at===0?So.toHandle(sl()):(at=ol(at),So.toHandle(sl()[at]))}function T1(at){at>4&&(rs[at].refcount+=1)}function E1(at,ht){var zt=ui[at];return zt===void 0&&xi(ht+" has unknown type "+Eo(at)),zt}function al(at){for(var ht="",zt=0;ztwt,_t="return function emval_allocator_"+at+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,zt=0;zt>2)], 'parameter "+zt+`'); +var arg`+zt+" = argType"+zt+`.readValueFromPointer(args); +args += argType`+zt+`['argPackAdvance']; +argTypes += 4; +`;return _t+="var obj = new constructor("+ht+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",_t)(E1,c,So.toHandle,kn)}var X2={};function D1(at,ht,zt,kn){at=So.toValue(at);var _t=X2[ht];return _t||(_t=al(ht),X2[ht]=_t),_t(at,zt,kn)}function ll(at,ht){at=E1(at,"_emval_take_value");var zt=at.readValueFromPointer(ht);return So.toHandle(zt)}function I1(){Kn("")}function O1(){return 2147483648}function ul(){return O1()}function cl(at,ht,zt){Ge.copyWithin(at,ht,ht+zt)}function Bl(at){try{return le.grow(at-Je.byteLength+65535>>>16),$t(le.buffer),1}catch{}}function Gl(at){var ht=Ge.length;at=at>>>0;var zt=O1();if(at>zt)return!1;let kn=(Fe,ze)=>Fe+(ze-Fe%ze)%ze;for(var _t=1;_t<=4;_t*=2){var dr=ht*(1+.2/_t);dr=Math.min(dr,at+100663296);var ot=Math.min(zt,kn(Math.max(at,dr),65536)),nt=Bl(ot);if(nt)return!0}return!1}var Y2={};function M1(){return T||"./this.program"}function u2(){if(!u2.strings){var at=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",ht={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:at,_:M1()};for(var zt in Y2)Y2[zt]===void 0?delete ht[zt]:ht[zt]=Y2[zt];var kn=[];for(var zt in ht)kn.push(zt+"="+ht[zt]);u2.strings=kn}return u2.strings}function _2(at,ht,zt){for(var kn=0;kn>0]=at.charCodeAt(kn);it[ht>>0]=0}function Na(at,ht){var zt=0;return u2().forEach(function(kn,_t){var dr=ht+zt;wt[at+_t*4>>2]=dr,_2(kn,dr),zt+=kn.length+1}),0}function x2(at,ht){var zt=u2();wt[at>>2]=zt.length;var kn=0;return zt.forEach(function(_t){kn+=_t.length+1}),wt[ht>>2]=kn,0}function J2(at){return 52}function Ws(at,ht,zt,kn,_t){return 70}var ka=[null,[],[]];function V2(at,ht){var zt=ka[at];ht===0||ht===10?((at===1?X:ee)(we(zt,0)),zt.length=0):zt.push(ht)}function P1(at,ht,zt,kn){for(var _t=0,dr=0;dr>2],nt=wt[ht+4>>2];ht+=8;for(var Fe=0;Fe>2]=_t,0}function Tt(at){var ht=c["_"+at];return ht}function It(at,ht){it.set(at,ht)}function dn(at,ht,zt,kn,_t){var dr={string:Re=>{var bt=0;if(Re!=null&&Re!==0){var Qt=(Re.length<<2)+1;bt=Sn(Qt),Pe(Re,bt,Qt)}return bt},array:Re=>{var bt=Sn(Re.length);return It(Re,bt),bt}};function ot(Re){return ht==="string"?Te(Re):ht==="boolean"?!!Re:Re}var nt=Tt(at),Fe=[],ze=0;if(kn)for(var oe=0;oe0||(et(),Pt>0))return;function ht(){tr||(tr=!0,c.calledRun=!0,!ce&&(Me(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),ct()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),ht()},1)):ht()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return Wn(),l.ready}})();n.exports=o})(NJ);var QTe=NJ.exports;const eEe=yf(QTe),tEe=new URL("/static/dv3d/assets/openjpegwasm_decode-C4nnCcr6.wasm",import.meta.url),X3={codec:void 0,decoder:void 0,decodeConfig:{}};function nEe(n){if(X3.decodeConfig=n,X3.codec)return Promise.resolve();const e=eEe({locateFile:o=>o.endsWith(".wasm")?tEe.toString():o});return new Promise((o,i)=>{e.then(l=>{X3.codec=l,X3.decoder=new l.J2KDecoder,o()},i)})}async function sF(n,e){await nEe();const o=X3.decoder,i=o.getEncodedBuffer(n.length);i.set(n),o.decode();const l=o.getFrameInfo(),c=o.getDecodedBuffer();new Uint8Array(c.length).set(c);const v=`x: ${o.getImageOffset().x}, y: ${o.getImageOffset().y}`,_=o.getNumDecompositions(),T=o.getNumLayers(),P=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][o.getProgressionOrder()+1],I=o.getIsReversible(),R=`${o.getBlockDimensions().width} x ${o.getBlockDimensions().height}`,L=`${o.getTileSize().width} x ${o.getTileSize().height}`,V=`${o.getTileOffset().x}, ${o.getTileOffset().y}`,U=o.getColorSpace(),j=`${c.length.toLocaleString()} bytes`,z=`${(c.length/i.length).toFixed(2)}:1`,$={columns:l.width,rows:l.height,bitsPerPixel:l.bitsPerSample,signed:l.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:l.componentCount},K=rEe(l,c),X={imageOffset:v,numDecompositions:_,numLayers:T,progessionOrder:P,reversible:I,blockDimensions:R,tileSize:L,tileOffset:V,colorTransform:U,decodedSize:j,compressionRatio:z};return{...e,pixelData:K,imageInfo:$,encodeOptions:X,...X,...$}}function rEe(n,e){return n.bitsPerSample>8?n.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):n.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var bJ={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(c){c=c||{};var c=typeof c<"u"?c:{},g,v;c.ready=new Promise(function(Fe,ze){g=Fe,v=ze});var _=Object.assign({},c),T=typeof window=="object",P=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",R="";function L(Fe){return c.locateFile?c.locateFile(Fe,R):R+Fe}var V,U,j;if(I){var z=p1,$=p1;P?R=$.dirname(R)+"/":R=__dirname+"/",V=(Fe,ze)=>(Fe=Vt(Fe)?new URL(Fe):$.normalize(Fe),z.readFileSync(Fe,ze?void 0:"utf8")),j=Fe=>{var ze=V(Fe,!0);return ze.buffer||(ze=new Uint8Array(ze)),ze},U=(Fe,ze,oe)=>{Fe=Vt(Fe)?new URL(Fe):$.normalize(Fe),z.readFile(Fe,function(ke,s){ke?oe(ke):ze(s.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(Fe){if(!(Fe instanceof Ut))throw Fe}),process.on("unhandledRejection",function(Fe){throw Fe}),c.inspect=function(){return"[Emscripten Module object]"}}else(T||P)&&(P?R=self.location.href:typeof document<"u"&&document.currentScript&&(R=document.currentScript.src),i&&(R=i),R.indexOf("blob:")!==0?R=R.substr(0,R.replace(/[?#].*/,"").lastIndexOf("/")+1):R="",V=Fe=>{var ze=new XMLHttpRequest;return ze.open("GET",Fe,!1),ze.send(null),ze.responseText},P&&(j=Fe=>{var ze=new XMLHttpRequest;return ze.open("GET",Fe,!1),ze.responseType="arraybuffer",ze.send(null),new Uint8Array(ze.response)}),U=(Fe,ze,oe)=>{var ke=new XMLHttpRequest;ke.open("GET",Fe,!0),ke.responseType="arraybuffer",ke.onload=()=>{if(ke.status==200||ke.status==0&&ke.response){ze(ke.response);return}oe()},ke.onerror=oe,ke.send(null)});var K=c.print||console.log.bind(console),X=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&c.thisProgram,c.quit&&c.quit;var ee;c.wasmBinary&&(ee=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&Hn("no native wasm support detected");var ne,le=!1;function ce(Fe,ze){Fe||Hn(ze)}var ge=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function pe(Fe,ze,oe){for(var ke=ze+oe,s=ze;Fe[s]&&!(s>=ke);)++s;if(s-ze>16&&Fe.buffer&&ge)return ge.decode(Fe.subarray(ze,s));for(var de="";ze>10,56320|Ae&1023)}}return de}function we(Fe,ze){return Fe?pe(it,Fe,ze):""}function Te(Fe,ze,oe,ke){if(!(ke>0))return 0;for(var s=oe,de=oe+ke-1,Re=0;Re=55296&&bt<=57343){var Qt=Fe.charCodeAt(++Re);bt=65536+((bt&1023)<<10)|Qt&1023}if(bt<=127){if(oe>=de)break;ze[oe++]=bt}else if(bt<=2047){if(oe+1>=de)break;ze[oe++]=192|bt>>6,ze[oe++]=128|bt&63}else if(bt<=65535){if(oe+2>=de)break;ze[oe++]=224|bt>>12,ze[oe++]=128|bt>>6&63,ze[oe++]=128|bt&63}else{if(oe+3>=de)break;ze[oe++]=240|bt>>18,ze[oe++]=128|bt>>12&63,ze[oe++]=128|bt>>6&63,ze[oe++]=128|bt&63}}return ze[oe]=0,oe-s}function Ve(Fe,ze,oe){return Te(Fe,it,ze,oe)}function Pe(Fe){for(var ze=0,oe=0;oe=55296&&ke<=57343?(ze+=4,++oe):ze+=3}return ze}var je,Je,it,Ge,Ke,qe,ut,wt,Et;function qt(Fe){je=Fe,c.HEAP8=Je=new Int8Array(Fe),c.HEAP16=Ge=new Int16Array(Fe),c.HEAP32=qe=new Int32Array(Fe),c.HEAPU8=it=new Uint8Array(Fe),c.HEAPU16=Ke=new Uint16Array(Fe),c.HEAPU32=ut=new Uint32Array(Fe),c.HEAPF32=wt=new Float32Array(Fe),c.HEAPF64=Et=new Float64Array(Fe)}c.INITIAL_MEMORY;var $t,Jt=[],Dn=[],Nn=[];function xn(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)ct(c.preRun.shift());Ir(Jt)}function et(){Ir(Dn)}function Me(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)yt(c.postRun.shift());Ir(Nn)}function ct(Fe){Jt.unshift(Fe)}function st(Fe){Dn.unshift(Fe)}function yt(Fe){Nn.unshift(Fe)}var St=0,Pt=null;function mn(Fe){St++,c.monitorRunDependencies&&c.monitorRunDependencies(St)}function Pn(Fe){if(St--,c.monitorRunDependencies&&c.monitorRunDependencies(St),St==0&&Pt){var ze=Pt;Pt=null,ze()}}function Hn(Fe){c.onAbort&&c.onAbort(Fe),Fe="Aborted("+Fe+")",X(Fe),le=!0,Fe+=". Build with -sASSERTIONS for more info.";var ze=new WebAssembly.RuntimeError(Fe);throw v(ze),ze}var Kn="data:application/octet-stream;base64,";function Dt(Fe){return Fe.startsWith(Kn)}function Vt(Fe){return Fe.startsWith("file://")}var gn;gn="openjphjs.wasm",Dt(gn)||(gn=L(gn));function Bt(Fe){try{if(Fe==gn&&ee)return new Uint8Array(ee);if(j)return j(Fe);throw"both async and sync fetching of the wasm failed"}catch(ze){Hn(ze)}}function rn(){if(!ee&&(T||P)){if(typeof fetch=="function"&&!Vt(gn))return fetch(gn,{credentials:"same-origin"}).then(function(Fe){if(!Fe.ok)throw"failed to load wasm binary file at '"+gn+"'";return Fe.arrayBuffer()}).catch(function(){return Bt(gn)});if(U)return new Promise(function(Fe,ze){U(gn,function(oe){Fe(new Uint8Array(oe))},ze)})}return Promise.resolve().then(function(){return Bt(gn)})}function Zn(){var Fe={env:Tt,wasi_snapshot_preview1:Tt};function ze(Re,bt){var Qt=Re.exports;c.asm=Qt,ne=c.asm.memory,qt(ne.buffer),$t=c.asm.__indirect_function_table,st(c.asm.__wasm_call_ctors),Pn()}mn();function oe(Re){ze(Re.instance)}function ke(Re){return rn().then(function(bt){return WebAssembly.instantiate(bt,Fe)}).then(function(bt){return bt}).then(Re,function(bt){X("failed to asynchronously prepare wasm: "+bt),Hn(bt)})}function s(){return!ee&&typeof WebAssembly.instantiateStreaming=="function"&&!Dt(gn)&&!Vt(gn)&&!I&&typeof fetch=="function"?fetch(gn,{credentials:"same-origin"}).then(function(Re){var bt=WebAssembly.instantiateStreaming(Re,Fe);return bt.then(oe,function(Qt){return X("wasm streaming compile failed: "+Qt),X("falling back to ArrayBuffer instantiation"),ke(oe)})}):ke(oe)}if(c.instantiateWasm)try{var de=c.instantiateWasm(Fe,ze);return de}catch(Re){X("Module.instantiateWasm callback failed with error: "+Re),v(Re)}return s().catch(v),{}}function Ut(Fe){this.name="ExitStatus",this.message="Program terminated with exit("+Fe+")",this.status=Fe}function Ir(Fe){for(;Fe.length>0;)Fe.shift()(c)}function br(Fe,ze,oe,ke){Hn("Assertion failed: "+we(Fe)+", at: "+[ze?we(ze):"unknown filename",oe,ke?we(ke):"unknown function"])}var jr=[];function An(Fe){Fe.add_ref()}function hr(Fe){var ze=new ai(Fe);return ze.get_caught()||ze.set_caught(!0),ze.set_rethrown(!1),jr.push(ze),An(ze),ze.get_exception_ptr()}var Cr=0,wr=[];function Fr(Fe){var ze=wr[Fe];return ze||(Fe>=wr.length&&(wr.length=Fe+1),wr[Fe]=ze=$t.get(Fe)),ze}function ui(Fe){if(Fe.release_ref()&&!Fe.get_rethrown()){var ze=Fe.get_destructor();ze&&Fr(ze)(Fe.excPtr),qn(Fe.excPtr)}}function Kr(){_setThrew(0);var Fe=jr.pop();ui(Fe),Cr=0}function ai(Fe){this.excPtr=Fe,this.ptr=Fe-24,this.set_type=function(ze){ut[this.ptr+4>>2]=ze},this.get_type=function(){return ut[this.ptr+4>>2]},this.set_destructor=function(ze){ut[this.ptr+8>>2]=ze},this.get_destructor=function(){return ut[this.ptr+8>>2]},this.set_refcount=function(ze){qe[this.ptr>>2]=ze},this.set_caught=function(ze){ze=ze?1:0,Je[this.ptr+12>>0]=ze},this.get_caught=function(){return Je[this.ptr+12>>0]!=0},this.set_rethrown=function(ze){ze=ze?1:0,Je[this.ptr+13>>0]=ze},this.get_rethrown=function(){return Je[this.ptr+13>>0]!=0},this.init=function(ze,oe){this.set_adjusted_ptr(0),this.set_type(ze),this.set_destructor(oe),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var ze=qe[this.ptr>>2];qe[this.ptr>>2]=ze+1},this.release_ref=function(){var ze=qe[this.ptr>>2];return qe[this.ptr>>2]=ze-1,ze===1},this.set_adjusted_ptr=function(ze){ut[this.ptr+16>>2]=ze},this.get_adjusted_ptr=function(){return ut[this.ptr+16>>2]},this.get_exception_ptr=function(){var ze=Xn(this.get_type());if(ze)return ut[this.excPtr>>2];var oe=this.get_adjusted_ptr();return oe!==0?oe:this.excPtr}}function vi(Fe){throw Cr||(Cr=Fe),Fe}function e0(){var Fe=Cr;if(!Fe)return ft(0),0;var ze=new ai(Fe);ze.set_adjusted_ptr(Fe);var oe=ze.get_type();if(!oe)return ft(0),Fe;for(var ke=0;ke>2])}var Yn={},Tr={},Ai={},t0=48,Mo=57;function Fi(Fe){if(Fe===void 0)return"_unknown";Fe=Fe.replace(/[^a-zA-Z0-9_]/g,"$");var ze=Fe.charCodeAt(0);return ze>=t0&&ze<=Mo?"_"+Fe:Fe}function x0(Fe,ze){return Fe=Fi(Fe),new Function("body","return function "+Fe+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(ze)}function xi(Fe,ze){var oe=x0(ze,function(ke){this.name=ze,this.message=ke;var s=new Error(ke).stack;s!==void 0&&(this.stack=this.toString()+` +`+s.replace(/^Error(:[^\n]*)?\n/,""))});return oe.prototype=Object.create(Fe.prototype),oe.prototype.constructor=oe,oe.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},oe}var Ki=void 0;function ki(Fe){throw new Ki(Fe)}function k0(Fe,ze,oe){Fe.forEach(function(bt){Ai[bt]=ze});function ke(bt){var Qt=oe(bt);Qt.length!==Fe.length&&ki("Mismatched type converter count");for(var Ae=0;Ae{Tr.hasOwnProperty(bt)?s[Qt]=Tr[bt]:(de.push(bt),Yn.hasOwnProperty(bt)||(Yn[bt]=[]),Yn[bt].push(()=>{s[Qt]=Tr[bt],++Re,Re===de.length&&ke(s)}))}),de.length===0&&ke(s)}function r0(Fe){var ze=T0[Fe];delete T0[Fe];var oe=ze.rawConstructor,ke=ze.rawDestructor,s=ze.fields,de=s.map(Re=>Re.getterReturnType).concat(s.map(Re=>Re.setterArgumentType));k0([Fe],de,Re=>{var bt={};return s.forEach((Qt,Ae)=>{var Qe=Qt.fieldName,tt=Re[Ae],xt=Qt.getter,Kt=Qt.getterContext,fn=Re[Ae+s.length],Bn=Qt.setter,dt=Qt.setterContext;bt[Qe]={read:tn=>tt.fromWireType(xt(Kt,tn)),write:(tn,t)=>{var xe=[];Bn(dt,tn,fn.toWireType(xe,t)),wo(xe)}}}),[{name:ze.name,fromWireType:function(Qt){var Ae={};for(var Qe in bt)Ae[Qe]=bt[Qe].read(Qt);return ke(Qt),Ae},toWireType:function(Qt,Ae){for(var Qe in bt)if(!(Qe in Ae))throw new TypeError('Missing field: "'+Qe+'"');var tt=oe();for(Qe in bt)bt[Qe].write(tt,Ae[Qe]);return Qt!==null&&Qt.push(ke,tt),tt},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:ke}]})}function Yi(Fe,ze,oe,ke,s){}function jo(Fe){switch(Fe){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+Fe)}}function ga(){for(var Fe=new Array(256),ze=0;ze<256;++ze)Fe[ze]=String.fromCharCode(ze);Ma=Fe}var Ma=void 0;function Co(Fe){for(var ze="",oe=Fe;it[oe];)ze+=Ma[it[oe++]];return ze}var ls=void 0;function pn(Fe){throw new ls(Fe)}function yr(Fe,ze,oe={}){if(!("argPackAdvance"in ze))throw new TypeError("registerType registeredInstance requires argPackAdvance");var ke=ze.name;if(Fe||pn('type "'+ke+'" must have a positive integer typeid pointer'),Tr.hasOwnProperty(Fe)){if(oe.ignoreDuplicateRegistrations)return;pn("Cannot register type '"+ke+"' twice")}if(Tr[Fe]=ze,delete Ai[Fe],Yn.hasOwnProperty(Fe)){var s=Yn[Fe];delete Yn[Fe],s.forEach(de=>de())}}function Fn(Fe,ze,oe,ke,s){var de=jo(oe);ze=Co(ze),yr(Fe,{name:ze,fromWireType:function(Re){return!!Re},toWireType:function(Re,bt){return bt?ke:s},argPackAdvance:8,readValueFromPointer:function(Re){var bt;if(oe===1)bt=Je;else if(oe===2)bt=Ge;else if(oe===4)bt=qe;else throw new TypeError("Unknown boolean type size: "+ze);return this.fromWireType(bt[Re>>de])},destructorFunction:null})}function Mn(Fe){if(!(this instanceof Ra)||!(Fe instanceof Ra))return!1;for(var ze=this.$$.ptrType.registeredClass,oe=this.$$.ptr,ke=Fe.$$.ptrType.registeredClass,s=Fe.$$.ptr;ze.baseClass;)oe=ze.upcast(oe),ze=ze.baseClass;for(;ke.baseClass;)s=ke.upcast(s),ke=ke.baseClass;return ze===ke&&oe===s}function Sr(Fe){return{count:Fe.count,deleteScheduled:Fe.deleteScheduled,preservePointerOnDelete:Fe.preservePointerOnDelete,ptr:Fe.ptr,ptrType:Fe.ptrType,smartPtr:Fe.smartPtr,smartPtrType:Fe.smartPtrType}}function Ar(Fe){function ze(oe){return oe.$$.ptrType.registeredClass.name}pn(ze(Fe)+" instance already deleted")}var Lr=!1;function qr(Fe){}function Vr(Fe){Fe.smartPtr?Fe.smartPtrType.rawDestructor(Fe.smartPtr):Fe.ptrType.registeredClass.rawDestructor(Fe.ptr)}function Si(Fe){Fe.count.value-=1;var ze=Fe.count.value===0;ze&&Vr(Fe)}function Ui(Fe,ze,oe){if(ze===oe)return Fe;if(oe.baseClass===void 0)return null;var ke=Ui(Fe,ze,oe.baseClass);return ke===null?null:oe.downcast(ke)}var S0={};function i0(){return Object.keys(xo).length}function yi(){var Fe=[];for(var ze in xo)xo.hasOwnProperty(ze)&&Fe.push(xo[ze]);return Fe}var L0=[];function Z0(){for(;L0.length;){var Fe=L0.pop();Fe.$$.deleteScheduled=!1,Fe.delete()}}var oo=void 0;function _o(Fe){oo=Fe,L0.length&&oo&&oo(Z0)}function Bo(){c.getInheritedInstanceCount=i0,c.getLiveInheritedInstances=yi,c.flushPendingDeletes=Z0,c.setDelayFunction=_o}var xo={};function Js(Fe,ze){for(ze===void 0&&pn("ptr should not be undefined");Fe.baseClass;)ze=Fe.upcast(ze),Fe=Fe.baseClass;return ze}function Ts(Fe,ze){return ze=Js(Fe,ze),xo[ze]}function L2(Fe,ze){(!ze.ptrType||!ze.ptr)&&ki("makeClassHandle requires ptr and ptrType");var oe=!!ze.smartPtrType,ke=!!ze.smartPtr;return oe!==ke&&ki("Both smartPtrType and smartPtr must be specified"),ze.count={value:1},us(Object.create(Fe,{$$:{value:ze}}))}function Zs(Fe){var ze=this.getPointee(Fe);if(!ze)return this.destructor(Fe),null;var oe=Ts(this.registeredClass,ze);if(oe!==void 0){if(oe.$$.count.value===0)return oe.$$.ptr=ze,oe.$$.smartPtr=Fe,oe.clone();var ke=oe.clone();return this.destructor(Fe),ke}function s(){return this.isSmartPointer?L2(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:ze,smartPtrType:this,smartPtr:Fe}):L2(this.registeredClass.instancePrototype,{ptrType:this,ptr:Fe})}var de=this.registeredClass.getActualType(ze),Re=S0[de];if(!Re)return s.call(this);var bt;this.isConst?bt=Re.constPointerType:bt=Re.pointerType;var Qt=Ui(ze,this.registeredClass,bt.registeredClass);return Qt===null?s.call(this):this.isSmartPointer?L2(bt.registeredClass.instancePrototype,{ptrType:bt,ptr:Qt,smartPtrType:this,smartPtr:Fe}):L2(bt.registeredClass.instancePrototype,{ptrType:bt,ptr:Qt})}function us(Fe){return typeof FinalizationRegistry>"u"?(us=ze=>ze,Fe):(Lr=new FinalizationRegistry(ze=>{Si(ze.$$)}),us=ze=>{var oe=ze.$$,ke=!!oe.smartPtr;if(ke){var s={$$:oe};Lr.register(ze,s,ze)}return ze},qr=ze=>Lr.unregister(ze),us(Fe))}function N2(){if(this.$$.ptr||Ar(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var Fe=us(Object.create(Object.getPrototypeOf(this),{$$:{value:Sr(this.$$)}}));return Fe.$$.count.value+=1,Fe.$$.deleteScheduled=!1,Fe}function Rl(){this.$$.ptr||Ar(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&pn("Object already scheduled for deletion"),qr(this),Si(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function k1(){return!this.$$.ptr}function y1(){return this.$$.ptr||Ar(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&pn("Object already scheduled for deletion"),L0.push(this),L0.length===1&&oo&&oo(Z0),this.$$.deleteScheduled=!0,this}function Pa(){Ra.prototype.isAliasOf=Mn,Ra.prototype.clone=N2,Ra.prototype.delete=Rl,Ra.prototype.isDeleted=k1,Ra.prototype.deleteLater=y1}function Ra(){}function pa(Fe,ze,oe){if(Fe[ze].overloadTable===void 0){var ke=Fe[ze];Fe[ze]=function(){return Fe[ze].overloadTable.hasOwnProperty(arguments.length)||pn("Function '"+oe+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+Fe[ze].overloadTable+")!"),Fe[ze].overloadTable[arguments.length].apply(this,arguments)},Fe[ze].overloadTable=[],Fe[ze].overloadTable[ke.argCount]=ke}}function Es(Fe,ze,oe){c.hasOwnProperty(Fe)?((oe===void 0||c[Fe].overloadTable!==void 0&&c[Fe].overloadTable[oe]!==void 0)&&pn("Cannot register public name '"+Fe+"' twice"),pa(c,Fe,Fe),c.hasOwnProperty(oe)&&pn("Cannot register multiple overloads of a function with the same number of arguments ("+oe+")!"),c[Fe].overloadTable[oe]=ze):(c[Fe]=ze,oe!==void 0&&(c[Fe].numArguments=oe))}function ma(Fe,ze,oe,ke,s,de,Re,bt){this.name=Fe,this.constructor=ze,this.instancePrototype=oe,this.rawDestructor=ke,this.baseClass=s,this.getActualType=de,this.upcast=Re,this.downcast=bt,this.pureVirtualFunctions=[]}function a2(Fe,ze,oe){for(;ze!==oe;)ze.upcast||pn("Expected null or instance of "+oe.name+", got an instance of "+ze.name),Fe=ze.upcast(Fe),ze=ze.baseClass;return Fe}function Ds(Fe,ze){if(ze===null)return this.isReference&&pn("null is not a valid "+this.name),0;ze.$$||pn('Cannot pass "'+x1(ze)+'" as a '+this.name),ze.$$.ptr||pn("Cannot pass deleted object as a pointer of type "+this.name);var oe=ze.$$.ptrType.registeredClass,ke=a2(ze.$$.ptr,oe,this.registeredClass);return ke}function W0(Fe,ze){var oe;if(ze===null)return this.isReference&&pn("null is not a valid "+this.name),this.isSmartPointer?(oe=this.rawConstructor(),Fe!==null&&Fe.push(this.rawDestructor,oe),oe):0;ze.$$||pn('Cannot pass "'+x1(ze)+'" as a '+this.name),ze.$$.ptr||pn("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&ze.$$.ptrType.isConst&&pn("Cannot convert argument of type "+(ze.$$.smartPtrType?ze.$$.smartPtrType.name:ze.$$.ptrType.name)+" to parameter type "+this.name);var ke=ze.$$.ptrType.registeredClass;if(oe=a2(ze.$$.ptr,ke,this.registeredClass),this.isSmartPointer)switch(ze.$$.smartPtr===void 0&&pn("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:ze.$$.smartPtrType===this?oe=ze.$$.smartPtr:pn("Cannot convert argument of type "+(ze.$$.smartPtrType?ze.$$.smartPtrType.name:ze.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:oe=ze.$$.smartPtr;break;case 2:if(ze.$$.smartPtrType===this)oe=ze.$$.smartPtr;else{var s=ze.clone();oe=this.rawShare(oe,F2.toHandle(function(){s.delete()})),Fe!==null&&Fe.push(this.rawDestructor,oe)}break;default:pn("Unsupporting sharing policy")}return oe}function w1(Fe,ze){if(ze===null)return this.isReference&&pn("null is not a valid "+this.name),0;ze.$$||pn('Cannot pass "'+x1(ze)+'" as a '+this.name),ze.$$.ptr||pn("Cannot pass deleted object as a pointer of type "+this.name),ze.$$.ptrType.isConst&&pn("Cannot convert argument of type "+ze.$$.ptrType.name+" to parameter type "+this.name);var oe=ze.$$.ptrType.registeredClass,ke=a2(ze.$$.ptr,oe,this.registeredClass);return ke}function gs(Fe){return this.rawGetPointee&&(Fe=this.rawGetPointee(Fe)),Fe}function zo(Fe){this.rawDestructor&&this.rawDestructor(Fe)}function Eo(Fe){Fe!==null&&Fe.delete()}function l2(){Do.prototype.getPointee=gs,Do.prototype.destructor=zo,Do.prototype.argPackAdvance=8,Do.prototype.readValueFromPointer=uo,Do.prototype.deleteObject=Eo,Do.prototype.fromWireType=Zs}function Do(Fe,ze,oe,ke,s,de,Re,bt,Qt,Ae,Qe){this.name=Fe,this.registeredClass=ze,this.isReference=oe,this.isConst=ke,this.isSmartPointer=s,this.pointeeType=de,this.sharingPolicy=Re,this.rawGetPointee=bt,this.rawConstructor=Qt,this.rawShare=Ae,this.rawDestructor=Qe,!s&&ze.baseClass===void 0?ke?(this.toWireType=Ds,this.destructorFunction=null):(this.toWireType=w1,this.destructorFunction=null):this.toWireType=W0}function Ho(Fe,ze,oe){c.hasOwnProperty(Fe)||ki("Replacing nonexistant public symbol"),c[Fe].overloadTable!==void 0&&oe!==void 0?c[Fe].overloadTable[oe]=ze:(c[Fe]=ze,c[Fe].argCount=oe)}function q2(Fe,ze,oe){var ke=c["dynCall_"+Fe];return oe&&oe.length?ke.apply(null,[ze].concat(oe)):ke.call(null,ze)}function Ka(Fe,ze,oe){if(Fe.includes("j"))return q2(Fe,ze,oe);var ke=Fr(ze).apply(null,oe);return ke}function w2(Fe,ze){var oe=[];return function(){return oe.length=0,Object.assign(oe,arguments),Ka(Fe,ze,oe)}}function co(Fe,ze){Fe=Co(Fe);function oe(){return Fe.includes("j")?w2(Fe,ze):Fr(ze)}var ke=oe();return typeof ke!="function"&&pn("unknown function pointer with signature "+Fe+": "+ze),ke}var C2=void 0;function rs(Fe){var ze=cr(Fe),oe=Co(ze);return dn(ze),oe}function Ko(Fe,ze){var oe=[],ke={};function s(de){if(!ke[de]&&!Tr[de]){if(Ai[de]){Ai[de].forEach(s);return}oe.push(de),ke[de]=!0}}throw ze.forEach(s),new C2(Fe+": "+oe.map(rs).join([", "]))}function Gs(Fe,ze,oe,ke,s,de,Re,bt,Qt,Ae,Qe,tt,xt){Qe=Co(Qe),de=co(s,de),bt&&(bt=co(Re,bt)),Ae&&(Ae=co(Qt,Ae)),xt=co(tt,xt);var Kt=Fi(Qe);Es(Kt,function(){Ko("Cannot construct "+Qe+" due to unbound types",[ke])}),k0([Fe,ze,oe],ke?[ke]:[],function(fn){fn=fn[0];var Bn,dt;ke?(Bn=fn.registeredClass,dt=Bn.instancePrototype):dt=Ra.prototype;var tn=x0(Kt,function(){if(Object.getPrototypeOf(this)!==t)throw new ls("Use 'new' to construct "+Qe);if(xe.constructor_body===void 0)throw new ls(Qe+" has no accessible constructor");var mr=xe.constructor_body[arguments.length];if(mr===void 0)throw new ls("Tried to invoke ctor of "+Qe+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(xe.constructor_body).toString()+") parameters instead!");return mr.apply(this,arguments)}),t=Object.create(dt,{constructor:{value:tn}});tn.prototype=t;var xe=new ma(Qe,tn,t,xt,Bn,de,bt,Ae),Qn=new Do(Qe,xe,!0,!1,!1),ln=new Do(Qe+"*",xe,!1,!1,!1),Ue=new Do(Qe+" const*",xe,!1,!0,!1);return S0[Fe]={pointerType:ln,constPointerType:Ue},Ho(Kt,tn),[Qn,ln,Ue]})}function Is(Fe,ze){for(var oe=[],ke=0;ke>2]);return oe}function Os(Fe,ze){if(!(Fe instanceof Function))throw new TypeError("new_ called with constructor type "+typeof Fe+" which is not a function");var oe=x0(Fe.name||"unknownFunctionName",function(){});oe.prototype=Fe.prototype;var ke=new oe,s=Fe.apply(ke,ze);return s instanceof Object?s:ke}function So(Fe,ze,oe,ke,s){var de=ze.length;de<2&&pn("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Re=ze[1]!==null&&oe!==null,bt=!1,Qt=1;Qt0?", ":"")+tt),xt+=(Ae?"var rv = ":"")+"invoker(fn"+(tt.length>0?", ":"")+tt+`); +`,bt)xt+=`runDestructors(destructors); +`;else for(var Qt=Re?1:2;Qt0);var Re=Is(ze,oe);s=co(ke,s),k0([],[Fe],function(bt){bt=bt[0];var Qt="constructor "+bt.name;if(bt.registeredClass.constructor_body===void 0&&(bt.registeredClass.constructor_body=[]),bt.registeredClass.constructor_body[ze-1]!==void 0)throw new ls("Cannot register multiple constructors with identical number of parameters ("+(ze-1)+") for class '"+bt.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return bt.registeredClass.constructor_body[ze-1]=()=>{Ko("Cannot construct "+bt.name+" due to unbound types",Re)},k0([],Re,function(Ae){return Ae.splice(1,0,null),bt.registeredClass.constructor_body[ze-1]=So(Qt,Ae,null,s,de),[]}),[]})}function va(Fe,ze,oe,ke,s,de,Re,bt){var Qt=Is(oe,ke);ze=Co(ze),de=co(s,de),k0([],[Fe],function(Ae){Ae=Ae[0];var Qe=Ae.name+"."+ze;ze.startsWith("@@")&&(ze=Symbol[ze.substring(2)]),bt&&Ae.registeredClass.pureVirtualFunctions.push(ze);function tt(){Ko("Cannot call "+Qe+" due to unbound types",Qt)}var xt=Ae.registeredClass.instancePrototype,Kt=xt[ze];return Kt===void 0||Kt.overloadTable===void 0&&Kt.className!==Ae.name&&Kt.argCount===oe-2?(tt.argCount=oe-2,tt.className=Ae.name,xt[ze]=tt):(pa(xt,ze,Qe),xt[ze].overloadTable[oe-2]=tt),k0([],Qt,function(fn){var Bn=So(Qe,fn,Ae,de,Re);return xt[ze].overloadTable===void 0?(Bn.argCount=oe-2,xt[ze]=Bn):xt[ze].overloadTable[oe-2]=Bn,[]}),[]})}var b2=[],bo=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function La(Fe){Fe>4&&--bo[Fe].refcount===0&&(bo[Fe]=void 0,b2.push(Fe))}function C1(){for(var Fe=0,ze=5;ze(Fe||pn("Cannot use deleted val. handle = "+Fe),bo[Fe].value),toHandle:Fe=>{switch(Fe){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var ze=b2.length?b2.pop():bo.length;return bo[ze]={refcount:1,value:Fe},ze}}}};function nl(Fe,ze){ze=Co(ze),yr(Fe,{name:ze,fromWireType:function(oe){var ke=F2.toValue(oe);return La(oe),ke},toWireType:function(oe,ke){return F2.toHandle(ke)},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:null})}function x1(Fe){if(Fe===null)return"null";var ze=typeof Fe;return ze==="object"||ze==="array"||ze==="function"?Fe.toString():""+Fe}function rl(Fe,ze){switch(ze){case 2:return function(oe){return this.fromWireType(wt[oe>>2])};case 3:return function(oe){return this.fromWireType(Et[oe>>3])};default:throw new TypeError("Unknown float type: "+Fe)}}function Al(Fe,ze,oe){var ke=jo(oe);ze=Co(ze),yr(Fe,{name:ze,fromWireType:function(s){return s},toWireType:function(s,de){return de},argPackAdvance:8,readValueFromPointer:rl(ze,ke),destructorFunction:null})}function S1(Fe,ze,oe,ke,s,de){var Re=Is(ze,oe);Fe=Co(Fe),s=co(ke,s),Es(Fe,function(){Ko("Cannot call "+Fe+" due to unbound types",Re)},ze-1),k0([],Re,function(bt){var Qt=[bt[0],null].concat(bt.slice(1));return Ho(Fe,So(Fe,Qt,null,s,de),ze-1),[]})}function Ll(Fe,ze,oe){switch(ze){case 0:return oe?function(s){return Je[s]}:function(s){return it[s]};case 1:return oe?function(s){return Ge[s>>1]}:function(s){return Ke[s>>1]};case 2:return oe?function(s){return qe[s>>2]}:function(s){return ut[s>>2]};default:throw new TypeError("Unknown integer type: "+Fe)}}function Nl(Fe,ze,oe,ke,s){ze=Co(ze);var de=jo(oe),Re=tt=>tt;if(ke===0){var bt=32-8*oe;Re=tt=>tt<>>bt}var Qt=ze.includes("unsigned"),Ae=(tt,xt)=>{},Qe;Qt?Qe=function(tt,xt){return Ae(xt,this.name),xt>>>0}:Qe=function(tt,xt){return Ae(xt,this.name),xt},yr(Fe,{name:ze,fromWireType:Re,toWireType:Qe,argPackAdvance:8,readValueFromPointer:Ll(ze,de,ke!==0),destructorFunction:null})}function bl(Fe,ze,oe){var ke=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=ke[ze];function de(Re){Re=Re>>2;var bt=ut,Qt=bt[Re],Ae=bt[Re+1];return new s(je,Ae,Qt)}oe=Co(oe),yr(Fe,{name:oe,fromWireType:de,argPackAdvance:8,readValueFromPointer:de},{ignoreDuplicateRegistrations:!0})}function Fl(Fe,ze){ze=Co(ze);var oe=ze==="std::string";yr(Fe,{name:ze,fromWireType:function(ke){var s=ut[ke>>2],de=ke+4,Re;if(oe)for(var bt=de,Qt=0;Qt<=s;++Qt){var Ae=de+Qt;if(Qt==s||it[Ae]==0){var Qe=Ae-bt,tt=we(bt,Qe);Re===void 0?Re=tt:(Re+="\0",Re+=tt),bt=Ae+1}}else{for(var xt=new Array(s),Qt=0;Qt>2]=de,oe&&Re)Ve(s,Qt,de+1);else if(Re)for(var Ae=0;Ae255&&(dn(Qt),pn("String has UTF-16 code units that do not fit in 8 bits")),it[Qt+Ae]=Qe}else for(var Ae=0;Ae>1,s=ke+ze/2;!(ke>=s)&&Ke[ke];)++ke;if(oe=ke<<1,oe-Fe>32&&il)return il.decode(it.subarray(Fe,oe));for(var de="",Re=0;!(Re>=ze/2);++Re){var bt=Ge[Fe+Re*2>>1];if(bt==0)break;de+=String.fromCharCode(bt)}return de}function ol(Fe,ze,oe){if(oe===void 0&&(oe=2147483647),oe<2)return 0;oe-=2;for(var ke=ze,s=oe>1]=Re,ze+=2}return Ge[ze>>1]=0,ze-ke}function sl(Fe){return Fe.length*2}function Ul(Fe,ze){for(var oe=0,ke="";!(oe>=ze/4);){var s=qe[Fe+oe*4>>2];if(s==0)break;if(++oe,s>=65536){var de=s-65536;ke+=String.fromCharCode(55296|de>>10,56320|de&1023)}else ke+=String.fromCharCode(s)}return ke}function T1(Fe,ze,oe){if(oe===void 0&&(oe=2147483647),oe<4)return 0;for(var ke=ze,s=ke+oe-4,de=0;de=55296&&Re<=57343){var bt=Fe.charCodeAt(++de);Re=65536+((Re&1023)<<10)|bt&1023}if(qe[ze>>2]=Re,ze+=4,ze+4>s)break}return qe[ze>>2]=0,ze-ke}function E1(Fe){for(var ze=0,oe=0;oe=55296&&ke<=57343&&++oe,ze+=4}return ze}function al(Fe,ze,oe){oe=Co(oe);var ke,s,de,Re,bt;ze===2?(ke=Vl,s=ol,Re=sl,de=()=>Ke,bt=1):ze===4&&(ke=Ul,s=T1,Re=E1,de=()=>ut,bt=2),yr(Fe,{name:oe,fromWireType:function(Qt){for(var Ae=ut[Qt>>2],Qe=de(),tt,xt=Qt+4,Kt=0;Kt<=Ae;++Kt){var fn=Qt+4+Kt*ze;if(Kt==Ae||Qe[fn>>bt]==0){var Bn=fn-xt,dt=ke(xt,Bn);tt===void 0?tt=dt:(tt+="\0",tt+=dt),xt=fn+ze}}return dn(Qt),tt},toWireType:function(Qt,Ae){typeof Ae!="string"&&pn("Cannot pass non-string to C++ string type "+oe);var Qe=Re(Ae),tt=It(4+Qe+ze);return ut[tt>>2]=Qe>>bt,s(Ae,tt+4,Qe+ze),Qt!==null&&Qt.push(dn,tt),tt},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:function(Qt){dn(Qt)}})}function X2(Fe,ze,oe,ke,s,de){T0[Fe]={name:Co(ze),rawConstructor:co(oe,ke),rawDestructor:co(s,de),fields:[]}}function D1(Fe,ze,oe,ke,s,de,Re,bt,Qt,Ae){T0[Fe].fields.push({fieldName:Co(ze),getterReturnType:oe,getter:co(ke,s),getterContext:de,setterArgumentType:Re,setter:co(bt,Qt),setterContext:Ae})}function ll(Fe,ze){ze=Co(ze),yr(Fe,{isVoid:!0,name:ze,argPackAdvance:0,fromWireType:function(){},toWireType:function(oe,ke){}})}function I1(Fe){Fe>4&&(bo[Fe].refcount+=1)}function O1(Fe,ze){var oe=Tr[Fe];return oe===void 0&&pn(ze+" has unknown type "+rs(Fe)),oe}function ul(Fe,ze){Fe=O1(Fe,"_emval_take_value");var oe=Fe.readValueFromPointer(ze);return F2.toHandle(oe)}function cl(){Hn("")}function Bl(Fe,ze,oe){it.copyWithin(Fe,ze,ze+oe)}function Gl(){return 2147483648}function Y2(Fe){try{return ne.grow(Fe-je.byteLength+65535>>>16),qt(ne.buffer),1}catch{}}function M1(Fe){var ze=it.length;Fe=Fe>>>0;var oe=Gl();if(Fe>oe)return!1;let ke=(Qt,Ae)=>Qt+(Ae-Qt%Ae)%Ae;for(var s=1;s<=4;s*=2){var de=ze*(1+.2/s);de=Math.min(de,Fe+100663296);var Re=Math.min(oe,ke(Math.max(Fe,de),65536)),bt=Y2(Re);if(bt)return!0}return!1}function u2(Fe){return 52}function _2(Fe,ze,oe,ke,s){return 70}var Na=[null,[],[]];function x2(Fe,ze){var oe=Na[Fe];ze===0||ze===10?((Fe===1?K:X)(pe(oe,0)),oe.length=0):oe.push(ze)}function J2(Fe,ze,oe,ke){for(var s=0,de=0;de>2],bt=ut[ze+4>>2];ze+=8;for(var Qt=0;Qt>2]=s,0}function Ws(Fe){return Fe}function ka(Fe){var ze=c["_"+Fe];return ze}function V2(Fe,ze){Je.set(Fe,ze)}function P1(Fe,ze,oe,ke,s){var de={string:fn=>{var Bn=0;if(fn!=null&&fn!==0){var dt=(fn.length<<2)+1;Bn=sn(dt),Ve(fn,Bn,dt)}return Bn},array:fn=>{var Bn=sn(fn.length);return V2(fn,Bn),Bn}};function Re(fn){return ze==="string"?we(fn):ze==="boolean"?!!fn:fn}var bt=ka(Fe),Qt=[],Ae=0;if(ke)for(var Qe=0;Qe0||(xn(),St>0))return;function ze(){ot||(ot=!0,c.calledRun=!0,!le&&(et(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Me()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),ze()},1)):ze()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return nt(),c.ready}})();n.exports=o})(bJ);var iEe=bJ.exports;const oEe=yf(iEe),sEe=new URL("/static/dv3d/assets/openjphjs-C-BUUy4a.wasm",import.meta.url),Y3={codec:void 0,decoder:void 0,decodeConfig:{}};function aEe(n,e,o){const i={width:e,height:o};for(;n>0;)i.width=Math.ceil(i.width/2),i.height=Math.ceil(i.height/2),n--;return i}function lEe(n){if(Y3.decodeConfig=n,Y3.codec)return Promise.resolve();const e=oEe({locateFile:o=>o.endsWith(".wasm")?sEe.toString():o});return new Promise((o,i)=>{e.then(l=>{Y3.codec=l,Y3.decoder=new l.HTJ2KDecoder,o()},i)})}async function uEe(n,e){await lEe();const o=new Y3.codec.HTJ2KDecoder,i=o.getEncodedBuffer(n.length);i.set(n);const l=e.decodeLevel||0;o.decodeSubResolution(l);const c=o.getFrameInfo();if(e.decodeLevel>0){const{width:ge,height:pe}=aEe(e.decodeLevel,c.width,c.height);c.width=ge,c.height=pe}const g=o.getDecodedBuffer();new Uint8Array(g.length).set(g);const _=`x: ${o.getImageOffset().x}, y: ${o.getImageOffset().y}`,T=o.getNumDecompositions(),P=o.getNumLayers(),I=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][o.getProgressionOrder()+1],R=o.getIsReversible(),L=`${o.getBlockDimensions().width} x ${o.getBlockDimensions().height}`,V=`${o.getTileSize().width} x ${o.getTileSize().height}`,U=`${o.getTileOffset().x}, ${o.getTileOffset().y}`,j=`${g.length.toLocaleString()} bytes`,z=`${(g.length/i.length).toFixed(2)}:1`,$={columns:c.width,rows:c.height,bitsPerPixel:c.bitsPerSample,signed:c.isSigned,bytesPerPixel:e.bytesPerPixel,componentsPerPixel:c.componentCount};let K=cEe(c,g);const{buffer:X,byteOffset:ee,byteLength:ne}=K,le=X.slice(ee,ee+ne);K=new K.constructor(le);const ce={imageOffset:_,numDecompositions:T,numLayers:P,progessionOrder:I,reversible:R,blockDimensions:L,tileSize:V,tileOffset:U,decodedSize:j,compressionRatio:z};return{...e,pixelData:K,imageInfo:$,encodeOptions:ce,...ce,...$}}function cEe(n,e){return n.bitsPerSample>8?n.isSigned?new Int16Array(e.buffer,e.byteOffset,e.byteLength/2):new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2):n.isSigned?new Int8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function fEe(n,e){const o=n.length,{rescaleSlope:i,rescaleIntercept:l,suvbw:c,doseGridScaling:g}=e;if(e.modality==="PT"&&typeof c=="number"&&!isNaN(c))for(let v=0;v>c;let g=n.pixelData;n.pixelDataLength=n.pixelData.length;const{min:v,max:_}=m_(n.pixelData),T=typeof e.allowFloatRendering<"u"?e.allowFloatRendering:!0;let P=GP(n.photometricInterpretation)&&(($=e.targetBuffer)==null?void 0:$.offset)===void 0;const R=((K=e.preScale)==null?void 0:K.enabled)&&Object.values(e.preScale.scalingParameters).some(ee=>typeof ee=="number"&&!Number.isInteger(ee)),L=!e.preScale.enabled||!T&&R,V=(X=e.targetBuffer)==null?void 0:X.type;if(V&&e.preScale.enabled&&!L){const ee=e.preScale.scalingParameters,ne=ND(v,_,ee);P=!zSe(ne.min,ne.max,aF[V])}V&&!P?g=pEe(e,n,aF,g):e.preScale.enabled&&!L?g=mEe(e,v,_,n):g=FJ(v,_,n);let U=v,j=_;if(e.preScale.enabled&&!L){const ee=e.preScale.scalingParameters;if(VJ(ee),gEe(ee)){fEe(g,ee),n.preScale={...e.preScale,scaled:!0};const le=ND(v,_,ee);U=le.min,j=le.max}}else L&&(n.preScale={enabled:!0,scaled:!1},U=v,j=_);n.pixelData=g,n.smallestPixelValue=U,n.largestPixelValue=j;const z=new Date().getTime();return n.decodeTimeInMS=z-o,n}function gEe(n){const{rescaleSlope:e,rescaleIntercept:o,modality:i,doseGridScaling:l,suvbw:c}=n;return typeof e=="number"&&typeof o=="number"||i==="RTDOSE"&&typeof l=="number"||i==="PT"&&typeof c=="number"}function pEe(n,e,o,i){const{arrayBuffer:l,type:c,offset:g=0,length:v,rows:_}=n.targetBuffer,T=o[c];if(!T)throw new Error(`target array ${c} is not supported, or doesn't exist.`);_&&_!=e.rows&&kEe(e,n.targetBuffer,T);const P=e.pixelDataLength,I=g,R=v??P-I,L=e.pixelData;if(R!==L.length)throw new Error(`target array for image does not have the same length (${R}) as the decoded image length (${L.length}).`);const V=l?new T(l,I,R):new T(R);return V.set(L,0),i=V,i}function mEe(n,e,o,i){const l=n.preScale.scalingParameters;VJ(l);const c=ND(e,o,l);return FJ(c.min,c.max,i)}function FJ(n,e,o){const i=WP(n,e),l=new i(o.pixelData.length);return l.set(o.pixelData,0),l}function ND(n,e,o){const{rescaleSlope:i,rescaleIntercept:l,modality:c,doseGridScaling:g,suvbw:v}=o;return c==="PT"&&typeof v=="number"&&!isNaN(v)?{min:v*(n*i+l),max:v*(e*i+l)}:c==="RTDOSE"&&typeof g=="number"&&!isNaN(g)?{min:n*g,max:e*g}:typeof i=="number"&&typeof l=="number"?{min:i*n+l,max:i*e+l}:{min:n,max:e}}function VJ(n){if(!n)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}function vEe(n,e,o){const{samplesPerPixel:i}=n,{rows:l,columns:c}=e,g=l*c*i,v=new o(g),_=v.byteLength/g;return{pixelData:v,rows:l,columns:c,frameInfo:{...n.frameInfo,rows:l,columns:c},imageInfo:{...n.imageInfo,rows:l,columns:c,bytesPerPixel:_}}}function kEe(n,e,o){const i=vEe(n,e,o),{scalingType:l="replicate"}=e;return hEe[l](n,i),Object.assign(n,i),n.pixelDataLength=n.pixelData.length,n}async function UJ(n,e,o,i,l,c){const g=new Date().getTime();let v=null,_;switch(e){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":v=nF(n,o);break;case"1.2.840.10008.1.2.2":v=PTe(n,o);break;case"1.2.840.10008.1.2.1.99":v=nF(n,o);break;case"1.2.840.10008.1.2.5":v=RTe(n,o);break;case"1.2.840.10008.1.2.4.50":_={...n},v=BTe(o,_);break;case"1.2.840.10008.1.2.4.51":v=zTe(n,o);break;case"1.2.840.10008.1.2.4.57":v=iF(n,o);break;case"1.2.840.10008.1.2.4.70":v=iF(n,o);break;case"1.2.840.10008.1.2.4.80":_={signed:n.pixelRepresentation===1,bytesPerPixel:n.bitsAllocated<=8?1:2,...n},v=oF(o,_);break;case"1.2.840.10008.1.2.4.81":_={signed:n.pixelRepresentation===1,bytesPerPixel:n.bitsAllocated<=8?1:2,...n},v=oF(o,_);break;case"1.2.840.10008.1.2.4.90":_={...n},v=sF(o,_);break;case"1.2.840.10008.1.2.4.91":_={...n},v=sF(o,_);break;case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":_={...n},v=uEe(o,_);break;default:throw new Error(`no decoder for transfer syntax ${e}`)}if(!v)throw new Error("decodePromise not defined");const T=await v,P=dEe(T,l,g);return c==null||c(P),P}const yEe={decodeTask({imageFrame:n,transferSyntax:e,decodeConfig:o,options:i,pixelData:l,callbackFn:c}){return UJ(n,e,l,o,i,c)}};RO(yEe);const lF={constants:DTe,convertRGBColorByPixel:qY,convertRGBColorByPlane:XY,convertYBRFullByPixel:YY,convertYBRFullByPlane:JY,convertPALETTECOLOR:ZY,wadouri:YSe,wadors:CTe,init:PJ,convertColorSpace:vJ,createImage:v_,decodeJPEGBaseline8BitColor:kJ,getImageFrame:yJ,getPixelData:HP,getMinMax:m_,isColorImage:GP,isJPEGBaseline8BitColor:TTe,internal:fSe,decodeImageFrame:UJ};class Dv extends Ih{}cR(Dv,"toolName","NoLabelArrowAnnotate");var wEe={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(Qe,tt){g=Qe,v=tt});var _=Object.assign({},c),T="./this.program",P=(Qe,tt)=>{throw tt},I=typeof window=="object",R=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",V=!I&&!L&&!R,U="";function j(Qe){return c.locateFile?c.locateFile(Qe,U):U+Qe}var z,$,K;if(L){var X=p1,ee=p1;R?U=ee.dirname(U)+"/":U=__dirname+"/",z=(Qe,tt)=>(Qe=Ir(Qe)?new URL(Qe):ee.normalize(Qe),X.readFileSync(Qe,tt?void 0:"utf8")),K=Qe=>{var tt=z(Qe,!0);return tt.buffer||(tt=new Uint8Array(tt)),tt},$=(Qe,tt,xt)=>{Qe=Ir(Qe)?new URL(Qe):ee.normalize(Qe),X.readFile(Qe,function(Kt,fn){Kt?xt(Kt):tt(fn.buffer)})},process.argv.length>1&&(T=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(Qe){if(!(Qe instanceof Cr))throw Qe}),process.on("unhandledRejection",function(Qe){throw Qe}),P=(Qe,tt)=>{throw process.exitCode=Qe,tt},c.inspect=function(){return"[Emscripten Module object]"}}else(I||R)&&(R?U=self.location.href:typeof document<"u"&&document.currentScript&&(U=document.currentScript.src),i&&(U=i),U.indexOf("blob:")!==0?U=U.substr(0,U.replace(/[?#].*/,"").lastIndexOf("/")+1):U="",z=Qe=>{var tt=new XMLHttpRequest;return tt.open("GET",Qe,!1),tt.send(null),tt.responseText},R&&(K=Qe=>{var tt=new XMLHttpRequest;return tt.open("GET",Qe,!1),tt.responseType="arraybuffer",tt.send(null),new Uint8Array(tt.response)}),$=(Qe,tt,xt)=>{var Kt=new XMLHttpRequest;Kt.open("GET",Qe,!0),Kt.responseType="arraybuffer",Kt.onload=()=>{if(Kt.status==200||Kt.status==0&&Kt.response){tt(Kt.response);return}xt()},Kt.onerror=xt,Kt.send(null)});var ne=c.print||console.log.bind(console),le=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&(T=c.thisProgram),c.quit&&(P=c.quit);var ce;c.wasmBinary&&(ce=c.wasmBinary),c.noExitRuntime;var ge={Memory:function(Qe){this.buffer=new ArrayBuffer(Qe.initial*65536)},Module:function(Qe){},Instance:function(Qe,tt){this.exports=function(Kt){function fn(Rr){return Rr.set=function(ri,R1){this[ri]=R1},Rr.get=function(ri){return this[ri]},Rr}var Bn=new ArrayBuffer(16),dt=new Int32Array(Bn),tn=new Float32Array(Bn),t=new Float64Array(Bn);function xe(Rr){return dt[Rr]}function Qn(Rr,ri){dt[Rr]=ri}function ln(){return t[0]}function Ue(Rr){t[0]=Rr}function mr(){throw new Error("abort")}function De(Rr){tn[2]=Rr}function Ye(Rr){var ri=Rr.a,R1=ri.a,ps=R1.buffer;R1.grow=_x;var F=new Int8Array(ps),He=new Int16Array(ps),r=new Int32Array(ps),te=new Uint8Array(ps),En=new Uint16Array(ps),ni=new Uint32Array(ps),or=new Float32Array(ps),In=new Float64Array(ps),Ce=Math.imul,On=Math.fround,U2=Math.abs,Q0=Math.clz32,Lh=1/0,Qs=ri.b,Z2=ri.c,fl=ri.d,fu=ri.e,Fu=ri.f,_c=ri.g,xc=ri.h,Nh=ri.i,bh=ri.j,d4=ri.k,sp=ri.l,ap=ri.m,lp=ri.n,up=ri.o,cp=ri.p,fp=ri.q,hp=ri.r,dp=ri.s,gp=ri.t,g4=ri.u,p4=ri.v,h5=ri.w,Nt=ri.x,Vu=ri.y,hu=ri.z,Gi=ri.A,Sc=ri.B,hl=ri.C,Fh=ri.D,xf=ri.E,Tc=ri.F,du=ri.G,pp=ri.H,S2=ri.I,mp=ri.J,Ec=ri.K,vp=ri.L,Dc=ri.M,kp=ri.N,hn=215824,Mi=0,Pi=0;function $s(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;ve=hn-560|0,hn=ve,We=r[h+364>>2],a=r[h+24>>2],r[ve>>2]=r[a>>2],r[ve+4>>2]=r[a+4>>2],a=r[We+28>>2],r[ve+16>>2]=r[We+24>>2],r[ve+20>>2]=a,a=r[We+36>>2],r[ve+24>>2]=r[We+32>>2],r[ve+28>>2]=a,a=r[We+44>>2],r[ve+32>>2]=r[We+40>>2],r[ve+36>>2]=a,a=r[We+20>>2],r[ve+8>>2]=r[We+16>>2],r[ve+12>>2]=a,r[ve+40>>2]=h,r[ve+44>>2]=r[We+120>>2];e:{t:{if(r[We+48>>2]|!r[h+200>>2])break t;if(D=r[We+52>>2],!b4(ve))break e;a=r[ve>>2],r[ve>>2]=a+1,F[a|0]=255,a=r[ve+4>>2]-1|0,r[ve+4>>2]=a;n:{if(a){p=r[ve>>2];break n}if(p=r[ve+40>>2],a=r[p+24>>2],!(Ie[r[a+12>>2]](p)|0))break e;p=r[a>>2],r[ve+4>>2]=r[a+4>>2]}if(r[ve>>2]=p+1,F[p|0]=D-48,p=r[ve+4>>2]-1|0,r[ve+4>>2]=p,a=r[ve+40>>2],!p){if(p=r[a+24>>2],!(Ie[r[p+12>>2]](a)|0))break e;r[ve>>2]=r[p>>2],r[ve+4>>2]=r[p+4>>2]}if(r[a+244>>2]<=0)break t;for(;r[((lt<<2)+ve|0)+20>>2]=0,lt=lt+1|0,(lt|0)>2];);}a=r[h+272>>2];t:{n:{if(r[We+120>>2]){if((a|0)<=0)break n;for(;;){a=C<<2,B=a+d|0,mt=(r[(h+a|0)+276>>2]<<2)+ve|0;r:{if(ni[ve+4>>2]<=511){if(p=-48-ve|0,!p)break r;for(D=ve+48|0,q=r[ve>>2],b=r[ve+4>>2];;){if(a=p>>>0>>0?p:b,D0(q,D,a),q=a+r[ve>>2]|0,r[ve>>2]=q,Z=r[ve+4>>2],b=Z-a|0,r[ve+4>>2]=b,(a|0)==(Z|0)){if(q=r[ve+40>>2],b=r[q+24>>2],!(Ie[r[b+12>>2]](q)|0))break t;q=r[b>>2],r[ve>>2]=q,b=r[b+4>>2],r[ve+4>>2]=b}if(D=a+D|0,p=p-a|0,!p)break}break r}a=r[ve>>2],r[ve>>2]=0,r[ve+4>>2]=a+r[ve+4>>2]}if(r[mt+20>>2]=He[r[B>>2]>>1],C=C+1|0,!((C|0)>2]))break}break n}if(lt=0,(a|0)<=0)break n;for(;;){a=lt<<2,Mt=a+d|0,Se=r[Mt>>2],a=r[(h+a|0)+276>>2]<<2,Ht=a+ve|0,p=r[Ht+20>>2],a=r[(h+a|0)+248>>2],C=r[((r[a+20>>2]<<2)+We|0)+56>>2],Z=r[((r[a+24>>2]<<2)+We|0)+72>>2],mt=hn-512|0,hn=mt,D=r[ve+16>>2],a=mt,on=r[ve+4>>2],a=on>>>0>=512?r[ve>>2]:a,q=r[ve+8>>2],p=He[Se>>1]-p|0,b=p>>31,B=b,b=p+b|0,p=te[(B^b)+11024|0],b=(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=q<>1];r:{if(!p){q=b,p=16;break r}if(C=p,p=p>>31,C=C+p|0,p=te[(p^C)+11024|0],q=C&(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}q=b<>1];r:{if(!C){b=q,p=p+16|0;break r}if(D=C>>31,C=D+C|0,b=p,p=te[(C^D)+11024|0],D=b+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=q<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,p=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}b=D<>1];r:{if(!C){D=b,p=p+16|0;break r}if(D=C>>31,C=D+C|0,q=p,p=te[(C^D)+11024|0],q=q+p|0,D=(-1<>2]<>0-p,b=C>>>24|0,F[a|0]=b;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,p=0;break r}D=b<>1];r:{if(!C){b=D,q=p+16|0;break r}if(b=C>>31,C=b+C|0,q=p,p=te[(C^b)+11024|0],q=q+p|0,b=(-1<>2]<>0-p,D=C>>>24|0,F[a|0]=D;i:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break i}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}B=p+32|0,q=0;break r}b=D<>1],p){C=p,p=p>>31,fe=C+p|0,D=te[(p^fe)+11024|0];r:{if(q>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],q=F[Z+1264|0],p=B-q|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B;break r}C=r[Z+960>>2],D=D-256|0,ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,b=r[Z+960>>2];break i}b=C|b<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,fe=C+p|0,q=te[(p^fe)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}C=r[Z+960>>2],ae=F[Z+1264|0],p=B-ae|0;i:{if((p|0)<0){C=b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2];break i}C=C|b<>>0<512){D=D-256|0;break r}if(D=D-512|0,B=r[Z+960>>2],ae=F[Z+1264|0],b=p-ae|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+q|0,b=fe&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1];r:{if(!C)break r;p=C>>31,ae=p+C|0,fe=te[(p^ae)+11024|0];i:{if(D>>>0<256){p=B,C=b;break i}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;a:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;s:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break s}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break a}C=p|b<>>0<512){p=q,D=b;break i}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;a:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;s:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break s}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break i}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}if(D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0,p=0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1],p){C=p,p=p>>31,ae=C+p|0,fe=te[(p^ae)+11024|0];r:{if(D>>>0<256){p=B,C=b;break r}p=r[Z+960>>2],C=F[Z+1264|0],q=B-C|0;i:{if((q|0)<0){p=b<>>0-q,C=p>>>24|0,F[a|0]=C;a:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break a}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}q=q+32|0,C=r[Z+960>>2];break i}C=p|b<>>0<512){p=q,D=b;break r}B=r[Z+960>>2],Le=F[Z+1264|0],p=q-Le|0;i:{if((p|0)>=0){C=B|C<>>0-p,B=C>>>24|0,F[a|0]=B;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((B|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}p=p+32|0,C=r[Z+960>>2]}if(b>>>0<512){D=D-512|0;break r}if(D=D-768|0,B=r[Z+960>>2],q=F[Z+1264|0],b=p-q|0,(b|0)>=0){C=B|C<>>0-b,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}p=b+32|0,C=r[Z+960>>2]}D=D+fe|0,b=ae&(-1<>2]<>0-B,C=p>>>24|0,F[a|0]=C;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((C|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}B=B+32|0;break r}b=C<>1];r:{if(p){C=p,p=p>>31,fe=C+p|0,Se=te[(p^fe)+11024|0];i:{if(D>>>0<256){q=B;break i}p=r[Z+960>>2],q=F[Z+1264|0],C=B-q|0;a:{if((C|0)<0){p=b<>>0-C,b=p>>>24|0,F[a|0]=b;s:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break s}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}C=C+32|0,b=r[Z+960>>2];break a}b=p|b<>>0<512){q=C,D=p;break i}B=r[Z+960>>2],ae=F[Z+1264|0],q=C-ae|0;a:{if((q|0)>=0){b=B|b<>>0-q,b=C>>>24|0,F[a|0]=b;s:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break s}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}q=q+32|0,b=r[Z+960>>2]}if(p>>>0<512){D=D-512|0;break i}if(D=D-768|0,C=r[Z+960>>2],B=F[Z+1264|0],p=q-B|0,(p|0)>=0){b=C|b<>>0-p,b=C>>>24|0,F[a|0]=b;a:{if(C&-16843010-C&-2139062144){F[a+1|0]=0,a=((b|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=C>>>16,a=a+((C&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=C>>>8,a=a+((C&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=C,a=a+((C&255)==255?2:1)|0;break a}F[a+3|0]=C,F[a+2|0]=C>>>8,F[a+1|0]=C>>>16,a=a+4|0}q=p+32|0,b=r[Z+960>>2]}if(p=D+Se|0,B=fe&(-1<>2]<>0-C,D=p>>>24|0,F[a|0]=D;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}C=C+32|0;break r}B=b<>2],D=F[Z+1024|0],C=B-D|0,(C|0)<0){p=b<>>0-C,D=p>>>24|0,F[a|0]=D;i:{if(p&-16843010-p&-2139062144){F[a+1|0]=0,a=((D|0)==255?2:1)+a|0,F[a+1|0]=0,F[a|0]=p>>>16,a=a+((p&16711680)==16711680?2:1)|0,F[a+1|0]=0,F[a|0]=p>>>8,a=a+((p&65280)==65280?2:1)|0,F[a+1|0]=0,F[a|0]=p,a=a+((p&255)==255?2:1)|0;break i}F[a+3|0]=p,F[a+2|0]=p>>>8,F[a+1|0]=p>>>16,a=a+4|0}C=C+32|0,B=r[Z>>2];break r}B=p|b<>2]=C,r[ve+8>>2]=B;r:{if(on>>>0<=511){if(D=1,B=a-mt|0,!B)break r;for(b=mt;;){if(a=r[ve+4>>2],a=a>>>0>B>>>0?B:a,D0(r[ve>>2],b,a),r[ve>>2]=a+r[ve>>2],p=r[ve+4>>2],r[ve+4>>2]=p-a,(a|0)==(p|0)){if(C=r[ve+40>>2],p=r[C+24>>2],!(Ie[r[p+12>>2]](C)|0)){D=0;break r}r[ve>>2]=r[p>>2],r[ve+4>>2]=r[p+4>>2]}if(b=a+b|0,B=B-a|0,!B)break}break r}p=r[ve>>2],r[ve>>2]=a,r[ve+4>>2]=r[ve+4>>2]+(p-a|0),D=1}if(hn=mt+512|0,!D)break t;if(r[Ht+20>>2]=He[r[Mt>>2]>>1],lt=lt+1|0,!((lt|0)>2]))break}}if(d=r[h+24>>2],r[d>>2]=r[ve>>2],r[d+4>>2]=r[ve+4>>2],d=r[ve+36>>2],r[We+40>>2]=r[ve+32>>2],r[We+44>>2]=d,d=r[ve+28>>2],r[We+32>>2]=r[ve+24>>2],r[We+36>>2]=d,d=r[ve+20>>2],r[We+24>>2]=r[ve+16>>2],r[We+28>>2]=d,d=r[ve+12>>2],r[We+16>>2]=r[ve+8>>2],r[We+20>>2]=d,lt=1,h=r[h+200>>2],!h)break e;d=r[We+48>>2],d?h=d:r[We+52>>2]=r[We+52>>2]+1&7,r[We+48>>2]=h-1;break e}lt=0}return hn=ve+560|0,lt|0}function m4(h,d,a){var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;Q=hn-16|0,hn=Q,r[Q+12>>2]=a,D=hn-144|0,hn=D,C=k(D,0,144),r[C+76>>2]=-1,r[C+44>>2]=h,r[C+32>>2]=294,r[C+84>>2]=h,b=d,G=a,h=0,mt=hn-304|0,hn=mt;e:{t:{n:{r:{if(r[C+4>>2]||(_k(C),r[C+4>>2]))break r;break n}if(d=te[b|0],!d)break e;r:{i:{a:{s:{for(;;){o:{d=d&255;u:{if((d|0)==32|d-9>>>0<5){for(;d=b,b=b+1|0,a=te[d+1|0],!!((a|0)==32|a-9>>>0<5););for(yu(C,0,0);;){a=r[C+4>>2];l:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break l}a=M0(C)}if(!((a|0)==32|a-9>>>0<5))break}b=r[C+4>>2],a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(b=b-1|0,r[C+4>>2]=b),a=b-r[C+44>>2]|0,D=a,ae=S+r[C+124>>2]|0,b=a>>31,a=x+r[C+120>>2]|0,ae=b+(a>>>0>>0?ae+1|0:ae)|0,x=a+D|0,S=x>>>0>>0?ae+1|0:ae;break u}l:{h:{f:{if(te[b|0]==37){if(d=te[b+1|0],(d|0)==42)break f;if((d|0)!=37)break h}yu(C,0,0);p:{if(te[b|0]==37){for(;;){d=r[C+4>>2];c:{if((d|0)!=r[C+104>>2]){r[C+4>>2]=d+1,d=te[d|0];break c}d=M0(C)}if(!((d|0)==32|d-9>>>0<5))break}b=b+1|0;break p}if(d=r[C+4>>2],(d|0)!=r[C+104>>2]){r[C+4>>2]=d+1,d=te[d|0];break p}d=M0(C)}if(te[b|0]!=(d|0)){if(a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),(d|0)>=0||(Le=0,H))break e;break n}d=r[C+4>>2]-r[C+44>>2]|0,D=d,ae=S+r[C+124>>2]|0,d=x+r[C+120>>2]|0,a=(D>>31)+(d>>>0>>0?ae+1|0:ae)|0,x=d+D|0,S=x>>>0>>0?a+1|0:a,d=b;break u}Zt=0,d=b+2|0;break l}if(!(te[b+2|0]!=36|d-48>>>0>=10)){d=te[b+1|0]-48|0,a=hn-16|0,r[a+12>>2]=G,d=(d>>>0>1?(d<<2)-4|0:0)+G|0,r[a+8>>2]=d+4,Zt=r[d>>2],d=b+3|0;break l}Zt=r[G>>2],G=G+4|0,d=b+1|0}if(M=0,b=0,te[d|0]-48>>>0<10)for(;b=(te[d|0]+Ce(b,10)|0)-48|0,a=te[d+1|0],d=d+1|0,a-48>>>0<10;);D=te[d|0],(D|0)==109&&(Er=0,M=(Zt|0)!=0,D=te[d+1|0],h=0,d=d+1|0),a=d,d=a+1|0,fe=3,Le=M;l:{h:switch(D-65|0){case 39:D=a+2|0,a=te[a+1|0]==104,d=a?D:d,fe=a?-2:-1;break l;case 43:D=a+2|0,a=te[a+1|0]==108,d=a?D:d,fe=a?3:1;break l;case 51:case 57:fe=1;break l;case 11:fe=2;break l;case 41:break l;case 0:case 2:case 4:case 5:case 6:case 18:case 23:case 26:case 32:case 34:case 35:case 36:case 37:case 38:case 40:case 45:case 46:case 47:case 50:case 52:case 55:break h;default:break r}fe=0,d=a}a=te[d|0],D=(a&47)==3,B=D?1:fe,ve=D?a|32:a;l:{if((ve|0)==91)break l;h:{if((ve|0)!=110){if((ve|0)!=99)break h;b=(b|0)<=1?1:b;break l}Jo(Zt,B,x,S);break u}for(yu(C,0,0);;){a=r[C+4>>2];h:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break h}a=M0(C)}if(!((a|0)==32|a-9>>>0<5))break}a=r[C+4>>2],D=r[C+116>>2],(D|0)>0|(D|0)>=0&&(a=a-1|0,r[C+4>>2]=a),a=a-r[C+44>>2]|0,D=a,ae=S+r[C+124>>2]|0,fe=a>>31,a=x+r[C+120>>2]|0,Z=fe+(a>>>0>>0?ae+1|0:ae)|0,x=a+D|0,S=x>>>0>>0?Z+1|0:Z}We=b,wn=b>>31,yu(C,b,wn),a=r[C+4>>2];l:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1;break l}if((M0(C)|0)<0)break i}a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),a=16;l:{h:{f:{p:{c:switch(ve-88|0){default:if(a=ve-65|0,a>>>0>6|!(1<>>0<=2){for(a=re<<2,O=r[a+146412>>2],A=r[a+146400>>2];;){a=r[C+4>>2];g:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break g}a=M0(C)}if(!((a|0)==32|a-9>>>0<5))break}b=1;g:{d:switch(a-43|0){case 0:case 2:break d;default:break g}if(b=(a|0)==45?-1:1,a=r[C+4>>2],(a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break g}a=M0(C)}g:{d:{for(;;){if(F[ve+1024|0]==(a|32)){v:{if(ve>>>0>6)break v;if(a=r[C+4>>2],(a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break v}a=M0(C)}if(ve=ve+1|0,(ve|0)!=8)continue;break d}break}if((ve|0)!=3){if((ve|0)==8)break d;break g}a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1)}Se=hn-16|0,hn=Se,We=(De(On(On(b|0)*On(Lh))),xe(2)),q=We&2147483647;d:{if(q-8388608>>>0<=2130706431){b=q<<25,a=(q>>>7|0)+1065353216|0;break d}if(b=We<<25,a=We>>>7|2147418112,q>>>0>=2139095040||(b=0,a=0,!q))break d;a=Q0(q),K0(Se,q,0,0,0,a+81|0),D=r[Se>>2],Z=r[Se+4>>2],b=r[Se+8>>2],a=r[Se+12>>2]^65536|16265-a<<16}r[Ht>>2]=D,r[Ht+4>>2]=Z,r[Ht+8>>2]=b,r[Ht+12>>2]=We&-2147483648|a,hn=Se+16|0,D=r[Ht+8>>2],Z=r[Ht+12>>2],q=r[Ht>>2],ae=r[Ht+4>>2];break m}g:{d:{v:{if(ve)break v;for(ve=0;;){if(F[ve+4270|0]!=(a|32))break v;k:{if(ve>>>0>1)break k;if(a=r[C+4>>2],(a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break k}a=M0(C)}if(ve=ve+1|0,(ve|0)==3)break}break d}v:switch(ve|0){case 0:k:{if((a|0)!=48)break k;ve=r[C+4>>2];y:{if((ve|0)!=r[C+104>>2]){r[C+4>>2]=ve+1,ve=te[ve|0];break y}ve=M0(C)}if((ve&-33)==88){B=hn-432|0,hn=B,a=r[C+4>>2];y:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,ve=te[a|0];break y}ve=M0(C)}y:{w:{for(;;){if((ve|0)!=48)C:{if((ve|0)!=46)break y;if(a=r[C+4>>2],(a|0)==r[C+104>>2])break C;r[C+4>>2]=a+1,ve=te[a|0];break w}else{a=r[C+4>>2],(a|0)!=r[C+104>>2]?(r[C+4>>2]=a+1,ve=te[a|0]):ve=M0(C),Le=1;continue}break}ve=M0(C)}if(fe=1,(ve|0)!=48)break y;for(;;){a=We,We=a-1|0,an=an-!a|0,a=r[C+4>>2];w:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,ve=te[a|0];break w}ve=M0(C)}if((ve|0)!=48)break}Le=1}for(ae=1073676288;;){y:{a=ve|32;w:{C:{if(Y=ve-48|0,Y>>>0<10)break C;if((ve|0)!=46&a-97>>>0>=6)break y;if((ve|0)!=46)break C;if(fe)break y;fe=1,We=D,an=Z;break w}a=(ve|0)>57?a-87|0:Y;C:{if((Z|0)<=0&D>>>0<=7|(Z|0)<0){ur=a+(ur<<4)|0;break C}if(!Z&D>>>0<=28){e1(B+48|0,a),eo(B+32|0,u,y,q,ae,0,0,0,1073414144),u=r[B+32>>2],y=r[B+36>>2],q=r[B+40>>2],ae=r[B+44>>2],eo(B+16|0,r[B+48>>2],r[B+52>>2],r[B+56>>2],r[B+60>>2],u,y,q,ae),Vn(B,r[B+16>>2],r[B+20>>2],r[B+24>>2],r[B+28>>2],Se,Mt,wn,m),wn=r[B+8>>2],m=r[B+12>>2],Se=r[B>>2],Mt=r[B+4>>2];break C}if(on|!a)break C;eo(B+80|0,u,y,q,ae,0,0,0,1073610752),Vn(B- -64|0,r[B+80>>2],r[B+84>>2],r[B+88>>2],r[B+92>>2],Se,Mt,wn,m),wn=r[B+72>>2],m=r[B+76>>2],on=1,Se=r[B+64>>2],Mt=r[B+68>>2]}D=D+1|0,Z=D?Z:Z+1|0,Le=1}a=r[C+4>>2],(a|0)!=r[C+104>>2]?(r[C+4>>2]=a+1,ve=te[a|0]):ve=M0(C);continue}break}y:{if(!Le){a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),yu(C,0,0),ii(B+96|0,+(b|0)*0),Se=r[B+96>>2],Mt=r[B+100>>2],D=r[B+108>>2],a=r[B+104>>2];break y}if((Z|0)<=0&D>>>0<=7|(Z|0)<0)for(q=D,ae=Z;ur=ur<<4,q=q+1|0,ae=q?ae:ae+1|0,!!((q|0)!=8|ae););w:{if((ve&-33)==80){if(q=Up(C),a=Pi,ae=a,q|(a|0)!=-2147483648)break w;Se=0,Mt=0,yu(C,0,0),D=0,a=0;break y}if(q=0,ae=0,r[C+116>>2]<0)break w;r[C+4>>2]=r[C+4>>2]-1}if(!ur){ii(B+112|0,+(b|0)*0),Se=r[B+112>>2],Mt=r[B+116>>2],D=r[B+124>>2],a=r[B+120>>2];break y}if(D=fe?We:D,ae=ae+((fe?an:Z)<<2|D>>>30)|0,We=q+(D<<2)|0,ae=We>>>0>>0?ae+1|0:ae,D=We-32|0,Z=ae-(We>>>0<32)|0,a=Z,D>>>0>0-O>>>0&(a|0)>=0|(a|0)>0){r[37091]=68,e1(B+160|0,b),eo(B+144|0,r[B+160>>2],r[B+164>>2],r[B+168>>2],r[B+172>>2],-1,-1,-1,2147418111),eo(B+128|0,r[B+144>>2],r[B+148>>2],r[B+152>>2],r[B+156>>2],-1,-1,-1,2147418111),Se=r[B+128>>2],Mt=r[B+132>>2],D=r[B+140>>2],a=r[B+136>>2];break y}if(a=O-226|0,q=a>>31,(Z|0)>=(q|0)&a>>>0<=D>>>0|(q|0)<(Z|0)){if((ur|0)>=0)for(;Vn(B+416|0,Se,Mt,wn,m,0,0,0,-1073807360),q=jl(Se,Mt,wn,m,1073610752),a=(q|0)<0,Vn(B+400|0,Se,Mt,wn,m,a?Se:r[B+416>>2],a?Mt:r[B+420>>2],a?wn:r[B+424>>2],a?m:r[B+428>>2]),a=D,D=a-1|0,Z=Z-!a|0,wn=r[B+408>>2],m=r[B+412>>2],Se=r[B+400>>2],Mt=r[B+404>>2],ur=ur<<1|(q|0)>=0,(ur|0)>=0;);ae=Z-((O>>31)+(D>>>0>>0)|0)|0,a=(D-O|0)+32|0,ae=a>>>0<32?ae+1|0:ae,q=a>>>0>>0&(ae|0)<=0|(ae|0)<0?(a|0)>0?a:0:A;w:{if((q|0)>=113){e1(B+384|0,b),We=r[B+392>>2],an=r[B+396>>2],u=r[B+384>>2],y=r[B+388>>2],Z=0,a=0;break w}ii(B+352|0,Kp(144-q|0)),e1(B+336|0,b),u=r[B+336>>2],y=r[B+340>>2],We=r[B+344>>2],an=r[B+348>>2],Rk(B+368|0,r[B+352>>2],r[B+356>>2],r[B+360>>2],r[B+364>>2],u,y,We,an),lt=r[B+376>>2],p=r[B+380>>2],Z=r[B+372>>2],a=r[B+368>>2]}b=!(ur&1)&((Ln(Se,Mt,wn,m,0,0,0,0)|0)!=0&(q|0)<32),Uf(B+320|0,b+ur|0),eo(B+304|0,u,y,We,an,r[B+320>>2],r[B+324>>2],r[B+328>>2],r[B+332>>2]),q=a,Vn(B+272|0,r[B+304>>2],r[B+308>>2],r[B+312>>2],r[B+316>>2],a,Z,lt,p),a=b,eo(B+288|0,u,y,We,an,a?0:Se,a?0:Mt,a?0:wn,a?0:m),Vn(B+256|0,r[B+288>>2],r[B+292>>2],r[B+296>>2],r[B+300>>2],r[B+272>>2],r[B+276>>2],r[B+280>>2],r[B+284>>2]),z5(B+240|0,r[B+256>>2],r[B+260>>2],r[B+264>>2],r[B+268>>2],q,Z,lt,p),a=r[B+240>>2],b=r[B+244>>2],q=r[B+248>>2],We=r[B+252>>2],Ln(a,b,q,We,0,0,0,0)||(r[37091]=68),Mr(B+224|0,a,b,q,We,D),Se=r[B+224>>2],Mt=r[B+228>>2],D=r[B+236>>2],a=r[B+232>>2];break y}r[37091]=68,e1(B+208|0,b),eo(B+192|0,r[B+208>>2],r[B+212>>2],r[B+216>>2],r[B+220>>2],0,0,0,65536),eo(B+176|0,r[B+192>>2],r[B+196>>2],r[B+200>>2],r[B+204>>2],0,0,0,65536),Se=r[B+176>>2],Mt=r[B+180>>2],D=r[B+188>>2],a=r[B+184>>2]}r[Ht+16>>2]=Se,r[Ht+20>>2]=Mt,r[Ht+24>>2]=a,r[Ht+28>>2]=D,hn=B+432|0,D=r[Ht+24>>2],Z=r[Ht+28>>2],q=r[Ht+16>>2],ae=r[Ht+20>>2];break m}if(r[C+116>>2]<0)break k;r[C+4>>2]=r[C+4>>2]-1}B=b,b=0,p=hn-8976|0,hn=p,ve=0-O|0,Y=ve-A|0;k:{y:{for(;;){if((a|0)!=48)w:{if((a|0)!=46)break k;if(a=r[C+4>>2],(a|0)==r[C+104>>2])break w;r[C+4>>2]=a+1,a=te[a|0];break y}else{a=r[C+4>>2],(a|0)!=r[C+104>>2]?(b=1,r[C+4>>2]=a+1,a=te[a|0]):(b=1,a=M0(C));continue}break}a=M0(C)}if(lt=1,(a|0)!=48)break k;for(;;){a=D,D=a-1|0,Z=Z-!a|0,a=r[C+4>>2];y:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break y}a=M0(C)}if((a|0)!=48)break}b=1}r[p+784>>2]=0;k:{y:{fe=(a|0)==46,Se=a-48|0;w:{C:{_:{x:{if(fe|Se>>>0<=9)for(;;){S:{if(fe&1){if(!lt){D=q,Z=ae,lt=1;break S}fe=!b;break x}if(q=q+1|0,ae=q?ae:ae+1|0,(Le|0)<=2044){ur=(a|0)==48?ur:q,b=(p+784|0)+(Le<<2)|0,on&&(Se=(Ce(r[b>>2],10)+a|0)-48|0),r[b>>2]=Se,b=1,Se=on+1|0,a=(Se|0)==9,on=a?0:Se,Le=a+Le|0;break S}if((a|0)==48)break S;r[p+8960>>2]=r[p+8960>>2]|1,ur=18396}a=r[C+4>>2];S:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break S}a=M0(C)}if(fe=(a|0)==46,Se=a-48|0,!(fe|Se>>>0<10))break}if(D=lt?D:q,Z=lt?Z:ae,!(!b|(a&-33)!=69)){if(a=Up(C),Se=Pi,!a&(Se|0)==-2147483648)break w;if(!b)break C;Z=Z+Se|0,D=a+D|0,Z=D>>>0>>0?Z+1|0:Z;break y}if(fe=!b,(a|0)<0)break _}if(r[C+116>>2]<0)break _;r[C+4>>2]=r[C+4>>2]-1}if(!fe)break y}r[37091]=28}q=0,ae=0,yu(C,0,0),D=0,a=0;break k}if(a=r[p+784>>2],!a){ii(p,+(B|0)*0),q=r[p>>2],ae=r[p+4>>2],D=r[p+12>>2],a=r[p+8>>2];break k}if(!(q>>>0>9&(ae|0)>=0|(ae|0)>0|((D|0)!=(q|0)|(Z|0)!=(ae|0))|(a>>>A|0?(A|0)<=30:0))){e1(p+48|0,B),Uf(p+32|0,a),eo(p+16|0,r[p+48>>2],r[p+52>>2],r[p+56>>2],r[p+60>>2],r[p+32>>2],r[p+36>>2],r[p+40>>2],r[p+44>>2]),q=r[p+16>>2],ae=r[p+20>>2],D=r[p+28>>2],a=r[p+24>>2];break k}if(D>>>0>ve>>>1>>>0&(Z|0)>=0|(Z|0)>0){r[37091]=68,e1(p+96|0,B),eo(p+80|0,r[p+96>>2],r[p+100>>2],r[p+104>>2],r[p+108>>2],-1,-1,-1,2147418111),eo(p- -64|0,r[p+80>>2],r[p+84>>2],r[p+88>>2],r[p+92>>2],-1,-1,-1,2147418111),q=r[p+64>>2],ae=r[p+68>>2],D=r[p+76>>2],a=r[p+72>>2];break k}if(a=O-226|0,b=D>>>0>>0,a=a>>31,b&(Z|0)<=(a|0)|(a|0)>(Z|0)){r[37091]=68,e1(p+144|0,B),eo(p+128|0,r[p+144>>2],r[p+148>>2],r[p+152>>2],r[p+156>>2],0,0,0,65536),eo(p+112|0,r[p+128>>2],r[p+132>>2],r[p+136>>2],r[p+140>>2],0,0,0,65536),q=r[p+112>>2],ae=r[p+116>>2],D=r[p+124>>2],a=r[p+120>>2];break k}if(on){if((on|0)<=8){for(a=(p+784|0)+(Le<<2)|0,ve=r[a>>2];ve=Ce(ve,10),on=on+1|0,(on|0)!=9;);r[a>>2]=ve}Le=Le+1|0}y:{if(lt=D,(ur|0)>(D|0)|(ur|0)>=9|(D|0)>17)break y;if((lt|0)==9){e1(p+192|0,B),Uf(p+176|0,r[p+784>>2]),eo(p+160|0,r[p+192>>2],r[p+196>>2],r[p+200>>2],r[p+204>>2],r[p+176>>2],r[p+180>>2],r[p+184>>2],r[p+188>>2]),q=r[p+160>>2],ae=r[p+164>>2],D=r[p+172>>2],a=r[p+168>>2];break k}if((lt|0)<=8){e1(p+272|0,B),Uf(p+256|0,r[p+784>>2]),eo(p+240|0,r[p+272>>2],r[p+276>>2],r[p+280>>2],r[p+284>>2],r[p+256>>2],r[p+260>>2],r[p+264>>2],r[p+268>>2]),e1(p+224|0,r[(0-lt<<2)+146400>>2]),Uh(p+208|0,r[p+240>>2],r[p+244>>2],r[p+248>>2],r[p+252>>2],r[p+224>>2],r[p+228>>2],r[p+232>>2],r[p+236>>2]),q=r[p+208>>2],ae=r[p+212>>2],D=r[p+220>>2],a=r[p+216>>2];break k}if(a=(Ce(lt,-3)+A|0)+27|0,D=r[p+784>>2],D>>>a|0&&(a|0)<=30)break y;e1(p+352|0,B),Uf(p+336|0,D),eo(p+320|0,r[p+352>>2],r[p+356>>2],r[p+360>>2],r[p+364>>2],r[p+336>>2],r[p+340>>2],r[p+344>>2],r[p+348>>2]),e1(p+304|0,r[(lt<<2)+146328>>2]),eo(p+288|0,r[p+320>>2],r[p+324>>2],r[p+328>>2],r[p+332>>2],r[p+304>>2],r[p+308>>2],r[p+312>>2],r[p+316>>2]),q=r[p+288>>2],ae=r[p+292>>2],D=r[p+300>>2],a=r[p+296>>2];break k}for(;a=Le,Le=a-1|0,!r[(p+784|0)+(Le<<2)>>2];);on=0,D=(lt|0)%9|0;y:{if(!D){fe=0;break y}fe=0,D=(lt|0)<0?D+9|0:D;w:{if(!a){a=0;break w}for(q=r[(0-D<<2)+146400>>2],Z=1e9/(q|0)|0,Se=0,ve=0;b=Se,Se=(p+784|0)+(ve<<2)|0,ae=r[Se>>2],Le=(ae>>>0)/(q>>>0)|0,b=b+Le|0,r[Se>>2]=b,b=!b&(fe|0)==(ve|0),fe=b?fe+1&2047:fe,lt=b?lt-9|0:lt,Se=Ce(Z,ae-Ce(q,Le)|0),ve=ve+1|0,(ve|0)!=(a|0););if(!Se)break w;r[(p+784|0)+(a<<2)>>2]=Se,a=a+1|0}lt=(lt-D|0)+9|0}for(;;){ve=(p+784|0)+(fe<<2)|0;y:{for(;;){if(((lt|0)!=36|ni[ve>>2]>=10384593)&(lt|0)>=36)break y;for(b=a+2047|0,Se=0;Le=b&2047,b=(p+784|0)+(Le<<2)|0,D=r[b>>2],ae=D>>>3|0,q=D<<29,D=q+Se|0,Z=D>>>0>>0?ae+1|0:ae,!Z&D>>>0<1000000001?Se=0:(Se=U4(D,Z,1e9),D=D-m0(Se,Pi,1e9,0)|0),r[b>>2]=D,a=(Le|0)!=(a-1&2047)||(fe|0)==(Le|0)||D?a:Le,b=Le-1|0,(fe|0)!=(Le|0););if(on=on-29|0,!!Se)break}fe=fe-1&2047,(fe|0)==(a|0)&&(D=p+784|0,q=D+((a+2046&2047)<<2)|0,a=a-1&2047,r[q>>2]=r[q>>2]|r[D+(a<<2)>>2]),lt=lt+9|0,r[(p+784|0)+(fe<<2)>>2]=Se;continue}break}y:{w:for(;;){for(D=a+1&2047,Se=(p+784|0)+((a-1&2047)<<2)|0;;){q=(lt|0)>45?9:1;C:{for(;;){b=fe,ve=0;_:{for(;;){x:{if(Z=b+ve&2047,(Z|0)==(a|0)||(Z=r[(p+784|0)+(Z<<2)>>2],fe=r[(ve<<2)+146352>>2],Z>>>0>>0))break x;if(Z>>>0>fe>>>0)break _;if(ve=ve+1|0,(ve|0)!=4)continue}break}if((lt|0)!=36)break _;for(D=0,Z=0,ve=0,q=0,ae=0;Se=b+ve&2047,(Se|0)==(a|0)&&(a=a+1&2047,r[(p+(a<<2)|0)+780>>2]=0),Uf(p+768|0,r[(p+784|0)+(Se<<2)>>2]),eo(p+752|0,D,Z,q,ae,0,0,1342177280,1075633366),Vn(p+736|0,r[p+752>>2],r[p+756>>2],r[p+760>>2],r[p+764>>2],r[p+768>>2],r[p+772>>2],r[p+776>>2],r[p+780>>2]),q=r[p+744>>2],ae=r[p+748>>2],D=r[p+736>>2],Z=r[p+740>>2],ve=ve+1|0,(ve|0)!=4;);if(e1(p+720|0,B),eo(p+704|0,D,Z,q,ae,r[p+720>>2],r[p+724>>2],r[p+728>>2],r[p+732>>2]),q=r[p+712>>2],ae=r[p+716>>2],D=0,Z=0,Se=r[p+704>>2],Mt=r[p+708>>2],ur=on+113|0,Le=ur-O|0,ve=(Le|0)<(A|0),fe=ve?(Le|0)>0?Le:0:A,(fe|0)<=112)break C;break y}if(on=q+on|0,fe=a,(a|0)!=(b|0))break}for(ae=1e9>>>q|0,Le=-1<>2],Z=Z+(Mt>>>q|0)|0,r[ve>>2]=Z,Z=!Z&(b|0)==(fe|0),fe=Z?fe+1&2047:fe,lt=Z?lt-9|0:lt,ve=Ce(ae,Le&Mt),b=b+1&2047,(b|0)!=(a|0););if(!ve)continue;if((D|0)!=(fe|0)){r[(p+784|0)+(a<<2)>>2]=ve,a=D;continue w}r[Se>>2]=r[Se>>2]|1;continue}break}break}ii(p+656|0,Kp(225-fe|0)),Rk(p+688|0,r[p+656>>2],r[p+660>>2],r[p+664>>2],r[p+668>>2],Se,Mt,q,ae),wn=r[p+696>>2],m=r[p+700>>2],u=r[p+688>>2],y=r[p+692>>2],ii(p+640|0,Kp(113-fe|0)),Ef(p+672|0,Se,Mt,q,ae,r[p+640>>2],r[p+644>>2],r[p+648>>2],r[p+652>>2]),D=r[p+672>>2],Z=r[p+676>>2],We=r[p+680>>2],an=r[p+684>>2],z5(p+624|0,Se,Mt,q,ae,D,Z,We,an),Vn(p+608|0,u,y,wn,m,r[p+624>>2],r[p+628>>2],r[p+632>>2],r[p+636>>2]),q=r[p+616>>2],ae=r[p+620>>2],Se=r[p+608>>2],Mt=r[p+612>>2]}lt=b+4&2047;y:{if((lt|0)==(a|0))break y;lt=r[(p+784|0)+(lt<<2)>>2];w:{if(lt>>>0<=499999999){if(!lt&(b+5&2047)==(a|0))break w;ii(p+496|0,+(B|0)*.25),Vn(p+480|0,D,Z,We,an,r[p+496>>2],r[p+500>>2],r[p+504>>2],r[p+508>>2]),We=r[p+488>>2],an=r[p+492>>2],D=r[p+480>>2],Z=r[p+484>>2];break w}if((lt|0)!=5e8){ii(p+592|0,+(B|0)*.75),Vn(p+576|0,D,Z,We,an,r[p+592>>2],r[p+596>>2],r[p+600>>2],r[p+604>>2]),We=r[p+584>>2],an=r[p+588>>2],D=r[p+576>>2],Z=r[p+580>>2];break w}if(se=+(B|0),(b+5&2047)==(a|0)){ii(p+528|0,se*.5),Vn(p+512|0,D,Z,We,an,r[p+528>>2],r[p+532>>2],r[p+536>>2],r[p+540>>2]),We=r[p+520>>2],an=r[p+524>>2],D=r[p+512>>2],Z=r[p+516>>2];break w}ii(p+560|0,se*.75),Vn(p+544|0,D,Z,We,an,r[p+560>>2],r[p+564>>2],r[p+568>>2],r[p+572>>2]),We=r[p+552>>2],an=r[p+556>>2],D=r[p+544>>2],Z=r[p+548>>2]}if((fe|0)>111||(Ef(p+464|0,D,Z,We,an,0,0,0,1073676288),Ln(r[p+464>>2],r[p+468>>2],r[p+472>>2],r[p+476>>2],0,0,0,0)))break y;Vn(p+448|0,D,Z,We,an,0,0,0,1073676288),We=r[p+456>>2],an=r[p+460>>2],D=r[p+448>>2],Z=r[p+452>>2]}Vn(p+432|0,Se,Mt,q,ae,D,Z,We,an),z5(p+416|0,r[p+432>>2],r[p+436>>2],r[p+440>>2],r[p+444>>2],u,y,wn,m),q=r[p+424>>2],ae=r[p+428>>2],Se=r[p+416>>2],Mt=r[p+420>>2];y:{if((Y-2|0)>=(ur&2147483647)||(r[p+408>>2]=q,r[p+412>>2]=ae&2147483647,r[p+400>>2]=Se,r[p+404>>2]=Mt,eo(p+384|0,Se,Mt,q,ae,0,0,0,1073610752),b=jl(r[p+400>>2],r[p+404>>2],r[p+408>>2],r[p+412>>2],1081081856),a=(b|0)<0,q=a?q:r[p+392>>2],ae=a?ae:r[p+396>>2],Se=a?Se:r[p+384>>2],Mt=a?Mt:r[p+388>>2],on=((b|0)>=0)+on|0,!((Ln(D,Z,We,an,0,0,0,0)|0)!=0&(a?ve:ve&(fe|0)!=(Le|0)))&(on+110|0)<=(Y|0)))break y;r[37091]=68}Mr(p+368|0,Se,Mt,q,ae,on),q=r[p+368>>2],ae=r[p+372>>2],D=r[p+380>>2],a=r[p+376>>2]}r[Ht+40>>2]=a,r[Ht+44>>2]=D,r[Ht+32>>2]=q,r[Ht+36>>2]=ae,hn=p+8976|0,D=r[Ht+40>>2],Z=r[Ht+44>>2],q=r[Ht+32>>2],ae=r[Ht+36>>2];break m;case 3:break d;default:break v}break g}d:{a=r[C+4>>2];v:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break v}a=M0(C)}if((a|0)==40){ve=1;break d}if(Z=2147450880,r[C+116>>2]<0)break m;r[C+4>>2]=r[C+4>>2]-1;break m}for(;;){d:{a=r[C+4>>2];v:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break v}a=M0(C)}if(!(a-48>>>0<10|a-65>>>0<26|(a|0)==95)&&a-97>>>0>=26)break d;ve=ve+1|0;continue}break}if(Z=2147450880,(a|0)==41)break m}a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),r[37091]=28,yu(C,0,0)}Z=0}if(r[mt+8>>2]=q,r[mt+12>>2]=ae,r[mt+16>>2]=D,r[mt+20>>2]=Z,hn=Ht+48|0,a=r[C+4>>2]-r[C+44>>2]|0,r[C+120>>2]!=(0-a|0)|r[C+124>>2]!=(0-((a>>31)+((a|0)!=0)|0)|0))break f;break a;case 3:case 11:case 27:if((ve|16)==115){if(k(mt+32|0,-1,257),F[mt+32|0]=0,(ve|0)!=115)break h;F[mt+65|0]=0,F[mt+46|0]=0,He[mt+42>>1]=0,He[mt+44>>1]=0;break h}D=te[d+1|0],q=(D|0)==94,k(mt+32|0,q,257),F[mt+32|0]=0,a=q?d+2|0:d+1|0;m:{g:{d:{if(d=te[(q?2:1)+d|0],(d|0)!=45){if((d|0)==93)break d;fe=(D|0)!=94,d=a;break m}fe=(D|0)!=94,F[mt+78|0]=fe;break g}fe=(D|0)!=94,F[mt+126|0]=fe}d=a+1|0}for(;;){a=te[d|0];m:{if((a|0)!=45){if(!a)break i;if((a|0)==93)break h;break m}if(a=45,D=te[d+1|0],!D|(D|0)==93)break m;q=d+1|0,d=te[d-1|0];g:{if(D>>>0<=d>>>0){a=D;break g}for(;d=d+1|0,F[d+(mt+32|0)|0]=fe,a=te[q|0],a>>>0>d>>>0;);}d=q}F[(a+mt|0)+33|0]=fe,d=d+1|0}case 23:a=8;break p;case 12:case 29:a=10;break p;case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 22:case 25:case 26:case 28:case 30:case 31:break l;case 0:case 24:case 32:break p;case 17:break c}a=0}D=0,Z=0,fe=0,Le=0,Se=0,wn=hn-16|0,hn=wn;p:{if(!((a|0)!=1&a>>>0<=36)){r[37091]=28;break p}for(;;){q=r[C+4>>2];c:{if((q|0)!=r[C+104>>2]){r[C+4>>2]=q+1,b=te[q|0];break c}b=M0(C)}if(!((b|0)==32|b-9>>>0<5))break}c:{m:switch(b-43|0){case 0:case 2:break m;default:break c}if(Se=(b|0)==45?-1:0,q=r[C+4>>2],(q|0)!=r[C+104>>2]){r[C+4>>2]=q+1,b=te[q|0];break c}b=M0(C)}c:{m:{g:{d:{if(!((a|0)!=0&(a|0)!=16|(b|0)!=48)){q=r[C+4>>2];v:{if((q|0)!=r[C+104>>2]){r[C+4>>2]=q+1,b=te[q|0];break v}b=M0(C)}if((b&-33)==88){a=16,q=r[C+4>>2];v:{if((q|0)!=r[C+104>>2]){r[C+4>>2]=q+1,b=te[q|0];break v}b=M0(C)}if(te[b+146433|0]<16)break g;a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),yu(C,0,0);break p}if(a)break d;a=8;break g}if(a=a||10,a>>>0>te[b+146433|0])break d;a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),yu(C,0,0),r[37091]=28;break p}if((a|0)!=10)break g;if(fe=b-48|0,fe>>>0<=9){for(a=0;;){a=Ce(a,10)+fe|0,We=a>>>0<429496729,D=r[C+4>>2];d:{if((D|0)!=r[C+104>>2]){r[C+4>>2]=D+1,b=te[D|0];break d}b=M0(C)}if(fe=b-48|0,!(We&fe>>>0<=9))break}D=a}d:{if(fe>>>0>9)break d;for(q=m0(D,0,10,0),ae=Pi,We=fe;;){D=q+We|0,Z=D>>>0>>0?ae+1|0:ae,We=(Z|0)==429496729&D>>>0>=2576980378|Z>>>0>429496729,a=r[C+4>>2];v:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,b=te[a|0];break v}b=M0(C)}if(fe=b-48|0,We|fe>>>0>9)break d;if(q=m0(D,Z,10,0),We=fe,ae=Pi,a=ae,!((a|0)==-1&(fe^-1)>>>0>=q>>>0|(a|0)!=-1))break}a=10;break m}if(a=10,fe>>>0<=9)break m;break c}if(a-1&a){if(Le=te[b+146433|0],Le>>>0>>0){for(;;){fe=Ce(a,fe)+Le|0,We=fe>>>0<119304647,D=r[C+4>>2];g:{if((D|0)!=r[C+104>>2]){r[C+4>>2]=D+1,b=te[D|0];break g}b=M0(C)}if(Le=te[b+146433|0],!(We&Le>>>0>>0))break}D=fe}if(a>>>0<=Le>>>0)break m;for(;;){if(q=m0(D,Z,a,0),ae=Pi,We=Le&255,(ae|0)==-1&(We^-1)>>>0>>0)break m;D=q+We|0,Z=D>>>0>>0?ae+1|0:ae,b=r[C+4>>2];g:{if((b|0)!=r[C+104>>2]){r[C+4>>2]=b+1,b=te[b|0];break g}b=M0(C)}if(Le=te[b+146433|0],a>>>0<=Le>>>0)break m;if(Va(wn,a,0,0,0,D,Z,0,0),!!(r[wn+8>>2]|r[wn+12>>2]))break}break m}if(q=F[(Ce(a,23)>>>5&7)+146689|0],fe=te[b+146433|0],fe>>>0>>0){for(;;){Le=Le<>>0<134217728,D=r[C+4>>2];g:{if((D|0)!=r[C+104>>2]){r[C+4>>2]=D+1,b=te[D|0];break g}b=M0(C)}if(fe=te[b+146433|0],!(We&fe>>>0>>0))break}D=Le}if(a>>>0<=fe>>>0||(We=q&31,(q&63)>>>0>=32?(ae=0,Le=-1>>>We|0):(ae=-1>>>We|0,Le=ae|(1<>>0>Le>>>0))break m;for(;;){b=D,D=q&31,(q&63)>>>0>=32?(ae=b<>>32-D|Z<>2];g:{if((b|0)!=r[C+104>>2]){r[C+4>>2]=b+1,b=te[b|0];break g}b=M0(C)}if(fe=te[b+146433|0],a>>>0<=fe>>>0)break m;if(!((Z|0)==(We|0)&D>>>0<=Le>>>0|Z>>>0>>0))break}}if(te[b+146433|0]>=a>>>0)break c;for(;;){D=r[C+4>>2];m:{if((D|0)!=r[C+104>>2]){r[C+4>>2]=D+1,b=te[D|0];break m}b=M0(C)}if(!(te[b+146433|0]>>0))break}r[37091]=68,Se=0,D=-1,Z=-1}a=r[C+116>>2],(a|0)>0|(a|0)>=0&&(r[C+4>>2]=r[C+4>>2]-1),a=D^Se,D=a-Se|0,q=Se>>31,Z=(q^Z)-((a>>>0>>0)+q|0)|0}if(hn=wn+16|0,a=r[C+4>>2]-r[C+44>>2]|0,r[C+120>>2]==(0-a|0)&r[C+124>>2]==(0-((a>>31)+((a|0)!=0)|0)|0))break a;if(!(!Zt|(ve|0)!=112)){r[Zt>>2]=D;break l}Jo(Zt,B,D,Z);break l}if(!Zt)break l;D=r[mt+16>>2],a=r[mt+20>>2],q=r[mt+8>>2],Se=r[mt+12>>2];f:switch(re|0){case 0:We=hn-32|0,hn=We,b=a&2147483647,Z=b-1065418752|0,fe=b-1082064896|0;p:{if((Z|0)==(fe|0)&0|Z>>>0>>0){if(b=(a&33554431)<<7|D>>>25,Z=0,D=D&33554431,!(!Z&(D|0)==16777216?!(q|Se):!Z&D>>>0<16777216)){Le=b+1073741825|0;break p}if(Le=b+1073741824|0,D^16777216|q|(Z|Se))break p;Le=(b&1)+Le|0;break p}if(!(!D&(b|0)==2147418112?!(q|Se):b>>>0<2147418112)){Le=((a&33554431)<<7|D>>>25)&4194303|2143289344;break p}if(Le=2139095040,b>>>0>1082064895||(Le=0,b=b>>>16|0,b>>>0<16145))break p;if(Z=a&65535|65536,K0(We+16|0,q,Se,D,Z,b-16129|0),$i(We,q,Se,D,Z,16257-b|0),D=r[We+8>>2],Le=(r[We+12>>2]&33554431)<<7|D>>>25,b=r[We>>2]|(r[We+16>>2]|r[We+24>>2]|(r[We+20>>2]|r[We+28>>2]))!=0,Se=r[We+4>>2],q=0,D=D&33554431,!(!q&(D|0)==16777216?!(b|Se):!q&D>>>0<16777216)){Le=Le+1|0;break p}if(D^16777216|b|(q|Se))break p;Le=(Le&1)+Le|0}hn=We+32|0,r[Zt>>2]=a&-2147483648|Le;break l;case 1:he=Zt,me=Wp(q,Se,D,a),In[he>>3]=me;break l;case 2:break f;default:break l}r[Zt>>2]=q,r[Zt+4>>2]=Se,r[Zt+8>>2]=D,r[Zt+12>>2]=a;break l}u=(ve|0)==99,fe=u?b+1|0:31;h:{if((B|0)==1){if(a=Zt,M&&(a=Io(fe<<2),!a))break s;for(r[mt+296>>2]=0,r[mt+300>>2]=0,b=0;;){h=a;f:{for(;;){a=r[C+4>>2];p:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break p}a=M0(C)}if(!te[(a+mt|0)+33|0])break f;F[mt+27|0]=a,D=mt+28|0,Le=0,Z=hn-16|0,hn=Z,a=mt+296|0,q=a||149212,a=r[q>>2];p:{c:{Er=mt+27|0;m:{if(!Er){if(a)break m;break p}Le=-2,Se=D||Z+12|0;g:{if(a){D=1;break g}if(a=te[Er|0],D=a<<24>>24,(D|0)>=0){r[Se>>2]=a,Le=(D|0)!=0;break p}if(!r[r[37292]>>2]){r[Se>>2]=D&57343,Le=1;break p}if(a=a-194|0,a>>>0>50)break m;a=r[(a<<2)+146704>>2];break c}if(on=te[Er|0],ae=on>>>3|0,(ae-16|ae+(a>>26))>>>0>7)break m;for(;;){if(D=D-1|0,a=on-128|a<<6,(a|0)>=0){r[q>>2]=0,r[Se>>2]=a,Le=1-D|0;break p}if(!D)break c;if(Er=Er+1|0,on=te[Er|0],(on&192)!=128)break}}r[q>>2]=0,r[37091]=25,Le=-1;break p}r[q>>2]=a}if(hn=Z+16|0,(Le|0)!=-2){if(Er=0,(Le|0)==-1)break i;if(h&&(r[(b<<2)+h>>2]=r[mt+28>>2],b=b+1|0),!!((b|0)==(fe|0)&M))break}}if(Le=1,fe=fe<<1|1,a=Go(h,fe<<2),a)continue;break r}break}if(Er=0,fe=h,mt+296|0&&r[mt+296>>2])break i;break h}if(M){if(b=0,a=Io(fe),!a)break s;for(;;){for(h=a;;){a=r[C+4>>2];f:{if((a|0)!=r[C+104>>2]){r[C+4>>2]=a+1,a=te[a|0];break f}a=M0(C)}if(!te[(a+mt|0)+33|0]){fe=0,Er=h;break h}if(F[h+b|0]=a,b=b+1|0,(fe|0)==(b|0))break}if(Le=1,fe=fe<<1|1,a=Go(h,fe),!a)break}Er=h,h=0;break r}if(b=0,Zt)for(;;){h=r[C+4>>2];f:{if((h|0)!=r[C+104>>2]){r[C+4>>2]=h+1,h=te[h|0];break f}h=M0(C)}if(te[(h+mt|0)+33|0]){F[b+Zt|0]=h,b=b+1|0;continue}else{fe=0,h=Zt,Er=h;break h}}for(;;){h=r[C+4>>2];f:{if((h|0)!=r[C+104>>2]){r[C+4>>2]=h+1,h=te[h|0];break f}h=M0(C)}if(!te[(h+mt|0)+33|0])break}h=0,Er=0,fe=0}if(a=r[C+4>>2],D=r[C+116>>2],(D|0)>0|(D|0)>=0&&(a=a-1|0,r[C+4>>2]=a),D=a-r[C+44>>2]|0,a=D+r[C+120>>2]|0,ae=r[C+124>>2]+(D>>31)|0,ae=a>>>0>>0?ae+1|0:ae,!(ae|a)|((a|0)!=(We|0)|(ae|0)!=(wn|0))&(ve|0)==99)break o;M&&(r[Zt>>2]=h);h:{if(u)break h;if(fe&&(r[(b<<2)+fe>>2]=0),!Er){Er=0;break h}F[b+Er|0]=0}h=fe}a=r[C+4>>2]-r[C+44>>2]|0,D=a,ae=S+r[C+124>>2]|0,b=a>>31,a=x+r[C+120>>2]|0,Z=b+(a>>>0>>0?ae+1|0:ae)|0,x=a+D|0,S=x>>>0>>0?Z+1|0:Z,H=((Zt|0)!=0)+H|0}if(b=d+1|0,d=te[d+1|0],d)continue;break e}break}h=fe;break a}Le=1,Er=0,h=0;break r}Le=M;break t}Le=M}if(H)break t}H=-1}if(!Le)break e;J(Er),J(h)}return hn=mt+304|0,hn=C+144|0,hn=Q+16|0,H}function d5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0;e:{t:{n:{r:{i:{a:{s:switch(d=r[h+20>>2],d-202|0){case 2:break n;case 1:break a;case 0:break s;default:break i}ve=r[h+420>>2],r[ve+100>>2]=0,r[ve+8>>2]=0,r[ve+4>>2]=253,r[ve>>2]=254,d=r[h+20>>2],(d|0)!=202&&(a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),d=r[h+48>>2]<<3,a=r[h+52>>2];s:{if(d>>>0<=a>>>0){r[h+112>>2]=(r[h+28>>2]+7|0)/8,B=1,D=1,d=r[h+32>>2];break s}if(B=1,d>>>0<=a<<1>>>0){r[h+112>>2]=((r[h+28>>2]<<1)+7|0)/8,D=2,d=r[h+32>>2]<<1;break s}if(D=3,d>>>0<=Ce(a,3)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],3)+7|0)/8,d=Ce(r[h+32>>2],3);break s}if(d>>>0<=a<<2>>>0){r[h+112>>2]=((r[h+28>>2]<<2)+7|0)/8,D=4,d=r[h+32>>2]<<2;break s}if(D=5,d>>>0<=Ce(a,5)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],5)+7|0)/8,d=Ce(r[h+32>>2],5);break s}if(D=6,d>>>0<=Ce(a,6)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],6)+7|0)/8,d=Ce(r[h+32>>2],6);break s}if(D=7,d>>>0<=Ce(a,7)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],7)+7|0)/8,d=Ce(r[h+32>>2],7);break s}B=0;o:{if(d>>>0<=a<<3>>>0){D=8,r[h+112>>2]=((r[h+28>>2]<<3)+7|0)/8,d=r[h+32>>2]<<3;break o}if(D=9,d>>>0<=Ce(a,9)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],9)+7|0)/8,d=Ce(r[h+32>>2],9);break o}if(D=10,d>>>0<=Ce(a,10)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],10)+7|0)/8,d=Ce(r[h+32>>2],10);break o}if(D=11,d>>>0<=Ce(a,11)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],11)+7|0)/8,d=Ce(r[h+32>>2],11);break o}if(D=12,d>>>0<=Ce(a,12)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],12)+7|0)/8,d=Ce(r[h+32>>2],12);break o}if(D=13,d>>>0<=Ce(a,13)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],13)+7|0)/8,d=Ce(r[h+32>>2],13);break o}if(D=14,d>>>0<=Ce(a,14)>>>0){r[h+112>>2]=(Ce(r[h+28>>2],14)+7|0)/8,d=Ce(r[h+32>>2],14);break o}if(D=15,C=r[h+28>>2],d>>>0<=Ce(a,15)>>>0){r[h+112>>2]=(Ce(C,15)+7|0)/8,d=Ce(r[h+32>>2],15);break o}r[h+112>>2]=((C<<4)+7|0)/8,D=16,d=r[h+32>>2]<<4}}r[h+316>>2]=D,r[h+116>>2]=(d+7|0)/8,q=h+216|0,b=r[h+36>>2];s:{if((b|0)<=0)break s;if(C=r[h+216>>2],d=C,b>>>0>=8)for(q=b&-8,a=0;r[d+36>>2]=D,r[d+624>>2]=D,r[d+540>>2]=D,r[d+456>>2]=D,r[d+372>>2]=D,r[d+288>>2]=D,r[d+204>>2]=D,r[d+120>>2]=D,d=d+672|0,a=a+8|0,(q|0)!=(a|0););if(q=b&7,q)for(a=0;r[d+36>>2]=D,d=d+84|0,a=a+1|0,(q|0)!=(a|0););if(q=h+216|0,(b|0)<=0)break s;o:{if(!B){if(d=C,b>>>0>=8)for(B=b&-8,a=0;r[d+36>>2]=D,r[d+624>>2]=D,r[d+540>>2]=D,r[d+456>>2]=D,r[d+372>>2]=D,r[d+288>>2]=D,r[d+204>>2]=D,r[d+120>>2]=D,d=d+672|0,a=a+8|0,(B|0)!=(a|0););if(B=b&7,!B)break o;for(a=0;r[d+36>>2]=D,d=d+84|0,a=a+1|0,(B|0)!=(a|0););break o}for(Z=Ce(r[h+308>>2],D),B=C;;){for(ae=r[B+8>>2],a=D;;){u:{if(d=a<<1,(Z|0)%(Ce(ae,d)|0)|(Ce(r[h+312>>2],D)|0)%(Ce(r[B+12>>2],d)|0)){d=a;break u}if(fe=(a|0)<4,a=d,fe)continue}break}if(r[B+36>>2]=d,B=B+84|0,Se=Se+1|0,(Se|0)==(b|0))break}}if((b|0)<=0)break s;for(d=0;a=r[h+308>>2]<<3,r[C+40>>2]=((a+Ce(r[C+36>>2],Ce(r[C+8>>2],r[h+28>>2]))|0)-1|0)/(a|0),a=r[h+312>>2]<<3,r[C+44>>2]=((a+Ce(r[C+36>>2],Ce(r[C+12>>2],r[h+32>>2]))|0)-1|0)/(a|0),C=C+84|0,d=d+1|0,b=r[h+36>>2],(d|0)<(b|0););}d=b,C=r[h+44>>2],a=C-1|0,a>>>0<=15&&(d=r[(a<<2)+144676>>2]),r[h+120>>2]=d,a=1,r[h+124>>2]=r[h+84>>2]?1:d;s:{if(r[h+76>>2]|r[h+300>>2]|(r[h+40>>2]!=3|(b|0)!=3))break s;o:{u:{if(C-6>>>0<10||(b=C-2|0,!b))break u;if((b|0)!=14)break s;if((d|0)==3)break o;break s}if(r[(C<<2)+144608>>2]!=(d|0))break s}if(d=r[q>>2],r[d+8>>2]!=2|r[d+92>>2]!=1|(r[d+176>>2]!=1|r[d+12>>2]>2)||r[d+96>>2]!=1|r[d+180>>2]!=1||(C=r[d+36>>2],(C|0)!=r[h+316>>2]|(C|0)!=r[d+120>>2]|(C|0)!=r[d+204>>2]))break s;a=r[h+312>>2]}for(r[h+128>>2]=a,a=Ie[r[r[h+4>>2]>>2]](h,1,1408)|0,d=a+256|0,r[h+324>>2]=d,a=k(a,0,256);F[d+p|0]=p,C=p|1,F[C+d|0]=C,C=p|2,F[C+d|0]=C,C=p|3,F[C+d|0]=C,C=p|4,F[C+d|0]=C,C=p|5,F[C+d|0]=C,C=p|6,F[C+d|0]=C,C=p|7,F[C+d|0]=C,p=p+8|0,(p|0)!=256;);k(a+512|0,255,384),p=0,k(a+896|0,0,384),D0(a+1280|0,r[h+324>>2],128),r[ve+108>>2]=0;s:{if(r[h+76>>2]|r[h+300>>2]|(r[h+40>>2]!=3|r[h+36>>2]!=3))break s;o:{u:{if(d=r[h+44>>2],d-6>>>0<10||(a=d-2|0,!a))break u;if((a|0)!=14)break s;if(r[h+120>>2]==3)break o;break s}if(r[h+120>>2]!=r[(d<<2)+144608>>2])break s}if(d=r[h+216>>2],r[d+8>>2]!=2|r[d+92>>2]!=1|(r[d+176>>2]!=1|r[d+12>>2]>2)||r[d+96>>2]!=1|r[d+180>>2]!=1||(a=r[d+36>>2],(a|0)!=r[h+316>>2]|(a|0)!=r[d+120>>2]))break s;p=(a|0)==r[d+204>>2]}r[ve+116>>2]=0,r[ve+120>>2]=0,r[ve+112>>2]=p;s:{if(!r[h+84>>2]){r[h+108>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0;break s}r[h+64>>2]||(r[h+108>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0),r[h+68>>2]&&(d=r[h>>2],r[d+20>>2]=47,Ie[r[d>>2]](h));o:{if(r[h+120>>2]!=3){r[h+136>>2]=0,r[h+108>>2]=0,r[h+100>>2]=1,r[h+104>>2]=0;break o}if(r[h+136>>2]){r[h+104>>2]=1;break o}if(r[h+92>>2]){r[h+108>>2]=1;break o}r[h+100>>2]=1}if(r[h+100>>2]){fe=hn-16|0,hn=fe,d=Ie[r[r[h+4>>2]>>2]](h,1,88)|0,r[h+460>>2]=d,r[d+68>>2]=0,r[d+12>>2]=145,r[d+8>>2]=146,r[d>>2]=147,r[d+52>>2]=0,r[h+120>>2]>=5&&(d=r[h>>2],r[d+20>>2]=55,r[d+24>>2]=4,Ie[r[r[h>>2]>>2]](h)),q=r[h+96>>2],(q|0)>=257&&(d=r[h>>2],r[d+20>>2]=57,r[d+24>>2]=256,Ie[r[r[h>>2]>>2]](h),q=r[h+96>>2]),Z=r[h+120>>2],ae=r[h+460>>2],d=r[h+44>>2]<<2,r[fe+12>>2]=r[d+143504>>2],r[fe+8>>2]=r[d+143424>>2],Le=r[d+143344>>2],r[fe+4>>2]=Le;o:{if((Z|0)>=2){for(d=Z-1|0,p=d&-8,d=d&7,C=Z-2>>>0<7,a=1;;){if(D=0,b=a,a=a+1|0,B=a,!C)for(;B=Ce(Ce(Ce(Ce(Ce(Ce(Ce(Ce(a,B),a),a),a),a),a),a),a),D=D+8|0,(p|0)!=(D|0););if(D=0,d)for(;B=Ce(a,B),D=D+1|0,(d|0)!=(D|0););if(!((B|0)<=(q|0)))break}break o}b=(q|0)<=1?1:q,B=b+1|0}d=1,b>>>0<=1&&(a=r[h>>2],r[a+24>>2]=B,r[a+20>>2]=56,Ie[r[r[h>>2]>>2]](h));o:{if((Z|0)<=0)break o;C=ae+32|0,Se=Z&3,a=0;u:{if(Z>>>0<4){B=0;break u}for(We=Z&-4,B=0,p=0;D=B<<2,r[D+C>>2]=b,r[C+(D|4)>>2]=b,r[C+(D|8)>>2]=b,r[C+(D|12)>>2]=b,B=B+4|0,d=Ce(Ce(Ce(Ce(d,b),b),b),b),p=p+4|0,(We|0)!=(p|0););}if(Se)for(;r[C+(B<<2)>>2]=b,B=B+1|0,d=Ce(d,b),a=a+1|0,(Se|0)!=(a|0););Z=Z-1|0;u:{if(r[h+44>>2]!=2){if(a=r[C>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),(q|0)<(a|0))break o;B=0,p=C;break u}if(b=C+(Le<<2)|0,a=r[b>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),(q|0)<(a|0))break o;for(B=0,p=b;d=a,r[p>>2]=D,!(!((B|0)!=(Z|0)&&(B=B+1|0,p=C+(r[(fe+4|0)+(B<<2)>>2]<<2)|0,a=r[p>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),(q|0)>=(a|0)))&&(B=0,p=b,a=r[p>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),!((q|0)>=(a|0)))););break o}for(;d=a,r[p>>2]=D,!(!((B|0)!=(Z|0)&&(B=B+1|0,p=C+(B<<2)|0,a=r[p>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),(q|0)>=(a|0)))&&(B=0,p=C,a=r[p>>2],D=a+1|0,a=Ce(D,(d|0)/(a|0)|0),!((q|0)>=(a|0)))););}p=r[h+120>>2],a=r[h>>2],r[a+24>>2]=d;o:{if((p|0)==3){r[a+28>>2]=r[ae+32>>2],r[a+32>>2]=r[ae+36>>2],r[a+36>>2]=r[ae+40>>2],B=94,p=a;break o}B=95,p=r[h>>2]}if(r[a+20>>2]=B,Ie[r[p+4>>2]](h,1),We=Ie[r[r[h+4>>2]+8>>2]](h,1,d,r[h+120>>2])|0,a=r[h+120>>2],(a|0)>0)for(C=d;;){if(D=C,p=lt<<2,Le=r[(p+ae|0)+32>>2],C=(C|0)/(Le|0)|0,!((Le|0)<=0|(C|0)<=0)){for(q=p+We|0,mt=Le-1|0,Ht=mt>>>1|0,on=C&-4,Mt=C&3,Se=0;;){if(B=Ce(C,Se),(B|0)<(d|0))for(Z=(Ce(Se,255)+Ht|0)/(mt|0)|0;;){if(p=0,a=0,b=0,C>>>0>=4)for(;F[r[q>>2]+(a+B|0)|0]=Z,F[r[q>>2]+((a|1)+B|0)|0]=Z,F[r[q>>2]+((a|2)+B|0)|0]=Z,F[r[q>>2]+((a|3)+B|0)|0]=Z,a=a+4|0,b=b+4|0,(on|0)!=(b|0););if(Mt)for(;F[r[q>>2]+(a+B|0)|0]=Z,a=a+1|0,p=p+1|0,(Mt|0)!=(p|0););if(B=D+B|0,!((B|0)<(d|0)))break}if(Se=Se+1|0,(Le|0)==(Se|0))break}a=r[h+120>>2]}if(lt=lt+1|0,!((lt|0)<(a|0)))break}if(r[ae+20>>2]=d,r[ae+16>>2]=We,L4(h),!(r[h+88>>2]!=2|r[h+120>>2]<=0))for(d=(r[h+112>>2]<<1)+4|0,p=r[h+460>>2],a=0;an=p+(a<<2)|0,wn=Ie[r[r[h+4>>2]+4>>2]](h,1,d)|0,r[an+68>>2]=wn,a=a+1|0,(a|0)>2];);hn=fe+16|0,r[ve+116>>2]=r[h+460>>2]}if(!(r[h+108>>2]|r[h+104>>2]))break s;for(a=0,p=Ie[r[r[h+4>>2]>>2]](h,1,44)|0,r[h+460>>2]=p,r[p+40>>2]=0,r[p+32>>2]=0,r[p+12>>2]=153,r[p>>2]=154,r[h+120>>2]!=3&&(d=r[h>>2],r[d+20>>2]=47,Ie[r[d>>2]](h)),an=p,wn=Ie[r[r[h+4>>2]>>2]](h,1,128)|0,r[an+24>>2]=wn;d=Ie[r[r[h+4>>2]+4>>2]](h,1,4096)|0,C=a<<2,r[C+r[p+24>>2]>>2]=d,d=Ie[r[r[h+4>>2]+4>>2]](h,1,4096)|0,r[r[p+24>>2]+(C|4)>>2]=d,a=a+2|0,(a|0)!=32;);r[p+28>>2]=1;o:{if(r[h+108>>2]){d=8,C=56,a=r[h+96>>2];u:{if((a|0)>=8){if(a>>>0<257)break u;C=57,d=256}b=r[h>>2],r[b+24>>2]=d,r[b+20>>2]=C,Ie[r[r[h>>2]>>2]](h)}d=Ie[r[r[h+4>>2]+8>>2]](h,1,a,3)|0,r[p+20>>2]=a,r[p+16>>2]=d;break o}r[p+16>>2]=0}r[h+88>>2]&&(r[h+88>>2]=2,an=p,wn=Ie[r[r[h+4>>2]+4>>2]](h,1,Ce(r[h+112>>2],6)+12|0)|0,r[an+32>>2]=wn,V4(h)),r[ve+120>>2]=r[h+460>>2]}if(!r[h+68>>2]){s:{if(r[ve+112>>2]){D=0,d=Ie[r[r[h+4>>2]>>2]](h,1,48)|0,r[h+452>>2]=d,r[d+8>>2]=0,r[d>>2]=160,r[d+40>>2]=Ce(r[h+120>>2],r[h+112>>2]);o:{if(r[h+312>>2]==2){r[d+4>>2]=161,r[d+12>>2]=163,r[h+44>>2]==16&&(r[d+12>>2]=r[h+88>>2]?164:165),D=Ie[r[r[h+4>>2]+4>>2]](h,1,r[d+40>>2])|0;break o}if(r[d+4>>2]=166,r[d+12>>2]=168,r[h+44>>2]!=16)break o;r[d+12>>2]=r[h+88>>2]?169:170}for(r[d+32>>2]=D,d=r[h+452>>2],an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+16>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+20>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+24>>2]=wn,a=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[d+28>>2]=a,p=r[d+24>>2],C=r[d+20>>2],B=r[d+16>>2],D=0,b=-128;d=D<<2,r[d+B>>2]=Ce(b,91881)+32768>>16,r[d+C>>2]=Ce(b,116130)+32768>>16,r[d+p>>2]=Ce(b,-46802),r[d+a>>2]=Ce(b,-22554)+32768,b=b+1|0,D=D+1|0,(D|0)!=256;);break s}d=Ie[r[r[h+4>>2]>>2]](h,1,28)|0,r[h+456>>2]=d,r[d>>2]=171;o:{u:{l:switch(r[h+40>>2]-1|0){case 0:if(r[h+36>>2]!=1)break u;break o;case 1:case 2:if(r[h+36>>2]!=3)break u;break o;case 3:case 4:if(r[h+36>>2]!=4)break u;break o;default:break l}if(r[h+36>>2]>0)break o}a=r[h>>2],r[a+20>>2]=10,Ie[r[a>>2]](h)}o:{u:{l:{h:{f:{if(a=r[h+44>>2],a-6>>>0<10)break f;p:switch(a-1|0){case 3:break l;case 15:break h;case 1:break f;case 0:break p;default:break u}r[h+120>>2]=1;p:switch(r[h+40>>2]-1|0){case 0:case 2:if(r[d+4>>2]=172,d=r[h+36>>2],(d|0)<2)break o;if(p=d-1|0,a=p&7,C=r[h+216>>2],b=1,d-2>>>0>=7)for(D=p&-8,p=0;d=C+Ce(b,84)|0,r[d+48>>2]=0,r[d+132>>2]=0,r[d+216>>2]=0,r[d+300>>2]=0,r[d+384>>2]=0,r[d+468>>2]=0,r[d+552>>2]=0,r[d+636>>2]=0,b=b+8|0,p=p+8|0,(D|0)!=(p|0););if(!a)break o;for(D=0;r[(C+Ce(b,84)|0)+48>>2]=0,b=b+1|0,D=D+1|0,(a|0)!=(D|0););break o;case 1:for(r[d+4>>2]=173,d=r[h+456>>2],p=Ie[r[r[h+4>>2]>>2]](h,1,3072)|0,r[d+24>>2]=p,D=0;d=p+(D<<2)|0,r[d>>2]=Ce(D,19595),r[d+2048>>2]=Ce(D,7471)+32768,r[d+1024>>2]=Ce(D,38470),a=D|1,r[p+(a<<2)>>2]=Ce(a,19595),r[d+2052>>2]=Ce(a,7471)+32768,r[d+1028>>2]=Ce(a,38470),D=D+2|0,(D|0)!=256;);break o;default:break p}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h);break o}r[h+120>>2]=r[(a<<2)+143840>>2];f:switch(r[h+40>>2]-1|0){case 2:for(r[d+4>>2]=175,d=r[h+456>>2],an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+8>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+12>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+16>>2]=wn,a=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[d+20>>2]=a,p=r[d+16>>2],C=r[d+12>>2],B=r[d+8>>2],b=0,D=-128;d=b<<2,r[d+B>>2]=Ce(D,91881)+32768>>16,r[d+C>>2]=Ce(D,116130)+32768>>16,r[d+p>>2]=Ce(D,-46802),r[d+a>>2]=Ce(D,-22554)+32768,D=D+1|0,b=b+1|0,(b|0)!=256;);break o;case 0:r[d+4>>2]=176;break o;case 1:if(!(!(324>>>a&1)|(!(4292>>>a&1)|!(13252>>>a&1)))){r[d+4>>2]=177;break o}r[d+4>>2]=178;break o;default:break f}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h);break o}if(r[h+120>>2]=3,a=r[h+40>>2],!r[h+88>>2]){h:switch(a-1|0){case 2:r[d+4>>2]=180,Fo(h);break o;case 0:r[d+4>>2]=181;break o;case 1:r[d+4>>2]=182;break o;default:break h}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h);break o}h:switch(a-1|0){case 2:r[d+4>>2]=183,Fo(h);break o;case 0:r[d+4>>2]=184;break o;case 1:r[d+4>>2]=185;break o;default:break h}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h);break o}r[h+120>>2]=4;l:switch(r[h+40>>2]-4|0){case 1:for(r[d+4>>2]=186,d=r[h+456>>2],an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+8>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+12>>2]=wn,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[an+16>>2]=wn,a=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[d+20>>2]=a,p=r[d+16>>2],C=r[d+12>>2],B=r[d+8>>2],b=0,D=-128;d=b<<2,r[d+B>>2]=Ce(D,91881)+32768>>16,r[d+C>>2]=Ce(D,116130)+32768>>16,r[d+p>>2]=Ce(D,-46802),r[d+a>>2]=Ce(D,-22554)+32768,D=D+1|0,b=b+1|0,(b|0)!=256;);break o;case 0:r[d+4>>2]=177;break o;default:break l}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h);break o}if((a|0)==r[h+40>>2]){r[h+120>>2]=r[h+36>>2],r[d+4>>2]=177;break o}d=r[h>>2],r[d+20>>2]=27,Ie[r[d>>2]](h)}r[h+124>>2]=r[h+84>>2]?1:r[h+120>>2],B=0;o:{if(!r[r[h+420>>2]+100>>2]){a=Ie[r[r[h+4>>2]>>2]](h,1,160)|0,r[h+452>>2]=a,r[a+8>>2]=0,r[a+4>>2]=187,r[a>>2]=188;break o}a=r[h+452>>2]}if(r[h+300>>2]&&(d=r[h>>2],r[d+20>>2]=25,Ie[r[d>>2]](h)),d=r[h+76>>2]?r[h+316>>2]>1:0,r[h+36>>2]>0)for(p=r[h+216>>2];;){b=r[h+312>>2],D=r[h+308>>2],Z=r[p+8>>2],C=(B<<2)+a|0,ae=r[p+36>>2],fe=r[h+316>>2],q=(Ce(ae,r[p+12>>2])|0)/(fe|0)|0,r[C+100>>2]=q,Z=(Ce(Z,ae)|0)/(fe|0)|0;o:{if(!r[p+48>>2]){r[C+52>>2]=189;break o}if(!((D|0)!=(Z|0)|(b|0)!=(q|0))){r[C+52>>2]=190;break o}ae=(D|0)!=Z<<1;u:{if(!(ae|(b|0)!=(q|0))){if(!(!d|ni[p+40>>2]<3)){r[C+52>>2]=192;break u}r[C+52>>2]=194;break u}if(fe=q<<1,d&((D|0)==(Z|0)&(fe|0)==(b|0))){r[C+52>>2]=195,r[a+8>>2]=1;break u}if(!((b|0)!=(fe|0)|ae)){if(!(!d|ni[p+40>>2]<3)){r[C+52>>2]=197,r[a+8>>2]=1;break u}r[C+52>>2]=199;break u}l:{if(ae=D,D=(D|0)/(Z|0)|0,ae-Ce(D,Z)|0||(ae=b,b=(b|0)/(q|0)|0,ae-Ce(b,q)|0))break l;r[C+52>>2]=200,q=a+B|0,F[q+150|0]=b,F[q+140|0]=D;break u}b=r[h>>2],r[b+20>>2]=38,Ie[r[b>>2]](h)}if(r[r[h+420>>2]+100>>2])break o;D=C,C=r[h+308>>2],b=(C+r[h+112>>2]|0)-1|0,an=D,wn=Ie[r[r[h+4>>2]+8>>2]](h,1,b-((b|0)%(C|0)|0)|0,r[h+312>>2])|0,r[an+12>>2]=wn}if(p=p+84|0,B=B+1|0,!((B|0)>2]))break}}if(b=r[h+108>>2],d=Ie[r[r[h+4>>2]>>2]](h,1,28)|0,r[h+432>>2]=d,r[d+8>>2]=0,r[d+12>>2]=0,r[d>>2]=201,r[h+84>>2])s:{if(a=r[h+312>>2],r[d+16>>2]=a,p=Ce(r[h+120>>2],r[h+112>>2]),C=r[h+4>>2],b){b=p,p=(a+r[h+116>>2]|0)-1|0,an=d,wn=Ie[r[C+16>>2]](h,1,0,b,p-((p|0)%(a|0)|0)|0,r[d+16>>2])|0,r[an+8>>2]=wn;break s}an=d,wn=Ie[r[C+8>>2]](h,1,p,a)|0,r[an+12>>2]=wn}}if(p=0,d=Ie[r[r[h+4>>2]>>2]](h,1,84)|0,r[h+448>>2]=d,r[d>>2]=205,r[h+36>>2]>0)for(a=r[h+216>>2];C=Ie[r[r[h+4>>2]>>2]](h,1,256)|0,r[a+80>>2]=C,k(C,0,256),r[(d+(p<<2)|0)+44>>2]=-1,a=a+84|0,p=p+1|0,(p|0)>2];);s:{if(r[h+224>>2]){a=0,d=Ie[r[r[h+4>>2]>>2]](h,1,192)|0,r[h+444>>2]=d,r[d>>2]=229,k(d+60|0,0,128),F[d+188|0]=113;o:{if(!r[h+220>>2]||(p=Ie[r[r[h+4>>2]>>2]](h,1,r[h+36>>2]<<9)|0,r[h+160>>2]=p,r[h+36>>2]<=0))break o;for(;p=k(p,255,256)+256|0,a=a+1|0,(a|0)>2];);}break s}if(r[h+220>>2]){if(a=0,d=Ie[r[r[h+4>>2]>>2]](h,1,64)|0,r[h+444>>2]=d,r[d+44>>2]=0,r[d+48>>2]=0,r[d>>2]=237,r[d+52>>2]=0,r[d+56>>2]=0,p=Ie[r[r[h+4>>2]>>2]](h,1,r[h+36>>2]<<9)|0,r[h+160>>2]=p,r[h+36>>2]>0)for(;p=k(p,255,256)+256|0,a=a+1|0,(a|0)>2];);break s}C=r[h+16>>2],D=C?196:104,a=(C?180:88)+h|0,r[a>>2]||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[a>>2]=d,F[d+16|0]=te[144144],p=r[36035],r[d+8>>2]=r[36034],r[d+12>>2]=p,p=r[36033],r[d>>2]=r[36032],r[d+4>>2]=p,p=te[144181]|te[144182]<<8|(te[144183]<<16|te[144184]<<24),d=r[a>>2],b=te[144177]|te[144178]<<8|(te[144179]<<16|te[144180]<<24),F[d+17|0]=b,F[d+18|0]=b>>>8,F[d+19|0]=b>>>16,F[d+20|0]=b>>>24,F[d+21|0]=p,F[d+22|0]=p>>>8,F[d+23|0]=p>>>16,F[d+24|0]=p>>>24,p=te[144185]|te[144186]<<8|(te[144187]<<16|te[144188]<<24),F[d+25|0]=p,F[d+26|0]=p>>>8,F[d+27|0]=p>>>16,F[d+28|0]=p>>>24,k(r[a>>2]+29|0,0,244),r[r[a>>2]+276>>2]=0),a=h+D|0,r[a>>2]||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[a>>2]=d,F[d+16|0]=te[144208],p=r[36051],r[d+8>>2]=r[36050],r[d+12>>2]=p,p=r[36049],r[d>>2]=r[36048],r[d+4>>2]=p,D0(r[a>>2]+17|0,144224,162),k(r[a>>2]+179|0,0,94),r[r[a>>2]+276>>2]=0),a=C?h+180|0:h+88|0,r[a+4>>2]||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[a+4>>2]=d,F[d+16|0]=te[144176],p=r[36043],r[d+8>>2]=r[36042],r[d+12>>2]=p,p=r[36041],r[d>>2]=r[36040],r[d+4>>2]=p,p=te[144181]|te[144182]<<8|(te[144183]<<16|te[144184]<<24),d=r[a+4>>2],b=te[144177]|te[144178]<<8|(te[144179]<<16|te[144180]<<24),F[d+17|0]=b,F[d+18|0]=b>>>8,F[d+19|0]=b>>>16,F[d+20|0]=b>>>24,F[d+21|0]=p,F[d+22|0]=p>>>8,F[d+23|0]=p>>>16,F[d+24|0]=p>>>24,p=te[144185]|te[144186]<<8|(te[144187]<<16|te[144188]<<24),F[d+25|0]=p,F[d+26|0]=p>>>8,F[d+27|0]=p>>>16,F[d+28|0]=p>>>24,k(r[a+4>>2]+29|0,0,244),r[r[a+4>>2]+276>>2]=0),a=C?h+196|0:h+104|0,r[a+4>>2]||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[a+4>>2]=d,F[d+16|0]=te[144416],p=r[36103],r[d+8>>2]=r[36102],r[d+12>>2]=p,p=r[36101],r[d>>2]=r[36100],r[d+4>>2]=p,D0(r[a+4>>2]+17|0,144432,162),k(r[a+4>>2]+179|0,0,94),r[r[a+4>>2]+276>>2]=0),d=Ie[r[r[h+4>>2]>>2]](h,1,232)|0,r[h+444>>2]=d,r[d+40>>2]=0,r[d+44>>2]=0,r[d+4>>2]=235,r[d>>2]=236,r[d+48>>2]=0,r[d+52>>2]=0,r[d+56>>2]=0,r[d+60>>2]=0,d=d- -64|0,r[d>>2]=0,r[d+4>>2]=0}p=r[r[h+436>>2]+16>>2]?1:r[h+64>>2]!=0,a=0,d=Ie[r[r[h+4>>2]>>2]](h,1,120)|0,r[h+428>>2]=d,r[d+116>>2]=0,r[d+8>>2]=242,r[d>>2]=243;s:{if(p){if(r[h+36>>2]>0)for(C=r[h+216>>2];p=r[C+8>>2],b=(p+r[C+28>>2]|0)-1|0,D=b-((b|0)%(p|0)|0)|0,p=r[C+12>>2],b=(p+r[C+32>>2]|0)-1|0,an=d+(a<<2)|0,wn=Ie[r[r[h+4>>2]+20>>2]](h,1,1,D,b-((b|0)%(p|0)|0)|0,r[h+220>>2]?Ce(p,5):p)|0,r[an+76>>2]=wn,C=C+84|0,a=a+1|0,(a|0)>2];);r[d+12>>2]=244,r[d+4>>2]=245,a=d+76|0;break s}p=Ie[r[r[h+4>>2]+4>>2]](h,1,1280)|0,r[d+32>>2]=p,r[d+12>>2]=246,r[d+4>>2]=247,r[d+68>>2]=p+1152,r[d- -64>>2]=p+1024,r[d+60>>2]=p+896,r[d+56>>2]=p+768,r[d+52>>2]=p+640,r[d+48>>2]=p+512,r[d+44>>2]=p+384,r[d+40>>2]=p+256,r[d+36>>2]=p+128}if(r[d+16>>2]=a,an=d,wn=Ie[r[r[h+4>>2]>>2]](h,1,128)|0,r[an+72>>2]=wn,!r[h+68>>2]){a=0,D=Ie[r[r[h+4>>2]>>2]](h,1,80)|0,r[h+424>>2]=D,r[D>>2]=249,d=r[h+316>>2];s:{if(r[r[h+452>>2]+8>>2]){if((d|0)<=1&&(d=r[h>>2],r[d+20>>2]=47,Ie[r[d>>2]](h),d=r[h+316>>2]),b=r[h+424>>2],p=Ie[r[r[h+4>>2]>>2]](h,1,r[h+36>>2]<<3)|0,r[b+56>>2]=p,C=r[h+36>>2],r[b+60>>2]=p+(C<<2),(C|0)>0)for(d=d+4|0,p=r[h+216>>2];C=(Ce(r[p+36>>2],r[p+12>>2])|0)/r[h+316>>2]|0,B=Ce(C,d),q=Ie[r[r[h+4>>2]>>2]](h,1,B<<3)|0,Z=a<<2,C=q+(C<<2)|0,r[Z+r[b+56>>2]>>2]=C,r[Z+r[b+60>>2]>>2]=C+(B<<2),p=p+84|0,a=a+1|0,C=r[h+36>>2],(a|0)<(C|0););d=r[h+316>>2]+2|0;break s}C=r[h+36>>2]}if((C|0)>0)for(p=r[h+216>>2],a=0;C=r[p+36>>2],an=D+(a<<2)|0,wn=Ie[r[r[h+4>>2]+8>>2]](h,1,Ce(C,r[p+28>>2]),Ce((Ce(C,r[p+12>>2])|0)/r[h+316>>2]|0,d))|0,r[an+8>>2]=wn,p=p+84|0,a=a+1|0,(a|0)>2];);}if(Ie[r[r[h+4>>2]+24>>2]](h),Ie[r[r[h+436>>2]+8>>2]](h),d=r[h+420>>2],r[d+12>>2]=0,a=r[h+348>>2],r[d+104>>2]=0,r[d+16>>2]=a-1,d=r[h+8>>2],!r[r[h+436>>2]+16>>2]|(r[h+64>>2]|!d)||(p=r[h+220>>2],a=r[h+36>>2],r[d+4>>2]=0,C=r[h+320>>2],r[d+12>>2]=0,r[d+8>>2]=Ce(C,p?Ce(a,3)+2|0:a),r[d+16>>2]=r[h+108>>2]?3:2,r[ve+108>>2]=r[ve+108>>2]+1),d=207,r[h+64>>2])break t;r[h+20>>2]=203}a:{if(!r[r[h+436>>2]+16>>2])break a;for(d=r[h+8>>2];;){d&&Ie[r[d>>2]](h);s:switch(a=Ie[r[r[h+436>>2]>>2]](h)|0,a|0){case 0:break e;case 2:break a;default:break s}d=r[h+8>>2],!(!d|(a&-3)!=1)&&(a=r[d+4>>2]+1|0,r[d+4>>2]=a,C=a,a=r[d+8>>2],!((C|0)<(a|0))&&(r[d+8>>2]=a+r[h+320>>2]))}}r[h+152>>2]=r[h+144>>2];break r}a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=20,Ie[r[r[h>>2]>>2]](h)}if(r[h+20>>2]==204)break n;Ie[r[r[h+420>>2]>>2]](h),r[h+20>>2]=204,r[h+140>>2]=0}if(r[r[h+420>>2]+8>>2])for(C=h+140|0,d=r[h+140>>2];;){if(p=r[h+116>>2],p>>>0>d>>>0){if(a=r[h+8>>2],a&&(r[a+8>>2]=p,r[a+4>>2]=d,Ie[r[a>>2]](h),d=r[h+140>>2]),a=0,Ie[r[r[h+424>>2]+4>>2]](h,0,C,0),p=d,d=r[h+140>>2],(p|0)!=(d|0))continue;break e}if(Ie[r[r[h+420>>2]+4>>2]](h),Ie[r[r[h+420>>2]>>2]](h),d=0,r[h+140>>2]=0,!r[r[h+420>>2]+8>>2])break}d=r[h+68>>2]?206:205}r[h+20>>2]=d,a=1}return a|0}function yp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;ae=hn-32|0,hn=ae,F[ae+27|0]=0,F[ae+28|0]=0,F[ae+29|0]=0,F[ae+30|0]=0,r[ae+24>>2]=0,D=d<<2,r[h+36>>2]=r[D+144816>>2],r[h+40>>2]=r[D+144992>>2],D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+68>>2]||(Le=h,We=Ie[r[r[h+4>>2]>>2]](h,0,840)|0,r[Le+68>>2]=We),r[h+56>>2]=8,f(h,50),Z=r[h+16>>2],ve=Z?196:104,b=(Z?180:88)+h|0,r[b>>2]||(D=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[D+276>>2]=0,r[b>>2]=D,F[D+16|0]=te[142624],B=r[35655],r[D+8>>2]=r[35654],r[D+12>>2]=B,B=r[35653],r[D>>2]=r[35652],r[D+4>>2]=B,B=te[142661]|te[142662]<<8|(te[142663]<<16|te[142664]<<24),D=r[b>>2],q=te[142657]|te[142658]<<8|(te[142659]<<16|te[142660]<<24),F[D+17|0]=q,F[D+18|0]=q>>>8,F[D+19|0]=q>>>16,F[D+20|0]=q>>>24,F[D+21|0]=B,F[D+22|0]=B>>>8,F[D+23|0]=B>>>16,F[D+24|0]=B>>>24,B=te[142665]|te[142666]<<8|(te[142667]<<16|te[142668]<<24),F[D+25|0]=B,F[D+26|0]=B>>>8,F[D+27|0]=B>>>16,F[D+28|0]=B>>>24,k(r[b>>2]+29|0,0,244),r[r[b>>2]+276>>2]=0),b=h+ve|0,r[b>>2]||(D=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[D+276>>2]=0,r[b>>2]=D,F[D+16|0]=te[142688],B=r[35671],r[D+8>>2]=r[35670],r[D+12>>2]=B,B=r[35669],r[D>>2]=r[35668],r[D+4>>2]=B,D0(r[b>>2]+17|0,142704,162),k(r[b>>2]+179|0,0,94),r[r[b>>2]+276>>2]=0),b=Z?h+180|0:h+88|0,r[b+4>>2]||(D=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[D+276>>2]=0,r[b+4>>2]=D,F[D+16|0]=te[142656],B=r[35663],r[D+8>>2]=r[35662],r[D+12>>2]=B,B=r[35661],r[D>>2]=r[35660],r[D+4>>2]=B,B=te[142661]|te[142662]<<8|(te[142663]<<16|te[142664]<<24),D=r[b+4>>2],q=te[142657]|te[142658]<<8|(te[142659]<<16|te[142660]<<24),F[D+17|0]=q,F[D+18|0]=q>>>8,F[D+19|0]=q>>>16,F[D+20|0]=q>>>24,F[D+21|0]=B,F[D+22|0]=B>>>8,F[D+23|0]=B>>>16,F[D+24|0]=B>>>24,B=te[142665]|te[142666]<<8|(te[142667]<<16|te[142668]<<24),F[D+25|0]=B,F[D+26|0]=B>>>8,F[D+27|0]=B>>>16,F[D+28|0]=B>>>24,k(r[b+4>>2]+29|0,0,244),r[r[b+4>>2]+276>>2]=0),b=Z?h+196|0:h+104|0,r[b+4>>2]||(D=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[D+276>>2]=0,r[b+4>>2]=D,F[D+16|0]=te[142896],B=r[35723],r[D+8>>2]=r[35722],r[D+12>>2]=B,B=r[35721],r[D>>2]=r[35720],r[D+4>>2]=B,D0(r[b+4>>2]+17|0,142912,162),k(r[b+4>>2]+179|0,0,94),r[r[b+4>>2]+276>>2]=0),r[h+168>>2]=0,r[h+172>>2]=0,r[h+188>>2]=0,r[h+192>>2]=0,r[h+216>>2]=65537,F[h+214|0]=0,He[h+212>>1]=257,F[h+128|0]=0,F[h+129|0]=0,F[h+130|0]=0,F[h+131|0]=0,F[h+132|0]=0,F[h+133|0]=0,F[h+134|0]=0,F[h+135|0]=0,F[h+120|0]=0,F[h+121|0]=0,F[h+122|0]=0,F[h+123|0]=0,F[h+124|0]=0,F[h+125|0]=0,F[h+126|0]=0,F[h+127|0]=0,F[h+136|0]=1,F[h+137|0]=1,F[h+138|0]=1,F[h+139|0]=1,F[h+140|0]=1,F[h+141|0]=1,F[h+142|0]=1,F[h+143|0]=1,F[h+144|0]=1,F[h+145|0]=1,F[h+146|0]=1,F[h+147|0]=1,F[h+148|0]=1,F[h+149|0]=1,F[h+150|0]=1,F[h+151|0]=1,F[h+152|0]=5,F[h+153|0]=5,F[h+154|0]=5,F[h+155|0]=5,F[h+156|0]=5,F[h+157|0]=5,F[h+158|0]=5,F[h+159|0]=5,F[h+160|0]=5,F[h+161|0]=5,F[h+162|0]=5,F[h+163|0]=5,F[h+164|0]=5,F[h+165|0]=5,F[h+166|0]=5,F[h+167|0]=5,r[h+176>>2]=0,r[h+180>>2]=0,r[h+196>>2]=0,r[h+200>>2]=0,r[h+204>>2]=0,r[h+184>>2]=r[h+56>>2]>8;e:{t:{n:switch(r[h+40>>2]){case 1:D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+220>>2]=0,r[h+60>>2]=1,r[h+64>>2]=1,r[h+208>>2]=1,D=r[h+68>>2],r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=1;break e;case 4:D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+220>>2]=1,r[h+208>>2]=0,r[h+60>>2]=4,r[h+64>>2]=4,D=r[h+68>>2],r[D+252>>2]=75,r[D+168>>2]=89,r[D+84>>2]=77,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=67,r[D+276>>2]=0,r[D+268>>2]=0,r[D+272>>2]=0,r[D+260>>2]=1,r[D+264>>2]=1,r[D+192>>2]=0,r[D+184>>2]=0,r[D+188>>2]=0,r[D+176>>2]=1,r[D+180>>2]=1,r[D+108>>2]=0,r[D+100>>2]=0,r[D+104>>2]=0,r[D+92>>2]=1,r[D+96>>2]=1;break e;case 5:D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+220>>2]=1,r[h+208>>2]=0,r[h+60>>2]=4,r[h+64>>2]=5,b=r[h+68>>2],r[b+252>>2]=4,r[b+168>>2]=3,r[b+84>>2]=2,r[b+24>>2]=0,r[b+16>>2]=0,r[b+20>>2]=0,r[b+8>>2]=2,r[b+12>>2]=2,r[b>>2]=1,r[b+276>>2]=0,r[b+268>>2]=0,r[b+272>>2]=0,r[b+260>>2]=2,r[b+264>>2]=2;break t;case 0:D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),B=0,r[h+220>>2]=0,r[h+208>>2]=0,r[h+64>>2]=0,b=r[h+36>>2],r[h+60>>2]=b;r:{if(b-11>>>0<=4294967285&&(D=r[h>>2],r[D+24>>2]=b,r[D+20>>2]=26,r[r[h>>2]+28>>2]=10,Ie[r[r[h>>2]>>2]](h),b=r[h+60>>2],(b|0)<=0))break r;if(q=b&1,Z=r[h+68>>2],(b|0)!=1)for(ve=b&-2,b=0;D=Z+Ce(B,84)|0,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=B,Se=B|1,D=Z+Ce(Se,84)|0,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=Se,B=B+2|0,b=b+2|0,(ve|0)!=(b|0););if(!q)break r;D=Z+Ce(B,84)|0,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=B}break e;default:D=r[h>>2],r[D+20>>2]=9,Ie[r[D>>2]](h);break e;case 2:case 3:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:break n}D=r[h+20>>2],(D|0)!=100&&(b=r[h>>2],r[b+24>>2]=D,r[b+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+220>>2]=0,r[h+60>>2]=3,r[h+64>>2]=3,r[h+208>>2]=1,b=r[h+68>>2],r[b+168>>2]=3,r[b+84>>2]=2,r[b+24>>2]=0,r[b+16>>2]=0,r[b+20>>2]=0,r[b+8>>2]=2,r[b+12>>2]=2,r[b>>2]=1}r[b+192>>2]=1,r[b+184>>2]=1,r[b+188>>2]=1,r[b+176>>2]=1,r[b+180>>2]=1,r[b+108>>2]=1,r[b+100>>2]=1,r[b+104>>2]=1,r[b+92>>2]=1,r[b+96>>2]=1}e:{t:{D=Vf(7807);n:{if(!D){F[ae+24|0]=0;break n}if(Vc(D)-7>>>0<4294967288)break t;Ci(ae+24|0,D,7)}if(En[ae+24>>1]!=49)break e;r[h+184>>2]=1;break e}F[ae+24|0]=0}e:{t:{D=Vf(7849);n:{if(!D){F[ae+24|0]=0;break n}if(Vc(D)-7>>>0<4294967288)break t;Ci(ae+24|0,D,7)}if(En[ae+24>>1]!=49)break e;r[h+180>>2]=1;break e}F[ae+24|0]=0}D=Vf(7560);e:{if(!D){F[ae+24|0]=0;break e}if(Vc(D)-7>>>0<=4294967287){F[ae+24|0]=0;break e}if(D=Ci(ae+24|0,D,7),!te[D|0]||(r[ae+20>>2]=-1,F[ae+19|0]=0,r[ae>>2]=ae+20,r[ae+4>>2]=ae+19,(m4(D,7437,ae)|0)<=0)||(D=r[ae+20>>2],(D|0)<0|(D|0)>65535))break e;b=F[ae+19|0],((b-97>>>0<26?b&95:b)|0)==66&&(r[h+200>>2]=D,D=0),r[h+204>>2]=D}if((p|0)>=0){D=(p|0)<=1?1:p,D=D>>>0>=100?100:D;e:{if(D>>>0<=49){f(h,5e3/((D&65535)>>>0)|0);break e}f(h,200-(D<<1)|0)}r[h+196>>2]=!(C&4096)&p>>>0<96}p=r[h+20>>2],(p|0)!=100&&(D=r[h>>2],r[D+24>>2]=p,r[D+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),r[h+220>>2]=0,r[h+208>>2]=0,d=(a|0)==3?1:(d|0)==11?5:3,r[h+64>>2]=d;e:{t:{n:{r:switch(d|0){case 1:r[h+60>>2]=1,r[h+208>>2]=1,d=r[h+68>>2],r[d+24>>2]=0,r[d+16>>2]=0,r[d+20>>2]=0,r[d+8>>2]=1,r[d+12>>2]=1,r[d>>2]=1;break e;case 2:r[h+60>>2]=3,r[h+220>>2]=1,d=r[h+68>>2],r[d+168>>2]=66,r[d+84>>2]=71,r[d+24>>2]=0,r[d+16>>2]=0,r[d+20>>2]=0,r[d+8>>2]=1,r[d+12>>2]=1,r[d>>2]=82;break n;case 3:r[h+60>>2]=3,r[h+208>>2]=1,d=r[h+68>>2],r[d+168>>2]=3,r[d+84>>2]=2,r[d+24>>2]=0,r[d+16>>2]=0,r[d+20>>2]=0,r[d+8>>2]=2,r[d+12>>2]=2,r[d>>2]=1;break t;case 4:r[h+60>>2]=4,r[h+220>>2]=1,d=r[h+68>>2],r[d+252>>2]=75,r[d+168>>2]=89,r[d+84>>2]=77,r[d+24>>2]=0,r[d+16>>2]=0,r[d+20>>2]=0,r[d+8>>2]=1,r[d+12>>2]=1,r[d>>2]=67,r[d+276>>2]=0,r[d+268>>2]=0,r[d+272>>2]=0,r[d+260>>2]=1,r[d+264>>2]=1;break n;case 5:r[h+60>>2]=4,r[h+220>>2]=1,d=r[h+68>>2],r[d+252>>2]=4,r[d+168>>2]=3,r[d+84>>2]=2,r[d+24>>2]=0,r[d+16>>2]=0,r[d+20>>2]=0,r[d+8>>2]=2,r[d+12>>2]=2,r[d>>2]=1,r[d+276>>2]=0,r[d+268>>2]=0,r[d+272>>2]=0,r[d+260>>2]=2,r[d+264>>2]=2;break t;case 0:p=r[h+36>>2],r[h+60>>2]=p;i:{if(p-11>>>0<=4294967285&&(d=r[h>>2],r[d+24>>2]=p,r[d+20>>2]=26,r[r[h>>2]+28>>2]=10,Ie[r[r[h>>2]>>2]](h),p=r[h+60>>2],(p|0)<=0))break i;if(b=r[h+68>>2],d=0,(p|0)!=1)for(B=p&-2;D=b+Ce(d,84)|0,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=d,Z=d|1,D=b+Ce(Z,84)|0,r[D+24>>2]=0,r[D+16>>2]=0,r[D+20>>2]=0,r[D+8>>2]=1,r[D+12>>2]=1,r[D>>2]=Z,d=d+2|0,fe=fe+2|0,(B|0)!=(fe|0););if(!(p&1))break i;p=b+Ce(d,84)|0,r[p+24>>2]=0,r[p+16>>2]=0,r[p+20>>2]=0,r[p+8>>2]=1,r[p+12>>2]=1,r[p>>2]=d}break e;default:break r}d=r[h>>2],r[d+20>>2]=10,Ie[r[d>>2]](h);break e}r[d+192>>2]=0,r[d+184>>2]=0,r[d+188>>2]=0,r[d+176>>2]=1,r[d+180>>2]=1,r[d+108>>2]=0,r[d+100>>2]=0,r[d+104>>2]=0,r[d+92>>2]=1,r[d+96>>2]=1;break e}r[d+192>>2]=1,r[d+184>>2]=1,r[d+188>>2]=1,r[d+176>>2]=1,r[d+180>>2]=1,r[d+108>>2]=1,r[d+100>>2]=1,r[d+104>>2]=1,r[d+92>>2]=1,r[d+96>>2]=1}e:{if(!(C&16384)){d=Vf(7819);t:{if(!d){F[ae+24|0]=0;break t}if(Vc(d)-7>>>0<4294967288)break e;Ci(ae+24|0,d,7)}if(En[ae+24>>1]!=49)break e}p=0,D=r[h+60>>2],d=r[h+20>>2],(d|0)!=100&&(C=r[h>>2],r[C+24>>2]=d,r[C+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),d=r[h+368>>2];t:{n:{if((D|0)==3){if(C=10,r[h+64>>2]==3)break t;break n}if((D|0)<5)break n;C=Ce(D,6);break t}C=D<<2|2}(C|0)<=r[h+372>>2]&&d||(d=(C|0)<=10?10:C,r[h+372>>2]=d,d=Ie[r[r[h+4>>2]>>2]](h,0,Ce(d,36))|0,r[h+368>>2]=d),r[h+168>>2]=C,r[h+172>>2]=d;t:{n:{r:{i:{if((D|0)!=3){a:{s:{o:{if((D|0)>=5){if(b=D&3,B=0,D-1>>>0>=3)break o;C=0;break s}r[d>>2]=D;u:{if((D|0)<=0||(r[d+4>>2]=0,(D|0)==1)||(r[d+8>>2]=1,(D|0)==2)||(r[d+12>>2]=2,(D|0)==3))break u;r[d+16>>2]=3}r[d+28>>2]=0,r[d+32>>2]=1,r[d+20>>2]=0,r[d+24>>2]=0,d=d+36|0;break a}for(fe=D&-4,C=0;r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=0,r[d+32>>2]=1,r[d+20>>2]=0,r[d+24>>2]=0,r[d+4>>2]=C,r[d>>2]=1,r[d+136>>2]=0,r[d+140>>2]=1,r[d+128>>2]=0,r[d+132>>2]=0,r[d+112>>2]=C|3,r[d+100>>2]=0,r[d+104>>2]=1,r[d+92>>2]=0,r[d+96>>2]=0,r[d+76>>2]=C|2,Z=d- -64|0,r[Z>>2]=0,r[Z+4>>2]=1,r[d+56>>2]=0,r[d+60>>2]=0,r[d+40>>2]=C|1,C=C+4|0,d=d+144|0,p=p+4|0,(fe|0)!=(p|0););}if(!b)break a;for(;r[d+28>>2]=0,r[d+32>>2]=1,r[d+20>>2]=0,r[d+24>>2]=0,r[d+4>>2]=C,r[d>>2]=1,C=C+1|0,d=d+36|0,B=B+1|0,(b|0)!=(B|0););}if((D|0)<=0)break i;fe=D&3,B=0,b=D-1|0;a:{if(b>>>0<3){C=0;break a}for(Z=D&-4,C=0,p=0;r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=0,r[d+32>>2]=2,r[d+20>>2]=1,r[d+24>>2]=5,r[d+4>>2]=C,r[d>>2]=1,r[d+136>>2]=0,r[d+140>>2]=2,r[d+128>>2]=1,r[d+132>>2]=5,r[d+112>>2]=C|3,r[d+100>>2]=0,r[d+104>>2]=2,r[d+92>>2]=1,r[d+96>>2]=5,r[d+76>>2]=C|2,q=d- -64|0,r[q>>2]=0,r[q+4>>2]=2,r[d+56>>2]=1,r[d+60>>2]=5,r[d+40>>2]=C|1,C=C+4|0,d=d+144|0,p=p+4|0,(Z|0)!=(p|0););}if(fe)for(;r[d+28>>2]=0,r[d+32>>2]=2,r[d+20>>2]=1,r[d+24>>2]=5,r[d+4>>2]=C,r[d>>2]=1,C=C+1|0,d=d+36|0,B=B+1|0,(fe|0)!=(B|0););fe=D&3,B=0;a:{if(b>>>0<3){C=0;break a}for(Z=D&-4,C=0,p=0;r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=0,r[d+32>>2]=2,r[d+20>>2]=6,r[d+24>>2]=63,r[d+4>>2]=C,r[d>>2]=1,r[d+136>>2]=0,r[d+140>>2]=2,r[d+128>>2]=6,r[d+132>>2]=63,r[d+112>>2]=C|3,r[d+100>>2]=0,r[d+104>>2]=2,r[d+92>>2]=6,r[d+96>>2]=63,r[d+76>>2]=C|2,q=d- -64|0,r[q>>2]=0,r[q+4>>2]=2,r[d+56>>2]=6,r[d+60>>2]=63,r[d+40>>2]=C|1,C=C+4|0,d=d+144|0,p=p+4|0,(Z|0)!=(p|0););}if(fe)for(;r[d+28>>2]=0,r[d+32>>2]=2,r[d+20>>2]=6,r[d+24>>2]=63,r[d+4>>2]=C,r[d>>2]=1,C=C+1|0,d=d+36|0,B=B+1|0,(fe|0)!=(B|0););Z=D&3,fe=0;a:{if(b>>>0<3){B=0;break a}for(q=D&-4,B=0,p=0;C=d,r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=2,r[d+32>>2]=1,r[d+20>>2]=1,r[d+24>>2]=63,r[d+4>>2]=B,r[d>>2]=1,r[d+136>>2]=2,r[d+140>>2]=1,r[d+128>>2]=1,r[d+132>>2]=63,r[d+112>>2]=B|3,r[d+100>>2]=2,r[d+104>>2]=1,r[d+92>>2]=1,r[d+96>>2]=63,r[d+76>>2]=B|2,ve=d- -64|0,r[ve>>2]=2,r[ve+4>>2]=1,r[d+56>>2]=1,r[d+60>>2]=63,r[d+40>>2]=B|1,B=B+4|0,d=d+144|0,p=p+4|0,(q|0)!=(p|0););p=C+108|0}if(Z)for(;p=d,r[d+28>>2]=2,r[d+32>>2]=1,r[d+20>>2]=1,r[d+24>>2]=63,r[d+4>>2]=B,r[d>>2]=1,B=B+1|0,d=d+36|0,fe=fe+1|0,(Z|0)!=(fe|0););a:{s:{if((D|0)>=5){if(fe=D&3,B=0,b>>>0>=3)break s;C=0;break a}if(r[d>>2]=D,fe=0,C=0,b>>>0>=7)for(B=D&-8,b=p+40|0,Z=0;r[b+(C<<2)>>2]=C,q=C|1,r[b+(q<<2)>>2]=q,q=C|2,r[b+(q<<2)>>2]=q,q=C|3,r[b+(q<<2)>>2]=q,q=C|4,r[b+(q<<2)>>2]=q,q=C|5,r[b+(q<<2)>>2]=q,q=C|6,r[b+(q<<2)>>2]=q,q=C|7,r[b+(q<<2)>>2]=q,C=C+8|0,Z=Z+8|0,(B|0)!=(Z|0););if(b=D&7,!b)break r;for(;r[((C<<2)+p|0)+40>>2]=C,C=C+1|0,fe=fe+1|0,(b|0)!=(fe|0););break r}for(b=D&-4,C=0,p=0;r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=0,r[d+24>>2]=0,r[d+4>>2]=C,r[d>>2]=1,r[d+136>>2]=1,r[d+140>>2]=0,r[d+128>>2]=0,r[d+132>>2]=0,r[d+112>>2]=C|3,r[d+100>>2]=1,r[d+104>>2]=0,r[d+92>>2]=0,r[d+96>>2]=0,r[d+76>>2]=C|2,Z=d- -64|0,r[Z>>2]=1,r[Z+4>>2]=0,r[d+56>>2]=0,r[d+60>>2]=0,r[d+40>>2]=C|1,C=C+4|0,d=d+144|0,p=p+4|0,(b|0)!=(p|0););}if(!fe)break n;for(;r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=0,r[d+24>>2]=0,r[d+4>>2]=C,r[d>>2]=1,C=C+1|0,d=d+36|0,B=B+1|0,(fe|0)!=(B|0););break n}B=8,C=r[h+64>>2],r[d+8>>2]=1,r[d+12>>2]=2,r[d>>2]=3,r[d+4>>2]=0,r[d+72>>2]=1,D=d- -64|0,r[D>>2]=0,r[D+4>>2]=2,r[d+56>>2]=1,r[d+60>>2]=5,r[d+36>>2]=1,r[d+40>>2]=0,r[d+28>>2]=0,r[d+32>>2]=1,r[d+20>>2]=0,r[d+24>>2]=0;a:{if((C|0)!=3){r[d+360>>2]=3,r[d+324>>2]=1,r[d+328>>2]=2,r[d+288>>2]=1,r[d+292>>2]=1,r[d+252>>2]=1,r[d+256>>2]=0,r[d+216>>2]=1,r[d+220>>2]=2,r[d+180>>2]=1,r[d+184>>2]=1,r[d+144>>2]=1,r[d+148>>2]=0,r[d+108>>2]=1,r[d+112>>2]=2,r[d+92>>2]=1,r[d+96>>2]=5,r[d+76>>2]=1,r[d+352>>2]=2,r[d+356>>2]=1,r[d+344>>2]=1,r[d+348>>2]=63,r[d+316>>2]=2,r[d+320>>2]=1,r[d+308>>2]=1,r[d+312>>2]=63,r[d+280>>2]=2,r[d+284>>2]=1,r[d+272>>2]=1,r[d+276>>2]=63,r[d+244>>2]=0,r[d+248>>2]=2,r[d+236>>2]=6,r[d+240>>2]=63,r[d+208>>2]=0,r[d+212>>2]=2,r[d+200>>2]=6,r[d+204>>2]=63,r[d+172>>2]=0,r[d+176>>2]=2,r[d+164>>2]=6,r[d+168>>2]=63,r[d+136>>2]=0,r[d+140>>2]=2,r[d+128>>2]=1,r[d+132>>2]=5,r[d+100>>2]=0,r[d+104>>2]=2,p=2,fe=13,B=12,b=0,Z=11,D=d+364|0,C=10;break a}r[d+216>>2]=3,r[d+180>>2]=1,r[d+184>>2]=0,r[d+144>>2]=1,r[d+148>>2]=0,r[d+108>>2]=1,r[d+112>>2]=1,r[d+92>>2]=1,r[d+96>>2]=63,b=2,r[d+76>>2]=2,r[d+208>>2]=2,r[d+212>>2]=1,r[d+200>>2]=1,r[d+204>>2]=63,r[d+172>>2]=0,r[d+176>>2]=2,r[d+164>>2]=6,r[d+168>>2]=63,r[d+136>>2]=0,r[d+140>>2]=1,r[d+128>>2]=1,r[d+132>>2]=63,r[d+100>>2]=0,r[d+104>>2]=1,fe=9,Z=7,D=d+220|0,C=6}r[D>>2]=0,C=Ce(C,36)+d|0,r[C+28>>2]=1,r[C+32>>2]=0,r[C+20>>2]=0,r[C+24>>2]=0,r[C+8>>2]=1,r[C+12>>2]=2,C=Ce(Z,36)+d|0,r[C+28>>2]=1,r[C+32>>2]=0,r[C+20>>2]=1,r[C+24>>2]=63,r[C+4>>2]=b,r[C>>2]=1,C=Ce(B,36)+d|0,r[C+28>>2]=1,r[C+32>>2]=0,r[C+20>>2]=1,r[C+24>>2]=63,r[C>>2]=1,r[C+4>>2]=1,d=Ce(fe,36)+d|0,r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=1,r[d+24>>2]=63,r[d+4>>2]=p,r[d>>2]=1;break t}r[d>>2]=D}r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=0,r[d+24>>2]=0,d=d+36|0}if((D|0)<=0)break t;b=D&3,B=0;n:{if(D-1>>>0<3){C=0;break n}for(D=D&-4,C=0,p=0;r[d+108>>2]=1,r[d+72>>2]=1,r[d+36>>2]=1,r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=1,r[d+24>>2]=63,r[d+4>>2]=C,r[d>>2]=1,r[d+136>>2]=1,r[d+140>>2]=0,r[d+128>>2]=1,r[d+132>>2]=63,r[d+112>>2]=C|3,r[d+100>>2]=1,r[d+104>>2]=0,r[d+92>>2]=1,r[d+96>>2]=63,r[d+76>>2]=C|2,fe=d- -64|0,r[fe>>2]=1,r[fe+4>>2]=0,r[d+56>>2]=1,r[d+60>>2]=63,r[d+40>>2]=C|1,C=C+4|0,d=d+144|0,p=p+4|0,(D|0)!=(p|0););}if(!b)break t;for(;r[d+28>>2]=1,r[d+32>>2]=0,r[d+20>>2]=1,r[d+24>>2]=63,r[d+4>>2]=C,r[d>>2]=1,C=C+1|0,d=d+36|0,B=B+1|0,(b|0)!=(B|0););}}d=r[h+68>>2],r[d+176>>2]=1,r[d+92>>2]=1,a=a<<2,p=r[a+144752>>2]/8|0,r[d+8>>2]=p;e:{if(r[h+60>>2]<=3){h=r[a+144784>>2]/8|0;break e}r[d+260>>2]=p,h=r[a+144784>>2]/8|0,r[d+264>>2]=h}r[d+12>>2]=h,r[d+180>>2]=1,r[d+96>>2]=1,hn=ae+32|0}function g5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0;for(mt=hn-256|0,hn=mt,d=r[h+416>>2];;){e:{t:{n:{if(d)break n;if(!r[r[h+440>>2]+12>>2]){if(b=r[h+24>>2],d=r[b+4>>2],!d){if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}d=r[b+4>>2]}if(a=r[b>>2],q=te[a|0],p=d-1|0,p)d=a+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}p=r[b+4>>2],d=r[b>>2]}B=d+1|0,d=te[d|0],(q|0)==255&(d|0)==216||(a=r[h>>2],r[a+24>>2]=q,r[a+20>>2]=53,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]>>2]](h)),r[h+416>>2]=d,r[b+4>>2]=p-1,r[b>>2]=B;break n}if(!u0(h)){d=0;break t}d=r[h+416>>2]}n:{r:switch(d-1|0){case 215:d=r[h>>2],r[d+20>>2]=102,Ie[r[d+4>>2]](h,1),d=r[h+440>>2],r[d+12>>2]&&(d=r[h>>2],r[d+20>>2]=61,Ie[r[d>>2]](h),d=r[h+440>>2]),F[h+228|0]=0,F[h+229|0]=0,F[h+230|0]=0,F[h+231|0]=0,F[h+232|0]=0,F[h+233|0]=0,F[h+234|0]=0,F[h+235|0]=0,F[h+236|0]=0,F[h+237|0]=0,F[h+238|0]=0,F[h+239|0]=0,F[h+240|0]=0,F[h+241|0]=0,F[h+242|0]=0,F[h+243|0]=0,F[h+252|0]=1,F[h+253|0]=1,F[h+254|0]=1,F[h+255|0]=1,F[h+256|0]=1,F[h+257|0]=1,F[h+258|0]=1,F[h+259|0]=1,F[h+244|0]=1,F[h+245|0]=1,F[h+246|0]=1,F[h+247|0]=1,F[h+248|0]=1,F[h+249|0]=1,F[h+250|0]=1,F[h+251|0]=1,F[h+268|0]=5,F[h+269|0]=5,F[h+270|0]=5,F[h+271|0]=5,F[h+272|0]=5,F[h+273|0]=5,F[h+274|0]=5,F[h+275|0]=5,F[h+260|0]=5,F[h+261|0]=5,F[h+262|0]=5,F[h+263|0]=5,F[h+264|0]=5,F[h+265|0]=5,F[h+266|0]=5,F[h+267|0]=5,r[h+300>>2]=0,r[h+40>>2]=0,r[h+276>>2]=0,r[h+280>>2]=0,F[h+296|0]=0,r[h+288>>2]=65537,r[h+292>>2]=0,F[h+286|0]=0,He[h+284>>1]=257,r[d+12>>2]=1;break e;case 193:if(d=0,pu(h,1,0))break e;break t;case 200:if(d=0,pu(h,0,1))break e;break t;case 201:if(pu(h,1,1))break e;d=0;break t;case 194:case 196:case 197:case 198:case 199:case 202:case 204:case 205:case 206:p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=60,Ie[r[r[h>>2]>>2]](h);break e;case 217:if(ae=r[h+24>>2],d=r[ae+4>>2],a=r[ae>>2],r[r[h+440>>2]+16>>2]||(p=r[h>>2],r[p+20>>2]=62,Ie[r[p>>2]](h)),!d){if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}a=r[ae>>2],d=r[ae+4>>2]}if(B=te[a|0],D=d-1|0,D)d=a+1|0;else{if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}D=r[ae+4>>2],d=r[ae>>2]}if(a=te[d|0],D=D-1|0,D)d=d+1|0;else{if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}D=r[ae+4>>2],d=r[ae>>2]}p=r[h>>2],Z=te[d|0],r[p+24>>2]=Z,r[p+20>>2]=103,Ie[r[r[h>>2]+4>>2]](h,1);i:{a:{if(!(!Z|((Z<<1)+6|0)!=(a|B<<8)|Z>>>0>4)){r[h+328>>2]=Z,r[h+332>>2]=0,r[h+336>>2]=0,r[h+340>>2]=0,r[h+344>>2]=0,a=d+1|0,d=D-1|0;break a}if(p=r[h>>2],r[p+20>>2]=11,Ie[r[p>>2]](h),r[h+332>>2]=0,r[h+336>>2]=0,r[h+328>>2]=Z,r[h+340>>2]=0,r[h+344>>2]=0,a=d+1|0,d=D-1|0,!Z)break i}for(fe=0;;){if(!d){if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}a=r[ae>>2],d=r[ae+4>>2]}if(Se=te[a|0],Le=d-1|0,Le)B=a+1|0;else{if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}Le=r[ae+4>>2],B=r[ae>>2]}d=r[h+216>>2],q=te[B|0],p=r[h+36>>2];a:{s:{if((p|0)<=0){p=d;break s}if(!(r[h+332>>2]|(Se|0)!=r[d>>2])){a=d;break a}if(p=p-1|0,b=p>>>0>=3?3:p,p=(d+Ce(b,84)|0)+84|0,!b)break s;if(a=d+84|0,!r[h+336>>2]&(Se|0)==r[a>>2])break a;if((b|0)==1)break s;if(a=d+168|0,!r[h+340>>2]&(Se|0)==r[a>>2])break a;if((b|0)==2||(a=d+252|0,(Se|0)!=r[a>>2]))break s;if(!r[h+344>>2])break a}d=r[h>>2],r[d+24>>2]=Se,r[d+20>>2]=5,Ie[r[r[h>>2]>>2]](h),a=p}r[((fe<<2)+h|0)+332>>2]=a,r[a+24>>2]=q&15,r[a+20>>2]=q>>>4,p=r[h>>2],r[p+24>>2]=Se,r[p+28>>2]=r[a+20>>2],d=r[a+24>>2],r[p+20>>2]=104,r[p+32>>2]=d,Ie[r[p+4>>2]](h,1);a:{if(!fe)break a;if(d=0,(fe|0)!=1)for(b=fe&-2,D=0;q=d<<2,r[(q+h|0)+332>>2]==(a|0)&&(p=r[h>>2],r[p+24>>2]=Se,r[p+20>>2]=5,Ie[r[r[h>>2]>>2]](h)),r[((q|4)+h|0)+332>>2]==(a|0)&&(p=r[h>>2],r[p+24>>2]=Se,r[p+20>>2]=5,Ie[r[r[h>>2]>>2]](h)),d=d+2|0,D=D+2|0,(b|0)!=(D|0););if(!(fe&1)|r[((d<<2)+h|0)+332>>2]!=(a|0))break a;d=r[h>>2],r[d+24>>2]=Se,r[d+20>>2]=5,Ie[r[r[h>>2]>>2]](h)}if(a=B+1|0,d=Le-1|0,fe=fe+1|0,(Z|0)==(fe|0))break}}if(!d){if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}a=r[ae>>2],d=r[ae+4>>2]}if(r[h+400>>2]=te[a|0],D=d-1|0,D)d=a+1|0;else{if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}D=r[ae+4>>2],d=r[ae>>2]}if(r[h+404>>2]=te[d|0],p=D-1|0,p)a=d+1|0;else{if(!(Ie[r[ae+12>>2]](h)|0)){d=0;break t}p=r[ae+4>>2],a=r[ae>>2]}d=te[a|0],r[h+412>>2]=d&15,r[h+408>>2]=d>>>4,B=r[h>>2],r[B+24>>2]=r[h+400>>2],r[B+28>>2]=r[h+404>>2],r[B+32>>2]=r[h+408>>2],r[B+36>>2]=r[h+412>>2],r[B+20>>2]=105,d=1,Ie[r[B+4>>2]](h,1),r[r[h+440>>2]+20>>2]=0,r[h+144>>2]=r[h+144>>2]+1,r[ae+4>>2]=p-1,r[ae>>2]=a+1,r[h+416>>2]=0;break t;case 216:d=r[h>>2],r[d+20>>2]=85,Ie[r[d+4>>2]](h,1),r[h+416>>2]=0,d=2;break t;case 203:if(b=r[h+24>>2],d=r[b+4>>2],!d){if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}d=r[b+4>>2]}if(B=r[b>>2],p=te[B|0],a=d-1|0,a)d=B+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}a=r[b+4>>2],d=r[b>>2]}if(D=d+1|0,a=a-1|0,p=te[d|0]|p<<8,d=p-2|0,p>>>0>=3)for(;;){if(p=d,!a){if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}D=r[b>>2],a=r[b+4>>2]}if(B=te[D|0],fe=a-1|0,fe)d=D+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}fe=r[b+4>>2],d=r[b>>2]}q=te[d|0],a=r[h>>2],r[a+24>>2]=B,r[a+20>>2]=79,r[r[h>>2]+28>>2]=q,Ie[r[r[h>>2]+4>>2]](h,1);i:{a:{s:{if(B>>>0>=32){a=r[h>>2],r[a+24>>2]=B,r[a+20>>2]=28,Ie[r[r[h>>2]>>2]](h);break s}if(B>>>0<16)break a}F[(h+B|0)+244|0]=q;break i}if(a=h+B|0,B=q>>>4|0,F[a+244|0]=B,C=a,a=q&15,F[C+228|0]=a,a>>>0<=B>>>0)break i;a=r[h>>2],r[a+24>>2]=q,r[a+20>>2]=29,Ie[r[r[h>>2]>>2]](h)}if(D=d+1|0,a=fe-1|0,d=p-2|0,!(p>>>0>2))break}d&&(d=r[h>>2],r[d+20>>2]=11,Ie[r[d>>2]](h)),r[b+4>>2]=a,r[b>>2]=D;break e;case 195:if(C=r[h+24>>2],d=r[C+4>>2],!d){if(!(Ie[r[C+12>>2]](h)|0))break n;d=r[C+4>>2]}if(a=r[C>>2],p=te[a|0],d=d-1|0,d)B=a+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;d=r[C+4>>2],B=r[C>>2]}if(a=B+1|0,d=d-1|0,p=te[B|0]|p<<8,ve=p-2|0,p>>>0>=19)for(;;){if(!d){if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C>>2],d=r[C+4>>2]}if(p=r[h>>2],We=te[a|0],r[p+24>>2]=We,r[p+20>>2]=80,Ie[r[r[h>>2]+4>>2]](h,1),D=d-1|0,D)d=a+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;D=r[C+4>>2],d=r[C>>2]}if(Mt=te[d|0],a=D-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Ht=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(on=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(an=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(wn=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Zt=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(ur=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Er=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(x=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(ae=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Se=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Z=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(fe=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(Le=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C+4>>2],d=r[C>>2]}if(b=te[d|0],D=a-1|0,D)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break n;D=r[C+4>>2],d=r[C>>2]}q=te[d|0],p=r[h>>2],r[p+24>>2]=Mt,r[p+20>>2]=86,r[p+52>>2]=Er,r[p+48>>2]=ur,r[p+44>>2]=Zt,r[p+40>>2]=wn,r[p+36>>2]=an,r[p+32>>2]=on,r[p+28>>2]=Ht,Ie[r[p+4>>2]](h,2),p=r[h>>2],r[p+24>>2]=x,r[p+20>>2]=86,r[p+52>>2]=q,r[p+48>>2]=b,r[p+44>>2]=Le,r[p+40>>2]=fe,r[p+36>>2]=Z,r[p+32>>2]=Se,r[p+28>>2]=ae,Ie[r[p+4>>2]](h,2),a=d+1|0,d=D-1|0,lt=(((((((((((wn+(an+(on+(Mt+Ht|0)|0)|0)|0)+Zt|0)+ur|0)+Er|0)+x|0)+ae|0)+Se|0)+Z|0)+fe|0)+Le|0)+b|0)+q|0,B=ve-17|0;i:{a:{if(!(lt>>>0<=256&B>>>0>=lt>>>0)){p=r[h>>2],r[p+20>>2]=8,Ie[r[p>>2]](h);break a}if(!lt)break i}for(D=0;;){if(!d){if(!(Ie[r[C+12>>2]](h)|0))break n;a=r[C>>2],d=r[C+4>>2]}if(F[D+mt|0]=te[a|0],a=a+1|0,d=d-1|0,D=D+1|0,!(lt>>>0>D>>>0))break}}k(lt+mt|0,0,256-lt|0),ve=B-lt|0;i:{if(We&16){B=We-16|0,(We-20&255)>>>0<=251&&(p=r[h>>2],r[p+24>>2]=B,r[p+20>>2]=30,Ie[r[r[h>>2]>>2]](h)),p=((B<<2)+h|0)+196|0;break i}We>>>0>=4&&(p=r[h>>2],r[p+24>>2]=We,r[p+20>>2]=30,Ie[r[r[h>>2]>>2]](h)),p=((We<<2)+h|0)+180|0}if(D=r[p>>2],D||(D=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[D+276>>2]=0,r[p>>2]=D),F[D+16|0]=q,F[D+15|0]=b,F[D+14|0]=Le,F[D+13|0]=fe,F[D+12|0]=Z,F[D+11|0]=Se,F[D+10|0]=ae,F[D+9|0]=x,F[D+8|0]=Er,F[D+7|0]=ur,F[D+6|0]=Zt,F[D+5|0]=wn,F[D+4|0]=an,F[D+3|0]=on,F[D+2|0]=Ht,F[D+1|0]=Mt,F[D|0]=0,D0(r[p>>2]+17|0,mt,256),!((ve|0)>16))break}ve&&(p=r[h>>2],r[p+20>>2]=11,Ie[r[p>>2]](h)),r[C+4>>2]=d,r[C>>2]=a;break e;case 218:if(Z=r[h+24>>2],d=r[Z+4>>2],!d){if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}d=r[Z+4>>2]}if(p=r[Z>>2],B=te[p|0],a=d-1|0,a)d=p+1|0;else{if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}a=r[Z+4>>2],d=r[Z>>2]}if(ve=d+1|0,p=a-1|0,d=te[d|0]|B<<8,Le=d-2|0,d>>>0>=3)for(;;){if(!p){if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}ve=r[Z>>2],p=r[Z+4>>2]}b=te[ve|0],d=r[h>>2],r[d+20>>2]=81,a=b&15,r[d+24>>2]=a,r[r[h>>2]+28>>2]=b>>>4,Ie[r[r[h>>2]+4>>2]](h,1),a>>>0>=4&&(d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=31,Ie[r[r[h>>2]>>2]](h)),a=(a<<2)+h|0,d=r[a+164>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,0,132)|0,r[d+128>>2]=0,r[a+164>>2]=d),ve=ve+1|0,p=p-1|0,a=0;i:{if(b>>>0<=15)for(;;){if(!p){if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}ve=r[Z>>2],p=r[Z+4>>2]}if(He[(r[(a<<2)+9424>>2]<<1)+d>>1]=te[ve|0],ve=ve+1|0,p=p-1|0,a=a+1|0,(a|0)==64)break i}for(;;){if(!p){if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}ve=r[Z>>2],p=r[Z+4>>2]}if(B=te[ve|0],p=p-1|0,p)q=ve+1|0;else{if(!(Ie[r[Z+12>>2]](h)|0)){d=0;break t}p=r[Z+4>>2],q=r[Z>>2]}if(He[(r[(a<<2)+9424>>2]<<1)+d>>1]=te[q|0]|B<<8,ve=q+1|0,p=p-1|0,a=a+1|0,(a|0)==64)break}}if(fe=0,r[r[h>>2]+104>>2]>=2)for(;B=r[h>>2],a=fe<<1,r[B+24>>2]=En[a+d>>1],r[B+28>>2]=En[(a|2)+d>>1],r[B+32>>2]=En[(a|4)+d>>1],r[B+36>>2]=En[(a|6)+d>>1],r[B+40>>2]=En[(a|8)+d>>1],r[B+44>>2]=En[(a|10)+d>>1],r[B+48>>2]=En[(a|12)+d>>1],a=En[(a|14)+d>>1],r[B+20>>2]=93,r[B+52>>2]=a,Ie[r[B+4>>2]](h,2),a=fe>>>0<56,fe=fe+8|0,!!a;);if(Le=(b>>>0<16?-65:-129)+Le|0,!((Le|0)>0))break}Le&&(d=r[h>>2],r[d+20>>2]=11,Ie[r[d>>2]](h)),r[Z+4>>2]=p,r[Z>>2]=ve;break e;case 220:if(b=r[h+24>>2],a=r[b+4>>2],!a){if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}a=r[b+4>>2]}if(d=r[b>>2],p=te[d|0],a=a-1|0,a)d=d+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}a=r[b+4>>2],d=r[b>>2]}if(a=a-1|0,(te[d|0]|p<<8)!=4&&(p=r[h>>2],r[p+20>>2]=11,Ie[r[p>>2]](h)),a)d=d+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}a=r[b+4>>2],d=r[b>>2]}if(B=te[d|0],p=a-1|0,p)q=d+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){d=0;break t}p=r[b+4>>2],q=r[b>>2]}a=te[q|0],d=r[h>>2],r[d+20>>2]=82,C=d,d=a|B<<8,r[C+24>>2]=d,Ie[r[r[h>>2]+4>>2]](h,1),r[h+276>>2]=d,r[b+4>>2]=p-1,r[b>>2]=q+1;break e;case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:if(Ie[r[(r[h+440>>2]+(d<<2)|0)-864>>2]](h)|0)break e;d=0;break t;case 253:if(Ie[r[r[h+440>>2]+28>>2]](h)|0)break e;d=0;break t;case 0:case 207:case 208:case 209:case 210:case 211:case 212:case 213:case 214:p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=92,Ie[r[r[h>>2]+4>>2]](h,1);break e;case 219:if(q=r[h+24>>2],a=r[q+4>>2],!a){if(!(Ie[r[q+12>>2]](h)|0)){d=0;break t}a=r[q+4>>2]}if(d=r[q>>2],B=te[d|0],D=a-1|0,D)a=d+1|0;else{if(!(Ie[r[q+12>>2]](h)|0)){d=0;break t}D=r[q+4>>2],a=r[q>>2]}if(p=te[a|0],d=r[h>>2],r[d+20>>2]=91,r[d+24>>2]=r[h+416>>2],p=p|B<<8,d=p-2|0,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]+4>>2]](h,1),r[q+4>>2]=D-1,r[q>>2]=a+1,p>>>0<3)break e;Ie[r[r[h+24>>2]+16>>2]](h,d);break e;default:p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=68,Ie[r[r[h>>2]>>2]](h);break e;case 191:case 192:break r}if(d=0,pu(h,0,0))break e;break t}d=0}return hn=mt+256|0,d|0}d=0,r[h+416>>2]=0}}function v4(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0;a=r[h+20>>2],(a|0)!=100&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),d&&(d=r[h+72>>2],d&&(r[d+128>>2]=0),d=r[h+76>>2],d&&(r[d+128>>2]=0),d=r[h+80>>2],d&&(r[d+128>>2]=0),d=r[h+84>>2],d&&(r[d+128>>2]=0),d=r[h+88>>2],d&&(r[d+276>>2]=0),d=r[h+104>>2],d&&(r[d+276>>2]=0),d=r[h+92>>2],d&&(r[d+276>>2]=0),d=r[h+108>>2],d&&(r[d+276>>2]=0),d=r[h+96>>2],d&&(r[d+276>>2]=0),d=r[h+112>>2],d&&(r[d+276>>2]=0),d=r[h+100>>2],d&&(r[d+276>>2]=0),d=r[h+116>>2],d&&(r[d+276>>2]=0)),Ie[r[r[h>>2]+16>>2]](h),Ie[r[r[h+24>>2]+8>>2]](h),Se=hn-2608|0,hn=Se,a=h,ve=Ie[r[r[a+4>>2]>>2]](a,1,40)|0,r[a+332>>2]=ve,r[ve+16>>2]=0,r[ve+8>>2]=73,r[ve+4>>2]=74,r[ve>>2]=75,h=r[a+32>>2];e:{if(!(!h|!r[a+28>>2]|r[a+60>>2]<=0)&&r[a+36>>2]>0)break e;h=r[a>>2],r[h+20>>2]=32,Ie[r[h>>2]](a),h=r[a+32>>2]}r[a+28>>2]<65501&(h|0)<=65500||(h=r[a>>2],r[h+20>>2]=41,r[h+24>>2]=65500,Ie[r[r[a>>2]>>2]](a)),h=r[a+56>>2],(h|0)!=8&&(d=r[a>>2],r[d+24>>2]=h,r[d+20>>2]=15,Ie[r[r[a>>2]>>2]](a)),p=r[a+60>>2],(p|0)>=11&&(h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=26,r[r[a>>2]+28>>2]=10,Ie[r[r[a>>2]>>2]](a),p=r[a+60>>2]),r[a+232>>2]=1,r[a+236>>2]=1,d=1;e:{if((p|0)<=0)break e;for(h=r[a+68>>2],C=1;;){D=r[h+8>>2];t:{if(D-5>>>0>=4294967292&&(B=r[h+12>>2],B-5>>>0>4294967291))break t;d=r[a>>2],r[d+20>>2]=18,Ie[r[d>>2]](a),p=r[a+60>>2],B=r[h+12>>2],d=r[a+236>>2],D=r[h+8>>2],C=r[a+232>>2]}if(d=(d|0)>(B|0)?d:B,r[a+236>>2]=d,C=(C|0)>(D|0)?C:D,r[a+232>>2]=C,h=h+84|0,Z=Z+1|0,!((Z|0)<(p|0)))break}if((p|0)<=0)break e;for(h=r[a+68>>2],d=0;r[h+36>>2]=8,r[h+4>>2]=d,p=r[a+232>>2]<<3,r[h+28>>2]=((p+Ce(r[h+8>>2],r[a+28>>2])|0)-1|0)/(p|0),p=r[a+236>>2]<<3,r[h+32>>2]=((p+Ce(r[h+12>>2],r[a+32>>2])|0)-1|0)/(p|0),p=r[a+232>>2],r[h+40>>2]=((p+Ce(r[h+8>>2],r[a+28>>2])|0)-1|0)/(p|0),p=r[a+236>>2],p=((p+Ce(r[h+12>>2],r[a+32>>2])|0)-1|0)/(p|0)|0,r[h+48>>2]=1,r[h+44>>2]=p,h=h+84|0,d=d+1|0,(d|0)>2];);d=r[a+236>>2]}h=d<<3,r[a+240>>2]=((h+r[a+32>>2]|0)-1|0)/(h|0),h=a+168|0,D=r[a+172>>2];e:{t:{if(D){r[a+168>>2]<=0&&(h=r[a>>2],r[h+20>>2]=19,r[h+24>>2]=0,Ie[r[r[a>>2]>>2]](a),D=r[a+172>>2]);n:{if(!(!r[D+20>>2]&r[D+24>>2]==63)){if(h=1,r[a+228>>2]=1,d=r[a+60>>2],(d|0)<=0)break n;k(Se,255,d<<8);break n}if(h=0,r[a+228>>2]=0,d=r[a+60>>2],(d|0)<=0)break n;k(Se+2560|0,0,d<<2)}if(r[a+168>>2]>0){for(h=1;;){p=h;n:{r:{if(Le=r[D>>2],Le-5>>>0>4294967291||(h=r[a>>2],r[h+24>>2]=Le,r[h+20>>2]=26,r[r[a>>2]+28>>2]=4,Ie[r[r[a>>2]>>2]](a),(Le|0)>0))break r;d=0;break n}if(h=r[D+4>>2],(h|0)>=0&(h|0)>2]||(h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=19,Ie[r[r[a>>2]>>2]](a)),h=1,d=1,(Le|0)==1)break n;for(;B=(h<<2)+D|0,C=r[B+4>>2],(C|0)>=0&(C|0)>2]||(Z=r[a>>2],r[Z+24>>2]=p,r[Z+20>>2]=19,Ie[r[r[a>>2]>>2]](a)),(C|0)<=r[B>>2]&&(C=r[a>>2],r[C+24>>2]=p,r[C+20>>2]=19,Ie[r[r[a>>2]>>2]](a)),h=h+1|0,(Le|0)!=(h|0););}B=r[D+32>>2],Z=r[D+24>>2],C=r[D+20>>2],lt=r[D+28>>2];n:{if(r[a+228>>2]){r:{i:{if((C|0)>(Z|0)|C>>>0>63|((Z|0)>63|lt>>>0>10)||(B|0)<0)break i;if((B|0)<11)break r}h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=17,Ie[r[r[a>>2]>>2]](a)}r:{i:{if(!C){if(Z)break i;break r}if((Le|0)==1)break r}h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=17,Ie[r[r[a>>2]>>2]](a)}if(!d)break n;for(d=C+1|0,Mt=(Z-C|0)+1|0,Ht=Mt&1,wn=(B|0)==(lt-1|0),mt=0;;){We=Se+(r[((mt<<2)+D|0)+4>>2]<<8)|0,!C|r[We>>2]>=0||(h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=17,Ie[r[r[a>>2]>>2]](a));r:{if((C|0)>(Z|0))break r;if(h=C,!lt){if(!wn){if(Ht&&(h=We+(C<<2)|0,r[h>>2]>=0&&(q=r[a>>2],r[q+24>>2]=p,r[q+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[h>>2]=B,h=d),(Mt|0)==1)break r;for(;q=We+(h<<2)|0,r[q>>2]>=0&&(fe=r[a>>2],r[fe+24>>2]=p,r[fe+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[q>>2]=B,q=h+1|0,fe=We+(q<<2)|0,r[fe>>2]>=0&&(on=r[a>>2],r[on+24>>2]=p,r[on+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[fe>>2]=B,h=h+2|0,(Z|0)!=(q|0););break r}if(Ht&&(h=We+(C<<2)|0,r[h>>2]>0&&(q=r[a>>2],r[q+24>>2]=p,r[q+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[h>>2]=B,h=d),(Mt|0)==1)break r;for(;q=We+(h<<2)|0,r[q>>2]>0&&(fe=r[a>>2],r[fe+24>>2]=p,r[fe+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[q>>2]=B,q=h+1|0,fe=We+(q<<2)|0,r[fe>>2]>0&&(on=r[a>>2],r[on+24>>2]=p,r[on+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[fe>>2]=B,h=h+2|0,(Z|0)!=(q|0););break r}for(;q=We+(h<<2)|0,fe=r[q>>2],(fe|0)==(lt|0)&(fe|0)>=0&wn||(fe=r[a>>2],r[fe+24>>2]=p,r[fe+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),r[q>>2]=B,q=(h|0)!=(Z|0),h=h+1|0,!!q;);}if(mt=mt+1|0,(Le|0)==(mt|0))break}break n}if(C|lt|(Z|0)!=63|B&&(h=r[a>>2],r[h+24>>2]=p,r[h+20>>2]=17,Ie[r[r[a>>2]>>2]](a)),h=0,!d)break n;for(;d=(Se+2560|0)+(r[((h<<2)+D|0)+4>>2]<<2)|0,r[d>>2]&&(C=r[a>>2],r[C+24>>2]=p,r[C+20>>2]=19,Ie[r[r[a>>2]>>2]](a)),r[d>>2]=1,h=h+1|0,(Le|0)!=(h|0););}if(h=p+1|0,D=D+36|0,!((p|0)>2]))break}d=r[a+60>>2],h=r[a+228>>2]}n:{if(h){if(h=0,(d|0)<=0)break n;for(;r[Se+(h<<8)>>2]<0&&(d=r[a>>2],r[d+20>>2]=45,Ie[r[d>>2]](a),d=r[a+60>>2]),h=h+1|0,(d|0)>(h|0););break n}if(h=0,(d|0)<=0)break n;for(;r[(Se+2560|0)+(h<<2)>>2]||(d=r[a>>2],r[d+20>>2]=45,Ie[r[d>>2]](a),d=r[a+60>>2]),h=h+1|0,(d|0)>(h|0););}if(r[a+180>>2]|!r[a+228>>2])break e;h=a+184|0;break t}r[a+228>>2]=0}r[h>>2]=1}r[ve+20>>2]=0,h=r[a+184>>2],r[ve+24>>2]=0,r[ve+32>>2]=0,d=r[a+168>>2]<<1;e:{if(h)break e;d=r[a+168>>2]}if(h=d,r[ve+36>>2]=8794,r[ve+28>>2]=h,hn=Se+2608|0,!r[a+176>>2]){h=Ie[r[r[a+4>>2]>>2]](a,1,12)|0,r[a+352>>2]=h,r[h>>2]=76;e:{t:{n:{r:{i:{a:{s:switch(d=r[a+40>>2],d-1|0){case 3:case 4:break r;case 2:break i;case 1:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:break a;case 0:break s;default:break n}if(r[a+36>>2]!=1)break t;break e}if(r[a+36>>2]!=r[(d<<2)+10288>>2])break t;break e}if(r[a+36>>2]!=3)break t;break e}if(r[a+36>>2]!=4)break t;break e}if(r[a+36>>2]>0)break e}d=r[a>>2],r[d+20>>2]=9,Ie[r[d>>2]](a)}e:{t:{n:{r:{i:{a:{s:{o:{u:{l:switch(d=r[a+64>>2],d-1|0){case 4:break a;case 3:break s;case 2:break o;case 1:break u;case 0:break l;default:break i}r[a+60>>2]!=1&&(d=r[a>>2],r[d+20>>2]=10,Ie[r[d>>2]](a));l:{h:{f:{if(d=r[a+40>>2],d-6>>>0<10)break f;p:switch(d-1|0){case 2:break h;case 1:break f;case 0:break p;default:break l}r[h+4>>2]=77;break e}r[h+4>>2]=79;break r}r[h+4>>2]=77;break e}break n}if(r[a+60>>2]!=3&&(d=r[a>>2],r[d+20>>2]=10,Ie[r[d>>2]](a)),d=r[a+40>>2],!(!(4292>>>d&1)|!(13252>>>d&1)|!(324>>>d&1)))break t;if(!((d|0)!=2&d-6>>>0>=10)){r[h+4>>2]=82;break e}break n}r[a+60>>2]!=3&&(d=r[a>>2],r[d+20>>2]=10,Ie[r[d>>2]](a));o:{u:{if(d=r[a+40>>2],d-6>>>0<10)break u;switch(d-2|0){case 0:break u;case 1:break t;default:break o}}r[h+4>>2]=84;break r}break n}if(r[a+60>>2]!=4&&(d=r[a>>2],r[d+20>>2]=10,Ie[r[d>>2]](a)),r[a+40>>2]==4)break t;break n}r[a+60>>2]!=4&&(d=r[a>>2],r[d+20>>2]=10,Ie[r[d>>2]](a));a:switch(r[a+40>>2]-4|0){case 0:r[h+4>>2]=85;break r;case 1:break t;default:break a}break n}(d|0)==r[a+40>>2]&r[a+60>>2]==r[a+36>>2]||(d=r[a>>2],r[d+20>>2]=27,Ie[r[d>>2]](a)),r[h+4>>2]=81;break e}r[h>>2]=80;break e}h=r[a>>2],r[h+20>>2]=27,Ie[r[h>>2]](a);break e}r[h+4>>2]=81}h=Ie[r[r[a+4>>2]>>2]](a,1,52)|0,r[a+356>>2]=h,r[h+8>>2]=0,r[h+4>>2]=86,r[h>>2]=87,r[a+188>>2]&&(d=r[a>>2],r[d+20>>2]=25,Ie[r[d>>2]](a));e:{if(r[a+60>>2]<=0)break e;for(p=r[a+68>>2],d=0,C=1;;){D=r[p+8>>2],B=r[a+232>>2];t:{if(!((D|0)!=(B|0)|r[p+12>>2]!=r[a+236>>2])){if(D=h+(d<<2)|0,r[a+192>>2]){r[D+12>>2]=88,r[h+8>>2]=1;break t}r[D+12>>2]=89;break t}n:{if((B|0)!=D<<1)break n;if(ve=r[p+12>>2],Z=r[a+236>>2],(ve|0)==(Z|0)){r[(h+(d<<2)|0)+12>>2]=91,C=0;break t}if((Z|0)!=ve<<1)break n;if(r[a+192>>2]){r[(h+(d<<2)|0)+12>>2]=92,r[h+8>>2]=1;break t}r[(h+(d<<2)|0)+12>>2]=94;break t}if(!((B|0)%(D|0)|r[a+236>>2]%r[p+12>>2])){r[(h+(d<<2)|0)+12>>2]=95,C=0;break t}D=r[a>>2],r[D+20>>2]=38,Ie[r[D>>2]](a)}if(p=p+84|0,d=d+1|0,!((d|0)>2]))break}if(C|!r[a+192>>2])break e;h=r[a>>2],r[h+20>>2]=99,Ie[r[h+4>>2]](a,0)}p=Ie[r[r[a+4>>2]>>2]](a,1,64)|0,r[a+340>>2]=p,r[p>>2]=96;e:{if(r[r[a+356>>2]+8>>2]){if(r[p+4>>2]=97,h=r[a+236>>2],ae=Ie[r[r[a+4>>2]>>2]](a,1,Ce(Ce(h,r[a+60>>2]),20))|0,r[a+60>>2]<=0)break e;if(ve=Ce(h,5),D=h<<2,Z=Ce(h,12),We=Ce(h,3),d=r[a+68>>2],(h|0)<=0){for(;Zt=p+(b<<2)|0,ur=D0(D+ae|0,Ie[r[r[a+4>>2]+8>>2]](a,1,(Ce(r[d+28>>2],r[a+232>>2])<<3)/r[d+8>>2]|0,We)|0,Z),r[Zt+8>>2]=ur,d=d+84|0,ae=(ve<<2)+ae|0,b=b+1|0,(b|0)>2];);break e}for(B=h<<1,lt=h&-2,mt=h&1;;){if(C=Ie[r[r[a+4>>2]+8>>2]](a,1,(Ce(r[d+28>>2],r[a+232>>2])<<3)/r[d+8>>2]|0,We)|0,Mt=D0(D+ae|0,C,Z),b=0,Se=0,(h|0)!=1)for(;Le=b<<2,r[Le+ae>>2]=r[C+(b+B<<2)>>2],r[(D+b<<2)+ae>>2]=r[C+Le>>2],Le=b|1,Ht=Le<<2,r[Ht+ae>>2]=r[C+(B+Le<<2)>>2],r[(D+Le<<2)+ae>>2]=r[C+Ht>>2],b=b+2|0,Se=Se+2|0,(lt|0)!=(Se|0););if(mt&&(Se=b<<2,r[Se+ae>>2]=r[C+(b+B<<2)>>2],r[(D+b<<2)+ae>>2]=r[C+Se>>2]),r[(p+(an<<2)|0)+8>>2]=Mt,d=d+84|0,ae=(ve<<2)+ae|0,an=an+1|0,!((an|0)>2]))break}break e}if(r[p+4>>2]=98,r[a+60>>2]<=0)break e;for(b=r[a+68>>2];Zt=p+(ae<<2)|0,ur=Ie[r[r[a+4>>2]+8>>2]](a,1,(Ce(r[b+28>>2],r[a+232>>2])<<3)/r[b+8>>2]|0,r[a+236>>2])|0,r[Zt+8>>2]=ur,b=b+84|0,ae=ae+1|0,(ae|0)>2];);}}h=Ie[r[r[a+4>>2]>>2]](a,1,72)|0,r[a+360>>2]=h,r[h>>2]=99;e:{t:switch(r[a+196>>2]){case 0:r[h+4>>2]=100,r[h+8>>2]=102;break e;case 1:r[h+4>>2]=100,r[h+8>>2]=104;break e;case 2:r[h+4>>2]=105,r[h+40>>2]=107;break e;default:break t}d=r[a>>2],r[d+20>>2]=48,Ie[r[d>>2]](a)}e:{t:switch(r[a+196>>2]){case 0:case 1:r[h+12>>2]=109,r[h+16>>2]=111;break e;case 2:r[h+44>>2]=113,r[h+48>>2]=115;break e;default:break t}d=r[a>>2],r[d+20>>2]=48,Ie[r[d>>2]](a)}d=r[r[a+4>>2]>>2];e:{if(r[a+196>>2]==2){Zt=h,ur=Ie[d|0](a,1,256)|0,r[Zt+68>>2]=ur;break e}Zt=h,ur=Ie[d|0](a,1,128)|0,r[Zt+36>>2]=ur}r[h+28>>2]=0,r[h+32>>2]=0,r[h+20>>2]=0,r[h+24>>2]=0,r[h+52>>2]=0,r[h+56>>2]=0,r[h+60>>2]=0,r[h+64>>2]=0;e:{if(r[a+180>>2]){h=Ie[r[r[a+4>>2]>>2]](a,1,208)|0,r[a+364>>2]=h,r[h+8>>2]=116,r[h>>2]=117,k(h+76|0,0,128),F[h+204|0]=113;break e}if(r[a+228>>2]){h=Ie[r[r[a+4>>2]>>2]](a,1,116)|0,r[a+364>>2]=h,r[h+84>>2]=0,r[h+88>>2]=0,r[h+72>>2]=0,r[h>>2]=128,r[h+92>>2]=0,r[h+96>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0,r[h+108>>2]=0,r[h+112>>2]=0;break e}h=Ie[r[r[a+4>>2]>>2]](a,1,128)|0,r[a+364>>2]=h,r[h+56>>2]=0,r[h+60>>2]=0,r[h>>2]=123,d=h- -64|0,r[d>>2]=0,r[d+4>>2]=0,r[h+72>>2]=0,r[h+76>>2]=0,r[h+80>>2]=0,r[h+84>>2]=0,r[h+88>>2]=0,r[h+92>>2]=0,r[h+96>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0,r[h+108>>2]=0,r[h+112>>2]=0,r[h+116>>2]=0}d=r[a+184>>2]!=0|r[a+168>>2]>1,p=0,h=Ie[r[r[a+4>>2]>>2]](a,1,104)|0,r[a+344>>2]=h,r[h>>2]=139;e:{if(d){if(r[a+60>>2]<=0)break e;for(d=r[a+68>>2];C=r[d+8>>2],b=(C+r[d+28>>2]|0)-1|0,D=b-((b|0)%(C|0)|0)|0,C=r[d+12>>2],b=(C+r[d+32>>2]|0)-1|0,Zt=(h+(p<<2)|0)- -64|0,ur=Ie[r[r[a+4>>2]+20>>2]](a,1,0,D,b-((b|0)%(C|0)|0)|0,C)|0,r[Zt>>2]=ur,d=d+84|0,p=p+1|0,(p|0)>2];);break e}d=Ie[r[r[a+4>>2]+4>>2]](a,1,1280)|0,r[h+64>>2]=0,r[h+24>>2]=d,r[h+60>>2]=d+1152,r[h+56>>2]=d+1024,r[h+52>>2]=d+896,r[h+48>>2]=d+768,r[h+44>>2]=d+640,r[h+40>>2]=d+512,r[h+36>>2]=d+384,r[h+32>>2]=d+256,r[h+28>>2]=d+128}if(ae=0,h=Ie[r[r[a+4>>2]>>2]](a,1,64)|0,r[a+336>>2]=h,r[h>>2]=143,!(r[a+176>>2]|r[a+60>>2]<=0))for(b=r[a+68>>2];Zt=h+(ae<<2)|0,ur=Ie[r[r[a+4>>2]+8>>2]](a,1,r[b+28>>2]<<3,r[b+12>>2]<<3)|0,r[Zt+24>>2]=ur,b=b+84|0,ae=ae+1|0,(ae|0)>2];);h=Ie[r[r[a+4>>2]>>2]](a,1,32)|0,r[a+348>>2]=h,r[h+28>>2]=0,r[h+24>>2]=52,r[h+20>>2]=53,r[h+16>>2]=54,r[h+12>>2]=55,r[h+8>>2]=56,r[h+4>>2]=57,r[h>>2]=58,Ie[r[r[a+4>>2]+24>>2]](a),Ie[r[r[a+348>>2]>>2]](a),Ie[r[r[a+332>>2]>>2]](a),r[a+224>>2]=0,r[a+20>>2]=r[a+176>>2]?102:101}function dl(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0;Se=hn-176|0,hn=Se,p=r[h+328>>2],D=r[h+316>>2],B=r[h+320>>2],a=r[h+364>>2],Z=r[h+24>>2],r[a+24>>2]=r[Z>>2],r[a+28>>2]=r[Z+4>>2],on=(B-D|0)+1|0,r[a+76>>2]|!r[h+200>>2]||(Nc(a,r[a+80>>2]),D=r[h+316>>2]),Z=r[d>>2],d=Se+16|0,p=Ie[r[a+16>>2]](Z,(D<<2)+9424|0,on,p,d,Se)|0,fe=r[a+72>>2]+r[a+68>>2]|0,an=d+(p<<1)|0,ve=r[Se>>2];e:{if(!ve){C=Se+16|0,B=0,D=0;break e}for(C=Se+16|0,wn=r[Se+8>>2],D=0,B=0;;){if(We=Bc(ve),Mt=(We<<1)+C|0,D=D+We|0,!((D|0)<16|Mt>>>0>an>>>0))for(;;){if(Z=D,d=r[a+64>>2],d){d=te[d+76560|0],C=d-1|0,d>>>0>=16&&(d=r[a+40>>2],p=r[d>>2],r[p+20>>2]=40,Ie[r[p>>2]](d)),d=C<<4,p=r[a+60>>2];t:{if(r[a+20>>2]){d=r[((p<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break t}if(p=r[((p<<2)+a|0)+84>>2],D=r[p+(d<<2)>>2],b=r[a+36>>2],d=F[(d+p|0)+1024|0],!d&&(p=r[a+40>>2],ae=r[p>>2],r[ae+20>>2]=40,Ie[r[ae>>2]](p),r[a+20>>2]))break t;if(p=d+b|0,D=r[a+32>>2]|(D&(-1<=8)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(b=r[a+40>>2],d=r[b+24>>2],Ie[r[d+12>>2]](b)|0||(b=r[a+40>>2],ae=r[b>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](b)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;n:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break n;b=r[a+40>>2],p=r[b+24>>2],Ie[r[p+12>>2]](b)|0||(b=r[a+40>>2],ae=r[b>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](b)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(!(r[a+20>>2]|!C)){if(p=C+r[a+36>>2]|0,D=r[a+32>>2]|(r[a+64>>2]&(-1<=8)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;t:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break t;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(r[a+64>>2]=0,C=r[a+68>>2],!(r[a+20>>2]|!C))for(b=r[a+72>>2];;){if(!r[a+20>>2]){if(d=r[a+36>>2],D=r[a+32>>2]|(F[b|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(ae=r[a+40>>2],d=r[ae+24>>2],Ie[r[d+12>>2]](ae)|0||(ae=r[a+40>>2],Le=r[ae>>2],r[Le+20>>2]=24,Ie[r[Le>>2]](ae)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;t:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break t;ae=r[a+40>>2],p=r[ae+24>>2],Ie[r[p+12>>2]](ae)|0||(ae=r[a+40>>2],Le=r[ae>>2],r[Le+20>>2]=24,Ie[r[Le>>2]](ae)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(b=b+1|0,C=C-1|0,!C)break}r[a+68>>2]=0}d=r[a+60>>2];t:{if(r[a+20>>2]){d=r[((d<<2)+a|0)+100>>2],r[d+960>>2]=r[d+960>>2]+1;break t}if(d=r[((d<<2)+a|0)+84>>2],p=r[d+960>>2],D=r[a+36>>2],d=F[d+1264|0],!d&&(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=40,Ie[r[b>>2]](C),r[a+20>>2]))break t;if(C=p&(-1<>2]|C<<24-p,b=0,d=0,(p|0)>=8){for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],ae=r[C>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;n:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break n;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],ae=r[C>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}d=r[a+20>>2]}if(r[a+36>>2]=p,r[a+32>>2]=D,d|!B)break t;for(;;){if(!b){if(d=r[a+36>>2],D=r[a+32>>2]|(F[fe|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;n:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break n;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(B=B-1|0,!B)break t;fe=fe+1|0,b=r[a+20>>2]}}if(D=Z-16|0,fe=r[a+72>>2],B=0,!((Z|0)>31))break}Z=wn>>>We|0,b=ve>>>We|0,d=En[Mt>>1];t:{if(d>>>0>=2){F[B+fe|0]=d&1,B=B+1|0;break t}d=D<<4|1,N0(a),p=r[a+60>>2];n:{if(r[a+20>>2]){d=r[((p<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break n}p=r[((p<<2)+a|0)+84>>2],ta(a,r[p+(d<<2)>>2],F[(d+p|0)+1024|0])}ta(a,Z&1,1);n:{if(!B||(D=0,r[a+20>>2]))break n;for(;;){if(!D){if(d=r[a+36>>2],D=r[a+32>>2]|(F[fe|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],ve=r[C>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;r:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break r;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],ve=r[C>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(B=B-1|0,!B)break n;fe=fe+1|0,D=r[a+20>>2]}}fe=r[a+72>>2],D=0,B=0}if(C=Mt+2|0,ve=b>>>1|0,wn=Z>>>1|0,!(b>>>0>=2))break}}p=r[Se+12>>2];e:{t:{if(d=r[Se+4>>2],d){Z=Bc(d),lt=p>>>Z|0,Ht=d>>>Z|0,d=Z+((Se-C|0)+80>>1)|0,D=d+D|0,mt=(d<<1)+C|0;break t}d=0;break e}d=1}for(;;){e:{t:{if(!d){if(!q)break t;d=Bc(q),lt=p>>>d|0,D=d+D|0,Ht=q>>>d|0,mt=(d<<1)+C|0,d=1;continue}if(!((D|0)<16|mt>>>0>an>>>0))for(;;){if(Z=D,d=r[a+64>>2],d){d=te[d+76560|0],C=d-1|0,d>>>0>=16&&(d=r[a+40>>2],p=r[d>>2],r[p+20>>2]=40,Ie[r[p>>2]](d)),d=C<<4,p=r[a+60>>2];n:{if(r[a+20>>2]){d=r[((p<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break n}if(p=r[((p<<2)+a|0)+84>>2],D=r[p+(d<<2)>>2],b=r[a+36>>2],d=F[(d+p|0)+1024|0],!d&&(p=r[a+40>>2],q=r[p>>2],r[q+20>>2]=40,Ie[r[q>>2]](p),r[a+20>>2]))break n;if(p=d+b|0,D=r[a+32>>2]|(D&(-1<=8)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(b=r[a+40>>2],d=r[b+24>>2],Ie[r[d+12>>2]](b)|0||(b=r[a+40>>2],q=r[b>>2],r[q+20>>2]=24,Ie[r[q>>2]](b)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;r:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break r;b=r[a+40>>2],p=r[b+24>>2],Ie[r[p+12>>2]](b)|0||(b=r[a+40>>2],q=r[b>>2],r[q+20>>2]=24,Ie[r[q>>2]](b)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(!(r[a+20>>2]|!C)){if(p=C+r[a+36>>2]|0,D=r[a+32>>2]|(r[a+64>>2]&(-1<=8)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;n:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break n;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(r[a+64>>2]=0,C=r[a+68>>2],!(r[a+20>>2]|!C))for(b=r[a+72>>2];;){if(!r[a+20>>2]){if(d=r[a+36>>2],D=r[a+32>>2]|(F[b|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(q=r[a+40>>2],d=r[q+24>>2],Ie[r[d+12>>2]](q)|0||(q=r[a+40>>2],ve=r[q>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](q)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;n:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break n;q=r[a+40>>2],p=r[q+24>>2],Ie[r[p+12>>2]](q)|0||(q=r[a+40>>2],ve=r[q>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](q)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(b=b+1|0,C=C-1|0,!C)break}r[a+68>>2]=0}d=r[a+60>>2];n:{if(r[a+20>>2]){d=r[((d<<2)+a|0)+100>>2],r[d+960>>2]=r[d+960>>2]+1;break n}if(d=r[((d<<2)+a|0)+84>>2],p=r[d+960>>2],D=r[a+36>>2],d=F[d+1264|0],!d&&(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=40,Ie[r[b>>2]](C),r[a+20>>2]))break n;if(C=p&(-1<>2]|C<<24-p,b=0,d=0,(p|0)>=8){for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],q=r[C>>2],r[q+20>>2]=24,Ie[r[q>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;r:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break r;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],q=r[C>>2],r[q+20>>2]=24,Ie[r[q>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}d=r[a+20>>2]}if(r[a+36>>2]=p,r[a+32>>2]=D,d|!B)break n;for(;;){if(!b){if(d=r[a+36>>2],D=r[a+32>>2]|(F[fe|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(C=r[a+40>>2],d=r[C+24>>2],Ie[r[d+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;r:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break r;C=r[a+40>>2],p=r[C+24>>2],Ie[r[p+12>>2]](C)|0||(C=r[a+40>>2],b=r[C>>2],r[b+20>>2]=24,Ie[r[b>>2]](C)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(B=B-1|0,!B)break n;fe=fe+1|0,b=r[a+20>>2]}}if(D=Z-16|0,fe=r[a+72>>2],B=0,!((Z|0)>31))break}if(C=mt+2|0,d=En[mt>>1],d>>>0>=2){F[B+fe|0]=d&1,q=Ht>>>1|0,p=lt>>>1|0,B=B+1|0;break e}d=D<<4|1,N0(a),p=r[a+60>>2];n:{if(r[a+20>>2]){d=r[((p<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break n}p=r[((p<<2)+a|0)+84>>2],ta(a,r[p+(d<<2)>>2],F[(d+p|0)+1024|0])}ta(a,lt&1,1);n:{if(r[a+20>>2]|!B)break n;for(D=0;;){if(!D){if(d=r[a+36>>2],D=r[a+32>>2]|(F[fe|0]&1)<<23-d,p=d+1|0,(d|0)>=7)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=D>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(Z=r[a+40>>2],d=r[Z+24>>2],Ie[r[d+12>>2]](Z)|0||(Z=r[a+40>>2],b=r[Z>>2],r[b+20>>2]=24,Ie[r[b>>2]](Z)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=p;r:{if((D&16711680)!=16711680||(p=r[a+24>>2],r[a+24>>2]=p+1,F[p|0]=0,p=r[a+28>>2]-1|0,r[a+28>>2]=p,p))break r;Z=r[a+40>>2],p=r[Z+24>>2],Ie[r[p+12>>2]](Z)|0||(Z=r[a+40>>2],b=r[Z>>2],r[b+20>>2]=24,Ie[r[b>>2]](Z)),r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2]}if(p=d-8|0,D=D<<8,!((d|0)>15))break}r[a+36>>2]=p,r[a+32>>2]=D}if(B=B-1|0,!B)break n;fe=fe+1|0,D=r[a+20>>2]}}q=Ht>>>1|0,p=lt>>>1|0,fe=r[a+72>>2],B=0,D=0;break e}t:{if(!B&&(((Se+16|0)+(on<<1)|0)-C>>1|D)<=0||(d=r[a+64>>2]+1|0,r[a+64>>2]=d,p=r[a+68>>2]+B|0,r[a+68>>2]=p,(d|0)!=32767&p>>>0<938))break t;N0(a)}return d=r[h+24>>2],r[d>>2]=r[a+24>>2],r[d+4>>2]=r[a+28>>2],h=r[h+200>>2],h&&(d=r[a+76>>2],d?h=d:r[a+80>>2]=r[a+80>>2]+1&7,r[a+76>>2]=h-1),hn=Se+176|0,1}d=0}}function wp(h,d,a,p){var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0;D=hn-1408|0,hn=D,C=p<<3,ur=C&-32|4,q=a<<2,Er=q&-32|2,ve=d<<3,x=ve&-32|4,y=r[r[h+460>>2]+24>>2],mt=r[h+132>>2];e:{if((mt|0)<=0)break e;for(wn=C|28,We=wn+ur>>>1|0,Zt=q|30,Ht=Zt+Er>>>1|0,fe=ve|28,an=fe+x>>>1|0,C=r[h+44>>2]<<2,q=r[(r[C+143744>>2]<<2)+143572>>2],lt=r[(r[C+143664>>2]<<2)+143572>>2],Se=r[(r[C+143584>>2]<<2)+143572>>2],C=r[h+136>>2],u=r[C+8>>2],Le=r[C+4>>2],ae=r[C>>2],Z=2147483647;;){C=te[b+ae|0];t:{if((C|0)<(x|0)){ve=Ce(Se,C-fe|0),ve=Ce(ve,ve),C=Ce(Se,C-x|0),B=Ce(C,C);break t}if((C|0)>(fe|0)){ve=Ce(Se,C-x|0),ve=Ce(ve,ve),C=Ce(Se,C-fe|0),B=Ce(C,C);break t}n:{if(C>>>0<=an>>>0){C=Ce(Se,C-fe|0),ve=Ce(C,C);break n}C=Ce(Se,C-x|0),ve=Ce(C,C)}B=0}C=te[b+Le|0];t:{if((C|0)<(Er|0)){on=B,B=Ce(lt,C-Er|0),B=on+Ce(B,B)|0,C=Ce(lt,C-Zt|0),C=Ce(C,C);break t}if((C|0)>(Zt|0)){on=B,B=Ce(lt,C-Zt|0),B=on+Ce(B,B)|0,C=Ce(lt,C-Er|0),C=Ce(C,C);break t}if(C>>>0<=Ht>>>0){C=Ce(lt,C-Zt|0),C=Ce(C,C);break t}C=Ce(lt,C-Er|0),C=Ce(C,C)}ve=C+ve|0,C=te[b+u|0];t:{if((C|0)<(ur|0)){on=B,B=Ce(q,C-ur|0),B=on+Ce(B,B)|0,C=Ce(q,C-wn|0),C=Ce(C,C);break t}if((C|0)>(wn|0)){on=B,B=Ce(q,C-wn|0),B=on+Ce(B,B)|0,C=Ce(q,C-ur|0),C=Ce(C,C);break t}if(C>>>0<=We>>>0){C=Ce(q,C-wn|0),C=Ce(C,C);break t}C=Ce(q,C-ur|0),C=Ce(C,C)}if(r[(D+384|0)+(b<<2)>>2]=B,C=C+ve|0,Z=(C|0)<(Z|0)?C:Z,b=b+1|0,(mt|0)==(b|0))break}C=mt&1;t:{if((mt|0)==1){Ht=0,b=0;break t}for(q=mt&-2,Ht=0,b=0,B=0;r[(D+384|0)+(b<<2)>>2]<=(Z|0)&&(F[(D+128|0)+Ht|0]=b,Ht=Ht+1|0),ve=b|1,r[(D+384|0)+(ve<<2)>>2]<=(Z|0)&&(F[(D+128|0)+Ht|0]=ve,Ht=Ht+1|0),b=b+2|0,B=B+2|0,(q|0)!=(B|0););}if(!C|r[(D+384|0)+(b<<2)>>2]>(Z|0))break e;F[(D+128|0)+Ht|0]=b,Ht=Ht+1|0}if(r[D+888>>2]=2147483647,r[D+892>>2]=2147483647,r[D+880>>2]=2147483647,r[D+884>>2]=2147483647,r[D+872>>2]=2147483647,r[D+876>>2]=2147483647,r[D+864>>2]=2147483647,r[D+868>>2]=2147483647,r[D+856>>2]=2147483647,r[D+860>>2]=2147483647,r[D+848>>2]=2147483647,r[D+852>>2]=2147483647,r[D+840>>2]=2147483647,r[D+844>>2]=2147483647,r[D+832>>2]=2147483647,r[D+836>>2]=2147483647,r[D+824>>2]=2147483647,r[D+828>>2]=2147483647,r[D+816>>2]=2147483647,r[D+820>>2]=2147483647,r[D+808>>2]=2147483647,r[D+812>>2]=2147483647,r[D+800>>2]=2147483647,r[D+804>>2]=2147483647,r[D+792>>2]=2147483647,r[D+796>>2]=2147483647,r[D+784>>2]=2147483647,r[D+788>>2]=2147483647,r[D+776>>2]=2147483647,r[D+780>>2]=2147483647,r[D+768>>2]=2147483647,r[D+772>>2]=2147483647,r[D+760>>2]=2147483647,r[D+764>>2]=2147483647,r[D+752>>2]=2147483647,r[D+756>>2]=2147483647,r[D+744>>2]=2147483647,r[D+748>>2]=2147483647,r[D+736>>2]=2147483647,r[D+740>>2]=2147483647,r[D+728>>2]=2147483647,r[D+732>>2]=2147483647,r[D+720>>2]=2147483647,r[D+724>>2]=2147483647,r[D+712>>2]=2147483647,r[D+716>>2]=2147483647,r[D+704>>2]=2147483647,r[D+708>>2]=2147483647,r[D+696>>2]=2147483647,r[D+700>>2]=2147483647,r[D+688>>2]=2147483647,r[D+692>>2]=2147483647,r[D+680>>2]=2147483647,r[D+684>>2]=2147483647,r[D+672>>2]=2147483647,r[D+676>>2]=2147483647,r[D+664>>2]=2147483647,r[D+668>>2]=2147483647,r[D+656>>2]=2147483647,r[D+660>>2]=2147483647,r[D+648>>2]=2147483647,r[D+652>>2]=2147483647,r[D+640>>2]=2147483647,r[D+644>>2]=2147483647,r[D+632>>2]=2147483647,r[D+636>>2]=2147483647,r[D+624>>2]=2147483647,r[D+628>>2]=2147483647,r[D+616>>2]=2147483647,r[D+620>>2]=2147483647,r[D+608>>2]=2147483647,r[D+612>>2]=2147483647,r[D+600>>2]=2147483647,r[D+604>>2]=2147483647,r[D+592>>2]=2147483647,r[D+596>>2]=2147483647,r[D+584>>2]=2147483647,r[D+588>>2]=2147483647,r[D+576>>2]=2147483647,r[D+580>>2]=2147483647,r[D+568>>2]=2147483647,r[D+572>>2]=2147483647,r[D+560>>2]=2147483647,r[D+564>>2]=2147483647,r[D+552>>2]=2147483647,r[D+556>>2]=2147483647,r[D+544>>2]=2147483647,r[D+548>>2]=2147483647,r[D+536>>2]=2147483647,r[D+540>>2]=2147483647,r[D+528>>2]=2147483647,r[D+532>>2]=2147483647,r[D+520>>2]=2147483647,r[D+524>>2]=2147483647,r[D+512>>2]=2147483647,r[D+516>>2]=2147483647,r[D+504>>2]=2147483647,r[D+508>>2]=2147483647,r[D+496>>2]=2147483647,r[D+500>>2]=2147483647,r[D+488>>2]=2147483647,r[D+492>>2]=2147483647,r[D+480>>2]=2147483647,r[D+484>>2]=2147483647,r[D+472>>2]=2147483647,r[D+476>>2]=2147483647,r[D+464>>2]=2147483647,r[D+468>>2]=2147483647,r[D+456>>2]=2147483647,r[D+460>>2]=2147483647,r[D+448>>2]=2147483647,r[D+452>>2]=2147483647,r[D+440>>2]=2147483647,r[D+444>>2]=2147483647,r[D+432>>2]=2147483647,r[D+436>>2]=2147483647,r[D+424>>2]=2147483647,r[D+428>>2]=2147483647,r[D+416>>2]=2147483647,r[D+420>>2]=2147483647,r[D+408>>2]=2147483647,r[D+412>>2]=2147483647,r[D+400>>2]=2147483647,r[D+404>>2]=2147483647,r[D+392>>2]=2147483647,r[D+396>>2]=2147483647,r[D+384>>2]=2147483647,r[D+388>>2]=2147483647,(Ht|0)>0)for(ve=r[h+44>>2],Z=r[(r[(ve<<2)+143664>>2]<<2)+143572>>2],wn=D+32|0,Zt=D+512|0,u=0;;){for(Se=ve<<2,b=Se+143744|0,C=r[(r[b>>2]<<2)+143572>>2],fe=te[(D+128|0)+u|0],B=r[h+136>>2],q=Ce(C,ur-te[fe+r[B+8>>2]|0]|0),lt=C<<3,We=Ce(lt,lt)+(Ce(C,q)<<4)|0,lt=Ce(Er-te[fe+r[B+4>>2]|0]|0,Z),an=r[(r[Se+143584>>2]<<2)+143572>>2],mt=Ce(an,x-te[fe+r[B>>2]|0]|0),Se=(Ce(lt,lt)+Ce(mt,mt)|0)+Ce(q,q)|0,(Se|0)>2]&&(F[D|0]=fe,r[D+384>>2]=Se),q=Ce(C,C)<<7,C=q+We|0,B=Se+We|0,(B|0)>2]&&(F[D+1|0]=fe,r[D+388>>2]=B),B=C+B|0,(B|0)>2]&&(F[D+2|0]=fe,r[D+392>>2]=B),Le=Z<<2,lt=Ce(Le,Le)+(Ce(Z,lt)<<3)|0,C=q+(C+B|0)|0,(C|0)>2]&&(F[D+3|0]=fe,r[D+396>>2]=C),B=Se+lt|0,(B|0)>2]&&(F[D+4|0]=fe,r[D+400>>2]=B),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=B+We|0,(ae|0)>2]&&(F[D+5|0]=fe,r[D+404>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+6|0]=fe,r[D+408>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+7|0]=fe,r[D+412>>2]=C),C=B,B=Ce(Z,Z)<<5,Mt=B+lt|0,Z=C+Mt|0,(Z|0)>2]&&(F[D+8|0]=fe,r[D+416>>2]=Z),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=Z+We|0,(ae|0)>2]&&(F[D+9|0]=fe,r[D+420>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+10|0]=fe,r[D+424>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+11|0]=fe,r[D+428>>2]=C),Mt=B+Mt|0,Z=Mt+Z|0,(Z|0)>2]&&(F[D+12|0]=fe,r[D+432>>2]=Z),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=Z+We|0,(ae|0)>2]&&(F[D+13|0]=fe,r[D+436>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+14|0]=fe,r[D+440>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+15|0]=fe,r[D+444>>2]=C),Mt=B+Mt|0,Z=Mt+Z|0,(Z|0)>2]&&(F[D+16|0]=fe,r[D+448>>2]=Z),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=Z+We|0,(ae|0)>2]&&(F[D+17|0]=fe,r[D+452>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+18|0]=fe,r[D+456>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+19|0]=fe,r[D+460>>2]=C),Mt=B+Mt|0,Z=Mt+Z|0,(Z|0)>2]&&(F[D+20|0]=fe,r[D+464>>2]=Z),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=Z+We|0,(ae|0)>2]&&(F[D+21|0]=fe,r[D+468>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+22|0]=fe,r[D+472>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+23|0]=fe,r[D+476>>2]=C),Mt=B+Mt|0,Z=Mt+Z|0,(Z|0)>2]&&(F[D+24|0]=fe,r[D+480>>2]=Z),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,Le=We+C|0,ae=Z+We|0,(ae|0)>2]&&(F[D+25|0]=fe,r[D+484>>2]=ae,C=q),ae=ae+Le|0,(ae|0)>2]&&(F[D+26|0]=fe,r[D+488>>2]=ae),C=(ae+Le|0)+C|0,(C|0)>2]&&(F[D+27|0]=fe,r[D+492>>2]=C),B=Z+(B+Mt|0)|0,(B|0)>2]&&(F[D+28|0]=fe,r[D+496>>2]=B),C=r[(r[b>>2]<<2)+143572>>2],C=Ce(C,C)<<7,b=We+C|0,B=B+We|0,(B|0)>2]&&(F[D+29|0]=fe,r[D+500>>2]=B,C=q),q=b+B|0,(q|0)>2]&&(F[D+30|0]=fe,r[D+504>>2]=q),C=(b+q|0)+C|0,(C|0)>2]&&(F[D+31|0]=fe,r[D+508>>2]=C),q=7,ae=an<<7,C=r[h+44>>2],Mt=C<<2,b=r[(r[Mt+143664>>2]<<2)+143572>>2],S=Ce(b,b)<<5,Z=lt,b=an<<3,m=Ce(b,b)+Ce(mt,an<<4)|0,on=Se+m|0,Se=on,B=wn,b=Zt;r[b>>2]>(Se|0)&&(r[b>>2]=Se,F[B|0]=fe),mt=q,q=r[(r[(ve<<2)+143744>>2]<<2)+143572>>2],q=Ce(q,q)<<7,ve=We+q|0,Le=Se+We|0,(Le|0)>2]&&(r[b+4>>2]=Le,F[B+1|0]=fe,q=r[(r[(r[h+44>>2]<<2)+143744>>2]<<2)+143572>>2],q=Ce(q,q)<<7),Le=ve+Le|0,(Le|0)>2]&&(r[b+8>>2]=Le,F[B+2|0]=fe),q=(ve+Le|0)+q|0,(q|0)>2]&&(r[b+12>>2]=q,F[B+3|0]=fe),q=mt-1|0,Se=Z+Se|0,B=B+4|0,b=b+16|0,ve=C,Z=Z+S|0,!!mt;);for(q=7,Le=r[(r[Mt+143584>>2]<<2)+143572>>2],Mt=Le<<7,Se=lt,an=Ce(ae,an)+m|0,ae=an+on|0,ve=ae;Z=q,r[b>>2]>(ve|0)&&(r[b>>2]=ve,F[B|0]=fe,C=r[h+44>>2]),C=r[(r[(C<<2)+143744>>2]<<2)+143572>>2],q=Ce(C,C)<<7,C=We+q|0,mt=ve+We|0,(mt|0)>2]&&(r[b+4>>2]=mt,F[B+1|0]=fe,q=r[(r[(r[h+44>>2]<<2)+143744>>2]<<2)+143572>>2],q=Ce(q,q)<<7),mt=C+mt|0,(mt|0)>2]&&(r[b+8>>2]=mt,F[B+2|0]=fe),C=(C+mt|0)+q|0,(C|0)>2]&&(r[b+12>>2]=C,F[B+3|0]=fe),q=Z-1|0,ve=ve+Se|0,B=B+4|0,b=b+16|0,on=Se,C=r[h+44>>2],Se=r[(r[(C<<2)+143664>>2]<<2)+143572>>2],Se=on+(Ce(Se,Se)<<5)|0,!!Z;);for(Se=(ae+an|0)+Ce(Le,Mt)|0,q=7,ve=C;r[b>>2]>(Se|0)&&(r[b>>2]=Se,F[B|0]=fe,ve=r[h+44>>2]),C=r[(r[(ve<<2)+143744>>2]<<2)+143572>>2],Z=Ce(C,C)<<7,C=We+Z|0,ve=Se+We|0,(ve|0)>2]&&(r[b+4>>2]=ve,F[B+1|0]=fe,Z=r[(r[(r[h+44>>2]<<2)+143744>>2]<<2)+143572>>2],Z=Ce(Z,Z)<<7),ve=C+ve|0,(ve|0)>2]&&(r[b+8>>2]=ve,F[B+2|0]=fe),C=(C+ve|0)+Z|0,(C|0)>2]&&(r[b+12>>2]=C,F[B+3|0]=fe),C=q,q=C-1|0,Se=Se+lt|0,B=B+4|0,b=b+16|0,ve=r[h+44>>2],Z=r[(r[(ve<<2)+143664>>2]<<2)+143572>>2],lt=(Ce(Z,Z)<<5)+lt|0,!!C;);if(u=u+1|0,(u|0)==(Ht|0))break}for(q=d&-4,h=0,b=D,d=(p&-4)<<1,p=a&-8,ve=(p|1)<<6,B=(p|2)<<6,lt=(p|3)<<6,Z=(p|4)<<6,Se=(p|5)<<6,mt=(p|6)<<6,wn=(a|7)<<6;a=r[(h+q<<2)+y>>2],C=d+(a+(p<<6)|0)|0,He[C>>1]=te[b|0]+1,He[C+2>>1]=te[b+1|0]+1,He[C+4>>1]=te[b+2|0]+1,He[C+6>>1]=te[b+3|0]+1,C=d+(a+ve|0)|0,He[C>>1]=te[b+4|0]+1,He[C+2>>1]=te[b+5|0]+1,He[C+4>>1]=te[b+6|0]+1,He[C+6>>1]=te[b+7|0]+1,C=d+(a+B|0)|0,He[C>>1]=te[b+8|0]+1,He[C+2>>1]=te[b+9|0]+1,He[C+4>>1]=te[b+10|0]+1,He[C+6>>1]=te[b+11|0]+1,C=d+(a+lt|0)|0,He[C>>1]=te[b+12|0]+1,He[C+2>>1]=te[b+13|0]+1,He[C+4>>1]=te[b+14|0]+1,He[C+6>>1]=te[b+15|0]+1,C=d+(a+Z|0)|0,He[C>>1]=te[b+16|0]+1,He[C+2>>1]=te[b+17|0]+1,He[C+4>>1]=te[b+18|0]+1,He[C+6>>1]=te[b+19|0]+1,C=d+(a+Se|0)|0,He[C>>1]=te[b+20|0]+1,He[C+2>>1]=te[b+21|0]+1,He[C+4>>1]=te[b+22|0]+1,He[C+6>>1]=te[b+23|0]+1,C=d+(a+mt|0)|0,He[C>>1]=te[b+24|0]+1,He[C+2>>1]=te[b+25|0]+1,He[C+4>>1]=te[b+26|0]+1,He[C+6>>1]=te[b+27|0]+1,a=d+(a+wn|0)|0,He[a>>1]=te[b+28|0]+1,He[a+2>>1]=te[b+29|0]+1,He[a+4>>1]=te[b+30|0]+1,He[a+6>>1]=te[b+31|0]+1,b=b+32|0,h=h+1|0,(h|0)!=4;);hn=D+1408|0}function k4(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0;Mt=hn-16|0,hn=Mt;e:{t:{n:{C=r[h+4>>2]-r[h>>2]|0,d=r[h+16>>2],b=r[h+12>>2],D=d-b|0;r:{if(C>>>0>D>>>0){if(a=C-D|0,p=r[h+20>>2],a>>>0<=p-d>>>0){S=h,M=k(d,0,a)+a|0,r[S+16>>2]=M;break r}if((C|0)<0)break n;if(d=p-b|0,p=d<<1,d=d>>>0>=1073741823?2147483647:C>>>0

>>0?p:C,p=Po(d),k(p+D|0,0,a),D=Lc(p,b,D),r[h+20>>2]=D+d,r[h+16>>2]=C+D,r[h+12>>2]=D,!b)break r;J(b);break r}if(C>>>0>=D>>>0)break r;r[h+16>>2]=C+b}C=Fk();r:{if(!C){r[36970]=te[4670]|te[4671]<<8|(te[4672]<<16|te[4673]<<24),C=te[4666]|te[4667]<<8|(te[4668]<<16|te[4669]<<24),r[36968]=te[4662]|te[4663]<<8|(te[4664]<<16|te[4665]<<24),r[36969]=C,C=te[4658]|te[4659]<<8|(te[4660]<<16|te[4661]<<24),r[36966]=te[4654]|te[4655]<<8|(te[4656]<<16|te[4657]<<24),r[36967]=C,C=te[4650]|te[4651]<<8|(te[4652]<<16|te[4653]<<24),r[36964]=te[4646]|te[4647]<<8|(te[4648]<<16|te[4649]<<24),r[36965]=C,C=te[4642]|te[4643]<<8|(te[4644]<<16|te[4645]<<24),r[36962]=te[4638]|te[4639]<<8|(te[4640]<<16|te[4641]<<24),r[36963]=C,C=te[4634]|te[4635]<<8|(te[4636]<<16|te[4637]<<24),r[36960]=te[4630]|te[4631]<<8|(te[4632]<<16|te[4633]<<24),r[36961]=C,C=0;break r}F[C+1156|0]=te[3582],b=te[3578]|te[3579]<<8|(te[3580]<<16|te[3581]<<24),D=te[3574]|te[3575]<<8|(te[3576]<<16|te[3577]<<24),F[C+1148|0]=D,F[C+1149|0]=D>>>8,F[C+1150|0]=D>>>16,F[C+1151|0]=D>>>24,F[C+1152|0]=b,F[C+1153|0]=b>>>8,F[C+1154|0]=b>>>16,F[C+1155|0]=b>>>24,p=hn-16|0,hn=p,D=Io(40),r[D>>2]=0,r[p+12>>2]=148349,r[37564]=0,r[p+8>>2]=1,fe=Ri(C+840|0),b=r[37564],r[37564]=0,a=-1,B=4;i:{a:{s:{if(!b||(d=r[37565],!d))break s;if(a=Zo(r[b>>2],D,4),!a)break a;Mi=d}b=Mi,(a|0)!=1&&(r[C+840>>2]=258,r[C>>2]=fe,r[C+848>>2]=259,r[C+964>>2]=1e3,r[C+968>>2]=1028,r[C+960>>2]=148048,b=r[C+844>>2],r[C+844>>2]=260,r[C+1128>>2]=b,D=Fc(C+972|0,1,D,4),B=Mi,b=0);s:{for(;;){if(b){J(C),C=0;break s}r[37564]=0,xc(261,C|0,62,376),b=r[37564],r[37564]=0,a=-1;o:{if(!b||(d=r[37565],!d))break o;if(a=Zo(r[b>>2],D,B),!a)break a;Mi=d}if(b=Mi,(a|0)!=1){r[37564]=0,gp(262,C|0,p+12|0,p+8|0,0),b=r[37564],r[37564]=0,a=-1;o:{if(!b||(d=r[37565],!d))break o;if(a=Zo(r[b>>2],D,B),!a)break a;Mi=d}if(b=Mi,(a|0)!=1)break}}r[C+1140>>2]=r[C+1140>>2]|1}J(D),hn=p+16|0;break i}J(D),Hu(b,d),mr()}}if(D=C,!D)break t;C=te[h+29|0],d=r[h+40>>2],p=r[h+32>>2],b=r[h+12>>2],r[Mt+12>>2]=b,r[Mt+8>>2]=r[h+16>>2]-b,Le=r[h>>2],wn=En[h+24>>1],fe=En[h+26>>1],ve=(C|0)==1,ur=ve?6:0,u=r[h+36>>2],a=0,C=0,b=0,B=Io(40),r[B>>2]=0;r:{if(!D){C=te[5114]|te[5115]<<8|(te[5116]<<16|te[5117]<<24),b=te[5110]|te[5111]<<8|(te[5112]<<16|te[5113]<<24),F[147847]=b,F[147848]=b>>>8,F[147849]=b>>>16,F[147850]=b>>>24,F[147851]=C,F[147852]=C>>>8,F[147853]=C>>>16,F[147854]=C>>>24,C=te[5107]|te[5108]<<8|(te[5109]<<16|te[5110]<<24),r[36960]=te[5103]|te[5104]<<8|(te[5105]<<16|te[5106]<<24),r[36961]=C,J(B),C=-1;break r}m=Mt+12|0,Er=Mt+8|0,x=ve?3:d,ve=4,r[D+1348>>2]=0,r[D+1132>>2]=0,Zt=1,Ht=p?17408:1024,r[D+1136>>2]=Ht>>>13&1;i:{a:{if(!(F[D+1140|0]&1)){D0(D+1148|0,4205,65),r[D+1348>>2]=1,D0(147840,4205,65);break a}if(!(!(!Le|!wn|(!fe|ur>>>0>11)|(!m|!Er|x>>>0>5))&u>>>0<101)){r[D+1348>>2]=1,p=te[2387]|te[2388]<<8|(te[2389]<<16|te[2390]<<24),d=D+1172|0,q=te[2383]|te[2384]<<8|(te[2385]<<16|te[2386]<<24),F[d|0]=q,F[d+1|0]=q>>>8,F[d+2|0]=q>>>16,F[d+3|0]=q>>>24,F[d+4|0]=p,F[d+5|0]=p>>>8,F[d+6|0]=p>>>16,F[d+7|0]=p>>>24,ae=te[2379]|te[2380]<<8|(te[2381]<<16|te[2382]<<24),d=D+1164|0,Se=te[2375]|te[2376]<<8|(te[2377]<<16|te[2378]<<24),F[d|0]=Se,F[d+1|0]=Se>>>8,F[d+2|0]=Se>>>16,F[d+3|0]=Se>>>24,F[d+4|0]=ae,F[d+5|0]=ae>>>8,F[d+6|0]=ae>>>16,F[d+7|0]=ae>>>24,Z=te[2371]|te[2372]<<8|(te[2373]<<16|te[2374]<<24),d=D+1156|0,We=te[2367]|te[2368]<<8|(te[2369]<<16|te[2370]<<24),F[d|0]=We,F[d+1|0]=We>>>8,F[d+2|0]=We>>>16,F[d+3|0]=We>>>24,F[d+4|0]=Z,F[d+5|0]=Z>>>8,F[d+6|0]=Z>>>16,F[d+7|0]=Z>>>24,d=te[2363]|te[2364]<<8|(te[2365]<<16|te[2366]<<24),lt=te[2359]|te[2360]<<8|(te[2361]<<16|te[2362]<<24),F[D+1148|0]=lt,F[D+1149|0]=lt>>>8,F[D+1150|0]=lt>>>16,F[D+1151|0]=lt>>>24,F[D+1152|0]=d,F[D+1153|0]=d>>>8,F[D+1154|0]=d>>>16,F[D+1155|0]=d>>>24,r[36966]=q,r[36967]=p,r[36964]=Se,r[36965]=ae,r[36962]=We,r[36963]=Z,r[36960]=lt,r[36961]=d;break a}if(mt=Ce(r[(ur<<2)+144816>>2],wn),C=Io(fe<<2),!C){r[D+1348>>2]=1,y=te[4757],F[D+1188|0]=y,p=te[4753]|te[4754]<<8|(te[4755]<<16|te[4756]<<24),d=D+1180|0,Se=te[4749]|te[4750]<<8|(te[4751]<<16|te[4752]<<24),F[d|0]=Se,F[d+1|0]=Se>>>8,F[d+2|0]=Se>>>16,F[d+3|0]=Se>>>24,F[d+4|0]=p,F[d+5|0]=p>>>8,F[d+6|0]=p>>>16,F[d+7|0]=p>>>24,ae=te[4745]|te[4746]<<8|(te[4747]<<16|te[4748]<<24),d=D+1172|0,We=te[4741]|te[4742]<<8|(te[4743]<<16|te[4744]<<24),F[d|0]=We,F[d+1|0]=We>>>8,F[d+2|0]=We>>>16,F[d+3|0]=We>>>24,F[d+4|0]=ae,F[d+5|0]=ae>>>8,F[d+6|0]=ae>>>16,F[d+7|0]=ae>>>24,Z=te[4737]|te[4738]<<8|(te[4739]<<16|te[4740]<<24),d=D+1164|0,lt=te[4733]|te[4734]<<8|(te[4735]<<16|te[4736]<<24),F[d|0]=lt,F[d+1|0]=lt>>>8,F[d+2|0]=lt>>>16,F[d+3|0]=lt>>>24,F[d+4|0]=Z,F[d+5|0]=Z>>>8,F[d+6|0]=Z>>>16,F[d+7|0]=Z>>>24,q=te[4729]|te[4730]<<8|(te[4731]<<16|te[4732]<<24),d=D+1156|0,on=te[4725]|te[4726]<<8|(te[4727]<<16|te[4728]<<24),F[d|0]=on,F[d+1|0]=on>>>8,F[d+2|0]=on>>>16,F[d+3|0]=on>>>24,F[d+4|0]=q,F[d+5|0]=q>>>8,F[d+6|0]=q>>>16,F[d+7|0]=q>>>24,d=te[4721]|te[4722]<<8|(te[4723]<<16|te[4724]<<24),an=te[4717]|te[4718]<<8|(te[4719]<<16|te[4720]<<24),F[D+1148|0]=an,F[D+1149|0]=an>>>8,F[D+1150|0]=an>>>16,F[D+1151|0]=an>>>24,F[D+1152|0]=d,F[D+1153|0]=d>>>8,F[D+1154|0]=d>>>16,F[D+1155|0]=d>>>24,F[147880]=y,r[36968]=Se,r[36969]=p,r[36966]=We,r[36967]=ae,r[36964]=lt,r[36965]=Z,r[36962]=on,r[36963]=q,r[36960]=an,r[36961]=d;break a}B=Fc(D+972|0,1,B,4),ve=Mi,p=0;break i}ae=-1,p=1}for(;;){i:{a:{s:{o:{u:{if(!p){if(Zt=1,ae=-1,a)break s;r[D+32>>2]=fe,r[D+28>>2]=wn,a=7545;l:{h:{if(Ht&8||(a=7834,Ht&16))break h;if(a=8660,!(Ht&32))break l}r[37564]=0,bh(263,a|0,8716,1)|0,a=r[37564],r[37564]=0,d=-1;h:{if(!a||(p=r[37565],!p))break h;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a}if(Ht&1024){r[37564]=0,Z=R4(wn,fe,x),a=r[37564],r[37564]=0,d=-1;l:{if(!a||(p=r[37565],!p))break l;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a;r[Er>>2]=Z,Zt=0}r[37564]=0,gp(262,D|0,m|0,Er|0,Zt|0),a=r[37564],r[37564]=0,d=-1;l:{if(!a||(p=r[37565],!p))break l;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a;r[37564]=0,vp(265,D|0,ur|0,x|0,u|0,Ht|0),a=r[37564],r[37564]=0,d=-1;l:{if(!a||(p=r[37565],!p))break l;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a;if(r[37564]=0,Ec(266,D|0,1),a=r[37564],r[37564]=0,d=-1,!a||(p=r[37565],!p))break o;if(d=Zo(r[a>>2],B,ve),d)break u;break i}if(r[D+20>>2]>=101){if(Zt){a=r[r[D+24>>2]+16>>2],r[37564]=0,fu(a|0,D|0),a=r[37564],r[37564]=0,d=-1;l:{if(!a||(p=r[37565],!p))break l;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a}r[37564]=0,fu(267,D|0),a=r[37564],r[37564]=0,d=-1;l:{if(!a||(p=r[37565],!p))break l;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a}J(b),r[D+1136>>2]=0,C=r[D+1132>>2],J(B),C=C?-1:ae;break r}Mi=p}if(a=Mi,(d|0)==1)break a;o:{if(Ht&2){if(d=0,a=0,fe-1>>>0>=3)for(Se=fe&-4,Z=0;p=a<<2,r[p+C>>2]=Ce(fe+(a^-1)|0,mt)+Le,q=fe-a|0,r[(p|4)+C>>2]=Ce(q-2|0,mt)+Le,r[(p|8)+C>>2]=Ce(q-3|0,mt)+Le,r[(p|12)+C>>2]=Ce(q-4|0,mt)+Le,a=a+4|0,Z=Z+4|0,(Se|0)!=(Z|0););if(p=fe&3,!p)break o;for(;r[(a<<2)+C>>2]=Ce(fe+(a^-1)|0,mt)+Le,a=a+1|0,d=d+1|0,(p|0)!=(d|0););break o}if(p=0,a=0,fe-1>>>0>=3)for(Z=fe&-4,d=0;r[(a<<2)+C>>2]=Ce(a,mt)+Le,q=a|1,r[(q<<2)+C>>2]=Ce(q,mt)+Le,q=a|2,r[(q<<2)+C>>2]=Ce(q,mt)+Le,q=a|3,r[(q<<2)+C>>2]=Ce(q,mt)+Le,a=a+4|0,d=d+4|0,(Z|0)!=(d|0););if(d=fe&3,!d)break o;for(;r[(a<<2)+C>>2]=Ce(a,mt)+Le,a=a+1|0,p=p+1|0,(d|0)!=(p|0););}if(a=r[D+224>>2],p=r[D+32>>2],a>>>0

>>0)for(;;){r[37564]=0,bh(268,D|0,(a<<2)+C|0,p-a|0)|0,a=r[37564],r[37564]=0,d=-1;o:{if(!a||(p=r[37565],!p))break o;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a;if(a=r[D+224>>2],p=r[D+32>>2],!(a>>>0

>>0))break}r[37564]=0,fu(269,D|0),a=r[37564],r[37564]=0,d=-1;o:{if(!a||(p=r[37565],!p))break o;if(d=Zo(r[a>>2],B,ve),!d)break i;Mi=p}if(a=Mi,(d|0)==1)break a;ae=0}b=C,p=1;continue}p=0;continue}break}J(B),Hu(a,p),mr()}if((C|0)<0)break e;C=r[Mt+8>>2],p=r[h+16>>2],b=r[h+12>>2],a=p-b|0;r:{if(C>>>0>a>>>0){if(d=C-a|0,B=r[h+20>>2],d>>>0<=B-p>>>0){S=h,M=k(p,0,d)+d|0,r[S+16>>2]=M;break r}if((C|0)<0)break n;if(p=B-b|0,B=p<<1,p=p>>>0>=1073741823?2147483647:C>>>0>>0?B:C,B=Po(p),k(B+a|0,0,d),a=Lc(B,b,a),r[h+20>>2]=a+p,r[h+16>>2]=a+C,r[h+12>>2]=a,!b)break r;J(b);break r}if(a>>>0<=C>>>0)break r;r[h+16>>2]=C+b}Af(D),hn=Mt+16|0;return}j4(),mr()}h=qu(4),r[h>>2]=3550,Fu(h|0,147344,0),mr()}h=qu(4),r[h>>2]=5328,Fu(h|0,147344,0),mr()}function Cp(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0;e:{t:switch(r[h+44>>2]-6|0){case 0:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+1|0]=te[C+(fe+D|0)|0],F[p+2|0]=te[C+(D+ae|0)|0],D=te[a+1|0],F[p+3|0]=te[C+(D+B|0)|0],F[p+4|0]=te[C+(D+fe|0)|0],F[p+5|0]=te[C+(D+ae|0)|0],D=te[Z|0],F[b|0]=te[C+(D+B|0)|0],F[b+1|0]=te[C+(D+fe|0)|0],F[b+2|0]=te[C+(D+ae|0)|0],D=B,B=te[Z+1|0],F[b+3|0]=te[C+(D+B|0)|0],F[b+4|0]=te[C+(B+fe|0)|0],F[b+5|0]=te[C+(B+ae|0)|0],b=b+6|0,Z=Z+2|0,p=p+6|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+1|0]=te[C+(a+d|0)|0],F[p+2|0]=te[C+(h+d|0)|0],d=te[Z|0],F[b|0]=te[C+(d+q|0)|0],F[b+1|0]=te[C+(d+a|0)|0],F[b+2|0]=te[C+(h+d|0)|0];return;case 1:case 6:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+1|0]=te[C+(fe+D|0)|0],D=te[C+(D+ae|0)|0],F[p+3|0]=255,F[p+2|0]=D,D=te[a+1|0],F[p+4|0]=te[C+(D+B|0)|0],F[p+5|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[p+7|0]=255,F[p+6|0]=D,D=te[Z|0],F[b|0]=te[C+(D+B|0)|0],F[b+1|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[b+3|0]=255,F[b+2|0]=D,D=B,B=te[Z+1|0],F[b+4|0]=te[C+(D+B|0)|0],F[b+5|0]=te[C+(B+fe|0)|0],ae=te[C+(B+ae|0)|0],F[b+7|0]=255,F[b+6|0]=ae,b=b+8|0,Z=Z+2|0,p=p+8|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+1|0]=te[C+(a+d|0)|0],d=te[C+(h+d|0)|0],F[p+3|0]=255,F[p+2|0]=d,d=te[Z|0],F[b|0]=te[C+(d+q|0)|0],F[b+1|0]=te[C+(d+a|0)|0],h=te[C+(h+d|0)|0],F[b+3|0]=255,F[b+2|0]=h;return;case 2:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p+2|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+1|0]=te[C+(fe+D|0)|0],F[p|0]=te[C+(D+ae|0)|0],D=te[a+1|0],F[p+5|0]=te[C+(D+B|0)|0],F[p+4|0]=te[C+(D+fe|0)|0],F[p+3|0]=te[C+(D+ae|0)|0],D=te[Z|0],F[b+2|0]=te[C+(D+B|0)|0],F[b+1|0]=te[C+(D+fe|0)|0],F[b|0]=te[C+(D+ae|0)|0],D=B,B=te[Z+1|0],F[b+5|0]=te[C+(D+B|0)|0],F[b+4|0]=te[C+(B+fe|0)|0],F[b+3|0]=te[C+(B+ae|0)|0],b=b+6|0,Z=Z+2|0,p=p+6|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p+2|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+1|0]=te[C+(a+d|0)|0],F[p|0]=te[C+(h+d|0)|0],d=te[Z|0],F[b+2|0]=te[C+(d+q|0)|0],F[b+1|0]=te[C+(d+a|0)|0],F[b|0]=te[C+(h+d|0)|0];return;case 3:case 7:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p+2|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+1|0]=te[C+(fe+D|0)|0],D=te[C+(D+ae|0)|0],F[p+3|0]=255,F[p|0]=D,D=te[a+1|0],F[p+6|0]=te[C+(D+B|0)|0],F[p+5|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[p+7|0]=255,F[p+4|0]=D,D=te[Z|0],F[b+2|0]=te[C+(D+B|0)|0],F[b+1|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[b+3|0]=255,F[b|0]=D,D=B,B=te[Z+1|0],F[b+6|0]=te[C+(D+B|0)|0],F[b+5|0]=te[C+(B+fe|0)|0],ae=te[C+(B+ae|0)|0],F[b+7|0]=255,F[b+4|0]=ae,b=b+8|0,Z=Z+2|0,p=p+8|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p+2|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+1|0]=te[C+(a+d|0)|0],d=te[C+(h+d|0)|0],F[p+3|0]=255,F[p|0]=d,d=te[Z|0],F[b+2|0]=te[C+(d+q|0)|0],F[b+1|0]=te[C+(d+a|0)|0],h=te[C+(h+d|0)|0],F[b+3|0]=255,F[b|0]=h;return;case 4:case 8:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p+3|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+2|0]=te[C+(fe+D|0)|0],D=te[C+(D+ae|0)|0],F[p|0]=255,F[p+1|0]=D,D=te[a+1|0],F[p+7|0]=te[C+(D+B|0)|0],F[p+6|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[p+4|0]=255,F[p+5|0]=D,D=te[Z|0],F[b+3|0]=te[C+(D+B|0)|0],F[b+2|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[b|0]=255,F[b+1|0]=D,D=B,B=te[Z+1|0],F[b+7|0]=te[C+(D+B|0)|0],F[b+6|0]=te[C+(B+fe|0)|0],ae=te[C+(B+ae|0)|0],F[b+4|0]=255,F[b+5|0]=ae,b=b+8|0,Z=Z+2|0,p=p+8|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p+3|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+2|0]=te[C+(a+d|0)|0],d=te[C+(h+d|0)|0],F[p|0]=255,F[p+1|0]=d,d=te[Z|0],F[b+3|0]=te[C+(d+q|0)|0],F[b+2|0]=te[C+(d+a|0)|0],h=te[C+(h+d|0)|0],F[b|0]=255,F[b+1|0]=h;return;case 5:case 9:if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p+1|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+2|0]=te[C+(fe+D|0)|0],D=te[C+(D+ae|0)|0],F[p|0]=255,F[p+3|0]=D,D=te[a+1|0],F[p+5|0]=te[C+(D+B|0)|0],F[p+6|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[p+4|0]=255,F[p+7|0]=D,D=te[Z|0],F[b+1|0]=te[C+(D+B|0)|0],F[b+2|0]=te[C+(D+fe|0)|0],D=te[C+(D+ae|0)|0],F[b|0]=255,F[b+3|0]=D,D=B,B=te[Z+1|0],F[b+5|0]=te[C+(D+B|0)|0],F[b+6|0]=te[C+(B+fe|0)|0],ae=te[C+(B+ae|0)|0],F[b+4|0]=255,F[b+7|0]=ae,b=b+8|0,Z=Z+2|0,p=p+8|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p+1|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+2|0]=te[C+(a+d|0)|0],d=te[C+(h+d|0)|0],F[p|0]=255,F[p+3|0]=d,d=te[Z|0],F[b+1|0]=te[C+(d+q|0)|0],F[b+2|0]=te[C+(d+a|0)|0],h=te[C+(h+d|0)|0],F[b|0]=255,F[b+3|0]=h;return;default:break t}if(b=r[p+4>>2],Z=a<<2,q=r[Z+r[d+8>>2]>>2],ve=r[Z+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],Z=r[d+4>>2],C=r[h+324>>2],p=r[p>>2],d=r[h+452>>2],Se=r[d+28>>2],Le=r[d+24>>2],We=r[d+20>>2],lt=r[d+16>>2],d=r[h+112>>2],d>>>0>=2){for(d=d>>>1|0;B=te[ve|0]<<2,ae=r[B+We>>2],fe=te[q|0]<<2,mt=r[fe+Le>>2],Mt=r[B+Se>>2],B=r[fe+lt>>2],D=te[a|0],F[p|0]=te[C+(B+D|0)|0],fe=mt+Mt>>16,F[p+1|0]=te[C+(fe+D|0)|0],F[p+2|0]=te[C+(D+ae|0)|0],D=te[a+1|0],F[p+3|0]=te[C+(D+B|0)|0],F[p+4|0]=te[C+(D+fe|0)|0],F[p+5|0]=te[C+(D+ae|0)|0],D=te[Z|0],F[b|0]=te[C+(D+B|0)|0],F[b+1|0]=te[C+(D+fe|0)|0],F[b+2|0]=te[C+(D+ae|0)|0],D=B,B=te[Z+1|0],F[b+3|0]=te[C+(D+B|0)|0],F[b+4|0]=te[C+(B+fe|0)|0],F[b+5|0]=te[C+(B+ae|0)|0],b=b+6|0,Z=Z+2|0,p=p+6|0,a=a+2|0,q=q+1|0,ve=ve+1|0,d=d-1|0,!!d;);d=r[h+112>>2]}if(!(d&1))break e;d=te[ve|0]<<2,h=r[d+We>>2],q=te[q|0]<<2,ve=r[q+Le>>2],ae=r[d+Se>>2],q=r[q+lt>>2],d=te[a|0],F[p|0]=te[C+(q+d|0)|0],a=ae+ve>>16,F[p+1|0]=te[C+(a+d|0)|0],F[p+2|0]=te[C+(h+d|0)|0],d=te[Z|0],F[b|0]=te[C+(d+q|0)|0],F[b+1|0]=te[C+(d+a|0)|0],F[b+2|0]=te[C+(h+d|0)|0]}}function Vh(h,d,a,p){var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;b=hn-1312|0,hn=b,a>>>0>=4&&(B=r[h>>2],r[B+24>>2]=a,r[B+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),D=r[((d?180:196)+h|0)+(a<<2)>>2],D||(B=r[h>>2],r[B+24>>2]=a,r[B+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),B=r[p>>2],B||(B=Ie[r[r[h+4>>2]>>2]](h,1,1172)|0,r[p>>2]=B),r[B+144>>2]=D,a=te[D+1|0];e:{if(!a){a=0;break e}k(b+1040|0,1,a)}q=te[D+2|0],p=q+a|0,p>>>0>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,2,q)}q=te[D+3|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,3,q)}q=te[D+4|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,4,q)}q=te[D+5|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,5,q)}q=te[D+6|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,6,q)}q=te[D+7|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,7,q)}q=te[D+8|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,8,q)}q=te[D+9|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,9,q)}q=te[D+10|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,10,q)}q=te[D+11|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,11,q)}q=te[D+12|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,12,q)}q=te[D+13|0],a=q+p|0,(a|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){a=p;break e}k((b+1040|0)+p|0,13,q)}q=te[D+14|0],p=q+a|0,(p|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!q){p=a;break e}k((b+1040|0)+a|0,14,q)}a=te[D+15|0],q=a+p|0,(q|0)>=257&&(Z=r[h>>2],r[Z+20>>2]=8,Ie[r[Z>>2]](h));e:{if(!a){q=p;break e}k((b+1040|0)+p|0,15,a)}if(a=te[D+16|0],Z=a+q|0,(Z|0)>=257&&(p=r[h>>2],r[p+20>>2]=8,Ie[r[p>>2]](h)),p=0,a&&(k((b+1040|0)+q|0,16,a),q=Z),F[(b+1040|0)+q|0]=0,C=te[b+1040|0],C)for(ae=C<<24>>24,a=0;;){if(C<<24>>24==(ae|0))for(;r[(p<<2)+b>>2]=a,a=a+1|0,p=p+1|0,C=F[p+(b+1040|0)|0],(ae|0)==(C|0););if(1<>2],r[ve+20>>2]=8,Ie[r[ve>>2]](h)),ae=ae+1|0,a=a<<1,!(C&255))break}e:{if(!te[D+1|0]){a=0,p=-1;break e}r[B+76>>2]=0-r[b>>2],a=te[D+1|0],p=r[((a<<2)+b|0)-4>>2]}for(r[B+4>>2]=p,te[D+2|0]?(r[B+80>>2]=a-r[(a<<2)+b>>2],a=te[D+2|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+8>>2]=p,te[D+3|0]?(r[B+84>>2]=a-r[(a<<2)+b>>2],a=te[D+3|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+12>>2]=p,te[D+4|0]?(r[B+88>>2]=a-r[(a<<2)+b>>2],a=te[D+4|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+16>>2]=p,te[D+5|0]?(r[B+92>>2]=a-r[(a<<2)+b>>2],a=te[D+5|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+20>>2]=p,te[D+6|0]?(r[B+96>>2]=a-r[(a<<2)+b>>2],a=te[D+6|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+24>>2]=p,te[D+7|0]?(r[B+100>>2]=a-r[(a<<2)+b>>2],a=te[D+7|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+28>>2]=p,te[D+8|0]?(r[B+104>>2]=a-r[(a<<2)+b>>2],a=te[D+8|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+32>>2]=p,te[D+9|0]?(r[B+108>>2]=a-r[(a<<2)+b>>2],a=te[D+9|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+36>>2]=p,te[D+10|0]?(r[B+112>>2]=a-r[(a<<2)+b>>2],a=te[D+10|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+40>>2]=p,te[D+11|0]?(r[B+116>>2]=a-r[(a<<2)+b>>2],a=te[D+11|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+44>>2]=p,te[D+12|0]?(r[B+120>>2]=a-r[(a<<2)+b>>2],a=te[D+12|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+48>>2]=p,te[D+13|0]?(r[B+124>>2]=a-r[(a<<2)+b>>2],a=te[D+13|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+52>>2]=p,te[D+14|0]?(r[B+128>>2]=a-r[(a<<2)+b>>2],a=te[D+14|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+56>>2]=p,te[D+15|0]?(r[B+132>>2]=a-r[(a<<2)+b>>2],a=te[D+15|0]+a|0,p=r[((a<<2)+b|0)-4>>2]):p=-1,r[B+60>>2]=p,te[D+16|0]?(r[B+136>>2]=a-r[(a<<2)+b>>2],a=r[((te[D+16|0]+a<<2)+b|0)-4>>2]):a=-1,r[B+64>>2]=a,r[B+68>>2]=1048575,ae=0,r[B+140>>2]=0,a=B+148|0;p=ae<<2,r[p+a>>2]=2304,r[a+(p|4)>>2]=2304,r[a+(p|8)>>2]=2304,r[a+(p|12)>>2]=2304,r[a+(p|16)>>2]=2304,r[a+(p|20)>>2]=2304,r[a+(p|24)>>2]=2304,r[a+(p|28)>>2]=2304,ae=ae+8|0,(ae|0)!=256;);if(p=0,te[D+1|0])for(a=1,ve=B+148|0;;){for(Se=p+D|0,C=r[(p<<2)+b>>2]<<7,ae=128;fe=C<<2,r[fe+ve>>2]=te[Se+17|0]|256,r[ve+(fe|4)>>2]=te[Se+17|0]|256,r[ve+(fe|8)>>2]=te[Se+17|0]|256,r[ve+(fe|12)>>2]=te[Se+17|0]|256,C=C+4|0,fe=(ae|0)!=4,ae=ae-4|0,!!fe;);if(p=p+1|0,ae=te[D+1|0]>a>>>0,a=a+1|0,!ae)break}if(te[D+2|0])for(a=1,ve=B+148|0;;){for(Se=p+D|0,C=r[(p<<2)+b>>2]<<6,ae=64;fe=C<<2,r[fe+ve>>2]=te[Se+17|0]|512,r[ve+(fe|4)>>2]=te[Se+17|0]|512,r[ve+(fe|8)>>2]=te[Se+17|0]|512,r[ve+(fe|12)>>2]=te[Se+17|0]|512,C=C+4|0,fe=(ae|0)!=4,ae=ae-4|0,!!fe;);if(p=p+1|0,ae=te[D+2|0]>a>>>0,a=a+1|0,!ae)break}if(te[D+3|0])for(ae=1;a=(r[(p<<2)+b>>2]<<7)+B|0,C=p+D|0,r[a+148>>2]=te[C+17|0]|768,r[a+152>>2]=te[C+17|0]|768,r[a+156>>2]=te[C+17|0]|768,r[a+160>>2]=te[C+17|0]|768,r[a+164>>2]=te[C+17|0]|768,r[a+168>>2]=te[C+17|0]|768,r[a+172>>2]=te[C+17|0]|768,r[a+176>>2]=te[C+17|0]|768,r[a+180>>2]=te[C+17|0]|768,r[a+184>>2]=te[C+17|0]|768,r[a+188>>2]=te[C+17|0]|768,r[a+192>>2]=te[C+17|0]|768,r[a+196>>2]=te[C+17|0]|768,r[a+200>>2]=te[C+17|0]|768,r[a+204>>2]=te[C+17|0]|768,r[a+208>>2]=te[C+17|0]|768,r[a+212>>2]=te[C+17|0]|768,r[a+216>>2]=te[C+17|0]|768,r[a+220>>2]=te[C+17|0]|768,r[a+224>>2]=te[C+17|0]|768,r[a+228>>2]=te[C+17|0]|768,r[a+232>>2]=te[C+17|0]|768,r[a+236>>2]=te[C+17|0]|768,r[a+240>>2]=te[C+17|0]|768,r[a+244>>2]=te[C+17|0]|768,r[a+248>>2]=te[C+17|0]|768,r[a+252>>2]=te[C+17|0]|768,r[a+256>>2]=te[C+17|0]|768,r[a+260>>2]=te[C+17|0]|768,r[a+264>>2]=te[C+17|0]|768,r[a+268>>2]=te[C+17|0]|768,r[a+272>>2]=te[C+17|0]|768,p=p+1|0,a=te[D+3|0]>ae>>>0,ae=ae+1|0,!!a;);if(te[D+4|0])for(ae=1;a=(r[(p<<2)+b>>2]<<6)+B|0,C=p+D|0,r[a+148>>2]=te[C+17|0]|1024,r[a+152>>2]=te[C+17|0]|1024,r[a+156>>2]=te[C+17|0]|1024,r[a+160>>2]=te[C+17|0]|1024,r[a+164>>2]=te[C+17|0]|1024,r[a+168>>2]=te[C+17|0]|1024,r[a+172>>2]=te[C+17|0]|1024,r[a+176>>2]=te[C+17|0]|1024,r[a+180>>2]=te[C+17|0]|1024,r[a+184>>2]=te[C+17|0]|1024,r[a+188>>2]=te[C+17|0]|1024,r[a+192>>2]=te[C+17|0]|1024,r[a+196>>2]=te[C+17|0]|1024,r[a+200>>2]=te[C+17|0]|1024,r[a+204>>2]=te[C+17|0]|1024,r[a+208>>2]=te[C+17|0]|1024,p=p+1|0,a=te[D+4|0]>ae>>>0,ae=ae+1|0,!!a;);if(te[D+5|0])for(ae=1;a=(r[(p<<2)+b>>2]<<5)+B|0,C=p+D|0,r[a+148>>2]=te[C+17|0]|1280,r[a+152>>2]=te[C+17|0]|1280,r[a+156>>2]=te[C+17|0]|1280,r[a+160>>2]=te[C+17|0]|1280,r[a+164>>2]=te[C+17|0]|1280,r[a+168>>2]=te[C+17|0]|1280,r[a+172>>2]=te[C+17|0]|1280,r[a+176>>2]=te[C+17|0]|1280,p=p+1|0,a=te[D+5|0]>ae>>>0,ae=ae+1|0,!!a;);if(te[D+6|0])for(ae=1;a=(r[(p<<2)+b>>2]<<4)+B|0,C=p+D|0,r[a+148>>2]=te[C+17|0]|1536,r[a+152>>2]=te[C+17|0]|1536,r[a+156>>2]=te[C+17|0]|1536,r[a+160>>2]=te[C+17|0]|1536,p=p+1|0,a=te[D+6|0]>ae>>>0,ae=ae+1|0,!!a;);if(te[D+7|0])for(a=1;ae=(r[(p<<2)+b>>2]<<3)+B|0,C=p+D|0,r[ae+148>>2]=te[C+17|0]|1792,r[ae+152>>2]=te[C+17|0]|1792,p=p+1|0,ae=te[D+7|0]>a>>>0,a=a+1|0,!!ae;);if(te[D+8|0])for(a=1;r[((r[(p<<2)+b>>2]<<2)+B|0)+148>>2]=te[(p+D|0)+17|0]|2048,p=p+1|0,ae=te[D+8|0]>a>>>0,a=a+1|0,!!ae;);e:{if(!d|(q|0)<=0)break e;if(a=0,(Z|0)!=1)for(d=Z&-2,p=0;te[(a+D|0)+17|0]>=16&&(B=r[h>>2],r[B+20>>2]=8,Ie[r[B>>2]](h)),te[((a|1)+D|0)+17|0]>=16&&(B=r[h>>2],r[B+20>>2]=8,Ie[r[B>>2]](h)),a=a+2|0,p=p+2|0,(d|0)!=(p|0););if(!(Z&1)|te[(a+D|0)+17|0]<16)break e;d=r[h>>2],r[d+20>>2]=8,Ie[r[d>>2]](h)}hn=b+1312|0}function Uh(h,d,a,p,C,D,b,B,q){var Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;ae=hn-336|0,hn=ae,Se=B,We=q&65535,Le=p,ve=C&65535,on=(C^q)&-2147483648,Mt=q>>>16&32767,lt=C>>>16&32767;e:{t:{if(Mt-32767>>>0>4294934529<-32767>>>0>=4294934530)break t;if(Z=C&2147483647,!(!p&(Z|0)==2147418112?!(d|a):Z>>>0<2147418112)){mt=p,on=C|32768;break e}if(C=q&2147483647,!(!B&(C|0)==2147418112?!(D|b):C>>>0<2147418112)){mt=B,on=q|32768,d=D,a=b;break e}if(!(d|p|(Z^2147418112|a))){if(!(D|B|(C^2147418112|b))){d=0,a=0,on=2147450880;break e}on=on|2147418112,d=0,a=0;break e}if(!(D|B|(C^2147418112|b))){d=0,a=0;break e}if(!(d|p|(a|Z))){d=!(D|B|(C|b)),mt=d?0:mt,on=d?2147450880:on,d=0,a=0;break e}if(!(D|B|(C|b))){on=on|2147418112,d=0,a=0;break e}if((Z|0)==65535|Z>>>0<65535&&(p=!(ve|Le),q=p,Z=p?d:Le,p=p<<6,B=p,q=Q0(q?a:ve),p=p+((q|0)==32?Q0(Z)+32|0:q)|0,K0(ae+320|0,d,a,Le,ve,p-15|0),an=16-p|0,Le=r[ae+328>>2],ve=r[ae+332>>2],a=r[ae+324>>2],d=r[ae+320>>2]),C>>>0>65535)break t;p=!(Se|We),B=p,q=p?D:Se,p=p<<6,C=p,B=Q0(B?b:We),p=p+((B|0)==32?Q0(q)+32|0:B)|0,K0(ae+304|0,D,b,Se,We,p-15|0),an=(p+an|0)-16|0,Se=r[ae+312>>2],We=r[ae+316>>2],D=r[ae+304>>2],b=r[ae+308>>2]}C=We|65536,x=C,u=Se,p=Se,Z=C<<15|p>>>17,C=p<<15|b>>>17,p=C,q=0-p|0,B=Z,Z=1963258675-(Z+((p|0)!=0)|0)|0,Va(ae+288|0,p,B,0,0,q,Z,0,0),p=r[ae+296>>2],Va(ae+272|0,0-p|0,0-(r[ae+300>>2]+((p|0)!=0)|0)|0,0,0,q,Z,0,0),p=r[ae+280>>2],q=p<<1|r[ae+276>>2]>>>31,p=r[ae+284>>2]<<1|p>>>31,Va(ae+256|0,q,p,0,0,C,B,0,0),Z=r[ae+264>>2],Va(ae+240|0,q,p,0,0,0-Z|0,0-(r[ae+268>>2]+((Z|0)!=0)|0)|0,0,0),q=r[ae+248>>2],Z=q<<1|r[ae+244>>2]>>>31,p=r[ae+252>>2]<<1|q>>>31,Va(ae+224|0,Z,p,0,0,C,B,0,0),q=r[ae+232>>2],Va(ae+208|0,Z,p,0,0,0-q|0,0-(r[ae+236>>2]+((q|0)!=0)|0)|0,0,0),p=r[ae+216>>2],q=p<<1|r[ae+212>>2]>>>31,p=r[ae+220>>2]<<1|p>>>31,Va(ae+192|0,q,p,0,0,C,B,0,0),Z=r[ae+200>>2],Va(ae+176|0,q,p,0,0,0-Z|0,0-(r[ae+204>>2]+((Z|0)!=0)|0)|0,0,0),q=C,C=r[ae+184>>2],p=B,Se=C<<1|r[ae+180>>2]>>>31,B=Se-1|0,C=(r[ae+188>>2]<<1|C>>>31)-!Se|0,Va(ae+160|0,q,p,0,0,B,C,0,0),p=B,Va(ae+144|0,D<<15,b<<15|D>>>17,0,0,p,C,0,0),Ht=ae+112|0,ur=r[ae+168>>2],B=r[ae+172>>2],Se=r[ae+160>>2],q=r[ae+152>>2],fe=Se+q|0,We=r[ae+164>>2],Z=We+r[ae+156>>2]|0,Z=q>>>0>fe>>>0?Z+1|0:Z,q=Z,Z=(We|0)==(Z|0)&fe>>>0>>0|Z>>>0>>0,We=Z+ur|0,Z=Z>>>0>We>>>0?B+1|0:B,Se=!q&fe>>>0>1|(q|0)!=0,B=Se+We|0,Z=Se>>>0>B>>>0?Z+1|0:Z,Va(Ht,p,C,0,0,0-B|0,0-(((B|0)!=0)+Z|0)|0,0,0),Va(ae+128|0,1-fe|0,0-((fe>>>0>1)+q|0)|0,0,0,p,C,0,0),A=(lt-Mt|0)+an|0,C=r[ae+116>>2],Ht=C,p=r[ae+112>>2],Z=C<<1|p>>>31,Se=p<<1,lt=Z,p=Z,B=r[ae+140>>2],Er=B,C=r[ae+136>>2],Z=B<<1|C>>>31,q=C<<1|r[ae+132>>2]>>>31,B=q+Se|0,p=p+Z|0,p=B>>>0>>0?p+1|0:p,C=p,p=p-(B>>>0<13927)|0,Zt=p,ur=p,fe=0,Z=ve|65536,G=Z,H=Le,p=Le,Z=Z<<1|p>>>31,Q=p<<1,re=Z,y=Z,p=m0(Zt,fe,Z,0),Z=Pi,S=p,wn=Z,an=d<<1,p=a<<1|d>>>31,Mt=p,Z=0,We=Z,q=B-13927|0,Zt=(C|0)==(Zt|0)&q>>>0>>0|C>>>0>Zt>>>0,C=(C|0)==(lt|0)&B>>>0>>0|C>>>0>>0,p=r[ae+120>>2],B=r[ae+124>>2]<<1|p>>>31,p=p<<1|Ht>>>31,Z=B,fe=Er>>>31|0,p=fe+p|0,Z=p>>>0>>0?Z+1|0:Z,B=p,p=p+C|0,fe=B>>>0>p>>>0?Z+1|0:Z,C=p,p=p+Zt|0,fe=C>>>0>p>>>0?fe+1|0:fe,C=p-1|0,Zt=fe-!p|0,lt=0,Z=m0(Mt,We,Zt,lt),p=Z+S|0,B=Pi+wn|0,B=p>>>0>>0?B+1|0:B,Ht=(wn|0)==(B|0)&p>>>0>>0|B>>>0>>0,Z=0,Er=C,Y=a>>>31|0,m=Y|Le<<1,wn=0,C=m0(C,Z,m,wn),Le=C+p|0,Z=Pi+B|0,fe=0,Z=C>>>0>Le>>>0?Z+1|0:Z,Se=Z,p=(Z|0)==(B|0)&p>>>0>Le>>>0|B>>>0>Z>>>0,C=p,p=p+Ht|0,fe=C>>>0>p>>>0?1:fe,C=m0(y,We,Zt,lt),p=C+p|0,Z=Pi+fe|0,Ht=p,p=p>>>0>>0?Z+1|0:Z,C=m0(y,We,Er,wn),ve=Pi,B=C,C=m0(m,wn,Zt,lt),fe=B+C|0,Z=Pi+ve|0,Z=C>>>0>fe>>>0?Z+1|0:Z,C=Z,Z=(ve|0)==(Z|0)&B>>>0>fe>>>0|Z>>>0>>0,ve=Ht+C|0,p=p+Z|0,p=ve>>>0>>0?p+1|0:p,Ht=ve,ve=p,C=0,p=C+Le|0,Z=fe+Se|0,Z=p>>>0>>0?Z+1|0:Z,C=Z,B=(Z|0)==(Se|0)&p>>>0>>0|Z>>>0>>0,Z=ve,fe=B,B=B+Ht|0,Z=fe>>>0>B>>>0?Z+1|0:Z,M=B,fe=Z,Ht=p,ve=p,Le=C,S=q,p=m0(q,0,m,wn),B=Pi,C=p,q=m0(ur,mt,Mt,mt),p=p+q|0,Z=Pi+B|0,Z=p>>>0>>0?Z+1|0:Z,q=(B|0)==(Z|0)&p>>>0>>0|B>>>0>Z>>>0,B=Z,O=an&-2,C=m0(Er,wn,O,0),Se=C+p|0,Z=Pi+Z|0,Z=C>>>0>Se>>>0?Z+1|0:Z,C=Z,p=(Z|0)==(B|0)&p>>>0>Se>>>0|B>>>0>Z>>>0,B=0,q=p+q|0,p=(q>>>0

>>0?1:B)+Le|0,Z=fe,ve=q+ve|0,p=ve>>>0>>0?p+1|0:p,q=p,p=(p|0)==(Le|0)&ve>>>0>>0|p>>>0>>0,B=p,p=p+M|0,Z=B>>>0>p>>>0?Z+1|0:Z,se=p,Ht=Z,p=m0(y,We,S,mt),M=Pi,y=p,B=m0(Zt,lt,O,mt),p=p+B|0,Z=Pi+M|0,Le=p,We=m0(ur,mt,m,wn),fe=p+We|0,B=p>>>0>>0?Z+1|0:Z,p=B+Pi|0,p=fe>>>0>>0?p+1|0:p,lt=fe,Z=m0(Mt,mt,Er,wn),We=fe+Z|0,fe=Pi+p|0,fe=Z>>>0>We>>>0?fe+1|0:fe,Er=0,m=(p|0)==(fe|0)&We>>>0>>0|p>>>0>fe>>>0,Z=(B|0)==(M|0)&Le>>>0>>0|B>>>0>>0,p=(p|0)==(B|0)&Le>>>0>lt>>>0|p>>>0>>0,p=p+Z|0,p=p+m|0,B=fe,lt=B+ve|0,Z=(p|Er)+q|0,Z=B>>>0>lt>>>0?Z+1|0:Z,Le=Z,p=(q|0)==(Z|0)&ve>>>0>lt>>>0|q>>>0>Z>>>0,Z=Ht,B=p,p=p+se|0,Z=B>>>0>p>>>0?Z+1|0:Z,Er=p,q=Z,p=m0(ur,mt,O,mt),ur=Pi,ve=p,B=m0(Mt,mt,S,mt),p=p+B|0,Z=Pi+ur|0,Z=p>>>0>>0?Z+1|0:Z,Ht=0,B=(Z|0)==(ur|0)&p>>>0>>0|Z>>>0>>0,ve=Z,p=Z+Se|0,Z=(B|Ht)+C|0,Z=p>>>0>>0?Z+1|0:Z,B=Z,ve=(C|0)==(Z|0)&p>>>0>>0|C>>>0>Z>>>0,Z=We,We=0,Se=We+p|0,fe=B+Z|0,Z=0,fe=Se>>>0>>0?fe+1|0:fe,p=(B|0)==(fe|0)&p>>>0>Se>>>0|B>>>0>fe>>>0,C=p,p=p+ve|0,Z=(C>>>0>p>>>0?1:Z)+Le|0,fe=q,C=p,p=p+lt|0,Z=C>>>0>p>>>0?Z+1|0:Z,C=Z,B=(Le|0)==(Z|0)&p>>>0>>0|Z>>>0>>0,q=B,B=B+Er|0,fe=q>>>0>B>>>0?fe+1|0:fe,q=fe;t:{if((fe|0)==131071|fe>>>0<131071){H=Q|Y,G=wn|re,Va(ae+80|0,p,C,B,q,D,b,u,x),fe=r[ae+84>>2],We=fe,Z=d<<17,Se=0,ve=r[ae+88>>2],a=Se-ve|0,d=r[ae+80>>2],fe=(fe|d)!=0,Le=a-fe|0,ve=(Z-(r[ae+92>>2]+(ve>>>0>Se>>>0)|0)|0)-(a>>>0>>0)|0,Se=0-d|0,We=0-(((d|0)!=0)+We|0)|0,d=A+16382|0;break t}p=(C&1)<<31|p>>>1,C=B<<31|C>>>1,B=(q&1)<<31|B>>>1,q=q>>>1|0,Va(ae+96|0,p,C,B,q,D,b,u,x),Le=r[ae+100>>2],Mt=Le,an=r[ae+104>>2],Se=0-an|0,fe=r[ae+96>>2],ve=(Le|fe)!=0,Le=Se-ve|0,ve=((d<<16)-(r[ae+108>>2]+(We>>>0>>0)|0)|0)-(ve>>>0>Se>>>0)|0,Se=0-fe|0,We=0-(((fe|0)!=0)+Mt|0)|0,an=d,Mt=a,d=A+16383|0}if((d|0)>=32767){on=on|2147418112,d=0,a=0;break e}t:{if((d|0)>0){fe=ve<<1|Le>>>31,Le=Le<<1|We>>>31,ve=fe,an=B,Mt=q&65535|d<<16,fe=We<<1|Se>>>31,q=Se<<1;break t}if((d|0)<=-113){d=0,a=0;break e}$i(ae- -64|0,p,C,B,q,1-d|0),K0(ae+48|0,an,Mt,H,G,d+112|0),p=r[ae+64>>2],C=r[ae+68>>2],an=r[ae+72>>2],Mt=r[ae+76>>2],Va(ae+32|0,D,b,u,x,p,C,an,Mt),d=r[ae+40>>2],a=r[ae+56>>2],fe=r[ae+36>>2],Le=d<<1|fe>>>31,Se=a-Le|0,ve=r[ae+60>>2]-((r[ae+44>>2]<<1|d>>>31)+(a>>>0>>0)|0)|0,d=r[ae+32>>2],B=fe<<1|d>>>31,Z=d<<1,q=r[ae+52>>2],a=r[ae+48>>2],d=(B|0)==(q|0)&Z>>>0>a>>>0|B>>>0>q>>>0,Le=Se-d|0,ve=ve-(d>>>0>Se>>>0)|0,fe=q-((a>>>0>>0)+B|0)|0,q=a-Z|0}d=q,Va(ae+16|0,D,b,u,x,3,0,0,0),Va(ae,D,b,u,x,5,0,0,0),a=0,B=fe+a|0,Z=p&1,d=d+Z|0,B=q>>>0>d>>>0?B+1|0:B,q=d,b=(b|0)==(B|0)&d>>>0>D>>>0|b>>>0>>0,fe=ve,d=(a|0)==(B|0)&d>>>0>>0|a>>>0>B>>>0,D=d+Le|0,fe=d>>>0>D>>>0?fe+1|0:fe,Z=C,d=(fe|0)==(x|0),d=d&(D|0)==(u|0)?b:d&D>>>0>u>>>0|fe>>>0>x>>>0,a=d,d=d+p|0,Z=a>>>0>d>>>0?Z+1|0:Z,a=Z,p=(C|0)==(Z|0)&d>>>0

>>0|C>>>0>Z>>>0,Z=Mt,C=p,p=p+an|0,Z=C>>>0>p>>>0?Z+1|0:Z,b=p,C=r[ae+20>>2],ve=(C|0)==(B|0)&ni[ae+16>>2]>>0|C>>>0>>0,C=r[ae+28>>2],p=r[ae+24>>2],C=Z>>>0<2147418112&((p|0)==(D|0)&(C|0)==(fe|0)?ve:(C|0)==(fe|0)&p>>>0>>0|C>>>0>>0),p=a,ve=C,C=d+C|0,p=ve>>>0>C>>>0?p+1|0:p,d=(a|0)==(p|0)&d>>>0>C>>>0|a>>>0>p>>>0,a=d,d=d+b|0,Z=a>>>0>d>>>0?Z+1|0:Z,b=d,a=r[ae+4>>2],B=(a|0)==(B|0)&ni[ae>>2]>>0|a>>>0>>0,a=r[ae+12>>2],d=r[ae+8>>2],d=Z>>>0<2147418112&((d|0)==(D|0)&(a|0)==(fe|0)?B:(a|0)==(fe|0)&d>>>0>>0|a>>>0>>0),a=d,d=d+C|0,fe=a>>>0>d>>>0?p+1|0:p,a=fe,C=(p|0)==(fe|0)&d>>>0>>0|p>>>0>fe>>>0,p=Z,D=C,C=C+b|0,p=D>>>0>C>>>0?p+1|0:p,mt=C|mt,on=p|on}r[h>>2]=d,r[h+4>>2]=a,r[h+8>>2]=mt,r[h+12>>2]=on,hn=ae+336|0}function _p(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;C=hn-32|0,hn=C,ae=r[h+348>>2];e:{if(!r[h+180>>2]){if(r[h+244>>2]<=0)break e;for(;a=r[((d<<2)+h|0)+248>>2],r[h+316>>2]|r[h+324>>2]||Q2(h,r[a+20>>2],0),r[h+320>>2]&&Q2(h,r[a+24>>2],1),d=d+1|0,(d|0)>2];);break e}r[C+16>>2]=0,r[C+20>>2]=0,r[C+24>>2]=0,r[C+28>>2]=0,r[C+8>>2]=0,r[C+12>>2]=0,r[C>>2]=0,r[C+4>>2]=0,a=r[h+244>>2];t:{if((a|0)<=0)break t;if(d=r[h+320>>2],!r[h+316>>2]){if(!r[h+324>>2]){if(d){if(d=0,(a|0)!=1)for(D=a&-2,b=h+248|0;Z=C+16|0,B=d<<2,q=r[B+b>>2],F[Z+r[q+20>>2]|0]=1,F[r[q+24>>2]+C|0]=1,B=r[b+(B|4)>>2],F[Z+r[B+20>>2]|0]=1,F[r[B+24>>2]+C|0]=1,d=d+2|0,p=p+2|0,(D|0)!=(p|0););if(!(a&1))break t;d=r[((d<<2)+h|0)+248>>2],F[r[d+20>>2]+(C+16|0)|0]=1,F[r[d+24>>2]+C|0]=1;break t}if(d=0,a>>>0>=4)for(Z=a&-4,D=h+248|0;q=C+16|0,B=d<<2,F[q+r[r[B+D>>2]+20>>2]|0]=1,F[q+r[r[D+(B|4)>>2]+20>>2]|0]=1,F[q+r[r[D+(B|8)>>2]+20>>2]|0]=1,F[q+r[r[D+(B|12)>>2]+20>>2]|0]=1,d=d+4|0,p=p+4|0,(Z|0)!=(p|0););if(a=a&3,!a)break t;for(;F[r[r[((d<<2)+h|0)+248>>2]+20>>2]+(C+16|0)|0]=1,d=d+1|0,b=b+1|0,(a|0)!=(b|0););break t}if(!d)break t;if(d=0,a>>>0>=4)for(q=a&-4,D=h+248|0;B=d<<2,F[r[r[B+D>>2]+24>>2]+C|0]=1,F[r[r[D+(B|4)>>2]+24>>2]+C|0]=1,F[r[r[D+(B|8)>>2]+24>>2]+C|0]=1,F[r[r[D+(B|12)>>2]+24>>2]+C|0]=1,d=d+4|0,p=p+4|0,(q|0)!=(p|0););if(a=a&3,!a)break t;for(;F[r[r[((d<<2)+h|0)+248>>2]+24>>2]+C|0]=1,d=d+1|0,b=b+1|0,(a|0)!=(b|0););break t}if(!d)break t;if(d=0,a>>>0>=4)for(q=a&-4,D=h+248|0;B=d<<2,F[r[r[B+D>>2]+24>>2]+C|0]=1,F[r[r[D+(B|4)>>2]+24>>2]+C|0]=1,F[r[r[D+(B|8)>>2]+24>>2]+C|0]=1,F[r[r[D+(B|12)>>2]+24>>2]+C|0]=1,d=d+4|0,p=p+4|0,(q|0)!=(p|0););if(a=a&3,!a)break t;for(;F[r[r[((d<<2)+h|0)+248>>2]+24>>2]+C|0]=1,d=d+1|0,b=b+1|0,(a|0)!=(b|0););}if(p=F[C+15|0]+(F[C+31|0]+(F[C+14|0]+(F[C+30|0]+(F[C+13|0]+(F[C+29|0]+(F[C+12|0]+(F[C+28|0]+(F[C+11|0]+(F[C+27|0]+(F[C+10|0]+(F[C+26|0]+(F[C+9|0]+(F[C+25|0]+(F[C+8|0]+(F[C+24|0]+(F[C+7|0]+(F[C+23|0]+(F[C+6|0]+(F[C+22|0]+(F[C+5|0]+(F[C+21|0]+(F[C+4|0]+(F[C+20|0]+(F[C+3|0]+(F[C+19|0]+(F[C+2|0]+(F[C+18|0]+(F[C+1|0]+(F[C+17|0]+(F[C|0]+F[C+16|0]|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0,!p)break e;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=204,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,p=(p<<1)+2|0,F[a|0]=p>>>8,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}for(d=0;;){t:{if(!te[(C+16|0)+d|0])break t;a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=d,p=r[a+4>>2]-1|0,r[a+4>>2]=p;n:{if(p||Ie[r[a+12>>2]](h)|0)break n;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(a=h+d|0,b=te[a+120|0],D=te[a+136|0],a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=b+(D<<4),p=r[a+4>>2]-1|0,r[a+4>>2]=p,p||Ie[r[a+12>>2]](h)|0)break t;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}t:{if(!te[d+C|0])break t;a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=d+16,p=r[a+4>>2]-1|0,r[a+4>>2]=p;n:{if(p||Ie[r[a+12>>2]](h)|0)break n;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(b=te[(h+d|0)+152|0],a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=b,p=r[a+4>>2]-1|0,r[a+4>>2]=p,p||Ie[r[a+12>>2]](h)|0)break t;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(d=d+1|0,(d|0)==16)break}}if(r[h+200>>2]!=r[ae+28>>2]){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=221,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=4,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}a=r[h+200>>2],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a>>>8,p=r[d+4>>2]-1|0,r[d+4>>2]=p;e:{if(p||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}r[ae+28>>2]=r[h+200>>2]}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=218,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+244>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,p=(p<<1)+6|0,F[a|0]=p>>>8,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+244>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[h+244>>2]>0)for(b=0;;){a=r[((b<<2)+h|0)+248>>2],D=r[a>>2],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=D,p=r[d+4>>2]-1|0,r[d+4>>2]=p;e:{if(p||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=0,d=0;e:{if(r[h+316>>2]||(d=0,r[h+324>>2]))break e;d=r[a+20>>2]}p=r[h+320>>2]?r[a+24>>2]:p,a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,F[D|0]=(d<<4)+p,d=r[a+4>>2]-1|0,r[a+4>>2]=d;e:{if(d||Ie[r[a+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(b=b+1|0,!((b|0)>2]))break}p=r[h+316>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+320>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+328>>2],b=r[h+324>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p+(b<<4),a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}hn=C+32|0}function p5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0;lt=hn-16|0,hn=lt;e:{t:{n:{r:{if(p=L1(),p){if(D=r[h>>2],(Ot(p,D,r[h+4>>2]-D|0,lt+12|0,lt+8|0,lt+4|0,lt)|0)<0)break r;d=r[lt+12>>2],He[h+24>>1]=d,D=r[lt+8>>2],F[h+30|0]=0,F[h+28|0]=8,He[h+26>>1]=D,a=r[lt>>2]==2,F[h+29|0]=a?1:3,Mt=a?6:0,D=Ce(r[(Mt<<2)+9232>>2],Ce(D&65535,d&65535)),q=r[h+16>>2],d=r[h+12>>2],a=q-d|0;i:{if(D>>>0>a>>>0){if(Z=D-a|0,ve=r[h+20>>2],Z>>>0<=ve-q>>>0){O=h,A=k(q,0,Z)+Z|0,r[O+16>>2]=A;break i}if((D|0)<0)break n;if(q=ve-d|0,ve=q<<1,q=q>>>0>=1073741823?2147483647:D>>>0>>0?ve:D,ve=Po(q),k(ve+a|0,0,Z),a=Lc(ve,d,a),r[h+20>>2]=a+q,r[h+16>>2]=a+D,r[h+12>>2]=a,!d)break i;J(d);break i}if(a>>>0<=D>>>0)break i;r[h+16>>2]=d+D}D=r[h>>2],Er=D,x=r[h+4>>2]-D|0,ve=r[h+12>>2],wn=En[h+24>>1],Zt=En[h+26>>1],D=0,h=0,u=hn-32|0,hn=u,Z=Io(40),r[Z>>2]=0;i:{a:{s:{if(!p){h=te[5114]|te[5115]<<8|(te[5116]<<16|te[5117]<<24),D=te[5110]|te[5111]<<8|(te[5112]<<16|te[5113]<<24),F[147847]=D,F[147848]=D>>>8,F[147849]=D>>>16,F[147850]=D>>>24,F[147851]=h,F[147852]=h>>>8,F[147853]=h>>>16,F[147854]=h>>>24,h=te[5107]|te[5108]<<8|(te[5109]<<16|te[5110]<<24),r[36960]=te[5103]|te[5104]<<8|(te[5105]<<16|te[5106]<<24),r[36961]=h,d=-1;break s}q=4,r[p+1348>>2]=0,r[p+1132>>2]=0,r[p+1136>>2]=0,mt=p+376|0;o:{u:{if(!(te[p+1140|0]&2)){D0(p+1148|0,4136,69),r[p+1348>>2]=1,D0(147840,4136,69);break u}if(!(!(!Er|(Mt|0)>11|(!x|!ve))&(wn|Zt|Mt)>=0)){r[p+1348>>2]=1,d=p+1180|0,We=te[2357]|te[2358]<<8,F[d|0]=We,F[d+1|0]=We>>>8,a=te[2353]|te[2354]<<8|(te[2355]<<16|te[2356]<<24),d=p+1172|0,fe=te[2349]|te[2350]<<8|(te[2351]<<16|te[2352]<<24),F[d|0]=fe,F[d+1|0]=fe>>>8,F[d+2|0]=fe>>>16,F[d+3|0]=fe>>>24,F[d+4|0]=a,F[d+5|0]=a>>>8,F[d+6|0]=a>>>16,F[d+7|0]=a>>>24,ae=te[2345]|te[2346]<<8|(te[2347]<<16|te[2348]<<24),d=p+1164|0,B=te[2341]|te[2342]<<8|(te[2343]<<16|te[2344]<<24),F[d|0]=B,F[d+1|0]=B>>>8,F[d+2|0]=B>>>16,F[d+3|0]=B>>>24,F[d+4|0]=ae,F[d+5|0]=ae>>>8,F[d+6|0]=ae>>>16,F[d+7|0]=ae>>>24,b=te[2337]|te[2338]<<8|(te[2339]<<16|te[2340]<<24),d=p+1156|0,Se=te[2333]|te[2334]<<8|(te[2335]<<16|te[2336]<<24),F[d|0]=Se,F[d+1|0]=Se>>>8,F[d+2|0]=Se>>>16,F[d+3|0]=Se>>>24,F[d+4|0]=b,F[d+5|0]=b>>>8,F[d+6|0]=b>>>16,F[d+7|0]=b>>>24,d=te[2329]|te[2330]<<8|(te[2331]<<16|te[2332]<<24),Le=te[2325]|te[2326]<<8|(te[2327]<<16|te[2328]<<24),F[p+1148|0]=Le,F[p+1149|0]=Le>>>8,F[p+1150|0]=Le>>>16,F[p+1151|0]=Le>>>24,F[p+1152|0]=d,F[p+1153|0]=d>>>8,F[p+1154|0]=d>>>16,F[p+1155|0]=d>>>24,He[73936]=We,r[36966]=fe,r[36967]=a,r[36964]=B,r[36965]=ae,r[36962]=Se,r[36963]=b,r[36960]=Le,r[36961]=d;break u}r[p+384>>2]=0,m=p+972|0,Z=Fc(m,2,Z,4),q=Mi,d=0;break o}ae=-1,d=2}for(;;){o:{u:{l:{h:{f:{p:{c:{m:switch(d|0){case 0:if(C)break f;r[37564]=0,xc(271,mt|0,Er|0,x|0),d=r[37564],r[37564]=0,a=-1;g:{if(!d||(C=r[37565],!C))break g;if(a=Zo(r[d>>2],Z,q),!a)break a;Mi=C}C=Mi;g:switch(a-1|0){case 1:break o;case 0:break l;default:break g}if(r[37564]=0,dp(272,mt|0,1)|0,d=r[37564],r[37564]=0,a=-1,!d||(C=r[37565],!C))break p;if(a=Zo(r[d>>2],Z,q),a)break c;break a;case 1:if(C)ae=-1;else{C=r[ur>>2];g:{if((C|0)<=0)break g;if(a=0,d=0,C>>>0>=4)for(fe=C&-4,b=0;r[(d<<2)+D>>2]=ve+Ce(d,Ht),B=d|1,r[(B<<2)+D>>2]=ve+Ce(B,Ht),B=d|2,r[(B<<2)+D>>2]=ve+Ce(B,Ht),B=d|3,r[(B<<2)+D>>2]=ve+Ce(B,Ht),d=d+4|0,b=b+4|0,(fe|0)!=(b|0););if(b=C&3,!b)break g;for(;r[(d<<2)+D>>2]=ve+Ce(d,Ht),d=d+1|0,a=a+1|0,(b|0)!=(a|0););}if(d=r[p+516>>2],C>>>0>d>>>0)for(;;){r[37564]=0,bh(276,mt|0,(d<<2)+D|0,C-d|0)|0,d=r[37564],r[37564]=0,a=-1;g:{if(!d||(C=r[37565],!C))break g;if(a=Zo(r[d>>2],Z,q),!a)break a;Mi=C}C=Mi;g:switch(a-1|0){case 1:break o;case 0:break l;default:break g}if(d=r[p+516>>2],C=r[ur>>2],!(d>>>0>>0))break}r[37564]=0,g4(277,mt|0)|0,d=r[37564],r[37564]=0,a=-1;g:{if(!d||(C=r[37565],!C))break g;if(a=Zo(r[d>>2],Z,q),!a)break a;Mi=C}if(C=Mi,(a|0)==1)break l;if((a|0)==2)break o;ae=0}h=D;break u;default:break m}m:{if(r[p+396>>2]<201)break m;r[37564]=0,fu(274,mt|0),d=r[37564],r[37564]=0,a=-1;g:{if(!d||(C=r[37565],!C))break g;if(a=Zo(r[d>>2],Z,q),!a)break a;Mi=C}switch(C=Mi,a-1|0){case 1:break o;case 0:break l;default:break m}}J(h),r[p+1136>>2]=0,d=r[p+1132>>2]?-1:ae;break s}Mi=C}C=Mi;p:switch(a-1|0){case 1:break o;case 0:break l;default:break p}for(r[p+420>>2]=r[(Mt<<2)+144992>>2],fe=r[p+408>>2],B=Zt||fe,Se=r[p+404>>2],Le=wn||Se,d=0;;){if(b=d<<3,a=r[b+144868>>2],We=a-1|0,b=r[b+144864>>2],((We+Ce(b,Se)|0)/(a|0)|0)<=(Le|0)&(B|0)>=((Ce(b,fe)+We|0)/(a|0)|0))break h;if(d=d+1|0,(d|0)==16)break}D0(p+1148|0,3160,66),r[p+1348>>2]=1,D0(147840,3160,66)}ae=-1,h=0;break u}r[p+428>>2]=a,r[p+424>>2]=b,r[37564]=0,g4(278,mt|0)|0,d=r[37564],r[37564]=0,a=-1;h:{if(!d||(C=r[37565],!C))break h;if(a=Zo(r[d>>2],Z,q),!a)break a;Mi=C}if(C=Mi,(a|0)==2)break o;if((a|0)==1)break l;if(Ht=Ce(r[(Mt<<2)+144816>>2],r[p+488>>2]),ur=p+492|0,D=Io(r[ur>>2]<<2),!D){r[p+1348>>2]=1,h=0,d=p+1187|0,B=te[4713]|te[4714]<<8|(te[4715]<<16|te[4716]<<24),F[d|0]=B,y=B>>>8|0,F[d+1|0]=y,S=B>>>16|0,F[d+2|0]=S,M=B>>>24|0,F[d+3|0]=M,a=te[4710]|te[4711]<<8|(te[4712]<<16|te[4713]<<24),d=p+1180|0,Se=te[4706]|te[4707]<<8|(te[4708]<<16|te[4709]<<24),F[d|0]=Se,F[d+1|0]=Se>>>8,F[d+2|0]=Se>>>16,F[d+3|0]=Se>>>24,F[d+4|0]=a,F[d+5|0]=a>>>8,F[d+6|0]=a>>>16,F[d+7|0]=a>>>24,ae=te[4702]|te[4703]<<8|(te[4704]<<16|te[4705]<<24),d=p+1172|0,Le=te[4698]|te[4699]<<8|(te[4700]<<16|te[4701]<<24),F[d|0]=Le,F[d+1|0]=Le>>>8,F[d+2|0]=Le>>>16,F[d+3|0]=Le>>>24,F[d+4|0]=ae,F[d+5|0]=ae>>>8,F[d+6|0]=ae>>>16,F[d+7|0]=ae>>>24,b=te[4694]|te[4695]<<8|(te[4696]<<16|te[4697]<<24),d=p+1164|0,We=te[4690]|te[4691]<<8|(te[4692]<<16|te[4693]<<24),F[d|0]=We,F[d+1|0]=We>>>8,F[d+2|0]=We>>>16,F[d+3|0]=We>>>24,F[d+4|0]=b,F[d+5|0]=b>>>8,F[d+6|0]=b>>>16,F[d+7|0]=b>>>24,fe=te[4686]|te[4687]<<8|(te[4688]<<16|te[4689]<<24),d=p+1156|0,on=te[4682]|te[4683]<<8|(te[4684]<<16|te[4685]<<24),F[d|0]=on,F[d+1|0]=on>>>8,F[d+2|0]=on>>>16,F[d+3|0]=on>>>24,F[d+4|0]=fe,F[d+5|0]=fe>>>8,F[d+6|0]=fe>>>16,F[d+7|0]=fe>>>24,d=te[4678]|te[4679]<<8|(te[4680]<<16|te[4681]<<24),an=te[4674]|te[4675]<<8|(te[4676]<<16|te[4677]<<24),F[p+1148|0]=an,F[p+1149|0]=an>>>8,F[p+1150|0]=an>>>16,F[p+1151|0]=an>>>24,F[p+1152|0]=d,F[p+1153|0]=d>>>8,F[p+1154|0]=d>>>16,F[p+1155|0]=d>>>24,F[147879]=B,F[147880]=y,F[147881]=S,F[147882]=M,r[36968]=Se,r[36969]=a,r[36966]=Le,r[36967]=ae,r[36964]=We,r[36965]=b,r[36962]=on,r[36963]=fe,r[36960]=an,r[36961]=d,ae=-1;break u}C=0,Z=Fc(m,1,Z,q),q=Mi}d=1;continue}d=2;continue}d=0}}J(Z),hn=u+32|0;break i}J(Z),Hu(d,C),mr()}if(Af(p),(d|0)<0)break t;hn=lt+16|0;return}h=qu(4),r[h>>2]=8904;break e}Af(p),h=qu(4),r[h>>2]=8931;break e}j4(),mr()}h=qu(4),r[h>>2]=8953}Fu(h|0,147344,0),mr()}function Gt(h){h=h|0;var d=0,a=0,p=0;p=r[h+348>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=216,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}r[p+28>>2]=0;e:{if(!r[h+208>>2])break e;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=224,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=16,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=74,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=70,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=73,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=70,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=te[h+212|0],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=te[h+213|0],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=te[h+214|0],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}a=En[h+216>>1],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a>>>8,p=r[d+4>>2]-1|0,r[d+4>>2]=p;t:{if(p||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}a=En[h+218>>1],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a>>>8,p=r[d+4>>2]-1|0,r[d+4>>2]=p;t:{if(p||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}e:{if(!r[h+220>>2])break e;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=238,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=14,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=65,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=100,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=111,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=98,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=101,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=100,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}t:{n:switch(r[h+64>>2]-3|0){case 0:if(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=1,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a)break e;if(!(Ie[r[d+12>>2]](h)|0))break t;break e;case 2:if(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=2,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a)break e;if(!(Ie[r[d+12>>2]](h)|0))break t;break e;default:break n}if(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a||Ie[r[d+12>>2]](h)|0)break e}d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}}function Ic(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0;B=hn-48|0,hn=B,lt=r[h+444>>2],ae=r[h+276>>2];e:{t:{if(r[lt+36>>2]|!ae)break t;if(b=r[h+440>>2],r[b+24>>2]=r[b+24>>2]+(r[lt+16>>2]/8|0),r[lt+16>>2]=0,!(Ie[r[b+8>>2]](h)|0))break e;if(r[h+328>>2]>0)for(b=lt+20|0;r[b+(C<<2)>>2]=0,C=C+1|0,(C|0)>2];);if(r[lt+36>>2]=r[h+276>>2],r[h+416>>2])break t;r[lt+8>>2]=0}t:{n:{mt=r[h+24>>2],Ht=r[mt+4>>2],on=r[h+356>>2];r:{if(!(r[h+416>>2]|Ht>>>0>>0)){if(r[lt+8>>2])break t;if(ae)break r;if(fe=r[h+444>>2],C=r[fe+16>>2],b=r[fe+12>>2],ve=r[mt>>2],ae=r[fe+32>>2],r[B+32>>2]=r[fe+28>>2],r[B+36>>2]=ae,ae=r[fe+24>>2],r[B+24>>2]=r[fe+20>>2],r[B+28>>2]=ae,(on|0)<=0){D=ve;break n}for(ae=0,D=ve;;){We=0,We=d?r[(an<<2)+d>>2]:We,Mt=an<<2,Le=fe+Mt|0,Se=r[Le+112>>2],Z=r[Le+72>>2];i:{if((C|0)>16)break i;p=b<<8,q=te[D|0],b=p|q,a=te[D+1|0];a:{if((q|0)!=255){D=D+1|0;break a}s:{if(!a){D=D+2|0;break s}r[h+416>>2]=a,ae=a,b=p}a=te[D|0]}if(C=C+16|0,p=b<<8,b=p|a,(a|0)!=255){D=D+1|0;break i}if(a=te[D+1|0],!a){D=D+2|0;break i}r[h+416>>2]=a,ae=a,b=p}p=r[(Z+((b>>>C-8&255)<<2)|0)+148>>2],a=p>>8,C=C-a|0;i:{if((p|0)<2304)a=p&255;else{if(p=(-1<>>C,(p|0)>r[Z+(a<<2)>>2])for(;C=C-1|0,p=b>>>C&1|p<<1,a=a+1|0,(p|0)>r[Z+(a<<2)>>2];);if(q=0,(a|0)>16)break i;a=te[(r[Z+144>>2]+(r[(Z+(a<<2)|0)+72>>2]+p&255)|0)+17|0]}if(q=0,!a)break i;a:{if((C|0)>16)break a;q=b<<8,Z=te[D|0],b=q|Z,p=te[D+1|0];s:{if((Z|0)!=255){D=D+1|0;break s}o:{if(!p){D=D+2|0;break o}r[h+416>>2]=p,ae=p,b=q}p=te[D|0]}if(C=C+16|0,q=b<<8,b=q|p,(p|0)!=255){D=D+1|0;break a}if(p=te[D+1|0],!p){D=D+2|0;break a}r[h+416>>2]=p,ae=p,b=q}q=-1<>>C,q=(q+a>>31&p+1)+a|0}i:{a:{s:{if(r[Le+152>>2]){if(p=(B+24|0)+(r[(h+Mt|0)+360>>2]<<2)|0,a=q+r[p>>2]|0,r[p>>2]=a,!We)break s;He[We>>1]=a}if(!r[Le+192>>2])break s;if(We)break a}for(q=1;;){s:{if((C|0)>16)break s;p=b<<8,Z=te[D|0],b=p|Z,a=te[D+1|0];o:{if((Z|0)!=255){D=D+1|0;break o}u:{if(!a){D=D+2|0;break u}r[h+416>>2]=a,ae=a,b=p}a=te[D|0]}if(C=C+16|0,p=b<<8,b=p|a,(a|0)!=255){D=D+1|0;break s}if(a=te[D+1|0],!a){D=D+2|0;break s}r[h+416>>2]=a,ae=a,b=p}if(p=r[(Se+((b>>>C-8&255)<<2)|0)+148>>2],a=p>>8,C=C-a|0,(p|0)<2304)a=p&255;else{if(p=(-1<>>C,(p|0)>r[Se+(a<<2)>>2])for(;C=C-1|0,p=b>>>C&1|p<<1,a=a+1|0,(p|0)>r[Se+(a<<2)>>2];);if((a|0)>16)break i;a=te[(r[Se+144>>2]+(r[(Se+(a<<2)|0)+72>>2]+p&255)|0)+17|0]}Le=a>>>4|0,We=a&15;s:{if(We){if((C|0)<=16){a=b<<8,p=te[D|0],b=a|p,Z=te[D+1|0];o:{if((p|0)!=255){D=D+1|0;break o}u:{if(!Z){D=D+2|0;break u}r[h+416>>2]=Z,ae=Z,b=a}Z=te[D|0]}if(C=C+16|0,p=b<<8,b=p|Z,(Z|0)!=255){D=D+1|0,C=C-We|0;break s}if(a=te[D+1|0],!a){D=D+2|0,C=C-We|0;break s}r[h+416>>2]=a,ae=a,b=p}C=C-We|0;break s}if((Le|0)!=15)break i}if(q=(q+Le|0)+1|0,!((q|0)<64))break}break i}for(q=1;;){a:{if((C|0)>16)break a;p=b<<8,Z=te[D|0],b=p|Z,a=te[D+1|0];s:{if((Z|0)!=255){D=D+1|0;break s}o:{if(!a){D=D+2|0;break o}r[h+416>>2]=a,ae=a,b=p}a=te[D|0]}if(C=C+16|0,p=b<<8,b=p|a,(a|0)!=255){D=D+1|0;break a}if(a=te[D+1|0],!a){D=D+2|0;break a}r[h+416>>2]=a,ae=a,b=p}if(p=r[(Se+((b>>>C-8&255)<<2)|0)+148>>2],a=p>>8,C=C-a|0,(p|0)<2304)a=p&255;else{if(p=(-1<>>C,(p|0)>r[Se+(a<<2)>>2])for(;C=C-1|0,p=b>>>C&1|p<<1,a=a+1|0,(p|0)>r[Se+(a<<2)>>2];);if((a|0)>16)break i;a=te[(r[Se+144>>2]+(r[(Se+(a<<2)|0)+72>>2]+p&255)|0)+17|0]}p=a>>>4|0,Le=a&15;a:{if(Le){a=p+q|0;s:{if((C|0)>16)break s;p=b<<8,Z=te[D|0],b=p|Z,q=te[D+1|0];o:{if((Z|0)!=255){D=D+1|0;break o}u:{if(!q){D=D+2|0;break u}r[h+416>>2]=q,ae=q,b=p}q=te[D|0]}if(C=C+16|0,Z=b<<8,b=Z|q,(q|0)!=255){D=D+1|0;break s}if(p=te[D+1|0],!p){D=D+2|0;break s}r[h+416>>2]=p,ae=p,b=Z}p=-1<>>C,He[(r[(a<<2)+9424>>2]<<1)+We>>1]=(q+(-1<>31&(p|1))+q;break a}if((p|0)!=15)break i;a=q+15|0}if(q=a+1|0,!((a|0)<63))break}}if(an=an+1|0,(on|0)==(an|0))break}if(!ae)break n;r[h+416>>2]=0;break r}if(r[lt+8>>2])break t}ve=r[h+444>>2],r[B+40>>2]=h,a=r[mt>>2],r[B+28>>2]=Ht,r[B+24>>2]=a,C=r[ve+16>>2],b=r[ve+12>>2],ae=r[ve+32>>2],r[B+16>>2]=r[ve+28>>2],r[B+20>>2]=ae,ae=r[ve+24>>2],r[B+8>>2]=r[ve+20>>2],r[B+12>>2]=ae;r:{if((on|0)>0){for(ae=0;;){Z=0,Z=d?r[(ae<<2)+d>>2]:Z,Se=ae<<2,p=Se+ve|0,q=r[p+112>>2],a=r[p+72>>2];i:{a:{if((C|0)<=7){if(!ms(B+24|0,b,C,0))break r;if(D=1,b=r[B+32>>2],C=r[B+36>>2],(C|0)<8)break a}if(fe=r[(a+((b>>>C-8&255)<<2)|0)+148>>2],D=fe>>8,(fe|0)>2303)break a;a=fe&255,C=C-D|0;break i}if(a=Fa(B+24|0,b,C,a,D),(a|0)<0)break r;b=r[B+32>>2],C=r[B+36>>2]}if(a){if((a|0)>(C|0)){if(!ms(B+24|0,b,C,a))break r;C=r[B+36>>2],b=r[B+32>>2]}Mt=-1<>>C,a=(Mt+a>>31&D+1)+a|0}else a=0;i:{a:{if(r[p+152>>2]){if(D=(B+8|0)+(r[(h+Se|0)+360>>2]<<2)|0,a=a+r[D>>2]|0,r[D>>2]=a,!Z)break a;He[Z>>1]=a}if(!r[p+192>>2]||(D=1,!Z))break a;for(;;){s:{o:{if((C|0)<=7){if(!ms(B+24|0,b,C,0))break r;if(p=1,b=r[B+32>>2],C=r[B+36>>2],(C|0)<8)break o}if(a=r[(q+((b>>>C-8&255)<<2)|0)+148>>2],p=a>>8,(a|0)>2303)break o;a=a&255,C=C-p|0;break s}if(a=Fa(B+24|0,b,C,q,p),(a|0)<0)break r;b=r[B+32>>2],C=r[B+36>>2]}p=a>>>4|0,a=a&15;s:{if(a){if((a|0)>(C|0)){if(!ms(B+24|0,b,C,a))break r;C=r[B+36>>2],b=r[B+32>>2]}p=D+p|0,Mt=-1<>>C,He[(r[(p<<2)+9424>>2]<<1)+Z>>1]=(Mt+a>>31&(D|1))+a;break s}if((p|0)!=15)break i;p=D+15|0}if(D=p+1|0,!((p|0)<63))break}break i}for(D=1;;){a:{s:{if((C|0)<=7){if(!ms(B+24|0,b,C,0))break r;if(p=1,b=r[B+32>>2],C=r[B+36>>2],(C|0)<8)break s}if(a=r[(q+((b>>>C-8&255)<<2)|0)+148>>2],p=a>>8,(a|0)>2303)break s;a=a&255,C=C-p|0;break a}if(a=Fa(B+24|0,b,C,q,p),(a|0)<0)break r;b=r[B+32>>2],C=r[B+36>>2]}p=a>>>4|0,a=a&15;a:{if(a){if((a|0)>(C|0)){if(!ms(B+24|0,b,C,a))break r;C=r[B+36>>2],b=r[B+32>>2]}C=C-a|0;break a}if((p|0)!=15)break i}if(D=(D+p|0)+1|0,!((D|0)<64))break}}if(ae=ae+1|0,!((ae|0)>2]))break}mt=r[h+24>>2],Ht=r[B+28>>2],a=r[B+24>>2]}r[mt+4>>2]=Ht,r[mt>>2]=a,r[ve+16>>2]=C,r[ve+12>>2]=b,d=r[B+20>>2],r[ve+28>>2]=r[B+16>>2],r[ve+32>>2]=d,d=r[B+12>>2],r[ve+20>>2]=r[B+8>>2],r[ve+24>>2]=d;break t}C=0;break e}r[mt>>2]=D,r[mt+4>>2]=(ve+Ht|0)-D,r[fe+16>>2]=C,r[fe+12>>2]=b,d=r[B+36>>2],r[fe+28>>2]=r[B+32>>2],r[fe+32>>2]=d,d=r[B+28>>2],r[fe+20>>2]=r[B+24>>2],r[fe+24>>2]=d}if(C=1,!r[h+276>>2])break e;r[lt+36>>2]=r[lt+36>>2]-1}return hn=B+48|0,C|0}function m5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=0,P0=0,U0=0;Ne=r[h+320>>2]-1|0,$e=r[h+428>>2],q=r[$e+72>>2];e:{for(;;){if(ae=r[h+144>>2],b=r[h+152>>2],(ae|0)>(b|0)||(D=r[h+436>>2],r[D+20>>2]|(b|0)==(ae|0)&ni[h+148>>2]>r[h+156>>2]+(!r[h+400>>2]<<1)>>>0))break e;if(!(Ie[r[D>>2]](h)|0))break}return 0}if(r[h+36>>2]>0)for(ve=r[h+216>>2];;){e:{if(!r[ve+48>>2])break e;ae=r[h+156>>2];t:{if(ae+1>>>0>>0){D=r[ve+12>>2],B=Ce(D,3),a=D;break t}if(ae>>>0>>0){D=r[ve+12>>2],B=D<<1,a=D;break t}D=r[ve+12>>2],b=ni[ve+32>>2]%(D>>>0)|0,B=b||D,a=B}Ze=a;t:{if(ae>>>0>=2){a=(Ie[r[r[h+4>>2]+32>>2]](h,r[((M<<2)+$e|0)+76>>2],Ce(ae-2|0,D),(D<<1)+B|0,0)|0)+(r[ve+12>>2]<<3)|0;break t}if(b=r[((M<<2)+$e|0)+76>>2],D=r[r[h+4>>2]+32>>2],(ae|0)==1){a=(Ie[D|0](h,b,0,B,0)|0)+(r[ve+12>>2]<<2)|0;break t}a=Ie[D|0](h,b,0,B,0)|0}jt=a,Zt=0,Mt=r[h+420>>2],fe=r[$e+116>>2]+Ce(ni[h+156>>2]>ni[Mt+104>>2]?r[h+36>>2]+M|0:M,40)|0;t:{if((r[fe+4>>2]&r[fe+8>>2]&(r[fe+12>>2]&r[fe+16>>2]))!=-1||(r[fe+20>>2]&r[fe+24>>2]&(r[fe+28>>2]&r[fe+32>>2]))!=-1)break t;Zt=r[fe+36>>2]==-1}if(b=r[ve+76>>2],Zt&&(Yt=En[b+20>>1],en=En[b+6>>1],un=En[b+48>>1],Cn=En[b+34>>1]),(Ze|0)<=0)break e;for(Q=M<<2,s0=r[(Q+r[h+448>>2]|0)+4>>2],Se=En[b>>1],Tn=Se<<8,Rn=un<<8,bn=un<<7,$n=Cn<<8,er=Cn<<7,rr=Yt<<8,sr=Yt<<7,gr=en<<8,_r=en<<7,D=En[b+4>>1],Dr=D<<8,$r=D<<7,D=En[b+18>>1],Zr=D<<8,Qr=D<<7,D=En[b+32>>1],li=D<<8,gi=D<<7,D=En[b+16>>1],_i=D<<8,Di=D<<7,D=En[b+2>>1],Bi=D<<8,ji=D<<7,f0=Ze-2|0,P0=Ze-1|0,U0=jt-4|0,kt=r[d+Q>>2],ur=0;;){b=Mt+Q|0,Er=r[b+20>>2],We=Er<<7,Z=(ur<<2)+jt|0,ae=We+r[Z>>2]|0;t:{n:{r:{if(!ur){if(x=ae,Le=r[h+156>>2],a=ae,!Le)break t;x=We+r[U0>>2]|0;break r}if(x=We+r[Z-4>>2]|0,(ur|0)!=1)break n;Le=r[h+156>>2]}if(a=x,Le>>>0<2)break t}a=We+r[Z-8>>2]|0}re=a;t:{if((ur|0)>=(P0|0)&&(u=ae,ni[h+156>>2]>=Ne>>>0))break t;u=We+r[Z+4>>2]|0}t:{if((ur|0)>=(f0|0)&&(a=u,r[h+156>>2]+1>>>0>=Ne>>>0))break t;a=We+r[Z+8>>2]|0}se=a;t:{if(ni[b+60>>2]>>0){p=r[ve+36>>2];break t}for(Ji=r[ve+28>>2]-1|0,Rt=0,O=He[se>>1],Le=O,A=Le,he=Le,m=He[u>>1],D=m,Ht=D,me=D,y=He[ae>>1],Z=y,G=Z,on=Z,H=He[x>>1],B=H,an=B,_e=B,S=He[re>>1],Y=S,b=S,Oe=b;;){We=b,b=Y,lt=an,an=B,wn=G,G=Z,mt=Ht,Ht=D,Mt=A,A=Le,D0(q,ae,128),Y=S,B=H,Z=y,Le=O,D=m;n:{if(r[(r[h+420>>2]+Q|0)+20>>2]!=(Er|0)||(D=m,Er>>>0>=Ji>>>0))break n;Le=He[se+128>>1],Z=He[ae+128>>1],B=He[x+128>>1],Y=He[re+128>>1],D=He[u+128>>1]}if(Er=Er+1|0,Ji>>>0>Er>>>0&&(O=He[se+256>>1],m=He[u+256>>1],H=He[x+256>>1],y=He[ae+256>>1],S=He[re+256>>1]),C=r[fe+4>>2],!(En[q+2>>1]|!C)){p=Ce(Zt?((((((Y-(((We+Oe|0)+he|0)+Mt|0)|0)+Le|0)+Ce(wn-Z|0,38)|0)+Ce(lt+mt-(D+B)|0,13)|0)+S|0)+O|0)+Ce(((H-((on+_e|0)+me|0)|0)+y|0)+m|0,3)|0:Ce(y-on|0,7)+Ce(wn-Z|0,50)|0,Se);n:{if((p|0)>=0){if(a=(p+ji|0)/(Bi|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(ji-p|0)/(Bi|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+2>>1]=a}if(C=r[fe+8>>2],!(En[q+16>>1]|!C)){p=Ce(Zt?((((((me-(_e+Oe|0)|0)+he|0)+Ce(an-Ht|0,38)|0)+Ce(B+lt-(D+mt)|0,13)|0)+Ce((Mt+A-((b+We|0)+Y)|0)+Le|0,3)-(S+H)|0)+m|0)+O|0:Ce(A-b|0,7)+Ce(an-Ht|0,50)|0,Se);n:{if((p|0)>=0){if(a=(p+Di|0)/(_i|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(Di-p|0)/(_i|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+16>>1]=a}if(C=r[fe+12>>2],!(En[q+32>>1]|!C)){p=Ce(Zt?((((Ce(G,-14)+b|0)+Ce(Ht+an|0,7)|0)+A|0)+Ce(Z+wn|0,-5)|0)+(((B+lt|0)+mt|0)+D<<1)|0:Ce(G,-24)+Ce(Ht+an|0,13)-(b+A)|0,Se);n:{if((p|0)>=0){if(a=(p+gi|0)/(li|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(gi-p|0)/(li|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+32>>1]=a}if(C=r[fe+16>>2],!(En[q+18>>1]|!C)){p=(lt-(B+mt|0)|0)+D|0,p=Ce(Zt?(((he-Oe|0)+Ce(p,9)|0)+S|0)-O|0:((((((me-(We+_e|0)|0)+Mt|0)+Y|0)-Le|0)+Ce(p,10)|0)+H|0)-m|0,Se);n:{if((p|0)>=0){if(a=(p+Qr|0)/(Zr|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(Qr-p|0)/(Zr|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+18>>1]=a}if(C=r[fe+20>>2],!(En[q+4>>1]|!C)){p=Ce(Zt?((((Ce(G,-14)+on|0)+Ce(Ht+an|0,-5)|0)+Ce(Z+wn|0,7)|0)+(((B+lt|0)+mt|0)+D<<1)|0)+y|0:Ce(G,-24)+Ce(Z+wn|0,13)-(on+y)|0,Se);n:{if((p|0)>=0){if(a=(p+$r|0)/(Dr|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=($r-p|0)/(Dr|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+4>>1]=a}if(Zt){if(C=r[fe+24>>2],!(En[q+6>>1]|!C)){p=Ce((lt+mt-(D+B)|0)+(wn-Z<<1)|0,Se);n:{if((p|0)>=0){if(a=(p+_r|0)/(gr|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(_r-p|0)/(gr|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+6>>1]=a}if(C=r[fe+28>>2],!(En[q+20>>1]|!C)){p=Ce((B+lt|0)+Ce(Ht-an|0,3)-(D+mt)|0,Se);n:{if((p|0)>=0){if(a=(p+sr|0)/(rr|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(sr-p|0)/(rr|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+20>>1]=a}if(C=r[fe+32>>2],!(En[q+34>>1]|!C)){p=Ce((lt+mt-(D+B)|0)+Ce(Z-wn|0,3)|0,Se);n:{if((p|0)>=0){if(a=(p+er|0)/($n|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(er-p|0)/($n|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+34>>1]=a}if(C=r[fe+36>>2],!(En[q+48>>1]|!C)){p=Ce((B+lt|0)+(an-Ht<<1)-(D+mt)|0,Se);n:{if((p|0)>=0){if(a=(p+bn|0)/(Rn|0)|0,(C|0)<=0)break n;p=1<(a|0)?a:p-1|0;break n}a=(bn-p|0)/(Rn|0)|0,p=1<0?(p|0)>(a|0)?a:p-1|0:a)|0}He[q+48>>1]=a}on=(Ce(G,152)+Ce(((an+wn|0)+Ht|0)+Z|0,42)-((((b+A|0)+on|0)+y<<3)+(((he+Oe|0)+S|0)+O<<1))|0)+Ce(((lt+mt|0)+B|0)+D-(((((me+_e|0)+Mt+(We+Y)|0)+Le|0)+H|0)+m)|0,6)|0;n:{if((Ce(on,Se)|0)>=0){a=(Ce(on+128|0,Se)|0)/(Tn|0)|0;break n}a=0-((Ce(128-on|0,Se)|0)/(Tn|0)|0)|0}He[q>>1]=a}if(Ie[s0|0](h,ve,q,kt,Rt),se=se+128|0,re=re+128|0,u=u+128|0,x=x+128|0,ae=ae+128|0,p=r[ve+36>>2],Rt=Rt+p|0,he=Mt,me=mt,on=wn,_e=lt,Oe=We,Mt=r[h+420>>2],!(ni[(Q+Mt|0)+60>>2]>=Er>>>0))break}}if(kt=(p<<2)+kt|0,ur=ur+1|0,(Ze|0)==(ur|0))break}}if(ve=ve+84|0,M=M+1|0,!((M|0)>2]))break}return d=r[h+156>>2]+1|0,r[h+156>>2]=d,(d>>>0>2]?3:4)|0}function xp(h,d,a,p,C,D){h=h|0,d=+d,a=a|0,p=p|0,C=C|0,D=D|0;var b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0;ve=hn-560|0,hn=ve,r[ve+44>>2]=0,Ue(+d),b=xe(1)|0,xe(0)|0;e:{if((b|0)<0){Mt=1,Zt=1442,d=-d,Ue(+d),b=xe(1)|0,xe(0)|0;break e}if(C&2048){Mt=1,Zt=1445;break e}Mt=C&1,Zt=Mt?1448:1443,ur=!Mt}e:{if((b&2146435072)==2146435072){b=Mt+3|0,zs(h,32,a,b,C&-65537),_a(h,Zt,Mt),p=D&32,_a(h,d!=d?p?4270:7602:p?4565:7803,3),zs(h,32,a,b,C^8192),Se=(a|0)<(b|0)?b:a;break e}on=ve+16|0;t:{n:{r:{if(d=xk(d,ve+44|0),d=d+d,d!=0){if(b=r[ve+44>>2],r[ve+44>>2]=b-1,an=D|32,(an|0)!=97)break r;break t}if(an=D|32,(an|0)==97)break t;ae=r[ve+44>>2],fe=(p|0)<0?6:p;break n}ae=b-29|0,r[ve+44>>2]=ae,d=d*268435456,fe=(p|0)<0?6:p}for(lt=(ve+48|0)+((ae|0)>=0?288:0)|0,B=lt;d<4294967296&d>=0?p=~~d>>>0:p=0,r[B>>2]=p,B=B+4|0,d=(d-+(p>>>0))*1e9,d!=0;);n:{if((ae|0)<=0){p=ae,b=B,q=lt;break n}for(q=lt,p=ae;;){Le=(p|0)>=29?29:p,b=B-4|0;r:{if(q>>>0>b>>>0)break r;for(p=0;Z=r[b>>2],wn=p,p=Le&31,(Le&63)>>>0>=32?(Se=Z<>>32-p,p=Z<>>0>wn>>>0?Z+1|0:Z,1e9),Er=b,x=wn-m0(p,Pi,1e9,0)|0,r[Er>>2]=x,b=b-4|0,q>>>0<=b>>>0;);if(!p)break r;q=q-4|0,r[q>>2]=p}for(;b=B,q>>>0>>0&&(B=b-4|0,!r[B>>2]););if(p=r[ve+44>>2]-Le|0,r[ve+44>>2]=p,B=b,!((p|0)>0))break}}if((p|0)<0)for(Ht=((fe+25>>>0)/9|0)+1|0,We=(an|0)==102;;){p=0-p|0,Se=(p|0)>=9?9:p;n:{if(b>>>0<=q>>>0){B=r[q>>2];break n}for(Le=1e9>>>Se|0,Z=-1<>2],r[B>>2]=wn+(p>>>Se|0),p=Ce(Le,p&Z),B=B+4|0,B>>>0>>0;);if(B=r[q>>2],!p)break n;r[b>>2]=p,b=b+4|0}if(p=Se+r[ve+44>>2]|0,r[ve+44>>2]=p,q=(!B<<2)+q|0,B=We?lt:q,b=b-B>>2>(Ht|0)?B+(Ht<<2)|0:b,!((p|0)<0))break}p=0;n:{if(b>>>0<=q>>>0||(p=Ce(lt-q>>2,9),B=10,Z=r[q>>2],Z>>>0<10))break n;for(;p=p+1|0,B=Ce(B,10),Z>>>0>=B>>>0;);}if(B=(fe-((an|0)!=102?p:0)|0)-((an|0)==103&(fe|0)!=0)|0,(B|0)<(Ce(b-lt>>2,9)-9|0)){if(Le=B+9216|0,Z=(Le|0)/9|0,ae=((((ae|0)<0?4:292)+ve|0)+(Z<<2)|0)-4048|0,B=10,Se=Le-Ce(Z,9)|0,(Se|0)<=7)for(;B=Ce(B,10),Se=Se+1|0,(Se|0)!=8;);Le=r[ae>>2],Ht=(Le>>>0)/(B>>>0)|0,We=Le-Ce(B,Ht)|0,Z=ae+4|0;n:{if(!We&(Z|0)==(b|0))break n;r:{if(!(Ht&1)&&(d=9007199254740992,!(F[ae-4|0]&1)|((B|0)!=1e9|q>>>0>=ae>>>0)))break r;d=9007199254740994}if(mt=(b|0)==(Z|0)?1:1.5,Z=B>>>1|0,mt=Z>>>0>We>>>0?.5:(Z|0)==(We|0)?mt:1.5,te[Zt|0]!=45|ur||(mt=-mt,d=-d),Z=Le-We|0,r[ae>>2]=Z,d+mt==d)break n;if(p=B+Z|0,r[ae>>2]=p,p>>>0>=1e9)for(;r[ae>>2]=0,ae=ae-4|0,ae>>>0>>0&&(q=q-4|0,r[q>>2]=0),p=r[ae>>2]+1|0,r[ae>>2]=p,p>>>0>999999999;);if(p=Ce(lt-q>>2,9),B=10,Z=r[q>>2],Z>>>0<10)break n;for(;p=p+1|0,B=Ce(B,10),Z>>>0>=B>>>0;);}B=ae+4|0,b=b>>>0>B>>>0?B:b}for(;Z=b,Le=b>>>0<=q>>>0,!Le&&(b=Z-4|0,!r[b>>2]););n:{if((an|0)!=103){ae=C&8;break n}if(B=fe||1,b=(B|0)>(p|0)&(p|0)>-5,fe=(b?p^-1:-1)+B|0,D=(b?-1:-2)+D|0,ae=C&8,ae)break n;b=-9;r:{if(Le||(ae=r[Z-4>>2],!ae)||(Se=10,b=0,(ae>>>0)%10|0))break r;for(;B=b,b=b+1|0,Se=Ce(Se,10),!((ae>>>0)%(Se>>>0)|0););b=B^-1}if(B=Ce(Z-lt>>2,9),(D&-33)==70){ae=0,b=(b+B|0)-9|0,b=(b|0)>0?b:0,fe=(b|0)>(fe|0)?fe:b;break n}ae=0,b=((p+B|0)+b|0)-9|0,b=(b|0)>0?b:0,fe=(b|0)>(fe|0)?fe:b}if(Se=-1,Le=ae|fe,((Le?2147483645:2147483646)|0)<(fe|0))break e;We=(((Le|0)!=0)+fe|0)+1|0,B=D&-33;n:{if((B|0)==70){if((We^2147483647)<(p|0))break e;b=(p|0)>0?p:0;break n}if(b=p>>31,b=os((b^p)-b|0,0,on),(on-b|0)<=1)for(;b=b-1|0,F[b|0]=48,(on-b|0)<2;);if(Ht=b-2|0,F[Ht|0]=D,F[b-1|0]=(p|0)<0?45:43,b=on-Ht|0,(b|0)>(We^2147483647))break e}if(p=b+We|0,(p|0)>(Mt^2147483647))break e;We=p+Mt|0,zs(h,32,a,We,C),_a(h,Zt,Mt),zs(h,48,a,We,C^65536);n:{r:{i:{if((B|0)==70){for(D=ve+16|0,p=D|8,ae=D|9,B=q>>>0>lt>>>0?lt:q,q=B;;){b=os(r[q>>2],0,ae);a:{if((B|0)!=(q|0)){if(ve+16>>>0>=b>>>0)break a;for(;b=b-1|0,F[b|0]=48,ve+16>>>0>>0;);break a}if((b|0)!=(ae|0))break a;F[ve+24|0]=48,b=p}if(_a(h,b,ae-b|0),q=q+4|0,!(lt>>>0>=q>>>0))break}if(Le&&_a(h,8718,1),(fe|0)<=0|q>>>0>=Z>>>0)break i;for(;;){if(b=os(r[q>>2],0,ae),b>>>0>ve+16>>>0)for(;b=b-1|0,F[b|0]=48,ve+16>>>0>>0;);if(_a(h,b,(fe|0)>=9?9:fe),b=fe-9|0,q=q+4|0,Z>>>0<=q>>>0)break r;if(p=(fe|0)>9,fe=b,!p)break}break r}a:{if((fe|0)<0)break a;for(lt=q>>>0>>0?Z:q+4|0,D=ve+16|0,p=D|8,Z=D|9,B=q;;){b=os(r[B>>2],0,Z),(Z|0)==(b|0)&&(F[ve+24|0]=48,b=p);s:{if((B|0)!=(q|0)){if(ve+16>>>0>=b>>>0)break s;for(;b=b-1|0,F[b|0]=48,ve+16>>>0>>0;);break s}if(_a(h,b,1),b=b+1|0,!(ae|fe))break s;_a(h,8718,1)}if(D=Z-b|0,_a(h,b,(D|0)>(fe|0)?fe:D),fe=fe-D|0,B=B+4|0,lt>>>0<=B>>>0)break a;if(!((fe|0)>=0))break}}zs(h,48,fe+18|0,18,0),_a(h,Ht,on-Ht|0);break n}b=fe}zs(h,48,b+9|0,9,0)}zs(h,32,a,We,C^8192),Se=(a|0)<(We|0)?We:a;break e}ae=(D<<26>>31&9)+Zt|0;t:{if(p>>>0>11)break t;for(b=12-p|0,mt=16;mt=mt*16,b=b-1|0,!!b;);if(te[ae|0]==45){d=-(mt+(-d-mt));break t}d=d+mt-mt}for(b=r[ve+44>>2],B=b>>31,b=os((b^B)-B|0,0,on),(on|0)==(b|0)&&(F[ve+15|0]=48,b=ve+15|0),lt=Mt|2,q=D&32,B=r[ve+44>>2],fe=b-2|0,F[fe|0]=D+15,F[b-1|0]=(B|0)<0?45:43,b=C&8,B=ve+16|0;D=B,U2(d)<2147483648?Z=~~d:Z=-2147483648,F[B|0]=q|te[Z+146336|0],d=(d-+(Z|0))*16,B=D+1|0,!((p|0)>0|b)&d==0|(B-(ve+16|0)|0)!=1||(F[D+1|0]=46,B=D+2|0),d!=0;);if(Se=-1,b=on-fe|0,D=b+lt|0,(2147483645-D|0)<(p|0))break e;t:{n:{if(!p||(q=B-(ve+16|0)|0,(q-2|0)>=(p|0)))break n;p=p+2|0;break t}q=B-(ve+16|0)|0,p=q}D=p+D|0,zs(h,32,a,D,C),_a(h,ae,lt),zs(h,48,a,D,C^65536),_a(h,ve+16|0,q),zs(h,48,p-q|0,0,0),_a(h,fe,b),zs(h,32,a,D,C^8192),Se=(a|0)<(D|0)?D:a}return hn=ve+560|0,Se|0}function y4(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;e:{t:switch(r[h+44>>2]-6|0){case 0:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+1|0]=te[D+(ae+C|0)|0],F[d+2|0]=te[D+(C+fe|0)|0],C=te[a+1|0],F[d+3|0]=te[D+(C+q|0)|0],F[d+4|0]=te[D+(C+ae|0)|0],F[d+5|0]=te[D+(C+fe|0)|0],d=d+6|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+1|0]=te[D+(h+(B+Z>>16)|0)|0],F[d+2|0]=te[D+(h+p|0)|0];return;case 1:case 6:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+1|0]=te[D+(ae+C|0)|0],C=te[D+(C+fe|0)|0],F[d+3|0]=255,F[d+2|0]=C,C=te[a+1|0],F[d+4|0]=te[D+(C+q|0)|0],F[d+5|0]=te[D+(C+ae|0)|0],fe=te[D+(C+fe|0)|0],F[d+7|0]=255,F[d+6|0]=fe,d=d+8|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+1|0]=te[D+(h+(B+Z>>16)|0)|0],h=te[D+(h+p|0)|0],F[d+3|0]=255,F[d+2|0]=h;return;case 2:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d+2|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+1|0]=te[D+(ae+C|0)|0],F[d|0]=te[D+(C+fe|0)|0],C=te[a+1|0],F[d+5|0]=te[D+(C+q|0)|0],F[d+4|0]=te[D+(C+ae|0)|0],F[d+3|0]=te[D+(C+fe|0)|0],d=d+6|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d+2|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+1|0]=te[D+(h+(B+Z>>16)|0)|0],F[d|0]=te[D+(h+p|0)|0];return;case 3:case 7:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d+2|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+1|0]=te[D+(ae+C|0)|0],C=te[D+(C+fe|0)|0],F[d+3|0]=255,F[d|0]=C,C=te[a+1|0],F[d+6|0]=te[D+(C+q|0)|0],F[d+5|0]=te[D+(C+ae|0)|0],fe=te[D+(C+fe|0)|0],F[d+7|0]=255,F[d+4|0]=fe,d=d+8|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d+2|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+1|0]=te[D+(h+(B+Z>>16)|0)|0],h=te[D+(h+p|0)|0],F[d+3|0]=255,F[d|0]=h;return;case 4:case 8:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d+3|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+2|0]=te[D+(ae+C|0)|0],C=te[D+(C+fe|0)|0],F[d|0]=255,F[d+1|0]=C,C=te[a+1|0],F[d+7|0]=te[D+(C+q|0)|0],F[d+6|0]=te[D+(C+ae|0)|0],fe=te[D+(C+fe|0)|0],F[d+4|0]=255,F[d+5|0]=fe,d=d+8|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d+3|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+2|0]=te[D+(h+(B+Z>>16)|0)|0],h=te[D+(h+p|0)|0],F[d|0]=255,F[d+1|0]=h;return;case 5:case 9:if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d+1|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+2|0]=te[D+(ae+C|0)|0],C=te[D+(C+fe|0)|0],F[d|0]=255,F[d+3|0]=C,C=te[a+1|0],F[d+5|0]=te[D+(C+q|0)|0],F[d+6|0]=te[D+(C+ae|0)|0],fe=te[D+(C+fe|0)|0],F[d+4|0]=255,F[d+7|0]=fe,d=d+8|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d+1|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+2|0]=te[D+(h+(B+Z>>16)|0)|0],h=te[D+(h+p|0)|0],F[d|0]=255,F[d+3|0]=h;return;default:break t}if(a=a<<2,b=r[a+r[d+8>>2]>>2],B=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],D=r[h+324>>2],d=r[p>>2],p=r[h+452>>2],Z=r[p+28>>2],ve=r[p+24>>2],Se=r[p+20>>2],Le=r[p+16>>2],p=r[h+112>>2],p>>>0>=2){for(p=p>>>1|0;C=te[B|0]<<2,fe=r[C+Se>>2],q=te[b|0]<<2,ae=r[q+ve>>2],We=r[C+Z>>2],q=r[q+Le>>2],C=te[a|0],F[d|0]=te[D+(q+C|0)|0],ae=ae+We>>16,F[d+1|0]=te[D+(ae+C|0)|0],F[d+2|0]=te[D+(C+fe|0)|0],C=te[a+1|0],F[d+3|0]=te[D+(C+q|0)|0],F[d+4|0]=te[D+(C+ae|0)|0],F[d+5|0]=te[D+(C+fe|0)|0],d=d+6|0,a=a+2|0,b=b+1|0,B=B+1|0,p=p-1|0,!!p;);p=r[h+112>>2]}if(!(p&1))break e;h=te[B|0]<<2,p=r[h+Se>>2],b=te[b|0]<<2,B=r[b+ve>>2],Z=r[h+Z>>2],h=te[a|0],F[d|0]=te[D+(h+r[b+Le>>2]|0)|0],F[d+1|0]=te[D+(h+(B+Z>>16)|0)|0],F[d+2|0]=te[D+(h+p|0)|0]}}function Ms(h,d,a,p,C,D,b){var B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0;Z=hn-80|0,hn=Z,r[Z+76>>2]=d,ur=Z+55|0,Mt=Z+56|0;e:{t:{n:{r:{i:for(;;){if(ae=d,(We^2147483647)<(B|0))break r;We=B+We|0;a:{s:{o:{if(B=ae,q=te[B|0],q)for(;;){u:{d=q&255;l:{if(!d){d=B;break l}if((d|0)!=37)break u;for(q=B;;){if(te[q+1|0]!=37){d=q;break l}if(B=B+1|0,ve=te[q+2|0],d=q+2|0,q=d,(ve|0)!=37)break}}if(B=B-ae|0,Zt=We^2147483647,(B|0)>(Zt|0))break r;if(h&&_a(h,ae,B),B)continue i;r[Z+76>>2]=d,B=d+1|0,lt=-1,te[d+2|0]!=36|F[d+1|0]-48>>>0>=10||(lt=F[d+1|0]-48|0,on=1,B=d+3|0),r[Z+76>>2]=B,Se=0,q=F[B|0],d=q-32|0;l:{if(d>>>0>31){Le=B;break l}if(Le=B,d=1<>2]=Le,Se=d|Se,q=F[B+1|0],d=q-32|0,d>>>0>=32)break l;if(B=Le,d=1<>>0>=10)){r[((F[Le+1|0]<<2)+C|0)-192>>2]=10,q=Le+3|0,on=1,d=r[((F[Le+1|0]<<3)+p|0)-384>>2];break h}if(on)break o;if(q=Le+1|0,!h){r[Z+76>>2]=q,on=0,mt=0;break l}d=r[a>>2],r[a>>2]=d+4,on=0,d=r[d>>2]}if(r[Z+76>>2]=q,mt=d,(d|0)>=0)break l;mt=0-mt|0,Se=Se|8192;break l}if(mt=Tk(Z+76|0),(mt|0)<0)break r;q=r[Z+76>>2]}B=0,fe=-1;l:{if(te[q|0]!=46){d=q,wn=0;break l}if(te[q+1|0]==42){h:{if(!(te[q+3|0]!=36|F[q+2|0]-48>>>0>=10)){r[((F[q+2|0]<<2)+C|0)-192>>2]=10,d=q+4|0,fe=r[((F[q+2|0]<<3)+p|0)-384>>2];break h}if(on)break o;if(d=q+2|0,fe=0,!h)break h;q=r[a>>2],r[a>>2]=q+4,fe=r[q>>2]}r[Z+76>>2]=d,wn=(fe^-1)>>>31|0;break l}r[Z+76>>2]=q+1,fe=Tk(Z+76|0),d=r[Z+76>>2],wn=1}for(;;){if(Ht=B,Le=28,ve=d,B=F[d|0],B-123>>>0<4294967238)break n;if(d=ve+1|0,B=te[(B+Ce(Ht,58)|0)+145807|0],!(B-1>>>0<8))break}r[Z+76>>2]=d;l:{h:{if((B|0)!=27){if(!B)break n;if((lt|0)>=0){r[(lt<<2)+C>>2]=B,q=(lt<<3)+p|0,B=r[q+4>>2],r[Z+64>>2]=r[q>>2],r[Z+68>>2]=B;break h}if(!h)break a;Xh(Z- -64|0,B,a,b);break l}if((lt|0)>=0)break n}if(B=0,!h)continue i}q=Se&-65537,Se=Se&8192?q:Se,lt=0,an=1432,Le=Mt;l:{h:{f:{p:{c:{m:{g:{d:{v:{k:{y:{w:{C:{_:{x:{S:switch(B=F[ve|0],B=Ht&&(B&15)==3?B&-33:B,B-88|0){case 11:break l;case 9:case 13:case 14:case 15:break h;case 27:break g;case 12:case 17:break k;case 23:break y;case 0:case 32:break w;case 24:break C;case 22:break _;case 29:break x;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break s;default:break S}S:switch(B-65|0){case 0:case 4:case 5:case 6:break h;case 2:break c;case 1:case 3:break s;default:break S}if((B|0)==83)break m;break s}q=r[Z+64>>2],ve=r[Z+68>>2],an=1432;break v}B=0;_:switch(Ht&255){case 0:r[r[Z+64>>2]>>2]=We;continue i;case 1:r[r[Z+64>>2]>>2]=We;continue i;case 2:ae=r[Z+64>>2],r[ae>>2]=We,r[ae+4>>2]=We>>31;continue i;case 3:He[r[Z+64>>2]>>1]=We;continue i;case 4:F[r[Z+64>>2]]=We;continue i;case 6:r[r[Z+64>>2]>>2]=We;continue i;case 7:break _;default:continue i}ae=r[Z+64>>2],r[ae>>2]=We,r[ae+4>>2]=We>>31;continue i}fe=fe>>>0<=8?8:fe,Se=Se|8,B=120}if(ae=Mt,Er=B&32,q=r[Z+64>>2],ve=r[Z+68>>2],q|ve)for(;ae=ae-1|0,F[ae|0]=Er|te[(q&15)+146336|0],x=!ve&q>>>0>15|(ve|0)!=0,Ht=ve,ve=ve>>>4|0,q=(Ht&15)<<28|q>>>4,!!x;);if(!(r[Z+64>>2]|r[Z+68>>2])|!(Se&8))break d;an=(B>>>4|0)+1432|0,lt=2;break d}if(B=Mt,ae=r[Z+68>>2],ve=ae,q=r[Z+64>>2],ae|q)for(;B=B-1|0,F[B|0]=q&7|48,Ht=!ve&q>>>0>7|(ve|0)!=0,ae=ve,ve=ae>>>3|0,q=(ae&7)<<29|q>>>3,!!Ht;);if(ae=B,!(Se&8))break d;B=Mt-ae|0,fe=(B|0)<(fe|0)?fe:B+1|0;break d}if(q=r[Z+64>>2],B=r[Z+68>>2],ve=B,(B|0)<0){ae=0-(ve+((q|0)!=0)|0)|0,ve=ae,q=0-q|0,r[Z+64>>2]=q,r[Z+68>>2]=ae,lt=1,an=1432;break v}if(Se&2048){lt=1,an=1433;break v}lt=Se&1,an=lt?1434:1432}ae=os(q,ve,Mt)}if((fe|0)<0&&wn)break r;if(Se=wn?Se&-65537:Se,B=r[Z+64>>2],q=r[Z+68>>2],!(fe|(B|q)!=0)){ae=Mt,fe=0;break s}B=!(B|q)+(Mt-ae|0)|0,fe=(B|0)<(fe|0)?fe:B;break s}if(B=r[Z+64>>2],ae=B||8720,ve=fe>>>0>=2147483647?2147483647:fe,B=pk(ae,ve),B=B?B-ae|0:ve,Le=B+ae|0,(fe|0)>=0){Se=q,fe=B;break s}if(Se=q,fe=B,te[Le|0])break r;break s}if(fe){q=r[Z+64>>2];break p}B=0,zs(h,32,mt,0,Se);break f}r[Z+12>>2]=0,r[Z+8>>2]=r[Z+64>>2],q=Z+8|0,r[Z+64>>2]=q,fe=-1}B=0;p:{for(;;){if(ae=r[q>>2],!ae)break p;if(ve=Rs(Z+4|0,ae),ae=(ve|0)<0,!(ae|ve>>>0>fe-B>>>0)){if(q=q+4|0,B=B+ve|0,fe>>>0>B>>>0)continue;break p}break}if(ae)break t}if(Le=61,(B|0)<0)break n;if(zs(h,32,mt,B,Se),!B){B=0;break f}for(Le=0,q=r[Z+64>>2];;){if(ae=r[q>>2],!ae||(ae=Rs(Z+4|0,ae),Le=ae+Le|0,Le>>>0>B>>>0))break f;if(_a(h,Z+4|0,ae),q=q+4|0,!(B>>>0>Le>>>0))break}}zs(h,32,mt,B,Se^8192),B=(B|0)<(mt|0)?mt:B;continue i}if((fe|0)<0&&wn)break r;if(Le=61,B=Ie[D|0](h,In[Z+64>>3],mt,fe,Se,B)|0,(B|0)>=0)continue i;break n}F[Z+55|0]=r[Z+64>>2],fe=1,ae=ur,Se=q;break s}q=te[B+1|0],B=B+1|0}if(h)break e;if(!on)break a;for(B=1;;){if(h=r[(B<<2)+C>>2],h){if(Xh((B<<3)+p|0,h,a,b),We=1,B=B+1|0,(B|0)!=10)continue;break e}break}if(We=1,B>>>0>=10)break e;for(;;){if(r[(B<<2)+C>>2])break o;if(B=B+1|0,(B|0)==10)break}break e}Le=28;break n}if(ve=Le-ae|0,q=(fe|0)>(ve|0)?fe:ve,(q|0)>(lt^2147483647))break r;if(Le=61,fe=q+lt|0,B=(fe|0)<(mt|0)?mt:fe,(Zt|0)<(B|0))break n;zs(h,32,B,fe,Se),_a(h,an,lt),zs(h,48,B,fe,Se^65536),zs(h,48,q,ve,0),_a(h,ae,ve),zs(h,32,B,fe,Se^8192);continue}break}We=0;break e}Le=61}r[37091]=Le}We=-1}return hn=Z+80|0,We}function Ot(h,d,a,p,C,D,b){var B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0;if(fe=Io(40),r[fe>>2]=0,!h)return h=te[5114]|te[5115]<<8|(te[5116]<<16|te[5117]<<24),d=te[5110]|te[5111]<<8|(te[5112]<<16|te[5113]<<24),F[147847]=d,F[147848]=d>>>8,F[147849]=d>>>16,F[147850]=d>>>24,F[147851]=h,F[147852]=h>>>8,F[147853]=h>>>16,F[147854]=h>>>24,h=te[5107]|te[5108]<<8|(te[5109]<<16|te[5110]<<24),r[36960]=te[5103]|te[5104]<<8|(te[5105]<<16|te[5106]<<24),r[36961]=h,J(fe),-1;r[h+1348>>2]=0,r[h+1132>>2]=0;e:{t:{n:{if(!(te[h+1140|0]&2)){D0(h+1148|0,4061,75),r[h+1348>>2]=1,D0(147840,4061,75);break n}r:{i:{if(!d|!a|(!p|!C)||!D)break i;if(b)break r}r[h+1348>>2]=1,b=te[2321]|te[2322]<<8|(te[2323]<<16|te[2324]<<24),d=te[2317]|te[2318]<<8|(te[2319]<<16|te[2320]<<24),a=h+1180|0,F[a|0]=d,F[a+1|0]=d>>>8,F[a+2|0]=d>>>16,F[a+3|0]=d>>>24,F[a+4|0]=b,F[a+5|0]=b>>>8,F[a+6|0]=b>>>16,F[a+7|0]=b>>>24,B=te[2313]|te[2314]<<8|(te[2315]<<16|te[2316]<<24),a=te[2309]|te[2310]<<8|(te[2311]<<16|te[2312]<<24),p=h+1172|0,F[p|0]=a,F[p+1|0]=a>>>8,F[p+2|0]=a>>>16,F[p+3|0]=a>>>24,F[p+4|0]=B,F[p+5|0]=B>>>8,F[p+6|0]=B>>>16,F[p+7|0]=B>>>24,q=te[2305]|te[2306]<<8|(te[2307]<<16|te[2308]<<24),p=te[2301]|te[2302]<<8|(te[2303]<<16|te[2304]<<24),C=h+1164|0,F[C|0]=p,F[C+1|0]=p>>>8,F[C+2|0]=p>>>16,F[C+3|0]=p>>>24,F[C+4|0]=q,F[C+5|0]=q>>>8,F[C+6|0]=q>>>16,F[C+7|0]=q>>>24,Z=te[2297]|te[2298]<<8|(te[2299]<<16|te[2300]<<24),C=te[2293]|te[2294]<<8|(te[2295]<<16|te[2296]<<24),D=h+1156|0,F[D|0]=C,F[D+1|0]=C>>>8,F[D+2|0]=C>>>16,F[D+3|0]=C>>>24,F[D+4|0]=Z,F[D+5|0]=Z>>>8,F[D+6|0]=Z>>>16,F[D+7|0]=Z>>>24,ae=te[2289]|te[2290]<<8|(te[2291]<<16|te[2292]<<24),D=te[2285]|te[2286]<<8|(te[2287]<<16|te[2288]<<24),F[h+1148|0]=D,F[h+1149|0]=D>>>8,F[h+1150|0]=D>>>16,F[h+1151|0]=D>>>24,F[h+1152|0]=ae,F[h+1153|0]=ae>>>8,F[h+1154|0]=ae>>>16,F[h+1155|0]=ae>>>24,r[36968]=d,r[36969]=b,r[36966]=a,r[36967]=B,r[36964]=p,r[36965]=q,r[36962]=C,r[36963]=Z,r[36960]=D,r[36961]=ae;break n}for(ae=h+376|0,fe=Fc(h+972|0,1,fe,4),ve=Mi;;){if(B)return J(fe),-1;r[37564]=0,xc(271,ae|0,d|0,a|0),B=r[37564],r[37564]=0,q=-1;r:{if(!B||(Z=r[37565],!Z))break r;if(q=Zo(r[B>>2],fe,ve),!q)break e;Mi=Z}if(B=Mi,(q|0)!=1){r[37564]=0,Se=dp(272,ae|0,0)|0,B=r[37564],r[37564]=0,q=-1;r:{if(!B||(Z=r[37565],!Z))break r;if(q=Zo(r[B>>2],fe,ve),!q)break e;Mi=Z}if(B=Mi,(q|0)!=1){if((Se|0)==2)return J(fe),0;r[p>>2]=r[h+404>>2],r[C>>2]=r[h+408>>2],r[37564]=0,Se=Ps(ae),B=r[37564],r[37564]=0,q=-1;r:{if(!B||(Z=r[37565],!Z))break r;if(q=Zo(r[B>>2],fe,ve),!q)break e;Mi=Z}if(B=Mi,(q|0)!=1){r[D>>2]=Se,q=-1,B=r[h+416>>2]-1|0,B>>>0<=4?B=r[(B<<2)+145064>>2]:B=-1,r[b>>2]=B,r[37564]=0,fu(274,ae|0),B=r[37564],r[37564]=0;r:{if(!B||(Z=r[37565],!Z))break r;if(q=Zo(r[B>>2],fe,ve),!q)break e;Mi=Z}if(B=Mi,(q|0)!=1)break}}}}if(B=-1,r[D>>2]<0){D0(h+1148|0,5558,75),r[h+1348>>2]=1,D0(147840,5558,75);break t}if(r[b>>2]<0){D0(h+1148|0,5633,68),r[h+1348>>2]=1,D0(147840,5633,68);break n}if(r[p>>2]>0&&(B=0,r[C>>2]>0))break t;r[h+1348>>2]=1,q=te[3796]|te[3797]<<8|(te[3798]<<16|te[3799]<<24),d=te[3792]|te[3793]<<8|(te[3794]<<16|te[3795]<<24),a=h+1195|0,F[a|0]=d,lt=d>>>8|0,F[a+1|0]=lt,mt=d>>>16|0,F[a+2|0]=mt,Mt=d>>>24|0,F[a+3|0]=Mt,F[a+4|0]=q,Ht=q>>>8|0,F[a+5|0]=Ht,on=q>>>16|0,F[a+6|0]=on,an=q>>>24|0,F[a+7|0]=an,Z=te[3789]|te[3790]<<8|(te[3791]<<16|te[3792]<<24),a=te[3785]|te[3786]<<8|(te[3787]<<16|te[3788]<<24),p=h+1188|0,F[p|0]=a,F[p+1|0]=a>>>8,F[p+2|0]=a>>>16,F[p+3|0]=a>>>24,F[p+4|0]=Z,F[p+5|0]=Z>>>8,F[p+6|0]=Z>>>16,F[p+7|0]=Z>>>24,ae=te[3781]|te[3782]<<8|(te[3783]<<16|te[3784]<<24),p=te[3777]|te[3778]<<8|(te[3779]<<16|te[3780]<<24),C=h+1180|0,F[C|0]=p,F[C+1|0]=p>>>8,F[C+2|0]=p>>>16,F[C+3|0]=p>>>24,F[C+4|0]=ae,F[C+5|0]=ae>>>8,F[C+6|0]=ae>>>16,F[C+7|0]=ae>>>24,ve=te[3773]|te[3774]<<8|(te[3775]<<16|te[3776]<<24),C=te[3769]|te[3770]<<8|(te[3771]<<16|te[3772]<<24),D=h+1172|0,F[D|0]=C,F[D+1|0]=C>>>8,F[D+2|0]=C>>>16,F[D+3|0]=C>>>24,F[D+4|0]=ve,F[D+5|0]=ve>>>8,F[D+6|0]=ve>>>16,F[D+7|0]=ve>>>24,Se=te[3765]|te[3766]<<8|(te[3767]<<16|te[3768]<<24),D=te[3761]|te[3762]<<8|(te[3763]<<16|te[3764]<<24),b=h+1164|0,F[b|0]=D,F[b+1|0]=D>>>8,F[b+2|0]=D>>>16,F[b+3|0]=D>>>24,F[b+4|0]=Se,F[b+5|0]=Se>>>8,F[b+6|0]=Se>>>16,F[b+7|0]=Se>>>24,Le=te[3757]|te[3758]<<8|(te[3759]<<16|te[3760]<<24),b=te[3753]|te[3754]<<8|(te[3755]<<16|te[3756]<<24),B=h+1156|0,F[B|0]=b,F[B+1|0]=b>>>8,F[B+2|0]=b>>>16,F[B+3|0]=b>>>24,F[B+4|0]=Le,F[B+5|0]=Le>>>8,F[B+6|0]=Le>>>16,F[B+7|0]=Le>>>24,We=te[3749]|te[3750]<<8|(te[3751]<<16|te[3752]<<24),B=te[3745]|te[3746]<<8|(te[3747]<<16|te[3748]<<24),F[h+1148|0]=B,F[h+1149|0]=B>>>8,F[h+1150|0]=B>>>16,F[h+1151|0]=B>>>24,F[h+1152|0]=We,F[h+1153|0]=We>>>8,F[h+1154|0]=We>>>16,F[h+1155|0]=We>>>24,F[147887]=d,F[147888]=lt,F[147889]=mt,F[147890]=Mt,F[147891]=q,F[147892]=Ht,F[147893]=on,F[147894]=an,r[36970]=a,r[36971]=Z,r[36968]=p,r[36969]=ae,r[36966]=C,r[36967]=ve,r[36964]=D,r[36965]=Se,r[36962]=b,r[36963]=Le,r[36960]=B,r[36961]=We}B=-1}return h=r[h+1132>>2],J(fe),h?-1:B}J(fe),Hu(B,Z),mr()}function Bh(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{t:switch(r[h+44>>2]-6|0){case 0:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+1|0]=D,F[h+2|0]=D,F[h|0]=D,D=te[q+(b|1)|0],F[h+4|0]=D,F[h+5|0]=D,F[h+3|0]=D,D=te[q+(b|2)|0],F[h+7|0]=D,F[h+8|0]=D,F[h+6|0]=D,D=te[q+(b|3)|0],F[h+10|0]=D,F[h+11|0]=D,F[h+9|0]=D,b=b+4|0,h=h+12|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+1|0]=B,F[h+2|0]=B,F[h|0]=B,b=b+1|0,h=h+3|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+1|0]=D,F[h+2|0]=D,F[h+3|0]=255,F[h|0]=D,D=te[q+(b|1)|0],F[h+5|0]=D,F[h+6|0]=D,F[h+7|0]=255,F[h+4|0]=D,D=te[q+(b|2)|0],F[h+9|0]=D,F[h+10|0]=D,F[h+11|0]=255,F[h+8|0]=D,D=te[q+(b|3)|0],F[h+13|0]=D,F[h+14|0]=D,F[h+15|0]=255,F[h+12|0]=D,b=b+4|0,h=h+16|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+1|0]=B,F[h+2|0]=B,F[h+3|0]=255,F[h|0]=B,b=b+1|0,h=h+4|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+2|0]=D,F[h+1|0]=D,F[h|0]=D,D=te[q+(b|1)|0],F[h+5|0]=D,F[h+4|0]=D,F[h+3|0]=D,D=te[q+(b|2)|0],F[h+8|0]=D,F[h+7|0]=D,F[h+6|0]=D,D=te[q+(b|3)|0],F[h+11|0]=D,F[h+10|0]=D,F[h+9|0]=D,b=b+4|0,h=h+12|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+2|0]=B,F[h+1|0]=B,F[h|0]=B,b=b+1|0,h=h+3|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,D=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;Z=te[b+q|0],F[h+3|0]=255,F[h+2|0]=Z,F[h+1|0]=Z,F[h|0]=Z,Z=te[q+(b|1)|0],F[h+7|0]=255,F[h+6|0]=Z,F[h+5|0]=Z,F[h+4|0]=Z,Z=te[q+(b|2)|0],F[h+11|0]=255,F[h+10|0]=Z,F[h+9|0]=Z,F[h+8|0]=Z,Z=te[q+(b|3)|0],F[h+15|0]=255,F[h+14|0]=Z,F[h+13|0]=Z,F[h+12|0]=Z,b=b+4|0,h=h+16|0,B=B+4|0,(fe|0)!=(B|0););if(D)for(;B=te[b+q|0],F[h+3|0]=255,F[h+2|0]=B,F[h+1|0]=B,F[h|0]=B,b=b+1|0,h=h+4|0,ae=ae+1|0,(D|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+3|0]=D,F[h+2|0]=D,F[h+1|0]=D,F[h|0]=255,D=te[q+(b|1)|0],F[h+7|0]=D,F[h+6|0]=D,F[h+5|0]=D,F[h+4|0]=255,D=te[q+(b|2)|0],F[h+11|0]=D,F[h+10|0]=D,F[h+9|0]=D,F[h+8|0]=255,D=te[q+(b|3)|0],F[h+15|0]=D,F[h+14|0]=D,F[h+13|0]=D,F[h+12|0]=255,b=b+4|0,h=h+16|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+3|0]=B,F[h+2|0]=B,F[h+1|0]=B,F[h|0]=255,b=b+1|0,h=h+4|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+2|0]=D,F[h+3|0]=D,F[h+1|0]=D,F[h|0]=255,D=te[q+(b|1)|0],F[h+6|0]=D,F[h+7|0]=D,F[h+5|0]=D,F[h+4|0]=255,D=te[q+(b|2)|0],F[h+10|0]=D,F[h+11|0]=D,F[h+9|0]=D,F[h+8|0]=255,D=te[q+(b|3)|0],F[h+14|0]=D,F[h+15|0]=D,F[h+13|0]=D,F[h+12|0]=255,b=b+4|0,h=h+16|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+2|0]=B,F[h+3|0]=B,F[h+1|0]=B,F[h|0]=255,b=b+1|0,h=h+4|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(h=r[h+112>>2],!h))break e;for(fe=h&-4,Z=h&3,ve=h-1>>>0<3;;){if(q=r[r[d>>2]+(a<<2)>>2],h=r[p>>2],ae=0,b=0,B=0,!ve)for(;D=te[b+q|0],F[h+1|0]=D,F[h+2|0]=D,F[h|0]=D,D=te[q+(b|1)|0],F[h+4|0]=D,F[h+5|0]=D,F[h+3|0]=D,D=te[q+(b|2)|0],F[h+7|0]=D,F[h+8|0]=D,F[h+6|0]=D,D=te[q+(b|3)|0],F[h+10|0]=D,F[h+11|0]=D,F[h+9|0]=D,b=b+4|0,h=h+12|0,B=B+4|0,(fe|0)!=(B|0););if(Z)for(;B=te[b+q|0],F[h+1|0]=B,F[h+2|0]=B,F[h|0]=B,b=b+1|0,h=h+3|0,ae=ae+1|0,(Z|0)!=(ae|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}}function eo(h,d,a,p,C,D,b,B,q){var Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0;ae=hn-96|0,hn=ae,on=q&65535,Le=(C^q)&-2147483648,lt=C&65535,Er=lt,me=q>>>16&32767,_e=C>>>16&32767;e:{t:{if(me-32767>>>0>4294934529&_e-32767>>>0>=4294934530)break t;if(Mt=C&2147483647,mt=Mt,Z=p,!(!p&(mt|0)==2147418112?!(d|a):mt>>>0<2147418112)){ve=p,Le=C|32768;break e}if(Mt=q&2147483647,We=Mt,C=B,!(!C&(We|0)==2147418112?!(D|b):We>>>0<2147418112)){ve=B,Le=q|32768,d=D,a=b;break e}if(!(d|Z|(mt^2147418112|a))){if(!(C|D|(b|We))){Le=2147450880,d=0,a=0;break e}Le=Le|2147418112,d=0,a=0;break e}if(!(C|D|(We^2147418112|b))){if(C=d|Z,p=a|mt,d=0,a=0,!(p|C)){Le=2147450880;break e}Le=Le|2147418112;break e}if(!(d|Z|(a|mt))){d=0,a=0;break e}if(!(C|D|(b|We))){d=0,a=0;break e}if((mt|0)==65535|mt>>>0<65535&&(Z=!(p|lt),q=Z?d:p,Mt=Z<<6,C=Q0(q)+32|0,q=Q0(Z?a:lt),q=Mt+((q|0)==32?C:q)|0,K0(ae+80|0,d,a,p,lt,q-15|0),Ht=16-q|0,p=r[ae+88>>2],Er=r[ae+92>>2],a=r[ae+84>>2],d=r[ae+80>>2]),We>>>0>65535)break t;q=!(B|on),C=q?D:B,lt=q<<6,Z=Q0(C)+32|0,C=Q0(q?b:on),C=lt+((C|0)==32?Z:C)|0,K0(ae- -64|0,D,b,B,on,C-15|0),Ht=(Ht-C|0)+16|0,B=r[ae+72>>2],on=r[ae+76>>2],D=r[ae+64>>2],b=r[ae+68>>2]}C=D,D=b<<15|D>>>17,q=C<<15,C=0,an=q&-32768,H=a,Mt=m0(an,C,a,0),C=Pi,ur=C,Y=D,mt=d,d=m0(D,0,d,0),q=d+Mt|0,D=Pi+C|0,a=d>>>0>q>>>0?D+1|0:D,Z=0,d=m0(mt,fe,an,fe),We=Z+d|0,D=q,C=D+Pi|0,C=d>>>0>We>>>0?C+1|0:C,lt=C,Q=(D|0)==(C|0)&Z>>>0>We>>>0|C>>>0>>0,re=p,wn=m0(an,fe,p,0),se=Pi,d=m0(H,fe,Y,fe),Zt=d+wn|0,Z=Pi+se|0,Z=d>>>0>Zt>>>0?Z+1|0:Z,d=on<<15|B>>>17,x=B<<15|b>>>17,p=m0(x,0,mt,fe),u=p+Zt|0,D=Pi+Z|0,D=p>>>0>u>>>0?D+1|0:D,m=D,p=(a|0)==(ur|0)&q>>>0>>0|a>>>0>>0,y=a+u|0,D=p+D|0,D=a>>>0>y>>>0?D+1|0:D,on=D,b=y,a=D,S=Er|65536,Er=m0(an,fe,S,Se),he=Pi,p=m0(re,ve,Y,fe),M=p+Er|0,C=Pi+he|0,C=p>>>0>M>>>0?C+1|0:C,q=C,O=d|-2147483648,d=m0(O,0,mt,fe),A=d+M|0,D=Pi+C|0,D=d>>>0>A>>>0?D+1|0:D,d=m0(x,ve,H,fe),ur=d+A|0,G=D,D=D+Pi|0,Mt=d>>>0>ur>>>0?D+1|0:D,d=0,mt=d+b|0,C=a+ur|0,an=d>>>0>mt>>>0?C+1|0:C,D=an,d=mt+Q|0,a=d>>>0>>0?D+1|0:D,Ht=((_e+me|0)+Ht|0)-16383|0,p=m0(O,ve,H,fe),B=Pi,C=m0(S,ve,Y,fe),b=C+p|0,D=Pi+B|0,D=C>>>0>b>>>0?D+1|0:D,Se=(B|0)==(D|0)&p>>>0>b>>>0|D>>>0>>0,B=D,C=m0(x,ve,re,ve),p=C+b|0,D=Pi+D|0,D=p>>>0>>0?D+1|0:D,C=D,b=(D|0)==(B|0)&p>>>0>>0|D>>>0>>0,D=0,B=b,b=b+Se|0,D=B>>>0>b>>>0?1:D,B=b,b=m0(O,ve,S,ve),B=B+b|0,D=Pi+D|0,Q=B,b=b>>>0>B>>>0?D+1|0:D,B=p,fe=C,C=(Z|0)==(se|0)&wn>>>0>Zt>>>0|Z>>>0>>0,D=0,Z=(Z|0)==(m|0)&Zt>>>0>u>>>0|Z>>>0>m>>>0,Se=Z,Z=C+Z|0,C=(Se>>>0>Z>>>0?1:D)+fe|0,D=b,p=p+Z|0,C=p>>>0>>0?C+1|0:C,Se=C,wn=p,p=(C|0)==(fe|0)&p>>>0>>0|C>>>0>>0,C=p,p=p+Q|0,D=C>>>0>p>>>0?D+1|0:D,Z=p,b=D,C=m0(x,ve,S,ve),fe=Pi,p=m0(O,ve,re,ve),B=p+C|0,D=Pi+fe|0,D=p>>>0>B>>>0?D+1|0:D,p=D,D=(fe|0)==(D|0)&C>>>0>B>>>0|D>>>0>>0,Zt=p+Z|0,C=D+b|0,C=p>>>0>Zt>>>0?C+1|0:C,fe=Zt,b=C,C=0,p=C+wn|0,D=B+Se|0,D=p>>>0>>0?D+1|0:D,C=D,B=(Se|0)==(D|0)&p>>>0>>0|D>>>0>>0,D=b,b=B+fe|0,D=b>>>0>>0?D+1|0:D,wn=b,b=D,B=p,Z=C,C=(Mt|0)==(G|0)&ur>>>0>>0|Mt>>>0>>0,p=(q|0)==(he|0)&Er>>>0>M>>>0|q>>>0>>0,q=(q|0)==(G|0)&M>>>0>A>>>0|q>>>0>G>>>0,p=p+q|0,p=p+C|0,Se=Mt,q=Se+B|0,C=p+Z|0,D=b,p=q,C=p>>>0>>0?C+1|0:C,B=(C|0)==(Z|0)&B>>>0>p>>>0|C>>>0>>0,b=B+wn|0,D=B>>>0>b>>>0?D+1|0:D,Z=b,b=D,B=p,D=0,q=C,Se=(on|0)==(an|0)&mt>>>0>>0|on>>>0>an>>>0,fe=Se,Se=Se+((on|0)==(m|0)&u>>>0>y>>>0|on>>>0>>0)|0,C=C+(fe>>>0>Se>>>0?1:D)|0,D=b,p=p+Se|0,C=p>>>0>>0?C+1|0:C,B=(C|0)==(q|0)&p>>>0>>0|C>>>0>>0,b=B,B=B+Z|0,D=b>>>0>B>>>0?D+1|0:D,q=D;t:{if(D&65536){Ht=Ht+1|0;break t}Z=lt>>>31|0,b=0,D=q<<1|B>>>31,B=B<<1|C>>>31,q=D,D=C<<1|p>>>31,p=p<<1|a>>>31,C=D,D=lt<<1|We>>>31,We=We<<1,lt=D,D=a<<1|d>>>31,d=d<<1|Z,a=D|b}if((Ht|0)>=32767){Le=Le|2147418112,d=0,a=0;break e}t:{if((Ht|0)<=0){if(b=1-Ht|0,b>>>0>=128){d=0,a=0;break e}D=Ht+127|0,K0(ae+48|0,We,lt,d,a,D),K0(ae+32|0,p,C,B,q,D),$i(ae+16|0,We,lt,d,a,b),$i(ae,p,C,B,q,b),We=r[ae+32>>2]|r[ae+16>>2]|(r[ae+48>>2]|r[ae+56>>2]|(r[ae+52>>2]|r[ae+60>>2]))!=0,lt=r[ae+36>>2]|r[ae+20>>2],d=r[ae+40>>2]|r[ae+24>>2],a=r[ae+44>>2]|r[ae+28>>2],p=r[ae>>2],C=r[ae+4>>2],b=r[ae+8>>2],D=r[ae+12>>2];break t}b=B,D=q&65535|Ht<<16}if(ve=b|ve,Le=D|Le,!(!d&(a|0)==-2147483648?!(We|lt):(a|0)>0|(a|0)>=0)){d=p+1|0,a=d?C:C+1|0,p=(C|0)==(a|0)&d>>>0

>>0|a>>>0>>0,C=Le,ve=p+ve|0,Le=ve>>>0

>>0?C+1|0:C;break e}if(d|We|(a^-2147483648|lt)){d=p,a=C;break e}Z=Le,D=C,d=p&1,a=d,d=d+p|0,a=a>>>0>d>>>0?D+1|0:D,p=(D|0)==(a|0)&d>>>0

>>0|a>>>0>>0,ve=p+ve|0,Le=p>>>0>ve>>>0?Z+1|0:Z}r[h>>2]=d,r[h+4>>2]=a,r[h+8>>2]=ve,r[h+12>>2]=Le,hn=ae+96|0}function w4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;e:{t:switch(r[h+40>>2]-6|0){case 0:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h+2|0]<<2)|0,q=b+(te[h+1|0]<<2)|0,Z=b+(te[h|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+3|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h+2|0]<<2)|0,q=b+(te[h+1|0]<<2)|0,Z=b+(te[h|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+4|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h|0]<<2)|0,q=b+(te[h+1|0]<<2)|0,Z=b+(te[h+2|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+3|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h|0]<<2)|0,q=b+(te[h+1|0]<<2)|0,Z=b+(te[h+2|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+4|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h+1|0]<<2)|0,q=b+(te[h+2|0]<<2)|0,Z=b+(te[h+3|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+4|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h+3|0]<<2)|0,q=b+(te[h+2|0]<<2)|0,Z=b+(te[h+1|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+4|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(b=r[r[h+352>>2]+8>>2];;){for(h=p<<2,fe=r[h+r[a+8>>2]>>2],ve=r[h+r[a+4>>2]>>2],Se=r[h+r[a>>2]>>2],h=r[d>>2],D=0;B=b+(te[h+2|0]<<2)|0,q=b+(te[h+1|0]<<2)|0,Z=b+(te[h|0]<<2)|0,F[D+Se|0]=r[B+2048>>2]+(r[q+1024>>2]+r[Z>>2]|0)>>>16,F[D+ve|0]=r[B+5120>>2]+(r[q+4096>>2]+r[Z+3072>>2]|0)>>>16,F[D+fe|0]=r[B+7168>>2]+(r[q+6144>>2]+r[Z+5120>>2]|0)>>>16,h=h+3|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Gh(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;e:{t:switch(r[h+44>>2]-6|0){case 0:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+1|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],F[h+2|0]=te[q+(b+r[B+Se>>2]|0)|0],h=h+3|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+1|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],b=te[q+(b+r[B+Se>>2]|0)|0],F[h+3|0]=255,F[h+2|0]=b,h=h+4|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h+2|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+1|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],F[h|0]=te[q+(b+r[B+Se>>2]|0)|0],h=h+3|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h+2|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+1|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],b=te[q+(b+r[B+Se>>2]|0)|0],F[h+3|0]=255,F[h|0]=b,h=h+4|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h+3|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+2|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],b=te[q+(b+r[B+Se>>2]|0)|0],F[h|0]=255,F[h+1|0]=b,h=h+4|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h+1|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+2|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],b=te[q+(b+r[B+Se>>2]|0)|0],F[h|0]=255,F[h+3|0]=b,h=h+4|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(Z=r[h+112>>2],!Z))break e;for(q=r[h+324>>2],h=r[h+456>>2],fe=r[h+20>>2],ve=r[h+16>>2],Se=r[h+12>>2],Le=r[h+8>>2];;){for(h=a<<2,We=r[h+r[d+8>>2]>>2],lt=r[h+r[d+4>>2]>>2],mt=r[h+r[d>>2]>>2],h=r[p>>2],D=0;B=te[D+lt|0],b=te[D+mt|0],ae=te[D+We|0]<<2,F[h|0]=te[q+(b+r[ae+Le>>2]|0)|0],B=B<<2,F[h+1|0]=te[q+(b+(r[ve+ae>>2]+r[B+fe>>2]>>16)|0)|0],F[h+2|0]=te[q+(b+r[B+Se>>2]|0)|0],h=h+3|0,D=D+1|0,(Z|0)!=(D|0););if(p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Sp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;e:{t:switch(r[h+44>>2]-6|0){case 0:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h+2|0]=te[D+q|0],b=D|1,F[h+3|0]=te[b+ae|0],F[h+4|0]=te[b+Z|0],F[h+5|0]=te[b+q|0],D=D+2|0,h=h+6|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h+2|0]=te[D+q|0]),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],b=te[D+q|0],F[h+3|0]=255,F[h+2|0]=b,b=D|1,F[h+4|0]=te[b+ae|0],F[h+5|0]=te[b+Z|0],b=te[b+q|0],F[h+7|0]=255,F[h+6|0]=b,D=D+2|0,h=h+8|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],D=te[D+q|0],F[h+3|0]=255,F[h+2|0]=D),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h+2|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h|0]=te[D+q|0],b=D|1,F[h+5|0]=te[b+ae|0],F[h+4|0]=te[b+Z|0],F[h+3|0]=te[b+q|0],D=D+2|0,h=h+6|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h+2|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h|0]=te[D+q|0]),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h+2|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],b=te[D+q|0],F[h+3|0]=255,F[h|0]=b,b=D|1,F[h+6|0]=te[b+ae|0],F[h+5|0]=te[b+Z|0],b=te[b+q|0],F[h+7|0]=255,F[h+4|0]=b,D=D+2|0,h=h+8|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h+2|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],D=te[D+q|0],F[h+3|0]=255,F[h|0]=D),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h+3|0]=te[D+ae|0],F[h+2|0]=te[D+Z|0],b=te[D+q|0],F[h|0]=255,F[h+1|0]=b,b=D|1,F[h+7|0]=te[b+ae|0],F[h+6|0]=te[b+Z|0],b=te[b+q|0],F[h+4|0]=255,F[h+5|0]=b,D=D+2|0,h=h+8|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h+3|0]=te[D+ae|0],F[h+2|0]=te[D+Z|0],D=te[D+q|0],F[h|0]=255,F[h+1|0]=D),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h+1|0]=te[D+ae|0],F[h+2|0]=te[D+Z|0],b=te[D+q|0],F[h|0]=255,F[h+3|0]=b,b=D|1,F[h+5|0]=te[b+ae|0],F[h+6|0]=te[b+Z|0],b=te[b+q|0],F[h+4|0]=255,F[h+7|0]=b,D=D+2|0,h=h+8|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h+1|0]=te[D+ae|0],F[h+2|0]=te[D+Z|0],D=te[D+q|0],F[h|0]=255,F[h+3|0]=D),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(ve=B&-2,Se=B&1;;){if(h=a<<2,q=r[h+r[d+8>>2]>>2],Z=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,fe=0,(B|0)!=1)for(;F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h+2|0]=te[D+q|0],b=D|1,F[h+3|0]=te[b+ae|0],F[h+4|0]=te[b+Z|0],F[h+5|0]=te[b+q|0],D=D+2|0,h=h+6|0,fe=fe+2|0,(ve|0)!=(fe|0););if(Se&&(F[h|0]=te[D+ae|0],F[h+1|0]=te[D+Z|0],F[h+2|0]=te[D+q|0]),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Oc(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;if(D=r[h+444>>2],r[h+276>>2]){if(a=r[D+56>>2],!a){if(Ie[r[r[h+440>>2]+8>>2]](h)|0||(a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)),r[h+328>>2]>0)for(;;){b=C<<2,p=r[(b+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(a=r[((r[p+20>>2]<<2)+D|0)+60>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,a=D+b|0,r[a+40>>2]=0,r[a+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}k(r[((r[p+24>>2]<<2)+D|0)+124>>2],0,256)}if(C=C+1|0,!((C|0)>2]))break}r[D+20>>2]=-16,r[D+12>>2]=0,r[D+16>>2]=0,a=r[h+276>>2]}r[D+56>>2]=a-1}e:{if(!(r[D+20>>2]==-1|r[h+356>>2]<=0))for(Le=D+188|0;;){Z=0,Z=d?r[(ve<<2)+d>>2]:Z,C=r[((ve<<2)+h|0)+360>>2]<<2,Se=r[(C+h|0)+332>>2],q=r[Se+20>>2],p=(q<<2)+D|0,b=C+D|0,C=r[p+60>>2]+r[b+40>>2]|0;t:{if(!Jr(h,C)){r[b+40>>2]=0;break t}ae=1,B=0,a=0,fe=Jr(h,C+1|0),C=(fe+C|0)+2|0;n:{if(!Jr(h,C))break n;if(p=r[p+60>>2],C=p+20|0,!Jr(h,C)){a=1;break n}if(ae=0,C=p+21|0,!Jr(h,C)){a=2;break n}if(C=p+22|0,!Jr(h,C)){a=4;break n}if(C=p+23|0,!Jr(h,C)){a=8;break n}if(C=p+24|0,!Jr(h,C)){a=16;break n}if(C=p+25|0,!Jr(h,C)){a=32;break n}if(C=p+26|0,!Jr(h,C)){a=64;break n}if(C=p+27|0,!Jr(h,C)){a=128;break n}if(C=p+28|0,!Jr(h,C)){a=256;break n}if(C=p+29|0,!Jr(h,C)){a=512;break n}if(C=p+30|0,!Jr(h,C)){a=1024;break n}if(C=p+31|0,!Jr(h,C)){a=2048;break n}if(C=p+32|0,!Jr(h,C)){a=4096;break n}if(C=p+33|0,!Jr(h,C)){a=8192;break n}if(a=16384,C=p+34|0,Jr(h,C))break e}q=h+q|0;n:{if(1<>1>(a|0))break n;if(p=fe<<2,1<>1<(a|0)){B=p+12|0;break n}B=p+4|0}r[b+40>>2]=B;n:{if(ae){C=a;break n}for(B=C+14|0,C=a;p=a>>>1|0,C=(Jr(h,B)?p:0)|C,ae=a>>>0>3,a=p,!!ae;);}r[b+24>>2]=r[b+24>>2]+(fe?C^-1:C+1|0)&65535}for(Z&&(He[Z>>1]=r[b+24>>2]),C=r[Se+24>>2],ae=C+h|0,B=(C<<2)+D|0,p=1;;){if(C=(r[B+124>>2]+Ce(p,3)|0)-3|0,!Jr(h,C)){for(b=(p|0)<=63?63:p,a=p;;){if(!Jr(h,C+1|0)){if(C=C+3|0,p=(a|0)==(b|0),a=a+1|0,!p)continue;break e}break}fe=Jr(h,Le),C=C+2|0;t:{if(!Jr(h,C)){p=0;break t}if(!Jr(h,C)){p=1;break t}p=r[B+124>>2]+(te[ae+260|0]<(a|0)?217:189)|0;n:{if(!Jr(h,p)){C=2;break n}if(p=p+1|0,!Jr(h,p)){C=4;break n}if(p=p+1|0,!Jr(h,p)){C=8;break n}if(p=p+1|0,!Jr(h,p)){C=16;break n}if(p=p+1|0,!Jr(h,p)){C=32;break n}if(p=p+1|0,!Jr(h,p)){C=64;break n}if(p=p+1|0,!Jr(h,p)){C=128;break n}if(p=p+1|0,!Jr(h,p)){C=256;break n}if(p=p+1|0,!Jr(h,p)){C=512;break n}if(p=p+1|0,!Jr(h,p)){C=1024;break n}if(p=p+1|0,!Jr(h,p)){C=2048;break n}if(p=p+1|0,!Jr(h,p)){C=4096;break n}if(p=p+1|0,!Jr(h,p)){C=8192;break n}if(C=16384,p=p+1|0,Jr(h,p))break e}for(Se=p+14|0,p=C;b=C>>>1|0,p=(Jr(h,Se)?b:0)|p,q=C>>>0>3,C=b,!!q;);}if(Z&&(He[(r[(a<<2)+9424>>2]<<1)+Z>>1]=fe?p^-1:p+1|0),p=a+1|0,(a|0)<63)continue}break}if(ve=ve+1|0,!((ve|0)>2]))break}return 1}return d=r[h>>2],r[d+20>>2]=126,Ie[r[d+4>>2]](h,-1),r[D+20>>2]=-1,1}function gu(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;Z=hn-304|0,hn=Z,fe=r[h+328>>2],p=r[h+316>>2],D=r[h+320>>2],a=r[h+364>>2],b=r[h+24>>2],r[a+24>>2]=r[b>>2],r[a+28>>2]=r[b+4>>2],Le=(D-p|0)+1|0,r[a+76>>2]|!r[h+200>>2]||(Nc(a,r[a+80>>2]),p=r[h+316>>2]),Ie[r[a+12>>2]](r[d>>2],(p<<2)+9424|0,Le,fe,Z+16|0,Z+8|0),b=r[Z+8>>2],!(b|r[Z+12>>2])|!r[a+64>>2]||(N0(a),b=r[Z+8>>2]);e:{if(!b){d=Z+16|0;break e}for(d=Z+16|0;;){if(fe=Bc(b),ae=(fe<<1)+d|0,lt=En[ae+128>>1],mt=En[ae>>1],d=fe,d>>>0>=16){d=r[a+60>>2];t:{if(r[a+20>>2]){d=r[((d<<2)+a|0)+100>>2],r[d+960>>2]=r[d+960>>2]+1;break t}if(d=r[((d<<2)+a|0)+84>>2],p=r[d+960>>2],D=r[a+36>>2],d=F[d+1264|0],!d&&(q=r[a+40>>2],ve=r[q>>2],r[ve+20>>2]=40,Ie[r[ve>>2]](q),r[a+20>>2]))break t;if(p=p&(-1<>2]|p<<24-d,(d|0)>=8)for(;;){D=r[a+24>>2],r[a+24>>2]=D+1,F[D|0]=p>>>16,D=r[a+28>>2]-1|0,r[a+28>>2]=D,D||(q=r[a+40>>2],D=r[q+24>>2],Ie[r[D+12>>2]](q)|0||(q=r[a+40>>2],ve=r[q>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](q)),r[a+24>>2]=r[D>>2],r[a+28>>2]=r[D+4>>2]),D=d;n:{if((p&16711680)!=16711680||(d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=0,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d))break n;q=r[a+40>>2],d=r[q+24>>2],Ie[r[d+12>>2]](q)|0||(q=r[a+40>>2],ve=r[q>>2],r[ve+20>>2]=24,Ie[r[ve>>2]](q)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]}if(d=D-8|0,p=p<<8,!((D|0)>15))break}r[a+36>>2]=d,r[a+32>>2]=p}d=fe-16|0}p=te[mt+76560|0],p>>>0>=11&&(D=r[h>>2],r[D+20>>2]=6,Ie[r[D>>2]](h)),fe=b>>>fe|0,d=p+(d<<4)|0,D=r[a+60>>2];t:{if(r[a+20>>2]){d=r[((D<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break t}D=r[((D<<2)+a|0)+84>>2],ta(a,r[D+(d<<2)>>2],F[(d+D|0)+1024|0])}if(ta(a,lt,p),b=fe>>>1|0,d=ae+2|0,!(fe>>>0>1))break}}for(p=r[Z+12>>2],p?(B=Bc(p),We=p>>>B|0,B=B+((Z-d|0)+80>>1)|0,Se=(B<<1)+d|0,p=1):p=0;;){e:{t:{if(!p){if(!C)break t;B=Bc(C),We=C>>>B|0,Se=(B<<1)+d|0,p=1;continue}fe=En[Se+128>>1],D=En[Se>>1];n:{if((B|0)<16)break n;r:{if(!r[a+20>>2]){d=0;break r}d=r[((r[a+60>>2]<<2)+a|0)+100>>2],p=d,C=r[d+960>>2],d=(B-((B|0)>=31?31:B)|0)+15|0,r[p+960>>2]=(C+(d>>>4|0)|0)+1,B=(B-(d&-16)|0)-16|0;break n}for(;;){p=r[a+60>>2];r:{if(d){d=r[((p<<2)+a|0)+100>>2],r[d+960>>2]=r[d+960>>2]+1;break r}if(d=r[((p<<2)+a|0)+84>>2],p=r[d+960>>2],C=r[a+36>>2],d=F[d+1264|0],!d&&(b=r[a+40>>2],ae=r[b>>2],r[ae+20>>2]=40,Ie[r[ae>>2]](b),r[a+20>>2]))break r;if(C=d+C|0,p=r[a+32>>2]|(p&(-1<=8)for(;;){d=r[a+24>>2],r[a+24>>2]=d+1,F[d|0]=p>>>16,d=r[a+28>>2]-1|0,r[a+28>>2]=d,d||(b=r[a+40>>2],d=r[b+24>>2],Ie[r[d+12>>2]](b)|0||(b=r[a+40>>2],ae=r[b>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](b)),r[a+24>>2]=r[d>>2],r[a+28>>2]=r[d+4>>2]),d=C;i:{if((p&16711680)!=16711680||(C=r[a+24>>2],r[a+24>>2]=C+1,F[C|0]=0,C=r[a+28>>2]-1|0,r[a+28>>2]=C,C))break i;b=r[a+40>>2],C=r[b+24>>2],Ie[r[C+12>>2]](b)|0||(b=r[a+40>>2],ae=r[b>>2],r[ae+20>>2]=24,Ie[r[ae>>2]](b)),r[a+24>>2]=r[C>>2],r[a+28>>2]=r[C+4>>2]}if(C=d-8|0,p=p<<8,!((d|0)>15))break}r[a+36>>2]=C,r[a+32>>2]=p}if(p=B-16|0,(B|0)>31){d=r[a+20>>2],B=p;continue}break}B=p}p=te[D+76560|0],p>>>0>=11&&(d=r[h>>2],r[d+20>>2]=6,Ie[r[d>>2]](h)),d=p+(B<<4)|0,C=r[a+60>>2];n:{if(r[a+20>>2]){d=r[((C<<2)+a|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break n}C=r[((C<<2)+a|0)+84>>2],ta(a,r[C+(d<<2)>>2],F[(d+C|0)+1024|0])}ta(a,fe,p),C=We>>>1|0,d=Se+2|0;break e}t:{if((Z+16|0)+(Le<<1)>>>0<=d>>>0||(d=r[a+64>>2]+1|0,r[a+64>>2]=d,(d|0)!=32767))break t;N0(a)}return d=r[h+24>>2],r[d>>2]=r[a+24>>2],r[d+4>>2]=r[a+28>>2],h=r[h+200>>2],h&&(d=r[a+76>>2],d?h=d:r[a+80>>2]=r[a+80>>2]+1&7,r[a+76>>2]=h-1),hn=Z+304|0,1}p=0}}function A1(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;e:{t:switch(r[h+40>>2]-6|0){case 0:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0],fe=D|1,F[fe+Z|0]=te[h+3|0],F[q+fe|0]=te[h+4|0],F[B+fe|0]=te[h+5|0],D=D+2|0,h=h+6|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0],fe=D|1,F[fe+Z|0]=te[h+4|0],F[q+fe|0]=te[h+5|0],F[B+fe|0]=te[h+6|0],D=D+2|0,h=h+8|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h+2|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h|0],fe=D|1,F[fe+Z|0]=te[h+5|0],F[q+fe|0]=te[h+4|0],F[B+fe|0]=te[h+3|0],D=D+2|0,h=h+6|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h+2|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h+2|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h|0],fe=D|1,F[fe+Z|0]=te[h+6|0],F[q+fe|0]=te[h+5|0],F[B+fe|0]=te[h+4|0],D=D+2|0,h=h+8|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h+2|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h+3|0],F[D+q|0]=te[h+2|0],F[D+B|0]=te[h+1|0],fe=D|1,F[fe+Z|0]=te[h+7|0],F[q+fe|0]=te[h+6|0],F[B+fe|0]=te[h+5|0],D=D+2|0,h=h+8|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h+3|0],F[D+q|0]=te[h+2|0],F[D+B|0]=te[h+1|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h+1|0],F[D+q|0]=te[h+2|0],F[D+B|0]=te[h+3|0],fe=D|1,F[fe+Z|0]=te[h+5|0],F[q+fe|0]=te[h+6|0],F[B+fe|0]=te[h+7|0],D=D+2|0,h=h+8|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h+1|0],F[D+q|0]=te[h+2|0],F[D+B|0]=te[h+3|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(b=r[h+28>>2],!b))break e;for(ve=b&-2,Se=b&1;;){if(h=p<<2,B=r[h+r[a+8>>2]>>2],q=r[h+r[a+4>>2]>>2],Z=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ae=0,(b|0)!=1)for(;F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0],fe=D|1,F[fe+Z|0]=te[h+3|0],F[q+fe|0]=te[h+4|0],F[B+fe|0]=te[h+5|0],D=D+2|0,h=h+6|0,ae=ae+2|0,(ve|0)!=(ae|0););if(Se&&(F[D+Z|0]=te[h|0],F[D+q|0]=te[h+1|0],F[D+B|0]=te[h+2|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Tp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0;d=r[d+80>>2],Se=Ce(He[d+54>>1],He[a+54>>1]),b=Ce(He[d+22>>1],He[a+22>>1]),B=Ce(Se+b|0,6810),q=Ce(He[d+50>>1],He[a+50>>1]),D=Ce(He[d+18>>1],He[a+18>>1]),Z=Ce(q+D|0,6810),H=B+Ce(b,4209)|0,Le=Ce(He[a+6>>1],He[d+6>>1])<<13|1024,b=Ce(He[d+38>>1],He[a+38>>1]),ae=Ce(He[d+70>>1],He[a+70>>1]),We=b-ae|0,mt=Le+Ce(We,2896)|0,Mt=Ce(b+ae|0,6476),Y=mt+Mt|0,fe=H+Y>>11,Q=Z+Ce(D,4209)|0,Ht=Ce(He[a+2>>1],He[d+2>>1])<<13|1024,b=Ce(He[d+34>>1],He[a+34>>1]),D=Ce(He[d+66>>1],He[a+66>>1]),on=b-D|0,an=Ht+Ce(on,2896)|0,wn=Ce(D+b|0,6476),re=an+wn|0,ve=Q+re>>11,D=Ce(fe+ve|0,6810),Zt=Ce(He[d+48>>1],He[a+48>>1]),ur=Ce(He[d+16>>1],He[a+16>>1]),ae=Ce(Zt+ur|0,6810),b=r[p>>2]+C|0,h=r[h+324>>2]+128|0,ve=D+Ce(ve,4209)|0,Er=Ce(He[d+52>>1],He[a+52>>1]),x=Ce(He[d+20>>1],He[a+20>>1]),u=Ce(Er+x|0,6810),x=u+Ce(x,4209)|0,se=Ce(He[a+4>>1],He[d+4>>1])<<13|1024,lt=Ce(He[d+36>>1],He[a+36>>1]),m=Ce(He[d+68>>1],He[a+68>>1]),he=lt-m|0,me=se+Ce(he,2896)|0,lt=Ce(lt+m|0,6476),m=me+lt|0,y=x+m>>11,_e=Ce(He[a+8>>1],He[d+8>>1])<<13|1024,S=Ce(He[d+40>>1],He[a+40>>1]),M=Ce(He[d+72>>1],He[a+72>>1]),Oe=S-M|0,Ne=_e+Ce(Oe,2896)|0,S=Ce(S+M|0,6476),M=Ne+S|0,$e=Ce(He[d+56>>1],He[a+56>>1]),O=Ce(He[d+24>>1],He[a+24>>1]),Ze=Ce($e+O|0,6810),O=Ze+Ce(O,4209)|0,A=M+O>>11,kt=y-A|0,ur=ae+Ce(ur,4209)|0,Rt=Ce(He[a>>1],He[d>>1])<<13|1024,G=Ce(He[d+32>>1],He[a+32>>1]),d=Ce(He[d+64>>1],He[a+64>>1]),jt=G-d|0,Yt=Rt+Ce(jt,2896)|0,G=Ce(d+G|0,6476),en=Yt+G|0,d=(ur+en<<2&-8192)+131072|0,a=Ce(kt,2896)+d|0,y=Ce(y+A|0,6476),A=a+y|0,F[b|0]=te[h+(ve+A>>>18&1023)|0],F[b+4|0]=te[h+(A-ve>>>18&1023)|0],D=D+Ce(fe,-17828)|0,a=a-y|0,F[b+1|0]=te[h+(D+a>>>18&1023)|0],F[b+3|0]=te[h+(a-D>>>18&1023)|0],F[b+2|0]=te[h+(d+Ce(kt,268423872)>>>18&1023)|0],b=B+Ce(Se,-17828)|0,B=mt-Mt|0,D=b+B>>11,Z=Z+Ce(q,-17828)|0,Se=an-wn|0,q=Z+Se>>11,a=Ce(D+q|0,6810),d=r[p+4>>2]+C|0,q=a+Ce(q,4209)|0,mt=Ce(Er,-17828)+u|0,Mt=me-lt|0,fe=mt+Mt>>11,an=Ce($e,-17828)+Ze|0,wn=Ne-S|0,ve=an+wn>>11,Er=fe-ve|0,ae=ae+Ce(Zt,-17828)|0,Zt=Yt-G|0,u=(ae+Zt<<2&-8192)+131072|0,lt=Ce(Er,2896)+u|0,fe=Ce(fe+ve|0,6476),ve=lt+fe|0,F[d|0]=te[h+(q+ve>>>18&1023)|0],F[d+4|0]=te[h+(ve-q>>>18&1023)|0],a=a+Ce(D,-17828)|0,D=lt-fe|0,F[d+1|0]=te[h+(a+D>>>18&1023)|0],F[d+3|0]=te[h+(D-a>>>18&1023)|0],F[d+2|0]=te[h+(u+Ce(Er,268423872)>>>18&1023)|0],D=Le+Ce(We,-11584)>>11,q=Ht+Ce(on,-11584)>>11,a=Ce(D+q|0,6810),d=r[p+8>>2]+C|0,q=a+Ce(q,4209)|0,on=(Ce(jt,1073730240)+Rt<<2&-8192)+131072|0,We=Ce(he,-11584)+se>>11,Le=Ce(Oe,-11584)+_e>>11,fe=We-Le|0,Ht=on+Ce(fe,2896)|0,We=Ce(We+Le|0,6476),Le=Ht+We|0,F[d|0]=te[h+(q+Le>>>18&1023)|0],F[d+4|0]=te[h+(Le-q>>>18&1023)|0],a=a+Ce(D,-17828)|0,D=Ht-We|0,F[d+1|0]=te[h+(a+D>>>18&1023)|0],F[d+3|0]=te[h+(D-a>>>18&1023)|0],F[d+2|0]=te[h+(on+Ce(fe,268423872)>>>18&1023)|0],b=B-b>>11,B=Se-Z>>11,a=Ce(b+B|0,6810),d=r[p+12>>2]+C|0,B=a+Ce(B,4209)|0,ae=(Zt-ae<<2&-8192)+131072|0,Z=Mt-mt>>11,D=wn-an>>11,Se=Z-D|0,q=ae+Ce(Se,2896)|0,Z=Ce(D+Z|0,6476),D=q+Z|0,F[d|0]=te[h+(B+D>>>18&1023)|0],F[d+4|0]=te[h+(D-B>>>18&1023)|0],a=a+Ce(b,-17828)|0,b=q-Z|0,F[d+1|0]=te[h+(a+b>>>18&1023)|0],F[d+3|0]=te[h+(b-a>>>18&1023)|0],F[d+2|0]=te[h+(ae+Ce(Se,268423872)>>>18&1023)|0],b=Y-H>>11,B=re-Q>>11,a=Ce(b+B|0,6810),d=r[p+16>>2]+C|0,p=a+Ce(B,4209)|0,D=(en-ur<<2&-8192)+131072|0,C=m-x>>11,B=M-O>>11,Z=C-B|0,ae=D+Ce(Z,2896)|0,C=Ce(C+B|0,6476),B=ae+C|0,F[d|0]=te[h+(p+B>>>18&1023)|0],F[d+4|0]=te[h+(B-p>>>18&1023)|0],a=a+Ce(b,-17828)|0,p=ae-C|0,F[d+1|0]=te[h+(a+p>>>18&1023)|0],F[d+3|0]=te[h+(p-a>>>18&1023)|0],F[d+2|0]=te[h+(D+Ce(Z,268423872)>>>18&1023)|0]}function C4(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;if(ve=r[h+4>>2],C=r[ve+68>>2],C)for(;r[C>>2]||(p=r[C+8>>2],b=Ce(p,r[C+12>>2]),p=Ce(p,r[C+4>>2]),p>>>0>(a^-1)>>>0&&(D=r[h>>2],r[D+20>>2]=54,r[D+24>>2]=10,Ie[r[r[h>>2]>>2]](h)),a=a+p|0,d=d+b|0),C=r[C+44>>2],!!C;);if(C=r[ve+72>>2],C)for(;r[C>>2]||(p=r[C+8>>2],b=Ce(p,r[C+12>>2])<<7,p=Ce(p,r[C+4>>2])<<7,p>>>0>(a^-1)>>>0&&(D=r[h>>2],r[D+20>>2]=54,r[D+24>>2]=11,Ie[r[r[h>>2]>>2]](h)),a=a+p|0,d=d+b|0),C=r[C+44>>2],!!C;);e:{if(!d)break e;if(Se=1e9,p=r[r[h+4>>2]+44>>2],b=p-r[ve+76>>2]|0,p=p?p>>>0>=b>>>0?b:0:a,p>>>0>>0&&(Se=d>>>0>p>>>0?1:(p>>>0)/(d>>>0)|0),p=r[ve+68>>2],p)for(;;){if(!r[p>>2]){D=r[p+4>>2],d=r[p+12>>2];t:{if(((D-1>>>0)/(d>>>0)|0)+1>>>0<=Se>>>0){r[p+16>>2]=D;break t}r[p+16>>2]=Ce(d,Se),d=r[h>>2],r[d+20>>2]=49,Ie[r[d>>2]](h),r[p+40>>2]=1,D=r[p+16>>2]}if(b=r[h+4>>2],d=r[p+8>>2],d>>>0>=1000000001&&(C=r[h>>2],r[C+20>>2]=54,r[C+24>>2]=9,Ie[r[r[h>>2]>>2]](h)),Z=d+63&-64,d=999999988/(Z>>>0)|0,Z>>>0>=999999989&&(C=r[h>>2],r[C+20>>2]=70,Ie[r[C>>2]](h)),ae=b,b=(d|0)<(D|0)?d:D,r[ae+80>>2]=b,C=0,ae=zu(h,1,D<<2),D)for(;;){a=r[h+4>>2],d=D-C|0,b=d>>>0>b>>>0?b:d,B=Ce(Z,b),B>>>0>=1000000001&&(d=r[h>>2],r[d+20>>2]=54,r[d+24>>2]=8,Ie[r[r[h>>2]>>2]](h)),q=B|43,q>>>0>=1000000001&&(d=r[h>>2],r[d+20>>2]=54,r[d+24>>2]=3,Ie[r[r[h>>2]>>2]](h)),d=Io(q),d||(fe=r[h>>2],r[fe+20>>2]=54,r[fe+24>>2]=4,Ie[r[r[h>>2]>>2]](h)),r[a+76>>2]=q+r[a+76>>2],a=a- -64|0,q=r[a>>2],r[d+8>>2]=0,r[d+4>>2]=B,r[d>>2]=q,r[a>>2]=d;t:{if(!b)break t;if(B=0,a=d+12|0,d=a&31,a=(d?32-d|0:0)+a|0,d=b,q=d&3,q)for(;r[ae+(C<<2)>>2]=a,d=d-1|0,a=a+Z|0,C=C+1|0,B=B+1|0,(q|0)!=(B|0););if(b>>>0<4)break t;for(;B=ae+(C<<2)|0,r[B>>2]=a,a=a+Z|0,q=a+Z|0,fe=q+Z|0,r[B+12>>2]=fe,r[B+8>>2]=q,r[B+4>>2]=a,C=C+4|0,a=Z+fe|0,d=d-4|0,!!d;);}if(!(C>>>0>>0))break}r[p>>2]=ae,d=r[ve+80>>2],r[p+36>>2]=0,r[p+24>>2]=0,r[p+28>>2]=0,r[p+20>>2]=d}if(p=r[p+44>>2],!p)break}if(D=r[ve+72>>2],!D)break e;for(;;){if(!r[D>>2]){b=r[D+4>>2],d=r[D+12>>2];t:{if(((b-1>>>0)/(d>>>0)|0)+1>>>0<=Se>>>0){r[D+16>>2]=b;break t}r[D+16>>2]=Ce(d,Se),d=r[h>>2],r[d+20>>2]=49,Ie[r[d>>2]](h),r[D+40>>2]=1,b=r[D+16>>2]}if(Z=r[D+8>>2]<<7,d=999999988/(Z>>>0)|0,p=r[h+4>>2],Z>>>0>=999999989&&(C=r[h>>2],r[C+20>>2]=70,Ie[r[C>>2]](h)),ae=p,p=(d|0)<(b|0)?d:b,r[ae+80>>2]=p,C=0,ae=zu(h,1,b<<2),b)for(;;){a=r[h+4>>2],d=b-C|0,p=d>>>0>p>>>0?p:d,B=Ce(Z,p),B>>>0>=1000000001&&(d=r[h>>2],r[d+20>>2]=54,r[d+24>>2]=8,Ie[r[r[h>>2]>>2]](h)),q=B|43,q>>>0>=1000000001&&(d=r[h>>2],r[d+20>>2]=54,r[d+24>>2]=3,Ie[r[r[h>>2]>>2]](h)),d=Io(q),d||(fe=r[h>>2],r[fe+20>>2]=54,r[fe+24>>2]=4,Ie[r[r[h>>2]>>2]](h)),r[a+76>>2]=q+r[a+76>>2],a=a- -64|0,q=r[a>>2],r[d+8>>2]=0,r[d+4>>2]=B,r[d>>2]=q,r[a>>2]=d;t:{if(!p)break t;if(B=0,a=d+12|0,d=a&31,a=(d?32-d|0:0)+a|0,d=p,q=d&3,q)for(;r[ae+(C<<2)>>2]=a,d=d-1|0,C=C+1|0,a=a+Z|0,B=B+1|0,(q|0)!=(B|0););if(p>>>0<4)break t;for(;B=ae+(C<<2)|0,r[B>>2]=a,a=a+Z|0,q=a+Z|0,r[B+8>>2]=q,r[B+4>>2]=a,a=q+Z|0,r[B+12>>2]=a,a=a+Z|0,C=C+4|0,d=d-4|0,!!d;);}if(!(C>>>0>>0))break}r[D>>2]=ae,d=r[ve+80>>2],r[D+36>>2]=0,r[D+24>>2]=0,r[D+28>>2]=0,r[D+20>>2]=d}if(D=r[D+44>>2],!D)break}}}function _4(h){h=h|0;var d=0,a=0,p=0,C=0;p=r[h+364>>2],d=r[p+12>>2],a=(d+r[p+16>>2]|0)-1&-65536,a=((d|0)>(a|0)?a|32768:a)<>2],r[p+12>>2]=a,d=r[p+32>>2];e:{if(a>>>0>=134217728){t:{if((d|0)<0)break t;if(r[p+24>>2]){for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;n:{if(a||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}d=r[p+32>>2]}a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=d+1,d=r[a+4>>2]-1|0,r[a+4>>2]=d;n:{if(d||Ie[r[a+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[p+32>>2]!=254||(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a)||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[p+20>>2],r[p+20>>2]=0,r[p+24>>2]=d+r[p+24>>2];break e}t:{if(!d){r[p+24>>2]=r[p+24>>2]+1;break t}if((d|0)<0)break t;if(r[p+24>>2]){for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;n:{if(a||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}d=r[p+32>>2]}if(a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=d,d=r[a+4>>2]-1|0,r[a+4>>2]=d,d||Ie[r[a+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(!r[p+20>>2])break e;if(r[p+24>>2])for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+20>>2]-1|0,r[p+20>>2]=d,!d)break}}a=r[p+12>>2];e:{if(!(a&134215680))break e;if(r[p+24>>2]){for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}a=r[p+12>>2]}d=r[h+24>>2],C=r[d>>2],r[d>>2]=C+1,F[C|0]=a>>>19,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}t:{if((r[p+12>>2]&133693440)!=133693440||(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a)||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(C=r[p+12>>2],!(C&522240))break e;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=C>>>11,a=r[d+4>>2]-1|0,r[d+4>>2]=a;t:{if(a||Ie[r[d+12>>2]](h)|0)break t;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if((r[p+12>>2]&522240)!=522240||(p=r[h+24>>2],d=r[p>>2],r[p>>2]=d+1,F[d|0]=0,d=r[p+4>>2]-1|0,r[p+4>>2]=d,d)||Ie[r[p+12>>2]](h)|0)break e;p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)}}function Vn(h,d,a,p,C,D,b,B,q){var Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;Z=hn-112|0,hn=Z,ae=q&2147483647;e:{t:{if(fe=C&2147483647,ve=!(d|a),!(p|fe?fe-2147418112>>>0<2147549184:ve)&&(Le=ae-2147418112|0,!B&(Le|0)==-2147418112?D|b:(Le|0)==-2147418112&(B|0)!=0|Le>>>0>2147549184))break t;if(!(!p&(fe|0)==2147418112?ve:fe>>>0<2147418112)){B=p,q=C|32768,D=d,b=a;break e}if(!(!B&(ae|0)==2147418112?!(D|b):ae>>>0<2147418112)){q=q|32768;break e}if(!(d|p|(fe^2147418112|a))){Se=p,p=!(d^D|p^B|(a^b|C^q^-2147483648)),B=p?0:Se,q=p?2147450880:C,D=p?0:d,b=p?0:a;break e}if(!(D|B|(ae^2147418112|b)))break e;if(!(d|p|(a|fe))){if(D|B|(b|ae))break e;D=d&D,b=a&b,B=p&B,q=C&q;break e}if(D|B|(b|ae))break t;D=d,b=a,B=p,q=C;break e}Se=(ae|0)==(fe|0),mt=Se&(p|0)==(B|0)?(a|0)==(b|0)&d>>>0>>0|a>>>0>>0:Se&p>>>0>>0|ae>>>0>fe>>>0,ve=mt,fe=ve?D:d,Le=ve?b:a,Se=ve?q:C,Mt=Se,ve=ve?B:p,lt=Se&65535,p=mt?p:B,C=mt?C:q,Ht=C,Se=C>>>16&32767,We=Mt>>>16&32767,We||(C=!(ve|lt),q=C,ae=C?fe:ve,C=C<<6,B=C,q=Q0(q?Le:lt),C=C+((q|0)==32?Q0(ae)+32|0:q)|0,K0(Z+96|0,fe,Le,ve,lt,C-15|0),ve=r[Z+104>>2],lt=r[Z+108>>2],Le=r[Z+100>>2],We=16-C|0,fe=r[Z+96>>2]),D=mt?d:D,b=mt?a:b,B=p,q=Ht&65535,Se||(d=!(B|q),C=d,ae=d?D:B,d=d<<6,a=d,C=Q0(C?b:q),d=d+((C|0)==32?Q0(ae)+32|0:C)|0,K0(Z+80|0,D,b,B,q,d-15|0),Se=16-d|0,B=r[Z+88>>2],q=r[Z+92>>2],b=r[Z+84>>2],D=r[Z+80>>2]),a=q<<3|B>>>29,d=B<<3|b>>>29,a=a|524288,B=ve<<3|Le>>>29,q=lt<<3|ve>>>29,mt=Mt^Ht,C=b<<3|D>>>29,p=D<<3;t:{if((Se|0)==(We|0))break t;if(D=We-Se|0,D>>>0>127){d=0,a=0,C=0,p=1;break t}K0(Z- -64|0,p,C,d,a,128-D|0),$i(Z+48|0,p,C,d,a,D),d=r[Z+56>>2],a=r[Z+60>>2],C=r[Z+52>>2],p=r[Z+48>>2]|(r[Z+64>>2]|r[Z+72>>2]|(r[Z+68>>2]|r[Z+76>>2]))!=0}ve=p,ae=C,Se=B,lt=q|524288,C=Le<<3|fe>>>29,Le=fe<<3,fe=C;t:{if((mt|0)<0){if(D=0,b=0,B=0,q=0,!(ve^Le|d^Se|(ae^fe|a^lt)))break e;if(p=Le-ve|0,C=fe-((ve>>>0>Le>>>0)+ae|0)|0,D=Se-d|0,b=(ae|0)==(fe|0)&ve>>>0>Le>>>0|ae>>>0>fe>>>0,B=D-b|0,d=(lt-((d>>>0>Se>>>0)+a|0)|0)-(D>>>0>>0)|0,q=d,d>>>0>524287)break t;d=!(B|q),D=d,b=d?p:B,d=d<<6,a=d,D=Q0(D?C:q),d=d+((D|0)==32?Q0(b)+32|0:D)|0,d=d-12|0,K0(Z+32|0,p,C,B,q,d),We=We-d|0,B=r[Z+40>>2],q=r[Z+44>>2],p=r[Z+32>>2],C=r[Z+36>>2];break t}if(C=ae+fe|0,p=ve+Le|0,C=p>>>0>>0?C+1|0:C,D=(ae|0)==(C|0)&p>>>0>>0|C>>>0>>0,ae=a+lt|0,d=d+Se|0,ae=d>>>0>>0?ae+1|0:ae,B=d+D|0,q=B>>>0>>0?ae+1|0:ae,!(q&1048576))break t;p=ve&1|((C&1)<<31|p>>>1),C=B<<31|C>>>1,We=We+1|0,B=(q&1)<<31|B>>>1,q=q>>>1|0}if(a=0,fe=Mt&-2147483648,(We|0)>=32767){B=a,q=fe|2147418112,D=0,b=0;break e}Se=0;t:{if((We|0)>0){Se=We;break t}K0(Z+16|0,p,C,B,q,We+127|0),$i(Z,p,C,B,q,1-We|0),p=r[Z>>2]|(r[Z+16>>2]|r[Z+24>>2]|(r[Z+20>>2]|r[Z+28>>2]))!=0,C=r[Z+4>>2],B=r[Z+8>>2],q=r[Z+12>>2]}Le=p&7,p=(C&7)<<29|p>>>3,D=(Le>>>0>4)+p|0,d=B<<29|C>>>3,b=p>>>0>D>>>0?d+1|0:d,p=(d|0)==(b|0)&p>>>0>D>>>0|d>>>0>b>>>0,d=a|((q&7)<<29|B>>>3),B=p+d|0,q=fe|(q>>>3&65535|Se<<16),q=d>>>0>B>>>0?q+1|0:q;t:{if((Le|0)==4){d=0,ae=b+d|0,p=D,a=D&1,D=D+a|0,b=p>>>0>D>>>0?ae+1|0:ae,d=(d|0)==(b|0)&a>>>0>D>>>0|d>>>0>b>>>0,B=d+B|0,q=d>>>0>B>>>0?q+1|0:q;break t}if(!Le)break e}}r[h>>2]=D,r[h+4>>2]=b,r[h+8>>2]=B,r[h+12>>2]=q,hn=Z+112|0}function Ep(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0;Mt=r[h+460>>2],r[h+136>>2]=r[Mt+16>>2],C=r[Mt+20>>2],Z=Ie[r[r[h+4>>2]>>2]](h,1,C<<5)|0,r[Z+16>>2]=0,r[Z+20>>2]=31,r[Z+8>>2]=0,r[Z+12>>2]=63,r[Z>>2]=0,r[Z+4>>2]=31,fr(h,Z),ae=1;e:{t:{if((C|0)<2)break t;for(;;){n:{r:{i:{if(ae<<1<=(C|0)){if(fe=ae&1,mt)break i;p=0,a=0,d=Z;break r}if(D=0,p=0,a=0,d=Z,mt>>>0>=3)for(fe=ae&2147483644,B=0;Le=p,p=r[d+24>>2],b=(p|0)>(a|0),q=r[d+56>>2],p=b?p:a,a=(q|0)>(p|0),Le=a?d+32|0:b?d:Le,b=r[d+88>>2],p=a?q:p,a=(b|0)>(p|0),Le=a?d- -64|0:Le,q=r[d+120>>2],a=a?b:p,b=(q|0)>(a|0),p=b?d+96|0:Le,a=b?q:a,d=d+128|0,B=B+4|0,(fe|0)!=(B|0););if(fe=ae&3,!fe)break n;for(;B=r[d+24>>2],b=(B|0)>(a|0),p=b?d:p,a=b?B:a,d=d+32|0,D=D+1|0,(fe|0)!=(D|0););break n}for(B=ae&2147483646,p=0,a=0,d=Z,D=0;b=r[d+28>>2],(b|0)>(a|0)&&(q=r[d+24>>2]>0,p=q?d:p,a=q?b:a),b=r[d+60>>2],(b|0)>(a|0)&&(q=r[d+56>>2]>0,p=q?d+32|0:p,a=q?b:a),d=d- -64|0,D=D+2|0,(B|0)!=(D|0););}if(!fe|r[d+28>>2]<=(a|0))break n;p=r[d+24>>2]>0?d:p}if(!p)break t;d=(ae<<5)+Z|0,r[d+4>>2]=r[p+4>>2],r[d+12>>2]=r[p+12>>2],r[d+20>>2]=r[p+20>>2],r[d>>2]=r[p>>2],r[d+8>>2]=r[p+8>>2],r[d+16>>2]=r[p+16>>2],B=r[h+44>>2],a=B<<2,b=r[p+20>>2],q=r[p+16>>2],fe=Ce(r[(r[a+143744>>2]<<2)+143572>>2],b-q|0)<<3,ve=r[p+12>>2],Se=r[p+8>>2],D=Ce(r[(r[a+143664>>2]<<2)+143572>>2],ve-Se|0)<<2,We=r[p+4>>2],lt=r[p>>2],a=Ce(r[(r[a+143584>>2]<<2)+143572>>2],We-lt|0)<<3;n:{r:{i:{a:{s:{o:{if(4292>>>B&1){if((fe|0)>(((a|0)>(D|0)?a:D)|0))break i;D=(a|0)<=(D|0);break o}if(Le=D,D=(D|0)<(fe|0),(a|0)>((D?fe:Le)|0))break s;D=D?2:1}switch(D|0){case 2:break i;case 1:break a;case 0:break s;default:break n}}a=(We+lt|0)/2|0,r[p+4>>2]=a,D=d;break r}a=(ve+Se|0)/2|0,r[p+12>>2]=a,D=d+8|0;break r}a=(b+q|0)/2|0,r[p+20>>2]=a,D=d+16|0}r[D>>2]=a+1}if(fr(h,p),fr(h,d),mt=mt+1|0,ae=ae+1|0,(ae|0)==(C|0))break}if(ae=C,(C|0)<=0)break e}for(Se=0;;){B=0,b=0,q=0,ve=0,d=(Se<<5)+Z|0,We=r[d>>2],an=r[d+4>>2];t:{if((We|0)>(an|0)||(wn=r[d+12>>2],mt=r[d+8>>2],(wn|0)<(mt|0))||(lt=r[d+20>>2],a=r[d+16>>2],(lt|0)<(a|0)))break t;for(ur=r[r[h+460>>2]+24>>2],fe=a+1|0,Er=a<<3|4,x=(lt-a|0)+1&1;;){for(Ht=We<<3|4,Le=r[(We<<2)+ur>>2],D=mt;;){C=((D<<6)+Le|0)+(a<<1)|0,on=D<<2|2;n:{if(!x){d=C,C=a;break n}d=C+2|0,C=En[C>>1],C&&(ve=Ce(C,Er)+ve|0,q=Ce(C,on)+q|0,b=Ce(C,Ht)+b|0,B=C+B|0),C=fe}if(p=C,(a|0)!=(lt|0))for(;C=En[d>>1],C&&(q=Ce(C,on)+q|0,b=Ce(C,Ht)+b|0,ve=Ce(C,p<<3|4)+ve|0,B=C+B|0),Zt=p+1|0,C=En[d+2>>1],C&&(q=Ce(C,on)+q|0,b=Ce(C,Ht)+b|0,ve=Ce(C,Zt<<3|4)+ve|0,B=C+B|0),d=d+4|0,p=p+2|0,(lt|0)!=(Zt|0););if(d=(D|0)!=(wn|0),D=D+1|0,!d)break}if(d=(We|0)!=(an|0),We=We+1|0,!d)break}}if(d=B>>1,F[r[r[h+136>>2]>>2]+Se|0]=(d+b|0)/(B|0),F[r[r[h+136>>2]+4>>2]+Se|0]=(d+q|0)/(B|0),F[r[r[h+136>>2]+8>>2]+Se|0]=(d+ve|0)/(B|0),Se=Se+1|0,(Se|0)==(ae|0))break}C=ae}r[h+132>>2]=C,d=r[h>>2],r[d+24>>2]=C,r[d+20>>2]=96,Ie[r[r[h>>2]+4>>2]](h,1),r[Mt+28>>2]=1}function ea(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;d=r[h+400>>2],p=r[h+444>>2];e:{if(r[h+220>>2]){a=r[h+404>>2];t:{n:{r:{if(!d){if(!a)break r;break n}if((d|0)>(a|0)|(a|0)>63|r[h+328>>2]!=1)break n}a=r[h+408>>2];r:{if(!a){a=r[h+412>>2];break r}if(a=a-1|0,(a|0)!=r[h+412>>2])break n}if((a|0)<14)break t}a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=16,r[r[h>>2]+28>>2]=r[h+404>>2],r[r[h>>2]+32>>2]=r[h+408>>2],r[r[h>>2]+36>>2]=r[h+412>>2],Ie[r[r[h>>2]>>2]](h)}if(d=r[h+328>>2],(d|0)>0)for(;;){d=r[h+160>>2],C=r[r[((D<<2)+h|0)+332>>2]+4>>2],B=d+(C<<8)|0,b=d+(r[h+36>>2]+C<<8)|0,a=r[h+400>>2],d=0;t:{if(!a||(d=a,r[B>>2]>=0))break t;d=r[h>>2],r[d+24>>2]=C,r[d+20>>2]=115,r[r[h>>2]+28>>2]=0,Ie[r[r[h>>2]+4>>2]](h,-1),d=r[h+400>>2]}for(d=(d|0)>0?1:d;r[b+(d<<2)>>2]=r[h+144>>2]>=2?r[(d<<2)+B>>2]:0,a=r[h+404>>2],q=(((a|0)<=9?9:a)|0)>(d|0),d=d+1|0,!!q;);if(d=r[h+400>>2],(a|0)>=(d|0))for(;a=(d<<2)+B|0,b=r[a>>2],r[h+408>>2]!=(((b|0)>0?b:0)|0)&&(b=r[h>>2],r[b+24>>2]=C,r[b+20>>2]=115,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]+4>>2]](h,-1)),r[a>>2]=r[h+412>>2],a=r[h+404>>2]>(d|0),d=d+1|0,!!a;);if(d=r[h+328>>2],D=D+1|0,!((d|0)>(D|0)))break}if(a=r[h+400>>2],!r[h+408>>2]){if(!a){r[p+4>>2]=230;break e}r[p+4>>2]=231;break e}if(!a){r[p+4>>2]=232;break e}r[p+4>>2]=233;break e}t:{if(!(r[h+408>>2]|(r[h+404>>2]!=63|d))&&!r[h+412>>2])break t;d=r[h>>2],r[d+20>>2]=122,Ie[r[d+4>>2]](h,-1)}r[p+4>>2]=234,d=r[h+328>>2]}if((d|0)>0)for(a=0;;){B=a<<2,C=r[(B+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(d=r[C+20>>2],d>>>0>=16&&(D=r[h>>2],r[D+24>>2]=d,r[D+20>>2]=125,Ie[r[r[h>>2]>>2]](h)),D=(d<<2)+p|0,d=r[D+60>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,1,64)|0,r[D+60>>2]=d),F[d|0]=0,F[d+1|0]=0,F[d+2|0]=0,F[d+3|0]=0,F[d+4|0]=0,F[d+5|0]=0,F[d+6|0]=0,F[d+7|0]=0,F[d+56|0]=0,F[d+57|0]=0,F[d+58|0]=0,F[d+59|0]=0,F[d+60|0]=0,F[d+61|0]=0,F[d+62|0]=0,F[d+63|0]=0,F[d+48|0]=0,F[d+49|0]=0,F[d+50|0]=0,F[d+51|0]=0,F[d+52|0]=0,F[d+53|0]=0,F[d+54|0]=0,F[d+55|0]=0,F[d+40|0]=0,F[d+41|0]=0,F[d+42|0]=0,F[d+43|0]=0,F[d+44|0]=0,F[d+45|0]=0,F[d+46|0]=0,F[d+47|0]=0,F[d+32|0]=0,F[d+33|0]=0,F[d+34|0]=0,F[d+35|0]=0,F[d+36|0]=0,F[d+37|0]=0,F[d+38|0]=0,F[d+39|0]=0,F[d+24|0]=0,F[d+25|0]=0,F[d+26|0]=0,F[d+27|0]=0,F[d+28|0]=0,F[d+29|0]=0,F[d+30|0]=0,F[d+31|0]=0,F[d+16|0]=0,F[d+17|0]=0,F[d+18|0]=0,F[d+19|0]=0,F[d+20|0]=0,F[d+21|0]=0,F[d+22|0]=0,F[d+23|0]=0,F[d+8|0]=0,F[d+9|0]=0,F[d+10|0]=0,F[d+11|0]=0,F[d+12|0]=0,F[d+13|0]=0,F[d+14|0]=0,F[d+15|0]=0,d=p+B|0,r[d+40>>2]=0,r[d+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}d=r[C+24>>2],d>>>0>=16&&(C=r[h>>2],r[C+24>>2]=d,r[C+20>>2]=125,Ie[r[r[h>>2]>>2]](h)),C=(d<<2)+p|0,d=r[C+124>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,1,256)|0,r[C+124>>2]=d),k(d,0,256)}if(a=a+1|0,!((a|0)>2]))break}r[p+16>>2]=0,r[p+20>>2]=-16,r[p+8>>2]=0,r[p+12>>2]=0,r[p+56>>2]=r[h+276>>2]}function x4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0;for(y=hn-512|0,hn=y,wn=r[h+324>>2],d=r[d+80>>2],h=y;fe=Ce(He[d+32>>1],He[a+32>>1]),ae=Ce(He[d+96>>1],He[a+96>>1]),B=fe-ae|0,Le=Ce(B,11363),q=Ce(He[d+48>>1],He[a+48>>1]),ve=Ce(He[d+16>>1],He[a+16>>1]),We=Ce(q+ve|0,11086),ur=Le+Ce(ae,20995)|0,Z=Ce(He[d+64>>1],He[a+64>>1]),Er=Ce(Z,10703),Se=Ce(He[a>>1],He[d>>1])<<13|1024,Ht=Er+Se|0,on=ur+Ht|0,D=Ce(He[d+112>>1],He[a+112>>1]),x=Ce(D+ve|0,8956),b=Ce(He[d+80>>1],He[a+80>>1]),mt=b+ve|0,an=Ce(mt,10217),Mt=x+(an+(We+Ce(ve,-18730)|0)|0)|0,r[h+480>>2]=on-Mt>>11,r[h>>2]=Mt+on>>11,B=Ce(B,2260),on=B+Ce(fe,7373)|0,Z=Ce(Z,4433),Mt=Z+Se|0,lt=on+Mt|0,u=Ce(b+q|0,1136),Zt=u+(We+Ce(q,589)|0)|0,We=D+q|0,m=Ce(We,-5461),Zt=Zt+m|0,r[h+448>>2]=lt-Zt>>11,r[h+32>>2]=lt+Zt>>11,fe=Le+Ce(fe,-4926)|0,Le=Se-Z|0,Z=fe+Le|0,lt=an+(Ce(b,-9222)+u|0)|0,an=Ce(D+b|0,-11086),lt=lt+an|0,r[h+416>>2]=Z-lt>>11,r[h+64>>2]=Z+lt>>11,ae=B+Ce(ae,-4176)|0,Se=Se-Er|0,B=ae+Se|0,Z=an+(x+(m+Ce(D,8728)|0)|0)|0,r[h+384>>2]=B-Z>>11,r[h+96>>2]=B+Z>>11,Se=Se-ae|0,ae=Ce(We,-10217),We=Ce(ve-D|0,7350),B=(ae+Ce(D,25733)|0)+We|0,D=Ce(D-b|0,3363),B=B+D|0,r[h+352>>2]=Se-B>>11,r[h+128>>2]=B+Se>>11,Se=Le-fe|0,fe=Ce(mt,5461),B=Ce(b,-6278),b=Ce(b-q|0,11529),D=D+(fe+(B+b|0)|0)|0,r[h+320>>2]=Se-D>>11,r[h+160>>2]=D+Se>>11,D=Mt-on|0,B=Ce(q,16154),q=Ce(ve-q|0,3363),b=ae+(b+(B+q|0)|0)|0,r[h+288>>2]=D-b>>11,r[h+192>>2]=D+b>>11,b=Ht-ur|0,q=We+(fe+(q+Ce(ve,-15038)|0)|0)|0,r[h+256>>2]=b-q>>11,r[h+224>>2]=b+q>>11,h=h+4|0,d=d+2|0,a=a+2|0,S=S+1|0,(S|0)!=8;);for(h=wn+128|0,d=y,Se=0;q=r[d+12>>2],ve=r[d+4>>2],ae=Ce(q+ve|0,11086),Le=r[d+8>>2],We=r[d+24>>2],B=Le-We|0,wn=Ce(B,11363),a=r[(Se<<2)+p>>2]+C|0,D=r[d+28>>2],Er=Ce(D+ve|0,8956),b=r[d+20>>2],ur=b+ve|0,Z=Ce(ur,10217),Ht=Er+(Z+(ae+Ce(ve,-18730)|0)|0)|0,on=wn+Ce(We,20995)|0,fe=(r[d>>2]<<13)+131072|0,mt=r[d+16>>2],an=Ce(mt,10703),x=fe+an|0,Mt=on+x|0,F[a|0]=te[h+(Ht+Mt>>>18&1023)|0],F[a+15|0]=te[h+(Mt-Ht>>>18&1023)|0],Ht=D+q|0,Mt=Ce(Ht,-5461),lt=ae+Ce(q,589)|0,ae=Ce(b+q|0,1136),lt=Mt+(lt+ae|0)|0,B=Ce(B,2260),u=B+Ce(Le,7373)|0,mt=Ce(mt,4433),m=mt+fe|0,Zt=u+m|0,F[a+1|0]=te[h+(lt+Zt>>>18&1023)|0],F[a+14|0]=te[h+(Zt-lt>>>18&1023)|0],Z=Z+(ae+Ce(b,-9222)|0)|0,ae=Ce(D+b|0,-11086),Z=Z+ae|0,Le=wn+Ce(Le,-4926)|0,wn=fe-mt|0,mt=Le+wn|0,F[a+2|0]=te[h+(Z+mt>>>18&1023)|0],F[a+13|0]=te[h+(mt-Z>>>18&1023)|0],ae=ae+(Er+(Mt+Ce(D,8728)|0)|0)|0,We=B+Ce(We,-4176)|0,fe=fe-an|0,B=We+fe|0,F[a+3|0]=te[h+(ae+B>>>18&1023)|0],F[a+12|0]=te[h+(B-ae>>>18&1023)|0],B=Ce(ve-D|0,7350),ae=Ce(Ht,-10217),Z=B+(ae+Ce(D,25733)|0)|0,D=Ce(D-b|0,3363),Z=Z+D|0,fe=fe-We|0,F[a+4|0]=te[h+(Z+fe>>>18&1023)|0],F[a+11|0]=te[h+(fe-Z>>>18&1023)|0],fe=Ce(ur,5461),Z=Ce(b,-6278),b=Ce(b-q|0,11529),D=D+(fe+(Z+b|0)|0)|0,Le=wn-Le|0,F[a+5|0]=te[h+(D+Le>>>18&1023)|0],F[a+10|0]=te[h+(Le-D>>>18&1023)|0],D=Ce(q,16154),q=Ce(ve-q|0,3363),b=ae+(b+(D+q|0)|0)|0,D=m-u|0,F[a+6|0]=te[h+(b+D>>>18&1023)|0],F[a+9|0]=te[h+(D-b>>>18&1023)|0],q=B+(fe+(q+Ce(ve,-15038)|0)|0)|0,ve=x-on|0,F[a+7|0]=te[h+(q+ve>>>18&1023)|0],F[a+8|0]=te[h+(ve-q>>>18&1023)|0],d=d+32|0,Se=Se+1|0,(Se|0)!=16;);hn=y+512|0}function Wi(h,d,a,p){var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;b=hn-1312|0,hn=b,a>>>0>=4&&(C=r[h>>2],r[C+24>>2]=a,r[C+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),B=r[((d?88:104)+h|0)+(a<<2)>>2],B||(C=r[h>>2],r[C+24>>2]=a,r[C+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),Z=r[p>>2],Z||(Z=Ie[r[r[h+4>>2]>>2]](h,1,1280)|0,r[p>>2]=Z),a=te[B+1|0];e:{if(!a){a=0;break e}k(b+1040|0,1,a)}C=te[B+2|0],p=C+a|0,p>>>0>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,2,C)}C=te[B+3|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,3,C)}C=te[B+4|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,4,C)}C=te[B+5|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,5,C)}C=te[B+6|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,6,C)}C=te[B+7|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,7,C)}C=te[B+8|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,8,C)}C=te[B+9|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,9,C)}C=te[B+10|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,10,C)}C=te[B+11|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,11,C)}C=te[B+12|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,12,C)}C=te[B+13|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,13,C)}C=te[B+14|0],p=C+a|0,(p|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){p=a;break e}k((b+1040|0)+a|0,14,C)}C=te[B+15|0],a=C+p|0,(a|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!C){a=p;break e}k((b+1040|0)+p|0,15,C)}p=te[B+16|0],C=p+a|0,(C|0)>=257&&(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h));e:{if(!p){C=a;break e}k((b+1040|0)+a|0,16,p)}if(a=0,F[(b+1040|0)+C|0]=0,q=te[b+1040|0],q)for(D=q<<24>>24,p=0;;){if(q<<24>>24==(D|0))for(;r[(p<<2)+b>>2]=a,a=a+1|0,p=p+1|0,q=F[p+(b+1040|0)|0],(q|0)==(D|0););if(1<>2],r[ae+20>>2]=8,Ie[r[ae>>2]](h)),D=D+1|0,a=a<<1,!(q&255))break}a=0,p=k(Z,0,1280);e:{if((C|0)<=0)break e;if(!d){for(;;)if(d=te[(a+B|0)+17|0],D=(d+p|0)+1024|0,te[D|0]&&(q=r[h>>2],r[q+20>>2]=8,Ie[r[q>>2]](h)),r[p+(d<<2)>>2]=r[(a<<2)+b>>2],F[D|0]=te[(b+1040|0)+a|0],a=a+1|0,(C|0)==(a|0))break e}for(;d=te[(a+B|0)+17|0],d>>>0<=15&!te[(d+p|0)+1024|0]||(D=r[h>>2],r[D+20>>2]=8,Ie[r[D>>2]](h)),r[p+(d<<2)>>2]=r[(a<<2)+b>>2],F[(d+p|0)+1024|0]=te[(b+1040|0)+a|0],a=a+1|0,(C|0)!=(a|0););}hn=b+1312|0}function fr(h,d){var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;ve=r[d+20>>2],p=r[d+16>>2],Le=r[r[h+460>>2]+24>>2],Se=r[d+12>>2],B=r[d+8>>2],q=r[d+4>>2],D=r[d>>2];e:{if(!((Se|0)<(B|0)|(q|0)<=(D|0)|(p|0)>(ve|0)))for(ae=p<<1,Z=D;;){for(fe=r[(Z<<2)+Le>>2],b=B;;){for(C=ae+(fe+(b<<6)|0)|0,a=p;;){if(En[C>>1]){r[d>>2]=Z;break e}if(C=C+2|0,We=(a|0)!=(ve|0),a=a+1|0,!We)break}if(a=(b|0)!=(Se|0),b=b+1|0,!a)break}if(a=(q|0)!=(Z|0),Z=Z+1|0,!a)break}Z=D}e:{if(!((q|0)<=(Z|0)|(B|0)>(Se|0)|(p|0)>(ve|0)))for(D=p<<1,ae=q;;){for(fe=r[(ae<<2)+Le>>2],b=B;;){for(C=D+(fe+(b<<6)|0)|0,a=p;;){if(En[C>>1]){r[d+4>>2]=ae;break e}if(C=C+2|0,We=(a|0)!=(ve|0),a=a+1|0,!We)break}if(a=(b|0)!=(Se|0),b=b+1|0,!a)break}if(a=(Z|0)<(ae|0),ae=ae-1|0,!a)break}ae=q}e:{if(!((Z|0)>(ae|0)|(B|0)>=(Se|0)|(p|0)>(ve|0)))for(b=p<<1,q=B;;){for(D=Z;;){for(C=b+(r[(D<<2)+Le>>2]+(q<<6)|0)|0,a=p;;){if(En[C>>1]){r[d+8>>2]=q;break e}if(C=C+2|0,fe=(a|0)!=(ve|0),a=a+1|0,!fe)break}if(a=(D|0)!=(ae|0),D=D+1|0,!a)break}if(a=(q|0)!=(Se|0),q=q+1|0,!a)break}q=B}e:{if(!((Z|0)>(ae|0)|(q|0)>=(Se|0)|(p|0)>(ve|0)))for(D=p<<1,b=Se;;){for(fe=Z;;){for(C=D+(r[(fe<<2)+Le>>2]+(b<<6)|0)|0,a=p;;){if(En[C>>1]){r[d+12>>2]=b;break e}if(C=C+2|0,B=(a|0)!=(ve|0),a=a+1|0,!B)break}if(a=(ae|0)!=(fe|0),fe=fe+1|0,!a)break}if(a=(b|0)>(q|0),b=b-1|0,!a)break}b=Se}e:{if(!((Z|0)>(ae|0)|(p|0)>=(ve|0)|(b|0)<(q|0)))for(Se=q<<6,D=p;;){for(B=Z;;){for(C=(Se+r[(B<<2)+Le>>2]|0)+(D<<1)|0,a=q;;){if(En[C>>1]){r[d+16>>2]=D;break e}if(C=C- -64|0,fe=(a|0)!=(b|0),a=a+1|0,!fe)break}if(a=(B|0)!=(ae|0),B=B+1|0,!a)break}if(a=(D|0)!=(ve|0),D=D+1|0,!a)break}D=p}e:{if(!((Z|0)>(ae|0)|(D|0)>=(ve|0)|(b|0)<(q|0)))for(Se=q<<6,B=ve;;){for(p=Z;;){for(C=(Se+r[(p<<2)+Le>>2]|0)+(B<<1)|0,a=q;;){if(En[C>>1]){r[d+20>>2]=B;break e}if(C=C- -64|0,fe=(a|0)!=(b|0),a=a+1|0,!fe)break}if(a=(p|0)!=(ae|0),p=p+1|0,!a)break}if(a=(D|0)<(B|0),B=B-1|0,!a)break}B=ve}if(h=r[h+44>>2]<<2,a=Ce(r[(r[h+143664>>2]<<2)+143572>>2],b-q|0)<<2,p=Ce(a,a),a=Ce(r[(r[h+143584>>2]<<2)+143572>>2],ae-Z|0)<<3,ve=B-D|0,h=Ce(ve,r[(r[h+143744>>2]<<2)+143572>>2])<<3,r[d+24>>2]=(p+Ce(a,a)|0)+Ce(h,h),a=0,!((b|0)<(q|0)|(Z|0)>(ae|0)))for(Se=ve+1&3;;){if((D|0)<=(B|0))for(We=r[(Z<<2)+Le>>2],fe=q;;){if(p=(We+(fe<<6)|0)+(D<<1)|0,h=0,C=D,Se)for(;C=C+1|0,a=(En[p>>1]!=0)+a|0,p=p+2|0,h=h+1|0,(Se|0)!=(h|0););if(ve>>>0>=3)for(;a=((((En[p>>1]!=0)+a|0)+(En[p+2>>1]!=0)|0)+(En[p+4>>1]!=0)|0)+(En[p+6>>1]!=0)|0,p=p+8|0,h=C+3|0,C=C+4|0,(h|0)!=(B|0););if(h=(b|0)!=(fe|0),fe=fe+1|0,!h)break}if(h=(Z|0)!=(ae|0),Z=Z+1|0,!h)break}r[d+28>>2]=a}function is(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;C=hn-288|0,hn=C,fe=r[h+412>>2],ve=r[h+404>>2],B=r[h+444>>2],a=r[h+276>>2];e:{t:{if(!a){a=0;break t}if(r[B+40>>2])break t;if(a=r[h+440>>2],r[a+24>>2]=r[a+24>>2]+(r[B+16>>2]/8|0),r[B+16>>2]=0,!(Ie[r[a+8>>2]](h)|0))break e;if(r[h+328>>2]>0)for(a=0;r[((a<<2)+B|0)+24>>2]=0,a=a+1|0,(a|0)>2];);if(r[B+20>>2]=0,a=r[h+276>>2],r[B+40>>2]=a,r[h+416>>2])break t;r[B+8>>2]=0}t:{if(!r[B+8>>2]){Se=1<>2]=h,a=r[h+24>>2],r[C+264>>2]=r[a>>2],r[C+268>>2]=r[a+4>>2],p=r[B+16>>2],D=r[h+400>>2],ae=r[d>>2],b=r[B+12>>2];n:{r:{i:{if(Z=r[B+20>>2],Z){d=0;break i}if((D|0)>(ve|0)){d=0;break i}for(Mt=-1<>2],Ht=65535<>2],p=r[C+276>>2],(p|0)<8)break s}if(a=r[(((b>>>p-8&255)<<2)+lt|0)+148>>2],q=a>>8,(a|0)>2303)break s;a=a&255,p=p-q|0;break a}if(a=Fa(C+264|0,b,p,lt,q),(a|0)<0)break t;b=r[C+272>>2],p=r[C+276>>2]}q=a>>>4|0;a:{s:switch(a&15){default:a=r[h>>2],r[a+20>>2]=118,Ie[r[a+4>>2]](h,-1);case 1:if((p|0)<=0){if(!ms(C+264|0,b,p,1))break t;b=r[C+272>>2],p=r[C+276>>2]}p=p-1|0,Le=b>>>p&1?Se:Mt;break a;case 0:break s}if(Le=0,(q|0)==15)break a;if(Z=1<>>0<16)break r;if((p|0)<(q|0)){if(!ms(C+264|0,b,p,q))break t;b=r[C+272>>2],p=r[C+276>>2]}p=p-q|0,Z=(Z-1&b>>>p)+Z|0;break i}mt=(D|0)>(ve|0)?D:ve,Z=mt+1|0;a:{for(;;){a=D,D=(r[(a<<2)+9424>>2]<<1)+ae|0;s:{if(En[D>>1]){if((p|0)<=0){if(!ms(C+264|0,b,p,1))break t;b=r[C+272>>2],p=r[C+276>>2]}if(p=p-1|0,!(b>>>p&1)||(We=He[D>>1],We&Se))break s;He[D>>1]=((We|0)<0?Ht:Se)+We;break s}if((q|0)<=0)break a;q=q-1|0}if(D=a+1|0,(a|0)==(mt|0))break}a=Z}if(Le&&(D=r[(a<<2)+9424>>2],He[(D<<1)+ae>>1]=Le,r[(d<<2)+C>>2]=D,d=d+1|0),D=a+1|0,!((a|0)<(ve|0)))break}break n}if(!Z)break n}if((D|0)<=(ve|0))for(fe=65535<>2]<<1)+ae|0;r:{if(!En[D>>1])break r;if((p|0)<=0){if(!ms(C+264|0,b,p,1))break t;b=r[C+272>>2],p=r[C+276>>2]}if(p=p-1|0,!(b>>>p&1)||(q=He[D>>1],q&Se))break r;He[D>>1]=q+((q|0)<0?fe:Se)}if(D=a+1|0,(a|0)==(ve|0))break}on=Z-1|0}d=r[h+24>>2],r[d>>2]=r[C+264>>2],r[d+4>>2]=r[C+268>>2],r[B+20>>2]=on,r[B+16>>2]=p,r[B+12>>2]=b,a=r[h+276>>2]}if(p=1,!a)break e;r[B+40>>2]=r[B+40>>2]-1;break e}if((d|0)<=0){p=0;break e}if(a=d,h=a&3,h)for(p=0;a=a-1|0,He[(r[(a<<2)+C>>2]<<1)+ae>>1]=0,p=p+1|0,(h|0)!=(p|0););if(p=0,d>>>0<4)break e;for(;h=(a<<2)+C|0,He[(r[h-4>>2]<<1)+ae>>1]=0,He[(r[h-8>>2]<<1)+ae>>1]=0,h=a-3|0,He[(r[(h<<2)+C>>2]<<1)+ae>>1]=0,a=a-4|0,He[(r[(a<<2)+C>>2]<<1)+ae>>1]=0,h>>>0>1;);}return hn=C+288|0,p|0}function Gr(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if(D=r[h+444>>2],r[h+276>>2]){if(a=r[D+56>>2],!a){if(Ie[r[r[h+440>>2]+8>>2]](h)|0||(a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)),r[h+328>>2]>0)for(;;){b=p<<2,C=r[(b+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(a=r[((r[C+20>>2]<<2)+D|0)+60>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,a=D+b|0,r[a+40>>2]=0,r[a+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}k(r[((r[C+24>>2]<<2)+D|0)+124>>2],0,256)}if(p=p+1|0,!((p|0)>2]))break}r[D+20>>2]=-16,r[D+12>>2]=0,r[D+16>>2]=0,a=r[h+276>>2]}r[D+56>>2]=a-1}e:{if(!(r[D+20>>2]==-1|r[h+356>>2]<=0))for(;;){a=ae<<2,ve=r[a+d>>2],a=r[(h+a|0)+360>>2]<<2,B=r[r[(a+h|0)+332>>2]+20>>2],C=(B<<2)+D|0,b=a+D|0,p=r[C+60>>2]+r[b+40>>2]|0;t:{if(!Jr(h,p)){r[b+40>>2]=0,a=r[b+24>>2];break t}Z=1,q=0,a=0,fe=Jr(h,p+1|0),p=(p+fe|0)+2|0;n:{if(!Jr(h,p))break n;if(C=r[C+60>>2],p=C+20|0,!Jr(h,p)){a=1;break n}if(Z=0,p=C+21|0,!Jr(h,p)){a=2;break n}if(p=C+22|0,!Jr(h,p)){a=4;break n}if(p=C+23|0,!Jr(h,p)){a=8;break n}if(p=C+24|0,!Jr(h,p)){a=16;break n}if(p=C+25|0,!Jr(h,p)){a=32;break n}if(p=C+26|0,!Jr(h,p)){a=64;break n}if(p=C+27|0,!Jr(h,p)){a=128;break n}if(p=C+28|0,!Jr(h,p)){a=256;break n}if(p=C+29|0,!Jr(h,p)){a=512;break n}if(p=C+30|0,!Jr(h,p)){a=1024;break n}if(p=C+31|0,!Jr(h,p)){a=2048;break n}if(p=C+32|0,!Jr(h,p)){a=4096;break n}if(p=C+33|0,!Jr(h,p)){a=8192;break n}if(a=16384,p=C+34|0,Jr(h,p))break e}B=h+B|0;n:{if(1<>1>(a|0))break n;if(C=fe<<2,1<>1<(a|0)){q=C+12|0;break n}q=C+4|0}r[b+40>>2]=q;n:{if(Z){p=a;break n}for(q=p+14|0,p=a;C=a>>>1|0,p=(Jr(h,q)?C:0)|p,Z=a>>>0>3,a=C,!!Z;);}a=r[b+24>>2]+(fe?p^-1:p+1|0)&65535,r[b+24>>2]=a}if(He[ve>>1]=a<>2],ae=ae+1|0,!((ae|0)>2]))break}return 1}return d=r[h>>2],r[d+20>>2]=126,Ie[r[d+4>>2]](h,-1),r[D+20>>2]=-1,1}function Dp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0;for(y=hn-480|0,hn=y,Mt=r[h+324>>2],d=r[d+80>>2],h=y;ve=He[d+80>>1],Se=He[a+80>>1],B=He[d+16>>1],b=He[a+16>>1],ae=He[d+112>>1],fe=He[a+112>>1],lt=He[d+48>>1],q=He[a+48>>1],Z=Ce(He[a>>1],He[d>>1])<<13|1024,mt=Ce(He[d+96>>1],He[a+96>>1]),Ht=Z+Ce(mt,-11586)|0,We=Ce(He[d+32>>1],He[a+32>>1]),Le=Ce(He[d+64>>1],He[a+64>>1]),D=We-Le|0,r[h+224>>2]=Ht+Ce(D,-11584)>>11,ur=Ce(ve,Se),ve=Ce(ur,10033),B=Ce(B,b),b=Ce(ae,fe),Er=B-b|0,Se=ve+Ce(Er,11522)|0,fe=Z+Ce(mt,9373)|0,on=Ce(D,374),ae=We+Le|0,Le=Ce(ae,10958),an=fe+(on+Le|0)|0,lt=Ce(q,lt),q=Ce(lt,-11018),wn=Se+(Ce(b,20131)-q|0)|0,r[h+448>>2]=an-wn>>11,r[h>>2]=an+wn>>11,mt=Z+Ce(mt,-3580)|0,an=Ce(D,2896),wn=Ce(ae,6476),Z=mt+(an+wn|0)|0,x=lt-b|0,u=Ce(x+B|0,6810),m=u+Ce(B,4209)|0,r[h+416>>2]=Z-m>>11,r[h+32>>2]=Z+m>>11,Z=Ht+Ce(D,5792)|0,Ht=Ce(Er-ur|0,10033),r[h+384>>2]=Z-Ht>>11,r[h+64>>2]=Z+Ht>>11,D=Ce(D,-3271),Z=Ce(ae,4482),ae=fe+(D-Z|0)|0,q=(q+ve|0)+Ce(b,-7121)|0,b=Ce(B+b|0,4712),q=q+b|0,r[h+288>>2]=ae-q>>11,r[h+160>>2]=ae+q>>11,We=Ce(We,11795),ae=mt+(on+(We-Le|0)|0)|0,lt=Ce(lt,-6810),b=b+((lt+Ce(B,3897)|0)-ve|0)|0,r[h+352>>2]=ae-b>>11,r[h+96>>2]=b+ae>>11,b=an+(fe-wn|0)|0,ve=u+Ce(x,-17828)|0,r[h+320>>2]=b-ve>>11,r[h+128>>2]=b+ve>>11,D=mt+(D+(Z-We|0)|0)|0,B=Se+(lt+Ce(B,-9113)|0)|0,r[h+256>>2]=D-B>>11,r[h+192>>2]=B+D>>11,h=h+4|0,d=d+2|0,a=a+2|0,Zt=Zt+1|0,(Zt|0)!=8;);for(h=Mt+128|0,d=y,Zt=0;Le=r[d+20>>2],We=Ce(Le,10033),B=r[d+4>>2],D=r[d+28>>2],q=B-D|0,mt=We+Ce(q,11522)|0,a=r[(Zt<<2)+p>>2]+C|0,Z=r[d+12>>2],Ht=Ce(Z,-11018),Mt=mt+(Ce(D,20131)-Ht|0)|0,fe=(r[d>>2]<<13)+131072|0,ae=r[d+24>>2],lt=fe+Ce(ae,9373)|0,ve=r[d+8>>2],Se=r[d+16>>2],b=ve-Se|0,Er=Ce(b,374),Se=ve+Se|0,ur=Ce(Se,10958),on=lt+(Er+ur|0)|0,F[a|0]=te[h+(Mt+on>>>18&1023)|0],F[a+14|0]=te[h+(on-Mt>>>18&1023)|0],on=Z-D|0,an=Ce(on+B|0,6810),wn=an+Ce(B,4209)|0,Mt=fe+Ce(ae,-3580)|0,x=Ce(b,2896),u=Ce(Se,6476),m=Mt+(x+u|0)|0,F[a+1|0]=te[h+(wn+m>>>18&1023)|0],F[a+13|0]=te[h+(m-wn>>>18&1023)|0],q=Ce(q-Le|0,10033),ae=fe+Ce(ae,-11586)|0,fe=ae+Ce(b,5792)|0,F[a+2|0]=te[h+(q+fe>>>18&1023)|0],F[a+12|0]=te[h+(fe-q>>>18&1023)|0],fe=Ce(B+D|0,4712),Z=Ce(Z,-6810),q=fe+((Z+Ce(B,3897)|0)-We|0)|0,ve=Ce(ve,11795),Le=Mt+(Er+(ve-ur|0)|0)|0,F[a+3|0]=te[h+(q+Le>>>18&1023)|0],F[a+11|0]=te[h+(Le-q>>>18&1023)|0],q=an+Ce(on,-17828)|0,Le=x+(lt-u|0)|0,F[a+4|0]=te[h+(q+Le>>>18&1023)|0],F[a+10|0]=te[h+(Le-q>>>18&1023)|0],D=fe+((We+Ht|0)+Ce(D,-7121)|0)|0,We=Ce(b,-3271),Se=Ce(Se,4482),fe=lt+(We-Se|0)|0,F[a+5|0]=te[h+(D+fe>>>18&1023)|0],F[a+9|0]=te[h+(fe-D>>>18&1023)|0],B=mt+(Z+Ce(B,-9113)|0)|0,D=Mt+(We+(Se-ve|0)|0)|0,F[a+6|0]=te[h+(B+D>>>18&1023)|0],F[a+8|0]=te[h+(D-B>>>18&1023)|0],F[a+7|0]=te[h+(ae+Ce(b,268423872)>>>18&1023)|0],d=d+32|0,Zt=Zt+1|0,(Zt|0)!=15;);hn=y+480|0}function zr(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=On(0),B=On(0),q=On(0),Z=On(0),ae=On(0),fe=On(0),ve=On(0),Se=On(0),Le=0,We=On(0),lt=On(0),mt=On(0),Mt=On(0),Ht=On(0),on=On(0),an=0,wn=0,Zt=0,ur=On(0);for(an=hn-256|0,hn=an,Le=r[h+324>>2],d=r[d+80>>2],h=an,wn=8;;){e:{t:{if(D=En[a+32>>1],Zt=En[a+16>>1],D|Zt||(D=0,En[a+48>>1]|En[a+64>>1]|(En[a+80>>1]|En[a+96>>1]))||En[a+112>>1])break t;B=On(On(or[d>>2]*On(.125))*On(He[a>>1])),or[h+192>>2]=B,or[h+160>>2]=B,or[h+128>>2]=B,or[h+96>>2]=B,or[h+64>>2]=B,or[h+32>>2]=B,or[h>>2]=B,D=56;break e}q=On(On(or[d>>2]*On(.125))*On(He[a>>1])),Z=On(On(or[d+128>>2]*On(.125))*On(He[a+64>>1])),We=On(q+Z),ae=On(On(or[d+64>>2]*On(.125))*On(D<<16>>16)),fe=On(On(or[d+192>>2]*On(.125))*On(He[a+96>>1])),B=On(ae+fe),ve=On(We+B),Se=On(On(or[d+96>>2]*On(.125))*On(He[a+48>>1])),lt=On(On(or[d+160>>2]*On(.125))*On(He[a+80>>1])),mt=On(Se+lt),Mt=On(On(or[d+32>>2]*On(.125))*On(Zt<<16>>16)),Ht=On(On(or[d+224>>2]*On(.125))*On(He[a+112>>1])),on=On(Mt+Ht),b=On(mt+on),or[h+224>>2]=ve-b,or[h>>2]=ve+b,q=On(q-Z),Z=On(On(On(ae-fe)*On(1.4142135381698608))-B),ae=On(q+Z),fe=On(lt-Se),ve=On(Mt-Ht),Se=On(On(fe+ve)*On(1.8477590084075928)),b=On(On(Se+On(fe*On(-2.613126039505005)))-b),or[h+192>>2]=ae-b,or[h+32>>2]=ae+b,q=On(q-Z),b=On(On(On(on-mt)*On(1.4142135381698608))-b),or[h+160>>2]=q-b,or[h+64>>2]=q+b,B=On(We-B),b=On(On(Se+On(ve*On(-1.0823922157287598)))-b),or[h+96>>2]=B+b,B=On(B-b),D=32}if(or[(D<<2)+h>>2]=B,a=a+2|0,d=d+4|0,h=h+4|0,D=wn>>>0>1,wn=wn-1|0,!D)break}for(a=an,d=0;;){h=r[(d<<2)+p>>2]+C|0,q=On(or[a>>2]+On(128.5)),Z=or[a+16>>2],We=On(q+Z),ae=or[a+8>>2],fe=or[a+24>>2],B=On(ae+fe),ve=On(We+B),Se=or[a+20>>2],lt=or[a+12>>2],mt=On(Se+lt),Mt=or[a+4>>2],Ht=or[a+28>>2],on=On(Mt+Ht),b=On(mt+on),ur=On(ve+b);e:{if(On(U2(ur))>2]-6|0){case 0:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h+2|0]<<2)|0)+2048>>2]+(r[(b+(te[h+1|0]<<2)|0)+1024>>2]+r[b+(te[h|0]<<2)>>2]|0)>>>16,h=h+3|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 1:case 6:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h+2|0]<<2)|0)+2048>>2]+(r[(b+(te[h+1|0]<<2)|0)+1024>>2]+r[b+(te[h|0]<<2)>>2]|0)>>>16,h=h+4|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 2:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h|0]<<2)|0)+2048>>2]+(r[(b+(te[h+1|0]<<2)|0)+1024>>2]+r[b+(te[h+2|0]<<2)>>2]|0)>>>16,h=h+3|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 3:case 7:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h|0]<<2)|0)+2048>>2]+(r[(b+(te[h+1|0]<<2)|0)+1024>>2]+r[b+(te[h+2|0]<<2)>>2]|0)>>>16,h=h+4|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 4:case 8:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h+1|0]<<2)|0)+2048>>2]+(r[(b+(te[h+2|0]<<2)|0)+1024>>2]+r[b+(te[h+3|0]<<2)>>2]|0)>>>16,h=h+4|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;case 5:case 9:if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h+3|0]<<2)|0)+2048>>2]+(r[(b+(te[h+2|0]<<2)|0)+1024>>2]+r[b+(te[h+1|0]<<2)>>2]|0)>>>16,h=h+4|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e;default:break t}if((C|0)<=0||(B=r[h+28>>2],!B))break e;for(b=r[r[h+352>>2]+8>>2];;){for(q=r[r[a>>2]+(p<<2)>>2],h=r[d>>2],D=0;F[D+q|0]=r[(b+(te[h+2|0]<<2)|0)+2048>>2]+(r[(b+(te[h+1|0]<<2)|0)+1024>>2]+r[b+(te[h|0]<<2)>>2]|0)>>>16,h=h+3|0,D=D+1|0,(B|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Uu(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0;for(Er=hn-416|0,hn=Er,on=r[h+324>>2],d=r[d+80>>2],h=Er;We=He[d+112>>1],fe=He[a+112>>1],b=He[d+48>>1],q=He[a+48>>1],Mt=He[d+80>>1],Ht=He[a+80>>1],B=He[d+16>>1],Z=He[a+16>>1],ve=Ce(He[a>>1],He[d>>1])<<13|1024,D=Ce(He[d+64>>1],He[a+64>>1]),Le=Ce(He[d+96>>1],He[a+96>>1]),Se=D-Le|0,ae=Ce(He[d+32>>1],He[a+32>>1]),r[h+192>>2]=ve+Ce(Se-ae|0,11585)>>11,b=Ce(b,q),B=Ce(B,Z),Z=Ce(b+B|0,10832),lt=ve+Ce(Se,793)|0,D=D+Le|0,Le=Ce(D,9465),an=lt+(Le+Ce(ae,11249)|0)|0,q=Ce(Mt,Ht),Mt=Ce(q+B|0,9534),We=Ce(We,fe),fe=We+B|0,Ht=Ce(fe,7682),mt=(Mt+(Z+Ce(B,-16549)|0)|0)+Ht|0,r[h+384>>2]=an-mt>>11,r[h>>2]=mt+an>>11,mt=ve+Ce(Se,3989)|0,an=Ce(D,2592),Zt=mt+(Ce(ae,8672)-an|0)|0,ur=Ce(b+q|0,-2773),wn=ur+(Z+Ce(b,6859)|0)|0,Z=Ce(b+We|0,-9534),wn=wn+Z|0,r[h+352>>2]=Zt-wn>>11,r[h+32>>2]=Zt+wn>>11,Le=lt+(Ce(ae,4108)-Le|0)|0,lt=Mt+(Ce(q,-12879)+ur|0)|0,Mt=Ce(q+We|0,-5384),lt=lt+Mt|0,r[h+320>>2]=Le-lt>>11,r[h+64>>2]=Le+lt>>11,Se=ve+Ce(Se,-7678)|0,D=Ce(D,3570),ve=Se+(Ce(ae,-1396)-D|0)|0,Z=Mt+(Ht+(Z+Ce(We,18068)|0)|0)|0,r[h+288>>2]=ve-Z>>11,r[h+96>>2]=Z+ve>>11,Se=Se+(D+Ce(ae,-6581)|0)|0,D=Ce(B,2611),B=Ce(fe,2773)+Ce(q-b|0,7682)|0,b=(D+B|0)+Ce(b,-3818)|0,r[h+256>>2]=Se-b>>11,r[h+128>>2]=b+Se>>11,ae=mt+(an+Ce(ae,-10258)|0)|0,b=(B+Ce(q,3150)|0)+Ce(We,-14273)|0,r[h+224>>2]=ae-b>>11,r[h+160>>2]=b+ae>>11,h=h+4|0,d=d+2|0,a=a+2|0,x=x+1|0,(x|0)!=8;);for(h=on+128|0,d=Er,Se=0;b=r[d+12>>2],B=r[d+4>>2],D=Ce(b+B|0,10832),a=r[(Se<<2)+p>>2]+C|0,We=r[d+28>>2],Mt=We+B|0,Ht=Ce(Mt,7682),q=r[d+20>>2],fe=Ce(q+B|0,9534),Le=Ht+(fe+(D+Ce(B,-16549)|0)|0)|0,ve=r[d+24>>2],Z=r[d+16>>2],on=ve+Z|0,lt=Ce(on,9465),ae=r[d+8>>2],ve=Z-ve|0,Z=(r[d>>2]<<13)+131072|0,an=Ce(ve,793)+Z|0,mt=(lt+Ce(ae,11249)|0)+an|0,F[a|0]=te[h+(Le+mt>>>18&1023)|0],F[a+12|0]=te[h+(mt-Le>>>18&1023)|0],Le=Ce(b+We|0,-9534),mt=D+Ce(b,6859)|0,D=Ce(b+q|0,-2773),mt=Le+(mt+D|0)|0,ur=Z+Ce(ve,3989)|0,Zt=Ce(on,2592),wn=ur+(Ce(ae,8672)-Zt|0)|0,F[a+1|0]=te[h+(mt+wn>>>18&1023)|0],F[a+11|0]=te[h+(wn-mt>>>18&1023)|0],fe=fe+(D+Ce(q,-12879)|0)|0,D=Ce(q+We|0,-5384),fe=fe+D|0,lt=an+(Ce(ae,4108)-lt|0)|0,F[a+2|0]=te[h+(fe+lt>>>18&1023)|0],F[a+10|0]=te[h+(lt-fe>>>18&1023)|0],D=D+(Ht+(Le+Ce(We,18068)|0)|0)|0,fe=Z+Ce(ve,-7678)|0,on=Ce(on,3570),Ht=fe+(Ce(ae,-1396)-on|0)|0,F[a+3|0]=te[h+(D+Ht>>>18&1023)|0],F[a+9|0]=te[h+(Ht-D>>>18&1023)|0],D=Ce(B,2611),B=Ce(Mt,2773)+Ce(q-b|0,7682)|0,b=(D+B|0)+Ce(b,-3818)|0,D=fe+(on+Ce(ae,-6581)|0)|0,F[a+4|0]=te[h+(b+D>>>18&1023)|0],F[a+8|0]=te[h+(D-b>>>18&1023)|0],b=(B+Ce(q,3150)|0)+Ce(We,-14273)|0,q=ur+(Zt+Ce(ae,-10258)|0)|0,F[a+5|0]=te[h+(b+q>>>18&1023)|0],F[a+7|0]=te[h+(q-b>>>18&1023)|0],F[a+6|0]=te[h+(Z+Ce(ve-ae|0,11585)>>>18&1023)|0],d=d+32|0,Se=Se+1|0,(Se|0)!=13;);hn=Er+416|0}function ya(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if(C=r[h+444>>2],r[h+276>>2]){if(p=r[C+56>>2],!p){if(Ie[r[r[h+440>>2]+8>>2]](h)|0||(p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)),r[h+328>>2]>0)for(p=0;;){D=p<<2,b=r[(D+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(a=r[((r[b+20>>2]<<2)+C|0)+60>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,a=C+D|0,r[a+40>>2]=0,r[a+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}k(r[((r[b+24>>2]<<2)+C|0)+124>>2],0,256)}if(p=p+1|0,!((p|0)>2]))break}r[C+20>>2]=-16,r[C+12>>2]=0,r[C+16>>2]=0,p=r[h+276>>2]}r[C+56>>2]=p-1}e:{t:{if(r[C+20>>2]==-1||(p=r[h+400>>2],(p|0)>r[h+404>>2]))break t;for(B=r[d>>2],q=C+188|0,d=r[r[h+332>>2]+24>>2],Z=d+h|0,D=(d<<2)+C|0;;){if(a=p,p=(r[D+124>>2]+Ce(a,3)|0)-3|0,Jr(h,p))break t;for(;;){if(!Jr(h,p+1|0)){if(p=p+3|0,d=r[h+404>>2]>(a|0),a=a+1|0,d)continue;break e}break}ae=Jr(h,q),d=p+2|0;n:{if(!Jr(h,d)){d=0;break n}if(!Jr(h,d)){d=1;break n}d=r[D+124>>2]+(te[Z+260|0]<(a|0)?217:189)|0;r:{if(!Jr(h,d)){p=2;break r}if(d=d+1|0,!Jr(h,d)){p=4;break r}if(d=d+1|0,!Jr(h,d)){p=8;break r}if(d=d+1|0,!Jr(h,d)){p=16;break r}if(d=d+1|0,!Jr(h,d)){p=32;break r}if(d=d+1|0,!Jr(h,d)){p=64;break r}if(d=d+1|0,!Jr(h,d)){p=128;break r}if(d=d+1|0,!Jr(h,d)){p=256;break r}if(d=d+1|0,!Jr(h,d)){p=512;break r}if(d=d+1|0,!Jr(h,d)){p=1024;break r}if(d=d+1|0,!Jr(h,d)){p=2048;break r}if(d=d+1|0,!Jr(h,d)){p=4096;break r}if(d=d+1|0,!Jr(h,d)){p=8192;break r}if(p=16384,d=d+1|0,Jr(h,d))break e}for(fe=d+14|0,d=p;b=p>>>1|0,d=(Jr(h,fe)?b:0)|d,ve=p>>>0>3,p=b,!!ve;);}if(He[(r[(a<<2)+9424>>2]<<1)+B>>1]=(ae?d^-1:d+1|0)<>2],p=a+1|0,!(r[h+404>>2]>(a|0)))break}}return 1}return d=r[h>>2],r[d+20>>2]=126,Ie[r[d+4>>2]](h,-1),r[C+20>>2]=-1,1}function l0(h,d,a){var p=0,C=0,D=0,b=0,B=0;p=r[h+364>>2],b=te[d|0],B=r[((b&127)<<2)+10560>>2],D=B>>16,C=r[p+16>>2]-D|0,r[p+16>>2]=C;e:{t:{if((b>>>7|0)!=(a|0)){(C|0)>=(D|0)&&(r[p+16>>2]=D,r[p+12>>2]=C+r[p+12>>2]),a=b&128^B&255;break t}if((C|0)>32767)break e;(C|0)<(D|0)&&(r[p+16>>2]=D,r[p+12>>2]=C+r[p+12>>2]),a=b&128^B>>>8}for(F[d|0]=a,d=r[p+28>>2],C=r[p+12>>2],a=r[p+16>>2];;){if(d=d-1|0,r[p+28>>2]=d,C=C<<1,r[p+12>>2]=C,a=a<<1,r[p+16>>2]=a,!d){D=C>>19;t:{if((C|0)>=134217728){a=r[p+32>>2];n:{if((a|0)<0)break n;if(r[p+24>>2]){for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;r:{if(a||Ie[r[d+12>>2]](h)|0)break r;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}a=r[p+32>>2]}d=r[h+24>>2],C=r[d>>2],r[d>>2]=C+1,F[C|0]=a+1,a=r[d+4>>2]-1|0,r[d+4>>2]=a;r:{if(a||Ie[r[d+12>>2]](h)|0)break r;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[p+32>>2]!=254||(d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a,a)||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}r[p+32>>2]=D&255,d=r[p+20>>2],r[p+20>>2]=0,r[p+24>>2]=d+r[p+24>>2];break t}if((D|0)==255){r[p+20>>2]=r[p+20>>2]+1;break t}d=r[p+32>>2];n:{if(!d){r[p+24>>2]=r[p+24>>2]+1;break n}if((d|0)<0)break n;if(r[p+24>>2]){for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;r:{if(a||Ie[r[d+12>>2]](h)|0)break r;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}d=r[p+32>>2]}if(a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=d,d=r[a+4>>2]-1|0,r[a+4>>2]=d,d||Ie[r[a+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[p+20>>2]){if(r[p+24>>2])for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;n:{if(a||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+24>>2]-1|0,r[p+24>>2]=d,!d)break}for(;;){d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;n:{if(a||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=0,a=r[d+4>>2]-1|0,r[d+4>>2]=a;n:{if(a||Ie[r[d+12>>2]](h)|0)break n;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(d=r[p+20>>2]-1|0,r[p+20>>2]=d,!d)break}}r[p+32>>2]=D&255}C=r[p+12>>2]&524287,r[p+12>>2]=C,d=r[p+28>>2]+8|0,r[p+28>>2]=d,a=r[p+16>>2]}if(!((a|0)<32768))break}}}function Tf(h,d){var a=0,p=0,C=0,D=0,b=0;a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=255,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=d,d=r[a+4>>2]-1|0,r[a+4>>2]=d;e:{if(d||Ie[r[a+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+60>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,p=Ce(p,3)+8|0,F[a|0]=p>>>8,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}r[h+28>>2]<65536&r[h+32>>2]<=65535||(d=r[h>>2],r[d+20>>2]=41,r[d+24>>2]=65535,Ie[r[r[h>>2]>>2]](h)),p=r[h+56>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}a=r[h+32>>2],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a>>>8,p=r[d+4>>2]-1|0,r[d+4>>2]=p;e:{if(p||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}a=r[h+28>>2],d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a>>>8,p=r[d+4>>2]-1|0,r[d+4>>2]=p;e:{if(p||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,F[p|0]=a,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}p=r[h+60>>2],d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[h+60>>2]>0)for(d=r[h+68>>2],p=0;;){D=r[d>>2],a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=D,C=r[a+4>>2]-1|0,r[a+4>>2]=C;e:{if(C||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}D=r[d+12>>2],b=r[d+8>>2],a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=D+(b<<4),C=r[a+4>>2]-1|0,r[a+4>>2]=C;e:{if(C||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}D=r[d+16>>2],a=r[h+24>>2],C=r[a>>2],r[a>>2]=C+1,F[C|0]=D,C=r[a+4>>2]-1|0,r[a+4>>2]=C;e:{if(C||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(d=d+84|0,p=p+1|0,!((p|0)>2]))break}}function Wh(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;a=hn-16|0,hn=a,b=r[h+24>>2],C=r[b+4>>2];e:{if(!C){if(!(Ie[r[b+12>>2]](h)|0)){C=0;break e}C=r[b+4>>2]}if(d=r[b>>2],D=te[d|0],C=C-1|0,C)d=d+1|0;else{if(!(Ie[r[b+12>>2]](h)|0)){C=0;break e}C=r[b+4>>2],d=r[b>>2]}if(ae=d+1|0,C=C-1|0,d=te[d|0]|D<<8,D=d-2|0,d=d>>>0>15?14:d>>>0>=D>>>0?D:0,d)for(;;){if(!C){if(!(Ie[r[b+12>>2]](h)|0)){C=0;break e}ae=r[b>>2],C=r[b+4>>2]}if(F[(a+2|0)+p|0]=te[ae|0],ae=ae+1|0,C=C-1|0,p=p+1|0,(d|0)==(p|0))break}ve=D-d|0;t:{n:{r:{if(p=r[h+416>>2],B=p-224|0,B){if((B|0)==14)break r;break n}D=d+ve|0;i:{a:{s:{o:{if(d>>>0>=14){if(te[a+2|0]!=74)break s;if(te[a+3|0]!=70|te[a+4|0]!=73|(te[a+6|0]|te[a+5|0]!=70))break o;if(r[h+280>>2]=1,d=te[a+7|0],F[h+284|0]=d,p=te[a+8|0],F[h+285|0]=p,B=te[a+9|0],F[h+286|0]=B,q=te[a+10|0]|te[a+11|0]<<8,q=q<<8|q>>>8,He[h+288>>1]=q,Z=te[a+12|0]|te[a+13|0]<<8,Z=Z<<8|Z>>>8,He[h+290>>1]=Z,fe=1,(d|0)!=1&&(p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=119,r[r[h>>2]+28>>2]=te[h+285|0],Ie[r[r[h>>2]+4>>2]](h,-1),fe=te[h+284|0],B=te[h+286|0],Z=En[h+290>>1],q=En[h+288>>1],p=te[h+285|0]),d=r[h>>2],r[d+24>>2]=fe,r[d+20>>2]=87,r[d+40>>2]=B,r[d+36>>2]=Z&65535,r[d+32>>2]=q&65535,r[d+28>>2]=p,Ie[r[d+4>>2]](h,1),D=D-14|0,p=te[a+14|0],d=te[a+15|0],p|d&&(d=r[h>>2],r[d+20>>2]=90,r[d+24>>2]=te[a+14|0],r[r[h>>2]+28>>2]=te[a+15|0],Ie[r[r[h>>2]+4>>2]](h,1),p=te[a+14|0],d=te[a+15|0]),(Ce(Ce(d,p),3)|0)==(D|0))break i;d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=88;break a}if(te[a+2|0]!=74|d>>>0<6)break s}if(te[a+3|0]!=70|te[a+4|0]!=88|(te[a+6|0]|te[a+5|0]!=88))break s;o:switch(te[a+7|0]-16|0){case 0:d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=108;break a;case 1:d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=109;break a;case 3:d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=110;break a;default:break o}d=r[h>>2],r[d+20>>2]=89,r[d+24>>2]=te[a+7|0],r[r[h>>2]+28>>2]=D;break a}d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=77}Ie[r[r[h>>2]+4>>2]](h,1)}break t}r:{if(te[a+2|0]!=65|d>>>0<12|(te[a+3|0]!=100|te[a+4|0]!=111)||te[a+5|0]!=98|te[a+6|0]!=101)break r;D=te[a+8|0],B=te[a+7|0],q=te[a+10|0],Z=te[a+9|0],fe=te[a+12|0],Se=te[a+11|0],p=te[a+13|0],d=r[h>>2],r[d+20>>2]=76,r[d+36>>2]=p,r[d+32>>2]=fe|Se<<8,r[d+28>>2]=q|Z<<8,r[d+24>>2]=D|B<<8,Ie[r[d+4>>2]](h,1),F[h+296|0]=p,r[h+292>>2]=1;break t}d=r[h>>2],r[d+24>>2]=D,r[d+20>>2]=78,Ie[r[r[h>>2]+4>>2]](h,1);break t}d=r[h>>2],r[d+24>>2]=p,r[d+20>>2]=68,Ie[r[r[h>>2]>>2]](h)}if(r[b+4>>2]=C,r[b>>2]=ae,C=1,(ve|0)<=0)break e;Ie[r[r[h+24>>2]+16>>2]](h,ve)}return hn=a+16|0,C|0}function $h(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;if(r[h+60>>2]>0)for(fe=r[h+360>>2],ve=r[h+68>>2];;){d=r[ve+16>>2];e:{if(d>>>0<=3&&(B=r[((d<<2)+h|0)+72>>2],B))break e;a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=52,Ie[r[r[h>>2]>>2]](h),B=r[((d<<2)+h|0)+72>>2]}e:{t:switch(r[h+196>>2]){case 0:for(d=(d<<2)+fe|0,q=r[d+20>>2],q||(q=Ie[r[r[h+4>>2]>>2]](h,1,512)|0,r[d+20>>2]=q),p=0;;){a=0,b=p<<1,C=En[b+B>>1],d=C<<3,Z=d&65528,Z&&(a=(d&65535)>>>0<256,D=a?8:16,a=a?C<<11:d,C=(a&65535)>>>0<4096,D=C?D-4|0:D,a=C?a<<4:a,C=(a&65535)>>>0<16384,a=(C?D-2|0:D)+((C?a<<2:a)<<16>>16>>15^-1)|0),C=b+q|0,b=(d&65535)>>>1|0,D=32768<>>0)/(Z>>>0)|0,D=D-Ce(d,Z)|0;n:{if(!D){a=a+14|0,d=d>>>1|0;break n}if(a=a+15|0,D>>>0<=Z>>>1>>>0){b=b|1;break n}d=d+1|0}if(He[C+128>>1]=b,He[C>>1]=d,He[C+384>>1]=a-16,He[C+256>>1]=1<<32-a,r[fe+16>>2]!=110|a>>>0>16||(r[fe+16>>2]=111),p=p+1|0,(p|0)==64)break}break e;case 1:for(d=(d<<2)+fe|0,q=r[d+20>>2],q||(q=Ie[r[r[h+4>>2]>>2]](h,1,512)|0,r[d+20>>2]=q),C=0;;){d=C<<1,a=d+q|0;n:{r:{i:{a:{s:switch(p=Ce(He[d+10368>>1],En[d+B>>1])+1024>>>11|0,Z=p&65535,d=Z,d|0){case 0:break i;case 1:break s;default:break a}He[a+384>>1]=65520,He[a+256>>1]=1,He[a+128>>1]=0,He[a>>1]=1;break r}d=(p&65535)>>>0<256,b=d?8:16,Le=b-4|0,D=b,d=d?p<<8:p,b=(d&65535)>>>0<4096,D=b?Le:D,d=b?d<<4:d,b=(d&65535)>>>0<16384,d=(b?D-2|0:D)+((b?d<<2:d)<<16>>16>>15^-1)|0}b=(p&65534)>>>1|0,D=32768<>>0)/(Z>>>0)|0,D=D-Ce(p,Z)|0;i:{if(!D){d=d+14|0,p=p>>>1|0;break i}if(d=d+15|0,D>>>0<=Z>>>1>>>0){b=b+1|0;break i}p=p+1|0}if(He[a+128>>1]=b,He[a>>1]=p,He[a+384>>1]=d-16,He[a+256>>1]=1<<32-d,d>>>0>16)break n}if(r[fe+16>>2]!=110)break n;r[fe+16>>2]=111}if(C=C+1|0,(C|0)==64)break}break e;case 2:for(d=(d<<2)+fe|0,a=r[d+52>>2],a||(a=Ie[r[r[h+4>>2]>>2]](h,1,256)|0,r[d+52>>2]=a),C=0,d=0;ae=In[(C<<3)+10496>>3],or[(d<<2)+a>>2]=1/(ae*+En[(d<<1)+B>>1]*8),p=d|1,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*1.387039845*8),p=d|2,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*1.306562965*8),p=d|3,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*1.175875602*8),p=d|4,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*8),p=d|5,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*.785694958*8),p=d|6,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*.5411961*8),p=d|7,or[(p<<2)+a>>2]=1/(ae*+En[(p<<1)+B>>1]*.275899379*8),d=d+8|0,C=C+1|0,(C|0)!=8;);break e;default:break t}d=r[h>>2],r[d+20>>2]=48,Ie[r[d>>2]](h)}if(ve=ve+84|0,Se=Se+1|0,!((Se|0)>2]))break}}function S4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0;for(ur=hn-448|0,hn=ur,Ht=r[h+324>>2],d=r[d+80>>2],h=ur;Z=He[d+96>>1],Se=He[a+96>>1],q=He[d+32>>1],ae=He[a+32>>1],Le=Ce(He[a>>1],He[d>>1])<<13|1024,We=Ce(He[d+64>>1],He[a+64>>1]),fe=Le+Ce(We,-11586)>>11,B=Ce(He[d+112>>1],He[a+112>>1]),ve=Ce(He[d+16>>1],He[a+16>>1]),D=Ce(He[d+48>>1],He[a+48>>1]),on=ve-D|0,b=Ce(He[d+80>>1],He[a+80>>1]),lt=B+(on-b|0)<<2,r[h+320>>2]=fe-lt,r[h+96>>2]=fe+lt,Se=Ce(Z,Se),q=Ce(q,ae),ae=Ce(Se+q|0,9058),fe=ae+Ce(Se,-14084)|0,lt=Le+Ce(We,2578)|0,mt=fe+lt|0,Z=B<<13,B=Ce(D+b|0,-1297)-Z|0,Zt=Ce(D+ve|0,10935),an=B+(Zt+Ce(D,-3474)|0)|0,r[h+384>>2]=mt-an>>11,r[h+32>>2]=mt+an>>11,Se=Ce(Se,-11295)+Ce(q,5027)|0,mt=Le+Ce(We,-7223)|0,an=Se+mt|0,Mt=B,B=b+ve|0,wn=Ce(B,9810),Mt=Mt+(wn+Ce(b,-19447)|0)|0,r[h+352>>2]=an-Mt>>11,r[h+64>>2]=an+Mt>>11,fe=lt-fe|0,on=Ce(on,3826)-Z|0,Mt=Ce(D,5529),D=Ce(b-D|0,11512),lt=on+(Mt+D|0)|0,r[h+256>>2]=fe-lt>>11,r[h+160>>2]=fe+lt>>11,We=Le+Ce(We,10438)|0,Le=ae+Ce(q,2237)|0,q=We-Le|0,ae=Ce(B,6164),fe=on+(ae+Ce(ve,-8693)|0)|0,r[h+224>>2]=q-fe>>11,r[h+192>>2]=q+fe>>11,We=We+Le|0,ve=Z+(wn+(Zt+Ce(ve,-9232)|0)|0)|0,r[h+416>>2]=We-ve>>11,r[h>>2]=ve+We>>11,ve=mt-Se|0,D=Z+(ae+(D+Ce(b,-13850)|0)|0)|0,r[h+288>>2]=ve-D>>11,r[h+128>>2]=D+ve>>11,h=h+4|0,d=d+2|0,a=a+2|0,Er=Er+1|0,(Er|0)!=8;);for(h=Ht+128|0,d=ur,We=0;D=r[d+12>>2],ve=r[d+4>>2],q=Ce(D+ve|0,10935),ae=r[d+24>>2],Ht=r[d+8>>2],fe=Ce(ae+Ht|0,9058),a=r[(We<<2)+p>>2]+C|0,lt=r[d+28>>2],Le=lt<<13,b=r[d+20>>2],on=b+ve|0,B=Ce(on,9810),mt=Le+(B+(q+Ce(ve,-9232)|0)|0)|0,Zt=fe+Ce(Ht,2237)|0,Se=(r[d>>2]<<13)+131072|0,Z=r[d+16>>2],an=Se+Ce(Z,10438)|0,wn=Zt+an|0,F[a|0]=te[h+(mt+wn>>>18&1023)|0],F[a+13|0]=te[h+(wn-mt>>>18&1023)|0],Mt=q+Ce(D,-3474)|0,q=Ce(D+b|0,-1297)-Le|0,mt=Mt+q|0,fe=fe+Ce(ae,-14084)|0,wn=Se+Ce(Z,2578)|0,Mt=fe+wn|0,F[a+1|0]=te[h+(mt+Mt>>>18&1023)|0],F[a+12|0]=te[h+(Mt-mt>>>18&1023)|0],q=q+(B+Ce(b,-19447)|0)|0,ae=Ce(ae,-11295)+Ce(Ht,5027)|0,Ht=Se+Ce(Z,-7223)|0,B=ae+Ht|0,F[a+2|0]=te[h+(q+B>>>18&1023)|0],F[a+11|0]=te[h+(B-q>>>18&1023)|0],q=ve-D|0,B=lt+(q-b|0)<<13,Z=Se+Ce(Z,-11586)|0,F[a+3|0]=te[h+(B+Z>>>18&1023)|0],F[a+10|0]=te[h+(Z-B>>>18&1023)|0],Z=Ce(on,6164),B=Le+Ce(b,-13850)|0,b=Ce(b-D|0,11512),Se=Z+(B+b|0)|0,ae=Ht-ae|0,F[a+4|0]=te[h+(Se+ae>>>18&1023)|0],F[a+9|0]=te[h+(ae-Se>>>18&1023)|0],B=b+Ce(D,5529)|0,D=Ce(q,3826)-Le|0,b=B+D|0,Le=wn-fe|0,F[a+5|0]=te[h+(b+Le>>>18&1023)|0],F[a+8|0]=te[h+(Le-b>>>18&1023)|0],D=D+(Z+Ce(ve,-8693)|0)|0,b=an-Zt|0,F[a+6|0]=te[h+(D+b>>>18&1023)|0],F[a+7|0]=te[h+(b-D>>>18&1023)|0],d=d+32|0,We=We+1|0,(We|0)!=14;);hn=ur+448|0}function ba(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0;for(an=hn-256|0,hn=an,lt=r[h+324>>2],d=r[d+80>>2],h=an,Le=8;;){e:{t:{if(D=En[a+32>>1],b=He[a+16>>1],(D|b)&65535||(D=0,En[a+48>>1]|En[a+64>>1]|(En[a+80>>1]|En[a+96>>1]))||En[a+112>>1])break t;D=Ce(He[a>>1],He[d>>1])<<2,r[h+192>>2]=D,r[h+160>>2]=D,r[h+128>>2]=D,r[h+96>>2]=D,r[h+64>>2]=D,r[h+32>>2]=D,r[h>>2]=D,B=56;break e}q=Ce(He[d+96>>1],He[a+96>>1]),Z=Ce(He[d+32>>1],D<<16>>16),D=Ce(q+Z|0,4433),b=Ce(b,He[d+16>>1]),mt=Ce(He[d+112>>1],He[a+112>>1]),Ht=Ce(b+mt|0,-7373),ve=Ce(He[d+80>>1],He[a+80>>1]),ae=ve+b|0,Se=Ce(He[d+48>>1],He[a+48>>1]),We=Se+mt|0,fe=Ce(ae+We|0,9633),B=Ce(He[d+64>>1],He[a+64>>1]),Mt=Ce(He[d>>1],He[a>>1]),on=B+Mt<<13,Z=D+Ce(Z,6270)|0,wn=(on+Z|0)+1024|0,Zt=Ht+Ce(b,12299)|0,b=fe+Ce(ae,-3196)|0,ae=Zt+b|0,r[h+224>>2]=wn-ae>>11,r[h>>2]=ae+wn>>11,ae=Mt-B<<13,D=D+Ce(q,-15137)|0,q=(ae+D|0)+1024|0,fe=fe+Ce(We,-16069)|0,B=Ce(Se,25172),Se=Ce(ve+Se|0,-20995),We=fe+(B+Se|0)|0,r[h+192>>2]=q-We>>11,r[h+32>>2]=q+We>>11,D=(ae-D|0)+1024|0,b=b+(Se+Ce(ve,16819)|0)|0,r[h+160>>2]=D-b>>11,r[h+64>>2]=D+b>>11,D=(on-Z|0)+1024|0,b=fe+(Ht+Ce(mt,2446)|0)|0,r[h+96>>2]=D+b>>11,D=D-b>>11,B=32}if(r[(B<<2)+h>>2]=D,a=a+2|0,d=d+2|0,h=h+4|0,D=Le>>>0>1,Le=Le-1|0,!D)break}for(d=lt+128|0,a=an,Le=0;;){h=r[(Le<<2)+p>>2]+C|0;e:{t:{if(D=r[a+8>>2],b=r[a+4>>2],D|b||(D=0,r[a+12>>2]|r[a+16>>2]|(r[a+20>>2]|r[a+24>>2]))||r[a+28>>2])break t;D=m0(te[d+(r[a>>2]+16>>>5&1023)|0],0,16843009,16843009),F[h|0]=D,F[h+1|0]=D>>>8,F[h+2|0]=D>>>16,F[h+3|0]=D>>>24,D=Pi,F[h+4|0]=D,F[h+5|0]=D>>>8,F[h+6|0]=D>>>16,F[h+7|0]=D>>>24;break e}mt=r[a+28>>2],Ht=Ce(mt+b|0,-7373),ve=r[a+12>>2],lt=ve+mt|0,Se=r[a+20>>2],q=Se+b|0,fe=Ce(lt+q|0,9633),Z=r[a+16>>2],ae=r[a>>2],We=Z+ae<<13,Mt=Ce(D,6270),B=D,D=r[a+24>>2],B=Ce(B+D|0,4433),Mt=Mt+B|0,on=(We+Mt|0)+131072|0,wn=Ht+Ce(b,12299)|0,b=fe+Ce(q,-3196)|0,q=wn+b|0,F[h|0]=te[d+(on+q>>>18&1023)|0],F[h+7|0]=te[d+(on-q>>>18&1023)|0],q=ae-Z<<13,D=B+Ce(D,-15137)|0,Z=(q+D|0)+131072|0,fe=fe+Ce(lt,-16069)|0,B=Ce(ve,25172),ve=Ce(ve+Se|0,-20995),lt=fe+(B+ve|0)|0,F[h+1|0]=te[d+(Z+lt>>>18&1023)|0],F[h+6|0]=te[d+(Z-lt>>>18&1023)|0],D=(q-D|0)+131072|0,b=b+(ve+Ce(Se,16819)|0)|0,F[h+2|0]=te[d+(D+b>>>18&1023)|0],F[h+5|0]=te[d+(D-b>>>18&1023)|0],D=(We-Mt|0)+131072|0,b=fe+(Ht+Ce(mt,2446)|0)|0,F[h+3|0]=te[d+(D+b>>>18&1023)|0],F[h+4|0]=te[d+(D-b>>>18&1023)|0]}if(a=a+32|0,Le=Le+1|0,(Le|0)==8)break}hn=an+256|0}function T4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;D=r[d+80>>2];e:{t:{if(B=En[a+48>>1],d=He[a+16>>1],(B|d)&65535||(B=0,En[a+80>>1]|En[a+112>>1]))break t;ve=Ce(He[a>>1],En[D>>1])<<2,d=ve;break e}Z=Ce(He[a>>1],He[D>>1])<<15|4096,d=((Ce(Ce(He[a+80>>1],He[D+80>>1]),6967)+Ce(Ce(He[a+112>>1],He[D+112>>1]),-5906)|0)+Ce(Ce(He[D+48>>1],B<<16>>16),-10426)|0)+Ce(Ce(d,He[D+16>>1]),29692)|0,ve=Z-d>>13,d=d+Z>>13}e:{t:{B=En[a+50>>1],Z=He[a+18>>1];n:{if((B|Z)&65535||(B=0,En[a+82>>1]))break n;if(!En[a+114>>1])break t}ae=Ce(He[a+2>>1],He[D+2>>1])<<15|4096,Z=((Ce(Ce(He[a+82>>1],He[D+82>>1]),6967)+Ce(Ce(He[a+114>>1],He[D+114>>1]),-5906)|0)+Ce(Ce(He[D+50>>1],B<<16>>16),-10426)|0)+Ce(Ce(Z,He[D+18>>1]),29692)|0,B=ae-Z>>13,b=Z+ae>>13;break e}B=Ce(He[a+2>>1],He[D+2>>1])<<2,b=B}Z=b;e:{t:{fe=En[a+54>>1],ae=He[a+22>>1];n:{if((fe|ae)&65535||(fe=0,En[a+86>>1]))break n;if(!En[a+118>>1])break t}b=Ce(He[a+6>>1],He[D+6>>1])<<15|4096,ae=((Ce(Ce(He[a+86>>1],He[D+86>>1]),6967)+Ce(Ce(He[a+118>>1],He[D+118>>1]),-5906)|0)+Ce(Ce(He[D+54>>1],fe<<16>>16),-10426)|0)+Ce(Ce(ae,He[D+22>>1]),29692)|0,fe=b-ae>>13,b=ae+b>>13;break e}fe=Ce(He[a+6>>1],He[D+6>>1])<<2,b=fe}ae=b;e:{t:{q=En[a+58>>1],b=He[a+26>>1];n:{if((q|b)&65535||(q=0,En[a+90>>1]))break n;if(!En[a+122>>1])break t}Se=Ce(He[a+10>>1],He[D+10>>1])<<15|4096,b=((Ce(Ce(He[a+90>>1],He[D+90>>1]),6967)+Ce(Ce(He[a+122>>1],He[D+122>>1]),-5906)|0)+Ce(Ce(He[D+58>>1],q<<16>>16),-10426)|0)+Ce(Ce(b,He[D+26>>1]),29692)|0,Le=Se-b>>13,b=b+Se>>13;break e}Le=Ce(He[a+10>>1],He[D+10>>1])<<2,b=Le}Se=r[h+324>>2];e:{t:{q=En[a+62>>1],h=He[a+30>>1];n:{if((q|h)&65535||(q=0,En[a+94>>1]))break n;if(!En[a+126>>1])break t}We=Ce(He[a+14>>1],He[D+14>>1])<<15|4096,h=((Ce(Ce(He[a+94>>1],He[D+94>>1]),6967)+Ce(Ce(He[a+126>>1],He[D+126>>1]),-5906)|0)+Ce(Ce(He[D+62>>1],q<<16>>16),-10426)|0)+Ce(Ce(h,He[D+30>>1]),29692)|0,q=We-h>>13,h=h+We>>13;break e}q=Ce(He[a+14>>1],He[D+14>>1])<<2,h=q}a=Se+128|0,D=r[p>>2]+C|0;e:{if(!(Z|ae|(h|b))){h=te[a+(d+16>>>5&1023)|0],F[D|0]=h;break e}d=(d<<15)+524288|0,h=((Ce(h,-5906)+Ce(Z,29692)|0)+Ce(b,6967)|0)+Ce(ae,-10426)|0,F[D|0]=te[a+(d+h>>>20&1023)|0],h=te[a+(d-h>>>20&1023)|0]}F[D+1|0]=h,h=r[p+4>>2]+C|0;e:{if(!(Le|(B|fe))&&!q)break e;d=(ve<<15)+524288|0,p=((Ce(q,-5906)+Ce(B,29692)|0)+Ce(Le,6967)|0)+Ce(fe,-10426)|0,F[h|0]=te[a+(d+p>>>20&1023)|0],F[h+1|0]=te[a+(d-p>>>20&1023)|0];return}d=te[a+(ve+16>>>5&1023)|0],F[h|0]=d,F[h+1|0]=d}function Bu(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0;for(Zt=hn-352|0,hn=Zt,an=r[h+324>>2],d=r[d+80>>2],h=Zt;lt=He[d+112>>1],mt=He[a+112>>1],b=He[d+48>>1],Z=He[a+48>>1],Se=He[d+80>>1],Le=He[a+80>>1],ae=He[d+16>>1],Mt=He[a+16>>1],D=Ce(He[a>>1],He[d>>1])<<13|1024,fe=Ce(He[d+96>>1],He[a+96>>1]),ve=Ce(He[d+32>>1],He[a+32>>1]),We=fe+ve|0,B=Ce(He[d+64>>1],He[a+64>>1]),Ht=We-B|0,r[h+160>>2]=D+Ce(Ht,-11585)>>11,b=Ce(b,Z),ae=Ce(ae,Mt),q=b+ae|0,Mt=Ce(q,7274),Z=Ce(Se,Le),Se=Ce(Z+ae|0,5492),lt=Ce(lt,mt),mt=Ce(lt+(Z+q|0)|0,3264),Le=D+Ce(Ht,11116)|0,Ht=Le+Ce(B-fe|0,20862)|0,D=Ht+Ce(fe,17333)|0,q=Se+(Mt+Ce(ae,-7562)|0)|0,ae=mt+Ce(ae+lt|0,3e3)|0,q=q+ae|0,r[h+320>>2]=D-q>>11,r[h>>2]=D+q>>11,D=Ce(fe,-6461),fe=Le+Ce(We,-9467)|0,We=D+fe|0,D=Se+Ce(Z,-9766)|0,Se=mt+Ce(b+Z|0,-9527)|0,D=D+Se|0,r[h+256>>2]=We-D>>11,r[h+64>>2]=We+D>>11,D=Le,Le=Ce(B-ve|0,3529),We=(D+Le|0)+Ce(ve,-12399)|0,D=ae,ae=Ce(b+lt|0,-14731),D=D+(ae+Ce(lt,17223)|0)|0,r[h+224>>2]=We-D>>11,r[h+96>>2]=We+D>>11,fe=fe+(Ce(B,15929)+Ce(ve,-11395)|0)|0,Z=mt+((Ce(Z,8203)+Ce(b,-12019)|0)+Ce(lt,-13802)|0)|0,r[h+192>>2]=fe-Z>>11,r[h+128>>2]=Z+fe>>11,B=Le+(Ht+Ce(B,-14924)|0)|0,b=Se+(ae+(Mt+Ce(b,16984)|0)|0)|0,r[h+288>>2]=B-b>>11,r[h+32>>2]=b+B>>11,h=h+4|0,d=d+2|0,a=a+2|0,on=on+1|0,(on|0)!=8;);for(h=an+128|0,d=Zt,fe=0;B=r[d+12>>2],ve=r[d+4>>2],a=B+ve|0,Le=Ce(a,7274),b=r[d+20>>2],an=Ce(b+ve|0,5492),Z=r[d+28>>2],ae=Ce(Z+(a+b|0)|0,3264),D=(r[d>>2]<<13)+131072|0,mt=r[d+24>>2],Mt=r[d+8>>2],We=mt+Mt|0,lt=r[d+16>>2],Ht=We-lt|0,Se=D+Ce(Ht,11116)|0,a=r[(fe<<2)+p>>2]+C|0,q=an+(Le+Ce(ve,-7562)|0)|0,ve=ae+Ce(Z+ve|0,3e3)|0,q=q+ve|0,on=Se+Ce(lt-mt|0,20862)|0,wn=on+Ce(mt,17333)|0,F[a|0]=te[h+(q+wn>>>18&1023)|0],F[a+10|0]=te[h+(wn-q>>>18&1023)|0],q=ae+Ce(b+B|0,-9527)|0,wn=Le+Ce(B,16984)|0,Le=Ce(Z+B|0,-14731),wn=q+(wn+Le|0)|0,ur=Ce(lt-Mt|0,3529),on=ur+(on+Ce(lt,-14924)|0)|0,F[a+1|0]=te[h+(wn+on>>>18&1023)|0],F[a+9|0]=te[h+(on-wn>>>18&1023)|0],an=q+(an+Ce(b,-9766)|0)|0,q=Ce(mt,-6461),mt=Se+Ce(We,-9467)|0,We=q+mt|0,F[a+2|0]=te[h+(an+We>>>18&1023)|0],F[a+8|0]=te[h+(We-an>>>18&1023)|0],ve=ve+(Le+Ce(Z,17223)|0)|0,Se=(Se+ur|0)+Ce(Mt,-12399)|0,F[a+3|0]=te[h+(ve+Se>>>18&1023)|0],F[a+7|0]=te[h+(Se-ve>>>18&1023)|0],B=ae+((Ce(b,8203)+Ce(B,-12019)|0)+Ce(Z,-13802)|0)|0,b=mt+(Ce(lt,15929)+Ce(Mt,-11395)|0)|0,F[a+4|0]=te[h+(B+b>>>18&1023)|0],F[a+6|0]=te[h+(b-B>>>18&1023)|0],F[a+5|0]=te[h+(D+Ce(Ht,268423871)>>>18&1023)|0],d=d+32|0,fe=fe+1|0,(fe|0)!=11;);hn=Zt+352|0}function js(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0;for(on=hn-256|0,hn=on,Se=r[h+324>>2],d=r[d+80>>2],h=on,D=8;;){e:{t:{if(b=En[a+32>>1],B=En[a+16>>1],b|B||(b=0,En[a+48>>1]|En[a+64>>1]|(En[a+80>>1]|En[a+96>>1]))||En[a+112>>1])break t;b=Ce(He[d>>1],He[a>>1]),r[h+192>>2]=b,r[h+160>>2]=b,r[h+128>>2]=b,r[h+96>>2]=b,r[h+64>>2]=b,r[h+32>>2]=b,r[h>>2]=b,B=56;break e}ve=Ce(En[d+96>>1],En[a+96>>1]),q=Ce(En[d+32>>1],b),b=ve+q|0,Z=Ce(En[d+64>>1],En[a+64>>1]),ae=Ce(En[d>>1],En[a>>1]),Le=Z+ae|0,We=b+Le<<16>>16,fe=Ce(En[d+112>>1],En[a+112>>1]),B=Ce(B,En[d+16>>1]),lt=fe+B|0,mt=Ce(En[d+80>>1],En[a+80>>1]),Mt=Ce(En[d+48>>1],En[a+48>>1]),Ht=mt+Mt|0,an=lt+Ht|0,wn=an<<16>>16,r[h+224>>2]=We-wn,r[h>>2]=We+wn,We=B-fe<<16>>16,fe=mt-Mt<<16>>16,B=Ce(We+fe|0,121088)&-65536,ve=(Ce((q<<16>>16)-(ve<<16>>16)|0,92672)>>>16|0)-b|0,q=ae-Z|0,Z=ve+q<<16>>16,ae=(B+Ce(fe,-171264)>>>16|0)-an|0,fe=ae<<16>>16,r[h+192>>2]=Z-fe,r[h+32>>2]=Z+fe,ve=q-ve<<16>>16,q=(Ce((lt<<16>>16)-(Ht<<16>>16)|0,92672)>>>16|0)-ae|0,Z=q<<16>>16,r[h+160>>2]=ve-Z,r[h+64>>2]=Z+ve,B=q+(Ce(We,70912)-B>>>16|0)<<16>>16,b=Le-b<<16>>16,r[h+128>>2]=B+b,b=b-B|0,B=24}if(r[(B<<2)+h>>2]=b,a=a+2|0,d=d+2|0,h=h+4|0,b=D>>>0>1,D=D-1|0,!b)break}for(d=Se+128|0,a=on,b=0;;){h=r[(b<<2)+p>>2]+C|0;e:{t:{if(D=r[a+8>>2],B=r[a+4>>2],D|B||(D=0,r[a+12>>2]|r[a+16>>2]|(r[a+20>>2]|r[a+24>>2]))||r[a+28>>2])break t;D=m0(te[d+(r[a>>2]>>>5&1023)|0],0,16843009,16843009),F[h|0]=D,F[h+1|0]=D>>>8,F[h+2|0]=D>>>16,F[h+3|0]=D>>>24,D=Pi,F[h+4|0]=D,F[h+5|0]=D>>>8,F[h+6|0]=D>>>16,F[h+7|0]=D>>>24;break e}q=r[a+28>>2],Z=q+B|0,ae=r[a+12>>2],Le=r[a+20>>2],We=ae+Le|0,Se=Z+We|0,fe=r[a+24>>2],ve=fe+D|0,lt=r[a+16>>2],mt=r[a>>2],Mt=lt+mt|0,Ht=ve+Mt|0,F[h|0]=te[d+(Se+Ht>>>5&1023)|0],F[h+7|0]=te[d+(Ht-Se>>>5&1023)|0],ae=Le-ae<<16>>16,q=B-q<<16>>16,B=Ce(ae+q|0,121088)&-65536,Se=B+(Ce(ae,-171264)-(Se<<16)|0)|0,ae=Se>>16,D=Ce((D<<16>>16)-(fe<<16>>16)|0,92672)-(ve<<16)>>16,Le=mt-lt|0,fe=D+Le|0,F[h+1|0]=te[d+(ae+fe>>>5&1023)|0],F[h+6|0]=te[d+(fe-ae>>>5&1023)|0],Se=Ce((Z<<16>>16)-(We<<16>>16)|0,92672)-(Se&-65536)|0,Z=Se>>16,D=Le-D|0,F[h+2|0]=te[d+(Z+D>>>5&1023)|0],F[h+5|0]=te[d+(D-Z>>>5&1023)|0],D=(Ce(q,70912)-B|0)+(Se&-65536)>>16,B=Mt-ve|0,F[h+4|0]=te[d+(D+B>>>5&1023)|0],F[h+3|0]=te[d+(B-D>>>5&1023)|0]}if(a=a+32|0,b=b+1|0,(b|0)==8)break}hn=on+256|0}function Ip(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0;for(wn=hn-384|0,hn=wn,We=r[h+324>>2],d=r[d+80>>2],h=wn;Mt=He[d+64>>1],fe=He[a+64>>1],Le=Ce(He[d+16>>1],He[a+16>>1]),Z=Ce(He[d+112>>1],He[a+112>>1]),q=Le-Z|0,ve=Ce(He[d+48>>1],He[a+48>>1]),ae=Ce(He[d+80>>1],He[a+80>>1]),b=ve-ae|0,B=Ce(q+b|0,4433),Se=Ce(He[d+32>>1],He[a+32>>1]),lt=Ce(He[d+96>>1],He[a+96>>1]),Ht=Se-lt<<13,D=Ce(He[a>>1],He[d>>1])<<13|1024,on=Ht+D|0,q=B+Ce(q,6270)|0,r[h+320>>2]=on-q>>11,r[h+32>>2]=q+on>>11,q=D-Ht|0,B=B+Ce(b,-15137)|0,r[h+224>>2]=q-B>>11,r[h+128>>2]=B+q>>11,Mt=Ce(Ce(fe,Mt),10033),fe=Mt+D|0,q=lt<<13,b=q+Ce(Se,11190)|0,lt=fe-b|0,on=ae+Le|0,B=Ce(on+Z|0,7053),Ht=Ce(ve,-4433),an=B+((Ht+Ce(Le,-5540)|0)+Ce(Z,-16244)|0)|0,r[h+192>>2]=lt-an>>11,r[h+160>>2]=lt+an>>11,fe=b+fe|0,b=Ce(Le,2295),Le=Ce(ve,10703),ve=B+Ce(on,2139)|0,b=(b+Le|0)+ve|0,r[h+352>>2]=fe-b>>11,r[h>>2]=b+fe>>11,Se=Ce(Se,2998)-q|0,D=D-Mt|0,Mt=Se+D|0,q=Ht+Ce(ae,-12112)|0,ae=Ce(Z+ae|0,-8565),ve=ve+(q+ae|0)|0,r[h+288>>2]=Mt-ve>>11,r[h+64>>2]=ve+Mt>>11,D=D-Se|0,Z=ae+(B+(Ce(Z,12998)-Le|0)|0)|0,r[h+256>>2]=D-Z>>11,r[h+96>>2]=D+Z>>11,h=h+4|0,d=d+2|0,a=a+2|0,mt=mt+1|0,(mt|0)!=8;);for(h=We+128|0,d=wn,Le=0;ae=r[d+4>>2],D=r[d+20>>2],B=ae+D|0,Z=r[d+28>>2],ve=Ce(B+Z|0,7053),a=r[(Le<<2)+p>>2]+C|0,fe=ve+Ce(B,2139)|0,Se=r[d+12>>2],Mt=Ce(Se,10703),q=fe+(Mt+Ce(ae,2295)|0)|0,b=r[d+24>>2],lt=b<<13,We=r[d+8>>2],Ht=lt+Ce(We,11190)|0,B=(r[d>>2]<<13)+131072|0,on=Ce(r[d+16>>2],10033),an=B+on|0,mt=Ht+an|0,F[a|0]=te[h+(q+mt>>>18&1023)|0],F[a+11|0]=te[h+(mt-q>>>18&1023)|0],q=We-b<<13,b=q+B|0,mt=ae-Z|0,Zt=Se-D|0,ur=Ce(mt+Zt|0,4433),mt=ur+Ce(mt,6270)|0,F[a+1|0]=te[h+(b+mt>>>18&1023)|0],F[a+10|0]=te[h+(b-mt>>>18&1023)|0],Se=Ce(Se,-4433),b=Se+Ce(D,-12112)|0,D=Ce(D+Z|0,-8565),fe=(b+D|0)+fe|0,We=Ce(We,2998)-lt|0,b=B-on|0,lt=We+b|0,F[a+2|0]=te[h+(fe+lt>>>18&1023)|0],F[a+9|0]=te[h+(lt-fe>>>18&1023)|0],D=D+(ve+(Ce(Z,12998)-Mt|0)|0)|0,We=b-We|0,F[a+3|0]=te[h+(D+We>>>18&1023)|0],F[a+8|0]=te[h+(We-D>>>18&1023)|0],D=Ce(Zt,-15137)+ur|0,B=B-q|0,F[a+4|0]=te[h+(D+B>>>18&1023)|0],F[a+7|0]=te[h+(B-D>>>18&1023)|0],Z=ve+((Se+Ce(ae,-5540)|0)+Ce(Z,-16244)|0)|0,ae=an-Ht|0,F[a+5|0]=te[h+(Z+ae>>>18&1023)|0],F[a+6|0]=te[h+(ae-Z>>>18&1023)|0],d=d+32|0,Le=Le+1|0,(Le|0)!=12;);hn=wn+384|0}function wi(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if(C=r[h+444>>2],r[h+276>>2]){if(a=r[C+56>>2],!a){if(Ie[r[r[h+440>>2]+8>>2]](h)|0||(a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)),r[h+328>>2]>0)for(;;){b=D<<2,p=r[(b+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(a=r[((r[p+20>>2]<<2)+C|0)+60>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,a=C+b|0,r[a+40>>2]=0,r[a+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}k(r[((r[p+24>>2]<<2)+C|0)+124>>2],0,256)}if(D=D+1|0,!((D|0)>2]))break}r[C+20>>2]=-16,r[C+12>>2]=0,r[C+16>>2]=0,a=r[h+276>>2]}r[C+56>>2]=a-1}e:{if(r[C+20>>2]==-1)break e;b=r[d>>2],a=r[h+404>>2],d=a;t:{if((a|0)<=0)break t;for(;;){if(En[b+(r[(d<<2)+9424>>2]<<1)>>1])break t;if(p=(d|0)>1,d=d-1|0,!p)break}d=0}if(p=r[h+400>>2],(a|0)<(p|0))break e;for(a=r[h+412>>2],Z=-1<>2]+24>>2]<<2)+C|0;;){if(D=(r[ve+124>>2]+Ce(p,3)|0)-3|0,(d|0)<(p|0)&&Jr(h,D))break e;a=p;t:{n:{r:{for(;;){if(B=b+(r[(a<<2)+9424>>2]<<1)|0,En[B>>1]){if(!Jr(h,D+2|0))break t;if(p=He[B>>1],(p|0)>=0)break r;p=p+fe|0;break n}if(Jr(h,D+1|0)){p=Jr(h,ae)?Z:q;break n}if(D=D+3|0,p=r[h+404>>2]>(a|0),a=a+1|0,!p)break}return d=r[h>>2],r[d+20>>2]=126,Ie[r[d+4>>2]](h,-1),r[C+20>>2]=-1,1}p=p+q|0}He[B>>1]=p}if(p=a+1|0,!(r[h+404>>2]>(a|0)))break}}return 1}function pu(h,d,a){var p=0,C=0,D=0,b=0,B=0;C=r[h+24>>2],D=r[C+4>>2],p=r[C>>2],r[h+224>>2]=a,r[h+220>>2]=d;e:{if(!D){if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C>>2],D=r[C+4>>2]}if(b=te[p|0],a=D-1|0,a)d=p+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;a=r[C+4>>2],d=r[C>>2]}if(D=te[d|0],p=a-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],d=r[C>>2]}if(r[h+212>>2]=te[d|0],p=p-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],d=r[C>>2]}if(a=te[d|0]<<8,r[h+32>>2]=a,p=p-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;a=r[h+32>>2],p=r[C+4>>2],d=r[C>>2]}if(r[h+32>>2]=te[d|0]+a,p=p-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],d=r[C>>2]}if(a=te[d|0]<<8,r[h+28>>2]=a,p=p-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;a=r[h+28>>2],p=r[C+4>>2],d=r[C>>2]}if(r[h+28>>2]=te[d|0]+a,p=p-1|0,p)d=d+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],d=r[C>>2]}r[h+36>>2]=te[d|0],a=r[h>>2],r[a+24>>2]=r[h+416>>2],r[a+28>>2]=r[h+28>>2],r[a+32>>2]=r[h+32>>2],B=r[h+36>>2],r[a+20>>2]=100,r[a+36>>2]=B,Ie[r[a+4>>2]](h,1),r[r[h+440>>2]+16>>2]&&(a=r[h>>2],r[a+20>>2]=58,Ie[r[a>>2]](h)),a=(b<<8|D)-8|0;t:{if(!(!r[h+32>>2]|!r[h+28>>2])&&(D=r[h+36>>2],(D|0)>0))break t;D=r[h>>2],r[D+20>>2]=32,Ie[r[D>>2]](h),D=r[h+36>>2]}if((a|0)!=(Ce(D,3)|0)&&(a=r[h>>2],r[a+20>>2]=11,Ie[r[a>>2]](h)),D=r[h+216>>2],D||(D=Ie[r[r[h+4>>2]>>2]](h,1,Ce(r[h+36>>2],84))|0,r[h+216>>2]=D),a=d+1|0,p=p-1|0,r[h+36>>2]>0)for(d=0;;){if(r[D+4>>2]=d,!p){if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],a=r[C>>2]}if(r[D>>2]=te[a|0],p=p-1|0,p)a=a+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],a=r[C>>2]}if(b=te[a|0],r[D+12>>2]=b&15,r[D+8>>2]=b>>>4,p=p-1|0,p)b=a+1|0;else{if(!(Ie[r[C+12>>2]](h)|0))break e;p=r[C+4>>2],b=r[C>>2]}if(r[D+16>>2]=te[b|0],a=r[h>>2],r[a+24>>2]=r[D>>2],r[a+28>>2]=r[D+8>>2],r[a+32>>2]=r[D+12>>2],B=r[D+16>>2],r[a+20>>2]=101,r[a+36>>2]=B,Ie[r[a+4>>2]](h,1),a=b+1|0,p=p-1|0,D=D+84|0,d=d+1|0,!((d|0)>2]))break}return r[r[h+440>>2]+16>>2]=1,r[C+4>>2]=p,r[C>>2]=a,1}return 0}function Ef(h,d,a,p,C,D,b,B,q){var Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;Z=hn-128|0,hn=Z;e:{t:{n:{if(!Ln(D,b,B,q,0,0,0,0))break n;fe=q&65535,Se=q>>>16&32767;r:i:{if((Se|0)!=32767){if(ae=4,Se)break i;ae=D|B|(b|fe)?3:2;break r}ae=!(D|B|(b|fe))}if(Mt=C>>>16|0,Le=Mt&32767,(Le|0)==32767)break n;if(ae)break t}eo(Z+16|0,d,a,p,C,D,b,B,q),d=r[Z+16>>2],p=r[Z+20>>2],C=r[Z+24>>2],a=r[Z+28>>2],Uh(Z,d,p,C,a,d,p,C,a),p=r[Z+8>>2],C=r[Z+12>>2],B=r[Z>>2],q=r[Z+4>>2];break e}if(ae=p,We=C&2147483647,Se=B,ve=q&2147483647,(Ln(d,a,ae,We,D,b,B,ve)|0)<=0){if(Ln(d,a,ae,We,D,b,Se,ve)){B=d,q=a;break e}eo(Z+112|0,d,a,p,C,0,0,0,0),p=r[Z+120>>2],C=r[Z+124>>2],B=r[Z+112>>2],q=r[Z+116>>2];break e}if(lt=q>>>16&32767,Le?(q=a,B=d):(eo(Z+96|0,d,a,ae,We,0,0,0,1081540608),ae=r[Z+104>>2],B=r[Z+108>>2],We=B,Le=(B>>>16|0)-120|0,q=r[Z+100>>2],B=r[Z+96>>2]),lt||(eo(Z+80|0,D,b,Se,ve,0,0,0,1081540608),Se=r[Z+88>>2],D=r[Z+92>>2],ve=D,lt=(D>>>16|0)-120|0,b=r[Z+84>>2],D=r[Z+80>>2]),mt=Se,Ht=ve&65535|65536,We=We&65535|65536,(Le|0)>(lt|0)){for(;;){ve=ae-mt|0,fe=(b|0)==(q|0)&D>>>0>B>>>0|b>>>0>q>>>0,Se=ve-fe|0,fe=(We-((ae>>>0>>0)+Ht|0)|0)-(fe>>>0>ve>>>0)|0;t:{if((fe|0)>0|(fe|0)>=0){if(ae=B,B=B-D|0,q=q-((D>>>0>ae>>>0)+b|0)|0,!(B|Se|(q|fe))){eo(Z+32|0,d,a,p,C,0,0,0,0),p=r[Z+40>>2],C=r[Z+44>>2],B=r[Z+32>>2],q=r[Z+36>>2];break e}fe=fe<<1|Se>>>31,ae=Se<<1|q>>>31;break t}fe=We<<1|ae>>>31,ae=ae<<1|q>>>31}if(We=fe,fe=q<<1|B>>>31,B=B<<1,q=fe,Le=Le-1|0,!((Le|0)>(lt|0)))break}Le=lt}ve=ae-mt|0,fe=(b|0)==(q|0)&D>>>0>B>>>0|b>>>0>q>>>0,Se=ve-fe|0,fe=(We-((ae>>>0>>0)+Ht|0)|0)-(fe>>>0>ve>>>0)|0,ve=fe;t:{if((fe|0)<0){Se=ae,ve=We;break t}if(ae=B,B=B-D|0,q=q-((D>>>0>ae>>>0)+b|0)|0,B|Se|(q|ve))break t;eo(Z+48|0,d,a,p,C,0,0,0,0),p=r[Z+56>>2],C=r[Z+60>>2],B=r[Z+48>>2],q=r[Z+52>>2];break e}if((ve|0)==65535|ve>>>0<65535)for(;d=q>>>31|0,Le=Le-1|0,We=q<<1|B>>>31,B=B<<1,q=We,a=d,d=ve<<1|Se>>>31,Se=a|Se<<1,ve=d,d>>>0<65536;);if(d=Mt&32768,(Le|0)<=0){eo(Z- -64|0,B,q,Se,ve&65535|(d|Le+120)<<16,0,0,0,1065811968),p=r[Z+72>>2],C=r[Z+76>>2],B=r[Z+64>>2],q=r[Z+68>>2];break e}p=Se,C=ve&65535|(d|Le)<<16}r[h>>2]=B,r[h+4>>2]=q,r[h+8>>2]=p,r[h+12>>2]=C,hn=Z+128|0}function E4(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;d=r[h+460>>2],r[h+136>>2]=r[d+16>>2],r[h+132>>2]=r[d+20>>2];e:{t:switch(r[h+88>>2]){case 0:if(r[h+120>>2]==3){r[d+4>>2]=148;return}r[d+4>>2]=149;return;case 1:if(a=r[h+120>>2],r[d+48>>2]=0,r[d+4>>2]=(a|0)==3?150:151,r[d+28>>2]||L4(h),r[d+52>>2]||(C=r[h+120>>2],(C|0)<=0))break e;for(B=r[h+460>>2];;){q=(D<<2)+B|0,d=r[q+32>>2],a=0;n:{r:{if(!D)break r;for(;;){if(p=(a<<2)+B|0,(d|0)!=r[p+32>>2]){if(a=a+1|0,(D|0)!=(a|0))continue;break r}break}if(b=r[p+52>>2],b)break n}for(d=(d<<9)-512|0,C=0,b=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0;a=(C<<6)+b|0,p=C<<4,r[a+60>>2]=(Ce(255-(te[p+143103|0]<<1)|0,255)|0)/(d|0),r[a+56>>2]=(Ce(255-(te[p+143102|0]<<1)|0,255)|0)/(d|0),r[a+52>>2]=(Ce(255-(te[p+143101|0]<<1)|0,255)|0)/(d|0),r[a+48>>2]=(Ce(255-(te[p+143100|0]<<1)|0,255)|0)/(d|0),r[a+44>>2]=(Ce(255-(te[p+143099|0]<<1)|0,255)|0)/(d|0),r[a+40>>2]=(Ce(255-(te[p+143098|0]<<1)|0,255)|0)/(d|0),r[a+36>>2]=(Ce(255-(te[p+143097|0]<<1)|0,255)|0)/(d|0),r[a+32>>2]=(Ce(255-(te[p+143096|0]<<1)|0,255)|0)/(d|0),r[a+28>>2]=(Ce(255-(te[p+143095|0]<<1)|0,255)|0)/(d|0),r[a+24>>2]=(Ce(255-(te[p+143094|0]<<1)|0,255)|0)/(d|0),r[a+20>>2]=(Ce(255-(te[p+143093|0]<<1)|0,255)|0)/(d|0),r[a+16>>2]=(Ce(255-(te[p+143092|0]<<1)|0,255)|0)/(d|0),r[a+12>>2]=(Ce(255-(te[p+143091|0]<<1)|0,255)|0)/(d|0),r[a+8>>2]=(Ce(255-(te[p+143090|0]<<1)|0,255)|0)/(d|0),r[a+4>>2]=(Ce(255-(te[p+143089|0]<<1)|0,255)|0)/(d|0),r[a>>2]=(Ce(255-(te[p+143088|0]<<1)|0,255)|0)/(d|0),C=C+1|0,(C|0)!=16;);C=r[h+120>>2]}if(r[q+52>>2]=b,D=D+1|0,!((D|0)<(C|0)))break}break e;case 2:r[d+84>>2]=0,r[d+4>>2]=152;n:{if(r[d+68>>2]){p=r[h+120>>2];break n}if(r[h+120>>2]<=0)break e;for(C=(r[h+112>>2]<<1)+4|0;Z=d+(a<<2)|0,ae=Ie[r[r[h+4>>2]+4>>2]](h,1,C)|0,r[Z+68>>2]=ae,a=a+1|0,p=r[h+120>>2],(a|0)<(p|0););}if((p|0)<=0)break e;for(p=(r[h+112>>2]<<1)+4|0,a=0;y0(r[(d+(a<<2)|0)+68>>2],p),a=a+1|0,(a|0)>2];);break e;default:break t}d=r[h>>2],r[d+20>>2]=48,Ie[r[d>>2]](h)}}function Df(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0;if(B=r[h+364>>2],r[h+200>>2]&&(a=r[B+68>>2],a||(ju(h,r[B+72>>2]),a=r[h+200>>2],r[B+72>>2]=r[B+72>>2]+1&7),r[B+68>>2]=a-1),r[h+272>>2]>0)for(We=B+204|0;;){p=Le<<2,a=r[(p+h|0)+276>>2]<<2,ve=r[(a+h|0)+248>>2],Se=r[ve+20>>2],q=(Se<<2)+B|0,a=a+B|0,D=a,C=r[q+76>>2]+r[a+52>>2]|0,Z=r[d+p>>2],b=He[Z>>1],p=b-r[a+36>>2]|0;e:{if(!p){l0(h,C,0),r[D+52>>2]=0;break e}r[a+36>>2]=b,l0(h,C,1),a=0;t:{if((p|0)>0){ae=0,fe=2,b=4;break t}p=0-p|0,ae=1,fe=3,b=8}l0(h,C+1|0,ae),r[D+52>>2]=b,C=C+fe|0,b=p-1|0;t:{if(!b||(a=1,l0(h,C,1),C=r[q+76>>2]+20|0,p=b,(p|0)==1))break t;for(;l0(h,C,1),C=C+1|0,a=a<<1,q=p>>>0>3,p=p>>>1|0,!!q;);}l0(h,C,0),p=h+Se|0;t:{if(1<>1<=(a|0)){if(1<>1>=(a|0))break t;p=r[D+52>>2]+8|0}else p=0;r[D+52>>2]=p}if(a>>>0<2)break e;for(p=C+14|0;C=a>>1,l0(h,p,(C&b)!=0),D=a>>>0>3,a=C,!!D;);}fe=r[ve+24>>2],a=63;e:{t:{for(;;){n:{if(En[(r[(a<<2)+9424>>2]<<1)+Z>>1]){D=a;break n}if(D=a-1|0,En[(r[(D<<2)+9424>>2]<<1)+Z>>1]||(D=a-2|0,En[(r[(D<<2)+9424>>2]<<1)+Z>>1]))break n;if(a=a-3|0,C=1,D>>>0>1)continue;break t}break}if(C=1,(D|0)<=0)break t;for(Se=h+fe|0,ve=(fe<<2)+B|0;;){if(a=(r[ve+140>>2]+Ce(C,3)|0)-3|0,l0(h,a,0),p=En[(r[(C<<2)+9424>>2]<<1)+Z>>1],!p)for(;l0(h,a+1|0,0),a=a+3|0,C=C+1|0,p=En[(r[(C<<2)+9424>>2]<<1)+Z>>1],!p;);b=C,l0(h,a+1|0,1),C=p<<16>>16,l0(h,We,(C|0)<=0),a=a+2|0;n:{r:{i:{if(C=C>>15,q=((C^p)-C&65535)-1|0,!q||(l0(h,a,1),(q|0)==1))break i;if(l0(h,a,1),p=r[ve+140>>2]+((b|0)>te[Se+152|0]?217:189)|0,a=2,q>>>0>3){for(C=q;ae=p,l0(h,p,1),p=p+1|0,a=a<<1,lt=C>>>0<8,C=C>>1,!lt;);if(l0(h,p,0),!a)break n;C=ae+15|0;break r}l0(h,p,0),C=p+14|0;break r}l0(h,a,0);break n}for(;p=a>>1,l0(h,C,(p&q)!=0),ae=a>>>0>3,a=p,!!ae;);}if(C=b+1|0,!((D|0)>(b|0)))break}if((b|0)>62)break e}l0(h,(r[((fe<<2)+B|0)+140>>2]+Ce(C,3)|0)-3|0,1)}if(Le=Le+1|0,!((Le|0)>2]))break}return 1}function Ps(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;D=r[h+36>>2];e:{if((D|0)==1&&(Le=3,r[h+40>>2]==1))break e;for(lt=D&1,mt=(D&-2)-6|0,ve=D-1|0,Mt=ve&-2,Ht=ve&1,on=D-4|0,Le=-1;;){B=Z<<2,We=r[B+145040>>2];t:{if((We|0)!=(D|0)&&(Z|0)==3|(r[h+40>>2]&-2)!=4|(D|0)!=4)break t;n:{if(p=r[h+216>>2],fe=r[p+8>>2],q=r[B+144752>>2]/8|0,(fe|0)!=(q|0)||(ae=r[p+12>>2],(ae|0)!=(r[B+144784>>2]/8|0)))break n;a=0;r:{if((D|0)<2)break r;if(b=r[h+40>>2],(b|0)!=5){for(d=1;C=Ce(d,84)+p|0,Se=(b|0)==4&(d|0)==3,r[C+8>>2]==((Se?fe:1)|0)&&(a=(r[C+12>>2]==((Se?ae:1)|0))+a|0),d=d+1|0,(D|0)!=(d|0););break r}if(d=1,b=0,(D|0)!=2)for(;C=Ce(d,84)+p|0,Se=(d|0)==3,r[C+8>>2]==((Se?fe:1)|0)&&(a=(r[C+12>>2]==((Se?ae:1)|0))+a|0),C=Ce(d+1|0,84)+p|0,r[C+8>>2]==1&&(a=(r[C+12>>2]==1)+a|0),d=d+2|0,b=b+2|0,(Mt|0)!=(b|0););if(!Ht||(b=Ce(d,84)+p|0,d=(d|0)==3,r[b+8>>2]!=((d?fe:1)|0)))break r;a=(r[b+12>>2]==((d?ae:1)|0))+a|0}if((a|0)!=(ve|0))break n;return Z|0}n:{if(b=r[p+12>>2],(fe|0)!=2|(b|0)!=2)break n;b=2;r:switch(Z-1|0){case 0:case 3:break r;default:break n}d=0;r:{if((D|0)<2||(B=r[B+144784>>2]/8|0,d=(B|0)==r[p+92>>2]?(q|0)==r[p+96>>2]:d,(D|0)==2)||(d=(B|0)==r[p+176>>2]?((q|0)==r[p+180>>2])+d|0:d,(D|0)==3))break r;a=(r[h+40>>2]&-2)==4,r[p+260>>2]==((a?2:B)|0)&&(d=(r[p+264>>2]==((a?2:q)|0))+d|0),ae=0,a=4;i:switch(on|0){default:for(;C=Ce(a,84)+p|0,(B|0)==r[C+8>>2]&&(d=((q|0)==r[C+12>>2])+d|0),C=Ce(a|1,84)+p|0,(B|0)==r[C+8>>2]&&(d=((q|0)==r[C+12>>2])+d|0),a=a+2|0,C=(ae|0)!=(mt|0),ae=ae+2|0,!!C;);break;case 0:break r;case 1:break i}if(!lt||(a=Ce(a,84)+p|0,(B|0)!=r[a+8>>2]))break r;d=((q|0)==r[a+12>>2])+d|0}if((d|0)!=(ve|0))break n;return Z|0}if(Z|(Ce(b,fe)|0)>(10/(We|0)|0)|(D|0)<2)break t;for(d=1,a=0;;){if(q=Ce(d,84)+p|0,r[q+8>>2]==(fe|0)&&(a=(r[q+12>>2]==(b|0))+a|0),(a|0)!=(ve|0)){if(d=d+1|0,(D|0)==(d|0))break t;continue}break}Le=0}if(Z=Z+1|0,(Z|0)==6)break}}return Le|0}function v5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;if(r[h+36>>2]>0)for(fe=r[h+448>>2],B=r[h+216>>2];;){p=206,Z=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{h:{f:{p:{c:{m:{g:{d:{v:switch(a=r[B+36>>2],a-1|0){case 11:break o;case 10:break u;case 9:break l;case 8:break h;case 7:break f;case 6:break p;case 5:break c;case 4:break m;case 3:break g;case 2:break d;case 1:break v;case 0:break e;case 15:break r;case 14:break i;case 13:break a;case 12:break s;default:break n}p=208;break e}p=209;break e}p=211;break e}p=212;break e}p=213;break e}p=214;break e}f:switch(r[h+72>>2]){case 0:p=216;break e;case 1:p=218,Z=1;break e;case 2:p=220,Z=2;break e;default:break f}p=r[h>>2],r[p+20>>2]=48,Ie[r[p>>2]](h);break t}p=221;break e}p=222;break e}p=223;break e}p=224;break e}p=225;break e}p=226;break e}p=227;break e}p=228;break e}p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=7,Ie[r[r[h>>2]>>2]](h)}p=d,Z=D}d=(ae<<2)+fe|0,r[d+4>>2]=p;e:{if(!r[B+48>>2]|r[d+44>>2]==(Z|0)||(D=r[B+76>>2],!D))break e;r[d+44>>2]=Z;t:switch(Z|0){case 0:for(d=r[B+80>>2],b=0;a=b<<1,He[a+d>>1]=En[a+D>>1],C=a|2,He[C+d>>1]=En[C+D>>1],C=a|4,He[C+d>>1]=En[C+D>>1],a=a|6,He[a+d>>1]=En[a+D>>1],b=b+4|0,(b|0)!=64;);break e;case 1:for(b=r[B+80>>2],d=0;a=d<<1,He[a+b>>1]=Ce(He[a+143936>>1],En[a+D>>1])+2048>>>12,a=a|2,He[a+b>>1]=Ce(He[a+143936>>1],En[a+D>>1])+2048>>>12,d=d+2|0,(d|0)!=64;);break e;case 2:for(a=r[B+80>>2],b=0,d=0;q=In[(b<<3)+144064>>3],or[a+(d<<2)>>2]=q*+En[D+(d<<1)>>1],C=d|1,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*1.387039845,C=d|2,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*1.306562965,C=d|3,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*1.175875602,C=d|4,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1],C=d|5,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*.785694958,C=d|6,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*.5411961,C=d|7,or[a+(C<<2)>>2]=q*+En[D+(C<<1)>>1]*.275899379,d=d+8|0,b=b+1|0,(b|0)!=8;);break e;default:break t}d=r[h>>2],r[d+20>>2]=48,Ie[r[d>>2]](h)}if(B=B+84|0,D=Z,d=p,ae=ae+1|0,!((ae|0)>2]))break}}function If(h,d,a){var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;for(p=hn-2128|0,hn=p,C=p+2096|0,r[C>>2]=0,r[C+4>>2]=0,C=p+2104|0,r[C>>2]=0,r[C+4>>2]=0,F[p+2112|0]=0,r[p+2080>>2]=0,r[p+2084>>2]=0,r[p+2088>>2]=0,r[p+2092>>2]=0,k(p+1040|0,0,1028),D=k(p,255,1028),r[a+1024>>2]=1,q=1e9,Z=-1;;)if(p=r[(B<<2)+a>>2],C=!p|(p|0)>(q|0),q=C?q:p,Z=C?Z:B,b=1e9,p=0,C=-1,B=B+1|0,(B|0)==257){for(;;){if(B=r[(p<<2)+a>>2],fe=!B|(b|0)<(B|0)|(p|0)==(Z|0),q=fe?C:p,C=p|1,(C|0)!=257){ae=r[(C<<2)+a>>2],b=fe?b:B,B=!ae|(ae|0)>(b|0)|(C|0)==(Z|0),b=B?b:ae,C=B?q:C,p=p+2|0;continue}break}if(p=0,(q|0)<0){for(;a=r[(D+1040|0)+(p<<2)>>2],a&&((a|0)>=33&&(C=r[h>>2],r[C+20>>2]=39,Ie[r[C>>2]](h)),a=a+(D+2080|0)|0,F[a|0]=te[a|0]+1),p=p+1|0,(p|0)!=257;);for(a=32;;){q=(D+2080|0)+a|0,Z=te[q|0];e:{if(!Z){h=a-1|0;break e}for(b=a-2|0,h=a-1|0,B=h+(D+2080|0)|0;;){for(p=b;C=p,p=p-1|0,ae=C+(D+2080|0)|0,!te[ae|0];);if(F[q|0]=Z-2,F[B|0]=te[B|0]+1,p=(C+D|0)+2081|0,F[p|0]=te[p|0]+2,F[ae|0]=te[ae|0]-1,Z=te[q|0],!Z)break}}if(p=a>>>0>17,a=h,!p)break}for(p=16;h=(D+2080|0)+p|0,p=p-1|0,a=te[h|0],!a;);for(F[h|0]=a-1,F[d+16|0]=te[D+2096|0],h=r[D+2092>>2],r[d+8>>2]=r[D+2088>>2],r[d+12>>2]=h,h=r[D+2084>>2],r[d>>2]=r[D+2080>>2],r[d+4>>2]=h,C=0,b=1;;){for(p=0;r[(D+1040|0)+(p<<2)>>2]==(b|0)&&(F[(d+C|0)+17|0]=p,C=C+1|0),h=p|1,r[(D+1040|0)+(h<<2)>>2]==(b|0)&&(F[(d+C|0)+17|0]=h,C=C+1|0),p=p+2|0,(p|0)!=256;);if(b=b+1|0,(b|0)==33)break}r[d+276>>2]=0,hn=D+2128|0;return}if(p=Z<<2,C=p+a|0,fe=C,ae=r[C>>2],b=q<<2,C=b+a|0,r[fe>>2]=ae+r[C>>2],r[C>>2]=0,C=p+(D+1040|0)|0,r[C>>2]=r[C>>2]+1,C=p+D|0,p=r[C>>2],(p|0)>=0)for(;p=p<<2,C=p+(D+1040|0)|0,r[C>>2]=r[C>>2]+1,C=p+D|0,p=r[C>>2],(p|0)>=0;);if(r[C>>2]=q,p=b+(D+1040|0)|0,r[p>>2]=r[p>>2]+1,B=0,q=1e9,Z=-1,p=r[D+b>>2],!((p|0)<0))for(;p=p<<2,C=p+(D+1040|0)|0,r[C>>2]=r[C>>2]+1,p=r[p+D>>2],(p|0)>=0;);}}function D4(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0;e:{if(C=r[h+424>>2],!r[C+48>>2]){if(!(Ie[r[r[h+428>>2]+12>>2]](h,r[((r[C+64>>2]<<2)+C|0)+56>>2])|0))break e;r[C+48>>2]=1,r[C+76>>2]=r[C+76>>2]+1}t:switch(r[C+68>>2]){case 2:if(Ie[r[r[h+432>>2]+4>>2]](h,r[((r[C+64>>2]<<2)+C|0)+56>>2],C+52|0,r[C+72>>2],d,a,p),ni[C+52>>2]>2]||(r[C+68>>2]=0,ni[a>>2]>=p>>>0))break e;case 0:r[C+52>>2]=0,ve=r[h+316>>2],r[C+72>>2]=ve-1;n:{if(r[C+76>>2]!=r[h+320>>2]||(lt=r[h+36>>2],(lt|0)<=0))break n;for(Le=r[h+424>>2],mt=(r[Le+64>>2]<<2)+Le|0,B=r[h+216>>2];;){D=Ce(r[B+36>>2],r[B+12>>2]),b=ni[B+44>>2]%(D>>>0)|0,b=b||D,D=(D|0)/(ve|0)|0,q||(r[Le+72>>2]=((b-1|0)/(D|0)|0)+1);r:{if((D|0)<=0)break r;if(D=D<<1,Z=(D|0)<=1?1:D,We=Z&3,ae=r[r[mt+56>>2]+(q<<2)>>2],Se=(ae+(b<<2)|0)-4|0,fe=0,D=0,Z-1>>>0>=3)for(Mt=Z&2147483644,Z=0;r[ae+(D+b<<2)>>2]=r[Se>>2],r[ae+(b+(D|1)<<2)>>2]=r[Se>>2],r[ae+(b+(D|2)<<2)>>2]=r[Se>>2],r[ae+(b+(D|3)<<2)>>2]=r[Se>>2],D=D+4|0,Z=Z+4|0,(Mt|0)!=(Z|0););if(!We)break r;for(;r[ae+(D+b<<2)>>2]=r[Se>>2],D=D+1|0,fe=fe+1|0,(We|0)!=(fe|0););}if(B=B+84|0,q=q+1|0,(lt|0)==(q|0))break}}r[C+68>>2]=1;break;case 1:break t;default:break e}if(Ie[r[r[h+432>>2]+4>>2]](h,r[((r[C+64>>2]<<2)+C|0)+56>>2],C+52|0,r[C+72>>2],d,a,p),ni[C+52>>2]>2])break e;d=r[h+316>>2];t:{if(r[C+76>>2]!=1||(ae=r[h+36>>2],(ae|0)<=0))break t;for(Se=d+2|0,Le=d+1|0,b=r[h+424>>2],B=r[h+216>>2],q=0;;){if(h=(Ce(r[B+36>>2],r[B+12>>2])|0)/(d|0)|0,(h|0)>0)for(p=q<<2,a=r[p+r[b+60>>2]>>2],p=r[p+r[b+56>>2]>>2],Z=Ce(h,Se),We=Ce(h,Le),D=0;fe=D-h<<2,ve=D+We<<2,r[fe+p>>2]=r[ve+p>>2],r[a+fe>>2]=r[a+ve>>2],fe=D+Z<<2,ve=D<<2,r[fe+p>>2]=r[ve+p>>2],r[a+fe>>2]=r[a+ve>>2],D=D+1|0,(h|0)!=(D|0););if(B=B+84|0,q=q+1|0,(ae|0)==(q|0))break}}r[C+48>>2]=0,r[C+68>>2]=2,r[C+72>>2]=d+2,r[C+52>>2]=d+1,r[C+64>>2]=r[C+64>>2]^1}}function Io(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;B=8;e:{t:{if(h>>>0>4294967239)break t;for(;;){B=B>>>0<=8?8:B,p=r[37563],a=r[37562],h=h>>>0<=8?8:h+3&-4;n:{if(h>>>0<=127){d=(h>>>3|0)-1|0;break n}if(C=Q0(h),d=((h>>>29-C^4)-(C<<2)|0)+110|0,h>>>0<=4095)break n;C=((h>>>30-C^2)-(C<<1)|0)+71|0,d=C>>>0>=63?63:C}if(b=d,d=b&31,(b&63)>>>0>=32?(C=0,d=p>>>d|0):(C=p>>>d|0,d=((1<>>d),d|C){for(;;){p=d;n:{if(C|d){a=C-1|0,q=a+1|0,D=a,a=d-1|0,D=(a|0)!=-1?q:D,a=Q0(d^a)+32|0,d=Q0(C^D),d=(d|0)==32?a:d,a=63-d|0,Pi=0-(d>>>0>63)|0;break n}Pi=0,a=64}D=a,a=D&31,(D&63)>>>0>=32?(d=0,Z=C>>>a|0):(d=C>>>a|0,Z=((1<>>a),C=d,b=D+b|0,a=b<<4,p=r[a+149224>>2],D=a+149216|0;n:{if((p|0)!=(D|0)){if(d=B4(p,B,h),d)break t;d=r[p+4>>2],r[d+8>>2]=r[p+8>>2],r[r[p+8>>2]+4>>2]=d,r[p+8>>2]=D,d=a+149220|0,r[p+4>>2]=r[d>>2],r[d>>2]=p,r[r[p+4>>2]+8>>2]=p,b=b+1|0,d=(C&1)<<31|Z>>>1,C=C>>>1|0;break n}ae=r[37563],D=b&63,d=D,p=d&31,d>>>0>=32?(d=0,a=-1>>>p|0):(d=-1>>>p|0,a=d|(1<>>0>=32?(d=a<>>32-p|d<>>0>=32?(d=-1<>>32-d),fe=a&-2,a=D&31,D>>>0>=32?(D=0,d=d>>>a|0):(D=d>>>a|0,d=((1<>>a),d=d|q,Pi=p|D,r[37562]=r[37562]&d,r[37563]=Pi&ae,d=Z^1}if(!(d|C))break}a=r[37562],p=r[37563]}n:{if(p|a){C=Q0(p),D=63-((C|0)==32?Q0(a)+32|0:C)|0,d=D<<4,C=r[d+149224>>2];r:{if(!p&a>>>0<1073741824||(b=99,p=d+149216|0,(p|0)==(C|0)))break r;for(;;){if(!b)break r;if(d=B4(C,B,h),d)break t;if(b=b-1|0,C=r[C+8>>2],(p|0)==(C|0))break}C=p}if(Rf(h+48|0))break n;if(!C||(b=(D<<4)+149216|0,(b|0)==(C|0)))break e;for(;;){if(d=B4(C,B,h),d)break t;if(C=r[C+8>>2],(b|0)==(C|0))break}break e}if(!Rf(h+48|0))break e}if(d=0,B-1&B)break t;if(!(h>>>0<=4294967239))break}}return d}return 0}function B2(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;if(r[h+60>>2]>0)for(on=r[h+240>>2]-1|0,Le=r[h+344>>2],B=r[h+68>>2];;){C=mt<<2,D=r[B+12>>2],We=Ie[r[r[h+4>>2]+32>>2]](h,r[(C+Le|0)- -64>>2],Ce(D,r[Le+8>>2]),D,1)|0,ni[Le+8>>2]>>0?D=r[B+12>>2]:(D=r[B+12>>2],a=ni[B+32>>2]%(D>>>0)|0,D=a||D),fe=r[B+28>>2],q=r[B+8>>2],a=(fe>>>0)%(q>>>0)|0,Z=(a|0)>0?q-a|0:a;e:{if((D|0)<=0)break e;if(Se=d+C|0,(Z|0)<=0){for(a=0;Ie[r[r[h+360>>2]+4>>2]](h,B,r[Se>>2],r[(a<<2)+We>>2],a<<3,0,fe),a=a+1|0,(D|0)!=(a|0););break e}for(Mt=Z<<7,Ht=Z&-8,lt=Z&7,ae=0;;){if(a=r[(ae<<2)+We>>2],Ie[r[r[h+360>>2]+4>>2]](h,B,r[Se>>2],a,ae<<3,0,fe),a=a+(fe<<7)|0,y0(a,Mt),b=En[a-128>>1],C=0,ve=0,Z>>>0>=8)for(;p=C<<7,He[p+a>>1]=b,He[(p|128)+a>>1]=b,He[(p|256)+a>>1]=b,He[(p|384)+a>>1]=b,He[(p|512)+a>>1]=b,He[(p|640)+a>>1]=b,He[(p|768)+a>>1]=b,He[(p|896)+a>>1]=b,C=C+8|0,ve=ve+8|0,(Ht|0)!=(ve|0););if(p=0,lt)for(;He[(C<<7)+a>>1]=b,C=C+1|0,p=p+1|0,(lt|0)!=(p|0););if(ae=ae+1|0,(ae|0)==(D|0))break}}e:{if(r[Le+8>>2]!=(on|0)||(a=Z+fe|0,r[B+12>>2]<=(D|0)))break e;if(C=(a>>>0)/(q>>>0)|0,Z=a<<7,a>>>0>=q>>>0){for(lt=q-1|0,Mt=C>>>0<=1?1:C,Ht=q&-8,fe=q&7;;){if(a=(D<<2)+We|0,ae=r[a-4>>2],a=r[a>>2],y0(a,Z),Se=0,(q|0)>0)for(;;){if(b=En[(lt<<7)+ae>>1],C=0,ve=0,q>>>0>=8)for(;p=C<<7,He[p+a>>1]=b,He[(p|128)+a>>1]=b,He[(p|256)+a>>1]=b,He[(p|384)+a>>1]=b,He[(p|512)+a>>1]=b,He[(p|640)+a>>1]=b,He[(p|768)+a>>1]=b,He[(p|896)+a>>1]=b,C=C+8|0,ve=ve+8|0,(Ht|0)!=(ve|0););if(p=0,fe)for(;He[(C<<7)+a>>1]=b,C=C+1|0,p=p+1|0,(fe|0)!=(p|0););if(C=q<<7,ae=C+ae|0,a=a+C|0,Se=Se+1|0,(Mt|0)==(Se|0))break}if(D=D+1|0,!((D|0)>2]))break}break e}for(;y0(r[(D<<2)+We>>2],Z),D=D+1|0,(D|0)>2];);}if(B=B+84|0,mt=mt+1|0,!((mt|0)>2]))break}return Rp(h,a)|0}function wa(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;p=r[h>>2]+d|0,or[a>>2]=te[p|0]-128|0,or[a+4>>2]=te[p+1|0]-128|0,or[a+8>>2]=te[p+2|0]-128|0,or[a+12>>2]=te[p+3|0]-128|0,or[a+16>>2]=te[p+4|0]-128|0,or[a+20>>2]=te[p+5|0]-128|0,or[a+24>>2]=te[p+6|0]-128|0,or[a+28>>2]=te[p+7|0]-128|0,p=r[h+4>>2]+d|0,or[a+32>>2]=te[p|0]-128|0,or[a+36>>2]=te[p+1|0]-128|0,or[a+40>>2]=te[p+2|0]-128|0,or[a+44>>2]=te[p+3|0]-128|0,or[a+48>>2]=te[p+4|0]-128|0,or[a+52>>2]=te[p+5|0]-128|0,or[a+56>>2]=te[p+6|0]-128|0,or[a+60>>2]=te[p+7|0]-128|0,p=r[h+8>>2]+d|0,or[a+64>>2]=te[p|0]-128|0,or[a+68>>2]=te[p+1|0]-128|0,or[a+72>>2]=te[p+2|0]-128|0,or[a+76>>2]=te[p+3|0]-128|0,or[a+80>>2]=te[p+4|0]-128|0,or[a+84>>2]=te[p+5|0]-128|0,or[a+88>>2]=te[p+6|0]-128|0,or[a+92>>2]=te[p+7|0]-128|0,p=r[h+12>>2]+d|0,or[a+96>>2]=te[p|0]-128|0,or[a+100>>2]=te[p+1|0]-128|0,or[a+104>>2]=te[p+2|0]-128|0,or[a+108>>2]=te[p+3|0]-128|0,or[a+112>>2]=te[p+4|0]-128|0,or[a+116>>2]=te[p+5|0]-128|0,or[a+120>>2]=te[p+6|0]-128|0,or[a+124>>2]=te[p+7|0]-128|0,p=r[h+16>>2]+d|0,or[a+128>>2]=te[p|0]-128|0,or[a+132>>2]=te[p+1|0]-128|0,or[a+136>>2]=te[p+2|0]-128|0,or[a+140>>2]=te[p+3|0]-128|0,or[a+144>>2]=te[p+4|0]-128|0,or[a+148>>2]=te[p+5|0]-128|0,or[a+152>>2]=te[p+6|0]-128|0,or[a+156>>2]=te[p+7|0]-128|0,p=r[h+20>>2]+d|0,or[a+160>>2]=te[p|0]-128|0,or[a+164>>2]=te[p+1|0]-128|0,or[a+168>>2]=te[p+2|0]-128|0,or[a+172>>2]=te[p+3|0]-128|0,or[a+176>>2]=te[p+4|0]-128|0,or[a+180>>2]=te[p+5|0]-128|0,or[a+184>>2]=te[p+6|0]-128|0,or[a+188>>2]=te[p+7|0]-128|0,p=r[h+24>>2]+d|0,or[a+192>>2]=te[p|0]-128|0,or[a+196>>2]=te[p+1|0]-128|0,or[a+200>>2]=te[p+2|0]-128|0,or[a+204>>2]=te[p+3|0]-128|0,or[a+208>>2]=te[p+4|0]-128|0,or[a+212>>2]=te[p+5|0]-128|0,or[a+216>>2]=te[p+6|0]-128|0,or[a+220>>2]=te[p+7|0]-128|0,h=r[h+28>>2]+d|0,or[a+224>>2]=te[h|0]-128|0,or[a+228>>2]=te[h+1|0]-128|0,or[a+232>>2]=te[h+2|0]-128|0,or[a+236>>2]=te[h+3|0]-128|0,or[a+240>>2]=te[h+4|0]-128|0,or[a+244>>2]=te[h+5|0]-128|0,or[a+248>>2]=te[h+6|0]-128|0,or[a+252>>2]=te[h+7|0]-128|0}function Mc(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0;for(an=hn-320|0,hn=an,Mt=r[h+324>>2],d=r[d+80>>2],h=an;B=He[d+96>>1],fe=He[a+96>>1],ve=He[d+32>>1],Ht=He[a+32>>1],b=Ce(He[a>>1],He[d>>1])<<13|1024,D=Ce(He[d+64>>1],He[a+64>>1]),ae=b+Ce(D,-11586)>>11,q=Ce(He[d+16>>1],He[a+16>>1]),Le=Ce(He[d+80>>1],He[a+80>>1]),Se=Ce(He[d+48>>1],He[a+48>>1]),We=Ce(He[d+112>>1],He[a+112>>1]),Z=Se-We|0,lt=q-(Le+Z|0)<<2,r[h+224>>2]=ae-lt,r[h+64>>2]=ae+lt,fe=Ce(B,fe),ve=Ce(ve,Ht),B=Ce(fe+ve|0,6810),ve=B+Ce(ve,4209)|0,Ht=b+Ce(D,9373)|0,ae=ve+Ht|0,Le=Le<<13,lt=Le+Ce(Z,2531)|0,Se=Se+We|0,We=Ce(Se,7791),mt=lt+(We+Ce(q,11443)|0)|0,r[h+288>>2]=ae-mt>>11,r[h>>2]=ae+mt>>11,D=b+Ce(D,-3580)|0,b=B+Ce(fe,-17828)|0,B=D-b|0,Z=Le+Ce(Z,-6627)|0,fe=Ce(Se,4815),ae=Z+(Ce(q,5260)-fe|0)|0,r[h+192>>2]=B-ae>>11,r[h+96>>2]=B+ae>>11,B=Ht-ve|0,ve=lt+(Ce(q,1812)-We|0)|0,r[h+160>>2]=B-ve>>11,r[h+128>>2]=B+ve>>11,D=D+b|0,q=Ce(q,10323)-(Z+fe|0)|0,r[h+256>>2]=D-q>>11,r[h+32>>2]=D+q>>11,h=h+4|0,d=d+2|0,a=a+2|0,on=on+1|0,(on|0)!=8;);for(h=Mt+128|0,a=an,on=0;Mt=r[a+24>>2],Z=r[a+8>>2],D=Ce(Mt+Z|0,6810),d=r[(on<<2)+p>>2]+C|0,b=r[a+28>>2],B=r[a+12>>2],fe=b+B|0,ve=Ce(fe,7791),q=r[a+4>>2],Ht=r[a+20>>2],ae=Ht<<13,b=B-b|0,Le=ae+Ce(b,2531)|0,Se=(ve+Ce(q,11443)|0)+Le|0,We=D+Ce(Z,4209)|0,B=(r[a>>2]<<13)+131072|0,Z=r[a+16>>2],lt=B+Ce(Z,9373)|0,mt=We+lt|0,F[d|0]=te[h+(Se+mt>>>18&1023)|0],F[d+9|0]=te[h+(mt-Se>>>18&1023)|0],fe=Ce(fe,4815),ae=ae+Ce(b,-6627)|0,Se=Ce(q,10323)-(fe+ae|0)|0,D=D+Ce(Mt,-17828)|0,Mt=B+Ce(Z,-3580)|0,mt=D+Mt|0,F[d+1|0]=te[h+(Se+mt>>>18&1023)|0],F[d+8|0]=te[h+(mt-Se>>>18&1023)|0],b=q-(b+Ht|0)<<13,Z=B+Ce(Z,-11586)|0,F[d+2|0]=te[h+(b+Z>>>18&1023)|0],F[d+7|0]=te[h+(Z-b>>>18&1023)|0],b=ae+(Ce(q,5260)-fe|0)|0,D=Mt-D|0,F[d+3|0]=te[h+(b+D>>>18&1023)|0],F[d+6|0]=te[h+(D-b>>>18&1023)|0],q=Le+(Ce(q,1812)-ve|0)|0,D=lt-We|0,F[d+4|0]=te[h+(q+D>>>18&1023)|0],F[d+5|0]=te[h+(D-q>>>18&1023)|0],a=a+32|0,on=on+1|0,(on|0)!=10;);hn=an+320|0}function L1(){var h=0,d=0,a=0,p=0,C=0,D=0,b=0;if(h=Fk(),!h)return h=te[4626]|te[4627]<<8|(te[4628]<<16|te[4629]<<24),d=te[4622]|te[4623]<<8|(te[4624]<<16|te[4625]<<24),He[73939]=d,He[73940]=d>>>16,He[73941]=h,He[73942]=h>>>16,h=te[4620]|te[4621]<<8|(te[4622]<<16|te[4623]<<24),r[36968]=te[4616]|te[4617]<<8|(te[4618]<<16|te[4619]<<24),r[36969]=h,h=te[4612]|te[4613]<<8|(te[4614]<<16|te[4615]<<24),r[36966]=te[4608]|te[4609]<<8|(te[4610]<<16|te[4611]<<24),r[36967]=h,h=te[4604]|te[4605]<<8|(te[4606]<<16|te[4607]<<24),r[36964]=te[4600]|te[4601]<<8|(te[4602]<<16|te[4603]<<24),r[36965]=h,h=te[4596]|te[4597]<<8|(te[4598]<<16|te[4599]<<24),r[36962]=te[4592]|te[4593]<<8|(te[4594]<<16|te[4595]<<24),r[36963]=h,h=te[4588]|te[4589]<<8|(te[4590]<<16|te[4591]<<24),r[36960]=te[4584]|te[4585]<<8|(te[4586]<<16|te[4587]<<24),r[36961]=h,0;F[h+1156|0]=te[3582],d=te[3578]|te[3579]<<8|(te[3580]<<16|te[3581]<<24),a=te[3574]|te[3575]<<8|(te[3576]<<16|te[3577]<<24),F[h+1148|0]=a,F[h+1149|0]=a>>>8,F[h+1150|0]=a>>>16,F[h+1151|0]=a>>>24,F[h+1152|0]=d,F[h+1153|0]=d>>>8,F[h+1154|0]=d>>>16,F[h+1155|0]=d>>>24,a=Io(40),r[a>>2]=0,r[37564]=0,D=Ri(h+840|0),d=r[37564],r[37564]=0,p=-1,b=4;e:{t:{n:{if(!d||(C=r[37565],!C))break n;if(p=Zo(r[d>>2],a,4),!p)break t;Mi=C}for(d=Mi,(p|0)!=1&&(r[h+840>>2]=258,r[h+376>>2]=D,r[h+848>>2]=259,r[h+964>>2]=1e3,r[h+968>>2]=1028,r[h+960>>2]=148048,d=r[h+844>>2],r[h+844>>2]=260,r[h+1128>>2]=d,D=h+376|0,a=Fc(h+972|0,1,a,4),b=Mi,d=0);;){if(d){J(h),J(a),h=0;break e}r[37564]=0,xc(270,D|0,62,464),d=r[37564],r[37564]=0,p=-1;n:{if(!d||(C=r[37565],!C))break n;if(p=Zo(r[d>>2],a,b),!p)break t;Mi=C}if(d=Mi,(p|0)!=1){r[37564]=0,xc(271,D|0,148350,1),d=r[37564],r[37564]=0,p=-1;n:{if(!d||(C=r[37565],!C))break n;if(p=Zo(r[d>>2],a,b),!p)break t;Mi=C}if(d=Mi,(p|0)!=1)break}}r[h+1140>>2]=r[h+1140>>2]|2,J(a);break e}J(a),Hu(d,C),mr()}return h}function Op(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0;if(C=r[h+344>>2],p=C,a=r[C+20>>2],Z=r[C+16>>2],(a|0)>(Z|0)){for(Ht=r[h+240>>2]-1|0,We=r[h+264>>2]-1|0,ve=C+24|0,q=r[C+12>>2];;){if(q>>>0<=We>>>0){for(on=Z<<3;;){if(a=r[h+244>>2],(a|0)>0)for(p=0,Se=0;;){if(B=r[((Se<<2)+h|0)+248>>2],r[B+56>>2]>0){for(an=Ce(r[B+64>>2],q),ae=r[(q>>>0>>0?52:68)+B>>2],Mt=ae+1|0,Le=0,lt=on;;){e:{if(!(r[B+72>>2]<=(Z+Le|0)&ni[C+8>>2]>=Ht>>>0)){if(Ie[r[r[h+360>>2]+4>>2]](h,B,r[(r[B+4>>2]<<2)+d>>2],r[((p<<2)+C|0)+24>>2],lt,an,ae),b=r[B+52>>2],(ae|0)>=(b|0)||(D=(p+ae<<2)+C|0,y0(r[D+24>>2],b-ae<<7),b=r[B+52>>2],(ae|0)>=(b|0))||(a=ae,b-a&1&&(He[r[D+24>>2]>>1]=En[r[D+20>>2]>>1],a=Mt),(b|0)==(Mt|0)))break e;for(;D=(a+p<<2)+C|0,He[r[D+24>>2]>>1]=En[r[D+20>>2]>>1],He[r[D+28>>2]>>1]=En[r[D+24>>2]>>1],a=a+2|0,(b|0)!=(a|0););break e}if(a=(p<<2)+C|0,y0(r[a+24>>2],r[B+52>>2]<<7),b=r[B+52>>2],(b|0)<=0)break e;if(D=r[a+20>>2],mt=0,a=0,b>>>0>=4)for(wn=b&-4,fe=0;He[r[(a+p<<2)+ve>>2]>>1]=En[D>>1],He[r[((a|1)+p<<2)+ve>>2]>>1]=En[D>>1],He[r[((a|2)+p<<2)+ve>>2]>>1]=En[D>>1],He[r[((a|3)+p<<2)+ve>>2]>>1]=En[D>>1],a=a+4|0,fe=fe+4|0,(wn|0)!=(fe|0););if(fe=b&3,!fe)break e;for(;He[r[((a+p<<2)+C|0)+24>>2]>>1]=En[D>>1],a=a+1|0,mt=mt+1|0,(fe|0)!=(mt|0););}if(lt=lt+8|0,p=p+b|0,Le=Le+1|0,!((Le|0)>2]))break}a=r[h+244>>2]}if(Se=Se+1|0,!((Se|0)<(a|0)))break}if(!(Ie[r[r[h+364>>2]+4>>2]](h,ve)|0))return r[C+12>>2]=q,r[C+16>>2]=Z,0;if(q=q+1|0,!(We>>>0>=q>>>0))break}a=r[C+20>>2]}if(q=0,r[C+12>>2]=0,Z=Z+1|0,!((Z|0)<(a|0)))break}p=r[h+344>>2]}r[C+8>>2]=r[C+8>>2]+1;e:{if(r[h+244>>2]>=2){r[p+20>>2]=1;break e}if(d=r[h+248>>2],ni[p+8>>2]>2]-1>>>0){r[p+20>>2]=r[d+12>>2];break e}r[p+20>>2]=r[d+72>>2]}return r[p+12>>2]=0,r[p+16>>2]=0,1}function I4(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;C=r[h+436>>2];e:{t:{if(r[C+20>>2])break t;n:{r:switch(d=Ie[r[r[h+440>>2]+4>>2]](h)|0,d-1|0){case 1:break n;case 0:break r;default:break e}if(r[C+24>>2]){r[h+28>>2]<65501&r[h+32>>2]<=65500||(d=r[h>>2],r[d+20>>2]=41,r[d+24>>2]=65500,Ie[r[r[h>>2]>>2]](h)),d=r[h+212>>2],(d|0)!=8&&(p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=15,Ie[r[r[h>>2]>>2]](h)),a=r[h+36>>2],(a|0)>=11&&(d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=26,r[r[h>>2]+28>>2]=10,Ie[r[r[h>>2]>>2]](h),a=r[h+36>>2]),r[h+308>>2]=1,r[h+312>>2]=1;r:{if((a|0)<=0){r[h+316>>2]=8,p=1;break r}for(d=r[h+216>>2],p=1,D=1;;){b=r[d+8>>2];i:{if(b-5>>>0>=4294967292&&(B=r[d+12>>2],B-5>>>0>4294967291))break i;p=r[h>>2],r[p+20>>2]=18,Ie[r[p>>2]](h),a=r[h+36>>2],B=r[d+12>>2],p=r[h+312>>2],b=r[d+8>>2],D=r[h+308>>2]}if(p=(p|0)>(B|0)?p:B,r[h+312>>2]=p,D=(D|0)>(b|0)?D:b,r[h+308>>2]=D,d=d+84|0,q=q+1|0,!((q|0)<(a|0)))break}if(r[h+316>>2]=8,(a|0)<=0)break r;for(d=r[h+216>>2],p=0;r[d+36>>2]=8,a=r[h+308>>2]<<3,r[d+28>>2]=((a+Ce(r[d+8>>2],r[h+28>>2])|0)-1|0)/(a|0),a=r[h+312>>2]<<3,r[d+32>>2]=((a+Ce(r[d+12>>2],r[h+32>>2])|0)-1|0)/(a|0),a=r[h+420>>2]+(p<<2)|0,r[a+20>>2]=0,r[a+60>>2]=r[d+28>>2]-1,a=r[h+308>>2],r[d+40>>2]=((a+Ce(r[d+8>>2],r[h+28>>2])|0)-1|0)/(a|0),a=r[h+312>>2],a=((a+Ce(r[d+12>>2],r[h+32>>2])|0)-1|0)/(a|0)|0,r[d+76>>2]=0,r[d+48>>2]=1,r[d+44>>2]=a,d=d+84|0,p=p+1|0,(p|0)>2];);p=r[h+312>>2]}return d=p<<3,r[h+320>>2]=((d+r[h+32>>2]|0)-1|0)/(d|0),r[r[h+436>>2]+16>>2]=r[h+220>>2]!=0|r[h+328>>2]>2],r[C+24>>2]=0,1}return r[C+16>>2]||(d=r[h>>2],r[d+20>>2]=35,Ie[r[d>>2]](h)),jh(h),1}if(r[C+20>>2]=1,r[C+24>>2]){if(!r[r[h+440>>2]+16>>2])break t;d=r[h>>2],r[d+20>>2]=59,Ie[r[d>>2]](h);break t}if(d=r[h+144>>2],(d|0)>=r[h+152>>2])break t;r[h+152>>2]=d}d=2}return d|0}function Mp(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;!r[h+16>>2]|r[h+144>>2]<501||(Se=r[h>>2],b=te[3230]|te[3231]<<8|(te[3232]<<16|te[3233]<<24),B=te[3226]|te[3227]<<8|(te[3228]<<16|te[3229]<<24),Le=r[h+8>>2],d=r[Le+20>>2],h=d,F[h+1148|0]=B,F[h+1149|0]=B>>>8,F[h+1150|0]=B>>>16,F[h+1151|0]=B>>>24,F[h+1152|0]=b,F[h+1153|0]=b>>>8,F[h+1154|0]=b>>>16,F[h+1155|0]=b>>>24,q=te[3269]|te[3270]<<8|(te[3271]<<16|te[3272]<<24),h=te[3265]|te[3266]<<8|(te[3267]<<16|te[3268]<<24),a=d+1187|0,F[a|0]=h,We=h>>>8|0,F[a+1|0]=We,lt=h>>>16|0,F[a+2|0]=lt,mt=h>>>24|0,F[a+3|0]=mt,F[a+4|0]=q,Mt=q>>>8|0,F[a+5|0]=Mt,Ht=q>>>16|0,F[a+6|0]=Ht,on=q>>>24|0,F[a+7|0]=on,Z=te[3262]|te[3263]<<8|(te[3264]<<16|te[3265]<<24),a=te[3258]|te[3259]<<8|(te[3260]<<16|te[3261]<<24),p=d+1180|0,F[p|0]=a,F[p+1|0]=a>>>8,F[p+2|0]=a>>>16,F[p+3|0]=a>>>24,F[p+4|0]=Z,F[p+5|0]=Z>>>8,F[p+6|0]=Z>>>16,F[p+7|0]=Z>>>24,ae=te[3254]|te[3255]<<8|(te[3256]<<16|te[3257]<<24),p=te[3250]|te[3251]<<8|(te[3252]<<16|te[3253]<<24),C=d+1172|0,F[C|0]=p,F[C+1|0]=p>>>8,F[C+2|0]=p>>>16,F[C+3|0]=p>>>24,F[C+4|0]=ae,F[C+5|0]=ae>>>8,F[C+6|0]=ae>>>16,F[C+7|0]=ae>>>24,fe=te[3246]|te[3247]<<8|(te[3248]<<16|te[3249]<<24),C=te[3242]|te[3243]<<8|(te[3244]<<16|te[3245]<<24),D=d+1164|0,F[D|0]=C,F[D+1|0]=C>>>8,F[D+2|0]=C>>>16,F[D+3|0]=C>>>24,F[D+4|0]=fe,F[D+5|0]=fe>>>8,F[D+6|0]=fe>>>16,F[D+7|0]=fe>>>24,ve=te[3238]|te[3239]<<8|(te[3240]<<16|te[3241]<<24),D=te[3234]|te[3235]<<8|(te[3236]<<16|te[3237]<<24),d=d+1156|0,F[d|0]=D,F[d+1|0]=D>>>8,F[d+2|0]=D>>>16,F[d+3|0]=D>>>24,F[d+4|0]=ve,F[d+5|0]=ve>>>8,F[d+6|0]=ve>>>16,F[d+7|0]=ve>>>24,r[36960]=B,r[36961]=b,r[36962]=D,r[36963]=ve,r[36964]=C,r[36965]=fe,r[36966]=p,r[36967]=ae,r[36968]=a,r[36969]=Z,F[147879]=h,F[147880]=We,F[147881]=lt,F[147882]=mt,F[147883]=q,F[147884]=Mt,F[147885]=Ht,F[147886]=on,r[r[Le+20>>2]+1348>>2]=1,r[Se+292>>2]=0,Hu(Se+132|0,1),mr())}function Q2(h,d,a){var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0;if(C=a?d+16|0:d,d=(d<<2)+h|0,d=r[(a?d+104|0:d+88|0)>>2],d||(a=r[h>>2],r[a+24>>2]=C,r[a+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),!r[d+276>>2]){a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,F[D|0]=255,D=r[a+4>>2]-1|0,r[a+4>>2]=D;e:{if(D||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,F[D|0]=196,D=r[a+4>>2]-1|0,r[a+4>>2]=D;e:{if(D||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}p=te[d+16|0],b=te[d+15|0],B=te[d+14|0],q=te[d+13|0],Z=te[d+12|0],ae=te[d+11|0],fe=te[d+10|0],ve=te[d+9|0],Se=te[d+8|0],Le=te[d+7|0],We=te[d+6|0],lt=te[d+5|0],mt=te[d+4|0],Mt=te[d+3|0],Ht=te[d+2|0],on=te[d+1|0],a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,an=D,D=p+(b+(B+((((((((((((Ht+on|0)+Mt|0)+mt|0)+lt|0)+We|0)+Le|0)+Se|0)+ve|0)+fe|0)+ae|0)+Z|0)+q|0)|0)|0)|0,b=D+19|0,F[an|0]=b>>>8,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=b,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=C,C=r[a+4>>2]-1|0,r[a+4>>2]=C;e:{if(C||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}for(a=1;;){b=te[d+a|0],C=r[h+24>>2],p=r[C>>2],r[C>>2]=p+1,F[p|0]=b,p=r[C+4>>2]-1|0,r[C+4>>2]=p;e:{if(p||Ie[r[C+12>>2]](h)|0)break e;C=r[h>>2],r[C+20>>2]=24,Ie[r[C>>2]](h)}if(a=a+1|0,(a|0)==17)break}if(D)for(a=0;;){b=te[(d+a|0)+17|0],C=r[h+24>>2],p=r[C>>2],r[C>>2]=p+1,F[p|0]=b,p=r[C+4>>2]-1|0,r[C+4>>2]=p;e:{if(p||Ie[r[C+12>>2]](h)|0)break e;C=r[h>>2],r[C+20>>2]=24,Ie[r[C>>2]](h)}if(a=a+1|0,!(D>>>0>a>>>0))break}r[d+276>>2]=1}}function Of(h,d){var a=0,p=0,C=0,D=0,b=0;for(b=r[((d<<2)+h|0)+72>>2],b||(C=r[h>>2],r[C+24>>2]=d,r[C+20>>2]=52,Ie[r[r[h>>2]>>2]](h)),C=0;p=C,C=a<<1,C=En[(C|6)+b>>1]>255||En[(C|4)+b>>1]>255||En[(C|2)+b>>1]>255||En[C+b>>1]>255?1:p,a=a+4|0,(a|0)!=64;);if(!r[b+128>>2]){a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=255,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=219,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=0,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=C?-125:67,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=(C<<4)+d,d=r[a+4>>2]-1|0,r[a+4>>2]=d;e:{if(d||Ie[r[a+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=0;e:{if(!C)for(;;){D=te[(r[(d<<2)+9424>>2]<<1)+b|0],a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=D,p=r[a+4>>2]-1|0,r[a+4>>2]=p;t:{if(p||Ie[r[a+12>>2]](h)|0)break t;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(d=d+1|0,(d|0)==64)break e}for(;;){p=En[(r[(d<<2)+9424>>2]<<1)+b>>1],a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,F[D|0]=p>>>8,D=r[a+4>>2]-1|0,r[a+4>>2]=D;t:{if(D||Ie[r[a+12>>2]](h)|0)break t;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],D=r[a>>2],r[a>>2]=D+1,F[D|0]=p,p=r[a+4>>2]-1|0,r[a+4>>2]=p;t:{if(p||Ie[r[a+12>>2]](h)|0)break t;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}if(d=d+1|0,(d|0)==64)break}}r[b+128>>2]=1}return C}function jh(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0;p=1,d=r[h+328>>2];e:{t:{if((d|0)==1){d=r[h+332>>2],r[h+348>>2]=r[d+28>>2],a=r[d+32>>2],r[h+352>>2]=a,r[d+60>>2]=1,r[d+52>>2]=1,r[d+56>>2]=1,r[d+68>>2]=1,r[d+64>>2]=r[d+36>>2],D=d,d=r[d+12>>2],a=(a>>>0)%(d>>>0)|0,r[D+72>>2]=a||d,r[h+356>>2]=1,r[h+360>>2]=0;break t}if(d-5>>>0<=4294967291&&(a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=26,r[r[h>>2]+28>>2]=4,Ie[r[r[h>>2]>>2]](h)),d=r[h+308>>2]<<3,r[h+348>>2]=((d+r[h+28>>2]|0)-1|0)/(d|0),d=r[h+312>>2]<<3,d=((d+r[h+32>>2]|0)-1|0)/(d|0)|0,r[h+356>>2]=0,r[h+352>>2]=d,r[h+328>>2]<=0)break e;for(B=h+360|0;;){d=r[((C<<2)+h|0)+332>>2],p=r[d+8>>2],r[d+52>>2]=p,b=r[d+12>>2],r[d+56>>2]=b,a=Ce(p,b),r[d+60>>2]=a,r[d+64>>2]=Ce(p,r[d+36>>2]),D=ni[d+28>>2]%(p>>>0)|0,r[d+68>>2]=D||p,D=d,d=ni[d+32>>2]%(b>>>0)|0,r[D+72>>2]=d||b,(a+r[h+356>>2]|0)>=11&&(d=r[h>>2],r[d+20>>2]=13,Ie[r[d>>2]](h));n:{if((a|0)<=0)break n;if(p=0,d=a,b=d&3,b)for(;D=r[h+356>>2],r[h+356>>2]=D+1,r[((D<<2)+h|0)+360>>2]=C,d=d-1|0,p=p+1|0,(b|0)!=(p|0););if(a>>>0<4)break n;for(;a=r[h+356>>2],r[h+356>>2]=a+1,r[(a<<2)+B>>2]=C,a=r[h+356>>2],r[h+356>>2]=a+1,r[(a<<2)+B>>2]=C,a=r[h+356>>2],r[h+356>>2]=a+1,r[(a<<2)+B>>2]=C,a=r[h+356>>2],r[h+356>>2]=a+1,r[(a<<2)+B>>2]=C,a=d-5|0,d=d-4|0,a>>>0<4294967294;);}if(p=r[h+328>>2],C=C+1|0,!((p|0)>(C|0)))break}if((p|0)<=0)break e}for(d=0;C=r[((d<<2)+h|0)+332>>2],r[C+76>>2]||(a=r[C+16>>2],r[((a<<2)+h|0)+164>>2]&&a>>>0<=3||(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=52,Ie[r[r[h>>2]>>2]](h)),q=C,Z=D0(Ie[r[r[h+4>>2]>>2]](h,1,132)|0,r[((a<<2)+h|0)+164>>2],132),r[q+76>>2]=Z,p=r[h+328>>2]),d=d+1|0,(p|0)>(d|0););}Ie[r[r[h+444>>2]>>2]](h),Ie[r[r[h+428>>2]>>2]](h),r[r[h+436>>2]>>2]=r[r[h+428>>2]+4>>2]}function Gu(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;a=r[h+364>>2],d&&(d=r[h>>2],r[d+20>>2]=47,Ie[r[d>>2]](h));e:{if(r[h+228>>2]){if(d=r[h+316>>2],!r[h+324>>2]){if(!d){r[a+4>>2]=118;break e}r[a+4>>2]=119;break e}if(!d){r[a+4>>2]=120;break e}r[a+4>>2]=121;break e}r[a+4>>2]=122}if(r[h+244>>2]>0)for(;;){b=D<<2,p=r[(b+h|0)+248>>2];e:{t:{if(!(r[h+316>>2]|r[h+324>>2]&&r[h+228>>2])&&(d=r[p+20>>2],d>>>0>=16&&(C=r[h>>2],r[C+24>>2]=d,r[C+20>>2]=125,Ie[r[r[h>>2]>>2]](h)),C=(d<<2)+a|0,d=r[C+76>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,1,64)|0,r[C+76>>2]=d),F[d|0]=0,F[d+1|0]=0,F[d+2|0]=0,F[d+3|0]=0,F[d+4|0]=0,F[d+5|0]=0,F[d+6|0]=0,F[d+7|0]=0,F[d+56|0]=0,F[d+57|0]=0,F[d+58|0]=0,F[d+59|0]=0,F[d+60|0]=0,F[d+61|0]=0,F[d+62|0]=0,F[d+63|0]=0,F[d+48|0]=0,F[d+49|0]=0,F[d+50|0]=0,F[d+51|0]=0,F[d+52|0]=0,F[d+53|0]=0,F[d+54|0]=0,F[d+55|0]=0,F[d+40|0]=0,F[d+41|0]=0,F[d+42|0]=0,F[d+43|0]=0,F[d+44|0]=0,F[d+45|0]=0,F[d+46|0]=0,F[d+47|0]=0,F[d+32|0]=0,F[d+33|0]=0,F[d+34|0]=0,F[d+35|0]=0,F[d+36|0]=0,F[d+37|0]=0,F[d+38|0]=0,F[d+39|0]=0,F[d+24|0]=0,F[d+25|0]=0,F[d+26|0]=0,F[d+27|0]=0,F[d+28|0]=0,F[d+29|0]=0,F[d+30|0]=0,F[d+31|0]=0,F[d+16|0]=0,F[d+17|0]=0,F[d+18|0]=0,F[d+19|0]=0,F[d+20|0]=0,F[d+21|0]=0,F[d+22|0]=0,F[d+23|0]=0,F[d+8|0]=0,F[d+9|0]=0,F[d+10|0]=0,F[d+11|0]=0,F[d+12|0]=0,F[d+13|0]=0,F[d+14|0]=0,F[d+15|0]=0,d=a+b|0,r[d+52>>2]=0,r[d+36>>2]=0,!r[h+228>>2]))break t;if(!r[h+320>>2])break e}d=r[p+24>>2],d>>>0>=16&&(p=r[h>>2],r[p+24>>2]=d,r[p+20>>2]=125,Ie[r[r[h>>2]>>2]](h)),p=(d<<2)+a|0,d=r[p+140>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,1,256)|0,r[p+140>>2]=d),k(d,0,256)}if(D=D+1|0,!((D|0)>2]))break}r[a+28>>2]=11,r[a+32>>2]=-1,r[a+20>>2]=0,r[a+24>>2]=0,r[a+12>>2]=0,r[a+16>>2]=65536,h=r[h+200>>2],r[a+72>>2]=0,r[a+68>>2]=h}function zh(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0;for(on=hn-288|0,hn=on,lt=r[h+324>>2],d=r[d+80>>2],h=on;Z=He[d+48>>1],q=He[a+48>>1],ae=He[d+80>>1],B=He[a+80>>1],Le=He[d+112>>1],ve=He[a+112>>1],Se=He[d+16>>1],an=He[a+16>>1],mt=Ce(He[a>>1],He[d>>1])<<13|1024,fe=Ce(He[d+96>>1],He[a+96>>1]),Mt=mt+Ce(fe,-11586)|0,b=Ce(He[d+32>>1],He[a+32>>1]),D=Ce(He[d+64>>1],He[a+64>>1]),Ht=b-D|0,r[h+128>>2]=Mt+Ce(Ht,-11586)>>11,wn=Ce(D+b|0,10887),Zt=Ce(D,2012),D=mt+Ce(fe,5793)|0,fe=(wn-Zt|0)+D|0,ae=Ce(B,ae),B=Ce(Se,an),Se=Ce(ae+B|0,7447),Z=Ce(Ce(q,Z),-10033),q=Ce(ve,Le),Le=Ce(q+B|0,3962),ve=(Se-Z|0)+Le|0,r[h+256>>2]=fe-ve>>11,r[h>>2]=ve+fe>>11,ve=Mt+Ce(Ht,5793)|0,B=Ce(B-(q+ae|0)|0,10033),r[h+224>>2]=ve-B>>11,r[h+32>>2]=B+ve>>11,b=Ce(b,8875),B=b+(D-wn|0)|0,ae=Ce(ae-q|0,11409),q=Se+(Z-ae|0)|0,r[h+192>>2]=B-q>>11,r[h+64>>2]=B+q>>11,b=(D-b|0)+Zt|0,D=Le+(Z+ae|0)|0,r[h+160>>2]=b-D>>11,r[h+96>>2]=D+b>>11,h=h+4|0,d=d+2|0,a=a+2|0,We=We+1|0,(We|0)!=8;);for(d=lt+128|0,h=on,We=0;a=r[(We<<2)+p>>2]+C|0,b=r[h+20>>2],D=r[h+4>>2],Le=Ce(b+D|0,7447),ae=Ce(r[h+12>>2],-10033),B=r[h+28>>2],ve=Ce(B+D|0,3962),Se=(Le-ae|0)+ve|0,mt=(r[h>>2]<<13)+131072|0,fe=r[h+24>>2],lt=mt+Ce(fe,5793)|0,Z=r[h+16>>2],q=r[h+8>>2],an=Ce(Z+q|0,10887),Ht=Ce(Z,2012),Mt=lt+(an-Ht|0)|0,F[a|0]=te[d+(Se+Mt>>>18&1023)|0],F[a+8|0]=te[d+(Mt-Se>>>18&1023)|0],D=Ce(D-(B+b|0)|0,10033),Se=mt+Ce(fe,-11586)|0,Z=q-Z|0,fe=Se+Ce(Z,5793)|0,F[a+1|0]=te[d+(D+fe>>>18&1023)|0],F[a+7|0]=te[d+(fe-D>>>18&1023)|0],b=Ce(b-B|0,11409),D=Le+(ae-b|0)|0,B=Ce(q,8875),q=B+(lt-an|0)|0,F[a+2|0]=te[d+(D+q>>>18&1023)|0],F[a+6|0]=te[d+(q-D>>>18&1023)|0],b=ve+(b+ae|0)|0,D=Ht+(lt-B|0)|0,F[a+3|0]=te[d+(b+D>>>18&1023)|0],F[a+5|0]=te[d+(D-b>>>18&1023)|0],F[a+4|0]=te[d+(Se+Ce(Z,268423870)>>>18&1023)|0],h=h+32|0,We=We+1|0,(We|0)!=9;);hn=on+288|0}function Mf(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;C=hn-48|0,hn=C,fe=r[h+412>>2],D=r[h+444>>2],a=r[h+276>>2];e:{t:{if(!a){a=0;break t}if(r[D+40>>2])break t;if(a=r[h+440>>2],r[a+24>>2]=r[a+24>>2]+(r[D+16>>2]/8|0),r[D+16>>2]=0,!(Ie[r[a+8>>2]](h)|0))break e;if(r[h+328>>2]>0)for(a=0;r[((a<<2)+D|0)+24>>2]=0,a=a+1|0,(a|0)>2];);if(r[D+20>>2]=0,a=r[h+276>>2],r[D+40>>2]=a,r[h+416>>2])break t;r[D+8>>2]=0}if(!r[D+8>>2]){if(r[C+40>>2]=h,p=r[h+24>>2],B=r[p>>2],r[C+24>>2]=B,Z=r[p+4>>2],r[C+28>>2]=Z,a=r[D+16>>2],q=r[D+12>>2],r[C+16>>2]=r[D+36>>2],b=r[D+32>>2],r[C+8>>2]=r[D+28>>2],r[C+12>>2]=b,b=r[D+24>>2],r[C>>2]=r[D+20>>2],r[C+4>>2]=b,r[h+356>>2]>0){for(Z=0;;){p=Z<<2,ve=r[p+d>>2],ae=r[(h+p|0)+360>>2]<<2,p=r[((r[r[(ae+h|0)+332>>2]+20>>2]<<2)+D|0)+44>>2];t:{n:{if((a|0)<=7){if(b=0,!ms(C+24|0,q,a,0))break e;if(B=1,q=r[C+32>>2],a=r[C+36>>2],(a|0)<8)break n}if(b=r[(p+((q>>>a-8&255)<<2)|0)+148>>2],B=b>>8,(b|0)>2303)break n;p=b&255,a=a-B|0;break t}if(b=0,p=Fa(C+24|0,q,a,p,B),(p|0)<0)break e;q=r[C+32>>2],a=r[C+36>>2]}if(p){if((a|0)<(p|0)){if(!ms(C+24|0,q,a,p)){b=0;break e}q=r[C+32>>2],a=r[C+36>>2]}b=-1<>>a,p=B+((B|0)<1<>2],!((B|0)>=0&(p|0)>(B^2147483647))&((B|0)>=0|(p|0)>=(-2147483648-B|0))||(ae=r[h>>2],r[ae+20>>2]=6,Ie[r[ae>>2]](h)),p=p+B|0,r[b+4>>2]=p,He[ve>>1]=p<>2]))break}Z=r[C+28>>2],B=r[C+24>>2],p=r[h+24>>2]}r[p+4>>2]=Z,r[p>>2]=B,r[D+16>>2]=a,r[D+12>>2]=q,r[D+36>>2]=r[C+16>>2],d=r[C+12>>2],r[D+28>>2]=r[C+8>>2],r[D+32>>2]=d,d=r[C+4>>2],r[D+20>>2]=r[C>>2],r[D+24>>2]=d,a=r[h+276>>2]}if(b=1,!a)break e;r[D+40>>2]=r[D+40>>2]-1}return hn=C+48|0,b|0}function Ca(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;p=r[h>>2]+d|0,He[a>>1]=te[p|0]-128,He[a+2>>1]=te[p+1|0]-128,He[a+4>>1]=te[p+2|0]-128,He[a+6>>1]=te[p+3|0]-128,He[a+8>>1]=te[p+4|0]-128,He[a+10>>1]=te[p+5|0]-128,He[a+12>>1]=te[p+6|0]-128,He[a+14>>1]=te[p+7|0]-128,p=r[h+4>>2]+d|0,He[a+16>>1]=te[p|0]-128,He[a+18>>1]=te[p+1|0]-128,He[a+20>>1]=te[p+2|0]-128,He[a+22>>1]=te[p+3|0]-128,He[a+24>>1]=te[p+4|0]-128,He[a+26>>1]=te[p+5|0]-128,He[a+28>>1]=te[p+6|0]-128,He[a+30>>1]=te[p+7|0]-128,p=r[h+8>>2]+d|0,He[a+32>>1]=te[p|0]-128,He[a+34>>1]=te[p+1|0]-128,He[a+36>>1]=te[p+2|0]-128,He[a+38>>1]=te[p+3|0]-128,He[a+40>>1]=te[p+4|0]-128,He[a+42>>1]=te[p+5|0]-128,He[a+44>>1]=te[p+6|0]-128,He[a+46>>1]=te[p+7|0]-128,p=r[h+12>>2]+d|0,He[a+48>>1]=te[p|0]-128,He[a+50>>1]=te[p+1|0]-128,He[a+52>>1]=te[p+2|0]-128,He[a+54>>1]=te[p+3|0]-128,He[a+56>>1]=te[p+4|0]-128,He[a+58>>1]=te[p+5|0]-128,He[a+60>>1]=te[p+6|0]-128,He[a+62>>1]=te[p+7|0]-128,p=r[h+16>>2]+d|0,He[a+64>>1]=te[p|0]-128,He[a+66>>1]=te[p+1|0]-128,He[a+68>>1]=te[p+2|0]-128,He[a+70>>1]=te[p+3|0]-128,He[a+72>>1]=te[p+4|0]-128,He[a+74>>1]=te[p+5|0]-128,He[a+76>>1]=te[p+6|0]-128,He[a+78>>1]=te[p+7|0]-128,p=r[h+20>>2]+d|0,He[a+80>>1]=te[p|0]-128,He[a+82>>1]=te[p+1|0]-128,He[a+84>>1]=te[p+2|0]-128,He[a+86>>1]=te[p+3|0]-128,He[a+88>>1]=te[p+4|0]-128,He[a+90>>1]=te[p+5|0]-128,He[a+92>>1]=te[p+6|0]-128,He[a+94>>1]=te[p+7|0]-128,p=r[h+24>>2]+d|0,He[a+96>>1]=te[p|0]-128,He[a+98>>1]=te[p+1|0]-128,He[a+100>>1]=te[p+2|0]-128,He[a+102>>1]=te[p+3|0]-128,He[a+104>>1]=te[p+4|0]-128,He[a+106>>1]=te[p+5|0]-128,He[a+108>>1]=te[p+6|0]-128,He[a+110>>1]=te[p+7|0]-128,h=r[h+28>>2]+d|0,He[a+112>>1]=te[h|0]-128,He[a+114>>1]=te[h+1|0]-128,He[a+116>>1]=te[h+2|0]-128,He[a+118>>1]=te[h+3|0]-128,He[a+120>>1]=te[h+4|0]-128,He[a+122>>1]=te[h+5|0]-128,He[a+124>>1]=te[h+6|0]-128,He[a+126>>1]=te[h+7|0]-128}function Pp(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0;if(C=r[h+320>>2],b=r[h+428>>2],q=r[b+24>>2],a=r[b+28>>2],(q|0)<(a|0)){for(Mt=C-1|0,We=r[h+348>>2]-1|0,fe=b+32|0,D=r[b+20>>2];;){if(D>>>0<=We>>>0){for(;;){if(y0(r[fe>>2],r[h+356>>2]<<7),a=r[h+444>>2],r[a+8>>2]||(r[r[h+420>>2]+104>>2]=r[h+148>>2]),!(Ie[r[a+4>>2]](h,fe)|0))return r[b+20>>2]=D,r[b+24>>2]=q,0;a=r[h+420>>2];e:{if(ni[a+12>>2]>D>>>0|ni[a+16>>2]>>0||(a=r[h+328>>2],(a|0)<=0))break e;for(B=0,ve=0;;){p=r[((ve<<2)+h|0)+332>>2];t:{if(!r[p+48>>2]){B=r[p+60>>2]+B|0;break t}if(C=r[p+56>>2],(C|0)<=0)break t;if(Se=r[(D>>>0>>0?52:68)+p>>2],(Se|0)>0){for(Ht=Ce(r[p+64>>2],D-r[r[h+420>>2]+12>>2]|0),a=r[p+4>>2]<<2,lt=r[(a+r[h+448>>2]|0)+4>>2],Z=r[p+36>>2],ae=r[d+a>>2]+(Ce(Z,q)<<2)|0,on=Se&-2,an=Se&1,Le=0;;){if(!(r[p+72>>2]<=(q+Le|0)&ni[h+148>>2]>=Mt>>>0)){if(C=0,a=Ht,mt=0,(Se|0)!=1)for(;Ie[lt|0](h,p,r[(C+B<<2)+fe>>2],ae,a),a=r[p+36>>2]+a|0,Ie[lt|0](h,p,r[((C|1)+B<<2)+fe>>2],ae,a),C=C+2|0,Z=r[p+36>>2],a=a+Z|0,mt=mt+2|0,(on|0)!=(mt|0););an&&(Ie[lt|0](h,p,r[((C+B<<2)+b|0)+32>>2],ae,a),Z=r[p+36>>2]),C=r[p+56>>2]}if(ae=(Z<<2)+ae|0,B=r[p+52>>2]+B|0,Le=Le+1|0,!((Le|0)<(C|0)))break}a=r[h+328>>2];break t}B=Ce(r[p+52>>2],C)+B|0}if(ve=ve+1|0,!((ve|0)<(a|0)))break}}if(D=D+1|0,!(We>>>0>=D>>>0))break}a=r[b+28>>2]}if(D=0,r[b+20>>2]=0,q=q+1|0,!((q|0)<(a|0)))break}C=r[h+320>>2]}if(r[h+156>>2]=r[h+156>>2]+1,a=r[h+148>>2]+1|0,r[h+148>>2]=a,a>>>0>>0){d=r[h+428>>2];e:{if(r[h+328>>2]>=2){r[d+28>>2]=1;break e}if(h=r[h+332>>2],a>>>0>>0){r[d+28>>2]=r[h+12>>2];break e}r[d+28>>2]=r[h+72>>2]}return r[d+20>>2]=0,r[d+24>>2]=0,3}return Ie[r[r[h+436>>2]+12>>2]](h),4}function Wu(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0;e:{if((p|0)<=0)break e;if(B=r[h+460>>2],q=r[h+112>>2],b=r[h+120>>2],(b|0)<=0){for(;;)if(y0(r[(C<<2)+a>>2],q),r[B+84>>2]=!r[B+84>>2],C=C+1|0,(C|0)==(p|0))break e}if(mt=q+1|0,q){for(Zt=r[h+324>>2],We=0-b|0,on=q-1|0,ur=Ce(b,on);;){for(h=Mt<<2,an=h+a|0,y0(r[an>>2],q),Er=h+d|0,fe=0;;){ve=r[Er>>2]+fe|0,C=r[an>>2];t:{if(r[B+84>>2]){D=r[((fe<<2)+B|0)+68>>2]+(mt<<1)|0,C=C+on|0,ve=ve+ur|0,Ht=-1,h=We;break t}D=r[((fe<<2)+B|0)+68>>2],Ht=1,h=b}for(lt=h,h=fe<<2,x=r[h+r[B+16>>2]>>2],u=r[h+r[B+24>>2]>>2],Se=0,h=0,ae=q,Z=0;Le=(Ht<<1)+D|0,Se=te[(te[ve|0]+((He[Le>>1]+Se|0)+8>>4)|0)+Zt|0],wn=te[Se+u|0],F[C|0]=wn+te[C|0],m=D,D=Se-te[x+wn|0]|0,He[m>>1]=Ce(D,3)+Z,Se=Ce(D,7),Z=Ce(D,5)+h|0,C=C+Ht|0,ve=ve+lt|0,h=D,D=Le,ae=ae-1|0,!!ae;);if(He[D>>1]=Z,fe=fe+1|0,(b|0)==(fe|0))break}if(r[B+84>>2]=!r[B+84>>2],Mt=Mt+1|0,(Mt|0)==(p|0))break}break e}for(We=b&-4,q=b&3,lt=b>>>0<4,d=0;;){y0(r[(d<<2)+a>>2],0),Le=r[B+84>>2];t:{if(Le){if(Z=0,C=0,h=0,!lt)for(;ae=mt<<1,D=B+68|0,b=C<<2,He[ae+r[D+b>>2]>>1]=0,He[ae+r[D+(b|4)>>2]>>1]=0,He[ae+r[D+(b|8)>>2]>>1]=0,He[ae+r[D+(b|12)>>2]>>1]=0,C=C+4|0,h=h+4|0,(We|0)!=(h|0););if(!q)break t;for(;He[r[((C<<2)+B|0)+68>>2]+(mt<<1)>>1]=0,C=C+1|0,Z=Z+1|0,(q|0)!=(Z|0););break t}if(D=0,C=0,Z=0,!lt)for(;h=B+68|0,b=C<<2,He[r[h+b>>2]>>1]=0,He[r[h+(b|4)>>2]>>1]=0,He[r[h+(b|8)>>2]>>1]=0,He[r[h+(b|12)>>2]>>1]=0,C=C+4|0,Z=Z+4|0,(We|0)!=(Z|0););if(!q)break t;for(;He[r[((C<<2)+B|0)+68>>2]>>1]=0,C=C+1|0,D=D+1|0,(q|0)!=(D|0););}if(r[B+84>>2]=!Le,d=d+1|0,(p|0)==(d|0))break}}}function Pc(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;if(r[h+312>>2]>0)for(Mt=r[p>>2];;){mt=(lt<<2)+a|0,p=r[mt-4>>2],C=te[p+1|0],D=r[mt>>2],b=te[D+1|0],B=r[(We<<2)+Mt>>2],q=te[p|0]+Ce(te[D|0],3)|0,F[B|0]=(q<<2)+8>>>4,C=C+Ce(b,3)|0,F[B+1|0]=(C+Ce(q,3)|0)+7>>>4,Ht=We|1,Z=B+2|0,Le=r[d+40>>2],ve=Le-2|0;e:{if(!ve){D=B,b=C,C=q,ae=Z;break e}t:{if(!(Le&1)){Se=p+2|0,p=Z,b=C,fe=D+2|0;break t}b=te[p+2|0],fe=te[D+2|0],ae=q,q=Ce(C,3),F[B+2|0]=(ae+q|0)+8>>>4,b=b+Ce(fe,3)|0,F[B+3|0]=(q+b|0)+7>>>4,ve=Le-3|0,Se=p+3|0,ae=B+4|0,p=ae,q=C,B=Z,fe=D+3|0}if(D=Z,(Le|0)==3)break e;for(;C=te[Se|0],D=te[fe|0],Z=Ce(b,3),F[p|0]=(Z+q|0)+8>>>4,q=C+Ce(D,3)|0,F[B+3|0]=(Z+q|0)+7>>>4,C=te[Se+1|0],B=te[fe+1|0],D=Ce(q,3),F[p+2|0]=(D+b|0)+8>>>4,b=C+Ce(B,3)|0,F[p+3|0]=(D+b|0)+7>>>4,Se=Se+2|0,fe=fe+2|0,B=p+2|0,ae=p+4|0,p=ae,D=B,C=q,ve=ve-2|0,!!ve;);}F[ae|0]=(Ce(b,3)+C|0)+8>>>4,F[D+3|0]=(b<<2)+7>>>4,lt=lt+1|0,p=r[(lt<<2)+a>>2],C=te[p+1|0],D=r[mt>>2],b=te[D+1|0],B=r[(Ht<<2)+Mt>>2],q=te[p|0]+Ce(te[D|0],3)|0,F[B|0]=(q<<2)+8>>>4,C=C+Ce(b,3)|0,F[B+1|0]=(C+Ce(q,3)|0)+7>>>4,We=We+2|0,Z=B+2|0,Le=r[d+40>>2],ve=Le-2|0;e:{if(!ve){D=B,b=C,C=q,ae=Z;break e}t:{if(!(Le&1)){Se=p+2|0,p=Z,b=C,fe=D+2|0;break t}b=te[p+2|0],fe=te[D+2|0],ae=q,q=Ce(C,3),F[B+2|0]=(ae+q|0)+8>>>4,b=b+Ce(fe,3)|0,F[B+3|0]=(q+b|0)+7>>>4,ve=Le-3|0,Se=p+3|0,ae=B+4|0,p=ae,q=C,B=Z,fe=D+3|0}if(D=Z,(Le|0)==3)break e;for(;C=te[Se|0],D=te[fe|0],Z=Ce(b,3),F[p|0]=(Z+q|0)+8>>>4,q=C+Ce(D,3)|0,F[B+3|0]=(Z+q|0)+7>>>4,C=te[Se+1|0],B=te[fe+1|0],D=Ce(q,3),F[p+2|0]=(D+b|0)+8>>>4,b=C+Ce(B,3)|0,F[p+3|0]=(D+b|0)+7>>>4,Se=Se+2|0,fe=fe+2|0,B=p+2|0,ae=p+4|0,p=ae,D=B,C=q,ve=ve-2|0,!!ve;);}if(F[ae|0]=(Ce(b,3)+C|0)+8>>>4,F[D+3|0]=(b<<2)+7>>>4,!(r[h+312>>2]>(We|0)))break}}function O4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;Z=r[h+112>>2];e:{t:{n:{r:switch(B=r[h+36>>2],B-3|0){case 0:break n;case 1:break r;default:break t}if(!Z|(C|0)<=0)break e;for(Se=Z&-2,Le=Z&1;;){if(h=a<<2,q=r[h+r[d+12>>2]>>2],b=r[h+r[d+8>>2]>>2],B=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,ve=0,(Z|0)!=1)for(;F[h|0]=te[D+ae|0],F[h+1|0]=te[D+B|0],F[h+2|0]=te[D+b|0],F[h+3|0]=te[D+q|0],fe=D|1,F[h+4|0]=te[fe+ae|0],F[h+5|0]=te[B+fe|0],F[h+6|0]=te[b+fe|0],F[h+7|0]=te[q+fe|0],D=D+2|0,h=h+8|0,ve=ve+2|0,(Se|0)!=(ve|0););if(Le&&(F[h|0]=te[D+ae|0],F[h+1|0]=te[D+B|0],F[h+2|0]=te[D+b|0],F[h+3|0]=te[D+q|0]),a=a+1|0,p=p+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e}if(!Z|(C|0)<=0)break e;for(ve=Z&-2,Se=Z&1;;){if(h=a<<2,b=r[h+r[d+8>>2]>>2],B=r[h+r[d+4>>2]>>2],ae=r[h+r[d>>2]>>2],h=r[p>>2],D=0,q=0,(Z|0)!=1)for(;F[h|0]=te[D+ae|0],F[h+1|0]=te[D+B|0],F[h+2|0]=te[D+b|0],fe=D|1,F[h+3|0]=te[fe+ae|0],F[h+4|0]=te[B+fe|0],F[h+5|0]=te[b+fe|0],D=D+2|0,h=h+6|0,q=q+2|0,(ve|0)!=(q|0););if(Se&&(F[h|0]=te[D+ae|0],F[h+1|0]=te[D+B|0],F[h+2|0]=te[D+b|0]),a=a+1|0,p=p+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e}if(!Z|((C|0)<=0|(B|0)<=0))break e;for(ve=Z&-4,fe=Z&3,Se=Z-1>>>0<3;;){for(Z=C-1|0,b=0;;){if(ae=r[r[(b<<2)+d>>2]+(a<<2)>>2],D=r[p>>2],h=0,q=0,!Se)for(;F[D+b|0]=te[h+ae|0],D=D+B|0,F[D+b|0]=te[ae+(h|1)|0],D=D+B|0,F[D+b|0]=te[ae+(h|2)|0],D=D+B|0,F[D+b|0]=te[ae+(h|3)|0],h=h+4|0,D=D+B|0,q=q+4|0,(ve|0)!=(q|0););if(q=0,fe)for(;F[D+b|0]=te[h+ae|0],h=h+1|0,D=D+B|0,q=q+1|0,(fe|0)!=(q|0););if(b=b+1|0,(B|0)==(b|0))break}if(a=a+1|0,p=p+4|0,h=(C|0)>1,C=Z,!h)break}}}function Yr(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0;Z=r[h+424>>2];e:switch(d|0){case 0:t:{if(r[r[h+452>>2]+8>>2]){if(r[Z+4>>2]=250,lt=r[h+36>>2],(lt|0)>0)for(Se=r[h+316>>2],mt=Se-2|0,Mt=Se+2|0,Le=r[h+216>>2];;){h=We<<2,d=r[h+r[Z+60>>2]>>2],C=r[h+r[Z+56>>2]>>2],D=r[(h+Z|0)+8>>2],q=(Ce(r[Le+36>>2],r[Le+12>>2])|0)/(Se|0)|0,ae=Ce(Mt,q);n:{if((ae|0)<=0)break n;if(p=0,h=0,ae>>>0>=4)for(ve=ae&-4,fe=0;a=h<<2,b=r[a+D>>2],r[d+a>>2]=b,r[C+a>>2]=b,b=a|4,B=r[b+D>>2],r[d+b>>2]=B,r[C+b>>2]=B,b=a|8,B=r[b+D>>2],r[d+b>>2]=B,r[C+b>>2]=B,a=a|12,b=r[a+D>>2],r[d+a>>2]=b,r[C+a>>2]=b,h=h+4|0,fe=fe+4|0,(ve|0)!=(fe|0););if(fe=ae&3,!fe)break n;for(;a=h<<2,ae=r[a+D>>2],r[d+a>>2]=ae,r[C+a>>2]=ae,h=h+1|0,p=p+1|0,(fe|0)!=(p|0););}n:{if((q|0)<=0)break n;if(p=q<<1,fe=(p|0)<=1?1:p,b=fe&1,a=Ce(q,mt),ae=Ce(q,Se),h=0,(p|0)>=2)for(fe=fe&2147483646,p=0;B=h+a<<2,ve=h+ae<<2,r[B+d>>2]=r[ve+D>>2],r[d+ve>>2]=r[D+B>>2],B=h|1,ve=B+a<<2,B=B+ae<<2,r[ve+d>>2]=r[B+D>>2],r[d+B>>2]=r[D+ve>>2],h=h+2|0,p=p+2|0,(fe|0)!=(p|0););if(b&&(p=h+a<<2,h=h+ae<<2,r[p+d>>2]=r[h+D>>2],r[h+d>>2]=r[D+p>>2]),D=0,d=0,q>>>0>=4)for(p=q&-4,h=0;r[(d-q<<2)+C>>2]=r[C>>2],r[((d|1)-q<<2)+C>>2]=r[C>>2],r[((d|2)-q<<2)+C>>2]=r[C>>2],r[((d|3)-q<<2)+C>>2]=r[C>>2],d=d+4|0,h=h+4|0,(p|0)!=(h|0););if(h=q&3,!h)break n;for(;r[(d-q<<2)+C>>2]=r[C>>2],d=d+1|0,D=D+1|0,(h|0)!=(D|0););}if(Le=Le+84|0,We=We+1|0,(lt|0)==(We|0))break}r[Z+76>>2]=0,r[Z+64>>2]=0,r[Z+68>>2]=0;break t}r[Z+4>>2]=251}r[Z+48>>2]=0,r[Z+52>>2]=0;return;case 2:r[Z+4>>2]=252;return;default:break e}d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)}function M4(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;Z=r[h+28>>2];e:{t:{n:{r:switch(B=r[h+60>>2],B-3|0){case 0:break n;case 1:break r;default:break t}if(!Z|(C|0)<=0)break e;for(Se=Z&-2,Le=Z&1;;){if(h=p<<2,q=r[h+r[a+12>>2]>>2],b=r[h+r[a+8>>2]>>2],B=r[h+r[a+4>>2]>>2],ae=r[h+r[a>>2]>>2],h=r[d>>2],D=0,ve=0,(Z|0)!=1)for(;F[D+ae|0]=te[h|0],F[D+B|0]=te[h+1|0],F[D+b|0]=te[h+2|0],F[D+q|0]=te[h+3|0],fe=D|1,F[fe+ae|0]=te[h+4|0],F[B+fe|0]=te[h+5|0],F[b+fe|0]=te[h+6|0],F[q+fe|0]=te[h+7|0],D=D+2|0,h=h+8|0,ve=ve+2|0,(Se|0)!=(ve|0););if(Le&&(F[D+ae|0]=te[h|0],F[D+B|0]=te[h+1|0],F[D+b|0]=te[h+2|0],F[D+q|0]=te[h+3|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e}if(!Z|(C|0)<=0)break e;for(ve=Z&-2,Se=Z&1;;){if(h=p<<2,b=r[h+r[a+8>>2]>>2],B=r[h+r[a+4>>2]>>2],ae=r[h+r[a>>2]>>2],h=r[d>>2],D=0,q=0,(Z|0)!=1)for(;F[D+ae|0]=te[h|0],F[D+B|0]=te[h+1|0],F[D+b|0]=te[h+2|0],fe=D|1,F[fe+ae|0]=te[h+3|0],F[B+fe|0]=te[h+4|0],F[b+fe|0]=te[h+5|0],D=D+2|0,h=h+6|0,q=q+2|0,(ve|0)!=(q|0););if(Se&&(F[D+ae|0]=te[h|0],F[D+B|0]=te[h+1|0],F[D+b|0]=te[h+2|0]),p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}break e}if(!Z|((C|0)<=0|(B|0)<=0))break e;for(ve=Z&-4,fe=Z&3,Se=Z-1>>>0<3;;){for(Z=C-1|0,b=0;;){if(ae=r[r[(b<<2)+a>>2]+(p<<2)>>2],D=r[d>>2],h=0,q=0,!Se)for(;F[h+ae|0]=te[D+b|0],D=D+B|0,F[ae+(h|1)|0]=te[D+b|0],D=D+B|0,F[ae+(h|2)|0]=te[D+b|0],D=D+B|0,F[ae+(h|3)|0]=te[D+b|0],h=h+4|0,D=D+B|0,q=q+4|0,(ve|0)!=(q|0););if(q=0,fe)for(;F[h+ae|0]=te[D+b|0],h=h+1|0,D=D+B|0,q=q+1|0,(fe|0)!=(q|0););if(b=b+1|0,(B|0)==(b|0))break}if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=Z,!h)break}}}function k5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;a=r[h+20>>2],(a&-2)!=200&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),a=1;e:{t:{n:{r:{i:switch(p=r[h+20>>2],p-200|0){case 2:break e;case 3:case 4:case 5:case 6:case 7:case 8:case 10:break n;case 1:break r;case 0:break i;default:break t}Ie[r[r[h+436>>2]+4>>2]](h),Ie[r[r[h+24>>2]+8>>2]](h),r[h+20>>2]=201}if(a=Ie[r[r[h+436>>2]>>2]](h)|0,(a|0)!=1)break e;a=r[h+36>>2],p=a;r:{i:switch(a-1|0){case 2:if(p=2,a=3,r[h+280>>2])break r;if(r[h+292>>2]){a=2;a:{s:switch(C=te[h+296|0],C|0){case 1:break s;case 0:break r;default:break a}a=3;break r}a=r[h>>2],r[a+24>>2]=C,r[a+20>>2]=114,Ie[r[r[h>>2]+4>>2]](h,-1),a=3;break r}if(D=r[h+216>>2],C=r[D+168>>2],b=r[D+84>>2],D=r[D>>2],!((D|0)!=1|(b|0)!=2)&(C|0)==3)break r;if(!((D|0)!=82|(b|0)!=71|(C|0)!=66)){a=2;break r}a=r[h>>2],r[a+24>>2]=D,r[a+20>>2]=111,r[a+32>>2]=C,r[a+28>>2]=b,Ie[r[a+4>>2]](h,1),a=3;break r;case 3:if(p=4,!r[h+292>>2]){a=4;break r}a=4;a:{s:switch(C=te[h+296|0],C|0){case 2:break s;case 0:break r;default:break a}a=5;break r}a=r[h>>2],r[a+24>>2]=C,r[a+20>>2]=114,Ie[r[r[h>>2]+4>>2]](h,-1),a=5;break r;case 0:break r;default:break i}a=0,p=0}r[h+136>>2]=0,r[h+96>>2]=256,r[h+88>>2]=2,r[h+92>>2]=1,r[h+80>>2]=1,r[h+84>>2]=0,r[h+72>>2]=0,r[h+76>>2]=1,r[h+64>>2]=0,r[h+68>>2]=0,r[h+56>>2]=0,r[h+60>>2]=1072693248,r[h+48>>2]=1,r[h+52>>2]=1,r[h+44>>2]=p,r[h+40>>2]=a,r[h+108>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0,r[h+20>>2]=202,a=1;break e}a=Ie[r[r[h+436>>2]>>2]](h)|0;break e}a=r[h>>2],r[a+24>>2]=p,r[a+20>>2]=20,Ie[r[r[h>>2]>>2]](h),a=0}return(a|0)==2&&(d&&(d=r[h>>2],r[d+20>>2]=51,Ie[r[d>>2]](h)),qp(h)),a|0}function Hh(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;if(Z=hn-16|0,hn=Z,C=r[h+428>>2],r[h+328>>2]>0)for(;D=d<<2,p=r[(D+h|0)+332>>2],a=r[p+12>>2],Mt=D+Z|0,Ht=Ie[r[r[h+4>>2]+32>>2]](h,r[((r[p+4>>2]<<2)+C|0)+76>>2],Ce(a,r[h+148>>2]),a,1)|0,r[Mt>>2]=Ht,d=d+1|0,(d|0)>2];);p=r[C+28>>2],B=r[C+24>>2];e:{if((p|0)>(B|0))for(We=C+32|0,d=r[h+348>>2],b=r[C+20>>2];;){if(d>>>0>b>>>0){for(;;){if(ae=0,D=0,ve=r[h+328>>2],(ve|0)>0)for(;;){a=ae<<2,d=r[(a+h|0)+332>>2],Se=r[d+56>>2];t:{if((Se|0)<=0||(q=r[d+52>>2],(q|0)<=0))break t;for(lt=Ce(b,q),mt=r[a+Z>>2],Le=q&7,fe=0;;){if(d=r[(B+fe<<2)+mt>>2]+(lt<<7)|0,a=D,p=0,Le)for(;r[((a<<2)+C|0)+32>>2]=d,a=a+1|0,d=d+128|0,p=p+1|0,(Le|0)!=(p|0););if(D=D+q|0,q>>>0>=8)for(;p=(a<<2)+C|0,r[p+36>>2]=d+128,r[p+32>>2]=d,r[p+40>>2]=d+256,r[p+44>>2]=d+384,r[p+48>>2]=d+512,r[p+52>>2]=d+640,r[p+56>>2]=d+768,r[p+60>>2]=d+896,d=d+1024|0,a=a+8|0,(D|0)!=(a|0););if(fe=fe+1|0,(Se|0)==(fe|0))break}}if(ae=ae+1|0,(ve|0)==(ae|0))break}if(a=r[h+444>>2],r[a+8>>2]||(r[r[h+420>>2]+104>>2]=r[h+148>>2]),!(Ie[r[a+4>>2]](h,We)|0)){r[C+20>>2]=b,r[C+24>>2]=B,h=0;break e}if(d=r[h+348>>2],b=b+1|0,!(d>>>0>b>>>0))break}p=r[C+28>>2]}if(b=0,r[C+20>>2]=0,B=B+1|0,!((B|0)<(p|0)))break}if(D=r[h+148>>2]+1|0,r[h+148>>2]=D,d=r[h+320>>2],d>>>0>D>>>0){a=r[h+428>>2];t:{if(r[h+328>>2]>=2){r[a+28>>2]=1;break t}if(h=r[h+332>>2],D>>>0>>0){r[a+28>>2]=r[h+12>>2];break t}r[a+28>>2]=r[h+72>>2]}r[a+20>>2]=0,r[a+24>>2]=0,h=3;break e}Ie[r[r[h+436>>2]+12>>2]](h),h=4}return hn=Z+16|0,h|0}function mu(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0;d=r[h+404>>2],a=r[h+400>>2],a?d=(d|0)<(a|0)|(d|0)>63|r[h+328>>2]!=1:d=(d|0)!=0,p=r[h+444>>2],C=r[h+412>>2];e:{t:{if((C|0)>13||(D=r[h+408>>2],(D|0)!=0&(C|0)!=(D-1|0)))break t;if(!d)break e}d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=16,r[r[h>>2]+28>>2]=r[h+404>>2],r[r[h>>2]+32>>2]=r[h+408>>2],r[r[h>>2]+36>>2]=r[h+412>>2],Ie[r[r[h>>2]>>2]](h)}if(d=r[h+328>>2],(d|0)>0)for(C=0;;){for(d=r[h+160>>2],D=r[r[((C<<2)+h|0)+332>>2]+4>>2],q=d+(D<<8)|0,b=r[h+36>>2]+D<<8,!a|r[q>>2]>=0||(B=r[h>>2],r[B+24>>2]=D,r[B+20>>2]=115,r[r[h>>2]+28>>2]=0,Ie[r[r[h>>2]+4>>2]](h,-1)),B=d+b|0,d=r[h+400>>2],d=(d|0)>0?1:d;r[B+(d<<2)>>2]=r[h+144>>2]>=2?r[(d<<2)+q>>2]:0,b=r[h+404>>2],Z=(((b|0)<=9?9:b)|0)>(d|0),d=d+1|0,!!Z;);if(d=r[h+400>>2],(b|0)>=(d|0))for(;b=(d<<2)+q|0,B=r[b>>2],r[h+408>>2]!=(((B|0)>0?B:0)|0)&&(B=r[h>>2],r[B+24>>2]=D,r[B+20>>2]=115,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]+4>>2]](h,-1)),r[b>>2]=r[h+412>>2],b=r[h+404>>2]>(d|0),d=d+1|0,!!b;);if(d=r[h+328>>2],C=C+1|0,!((d|0)>(C|0)))break}r[p+4>>2]=r[h+408>>2]?a?238:239:a?240:241;e:{if((d|0)<=0)break e;if(C=p+44|0,d=0,!a){for(;;)if(r[h+408>>2]||(a=r[r[((d<<2)+h|0)+332>>2]+20>>2],Vh(h,1,a,C+(a<<2)|0)),r[((d<<2)+p|0)+24>>2]=0,d=d+1|0,!((d|0)>2]))break e}for(;D=d<<2,q=r[r[(D+h|0)+332>>2]+24>>2],a=q<<2,Vh(h,0,q,a+C|0),r[p+60>>2]=r[(a+p|0)+44>>2],r[(p+D|0)+24>>2]=0,d=d+1|0,(d|0)>2];);}r[p+8>>2]=0,r[p+12>>2]=0,r[p+16>>2]=0,r[p+20>>2]=0,r[p+40>>2]=r[h+276>>2]}function Rc(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;q=a+p|0,(!r[d>>2]||ni[d+12>>2]

>>0|q>>>0>ni[d+4>>2])&&(p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h)),p=r[d+24>>2];e:{if(p>>>0<=a>>>0&p+r[d+16>>2]>>>0>=q>>>0)break e;if(r[d+40>>2]||(p=r[h>>2],r[p+20>>2]=69,Ie[r[p>>2]](h)),r[d+36>>2]){b=r[d+16>>2];t:{if((b|0)<=0)break t;for(fe=d+48|0,Z=r[d+8>>2]<<7,B=Ce(Z,r[d+24>>2]),D=r[d+20>>2],p=0;;){if(b=b-p|0,D=(D|0)<(b|0)?D:b,b=r[d+24>>2]+p|0,ae=r[d+28>>2]-b|0,D=(D|0)<(ae|0)?D:ae,b=r[d+4>>2]-b|0,D=(D|0)<(b|0)?D:b,(D|0)<=0)break t;if(D=Ce(D,Z),Ie[r[d+52>>2]](h,fe,r[r[d>>2]+(p<<2)>>2],B,D),B=D+B|0,D=r[d+20>>2],p=D+p|0,b=r[d+16>>2],!((p|0)<(b|0)))break}}r[d+36>>2]=0}if(p=0,b=r[d+16>>2],B=q-b|0,B=ni[d+24>>2]>>0?a:(B|0)>0?B:0,r[d+24>>2]=B,(b|0)<=0)break e;for(fe=d+48|0,Z=r[d+8>>2]<<7,B=Ce(Z,B),D=r[d+20>>2];;){if(b=b-p|0,D=(D|0)<(b|0)?D:b,b=r[d+24>>2]+p|0,ae=r[d+28>>2]-b|0,D=(D|0)<(ae|0)?D:ae,b=r[d+4>>2]-b|0,D=(D|0)<(b|0)?D:b,(D|0)<=0)break e;if(D=Ce(D,Z),Ie[r[d+48>>2]](h,fe,r[r[d>>2]+(p<<2)>>2],B,D),B=D+B|0,D=r[d+20>>2],p=D+p|0,b=r[d+16>>2],!((p|0)<(b|0)))break}}p=r[d+28>>2];e:{t:{n:{if(q>>>0<=p>>>0)break n;r:{i:{a:{if(a>>>0>p>>>0){if(p=a,!C)break a;p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h),p=a;break i}if(C)break i}if(r[d+32>>2])break r;p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h);break e}if(r[d+28>>2]=q,!r[d+32>>2])break t}if(h=r[d+24>>2],p=p-h|0,h=q-h|0,p>>>0>=h>>>0)break n;for(B=r[d+8>>2]<<7;y0(r[r[d>>2]+(p<<2)>>2],B),p=p+1|0,(h|0)!=(p|0););}if(!C)break e}r[d+36>>2]=1}return r[d>>2]+(a-r[d+24>>2]<<2)|0}function y5(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;q=a+p|0,(!r[d>>2]||ni[d+12>>2]

>>0|q>>>0>ni[d+4>>2])&&(p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h)),p=r[d+24>>2];e:{if(p>>>0<=a>>>0&p+r[d+16>>2]>>>0>=q>>>0)break e;if(r[d+40>>2]||(p=r[h>>2],r[p+20>>2]=69,Ie[r[p>>2]](h)),r[d+36>>2]){b=r[d+16>>2];t:{if((b|0)<=0)break t;for(fe=d+48|0,Z=r[d+8>>2],B=Ce(Z,r[d+24>>2]),D=r[d+20>>2],p=0;;){if(b=b-p|0,D=(D|0)<(b|0)?D:b,b=r[d+24>>2]+p|0,ae=r[d+28>>2]-b|0,D=(D|0)<(ae|0)?D:ae,b=r[d+4>>2]-b|0,D=(D|0)<(b|0)?D:b,(D|0)<=0)break t;if(D=Ce(D,Z),Ie[r[d+52>>2]](h,fe,r[r[d>>2]+(p<<2)>>2],B,D),B=D+B|0,D=r[d+20>>2],p=D+p|0,b=r[d+16>>2],!((p|0)<(b|0)))break}}r[d+36>>2]=0}if(p=0,b=r[d+16>>2],B=q-b|0,B=ni[d+24>>2]>>0?a:(B|0)>0?B:0,r[d+24>>2]=B,(b|0)<=0)break e;for(fe=d+48|0,Z=r[d+8>>2],B=Ce(Z,B),D=r[d+20>>2];;){if(b=b-p|0,D=(D|0)<(b|0)?D:b,b=r[d+24>>2]+p|0,ae=r[d+28>>2]-b|0,D=(D|0)<(ae|0)?D:ae,b=r[d+4>>2]-b|0,D=(D|0)<(b|0)?D:b,(D|0)<=0)break e;if(D=Ce(D,Z),Ie[r[d+48>>2]](h,fe,r[r[d>>2]+(p<<2)>>2],B,D),B=D+B|0,D=r[d+20>>2],p=D+p|0,b=r[d+16>>2],!((p|0)<(b|0)))break}}p=r[d+28>>2];e:{t:{n:{if(q>>>0<=p>>>0)break n;r:{i:{a:{if(a>>>0>p>>>0){if(p=a,!C)break a;p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h),p=a;break i}if(C)break i}if(r[d+32>>2])break r;p=r[h>>2],r[p+20>>2]=22,Ie[r[p>>2]](h);break e}if(r[d+28>>2]=q,!r[d+32>>2])break t}if(h=r[d+24>>2],p=p-h|0,h=q-h|0,p>>>0>=h>>>0)break n;for(B=r[d+8>>2];y0(r[r[d>>2]+(p<<2)>>2],B),p=p+1|0,(h|0)!=(p|0););}if(!C)break e}r[d+36>>2]=1}return r[d>>2]+(a-r[d+24>>2]<<2)|0}function Pf(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;B=r[d+28>>2],Z=r[h+236>>2];e:{if((Z|0)<-1||(ae=r[h+28>>2],q=(B<<4)-ae|0,(q|0)<=0))break e;if(D=a-4|0,C=Z+2|0,fe=C&3,Z+1>>>0>=3)for(Z=C&-4;b=ve<<2,C=ae+r[b+D>>2]|0,k(C,te[C-1|0],q),C=ae+r[a+b>>2]|0,k(C,te[C-1|0],q),C=ae+r[D+(b|8)>>2]|0,k(C,te[C-1|0],q),C=ae+r[D+(b|12)>>2]|0,k(C,te[C-1|0],q),ve=ve+4|0,Se=Se+4|0,(Z|0)!=(Se|0););if(!fe)break e;for(;C=ae+r[D+(ve<<2)>>2]|0,k(C,te[C-1|0],q),ve=ve+1|0,Le=Le+1|0,(fe|0)!=(Le|0););}if(r[d+12>>2]>0)for(h=r[h+192>>2],lt=h<<4,mt=Ce(h,-80)+16384|0,h=(B<<3)-2|0,ve=0,ae=0;;){for(C=ve<<2,D=r[(C|4)+a>>2],C=a+C|0,b=r[C>>2],Le=te[D|0]+te[b|0]|0,fe=r[(ae<<2)+p>>2],ve=ve+2|0,Se=r[(ve<<2)+a>>2],Z=te[Se|0],B=r[C-4>>2],C=te[B|0],F[fe|0]=(Ce(te[D+1|0]+(Le+te[b+1|0]|0)|0,mt)+Ce((((Z+C|0)+te[B+2|0]|0)+te[Se+2|0]|0)+(te[D+2|0]+(te[b+2|0]+(te[Se+1|0]+(Z+(te[B+1|0]+(C+Le|0)|0)|0)|0)|0)<<1)|0,lt)|0)+32768>>>16,We=fe+1|0,Le=b+2|0,Se=Se+2|0,fe=B+2|0,Z=D+2|0,C=h;q=Z,D=Le,b=fe,B=Se,F[We|0]=(Ce((te[q|0]+(te[D+1|0]+te[D|0]|0)|0)+te[q+1|0]|0,mt)+Ce((((te[b+2|0]+te[b-1|0]|0)+(te[q+2|0]+(te[q-1|0]+(te[D+2|0]+(te[D-1|0]+((te[B|0]+(te[b+1|0]+te[b|0]|0)|0)+te[B+1|0]|0)|0)|0)|0)<<1)|0)+te[B-1|0]|0)+te[B+2|0]|0,lt)|0)+32768>>>16,We=We+1|0,Se=B+2|0,fe=b+2|0,Z=q+2|0,Le=D+2|0,C=C-1|0,!!C;);if(fe=te[q+3|0]+te[D+3|0]|0,Z=te[B+3|0],C=te[b+3|0],F[We|0]=(Ce(te[q+2|0]+(fe+te[D+2|0]|0)|0,mt)+Ce((te[B+1|0]+(te[b+1|0]+(Z+C|0)|0)|0)+(te[q+1|0]+(te[D+1|0]+(Z+(te[B+2|0]+(C+(fe+te[b+2|0]|0)|0)|0)|0)|0)<<1)|0,lt)|0)+32768>>>16,ae=ae+1|0,!((ae|0)>2]))break}}function $u(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;C=hn-32|0,hn=C,Se=r[h+412>>2],Z=r[h+404>>2],D=r[h+444>>2],a=r[h+276>>2];e:{t:{if(!a){a=0;break t}if(r[D+40>>2])break t;if(a=r[h+440>>2],r[a+24>>2]=r[a+24>>2]+(r[D+16>>2]/8|0),r[D+16>>2]=0,!(Ie[r[a+8>>2]](h)|0))break e;if(r[h+328>>2]>0)for(a=0;r[((a<<2)+D|0)+24>>2]=0,a=a+1|0,(a|0)>2];);if(r[D+20>>2]=0,a=r[h+276>>2],r[D+40>>2]=a,r[h+416>>2])break t;r[D+8>>2]=0}if(!r[D+8>>2]){p=r[D+20>>2];t:{if(p){p=p-1|0;break t}r[C+24>>2]=h,a=r[h+24>>2],r[C+8>>2]=r[a>>2],r[C+12>>2]=r[a+4>>2],a=r[D+16>>2],b=r[D+12>>2],q=r[h+400>>2],p=0;n:{if((Z|0)<(q|0))break n;for(ae=r[D+60>>2],Le=r[d>>2];;){r:{i:{if((a|0)<=7){if(p=0,!ms(C+8|0,b,a,0))break e;if(B=1,b=r[C+16>>2],a=r[C+20>>2],(a|0)<8)break i}if(d=r[(((b>>>a-8&255)<<2)+ae|0)+148>>2],B=d>>8,(d|0)>2303)break i;d=d&255,a=a-B|0;break r}if(p=0,d=Fa(C+8|0,b,a,ae,B),(d|0)<0)break e;b=r[C+16>>2],a=r[C+20>>2]}B=d>>>4|0;r:{if(p=d&15,p){if((a|0)<(p|0)){if(!ms(C+8|0,b,a,p)){p=0;break e}b=r[C+16>>2],a=r[C+20>>2]}fe=-1<>>a,d=B+q|0,He[(r[(d<<2)+9424>>2]<<1)+Le>>1]=ve+((ve|0)<1<>>0>=16){if((a|0)<(B|0)){if(!ms(C+8|0,b,a,B)){p=0;break e}b=r[C+16>>2],a=r[C+20>>2]}a=a-B|0,p=p+(p-1&b>>>a)|0}p=p-1|0;break n}if(q=d+1|0,!((d|0)<(Z|0)))break}p=0}d=r[h+24>>2],r[d>>2]=r[C+8>>2],r[d+4>>2]=r[C+12>>2],r[D+16>>2]=a,r[D+12>>2]=b,a=r[h+276>>2]}r[D+20>>2]=p}if(p=1,!a)break e;r[D+40>>2]=r[D+40>>2]-1}return hn=C+32|0,p|0}function w5(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;for(Ht=hn-208|0,hn=Ht,lt=r[h+324>>2],h=r[d+80>>2],d=Ht;q=He[h+80>>1],B=He[a+80>>1],Le=He[h+16>>1],ve=He[a+16>>1],mt=He[h+48>>1],Se=He[a+48>>1],Z=Ce(He[a>>1],He[h>>1])<<13|1024,ae=Ce(He[h+64>>1],He[a+64>>1]),D=Ce(He[h+96>>1],He[a+96>>1]),b=Ce(He[h+32>>1],He[a+32>>1]),We=D+b|0,r[d+84>>2]=Z+Ce(ae-We|0,11585)>>11,q=Ce(B,q),B=Ce(Le,ve),Le=Ce(q+B|0,5027),We=Z+Ce(We,10438)|0,ve=Ce(ae-D|0,7223),fe=We+(ve+Ce(D,-637)|0)|0,D=Ce(Se,mt),mt=Ce(D+B|0,7663),B=Ce(B-D|0,1395),Se=Le+(mt-B|0)|0,r[d+168>>2]=fe-Se>>11,r[d>>2]=Se+fe>>11,fe=Ce(b,-20239),b=Ce(b-ae|0,2578),Se=We+(fe+b|0)|0,D=Ce(D+q|0,-11295),q=D+(Le+Ce(q,15326)|0)|0,r[d+112>>2]=Se-q>>11,r[d+56>>2]=q+Se>>11,ae=ve+(b+(Z+Ce(ae,-15083)|0)|0)|0,D=D+(B+mt|0)|0,r[d+140>>2]=ae-D>>11,r[d+28>>2]=D+ae>>11,d=d+4|0,h=h+2|0,a=a+2|0,Mt=Mt+1|0,(Mt|0)!=7;);for(h=lt+128|0,a=Ht,ae=0;D=r[a+16>>2],b=r[a+24>>2],Z=Ce(D-b|0,7223),d=r[(ae<<2)+p>>2]+C|0,q=r[a+12>>2],B=r[a+4>>2],lt=Ce(q+B|0,7663),ve=Ce(B-q|0,1395),fe=B,B=r[a+20>>2],mt=Ce(fe+B|0,5027),Se=(lt-ve|0)+mt|0,Mt=Z+Ce(b,-637)|0,Le=(r[a>>2]<<13)+131072|0,fe=b,b=r[a+8>>2],We=fe+b|0,fe=Le+Ce(We,10438)|0,Mt=Mt+fe|0,F[d|0]=te[h+(Se+Mt>>>18&1023)|0],F[d+6|0]=te[h+(Mt-Se>>>18&1023)|0],q=Ce(B+q|0,-11295),lt=q+(ve+lt|0)|0,ve=Ce(b-D|0,2578),Z=Z+(ve+(Le+Ce(D,-15083)|0)|0)|0,F[d+1|0]=te[h+(lt+Z>>>18&1023)|0],F[d+5|0]=te[h+(Z-lt>>>18&1023)|0],Z=q+(mt+Ce(B,15326)|0)|0,b=fe+(ve+Ce(b,-20239)|0)|0,F[d+2|0]=te[h+(Z+b>>>18&1023)|0],F[d+4|0]=te[h+(b-Z>>>18&1023)|0],F[d+3|0]=te[h+(Le+Ce(D-We|0,11585)>>>18&1023)|0],a=a+28|0,ae=ae+1|0,(ae|0)!=7;);hn=Ht+208|0}function ju(h,d){var a=0,p=0,C=0,D=0;C=r[h+364>>2],_4(h),a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=255,p=r[a+4>>2]-1|0,r[a+4>>2]=p;e:{if(p||Ie[r[a+12>>2]](h)|0)break e;a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)}a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=d-48,d=r[a+4>>2]-1|0,r[a+4>>2]=d;e:{if(d||Ie[r[a+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}if(r[h+244>>2]>0)for(d=0;;){D=d<<2,p=r[(D+h|0)+248>>2];e:{t:{if(!(r[h+316>>2]|r[h+324>>2]&&r[h+228>>2])&&(a=r[((r[p+20>>2]<<2)+C|0)+76>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,a=C+D|0,r[a+52>>2]=0,r[a+36>>2]=0,!r[h+228>>2]))break t;if(!r[h+320>>2])break e}k(r[((r[p+24>>2]<<2)+C|0)+140>>2],0,256)}if(d=d+1|0,!((d|0)>2]))break}r[C+28>>2]=11,r[C+32>>2]=-1,r[C+20>>2]=0,r[C+24>>2]=0,r[C+12>>2]=0,r[C+16>>2]=65536}function Rp(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;if(Z=hn-16|0,hn=Z,C=r[h+344>>2],p=r[h+244>>2],(p|0)>0)for(;D=a<<2,p=r[(D+h|0)+248>>2],d=r[p+12>>2],Mt=D+Z|0,Ht=Ie[r[r[h+4>>2]+32>>2]](h,r[((r[p+4>>2]<<2)+C|0)- -64>>2],Ce(d,r[C+8>>2]),d,0)|0,r[Mt>>2]=Ht,a=a+1|0,p=r[h+244>>2],(a|0)<(p|0););d=r[C+20>>2],B=r[C+16>>2];e:{if((d|0)>(B|0)){for(We=C+24|0,a=r[h+264>>2],b=r[C+12>>2];;){if(a>>>0>b>>>0){for(;;){if(ae=0,D=0,ve=r[h+244>>2],(ve|0)>0)for(;;){d=ae<<2,a=r[(d+h|0)+248>>2],Se=r[a+56>>2];t:{if((Se|0)<=0||(q=r[a+52>>2],(q|0)<=0))break t;for(lt=Ce(b,q),mt=r[d+Z>>2],Le=q&7,fe=0;;){if(a=r[(B+fe<<2)+mt>>2]+(lt<<7)|0,d=D,p=0,Le)for(;r[((d<<2)+C|0)+24>>2]=a,d=d+1|0,a=a+128|0,p=p+1|0,(Le|0)!=(p|0););if(D=D+q|0,q>>>0>=8)for(;p=(d<<2)+C|0,r[p+28>>2]=a+128,r[p+24>>2]=a,r[p+32>>2]=a+256,r[p+36>>2]=a+384,r[p+40>>2]=a+512,r[p+44>>2]=a+640,r[p+48>>2]=a+768,r[p+52>>2]=a+896,a=a+1024|0,d=d+8|0,(D|0)!=(d|0););if(fe=fe+1|0,(Se|0)==(fe|0))break}}if(ae=ae+1|0,(ve|0)==(ae|0))break}if(!(Ie[r[r[h+364>>2]+4>>2]](h,We)|0)){r[C+12>>2]=b,r[C+16>>2]=B,h=0;break e}if(a=r[h+264>>2],b=b+1|0,!(a>>>0>b>>>0))break}d=r[C+20>>2]}if(b=0,r[C+12>>2]=0,B=B+1|0,!((B|0)<(d|0)))break}p=r[h+244>>2]}r[C+8>>2]=r[C+8>>2]+1,d=r[h+344>>2];t:{if((p|0)>=2){r[d+20>>2]=1;break t}if(D=r[h+248>>2],ni[d+8>>2]>2]-1>>>0){r[d+20>>2]=r[D+12>>2];break t}r[d+20>>2]=r[D+72>>2]}r[d+12>>2]=0,r[d+16>>2]=0,h=1}return hn=Z+16|0,h|0}function Gn(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0,x=0,u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;e:{if((p|0)>0){if(b=r[h+460>>2],Le=r[h+112>>2],q=Ce(Le,3),We=q+3|0,!Le)break e;for(mt=r[h+324>>2],C=r[h+136>>2],M=r[C+8>>2],O=r[C+4>>2],A=r[C>>2],Mt=r[b+40>>2],G=r[b+24>>2],H=Le-1|0,Y=q-3|0;;){C=Ht<<2,q=r[C+a>>2],Z=r[d+C>>2];t:{if(r[b+36>>2]){q=q+H|0,Z=Z+Y|0,fe=-3,ur=-1,D=0,C=r[b+32>>2]+(We<<1)|0;break t}fe=3,D=1,ur=1,C=r[b+32>>2]}for(r[b+36>>2]=D,Q=fe+2|0,re=fe+1|0,ve=0,ae=0,Se=0,Er=0,x=0,u=0,on=0,an=0,wn=Le,Zt=0;m=(fe<<1)+C|0,ve=te[(r[((He[m>>1]+ve|0)+8>>4<<2)+Mt>>2]+te[Z|0]|0)+mt|0],B=ve>>>3|0,ae=te[(r[((He[(re<<1)+C>>1]+ae|0)+8>>4<<2)+Mt>>2]+te[Z+1|0]|0)+mt|0],lt=ae>>>2|0,Se=te[(r[((He[(Q<<1)+C>>1]+Se|0)+8>>4<<2)+Mt>>2]+te[Z+2|0]|0)+mt|0],y=Se>>>3|0,S=(r[(B<<2)+G>>2]+(lt<<6)|0)+(y<<1)|0,D=En[S>>1],D||(wp(h,B,lt,y),D=En[S>>1]),D=(D&65535)-1|0,F[q|0]=D,lt=te[D+A|0],B=te[D+O|0],D=Se-te[D+M|0]|0,He[C+4>>1]=Ce(D,3)+Zt,B=ae-B|0,He[C+2>>1]=Ce(B,3)+an,ae=C,C=ve-lt|0,He[ae>>1]=Ce(C,3)+on,q=q+ur|0,Z=Z+fe|0,Se=Ce(D,7),ae=Ce(B,7),ve=Ce(C,7),Zt=Ce(D,5)+u|0,an=Ce(B,5)+x|0,on=Ce(C,5)+Er|0,Er=C,x=B,u=D,C=m,wn=wn-1|0,!!wn;);if(He[C+4>>1]=Zt,He[C+2>>1]=an,He[C>>1]=on,Ht=Ht+1|0,(Ht|0)==(p|0))break}}return}if(h=r[b+36>>2],(p|0)!=1){for(a=r[b+32>>2],d=a+((h?0:We)<<1)|0,a=a+((h?We:0)<<1)|0,C=p&-2;He[a+4>>1]=0,He[a>>1]=0,He[a+2>>1]=0,He[d+4>>1]=0,He[d>>1]=0,He[d+2>>1]=0,D=D+2|0,(C|0)!=(D|0););h=(h|0)!=0}p&1&&(d=r[b+32>>2]+((h?We:0)<<1)|0,He[d+4>>1]=0,He[d>>1]=0,He[d+2>>1]=0,h=!h),r[b+36>>2]=h}function Ap(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;for(Se=r[h+324>>2],h=r[d+80>>2],b=hn-128|0,d=b,q=8;;){if((q|0)!=4){e:{t:{if(D=En[a+32>>1],B=He[a+16>>1],(D|B)&65535||(D=0,En[a+48>>1]|En[a+80>>1]|(En[a+96>>1]|En[a+112>>1])))break t;D=Ce(He[a>>1],He[h>>1])<<2,r[d+64>>2]=D,r[d+32>>2]=D,r[d>>2]=D,B=24;break e}D=Ce(Ce(He[a+96>>1],He[h+96>>1]),-6270)+Ce(Ce(He[h+32>>1],D<<16>>16),15137)|0,Z=Ce(He[a>>1],He[h>>1])<<14,ae=(D+Z|0)+2048|0,fe=Ce(He[h+80>>1],He[a+80>>1]),ve=Ce(He[h+112>>1],He[a+112>>1]),Le=Ce(He[h+48>>1],He[a+48>>1]),B=Ce(B,He[h+16>>1]),We=((Ce(fe,-4926)+Ce(ve,-4176)|0)+Ce(Le,7373)|0)+Ce(B,20995)|0,r[d+96>>2]=ae-We>>12,r[d>>2]=ae+We>>12,D=(Z-D|0)+2048|0,B=((Ce(fe,11893)+Ce(ve,-1730)|0)+Ce(Le,-17799)|0)+Ce(B,8697)|0,r[d+32>>2]=D+B>>12,D=D-B>>12,B=16}r[(B<<2)+d>>2]=D}if(d=d+4|0,h=h+2|0,a=a+2|0,D=q>>>0>1,q=q-1|0,!D)break}for(d=Se+128|0,a=b,q=0;;){h=r[(q<<2)+p>>2]+C|0;e:{t:{if(b=r[a+8>>2],D=r[a+4>>2],b|D||(b=0,r[a+12>>2]|r[a+20>>2]|(r[a+24>>2]|r[a+28>>2])))break t;b=Ce(te[d+(r[a>>2]+16>>>5&1023)|0],16843009),F[h|0]=b,F[h+1|0]=b>>>8,F[h+2|0]=b>>>16,F[h+3|0]=b>>>24;break e}b=Ce(r[a+24>>2],-6270)+Ce(b,15137)|0,B=r[a>>2]<<14,Se=(b+B|0)+262144|0,Z=r[a+28>>2],ae=r[a+20>>2],fe=r[a+12>>2],ve=((Ce(Z,-4176)+Ce(D,20995)|0)+Ce(ae,-4926)|0)+Ce(fe,7373)|0,F[h|0]=te[d+(Se+ve>>>19&1023)|0],F[h+3|0]=te[d+(Se-ve>>>19&1023)|0],b=(B-b|0)+262144|0,D=((Ce(Z,-1730)+Ce(D,8697)|0)+Ce(ae,11893)|0)+Ce(fe,-17799)|0,F[h+1|0]=te[d+(b+D>>>19&1023)|0],F[h+2|0]=te[d+(b-D>>>19&1023)|0]}if(a=a+32|0,q=q+1|0,(q|0)==4)break}}function Go(h,d){var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;e:{if(!h){h=Io(d);break e}if(!d){J(h),h=0;break e}t:{if(d>>>0>4294967239)break t;B=d>>>0<=8?8:d+3&-4,d=B+8|0;n:{r:{ae=h-4|0,D=ae,C=r[D>>2],a=C+D|0,Z=r[a>>2],b=Z+a|0;i:{a:{if(r[b-4>>2]!=(Z|0)){if(p=d+D|0,p+16>>>0<=b>>>0){C=r[a+4>>2],r[C+8>>2]=r[a+8>>2],r[r[a+8>>2]+4>>2]=C,a=b-p|0,r[p>>2]=a,r[(p+(a&-4)|0)-4>>2]=a|1,C=r[p>>2]-8|0;s:{if(C>>>0<=127){a=(C>>>3|0)-1|0;break s}if(b=Q0(C),a=((C>>>29-b^4)-(b<<2)|0)+110|0,C>>>0<=4095)break s;a=((C>>>30-b^2)-(b<<1)|0)+71|0,a=a>>>0>=63?63:a}C=a<<4,r[p+4>>2]=C+149216,C=C+149224|0,r[p+8>>2]=r[C>>2],r[C>>2]=p,r[r[p+8>>2]+4>>2]=p,C=r[37563],p=a&31,(a&63)>>>0>=32?(a=1<>>32-p),r[37562]=b|r[37562],r[37563]=a|C,r[D>>2]=d;break r}if(p>>>0>b>>>0)break a;d=r[a+4>>2],r[d+8>>2]=r[a+8>>2],r[r[a+8>>2]+4>>2]=d,d=C+Z|0,r[D>>2]=d;break r}if(C>>>0>=d+16>>>0){r[D>>2]=d,r[(D+(d&-4)|0)-4>>2]=d,p=d+D|0,d=C-d|0,r[p>>2]=d,r[(p+(d&-4)|0)-4>>2]=d|1,a=r[p>>2]-8|0;s:{if(a>>>0<=127){d=(a>>>3|0)-1|0;break s}if(D=Q0(a),d=((a>>>29-D^4)-(D<<2)|0)+110|0,a>>>0<=4095)break s;d=((a>>>30-D^2)-(D<<1)|0)+71|0,d=d>>>0>=63?63:d}a=d<<4,r[p+4>>2]=a+149216,a=a+149224|0,r[p+8>>2]=r[a>>2],r[a>>2]=p,r[r[p+8>>2]+4>>2]=p,a=r[37563],p=d&31,(d&63)>>>0>=32?(d=1<>>32-p),r[37562]=C|r[37562],r[37563]=d|a,p=1;break n}if(p=1,d>>>0<=C>>>0)break i}p=0}break n}r[(D+(d&-4)|0)-4>>2]=d,p=1}if(p)break e;if(d=Io(B),!d)break t;q=r[ae>>2]-8|0,D0(d,h,B>>>0>>0?B:q),J(h),q=d}h=q}return h}function Lp(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;if(C=r[h+444>>2],r[h+276>>2]){if(p=r[C+56>>2],!p){if(Ie[r[r[h+440>>2]+8>>2]](h)|0||(p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)),r[h+328>>2]>0)for(;;){p=D<<2,b=r[(p+h|0)+332>>2];e:{t:{if(r[h+220>>2]){if(r[h+400>>2])break t;if(r[h+408>>2])break e}if(a=r[(C+(r[b+20>>2]<<2)|0)+60>>2],F[a|0]=0,F[a+1|0]=0,F[a+2|0]=0,F[a+3|0]=0,F[a+4|0]=0,F[a+5|0]=0,F[a+6|0]=0,F[a+7|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,F[a+63|0]=0,F[a+48|0]=0,F[a+49|0]=0,F[a+50|0]=0,F[a+51|0]=0,F[a+52|0]=0,F[a+53|0]=0,F[a+54|0]=0,F[a+55|0]=0,F[a+40|0]=0,F[a+41|0]=0,F[a+42|0]=0,F[a+43|0]=0,F[a+44|0]=0,F[a+45|0]=0,F[a+46|0]=0,F[a+47|0]=0,F[a+32|0]=0,F[a+33|0]=0,F[a+34|0]=0,F[a+35|0]=0,F[a+36|0]=0,F[a+37|0]=0,F[a+38|0]=0,F[a+39|0]=0,F[a+24|0]=0,F[a+25|0]=0,F[a+26|0]=0,F[a+27|0]=0,F[a+28|0]=0,F[a+29|0]=0,F[a+30|0]=0,F[a+31|0]=0,F[a+16|0]=0,F[a+17|0]=0,F[a+18|0]=0,F[a+19|0]=0,F[a+20|0]=0,F[a+21|0]=0,F[a+22|0]=0,F[a+23|0]=0,F[a+8|0]=0,F[a+9|0]=0,F[a+10|0]=0,F[a+11|0]=0,F[a+12|0]=0,F[a+13|0]=0,F[a+14|0]=0,F[a+15|0]=0,p=C+p|0,r[p+40>>2]=0,r[p+24>>2]=0,!r[h+220>>2])break t;if(!r[h+400>>2])break e}k(r[(C+(r[b+24>>2]<<2)|0)+124>>2],0,256)}if(D=D+1|0,!((D|0)>2]))break}r[C+20>>2]=-16,r[C+12>>2]=0,r[C+16>>2]=0,p=r[h+276>>2]}r[C+56>>2]=p-1}if(r[h+356>>2]>0)for(b=C+188|0,C=1<>2],D=0;Jr(h,b)&&(p=r[(D<<2)+d>>2],He[p>>1]=C|En[p>>1]),D=D+1|0,(D|0)>2];);return 1}function Wl(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;ve=r[d+28>>2]<<3,fe=r[h+232>>2]/r[d+8>>2]|0,D=r[h+236>>2],b=r[d+12>>2],Le=(D|0)/(b|0)|0,We=Ce(fe,Le),lt=(We|0)/2|0;e:{if((D|0)<=0||(C=r[h+28>>2],Z=Ce(fe,ve)-C|0,(Z|0)<=0))break e;if(b=0,h=0,D>>>0>=4)for(Se=D&-4;B=h<<2,q=C+r[B+a>>2]|0,k(q,te[q-1|0],Z),q=C+r[(B|4)+a>>2]|0,k(q,te[q-1|0],Z),q=C+r[(B|8)+a>>2]|0,k(q,te[q-1|0],Z),B=C+r[(B|12)+a>>2]|0,k(B,te[B-1|0],Z),h=h+4|0,ae=ae+4|0,(Se|0)!=(ae|0););if(ae=D&3,ae)for(;D=C+r[(h<<2)+a>>2]|0,k(D,te[D-1|0],Z),h=h+1|0,b=b+1|0,(ae|0)!=(b|0););b=r[d+12>>2]}e:{if(!ve|(b|0)<=0)break e;if((Le|0)>0){if((fe|0)>0){for(Mt=fe&-8,q=fe&7,Z=0,Ht=fe>>>0<8,D=0;;){for(B=r[(D<<2)+p>>2],Se=0,mt=0;;){for(b=0,ae=0;;){if(h=r[(Z+ae<<2)+a>>2]+Se|0,C=0,!Ht)for(;b=te[h+7|0]+(te[h+6|0]+(te[h+5|0]+(te[h+4|0]+(te[h+3|0]+(te[h+2|0]+(te[h+1|0]+(te[h|0]+b|0)|0)|0)|0)|0)|0)|0)|0,h=h+8|0,C=C+8|0,(Mt|0)!=(C|0););if(C=0,q)for(;b=te[h|0]+b|0,h=h+1|0,C=C+1|0,(q|0)!=(C|0););if(ae=ae+1|0,(Le|0)==(ae|0))break}if(F[B|0]=(b+lt|0)/(We|0),Se=fe+Se|0,B=B+1|0,mt=mt+1|0,(mt|0)==(ve|0))break}if(Z=Z+Le|0,D=D+1|0,!((D|0)>2]))break}break e}for(a=(lt|0)/(We|0)|0,h=0;k(r[(h<<2)+p>>2],a,ve),h=h+1|0,(h|0)>2];);break e}for(a=(lt|0)/(We|0)|0,h=0;k(r[(h<<2)+p>>2],a,ve),h=h+1|0,(h|0)>2];);}}function C5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0;C=r[h+364>>2],r[C+20>>2]=d,r[C+40>>2]=h,a=r[h+316>>2];e:{if(!r[h+324>>2]){r[C+4>>2]=a?129:130,r[C+12>>2]=132;break e}if(!a){r[C+4>>2]=133;break e}if(r[C+4>>2]=134,r[C+16>>2]=136,r[C+72>>2])break e;b=C,B=Ie[r[r[h+4>>2]>>2]](h,1,1e3)|0,r[b+72>>2]=B}e:{if(!d){if(r[C+8>>2]=137,d=0,r[h+244>>2]<=0)break e;if(a=!a,a){for(;;)if(p=d<<2,D=r[(p+h|0)+248>>2],r[(C+p|0)+44>>2]=0,r[h+324>>2]||(p=r[D+20>>2],Wi(h,a,p,((p<<2)+C|0)+84|0)),d=d+1|0,!((d|0)>2]))break e}for(;p=d<<2,D=r[(p+h|0)+248>>2],r[(C+p|0)+44>>2]=0,p=r[D+24>>2],r[C+60>>2]=p,Wi(h,a,p,((p<<2)+C|0)+84|0),d=d+1|0,(d|0)>2];);break e}if(r[C+8>>2]=138,d=0,r[h+244>>2]<=0)break e;if(!a){for(;;)if(a=d<<2,p=r[(a+h|0)+248>>2],r[(C+a|0)+44>>2]=0,r[h+324>>2]||(a=r[p+20>>2],a>>>0>=4&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),p=(a<<2)+C|0,a=r[p+100>>2],a||(a=Ie[r[r[h+4>>2]>>2]](h,1,1028)|0,r[p+100>>2]=a),k(a,0,1028)),d=d+1|0,!((d|0)>2]))break e}for(;a=d<<2,p=r[(a+h|0)+248>>2],r[(C+a|0)+44>>2]=0,a=r[p+24>>2],r[C+60>>2]=a,a>>>0>=4&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),p=(a<<2)+C|0,a=r[p+100>>2],a||(a=Ie[r[r[h+4>>2]>>2]](h,1,1028)|0,r[p+100>>2]=a),k(a,0,1028),d=d+1|0,(d|0)>2];);}r[C+32>>2]=0,r[C+36>>2]=0,r[C+64>>2]=0,r[C+68>>2]=0,h=r[h+200>>2],r[C+80>>2]=0,r[C+76>>2]=h}function N1(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0;if(Le=r[p+4>>2],B=a<<2,fe=r[B+r[d+8>>2]>>2],lt=r[B+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],B=r[d+4>>2],d=r[h+140>>2],C=r[((d&3)<<2)+143824>>2],We=r[((d+1&3)<<2)+143824>>2],d=r[h+324>>2],p=r[p>>2],D=r[h+452>>2],on=r[D+28>>2],an=r[D+24>>2],wn=r[D+20>>2],Zt=r[D+16>>2],mt=r[h+112>>2],mt>>>0>=2)for(Mt=mt>>>1|0;D=C&255,b=te[a|0],q=D+b|0,ae=te[lt|0]<<2,h=r[ae+wn>>2],Se=te[d+(q+h|0)|0],Z=b,ve=D>>>1|0,b=te[fe|0]<<2,D=r[b+an>>2]+r[ae+on>>2]>>16,ae=te[d+(Z+(ve+D|0)|0)|0],b=r[b+Zt>>2],Ht=te[d+(b+q|0)|0],Z=te[a+1|0],ve=C>>>8&255,q=Z+ve|0,He[p+2>>1]=te[d+(Z+(D+(ve>>>1|0)|0)|0)|0]<<3&2016|te[d+(q+b|0)|0]<<8&63488|te[d+(h+q|0)|0]>>>3,He[p>>1]=ae<<3&2016|Ht<<8&63488|Se>>>3,q=We&255,ae=te[B|0],Se=q+ae|0,Ht=te[d+(Se+h|0)|0],Se=te[d+(b+Se|0)|0],ae=te[d+(ae+(D+(q>>>1|0)|0)|0)|0],Z=te[B+1|0],ve=We>>>8&255,q=Z+ve|0,He[Le+2>>1]=te[d+(Z+(D+(ve>>>1|0)|0)|0)|0]<<3&2016|te[d+(q+b|0)|0]<<8&63488|te[d+(h+q|0)|0]>>>3,He[Le>>1]=ae<<3&2016|Se<<8&63488|Ht>>>3,Le=Le+4|0,We=Uc(We),B=B+2|0,p=p+4|0,C=Uc(C),a=a+2|0,fe=fe+1|0,lt=lt+1|0,Mt=Mt-1|0,!!Mt;);mt&1&&(a=te[a|0],C=C&255,h=a+C|0,b=p,Z=C>>>1|0,p=te[fe|0]<<2,C=te[lt|0]<<2,fe=r[p+an>>2]+r[C+on>>2]>>16,Z=te[d+(a+(Z+fe|0)|0)|0]<<3&2016,a=r[p+Zt>>2],p=r[C+wn>>2],He[b>>1]=Z|te[d+(a+h|0)|0]<<8&63488|te[d+(p+h|0)|0]>>>3,B=te[B|0],C=We&255,h=B+C|0,He[Le>>1]=te[d+(B+(fe+(C>>>1|0)|0)|0)|0]<<3&2016|te[d+(h+a|0)|0]<<8&63488|te[d+(h+p|0)|0]>>>3)}function $l(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;r[h+4>>2]=0,(d|0)!=62&&(p=r[h>>2],r[p+20>>2]=12,r[p+24>>2]=62,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]>>2]](h)),(a|0)!=464&&(d=r[h>>2],r[d+20>>2]=21,r[d+24>>2]=464,r[r[h>>2]+28>>2]=a,Ie[r[r[h>>2]>>2]](h)),a=r[h>>2],p=r[h+12>>2],d=k(h,0,464),r[d+16>>2]=1,r[d+12>>2]=p,r[d>>2]=a,ie(d),r[d+304>>2]=0,r[d+24>>2]=0,r[d+8>>2]=0,r[d+164>>2]=0,r[d+168>>2]=0,r[d+172>>2]=0,r[d+176>>2]=0,r[d+180>>2]=0,r[d+184>>2]=0,r[d+188>>2]=0,r[d+192>>2]=0,r[d+196>>2]=0,r[d+200>>2]=0,r[d+204>>2]=0,r[d+208>>2]=0,h=Ie[r[r[d+4>>2]>>2]](d,0,172)|0,r[d+440>>2]=h,r[h+96>>2]=0,r[h+100>>2]=0,r[h+28>>2]=59,r[h+8>>2]=60,r[h+4>>2]=61,r[h>>2]=62,r[h+104>>2]=0,r[h+36>>2]=59,r[h+40>>2]=59,r[h+108>>2]=0,r[h+112>>2]=0,r[h+44>>2]=59,r[h+48>>2]=59,r[h+116>>2]=0,r[h+120>>2]=0,r[h+52>>2]=59,r[h+56>>2]=59,r[h+124>>2]=0,r[h+128>>2]=0,r[h+60>>2]=59,r[h+132>>2]=0,r[h- -64>>2]=59,r[h+136>>2]=0,r[h+140>>2]=0,r[h+68>>2]=59,r[h+72>>2]=59,r[h+76>>2]=59,r[h+80>>2]=59,r[h+144>>2]=0,r[h+148>>2]=0,r[h+84>>2]=59,r[h+152>>2]=0,r[h+156>>2]=0,r[h+160>>2]=0,r[h+92>>2]=59,r[h+32>>2]=63,r[h+88>>2]=63,r[d+416>>2]=0,r[d+144>>2]=0,r[d+216>>2]=0,h=r[d+440>>2],r[h+164>>2]=0,r[h+24>>2]=0,r[h+12>>2]=0,r[h+16>>2]=0,h=Ie[r[r[d+4>>2]>>2]](d,0,28)|0,r[d+436>>2]=h,r[h+24>>2]=1,r[h+16>>2]=0,r[h+20>>2]=0,r[h+12>>2]=64,r[h+8>>2]=65,r[h+4>>2]=66,r[h>>2]=67,r[d+20>>2]=200,h=Ie[r[r[d+4>>2]>>2]](d,0,124)|0,r[d+420>>2]=h,k(h,0,124)}function P4(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0;if(d=r[h+428>>2],r[d+16>>2]){fe=d;e:{t:{if(!r[h+160>>2]|(!r[h+80>>2]|!r[h+220>>2])||(p=r[d+116>>2],p||(p=Ie[r[r[h+4>>2]>>2]](h,1,Ce(r[h+36>>2],80))|0,r[d+116>>2]=p),b=r[h+36>>2],(b|0)<=0))break t;for(C=Ce(b,40)+p|0,Z=r[h+216>>2];;){if(d=r[Z+76>>2],!d|!En[d>>1]|(!En[d+2>>1]|!En[d+16>>1])||!En[d+32>>1]|!En[d+18>>1]|(!En[d+4>>1]|!En[d+6>>1])||!En[d+48>>1]|(!En[d+20>>1]|!En[d+34>>1])||(B=r[h+160>>2],a=B+(q<<8)|0,d=r[a>>2],(d|0)<0))break t;if(D=B+(b+q<<8)|0,r[p>>2]=d,r[C+4>>2]=r[h+144>>2]<2?-1:r[D+4>>2],r[p+4>>2]=r[a+4>>2],ve=r[a+4>>2],r[C+8>>2]=r[h+144>>2]<2?-1:r[D+8>>2],r[p+8>>2]=r[a+8>>2],Se=r[a+8>>2],r[C+12>>2]=r[h+144>>2]<2?-1:r[D+12>>2],r[p+12>>2]=r[a+12>>2],Le=r[a+12>>2],r[C+16>>2]=r[h+144>>2]<2?-1:r[D+16>>2],r[p+16>>2]=r[a+16>>2],We=r[a+16>>2],r[C+20>>2]=r[h+144>>2]<2?-1:r[D+20>>2],r[p+20>>2]=r[a+20>>2],lt=r[a+20>>2],r[C+24>>2]=r[h+144>>2]<2?-1:r[D+24>>2],r[p+24>>2]=r[a+24>>2],b=r[a+24>>2],r[C+28>>2]=r[h+144>>2]<2?-1:r[D+28>>2],r[p+28>>2]=r[a+28>>2],B=r[a+28>>2],r[C+32>>2]=r[h+144>>2]<2?-1:r[D+32>>2],r[p+32>>2]=r[a+32>>2],d=r[a+32>>2],r[C+36>>2]=r[h+144>>2]<2?-1:r[D+36>>2],r[p+36>>2]=r[a+36>>2],ae=r[a+36>>2]|d|(B|(ve|Se|Le|We|lt|b))?1:ae,Z=Z+84|0,C=C+40|0,p=p+40|0,b=r[h+36>>2],q=q+1|0,!((b|0)>(q|0)))break}if(d=248,ae)break e}d=244}r[fe+12>>2]=d}r[h+156>>2]=0}function vu(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0;d=r[h+244>>2];e:{if((d|0)==1){d=r[h+248>>2],r[h+264>>2]=r[d+28>>2],a=r[d+32>>2],r[h+268>>2]=a,r[d+68>>2]=1,r[d+60>>2]=1,r[d+64>>2]=8,r[d+52>>2]=1,r[d+56>>2]=1,p=d,d=r[d+12>>2],a=(a>>>0)%(d>>>0)|0,r[p+72>>2]=a||d,r[h+272>>2]=1,r[h+276>>2]=0;break e}if(d-5>>>0<=4294967291&&(a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=26,r[r[h>>2]+28>>2]=4,Ie[r[r[h>>2]>>2]](h)),d=r[h+232>>2]<<3,r[h+264>>2]=((d+r[h+28>>2]|0)-1|0)/(d|0),d=r[h+236>>2]<<3,d=((d+r[h+32>>2]|0)-1|0)/(d|0)|0,r[h+272>>2]=0,r[h+268>>2]=d,r[h+244>>2]<=0)break e;for(B=h+276|0;;){a=r[((D<<2)+h|0)+248>>2],C=r[a+8>>2],r[a+52>>2]=C,b=r[a+12>>2],r[a+56>>2]=b,r[a+64>>2]=C<<3,d=Ce(C,b),r[a+60>>2]=d,p=ni[a+28>>2]%(C>>>0)|0,r[a+68>>2]=p||C,p=a,a=ni[a+32>>2]%(b>>>0)|0,r[p+72>>2]=a||b,(d+r[h+272>>2]|0)>=11&&(a=r[h>>2],r[a+20>>2]=13,Ie[r[a>>2]](h));t:{if((d|0)<=0)break t;if(C=0,a=d,b=d&3,b)for(;p=r[h+272>>2],r[h+272>>2]=p+1,r[((p<<2)+h|0)+276>>2]=D,a=a-1|0,C=C+1|0,(b|0)!=(C|0););if(d>>>0<4)break t;for(;d=r[h+272>>2],r[h+272>>2]=d+1,r[(d<<2)+B>>2]=D,d=r[h+272>>2],r[h+272>>2]=d+1,r[(d<<2)+B>>2]=D,d=r[h+272>>2],r[h+272>>2]=d+1,r[(d<<2)+B>>2]=D,d=r[h+272>>2],r[h+272>>2]=d+1,r[(d<<2)+B>>2]=D,d=a-5|0,a=a-4|0,d>>>0<4294967294;);}if(D=D+1|0,!((D|0)>2]))break}}d=r[h+204>>2],(d|0)>0&&(a=h,h=Ce(d,r[h+264>>2]),r[a+200>>2]=(h|0)>=65535?65535:h)}function _5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;for(We=7,ae=7,d=h;a=He[d+8>>1],b=He[d+6>>1],B=a+b|0,D=He[d+14>>1],q=He[d>>1],fe=D+q|0,p=B+fe|0,Z=He[d+12>>1],C=He[d+2>>1],Se=Z+C|0,ve=He[d+10>>1],Le=He[d+4>>1],lt=ve+Le|0,mt=Se+lt|0,He[d+8>>1]=p-mt<<2,He[d>>1]=p+mt<<2,a=b-a|0,b=q-D|0,D=Ce(a+b|0,-7373)+1024|0,q=C-Z|0,C=q+a|0,p=Le-ve|0,ve=p+b|0,Z=Ce(C+ve|0,9633),C=Z+Ce(C,-16069)|0,He[d+14>>1]=C+(D+Ce(a,2446)|0)>>>11,B=fe-B|0,fe=Se-lt|0,a=Ce(B+fe|0,4433)+1024|0,He[d+12>>1]=a+Ce(fe,134202591)>>>11,He[d+4>>1]=a+Ce(B,6270)>>>11,a=Ce(p+q|0,-20995)+1024|0,B=a+Ce(p,16819)|0,p=Z+Ce(ve,-3196)|0,He[d+10>>1]=B+p>>>11,He[d+6>>1]=C+(a+Ce(q,25172)|0)>>>11,He[d+2>>1]=p+(D+Ce(b,12299)|0)>>>11,a=ae,ae=a-1|0,d=d+16|0,!!a;);for(;d=He[h+64>>1],ae=He[h+48>>1],p=d+ae|0,a=He[h+112>>1],b=He[h>>1],Z=a+b|0,D=p+Z|0,q=He[h+80>>1],B=He[h+32>>1],fe=q+B|0,C=He[h+96>>1],Se=He[h+16>>1],ve=C+Se|0,Le=fe+ve|0,He[h+64>>1]=(D-Le|0)+2>>>2,He[h>>1]=(D+Le|0)+2>>>2,d=ae-d|0,ae=b-a|0,a=Ce(d+ae|0,-7373)+16384|0,b=Se-C|0,C=b+d|0,D=B-q|0,B=D+ae|0,q=Ce(C+B|0,9633),C=q+Ce(C,-16069)|0,He[h+112>>1]=C+(a+Ce(d,2446)|0)>>>15,p=Z-p|0,Z=ve-fe|0,d=Ce(p+Z|0,4433)+16384|0,He[h+96>>1]=d+Ce(Z,2147468511)>>>15,He[h+32>>1]=d+Ce(p,6270)>>>15,d=Ce(D+b|0,-20995)+16384|0,p=d+Ce(D,16819)|0,D=q+Ce(B,-3196)|0,He[h+80>>1]=p+D>>>15,He[h+48>>1]=C+(d+Ce(b,25172)|0)>>>15,He[h+16>>1]=D+(a+Ce(ae,12299)|0)>>>15,d=We,We=d-1|0,h=h+2|0,!!d;);}function T2(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0,Zt=0,ur=0,Er=0;if((C|0)>0)for(B=r[h+324>>2],D=r[h+456>>2],We=r[D+20>>2],lt=r[D+16>>2],mt=r[D+12>>2],Mt=r[D+8>>2],Se=r[((r[h+140>>2]&3)<<2)+143920>>2],on=r[d+8>>2],an=r[d+4>>2],wn=r[d>>2],Le=r[h+112>>2];;){if(D=a<<2,h=r[D+on>>2],d=r[D+an>>2],D=r[D+wn>>2],ae=r[p>>2],ae&3&&(b=te[D|0],ve=Se&255,Z=b+ve|0,q=b+(ve>>>1|0)|0,b=te[h|0]<<2,ve=te[d|0]<<2,He[ae>>1]=te[(q+(r[b+lt>>2]+r[ve+We>>2]>>16)|0)+B|0]<<3&2016|te[(Z+r[b+Mt>>2]|0)+B|0]<<8&63488|te[(Z+r[ve+mt>>2]|0)+B|0]>>>3,Le=Le-1|0,ae=ae+2|0,d=d+1|0,D=D+1|0,h=h+1|0),Le>>>0>=2)for(ve=Le>>>1|0,Z=0;q=te[D|0],fe=Se&255,b=q+fe|0,Ht=q+(fe>>>1|0)|0,q=te[h|0]<<2,fe=te[d|0]<<2,Zt=te[(Ht+(r[q+lt>>2]+r[fe+We>>2]>>16)|0)+B|0]<<3&2016|te[(b+r[q+Mt>>2]|0)+B|0]<<8&63488|te[(b+r[fe+mt>>2]|0)+B|0]>>>3,q=Se>>>8&255,fe=te[D+1|0],Ht=q+fe|0,b=te[h+1|0]<<2,ur=te[(Ht+r[b+Mt>>2]|0)+B|0]<<8&63488,Er=r[b+lt>>2],b=te[d+1|0]<<2,r[ae>>2]=Zt|(ur|te[((fe+(q>>>1|0)|0)+(Er+r[b+We>>2]>>16)|0)+B|0]<<3&2016|te[(Ht+r[b+mt>>2]|0)+B|0]>>>3)<<16,ae=ae+4|0,Se=Uc(Se),h=h+2|0,d=d+2|0,D=D+2|0,Z=Z+1|0,(ve|0)!=(Z|0););if(Le&1&&(Z=te[D|0],b=Se&255,D=Z+b|0,h=te[h|0]<<2,d=te[d|0]<<2,He[ae>>1]=te[((Z+(b>>>1|0)|0)+(r[h+lt>>2]+r[d+We>>2]>>16)|0)+B|0]<<3&2016|te[(D+r[h+Mt>>2]|0)+B|0]<<8&63488|te[(D+r[d+mt>>2]|0)+B|0]>>>3),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function Np(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;e:{if(ni[D>>2]>=b>>>0)break e;for(Le=Ce(r[h+236>>2],3),q=r[h+340>>2],We=q+8|0;;){t:{n:{r:{if(B=r[a>>2],B>>>0

>>0){Z=r[q+52>>2],fe=r[q+60>>2]-Z|0,ae=p-B|0,fe=fe>>>0>>0?fe:ae,Ie[r[r[h+352>>2]+4>>2]](h,(B<<2)+d|0,We,Z,fe);i:{if(r[q+48>>2]!=r[h+32>>2]||(B=r[h+60>>2],(B|0)<=0)||(Z=0,ae=r[h+236>>2],(ae|0)<=0))break i;for(;;){if((ae|0)>0){for(ve=(Z<<2)+q|0,B=1;ae=r[ve+8>>2],ku(ae,0,ae,0-B|0,1,r[h+28>>2]),ae=r[h+236>>2],Se=(ae|0)>(B|0),B=B+1|0,!!Se;);B=r[h+60>>2]}if(Z=Z+1|0,!((Z|0)<(B|0)))break}}r[a>>2]=fe+r[a>>2],Z=fe+r[q+52>>2]|0,r[q+52>>2]=Z,r[q+48>>2]=r[q+48>>2]-fe,B=r[q+60>>2];break r}if(r[q+48>>2])break e;if(B=r[q+60>>2],Z=r[q+52>>2],(B|0)<=(Z|0))break r;if(fe=0,Z=r[h+60>>2],(Z|0)>0){for(;;){if(B=r[q+52>>2],ae=r[q+60>>2],(B|0)<(ae|0)){for(Z=r[((fe<<2)+q|0)+8>>2],ve=r[h+28>>2],Se=B-1|0;ku(Z,Se,Z,B,1,ve),B=B+1|0,(ae|0)!=(B|0););Z=r[h+60>>2]}if(fe=fe+1|0,!((fe|0)<(Z|0)))break}B=r[q+60>>2]}r[q+52>>2]=B;break n}if((B|0)!=(Z|0))break t}Ie[r[r[h+356>>2]+4>>2]](h,We,r[q+56>>2],C,r[D>>2]),r[D>>2]=r[D>>2]+1,Z=r[h+236>>2],B=Z+r[q+56>>2]|0,r[q+56>>2]=(B|0)<(Le|0)?B:0,B=r[q+52>>2],(B|0)>=(Le|0)&&(r[q+52>>2]=0,B=0),r[q+60>>2]=B+Z}if(!(ni[D>>2]>>0))break}}}function x5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;D=r[h+364>>2],r[h+200>>2]&&(p=r[D+68>>2],p||(ju(h,r[D+72>>2]),p=r[h+200>>2],r[D+72>>2]=r[D+72>>2]+1&7),r[D+68>>2]=p-1),ae=r[d>>2],p=r[h+248>>2],d=r[h+320>>2],b=d;e:{if((d|0)<=0)break e;for(;;){a=He[(r[(b<<2)+9424>>2]<<1)+ae>>1];t:{if((a|0)>=0){if(!(a>>>r[h+328>>2]|0))break t;break e}if(0-a>>>r[h+328>>2]|0)break e}if(a=(b|0)>1,b=b-1|0,!a)break}b=0}if(q=r[p+24>>2],a=r[h+316>>2],(b|0)>=(a|0)){for(ve=D+204|0,Se=h+q|0,fe=(q<<2)+D|0;;){p=(r[fe+140>>2]+Ce(a,3)|0)-3|0,l0(h,p,0),d=a;e:{t:{n:{for(;;){r:{i:{a=He[(r[(d<<2)+9424>>2]<<1)+ae>>1];a:{if((a|0)>=0){if(a=a>>>r[h+328>>2]|0,!a)break i;C=0;break a}if(a=0-a>>>r[h+328>>2]|0,!a)break i;C=1}if(l0(h,p+1|0,1),l0(h,ve,C),p=p+2|0,B=a-1|0,!B||(l0(h,p,1),(B|0)==1))break n;if(l0(h,p,1),C=r[fe+140>>2]+(te[Se+152|0]<(d|0)?217:189)|0,p=2,a>>>0<=4)break r;for(a=B;Z=C,l0(h,C,1),C=C+1|0,p=p<<1,Le=a>>>0<8,a=a>>>1|0,!Le;);if(l0(h,C,0),!p)break e;C=Z+15|0;break t}l0(h,p+1|0,0),d=d+1|0,p=p+3|0;continue}break}l0(h,C,0),C=C+14|0;break t}l0(h,p,0);break e}for(;a=p>>1,l0(h,C,(a&B)!=0),Z=p>>>0>3,p=a,!!Z;);}if(a=d+1|0,!((d|0)<(b|0)))break}d=r[h+320>>2]}return(d|0)>=(a|0)&&l0(h,(r[((q<<2)+D|0)+140>>2]+Ce(a,3)|0)-3|0,1),1}function pi(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0;D=hn+-64|0,hn=D;e:{if(Ya(d,147308,0)){r[a>>2]=0,p=1;break e}t:{if(te[h+8|0]&24)C=1;else{if(!d||(C=E2(d,147040),!C))break t;C=(te[C+8|0]&24)!=0}b=Ya(h,d,C)}if(b){if(p=1,h=r[a>>2],!h)break e;r[a>>2]=r[h>>2];break e}t:{if(!d)break t;if(C=E2(d,147088),!C||(d=r[a>>2],d&&(r[a>>2]=r[d>>2]),b=r[C+8>>2],d=r[h+8>>2],b&(d^-1)&7|d&(b^-1)&96)||(p=1,Ya(r[h+12>>2],r[C+12>>2],0)))break e;if(Ya(r[h+12>>2],147296,0)){if(h=r[C+12>>2],!h)break e;p=!E2(h,147140);break e}if(b=r[h+12>>2],!b)break t;if(p=0,d=E2(b,147088),d){if(!(F[h+8|0]&1))break e;h=r[C+12>>2],a=0;n:{r:{for(;;){if(p=0,!h)break n;if(h=E2(h,147088),!h|r[h+8>>2]&(r[d+8>>2]^-1))break r;if(p=1,Ya(r[d+12>>2],r[h+12>>2],0))break n;if(!(F[d+8|0]&1)||(p=r[d+12>>2],!p))break r;if(d=E2(p,147088),d){h=r[h+12>>2];continue}break}if(d=E2(p,147200),!d)break r;a=z4(d,r[h+12>>2])}p=a}break e}if(d=E2(b,147200),d){if(!(F[h+8|0]&1))break e;p=z4(d,r[C+12>>2]);break e}if(d=E2(b,146992),!d||(h=r[C+12>>2],!h)||(h=E2(h,146992),!h))break e;p=D+8|0,k(p|4,0,52),r[D+56>>2]=1,r[D+20>>2]=-1,r[D+16>>2]=d,r[D+8>>2]=h,Ie[r[r[h>>2]+28>>2]](h,p,r[a>>2],1),h=r[D+32>>2],!r[a>>2]|(h|0)!=1||(r[a>>2]=r[D+24>>2]),p=(h|0)==1;break e}p=0}return hn=D- -64|0,p|0}function S5(h){h=h|0;var d=On(0),a=On(0),p=On(0),C=0,D=On(0),b=On(0),B=On(0),q=On(0),Z=On(0),ae=On(0),fe=On(0),ve=On(0),Se=On(0),Le=On(0),We=On(0),lt=0,mt=0,Mt=0;for(lt=7,mt=7,C=h;D=or[C>>2],a=or[C+28>>2],d=On(D+a),b=or[C+12>>2],q=or[C+16>>2],p=On(b+q),B=On(d+p),Z=or[C+4>>2],ae=or[C+24>>2],fe=On(Z+ae),ve=or[C+8>>2],Se=or[C+20>>2],Le=On(ve+Se),We=On(fe+Le),or[C+16>>2]=B-We,or[C>>2]=We+B,d=On(d-p),p=On(On(d+On(fe-Le))*On(.7071067690849304)),or[C+24>>2]=d-p,or[C+8>>2]=d+p,d=On(D-a),D=On(Z-ae),a=On(ve-Se),B=On(On(D+a)*On(.7071067690849304)),p=On(d-B),a=On(a+On(b-q)),b=On(d+D),D=On(On(a-b)*On(.3826834261417389)),a=On(On(a*On(.5411961078643799))+D),or[C+20>>2]=p+a,or[C+12>>2]=p-a,d=On(d+B),p=On(On(b*On(1.3065630197525024))+D),or[C+28>>2]=d-p,or[C+4>>2]=d+p,Mt=mt,mt=Mt-1|0,C=C+32|0,!!Mt;);for(;D=or[h>>2],a=or[h+224>>2],d=On(D+a),b=or[h+96>>2],q=or[h+128>>2],p=On(b+q),B=On(d+p),Z=or[h+32>>2],ae=or[h+192>>2],fe=On(Z+ae),ve=or[h+64>>2],Se=or[h+160>>2],Le=On(ve+Se),We=On(fe+Le),or[h+128>>2]=B-We,or[h>>2]=We+B,d=On(d-p),p=On(On(d+On(fe-Le))*On(.7071067690849304)),or[h+192>>2]=d-p,or[h+64>>2]=d+p,d=On(D-a),D=On(Z-ae),a=On(ve-Se),B=On(On(D+a)*On(.7071067690849304)),p=On(d-B),a=On(a+On(b-q)),b=On(d+D),D=On(On(a-b)*On(.3826834261417389)),a=On(On(a*On(.5411961078643799))+D),or[h+160>>2]=p+a,or[h+96>>2]=p-a,d=On(d+B),p=On(On(b*On(1.3065630197525024))+D),or[h+224>>2]=d-p,or[h+32>>2]=d+p,C=lt,lt=C-1|0,h=h+4|0,!!C;);}function Ac(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;if(B=r[h+364>>2],p=r[h+200>>2],p){a=r[B+48>>2];e:{if(a||(a=p,r[h+244>>2]<=0))break e;for(a=0;r[((a<<2)+B|0)+28>>2]=0,a=a+1|0,(a|0)>2];);a=r[h+200>>2]}r[B+48>>2]=a-1}if(r[h+272>>2]>0)for(;;){C=Z<<2,a=r[(C+h|0)+276>>2]<<2,p=r[(a+h|0)+248>>2],q=r[((r[p+24>>2]<<2)+B|0)+104>>2],ae=r[((r[p+20>>2]<<2)+B|0)+88>>2],p=0,fe=a+B|0,D=r[fe+28>>2],ve=d+C|0,Se=r[ve>>2],a=He[Se>>1];e:{if((D|0)==(a|0))break e;for(a=a-D|0,D=a>>31,a=(a^D)-D|0;D=p,p=p+1|0,C=a>>>0>1,a=a>>>1|0,!!C;);if(D>>>0<11)break e;a=r[h>>2],r[a+20>>2]=6,Ie[r[a>>2]](h)}b=1,p=ae+(p<<2)|0,r[p>>2]=r[p>>2]+1,a=0;e:{for(;;){if(C=a,a=En[(r[(b<<2)+9424>>2]<<1)+Se>>1],a){(C|0)>=16&&(p=(C-((C|0)>=31?31:C)|0)+15|0,r[q+960>>2]=(r[q+960>>2]+(p>>>4|0)|0)+1,C=(C-(p&-16)|0)-16|0),p=1,D=a,a=a<<16>>16>>15,a=(D^a)-a&65535;t:{if(a>>>0<2)break t;for(;D=p,p=p+1|0,ae=a>>>0>3,a=a>>>1|0,!!ae;);if(D>>>0<10)break t;a=r[h>>2],r[a+20>>2]=6,Ie[r[a>>2]](h)}if(p=((C<<4)+p<<2)+q|0,r[p>>2]=r[p>>2]+1,a=0,b=b+1|0,(b|0)!=64)continue;break e}if(a=C+1|0,b=b+1|0,(b|0)==64)break}if((C|0)<0)break e;r[q>>2]=r[q>>2]+1}if(r[fe+28>>2]=He[r[ve>>2]>>1],Z=Z+1|0,!((Z|0)>2]))break}return 1}function R4(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0;e:{t:{if(!(!((h|0)<=0|(d|0)<=0)&a>>>0<6)){h=te[2281]|te[2282]<<8|(te[2283]<<16|te[2284]<<24),d=te[2277]|te[2278]<<8|(te[2279]<<16|te[2280]<<24),He[73931]=d,He[73932]=d>>>16,He[73933]=h,He[73934]=h>>>16,h=te[2275]|te[2276]<<8|(te[2277]<<16|te[2278]<<24),r[36964]=te[2271]|te[2272]<<8|(te[2273]<<16|te[2274]<<24),r[36965]=h,h=te[2267]|te[2268]<<8|(te[2269]<<16|te[2270]<<24),r[36962]=te[2263]|te[2264]<<8|(te[2265]<<16|te[2266]<<24),r[36963]=h,h=te[2259]|te[2260]<<8|(te[2261]<<16|te[2262]<<24),r[36960]=te[2255]|te[2256]<<8|(te[2257]<<16|te[2258]<<24),r[36961]=h;break t}if(p=a<<2,C=r[p+144784>>2],D=h,h=r[p+144752>>2],d=Ce((d+C|0)-1&0-C,(D+h|0)-1&0-h),p=d,D=d>>31,(a|0)!=3?(h=(256/(Ce(h,C)|0)|0)+2|0,d=h>>31):(h=2,d=0),h=m0(p,D,h,d),d=Pi,h=h+2048|0,!(h>>>0<2048?d+1|0:d))break e;h=te[5189]|te[5190]<<8|(te[5191]<<16|te[5192]<<24),r[36966]=te[5185]|te[5186]<<8|(te[5187]<<16|te[5188]<<24),r[36967]=h,h=te[5181]|te[5182]<<8|(te[5183]<<16|te[5184]<<24),r[36964]=te[5177]|te[5178]<<8|(te[5179]<<16|te[5180]<<24),r[36965]=h,h=te[5173]|te[5174]<<8|(te[5175]<<16|te[5176]<<24),r[36962]=te[5169]|te[5170]<<8|(te[5171]<<16|te[5172]<<24),r[36963]=h,h=te[5165]|te[5166]<<8|(te[5167]<<16|te[5168]<<24),r[36960]=te[5161]|te[5162]<<8|(te[5163]<<16|te[5164]<<24),r[36961]=h}h=-1}return h|0}function Kh(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;if(ae=r[h+172>>2],ae){q=r[r[h+332>>2]+32>>2],D=ae+Ce(q,36)|0,C=r[D>>2],r[h+244>>2]=C;e:{if((C|0)<=0)break e;if(a=r[h+68>>2],C>>>0>=4)for(Se=C&-4,B=h+248|0,p=(ae+Ce(q,36)|0)+4|0;b=d<<2,r[b+B>>2]=a+Ce(r[p+b>>2],84),Z=b|4,r[Z+B>>2]=a+Ce(r[p+Z>>2],84),Z=b|8,r[Z+B>>2]=a+Ce(r[p+Z>>2],84),b=b|12,r[b+B>>2]=a+Ce(r[p+b>>2],84),d=d+4|0,fe=fe+4|0,(Se|0)!=(fe|0););if(C=C&3,!C)break e;for(B=ae+Ce(q,36)|0;p=d<<2,r[(p+h|0)+248>>2]=a+Ce(r[(p+B|0)+4>>2],84),d=d+1|0,ve=ve+1|0,(C|0)!=(ve|0););}r[h+316>>2]=r[D+20>>2],r[h+320>>2]=r[D+24>>2],r[h+324>>2]=r[D+28>>2],r[h+328>>2]=r[D+32>>2];return}a=r[h+60>>2],(a|0)>=5&&(d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=26,r[r[h>>2]+28>>2]=4,Ie[r[r[h>>2]>>2]](h),a=r[h+60>>2]),r[h+244>>2]=a;e:{if((a|0)<=0)break e;if(D=r[h+68>>2],d=0,a>>>0>=4)for(B=a&-4,C=h+248|0;r[C+(d<<2)>>2]=D+Ce(d,84),p=d|1,r[C+(p<<2)>>2]=D+Ce(p,84),p=d|2,r[C+(p<<2)>>2]=D+Ce(p,84),p=d|3,r[C+(p<<2)>>2]=D+Ce(p,84),d=d+4|0,b=b+4|0,(B|0)!=(b|0););if(a=a&3,!a)break e;for(;r[((d<<2)+h|0)+248>>2]=D+Ce(d,84),d=d+1|0,q=q+1|0,(a|0)!=(q|0););}r[h+324>>2]=0,r[h+316>>2]=0,r[h+320>>2]=63,r[h+328>>2]=0}function A4(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;D=r[h+364>>2],r[h+200>>2]&&(p=r[D+68>>2],p||(ju(h,r[D+72>>2]),p=r[h+200>>2],r[D+72>>2]=r[D+72>>2]+1&7),r[D+68>>2]=p-1),B=r[d>>2],p=r[h+248>>2],d=r[h+320>>2],b=d,C=d;e:{if((C|0)<=0)break e;t:{n:{for(;;){C=He[(r[(b<<2)+9424>>2]<<1)+B>>1];r:{if((C|0)>=0){if(!(C>>>r[h+328>>2]|0))break r;break n}if(0-C>>>r[h+328>>2]|0)break n}if(C=(b|0)>1,b=b-1|0,!C)break}b=0;break t}for(C=b;;){a=He[(r[(C<<2)+9424>>2]<<1)+B>>1];n:{if((a|0)>=0){if(!(a>>>r[h+324>>2]|0))break n;break e}if(0-a>>>r[h+324>>2]|0)break e}if(a=(C|0)>1,C=C-1|0,!a)break}}C=0}if(q=r[p+24>>2],a=r[h+316>>2],(b|0)>=(a|0)){for(Z=D+204|0,ae=(q<<2)+D|0;;){p=(r[ae+140>>2]+Ce(a,3)|0)-3|0,(a|0)>(C|0)&&l0(h,p,0),d=a;e:{for(;;){t:{n:{if(a=He[(r[(d<<2)+9424>>2]<<1)+B>>1],(a|0)>=0){if(a=a>>>r[h+328>>2]|0,!a)break n;if((a|0)==1)break t;l0(h,p+2|0,a&1);break e}if(a=0-a>>>r[h+328>>2]|0,!a)break n;if((a|0)!=1){l0(h,p+2|0,a&1);break e}l0(h,p+1|0,1),l0(h,Z,1);break e}l0(h,p+1|0,0),d=d+1|0,p=p+3|0;continue}break}l0(h,p+1|0,1),l0(h,Z,0)}if(a=d+1|0,!((d|0)<(b|0)))break}d=r[h+320>>2]}return(d|0)>=(a|0)&&l0(h,(r[((q<<2)+D|0)+140>>2]+Ce(a,3)|0)-3|0,1),1}function T5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;for(We=7,b=7,d=h;p=En[d+8>>1],B=En[d+6>>1],a=p+B|0,C=En[d+14>>1],q=En[d>>1],D=C+q|0,Z=a+D|0,ae=En[d+12>>1],fe=En[d+2>>1],ve=ae+fe|0,Se=En[d+10>>1],Le=En[d+4>>1],lt=Se+Le|0,mt=ve+lt|0,He[d+8>>1]=Z-mt,He[d>>1]=Z+mt,a=D-a|0,D=Ce((a<<16>>16)+(ve-lt<<16>>16)|0,46336)>>>16|0,He[d+12>>1]=a-D,He[d+4>>1]=a+D,a=q-C|0,C=Le-Se|0,q=fe-ae|0,Z=Ce(C+q<<16>>16,46336)>>>16|0,D=a+Z|0,B=(C+B|0)-p<<16>>16,C=a+q<<16>>16,p=Ce(B-C|0,25088),C=p+(Ce(C,85504)&-65536)>>>16|0,He[d+14>>1]=D-C,He[d+2>>1]=D+C,a=a-Z|0,D=Ce(B,35584)+(p&-65536)>>>16|0,He[d+10>>1]=a+D,He[d+6>>1]=a-D,a=b,b=a-1|0,d=d+16|0,!!a;);for(;a=En[h+64>>1],D=En[h+48>>1],d=a+D|0,p=En[h+112>>1],B=En[h>>1],b=p+B|0,C=d+b|0,q=En[h+80>>1],Z=En[h+32>>1],ae=q+Z|0,fe=En[h+96>>1],ve=En[h+16>>1],Se=fe+ve|0,Le=ae+Se|0,He[h+64>>1]=C-Le,He[h>>1]=C+Le,d=b-d|0,b=Ce((d<<16>>16)+(Se-ae<<16>>16)|0,46336)>>>16|0,He[h+96>>1]=d-b,He[h+32>>1]=d+b,d=B-p|0,p=Z-q|0,B=ve-fe|0,C=Ce(p+B<<16>>16,46336)>>>16|0,b=d+C|0,D=(D+p|0)-a<<16>>16,p=d+B<<16>>16,a=Ce(D-p|0,25088),p=a+(Ce(p,85504)&-65536)>>>16|0,He[h+112>>1]=b-p,He[h+16>>1]=b+p,d=d-C|0,b=Ce(D,35584)+(a&-65536)>>>16|0,He[h+80>>1]=d+b,He[h+48>>1]=d-b,d=We,We=d-1|0,h=h+2|0,!!d;);}function bp(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0;p=r[h+460>>2],a=r[p+24>>2];e:{t:{n:{if(!r[h+88>>2]){if(d)break t;d=155;break n}if(r[h+88>>2]=2,d)break t;d=156}r[p+8>>2]=157,r[p+4>>2]=d,d=1,C=r[h+132>>2];n:{if((C|0)<=0)C=56;else{if(C>>>0<257)break n;d=256,C=57}D=r[h>>2],r[D+24>>2]=d,r[D+20>>2]=C,Ie[r[r[h>>2]>>2]](h)}if(r[h+88>>2]!=2)break e;d=Ce(r[h+112>>2],6)+12|0,C=r[p+32>>2],C||(C=Ie[r[r[h+4>>2]+4>>2]](h,1,d)|0,r[p+32>>2]=C),y0(C,d),r[p+40>>2]||V4(h),r[p+36>>2]=0;break e}r[p+28>>2]=1,r[p+8>>2]=158,r[p+4>>2]=159}r[p+28>>2]&&(y0(r[a>>2],4096),y0(r[a+4>>2],4096),y0(r[a+8>>2],4096),y0(r[a+12>>2],4096),y0(r[a+16>>2],4096),y0(r[a+20>>2],4096),y0(r[a+24>>2],4096),y0(r[a+28>>2],4096),y0(r[a+32>>2],4096),y0(r[a+36>>2],4096),y0(r[a+40>>2],4096),y0(r[a+44>>2],4096),y0(r[a+48>>2],4096),y0(r[a+52>>2],4096),y0(r[a+56>>2],4096),y0(r[a+60>>2],4096),y0(r[a+64>>2],4096),y0(r[a+68>>2],4096),y0(r[a+72>>2],4096),y0(r[a+76>>2],4096),y0(r[a+80>>2],4096),y0(r[a+84>>2],4096),y0(r[a+88>>2],4096),y0(r[a+92>>2],4096),y0(r[a+96>>2],4096),y0(r[a+100>>2],4096),y0(r[a+104>>2],4096),y0(r[a+108>>2],4096),y0(r[a+112>>2],4096),y0(r[a+116>>2],4096),y0(r[a+120>>2],4096),y0(r[a+124>>2],4096),r[p+28>>2]=0)}function Fp(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;e:{if(B=r[a>>2],B>>>0>=p>>>0)break e;for(Z=r[h+340>>2],ve=Z+8|0;;){if(ni[D>>2]>=b>>>0)break e;ae=r[Z+52>>2],q=r[h+236>>2]-ae|0,fe=p-B|0,q=q>>>0>>0?q:fe,Ie[r[r[h+352>>2]+4>>2]](h,(B<<2)+d|0,ve,ae,q),r[a>>2]=q+r[a>>2],ae=q+r[Z+52>>2]|0,r[Z+52>>2]=ae,fe=r[Z+48>>2],r[Z+48>>2]=fe-q,B=r[h+236>>2];t:{n:{if(!((q|0)!=(fe|0)|(B|0)<=(ae|0))){if(q=0,ae=r[h+60>>2],(ae|0)>0){for(;;){if(B=r[Z+52>>2],fe=r[h+236>>2],(B|0)<(fe|0)){for(ae=r[(Z+(q<<2)|0)+8>>2],Se=r[h+28>>2],Le=B-1|0;ku(ae,Le,ae,B,1,Se),B=B+1|0,(fe|0)!=(B|0););ae=r[h+60>>2]}if(q=q+1|0,!((ae|0)>(q|0)))break}B=r[h+236>>2]}r[Z+52>>2]=B;break n}if((B|0)!=(ae|0))break t}Ie[r[r[h+356>>2]+4>>2]](h,ve,0,C,r[D>>2]),r[Z+52>>2]=0,r[D>>2]=r[D>>2]+1}if(!(r[Z+48>>2]|ni[D>>2]>=b>>>0)){if(a=r[h+60>>2],(a|0)>0)for(q=r[h+68>>2],d=0;;){if(p=r[q+12>>2],B=Ce(p,r[D>>2]),p=Ce(p,b),(B|0)<(p|0)){for(Z=r[q+28>>2]<<3,a=r[(d<<2)+C>>2],ve=B-1|0;ku(a,ve,a,B,1,Z),B=B+1|0,(p|0)!=(B|0););a=r[h+60>>2]}if(q=q+84|0,d=d+1|0,!((a|0)>(d|0)))break}r[D>>2]=b;return}if(B=r[a>>2],!(B>>>0

>>0))break}}}function Vp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0,an=0,wn=0;if((C|0)>0)for(b=r[h+324>>2],D=r[h+456>>2],ve=r[D+20>>2],Se=r[D+16>>2],Le=r[D+12>>2],We=r[D+8>>2],Mt=r[d+8>>2],Ht=r[d+4>>2],on=r[d>>2],fe=r[h+112>>2];;){if(D=a<<2,h=r[D+Mt>>2],d=r[D+Ht>>2],D=r[D+on>>2],q=r[p>>2],q&3&&(ae=te[D|0],B=te[h|0]<<2,lt=te[d|0]<<2,He[q>>1]=te[(ae+(r[B+Se>>2]+r[lt+ve>>2]>>16)|0)+b|0]<<3&2016|te[(ae+r[B+We>>2]|0)+b|0]<<8&63488|te[(ae+r[Le+lt>>2]|0)+b|0]>>>3,fe=fe-1|0,q=q+2|0,d=d+1|0,D=D+1|0,h=h+1|0),fe>>>0>=2)for(lt=fe>>>1|0,ae=0;B=te[D|0],Z=te[h|0]<<2,mt=te[d|0]<<2,mt=te[(B+(r[Z+Se>>2]+r[mt+ve>>2]>>16)|0)+b|0]<<3&2016|te[(B+r[Z+We>>2]|0)+b|0]<<8&63488|te[(B+r[Le+mt>>2]|0)+b|0]>>>3,B=te[D+1|0],Z=te[h+1|0]<<2,an=te[(B+r[Z+We>>2]|0)+b|0]<<8&63488,wn=r[Z+Se>>2],Z=te[d+1|0]<<2,r[q>>2]=mt|(an|te[(B+(wn+r[Z+ve>>2]>>16)|0)+b|0]<<3&2016|te[(B+r[Z+Le>>2]|0)+b|0]>>>3)<<16,q=q+4|0,h=h+2|0,d=d+2|0,D=D+2|0,ae=ae+1|0,(lt|0)!=(ae|0););if(fe&1&&(B=q,q=te[h|0]<<2,d=te[d|0]<<2,h=te[D|0],He[B>>1]=te[((r[q+Se>>2]+r[d+ve>>2]>>16)+h|0)+b|0]<<3&2016|te[(h+r[q+We>>2]|0)+b|0]<<8&63488|te[(h+r[d+Le>>2]|0)+b|0]>>>3),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function Jr(h,d){var a=0,p=0,C=0,D=0,b=0,B=0,q=0;C=r[h+444>>2],a=r[C+16>>2];e:{if((a|0)>=32768){p=r[C+20>>2];break e}for(p=r[C+20>>2];;){a=p-1|0,r[C+20>>2]=a;t:{if((p|0)>0){p=a;break t}if(D=0,!r[h+416>>2]){a=r[h+24>>2];n:{if(r[a+4>>2]||Ie[r[a+12>>2]](h)|0)break n;p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)}r[a+4>>2]=r[a+4>>2]-1,p=a,a=r[a>>2],r[p>>2]=a+1,D=te[a|0];n:{if((D|0)!=255)break n;for(;;){a=r[h+24>>2];r:{if(r[a+4>>2]||Ie[r[a+12>>2]](h)|0)break r;p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)}if(r[a+4>>2]=r[a+4>>2]-1,p=a,a=r[a>>2],r[p>>2]=a+1,D=255,a=te[a|0],(a|0)!=255)break}if(!a)break n;r[h+416>>2]=a,D=0}a=r[C+20>>2]}if(p=a+8|0,r[C+20>>2]=p,r[C+12>>2]=r[C+12>>2]<<8|D,(a|0)>-9||(p=a+9|0,r[C+20>>2]=p,p))break t;r[C+16>>2]=32768,p=0}if(a=r[C+16>>2]<<1,r[C+16>>2]=a,!((a|0)<32768))break}}h=te[d|0],D=r[((h&127)<<2)+10560>>2],b=D>>16,a=a-b|0,r[C+16>>2]=a,B=D>>8,q=r[C+12>>2],p=a<=(p|0)){if(r[C+16>>2]=b,r[C+12>>2]=q-p,p=h&128,(a|0)<(b|0)){F[d|0]=p^B;break e}F[d|0]=p^D,h=h^128;break e}if(a>>>0>32767)break e;if(p=h&128,(a|0)<(b|0)){F[d|0]=p^D,h=h^128;break e}F[d|0]=p^B}return h>>>7|0}function Up(h){var d=0,a=0,p=0,C=0,D=0;e:{t:{n:{r:{d=r[h+4>>2];i:{if((d|0)!=r[h+104>>2]){r[h+4>>2]=d+1,d=te[d|0];break i}d=M0(h)}switch(d-43|0){case 0:case 2:break r;default:break n}}D=(d|0)==45,d=r[h+4>>2];r:{if((d|0)!=r[h+104>>2]){r[h+4>>2]=d+1,d=te[d|0];break r}d=M0(h)}C=d-58|0;break t}C=d-58|0}if(C>>>0>=4294967286){if(C=d-48|0,C>>>0<10){for(;;){p=(Ce(p,10)+d|0)-48|0,a=(p|0)<214748364,d=r[h+4>>2];t:{if((d|0)!=r[h+104>>2]){r[h+4>>2]=d+1,d=te[d|0];break t}d=M0(h)}if(C=d-48|0,!(a&C>>>0<=9))break}a=p>>31}t:{if(C>>>0>=10)break t;for(;;){p=m0(p,a,10,0),d=p+d|0,a=Pi,a=d>>>0

>>0?a+1|0:a,p=d-48|0,a=a-(d>>>0<48)|0,d=r[h+4>>2];n:{if((d|0)!=r[h+104>>2]){r[h+4>>2]=d+1,d=te[d|0];break n}d=M0(h)}if(C=d-48|0,C>>>0>9)break t;if(!(p>>>0<2061584302&(a|0)<=21474836|(a|0)<21474836))break}}if(C>>>0<10)for(;;){d=r[h+4>>2];t:{if((d|0)!=r[h+104>>2]){r[h+4>>2]=d+1,d=te[d|0];break t}d=M0(h)}if(!(d-48>>>0<10))break}d=r[h+116>>2],(d|0)>0|(d|0)>=0&&(r[h+4>>2]=r[h+4>>2]-1),h=p,p=D?0-h|0:h,a=D?0-(((h|0)!=0)+a|0)|0:a;break e}if(a=-2147483648,r[h+116>>2]<0)break e;return r[h+4>>2]=r[h+4>>2]-1,Pi=-2147483648,0}return Pi=a,p}function E5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;ae=r[d+28>>2]<<3,C=r[h+236>>2];e:{if((C|0)<-1||(b=r[h+28>>2],ve=ae-b|0,(ve|0)<=0))break e;if(fe=a-4|0,B=C+2|0,Se=B&3,C+1>>>0>=3)for(Le=B&-4,C=0;B=q<<2,D=b+r[B+fe>>2]|0,k(D,te[D-1|0],ve),D=b+r[a+B>>2]|0,k(D,te[D-1|0],ve),D=b+r[fe+(B|8)>>2]|0,k(D,te[D-1|0],ve),B=b+r[fe+(B|12)>>2]|0,k(B,te[B-1|0],ve),q=q+4|0,C=C+4|0,(Le|0)!=(C|0););if(!Se)break e;for(;C=b+r[fe+(q<<2)>>2]|0,k(C,te[C-1|0],ve),q=q+1|0,Z=Z+1|0,(Se|0)!=(Z|0););}if(r[d+12>>2]>0)for(h=r[h+192>>2],Se=h<<6,Le=65536-(h<<9)|0,ve=ae-2|0,fe=0;;){for(Z=fe<<2,h=r[Z+p>>2],Z=a+Z|0,C=r[Z>>2],b=te[C|0],fe=fe+1|0,ae=r[(fe<<2)+a>>2],D=r[Z-4>>2],q=te[ae|0]+te[D|0]|0,Z=b+q|0,We=Ce(b,Le),b=te[C+1|0]+(te[ae+1|0]+te[D+1|0]|0)|0,F[h|0]=(We+Ce(Se,b+(q+Z|0)|0)|0)+32768>>>16,B=h+1|0,q=C+1|0,ae=ae+1|0,D=D+1|0,C=ve;h=b,We=te[q|0],b=te[q+1|0]+(te[ae+1|0]+te[D+1|0]|0)|0,F[B|0]=(Ce(Le,We)+Ce(Se,b+((h+Z|0)-We|0)|0)|0)+32768>>>16,B=B+1|0,ae=ae+1|0,D=D+1|0,q=q+1|0,Z=h,C=C-1|0,!!C;);if(h=te[q|0],F[B|0]=(Ce(h,Le)+Ce(Se,((b<<1)+Z|0)-h|0)|0)+32768>>>16,!(r[d+12>>2]>(fe|0)))break}}function D5(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0;for(lt=hn-144|0,hn=lt,Se=r[h+324>>2],h=r[d+80>>2],d=lt;b=He[h+32>>1],ae=He[a+32>>1],q=Ce(He[a>>1],He[h>>1])<<13|1024,Z=Ce(He[h+64>>1],He[a+64>>1]),Le=q+Ce(Z,-11586)>>11,D=Ce(He[h+16>>1],He[a+16>>1]),B=Ce(He[h+48>>1],He[a+48>>1]),ve=Ce(He[h+80>>1],He[a+80>>1]),We=D-(B+ve|0)<<2,r[d+96>>2]=Le-We,r[d+24>>2]=Le+We,Z=q+Ce(Z,5793)|0,b=Ce(Ce(b,ae),10033),ae=Z+b|0,q=D+B<<13,D=Ce(D+ve|0,2998),q=q+D|0,r[d+120>>2]=ae-q>>11,r[d>>2]=ae+q>>11,b=Z-b|0,D=D+(ve-B<<13)|0,r[d+72>>2]=b-D>>11,r[d+48>>2]=D+b>>11,d=d+4|0,h=h+2|0,a=a+2|0,fe=fe+1|0,(fe|0)!=6;);for(h=Se+128|0,a=lt,fe=0;D=r[a+20>>2],B=r[a+4>>2],ve=Ce(D+B|0,2998),d=r[(fe<<2)+p>>2]+C|0,Se=r[a+12>>2],b=ve+(Se+B<<13)|0,Z=(r[a>>2]<<13)+131072|0,ae=r[a+16>>2],q=Z+Ce(ae,5793)|0,Le=Ce(r[a+8>>2],10033),We=q+Le|0,F[d|0]=te[h+(b+We>>>18&1023)|0],F[d+5|0]=te[h+(We-b>>>18&1023)|0],B=B-(D+Se|0)<<13,b=Z+Ce(ae,-11586)|0,F[d+1|0]=te[h+(B+b>>>18&1023)|0],F[d+4|0]=te[h+(b-B>>>18&1023)|0],D=ve+(D-Se<<13)|0,B=q-Le|0,F[d+2|0]=te[h+(D+B>>>18&1023)|0],F[d+3|0]=te[h+(B-D>>>18&1023)|0],a=a+24|0,fe=fe+1|0,(fe|0)!=6;);hn=lt+144|0}function I5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;if(ae=r[p+4>>2],B=a<<2,q=r[B+r[d+8>>2]>>2],Z=r[B+r[d+4>>2]>>2],d=r[d>>2]+(a<<3)|0,a=r[d>>2],B=r[d+4>>2],d=r[h+324>>2],p=r[p>>2],C=r[h+452>>2],lt=r[C+28>>2],mt=r[C+24>>2],Mt=r[C+20>>2],Ht=r[C+16>>2],ve=r[h+112>>2],ve>>>0>=2)for(Se=ve>>>1|0;D=te[q|0]<<2,C=te[Z|0]<<2,h=r[D+mt>>2]+r[C+lt>>2]>>16,b=te[a|0],Le=te[d+(h+b|0)|0],C=r[C+Mt>>2],We=te[d+(C+b|0)|0],fe=b,b=r[D+Ht>>2],fe=te[d+(fe+b|0)|0],D=te[a+1|0],He[p+2>>1]=te[d+(D+h|0)|0]<<3&2016|te[d+(D+b|0)|0]<<8&63488|te[d+(C+D|0)|0]>>>3,He[p>>1]=Le<<3&2016|fe<<8&63488|We>>>3,D=te[B|0],Le=te[d+(D+h|0)|0],We=te[d+(C+D|0)|0],D=te[d+(D+b|0)|0],fe=h,h=te[B+1|0],He[ae+2>>1]=te[d+(fe+h|0)|0]<<3&2016|te[d+(h+b|0)|0]<<8&63488|te[d+(h+C|0)|0]>>>3,He[ae>>1]=Le<<3&2016|D<<8&63488|We>>>3,ae=ae+4|0,B=B+2|0,p=p+4|0,a=a+2|0,q=q+1|0,Z=Z+1|0,Se=Se-1|0,!!Se;);ve&1&&(b=p,p=te[q|0]<<2,q=te[Z|0]<<2,Z=r[p+mt>>2]+r[q+lt>>2]>>16,h=te[a|0],a=r[p+Ht>>2],p=r[q+Mt>>2],He[b>>1]=te[d+(Z+h|0)|0]<<3&2016|te[d+(a+h|0)|0]<<8&63488|te[d+(p+h|0)|0]>>>3,h=te[B|0],He[ae>>1]=te[d+(h+Z|0)|0]<<3&2016|te[d+(h+a|0)|0]<<8&63488|te[d+(h+p|0)|0]>>>3)}function D0(h,d,a){var p=0,C=0,D=0;if(a>>>0>=512)return du(h|0,d|0,a|0),h;C=h+a|0;e:{if(!((h^d)&3)){t:{if(!(h&3)){a=h;break t}if(!a){a=h;break t}for(a=h;;){if(F[a|0]=te[d|0],d=d+1|0,a=a+1|0,!(a&3))break t;if(!(a>>>0>>0))break}}p=C&-4;t:{if(p>>>0<64||(D=p+-64|0,D>>>0>>0))break t;for(;r[a>>2]=r[d>>2],r[a+4>>2]=r[d+4>>2],r[a+8>>2]=r[d+8>>2],r[a+12>>2]=r[d+12>>2],r[a+16>>2]=r[d+16>>2],r[a+20>>2]=r[d+20>>2],r[a+24>>2]=r[d+24>>2],r[a+28>>2]=r[d+28>>2],r[a+32>>2]=r[d+32>>2],r[a+36>>2]=r[d+36>>2],r[a+40>>2]=r[d+40>>2],r[a+44>>2]=r[d+44>>2],r[a+48>>2]=r[d+48>>2],r[a+52>>2]=r[d+52>>2],r[a+56>>2]=r[d+56>>2],r[a+60>>2]=r[d+60>>2],d=d- -64|0,a=a- -64|0,D>>>0>=a>>>0;);}if(a>>>0>=p>>>0)break e;for(;r[a>>2]=r[d>>2],d=d+4|0,a=a+4|0,p>>>0>a>>>0;);break e}if(C>>>0<4){a=h;break e}if(p=C-4|0,p>>>0>>0){a=h;break e}for(a=h;F[a|0]=te[d|0],F[a+1|0]=te[d+1|0],F[a+2|0]=te[d+2|0],F[a+3|0]=te[d+3|0],d=d+4|0,a=a+4|0,p>>>0>=a>>>0;);}if(a>>>0>>0)for(;F[a|0]=te[d|0],d=d+1|0,a=a+1|0,(C|0)!=(a|0););return h}function L4(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;D=r[h+460>>2],d=r[h+88>>2],a=(d|0)==1,r[D+28>>2]=a,ae=D,fe=Ie[r[r[h+4>>2]+8>>2]](h,1,a?766:256,r[h+120>>2])|0,r[ae+24>>2]=fe;e:{if(r[h+120>>2]<=0)break e;if(B=r[D+20>>2],(d|0)==1)for(;;){for(a=b<<2,d=r[(a+D|0)+32>>2],p=a+r[D+24>>2]|0,r[p>>2]=r[p>>2]+255,q=d+254|0,Z=(d<<1)-2|0,C=(q|0)/(Z|0)|0,B=(B|0)/(d|0)|0,p=r[a+r[D+24>>2]>>2],d=0,a=0;;){if((a|0)>(C|0))for(;d=d+1|0,C=(q+Ce(d,510)|0)/(Z|0)|0,(C|0)<(a|0););if(F[a+p|0]=Ce(d,B),a=a+1|0,(a|0)==256)break}for(d=1;C=p-d|0,F[C|0]=te[p|0],a=d+p|0,F[a+255|0]=te[p+255|0],F[p+(d^-1)|0]=te[p|0],F[a+256|0]=te[p+255|0],F[C-2|0]=te[p|0],F[a+257|0]=te[p+255|0],d=d+3|0,(d|0)!=256;);if(b=b+1|0,!((b|0)>2]))break e}for(;;){for(a=b<<2,d=r[(a+D|0)+32>>2],p=d+254|0,q=(d<<1)-2|0,C=(p|0)/(q|0)|0,B=(B|0)/(d|0)|0,Z=r[a+r[D+24>>2]>>2],d=0,a=0;;){if((a|0)>(C|0))for(;d=d+1|0,C=(p+Ce(d,510)|0)/(q|0)|0,(C|0)<(a|0););if(F[a+Z|0]=Ce(d,B),a=a+1|0,(a|0)==256)break}if(b=b+1|0,!((b|0)>2]))break}}}function Bp(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;d=r[d+80>>2],D=Ce(He[d+32>>1],He[a+32>>1]),b=r[p>>2]+C|0,h=r[h+324>>2]+128|0,Z=Ce(He[a>>1],He[d>>1])<<13|1024,ae=Z+Ce(D,5793)|0,fe=Ce(Ce(He[a+16>>1],He[d+16>>1]),10033),ve=(ae+fe<<2&-8192)+131072|0,B=Ce(He[a+4>>1],He[d+4>>1])<<13|1024,q=Ce(He[d+36>>1],He[a+36>>1]),Se=B+Ce(q,5793)|0,Le=Ce(Ce(He[a+20>>1],He[d+20>>1]),10033),We=Se+Le>>11,lt=ve+Ce(We,5793)|0,mt=Ce(He[a+2>>1],He[d+2>>1])<<13|1024,Mt=Ce(He[d+34>>1],He[a+34>>1]),Ht=mt+Ce(Mt,5793)|0,a=Ce(Ce(He[a+18>>1],He[d+18>>1]),10033),d=Ce(Ht+a>>11,10033),F[b|0]=te[h+(lt+d>>>18&1023)|0],F[b+2|0]=te[h+(lt-d>>>18&1023)|0],F[b+1|0]=te[h+(ve+Ce(We,268423870)>>>18&1023)|0],d=r[p+4>>2]+C|0,D=(Z+Ce(D,1073730238)<<2&-8192)+131072|0,b=Ce(q,-11586)+B>>11,B=D+Ce(b,5793)|0,q=Ce(Ce(Mt,-11586)+mt>>11,10033),F[d|0]=te[h+(B+q>>>18&1023)|0],F[d+2|0]=te[h+(B-q>>>18&1023)|0],F[d+1|0]=te[h+(D+Ce(b,268423870)>>>18&1023)|0],d=r[p+8>>2]+C|0,C=(ae-fe<<2&-8192)+131072|0,p=Se-Le>>11,D=C+Ce(p,5793)|0,a=Ce(Ht-a>>11,10033),F[d|0]=te[h+(D+a>>>18&1023)|0],F[d+2|0]=te[h+(D-a>>>18&1023)|0],F[d+1|0]=te[h+(C+Ce(p,268423870)>>>18&1023)|0]}function N4(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0;Se=r[h+320>>2]-1|0,Le=r[h+428>>2];e:{for(;;){if(p=r[h+144>>2],a=r[h+152>>2],(p|0)>=(a|0)&((a|0)!=(p|0)|ni[h+148>>2]>ni[h+156>>2]))break e;if(!(Ie[r[r[h+436>>2]>>2]](h)|0))break}return 0}if(r[h+36>>2]>0)for(a=r[h+216>>2];;){e:{if(!r[a+48>>2]||(D=ae<<2,p=r[a+12>>2],We=Ie[r[r[h+4>>2]+32>>2]](h,r[(D+Le|0)+76>>2],Ce(p,r[h+156>>2]),p,0)|0,ni[h+156>>2]>>0?p=r[a+12>>2]:(p=r[a+12>>2],C=ni[a+32>>2]%(p>>>0)|0,p=C||p),(p|0)<=0)||(q=r[h+420>>2],C=D+q|0,ni[C+20>>2]>ni[C+60>>2]))break e;for(lt=r[(D+r[h+448>>2]|0)+4>>2],C=r[d+D>>2],Z=0;;){b=D+q|0,B=r[b+20>>2];t:{if(B>>>0>ni[b+60>>2]){fe=r[a+36>>2];break t}for(b=r[(Z<<2)+We>>2]+(B<<7)|0,ve=0;Ie[lt|0](h,a,b,C,ve),b=b+128|0,fe=r[a+36>>2],ve=fe+ve|0,B=B+1|0,q=r[h+420>>2],B>>>0<=ni[(D+q|0)+60>>2];);}if(C=(fe<<2)+C|0,Z=Z+1|0,(p|0)==(Z|0))break}}if(a=a+84|0,ae=ae+1|0,!((ae|0)>2]))break}return d=r[h+156>>2]+1|0,r[h+156>>2]=d,(d>>>0>2]?3:4)|0}function O5(h){h=h|0;var d=0,a=0;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=216,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}r[h+72>>2]&&Of(h,0),r[h+76>>2]&&Of(h,1),r[h+80>>2]&&Of(h,2),r[h+84>>2]&&Of(h,3);e:{if(r[h+180>>2]||(r[h+88>>2]&&Q2(h,0,0),r[h+104>>2]&&Q2(h,0,1),r[h+92>>2]&&Q2(h,1,0),r[h+108>>2]&&Q2(h,1,1),r[h+96>>2]&&Q2(h,2,0),r[h+112>>2]&&Q2(h,2,1),r[h+100>>2]&&Q2(h,3,0),!r[h+116>>2]))break e;Q2(h,3,1)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=217,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}}function Gp(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0;e:{if((p|0)<=0||(b=r[h+112>>2],!b))break e;if(B=r[h+120>>2],(B|0)<=0){if(p-1>>>0>=3)for(q=p&-4,d=0;h=C<<2,k(r[h+a>>2],0,b),k(r[(h|4)+a>>2],0,b),k(r[(h|8)+a>>2],0,b),k(r[(h|12)+a>>2],0,b),C=C+4|0,d=d+4|0,(q|0)!=(d|0););if(d=p&3,!d)break e;for(h=0;k(r[(C<<2)+a>>2],0,b),C=C+1|0,h=h+1|0,(d|0)!=(h|0););break e}for(Z=r[r[h+460>>2]+24>>2],lt=B&-4,We=B&3,mt=B>>>0<4;;){for(h=ae<<2,fe=r[h+a>>2],q=r[h+d>>2],ve=b;;){if(Se=0,D=0,h=0,C=q,Le=0,!mt)for(;Mt=D,D=h<<2,D=(((Mt+te[r[D+Z>>2]+te[C|0]|0]|0)+te[r[(D|4)+Z>>2]+te[C+1|0]|0]|0)+te[r[(D|8)+Z>>2]+te[C+2|0]|0]|0)+te[r[(D|12)+Z>>2]+te[C+3|0]|0]|0,h=h+4|0,C=C+4|0,Le=Le+4|0,(lt|0)!=(Le|0););if(We)for(;D=te[r[(h<<2)+Z>>2]+te[C|0]|0]+D|0,h=h+1|0,C=C+1|0,Se=Se+1|0,(Se|0)!=(We|0););if(F[fe|0]=D,fe=fe+1|0,q=q+B|0,ve=ve-1|0,!ve)break}if(ae=ae+1|0,(ae|0)==(p|0))break}}}function M5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0;if(B=r[h+364>>2],r[h+200>>2]&&(p=r[B+68>>2],p||(ju(h,r[B+72>>2]),p=r[h+200>>2],r[B+72>>2]=r[B+72>>2]+1&7),r[B+68>>2]=p-1),r[h+272>>2]>0)for(;;){D=ae<<2,C=r[(D+h|0)+276>>2]<<2,fe=r[r[(C+h|0)+248>>2]+20>>2],q=(fe<<2)+B|0,C=C+B|0,Z=r[q+76>>2]+r[C+52>>2]|0,D=He[r[d+D>>2]>>1]>>r[h+328>>2],a=D-r[C+36>>2]|0;e:{if(!a){l0(h,Z,0),r[C+52>>2]=0;break e}r[C+36>>2]=D,l0(h,Z,1),p=0,Se=Z+1|0;t:{if((a|0)>0){D=4,b=2,ve=0;break t}a=0-a|0,D=8,b=3,ve=1}l0(h,Se,ve),r[C+52>>2]=D,b=b+Z|0,D=a-1|0;t:{if(!D||(p=1,l0(h,b,1),b=r[q+76>>2]+20|0,a=D,(a|0)==1))break t;for(;l0(h,b,1),b=b+1|0,p=p<<1,q=a>>>0>3,a=a>>>1|0,!!q;);}l0(h,b,0),a=h+fe|0;t:{if(1<>1<=(p|0)){if(1<>1>=(p|0))break t;a=r[C+52>>2]+8|0}else a=0;r[C+52>>2]=a}if(p>>>0<2)break e;for(q=b+14|0;C=p>>1,l0(h,q,(C&D)!=0),a=p>>>0>3,p=C,!!a;);}if(ae=ae+1|0,!((ae|0)>2]))break}return 1}function Rf(h){var d=0,a=0,p=0,C=0,D=0;p=r[37078],d=h+7&-8,a=p+d|0;e:{t:{if(a>>>0<=p>>>0&&d||a>>>0>Xk()<<16>>>0&&!(Sc(a|0)|0))break t;r[37078]=a;break e}r[37091]=48,p=-1}if((p|0)!=-1){d=h+p|0,a=d-16|0,r[a+12>>2]=16,r[a>>2]=16,h=r[37560],h?D=r[h+8>>2]:D=0;e:{t:{if((D|0)==(p|0)){if(C=p-(r[p-4>>2]&-2)|0,D=r[C-4>>2],r[h+8>>2]=d,h=C-(D&-2)|0,d=-16,!(F[(h+r[h>>2]|0)-4|0]&1))break t;d=r[h+4>>2],r[d+8>>2]=r[h+8>>2],r[r[h+8>>2]+4>>2]=d,a=a-h|0,r[h>>2]=a;break e}r[p+12>>2]=16,r[p>>2]=16,r[p+8>>2]=d,r[p+4>>2]=h,r[37560]=p,d=16}h=d+p|0,a=a-h|0,r[h>>2]=a}r[((a&-4)+h|0)-4>>2]=a|1,d=r[h>>2]-8|0;e:{if(d>>>0<=127){a=(d>>>3|0)-1|0;break e}if(C=Q0(d),a=((d>>>29-C^4)-(C<<2)|0)+110|0,d>>>0<=4095)break e;a=((d>>>30-C^2)-(C<<1)|0)+71|0,a=a>>>0>=63?63:a}d=a<<4,r[h+4>>2]=d+149216,d=d+149224|0,r[h+8>>2]=r[d>>2],r[d>>2]=h,r[r[h+8>>2]+4>>2]=h,d=r[37562],C=r[37563],h=a&31,(a&63)>>>0>=32?(a=1<>>32-h),r[37562]=D|d,r[37563]=a|C}return(p|0)!=-1}function Wp(h,d,a,p){var C=0,D=0,b=0,B=0;b=hn-32|0,hn=b,C=p&2147483647,B=C,D=C-1006698496|0,C=C-1140785152|0;e:{if((D|0)==(C|0)&0|C>>>0>D>>>0){if(C=a<<4|d>>>28,a=p<<4|a>>>28,d=d&268435455,(d|0)==134217728&(h|0)!=0|d>>>0>134217728){D=a+1073741824|0,C=C+1|0,D=C?D:D+1|0;break e}if(D=a+1073741824|0,h|(d|0)!=134217728)break e;h=C&1,C=h+C|0,D=h>>>0>C>>>0?D+1|0:D;break e}if(!(!a&(B|0)==2147418112?!(h|d):B>>>0<2147418112)){h=p<<4|a>>>28,C=a<<4|d>>>28,D=h&524287|2146959360;break e}if(C=0,D=2146435072,B>>>0>1140785151||(D=0,B=B>>>16|0,B>>>0<15249))break e;if(C=p&65535|65536,K0(b+16|0,h,d,a,C,B-15233|0),$i(b,h,d,a,C,15361-B|0),d=r[b+8>>2],C=d<<4,d=r[b+12>>2]<<4|d>>>28,a=r[b>>2],D=r[b+4>>2],B=D,C=D>>>28|C,D=d,h=B&268435455,d=a|(r[b+16>>2]|r[b+24>>2]|(r[b+20>>2]|r[b+28>>2]))!=0,(h|0)==134217728&(d|0)!=0|h>>>0>134217728){C=C+1|0,D=C?D:D+1|0;break e}if(d|(h|0)!=134217728)break e;h=C,C=C+(C&1)|0,D=h>>>0>C>>>0?D+1|0:D}return hn=b+32|0,Qn(0,C|0),Qn(1,p&-2147483648|D),+ln()}function b4(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;B=hn-512|0,hn=B,d=r[h+16>>2];e:{if(r[h+44>>2]){D=r[h+8>>2],b=r[h+12>>2],a=64;break e}D=r[h+8>>2],a=32}a=a-d|0,C=B,q=r[h+4>>2],C=q>>>0>=512?r[h>>2]:C;e:{if((a|0)<8){d=a;break e}for(;F[C+1|0]=0,d=a-8|0,p=d&31,p=(d&63)>>>0>=32?b>>>p|0:((1<>>p,F[C|0]=p,C=((p&255)==255?2:1)+C|0,p=a>>>0>15,a=d,!!p;);}d&&(F[C+1|0]=0,a=8-d|0,d=255>>>d|((a&63)>>>0<32?D<>2]){r[h+8>>2]=0,r[h+12>>2]=0,a=64;break e}r[h+8>>2]=0,a=32}r[h+16>>2]=a;e:{if(q>>>0<=511){if(b=1,a=C-B|0,!a)break e;for(p=r[h>>2],d=r[h+4>>2],C=B;;){if(D=d>>>0>a>>>0?a:d,D0(p,C,D),p=r[h>>2]+D|0,r[h>>2]=p,q=r[h+4>>2],d=q-D|0,r[h+4>>2]=d,(D|0)==(q|0)){if(p=r[h+40>>2],d=r[p+24>>2],!(Ie[r[d+12>>2]](p)|0)){b=0;break e}p=r[d>>2],r[h>>2]=p,d=r[d+4>>2],r[h+4>>2]=d}if(C=C+D|0,a=a-D|0,!a)break}break e}d=r[h>>2],r[h>>2]=C,r[h+4>>2]=r[h+4>>2]+(d-C|0),b=1}return hn=B+512|0,b}function $p(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0;if((C|0)>0)for(D=r[h+324>>2],ae=r[((r[h+140>>2]&3)<<2)+143920>>2],ve=r[d+8>>2],Se=r[d+4>>2],Le=r[d>>2],fe=r[h+112>>2];;){if(b=a<<2,h=r[b+ve>>2],d=r[b+Se>>2],b=r[b+Le>>2],q=r[p>>2],q&3&&(B=ae&255,He[q>>1]=te[(te[d|0]+(B>>>1|0)|0)+D|0]<<3&2016|te[(B+te[b|0]|0)+D|0]<<8&63488|te[(B+te[h|0]|0)+D|0]>>>3,fe=fe-1|0,q=q+2|0,d=d+1|0,b=b+1|0,h=h+1|0),fe>>>0>=2)for(We=fe>>>1|0,B=0;Z=ae&255,lt=te[(te[d|0]+(Z>>>1|0)|0)+D|0]<<3&2016|te[(Z+te[b|0]|0)+D|0]<<8&63488|te[(Z+te[h|0]|0)+D|0]>>>3,Z=ae>>>8&255,r[q>>2]=lt|(te[(Z+te[b+1|0]|0)+D|0]<<8&63488|te[(te[d+1|0]+(Z>>>1|0)|0)+D|0]<<3&2016|te[(Z+te[h+1|0]|0)+D|0]>>>3)<<16,q=q+4|0,ae=Uc(ae),h=h+2|0,d=d+2|0,b=b+2|0,B=B+1|0,(We|0)!=(B|0););if(fe&1&&(B=te[d|0],d=ae&255,He[q>>1]=te[(B+(d>>>1|0)|0)+D|0]<<3&2016|te[(d+te[b|0]|0)+D|0]<<8&63488|te[(d+te[h|0]|0)+D|0]>>>3),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function P5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0,on=0;if(a=a<<2,b=r[a+r[d+8>>2]>>2],ae=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],C=r[((r[h+140>>2]&3)<<2)+143824>>2],d=r[h+324>>2],p=r[p>>2],B=r[h+452>>2],We=r[B+28>>2],lt=r[B+24>>2],mt=r[B+20>>2],B=r[B+16>>2],Le=r[h+112>>2],Le>>>0>=2)for(h=Le>>>1|0;Z=te[ae|0]<<2,Mt=r[Z+mt>>2],D=C&255,q=te[a|0],fe=D+q|0,Ht=te[d+(Mt+fe|0)|0],ve=q,Se=D>>>1|0,D=te[b|0]<<2,q=r[D+lt>>2]+r[Z+We>>2]>>16,on=te[d+(ve+(Se+q|0)|0)|0],D=r[B+D>>2],fe=te[d+(D+fe|0)|0],ve=te[a+1|0],Se=C>>>8&255,Z=ve+Se|0,He[p+2>>1]=te[d+((q+(Se>>>1|0)|0)+ve|0)|0]<<3&2016|te[d+(D+Z|0)|0]<<8&63488|te[d+(Z+Mt|0)|0]>>>3,He[p>>1]=on<<3&2016|fe<<8&63488|Ht>>>3,p=p+4|0,C=Uc(C),a=a+2|0,b=b+1|0,ae=ae+1|0,h=h-1|0,!!h;);Le&1&&(a=te[a|0],C=C&255,h=a+C|0,q=p,p=te[b|0]<<2,b=te[ae|0]<<2,He[q>>1]=te[d+(a+((r[p+lt>>2]+r[b+We>>2]>>16)+(C>>>1|0)|0)|0)|0]<<3&2016|te[d+(h+r[p+B>>2]|0)|0]<<8&63488|te[d+(h+r[b+mt>>2]|0)|0]>>>3)}function F4(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0;e:{if((p|0)<=0)break e;if(C=r[h+460>>2],b=r[h+112>>2],Z=r[h+120>>2],(Z|0)<=0){for(h=0;y0(r[(h<<2)+a>>2],b),r[C+48>>2]=r[C+48>>2]+1&15,h=h+1|0,(p|0)!=(h|0););break e}if(!b){for(h=0;y0(r[(h<<2)+a>>2],0),r[C+48>>2]=r[C+48>>2]+1&15,h=h+1|0,(p|0)!=(h|0););break e}for(lt=b&-2,mt=b&1;;){for(h=ae<<2,Le=h+a|0,y0(r[Le>>2],b),Mt=h+d|0,We=r[C+48>>2],B=0;;){if(h=B<<2,fe=r[(h+C|0)+52>>2]+(We<<6)|0,D=r[Mt>>2]+B|0,ve=r[h+r[C+24>>2]>>2],h=r[Le>>2],q=0,Se=0,(b|0)!=1)for(;F[h|0]=te[h|0]+te[(r[(q<<2)+fe>>2]+te[D|0]|0)+ve|0],D=D+Z|0,F[h+1|0]=te[h+1|0]+te[(r[((q+1&15)<<2)+fe>>2]+te[D|0]|0)+ve|0],h=h+2|0,q=q+2&15,D=D+Z|0,Se=Se+2|0,(lt|0)!=(Se|0););if(mt&&(F[h|0]=te[h|0]+te[(r[(q<<2)+fe>>2]+te[D|0]|0)+ve|0]),B=B+1|0,(Z|0)==(B|0))break}if(r[C+48>>2]=We+1&15,ae=ae+1|0,(ae|0)==(p|0))break}}}function V4(h){var d=0,a=0,p=0,C=0;for(d=r[h+460>>2],h=Ie[r[r[h+4>>2]>>2]](h,1,2044)|0,a=h+1020|0,r[d+40>>2]=a,r[h+1016>>2]=-1,r[h+1020>>2]=0,r[h+1024>>2]=1,r[h+1028>>2]=2,r[h+1032>>2]=3,r[h+1036>>2]=4,r[h+1008>>2]=-3,r[h+1012>>2]=-2,r[h+1040>>2]=5,r[h+1044>>2]=6,r[h+1e3>>2]=-5,r[h+1004>>2]=-4,r[h+1048>>2]=7,r[h+1052>>2]=8,r[h+992>>2]=-7,r[h+996>>2]=-6,r[h+1056>>2]=9,r[h+1060>>2]=10,r[h+984>>2]=-9,r[h+988>>2]=-8,r[h+1064>>2]=11,r[h+1068>>2]=12,r[h+976>>2]=-11,r[h+980>>2]=-10,r[h+1072>>2]=13,r[h+1076>>2]=14,r[h+968>>2]=-13,r[h+972>>2]=-12,r[h+1080>>2]=15,r[h+960>>2]=-15,r[h+964>>2]=-14,d=16,p=16;h=p<<2,r[h+a>>2]=d,C=0-d|0,r[a-h>>2]=C,r[(h|4)+a>>2]=d,r[((p^-1)<<2)+a>>2]=C,d=d+1|0,h=48,p=p+2|0,(p|0)!=48;);for(;d=h<<2,r[d+a>>2]=32,r[a-d>>2]=-32,r[(d|4)+a>>2]=32,r[((h^-1)<<2)+a>>2]=-32,r[(d|8)+a>>2]=32,r[(-2-h<<2)+a>>2]=-32,r[(d|12)+a>>2]=32,r[(-3-h<<2)+a>>2]=-32,h=h+4|0,(h|0)!=256;);}function R5(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;if(a=r[h+364>>2],r[a+8>>2]=d?124:125,r[a+4>>2]=d?126:127,r[a+120>>2]=0,r[h+244>>2]>0){e:{if(!d){for(;;)if(p=C<<2,d=r[(p+h|0)+248>>2],D=r[d+24>>2],d=r[d+20>>2],Wi(h,1,d,((d<<2)+a|0)+56|0),Wi(h,0,D,((D<<2)+a|0)+72|0),r[(a+p|0)+28>>2]=0,C=C+1|0,!((C|0)>2]))break e}for(;D=C<<2,d=r[(D+h|0)+248>>2],b=r[d+24>>2],p=r[d+20>>2],p>>>0>=4&&(d=r[h>>2],r[d+24>>2]=p,r[d+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),b>>>0>=4&&(d=r[h>>2],r[d+24>>2]=b,r[d+20>>2]=50,Ie[r[r[h>>2]>>2]](h)),d=(p<<2)+a|0,p=r[d+88>>2],p||(p=Ie[r[r[h+4>>2]>>2]](h,1,1028)|0,r[d+88>>2]=p),k(p,0,1028),p=(b<<2)+a|0,d=r[p+104>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,1,1028)|0,r[p+104>>2]=d),k(d,0,1028),r[(a+D|0)+28>>2]=0,C=C+1|0,(C|0)>2];);}d=r[a+120>>2]}else d=0;e:{if(d){r[a+16>>2]=0,r[a+20>>2]=0,d=64;break e}r[a+16>>2]=0,d=32}r[a+24>>2]=d,h=r[h+200>>2],r[a+52>>2]=0,r[a+48>>2]=h}function qh(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{C=r[h+312>>2];t:{if((C|0)<=0)break t;if(b=r[p>>2],d=r[h+452>>2]+r[d+4>>2]|0,p=te[d+150|0],Z=p,D=p-1|0,B=te[d+140|0],B){if(d=0,p>>>0>=2){for(;;){if(ae=d+1|0,C=r[h+112>>2],(C|0)>0){for(p=r[(d<<2)+b>>2],fe=C+p|0,C=r[(q<<2)+a>>2];ve=te[C|0],C=C+1|0,p=k(p,ve,B)+B|0,fe>>>0>p>>>0;);C=r[h+112>>2]}if(ku(b,d,b,ae,D,C),q=q+1|0,d=d+Z|0,!((d|0)>2]))break}break t}for(;;){if(D=r[h+112>>2],(D|0)>0){for(p=r[(d<<2)+b>>2],D=D+p|0,C=r[(q<<2)+a>>2];ae=te[C|0],C=C+1|0,p=k(p,ae,B)+B|0,D>>>0>p>>>0;);C=r[h+312>>2]}if(q=q+1|0,d=d+Z|0,!((C|0)>(d|0)))break}break t}if(p>>>0>=2){for(d=0;;){if(a=r[h+112>>2],(a|0)>0)break e;if(ku(b,d,b,d+1|0,D,a),d=d+Z|0,!((d|0)>2]))break}break t}for(d=0,h=r[h+112>>2]<=0;;){if(!h)break e;if(d=d+Z|0,!((C|0)>(d|0)))break}}return}}function Af(h){var d=0,a=0,p=0,C=0,D=0,b=0;if(a=Io(40),r[a>>2]=0,!h){h=te[5114]|te[5115]<<8|(te[5116]<<16|te[5117]<<24),d=te[5110]|te[5111]<<8|(te[5112]<<16|te[5113]<<24),F[147847]=d,F[147848]=d>>>8,F[147849]=d>>>16,F[147850]=d>>>24,F[147851]=h,F[147852]=h>>>8,F[147853]=h>>>16,F[147854]=h>>>24,h=te[5107]|te[5108]<<8|(te[5109]<<16|te[5110]<<24),r[36960]=te[5103]|te[5104]<<8|(te[5105]<<16|te[5106]<<24),r[36961]=h,J(a);return}for(r[h+1348>>2]=0,r[h+1132>>2]=0,b=h+376|0,a=Fc(h+972|0,1,a,4),D=Mi;;){if(d){J(a);return}e:{t:{n:{d=r[h+1140>>2];r:{if(d&1){r[37564]=0,fu(255,h|0),d=r[37564],r[37564]=0,p=-1;i:{if(!d||(C=r[37565],!C))break i;if(p=Zo(r[d>>2],a,D),!p)break r;Mi=C}if(d=Mi,(p|0)==1)continue;d=r[h+1140>>2]}if(!(d&2))break e;if(r[37564]=0,fu(256,b|0),d=r[37564],r[37564]=0,p=-1,!d||(C=r[37565],!C))break t;if(p=Zo(r[d>>2],a,D),p)break n}J(a),Hu(d,C),mr()}Mi=C}if(d=Mi,(p|0)==1)continue}break}J(h),J(a)}function vt(h){h=h|0;var d=0,a=0,p=0;e:{t:{n:{r:{i:switch(d=r[h+332>>2],r[d+20>>2]){case 2:break n;case 1:break r;case 0:break i;default:break t}if(Kh(h),vu(h),r[h+176>>2]||(Ie[r[r[h+352>>2]>>2]](h),Ie[r[r[h+356>>2]>>2]](h),Ie[r[r[h+340>>2]>>2]](h,0)),Ie[r[r[h+360>>2]>>2]](h),Ie[r[r[h+364>>2]>>2]](h,r[h+184>>2]),Ie[r[r[h+344>>2]>>2]](h,r[d+28>>2]>1?3:0),Ie[r[r[h+336>>2]>>2]](h,0),r[h+184>>2]){r[d+12>>2]=0;break e}r[d+12>>2]=1;break e}if(Kh(h),vu(h),r[h+316>>2]|!r[h+324>>2]|r[h+180>>2]){Ie[r[r[h+364>>2]>>2]](h,1),Ie[r[r[h+344>>2]>>2]](h,2),r[d+12>>2]=0;break e}r[d+20>>2]=2,r[d+24>>2]=r[d+24>>2]+1}r[h+184>>2]||(Kh(h),vu(h)),Ie[r[r[h+364>>2]>>2]](h,0),Ie[r[r[h+344>>2]>>2]](h,2),r[d+32>>2]||Ie[r[r[h+348>>2]+4>>2]](h),Ie[r[r[h+348>>2]+8>>2]](h),r[d+12>>2]=0;break e}a=r[h>>2],r[a+20>>2]=48,Ie[r[a>>2]](h)}p=d,a=r[d+28>>2],d=r[d+24>>2],r[p+16>>2]=(a-1|0)==(d|0),h=r[h+8>>2],h&&(r[h+16>>2]=a,r[h+12>>2]=d)}function jp(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;D=hn-32|0,hn=D,ae=r[h+412>>2],C=r[h+444>>2],b=r[h+276>>2];e:{t:{if(!b){b=0;break t}if(r[C+40>>2])break t;if(a=r[h+440>>2],r[a+24>>2]=r[a+24>>2]+(r[C+16>>2]/8|0),r[C+16>>2]=0,!(Ie[r[a+8>>2]](h)|0))break e;if(r[h+328>>2]>0)for(;r[((p<<2)+C|0)+24>>2]=0,p=p+1|0,(p|0)>2];);if(r[C+20>>2]=0,b=r[h+276>>2],r[C+40>>2]=b,r[h+416>>2])break t;r[C+8>>2]=0}if(r[D+24>>2]=h,a=r[h+24>>2],B=r[a>>2],r[D+8>>2]=B,Z=r[a+4>>2],r[D+12>>2]=Z,p=r[C+16>>2],q=r[C+12>>2],r[h+356>>2]>0){for(B=1<>2],(p|0)<=0){if(!ms(D+8|0,q,p,1)){p=0;break e}q=r[D+16>>2],p=r[D+20>>2]}if(p=p-1|0,q>>>p&1&&(He[b>>1]=B|En[b>>1]),a=a+1|0,!((a|0)>2]))break}b=r[h+276>>2],Z=r[D+12>>2],B=r[D+8>>2],a=r[h+24>>2]}if(r[a+4>>2]=Z,r[a>>2]=B,r[C+16>>2]=p,r[C+12>>2]=q,p=1,!b)break e;r[C+40>>2]=r[C+40>>2]-1}return hn=D+32|0,p|0}function A5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;ae=r[d+28>>2],D=r[h+236>>2];e:{if((D|0)<=0||(C=r[h+28>>2],b=(ae<<4)-C|0,(b|0)<=0))break e;if(h=0,D>>>0>=4)for(ve=D&-4;B=h<<2,Z=C+r[B+a>>2]|0,k(Z,te[Z-1|0],b),Z=C+r[(B|4)+a>>2]|0,k(Z,te[Z-1|0],b),Z=C+r[(B|8)+a>>2]|0,k(Z,te[Z-1|0],b),B=C+r[(B|12)+a>>2]|0,k(B,te[B-1|0],b),h=h+4|0,q=q+4|0,(ve|0)!=(q|0););if(q=D&3,!q)break e;for(;D=C+r[(h<<2)+a>>2]|0,k(D,te[D-1|0],b),h=h+1|0,fe=fe+1|0,(q|0)!=(fe|0););}e:{if(r[d+12>>2]<=0||(ae=ae<<3,!ae))break e;for(q=0,D=0;;){for(C=q<<2,h=r[C+a>>2],b=r[(D<<2)+p>>2],C=r[(C|4)+a>>2],B=0;F[b|0]=(te[C+1|0]+(te[C|0]+(te[h|0]+te[h+1|0]|0)|0)|0)+1>>>2,F[b+1|0]=(te[C+3|0]+(te[C+2|0]+(te[h+2|0]+te[h+3|0]|0)|0)|0)+2>>>2,C=C+4|0,h=h+4|0,b=b+2|0,B=B+2|0,(ae|0)!=(B|0););if(q=q+2|0,D=D+1|0,!((D|0)>2]))break}}}function zu(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0,B=0,q=0,Z=0;B=r[h+4>>2],a>>>0>=1000000001&&(p=r[h>>2],r[p+20>>2]=54,r[p+24>>2]=7,Ie[r[r[h>>2]>>2]](h)),C=a+31&-32,q=C+43|0,q>>>0>=1000000001&&(a=r[h>>2],r[a+20>>2]=54,r[a+24>>2]=1,Ie[r[r[h>>2]>>2]](h)),d>>>0>=2&&(a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=14,Ie[r[r[h>>2]>>2]](h));e:{t:{if(Z=(d<<2)+B|0,a=r[Z+52>>2],!a)break t;for(;;){if(D=a,a=r[a+8>>2],C>>>0>a>>>0){if(a=r[D>>2],a)continue;break t}break}p=D,h=r[p+4>>2];break e}d=r[(d<<2)+(D?9752:9744)>>2],a=999999957-C|0,a=d>>>0>>0?d:a,b=q+a|0,p=Io(b);t:{if(p){d=a;break t}for(;d=a>>>1|0,a>>>0<=99&&(a=r[h>>2],r[a+20>>2]=54,r[a+24>>2]=2,Ie[r[r[h>>2]>>2]](h)),a=d,b=q+a|0,p=Io(b),!p;);}r[B+76>>2]=r[B+76>>2]+b,a=d+C|0,r[p+8>>2]=a,r[p>>2]=0,r[p+4>>2]=0;t:{if(!D){r[Z+52>>2]=p;break t}r[D>>2]=p}h=0}return r[p+8>>2]=a-C,r[p+4>>2]=h+C,a=p+12|0,d=a&31,h+((d?32-d|0:0)+a|0)|0}function M0(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0;d=r[h+112>>2],p=r[h+116>>2],b=(d|p)!=0,D=d,a=r[h+4>>2],B=r[h+44>>2],d=a-B|0,q=d,C=d+r[h+120>>2]|0,d=r[h+124>>2]+(d>>31)|0;e:{if(d=C>>>0>>0?d+1|0:d,!(((d|0)>=(p|0)&C>>>0>=D>>>0|(d|0)>(p|0))&b)){p=hn-16|0,hn=p,a=-1;t:{if(_k(h)||(Ie[r[h+32>>2]](h,p+15|0,1)|0)!=1)break t;a=te[p+15|0]}if(hn=p+16|0,p=a,(a|0)>=0)break e;B=r[h+44>>2],a=r[h+4>>2]}return r[h+112>>2]=-1,r[h+116>>2]=-1,r[h+104>>2]=a,p=B-a|0,a=p+C|0,d=(p>>31)+d|0,r[h+120>>2]=a,r[h+124>>2]=a>>>0

>>0?d+1|0:d,-1}a=C+1|0,d=a?d:d+1|0,b=r[h+4>>2],B=r[h+8>>2],D=r[h+116>>2],q=D,C=r[h+112>>2];e:{if(!(D|C)||(D=C-a|0,C=q-(d+(a>>>0>C>>>0)|0)|0,Z=B-b|0,q=Z>>31,(C|0)>=(q|0)&D>>>0>=Z>>>0|(C|0)>(q|0)))break e;B=D+b|0}return r[h+104>>2]=B,C=r[h+44>>2],D=C-b|0,a=D+a|0,d=(D>>31)+d|0,r[h+120>>2]=a,r[h+124>>2]=a>>>0>>0?d+1|0:d,C>>>0>=b>>>0&&(F[b-1|0]=p),p}function U4(h,d,a){var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(d){if(!a)break l;break u}h=(h>>>0)/(a>>>0)|0,Pi=0;break e}if(!h)break o;break s}if(!(a-1&a))break a;D=(Q0(a)+33|0)-Q0(d)|0,b=0-D|0;break r}h=(d>>>0)/0|0,Pi=0;break e}if(p=32-Q0(d)|0,p>>>0<31)break i;break n}if((a|0)==1)break t;D=Bc(a),a=D&31,(D&63)>>>0>=32?h=d>>>a|0:(p=d>>>a|0,h=((1<>>a),Pi=p;break e}D=p+1|0,b=63-p|0}if(p=D&63,C=p&31,p>>>0>=32?(p=0,B=d>>>C|0):(p=d>>>C|0,B=((1<>>C),b=b&63,C=b&31,b>>>0>=32?(d=h<>>32-C|d<>>31,p=B<<1|d>>>31,C=fe-(q+(p>>>0>b>>>0)|0)>>31,Z=a&C,B=p-Z|0,p=q-(p>>>0>>0)|0,d=d<<1|h>>>31,h=ae|h<<1,ae=C&1,D=D-1|0,!!D;);Pi=d<<1|h>>>31,h=ae|h<<1;break e}h=0,d=0}Pi=d}return h}function B4(h,d,a){var p=0,C=0,D=0,b=0;if(p=h+4|0,C=(p+d|0)-1&0-d,d=r[h>>2],C+a>>>0<=(d+h|0)-4>>>0){D=r[h+4>>2],r[D+8>>2]=r[h+8>>2],r[r[h+8>>2]+4>>2]=D,(p|0)!=(C|0)&&(C=C-p|0,D=h-(r[h-4>>2]&-2)|0,p=C+r[D>>2]|0,r[D>>2]=p,r[(D+(p&-4)|0)-4>>2]=p,h=h+C|0,d=d-C|0,r[h>>2]=d);e:{if(a+24>>>0<=d>>>0){p=(h+a|0)+8|0,d=(d-a|0)-8|0,r[p>>2]=d,r[(p+(d&-4)|0)-4>>2]=d|1,C=r[p>>2]-8|0;t:{if(C>>>0<=127){d=(C>>>3|0)-1|0;break t}if(D=Q0(C),d=((C>>>29-D^4)-(D<<2)|0)+110|0,C>>>0<=4095)break t;d=((C>>>30-D^2)-(D<<1)|0)+71|0,d=d>>>0>=63?63:d}C=d<<4,r[p+4>>2]=C+149216,C=C+149224|0,r[p+8>>2]=r[C>>2],r[C>>2]=p,r[r[p+8>>2]+4>>2]=p,C=r[37562],D=r[37563],p=d&31,(d&63)>>>0>=32?(d=1<>>32-p,p=b),r[37562]=p|C,r[37563]=d|D,d=a+8|0,r[h>>2]=d,r[((d&-4)+h|0)-4>>2]=d;break e}r[(h+d|0)-4>>2]=d}h=h+4|0}else h=0;return h}function L5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;ae=r[d+28>>2],D=r[h+236>>2];e:{if((D|0)<=0||(C=r[h+28>>2],b=(ae<<4)-C|0,(b|0)<=0))break e;if(h=0,D>>>0>=4)for(ve=D&-4;B=h<<2,q=C+r[B+a>>2]|0,k(q,te[q-1|0],b),q=C+r[(B|4)+a>>2]|0,k(q,te[q-1|0],b),q=C+r[(B|8)+a>>2]|0,k(q,te[q-1|0],b),B=C+r[(B|12)+a>>2]|0,k(B,te[B-1|0],b),h=h+4|0,fe=fe+4|0,(ve|0)!=(fe|0););if(D=D&3,!D)break e;for(;B=C+r[(h<<2)+a>>2]|0,k(B,te[B-1|0],b),h=h+1|0,Z=Z+1|0,(D|0)!=(Z|0););}e:{if(r[d+12>>2]<=0||(D=ae<<3,!D))break e;for(Z=0;;){for(C=Z<<2,h=r[C+a>>2],C=r[p+C>>2],b=0;F[C|0]=te[h|0]+te[h+1|0]>>>1,F[C+1|0]=(te[h+2|0]+te[h+3|0]|0)+1>>>1,h=h+4|0,C=C+2|0,b=b+2|0,(D|0)!=(b|0););if(Z=Z+1|0,!((Z|0)>2]))break}}}function Lf(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0;if(Z=r[h+328>>2],p=r[h+364>>2],a=r[h+24>>2],r[p+24>>2]=r[a>>2],r[p+28>>2]=r[a+4>>2],r[p+76>>2]|!r[h+200>>2]||Nc(p,r[p+80>>2]),r[h+272>>2]>0)for(;;){a=B<<2,D=r[(a+h|0)+276>>2]<<2,C=r[(D+h|0)+248>>2],D=p+D|0,b=r[D+44>>2],a=He[r[d+a>>2]>>1]>>Z,r[D+44>>2]=a,a=a-b|0,D=a>>31,b=(a^D)-D|0,a=te[b+76560|0],a>>>0>=12&&(q=r[h>>2],r[q+20>>2]=6,Ie[r[q>>2]](h)),C=r[C+20>>2];e:{if(r[p+20>>2]){C=r[((C<<2)+p|0)+100>>2]+(a<<2)|0,r[C>>2]=r[C>>2]+1;break e}C=r[((C<<2)+p|0)+84>>2],ta(p,r[C+(a<<2)>>2],F[(a+C|0)+1024|0])}if(a&&ta(p,D^b,a),B=B+1|0,!((B|0)>2]))break}return d=r[h+24>>2],r[d>>2]=r[p+24>>2],r[d+4>>2]=r[p+28>>2],h=r[h+200>>2],h&&(d=r[p+76>>2],d?h=d:r[p+80>>2]=r[p+80>>2]+1&7,r[p+76>>2]=h-1),1}function N5(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0,B=0,q=0,Z=0;D=hn-32|0,hn=D,p=r[h+28>>2],r[D+16>>2]=p,b=r[h+20>>2],r[D+28>>2]=a,r[D+24>>2]=d,d=b-p|0,r[D+20>>2]=d,b=d+a|0,q=2;e:{t:{d=D+16|0,p=cp(r[h+60>>2],d|0,2,D+12|0)|0,p?(r[37091]=p,p=-1):p=0;n:{r:{if(p){p=d;break r}for(;;){if(C=r[D+12>>2],(C|0)==(b|0))break n;if((C|0)<0){p=d;break t}if(B=r[d+4>>2],Z=B>>>0>>0,p=(Z<<3)+d|0,B=C-(Z?B:0)|0,r[p>>2]=B+r[p>>2],d=(Z?12:4)+d|0,r[d>>2]=r[d>>2]-B,b=b-C|0,d=p,q=q-Z|0,C=cp(r[h+60>>2],d|0,q|0,D+12|0)|0,C?(r[37091]=C,C=-1):C=0,!!C)break}}if((b|0)!=-1)break t}d=r[h+44>>2],r[h+28>>2]=d,r[h+20>>2]=d,r[h+16>>2]=d+r[h+48>>2],h=a;break e}if(r[h+28>>2]=0,r[h+16>>2]=0,r[h+20>>2]=0,r[h>>2]=r[h>>2]|32,h=0,(q|0)==2)break e;h=a-r[p+4>>2]|0}return hn=D+32|0,h|0}function G4(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;if(a=a<<2,D=r[a+r[d+8>>2]>>2],Z=r[a+r[d+4>>2]>>2],a=r[a+r[d>>2]>>2],d=r[h+324>>2],p=r[p>>2],b=r[h+452>>2],fe=r[b+28>>2],ve=r[b+24>>2],Se=r[b+20>>2],b=r[b+16>>2],h=r[h+112>>2],h>>>0>=2)for(ae=h>>>1|0;B=te[D|0]<<2,q=te[Z|0]<<2,Le=r[B+ve>>2]+r[q+fe>>2]>>16,C=te[a|0],We=te[d+(Le+C|0)|0],q=r[q+Se>>2],lt=te[d+(q+C|0)|0],B=r[b+B>>2],mt=te[d+(B+C|0)|0],C=te[a+1|0],He[p+2>>1]=te[d+(C+Le|0)|0]<<3&2016|te[d+(C+B|0)|0]<<8&63488|te[d+(C+q|0)|0]>>>3,He[p>>1]=We<<3&2016|mt<<8&63488|lt>>>3,p=p+4|0,a=a+2|0,D=D+1|0,Z=Z+1|0,ae=ae-1|0,!!ae;);h&1&&(C=p,h=te[a|0],p=te[D|0]<<2,D=te[Z|0]<<2,He[C>>1]=te[d+(h+(r[p+ve>>2]+r[D+fe>>2]>>16)|0)|0]<<3&2016|te[d+(h+r[p+b>>2]|0)|0]<<8&63488|te[d+(h+r[D+Se>>2]|0)|0]>>>3)}function W4(){mp(147296,5889),S2(147320,4355,1,1,0),fl(147332,3835,1,-128,127),fl(147376,3828,1,-128,127),fl(147364,3826,1,0,255),fl(147388,2221,2,-32768,32767),fl(147400,2212,2,0,65535),fl(147412,2251,4,-2147483648,2147483647),fl(147424,2242,4,0,-1),fl(147436,4490,4,-2147483648,2147483647),fl(147448,4481,4,0,-1),Wk(147460,2676,-2147483648,2147483647),Wk(147472,2675,0,-1),hp(147484,2524,4),hp(147496,5118,8),fp(145152,4508),fp(145224,8473),Nh(145296,4,4495),Nh(145372,2,4520),Nh(145448,4,4535),pp(9144,4403),Qs(145488,0,8404),Qs(145528,0,8506),Qs(9188,1,8434),Qs(145568,2,8036),Qs(145608,3,8067),Qs(145648,4,8107),Qs(145688,5,8136),Qs(145728,4,8543),Qs(145768,5,8573),Qs(145528,0,8238),Qs(9188,1,8205),Qs(145568,2,8304),Qs(145608,3,8270),Qs(145648,4,8371),Qs(145688,5,8337),Qs(145808,6,8174),Qs(145848,7,8612)}function zp(h){h=h|0;var d=0,a=0,p=0;d=r[h+420>>2];e:{t:{if(r[d+8>>2]){r[d+8>>2]=0,Ie[r[r[h+460>>2]>>2]](h,0),Ie[r[r[h+432>>2]>>2]](h,2),a=2;break t}n:{if(r[h+136>>2]|!r[h+84>>2])break n;if(!(!r[h+92>>2]|!r[h+108>>2])){r[h+460>>2]=r[d+120>>2],r[d+8>>2]=1;break n}if(r[h+100>>2]){r[h+460>>2]=r[d+116>>2];break n}a=r[h>>2],r[a+20>>2]=46,Ie[r[a>>2]](h)}if(Ie[r[r[h+448>>2]>>2]](h),Ie[r[r[h+428>>2]+8>>2]](h),r[h+68>>2])break e;r[d+112>>2]||Ie[r[r[h+456>>2]>>2]](h),Ie[r[r[h+452>>2]>>2]](h),r[h+84>>2]&&Ie[r[r[h+460>>2]>>2]](h,r[d+8>>2]),Ie[r[r[h+432>>2]>>2]](h,r[d+8>>2]?3:0),a=0}Ie[r[r[h+424>>2]>>2]](h,a)}a=r[h+8>>2];e:{if(!a||(p=r[d+108>>2],r[a+12>>2]=p,d=(r[d+8>>2]?2:1)+p|0,r[a+16>>2]=d,r[r[h+436>>2]+20>>2]|!r[h+64>>2]))break e;r[a+16>>2]=d+(r[h+108>>2]?2:1)}}function b5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0;C=hn-16|0,hn=C,B=r[h+364>>2],N0(B),a=r[h+316>>2],r[C+8>>2]=0,r[C+12>>2]=0,r[C>>2]=0,r[C+4>>2]=0;e:{if(d=r[h+244>>2],(d|0)<=0)break e;if(a){for(a=0;p=r[r[((a<<2)+h|0)+248>>2]+24>>2]<<2,D=p+C|0,r[D>>2]||(b=h+p|0,d=r[b+104>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[b+104>>2]=d),If(h,d,r[(p+B|0)+100>>2]),r[D>>2]=1,d=r[h+244>>2]),a=a+1|0,(a|0)<(d|0););break e}if(r[h+324>>2])break e;for(a=0;;){t:{if(p||(p=r[r[((a<<2)+h|0)+248>>2]+20>>2]<<2,D=p+C|0,r[D>>2]))break t;b=h+p|0,d=r[b+88>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[b+88>>2]=d),If(h,d,r[(p+B|0)+100>>2]),r[D>>2]=1,d=r[h+244>>2]}if(a=a+1|0,(a|0)>=(d|0))break e;p=r[h+324>>2]}}hn=C+16|0}function F5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;a=r[h+444>>2];e:{if(!(r[h+408>>2]|(r[h+400>>2]|r[h+404>>2]!=63))&&!r[h+412>>2])break e;d=r[h>>2],r[d+20>>2]=122,Ie[r[d+4>>2]](h,-1)}if(r[h+328>>2]>0)for(p=a+20|0,q=a+56|0,b=a+40|0,d=0;B=d<<2,D=r[(B+h|0)+332>>2],C=r[D+24>>2],D=r[D+20>>2],Vh(h,1,D,(D<<2)+b|0),Vh(h,0,C,(C<<2)+q|0),r[p+B>>2]=0,d=d+1|0,(d|0)>2];);if(C=0,r[h+356>>2]>0)for(;;){p=C<<2,d=p+a|0,p=r[((r[(h+p|0)+360>>2]<<2)+h|0)+332>>2],r[d+72>>2]=r[((r[p+20>>2]<<2)+a|0)+40>>2],r[d+112>>2]=r[((r[p+24>>2]<<2)+a|0)+56>>2];e:{if(r[p+48>>2]){r[d+152>>2]=1,b=r[p+36>>2]>1;break e}r[d+152>>2]=0,b=0}if(r[d+192>>2]=b,C=C+1|0,!((C|0)>2]))break}r[a+8>>2]=0,r[a+12>>2]=0,r[a+16>>2]=0,r[a+36>>2]=r[h+276>>2]}function u0(h){var d=0,a=0,p=0,C=0,D=0,b=0;for(d=r[h+24>>2],a=r[d+4>>2],C=r[d>>2];;){if(!a){if(!(Ie[r[d+12>>2]](h)|0))return 0;C=r[d>>2],a=r[d+4>>2]}if(p=C+1|0,a=a-1|0,te[C|0]!=255)for(;;){if(C=r[h+440>>2],r[C+24>>2]=r[C+24>>2]+1,r[d+4>>2]=a,r[d>>2]=p,!a){if(!(Ie[r[d+12>>2]](h)|0))return 0;p=r[d>>2],a=r[d+4>>2]}if(a=a-1|0,C=te[p|0],p=p+1|0,(C|0)==255)break}for(;;){if(!a){if(!(Ie[r[d+12>>2]](h)|0))return 0;p=r[d>>2],a=r[d+4>>2]}if(a=a-1|0,D=te[p|0],C=p+1|0,p=C,(D|0)!=255)break}if(!D){p=r[h+440>>2],r[p+24>>2]=r[p+24>>2]+2,r[d+4>>2]=a,r[d>>2]=C;continue}break}return p=r[r[h+440>>2]+24>>2],p&&(b=r[h>>2],r[b+24>>2]=p,r[b+20>>2]=116,r[r[h>>2]+28>>2]=D,Ie[r[r[h>>2]+4>>2]](h,-1),r[r[h+440>>2]+24>>2]=0),r[h+416>>2]=D,r[d+4>>2]=a,r[d>>2]=C,1}function Hp(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0;a>>>0>=65534&&(p=r[h>>2],r[p+20>>2]=11,Ie[r[p>>2]](h)),p=r[h+24>>2],C=r[p>>2],r[p>>2]=C+1,F[C|0]=255,C=r[p+4>>2]-1|0,r[p+4>>2]=C;e:{if(C||Ie[r[p+12>>2]](h)|0)break e;p=r[h>>2],r[p+20>>2]=24,Ie[r[p>>2]](h)}p=r[h+24>>2],C=r[p>>2],r[p>>2]=C+1,F[C|0]=d,d=r[p+4>>2]-1|0,r[p+4>>2]=d;e:{if(d||Ie[r[p+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],p=r[d>>2],r[d>>2]=p+1,C=p,p=a+2|0,F[C|0]=p>>>8,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=p,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}}function ta(h,d,a){var p=0,C=0,D=0;if(C=r[h+36>>2],a||(p=r[h+40>>2],D=r[p>>2],r[D+20>>2]=40,Ie[r[D>>2]](p)),!r[h+20>>2]){if(p=(-1<>2]|p<<24-d,(d|0)>=8)for(;;){C=r[h+24>>2],r[h+24>>2]=C+1,F[C|0]=a>>>16,C=r[h+28>>2]-1|0,r[h+28>>2]=C,C||(p=r[h+40>>2],C=r[p+24>>2],Ie[r[C+12>>2]](p)|0||(p=r[h+40>>2],D=r[p>>2],r[D+20>>2]=24,Ie[r[D>>2]](p)),r[h+24>>2]=r[C>>2],r[h+28>>2]=r[C+4>>2]),C=d;e:{if((a&16711680)!=16711680||(d=r[h+24>>2],r[h+24>>2]=d+1,F[d|0]=0,d=r[h+28>>2]-1|0,r[h+28>>2]=d,d))break e;p=r[h+40>>2],d=r[p+24>>2],Ie[r[d+12>>2]](p)|0||(p=r[h+40>>2],D=r[p>>2],r[D+20>>2]=24,Ie[r[D>>2]](p)),r[h+24>>2]=r[d>>2],r[h+28>>2]=r[d+4>>2]}if(d=C-8|0,a=a<<8,!((C|0)>15))break}r[h+36>>2]=d,r[h+32>>2]=a}}function $4(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0;e:{t:{n:{r:{i:{if(!h||(p=mk(h),(p|0)==(h|0)))break i;if(D=p-h|0,!te[D+h|0])break r}r[37091]=28;break n}if(!a&&(a=0,Vf(h)))break e;if(p=Vc(d),a=Io((p+D|0)+2|0),a)break t}return-1}D0(a,h,D),h=a+D|0,F[h|0]=61,D0(h+1|0,d,p+1|0),h=a;t:{n:{r:{d=r[37092];i:{if(!d){d=0;break i}if(C=r[d>>2],C)break r}a=0;break n}for(p=D+1|0,a=0;;){if(!Sk(h,C,p)){a=r[d>>2],r[d>>2]=h,Ff(a,h),a=0;break t}if(a=a+1|0,C=r[d+4>>2],d=d+4|0,!C)break}d=r[37092]}p=a<<2,C=p+8|0;n:{r:{if(r[37298]==(d|0)){if(d=Go(d,C),d)break r;break n}if(d=Io(C),!d)break n;a&&D0(d,r[37092],p),J(r[37298])}a=(a<<2)+d|0,r[a>>2]=h,r[a+4>>2]=0,r[37092]=d,r[37298]=d,h&&Ff(0,h),a=0;break t}J(h),a=-1}}return a|0}function Li(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if(r[h+312>>2]>0)for(ve=r[p>>2];;){p=fe<<2,D=r[p+ve>>2],b=r[a+p>>2],p=te[b|0],F[D|0]=p,F[D+1|0]=(te[b+1|0]+Ce(p,3)|0)+2>>>2,C=D+2|0,p=b+1|0,ae=r[d+40>>2],q=ae-2|0;e:{if(!q){b=D,Z=C;break e}t:{if(!(ae&1)){B=C;break t}p=Ce(te[b+1|0],3),F[D+2|0]=(p+te[b|0]|0)+1>>>2,F[D+3|0]=(p+te[b+2|0]|0)+2>>>2,q=ae-3|0,p=b+2|0,Z=D+4|0,B=Z,D=C}if(b=C,(ae|0)==3)break e;for(;C=Ce(te[p|0],3),F[B|0]=(C+te[p-1|0]|0)+1>>>2,F[D+3|0]=(C+te[p+1|0]|0)+2>>>2,C=Ce(te[p+1|0],3),F[B+2|0]=(C+te[p|0]|0)+1>>>2,F[B+3|0]=(C+te[p+2|0]|0)+2>>>2,p=p+2|0,D=B+2|0,Z=B+4|0,B=Z,b=D,q=q-2|0,!!q;);}if(C=te[p-1|0],p=te[p|0],F[Z|0]=(C+Ce(p,3)|0)+1>>>2,F[b+3|0]=p,fe=fe+1|0,!((fe|0)>2]))break}}function Lc(h,d,a){var p=0,C=0;e:{if((h|0)==(d|0))break e;if(C=h+a|0,d-C>>>0<=0-(a<<1)>>>0)return D0(h,d,a);p=(h^d)&3;t:{n:{if(h>>>0>>0){if(p){p=h;break t}if(!(h&3)){p=h;break n}for(p=h;;){if(!a)break e;if(F[p|0]=te[d|0],d=d+1|0,a=a-1|0,p=p+1|0,!(p&3))break}break n}r:{if(p)break r;if(C&3)for(;;){if(!a)break e;if(a=a-1|0,p=a+h|0,F[p|0]=te[d+a|0],!(p&3))break}if(a>>>0<=3)break r;for(;a=a-4|0,r[a+h>>2]=r[d+a>>2],a>>>0>3;);}if(!a)break e;for(;a=a-1|0,F[a+h|0]=te[d+a|0],!!a;);break e}if(a>>>0<=3)break t;for(;r[p>>2]=r[d>>2],d=d+4|0,p=p+4|0,a=a-4|0,a>>>0>3;);}if(!a)break e;for(;F[p|0]=te[d|0],p=p+1|0,d=d+1|0,a=a-1|0,!!a;);}return h}function V5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0;e:{if((p|0)<=0)break e;if(D=r[h+460>>2],C=r[D+48>>2],fe=r[h+112>>2],fe){for(h=r[D+24>>2],ve=r[h+8>>2],Se=r[h+4>>2],Le=r[h>>2];;){for(h=C<<6,We=h+r[D+60>>2]|0,lt=h+r[D+56>>2]|0,mt=h+r[D+52>>2]|0,h=b<<2,B=r[h+a>>2],h=r[h+d>>2],q=0,Z=fe;ae=q<<2,F[B|0]=(te[(r[lt+ae>>2]+te[h+1|0]|0)+Se|0]+te[(r[ae+mt>>2]+te[h|0]|0)+Le|0]|0)+te[(r[ae+We>>2]+te[h+2|0]|0)+ve|0],B=B+1|0,h=h+3|0,q=q+1&15,Z=Z-1|0,!!Z;);if(C=C+1&15,r[D+48>>2]=C,b=b+1|0,(b|0)==(p|0))break}break e}if(p>>>0>=8)for(d=p&-8,h=0;C=C+8&15,h=h+8|0,(d|0)!=(h|0););if(d=p&7,d)for(h=0;C=C+1&15,h=h+1|0,(d|0)!=(h|0););r[D+48>>2]=C}}function Xh(h,d,a,p){e:switch(d-9|0){case 0:d=r[a>>2],r[a>>2]=d+4,r[h>>2]=r[d>>2];return;case 6:d=r[a>>2],r[a>>2]=d+4,d=He[d>>1],r[h>>2]=d,r[h+4>>2]=d>>31;return;case 7:d=r[a>>2],r[a>>2]=d+4,r[h>>2]=En[d>>1],r[h+4>>2]=0;return;case 8:d=r[a>>2],r[a>>2]=d+4,d=F[d|0],r[h>>2]=d,r[h+4>>2]=d>>31;return;case 9:d=r[a>>2],r[a>>2]=d+4,r[h>>2]=te[d|0],r[h+4>>2]=0;return;case 16:d=r[a>>2]+7&-8,r[a>>2]=d+8,In[h>>3]=In[d>>3];return;case 17:Ie[p|0](h,a);default:return;case 1:case 4:case 14:d=r[a>>2],r[a>>2]=d+4,d=r[d>>2],r[h>>2]=d,r[h+4>>2]=d>>31;return;case 2:case 5:case 11:case 15:d=r[a>>2],r[a>>2]=d+4,r[h>>2]=r[d>>2],r[h+4>>2]=0;return;case 3:case 10:case 12:case 13:break e}d=r[a>>2]+7&-8,r[a>>2]=d+8,a=r[d+4>>2],r[h>>2]=r[d>>2],r[h+4>>2]=a}function U5(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0;if(a=r[h+60>>2],(a|0)>0)for(d=r[h+68>>2];D=Of(h,r[d+16>>2])+D|0,d=d+84|0,p=p+1|0,a=r[h+60>>2],(p|0)<(a|0););e:{t:{n:{r:{if(!r[h+180>>2]){if(C=194,r[h+228>>2])break e;if(p=0,r[h+56>>2]!=8)break n;p=1;i:{if((a|0)<=0)break i;if(b=a&1,d=r[h+68>>2],(a|0)!=1)for(B=a&-2,a=0;p=r[d+24>>2]<2&r[d+20>>2]<=1?p:0,p=r[d+108>>2]<2&r[d+104>>2]<=1?p:0,d=d+168|0,a=a+2|0,(B|0)!=(a|0););if(!b|r[d+24>>2]<2&r[d+20>>2]<=1)break i;p=0}if(!D|!p)break n;if(d=r[h>>2],r[d+20>>2]=75,Ie[r[d+4>>2]](h,0),!r[h+180>>2])break r}Tf(h,r[h+228>>2]?202:201);return}if(!r[h+228>>2])break t;break e}if(r[h+228>>2]||(C=192,p))break e}C=193}Tf(h,C)}function Nc(h,d){var a=0,p=0,C=0;N0(h);e:{if(r[h+20>>2])break e;ta(h,127,7),r[h+32>>2]=0,r[h+36>>2]=0,a=r[h+24>>2],r[h+24>>2]=a+1,F[a|0]=255,a=r[h+28>>2]-1|0,r[h+28>>2]=a;t:{if(a){a=r[h+24>>2];break t}a=r[h+40>>2],p=r[a+24>>2],Ie[r[p+12>>2]](a)|0||(a=r[h+40>>2],C=r[a>>2],r[C+20>>2]=24,Ie[r[C>>2]](a)),a=r[p>>2],r[h+28>>2]=r[p+4>>2]}if(r[h+24>>2]=a+1,F[a|0]=d-48,d=r[h+28>>2]-1|0,r[h+28>>2]=d,d)break e;a=r[h+40>>2],d=r[a+24>>2],Ie[r[d+12>>2]](a)|0||(a=r[h+40>>2],p=r[a>>2],r[p+20>>2]=24,Ie[r[p>>2]](a)),r[h+24>>2]=r[d>>2],r[h+28>>2]=r[d+4>>2]}a=r[h+40>>2];e:{if(!r[a+316>>2]){if(r[a+244>>2]<=0)break e;for(d=0;r[((d<<2)+h|0)+44>>2]=0,d=d+1|0,(d|0)>2];);break e}r[h+64>>2]=0,r[h+68>>2]=0}}function ms(h,d,a,p){var C=0,D=0,b=0,B=0,q=0,Z=0;B=r[h+4>>2],b=r[h>>2],D=r[h+16>>2];e:{t:{if(r[D+416>>2]){C=b;break t}if((a|0)>24){q=a,C=b;break e}for(;;){if(!B){if(!(Ie[r[r[D+24>>2]+12>>2]](D)|0))return 0;C=r[D+24>>2],B=r[C+4>>2],b=r[C>>2]}C=b+1|0,B=B-1|0;n:{if(q=te[b|0],(q|0)==255){for(;;){if(!B){if(!(Ie[r[r[D+24>>2]+12>>2]](D)|0))return 0;C=r[D+24>>2],B=r[C+4>>2],C=r[C>>2]}if(B=B-1|0,b=te[C|0],q=255,C=C+1|0,(b|0)!=255)break}if(b)break n}if(d=d<<8|q,Z=(a|0)<17,b=C,q=a+8|0,a=q,Z)continue;break e}break}r[D+416>>2]=b}if((a|0)>=(p|0)){q=a;break e}r[r[D+444>>2]+8>>2]||(p=r[D>>2],r[p+20>>2]=117,Ie[r[p+4>>2]](D,-1),r[r[D+444>>2]+8>>2]=1),q=25,d=d<<25-a}return r[h+12>>2]=q,r[h+8>>2]=d,r[h+4>>2]=B,r[h>>2]=C,1}function b1(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0;a&&d||(C=r[h>>2],r[C+20>>2]=23,Ie[r[C>>2]](h)),C=r[h+24>>2];e:{if(!C){C=Ie[r[r[h+4>>2]>>2]](h,0,44)|0,r[h+24>>2]=C,r[C+28>>2]=0,r[C+32>>2]=0;break e}if(r[C+8>>2]==279)break e;C=r[h>>2],r[C+20>>2]=23,Ie[r[C>>2]](h),C=r[h+24>>2]}r[C+16>>2]=280,r[C+12>>2]=281,r[C+8>>2]=279,D=1,b=r[C+32>>2],(b|0)==r[d>>2]&&(D=!p|!b),r[C+40>>2]=p,r[C+24>>2]=a,r[C+20>>2]=d;e:{if(r[a>>2]&&r[d>>2])break e;if(p){p=Io(4096),r[d>>2]=p,r[C+28>>2]=p,p||(p=r[h>>2],r[p+20>>2]=54,r[p+24>>2]=10,Ie[r[r[h>>2]>>2]](h)),r[a>>2]=4096;break e}p=r[h>>2],r[p+20>>2]=23,Ie[r[p>>2]](h)}if(h=r[d>>2],r[C>>2]=h,r[C+32>>2]=h,!D){r[C+4>>2]=r[C+36>>2];return}h=r[a>>2],r[C+36>>2]=h,r[C+4>>2]=h}function Mr(h,d,a,p,C,D){var b=0;b=hn-80|0,hn=b;e:{if((D|0)>=16384){if(eo(b+32|0,d,a,p,C,0,0,0,2147352576),p=r[b+40>>2],C=r[b+44>>2],d=r[b+32>>2],a=r[b+36>>2],D>>>0<32767){D=D-16383|0;break e}eo(b+16|0,d,a,p,C,0,0,0,2147352576),D=((D|0)>=49149?49149:D)-32766|0,p=r[b+24>>2],C=r[b+28>>2],d=r[b+16>>2],a=r[b+20>>2];break e}if((D|0)>-16383)break e;if(eo(b- -64|0,d,a,p,C,0,0,0,7471104),p=r[b+72>>2],C=r[b+76>>2],d=r[b+64>>2],a=r[b+68>>2],D>>>0>4294934644){D=D+16269|0;break e}eo(b+48|0,d,a,p,C,0,0,0,7471104),D=((D|0)<=-48920?-48920:D)+32538|0,p=r[b+56>>2],C=r[b+60>>2],d=r[b+48>>2],a=r[b+52>>2]}eo(b,d,a,p,C,0,0,0,D+16383<<16),d=r[b+12>>2],r[h+8>>2]=r[b+8>>2],r[h+12>>2]=d,d=r[b+4>>2],r[h>>2]=r[b>>2],r[h+4>>2]=d,hn=b+80|0}function E2(h,d){var a=0,p=0,C=0;a=hn+-64|0,hn=a,p=r[h>>2],C=r[p-4>>2],p=r[p-8>>2],r[a+32>>2]=0,r[a+36>>2]=0,r[a+40>>2]=0,r[a+44>>2]=0,r[a+48>>2]=0,r[a+52>>2]=0,F[a+55|0]=0,F[a+56|0]=0,F[a+57|0]=0,F[a+58|0]=0,F[a+59|0]=0,F[a+60|0]=0,F[a+61|0]=0,F[a+62|0]=0,r[a+24>>2]=0,r[a+28>>2]=0,r[a+20>>2]=0,r[a+16>>2]=146944,r[a+12>>2]=h,r[a+8>>2]=d,h=h+p|0,p=0;e:{if(Ya(C,d,0)){r[a+56>>2]=1,Ie[r[r[C>>2]+20>>2]](C,a+8|0,h,h,1,0),p=r[a+32>>2]==1?h:0;break e}Ie[r[r[C>>2]+24>>2]](C,a+8|0,h,1,0);t:switch(r[a+44>>2]){case 0:p=r[a+48>>2]==1&&r[a+36>>2]==1&&r[a+40>>2]==1?r[a+28>>2]:0;break e;case 1:break t;default:break e}if(r[a+32>>2]!=1&&r[a+48>>2]|r[a+36>>2]!=1|r[a+40>>2]!=1)break e;p=r[a+24>>2]}return hn=a- -64|0,p}function lr(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;p=r[h+4>>2];e:{if(d>>>0>=2){a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=14,Ie[r[r[h>>2]>>2]](h);break e}if((d|0)!=1)break e;if(a=r[p+68>>2],a)for(;r[a+40>>2]&&(r[a+40>>2]=0,Ie[r[a+56>>2]](h,a+48|0)),a=r[a+44>>2],!!a;);if(r[p+68>>2]=0,a=r[p+72>>2],a)for(;r[a+40>>2]&&(r[a+40>>2]=0,Ie[r[a+56>>2]](h,a+48|0)),a=r[a+44>>2],!!a;);r[p+72>>2]=0}if(d=(d<<2)+p|0,h=d,a=r[h+60>>2],r[h+60>>2]=0,a)for(;h=r[a>>2],C=r[a+4>>2]+r[a+8>>2]|0,J(a),r[p+76>>2]=r[p+76>>2]-(C+43|0),a=h,!!a;);if(a=r[d+52>>2],r[d+52>>2]=0,a)for(;h=r[a>>2],d=(r[a+4>>2]+r[a+8>>2]|0)+43|0,J(a),r[p+76>>2]=r[p+76>>2]-d,a=h,!!a;);}function f(h,d){var a=0,p=0,C=0;for(a=r[h+20>>2],(a|0)!=100&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),a=r[h+72>>2],a||(a=Ie[r[r[h+4>>2]>>2]](h,0,132)|0,r[a+128>>2]=0,r[h+72>>2]=a),p=0;C=(Ce(r[(p<<2)+142096>>2],d)+50|0)/100|0,C=(C|0)<=1?1:C,C=C>>>0>=32767?32767:C,He[(p<<1)+a>>1]=C>>>0>255?255:C,p=p+1|0,(p|0)!=64;);for(r[a+128>>2]=0,a=r[h+20>>2],(a|0)!=100&&(p=r[h>>2],r[p+24>>2]=a,r[p+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),a=r[h+76>>2],a||(a=Ie[r[r[h+4>>2]>>2]](h,0,132)|0,r[a+128>>2]=0,r[h+76>>2]=a),p=0;h=(Ce(r[(p<<2)+142352>>2],d)+50|0)/100|0,h=(h|0)<=1?1:h,h=h>>>0>=32767?32767:h,He[(p<<1)+a>>1]=h>>>0>255?255:h,p=p+1|0,(p|0)!=64;);r[a+128>>2]=0}function w(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0;e:{if(C=r[h+336>>2],ni[C+8>>2]>=ni[h+240>>2]||(b=C+24|0,B=C+12|0,D=r[C+12>>2],D>>>0<=7&&(Ie[r[r[h+340>>2]+4>>2]](h,d,a,p,b,B,8),D=r[B>>2]),(D|0)!=8))break e;q=Ie[r[r[h+344>>2]+4>>2]](h,b)|0,D=r[C+16>>2];t:{if(!q)break t;if(D&&(r[a>>2]=r[a>>2]+1,r[C+16>>2]=0),r[C+12>>2]=0,D=r[C+8>>2]+1|0,r[C+8>>2]=D,D>>>0>=ni[h+240>>2])break e;for(;;){if(Ie[r[r[h+340>>2]+4>>2]](h,d,a,p,b,B,8),r[B>>2]!=8)break e;if(q=Ie[r[r[h+344>>2]+4>>2]](h,b)|0,D=r[C+16>>2],!q)break t;if(D&&(r[a>>2]=r[a>>2]+1,r[C+16>>2]=0),r[C+12>>2]=0,D=r[C+8>>2]+1|0,r[C+8>>2]=D,!(D>>>0>2]))break}break e}if(D)break e;r[a>>2]=r[a>>2]-1,r[C+16>>2]=1}}function N(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;if(D=r[h+4>>2],a>>>0>=1000000001&&(C=r[h>>2],r[C+20>>2]=54,r[C+24>>2]=9,Ie[r[r[h>>2]>>2]](h)),B=a+63&-64,a=999999988/(B>>>0)|0,B>>>0>=999999989&&(C=r[h>>2],r[C+20>>2]=70,Ie[r[C>>2]](h)),C=D,D=(a|0)<(p|0)?a:p,r[C+80>>2]=D,ae=zu(h,d,p<<2),p)for(a=0;;){C=p-a|0,D=C>>>0>D>>>0?D:C,b=ei(h,d,Ce(B,D));e:{if(!D)break e;if(q=0,C=D,Z=C&3,Z)for(;r[(a<<2)+ae>>2]=b,C=C-1|0,b=b+B|0,a=a+1|0,q=q+1|0,(Z|0)!=(q|0););if(D>>>0<4)break e;for(;q=(a<<2)+ae|0,r[q>>2]=b,b=b+B|0,Z=b+B|0,fe=Z+B|0,r[q+12>>2]=fe,r[q+8>>2]=Z,r[q+4>>2]=b,a=a+4|0,b=B+fe|0,C=C-4|0,!!C;);}if(!(a>>>0

>>0))break}return ae|0}function k(h,d,a){var p=0,C=0,D=0,b=0;e:{if(!a||(F[h|0]=d,p=h+a|0,F[p-1|0]=d,a>>>0<3)||(F[h+2|0]=d,F[h+1|0]=d,F[p-3|0]=d,F[p-2|0]=d,a>>>0<7)||(F[h+3|0]=d,F[p-4|0]=d,a>>>0<9)||(p=0-h&3,C=p+h|0,d=Ce(d&255,16843009),r[C>>2]=d,p=a-p&-4,a=p+C|0,r[a-4>>2]=d,p>>>0<9)||(r[C+8>>2]=d,r[C+4>>2]=d,r[a-8>>2]=d,r[a-12>>2]=d,p>>>0<25)||(r[C+24>>2]=d,r[C+20>>2]=d,r[C+16>>2]=d,r[C+12>>2]=d,r[a-16>>2]=d,r[a-20>>2]=d,r[a-24>>2]=d,r[a-28>>2]=d,b=C&4|24,a=p-b|0,a>>>0<32))break e;for(p=m0(d,0,1,1),D=Pi,d=C+b|0;r[d+24>>2]=p,r[d+28>>2]=D,r[d+16>>2]=p,r[d+20>>2]=D,r[d+8>>2]=p,r[d+12>>2]=D,r[d>>2]=p,r[d+4>>2]=D,d=d+32|0,a=a-32|0,a>>>0>31;);}return h}function E(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;p=hn-48|0,hn=p,a=r[h>>2],C=r[a+20>>2];e:{t:{n:{if(!((C|0)<=0|(C|0)>r[a+116>>2])){h=r[a+112>>2]+(C<<2)|0;break n}if(D=r[a+120>>2],!D||(h=r[a+124>>2],(h|0)>(C|0)|(C|0)>r[a+128>>2]))break t;h=D+(C-h<<2)|0}if(D=r[h>>2],D)break e}r[a+24>>2]=C,D=r[r[a+112>>2]>>2]}h=D;e:{t:{for(;;){if(C=te[h|0],!C)break t;if(h=h+1|0,(C|0)==37)break}if(te[h|0]!=115)break t;r[p+32>>2]=a+24,$5(d,D,p+32|0);break e}b=r[a+32>>2],B=r[a+36>>2],q=r[a+40>>2],Z=r[a+44>>2],ae=r[a+24>>2],C=r[a+28>>2],h=r[a+52>>2],r[p+24>>2]=r[a+48>>2],r[p+28>>2]=h,r[p+16>>2]=q,r[p+20>>2]=Z,r[p+8>>2]=b,r[p+12>>2]=B,r[p>>2]=ae,r[p+4>>2]=C,$5(d,D,p)}hn=p+48|0}function W(h){h=h|0;var d=0,a=0,p=0;e:{t:{n:{r:switch(d=r[h+20>>2],d-101|0){case 2:break e;case 0:case 1:break r;default:break n}ni[h+224>>2]>2]&&(d=r[h>>2],r[d+20>>2]=67,Ie[r[d>>2]](h)),d=r[h+332>>2]+8|0;break t}a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=20,d=r[h>>2]}Ie[r[d>>2]](h)}if(d=r[h+332>>2],!r[d+16>>2])for(;;){if(Ie[r[d>>2]](h),d=0,p=r[h+240>>2],p)for(;a=r[h+8>>2],a&&(r[a+8>>2]=p,r[a+4>>2]=d,Ie[r[a>>2]](h)),Ie[r[r[h+344>>2]+4>>2]](h,0)|0||(a=r[h>>2],r[a+20>>2]=24,Ie[r[a>>2]](h)),d=d+1|0,p=r[h+240>>2],d>>>0

>>0;);if(Ie[r[r[h+332>>2]+8>>2]](h),d=r[h+332>>2],!!r[d+16>>2])break}Ie[r[r[h+348>>2]+12>>2]](h),Ie[r[r[h+24>>2]+16>>2]](h),qp(h)}function J(h){var d=0,a=0,p=0,C=0,D=0;if(h){d=h-4|0,C=r[d>>2],a=C,p=d,D=r[h-8>>2],h=D&-2,(h|0)!=(D|0)&&(p=d-h|0,a=r[p+4>>2],r[a+8>>2]=r[p+8>>2],r[r[p+8>>2]+4>>2]=a,a=h+C|0),h=d+C|0,d=r[h>>2],(d|0)!=r[(h+d|0)-4>>2]&&(C=r[h+4>>2],r[C+8>>2]=r[h+8>>2],r[r[h+8>>2]+4>>2]=C,a=d+a|0),r[p>>2]=a,r[((a&-4)+p|0)-4>>2]=a|1,d=r[p>>2]-8|0;e:{if(d>>>0<=127){h=(d>>>3|0)-1|0;break e}if(a=Q0(d),h=((d>>>29-a^4)-(a<<2)|0)+110|0,d>>>0<=4095)break e;h=((d>>>30-a^2)-(a<<1)|0)+71|0,h=h>>>0>=63?63:h}d=h<<4,r[p+4>>2]=d+149216,d=d+149224|0,r[p+8>>2]=r[d>>2],r[d>>2]=p,r[r[p+8>>2]+4>>2]=p,d=r[37562],a=r[37563],p=h&31,(h&63)>>>0>=32?(h=1<>>32-p),r[37562]=C|d,r[37563]=h|a}}function ie(h){var d=0,a=0,p=0;a=hn+-64|0,hn=a,r[h+4>>2]=0,r[a+60>>2]=0,d=Io(84),d||(p=r[h>>2],r[p+20>>2]=54,r[p+24>>2]=0,Ie[r[r[h>>2]>>2]](h)),r[d+48>>2]=1e9,r[d+40>>2]=41,r[d+36>>2]=42,r[d+32>>2]=43,r[d+28>>2]=44,r[d+24>>2]=45,r[d+20>>2]=46,r[d+16>>2]=47,r[d+12>>2]=48,r[d+8>>2]=49,r[d+4>>2]=50,r[d>>2]=51,r[d+52>>2]=0,r[d+56>>2]=0,r[d+44>>2]=0,r[d+76>>2]=84,r[d+60>>2]=0,r[d+64>>2]=0,r[d+68>>2]=0,r[d+72>>2]=0,r[h+4>>2]=d,h=Vf(7606);e:{if(!h||Vc(h)-30>>>0<4294967265||(h=Ci(a+16|0,h,30),!te[h|0])||(F[a+15|0]=120,r[a>>2]=a+60,r[a+4>>2]=a+15,(m4(h,7431,a)|0)<=0))break e;h=r[a+60>>2],r[d+44>>2]=Ce((te[a+15|0]&223)==77?Ce(h,1e3):h,1e3)}hn=a- -64|0}function ue(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;B=hn-16|0,hn=B,p=En[a+4>>1]|En[a+6>>1]<<16,a=En[a>>1]|En[a+2>>1]<<16,r[d+24>>2]=a,r[d+28>>2]=p;e:{p=Ce(Ce(Ce(a&65535,a>>>16|0),(p&255)+7>>>3|0),p>>>8&255),a=r[d+4>>2],b=r[d>>2],C=a-b|0;t:{n:{if(p>>>0>C>>>0){if(q=p-C|0,D=r[d+8>>2],q>>>0<=D-a>>>0){a=k(a,0,q)+q|0;break n}if((p|0)<0)break e;if(a=D-b|0,D=a<<1,a=a>>>0>=1073741823?2147483647:p>>>0>>0?D:p,D=Po(a),k(D+C|0,0,q),C=Lc(D,b,C),r[d+8>>2]=C+a,a=p+C|0,r[d+4>>2]=a,r[d>>2]=C,!b)break t;J(b),a=r[d+4>>2];break t}if(p>>>0>=C>>>0)break t;a=p+b|0}r[d+4>>2]=a}d=r[d>>2],r[B+12>>2]=d,r[B+8>>2]=a-d,Z=h,ae=sp(9188,B+8|0)|0,r[Z>>2]=ae,hn=B+16|0;return}j4(),mr()}function ye(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0;e:{if((C|0)<=0||(ae=r[h+28>>2],!ae))break e;for(Z=r[r[h+352>>2]+8>>2];;){for(fe=C-1|0,h=p<<2,ve=r[h+r[a+12>>2]>>2],Se=r[h+r[a+8>>2]>>2],Le=r[h+r[a+4>>2]>>2],We=r[h+r[a>>2]>>2],h=r[d>>2],D=0;b=te[h+2|0],B=te[h+1|0],q=te[h|0],F[D+ve|0]=te[h+3|0],b=((b^255)<<2)+Z|0,B=((B^255)<<2)+Z|0,q=((q^255)<<2)+Z|0,F[D+We|0]=r[b+2048>>2]+(r[B+1024>>2]+r[q>>2]|0)>>>16,F[D+Le|0]=r[b+5120>>2]+(r[B+4096>>2]+r[q+3072>>2]|0)>>>16,F[D+Se|0]=r[b+7168>>2]+(r[B+6144>>2]+r[q+5120>>2]|0)>>>16,h=h+4|0,D=D+1|0,(ae|0)!=(D|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=fe,!h)break}}}function Ee(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if((C|0)>0)for(Z=r[h+324>>2],B=r[((r[h+140>>2]&3)<<2)+143920>>2],ae=r[d>>2],q=r[h+112>>2];;){if(h=r[(a<<2)+ae>>2],d=r[p>>2],d&3&&(D=te[(te[h|0]+(B&255)|0)+Z|0],He[d>>1]=D<<3&2016|D>>>3|D<<8&63488,q=q-1|0,d=d+2|0,h=h+1|0),q>>>0>=2)for(fe=q>>>1|0,D=0;b=te[(te[h|0]+(B&255)|0)+Z|0],ve=b<<3&2016|b>>>3|b<<8&63488,b=te[(te[h+1|0]+(B>>>8&255)|0)+Z|0],r[d>>2]=ve|(b<<8&63488|b<<3&2016|b>>>3)<<16,d=d+4|0,B=Uc(B),h=h+2|0,D=D+1|0,(fe|0)!=(D|0););if(q&1&&(h=te[(te[h|0]+(B&255)|0)+Z|0],He[d>>1]=h<<3&2016|h>>>3|h<<8&63488),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function be(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;for(p=r[h>>2],a=r[h+416>>2],r[p+24>>2]=a,r[p+20>>2]=121,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]+4>>2]](h,-1),p=d+6&7|208,D=d-1&7|208,b=d+2&7|208,d=d+1&7|208;;){e:{t:{if((a|0)<192)break t;if((d|0)==(a|0)|a-216>>>0<4294967288|(a|0)==(b|0))break e;if((a|0)==(D|0)|(a|0)==(p|0))break t;return d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=97,r[r[h>>2]+28>>2]=1,Ie[r[r[h>>2]+4>>2]](h,4),r[h+416>>2]=0,1}if(C=r[h>>2],r[C+24>>2]=a,r[C+20>>2]=97,r[r[h>>2]+28>>2]=2,Ie[r[r[h>>2]+4>>2]](h,4),u0(h)){a=r[h+416>>2];continue}else return 0}break}return d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=97,r[r[h>>2]+28>>2]=3,Ie[r[r[h>>2]+4>>2]](h,4),1}function Be(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0,We=0,lt=0,mt=0,Mt=0,Ht=0;e:{if((C|0)<=0||(q=r[h+112>>2],!q))break e;for(b=r[h+324>>2],h=r[h+456>>2],ae=r[h+20>>2],fe=r[h+16>>2],ve=r[h+12>>2],Se=r[h+8>>2];;){for(Le=a+1|0,We=C-1|0,h=a<<2,lt=r[h+r[d+12>>2]>>2],mt=r[h+r[d+8>>2]>>2],Mt=r[h+r[d+4>>2]>>2],Ht=r[h+r[d>>2]>>2],a=r[p>>2],h=0;D=te[h+Mt|0],B=te[h+Ht|0]^255,Z=te[h+mt|0]<<2,F[a|0]=te[(B-r[Z+Se>>2]|0)+b|0],D=D<<2,F[a+1|0]=te[(B-(r[fe+Z>>2]+r[D+ae>>2]>>16)|0)+b|0],F[a+2|0]=te[(B-r[D+ve>>2]|0)+b|0],F[a+3|0]=te[h+lt|0],a=a+4|0,h=h+1|0,(q|0)!=(h|0););if(p=p+4|0,h=(C|0)>1,C=We,a=Le,!h)break}}}function rt(h){h=h|0;var d=0,a=0,p=0;p=hn-48|0,hn=p,a=r[h+364>>2],d=r[h+24>>2],r[p>>2]=r[d>>2],r[p+4>>2]=r[d+4>>2],d=r[a+28>>2],r[p+16>>2]=r[a+24>>2],r[p+20>>2]=d,d=r[a+36>>2],r[p+24>>2]=r[a+32>>2],r[p+28>>2]=d,d=r[a+44>>2],r[p+32>>2]=r[a+40>>2],r[p+36>>2]=d,d=r[a+20>>2],r[p+8>>2]=r[a+16>>2],r[p+12>>2]=d,r[p+40>>2]=h,r[p+44>>2]=r[a+120>>2],b4(p)||(d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)),h=r[h+24>>2],r[h>>2]=r[p>>2],r[h+4>>2]=r[p+4>>2],h=p+8|0,d=r[h+28>>2],a=a+16|0,r[a+24>>2]=r[h+24>>2],r[a+28>>2]=d,d=r[h+20>>2],r[a+16>>2]=r[h+16>>2],r[a+20>>2]=d,d=r[h+12>>2],r[a+8>>2]=r[h+8>>2],r[a+12>>2]=d,d=r[h+4>>2],r[a>>2]=r[h>>2],r[a+4>>2]=d,hn=p+48|0}function pt(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;D=1,C=r[h+312>>2];e:{if((C|0)<=0||(b=r[d+40>>2],!b))break e;for(fe=r[p>>2];;){t:{if(D){if(ae=(q<<2)+a|0,D=r[ae>>2],b){for(C=r[(Z<<2)+fe>>2],p=r[ae-4>>2],B=0;F[C|0]=(te[p|0]+Ce(te[D|0],3)|0)+1>>>2,C=C+1|0,p=p+1|0,D=D+1|0,b=r[d+40>>2],B=B+1|0,b>>>0>B>>>0;);D=r[ae>>2]}q=q+1|0;n:{if(!b){b=0;break n}for(C=r[(q<<2)+a>>2],p=r[((Z|1)<<2)+fe>>2],B=0;F[p|0]=(te[C|0]+Ce(te[D|0],3)|0)+2>>>2,p=p+1|0,C=C+1|0,D=D+1|0,b=r[d+40>>2],B=B+1|0,b>>>0>B>>>0;);}C=r[h+312>>2],p=b;break t}q=q+1|0,p=0}if(D=p,Z=Z+2|0,!((Z|0)<(C|0)))break}}}function Ct(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;if((C|0)>0)for(B=r[h+112>>2],Z=r[d+8>>2],ae=r[d+4>>2],fe=r[d>>2];;){if(D=a<<2,d=r[D+Z>>2],h=r[D+ae>>2],D=r[D+fe>>2],b=r[p>>2],b&3&&(He[b>>1]=te[h|0]<<3&2016|te[D|0]<<8&63488|te[d|0]>>>3,B=B-1|0,b=b+2|0,d=d+1|0,D=D+1|0,h=h+1|0),B>>>0>=2)for(ve=B>>>1|0,q=0;r[b>>2]=te[h|0]<<3&2016|te[D|0]<<8&63488|te[d|0]>>>3|(te[D+1|0]<<8&63488|te[h+1|0]<<3&2016|te[d+1|0]>>>3)<<16,b=b+4|0,d=d+2|0,h=h+2|0,D=D+2|0,q=q+1|0,(ve|0)!=(q|0););if(B&1&&(He[b>>1]=te[h|0]<<3&2016|te[D|0]<<8&63488|te[d|0]>>>3),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function Lt(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;if(ae=a<<7,C=999999988/(ae>>>0)|0,B=r[h+4>>2],ae>>>0>=999999989&&(D=r[h>>2],r[D+20>>2]=70,Ie[r[D>>2]](h)),C=(p|0)>(C|0)?C:p,r[B+80>>2]=C,fe=zu(h,d,p<<2),p)for(D=0,q=a<<7;;){a=p-D|0,C=a>>>0>C>>>0?C:a,a=ei(h,d,Ce(ae,C));e:{if(!C)break e;if(b=0,B=C,Z=C&3,Z)for(;r[(D<<2)+fe>>2]=a,B=B-1|0,D=D+1|0,a=a+q|0,b=b+1|0,(Z|0)!=(b|0););if(C>>>0<4)break e;for(;b=(D<<2)+fe|0,r[b>>2]=a,a=a+q|0,Z=a+q|0,r[b+8>>2]=Z,r[b+4>>2]=a,a=q+Z|0,r[b+12>>2]=a,a=a+q|0,D=D+4|0,B=B-4|0,!!B;);}if(!(p>>>0>D>>>0))break}return fe|0}function Wt(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;if(a=hn-32|0,hn=a,B=r[h+364>>2],r[a+16>>2]=0,r[a+20>>2]=0,r[a+24>>2]=0,r[a+28>>2]=0,r[a>>2]=0,r[a+4>>2]=0,r[a+8>>2]=0,r[a+12>>2]=0,r[h+244>>2]>0)for(;d=r[((b<<2)+h|0)+248>>2],D=r[d+24>>2],p=r[d+20>>2]<<2,C=p+(a+16|0)|0,r[C>>2]||(q=h+p|0,d=r[q+88>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[q+88>>2]=d),If(h,d,r[(p+B|0)+88>>2]),r[C>>2]=1),p=D<<2,D=p+a|0,r[D>>2]||(C=h+p|0,d=r[C+104>>2],d||(d=Ie[r[r[h+4>>2]>>2]](h,0,280)|0,r[d+276>>2]=0,r[C+104>>2]=d),If(h,d,r[(p+B|0)+104>>2]),r[D>>2]=1),b=b+1|0,(b|0)>2];);hn=a+32|0}function Xt(){for(var h=0,d=0,a=0;d=h<<4,a=d+149216|0,r[d+149220>>2]=a,r[d+149224>>2]=a,h=h+1|0,(h|0)!=64;);Rf(48),h=hn-16|0,hn=h;e:{if(Fh(h+12|0,h+8|0)|0||(d=Io((r[h+12>>2]<<2)+4|0),r[37092]=d,!d)||(d=Io(r[h+8>>2]),d&&(r[r[37092]+(r[h+12>>2]<<2)>>2]=0,!(hl(r[37092],d|0)|0))))break e;r[37092]=0}hn=h+16|0,r[37081]=38,r[37082]=0,I0(),r[37082]=r[37088],r[37088]=148324,r[37083]=39,r[37084]=0,B5(),r[37084]=r[37088],r[37088]=148332,r[37085]=40,r[37086]=0,so(),r[37086]=r[37088],r[37088]=148340,r[37089]=287,r[37090]=0,W4(),r[37090]=r[37088],r[37088]=148356,r[37292]=148404,r[37274]=42}function nn(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0;if(p=r[h+452>>2],q=r[p+92>>2],B=r[h+312>>2],(q|0)>=(B|0)){if(r[h+36>>2]>0){for(fe=p+12|0,B=r[h+216>>2],q=0;Z=q<<2,ae=Z+p|0,Ie[r[ae+52>>2]](h,B,r[d+Z>>2]+(Ce(r[ae+100>>2],r[a>>2])<<2)|0,Z+fe|0),B=B+84|0,q=q+1|0,(q|0)>2];);B=r[h+312>>2]}r[p+92>>2]=0,q=0}d=B-q|0,B=r[p+96>>2],d=d>>>0>>0?d:B,B=b,b=r[D>>2],B=B-b|0,d=d>>>0>>0?d:B,Ie[r[r[h+456>>2]+4>>2]](h,p+12|0,q,(b<<2)+C|0,d),r[D>>2]=d+r[D>>2],r[p+96>>2]=r[p+96>>2]-d,d=d+r[p+92>>2]|0,r[p+92>>2]=d,(d|0)>=r[h+312>>2]&&(r[a>>2]=r[a>>2]+1)}function cn(h,d){h=h|0,d=d|0;var a=0,p=0,C=0,D=0,b=0;if(p=hn-16|0,hn=p,!te[148348]){if(F[148348]=1,D=148320,b=Nt(1077)|0,r[D>>2]=b,!te[150272]){e:{for(;;){if(!te[a+148432|0]){F[a+148432|0]=1,r[(a<<2)+148560>>2]=0,r[37569]=a,a=0;break e}if(a=a+1|0,(a|0)==128)break}a=6}a&&(up(),mr()),F[150272]=1}e:{if(!te[150273]){if(a=28,C=r[37569],C>>>0>127|!te[C+148432|0]||(r[(C<<2)+148560>>2]=150276,a=0),a)break e;F[150273]=1}if(a=Io(12),!a)break e;r[a+4>>2]=0,r[a>>2]=22,r[a+8>>2]=r[37570],r[37570]=a}}a=r[d+16>>2],d=r[d+12>>2],r[p+12>>2]=d,r[p+8>>2]=a-d,D=h,b=h5(r[37080],1,9204,p+8|0)|0,r[D>>2]=b,hn=p+16|0}function yn(h,d,a,p,C,D){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0;var b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{if((a|0)<=0){r[D+8>>2]=0,r[D>>2]=0;break e}for(ve=(a|0)>=32?32:a;B=He[(r[(b<<2)+d>>2]<<1)+h>>1],ae=B>>31,B=(B^ae)-ae>>p,B&&(Z=ae+1<>1]=B,fe=(B|0)==1?b:fe,b=b+1|0,(ve|0)!=(b|0););if(r[D+8>>2]=Z,r[D>>2]=q,Z=0,(a|0)<33){q=0;break e}for(ae=a-33|0,C=C- -64|0,B=d+128|0,q=0,b=0;a=He[(r[B+(b<<2)>>2]<<1)+h>>1],d=a>>31,a=(d^a)-d>>p,a&&(Z=1<>1]=a,fe=(a|0)==1?b+32|0:fe,d=(b|0)!=(ae|0),b=b+1|0,!!d;);}return r[D+12>>2]=q,r[D+4>>2]=Z,fe|0}function vn(h,d,a,p,C,D){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0;var b=0,B=0,q=0,Z=0,ae=0,fe=0;if((a|0)<=0){r[D>>2]=0,r[D+4>>2]=0;return}for(ae=(a|0)>=32?32:a;;){b=He[(r[(B<<2)+d>>2]<<1)+h>>1];e:{if(!b||(fe=b,b=b>>31,Z=(fe^b)-b>>p,!Z))break e;fe=(B<<1)+C|0,He[fe>>1]=Z,He[fe+128>>1]=b^Z,q=1<>2]=q,q=0,(a|0)>=33)for(B=a-33|0,b=C- -64|0,Z=d+128|0,a=0;;){d=a,a=He[(r[Z+(a<<2)>>2]<<1)+h>>1];e:{if(!a||(C=a,a=a>>31,C=(C^a)-a>>p,!C))break e;ae=b+(d<<1)|0,He[ae>>1]=C,He[ae+128>>1]=a^C,q=1<>2]=q}function Ln(h,d,a,p,C,D,b,B){var q=0,Z=0,ae=0,fe=0;q=1,Z=p&2147483647,fe=Z,ae=(Z|0)==2147418112;e:{if((ae&!a?h|d:ae&(a|0)!=0|Z>>>0>2147418112)||(Z=B&2147483647,ae=(Z|0)==2147418112,ae&!b?C|D:ae&(b|0)!=0|Z>>>0>2147418112))break e;if(!(h|C|(a|b)|(d|D|(Z|fe))))return 0;if(q=p&B,(q|0)>0|(q|0)>=0){if(q=-1,(a|0)==(b|0)&(p|0)==(B|0)?(d|0)==(D|0)&h>>>0>>0|d>>>0>>0:a>>>0>>0&(p|0)<=(B|0)|(p|0)<(B|0))break e;return(h^C|a^b|(d^D|p^B))!=0}if(q=-1,(a|0)==(b|0)&(p|0)==(B|0)?(d|0)==(D|0)&h>>>0>C>>>0|d>>>0>D>>>0:a>>>0>b>>>0&(p|0)>=(B|0)|(p|0)>(B|0))break e;q=(h^C|a^b|(d^D|p^B))!=0}return q}function jn(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;r[h+4>>2]=0,(d|0)!=62&&(p=r[h>>2],r[p+20>>2]=12,r[p+24>>2]=62,r[r[h>>2]+28>>2]=d,Ie[r[r[h>>2]>>2]](h)),(a|0)!=376&&(d=r[h>>2],r[d+20>>2]=21,r[d+24>>2]=376,r[r[h>>2]+28>>2]=a,Ie[r[r[h>>2]>>2]](h)),d=r[h>>2],a=r[h+12>>2],h=k(h,0,376),r[h+12>>2]=a,r[h>>2]=d,ie(h),r[h+368>>2]=0,r[h+8>>2]=0,r[h+68>>2]=0,r[h+72>>2]=0,r[h+76>>2]=0,r[h+80>>2]=0,r[h+84>>2]=0,r[h+88>>2]=0,r[h+92>>2]=0,r[h+96>>2]=0,r[h+100>>2]=0,r[h+104>>2]=0,r[h+108>>2]=0,r[h+112>>2]=0,r[h+116>>2]=0,r[h+48>>2]=0,r[h+52>>2]=1072693248,r[h+20>>2]=100,r[h+24>>2]=0}function ir(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{if((p|0)<=0||(D=r[h+112>>2],!D))break e;for(h=r[r[h+460>>2]+24>>2],B=r[h+8>>2],q=r[h+4>>2],Z=r[h>>2],fe=D-1|0,ve=D&1;;){if(h=ae<<2,C=r[h+a>>2],h=r[h+d>>2],ve?(F[C|0]=te[te[h+2|0]+B|0]+(te[te[h+1|0]+q|0]+te[te[h|0]+Z|0]|0),C=C+1|0,h=h+3|0,b=fe):b=D,(D|0)!=1)for(;F[C|0]=te[te[h+2|0]+B|0]+(te[te[h+1|0]+q|0]+te[te[h|0]+Z|0]|0),F[C+1|0]=te[te[h+5|0]+B|0]+(te[te[h+4|0]+q|0]+te[te[h+3|0]+Z|0]|0),C=C+2|0,h=h+6|0,b=b-2|0,!!b;);if(ae=ae+1|0,(ae|0)==(p|0))break}}}function kr(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0;ku(a,0,p,0,r[h+236>>2],r[h+28>>2]),b=r[h+236>>2];e:{if((b|0)<=0||(a=r[d+28>>2]<<3,d=r[h+28>>2],a=a-d|0,(a|0)<=0))break e;if(h=0,b>>>0>=4)for(Z=b&-4;C=h<<2,D=d+r[C+p>>2]|0,k(D,te[D-1|0],a),D=d+r[(C|4)+p>>2]|0,k(D,te[D-1|0],a),D=d+r[(C|8)+p>>2]|0,k(D,te[D-1|0],a),C=d+r[(C|12)+p>>2]|0,k(C,te[C-1|0],a),h=h+4|0,B=B+4|0,(Z|0)!=(B|0););if(b=b&3,!b)break e;for(;C=d+r[(h<<2)+p>>2]|0,k(C,te[C-1|0],a),h=h+1|0,q=q+1|0,(b|0)!=(q|0););}}function xr(h,d,a,p,C){var D=0,b=0,B=0;D=hn-208|0,hn=D,r[D+204>>2]=a,a=D+160|0,k(a,0,40),r[D+200>>2]=r[D+204>>2];e:{if((Ms(0,d,D+200|0,D+80|0,a,p,C)|0)<0)break e;B=r[h+76>>2]>=0,a=r[h>>2],r[h+72>>2]<=0&&(r[h>>2]=a&-33);t:{n:{r:{if(!r[h+48>>2]){r[h+48>>2]=80,r[h+28>>2]=0,r[h+16>>2]=0,r[h+20>>2]=0,b=r[h+44>>2],r[h+44>>2]=D;break r}if(r[h+16>>2])break n}if(Ok(h))break t}Ms(h,d,D+200|0,D+80|0,D+160|0,p,C)}if(b&&(Ie[r[h+36>>2]](h,0,0)|0,r[h+48>>2]=0,r[h+44>>2]=b,r[h+28>>2]=0,r[h+16>>2]=0,r[h+20>>2]=0),r[h>>2]=r[h>>2]|a&32,!B)break e}hn=D+208|0}function Pr(h,d,a,p,C){if(h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,Ya(h,r[d+8>>2],C)){r[d+28>>2]==1|r[d+4>>2]!=(a|0)||(r[d+28>>2]=p);return}e:{if(Ya(h,r[d>>2],C)){if(!(r[d+16>>2]!=(a|0)&r[d+20>>2]!=(a|0))){if((p|0)!=1)break e;r[d+32>>2]=1;return}r[d+32>>2]=p;t:{if(r[d+44>>2]==4)break t;if(He[d+52>>1]=0,h=r[h+8>>2],Ie[r[r[h>>2]+20>>2]](h,d,a,a,1,C),te[d+53|0]){if(r[d+44>>2]=3,!te[d+52|0])break t;break e}r[d+44>>2]=4}if(r[d+20>>2]=a,r[d+40>>2]=r[d+40>>2]+1,r[d+36>>2]!=1|r[d+24>>2]!=2)break e;F[d+54|0]=1;return}h=r[h+8>>2],Ie[r[r[h>>2]+24>>2]](h,d,a,p,C)}}function Br(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{if((C|0)<=0||(D=r[h+28>>2],!D))break e;for(b=r[h+36>>2],fe=D&-4,ae=D&3,ve=D-1>>>0<3;;){if(B=r[r[a>>2]+(p<<2)>>2],D=r[d>>2],q=0,h=0,Z=0,!ve)for(;F[h+B|0]=te[D|0],D=D+b|0,F[(h|1)+B|0]=te[D|0],D=D+b|0,F[(h|2)+B|0]=te[D|0],D=D+b|0,F[(h|3)+B|0]=te[D|0],h=h+4|0,D=D+b|0,Z=Z+4|0,(fe|0)!=(Z|0););if(ae)for(;F[h+B|0]=te[D|0],h=h+1|0,D=D+b|0,q=q+1|0,(q|0)!=(ae|0););if(p=p+1|0,d=d+4|0,h=(C|0)>1,C=C-1|0,!h)break}}}function Nr(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0,B=0,q=0,Z=0,ae=0;B=hn-16|0,hn=B;e:{p=r[d+4>>2],b=r[d>>2],C=p-b|0;t:{n:{if(C>>>0>>0){if(q=a-C|0,D=r[d+8>>2],q>>>0<=D-p>>>0){p=k(p,0,q)+q|0;break n}if((a|0)<0)break e;if(p=D-b|0,D=p<<1,p=p>>>0>=1073741823?2147483647:a>>>0>>0?D:a,D=Po(p),k(D+C|0,0,q),C=Lc(D,b,C),r[d+8>>2]=C+p,p=a+C|0,r[d+4>>2]=p,r[d>>2]=C,!b)break t;J(b),p=r[d+4>>2];break t}if(a>>>0>=C>>>0)break t;p=a+b|0}r[d+4>>2]=p}d=r[d>>2],r[B+12>>2]=d,r[B+8>>2]=p-d,Z=h,ae=sp(9188,B+8|0)|0,r[Z>>2]=ae,hn=B+16|0;return}j4(),mr()}function Wr(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0;B=hn-16|0,hn=B,p=r[h+452>>2];e:{if(r[p+36>>2]){b=1,d=p+32|0,C=(r[D>>2]<<2)+C|0,r[h+44>>2]!=16?h=r[p+40>>2]:h=r[h+112>>2]<<1,ku(d,0,C,0,1,h),r[p+36>>2]=0;break e}Z=r[p+44>>2],q=C,C=r[D>>2],q=q+(C<<2)|0,r[B+8>>2]=r[q>>2],C=b-C|0,C=C>>>0>Z>>>0?Z:C,b=C>>>0>=2?2:C,b>>>0>=2?C=r[q+4>>2]:(r[p+36>>2]=1,C=r[p+32>>2]),r[B+12>>2]=C,Ie[r[p+12>>2]](h,d,r[a>>2],B+8|0)}r[D>>2]=r[D>>2]+b,r[p+44>>2]=r[p+44>>2]-b,r[p+36>>2]||(r[a>>2]=r[a>>2]+1),hn=B+16|0}function ti(h,d){h=h|0,d=d|0;var a=0,p=0;a=r[h+344>>2],r[a+8>>2]=0;e:{if(r[h+244>>2]>=2){r[a+20>>2]=1;break e}if(p=r[h+248>>2],r[h+240>>2]!=1){r[a+20>>2]=r[p+12>>2];break e}r[a+20>>2]=r[p+72>>2]}r[a+12>>2]=0,r[a+16>>2]=0;e:switch(d|0){case 0:r[a+64>>2]&&(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),r[a+4>>2]=140;return;case 3:r[a+64>>2]||(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),r[a+4>>2]=141;return;case 2:r[a+64>>2]||(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),r[a+4>>2]=142;return;default:break e}d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)}function ei(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0;return C=r[h+4>>2],a>>>0>=1000000001&&(p=r[h>>2],r[p+20>>2]=54,r[p+24>>2]=8,Ie[r[r[h>>2]>>2]](h)),D=a+31&-32,p=D+43|0,p>>>0>=1000000001&&(a=r[h>>2],r[a+20>>2]=54,r[a+24>>2]=3,Ie[r[r[h>>2]>>2]](h)),d>>>0>=2&&(a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=14,Ie[r[r[h>>2]>>2]](h)),a=Io(p),a||(b=r[h>>2],r[b+20>>2]=54,r[b+24>>2]=4,Ie[r[r[h>>2]>>2]](h)),r[C+76>>2]=r[C+76>>2]+p,h=(d<<2)+C|0,d=r[h+60>>2],r[a+8>>2]=0,r[a+4>>2]=D,r[a>>2]=d,r[h+60>>2]=a,d=a+12|0,h=d&31,(h?32-h|0:0)+d|0}function hi(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0;if((C|0)>0)for(B=r[h+112>>2],q=r[d>>2];;){if(d=r[(a<<2)+q>>2],h=r[p>>2],h&3&&(D=te[d|0],He[h>>1]=D<<3&2016|D>>>3|D<<8&63488,B=B-1|0,d=d+1|0,h=h+2|0),B>>>0>=2)for(Z=B>>>1|0,D=0;b=te[d|0],ae=b<<3&2016|b>>>3|b<<8&63488,b=te[d+1|0],r[h>>2]=ae|(b<<8&63488|b<<3&2016|b>>>3)<<16,h=h+4|0,d=d+2|0,D=D+1|0,(Z|0)!=(D|0););if(B&1&&(D=h,h=te[d|0],He[D>>1]=h<<3&2016|h>>>3|h<<8&63488),p=p+4|0,a=a+1|0,h=(C|0)>1,C=C-1|0,!h)break}}function ii(h,d){var a=0,p=0,C=0,D=0,b=0,B=0,q=0;D=hn-16|0,hn=D,Ue(+d),b=xe(1)|0,p=xe(0)|0,a=b&2147483647,C=a+-1048576|0;e:{if((C|0)==2145386495|C>>>0<2145386495){B=p<<28,C=a>>>4|0,a=(a&15)<<28|p>>>4,p=C+1006632960|0;break e}if((a|0)==2146435072|a>>>0>2146435072){B=p<<28,a=(b&15)<<28|p>>>4,p=b>>>4|2147418112;break e}if(!(a|p)){a=0,p=0;break e}C=a,a=a?Q0(a):Q0(p)+32|0,K0(D,p,C,0,0,a+49|0),q=r[D>>2],B=r[D+4>>2],C=15372-a<<16,a=r[D+8>>2],p=C|r[D+12>>2]^65536}r[h>>2]=q,r[h+4>>2]=B,r[h+8>>2]=a,r[h+12>>2]=b&-2147483648|p,hn=D+16|0}function Ci(h,d,a){var p=0,C=0;C=h;e:{t:{n:{r:{if((C^d)&3)break r;p=(a|0)!=0;i:{if(!(d&3)|!a)break i;for(;;){if(p=te[d|0],F[C|0]=p,!p)break e;if(C=C+1|0,a=a-1|0,p=(a|0)!=0,d=d+1|0,!(d&3))break i;if(!a)break}}if(!p)break t;if(!te[d|0])break e;if(a>>>0<4)break r;for(;;){if(p=r[d>>2],(p^-1)&p-16843009&-2139062144)break n;if(r[C>>2]=p,C=C+4|0,d=d+4|0,a=a-4|0,!(a>>>0>3))break}}if(!a)break t}for(;;){if(p=te[d|0],F[C|0]=p,!p)break e;if(C=C+1|0,d=d+1|0,a=a-1|0,!a)break}}a=0}return k(C,0,a),h}function di(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0;return C=hn-16|0,hn=C,p=r[h+20>>2],(p|0)!=101&&(D=r[h>>2],r[D+24>>2]=p,r[D+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),ni[h+224>>2]>=ni[h+32>>2]&&(p=r[h>>2],r[p+20>>2]=123,Ie[r[p+4>>2]](h,-1)),p=r[h+8>>2],p&&(r[p+4>>2]=r[h+224>>2],r[p+8>>2]=r[h+32>>2],Ie[r[p>>2]](h)),p=r[h+332>>2],r[p+12>>2]&&Ie[r[p+4>>2]](h),p=r[h+224>>2],D=r[h+32>>2],r[C+12>>2]=0,b=d,d=D-p|0,Ie[r[r[h+336>>2]+4>>2]](h,b,C+12|0,d>>>0>>0?d:a),d=h,a=r[h+224>>2],h=r[C+12>>2],r[d+224>>2]=a+h,hn=C+16|0,h|0}function Vi(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{if(!b)break e;if(C=(C<<2)+a|0,a=r[d+16>>2]<<2,d=r[h+360>>2],B=r[(a+d|0)+52>>2],h=r[d+68>>2],q=r[d+48>>2],Z=r[d+44>>2],d=r[d+40>>2],fe=b&1,a=0,(b|0)!=1)for(ve=b&-2,b=0;Ie[Z|0](C,D,h),Ie[d|0](h),ae=a<<7,Ie[q|0](ae+p|0,B,h),Ie[Z|0](C,D+8|0,h),Ie[d|0](h),Ie[q|0]((ae|128)+p|0,B,h),D=D+16|0,a=a+2|0,b=b+2|0,(ve|0)!=(b|0););if(!fe)break e;Ie[Z|0](C,D,h),Ie[d|0](h),Ie[q|0]((a<<7)+p|0,B,h)}}function Ni(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0,ve=0;e:{if(!b)break e;if(C=(C<<2)+a|0,a=r[d+16>>2]<<2,d=r[h+360>>2],B=r[(a+d|0)+20>>2],h=r[d+36>>2],q=r[d+16>>2],Z=r[d+12>>2],d=r[d+8>>2],fe=b&1,a=0,(b|0)!=1)for(ve=b&-2,b=0;Ie[Z|0](C,D,h),Ie[d|0](h),ae=a<<7,Ie[q|0](ae+p|0,B,h),Ie[Z|0](C,D+8|0,h),Ie[d|0](h),Ie[q|0]((ae|128)+p|0,B,h),D=D+16|0,a=a+2|0,b=b+2|0,(ve|0)!=(b|0););if(!fe)break e;Ie[Z|0](C,D,h),Ie[d|0](h),Ie[q|0]((a<<7)+p|0,B,h)}}function $i(h,d,a,p,C,D){var b=0,B=0,q=0,Z=0;e:{if(D&64){a=D+-64|0,d=a&31,(a&63)>>>0>=32?(a=0,d=C>>>d|0):(a=C>>>d|0,d=((1<>>d),p=0,C=0;break e}if(!D)break e;q=p,B=64-D|0,b=B&31,(B&63)>>>0>=32?(B=q<>>32-b|C<>>0>=32?(b=0,d=a>>>d|0):(b=a>>>d|0,d=((1<>>d),d=Z|d,a=b|B,b=p,p=D&31,(D&63)>>>0>=32?(B=0,p=C>>>p|0):(B=C>>>p|0,p=((1<>>p),C=B}r[h>>2]=d,r[h+4>>2]=a,r[h+8>>2]=p,r[h+12>>2]=C}function o0(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;a=r[h+432>>2];e:{t:switch(d|0){case 0:if(r[h+84>>2]){if(r[a+4>>2]=202,r[a+12>>2])break e;p=a,C=Ie[r[r[h+4>>2]+28>>2]](h,r[a+8>>2],0,r[a+16>>2],1)|0,r[p+12>>2]=C;break e}r[a+4>>2]=r[r[h+452>>2]+4>>2];break e;case 3:r[a+8>>2]||(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),r[a+4>>2]=203;break e;case 2:r[a+8>>2]||(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),r[a+4>>2]=204;break e;default:break t}d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)}r[a+20>>2]=0,r[a+24>>2]=0}function $0(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0;d=r[h+432>>2],a=r[d+24>>2];e:{if(a){p=r[d+12>>2];break e}p=Ie[r[r[h+4>>2]+28>>2]](h,r[d+8>>2],r[d+20>>2],r[d+16>>2],0)|0,r[d+12>>2]=p,a=r[d+24>>2]}B=r[d+16>>2]-a|0,q=r[D>>2],b=b-q|0,b=b>>>0>B>>>0?B:b,B=r[h+116>>2]-r[d+20>>2]|0,b=b>>>0>>0?b:B,Ie[r[r[h+460>>2]+4>>2]](h,(a<<2)+p|0,(q<<2)+C|0,b),r[D>>2]=b+r[D>>2],h=b+r[d+24>>2]|0,r[d+24>>2]=h,a=h,h=r[d+16>>2],a>>>0>=h>>>0&&(r[d+24>>2]=0,r[d+20>>2]=h+r[d+20>>2])}function so(){var h=0;lp(9304,9328,9360,0,9100,24,9103,0,9103,0,3721,9002,25),ap(9304,1,9376,9100,26,27),h=Po(8),r[h+4>>2]=0,r[h>>2]=28,Z2(9304,3704,3,9380,9152,29,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=30,Z2(9304,3687,2,9392,9005,31,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=32,Z2(9304,5755,2,9400,9216,33,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=34,Z2(9304,4569,3,9408,9009,35,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=36,Z2(9304,1033,3,9408,9009,35,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=37,Z2(9304,4550,3,9408,9009,35,h|0,0)}function Fo(h){var d=0,a=0,p=0,C=0,D=0,b=0,B=0,q=0;for(d=r[h+456>>2],B=d,q=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[B+8>>2]=q,B=d,q=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[B+12>>2]=q,B=d,q=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[B+16>>2]=q,p=Ie[r[r[h+4>>2]>>2]](h,1,1024)|0,r[d+20>>2]=p,C=r[d+16>>2],D=r[d+12>>2],b=r[d+8>>2],d=0,h=-128;a=d<<2,r[b+a>>2]=Ce(h,91881)+32768>>16,r[a+D>>2]=Ce(h,116130)+32768>>16,r[a+C>>2]=Ce(h,-46802),r[a+p>>2]=Ce(h,-22554)+32768,h=h+1|0,d=d+1|0,(d|0)!=256;);}function I0(){var h=0,d=0;kp(8992,3930,9e3,1,9002,2),h=Po(4),r[h>>2]=0,d=Po(4),r[d>>2]=0,_c(8992,4475,147400,9005,3,h|0,147400,9009,4,d|0),h=Po(4),r[h>>2]=2,d=Po(4),r[d>>2]=2,_c(8992,2440,147400,9005,3,h|0,147400,9009,4,d|0),h=Po(4),r[h>>2]=4,d=Po(4),r[d>>2]=4,_c(8992,4832,147364,9005,5,h|0,147364,9009,6,d|0),h=Po(4),r[h>>2]=5,d=Po(4),r[d>>2]=5,_c(8992,2227,147364,9005,5,h|0,147364,9009,6,d|0),h=Po(4),r[h>>2]=6,d=Po(4),r[d>>2]=6,_c(8992,6215,147320,9005,7,h|0,147320,9009,8,d|0),Tc(8992)}function K0(h,d,a,p,C,D){var b=0,B=0,q=0;e:{if(D&64){p=d,C=D+-64|0,d=C&31,(C&63)>>>0>=32?(C=p<>>32-d|a<>>0>=32?(B=b<>>32-p|C<>>0>=32?(C=0,d=a>>>p|0):(C=a>>>p|0,d=((1<>>p),p=q|d,C=C|B,d=D&31,(D&63)>>>0>=32?(B=b<>>32-d|a<>2]=d,r[h+4>>2]=a,r[h+8>>2]=p,r[h+12>>2]=C}function Rs(h,d){if(!h)return 0;e:{t:{if(h){if(d>>>0<=127)break t;n:{if(!r[r[37292]>>2]){if((d&-128)==57216)break t;break n}if(d>>>0<=2047){F[h+1|0]=d&63|128,F[h|0]=d>>>6|192,h=2;break e}if(!((d&-8192)!=57344&d>>>0>=55296)){F[h+2|0]=d&63|128,F[h|0]=d>>>12|224,F[h+1|0]=d>>>6&63|128,h=3;break e}if(d-65536>>>0<=1048575){F[h+3|0]=d&63|128,F[h|0]=d>>>18|240,F[h+2|0]=d>>>6&63|128,F[h+1|0]=d>>>12&63|128,h=4;break e}}r[37091]=25,h=-1}else h=1;break e}F[h|0]=d,h=1}return h}function na(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0;C=r[h+432>>2],q=C+24|0,b=r[C+24>>2];e:{if(b){B=r[C+12>>2];break e}B=Ie[r[r[h+4>>2]+28>>2]](h,r[C+8>>2],r[C+20>>2],r[C+16>>2],1)|0,r[C+12>>2]=B,b=r[C+24>>2]}Ie[r[r[h+452>>2]+4>>2]](h,d,a,p,B,q,r[C+16>>2]),d=r[C+24>>2],d>>>0>b>>>0&&(d=d-b|0,Ie[r[r[h+460>>2]+4>>2]](h,r[C+12>>2]+(b<<2)|0,0,d),r[D>>2]=d+r[D>>2],d=r[C+24>>2]),h=r[C+16>>2],h>>>0<=d>>>0&&(r[C+24>>2]=0,r[C+20>>2]=h+r[C+20>>2])}function qa(h){h=h|0;var d=0,a=0;d=r[h+20>>2];e:{if(!(r[h+64>>2]|d-205>>>0>1)){ni[h+140>>2]>2]&&(d=r[h>>2],r[d+20>>2]=67,Ie[r[d>>2]](h)),Ie[r[r[h+420>>2]+4>>2]](h),r[h+20>>2]=210;break e}t:switch(d-207|0){case 0:r[h+20>>2]=210;break e;case 3:break e;default:break t}a=r[h>>2],r[a+24>>2]=d,r[a+20>>2]=20,Ie[r[r[h>>2]>>2]](h)}e:{for(;;){if(d=r[h+436>>2],r[d+20>>2])break e;if(!(Ie[r[d>>2]](h)|0))break}return 0}return Ie[r[r[h+24>>2]+24>>2]](h),qp(h),1}function As(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0;e:{if((C|0)<=0||(B=r[h+112>>2],!B))break e;for(D=r[r[h+456>>2]+24>>2];;){for(h=a+1|0,q=C-1|0,a=a<<2,b=r[a+r[d+8>>2]>>2],Z=r[a+r[d+4>>2]>>2],ae=r[a+r[d>>2]>>2],fe=r[p>>2],a=0;F[a+fe|0]=r[((te[a+b|0]<<2)+D|0)+2048>>2]+(r[((te[a+Z|0]<<2)+D|0)+1024>>2]+r[(te[a+ae|0]<<2)+D>>2]|0)>>>16,a=a+1|0,(B|0)!=(a|0););if(p=p+4|0,b=(C|0)>1,C=q,a=h,!b)break}}}function N0(h){var d=0,a=0,p=0;if(a=r[h+64>>2],a){d=te[a+76560|0],a=d-1|0,d>>>0>=16&&(d=r[h+40>>2],p=r[d>>2],r[p+20>>2]=40,Ie[r[p>>2]](d)),d=a<<4,p=r[h+60>>2];e:{if(r[h+20>>2]){d=r[((p<<2)+h|0)+100>>2]+(d<<2)|0,r[d>>2]=r[d>>2]+1;break e}p=r[((p<<2)+h|0)+84>>2],ta(h,r[p+(d<<2)>>2],F[(d+p|0)+1024|0])}if(a&&ta(h,r[h+64>>2],a),r[h+64>>2]=0,d=r[h+68>>2],!(r[h+20>>2]|!d))for(a=r[h+72>>2];ta(h,F[a|0],1),a=a+1|0,d=d-1|0,!!d;);r[h+68>>2]=0}}function Fa(h,d,a,p,C){var D=0;if((a|0)<(C|0)){if(!ms(h,d,a,C))return-1;a=r[h+12>>2],d=r[h+8>>2]}if(a=a-C|0,D=(-1<>>a,(D|0)>r[(C<<2)+p>>2])for(;;){if((a|0)<=0){if(!ms(h,d,a,1))return-1;a=r[h+12>>2],d=r[h+8>>2]}if(a=a-1|0,D=d>>>a&1|D<<1,C=C+1|0,!((D|0)>r[(C<<2)+p>>2]))break}return r[h+12>>2]=a,r[h+8>>2]=d,(C|0)>=17?(h=r[h+16>>2],d=r[h>>2],r[d+20>>2]=118,Ie[r[d+4>>2]](h,-1),0):te[(r[p+144>>2]+(r[((C<<2)+p|0)+72>>2]+D|0)|0)+17|0]}function Nf(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0,ae=0,fe=0,ve=0,Se=0,Le=0;e:{if((p|0)<=0||(Z=r[h+112>>2],!Z))break e;for(Le=r[r[h+460>>2]+24>>2];;){for(C=b<<2,B=r[C+a>>2],D=r[d+C>>2],C=Z;ae=te[D|0]>>>3|0,fe=te[D+1|0]>>>2|0,ve=te[D+2|0]>>>3|0,Se=(r[(ae<<2)+Le>>2]+(fe<<6)|0)+(ve<<1)|0,q=En[Se>>1],q||(wp(h,ae,fe,ve),q=te[Se|0]),D=D+3|0,F[B|0]=q-1,B=B+1|0,C=C-1|0,!!C;);if(b=b+1|0,(b|0)==(p|0))break}}}function jl(h,d,a,p,C){var D=0,b=0,B=0;B=-1,b=p&2147483647,D=(b|0)==2147418112;e:{if((D&!a?h|d:D&(a|0)!=0|b>>>0>2147418112)||(D=C&2147483647,((D|0)==2147418112&0|D>>>0>2147418112)&(D|0)!=2147418112))break e;if(!(h|a|(D|b|d)))return 0;if(D=p&C,(D|0)>0|(D|0)>=0){if(((a|0)!=0|(p|0)!=(C|0))&(p|0)<(C|0))break e;return(h|a|(p^C|d))!=0}if(!a&(p|0)==(C|0)?h|d:(a|0)!=0&(p|0)>=(C|0)|(p|0)>(C|0))break e;B=(h|a|(p^C|d))!=0}return B}function gk(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;if(C=r[h+328>>2],a=r[h+364>>2],p=r[h+24>>2],r[a+24>>2]=r[p>>2],r[a+28>>2]=r[p+4>>2],r[a+76>>2]|!r[h+200>>2]||Nc(a,r[a+80>>2]),r[h+272>>2]>0)for(p=0;ta(a,He[r[(p<<2)+d>>2]>>1]>>C,1),p=p+1|0,(p|0)>2];);return d=r[h+24>>2],r[d>>2]=r[a+24>>2],r[d+4>>2]=r[a+28>>2],h=r[h+200>>2],h&&(d=r[a+76>>2],d?h=d:r[a+80>>2]=r[a+80>>2]+1&7,r[a+76>>2]=h-1),1}function y_(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0;C=hn-16|0,hn=C,p=r[h+20>>2],(p|0)!=205&&(D=r[h>>2],r[D+24>>2]=p,r[D+20>>2]=20,Ie[r[r[h>>2]>>2]](h)),D=r[h+116>>2],b=r[h+140>>2];e:{if(D>>>0<=b>>>0){d=r[h>>2],r[d+20>>2]=123,Ie[r[d+4>>2]](h,-1),a=0;break e}p=r[h+8>>2],p&&(r[p+8>>2]=D,r[p+4>>2]=b,Ie[r[p>>2]](h)),r[C+12>>2]=0,Ie[r[r[h+424>>2]+4>>2]](h,d,C+12|0,a),a=r[C+12>>2],r[h+140>>2]=a+r[h+140>>2]}return hn=C+16|0,a|0}function Va(h,d,a,p,C,D,b,B,q){var Z=0,ae=0,fe=0,ve=0;q=m0(d,a,B,q),B=Pi,C=m0(p,C,D,b),q=C+q|0,p=Pi+B|0,B=C>>>0>q>>>0?p+1|0:p,Z=b,C=0,ae=a,p=0,a=m0(b,C,a,p),b=a+q|0,q=Pi+B|0,fe=b,a=a>>>0>b>>>0?q+1|0:q,b=m0(D,0,d,0),B=Pi,q=0,p=m0(D,q,ae,p),B=B+p|0,D=Pi+q|0,D=p>>>0>B>>>0?D+1|0:D,q=D+fe|0,p=a,D=D>>>0>q>>>0?p+1|0:p,a=m0(d,ve,Z,C)+B|0,C=Pi,C=a>>>0>>0?C+1|0:C,B=C+q|0,q=D,r[h+8>>2]=B,r[h+12>>2]=C>>>0>B>>>0?q+1|0:q,r[h>>2]=b,r[h+4>>2]=a}function B5(){var h=0;lp(9028,9052,9084,0,9100,9,9103,0,9103,0,3733,9002,10),ap(9028,1,9108,9100,11,12),h=Po(8),r[h+4>>2]=0,r[h>>2]=13,Z2(9028,3687,3,9112,9152,14,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=15,Z2(9028,3704,2,9196,9005,16,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=17,Z2(9028,3815,2,9208,9216,18,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=19,Z2(9028,5762,2,9208,9216,18,h|0,0),h=Po(8),r[h+4>>2]=0,r[h>>2]=20,Z2(9028,3927,2,9280,9005,21,h|0,0)}function Xa(h){h=h|0;var d=0,a=0,p=0,C=0,D=0,b=0;if(d=r[h+24>>2],a=r[d+4>>2],!a){if(!(Ie[r[d+12>>2]](h)|0))return 0;a=r[d+4>>2]}if(p=r[d>>2],C=te[p|0],D=a-1|0,D)a=p+1|0;else{if(!(Ie[r[d+12>>2]](h)|0))return 0;D=r[d+4>>2],a=r[d>>2]}return p=te[a|0],b=r[h>>2],r[b+20>>2]=91,r[b+24>>2]=r[h+416>>2],p=p|C<<8,C=p-2|0,r[r[h>>2]+28>>2]=C,Ie[r[r[h>>2]+4>>2]](h,1),r[d+4>>2]=D-1,r[d>>2]=a+1,p>>>0>=3&&Ie[r[r[h+24>>2]+16>>2]](h,C),1}function ku(h,d,a,p,C,D){var b=0;e:{if((C|0)<=0)break e;d=(d<<2)+h|0,p=(p<<2)+a|0,b=C&3;t:{if(!b){a=C;break t}for(h=0,a=C;D0(r[p>>2],r[d>>2],D),a=a-1|0,p=p+4|0,d=d+4|0,h=h+1|0,(b|0)!=(h|0););}if(C>>>0<4)break e;for(;D0(r[p>>2],r[d>>2],D),D0(r[p+4>>2],r[d+4>>2],D),D0(r[p+8>>2],r[d+8>>2],D),D0(r[p+12>>2],r[d+12>>2],D),p=p+16|0,d=d+16|0,h=a-5|0,a=a-4|0,h>>>0<4294967294;);}}function pk(h,d){var a=0;a=(d|0)!=0;e:{t:{n:{if(!(h&3)|!d)break n;for(;;){if(!te[h|0])break t;if(d=d-1|0,a=(d|0)!=0,h=h+1|0,!(h&3))break n;if(!d)break}}if(!a)break e;if(!(!te[h|0]|d>>>0<4))for(;;){if(a=r[h>>2],(a^-1)&a-16843009&-2139062144)break t;if(h=h+4|0,d=d-4|0,!(d>>>0>3))break}if(!d)break e}for(;;){if(!te[h|0])return h;if(h=h+1|0,d=d-1|0,!d)break}}return 0}function mk(h){var d=0,a=0;e:{if(h&3)for(;;){if(d=te[h|0],!d|(d|0)==61)break e;if(h=h+1|0,!(h&3))break}d=r[h>>2];t:{if((d^-1)&d-16843009&-2139062144)break t;for(;;){if(d=d^1027423549,(d^-1)&d-16843009&-2139062144)break t;if(d=r[h+4>>2],h=h+4|0,!!(d-16843009&(d^-1)&-2139062144))break}}for(;d=h,a=te[d|0],!!(a&&(h=d+1|0,(a|0)!=61)););return d}return h}function _a(h,d,a){var p=0,C=0,D=0;if(!(te[h|0]&32))e:{p=d,d=h,h=r[d+16>>2];t:{if(!h){if(Ok(d))break t;h=r[d+16>>2]}if(D=r[d+20>>2],h-D>>>0>>0){Ie[r[d+36>>2]](d,p,a)|0;break e}n:{if(r[d+80>>2]<0)break n;for(h=a;;){if(C=h,!h)break n;if(h=C-1|0,te[p+h|0]==10)break}if(Ie[r[d+36>>2]](d,p,C)>>>0>>0)break t;p=p+C|0,a=a-C|0,D=r[d+20>>2]}D0(D,p,a),r[d+20>>2]=r[d+20>>2]+a}}}function G5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0;e:{if((p|0)<=0||(b=r[h+112>>2],!b))break e;for(Z=r[r[h+460>>2]+24>>2];;){for(h=r[(C<<2)+d>>2],a=b;B=(r[(te[h|0]>>>1&124)+Z>>2]+(te[h+1|0]<<4&4032)|0)+(te[h+2|0]>>>2&62)|0,q=En[B>>1],D=q+1|0,He[B>>1]=(D|0)!=(D&65535)?q:D,h=h+3|0,a=a-1|0,!!a;);if(C=C+1|0,(C|0)==(p|0))break}}}function vk(h,d,a){h=h|0,d=d|0,a=a|0;for(var p=0,C=0,D=On(0),b=0;;){b=(C<<1)+h|0,p=C<<2,D=On(On(or[p+a>>2]*or[d+p>>2])+On(16384.5));e:{if(On(U2(D))>1]=p-16384,b=C|1,p=b<<2,D=On(On(or[p+a>>2]*or[d+p>>2])+On(16384.5));e:{if(On(U2(D))>1]=p-16384,C=C+2|0,(C|0)==64)break}}function kk(h,d,a,p,C){if(h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,Ya(h,r[d+8>>2],C)){r[d+28>>2]==1|r[d+4>>2]!=(a|0)||(r[d+28>>2]=p);return}e:{if(!Ya(h,r[d>>2],C))break e;if(!(r[d+16>>2]!=(a|0)&r[d+20>>2]!=(a|0))){if((p|0)!=1)break e;r[d+32>>2]=1;return}r[d+20>>2]=a,r[d+32>>2]=p,r[d+40>>2]=r[d+40>>2]+1,r[d+36>>2]!=1|r[d+24>>2]!=2||(F[d+54|0]=1),r[d+44>>2]=4}}function yk(h){h=h|0;var d=0,a=0;for(d=r[h+352>>2],a=Ie[r[r[h+4>>2]>>2]](h,1,8192)|0,r[d+8>>2]=a,h=0;d=(h<<2)+a|0,r[d>>2]=Ce(h,19595),r[d+7168>>2]=Ce(h,-5329),r[d+6144>>2]=Ce(h,-27439),r[d+5120>>2]=(h<<15)+8421375,r[d+4096>>2]=Ce(h,-21709),r[d+3072>>2]=Ce(h,-11059),r[d+2048>>2]=Ce(h,7471)+32768,r[d+1024>>2]=Ce(h,38470),h=h+1|0,(h|0)!=256;);}function w_(h){h=h|0;var d=0,a=0;d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=255,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}d=r[h+24>>2],a=r[d>>2],r[d>>2]=a+1,F[a|0]=217,a=r[d+4>>2]-1|0,r[d+4>>2]=a;e:{if(a||Ie[r[d+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}}function W5(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0,q=0,Z=0;if(r[h+312>>2]>0)for(D=r[p>>2];;){if(q=C|1,d=r[h+112>>2],(d|0)>0){for(p=r[(C<<2)+D>>2],Z=d+p|0,d=r[(b<<2)+a>>2];B=te[d|0],F[p+1|0]=B,F[p|0]=B,d=d+1|0,p=p+2|0,Z>>>0>p>>>0;);d=r[h+112>>2]}if(ku(D,C,D,q,1,d),b=b+1|0,C=C+2|0,!((C|0)>2]))break}}function C_(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;a&&d||(p=r[h>>2],r[p+20>>2]=42,Ie[r[p>>2]](h)),p=r[h+24>>2];e:{if(!p){p=Ie[r[r[h+4>>2]>>2]](h,0,28)|0,r[h+24>>2]=p;break e}if(r[p+8>>2]==282)break e;p=r[h>>2],r[p+20>>2]=23,Ie[r[p>>2]](h),p=r[h+24>>2]}r[p+24>>2]=283,r[p+20>>2]=284,r[p+16>>2]=285,r[p+12>>2]=286,r[p+8>>2]=282,r[p+4>>2]=a,r[p>>2]=d}function bf(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0,b=0;return C=r[h+84>>2],D=r[C+4>>2],b=r[h+28>>2],p=r[h+20>>2]-b|0,p=p>>>0>D>>>0?D:p,p&&(D0(r[C>>2],b,p),r[C>>2]=p+r[C>>2],D=r[C+4>>2]-p|0,r[C+4>>2]=D),p=r[C>>2],D=a>>>0>D>>>0?D:a,D&&(D0(p,d,D),p=D+r[C>>2]|0,r[C>>2]=p,r[C+4>>2]=r[C+4>>2]-D),F[p|0]=0,d=r[h+44>>2],r[h+28>>2]=d,r[h+20>>2]=d,a|0}function __(h){h=h|0;var d=0,a=0,p=0;d=hn-16|0,hn=d;e:{if(a=L1(),a){if(p=r[h>>2],(Ot(a,p,r[h+4>>2]-p|0,d+12|0,d+8|0,d+4|0,d)|0)<0)break e;He[h+24>>1]=r[d+12>>2],p=r[d+8>>2],F[h+30|0]=0,F[h+28|0]=8,He[h+26>>1]=p,F[h+29|0]=r[d>>2]==2?1:3,Af(a),hn=d+16|0;return}h=qu(4),r[h>>2]=8904,Fu(h|0,147344,0),mr()}Af(a),h=qu(4),r[h>>2]=3800,Fu(h|0,147344,0),mr()}function wk(h,d,a,p){F[h+53|0]=1;e:{if(r[h+4>>2]!=(a|0))break e;F[h+52|0]=1,a=r[h+16>>2];t:{if(!a){if(r[h+36>>2]=1,r[h+24>>2]=p,r[h+16>>2]=d,(p|0)!=1)break e;if(r[h+48>>2]==1)break t;break e}if((d|0)==(a|0)){if(a=r[h+24>>2],(a|0)==2&&(r[h+24>>2]=p,a=p),r[h+48>>2]!=1)break e;if((a|0)==1)break t;break e}r[h+36>>2]=r[h+36>>2]+1}F[h+54|0]=1}}function x_(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,b=b|0;var B=0,q=0,Z=0,ae=0,fe=0;B=hn-16|0,hn=B,q=r[h+432>>2],Z=r[q+16>>2],ae=r[D>>2],r[B+12>>2]=0,fe=d,d=b-ae|0,Ie[r[r[h+452>>2]+4>>2]](h,fe,a,p,r[q+12>>2],B+12|0,d>>>0>>0?d:Z),Ie[r[r[h+460>>2]+4>>2]](h,r[q+12>>2],(r[D>>2]<<2)+C|0,r[B+12>>2]),r[D>>2]=r[D>>2]+r[B+12>>2],hn=B+16|0}function S_(h){h=h|0;var d=0,a=0,p=0,C=0;return a=r[h+24>>2],r[a+40>>2]||(d=r[h>>2],r[d+20>>2]=23,Ie[r[d>>2]](h)),d=r[a+36>>2],p=d<<1,C=Io(p),C||(d=r[h>>2],r[d+20>>2]=54,r[d+24>>2]=10,Ie[r[r[h>>2]>>2]](h),d=r[a+36>>2]),h=D0(C,r[a+32>>2],d),J(r[a+28>>2]),r[a+28>>2]=h,r[a+32>>2]=h,d=r[a+36>>2],r[a+36>>2]=p,r[a+4>>2]=d,r[a>>2]=h+d,1}function T_(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0;C=hn+-64|0,hn=C,p=1;e:{if(Ya(h,d,0)||(p=0,!d)||(d=E2(d,146992),p=0,!d))break e;p=C+8|0,k(p|4,0,52),r[C+56>>2]=1,r[C+20>>2]=-1,r[C+16>>2]=h,r[C+8>>2]=d,Ie[r[r[d>>2]+28>>2]](d,p,r[a>>2],1),h=r[C+32>>2],(h|0)==1&&(r[a>>2]=r[C+24>>2]),p=(h|0)==1}return hn=C- -64|0,p|0}function E_(h){h=h|0;var d=0,a=0;e:{d=r[h+416>>2];t:{if(!d){if(!u0(h))break t;d=r[h+416>>2]}if(a=r[r[h+440>>2]+20>>2],(a+208|0)==(d|0)){d=r[h>>2],r[d+24>>2]=a,r[d+20>>2]=98,Ie[r[r[h>>2]+4>>2]](h,3),r[h+416>>2]=0;break e}if(Ie[r[r[h+24>>2]+20>>2]](h,a)|0)break e}return 0}return h=r[h+440>>2],r[h+20>>2]=r[h+20>>2]+1&7,1}function Ff(h,d){var a=0,p=0,C=0,D=0,b=0;if(a=r[37300],a)for(b=r[37299];;){if(C=(p<<2)+b|0,D=r[C>>2],(D|0)==(h|0)){r[C>>2]=d,J(h);return}if(!d|D||(r[C>>2]=d,d=0),p=p+1|0,(a|0)==(p|0))break}e:{if(!d||(h=Go(r[37299],(a<<2)+4|0),!h))break e;r[37299]=h,a=r[37300],r[37300]=a+1,r[h+(a<<2)>>2]=d}}function Ck(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0,b=0,B=0;if(d=r[h+312>>2],(d|0)>0)for(b=r[p>>2];;){if(p=r[h+112>>2],(p|0)>0){for(C=D<<2,d=r[C+b>>2],B=p+d|0,p=r[a+C>>2];C=te[p|0],F[d+1|0]=C,F[d|0]=C,p=p+1|0,d=d+2|0,B>>>0>d>>>0;);d=r[h+312>>2]}if(D=D+1|0,!((D|0)<(d|0)))break}}function D_(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;if(a=r[h+364>>2],r[h+200>>2]&&(p=r[a+68>>2],p||(ju(h,r[a+72>>2]),p=r[h+200>>2],r[a+72>>2]=r[a+72>>2]+1&7),r[a+68>>2]=p-1),r[h+272>>2]>0)for(p=a+204|0,C=r[h+328>>2],a=0;l0(h,p,He[r[(a<<2)+d>>2]>>1]>>>C&1),a=a+1|0,(a|0)>2];);return 1}function I_(h){h=h|0;var d=0;d=r[h+332>>2],Ie[r[r[h+364>>2]+8>>2]](h);e:{t:switch(r[d+20>>2]){case 0:if(r[d+20>>2]=2,r[h+184>>2])break e;r[d+32>>2]=r[d+32>>2]+1;break e;case 1:r[d+20>>2]=2;break e;case 2:break t;default:break e}r[h+184>>2]&&(r[d+20>>2]=1),r[d+32>>2]=r[d+32>>2]+1}r[d+24>>2]=r[d+24>>2]+1}function Kp(h){var d=0;d=1;e:{if((h|0)>=1024){if(d=898846567431158e293,h>>>0<2047){h=h-1023|0;break e}d=Lh,h=((h|0)>=3069?3069:h)-2046|0;break e}if((h|0)>-1023)break e;if(d=2004168360008973e-307,h>>>0>4294965304){h=h+969|0;break e}d=0,h=((h|0)<=-2960?-2960:h)+1938|0}return Qn(0,0),Qn(1,h+1023<<20),d*+ln()}function oi(h,d,a){h=h|0,d=d|0,a=a|0;for(var p=0,C=0,D=0,b=0,B=0,q=0,Z=0;;){p=D<<1,C=p+d|0,b=En[C>>1],B=He[C+384>>1],C=En[C+128>>1],Z=h+p|0,p=En[a+p>>1],q=p<<16>>16;e:{if((q|0)<0){p=0-(Ce(C+(0-q<<16>>16)|0,b)>>>B+16<<16>>16)|0;break e}p=Ce(C+p|0,b)>>>B+16|0}if(He[Z>>1]=p,D=D+1|0,(D|0)==64)break}}function O_(h,d,a,p,C,D){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0;var b=0,B=0;return b=r[h+4>>2],(d|0)!=1?(B=r[h>>2],r[B+24>>2]=d,r[B+20>>2]=14,Ie[r[r[h>>2]>>2]](h)):d=1,h=zu(h,d,128),r[h+40>>2]=0,r[h+32>>2]=a,r[h+12>>2]=D,r[h+8>>2]=p,r[h+4>>2]=C,r[h>>2]=0,r[h+44>>2]=r[b+72>>2],r[b+72>>2]=h,h|0}function M_(h,d,a,p,C,D){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0;var b=0,B=0;return b=r[h+4>>2],(d|0)!=1?(B=r[h>>2],r[B+24>>2]=d,r[B+20>>2]=14,Ie[r[r[h>>2]>>2]](h)):d=1,h=zu(h,d,128),r[h+40>>2]=0,r[h+32>>2]=a,r[h+12>>2]=D,r[h+8>>2]=p,r[h+4>>2]=C,r[h>>2]=0,r[h+44>>2]=r[b+68>>2],r[b+68>>2]=h,h|0}function e1(h,d){var a=0,p=0,C=0,D=0;p=hn-16|0,hn=p;e:{if(!d){d=0;break e}a=d>>31,C=(a^d)-a|0,a=Q0(C),K0(p,C,0,0,0,a+81|0),C=0+r[p+8>>2]|0,a=(r[p+12>>2]^65536)+(16414-a<<16)|0,a=C>>>0>>0?a+1|0:a,D=d&-2147483648|a,a=r[p+4>>2],d=r[p>>2]}r[h>>2]=d,r[h+4>>2]=a,r[h+8>>2]=C,r[h+12>>2]=D,hn=p+16|0}function Vf(h){var d=0,a=0,p=0,C=0;if(d=mk(h),(d|0)==(h|0))return 0;p=d-h|0;e:{if(te[p+h|0]||(d=r[37092],!d)||(a=r[d>>2],!a))break e;for(;;){t:{if(!Sk(h,a,p)&&(a=r[d>>2]+p|0,te[a|0]==61))break t;if(a=r[d+4>>2],d=d+4|0,a)continue;break e}break}C=a+1|0}return C}function Ya(h,d,a){var p=0;if(!a)return r[h+4>>2]==r[d+4>>2];if((h|0)==(d|0))return 1;p=r[h+4>>2],h=te[p|0],a=r[d+4>>2],d=te[a|0];e:{if(!h|(d|0)!=(h|0))break e;for(;;){if(d=te[a+1|0],h=te[p+1|0],!h)break e;if(a=a+1|0,p=p+1|0,(h|0)!=(d|0))break}}return(h|0)==(d|0)}function P_(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0,D=0;e:{if(C=r[h+424>>2],!r[C+48>>2]){if(!(Ie[r[r[h+428>>2]+12>>2]](h,C+8|0)|0))break e;r[C+48>>2]=1}if(D=r[h+316>>2],Ie[r[r[h+432>>2]+4>>2]](h,C+8|0,C+52|0,D,d,a,p),ni[C+52>>2]>>0)break e;r[C+48>>2]=0,r[C+52>>2]=0}}function bc(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0;var D=0,b=0,B=0,q=0;if(r[h+60>>2]>0)for(B=r[h+356>>2],D=r[h+68>>2],q=a<<2;a=b<<2,Ie[r[(a+B|0)+12>>2]](h,D,r[a+d>>2]+q|0,r[a+p>>2]+(Ce(r[D+12>>2],C)<<2)|0),D=D+84|0,b=b+1|0,(b|0)>2];);}function Fc(h,d,a,p){var C=0,D=0,b=0;if(D=r[37566]+1|0,r[37566]=D,r[h>>2]=D,p)for(;;){if(b=(C<<3)+a|0,!r[b>>2])return r[b>>2]=D,h=(C<<3)+a|0,r[h+4>>2]=d,r[h+8>>2]=0,Mi=p,a;if(C=C+1|0,(C|0)==(p|0))break}return C=h,h=p<<1,d=Fc(C,d,Go(a,p<<4|8),h),Mi=h,d}function Uf(h,d){var a=0,p=0,C=0,D=0;a=hn-16|0,hn=a;e:{if(!d){d=0;break e}p=d,d=Q0(d),K0(a,p,0,0,0,d+81|0),p=0+r[a+8>>2]|0,d=(r[a+12>>2]^65536)+(16414-d<<16)|0,D=C>>>0>p>>>0?d+1|0:d,C=r[a+4>>2],d=r[a>>2]}r[h>>2]=d,r[h+4>>2]=C,r[h+8>>2]=p,r[h+12>>2]=D,hn=a+16|0}function os(h,d,a){var p=0,C=0,D=0,b=0;if(d)for(;a=a-1|0,C=h,h=U4(h,d,10),p=Pi,D=a,b=C-m0(h,p,10,0)|48,F[D|0]=b,C=d>>>0>9,d=p,!!C;);if(h)for(;a=a-1|0,d=(h>>>0)/10|0,F[a|0]=h-Ce(d,10)|48,p=h>>>0>9,h=d,!!p;);return a}function _k(h){var d=0,a=0;return d=r[h+72>>2],r[h+72>>2]=d-1|d,r[h+20>>2]!=r[h+28>>2]&&Ie[r[h+36>>2]](h,0,0)|0,r[h+28>>2]=0,r[h+16>>2]=0,r[h+20>>2]=0,d=r[h>>2],d&4?(r[h>>2]=d|32,-1):(a=r[h+44>>2]+r[h+48>>2]|0,r[h+8>>2]=a,r[h+4>>2]=a,d<<27>>31)}function Vc(h){var d=0,a=0,p=0;d=h;e:{if(d&3)for(;;){if(!te[d|0])break e;if(d=d+1|0,!(d&3))break}for(;a=d,d=d+4|0,p=r[a>>2],!((p^-1)&p-16843009&-2139062144););for(;d=a,a=d+1|0,!!te[d|0];);}return d-h|0}function yu(h,d,a){var p=0,C=0,D=0,b=0;r[h+112>>2]=d,r[h+116>>2]=a,C=r[h+4>>2],p=r[h+44>>2]-C|0,r[h+120>>2]=p,r[h+124>>2]=p>>31,p=r[h+8>>2];e:{if(!(d|a)||(D=p-C|0,b=D>>31,(a|0)>=(b|0)&d>>>0>=D>>>0|(a|0)>(b|0)))break e;p=d+C|0}r[h+104>>2]=p}function xk(h,d){var a=0,p=0,C=0;if(Ue(+h),p=xe(1)|0,C=xe(0)|0,a=p>>>20&2047,(a|0)!=2047){if(!a)return h==0?a=0:(h=xk(h*18446744073709552e3,d),a=r[d>>2]+-64|0),r[d>>2]=a,h;r[d>>2]=a-1022,Qn(0,C|0),Qn(1,p&-2146435073|1071644672),h=+ln()}return h}function $5(h,d,a){var p=0,C=0;C=hn-16|0,hn=C,r[C+12>>2]=a,p=hn-160|0,hn=p,r[p+148>>2]=199,r[p+144>>2]=h,p=k(p,0,144),r[p+76>>2]=-1,r[p+36>>2]=293,r[p+80>>2]=-1,r[p+44>>2]=p+159,r[p+84>>2]=p+144,F[h|0]=0,xr(p,d,a,291,292),hn=p+160|0,hn=C+16|0}function Sk(h,d,a){var p=0,C=0,D=0;if(!a)return 0;p=te[h|0];e:{if(!p)break e;for(;;){t:{if(C=te[d|0],!C||(a=a-1|0,!a|(p|0)!=(C|0)))break t;if(d=d+1|0,p=te[h+1|0],h=h+1|0,p)continue;break e}break}D=p}return(D&255)-te[d|0]|0}function Tk(h){var d=0,a=0,p=0;if(F[r[h>>2]]-48>>>0>=10)return 0;for(;p=r[h>>2],a=-1,d>>>0<=214748364&&(a=F[p|0]-48|0,d=Ce(d,10),a=(a|0)>(d^2147483647)?-1:a+d|0),r[h>>2]=p+1,d=a,F[p+1|0]-48>>>0<10;);return d}function m0(h,d,a,p){var C=0,D=0,b=0,B=0,q=0,Z=0;return C=a>>>16|0,D=h>>>16|0,Z=Ce(C,D),b=a&65535,B=h&65535,q=Ce(b,B),D=(q>>>16|0)+Ce(D,b)|0,C=(D&65535)+Ce(C,B)|0,Pi=(Ce(d,a)+Z|0)+Ce(h,p)+(D>>>16)+(C>>>16)|0,q&65535|C<<16}function R_(h){h=h|0;var d=0,a=0;r[h+148>>2]=0,d=r[h+428>>2];e:{if(r[h+328>>2]>=2){r[d+28>>2]=1;break e}if(a=r[h+332>>2],r[h+320>>2]!=1){r[d+28>>2]=r[a+12>>2];break e}r[d+28>>2]=r[a+72>>2]}r[d+20>>2]=0,r[d+24>>2]=0}function Ri(h){return h=h|0,r[h+104>>2]=0,r[h+108>>2]=0,r[h+16>>2]=68,r[h+12>>2]=69,r[h+8>>2]=70,r[h+4>>2]=71,r[h>>2]=72,r[h+124>>2]=0,r[h+128>>2]=0,r[h+116>>2]=128,r[h+120>>2]=0,r[h+112>>2]=9760,r[h+20>>2]=0,h|0}function j4(){var h=0,d=0,a=0,p=0,C=0;h=qu(8),r[h>>2]=147672,r[h>>2]=147716,d=Vc(3543),a=Po(d+13|0),r[a+8>>2]=0,r[a+4>>2]=d,r[a>>2]=d,p=h,C=D0(a+12|0,3543,d+1|0),r[p+4>>2]=C,r[h>>2]=147764,Fu(h|0,147796,23),mr()}function j5(h,d,a){var p=0;if(p=r[h+16>>2],!p){r[h+36>>2]=1,r[h+24>>2]=a,r[h+16>>2]=d;return}e:{if((d|0)==(p|0)){if(r[h+24>>2]!=2)break e;r[h+24>>2]=a;return}F[h+54|0]=1,r[h+24>>2]=2,r[h+36>>2]=r[h+36>>2]+1}}function A_(h,d){h=h|0,d=d|0;var a=0,p=0;if((d|0)>0){if(a=r[h+24>>2],p=r[a+4>>2],(p|0)<(d|0))for(;Ie[r[a+12>>2]](h)|0,d=d-p|0,p=r[a+4>>2],(d|0)>(p|0););r[a+4>>2]=p-d,r[a>>2]=r[a>>2]+d}}function Ek(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0;return p=hn-16|0,hn=p,C=r[h>>2],D=p+8|0,h=r[h+4>>2],d=(h>>1)+d|0,h&1&&(C=r[C+r[d>>2]>>2]),Ie[C|0](D,d,a),p4(r[p+8>>2]),h=r[p+8>>2],d4(h|0),hn=p+16|0,h|0}function zs(h,d,a,p,C){var D=0;if(D=hn-256|0,hn=D,!(C&73728|(a|0)<=(p|0))){if(p=a-p|0,a=p>>>0<256,k(D,d&255,a?p:256),!a)for(;_a(h,D,256),p=p-256|0,p>>>0>255;);_a(h,D,p)}hn=D+256|0}function L_(h,d){h=h|0,d=d|0;var a=0,p=0;a=r[h+24>>2],p=r[a>>2],r[a>>2]=p+1,F[p|0]=d,d=r[a+4>>2]-1|0,r[a+4>>2]=d;e:{if(d||Ie[r[a+12>>2]](h)|0)break e;d=r[h>>2],r[d+20>>2]=24,Ie[r[d>>2]](h)}}function Dk(h,d){h=h|0,d=d|0;var a=0;return a=r[h>>2],h=r[h+4>>2],d=(h>>1)+d|0,h&1&&(a=r[a+r[d>>2]>>2]),h=Ie[a|0](d)|0,d=Po(8),a=En[h+4>>1]|En[h+6>>1]<<16,r[d>>2]=En[h>>1]|En[h+2>>1]<<16,r[d+4>>2]=a,d|0}function Ja(h){h=h|0;var d=0,a=0;d=r[h+364>>2],a=r[h+24>>2],r[d+24>>2]=r[a>>2],r[d+28>>2]=r[a+4>>2],N0(d),ta(d,127,7),r[d+32>>2]=0,r[d+36>>2]=0,h=r[h+24>>2],r[h>>2]=r[d+24>>2],r[h+4>>2]=r[d+28>>2]}function Bf(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;return a=hn-16|0,hn=a,p=r[h>>2],C=a+8|0,h=r[h+4>>2],d=(h>>1)+d|0,h&1&&(p=r[p+r[d>>2]>>2]),Ie[p|0](C,d),p4(r[a+8>>2]),h=r[a+8>>2],d4(h|0),hn=a+16|0,h|0}function Ik(h,d){h=h|0,d=d|0;var a=0;if(a=r[h>>2],(d|0)<0){d=r[a+108>>2],r[a+104>>2]<3&&d||(Ie[r[a+8>>2]](h),d=r[a+108>>2]),r[a+108>>2]=d+1;return}r[a+104>>2]>=(d|0)&&Ie[r[a+8>>2]](h)}function Gf(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0;var C=0;return C=hn-16|0,hn=C,h=Vu(r[h+60>>2],d|0,a|0,p&255,C+8|0)|0,h?(r[37091]=h,h=-1):h=0,hn=C+16|0,Pi=h?-1:r[C+12>>2],(h?-1:r[C+8>>2])|0}function Jo(h,d,a,p){e:{if(!h)break e;t:switch(d+2|0){case 0:F[h|0]=a;return;case 1:He[h>>1]=a;return;case 2:case 3:r[h>>2]=a;return;case 5:break t;default:break e}r[h>>2]=a,r[h+4>>2]=p}}function Ok(h){var d=0;return d=r[h+72>>2],r[h+72>>2]=d-1|d,d=r[h>>2],d&8?(r[h>>2]=d|32,-1):(r[h+4>>2]=0,r[h+8>>2]=0,d=r[h+44>>2],r[h+28>>2]=d,r[h+20>>2]=d,r[h+16>>2]=d+r[h+48>>2],0)}function z5(h,d,a,p,C,D,b,B,q){var Z=0;Z=hn-16|0,hn=Z,Vn(Z,d,a,p,C,D,b,B,q^-2147483648),p=r[Z>>2],a=r[Z+4>>2],d=r[Z+12>>2],r[h+8>>2]=r[Z+8>>2],r[h+12>>2]=d,r[h>>2]=p,r[h+4>>2]=a,hn=Z+16|0}function Zo(h,d,a){var p=0,C=0;e:{if(!a)break e;for(;;){if(C=r[(p<<3)+d>>2],!C)break e;if((h|0)==(C|0))return r[((p<<3)+d|0)+4>>2];if(p=p+1|0,(p|0)==(a|0))break}}return 0}function N_(h,d,a){h=h|0,d=d|0,a=a|0;var p=0,C=0,D=0;return C=r[h+84>>2],p=a+256|0,D=pk(C,p),p=D?D-C|0:p,a=a>>>0>p>>>0?p:a,D0(d,C,a),d=C+p|0,r[h+84>>2]=d,r[h+8>>2]=d,r[h+4>>2]=a+C,a|0}function b_(h,d){h=h|0,d=d|0;var a=0,p=0;r[h+176>>2]||(a=r[h+336>>2],d&&(p=r[h>>2],r[p+20>>2]=4,Ie[r[p>>2]](h)),r[a+20>>2]=d,r[a+16>>2]=0,r[a+8>>2]=0,r[a+12>>2]=0,r[a+4>>2]=144)}function z4(h,d){var a=0;e:{if(!d||(d=E2(d,147200),!d|r[d+8>>2]&(r[h+8>>2]^-1))||!Ya(r[h+12>>2],r[d+12>>2],0))break e;a=Ya(r[h+16>>2],r[d+16>>2],0)}return a}function F_(h,d){h=h|0,d=d|0;var a=0;a=r[h+340>>2],d&&(d=r[h>>2],r[d+20>>2]=4,Ie[r[d>>2]](h)),d=r[h+32>>2],r[a+52>>2]=0,r[a+56>>2]=0,r[a+48>>2]=d,r[a+60>>2]=r[h+236>>2]<<1}function V_(h){h=h|0;var d=0,a=0;d=hn-224|0,hn=d,a=d+16|0,Ie[r[r[h>>2]+12>>2]](h,a),r[d>>2]=a,a=r[36464],h=hn-16|0,hn=h,r[h+12>>2]=d,xr(a,8900,d,0,0),hn=h+16|0,hn=d+224|0}function U_(h,d,a,p,C,D,b){h=h|0,d=d|0,a=a|0,C=C|0,D=D|0,Ie[r[r[h+452>>2]+12>>2]](h,d,r[a>>2],(r[D>>2]<<2)+C|0),r[D>>2]=r[D>>2]+1,r[a>>2]=r[a>>2]+1}function B_(h){h=h|0;var d=0;d=r[h+436>>2],r[d+24>>2]=1,r[d+16>>2]=0,r[d+20>>2]=0,r[d>>2]=67,Ie[r[r[h>>2]+16>>2]](h),Ie[r[r[h+440>>2]>>2]](h),r[h+160>>2]=0}function G_(){var h=0;return h=Po(44),r[h>>2]=0,r[h+4>>2]=0,r[h+40>>2]=0,r[h+32>>2]=1,r[h+36>>2]=95,r[h+16>>2]=0,r[h+20>>2]=0,r[h+8>>2]=0,r[h+12>>2]=0,h|0}function W_(h,d){h=h|0,d=d|0;var a=0;a=h,h=r[h>>2],Ie[r[h+288>>2]](a,d);e:{if((d|0)>=0||(r[h+292>>2]=1,!r[h+296>>2]))break e;Hu(h+132|0,1),mr()}}function H5(h,d,a,p,C,D){if(h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,Ya(h,r[d+8>>2],D)){wk(d,a,p,C);return}h=r[h+8>>2],Ie[r[r[h>>2]+20>>2]](h,d,a,p,C,D)}function $_(h,d){h=h|0,d=d|0;var a=0,p=0,C=0;a=d,d=r[d>>2]+7&-8,r[a>>2]=d+16,p=h,C=Wp(r[d>>2],r[d+4>>2],r[d+8>>2],r[d+12>>2]),In[p>>3]=C}function j_(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,F[r[p>>2]+C|0]=te[(r[h+324>>2]+(Ce(En[r[d+80>>2]>>1],En[a>>1])+4>>>3&1023)|0)+128|0]}function z_(h){h=h|0,r[h+216>>2]=0,r[h+416>>2]=0,r[h+144>>2]=0,h=r[h+440>>2],r[h+164>>2]=0,r[h+24>>2]=0,r[h+12>>2]=0,r[h+16>>2]=0}function qp(h){var d=0;if(d=r[h+4>>2],d){if(Ie[r[d+36>>2]](h,1),r[h+16>>2]){r[h+304>>2]=0,r[h+20>>2]=200;return}r[h+20>>2]=100}}function H_(h,d,a,p){if(h=h|0,d=d|0,a=a|0,p=p|0,Ya(h,r[d+8>>2],0)){j5(d,a,p);return}h=r[h+8>>2],Ie[r[r[h>>2]+28>>2]](h,d,a,p)}function Po(h){var d=0;h=h||1;e:{for(;;){if(d=Io(h),d)break e;if(d=r[37567],d){Ie[d|0]();continue}break}up(),mr()}return d}function H4(h){h=h|0;var d=0;Ie[r[r[h>>2]+8>>2]](h),d=r[h+4>>2],d&&Ie[r[d+40>>2]](h),r[h+20>>2]=0,r[h+4>>2]=0,Dc(1),mr()}function K_(h){h=h|0;var d=0;return d=r[h>>2],r[d+20>>2]=120,Ie[r[d+4>>2]](h,-1),h=r[h+24>>2],r[h+4>>2]=2,r[h>>2]=145084,1}function Mk(h){for(h=h|0;;){if(h=r[37570],h){r[37570]=r[h+8>>2],Ie[r[h>>2]](r[h+4>>2]),J(h);continue}break}F[150273]=0}function Pk(h){h=h|0;var d=0,a=0;return r[h>>2]=147716,d=r[h+4>>2]-12|0,a=r[d+8>>2]-1|0,r[d+8>>2]=a,(a|0)<0&&J(d),h|0}function q_(h,d,a){h=h|0,d=d|0,a=a|0;var p=0;p=r[h>>2],h=r[h+4>>2],d=(h>>1)+d|0,h&1&&(p=r[p+r[d>>2]>>2]),Ie[p|0](d,a)}function Rk(h,d,a,p,C,D,b,B,q){r[h>>2]=d,r[h+4>>2]=a,r[h+8>>2]=p,r[h+12>>2]=C&65535|(q>>>16&32768|C>>>16&32767)<<16}function X_(){var h=0;return h=Po(36),r[h>>2]=0,r[h+4>>2]=0,r[h+16>>2]=0,r[h+20>>2]=0,r[h+8>>2]=0,r[h+12>>2]=0,h|0}function Y_(h){h=h|0,h=r[h+24>>2],r[h+40>>2]&&(r[r[h+20>>2]>>2]=r[h+32>>2]),r[r[h+24>>2]>>2]=r[h+36>>2]-r[h+4>>2]}function Ak(h){h=h|0;var d=0;h&&(d=r[h+12>>2],d&&(r[h+16>>2]=d,J(d)),d=r[h>>2],d&&(r[h+4>>2]=d,J(d)),J(h))}function J_(h){h=h|0;var d=0;d=r[h+420>>2],r[h+84>>2]&&Ie[r[r[h+460>>2]+8>>2]](h),r[d+108>>2]=r[d+108>>2]+1}function Lk(h,d){h=h|0,d=d|0;var a=0;a=r[h>>2],h=r[h+4>>2],d=(h>>1)+d|0,h&1&&(a=r[a+r[d>>2]>>2]),Ie[a|0](d)}function Z_(h){h=h|0;var d=0,a=0;return h=r[h+4>>2],d=Vc(h)+1|0,a=Io(d),a?h=D0(a,h,d):h=0,h|0}function Nk(h){h=h|0,r[r[h+332>>2]+12>>2]=0,Ie[r[r[h+348>>2]+4>>2]](h),Ie[r[r[h+348>>2]+8>>2]](h)}function Q_(){var h=0;if(h=r[37088],h)for(;Ie[r[h>>2]](),h=r[h+4>>2],!!h;);}function K5(h,d,a,p,C,D){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,D=D|0,Ya(h,r[d+8>>2],D)&&wk(d,a,p,C)}function D2(h,d,a,p,C){return h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,h=Ie[h|0](d,a,p,C)|0,Mi=Pi,h|0}function bk(h){h=h|0;var d=0;d=r[h+4>>2],d&&Ie[r[d+40>>2]](h),r[h+20>>2]=0,r[h+4>>2]=0}function ex(h){h=h|0;var d=0;d=r[h+452>>2],r[d+92>>2]=r[h+312>>2],r[d+96>>2]=r[h+116>>2]}function tx(h,d,a,p,C){h=h|0,d=d|0,a=a|0,p=p|0,C=C|0,ku(r[d>>2],a,p,0,C,r[h+112>>2])}function to(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0,Ie[r[r[h+432>>2]+4>>2]](h,0,0,0,d,a,p)}function Yh(h){h=h|0;var d=0;d=r[h+452>>2],r[d+36>>2]=0,r[d+44>>2]=r[h+116>>2]}function nx(h,d,a,p){h=h|0,d=d|0,a=a|0,p=p|0,Ya(h,r[d+8>>2],0)&&j5(d,a,p)}function q5(h){h=h|0;var d=0;d=h,h=r[h>>2],Ie[r[h+8>>2]](d),Hu(h+132|0,1),mr()}function rx(h,d,a,p,C,D){return 0}function ix(h){h=h|0;var d=0;d=r[h>>2],r[d+20>>2]=46,Ie[r[d>>2]](h)}function ox(h,d){h=h|0,d=d|0,r[37564]||(r[37564]=h,r[37565]=d)}function sx(h){return h=h|0,h?(E2(h,147088)|0)!=0|0:0}function X5(){var h=0;return h=Po(8),r[h>>2]=0,r[h+4>>2]=0,h|0}function ax(h){h=h|0,lr(h,1),lr(h,0),J(r[h+4>>2]),r[h+4>>2]=0}function Fk(){var h=0;return h=Io(1352),h&&k(h,0,1352),h}function lx(h,d,a,p,C,D){}function ux(h){h=h|0,h=r[h>>2],r[h+20>>2]=0,r[h+108>>2]=0}function Hu(h,d){r[37564]||(r[37564]=h,r[37565]=d),Gi()}function Xp(h,d,a){return h=h|0,d=d|0,Ya(h,d,0)|0}function cx(h,d,a,p){p=p|0,r[p>>2]=0}function Jh(h,d,a,p){a=a|0,p=p|0,r[p>>2]=a}function Vk(h,d,a){h=h|0,d=d|0,a=a|0,He[r[h>>2]+d>>1]=a}function Uk(h,d,a){h=h|0,d=d|0,a=a|0,F[r[h>>2]+d|0]=a}function Ku(h,d,a,p,C){}function fx(h){h=h|0,Ie[r[r[h>>2]+12>>2]](h,147840)}function Bk(h,d){return h=h|0,d=d|0,En[r[h>>2]+d>>1]}function Uc(h){return(h&65535)<<16|(h&-65536)>>>16}function Bc(h){return h?31-Q0(h-1^h)|0:32}function Gk(h,d){return h=h|0,d=d|0,te[r[h>>2]+d|0]}function Wk(h,d,a,p){hu(h|0,d|0,8,0,a|0,-1,p|0)}function hx(h){return h=h|0,h=hn-h&-16,hn=h,h|0}function gl(h,d,a,p){}function dx(h){return h=h|0,xf(r[h+60>>2])|0}function gx(h){h=h|0,r[r[h+460>>2]+28>>2]=1}function $k(h,d){h=h|0,d=d|0,r[h+36>>2]=d}function F1(h,d){h=h|0,d=d|0,r[h+40>>2]=d}function jk(h,d){h=h|0,d=d|0,r[h+32>>2]=d}function px(h){h=h|0,r[r[h+436>>2]>>2]=67}function zk(h){return h=h|0,Ie[h|0]()|0}function qu(h){return Io(h+80|0)+80|0}function Zh(h){return h=h|0,r[h+4>>2]}function Hs(h,d,a){}function mx(h){return h=h|0,Io(h)|0}function Hk(h){return h=h|0,h+24|0}function Y5(h){h=h|0,h&&J(h)}function vx(h){return 9304}function c0(h){h=h|0,Pk(h),J(h)}function Za(h){return 3940}function si(h){d4(r[37080])}function kx(h){return 9028}function Kk(h){return h=h|0,h|0}function yx(h){return 0}function wx(h){Mk(0)}function Qh(h){h=h|0,qp(h)}function Wf(h){h=h|0,J(h)}function y0(h,d){k(h,0,d)}function qk(){return hn|0}function Cx(h){h=h|0,hn=h}function V1(h){}var Ie=fn([null,X5,Y5,Bk,Vk,Gk,Uk,Gk,Uk,kx,Ak,zk,X_,Nr,Ek,cn,Bf,__,Lk,p5,Hk,Dk,si,Pk,vx,Ak,zk,G_,ue,Ek,cn,Bf,k4,Lk,jk,q_,$k,F1,I0,B5,so,ax,lr,Rc,y5,C4,O_,M_,Lt,N,ei,zu,L_,Hp,O5,w_,_p,U5,Gt,Xa,E_,g5,z_,Wh,px,jh,B_,I4,ux,E,V_,Ik,H4,I_,Nk,vt,V1,Br,Ku,Sf,yk,M4,A1,Ku,w4,ye,bc,V1,E5,kr,gl,L5,Pf,gl,A5,Wl,F_,Np,Fp,$h,Ni,V1,_5,V1,T5,Vi,V1,S5,Hs,Ca,Hs,oi,Hs,wa,Hs,vk,_4,Gu,M5,x5,D_,A4,Df,R5,Wt,rt,Ac,$s,C5,gu,Lf,lx,vn,gk,dl,rx,yn,Ja,b5,ti,Op,B2,Rp,b_,w,ix,V1,E4,ir,Gp,V5,F4,Wu,gx,bp,Nf,Gn,V1,Ep,G5,Yh,Wr,gl,Cp,N1,I5,U_,gl,y4,P5,G4,V1,tx,As,Ku,Gh,Bh,O4,Sp,Ku,Vp,hi,Ct,T2,Ee,$p,Be,nn,ex,cx,Jh,gl,Li,gl,Ck,pt,gl,Pc,gl,W5,qh,o0,x_,na,$0,v5,j_,Ku,T4,Bp,Ku,Ap,Tp,D5,w5,Ku,ba,Ku,js,Ku,zr,zh,Mc,Bu,Ip,Uu,S4,Dp,x4,ea,Gr,ya,Lp,wi,Oc,Ic,F5,mu,is,jp,$u,Mf,P4,R_,N4,Hh,Pp,yx,m5,Yr,D4,P_,to,J_,zp,bk,bk,Ri,q5,fx,W_,jn,b1,$4,R4,yp,v4,Qh,di,W,$l,C_,k5,Ps,Qh,Mp,y_,qa,d5,V1,Y_,S_,V1,V1,be,A_,K_,W4,dx,N5,Gf,xp,$_,bf,N_,wx,Mk,Kk,Wf,V1,V1,Xp,Wf,T_,K5,kk,nx,Wf,H5,Pr,H_,Wf,pi,Kk,Wf,Za,c0,Zh,c0]);function Xk(){return ps.byteLength/65536|0}function _x(h){h=h|0;var d=Xk()|0,a=d+h|0;if(d=Kt);)++fn;if(fn-tt>16&&Qe.buffer&&Ve)return Ve.decode(Qe.subarray(tt,fn));for(var Bn="";tt>10,56320|xe&1023)}}return Bn}function je(Qe,tt){return Qe?Pe(ut,Qe,tt):""}function Je(Qe,tt,xt,Kt){if(!(Kt>0))return 0;for(var fn=xt,Bn=xt+Kt-1,dt=0;dt=55296&&tn<=57343){var t=Qe.charCodeAt(++dt);tn=65536+((tn&1023)<<10)|t&1023}if(tn<=127){if(xt>=Bn)break;tt[xt++]=tn}else if(tn<=2047){if(xt+1>=Bn)break;tt[xt++]=192|tn>>6,tt[xt++]=128|tn&63}else if(tn<=65535){if(xt+2>=Bn)break;tt[xt++]=224|tn>>12,tt[xt++]=128|tn>>6&63,tt[xt++]=128|tn&63}else{if(xt+3>=Bn)break;tt[xt++]=240|tn>>18,tt[xt++]=128|tn>>12&63,tt[xt++]=128|tn>>6&63,tt[xt++]=128|tn&63}}return tt[xt]=0,xt-fn}function it(Qe,tt,xt){return Je(Qe,ut,tt,xt)}function Ge(Qe){for(var tt=0,xt=0;xt=55296&&Kt<=57343?(tt+=4,++xt):tt+=3}return tt}var Ke,qe,ut,wt,Et,qt,$t,Jt,Dn;function Nn(Qe){Ke=Qe,c.HEAP8=qe=new Int8Array(Qe),c.HEAP16=wt=new Int16Array(Qe),c.HEAP32=qt=new Int32Array(Qe),c.HEAPU8=ut=new Uint8Array(Qe),c.HEAPU16=Et=new Uint16Array(Qe),c.HEAPU32=$t=new Uint32Array(Qe),c.HEAPF32=Jt=new Float32Array(Qe),c.HEAPF64=Dn=new Float64Array(Qe)}var xn=c.INITIAL_MEMORY||52428800;c.wasmMemory?pe=c.wasmMemory:pe=new ge.Memory({initial:xn/65536,maximum:32768}),pe&&(Ke=pe.buffer),xn=Ke.byteLength,Nn(Ke);var et,Me=[],ct=[],st=[];function yt(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)mn(c.preRun.shift());wr(Me)}function St(){wr(ct)}function Pt(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Hn(c.postRun.shift());wr(st)}function mn(Qe){Me.unshift(Qe)}function Pn(Qe){ct.unshift(Qe)}function Hn(Qe){st.unshift(Qe)}var Kn=0,Dt=null;function Vt(Qe){Kn++,c.monitorRunDependencies&&c.monitorRunDependencies(Kn)}function gn(Qe){if(Kn--,c.monitorRunDependencies&&c.monitorRunDependencies(Kn),Kn==0&&Dt){var tt=Dt;Dt=null,tt()}}function Bt(Qe){c.onAbort&&c.onAbort(Qe),Qe="Aborted("+Qe+")",le(Qe),we=!0,Qe+=". Build with -sASSERTIONS for more info.";var tt=new ge.RuntimeError(Qe);throw v(tt),tt}var rn="libjpegturbojs.js.mem",Zn="data:application/octet-stream;base64,";function Ut(Qe){return Qe.startsWith(Zn)}function Ir(Qe){return Qe.startsWith("file://")}var br;br="libjpegturbojs.wasm",Ut(br)||(br=j(br));function jr(Qe){try{if(Qe==br&&ce)return new Uint8Array(ce);if(K)return K(Qe);throw"both async and sync fetching of the wasm failed"}catch(tt){Bt(tt)}}function An(){if(!ce&&(I||R)){if(typeof fetch=="function"&&!Ir(br))return fetch(br,{credentials:"same-origin"}).then(function(Qe){if(!Qe.ok)throw"failed to load wasm binary file at '"+br+"'";return Qe.arrayBuffer()}).catch(function(){return jr(br)});if($)return new Promise(function(Qe,tt){$(br,function(xt){Qe(new Uint8Array(xt))},tt)})}return Promise.resolve().then(function(){return jr(br)})}function hr(){var Qe={a:tr};function tt(dt,tn){var t=dt.exports;c.asm=t,bt(),et=c.asm.P,Pn(c.asm.O),gn()}Vt();function xt(dt){tt(dt.instance)}function Kt(dt){return An().then(function(tn){return ge.instantiate(tn,Qe)}).then(function(tn){return tn}).then(dt,function(tn){le("failed to asynchronously prepare wasm: "+tn),Bt(tn)})}function fn(){return!ce&&typeof ge.instantiateStreaming=="function"&&!Ut(br)&&!Ir(br)&&!L&&typeof fetch=="function"?fetch(br,{credentials:"same-origin"}).then(function(dt){var tn=ge.instantiateStreaming(dt,Qe);return tn.then(xt,function(t){return le("wasm streaming compile failed: "+t),le("falling back to ArrayBuffer instantiation"),Kt(xt)})}):Kt(xt)}if(c.instantiateWasm)try{var Bn=c.instantiateWasm(Qe,tt);return Bn}catch(dt){le("Module.instantiateWasm callback failed with error: "+dt),v(dt)}return fn().catch(v),{}}function Cr(Qe){this.name="ExitStatus",this.message="Program terminated with exit("+Qe+")",this.status=Qe}function wr(Qe){for(;Qe.length>0;)Qe.shift()(c)}function Fr(Qe){this.excPtr=Qe,this.ptr=Qe-24,this.set_type=function(tt){$t[this.ptr+4>>2]=tt},this.get_type=function(){return $t[this.ptr+4>>2]},this.set_destructor=function(tt){$t[this.ptr+8>>2]=tt},this.get_destructor=function(){return $t[this.ptr+8>>2]},this.set_refcount=function(tt){qt[this.ptr>>2]=tt},this.set_caught=function(tt){tt=tt?1:0,qe[this.ptr+12>>0]=tt},this.get_caught=function(){return qe[this.ptr+12>>0]!=0},this.set_rethrown=function(tt){tt=tt?1:0,qe[this.ptr+13>>0]=tt},this.get_rethrown=function(){return qe[this.ptr+13>>0]!=0},this.init=function(tt,xt){this.set_adjusted_ptr(0),this.set_type(tt),this.set_destructor(xt),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var tt=qt[this.ptr>>2];qt[this.ptr>>2]=tt+1},this.release_ref=function(){var tt=qt[this.ptr>>2];return qt[this.ptr>>2]=tt-1,tt===1},this.set_adjusted_ptr=function(tt){$t[this.ptr+16>>2]=tt},this.get_adjusted_ptr=function(){return $t[this.ptr+16>>2]},this.get_exception_ptr=function(){var tt=ot(this.get_type());if(tt)return $t[this.excPtr>>2];var xt=this.get_adjusted_ptr();return xt!==0?xt:this.excPtr}}function ui(Qe,tt,xt){var Kt=new Fr(Qe);throw Kt.init(tt,xt),Qe}var Kr={};function ai(Qe){for(;Qe.length;){var tt=Qe.pop(),xt=Qe.pop();xt(tt)}}function vi(Qe){return this.fromWireType(qt[Qe>>2])}var e0={},p0={},Hi={},T0=48,wo=57;function uo(Qe){if(Qe===void 0)return"_unknown";Qe=Qe.replace(/[^a-zA-Z0-9_]/g,"$");var tt=Qe.charCodeAt(0);return tt>=T0&&tt<=wo?"_"+Qe:Qe}function Yn(Qe,tt){return Qe=uo(Qe),new Function("body","return function "+Qe+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(tt)}function Tr(Qe,tt){var xt=Yn(tt,function(Kt){this.name=tt,this.message=Kt;var fn=new Error(Kt).stack;fn!==void 0&&(this.stack=this.toString()+` +`+fn.replace(/^Error(:[^\n]*)?\n/,""))});return xt.prototype=Object.create(Qe.prototype),xt.prototype.constructor=xt,xt.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},xt}var Ai=void 0;function t0(Qe){throw new Ai(Qe)}function Mo(Qe,tt,xt){Qe.forEach(function(tn){Hi[tn]=tt});function Kt(tn){var t=xt(tn);t.length!==Qe.length&&t0("Mismatched type converter count");for(var xe=0;xe{p0.hasOwnProperty(tn)?fn[t]=p0[tn]:(Bn.push(tn),e0.hasOwnProperty(tn)||(e0[tn]=[]),e0[tn].push(()=>{fn[t]=p0[tn],++dt,dt===Bn.length&&Kt(fn)}))}),Bn.length===0&&Kt(fn)}function Fi(Qe){var tt=Kr[Qe];delete Kr[Qe];var xt=tt.rawConstructor,Kt=tt.rawDestructor,fn=tt.fields,Bn=fn.map(dt=>dt.getterReturnType).concat(fn.map(dt=>dt.setterArgumentType));Mo([Qe],Bn,dt=>{var tn={};return fn.forEach((t,xe)=>{var Qn=t.fieldName,ln=dt[xe],Ue=t.getter,mr=t.getterContext,De=dt[xe+fn.length],Ye=t.setter,Rr=t.setterContext;tn[Qn]={read:ri=>ln.fromWireType(Ue(mr,ri)),write:(ri,R1)=>{var ps=[];Ye(Rr,ri,De.toWireType(ps,R1)),ai(ps)}}}),[{name:tt.name,fromWireType:function(t){var xe={};for(var Qn in tn)xe[Qn]=tn[Qn].read(t);return Kt(t),xe},toWireType:function(t,xe){for(var Qn in tn)if(!(Qn in xe))throw new TypeError('Missing field: "'+Qn+'"');var ln=xt();for(Qn in tn)tn[Qn].write(ln,xe[Qn]);return t!==null&&t.push(Kt,ln),ln},argPackAdvance:8,readValueFromPointer:vi,destructorFunction:Kt}]})}function x0(Qe,tt,xt,Kt,fn){}function xi(Qe){switch(Qe){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+Qe)}}function Ki(){for(var Qe=new Array(256),tt=0;tt<256;++tt)Qe[tt]=String.fromCharCode(tt);ki=Qe}var ki=void 0;function k0(Qe){for(var tt="",xt=Qe;ut[xt];)tt+=ki[ut[xt++]];return tt}var r0=void 0;function Yi(Qe){throw new r0(Qe)}function jo(Qe,tt,xt={}){if(!("argPackAdvance"in tt))throw new TypeError("registerType registeredInstance requires argPackAdvance");var Kt=tt.name;if(Qe||Yi('type "'+Kt+'" must have a positive integer typeid pointer'),p0.hasOwnProperty(Qe)){if(xt.ignoreDuplicateRegistrations)return;Yi("Cannot register type '"+Kt+"' twice")}if(p0[Qe]=tt,delete Hi[Qe],e0.hasOwnProperty(Qe)){var fn=e0[Qe];delete e0[Qe],fn.forEach(Bn=>Bn())}}function ga(Qe,tt,xt,Kt,fn){var Bn=xi(xt);tt=k0(tt),jo(Qe,{name:tt,fromWireType:function(dt){return!!dt},toWireType:function(dt,tn){return tn?Kt:fn},argPackAdvance:8,readValueFromPointer:function(dt){var tn;if(xt===1)tn=qe;else if(xt===2)tn=wt;else if(xt===4)tn=qt;else throw new TypeError("Unknown boolean type size: "+tt);return this.fromWireType(tn[dt>>Bn])},destructorFunction:null})}function Ma(Qe){if(!(this instanceof us)||!(Qe instanceof us))return!1;for(var tt=this.$$.ptrType.registeredClass,xt=this.$$.ptr,Kt=Qe.$$.ptrType.registeredClass,fn=Qe.$$.ptr;tt.baseClass;)xt=tt.upcast(xt),tt=tt.baseClass;for(;Kt.baseClass;)fn=Kt.upcast(fn),Kt=Kt.baseClass;return tt===Kt&&xt===fn}function Co(Qe){return{count:Qe.count,deleteScheduled:Qe.deleteScheduled,preservePointerOnDelete:Qe.preservePointerOnDelete,ptr:Qe.ptr,ptrType:Qe.ptrType,smartPtr:Qe.smartPtr,smartPtrType:Qe.smartPtrType}}function ls(Qe){function tt(xt){return xt.$$.ptrType.registeredClass.name}Yi(tt(Qe)+" instance already deleted")}var pn=!1;function yr(Qe){}function Fn(Qe){Qe.smartPtr?Qe.smartPtrType.rawDestructor(Qe.smartPtr):Qe.ptrType.registeredClass.rawDestructor(Qe.ptr)}function Mn(Qe){Qe.count.value-=1;var tt=Qe.count.value===0;tt&&Fn(Qe)}function Sr(Qe,tt,xt){if(tt===xt)return Qe;if(xt.baseClass===void 0)return null;var Kt=Sr(Qe,tt,xt.baseClass);return Kt===null?null:xt.downcast(Kt)}var Ar={};function Lr(){return Object.keys(yi).length}function qr(){var Qe=[];for(var tt in yi)yi.hasOwnProperty(tt)&&Qe.push(yi[tt]);return Qe}var Vr=[];function Si(){for(;Vr.length;){var Qe=Vr.pop();Qe.$$.deleteScheduled=!1,Qe.delete()}}var Ui=void 0;function S0(Qe){Ui=Qe,Vr.length&&Ui&&Ui(Si)}function i0(){c.getInheritedInstanceCount=Lr,c.getLiveInheritedInstances=qr,c.flushPendingDeletes=Si,c.setDelayFunction=S0}var yi={};function L0(Qe,tt){for(tt===void 0&&Yi("ptr should not be undefined");Qe.baseClass;)tt=Qe.upcast(tt),Qe=Qe.baseClass;return tt}function Z0(Qe,tt){return tt=L0(Qe,tt),yi[tt]}function oo(Qe,tt){(!tt.ptrType||!tt.ptr)&&t0("makeClassHandle requires ptr and ptrType");var xt=!!tt.smartPtrType,Kt=!!tt.smartPtr;return xt!==Kt&&t0("Both smartPtrType and smartPtr must be specified"),tt.count={value:1},Bo(Object.create(Qe,{$$:{value:tt}}))}function _o(Qe){var tt=this.getPointee(Qe);if(!tt)return this.destructor(Qe),null;var xt=Z0(this.registeredClass,tt);if(xt!==void 0){if(xt.$$.count.value===0)return xt.$$.ptr=tt,xt.$$.smartPtr=Qe,xt.clone();var Kt=xt.clone();return this.destructor(Qe),Kt}function fn(){return this.isSmartPointer?oo(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:tt,smartPtrType:this,smartPtr:Qe}):oo(this.registeredClass.instancePrototype,{ptrType:this,ptr:Qe})}var Bn=this.registeredClass.getActualType(tt),dt=Ar[Bn];if(!dt)return fn.call(this);var tn;this.isConst?tn=dt.constPointerType:tn=dt.pointerType;var t=Sr(tt,this.registeredClass,tn.registeredClass);return t===null?fn.call(this):this.isSmartPointer?oo(tn.registeredClass.instancePrototype,{ptrType:tn,ptr:t,smartPtrType:this,smartPtr:Qe}):oo(tn.registeredClass.instancePrototype,{ptrType:tn,ptr:t})}function Bo(Qe){return typeof FinalizationRegistry>"u"?(Bo=tt=>tt,Qe):(pn=new FinalizationRegistry(tt=>{Mn(tt.$$)}),Bo=tt=>{var xt=tt.$$,Kt=!!xt.smartPtr;if(Kt){var fn={$$:xt};pn.register(tt,fn,tt)}return tt},yr=tt=>pn.unregister(tt),Bo(Qe))}function xo(){if(this.$$.ptr||ls(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var Qe=Bo(Object.create(Object.getPrototypeOf(this),{$$:{value:Co(this.$$)}}));return Qe.$$.count.value+=1,Qe.$$.deleteScheduled=!1,Qe}function Js(){this.$$.ptr||ls(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Yi("Object already scheduled for deletion"),yr(this),Mn(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ts(){return!this.$$.ptr}function L2(){return this.$$.ptr||ls(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Yi("Object already scheduled for deletion"),Vr.push(this),Vr.length===1&&Ui&&Ui(Si),this.$$.deleteScheduled=!0,this}function Zs(){us.prototype.isAliasOf=Ma,us.prototype.clone=xo,us.prototype.delete=Js,us.prototype.isDeleted=Ts,us.prototype.deleteLater=L2}function us(){}function N2(Qe,tt,xt){if(Qe[tt].overloadTable===void 0){var Kt=Qe[tt];Qe[tt]=function(){return Qe[tt].overloadTable.hasOwnProperty(arguments.length)||Yi("Function '"+xt+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+Qe[tt].overloadTable+")!"),Qe[tt].overloadTable[arguments.length].apply(this,arguments)},Qe[tt].overloadTable=[],Qe[tt].overloadTable[Kt.argCount]=Kt}}function Rl(Qe,tt,xt){c.hasOwnProperty(Qe)?(Yi("Cannot register public name '"+Qe+"' twice"),N2(c,Qe,Qe),c.hasOwnProperty(xt)&&Yi("Cannot register multiple overloads of a function with the same number of arguments ("+xt+")!"),c[Qe].overloadTable[xt]=tt):c[Qe]=tt}function k1(Qe,tt,xt,Kt,fn,Bn,dt,tn){this.name=Qe,this.constructor=tt,this.instancePrototype=xt,this.rawDestructor=Kt,this.baseClass=fn,this.getActualType=Bn,this.upcast=dt,this.downcast=tn,this.pureVirtualFunctions=[]}function y1(Qe,tt,xt){for(;tt!==xt;)tt.upcast||Yi("Expected null or instance of "+xt.name+", got an instance of "+tt.name),Qe=tt.upcast(Qe),tt=tt.baseClass;return Qe}function Pa(Qe,tt){if(tt===null)return this.isReference&&Yi("null is not a valid "+this.name),0;tt.$$||Yi('Cannot pass "'+_1(tt)+'" as a '+this.name),tt.$$.ptr||Yi("Cannot pass deleted object as a pointer of type "+this.name);var xt=tt.$$.ptrType.registeredClass,Kt=y1(tt.$$.ptr,xt,this.registeredClass);return Kt}function Ra(Qe,tt){var xt;if(tt===null)return this.isReference&&Yi("null is not a valid "+this.name),this.isSmartPointer?(xt=this.rawConstructor(),Qe!==null&&Qe.push(this.rawDestructor,xt),xt):0;tt.$$||Yi('Cannot pass "'+_1(tt)+'" as a '+this.name),tt.$$.ptr||Yi("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&tt.$$.ptrType.isConst&&Yi("Cannot convert argument of type "+(tt.$$.smartPtrType?tt.$$.smartPtrType.name:tt.$$.ptrType.name)+" to parameter type "+this.name);var Kt=tt.$$.ptrType.registeredClass;if(xt=y1(tt.$$.ptr,Kt,this.registeredClass),this.isSmartPointer)switch(tt.$$.smartPtr===void 0&&Yi("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:tt.$$.smartPtrType===this?xt=tt.$$.smartPtr:Yi("Cannot convert argument of type "+(tt.$$.smartPtrType?tt.$$.smartPtrType.name:tt.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:xt=tt.$$.smartPtr;break;case 2:if(tt.$$.smartPtrType===this)xt=tt.$$.smartPtr;else{var fn=tt.clone();xt=this.rawShare(xt,La.toHandle(function(){fn.delete()})),Qe!==null&&Qe.push(this.rawDestructor,xt)}break;default:Yi("Unsupporting sharing policy")}return xt}function pa(Qe,tt){if(tt===null)return this.isReference&&Yi("null is not a valid "+this.name),0;tt.$$||Yi('Cannot pass "'+_1(tt)+'" as a '+this.name),tt.$$.ptr||Yi("Cannot pass deleted object as a pointer of type "+this.name),tt.$$.ptrType.isConst&&Yi("Cannot convert argument of type "+tt.$$.ptrType.name+" to parameter type "+this.name);var xt=tt.$$.ptrType.registeredClass,Kt=y1(tt.$$.ptr,xt,this.registeredClass);return Kt}function Es(Qe){return this.rawGetPointee&&(Qe=this.rawGetPointee(Qe)),Qe}function ma(Qe){this.rawDestructor&&this.rawDestructor(Qe)}function a2(Qe){Qe!==null&&Qe.delete()}function Ds(){W0.prototype.getPointee=Es,W0.prototype.destructor=ma,W0.prototype.argPackAdvance=8,W0.prototype.readValueFromPointer=vi,W0.prototype.deleteObject=a2,W0.prototype.fromWireType=_o}function W0(Qe,tt,xt,Kt,fn,Bn,dt,tn,t,xe,Qn){this.name=Qe,this.registeredClass=tt,this.isReference=xt,this.isConst=Kt,this.isSmartPointer=fn,this.pointeeType=Bn,this.sharingPolicy=dt,this.rawGetPointee=tn,this.rawConstructor=t,this.rawShare=xe,this.rawDestructor=Qn,!fn&&tt.baseClass===void 0?Kt?(this.toWireType=Pa,this.destructorFunction=null):(this.toWireType=pa,this.destructorFunction=null):this.toWireType=Ra}function w1(Qe,tt,xt){c.hasOwnProperty(Qe)||t0("Replacing nonexistant public symbol"),c[Qe].overloadTable!==void 0&&xt!==void 0||(c[Qe]=tt,c[Qe].argCount=xt)}function gs(Qe,tt,xt){var Kt=c["dynCall_"+Qe];return xt&&xt.length?Kt.apply(null,[tt].concat(xt)):Kt.call(null,tt)}var zo=[];function Eo(Qe){var tt=zo[Qe];return tt||(Qe>=zo.length&&(zo.length=Qe+1),zo[Qe]=tt=et.get(Qe)),tt}function l2(Qe,tt,xt){if(Qe.includes("j"))return gs(Qe,tt,xt);var Kt=Eo(tt).apply(null,xt);return Kt}function Do(Qe,tt){var xt=[];return function(){return xt.length=0,Object.assign(xt,arguments),l2(Qe,tt,xt)}}function Ho(Qe,tt){Qe=k0(Qe);function xt(){return Qe.includes("j")?Do(Qe,tt):Eo(tt)}var Kt=xt();return typeof Kt!="function"&&Yi("unknown function pointer with signature "+Qe+": "+tt),Kt}var q2=void 0;function Ka(Qe){var tt=ht(Qe),xt=k0(tt);return at(tt),xt}function w2(Qe,tt){var xt=[],Kt={};function fn(Bn){if(!Kt[Bn]&&!p0[Bn]){if(Hi[Bn]){Hi[Bn].forEach(fn);return}xt.push(Bn),Kt[Bn]=!0}}throw tt.forEach(fn),new q2(Qe+": "+xt.map(Ka).join([", "]))}function co(Qe,tt,xt,Kt,fn,Bn,dt,tn,t,xe,Qn,ln,Ue){Qn=k0(Qn),Bn=Ho(fn,Bn),tn&&(tn=Ho(dt,tn)),xe&&(xe=Ho(t,xe)),Ue=Ho(ln,Ue);var mr=uo(Qn);Rl(mr,function(){w2("Cannot construct "+Qn+" due to unbound types",[Kt])}),Mo([Qe,tt,xt],Kt?[Kt]:[],function(De){De=De[0];var Ye,Rr;Kt?(Ye=De.registeredClass,Rr=Ye.instancePrototype):Rr=us.prototype;var ri=Yn(mr,function(){if(Object.getPrototypeOf(this)!==R1)throw new r0("Use 'new' to construct "+Qn);if(ps.constructor_body===void 0)throw new r0(Qn+" has no accessible constructor");var te=ps.constructor_body[arguments.length];if(te===void 0)throw new r0("Tried to invoke ctor of "+Qn+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ps.constructor_body).toString()+") parameters instead!");return te.apply(this,arguments)}),R1=Object.create(Rr,{constructor:{value:ri}});ri.prototype=R1;var ps=new k1(Qn,ri,R1,Ue,Ye,Bn,tn,xe),F=new W0(Qn,ps,!0,!1,!1),He=new W0(Qn+"*",ps,!1,!1,!1),r=new W0(Qn+" const*",ps,!1,!0,!1);return Ar[Qe]={pointerType:He,constPointerType:r},w1(mr,ri),[F,He,r]})}function C2(Qe,tt){for(var xt=[],Kt=0;Kt>2]);return xt}function rs(Qe,tt){if(!(Qe instanceof Function))throw new TypeError("new_ called with constructor type "+typeof Qe+" which is not a function");var xt=Yn(Qe.name||"unknownFunctionName",function(){});xt.prototype=Qe.prototype;var Kt=new xt,fn=Qe.apply(Kt,tt);return fn instanceof Object?fn:Kt}function Ko(Qe,tt,xt,Kt,fn){var Bn=tt.length;Bn<2&&Yi("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var dt=tt[1]!==null&&xt!==null,tn=!1,t=1;t0?", ":"")+ln),Ue+=(xe?"var rv = ":"")+"invoker(fn"+(ln.length>0?", ":"")+ln+`); +`,tn)Ue+=`runDestructors(destructors); +`;else for(var t=dt?1:2;t0);var dt=C2(tt,xt);fn=Ho(Kt,fn),Mo([],[Qe],function(tn){tn=tn[0];var t="constructor "+tn.name;if(tn.registeredClass.constructor_body===void 0&&(tn.registeredClass.constructor_body=[]),tn.registeredClass.constructor_body[tt-1]!==void 0)throw new r0("Cannot register multiple constructors with identical number of parameters ("+(tt-1)+") for class '"+tn.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return tn.registeredClass.constructor_body[tt-1]=()=>{w2("Cannot construct "+tn.name+" due to unbound types",dt)},Mo([],dt,function(xe){return xe.splice(1,0,null),tn.registeredClass.constructor_body[tt-1]=Ko(t,xe,null,fn,Bn),[]}),[]})}function Is(Qe,tt,xt,Kt,fn,Bn,dt,tn){var t=C2(xt,Kt);tt=k0(tt),Bn=Ho(fn,Bn),Mo([],[Qe],function(xe){xe=xe[0];var Qn=xe.name+"."+tt;tt.startsWith("@@")&&(tt=Symbol[tt.substring(2)]),tn&&xe.registeredClass.pureVirtualFunctions.push(tt);function ln(){w2("Cannot call "+Qn+" due to unbound types",t)}var Ue=xe.registeredClass.instancePrototype,mr=Ue[tt];return mr===void 0||mr.overloadTable===void 0&&mr.className!==xe.name&&mr.argCount===xt-2?(ln.argCount=xt-2,ln.className=xe.name,Ue[tt]=ln):(N2(Ue,tt,Qn),Ue[tt].overloadTable[xt-2]=ln),Mo([],t,function(De){var Ye=Ko(Qn,De,xe,Bn,dt);return Ue[tt].overloadTable===void 0?(Ye.argCount=xt-2,Ue[tt]=Ye):Ue[tt].overloadTable[xt-2]=Ye,[]}),[]})}var Os=[],So=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Aa(Qe){Qe>4&&--So[Qe].refcount===0&&(So[Qe]=void 0,Os.push(Qe))}function va(){for(var Qe=0,tt=5;tt(Qe||Yi("Cannot use deleted val. handle = "+Qe),So[Qe].value),toHandle:Qe=>{switch(Qe){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var tt=Os.length?Os.pop():So.length;return So[tt]={refcount:1,value:Qe},tt}}}};function C1(Qe,tt){tt=k0(tt),jo(Qe,{name:tt,fromWireType:function(xt){var Kt=La.toValue(xt);return Aa(xt),Kt},toWireType:function(xt,Kt){return La.toHandle(Kt)},argPackAdvance:8,readValueFromPointer:vi,destructorFunction:null})}function _1(Qe){if(Qe===null)return"null";var tt=typeof Qe;return tt==="object"||tt==="array"||tt==="function"?Qe.toString():""+Qe}function tl(Qe,tt){switch(tt){case 2:return function(xt){return this.fromWireType(Jt[xt>>2])};case 3:return function(xt){return this.fromWireType(Dn[xt>>3])};default:throw new TypeError("Unknown float type: "+Qe)}}function F2(Qe,tt,xt){var Kt=xi(xt);tt=k0(tt),jo(Qe,{name:tt,fromWireType:function(fn){return fn},toWireType:function(fn,Bn){return Bn},argPackAdvance:8,readValueFromPointer:tl(tt,Kt),destructorFunction:null})}function nl(Qe,tt,xt){switch(tt){case 0:return xt?function(fn){return qe[fn]}:function(fn){return ut[fn]};case 1:return xt?function(fn){return wt[fn>>1]}:function(fn){return Et[fn>>1]};case 2:return xt?function(fn){return qt[fn>>2]}:function(fn){return $t[fn>>2]};default:throw new TypeError("Unknown integer type: "+Qe)}}function x1(Qe,tt,xt,Kt,fn){tt=k0(tt);var Bn=xi(xt),dt=ln=>ln;if(Kt===0){var tn=32-8*xt;dt=ln=>ln<>>tn}var t=tt.includes("unsigned"),xe=(ln,Ue)=>{},Qn;t?Qn=function(ln,Ue){return xe(Ue,this.name),Ue>>>0}:Qn=function(ln,Ue){return xe(Ue,this.name),Ue},jo(Qe,{name:tt,fromWireType:dt,toWireType:Qn,argPackAdvance:8,readValueFromPointer:nl(tt,Bn,Kt!==0),destructorFunction:null})}function rl(Qe,tt,xt){var Kt=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],fn=Kt[tt];function Bn(dt){dt=dt>>2;var tn=$t,t=tn[dt],xe=tn[dt+1];return new fn(Ke,xe,t)}xt=k0(xt),jo(Qe,{name:xt,fromWireType:Bn,argPackAdvance:8,readValueFromPointer:Bn},{ignoreDuplicateRegistrations:!0})}function Al(Qe,tt){tt=k0(tt);var xt=tt==="std::string";jo(Qe,{name:tt,fromWireType:function(Kt){var fn=$t[Kt>>2],Bn=Kt+4,dt;if(xt)for(var tn=Bn,t=0;t<=fn;++t){var xe=Bn+t;if(t==fn||ut[xe]==0){var Qn=xe-tn,ln=je(tn,Qn);dt===void 0?dt=ln:(dt+="\0",dt+=ln),tn=xe+1}}else{for(var Ue=new Array(fn),t=0;t>2]=Bn,xt&&dt)it(fn,t,Bn+1);else if(dt)for(var xe=0;xe255&&(at(t),Yi("String has UTF-16 code units that do not fit in 8 bits")),ut[t+xe]=Qn}else for(var xe=0;xe>1,fn=Kt+tt/2;!(Kt>=fn)&&Et[Kt];)++Kt;if(xt=Kt<<1,xt-Qe>32&&S1)return S1.decode(ut.subarray(Qe,xt));for(var Bn="",dt=0;!(dt>=tt/2);++dt){var tn=wt[Qe+dt*2>>1];if(tn==0)break;Bn+=String.fromCharCode(tn)}return Bn}function Nl(Qe,tt,xt){if(xt===void 0&&(xt=2147483647),xt<2)return 0;xt-=2;for(var Kt=tt,fn=xt>1]=dt,tt+=2}return wt[tt>>1]=0,tt-Kt}function bl(Qe){return Qe.length*2}function Fl(Qe,tt){for(var xt=0,Kt="";!(xt>=tt/4);){var fn=qt[Qe+xt*4>>2];if(fn==0)break;if(++xt,fn>=65536){var Bn=fn-65536;Kt+=String.fromCharCode(55296|Bn>>10,56320|Bn&1023)}else Kt+=String.fromCharCode(fn)}return Kt}function il(Qe,tt,xt){if(xt===void 0&&(xt=2147483647),xt<4)return 0;for(var Kt=tt,fn=Kt+xt-4,Bn=0;Bn=55296&&dt<=57343){var tn=Qe.charCodeAt(++Bn);dt=65536+((dt&1023)<<10)|tn&1023}if(qt[tt>>2]=dt,tt+=4,tt+4>fn)break}return qt[tt>>2]=0,tt-Kt}function Vl(Qe){for(var tt=0,xt=0;xt=55296&&Kt<=57343&&++xt,tt+=4}return tt}function ol(Qe,tt,xt){xt=k0(xt);var Kt,fn,Bn,dt,tn;tt===2?(Kt=Ll,fn=Nl,dt=bl,Bn=()=>Et,tn=1):tt===4&&(Kt=Fl,fn=il,dt=Vl,Bn=()=>$t,tn=2),jo(Qe,{name:xt,fromWireType:function(t){for(var xe=$t[t>>2],Qn=Bn(),ln,Ue=t+4,mr=0;mr<=xe;++mr){var De=t+4+mr*tt;if(mr==xe||Qn[De>>tn]==0){var Ye=De-Ue,Rr=Kt(Ue,Ye);ln===void 0?ln=Rr:(ln+="\0",ln+=Rr),Ue=De+tt}}return at(t),ln},toWireType:function(t,xe){typeof xe!="string"&&Yi("Cannot pass non-string to C++ string type "+xt);var Qn=dt(xe),ln=Wn(4+Qn+tt);return $t[ln>>2]=Qn>>tn,fn(xe,ln+4,Qn+tt),t!==null&&t.push(at,ln),ln},argPackAdvance:8,readValueFromPointer:vi,destructorFunction:function(t){at(t)}})}function sl(Qe,tt,xt,Kt,fn,Bn){Kr[Qe]={name:k0(tt),rawConstructor:Ho(xt,Kt),rawDestructor:Ho(fn,Bn),fields:[]}}function Ul(Qe,tt,xt,Kt,fn,Bn,dt,tn,t,xe){Kr[Qe].fields.push({fieldName:k0(tt),getterReturnType:xt,getter:Ho(Kt,fn),getterContext:Bn,setterArgumentType:dt,setter:Ho(tn,t),setterContext:xe})}function T1(Qe,tt){tt=k0(tt),jo(Qe,{isVoid:!0,name:tt,argPackAdvance:0,fromWireType:function(){},toWireType:function(xt,Kt){}})}function E1(){throw 1/0}var al={};function X2(Qe){var tt=al[Qe];return tt===void 0?k0(Qe):tt}function D1(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function ll(Qe){return Qe===0?La.toHandle(D1()):(Qe=X2(Qe),La.toHandle(D1()[Qe]))}function I1(Qe){Qe>4&&(So[Qe].refcount+=1)}function O1(Qe,tt){var xt=p0[Qe];return xt===void 0&&Yi(tt+" has unknown type "+Ka(Qe)),xt}function ul(Qe){for(var tt="",xt=0;xt$t,fn="return function emval_allocator_"+Qe+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,xt=0;xt>2)], 'parameter "+xt+`'); +var arg`+xt+" = argType"+xt+`.readValueFromPointer(args); +args += argType`+xt+`['argPackAdvance']; +argTypes += 4; +`;return fn+="var obj = new constructor("+tt+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",fn)(O1,c,La.toHandle,Kt)}var cl={};function Bl(Qe,tt,xt,Kt){Qe=La.toValue(Qe);var fn=cl[tt];return fn||(fn=ul(tt),cl[tt]=fn),fn(Qe,xt,Kt)}function Gl(Qe,tt){Qe=O1(Qe,"_emval_take_value");var xt=Qe.readValueFromPointer(tt);return La.toHandle(xt)}function Y2(){Bt("")}function M1(Qe,tt,xt){ut.copyWithin(Qe,tt,tt+xt)}function u2(){return 2147483648}function _2(Qe){try{return pe.grow(Qe-Ke.byteLength+65535>>>16),Nn(pe.buffer),1}catch{}}function Na(Qe){var tt=ut.length;Qe=Qe>>>0;var xt=u2();if(Qe>xt)return!1;let Kt=(t,xe)=>t+(xe-t%xe)%xe;for(var fn=1;fn<=4;fn*=2){var Bn=tt*(1+.2/fn);Bn=Math.min(Bn,Qe+100663296);var dt=Math.min(xt,Kt(Math.max(Qe,Bn),65536)),tn=_2(dt);if(tn)return!0}return!1}var x2={};function J2(){return T||"./this.program"}function Ws(){if(!Ws.strings){var Qe=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",tt={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:Qe,_:J2()};for(var xt in x2)x2[xt]===void 0?delete tt[xt]:tt[xt]=x2[xt];var Kt=[];for(var xt in tt)Kt.push(xt+"="+tt[xt]);Ws.strings=Kt}return Ws.strings}function ka(Qe,tt,xt){for(var Kt=0;Kt>0]=Qe.charCodeAt(Kt);qe[tt>>0]=0}function V2(Qe,tt){var xt=0;return Ws().forEach(function(Kt,fn){var Bn=tt+xt;$t[Qe+fn*4>>2]=Bn,ka(Kt,Bn),xt+=Kt.length+1}),0}function P1(Qe,tt){var xt=Ws();$t[Qe>>2]=xt.length;var Kt=0;return xt.forEach(function(fn){Kt+=fn.length+1}),$t[tt>>2]=Kt,0}function Tt(Qe){P(Qe,new Cr(Qe))}function It(Qe,tt){Tt(Qe)}var dn=It;function qn(Qe){return 52}function cr(Qe,tt,xt,Kt,fn){return 70}var ft=[null,[],[]];function gt(Qe,tt){var xt=ft[Qe];tt===0||tt===10?((Qe===1?ne:le)(Pe(xt,0)),xt.length=0):xt.push(tt)}function Ft(Qe,tt,xt,Kt){for(var fn=0,Bn=0;Bn>2],tn=$t[tt+4>>2];tt+=8;for(var t=0;t>2]=fn,0}function sn(Qe){var tt=c["_"+Qe];return tt}function Sn(Qe,tt){qe.set(Qe,tt)}function Xn(Qe,tt,xt,Kt,fn){var Bn={string:De=>{var Ye=0;if(De!=null&&De!==0){var Rr=(De.length<<2)+1;Ye=dr(Rr),it(De,Ye,Rr)}return Ye},array:De=>{var Ye=dr(De.length);return Sn(De,Ye),Ye}};function dt(De){return tt==="string"?je(De):tt==="boolean"?!!De:De}var tn=sn(Qe),t=[],xe=0;if(Kt)for(var Qn=0;Qn{fn.byteLength&&(fn=new Uint8Array(fn)),ut.set(fn,1024),c.memoryInitializerRequest&&delete c.memoryInitializerRequest.response,gn()},xt=()=>{$(rn,tt,function(){var fn=new Error("could not load memory initializer "+rn);v(fn)})};if(c.memoryInitializerRequest){var Kt=()=>{var fn=c.memoryInitializerRequest,Bn=fn.response;if(fn.status!==200&&fn.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+fn.status+", retrying "+rn),xt();return}tt(Bn)};c.memoryInitializerRequest.response?setTimeout(Kt,0):c.memoryInitializerRequest.addEventListener("load",Kt)}else xt()}}var Qt;Dt=function Qe(){Qt||Ae(),Qt||(Dt=Qe)};function Ae(Qe){if(Kn>0||(yt(),Kn>0))return;function tt(){Qt||(Qt=!0,c.calledRun=!0,!we&&(St(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Pt()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),tt()},1)):tt()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return Ae(),l.ready}})();n.exports=o})(wEe);var CEe={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(ft,gt){g=ft,v=gt});var _=Object.assign({},c),T=typeof window=="object",P=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",R=!T&&!I&&!P,L="";function V(ft){return c.locateFile?c.locateFile(ft,L):L+ft}var U,j,z;if(I){var $=p1,K=p1;P?L=K.dirname(L)+"/":L=__dirname+"/",U=(ft,gt)=>(ft=rn(ft)?new URL(ft):K.normalize(ft),$.readFileSync(ft,gt?void 0:"utf8")),z=ft=>{var gt=U(ft,!0);return gt.buffer||(gt=new Uint8Array(gt)),gt},j=(ft,gt,Ft)=>{ft=rn(ft)?new URL(ft):K.normalize(ft),$.readFile(ft,function(sn,Sn){sn?Ft(sn):gt(Sn.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(ft){if(!(ft instanceof jr))throw ft}),process.on("unhandledRejection",function(ft){throw ft}),c.inspect=function(){return"[Emscripten Module object]"}}else(T||P)&&(P?L=self.location.href:typeof document<"u"&&document.currentScript&&(L=document.currentScript.src),i&&(L=i),L.indexOf("blob:")!==0?L=L.substr(0,L.replace(/[?#].*/,"").lastIndexOf("/")+1):L="",U=ft=>{var gt=new XMLHttpRequest;return gt.open("GET",ft,!1),gt.send(null),gt.responseText},P&&(z=ft=>{var gt=new XMLHttpRequest;return gt.open("GET",ft,!1),gt.responseType="arraybuffer",gt.send(null),new Uint8Array(gt.response)}),j=(ft,gt,Ft)=>{var sn=new XMLHttpRequest;sn.open("GET",ft,!0),sn.responseType="arraybuffer",sn.onload=()=>{if(sn.status==200||sn.status==0&&sn.response){gt(sn.response);return}Ft()},sn.onerror=Ft,sn.send(null)});c.print||console.log.bind(console);var X=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&c.thisProgram,c.quit&&c.quit;var ee;c.wasmBinary&&(ee=c.wasmBinary),c.noExitRuntime;var ne={Memory:function(ft){this.buffer=new ArrayBuffer(ft.initial*65536)},Module:function(ft){},Instance:function(ft,gt){this.exports=function(sn){function Sn(ot){return ot.set=function(nt,Fe){this[nt]=Fe},ot.get=function(nt){return this[nt]},ot}var Xn=new ArrayBuffer(16),tr=new Int32Array(Xn),Wn=new Float64Array(Xn);function at(ot){return tr[ot]}function ht(ot,nt){tr[ot]=nt}function zt(){return Wn[0]}function kn(ot){Wn[0]=ot}function _t(){throw new Error("abort")}function dr(ot){var nt=ot.a,Fe=nt.a,ze=Fe.buffer;Fe.grow=lr;var oe=new Int8Array(ze),ke=new Int16Array(ze),s=new Int32Array(ze),de=new Uint8Array(ze),Re=new Uint16Array(ze),bt=new Uint32Array(ze),Qt=new Float64Array(ze),Ae=Math.imul,Qe=Math.abs,tt=Math.clz32,xt=nt.b,Kt=nt.c,fn=nt.d,Bn=nt.e,dt=nt.f,tn=nt.g,t=nt.h,xe=nt.i,Qn=nt.j,ln=nt.k,Ue=nt.l,mr=nt.m,De=nt.n,Ye=nt.o,Rr=nt.p,ri=nt.q,R1=nt.r,ps=nt.s,F=nt.t,He=nt.u,r=nt.v,te=nt.w,En=nt.x,ni=nt.y,or=nt.z,In=115056,Ce=0;function On(f){f=f|0;var w=0,N=0,k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0;W=In-128|0,In=W,E=Gn(124),E&&(fr(E+56|0,0,68),oe[E+45|0]=0,oe[E+46|0]=0,oe[E+47|0]=0,oe[E+48|0]=0,oe[E+49|0]=0,oe[E+50|0]=0,oe[E+51|0]=0,oe[E+52|0]=0,s[E+40>>2]=0,s[E+44>>2]=0,s[E+32>>2]=0,s[E+36>>2]=0,s[E+24>>2]=0,s[E+28>>2]=0,s[E+16>>2]=0,s[E+20>>2]=0,s[E+8>>2]=0,s[E+12>>2]=0,s[E>>2]=0,s[E+4>>2]=0);e:{t:{n:{r:{i:{a:{if(E){if(s[W+112>>2]=0,s[W+88>>2]=0,s[W+20>>2]=0,s[W+24>>2]=0,s[W+28>>2]=0,s[W+32>>2]=0,s[W+36>>2]=0,s[W+40>>2]=0,s[W+44>>2]=0,s[W+48>>2]=0,s[W+52>>2]=0,s[W+56>>2]=0,s[W+60>>2]=0,s[W+64>>2]=0,oe[W+8|0]=0,s[W+4>>2]=27,s[W>>2]=E,s[W+12>>2]=0,s[W+16>>2]=0,N=In-16|0,In=N,s[E>>2])break e;w=s[f>>2],s[N+12>>2]=s[f+4>>2]-w,s[N+8>>2]=w,w=s[N+12>>2],s[N>>2]=s[N+8>>2],s[N+4>>2]=w,w=s[N>>2],s[E+4>>2]=w,s[E+8>>2]=w+s[N+4>>2],s[E>>2]=1,In=N+16|0,s[W+120>>2]=0,de[49489]||(oe[49489]=1),s[W+124>>2]=14720;s:{if(k=s[W>>2],w=s[k>>2],w-1>>>0<3){if((w|0)!=3)o:{u:{if(ye=k+4|0,!s[ye+100>>2]){if(w=s[ye>>2],E=s[ye+4>>2],(w|0)==(E|0))break t;if(N=de[w|0],w=w+1|0,s[ye>>2]=w,(N|0)!=255)break r;for(;;){if((w|0)==(E|0))break t;if(N=de[w|0],w=w+1|0,s[ye>>2]=w,(N|0)!=255)break}if((N|0)!=216)break u;E=s[ye+88>>2];l:{if(s[ye+96>>2]-E>>>0>3||(N=s[ye+92>>2]-E|0,w=ea(Gn(4),E,N),s[ye+96>>2]=w+4,s[ye+92>>2]=w+N,s[ye+88>>2]=w,!E))break l;Gr(E)}s[ye+100>>2]=1}if(w=s[ye>>2],E=s[ye+4>>2],(w|0)!=(E|0))for(;;){N=de[w|0],w=w+1|0,s[ye>>2]=w;l:{h:{f:{if((N|0)==255){for(;;){if((w|0)==(E|0))break t;if(ue=de[w|0],w=w+1|0,s[ye>>2]=w,(ue|0)!=255)break}if(Df(ye,ue),be=s[ye>>2],E=be+2|0,N=s[ye+4>>2],E>>>0>N>>>0)break t;if(w=de[be|0]|de[be+1|0]<<8,s[ye+8>>2]=E,s[ye>>2]=E,w=(w<<8|w>>>8)&65535,E=w-2|0,s[ye+12>>2]=E,w>>>0<2||(w=w+be|0,N>>>0>>0))break n;if(s[ye+100>>2]==2){if((ue|0)!=232)break f;if(E>>>0<=3)break n;if(N=de[be+2|0]|de[be+3|0]<<8|(de[be+4|0]<<16|de[be+5|0]<<24),s[ye>>2]=be+6,(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))==1){if((E|0)!=6)break n;s[ye+100>>2]=3}s[ye>>2]=w;break l}if(hu(ye,ue),s[ye+100>>2]!=6)break l;if(!s[ye+20>>2])break h;if(s[ye+16>>2])break o;Vn(200),_t()}break r}Vn(24),_t()}Vn(2),_t()}if(w=s[ye>>2],E=s[ye+4>>2],(w|0)==(E|0))break}break t}Vn(15),_t()}s[k>>2]=4;break s}break e}de[14773]||(oe[14773]=1),s[W+124>>2]=14708,s[W+120>>2]=0,de[14773]||(oe[14773]=1);s:{if(s[W+120>>2]|s[W+124>>2]!=14708)break s;if(k=s[W>>2],s[k>>2]<=3)break e;if(E=s[k+20>>2],N=s[k+24>>2],w=s[k+32>>2],s[W+60>>2]=s[k+28>>2],s[W+64>>2]=w,s[W+52>>2]=E,s[W+56>>2]=N,de[14773]||(oe[14773]=1),s[W+124>>2]=14708,s[W+120>>2]=0,de[14773]||(oe[14773]=1),!de[W+8|0]|(s[W+120>>2]|s[W+124>>2]!=14708))break s;E=29;o:{if(!s[W+44>>2]|(s[W+12>>2]|s[W+36>>2]!=6|(!s[W+48>>2]|bt[W+40>>2]>2))||(w=s[W+16>>2],(w|0)!=s[W+64>>2]))break o;u:{l:switch(s[W+28>>2]-1|0){case 0:case 2:case 3:case 8:case 9:case 10:case 13:if((w|0)==3)break u;break o;case 11:case 12:if((w|0)==4)break u;break o;case 1:break u;case 7:break l;default:break o}if((w|0)!=1)break o}if(s[W+32>>2]!=s[W+60>>2]|s[W+20>>2]!=s[W+56>>2])break o;E=s[W+24>>2]!=s[W+52>>2]?29:0}de[14773]||(oe[14773]=1),s[W+124>>2]=14708,s[W+120>>2]=E}if(w=s[W+120>>2],w)break i;if(w=s[W>>2],s[w>>2]<=3||(s[W+120>>2]=s[w+36>>2],s[f+36>>2]=s[W+120>>2],w=s[W>>2],s[w>>2]<=3))break e;s[W+120>>2]=s[w+44>>2],s[f+32>>2]=s[W+120>>2],E=s[W+56>>2],N=s[W+60>>2],w=s[W+52>>2],oe[f+29|0]=s[W- -64>>2],oe[f+28|0]=N,ke[f+26>>1]=E,ke[f+24>>1]=w;s:{o:{if(ue=s[W>>2],s[ue>>2]>3){if(N=s[ue+32>>2],w=s[ue+24>>2],k=Ae(N,w),k>>>0>>0|w>>>0>k>>>0||(w=s[ue+20>>2],E=Ae(k,w),k>>>0>E>>>0|w>>>0>E>>>0)||(w=(s[ue+28>>2]+7|0)/8|0,N=Ae(E,w),!(E>>>0<=N>>>0&w>>>0<=N>>>0)))break o;break s}break e}Vn(2),_t()}s[W+120>>2]=N,be=s[W+120>>2],w=s[f+16>>2],ue=s[f+12>>2],k=w-ue|0;s:{o:{if(be>>>0>k>>>0){if(E=be-k|0,N=s[f+20>>2],E>>>0<=N-w>>>0){w=fr(w,0,E)+E|0;break o}if((be|0)<0)break a;if(N=N-ue|0,w=N<<1,N=N>>>0>=1073741823?2147483647:w>>>0>be>>>0?w:be,w=Gn(N),fr(w+k|0,0,E),E=N,N=ea(w,ue,k),s[f+20>>2]=E+N,w=N+be|0,s[f+16>>2]=w,s[f+12>>2]=N,!ue)break s;Gr(ue),w=s[f+16>>2];break s}if(k>>>0<=be>>>0)break s;w=ue+be|0}s[f+16>>2]=w}if(pt=In-16|0,In=pt,Wt=s[W>>2],s[Wt>>2]!=4)break e;f=s[f+12>>2],s[pt+12>>2]=w-f,s[pt+8>>2]=f,f=s[pt+12>>2],s[pt>>2]=s[pt+8>>2],s[pt+4>>2]=f,E=In+-64|0,In=E;s:{o:{u:{if(Ee=Wt+4|0,k=s[Ee+28>>2],N=s[Ee+40>>2],!(N&&k-3>>>0>=2)){if(f=s[Ee+16>>2],w=s[Ee+80>>2],(w|0)<=0&&(s[Ee+80>>2]=f,s[Ee+84>>2]=s[Ee+20>>2],w=f),yn=Ae(Ae(w||f,N?k:1),(s[Ee+24>>2]+7|0)/8|0),w=s[pt+4>>2],Xt=Ae(s[Ee+84>>2],yn),nn=N?1:k,w>>>0>>0)break o;if(nn)for(jn=Ee+72|0,J=Ee+32|0,ie=Ee+16|0,ir=Ee+52|0;;){if(s[Ee+100>>2]==5){for(;;){if(k=s[Ee>>2],N=s[Ee+4>>2],(k|0)==(N|0))break t;if(f=de[k|0],k=k+1|0,s[Ee>>2]=k,(f|0)!=255)break r;for(;;){if((k|0)==(N|0))break t;if(be=de[k|0],k=k+1|0,s[Ee>>2]=k,(be|0)!=255)break}if(Df(Ee,be),ue=s[Ee>>2],k=ue+2|0,f=s[Ee+4>>2],k>>>0>f>>>0)break t;if(N=de[ue|0]|de[ue+1|0]<<8,s[Ee+8>>2]=k,s[Ee>>2]=k,N=(N<<8|N>>>8)&65535,s[Ee+12>>2]=N-2,N>>>0<2|f>>>0>>0)break n;if(hu(Ee,be),s[Ee+100>>2]!=5)break}s[pt+4>>2]=w-Xt,s[pt>>2]=s[pt>>2]+Xt}if(!eo(ir,-1<>2]^-1,s[Ee+32>>2],E+32|0))break u;f=0;l:{h:{if(Ct=E+32|0,s[Ct+16>>2]!=64)break h;f:{p:{c:{if(ye=s[J+8>>2],(ye|0)==2){if(w=s[ie+12>>2],w-3>>>0>1)break f;if(rt=s[J>>2],rt)break c;if(f=s[ie+8>>2],!((w|0)!=3|(f|0)!=8)){for(f=Gn(6004),s[f+12>>2]=s[ie+8>>2],w=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=w,s[f+16>>2]=3,w=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=w,w=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=w,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+68>>2]=0,s[f+72>>2]=0,s[f>>2]=7548,s[f+76>>2]=0,s[f+80>>2]=0,w=s[ie>>2],s[f+104>>2]=0,s[f+108>>2]=0,s[f+84>>2]=w,s[f+88>>2]=0,s[f+92>>2]=0,oe[f+93|0]=0,oe[f+94|0]=0,oe[f+95|0]=0,oe[f+96|0]=0,oe[f+97|0]=0,oe[f+98|0]=0,oe[f+99|0]=0,oe[f+100|0]=0,k=f+112|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5952>>2]=0,s[f+5956>>2]=0,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5960>>1]=1,w=f+5976|0;break p}if(rt=0,(w|0)!=4|(f|0)!=8)break c;for(f=Gn(6004),s[f+12>>2]=s[ie+8>>2],w=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=w,s[f+16>>2]=4,w=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=w,w=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=w,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+68>>2]=0,s[f+72>>2]=0,s[f>>2]=7676,s[f+76>>2]=0,s[f+80>>2]=0,w=s[ie>>2],s[f+104>>2]=0,s[f+108>>2]=0,s[f+84>>2]=w,s[f+88>>2]=0,s[f+92>>2]=0,oe[f+93|0]=0,oe[f+94|0]=0,oe[f+95|0]=0,oe[f+96|0]=0,oe[f+97|0]=0,oe[f+98|0]=0,oe[f+99|0]=0,oe[f+100|0]=0,k=f+112|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5952>>2]=0,s[f+5956>>2]=0,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5960>>1]=1,w=f+5976|0;break p}if(rt=s[J>>2],rt)break c;rt=0;m:switch(s[ie+8>>2]-8|0){case 0:for(f=Gn(6004),N=s[ie+12>>2],s[f+12>>2]=s[ie+8>>2],w=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=w,s[f+16>>2]=ye?N:1,w=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=w,w=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=w,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+68>>2]=0,s[f+72>>2]=0,s[f>>2]=7800,s[f+76>>2]=0,s[f+80>>2]=0,w=s[ie>>2],s[f+104>>2]=0,s[f+108>>2]=0,s[f+84>>2]=w,s[f+88>>2]=0,s[f+92>>2]=0,oe[f+93|0]=0,oe[f+94|0]=0,oe[f+95|0]=0,oe[f+96|0]=0,oe[f+97|0]=0,oe[f+98|0]=0,oe[f+99|0]=0,oe[f+100|0]=0,k=f+112|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5952>>2]=0,s[f+5956>>2]=0,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5960>>1]=1,w=f+5976|0;break p;case 4:for(f=Gn(6004),N=s[ie+12>>2],s[f+12>>2]=s[ie+8>>2],w=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=w,s[f+16>>2]=ye?N:1,w=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=w,w=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=w,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+68>>2]=0,s[f+72>>2]=0,s[f>>2]=7912,s[f+76>>2]=0,s[f+80>>2]=0,w=s[ie>>2],s[f+104>>2]=0,s[f+108>>2]=0,s[f+84>>2]=w,s[f+88>>2]=0,s[f+92>>2]=0,oe[f+93|0]=0,oe[f+94|0]=0,oe[f+95|0]=0,oe[f+96|0]=0,oe[f+97|0]=0,oe[f+98|0]=0,oe[f+99|0]=0,oe[f+100|0]=0,k=f+112|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5952>>2]=0,s[f+5956>>2]=0,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5960>>1]=1,w=f+5976|0;break p;case 8:break m;default:break c}for(f=Gn(6004),N=s[ie+12>>2],s[f+12>>2]=s[ie+8>>2],w=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=w,s[f+16>>2]=ye?N:1,w=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=w,w=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=w,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+68>>2]=0,s[f+72>>2]=0,s[f>>2]=8028,s[f+76>>2]=0,s[f+80>>2]=0,w=s[ie>>2],s[f+104>>2]=0,s[f+108>>2]=0,s[f+84>>2]=w,s[f+88>>2]=0,s[f+92>>2]=0,oe[f+93|0]=0,oe[f+94|0]=0,oe[f+95|0]=0,oe[f+96|0]=0,oe[f+97|0]=0,oe[f+98|0]=0,oe[f+99|0]=0,oe[f+100|0]=0,k=f+112|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5952>>2]=0,s[f+5956>>2]=0,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5960>>1]=1,w=f+5976|0;break p}if(w=s[ie+8>>2],Be=-1<>2]-3|0){case 0:for(f=rt<<1,ue=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(ue|0)>=1<1<>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=3,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=ue+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=8144,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0;break p;case 1:break m;default:break c}for(f=rt<<1,ue=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(ue|0)>=1<1<>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=4,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=ue+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=8268,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0;break p}for(f=rt<<1,be=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(be|0)>=1<1<>2],s[f+12>>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=ye?ue:1,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=be+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=6208,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0;break p}if(f=0,w>>>0>16)break f;c:{if((ye|0)!=2)break c;m:switch(s[ie+12>>2]-3|0){case 0:for(f=rt<<1,ue=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(ue|0)>=1<1<>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=3,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=ue+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=8388,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0;break p;case 1:break m;default:break c}for(f=rt<<1,ue=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(ue|0)>=1<1<>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=4,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=ue+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=8512,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0;break p}for(f=rt<<1,be=(f+Be|0)/(f|1)|0,f=0,w=0;N=w,w=w+1|0,(be|0)>=1<1<>2],s[f+12>>2]=s[ie+8>>2],k=s[ie+4>>2],s[f+4>>2]=s[ie>>2],s[f+8>>2]=k,s[f+16>>2]=ye?ue:1,k=s[J+4>>2],s[f+20>>2]=s[J>>2],s[f+24>>2]=k,k=s[J+12>>2],s[f+28>>2]=s[J+8>>2],s[f+32>>2]=k,s[f+36>>2]=s[J+16>>2],s[f+40>>2]=0,s[f+44>>2]=0,s[f+48>>2]=0,s[f+52>>2]=0,s[f+56>>2]=0,s[f+60>>2]=0,s[f+88>>2]=64,s[f+84>>2]=w+((w|0)<=8?8:w)<<1,s[f+80>>2]=w,s[f+76>>2]=N,s[f+72>>2]=be+1,s[f+68>>2]=rt,s[f+64>>2]=Be,s[f>>2]=7072,s[f+100>>2]=0,s[f+104>>2]=0,s[f+92>>2]=0,s[f+96>>2]=0,w=s[ie>>2],s[f+128>>2]=0,s[f+132>>2]=0,s[f+108>>2]=w,s[f+112>>2]=0,s[f+116>>2]=0,oe[f+117|0]=0,oe[f+118|0]=0,oe[f+119|0]=0,oe[f+120|0]=0,oe[f+121|0]=0,oe[f+122|0]=0,oe[f+123|0]=0,oe[f+124|0]=0,k=f+136|0,w=0;;){if(N=k+(w<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,N=w|1,(N|0)!=365){N=k+(N<<4)|0,s[N+8>>2]=0,s[N+12>>2]=1,s[N>>2]=0,s[N+4>>2]=0,w=w+2|0;continue}break}s[f+5976>>2]=0,s[f+5980>>2]=0,ke[f+5996>>1]=1,w=f+5988|0,s[w>>2]=0,s[w+4>>2]=0,ke[f+5984>>1]=1,w=f+6e3|0}s[w>>2]=0,s[w+4>>2]=0,s[w+24>>2]=0,s[w+16>>2]=0,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=0}if(k=f,!f)break h;f=s[k>>2];break l}if(cn=s[J>>2],f=cn<<1,w=s[ie+8>>2],k=-1<>2],f=0,(w|0)<=8){for(;w=f,f=f+1|0,1<1<>2],k=Gn(6028),be=s[J+8>>2],ue=s[ie+12>>2],s[k+12>>2]=s[ie+8>>2],f=s[ie+4>>2],s[k+4>>2]=s[ie>>2],s[k+8>>2]=f,s[k+16>>2]=be?ue:1,rt=s[J+16>>2],ye=s[J+8>>2],be=s[J+12>>2],ue=s[J>>2],f=s[J+4>>2],s[k>>2]=6208,s[k+64>>2]=Be,s[k+68>>2]=cn,s[k+72>>2]=Lt+1,s[k+76>>2]=w,s[k+80>>2]=N,s[k+84>>2]=N+((N|0)<=8?8:N)<<1,s[k+88>>2]=vn,s[k+56>>2]=0,s[k+60>>2]=0,s[k+48>>2]=0,s[k+52>>2]=0,s[k+40>>2]=0,s[k+44>>2]=0,s[k+92>>2]=0,s[k+96>>2]=0,s[k+100>>2]=0,s[k+104>>2]=0,s[k+20>>2]=ue,s[k+24>>2]=f,s[k+28>>2]=ye,s[k+32>>2]=be,s[k+36>>2]=rt,f=s[ie>>2],s[k+128>>2]=0,s[k+132>>2]=0,s[k+108>>2]=f,s[k+112>>2]=0,s[k+116>>2]=0,oe[k+117|0]=0,oe[k+118|0]=0,oe[k+119|0]=0,oe[k+120|0]=0,oe[k+121|0]=0,oe[k+122|0]=0,oe[k+123|0]=0,oe[k+124|0]=0,N=k+136|0,f=0;;){if(w=N+(f<<4)|0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=0,s[w+4>>2]=0,w=f|1,(w|0)!=365){w=N+(w<<4)|0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=0,s[w+4>>2]=0,f=f+2|0;continue}break}s[k+6e3>>2]=0,s[k+6004>>2]=0,s[k+5976>>2]=0,s[k+5980>>2]=0,ke[k+5996>>1]=1,f=k+5988|0,s[f>>2]=0,s[f+4>>2]=0,ke[k+5984>>1]=1,f=k+6008|0,s[f>>2]=0,s[f+4>>2]=0,f=k+6016|0,s[f>>2]=0,s[f+4>>2]=0,s[k+6024>>2]=0,f=6208;break l}for(;w=f,f=f+1|0,1<1<>2],k=Gn(6028),be=s[J+8>>2],ue=s[ie+12>>2],s[k+12>>2]=s[ie+8>>2],f=s[ie+4>>2],s[k+4>>2]=s[ie>>2],s[k+8>>2]=f,s[k+16>>2]=be?ue:1,rt=s[J+16>>2],ye=s[J+8>>2],be=s[J+12>>2],ue=s[J>>2],f=s[J+4>>2],s[k>>2]=7072,s[k+64>>2]=Be,s[k+68>>2]=cn,s[k+72>>2]=Lt+1,s[k+76>>2]=w,s[k+80>>2]=N,s[k+84>>2]=N+((N|0)<=8?8:N)<<1,s[k+88>>2]=vn,s[k+56>>2]=0,s[k+60>>2]=0,s[k+48>>2]=0,s[k+52>>2]=0,s[k+40>>2]=0,s[k+44>>2]=0,s[k+92>>2]=0,s[k+96>>2]=0,s[k+100>>2]=0,s[k+104>>2]=0,s[k+20>>2]=ue,s[k+24>>2]=f,s[k+28>>2]=ye,s[k+32>>2]=be,s[k+36>>2]=rt,f=s[ie>>2],s[k+128>>2]=0,s[k+132>>2]=0,s[k+108>>2]=f,s[k+112>>2]=0,s[k+116>>2]=0,oe[k+117|0]=0,oe[k+118|0]=0,oe[k+119|0]=0,oe[k+120|0]=0,oe[k+121|0]=0,oe[k+122|0]=0,oe[k+123|0]=0,oe[k+124|0]=0,N=k+136|0,f=0;;){if(w=N+(f<<4)|0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=0,s[w+4>>2]=0,w=f|1,(w|0)!=365){w=N+(w<<4)|0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=0,s[w+4>>2]=0,f=f+2|0;continue}break}s[k+6e3>>2]=0,s[k+6004>>2]=0,s[k+5976>>2]=0,s[k+5980>>2]=0,ke[k+5996>>1]=1,f=k+5988|0,s[f>>2]=0,s[f+4>>2]=0,ke[k+5984>>1]=1,f=k+6008|0,s[f>>2]=0,s[f+4>>2]=0,f=k+6016|0,s[f>>2]=0,s[f+4>>2]=0,s[k+6024>>2]=0,f=7072}if(Mr[s[f+12>>2]](k,Ct,s[J+4>>2]),w=s[pt+4>>2],N=s[pt>>2],s[E+24>>2]=N,s[E+28>>2]=w,f=s[s[k>>2]+8>>2],s[E+8>>2]=N,s[E+12>>2]=w,ue=Mr[f|0](k,E+8|0,yn)|0,N=s[Ee+4>>2],f=s[Ee>>2],s[E+16>>2]=f,s[E+20>>2]=N-f,N=s[s[k>>2]+16>>2],f=s[E+20>>2],s[E>>2]=s[E+16>>2],s[E+4>>2]=f,f=Mr[N|0](k,ue,jn,E)|0,s[Ee+100>>2]=5,s[Ee>>2]=f+s[Ee>>2],Mr[s[s[k>>2]+4>>2]](k),Ln=Ln+1|0,(Ln|0)==(nn|0))break}In=E- -64|0;break s}Vn(2),_t()}Vn(206),_t()}Vn(3),_t()}s:{o:{if(f=s[Ee>>2],N=s[Ee+4>>2],(f|0)!=(N|0)){if(w=de[f|0],f=f+1|0,s[Ee>>2]=f,(w|0)!=255)break r;for(;;){if((f|0)==(N|0))break t;if(w=de[f|0],f=f+1|0,s[Ee>>2]=f,(w|0)!=255)break}if((w|0)!=217)break o;break s}break t}Vn(28),_t()}s[Wt>>2]=5,In=pt+16|0,w=W+96|0,f=s[W+112>>2];s:{if((w|0)==(f|0))f=s[W+96>>2]+16|0;else{if(!f)break s;w=f,f=s[f>>2]+20|0}Mr[s[f>>2]](w)}w=W+72|0,f=s[W+88>>2];s:{if((w|0)==(f|0))f=s[W+72>>2]+16|0;else{if(!f)break s;w=f,f=s[f>>2]+20|0}Mr[s[f>>2]](w)}f=s[W>>2],s[W>>2]=0,f&&Mr[s[W+4>>2]](f),In=W+128|0;return}f=qh(4),s[f>>2]=14468,s[f>>2]=14448,dt(f|0,14520,28),_t()}Li(),_t()}Vn(w),_t()}Vn(12),_t()}Vn(17),_t()}Vn(4),_t()}Vn(7),_t()}function U2(){for(var f=0,w=0,N=0,k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0;k=f<<4,E=k+47616|0,s[k+47620>>2]=E,s[k+47624>>2]=E,f=f+1|0,(f|0)!=64;);for(Bh(48),s[3685]=44,s[3686]=0,Rr(2514,1,5564,5640,1,2),s[3686]=s[11898],s[11898]=14740,s[3687]=45,s[3688]=0,E4(),s[3688]=s[11898],s[11898]=14748,s[3689]=46,s[3690]=0,T4(),s[3690]=s[11898],s[11898]=14756,s[3691]=47,s[3692]=0,Ef(),s[3692]=s[11898],s[11898]=14764,f=0,k=fr(14776,0,2048);E=f<<3,W=k+(E|1024)|0,s[W>>2]=0,s[W+4>>2]=1,W=k+(E|1032)|0,s[W>>2]=0,s[W+4>>2]=1,W=k+(E|1040)|0,s[W>>2]=0,s[W+4>>2]=1,E=k+(E|1048)|0,s[E>>2]=0,s[E+4>>2]=1,E=(f|0)!=124,f=f+4|0,!!E;);for(W=0,s[3820]=1,s[3821]=3,s[3818]=1,s[3819]=3,s[3816]=1,s[3817]=3,s[3814]=1,s[3815]=3,s[3812]=1,s[3813]=3,s[3810]=1,s[3811]=3,s[3808]=1,s[3809]=3,s[3806]=1,s[3807]=3,s[3804]=1,s[3805]=3,s[3802]=1,s[3803]=3,s[3800]=1,s[3801]=3,s[3798]=1,s[3799]=3,s[3796]=1,s[3797]=3,s[3794]=1,s[3795]=3,s[3792]=1,s[3793]=3,s[3790]=1,s[3791]=3,s[3788]=1,s[3789]=3,s[3786]=1,s[3787]=3,s[3784]=1,s[3785]=3,s[3782]=1,s[3783]=3,s[3780]=1,s[3781]=3,s[3778]=1,s[3779]=3,s[3776]=1,s[3777]=3,s[3774]=1,s[3775]=3,s[3772]=1,s[3773]=3,s[3770]=1,s[3771]=3,s[3768]=1,s[3769]=3,s[3766]=1,s[3767]=3,s[3764]=1,s[3765]=3,s[3762]=1,s[3763]=3,s[3760]=1,s[3761]=3,s[3758]=1,s[3759]=3,s[3724]=2,s[3725]=5,s[3722]=2,s[3723]=5,s[3720]=2,s[3721]=5,s[3718]=2,s[3719]=5,s[3716]=2,s[3717]=5,s[3714]=2,s[3715]=5,s[3712]=2,s[3713]=5,s[3710]=2,s[3711]=5,s[3948]=-1,s[3949]=2,s[3946]=-1,s[3947]=2,s[3944]=-1,s[3945]=2,s[3942]=-1,s[3943]=2,s[3940]=-1,s[3941]=2,s[3938]=-1,s[3939]=2,s[3936]=-1,s[3937]=2,s[3934]=-1,s[3935]=2,s[3932]=-1,s[3933]=2,s[3930]=-1,s[3931]=2,s[3928]=-1,s[3929]=2,s[3926]=-1,s[3927]=2,s[3924]=-1,s[3925]=2,s[3922]=-1,s[3923]=2,s[3920]=-1,s[3921]=2,s[3918]=-1,s[3919]=2,s[3916]=-1,s[3917]=2,s[3914]=-1,s[3915]=2,s[3912]=-1,s[3913]=2,s[3910]=-1,s[3911]=2,s[3908]=-1,s[3909]=2,s[3906]=-1,s[3907]=2,s[3904]=-1,s[3905]=2,s[3902]=-1,s[3903]=2,s[3900]=-1,s[3901]=2,s[3898]=-1,s[3899]=2,s[3896]=-1,s[3897]=2,s[3894]=-1,s[3895]=2,s[3892]=-1,s[3893]=2,s[3890]=-1,s[3891]=2,s[3888]=-1,s[3889]=2,s[3886]=-1,s[3887]=2,s[3884]=-1,s[3885]=2,s[3882]=-1,s[3883]=2,s[3880]=-1,s[3881]=2,s[3878]=-1,s[3879]=2,s[3876]=-1,s[3877]=2,s[3874]=-1,s[3875]=2,s[3872]=-1,s[3873]=2,s[3870]=-1,s[3871]=2,s[3868]=-1,s[3869]=2,s[3866]=-1,s[3867]=2,s[3864]=-1,s[3865]=2,s[3862]=-1,s[3863]=2,s[3860]=-1,s[3861]=2,s[3858]=-1,s[3859]=2,s[3856]=-1,s[3857]=2,s[3854]=-1,s[3855]=2,s[3852]=-1,s[3853]=2,s[3850]=-1,s[3851]=2,s[3848]=-1,s[3849]=2,s[3846]=-1,s[3847]=2,s[3844]=-1,s[3845]=2,s[3842]=-1,s[3843]=2,s[3840]=-1,s[3841]=2,s[3838]=-1,s[3839]=2,s[3836]=-1,s[3837]=2,s[3834]=-1,s[3835]=2,s[3832]=-1,s[3833]=2,s[3830]=-1,s[3831]=2,s[3828]=-1,s[3829]=2,s[3826]=-1,s[3827]=2,s[3824]=-1,s[3825]=2,s[3822]=-1,s[3823]=2,s[3700]=3,s[3701]=7,s[3698]=3,s[3699]=7,s[3756]=-2,s[3757]=4,s[3754]=-2,s[3755]=4,s[3752]=-2,s[3753]=4,s[3750]=-2,s[3751]=4,s[3748]=-2,s[3749]=4,s[3746]=-2,s[3747]=4,s[3744]=-2,s[3745]=4,s[3742]=-2,s[3743]=4,s[3740]=-2,s[3741]=4,s[3738]=-2,s[3739]=4,s[3736]=-2,s[3737]=4,s[3734]=-2,s[3735]=4,s[3732]=-2,s[3733]=4,s[3730]=-2,s[3731]=4,s[3728]=-2,s[3729]=4,s[3726]=-2,s[3727]=4,s[3708]=-3,s[3709]=6,s[3706]=-3,s[3707]=6,s[3704]=-3,s[3705]=6,s[3702]=-3,s[3703]=6,s[3696]=-4,s[3697]=8,fr(16824,0,2048),s[4588]=0,s[4589]=2,s[4586]=0,s[4587]=2,s[4584]=0,s[4585]=2,s[4582]=0,s[4583]=2,s[4580]=0,s[4581]=2,s[4578]=0,s[4579]=2,s[4576]=0,s[4577]=2,s[4574]=0,s[4575]=2,s[4572]=0,s[4573]=2,s[4570]=0,s[4571]=2,s[4568]=0,s[4569]=2,s[4566]=0,s[4567]=2,s[4564]=0,s[4565]=2,s[4562]=0,s[4563]=2,s[4560]=0,s[4561]=2,s[4558]=0,s[4559]=2,s[4556]=0,s[4557]=2,s[4554]=0,s[4555]=2,s[4552]=0,s[4553]=2,s[4550]=0,s[4551]=2,s[4548]=0,s[4549]=2,s[4546]=0,s[4547]=2,s[4544]=0,s[4545]=2,s[4542]=0,s[4543]=2,s[4540]=0,s[4541]=2,s[4538]=0,s[4539]=2,s[4536]=0,s[4537]=2,s[4534]=0,s[4535]=2,s[4532]=0,s[4533]=2,s[4530]=0,s[4531]=2,s[4528]=0,s[4529]=2,s[4526]=0,s[4527]=2,s[4524]=0,s[4525]=2,s[4522]=0,s[4523]=2,s[4520]=0,s[4521]=2,s[4518]=0,s[4519]=2,s[4516]=0,s[4517]=2,s[4514]=0,s[4515]=2,s[4512]=0,s[4513]=2,s[4510]=0,s[4511]=2,s[4508]=0,s[4509]=2,s[4506]=0,s[4507]=2,s[4504]=0,s[4505]=2,s[4502]=0,s[4503]=2,s[4500]=0,s[4501]=2,s[4498]=0,s[4499]=2,s[4496]=0,s[4497]=2,s[4494]=0,s[4495]=2,s[4492]=0,s[4493]=2,s[4490]=0,s[4491]=2,s[4488]=0,s[4489]=2,s[4486]=0,s[4487]=2,s[4484]=0,s[4485]=2,s[4482]=0,s[4483]=2,s[4480]=0,s[4481]=2,s[4478]=0,s[4479]=2,s[4476]=0,s[4477]=2,s[4474]=0,s[4475]=2,s[4472]=0,s[4473]=2,s[4470]=0,s[4471]=2,s[4468]=0,s[4469]=2,s[4466]=0,s[4467]=2,s[4464]=0,s[4465]=2,s[4462]=0,s[4463]=2,s[4396]=1,s[4397]=3,s[4394]=1,s[4395]=3,s[4392]=1,s[4393]=3,s[4390]=1,s[4391]=3,s[4388]=1,s[4389]=3,s[4386]=1,s[4387]=3,s[4384]=1,s[4385]=3,s[4382]=1,s[4383]=3,s[4380]=1,s[4381]=3,s[4378]=1,s[4379]=3,s[4376]=1,s[4377]=3,s[4374]=1,s[4375]=3,s[4372]=1,s[4373]=3,s[4370]=1,s[4371]=3,s[4368]=1,s[4369]=3,s[4366]=1,s[4367]=3,s[4364]=1,s[4365]=3,s[4362]=1,s[4363]=3,s[4360]=1,s[4361]=3,s[4358]=1,s[4359]=3,s[4356]=1,s[4357]=3,s[4354]=1,s[4355]=3,s[4352]=1,s[4353]=3,s[4350]=1,s[4351]=3,s[4348]=1,s[4349]=3,s[4346]=1,s[4347]=3,s[4344]=1,s[4345]=3,s[4342]=1,s[4343]=3,s[4340]=1,s[4341]=3,s[4338]=1,s[4339]=3,s[4336]=1,s[4337]=3,s[4334]=1,s[4335]=3,s[4300]=2,s[4301]=4,s[4298]=2,s[4299]=4,s[4296]=2,s[4297]=4,s[4294]=2,s[4295]=4,s[4292]=2,s[4293]=4,s[4290]=2,s[4291]=4,s[4288]=2,s[4289]=4,s[4286]=2,s[4287]=4,s[4284]=2,s[4285]=4,s[4282]=2,s[4283]=4,s[4280]=2,s[4281]=4,s[4278]=2,s[4279]=4,s[4276]=2,s[4277]=4,s[4274]=2,s[4275]=4,s[4272]=2,s[4273]=4,s[4270]=2,s[4271]=4,s[4252]=3,s[4253]=5,s[4250]=3,s[4251]=5,s[4248]=3,s[4249]=5,s[4246]=3,s[4247]=5,s[4244]=3,s[4245]=5,s[4242]=3,s[4243]=5,s[4240]=3,s[4241]=5,s[4238]=3,s[4239]=5,s[4228]=4,s[4229]=6,s[4226]=4,s[4227]=6,s[4224]=4,s[4225]=6,s[4222]=4,s[4223]=6,s[4216]=5,s[4217]=7,s[4214]=5,s[4215]=7,s[4716]=-1,s[4717]=2,s[4714]=-1,s[4715]=2,s[4712]=-1,s[4713]=2,s[4710]=-1,s[4711]=2,s[4708]=-1,s[4709]=2,s[4706]=-1,s[4707]=2,s[4704]=-1,s[4705]=2,s[4702]=-1,s[4703]=2,s[4700]=-1,s[4701]=2,s[4698]=-1,s[4699]=2,s[4696]=-1,s[4697]=2,s[4694]=-1,s[4695]=2,s[4692]=-1,s[4693]=2,s[4690]=-1,s[4691]=2,s[4688]=-1,s[4689]=2,s[4686]=-1,s[4687]=2,s[4684]=-1,s[4685]=2,s[4682]=-1,s[4683]=2,s[4680]=-1,s[4681]=2,s[4678]=-1,s[4679]=2,s[4676]=-1,s[4677]=2,s[4674]=-1,s[4675]=2,s[4672]=-1,s[4673]=2,s[4670]=-1,s[4671]=2,s[4668]=-1,s[4669]=2,s[4666]=-1,s[4667]=2,s[4664]=-1,s[4665]=2,s[4662]=-1,s[4663]=2,s[4660]=-1,s[4661]=2,s[4658]=-1,s[4659]=2,s[4656]=-1,s[4657]=2,s[4654]=-1,s[4655]=2,s[4652]=-1,s[4653]=2,s[4650]=-1,s[4651]=2,s[4648]=-1,s[4649]=2,s[4646]=-1,s[4647]=2,s[4644]=-1,s[4645]=2,s[4642]=-1,s[4643]=2,s[4640]=-1,s[4641]=2,s[4638]=-1,s[4639]=2,s[4636]=-1,s[4637]=2,s[4634]=-1,s[4635]=2,s[4632]=-1,s[4633]=2,s[4630]=-1,s[4631]=2,s[4628]=-1,s[4629]=2,s[4626]=-1,s[4627]=2,s[4624]=-1,s[4625]=2,s[4622]=-1,s[4623]=2,s[4620]=-1,s[4621]=2,s[4618]=-1,s[4619]=2,s[4616]=-1,s[4617]=2,s[4614]=-1,s[4615]=2,s[4612]=-1,s[4613]=2,s[4610]=-1,s[4611]=2,s[4608]=-1,s[4609]=2,s[4606]=-1,s[4607]=2,s[4604]=-1,s[4605]=2,s[4602]=-1,s[4603]=2,s[4600]=-1,s[4601]=2,s[4598]=-1,s[4599]=2,s[4596]=-1,s[4597]=2,s[4594]=-1,s[4595]=2,s[4592]=-1,s[4593]=2,s[4590]=-1,s[4591]=2,s[4210]=6,s[4211]=8,s[4460]=-2,s[4461]=3,s[4458]=-2,s[4459]=3,s[4456]=-2,s[4457]=3,s[4454]=-2,s[4455]=3,s[4452]=-2,s[4453]=3,s[4450]=-2,s[4451]=3,s[4448]=-2,s[4449]=3,s[4446]=-2,s[4447]=3,s[4444]=-2,s[4445]=3,s[4442]=-2,s[4443]=3,s[4440]=-2,s[4441]=3,s[4438]=-2,s[4439]=3,s[4436]=-2,s[4437]=3,s[4434]=-2,s[4435]=3,s[4432]=-2,s[4433]=3,s[4430]=-2,s[4431]=3,s[4428]=-2,s[4429]=3,s[4426]=-2,s[4427]=3,s[4424]=-2,s[4425]=3,s[4422]=-2,s[4423]=3,s[4420]=-2,s[4421]=3,s[4418]=-2,s[4419]=3,s[4416]=-2,s[4417]=3,s[4414]=-2,s[4415]=3,s[4412]=-2,s[4413]=3,s[4410]=-2,s[4411]=3,s[4408]=-2,s[4409]=3,s[4406]=-2,s[4407]=3,s[4404]=-2,s[4405]=3,s[4402]=-2,s[4403]=3,s[4400]=-2,s[4401]=3,s[4398]=-2,s[4399]=3,s[4332]=-3,s[4333]=4,s[4330]=-3,s[4331]=4,s[4328]=-3,s[4329]=4,s[4326]=-3,s[4327]=4,s[4324]=-3,s[4325]=4,s[4322]=-3,s[4323]=4,s[4320]=-3,s[4321]=4,s[4318]=-3,s[4319]=4,s[4316]=-3,s[4317]=4,s[4314]=-3,s[4315]=4,s[4312]=-3,s[4313]=4,s[4310]=-3,s[4311]=4,s[4308]=-3,s[4309]=4,s[4306]=-3,s[4307]=4,s[4304]=-3,s[4305]=4,s[4302]=-3,s[4303]=4,s[4268]=-4,s[4269]=5,s[4266]=-4,s[4267]=5,s[4264]=-4,s[4265]=5,s[4262]=-4,s[4263]=5,s[4260]=-4,s[4261]=5,s[4258]=-4,s[4259]=5,s[4256]=-4,s[4257]=5,s[4254]=-4,s[4255]=5,s[4236]=-5,s[4237]=6,s[4234]=-5,s[4235]=6,s[4232]=-5,s[4233]=6,s[4230]=-5,s[4231]=6,s[4220]=-6,s[4221]=7,s[4218]=-6,s[4219]=7,s[4212]=-7,s[4213]=8,fr(18872,0,2048),s[5164]=1,s[5165]=3,s[5162]=1,s[5163]=3,s[5160]=1,s[5161]=3,s[5158]=1,s[5159]=3,s[5156]=1,s[5157]=3,s[5154]=1,s[5155]=3,s[5152]=1,s[5153]=3,s[5150]=1,s[5151]=3,s[5148]=1,s[5149]=3,s[5146]=1,s[5147]=3,s[5144]=1,s[5145]=3,s[5142]=1,s[5143]=3,s[5140]=1,s[5141]=3,s[5138]=1,s[5139]=3,s[5136]=1,s[5137]=3,s[5134]=1,s[5135]=3,s[5132]=1,s[5133]=3,s[5130]=1,s[5131]=3,s[5128]=1,s[5129]=3,s[5126]=1,s[5127]=3,s[5124]=1,s[5125]=3,s[5122]=1,s[5123]=3,s[5120]=1,s[5121]=3,s[5118]=1,s[5119]=3,s[5116]=1,s[5117]=3,s[5114]=1,s[5115]=3,s[5112]=1,s[5113]=3,s[5110]=1,s[5111]=3,s[5108]=1,s[5109]=3,s[5106]=1,s[5107]=3,s[5104]=1,s[5105]=3,s[5102]=1,s[5103]=3,s[5036]=0,s[5037]=3,s[5034]=0,s[5035]=3,s[5032]=0,s[5033]=3,s[5030]=0,s[5031]=3,s[5028]=0,s[5029]=3,s[5026]=0,s[5027]=3,s[5024]=0,s[5025]=3,s[5022]=0,s[5023]=3,s[5020]=0,s[5021]=3,s[5018]=0,s[5019]=3,s[5016]=0,s[5017]=3,s[5014]=0,s[5015]=3,s[5012]=0,s[5013]=3,s[5010]=0,s[5011]=3,s[5008]=0,s[5009]=3,s[5006]=0,s[5007]=3,s[5004]=0,s[5005]=3,s[5002]=0,s[5003]=3,s[5e3]=0,s[5001]=3,s[4998]=0,s[4999]=3,s[4996]=0,s[4997]=3,s[4994]=0,s[4995]=3,s[4992]=0,s[4993]=3,s[4990]=0,s[4991]=3,s[4988]=0,s[4989]=3,s[4986]=0,s[4987]=3,s[4984]=0,s[4985]=3,s[4982]=0,s[4983]=3,s[4980]=0,s[4981]=3,s[4978]=0,s[4979]=3,s[4976]=0,s[4977]=3,s[4974]=0,s[4975]=3,s[4940]=3,s[4941]=4,s[4938]=3,s[4939]=4,s[4936]=3,s[4937]=4,s[4934]=3,s[4935]=4,s[4932]=3,s[4933]=4,s[4930]=3,s[4931]=4,s[4928]=3,s[4929]=4,s[4926]=3,s[4927]=4,s[4924]=3,s[4925]=4,s[4922]=3,s[4923]=4,s[4920]=3,s[4921]=4,s[4918]=3,s[4919]=4,s[4916]=3,s[4917]=4,s[4914]=3,s[4915]=4,s[4912]=3,s[4913]=4,s[4910]=3,s[4911]=4,s[4876]=2,s[4877]=4,s[4874]=2,s[4875]=4,s[4872]=2,s[4873]=4,s[4870]=2,s[4871]=4,s[4868]=2,s[4869]=4,s[4866]=2,s[4867]=4,s[4864]=2,s[4865]=4,s[4862]=2,s[4863]=4,s[4860]=2,s[4861]=4,s[4858]=2,s[4859]=4,s[4856]=2,s[4857]=4,s[4854]=2,s[4855]=4,s[4852]=2,s[4853]=4,s[4850]=2,s[4851]=4,s[4848]=2,s[4849]=4,s[4846]=2,s[4847]=4,s[4828]=5,s[4829]=5,s[4826]=5,s[4827]=5,s[4824]=5,s[4825]=5,s[4822]=5,s[4823]=5,s[4820]=5,s[4821]=5,s[4818]=5,s[4819]=5,s[4816]=5,s[4817]=5,s[4814]=5,s[4815]=5,s[4796]=4,s[4797]=5,s[4794]=4,s[4795]=5,s[4792]=4,s[4793]=5,s[4790]=4,s[4791]=5,s[4788]=4,s[4789]=5,s[4786]=4,s[4787]=5,s[4784]=4,s[4785]=5,s[4782]=4,s[4783]=5,s[4772]=7,s[4773]=6,s[4770]=7,s[4771]=6,s[4768]=7,s[4769]=6,s[4766]=7,s[4767]=6,s[4756]=6,s[4757]=6,s[4754]=6,s[4755]=6,s[4752]=6,s[4753]=6,s[4750]=6,s[4751]=6,s[4744]=9,s[4745]=7,s[4742]=9,s[4743]=7,s[4736]=8,s[4737]=7,s[4734]=8,s[4735]=7,s[5228]=-2,s[5229]=3,s[5226]=-2,s[5227]=3,s[5224]=-2,s[5225]=3,s[5222]=-2,s[5223]=3,s[5220]=-2,s[5221]=3,s[5218]=-2,s[5219]=3,s[5216]=-2,s[5217]=3,s[5214]=-2,s[5215]=3,s[5212]=-2,s[5213]=3,s[5210]=-2,s[5211]=3,s[5208]=-2,s[5209]=3,s[5206]=-2,s[5207]=3,s[5204]=-2,s[5205]=3,s[5202]=-2,s[5203]=3,s[5200]=-2,s[5201]=3,s[5198]=-2,s[5199]=3,s[5196]=-2,s[5197]=3,s[5194]=-2,s[5195]=3,s[5192]=-2,s[5193]=3,s[5190]=-2,s[5191]=3,s[5188]=-2,s[5189]=3,s[5186]=-2,s[5187]=3,s[5184]=-2,s[5185]=3,s[5182]=-2,s[5183]=3,s[5180]=-2,s[5181]=3,s[5178]=-2,s[5179]=3,s[5176]=-2,s[5177]=3,s[5174]=-2,s[5175]=3,s[5172]=-2,s[5173]=3,s[5170]=-2,s[5171]=3,s[5168]=-2,s[5169]=3,s[5166]=-2,s[5167]=3,s[5100]=-1,s[5101]=3,s[5098]=-1,s[5099]=3,s[5096]=-1,s[5097]=3,s[5094]=-1,s[5095]=3,s[5092]=-1,s[5093]=3,s[5090]=-1,s[5091]=3,s[5088]=-1,s[5089]=3,s[5086]=-1,s[5087]=3,s[5084]=-1,s[5085]=3,s[5082]=-1,s[5083]=3,s[5080]=-1,s[5081]=3,s[5078]=-1,s[5079]=3,s[5076]=-1,s[5077]=3,s[5074]=-1,s[5075]=3,s[5072]=-1,s[5073]=3,s[5070]=-1,s[5071]=3,s[5068]=-1,s[5069]=3,s[5066]=-1,s[5067]=3,s[5064]=-1,s[5065]=3,s[5062]=-1,s[5063]=3,s[5060]=-1,s[5061]=3,s[5058]=-1,s[5059]=3,s[5056]=-1,s[5057]=3,s[5054]=-1,s[5055]=3,s[5052]=-1,s[5053]=3,s[5050]=-1,s[5051]=3,s[5048]=-1,s[5049]=3,s[5046]=-1,s[5047]=3,s[5044]=-1,s[5045]=3,s[5042]=-1,s[5043]=3,s[5040]=-1,s[5041]=3,s[5038]=-1,s[5039]=3,s[4730]=11,s[4731]=8,s[4726]=10,s[4727]=8,s[4972]=-4,s[4973]=4,s[4970]=-4,s[4971]=4,s[4968]=-4,s[4969]=4,s[4966]=-4,s[4967]=4,s[4964]=-4,s[4965]=4,s[4962]=-4,s[4963]=4,s[4960]=-4,s[4961]=4,s[4958]=-4,s[4959]=4,s[4956]=-4,s[4957]=4,s[4954]=-4,s[4955]=4,s[4952]=-4,s[4953]=4,s[4950]=-4,s[4951]=4,s[4948]=-4,s[4949]=4,s[4946]=-4,s[4947]=4,s[4944]=-4,s[4945]=4,s[4942]=-4,s[4943]=4,s[4908]=-3,s[4909]=4,s[4906]=-3,s[4907]=4,s[4904]=-3,s[4905]=4,s[4902]=-3,s[4903]=4,s[4900]=-3,s[4901]=4,s[4898]=-3,s[4899]=4,s[4896]=-3,s[4897]=4,s[4894]=-3,s[4895]=4,s[4892]=-3,s[4893]=4,s[4890]=-3,s[4891]=4,s[4888]=-3,s[4889]=4,s[4886]=-3,s[4887]=4,s[4884]=-3,s[4885]=4,s[4882]=-3,s[4883]=4,s[4880]=-3,s[4881]=4,s[4878]=-3,s[4879]=4,s[4844]=-6,s[4845]=5,s[4842]=-6,s[4843]=5,s[4840]=-6,s[4841]=5,s[4838]=-6,s[4839]=5,s[4836]=-6,s[4837]=5,s[4834]=-6,s[4835]=5,s[4832]=-6,s[4833]=5,s[4830]=-6,s[4831]=5,s[4812]=-5,s[4813]=5,s[4810]=-5,s[4811]=5,s[4808]=-5,s[4809]=5,s[4806]=-5,s[4807]=5,s[4804]=-5,s[4805]=5,s[4802]=-5,s[4803]=5,s[4800]=-5,s[4801]=5,s[4798]=-5,s[4799]=5,s[4780]=-8,s[4781]=6,s[4778]=-8,s[4779]=6,s[4776]=-8,s[4777]=6,s[4774]=-8,s[4775]=6,s[4764]=-7,s[4765]=6,s[4762]=-7,s[4763]=6,s[4760]=-7,s[4761]=6,s[4758]=-7,s[4759]=6,s[4748]=-10,s[4749]=7,s[4746]=-10,s[4747]=7,s[4740]=-9,s[4741]=7,s[4738]=-9,s[4739]=7,s[4732]=-12,s[4733]=8,s[4728]=-11,s[4729]=8,ue=fr(20920,0,2048),k=4;;){for(E=8-k|0,J=(ie&7|8)<>2]=ie,s[ye+4>>2]=k,f=f+1|0,!(f>>>E|0););if(J=1,W=W+1|0,ie=W>>>30^W<<1,f=4,k=(W>>>2|0)+4|0,w=w+1|0,E=w?N:N+1|0,N=E,!((w|0)!=20|N))break}for(w=-1,N=0,W=-1;;){for(k=8-f|0,J=(J&7|8)<>2]=ie,s[ue+4>>2]=E,f=f+1|0,!(f>>>k|0););if(k=W<<16,W=W-1|0,f=w,w=f-1|0,N=N-!f|0,f=k-65536|0,J=f>>31^f>>15,f=(J>>3)+4|0,!(f>>>0<9))break}for(W=0,ue=fr(22968,0,2048),k=5,w=0,N=0,ie=0;;){for(J=8-k|0,ie=(ie&15|16)<>2]=k,s[ye+4>>2]=E,f=f+1|0,!(f>>>J|0););if(J=1,W=W+1|0,ie=W>>>30^W<<1,f=5,k=(W>>>3|0)+5|0,w=w+1|0,E=w?N:N+1|0,N=E,!((w|0)!=32|N))break}for(w=-1,N=0,W=-1;;){for(k=8-f|0,J=(J&15|16)<>2]=ie,s[ue+4>>2]=E,f=f+1|0,!(f>>>k|0););if(k=W<<16,W=W-1|0,f=w,w=f-1|0,N=N-!f|0,f=k-65536|0,J=f>>31^f>>15,f=(J>>4)+5|0,!(f>>>0<9))break}for(W=0,ue=fr(25016,0,2048),k=6,w=0,N=0,ie=0;;){for(J=8-k|0,ie=(ie&31|32)<>2]=k,s[ye+4>>2]=E,f=f+1|0,!(f>>>J|0););if(J=1,W=W+1|0,ie=W>>>30^W<<1,f=6,k=(W>>>4|0)+6|0,w=w+1|0,E=w?N:N+1|0,N=E,!((w|0)!=48|N))break}for(w=-1,N=0,W=-1;;){for(k=8-f|0,J=(J&31|32)<>2]=ie,s[ue+4>>2]=E,f=f+1|0,!(f>>>k|0););if(k=W<<16,W=W-1|0,f=w,w=f-1|0,N=N-!f|0,f=k-65536|0,J=f>>31^f>>15,f=(J>>5)+6|0,!(f>>>0<9))break}for(W=0,ue=fr(27064,0,2048),k=7,w=0,N=0,ie=0;;){for(J=8-k|0,ie=(ie&63|64)<>2]=k,s[ye+4>>2]=E,f=f+1|0,!(f>>>J|0););if(J=1,W=W+1|0,ie=W>>>30^W<<1,f=7,k=(W>>>5|0)+7|0,w=w+1|0,E=w?N:N+1|0,N=E,!((w|0)!=64|N))break}for(w=-1,N=0,W=-1;;){for(k=8-f|0,J=(J&63|64)<>2]=ie,s[ue+4>>2]=E,f=f+1|0,!(f>>>k|0););if(k=W<<16,W=W-1|0,f=w,w=f-1|0,N=N-!f|0,f=k-65536|0,J=f>>31^f>>15,f=(J>>6)+7|0,!(f>>>0<9))break}for(W=0,ue=fr(29112,0,2048),w=0,N=0,k=8,ie=0;;){for(J=8-k|0,ie=(ie&127|128)<>2]=k,s[ye+4>>2]=E,f=f+1|0,!(f>>>J|0););if(J=1,W=W+1|0,ie=W>>>30^W<<1,f=8,k=(W>>>6|0)+8|0,w=w+1|0,E=w?N:N+1|0,N=E,!((w|0)!=64|N))break}for(w=-1,N=0,W=-1;;){for(k=8-f|0,J=(J&127|128)<>2]=ie,s[ue+4>>2]=E,f=f+1|0,!(f>>>k|0););if(k=W<<16,W=W-1|0,f=w,w=f-1|0,N=N-!f|0,f=k-65536|0,J=f>>31^f>>15,f=(J>>7)+8|0,!(f>>>0<9))break}for(f=0,fr(31160,0,16384),s[11886]=0,s[11887]=0,s[11888]=0,w=Gn(512),s[11886]=w,N=w+512|0,s[11888]=N,k=fr(w,0,512),s[11887]=N;;){E=f+k|0,w=252;e:{if(f>>>0<236||(w=253,f>>>0<250)||(w=254,f>>>0<254)||(w=255,f>>>0<256)||(N=f-256|0,w=0,!N)||(w=1,N>>>0<3)||(w=2,N>>>0<7))break e;w=N>>>0<21?3:4}if(oe[E|0]=w,f=f+1|0,(f|0)==512)break}for(f=0,s[11889]=0,s[11890]=0,s[11891]=0,w=Gn(2048),s[11889]=w,N=w+2048|0,s[11891]=N,k=fr(w,0,2048),s[11890]=N;;){E=f+k|0,w=252;e:{if(f>>>0<953||(w=253,f>>>0<1006)||(w=254,f>>>0<1019)||(w=255,f>>>0<1024)||(N=f-1024|0,w=0,!N)||(w=1,N>>>0<6)||(w=2,N>>>0<19))break e;w=N>>>0<72?3:4}if(oe[E|0]=w,f=f+1|0,(f|0)==2048)break}for(f=0,s[11892]=0,s[11893]=0,s[11894]=0,w=Gn(8192),s[11892]=w,N=w- -8192|0,s[11894]=N,k=fr(w,0,8192),s[11893]=N;;){E=f+k|0,w=252;e:{if(f>>>0<3821||(w=253,f>>>0<4030)||(w=254,f>>>0<4079)||(w=255,f>>>0<4096)||(N=f-4096|0,w=0,!N)||(w=1,N>>>0<18)||(w=2,N>>>0<67))break e;w=N>>>0<276?3:4}if(oe[E|0]=w,f=f+1|0,(f|0)==8192)break}for(f=0,s[11895]=0,s[11896]=0,s[11897]=0,w=Gn(131072),s[11895]=w,N=w+131072|0,s[11897]=N,k=fr(w,0,131072),s[11896]=N;;){E=f+k|0,w=252;e:{if(f>>>0<65261||(w=253,f>>>0<65470)||(w=254,f>>>0<65519)||(w=255,f>>>0<65536)||(N=f-65536|0,w=0,!N)||(w=1,N>>>0<18)||(w=2,N>>>0<67))break e;w=N>>>0<276?3:4}if(oe[E|0]=w,f=f+1|0,(f|0)==131072)break}s[11899]=216,s[11900]=0,Ep(),s[11900]=s[11898],s[11898]=47596,s[12203]=48692,s[12185]=42}function Q0(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0;J=s[f+44>>2],s[f+44>>2]=w,J&&Mr[s[s[J>>2]+4>>2]](J),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,N=0,yn=In-32|0,In=yn,k=f,f=s[k+16>>2],w=s[k+28>>2],J=s[k+116>>2],s[yn+24>>2]=0,s[yn+16>>2]=0,s[yn+20>>2]=0;e:{t:{if(kr=(w|0)!=1?1:f,xr=J+4|0,J=Ae(kr,xr),f=J<<1,f){if(f>>>0>=536870912)break t;f=J<<4,N=Gn(f),s[yn+16>>2]=N,fr(N,0,f)}s[yn+8>>2]=0,s[yn>>2]=0,s[yn+4>>2]=0;n:{r:{if(kr){if(kr>>>0<1073741824)break r;Li(),_t()}if(s[k+8>>2])break n;f=0;break e}if(w=kr<<2,f=Gn(w),s[yn>>2]=f,fr(f,0,w),!s[k+8>>2])break e;for(Fo=J+1<<3;;){w=s[yn+16>>2],N=w+8|0,s[k+6012>>2]=N,w=w+Fo|0,s[k+6016>>2]=w;r:{if(!(Br&1)){N=w;break r}s[k+6016>>2]=N,s[k+6012>>2]=w}for(w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,N,s[k+116>>2],xr),be=s[k+6012>>2],N=0;;){hi=N<<2,s[k+6008>>2]=s[hi+f>>2],f=(s[k+116>>2]<<3)+be|0,w=f-8|0,J=Re[w+4>>1]|Re[w+6>>1]<<16,w=Re[w>>1]|Re[w+2>>1]<<16,ke[f>>1]=w,ke[f+2>>1]=w>>>16,ke[f+4>>1]=J,ke[f+6>>1]=J>>>16,f=s[k+6012>>2],J=Re[f+4>>1]|Re[f+6>>1]<<16,w=s[k+6016>>2]-8|0,f=Re[f>>1]|Re[f+2>>1]<<16,ke[w>>1]=f,ke[w+2>>1]=f>>>16,ke[w+4>>1]=J,ke[w+6>>1]=J>>>16,f=0;r:{i:{if(s[k+116>>2])for(Pr=k+144|0;;){J=s[k+6012>>2],Ee=f+1|0,be=J+(Ee<<3)|0,cn=f<<3,w=J+cn|0,ie=Re[w+2>>1],W=cn-8|0,ue=W+J|0,ir=Re[ue+2>>1],ii=ie-ir|0,J=s[k+6020>>2],Xt=s[k+6016>>2],E=Xt+W|0,ye=Re[E+2>>1],Ci=ir-ye|0,Ln=Ae(Ae(oe[J+(Re[be+2>>1]-ie|0)|0],9)+oe[J+ii|0]|0,9)+oe[Ci+J|0]|0,W=Re[w>>1],rt=Re[ue>>1],Ct=W-rt|0,pt=Re[w+4>>1],Nr=Re[ue+4>>1],di=pt-Nr|0,Be=Re[w+6>>1],Wr=Re[ue+6>>1],Vi=Be-Wr|0,nn=Re[E+6>>1],Ni=Wr-nn|0,ti=oe[Ni+J|0]+Ae(oe[J+Vi|0]+Ae(oe[J+(Re[be+6>>1]-Be|0)|0],9)|0,9)|0,Wt=Re[E+4>>1],$i=Nr-Wt|0,ei=oe[$i+J|0]+Ae(oe[J+di|0]+Ae(oe[J+(Re[be+4>>1]-pt|0)|0],9)|0,9)|0,w=Re[E>>1],E=rt-w|0,ue=oe[J+E|0]+Ae(oe[J+Ct|0]+Ae(oe[J+(Re[be>>1]-W|0)|0],9)|0,9)|0;a:{if(!(ti|(ei|(ue|Ln)))){W=In+-64|0,In=W,w=f<<3,ye=w+s[k+6012>>2]|0,J=s[k+116>>2]-f|0,Be=w+s[k+6016>>2]|0,w=Be-8|0,ie=Re[w>>1]|Re[w+2>>1]<<16,w=Re[w+4>>1]|Re[w+6>>1]<<16,pt=w,nn=ie>>>16|0,Wt=ie&65535,E=w&65535,rt=w>>>16|0,be=0;s:{o:{for(;;){if(w=Be+(be<<3)|0,Ct=Re[w>>1]|Re[w+2>>1]<<16,cn=(Ct&65535)-Wt|0,Ee=cn>>31,ue=s[k+76>>2],(ue|0)<((Ee^cn)-Ee|0)||(Ct=(Ct>>>16|0)-nn|0,Ee=Ct>>31,(ue|0)<((Ee^Ct)-Ee|0))||(Ct=Re[w+4>>1]|Re[w+6>>1]<<16,cn=(Ct&65535)-E|0,Ee=cn>>31,(ue|0)<((Ee^cn)-Ee|0))||(Ct=(Ct>>>16|0)-rt|0,Ee=Ct>>31,((Ee^Ct)-Ee|0)>(ue|0)))break o;if(ke[w>>1]=ie,ke[w+2>>1]=ie>>>16,ke[w+4>>1]=pt,ke[w+6>>1]=pt>>>16,be=be+1|0,(be|0)==(J|0))break}A1(k,J,1);break s}if(w=(J|0)==(be|0),A1(k,be,w),w)break s;Ee=be<<3,ue=Ee+Be|0,w=ue,J=Re[w>>1]|Re[w+2>>1]<<16,Be=Re[w+4>>1]|Re[w+6>>1]<<16,s[W+40>>2]=ie,s[W+44>>2]=pt,s[W+48>>2]=J,s[W+52>>2]=Be,w=ye+Ee|0,Ee=Re[w>>1]|Re[w+2>>1]<<16,ye=Re[w+4>>1]|Re[w+6>>1]<<16,w=W,s[w+32>>2]=Ee,s[w+36>>2]=ye,s[w+24>>2]=J,s[w+28>>2]=Be,s[w+16>>2]=ie,s[w+20>>2]=pt,s[w+8>>2]=Ee,s[w+12>>2]=ye,ie=Re[w+8>>1],pt=ie>>>0>1]?-1:1,J=k+5984|0,Be=s[k+80>>2],Ee=s[k+76>>2],ye=Ae(pt,Re[w+24>>1]-ie|0),Ee=(((ye|0)>0?Ee:0-Ee|0)+ye|0)/(Ee<<1|1)|0,Ee=(Be&Ee>>31)+Ee|0,Wt=Ee-((Ee|0)>=((Be+1|0)/2|0)?Be:0)|0,$s(k,J,Wt),ye=Re[w+10>>1],E=ye>>>0>1]?-1:1,Be=s[k+80>>2],Ee=s[k+76>>2],nn=Ae(E,Re[w+26>>1]-ye|0),Ee=(((nn|0)>0?Ee:0-Ee|0)+nn|0)/(Ee<<1|1)|0,Ee=(Be&Ee>>31)+Ee|0,Xt=Ee-((Ee|0)>=((Be+1|0)/2|0)?Be:0)|0,$s(k,J,Xt),rt=Re[w+12>>1],Ct=rt>>>0>1]?-1:1,Be=s[k+80>>2],Ee=s[k+76>>2],nn=Ae(Ct,Re[w+28>>1]-rt|0),Ee=(((nn|0)>0?Ee:0-Ee|0)+nn|0)/(Ee<<1|1)|0,Ee=(Be&Ee>>31)+Ee|0,Ln=Ee-((Ee|0)>=((Be+1|0)/2|0)?Be:0)|0,$s(k,J,Ln),cn=Re[w+14>>1],Lt=cn>>>0>1]?-1:1,Ee=J,J=s[k+80>>2],Be=s[k+76>>2],w=Ae(Lt,Re[w+30>>1]-cn|0),w=(((w|0)>0?Be:0-Be|0)+w|0)/(Be<<1|1)|0,w=(J&w>>31)+w|0,w=w-((w|0)>=((J+1|0)/2|0)?J:0)|0,$s(k,Ee,w),Ee=s[k+76>>2],nn=Ee<<1,Be=nn|1,J=ie+Ae(Be,Ae(pt,Wt))|0,Wt=0-Ee|0;o:{if((J|0)<(Wt|0)){J=Ae(Be,s[k+80>>2])+J|0,ie=s[k+72>>2];break o}if(ie=s[k+72>>2],(Ee+ie|0)>=(J|0))break o;J=Ae(s[k+80>>2],nn^-1)+J|0}ye=ye+Ae(Be,Ae(E,Xt))|0;o:{if((Wt|0)>(ye|0)){ye=Ae(Be,s[k+80>>2])+ye|0;break o}if((ie+Ee|0)>=(ye|0))break o;ye=Ae(s[k+80>>2],nn^-1)+ye|0}pt=rt+Ae(Be,Ae(Ct,Ln))|0;o:{if((Wt|0)>(pt|0)){pt=Ae(Be,s[k+80>>2])+pt|0;break o}if((ie+Ee|0)>=(pt|0))break o;pt=Ae(s[k+80>>2],nn^-1)+pt|0}w=cn+Ae(w,Ae(Be,Lt))|0;o:{if((Wt|0)>(w|0)){w=Ae(Be,s[k+80>>2])+w|0;break o}if((ie+Ee|0)>=(w|0))break o;w=Ae(s[k+80>>2],nn^-1)+w|0}ke[W+62>>1]=(w&ie)==(w|0)?w:(w|0)>=0?ie:0,ke[W+60>>1]=(ie&pt)==(pt|0)?pt:(pt|0)>=0?ie:0,ke[W+58>>1]=(ie&ye)==(ye|0)?ye:(ye|0)>=0?ie:0,ke[W+56>>1]=(J&ie)==(J|0)?J:(J|0)>=0?ie:0,J=s[W+60>>2],w=ue,ue=s[W+56>>2],ke[w>>1]=ue,ke[w+2>>1]=ue>>>16,ke[w+4>>1]=J,ke[w+6>>1]=J>>>16,w=s[k+6008>>2],s[k+6008>>2]=((w|0)<=1?1:w)-1,J=be+1|0}In=W- -64|0,Ee=f+J|0;break a}f=w>>>0>W>>>0?-1:0;s:{if((f^E)<0)break s;if((f^Ct)<0){W=w;break s}W=(w-rt|0)+W|0}for(w=Be,be=pt,J=ie,Ct=ue>>31,rt=((ue^Ct)-Ct<<4)+Pr|0,Lt=s[rt>>2],E=s[rt+12>>2],f=0;ue=f,f>>>0<=15&&(f=ue+1|0,(Lt|0)>E<>2],f=s[k+76>>2],vn=Re[Xt+cn>>1],W=((s[rt+8>>2]^Ct)-Ct|0)+W|0,Xt=s[k+72>>2],o0=(W|0)==(W&Xt)?W:(W|0)>=0?Xt:0,W=(vn-o0^Ct)-Ct|0,W=(((W|0)>0?f:0-f|0)+W|0)/(f<<1|1)|0,W=(Lt&W>>31)+W|0,Xt=W-((W|0)>=((Lt+1|0)/2|0)?Lt:0)|0,f=Xt^(f|ue?0:(E+(s[rt+4>>2]<<1)|0)-1>>31),Lt=f>>30^f<<1,f=Lt>>ue,jn=s[k+92>>2],E=jn-s[k+84>>2]|0;s:{if((f|0)<(E-1|0)){if((f|0)>=31){W=f>>>1|0,E=s[k+52>>2]-W|0,s[k+52>>2]=E;o:{if((E|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}f=f-W|0}f=s[k+52>>2]+(f^-1)|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-ue|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,f=Lt&(-1<=0||(s[k+48>>2]=E|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2];o:{u:{if((E|0)>=32){f=W-31|0,s[k+52>>2]=f;l:{if((W|0)>30||(Ot(k),f=s[k+52>>2],(f|0)>=0))break l;Ot(k),f=s[k+52>>2]}if(E=(s[k+84>>2]+(f-jn|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}ue=s[k+48>>2]|1<>2]=ue,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=Lt-1&(-1<=0||(s[k+48>>2]=ue|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=$0,ue=s[k+96>>2],Lt=s[k+76>>2],f=Xt>>31,vn=s[rt>>2]+((f^Xt)-f|0)|0,s[rt>>2]=vn,so=Lt<<1,jn=so|1,E=s[rt+4>>2]+Ae(jn,Xt)|0,s[rt+4>>2]=E,(vn|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[rt+12>>2],(ue|0)==(f|0)&&(s[rt>>2]=vn>>1,E=E>>1,s[rt+4>>2]=E,f=ue>>1),ue=f+1|0,s[rt+12>>2]=ue,vn=E+ue|0;s:{o:{if((vn|0)<=0){if(s[rt+4>>2]=(vn|0)>(f^-1)?vn:0-f|0,f=s[rt+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-ue|0,s[rt+4>>2]=f>>31&f,f=s[rt+8>>2],(f|0)>126))break s;f=f+1|0}s[rt+8>>2]=f}E=o0+Ae(jn,(Ct^Xt)-Ct|0)|0,Xt=0-Lt|0;s:{if((E|0)<(Xt|0)){E=Ae(jn,s[k+80>>2])+E|0,rt=s[k+72>>2];break s}if(rt=s[k+72>>2],(Lt+rt|0)>=(E|0))break s;E=Ae(s[k+80>>2],so^-1)+E|0}f=ie>>>0>>0?-1:0;s:{if((f^Ci)<0||(J=ye,(f^ii)<0))break s;J=ie+(J-ir|0)|0}for(ye=Ln>>31,ie=((ye^Ln)-ye<<4)+Pr|0,Ln=s[ie>>2],Ct=s[ie+12>>2],f=0;ue=f,f>>>0<=15&&(f=ue+1|0,(Ln|0)>Ct<=0?rt:0,E=s[k+80>>2],vn=Xt,f=((ye^s[ie+8>>2])-ye|0)+J|0,Xt=(f|0)==(f&rt)?f:(f|0)>=0?rt:0,f=(ye^Re[(s[k+6016>>2]+cn|0)+2>>1]-Xt)-ye|0,f=(((f|0)>0?Lt:vn)+f|0)/(jn|0)|0,f=(E&f>>31)+f|0,J=f-((f|0)>=((E+1|0)/2|0)?E:0)|0,f=J^(ue|Lt?0:(Ct+(s[ie+4>>2]<<1)|0)-1>>31),rt=f>>30^f<<1,f=rt>>ue,Ct=s[k+92>>2],E=Ct-s[k+84>>2]|0;s:{if((f|0)<(E-1|0)){if((f|0)>=31){E=f>>>1|0,W=W-E|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-E|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-ue|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,f=rt&(-1<=0||(s[k+48>>2]=E|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Ct|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=$0|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}ue=s[k+48>>2]|1<>2]=ue,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=rt-1&(-1<=0||(s[k+48>>2]=ue|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=jn,ue=s[k+96>>2],rt=s[k+76>>2],f=J>>31,Lt=s[ie>>2]+((f^J)-f|0)|0,s[ie>>2]=Lt,ir=rt<<1,Ct=ir|1,E=s[ie+4>>2]+Ae(Ct,J)|0,s[ie+4>>2]=E,(Lt|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ie+12>>2],(ue|0)==(f|0)&&(s[ie>>2]=Lt>>1,E=E>>1,s[ie+4>>2]=E,f=ue>>1),ue=f+1|0,s[ie+12>>2]=ue,Lt=E+ue|0;s:{o:{if((Lt|0)<=0){if(s[ie+4>>2]=(Lt|0)>(f^-1)?Lt:0-f|0,f=s[ie+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-ue|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break s;f=f+1|0}s[ie+8>>2]=f}E=Xt+Ae(Ct,(J^ye)-ye|0)|0,Lt=0-rt|0;s:{if((E|0)<(Lt|0)){E=Ae(Ct,s[k+80>>2])+E|0,ye=s[k+72>>2];break s}if(ye=s[k+72>>2],(rt+ye|0)>=(E|0))break s;E=Ae(s[k+80>>2],ir^-1)+E|0}f=pt>>>0>>0?-1:0;s:{if((f^$i)<0||(be=Wt,(f^di)<0))break s;be=pt+(be-Nr|0)|0}for(ie=ei>>31,ue=((ie^ei)-ie<<4)+Pr|0,Wt=s[ue>>2],pt=s[ue+12>>2],f=0;J=f,f>>>0<=15&&(f=J+1|0,(Wt|0)>pt<=0?ye:0,Wt=s[k+80>>2],vn=Lt,f=((ie^s[ue+8>>2])-ie|0)+be|0,Lt=(f|0)==(f&ye)?f:(f|0)>=0?ye:0,f=(ie^Re[(s[k+6016>>2]+cn|0)+4>>1]-Lt)-ie|0,f=(((f|0)>0?rt:vn)+f|0)/(Ct|0)|0,f=(Wt&f>>31)+f|0,be=f-((f|0)>=((Wt+1|0)/2|0)?Wt:0)|0,f=be^(J|rt?0:(pt+(s[ue+4>>2]<<1)|0)-1>>31),pt=f>>30^f<<1,f=pt>>J,Wt=s[k+92>>2],ye=Wt-s[k+84>>2]|0;s:{if((f|0)<(ye-1|0)){if((f|0)>=31){ye=f>>>1|0,W=W-ye|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-ye|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-J|0,s[k+52>>2]=W,ye=s[k+48>>2]|1<>2]=ye,f=pt&(-1<=0||(s[k+48>>2]=ye|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Wt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-ye|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=jn|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=pt-1&(-1<=0||(s[k+48>>2]=J|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=rt,J=s[k+96>>2],pt=s[k+76>>2],f=be>>31,ye=s[ue>>2]+((f^be)-f|0)|0,s[ue>>2]=ye,Ct=pt<<1,Wt=Ct|1,E=s[ue+4>>2]+Ae(Wt,be)|0,s[ue+4>>2]=E,(ye|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ue+12>>2],(J|0)==(f|0)&&(s[ue>>2]=ye>>1,E=E>>1,s[ue+4>>2]=E,f=J>>1),J=f+1|0,s[ue+12>>2]=J,ye=E+J|0;s:{o:{if((ye|0)<=0){if(s[ue+4>>2]=(ye|0)>(f^-1)?ye:0-f|0,f=s[ue+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-J|0,s[ue+4>>2]=f>>31&f,f=s[ue+8>>2],(f|0)>126))break s;f=f+1|0}s[ue+8>>2]=f}E=Lt+Ae(Wt,(ie^be)-ie|0)|0,Lt=0-pt|0;s:{if((E|0)<(Lt|0)){E=Ae(Wt,s[k+80>>2])+E|0,ye=s[k+72>>2];break s}if(ye=s[k+72>>2],(pt+ye|0)>=(E|0))break s;E=Ae(s[k+80>>2],Ct^-1)+E|0}f=Be>>>0>>0?-1:0;s:{if((f^Ni)<0||(w=nn,(f^Vi)<0))break s;w=Be+(w-Wr|0)|0}for(ue=ti>>31,be=((ue^ti)-ue<<4)+Pr|0,Be=s[be>>2],ie=s[be+12>>2],f=0;J=f,f>>>0<=15&&(f=J+1|0,(Be|0)>ie<=0?ye:0,Be=s[k+80>>2],f=((ue^s[be+8>>2])-ue|0)+w|0,ye=(f|0)==(f&ye)?f:(f|0)>=0?ye:0,f=(ue^Re[(s[k+6016>>2]+cn|0)+6>>1]-ye)-ue|0,f=(((f|0)>0?pt:Lt)+f|0)/(Wt|0)|0,f=(Be&f>>31)+f|0,w=f-((f|0)>=((Be+1|0)/2|0)?Be:0)|0,f=w^(J|pt?0:(ie+(s[be+4>>2]<<1)|0)-1>>31),pt=f>>30^f<<1,f=pt>>J,Be=s[k+92>>2],ie=Be-s[k+84>>2]|0;s:{if((f|0)<(ie-1|0)){if((f|0)>=31){ie=f>>>1|0,W=W-ie|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-ie|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}ie=f-J|0,s[k+52>>2]=ie,W=s[k+48>>2]|1<>2]=W,f=pt&(-1<=0||(s[k+48>>2]=W|f>>>0-ie,Ot(k),ie=s[k+52>>2],(ie|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-ie,Ot(k),ie=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Be|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-ie|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=rt|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,f=s[k+84>>2],E=E-f|0,s[k+52>>2]=E,f=pt-1&(-1<=0||(s[k+48>>2]=J|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],f=s[k+96>>2],J=s[k+76>>2],W=w>>31,W=s[be>>2]+((W^w)-W|0)|0,s[be>>2]=W,Be=J<<1,pt=Be|1,E=s[be+4>>2]+Ae(pt,w)|0,s[be+4>>2]=E,(W|0)>16777215||(ie=E>>31,(ie^E)-ie>>>0>=16777216))break i;ie=s[be+12>>2],(f|0)==(ie|0)&&(s[be>>2]=W>>1,E=E>>1,s[be+4>>2]=E,ie=f>>1),f=ie+1|0,s[be+12>>2]=f,W=f+E|0;s:{o:{if((W|0)<=0){if(s[be+4>>2]=(W|0)>(ie^-1)?W:0-ie|0,f=s[be+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-f|0,s[be+4>>2]=f>>31&f,f=s[be+8>>2],(f|0)>126))break s;f=f+1|0}s[be+8>>2]=f}E=ye+Ae(pt,(w^ue)-ue|0)|0;s:{if((E|0)<(0-J|0)){E=Ae(pt,s[k+80>>2])+E|0,f=s[k+72>>2];break s}if(f=s[k+72>>2],(J+f|0)>=(E|0))break s;E=Ae(s[k+80>>2],Be^-1)+E|0}w=s[k+6016>>2]+cn|0,J=Ln&65535|Xt<<16,ke[w>>1]=J,ke[w+2>>1]=J>>>16,f=nn&65535|((f&E)==(E|0)?E:(E|0)>=0?f:0)<<16,ke[w+4>>1]=f,ke[w+6>>1]=f>>>16}if(f=Ee,!(f>>>0>2]))break}break r}Vn(5),_t()}if(f=s[yn>>2],s[hi+f>>2]=s[k+6008>>2],w=xr<<3,be=w+s[k+6012>>2]|0,s[k+6012>>2]=be,s[k+6016>>2]=w+s[k+6016>>2],N=N+1|0,(kr|0)==(N|0))break}if(Br=Br+1|0,!(Br>>>0>2]))break}break e}for(w=N+8|0,J=w+(J<<3)|0,N=0;s[k+6016>>2]=J,s[k+6012>>2]=w,f=J,N&1&&(s[k+6016>>2]=w,s[k+6012>>2]=J,f=w),be=s[k+44>>2],Mr[s[s[be>>2]+12>>2]](be,f,s[k+116>>2],xr),N=N+1|0,N>>>0>2];);f=0;break e}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(w=s[k+52>>2],w=w-((w-1|0)%8|0)|0,s[k+52>>2]=w,(w|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),f&&Gr(f),f=s[yn+16>>2],f&&Gr(f),In=yn+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function Lh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0;ue=s[f+44>>2],s[f+44>>2]=w,ue&&Mr[s[s[ue>>2]+4>>2]](ue),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,N=0,nn=In-32|0,In=nn,k=f,f=s[k+16>>2],w=s[k+28>>2],ue=s[k+116>>2],s[nn+24>>2]=0,s[nn+16>>2]=0,s[nn+20>>2]=0;e:{t:{if(kr=(w|0)!=1?1:f,xr=ue+4|0,ue=Ae(kr,xr),f=ue<<1,f){if(f>>>0>=1073741824)break t;f=ue<<3,N=Gn(f),s[nn+16>>2]=N,fr(N,0,f)}s[nn+8>>2]=0,s[nn>>2]=0,s[nn+4>>2]=0;n:{r:{if(kr){if(kr>>>0<1073741824)break r;Li(),_t()}if(s[k+8>>2])break n;f=0;break e}if(w=kr<<2,f=Gn(w),s[nn>>2]=f,fr(f,0,w),!s[k+8>>2])break e;for(Fo=ue+1<<2;;){w=s[nn+16>>2],N=w+4|0,s[k+6012>>2]=N,w=w+Fo|0,s[k+6016>>2]=w;r:{if(!(Br&1)){N=w;break r}s[k+6016>>2]=N,s[k+6012>>2]=w}for(w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,N,s[k+116>>2],xr),ue=s[k+6012>>2],N=0;;){hi=N<<2,s[k+6008>>2]=s[hi+f>>2],f=(s[k+116>>2]<<2)+ue|0,w=f-4|0,w=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),oe[f|0]=w,oe[f+1|0]=w>>>8,oe[f+2|0]=w>>>16,oe[f+3|0]=w>>>24,f=s[k+6016>>2]-4|0,w=s[k+6012>>2],w=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),oe[f|0]=w,oe[f+1|0]=w>>>8,oe[f+2|0]=w>>>16,oe[f+3|0]=w>>>24,f=0;r:{i:{if(s[k+116>>2])for(Pr=k+144|0;;){ue=s[k+6012>>2],Ee=f+1|0,rt=ue+(Ee<<2)|0,vn=f<<2,w=ue+vn|0,ie=de[w+1|0],W=vn-4|0,J=W+ue|0,ir=de[J+1|0],ii=ie-ir|0,ue=s[k+6020>>2],Xt=s[k+6016>>2],E=Xt+W|0,be=de[E+1|0],Ci=ir-be|0,Ln=Ae(Ae(oe[ue+(de[rt+1|0]-ie|0)|0],9)+oe[ue+ii|0]|0,9)+oe[Ci+ue|0]|0,W=de[w|0],Be=de[J|0],pt=W-Be|0,ye=de[w+2|0],Nr=de[J+2|0],di=ye-Nr|0,Lt=de[w+3|0],Wr=de[J+3|0],Vi=Lt-Wr|0,cn=de[E+3|0],Ni=Wr-cn|0,ti=oe[Ni+ue|0]+Ae(oe[ue+Vi|0]+Ae(oe[ue+(de[rt+3|0]-Lt|0)|0],9)|0,9)|0,Wt=de[E+2|0],$i=Nr-Wt|0,ei=oe[$i+ue|0]+Ae(oe[ue+di|0]+Ae(oe[ue+(de[rt+2|0]-ye|0)|0],9)|0,9)|0,w=de[E|0],E=Be-w|0,J=oe[ue+E|0]+Ae(oe[ue+pt|0]+Ae(oe[ue+(de[rt|0]-W|0)|0],9)|0,9)|0;a:{if(!(ti|(ei|(J|Ln)))){rt=In-48|0,In=rt,w=f<<2,be=w+s[k+6012>>2]|0,W=s[k+116>>2]-f|0,Lt=w+s[k+6016>>2]|0,w=Lt-4|0,w=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),cn=w&255,Wt=w>>>24|0,E=w>>>16&255,Be=w>>>8&255,ue=0;s:{o:{for(;;){if(J=Lt+(ue<<2)|0,ie=de[J|0]|de[J+1|0]<<8|(de[J+2|0]<<16|de[J+3|0]<<24),pt=(ie&255)-cn|0,Ee=pt>>31,ye=s[k+76>>2],(ye|0)<((Ee^pt)-Ee|0)||(pt=(ie>>>8&255)-Be|0,Ee=pt>>31,(ye|0)<((Ee^pt)-Ee|0))||(pt=(ie>>>16&255)-E|0,Ee=pt>>31,(ye|0)<((Ee^pt)-Ee|0))||(Ee=(ie>>>24|0)-Wt|0,ie=Ee>>31,(ye|0)<((ie^Ee)-ie|0)))break o;if(oe[J|0]=w,oe[J+1|0]=w>>>8,oe[J+2|0]=w>>>16,oe[J+3|0]=w>>>24,ue=ue+1|0,(ue|0)==(W|0))break}A1(k,W,1);break s}if(J=(W|0)==(ue|0),A1(k,ue,J),J)break s;W=ue<<2,Lt=W+Lt|0,J=de[Lt|0]|de[Lt+1|0]<<8|(de[Lt+2|0]<<16|de[Lt+3|0]<<24),s[rt+24>>2]=w,s[rt+32>>2]=J,W=W+be|0,W=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),s[rt+16>>2]=W,s[rt+12>>2]=J,s[rt+8>>2]=w,s[rt+4>>2]=W,W=de[rt+4|0],J=W>>>0>2],ye=s[k+76>>2],Ee=Ae(J,de[rt+12|0]-W|0),ye=(((Ee|0)>0?ye:0-ye|0)+Ee|0)/(ye<<1|1)|0,ye=(ie&ye>>31)+ye|0,Wt=ye-((ye|0)>=((ie+1|0)/2|0)?ie:0)|0,$s(k,w,Wt),ye=de[rt+5|0],E=ye>>>0>2],Ee=s[k+76>>2],be=Ae(E,de[rt+13|0]-ye|0),Ee=(((be|0)>0?Ee:0-Ee|0)+be|0)/(Ee<<1|1)|0,Ee=(ie&Ee>>31)+Ee|0,Xt=Ee-((Ee|0)>=((ie+1|0)/2|0)?ie:0)|0,$s(k,w,Xt),Be=de[rt+6|0],pt=Be>>>0>2],Ee=s[k+76>>2],be=Ae(pt,de[rt+14|0]-Be|0),Ee=(((be|0)>0?Ee:0-Ee|0)+be|0)/(Ee<<1|1)|0,Ee=(ie&Ee>>31)+Ee|0,Ln=Ee-((Ee|0)>=((ie+1|0)/2|0)?ie:0)|0,$s(k,w,Ln),vn=de[rt+7|0],Ct=vn>>>0>2],ie=s[k+76>>2],Ee=Ae(Ct,de[rt+15|0]-vn|0),ie=(((Ee|0)>0?ie:0-ie|0)+Ee|0)/(ie<<1|1)|0,ie=(w&ie>>31)+ie|0,w=ie-((ie|0)>=((w+1|0)/2|0)?w:0)|0,$s(k,be,w),be=s[k+76>>2],cn=be<<1,Ee=cn|1,ie=W+Ae(Ee,Ae(J,Wt))|0,Wt=0-be|0;o:{if((ie|0)<(Wt|0)){ie=Ae(Ee,s[k+80>>2])+ie|0,W=s[k+72>>2];break o}if(W=s[k+72>>2],(be+W|0)>=(ie|0))break o;ie=Ae(s[k+80>>2],cn^-1)+ie|0}J=ye+Ae(Ee,Ae(E,Xt))|0;o:{if((Wt|0)>(J|0)){J=Ae(Ee,s[k+80>>2])+J|0;break o}if((W+be|0)>=(J|0))break o;J=Ae(s[k+80>>2],cn^-1)+J|0}ye=Be+Ae(Ee,Ae(pt,Ln))|0;o:{if((Wt|0)>(ye|0)){ye=Ae(Ee,s[k+80>>2])+ye|0;break o}if((W+be|0)>=(ye|0))break o;ye=Ae(s[k+80>>2],cn^-1)+ye|0}w=vn+Ae(w,Ae(Ee,Ct))|0;o:{if((Wt|0)>(w|0)){w=Ae(Ee,s[k+80>>2])+w|0;break o}if((W+be|0)>=(w|0))break o;w=Ae(s[k+80>>2],cn^-1)+w|0}oe[rt+43|0]=(w&W)==(w|0)?w:(w|0)>=0?W:0,oe[rt+42|0]=(W&ye)==(ye|0)?ye:(ye|0)>=0?W:0,oe[rt+41|0]=(W&J)==(J|0)?J:(J|0)>=0?W:0,oe[rt+40|0]=(W&ie)==(ie|0)?ie:(ie|0)>=0?W:0,w=s[rt+40>>2],oe[Lt|0]=w,oe[Lt+1|0]=w>>>8,oe[Lt+2|0]=w>>>16,oe[Lt+3|0]=w>>>24,w=s[k+6008>>2],s[k+6008>>2]=((w|0)<=1?1:w)-1,W=ue+1|0}In=rt+48|0,Ee=f+W|0;break a}f=w>>>0>W>>>0?-1:0;s:{if((f^E)<0)break s;if((f^pt)<0){W=w;break s}W=(w-Be|0)+W|0}for(rt=Lt,ue=ye,w=ie,pt=J>>31,Be=((J^pt)-pt<<4)+Pr|0,Ct=s[Be>>2],E=s[Be+12>>2],f=0;J=f,f>>>0<=15&&(f=J+1|0,(Ct|0)>E<>2],f=s[k+76>>2],yn=de[Xt+vn|0],W=((s[Be+8>>2]^pt)-pt|0)+W|0,Xt=s[k+72>>2],o0=(W|0)==(W&Xt)?W:(W|0)>=0?Xt:0,W=(yn-o0^pt)-pt|0,W=(((W|0)>0?f:0-f|0)+W|0)/(f<<1|1)|0,W=(Ct&W>>31)+W|0,Xt=W-((W|0)>=((Ct+1|0)/2|0)?Ct:0)|0,f=Xt^(f|J?0:(E+(s[Be+4>>2]<<1)|0)-1>>31),Ct=f>>30^f<<1,f=Ct>>J,jn=s[k+92>>2],E=jn-s[k+84>>2]|0;s:{if((f|0)<(E-1|0)){if((f|0)>=31){W=f>>>1|0,E=s[k+52>>2]-W|0,s[k+52>>2]=E;o:{if((E|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}f=f-W|0}f=s[k+52>>2]+(f^-1)|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,f=Ct&(-1<=0||(s[k+48>>2]=E|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2];o:{u:{if((E|0)>=32){f=W-31|0,s[k+52>>2]=f;l:{if((W|0)>30||(Ot(k),f=s[k+52>>2],(f|0)>=0))break l;Ot(k),f=s[k+52>>2]}if(E=(s[k+84>>2]+(f-jn|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=Ct-1&(-1<=0||(s[k+48>>2]=J|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=$0,J=s[k+96>>2],Ct=s[k+76>>2],f=Xt>>31,yn=s[Be>>2]+((f^Xt)-f|0)|0,s[Be>>2]=yn,so=Ct<<1,jn=so|1,E=s[Be+4>>2]+Ae(jn,Xt)|0,s[Be+4>>2]=E,(yn|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[Be+12>>2],(J|0)==(f|0)&&(s[Be>>2]=yn>>1,E=E>>1,s[Be+4>>2]=E,f=J>>1),J=f+1|0,s[Be+12>>2]=J,yn=E+J|0;s:{o:{if((yn|0)<=0){if(s[Be+4>>2]=(yn|0)>(f^-1)?yn:0-f|0,f=s[Be+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-J|0,s[Be+4>>2]=f>>31&f,f=s[Be+8>>2],(f|0)>126))break s;f=f+1|0}s[Be+8>>2]=f}E=o0+Ae(jn,(pt^Xt)-pt|0)|0,Xt=0-Ct|0;s:{if((E|0)<(Xt|0)){E=Ae(jn,s[k+80>>2])+E|0,Be=s[k+72>>2];break s}if(Be=s[k+72>>2],(Ct+Be|0)>=(E|0))break s;E=Ae(s[k+80>>2],so^-1)+E|0}f=ie>>>0>>0?-1:0;s:{if((f^Ci)<0||(w=be,(f^ii)<0))break s;w=ie+(w-ir|0)|0}for(be=Ln>>31,ie=((be^Ln)-be<<4)+Pr|0,Ln=s[ie>>2],pt=s[ie+12>>2],f=0;J=f,f>>>0<=15&&(f=J+1|0,(Ln|0)>pt<=0?Be:0,E=s[k+80>>2],yn=Xt,f=((be^s[ie+8>>2])-be|0)+w|0,Xt=(f|0)==(f&Be)?f:(f|0)>=0?Be:0,f=(be^de[(s[k+6016>>2]+vn|0)+1|0]-Xt)-be|0,f=(((f|0)>0?Ct:yn)+f|0)/(jn|0)|0,f=(E&f>>31)+f|0,w=f-((f|0)>=((E+1|0)/2|0)?E:0)|0,f=w^(J|Ct?0:(pt+(s[ie+4>>2]<<1)|0)-1>>31),Be=f>>30^f<<1,f=Be>>J,pt=s[k+92>>2],E=pt-s[k+84>>2]|0;s:{if((f|0)<(E-1|0)){if((f|0)>=31){E=f>>>1|0,W=W-E|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-E|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,f=Be&(-1<=0||(s[k+48>>2]=E|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-pt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=$0|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=Be-1&(-1<=0||(s[k+48>>2]=J|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=jn,J=s[k+96>>2],Be=s[k+76>>2],f=w>>31,Ct=s[ie>>2]+((f^w)-f|0)|0,s[ie>>2]=Ct,ir=Be<<1,pt=ir|1,E=s[ie+4>>2]+Ae(pt,w)|0,s[ie+4>>2]=E,(Ct|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ie+12>>2],(J|0)==(f|0)&&(s[ie>>2]=Ct>>1,E=E>>1,s[ie+4>>2]=E,f=J>>1),J=f+1|0,s[ie+12>>2]=J,Ct=E+J|0;s:{o:{if((Ct|0)<=0){if(s[ie+4>>2]=(Ct|0)>(f^-1)?Ct:0-f|0,f=s[ie+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-J|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break s;f=f+1|0}s[ie+8>>2]=f}E=Xt+Ae(pt,(w^be)-be|0)|0,Ct=0-Be|0;s:{if((E|0)<(Ct|0)){E=Ae(pt,s[k+80>>2])+E|0,J=s[k+72>>2];break s}if(J=s[k+72>>2],(Be+J|0)>=(E|0))break s;E=Ae(s[k+80>>2],ir^-1)+E|0}f=ye>>>0>>0?-1:0;s:{if((f^$i)<0||(ue=Wt,(f^di)<0))break s;ue=ye+(ue-Nr|0)|0}for(ye=ei>>31,ie=((ye^ei)-ye<<4)+Pr|0,Wt=s[ie>>2],be=s[ie+12>>2],f=0;w=f,f>>>0<=15&&(f=w+1|0,(Wt|0)>be<=0?J:0,Wt=s[k+80>>2],yn=Ct,f=((ye^s[ie+8>>2])-ye|0)+ue|0,Ct=(f|0)==(f&J)?f:(f|0)>=0?J:0,f=(ye^de[(s[k+6016>>2]+vn|0)+2|0]-Ct)-ye|0,f=(((f|0)>0?Be:yn)+f|0)/(pt|0)|0,f=(Wt&f>>31)+f|0,ue=f-((f|0)>=((Wt+1|0)/2|0)?Wt:0)|0,f=ue^(w|Be?0:(be+(s[ie+4>>2]<<1)|0)-1>>31),J=f>>30^f<<1,f=J>>w,Wt=s[k+92>>2],be=Wt-s[k+84>>2]|0;s:{if((f|0)<(be-1|0)){if((f|0)>=31){be=f>>>1|0,W=W-be|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-be|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-w|0,s[k+52>>2]=W,be=s[k+48>>2]|1<>2]=be,f=J&(-1<=0||(s[k+48>>2]=be|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Wt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-be|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=jn|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}w=s[k+48>>2]|1<>2]=w,f=s[k+84>>2],W=E-f|0,s[k+52>>2]=W,f=J-1&(-1<=0||(s[k+48>>2]=w|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=Be,w=s[k+96>>2],be=s[k+76>>2],f=ue>>31,J=s[ie>>2]+((f^ue)-f|0)|0,s[ie>>2]=J,pt=be<<1,Wt=pt|1,E=s[ie+4>>2]+Ae(Wt,ue)|0,s[ie+4>>2]=E,(J|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ie+12>>2],(w|0)==(f|0)&&(s[ie>>2]=J>>1,E=E>>1,s[ie+4>>2]=E,f=w>>1),w=f+1|0,s[ie+12>>2]=w,J=w+E|0;s:{o:{if((J|0)<=0){if(s[ie+4>>2]=(J|0)>(f^-1)?J:0-f|0,f=s[ie+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-w|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break s;f=f+1|0}s[ie+8>>2]=f}E=Ct+Ae(Wt,(ue^ye)-ye|0)|0,Ct=0-be|0;s:{if((E|0)<(Ct|0)){E=Ae(Wt,s[k+80>>2])+E|0,J=s[k+72>>2];break s}if(J=s[k+72>>2],(be+J|0)>=(E|0))break s;E=Ae(s[k+80>>2],pt^-1)+E|0}f=Lt>>>0>>0?-1:0;s:{if((f^Ni)<0||(rt=cn,(f^Vi)<0))break s;rt=Lt+(rt-Wr|0)|0}for(ie=ti>>31,ue=((ie^ti)-ie<<4)+Pr|0,Lt=s[ue>>2],ye=s[ue+12>>2],f=0;w=f,f>>>0<=15&&(f=w+1|0,(Lt|0)>ye<=0?J:0,Lt=s[k+80>>2],f=((ie^s[ue+8>>2])-ie|0)+rt|0,pt=(f|0)==(f&J)?f:(f|0)>=0?J:0,f=(ie^de[(s[k+6016>>2]+vn|0)+3|0]-pt)-ie|0,f=(((f|0)>0?be:Ct)+f|0)/(Wt|0)|0,f=(Lt&f>>31)+f|0,rt=f-((f|0)>=((Lt+1|0)/2|0)?Lt:0)|0,f=rt^(w|be?0:(ye+(s[ue+4>>2]<<1)|0)-1>>31),J=f>>30^f<<1,f=J>>w,Lt=s[k+92>>2],ye=Lt-s[k+84>>2]|0;s:{if((f|0)<(ye-1|0)){if((f|0)>=31){ye=f>>>1|0,W=W-ye|0,s[k+52>>2]=W;o:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break o;Ot(k),W=s[k+52>>2]}f=f-ye|0}f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-w|0,s[k+52>>2]=W,ye=s[k+48>>2]|1<>2]=ye,f=J&(-1<=0||(s[k+48>>2]=ye|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<=32){E=W-31|0,s[k+52>>2]=E;l:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break l;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Lt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break u;break o}if(E=W-ye|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=Be|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}w=s[k+48>>2]|1<>2]=w,f=s[k+84>>2],E=E-f|0,s[k+52>>2]=E,f=J-1&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],f=s[k+96>>2],w=s[k+76>>2],W=rt>>31,J=s[ue>>2]+((W^rt)-W|0)|0,s[ue>>2]=J,Lt=w<<1,ye=Lt|1,E=s[ue+4>>2]+Ae(ye,rt)|0,s[ue+4>>2]=E,(J|0)>16777215||(W=E>>31,(W^E)-W>>>0>=16777216))break i;W=s[ue+12>>2],(f|0)==(W|0)&&(s[ue>>2]=J>>1,E=E>>1,s[ue+4>>2]=E,W=f>>1),f=W+1|0,s[ue+12>>2]=f,J=f+E|0;s:{o:{if((J|0)<=0){if(s[ue+4>>2]=(J|0)>(W^-1)?J:0-W|0,f=s[ue+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-f|0,s[ue+4>>2]=f>>31&f,f=s[ue+8>>2],(f|0)>126))break s;f=f+1|0}s[ue+8>>2]=f}E=pt+Ae(ye,(ie^rt)-ie|0)|0;s:{if((E|0)<(0-w|0)){E=Ae(ye,s[k+80>>2])+E|0,f=s[k+72>>2];break s}if(f=s[k+72>>2],(w+f|0)>=(E|0))break s;E=Ae(s[k+80>>2],Lt^-1)+E|0}w=s[k+6016>>2]+vn|0,f=Ln&255|(Xt<<8&65280|(cn<<16&16711680|((f&E)==(E|0)?E:(E|0)>=0?f:0)<<24)),oe[w|0]=f,oe[w+1|0]=f>>>8,oe[w+2|0]=f>>>16,oe[w+3|0]=f>>>24}if(f=Ee,!(f>>>0>2]))break}break r}Vn(5),_t()}if(f=s[nn>>2],s[hi+f>>2]=s[k+6008>>2],w=xr<<2,ue=w+s[k+6012>>2]|0,s[k+6012>>2]=ue,s[k+6016>>2]=w+s[k+6016>>2],N=N+1|0,(kr|0)==(N|0))break}if(Br=Br+1|0,!(Br>>>0>2]))break}break e}for(w=N+4|0,ue=w+(ue<<2)|0,N=0;s[k+6016>>2]=ue,s[k+6012>>2]=w,f=ue,N&1&&(s[k+6016>>2]=w,s[k+6012>>2]=ue,f=w),rt=s[k+44>>2],Mr[s[s[rt>>2]+12>>2]](rt,f,s[k+116>>2],xr),N=N+1|0,N>>>0>2];);f=0;break e}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(w=s[k+52>>2],w=w-((w-1|0)%8|0)|0,s[k+52>>2]=w,(w|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),f&&Gr(f),f=s[nn+16>>2],f&&Gr(f),In=nn+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function Qs(f,w,N){var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0;e:{t:{if(s[N+16>>2]!=64)break t;n:{r:{i:{if(ie=s[w+8>>2],(ie|0)==2){if(E=s[f+12>>2],E-3>>>0>1)break n;if(ye=s[w>>2],ye)break i;if(k=s[f+8>>2],!((E|0)!=3|(k|0)!=8)){for(k=Gn(6012),s[k+12>>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=3,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+76>>2]=0,s[k+80>>2]=0,s[k>>2]=8912,s[k+84>>2]=0,s[k+88>>2]=0,W=s[f>>2],s[k+112>>2]=0,s[k+116>>2]=0,s[k+92>>2]=W,s[k+96>>2]=0,s[k+100>>2]=0,oe[k+101|0]=0,oe[k+102|0]=0,oe[k+103|0]=0,oe[k+104|0]=0,oe[k+105|0]=0,oe[k+106|0]=0,oe[k+107|0]=0,oe[k+108|0]=0,J=k+120|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5960>>2]=0,s[k+5964>>2]=0,ke[k+5980>>1]=1,E=k+5972|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5968>>1]=1,E=k+5984|0;break r}if(ye=0,(E|0)!=4|(k|0)!=8)break i;for(k=Gn(6012),s[k+12>>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=4,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+76>>2]=0,s[k+80>>2]=0,s[k>>2]=9040,s[k+84>>2]=0,s[k+88>>2]=0,W=s[f>>2],s[k+112>>2]=0,s[k+116>>2]=0,s[k+92>>2]=W,s[k+96>>2]=0,s[k+100>>2]=0,oe[k+101|0]=0,oe[k+102|0]=0,oe[k+103|0]=0,oe[k+104|0]=0,oe[k+105|0]=0,oe[k+106|0]=0,oe[k+107|0]=0,oe[k+108|0]=0,J=k+120|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5960>>2]=0,s[k+5964>>2]=0,ke[k+5980>>1]=1,E=k+5972|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5968>>1]=1,E=k+5984|0;break r}if(ye=s[w>>2],ye)break i;ye=0;a:switch(s[f+8>>2]-8|0){case 0:for(k=Gn(6012),E=s[f+12>>2],s[k+12>>2]=s[f+8>>2],W=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=W,s[k+16>>2]=ie?E:1,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+76>>2]=0,s[k+80>>2]=0,s[k>>2]=9164,s[k+84>>2]=0,s[k+88>>2]=0,W=s[f>>2],s[k+112>>2]=0,s[k+116>>2]=0,s[k+92>>2]=W,s[k+96>>2]=0,s[k+100>>2]=0,oe[k+101|0]=0,oe[k+102|0]=0,oe[k+103|0]=0,oe[k+104|0]=0,oe[k+105|0]=0,oe[k+106|0]=0,oe[k+107|0]=0,oe[k+108|0]=0,J=k+120|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5960>>2]=0,s[k+5964>>2]=0,ke[k+5980>>1]=1,E=k+5972|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5968>>1]=1,E=k+5984|0;break r;case 4:for(k=Gn(6012),E=s[f+12>>2],s[k+12>>2]=s[f+8>>2],W=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=W,s[k+16>>2]=ie?E:1,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+76>>2]=0,s[k+80>>2]=0,s[k>>2]=9276,s[k+84>>2]=0,s[k+88>>2]=0,W=s[f>>2],s[k+112>>2]=0,s[k+116>>2]=0,s[k+92>>2]=W,s[k+96>>2]=0,s[k+100>>2]=0,oe[k+101|0]=0,oe[k+102|0]=0,oe[k+103|0]=0,oe[k+104|0]=0,oe[k+105|0]=0,oe[k+106|0]=0,oe[k+107|0]=0,oe[k+108|0]=0,J=k+120|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5960>>2]=0,s[k+5964>>2]=0,ke[k+5980>>1]=1,E=k+5972|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5968>>1]=1,E=k+5984|0;break r;case 8:break a;default:break i}for(k=Gn(6012),E=s[f+12>>2],s[k+12>>2]=s[f+8>>2],W=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=W,s[k+16>>2]=ie?E:1,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+76>>2]=0,s[k+80>>2]=0,s[k>>2]=9392,s[k+84>>2]=0,s[k+88>>2]=0,W=s[f>>2],s[k+112>>2]=0,s[k+116>>2]=0,s[k+92>>2]=W,s[k+96>>2]=0,s[k+100>>2]=0,oe[k+101|0]=0,oe[k+102|0]=0,oe[k+103|0]=0,oe[k+104|0]=0,oe[k+105|0]=0,oe[k+106|0]=0,oe[k+107|0]=0,oe[k+108|0]=0,J=k+120|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5960>>2]=0,s[k+5964>>2]=0,ke[k+5980>>1]=1,E=k+5972|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5968>>1]=1,E=k+5984|0;break r}if(E=s[f+8>>2],ue=-1<>2]-3|0){case 0:for(k=ye<<1,ie=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(ie|0)>=1<1<>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=3,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=ie+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=9508,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0;break r;case 1:break a;default:break i}for(k=ye<<1,ie=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(ie|0)>=1<1<>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=4,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=ie+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=9632,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0;break r}for(k=ye<<1,Ee=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(Ee|0)>=1<1<>2],s[k+12>>2]=s[f+8>>2],be=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=be,s[k+16>>2]=ie?E:1,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=Ee+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=8632,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0;break r}if(k=0,E>>>0>16)break n;i:{if((ie|0)!=2)break i;a:switch(s[f+12>>2]-3|0){case 0:for(k=ye<<1,ie=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(ie|0)>=1<1<>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=3,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=ie+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=9752,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0;break r;case 1:break a;default:break i}for(k=ye<<1,ie=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(ie|0)>=1<1<>2]=s[f+8>>2],E=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=E,s[k+16>>2]=4,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=ie+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=9876,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0;break r}for(k=ye<<1,Ee=(k+ue|0)/(k|1)|0,E=0,k=0;J=k,k=k+1|0,(Ee|0)>=1<1<>2],s[k+12>>2]=s[f+8>>2],be=s[f+4>>2],s[k+4>>2]=s[f>>2],s[k+8>>2]=be,s[k+16>>2]=ie?E:1,E=s[w+4>>2],s[k+20>>2]=s[w>>2],s[k+24>>2]=E,E=s[w+12>>2],s[k+28>>2]=s[w+8>>2],s[k+32>>2]=E,s[k+36>>2]=s[w+16>>2],E=0,s[k+68>>2]=0,s[k+48>>2]=0,s[k+52>>2]=32,s[k+40>>2]=0,s[k+44>>2]=0,s[k+56>>2]=0,s[k+60>>2]=0,oe[k- -64|0]=0,s[k+96>>2]=64,s[k+92>>2]=W+((W|0)<=8?8:W)<<1,s[k+88>>2]=W,s[k+84>>2]=J,s[k+80>>2]=Ee+1,s[k+76>>2]=ye,s[k+72>>2]=ue,s[k>>2]=8804,s[k+100>>2]=0,s[k+104>>2]=0,s[k+108>>2]=0,s[k+112>>2]=0,W=s[f>>2],s[k+136>>2]=0,s[k+140>>2]=0,s[k+116>>2]=W,s[k+120>>2]=0,s[k+124>>2]=0,oe[k+125|0]=0,oe[k+126|0]=0,oe[k+127|0]=0,oe[k+128|0]=0,oe[k+129|0]=0,oe[k+130|0]=0,oe[k+131|0]=0,oe[k+132|0]=0,J=k+144|0;;){if(W=J+(E<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,W=E|1,(W|0)!=365){W=J+(W<<4)|0,s[W+8>>2]=0,s[W+12>>2]=1,s[W>>2]=0,s[W+4>>2]=0,E=E+2|0;continue}break}s[k+5984>>2]=0,s[k+5988>>2]=0,ke[k+6004>>1]=1,E=k+5996|0,s[E>>2]=0,s[E+4>>2]=0,ke[k+5992>>1]=1,E=k+6008|0}s[E>>2]=0,s[E+4>>2]=0,s[E+24>>2]=0,s[E+16>>2]=0,s[E+20>>2]=0,s[E+8>>2]=0,s[E+12>>2]=0}if(E=k,!k)break t;f=s[E>>2];break e}if(ye=s[w>>2],k=ye<<1,W=s[f+8>>2],E=-1<>2],k=0,(W|0)<=8){for(;J=k,k=k+1|0,(ue|0)>=1<1<>2],E=Gn(6036),Ee=s[w+8>>2],be=s[f+12>>2],s[E+12>>2]=s[f+8>>2],Be=s[f+4>>2],s[E+4>>2]=s[f>>2],s[E+8>>2]=Be,s[E+16>>2]=Ee?be:1,Ee=s[w+16>>2],be=s[w+8>>2],Be=s[w+12>>2],rt=s[w>>2],pt=s[w+4>>2],s[E>>2]=8632,s[E+72>>2]=k,s[E+76>>2]=ye,s[E+80>>2]=ue+1,s[E+84>>2]=J,s[E+88>>2]=W,s[E+92>>2]=W+((W|0)<=8?8:W)<<1,s[E+96>>2]=ie,k=0,oe[E- -64|0]=0,s[E+56>>2]=0,s[E+60>>2]=0,s[E+68>>2]=0,s[E+40>>2]=0,s[E+44>>2]=0,s[E+48>>2]=0,s[E+52>>2]=32,s[E+20>>2]=rt,s[E+24>>2]=pt,s[E+28>>2]=be,s[E+32>>2]=Be,s[E+36>>2]=Ee,s[E+108>>2]=0,s[E+112>>2]=0,s[E+100>>2]=0,s[E+104>>2]=0,f=s[f>>2],s[E+136>>2]=0,s[E+140>>2]=0,s[E+116>>2]=f,s[E+120>>2]=0,s[E+124>>2]=0,oe[E+125|0]=0,oe[E+126|0]=0,oe[E+127|0]=0,oe[E+128|0]=0,oe[E+129|0]=0,oe[E+130|0]=0,oe[E+131|0]=0,oe[E+132|0]=0,W=E+144|0;;){if(f=W+(k<<4)|0,s[f+8>>2]=0,s[f+12>>2]=1,s[f>>2]=0,s[f+4>>2]=0,f=k|1,(f|0)!=365){f=W+(f<<4)|0,s[f+8>>2]=0,s[f+12>>2]=1,s[f>>2]=0,s[f+4>>2]=0,k=k+2|0;continue}break}s[E+6008>>2]=0,s[E+6012>>2]=0,s[E+5984>>2]=0,s[E+5988>>2]=0,ke[E+6004>>1]=1,f=E+5996|0,s[f>>2]=0,s[f+4>>2]=0,ke[E+5992>>1]=1,f=E+6016|0,s[f>>2]=0,s[f+4>>2]=0,f=E+6024|0,s[f>>2]=0,s[f+4>>2]=0,s[E+6032>>2]=0,f=8632;break e}for(;J=k,k=k+1|0,(ue|0)>=1<1<>2],E=Gn(6036),Ee=s[w+8>>2],be=s[f+12>>2],s[E+12>>2]=s[f+8>>2],Be=s[f+4>>2],s[E+4>>2]=s[f>>2],s[E+8>>2]=Be,s[E+16>>2]=Ee?be:1,Ee=s[w+16>>2],be=s[w+8>>2],Be=s[w+12>>2],rt=s[w>>2],pt=s[w+4>>2],s[E>>2]=8804,s[E+72>>2]=k,s[E+76>>2]=ye,s[E+80>>2]=ue+1,s[E+84>>2]=J,s[E+88>>2]=W,s[E+92>>2]=W+((W|0)<=8?8:W)<<1,s[E+96>>2]=ie,k=0,oe[E- -64|0]=0,s[E+56>>2]=0,s[E+60>>2]=0,s[E+68>>2]=0,s[E+40>>2]=0,s[E+44>>2]=0,s[E+48>>2]=0,s[E+52>>2]=32,s[E+20>>2]=rt,s[E+24>>2]=pt,s[E+28>>2]=be,s[E+32>>2]=Be,s[E+36>>2]=Ee,s[E+108>>2]=0,s[E+112>>2]=0,s[E+100>>2]=0,s[E+104>>2]=0,f=s[f>>2],s[E+136>>2]=0,s[E+140>>2]=0,s[E+116>>2]=f,s[E+120>>2]=0,s[E+124>>2]=0,oe[E+125|0]=0,oe[E+126|0]=0,oe[E+127|0]=0,oe[E+128|0]=0,oe[E+129|0]=0,oe[E+130|0]=0,oe[E+131|0]=0,oe[E+132|0]=0,W=E+144|0;;){if(f=W+(k<<4)|0,s[f+8>>2]=0,s[f+12>>2]=1,s[f>>2]=0,s[f+4>>2]=0,f=k|1,(f|0)!=365){f=W+(f<<4)|0,s[f+8>>2]=0,s[f+12>>2]=1,s[f>>2]=0,s[f+4>>2]=0,k=k+2|0;continue}break}s[E+6008>>2]=0,s[E+6012>>2]=0,s[E+5984>>2]=0,s[E+5988>>2]=0,ke[E+6004>>1]=1,f=E+5996|0,s[f>>2]=0,s[f+4>>2]=0,ke[E+5992>>1]=1,f=E+6016|0,s[f>>2]=0,s[f+4>>2]=0,f=E+6024|0,s[f>>2]=0,s[f+4>>2]=0,s[E+6032>>2]=0,f=8804}return Mr[s[f+12>>2]](E,N,s[w+4>>2]),E}function Z2(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0;W=s[f+40>>2],s[f+40>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),$i=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,W=s[k+4>>2],w=s[k>>2],s[f+52>>2]=w,N=w+W|0,s[f+56>>2]=N,w=wi(w,255,W),s[f+60>>2]=w||N,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),w=0,N=0,Wt=In-32|0,In=Wt,E=f,W=s[E+16>>2],k=s[E+28>>2],f=s[E+108>>2],s[Wt+24>>2]=0,s[Wt+16>>2]=0,s[Wt+20>>2]=0;e:{t:{n:{if(jn=(k|0)!=1?1:W,Wr=f+4|0,W=Ae(jn,Wr),k=W<<1,k){if((k|0)<0)break n;f=W<<2,vn=Gn(f),s[Wt+16>>2]=vn,s[Wt+24>>2]=(k<<1)+vn,N=fr(vn,0,f)+f|0,s[Wt+20>>2]=N}s[Wt+8>>2]=0,s[Wt>>2]=0,s[Wt+4>>2]=0;r:{if(jn){if(jn>>>0>=1073741824)break r;f=jn<<2,yn=Gn(f),s[Wt>>2]=yn,w=f+yn|0,s[Wt+8>>2]=w,fr(yn,0,f),s[Wt+4>>2]=w}kr=vn+2|0,Pr=kr+(W<<1)|0,ti=w-yn|0,o0=((ti>>>2|0)-(ti>>>0>3)<<2)+4|0,ei=N-vn|0,$0=((ei>>>1|0)-((ei|0)!=1)<<1)+2|0,hi=E+5976|0,Vi=E+136|0,so=0-W<<1;i:{a:{s:{for(;;){w=s[E+128>>2],N=s[E+8>>2],f=N-Ln|0,ii=f>>>0>w>>>0?w:f;o:{if(!ii){Ci=Ln;break o}for(Ci=Ln+ii|0,di=0;;){s[E+6008>>2]=Pr,s[E+6004>>2]=kr,W=Pr,w=kr,Ln&1&&(s[E+6008>>2]=kr,s[E+6004>>2]=Pr,W=kr,w=Pr),Br=0;u:{if(!jn)break u;l:{for(;;){h:{if(Ni=Br<<2,k=s[Ni+yn>>2],s[E+6e3>>2]=k,N=s[E+108>>2],f=(N<<1)+w|0,ke[f>>1]=Re[f-2>>1],ke[W-2>>1]=Re[w>>1],N){for(W=Re[w-2>>1],ue=Re[w>>1],J=0;;){f:{p:{c:{m:{g:{d:{v:{if(f=s[E+6012>>2],xr=J+1|0,Ct=Re[s[E+6004>>2]+(xr<<1)>>1],ie=ue-W|0,cn=J<<1,ye=cn+s[E+6008>>2]|0,rt=Re[ye-2>>1],W=W-rt|0,f=Ae(Ae(oe[f+(Ct-ue|0)|0],9)+oe[ie+f|0]|0,9)+oe[W+f|0]|0,f){for(Ee=f>>31,pt=((Ee^f)-Ee<<4)+Vi|0,k=s[pt>>2],N=s[pt+12>>2],w=0,f=ue>>>0>>0?-1:0,Lt=W^f,Xt=rt+((f^ie)>=0?ie:0)|0;W=w,W>>>0<=15&&(w=W+1|0,(k|0)>N<>2],rt=s[E+64>>2],w=s[E+48>>2],(w|0)>7)break p;if(N=s[E+52>>2],N>>>0>2]-3>>>0)break v;for(ye=s[E+56>>2],ie=ye-1|0;;){if(N>>>0>=ye>>>0){if(w)break p;break t}if(J=de[N|0],f=(J|0)!=255,!(f|(N|0)!=(ie|0)&oe[N+1|0]>=0)){if((w|0)>0)break p;break t}if(N=N+1|0,s[E+52>>2]=N,k=w+8|0,s[E+48>>2]=k,s[E+44>>2]=s[E+44>>2]|J<<24-w,f||(k=w+7|0,s[E+48>>2]=k),w=k,!((w|0)<24))break}f=wi(N,255,ye-N|0),s[E+60>>2]=f||ye;break p}Ct=N-J|0,ie=s[E+56>>2],ue=ie-1|0,N=s[E+48>>2],be=0;k:{y:{w:{for(;;){C:{if((N|0)>0){w=N;break C}if(W=s[E+52>>2],W>>>0>=s[E+60>>2]-3>>>0){for(w=N;;){if(W>>>0>=ie>>>0){if(w)break C;break t}if(k=de[W|0],f=(k|0)!=255,!(f|(W|0)!=(ue|0)&oe[W+1|0]>=0)){if((w|0)>0)break C;break t}if(W=W+1|0,s[E+52>>2]=W,N=w+8|0,s[E+48>>2]=N,s[E+44>>2]=s[E+44>>2]|k<<24-w,f||(N=w+7|0,s[E+48>>2]=N),w=N,!((w|0)<24))break}f=wi(W,255,ie-W|0),s[E+60>>2]=f||ie;break C}w=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+W,s[E+44>>2]=s[E+44>>2]|(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>N,w=(f&-8)+N|0}if(k=s[E+44>>2],N=w-1|0,s[E+48>>2]=N,f=k<<1,s[E+44>>2]=f,(k|0)<0){if(W=Ct-be|0,k=s[E+6e3>>2],w=1<>2],be=((w|0)>(W|0)?W:w)+be|0,(w|0)<=(W|0)&&(s[E+6e3>>2]=((k|0)>=30?30:k)+1),(be|0)!=(Ct|0))continue;break w}break}if((be|0)!=(Ct|0))break y}ue=f;break k}k=Ct,W=s[(s[E+6e3>>2]<<2)+6936>>2];y:{if((W|0)<=0){ue=f,f=0;break y}if((w|0)<=(W|0)){if(zr(E),N=s[E+48>>2],(W|0)>(N|0))break t;f=s[E+44>>2]}N=N-W|0,s[E+48>>2]=N,ue=f<>2]=ue,f=f>>>32-W|0}if(Ct=f+be|0,(k|0)<(Ct|0))break t}k:{if((Ct|0)<=0)break k;if(k=0,w=0,Ct>>>0>=8)for(W=Ct&-8,f=0;ie=w<<1,ke[ie+ye>>1]=rt,ke[ye+(ie|2)>>1]=rt,ke[ye+(ie|4)>>1]=rt,ke[ye+(ie|6)>>1]=rt,ke[ye+(ie|8)>>1]=rt,ke[ye+(ie|10)>>1]=rt,ke[ye+(ie|12)>>1]=rt,ke[ye+(ie|14)>>1]=rt,w=w+8|0,f=f+8|0,(W|0)!=(f|0););if(f=Ct&7,!f)break k;for(;ke[ye+(w<<1)>>1]=rt,w=w+1|0,k=k+1|0,(f|0)!=(k|0););}if(f=J+Ct|0,(f|0)==s[E+108>>2])break c;Nr=f<<1,nn=Re[Nr+s[E+6004>>2]>>1],f=rt-nn|0,w=f>>31;k:{y:{if(s[E+68>>2]>=((f^w)-w|0)){if(Ee=0,be=s[E+5988>>2],nn=de[E+5996|0],W=nn,f=s[E+5992>>2]+Ae(be,W>>>1|0)|0,(f|0)>(W|0))for(;Ee=Ee+1|0,W=W<<1,(f|0)>(W|0););if(Be=s[(s[E+6e3>>2]<<2)+6936>>2],ye=s[E+84>>2],Lt=s[E+76>>2],(N|0)>15)break g;if(W=s[E+52>>2],W>>>0>2]-3>>>0)break y;for(ie=s[E+56>>2],J=ie-1|0;;){if(W>>>0>=ie>>>0){if(N)break g;break t}if(k=de[W|0],f=(k|0)!=255,!(f|(W|0)!=(J|0)&oe[W+1|0]>=0)){if((N|0)>0)break g;break t}if(W=W+1|0,s[E+52>>2]=W,w=N+8|0,s[E+48>>2]=w,ue=k<<24-N|ue,s[E+44>>2]=ue,f||(w=N+7|0,s[E+48>>2]=w),N=w,!((w|0)<24))break}f=wi(W,255,ie-W|0),s[E+60>>2]=f||ie;break g}if(Ee=0,cn=s[E+5976>>2],be=de[E+5984|0],W=be,f=s[E+5980>>2]+Ae(cn,W>>>1|0)|0,(f|0)>(W|0))for(;Ee=Ee+1|0,W=W<<1,(f|0)>(W|0););if(Be=s[(s[E+6e3>>2]<<2)+6936>>2],ye=s[E+84>>2],Lt=s[E+76>>2],(N|0)>15)break d;if(W=s[E+52>>2],W>>>0>2]-3>>>0)break k;for(ie=s[E+56>>2],J=ie-1|0;;){if(W>>>0>=ie>>>0){if(N)break d;break t}if(k=de[W|0],f=(k|0)!=255,!(f|(W|0)!=(J|0)&oe[W+1|0]>=0)){if((N|0)>0)break d;break t}if(W=W+1|0,s[E+52>>2]=W,w=N+8|0,s[E+48>>2]=w,ue=k<<24-N|ue,s[E+44>>2]=ue,f||(w=N+7|0,s[E+48>>2]=w),N=w,!((w|0)<24))break}f=wi(W,255,ie-W|0),s[E+60>>2]=f||ie;break d}w=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+W,f=(f&-8)+N|0,s[E+48>>2]=f,ue=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>N|ue,s[E+44>>2]=ue,N=f;break g}w=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+W,f=(f&-8)+N|0,s[E+48>>2]=f,ue=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>N|ue,s[E+44>>2]=ue,N=f;break d}k=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+N,f=(f&-8)+w|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(k<<24|(k&65280)<<8|(k>>>8&65280|k>>>24))>>>w,w=f;break p}d:{if(ue>>>0>=65536){J=tt(ue),f=J+1|0,W=N-f|0,s[E+48>>2]=W,k=ue<>2]=k;break d}for(w=15,k=ue<<15,s[E+44>>2]=k,W=N-15|0,s[E+48>>2]=W,Xt=s[E+56>>2],ie=Xt-1|0;;){J=w;v:{if((W|0)>0){f=k;break v}if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(f=k;;){if(w>>>0>=Xt>>>0){if(W)break v;break t}if(ue=de[w|0],k=(ue|0)!=255,!(k|(w|0)!=(ie|0)&oe[w+1|0]>=0)){if((W|0)>0)break v;break t}if(w=w+1|0,s[E+52>>2]=w,N=W+8|0,s[E+48>>2]=N,f=ue<<24-W|f,s[E+44>>2]=f,k||(N=W+7|0,s[E+48>>2]=N),W=N,!((W|0)<24))break}w=wi(w,255,Xt-w|0),s[E+60>>2]=w||Xt;break v}f=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),N=32-W|0,s[E+52>>2]=w+(N>>>3|0),f=(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>W|k,W=(N&-8)+W|0}if(W=W-1|0,s[E+48>>2]=W,k=f<<1,s[E+44>>2]=k,w=J+1|0,!((f|0)>=0))break}}d:{v:{if(((ye+(Be^-1)|0)+(Lt^-1)|0)<=(J|0)){if((W|0)<(Lt|0)){if(zr(E),W=s[E+48>>2],(Lt|0)>(W|0))break t;cn=s[hi>>2],k=s[E+44>>2]}if(s[E+48>>2]=W-Lt,s[E+44>>2]=k<>>32-Lt|0)+1|0,W=cn+J|0,N=1,Ee)break d;be=de[E+5984|0];break v}if(!Ee){W=J+cn|0;break v}k:{if((W|0)<(Ee|0)){if(zr(E),W=s[E+48>>2],(Ee|0)>(W|0))break k;cn=s[hi>>2],k=s[E+44>>2]}s[E+48>>2]=W-Ee,s[E+44>>2]=k<>>32-Ee|0)|0,W=cn+J|0,N=1;break d}break t}N=de[E+5985|0]<<1>>>0>=be>>>0}k=de[E+124|0],w=W&1,f=(w+W|0)/2|0,W=(w|0)==(N|0)?0-f|0:f,(W|0)<0&&(oe[E+5985|0]=de[E+5985|0]+1),w=s[E+5980>>2]+((J-cn|0)+1>>1)|0,s[E+5980>>2]=w,f=de[E+5984|0],(f|0)==(k|0)&&(s[E+5980>>2]=w>>1,oe[E+5985|0]=de[E+5985|0]>>>1,f=(k&254)>>>1|0),oe[E+5984|0]=f+1,k=s[E+68>>2],N=k<<1,f=N|1,W=nn+Ae(f,rt>>>0>nn>>>0?0-W|0:W)|0;d:{if((W|0)<(0-k|0)){W=Ae(f,s[E+72>>2])+W|0,w=s[E+64>>2];break d}if(w=s[E+64>>2],(k+w|0)>=(W|0))break d;W=Ae(s[E+72>>2],N^-1)+W|0}f=(w&W)==(W|0)?W:(W|0)>=0?w:0;break m}g:{if(ue>>>0>=65536){J=tt(ue),f=J+1|0,W=N-f|0,s[E+48>>2]=W,k=ue<>2]=k;break g}for(w=15,k=ue<<15,s[E+44>>2]=k,W=N-15|0,s[E+48>>2]=W,Xt=s[E+56>>2],ie=Xt-1|0;;){J=w;d:{if((W|0)>0){f=k;break d}if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(f=k;;){if(w>>>0>=Xt>>>0){if(W)break d;break t}if(ue=de[w|0],k=(ue|0)!=255,!(k|(w|0)!=(ie|0)&oe[w+1|0]>=0)){if((W|0)>0)break d;break t}if(w=w+1|0,s[E+52>>2]=w,N=W+8|0,s[E+48>>2]=N,f=ue<<24-W|f,s[E+44>>2]=f,k||(N=W+7|0,s[E+48>>2]=N),W=N,!((W|0)<24))break}w=wi(w,255,Xt-w|0),s[E+60>>2]=w||Xt;break d}f=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),N=32-W|0,s[E+52>>2]=w+(N>>>3|0),f=(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>W|k,W=(N&-8)+W|0}if(W=W-1|0,s[E+48>>2]=W,k=f<<1,s[E+44>>2]=k,w=J+1|0,!((f|0)>=0))break}}g:{d:{if(((ye+(Be^-1)|0)+(Lt^-1)|0)<=(J|0)){if((W|0)<(Lt|0)){if(zr(E),W=s[E+48>>2],(Lt|0)>(W|0))break t;be=s[E+5988>>2],k=s[E+44>>2]}if(s[E+48>>2]=W-Lt,s[E+44>>2]=k<>>32-Lt|0)+1|0,W=be+J|0,N=1,Ee)break g;nn=de[E+5996|0];break d}if(!Ee){W=J+be|0;break d}v:{if((W|0)<(Ee|0)){if(zr(E),W=s[E+48>>2],(Ee|0)>(W|0))break v;be=s[E+5988>>2],k=s[E+44>>2]}s[E+48>>2]=W-Ee,s[E+44>>2]=k<>>32-Ee|0)|0,W=be+J|0,N=1;break g}break t}N=de[E+5997|0]<<1>>>0>=nn>>>0}ue=de[E+124|0],w=W&1,f=(w+W|0)/2|0,k=(w|0)==(N|0)?0-f|0:f,(k|0)<0&&(oe[E+5997|0]=de[E+5997|0]+1),w=s[E+5992>>2]+((J-be|0)+1>>1)|0,s[E+5992>>2]=w,f=de[E+5996|0],(f|0)==(ue|0)&&(s[E+5992>>2]=w>>1,oe[E+5997|0]=de[E+5997|0]>>>1,f=(ue&254)>>>1|0),oe[E+5996|0]=f+1,ue=s[E+68>>2],N=ue<<1,f=N|1,W=rt+Ae(k,f)|0;g:{if((W|0)<(0-ue|0)){W=Ae(f,s[E+72>>2])+W|0,w=s[E+64>>2];break g}if(w=s[E+64>>2],(ue+w|0)>=(W|0))break g;W=Ae(s[E+72>>2],N^-1)+W|0}f=(w&W)==(W|0)?W:(W|0)>=0?w:0}ke[Nr+s[E+6008>>2]>>1]=f,f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,f=Ct+xr|0}xr=f,f=s[E+6004>>2]+(xr<<1)|0,Ct=Re[f>>1],ue=Re[f-2>>1];break f}k=s[E+44>>2],f=((W<<11)+14776|0)+(k>>>24<<3)|0,N=s[f+4>>2];p:{if(N){s[E+48>>2]=w-N,s[E+44>>2]=k<>2];break p}ir=s[E+76>>2],Nr=s[E+84>>2];c:{if((w|0)>15)break c;if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(Be=s[E+56>>2],ye=Be-1|0;;){if(N>>>0>=Be>>>0){if(w)break c;break t}if(ie=de[N|0],J=(ie|0)!=255,!(J|(N|0)!=(ye|0)&oe[N+1|0]>=0)){if((w|0)>0)break c;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,k=ie<<24-w|k,s[E+44>>2]=k,J||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,Be-N|0),s[E+60>>2]=f||Be;break c}J=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+N,f=(f&-8)+w|0,s[E+48>>2]=f,k=(J<<24|(J&65280)<<8|(J>>>8&65280|J>>>24))>>>w|k,s[E+44>>2]=k,w=f}c:{if(k>>>0>=65536){J=tt(k),f=J+1|0,w=w-f|0,s[E+48>>2]=w,k=k<>2]=k;break c}for(N=15,k=k<<15,s[E+44>>2]=k,w=w-15|0,s[E+48>>2]=w,be=s[E+56>>2],Be=be-1|0;;){J=N;m:{if((w|0)>0){f=k;break m}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(f=k;;){if(N>>>0>=be>>>0){if(w)break m;break t}if(ye=de[N|0],ie=(ye|0)!=255,!(ie|(N|0)!=(Be|0)&oe[N+1|0]>=0)){if((w|0)>0)break m;break t}if(N=N+1|0,s[E+52>>2]=N,k=w+8|0,s[E+48>>2]=k,f=ye<<24-w|f,s[E+44>>2]=f,ie||(k=w+7|0,s[E+48>>2]=k),w=k,!((w|0)<24))break}N=wi(N,255,be-N|0),s[E+60>>2]=N||be;break m}f=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),ie=32-w|0,s[E+52>>2]=N+(ie>>>3|0),f=(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>w|k,w=(ie&-8)+w|0}if(w=w-1|0,s[E+48>>2]=w,k=f<<1,s[E+44>>2]=k,N=J+1|0,!((f|0)>=0))break}}c:{m:{g:{d:{if((Nr+(ir^-1)|0)<=(J|0)){if((w|0)>=(ir|0))break m;if(N=s[E+52>>2],N>>>0>2]-3>>>0)break d;for(Be=s[E+56>>2],ye=Be-1|0;;){if(N>>>0>=Be>>>0){if(w)break g;break t}if(ie=de[N|0],J=(ie|0)!=255,!(J|(N|0)!=(ye|0)&oe[N+1|0]>=0)){if((w|0)>0)break g;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,k=ie<<24-w|k,s[E+44>>2]=k,J||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,Be-N|0),s[E+60>>2]=f||Be;break g}if(!W)break c;if((w|0)<(W|0)){if(zr(E),w=s[E+48>>2],(W|0)>(w|0))break t;k=s[E+44>>2]}s[E+48>>2]=w-W,s[E+44>>2]=k<>>32-W|0)|0;break c}J=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),f=(32-w|0)/8|0,s[E+52>>2]=f+N,f=(f<<3)+w|0,s[E+48>>2]=f,k=(J<<24|(J&65280)<<8|(J>>>8&65280|J>>>24))>>>w|k,s[E+44>>2]=k,w=f}if((w|0)<(ir|0))break h}s[E+48>>2]=w-ir,s[E+44>>2]=k<>>32-ir|0)+1|0}if(w=0-(J&1)^J>>1,f=w>>31,(f^w)-f>>>0>=65536)break t}if(J=s[E+88>>2],Be=s[E+68>>2],ye=W?w:(Be?0:(s[pt+12>>2]+(s[pt+4>>2]<<1)|0)-1>>31)^w,f=ye>>31,k=s[pt>>2]+((ye^f)-f|0)|0,s[pt>>2]=k,N=Be<<1,ie=N|1,W=s[pt+4>>2]+Ae(ie,ye)|0,s[pt+4>>2]=W,(k|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break l;f=((Ee^nn)-Ee|0)+((Lt|0)<0?ue:Xt)|0,w=(f|0)==(f&rt)?f:(f|0)>=0?rt:0,f=s[pt+12>>2],(J|0)==(f|0)&&(s[pt>>2]=k>>1,W=W>>1,s[pt+4>>2]=W,f=J>>1),J=f+1|0,s[pt+12>>2]=J,nn=pt,k=W+J|0;p:{c:{if((k|0)<=0){if(s[pt+4>>2]=(k|0)>(f^-1)?k:0-f|0,f=s[pt+8>>2],(f|0)<-127)break p;f=f-1|0;break c}if((W|0)<=0||(f=W-J|0,s[pt+4>>2]=f>>31&f,f=s[pt+8>>2],(f|0)>126))break p;f=f+1|0}s[nn+8>>2]=f}W=w+Ae(ie,(ye^Ee)-Ee|0)|0;p:{if((W|0)<(0-Be|0)){W=Ae(ie,s[E+72>>2])+W|0,w=s[E+64>>2];break p}if(w=s[E+64>>2],(Be+w|0)>=(W|0))break p;W=Ae(s[E+72>>2],N^-1)+W|0}ke[cn+s[E+6008>>2]>>1]=(w&W)==(W|0)?W:(W|0)>=0?w:0}if(W=ue,ue=Ct,N=s[E+108>>2],J=xr,!(N>>>0>J>>>0))break}W=s[E+6008>>2],k=s[E+6e3>>2],w=s[E+6004>>2]}if(s[yn+Ni>>2]=k,f=Wr<<1,W=f+W|0,s[E+6008>>2]=W,w=f+w|0,s[E+6004>>2]=w,Br=Br+1|0,(Br|0)!=(jn|0))continue;break u}break}break t}break t}if(f=s[E+96>>2],f>>>0>Ln>>>0|f+s[E+104>>2]>>>0<=Ln>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(W+so|0)+(s[E+92>>2]<<1)|0,s[E+100>>2],Wr)),Ln=Ln+1|0,di=di+1|0,(di|0)==(ii|0))break}N=s[E+8>>2]}if((N|0)==(Ci|0)){B2(E),yn&&Gr(yn),vn&&Gr(vn),In=Wt+32|0;break e}if(w=s[E+52>>2],N=s[E+56>>2],(w|0)!=(N|0)){if(f=de[w|0],W=w+1|0,s[E+52>>2]=W,(f|0)!=255)break s;for(;;){if((N|0)==(W|0))break a;if(w=de[W|0],W=W+1|0,s[E+52>>2]=W,(w|0)!=255)break}if(f=s[E+132>>2],(w|0)!=(f+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=f+1&7,f=wi(W,255,N-W|0),s[E+60>>2]=f||N,zr(E),(ei|0)>0&&fr(vn,0,$0),(ti|0)>0&&fr(yn,0,o0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,W=Vi;s[W+64>>2]=f,s[W+48>>2]=f,s[W+32>>2]=f,s[W+16>>2]=f,s[W+12>>2]=1,s[W+4>>2]=0,s[W+8>>2]=0,s[W>>2]=f,s[W+76>>2]=1,s[W+68>>2]=0,s[W+72>>2]=0,s[W+60>>2]=1,s[W+52>>2]=0,s[W+56>>2]=0,s[W+44>>2]=1,s[W+36>>2]=0,s[W+40>>2]=0,s[W+28>>2]=1,s[W+20>>2]=0,s[W+24>>2]=0,W=W+80|0,(hi|0)!=(W|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f,Ln=Ci;continue}break}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Li(),_t()}Li(),_t()}Vn(5),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=w-1|0,W=de[w|0]==255?7:8,k=(W|0)<=(f|0),f=f-W|0,!!k;);return N-$i|0}function fl(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0;W=s[f+40>>2],s[f+40>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),hi=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),N=0,be=In-32|0,In=be,E=f,f=s[E+16>>2],w=s[E+28>>2],k=s[E+108>>2],s[be+24>>2]=0,s[be+16>>2]=0,s[be+20>>2]=0;e:{t:{n:{if(Ln=(w|0)!=1?1:f,ir=k+4|0,w=Ae(Ln,ir),f=w<<1,f){if((f|0)<0)break n;k=Gn(f),s[be+16>>2]=k,W=f+k|0,s[be+24>>2]=W,fr(k,0,f),s[be+20>>2]=W}s[be+8>>2]=0,s[be>>2]=0,s[be+4>>2]=0;r:{if(Ln){if(Ln>>>0>=1073741824)break r;f=Ln<<2,N=Gn(f),s[be>>2]=N,k=f+N|0,s[be+8>>2]=k,fr(N,0,f),s[be+4>>2]=k}ii=0-w|0,xr=E+5976|0,Wr=E+136|0,Ci=w+1|0;i:{a:{s:{for(;;){f=s[E+128>>2],w=s[E+8>>2],k=w-Xt|0,Pr=f>>>0>>0?f:k;o:{if(!Pr){Br=Xt;break o}for(Br=Xt+Pr|0,Nr=0;;){f=s[be+16>>2],k=f+Ci|0,s[E+6008>>2]=k,w=f+1|0,s[E+6004>>2]=w;u:{if(!(Xt&1)){f=k,k=w;break u}s[E+6008>>2]=w,s[E+6004>>2]=k,f=w}kr=0;u:{if(!Ln)break u;l:{for(;;){h:{if(ti=kr<<2,s[E+6e3>>2]=s[ti+N>>2],f=s[E+108>>2]+k|0,oe[f|0]=de[f-1|0],oe[s[E+6008>>2]-1|0]=de[s[E+6004>>2]],N=s[E+108>>2],N)for(f=s[E+6004>>2],k=de[f-1|0],ie=de[f|0],Be=0;;){f:{p:{c:{m:{g:{d:{v:{if(f=s[E+6012>>2],jn=Be+1|0,rt=de[jn+s[E+6004>>2]|0],w=ie-k|0,ue=s[E+6008>>2]+Be|0,Ee=de[ue-1|0],k=k-Ee|0,f=Ae(Ae(oe[f+(rt-ie|0)|0],9)+oe[w+f|0]|0,9)+oe[k+f|0]|0,f){for(Ct=f>>31,ue=((Ct^f)-Ct<<4)+Wr|0,N=s[ue>>2],W=s[ue+12>>2],f=0,J=ie>>>0>>0?-1:0,vn=k^J,nn=Ee+((w^J)>=0?w:0)|0;k=f,f>>>0<=15&&(f=k+1|0,(N|0)>W<>2],cn=s[E+64>>2],f=s[E+48>>2],(f|0)>7)break p;if(N=s[E+52>>2],N>>>0>2]-3>>>0)break v;for(W=s[E+56>>2],J=W-1|0;;){if(N>>>0>=W>>>0){if(f)break p;break t}if(Ee=de[N|0],ye=(Ee|0)!=255,!(ye|(N|0)!=(J|0)&oe[N+1|0]>=0)){if((f|0)>0)break p;break t}if(N=N+1|0,s[E+52>>2]=N,w=f+8|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|Ee<<24-f,ye||(w=f+7|0,s[E+48>>2]=w),f=w,!((f|0)<24))break}w=wi(N,255,W-N|0),s[E+60>>2]=w||W;break p}W=N-Be|0,J=s[E+56>>2],rt=J-1|0,N=s[E+48>>2],ie=0;k:{y:{for(;;){w:{if((N|0)>0){f=N;break w}if(k=s[E+52>>2],k>>>0>=s[E+60>>2]-3>>>0){for(f=N;;){if(k>>>0>=J>>>0){if(f)break w;break t}if(w=de[k|0],Ct=(w|0)!=255,!(Ct|(k|0)!=(rt|0)&oe[k+1|0]>=0)){if((f|0)>0)break w;break t}if(k=k+1|0,s[E+52>>2]=k,N=f+8|0,s[E+48>>2]=N,s[E+44>>2]=s[E+44>>2]|w<<24-f,Ct||(N=f+7|0,s[E+48>>2]=N),f=N,!((f|0)<24))break}w=wi(k,255,J-k|0),s[E+60>>2]=w||J;break w}f=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),w=32-N|0,s[E+52>>2]=(w>>>3|0)+k,s[E+44>>2]=s[E+44>>2]|(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>N,f=(w&-8)+N|0}if(k=s[E+44>>2],N=f-1|0,s[E+48>>2]=N,w=k<<1,s[E+44>>2]=w,(k|0)>=0)break y;if(f=W-ie|0,w=s[E+6e3>>2],k=1<>2],ie=((f|0)<(k|0)?f:k)+ie|0,(f|0)>=(k|0)&&(s[E+6e3>>2]=((w|0)>=30?30:w)+1),(W|0)==(ie|0))break}break k}if((W|0)==(ie|0))break k;if(k=W,W=s[(s[E+6e3>>2]<<2)+6936>>2],(W|0)<=0)f=0;else{if((f|0)<=(W|0)){if(zr(E),N=s[E+48>>2],(W|0)>(N|0))break t;w=s[E+44>>2]}s[E+48>>2]=N-W,s[E+44>>2]=w<>>32-W|0}if(W=f+ie|0,(k|0)<(W|0))break t}if((W|0)>0&&fr(ue,Ee,W),Ct=W+Be|0,(Ct|0)==s[E+108>>2]){jn=Ct;break c}cn=de[Ct+s[E+6004>>2]|0],w=Ee-cn|0,f=w>>31;k:{y:{if(s[E+68>>2]>=((f^w)-f|0)){if(J=0,Be=s[E+5988>>2],rt=de[E+5996|0],k=rt,f=s[E+5992>>2]+Ae(Be,k>>>1|0)|0,(f|0)>(k|0))for(;J=J+1|0,k=k<<1,(f|0)>(k|0););if(cn=s[(s[E+6e3>>2]<<2)+6936>>2],vn=s[E+84>>2],ue=s[E+76>>2],w=s[E+48>>2],(w|0)>15)break g;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break y;for(N=s[E+56>>2],ie=N-1|0;;){if(N>>>0<=k>>>0){if(w)break g;break t}if(ye=de[k|0],nn=(ye|0)!=255,!(nn|(k|0)!=(ie|0)&oe[k+1|0]>=0)){if((w|0)>0)break g;break t}if(k=k+1|0,s[E+52>>2]=k,f=w+8|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|ye<<24-w,nn||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(k,255,N-k|0),s[E+60>>2]=f||N;break g}if(J=0,rt=s[E+5976>>2],Be=de[E+5984|0],k=Be,f=s[E+5980>>2]+Ae(rt,k>>>1|0)|0,(f|0)>(k|0))for(;J=J+1|0,k=k<<1,(f|0)>(k|0););if(vn=s[(s[E+6e3>>2]<<2)+6936>>2],nn=s[E+84>>2],ue=s[E+76>>2],w=s[E+48>>2],(w|0)>15)break d;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break k;for(N=s[E+56>>2],ie=N-1|0;;){if(N>>>0<=k>>>0){if(w)break d;break t}if(ye=de[k|0],Lt=(ye|0)!=255,!(Lt|(k|0)!=(ie|0)&oe[k+1|0]>=0)){if((w|0)>0)break d;break t}if(k=k+1|0,s[E+52>>2]=k,f=w+8|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|ye<<24-w,Lt||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(k,255,N-k|0),s[E+60>>2]=f||N;break d}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+w|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w,w=f;break g}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+w|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w,w=f;break d}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),w=32-f|0,s[E+52>>2]=(w>>>3|0)+N,w=(w&-8)+f|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f,f=w;break p}N=s[E+44>>2];d:{if(N>>>0>=65536){ie=tt(N),f=ie+1|0,k=w-f|0,s[E+48>>2]=k,N=N<>2]=N;break d}for(f=15,N=N<<15,s[E+44>>2]=N,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],Lt=ye-1|0;;){ie=f;v:{if((k|0)>0){w=N;break v}if(f=s[E+52>>2],f>>>0>=s[E+60>>2]-3>>>0){for(w=N;;){if(f>>>0>=ye>>>0){if(k)break v;break t}if(pt=de[f|0],Wt=(pt|0)!=255,!(Wt|(f|0)!=(Lt|0)&oe[f+1|0]>=0)){if((k|0)>0)break v;break t}if(f=f+1|0,s[E+52>>2]=f,N=k+8|0,s[E+48>>2]=N,w=pt<<24-k|w,s[E+44>>2]=w,Wt||(N=k+7|0,s[E+48>>2]=N),k=N,!((k|0)<24))break}f=wi(f,255,ye-f|0),s[E+60>>2]=f||ye;break v}w=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),pt=32-k|0,s[E+52>>2]=f+(pt>>>3|0),w=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>k|N,k=(pt&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,N=w<<1,s[E+44>>2]=N,f=ie+1|0,!((w|0)>=0))break}}d:{v:{if(((nn+(vn^-1)|0)+(ue^-1)|0)<=(ie|0)){if((k|0)<(ue|0)){if(zr(E),k=s[E+48>>2],(ue|0)>(k|0))break t;rt=s[xr>>2],N=s[E+44>>2]}if(s[E+48>>2]=k-ue,s[E+44>>2]=N<>>32-ue|0)+1|0,k=rt+ie|0,f=1,J)break d;Be=de[E+5984|0];break v}if(!J){k=ie+rt|0;break v}k:{if((k|0)<(J|0)){if(zr(E),k=s[E+48>>2],(J|0)>(k|0))break k;rt=s[xr>>2],N=s[E+44>>2]}s[E+48>>2]=k-J,s[E+44>>2]=N<>>32-J|0)|0,k=rt+ie|0,f=1;break d}break t}f=de[E+5985|0]<<1>>>0>=Be>>>0}w=de[E+124|0],N=k&1,k=(N+k|0)/2|0,N=(f|0)==(N|0)?0-k|0:k,(N|0)<0&&(oe[E+5985|0]=de[E+5985|0]+1),k=s[E+5980>>2]+((ie-rt|0)+1>>1)|0,s[E+5980>>2]=k,f=de[E+5984|0],(f|0)==(w|0)&&(s[E+5980>>2]=k>>1,oe[E+5985|0]=de[E+5985|0]>>>1,f=(w&254)>>>1|0),oe[E+5984|0]=f+1,w=s[E+68>>2],ie=w<<1,f=ie|1,k=cn+Ae(f,Ee>>>0>cn>>>0?0-N|0:N)|0;d:{if((k|0)<(0-w|0)){k=Ae(f,s[E+72>>2])+k|0,f=s[E+64>>2];break d}if(f=s[E+64>>2],(w+f|0)>=(k|0))break d;k=Ae(s[E+72>>2],ie^-1)+k|0}f=(f&k)==(k|0)?k:(k|0)>=0?f:0;break m}N=s[E+44>>2];g:{if(N>>>0>=65536){ie=tt(N),f=ie+1|0,k=w-f|0,s[E+48>>2]=k,N=N<>2]=N;break g}for(f=15,N=N<<15,s[E+44>>2]=N,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],nn=ye-1|0;;){ie=f;d:{if((k|0)>0){w=N;break d}if(f=s[E+52>>2],f>>>0>=s[E+60>>2]-3>>>0){for(w=N;;){if(f>>>0>=ye>>>0){if(k)break d;break t}if(Lt=de[f|0],pt=(Lt|0)!=255,!(pt|(f|0)!=(nn|0)&oe[f+1|0]>=0)){if((k|0)>0)break d;break t}if(f=f+1|0,s[E+52>>2]=f,N=k+8|0,s[E+48>>2]=N,w=Lt<<24-k|w,s[E+44>>2]=w,pt||(N=k+7|0,s[E+48>>2]=N),k=N,!((k|0)<24))break}f=wi(f,255,ye-f|0),s[E+60>>2]=f||ye;break d}w=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),Lt=32-k|0,s[E+52>>2]=f+(Lt>>>3|0),w=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>k|N,k=(Lt&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,N=w<<1,s[E+44>>2]=N,f=ie+1|0,!((w|0)>=0))break}}g:{d:{if(((vn+(cn^-1)|0)+(ue^-1)|0)<=(ie|0)){if((k|0)<(ue|0)){if(zr(E),k=s[E+48>>2],(ue|0)>(k|0))break t;Be=s[E+5988>>2],N=s[E+44>>2]}if(s[E+48>>2]=k-ue,s[E+44>>2]=N<>>32-ue|0)+1|0,k=Be+ie|0,f=1,J)break g;rt=de[E+5996|0];break d}if(!J){k=ie+Be|0;break d}v:{if((k|0)<(J|0)){if(zr(E),k=s[E+48>>2],(J|0)>(k|0))break v;Be=s[E+5988>>2],N=s[E+44>>2]}s[E+48>>2]=k-J,s[E+44>>2]=N<>>32-J|0)|0,k=Be+ie|0,f=1;break g}break t}f=de[E+5997|0]<<1>>>0>=rt>>>0}w=de[E+124|0],N=k&1,k=(N+k|0)/2|0,N=(f|0)==(N|0)?0-k|0:k,(N|0)<0&&(oe[E+5997|0]=de[E+5997|0]+1),k=s[E+5992>>2]+((ie-Be|0)+1>>1)|0,s[E+5992>>2]=k,f=de[E+5996|0],(f|0)==(w|0)&&(s[E+5992>>2]=k>>1,oe[E+5997|0]=de[E+5997|0]>>>1,f=(w&254)>>>1|0),oe[E+5996|0]=f+1,w=s[E+68>>2],ie=w<<1,f=ie|1,k=Ee+Ae(N,f)|0;g:{if((k|0)<(0-w|0)){k=Ae(f,s[E+72>>2])+k|0,f=s[E+64>>2];break g}if(f=s[E+64>>2],(w+f|0)>=(k|0))break g;k=Ae(s[E+72>>2],ie^-1)+k|0}f=(f&k)==(k|0)?k:(k|0)>=0?f:0}oe[Ct+s[E+6008>>2]|0]=f,f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,jn=W+jn|0}f=jn+s[E+6004>>2]|0,rt=de[f|0],ie=de[f-1|0];break f}w=s[E+44>>2],W=((k<<11)+14776|0)+(w>>>24<<3)|0,N=s[W+4>>2];p:{if(N){s[E+48>>2]=f-N,s[E+44>>2]=w<>2];break p}Ee=s[E+76>>2],pt=s[E+84>>2];c:{if((f|0)>15)break c;if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(J=s[E+56>>2],ye=J-1|0;;){if(N>>>0>=J>>>0){if(f)break c;break t}if(Wt=de[N|0],yn=(Wt|0)!=255,!(yn|(N|0)!=(ye|0)&oe[N+1|0]>=0)){if((f|0)>0)break c;break t}if(N=N+1|0,s[E+52>>2]=N,W=f+8|0,s[E+48>>2]=W,w=Wt<<24-f|w,s[E+44>>2]=w,yn||(W=f+7|0,s[E+48>>2]=W),f=W,!((f|0)<24))break}N=wi(N,255,J-N|0),s[E+60>>2]=N||J;break c}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),J=32-f|0,s[E+52>>2]=N+(J>>>3|0),N=(J&-8)+f|0,s[E+48>>2]=N,w=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f|w,s[E+44>>2]=w,f=N}c:{if(w>>>0>=65536){J=tt(w),N=J+1|0,f=f-N|0,s[E+48>>2]=f,w=w<>2]=w;break c}for(N=15,w=w<<15,s[E+44>>2]=w,f=f-15|0,s[E+48>>2]=f,ye=s[E+56>>2],Wt=ye-1|0;;){J=N;m:{if((f|0)>0){W=w;break m}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(W=w;;){if(N>>>0>=ye>>>0){if(f)break m;break t}if(yn=de[N|0],ei=(yn|0)!=255,!(ei|(N|0)!=(Wt|0)&oe[N+1|0]>=0)){if((f|0)>0)break m;break t}if(N=N+1|0,s[E+52>>2]=N,w=f+8|0,s[E+48>>2]=w,W=yn<<24-f|W,s[E+44>>2]=W,ei||(w=f+7|0,s[E+48>>2]=w),f=w,!((f|0)<24))break}w=wi(N,255,ye-N|0),s[E+60>>2]=w||ye;break m}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),yn=32-f|0,s[E+52>>2]=N+(yn>>>3|0),W=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f|w,f=(yn&-8)+f|0}if(f=f-1|0,s[E+48>>2]=f,w=W<<1,s[E+44>>2]=w,N=J+1|0,!((W|0)>=0))break}}c:{m:{g:{d:{if((pt+(Ee^-1)|0)<=(J|0)){if((f|0)>=(Ee|0))break m;if(N=s[E+52>>2],N>>>0>2]-3>>>0)break d;for(J=s[E+56>>2],ye=J-1|0;;){if(N>>>0>=J>>>0){if(f)break g;break t}if(pt=de[N|0],Wt=(pt|0)!=255,!(Wt|(N|0)!=(ye|0)&oe[N+1|0]>=0)){if((f|0)>0)break g;break t}if(N=N+1|0,s[E+52>>2]=N,W=f+8|0,s[E+48>>2]=W,w=pt<<24-f|w,s[E+44>>2]=w,Wt||(W=f+7|0,s[E+48>>2]=W),f=W,!((f|0)<24))break}N=wi(N,255,J-N|0),s[E+60>>2]=N||J;break g}if(!k)break c;if((f|0)<(k|0)){if(zr(E),f=s[E+48>>2],(k|0)>(f|0))break t;w=s[E+44>>2]}s[E+48>>2]=f-k,s[E+44>>2]=w<>>32-k|0)|0;break c}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),J=(32-f|0)/8|0,s[E+52>>2]=N+J,N=(J<<3)+f|0,s[E+48>>2]=N,w=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f|w,s[E+44>>2]=w,f=N}if((f|0)<(Ee|0))break h}s[E+48>>2]=f-Ee,s[E+44>>2]=w<>>32-Ee|0)+1|0}if(f=0-(J&1)^J>>1,w=f>>31,(f^w)-w>>>0>=65536)break t}if(J=s[E+88>>2],w=s[E+68>>2],f=k?f:(w?0:(s[ue+12>>2]+(s[ue+4>>2]<<1)|0)-1>>31)^f,N=f>>31,Ee=s[ue>>2]+((f^N)-N|0)|0,s[ue>>2]=Ee,pt=w<<1,ye=pt|1,k=s[ue+4>>2]+Ae(ye,f)|0,s[ue+4>>2]=k,(Ee|0)>16777215||(N=k>>31,(N^k)-N>>>0>=16777216))break l;N=((Ct^Lt)-Ct|0)+((vn|0)<0?ie:nn)|0,vn=(N&cn)==(N|0),W=s[ue+12>>2],(J|0)==(W|0)&&(s[ue>>2]=Ee>>1,k=k>>1,s[ue+4>>2]=k,W=J>>1),Ee=vn?N:(N|0)>=0?cn:0,N=W+1|0,s[ue+12>>2]=N,J=N+k|0;p:{c:{if((J|0)<=0){if(s[ue+4>>2]=(J|0)>(W^-1)?J:0-W|0,N=s[ue+8>>2],(N|0)<-127)break p;N=N-1|0;break c}if((k|0)<=0||(N=k-N|0,s[ue+4>>2]=N>>31&N,N=s[ue+8>>2],(N|0)>126))break p;N=N+1|0}s[ue+8>>2]=N}k=Ee+Ae(ye,(f^Ct)-Ct|0)|0;p:{if((k|0)<(0-w|0)){k=Ae(ye,s[E+72>>2])+k|0,f=s[E+64>>2];break p}if(f=s[E+64>>2],(w+f|0)>=(k|0))break p;k=Ae(s[E+72>>2],pt^-1)+k|0}oe[s[E+6008>>2]+Be|0]=(f&k)==(k|0)?k:(k|0)>=0?f:0}if(k=ie,ie=rt,N=s[E+108>>2],Be=jn,!(N>>>0>Be>>>0))break}if(N=s[be>>2],s[ti+N>>2]=s[E+6e3>>2],k=s[E+6004>>2]+ir|0,s[E+6004>>2]=k,f=s[E+6008>>2]+ir|0,s[E+6008>>2]=f,kr=kr+1|0,(kr|0)!=(Ln|0))continue;break u}break}break t}break t}if(w=s[E+96>>2],w>>>0>Xt>>>0|w+s[E+104>>2]>>>0<=Xt>>>0||(w=s[E+40>>2],Mr[s[s[w>>2]+8>>2]](w,s[E+92>>2]+(f+ii|0)|0,s[E+100>>2],ir)),Xt=Xt+1|0,Nr=Nr+1|0,(Nr|0)==(Pr|0))break}w=s[E+8>>2]}if((w|0)==(Br|0)){B2(E),N&&Gr(N),f=s[be+16>>2],f&&Gr(f),In=be+32|0;break e}if(w=s[E+52>>2],f=s[E+56>>2],(w|0)!=(f|0)){if(W=de[w|0],k=w+1|0,s[E+52>>2]=k,(W|0)!=255)break s;for(;;){if((f|0)==(k|0))break a;if(w=de[k|0],k=k+1|0,s[E+52>>2]=k,(w|0)!=255)break}if(W=s[E+132>>2],(w|0)!=(W+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=W+1&7,w=wi(k,255,f-k|0),s[E+60>>2]=w||f,zr(E),f=s[be+16>>2],w=s[be+20>>2]-f|0,(w|0)>0&&(fr(f,0,w),N=s[be>>2]),f=s[be+4>>2]-N|0,(f|0)>0&&fr(N,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,k=Wr;s[k+64>>2]=f,s[k+48>>2]=f,s[k+32>>2]=f,s[k+16>>2]=f,s[k+12>>2]=1,s[k+4>>2]=0,s[k+8>>2]=0,s[k>>2]=f,s[k+76>>2]=1,s[k+68>>2]=0,s[k+72>>2]=0,s[k+60>>2]=1,s[k+52>>2]=0,s[k+56>>2]=0,s[k+44>>2]=1,s[k+36>>2]=0,s[k+40>>2]=0,s[k+28>>2]=1,s[k+20>>2]=0,s[k+24>>2]=0,k=k+80|0,(xr|0)!=(k|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f,Xt=Br;continue}break}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Li(),_t()}Li(),_t()}Vn(5),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,W=(k|0)<=(f|0),f=f-k|0,!!W;);return N-hi|0}function fu(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0;W=s[f+40>>2],s[f+40>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),ii=s[k>>2],w=s[N+4>>2],s[f+68>>2]=s[N>>2],s[f+72>>2]=w,w=s[N+12>>2],s[f+76>>2]=s[N+8>>2],s[f+80>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+104>>2]||(s[f+104>>2]=s[f+8>>2]),w=0,N=0,Be=In-32|0,In=Be,E=f,f=s[E+16>>2],k=s[E+28>>2],W=s[E+84>>2],s[Be+24>>2]=0,s[Be+16>>2]=0,s[Be+20>>2]=0;e:{t:{n:{if(vn=(k|0)!=1?1:f,xr=W+4|0,f=Ae(vn,xr),k=f<<1,k){if((k|0)<0)break n;w=f<<2,Wt=Gn(w),s[Be+16>>2]=Wt,s[Be+24>>2]=(k<<1)+Wt,w=fr(Wt,0,w)+w|0,s[Be+20>>2]=w}s[Be+8>>2]=0,s[Be>>2]=0,s[Be+4>>2]=0;r:{if(vn){if(vn>>>0>=1073741824)break r;k=vn<<2,Ct=Gn(k),s[Be>>2]=Ct,N=k+Ct|0,s[Be+8>>2]=N,fr(Ct,0,k),s[Be+4>>2]=N}Ln=Wt+2|0,ir=Ln+(f<<1)|0,Pr=N-Ct|0,Ci=((Pr>>>2|0)-(Pr>>>0>3)<<2)+4|0,Br=w-Wt|0,di=((Br>>>1|0)-((Br|0)!=1)<<1)+2|0,Nr=E+5952|0,hi=E+112|0,Vi=0-f<<1;i:{a:{s:{for(;;){f=s[E+104>>2],w=s[E+8>>2],N=w-Xt|0,Wr=f>>>0>>0?f:N;o:{if(!Wr){ti=Xt;break o}for(ti=Xt+Wr|0,ei=0;;){s[E+5984>>2]=ir,s[E+5980>>2]=Ln,k=ir,N=Ln,Xt&1&&(s[E+5984>>2]=Ln,s[E+5980>>2]=ir,k=Ln,N=ir),kr=0;u:{if(!vn)break u;l:{for(;;){h:{if(J=kr<<2,f=s[J+Ct>>2],s[E+5976>>2]=f,w=s[E+84>>2],W=(w<<1)+N|0,ke[W>>1]=Re[W-2>>1],ke[k-2>>1]=Re[N>>1],Ni=J+Ct|0,w){for(k=Re[N-2>>1],ye=Re[N>>1],f=0;;){f:{p:{c:{m:{g:{d:{v:{if(N=s[E+5988>>2],jn=f+1|0,rt=Re[s[E+5980>>2]+(jn<<1)>>1],J=ye-k|0,pt=f<<1,W=pt+s[E+5984>>2]|0,be=Re[W-2>>1],k=k-be|0,nn=Ae(Ae(oe[N+(rt-ye|0)|0],9)+oe[J+N|0]|0,9)+oe[k+N|0]|0,nn){for(cn=nn>>31,Ee=((cn^nn)-cn<<4)+hi|0,f=s[Ee>>2],w=s[Ee+12>>2],N=0,W=ye>>>0>>0?-1:0,yn=k^W,$i=be+((W^J)>=0?J:0)|0;k=N,k>>>0<=15&&(N=k+1|0,(f|0)>w<>2],N=s[E+48>>2],(N|0)>7)break p;if(w=s[E+52>>2],w>>>0>2]-3>>>0)break v;for(W=s[E+56>>2],J=W-1|0;;){if(w>>>0>=W>>>0){if(N)break p;break t}if(ue=de[w|0],ie=(ue|0)!=255,!(ie|(w|0)!=(J|0)&oe[w+1|0]>=0)){if((N|0)>0)break p;break t}if(w=w+1|0,s[E+52>>2]=w,f=N+8|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|ue<<24-N,ie||(f=N+7|0,s[E+48>>2]=f),N=f,!((N|0)<24))break}f=wi(w,255,W-w|0),s[E+60>>2]=f||W;break p}Ee=w-f|0,ye=s[E+56>>2],rt=ye-1|0,w=s[E+48>>2],J=0;k:{y:{w:{for(;;){C:{if((w|0)>0){N=w;break C}if(k=s[E+52>>2],k>>>0>=s[E+60>>2]-3>>>0){for(N=w;;){if(k>>>0>=ye>>>0){if(N)break C;break t}if(ue=de[k|0],ie=(ue|0)!=255,!(ie|(k|0)!=(rt|0)&oe[k+1|0]>=0)){if((N|0)>0)break C;break t}if(k=k+1|0,s[E+52>>2]=k,w=N+8|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|ue<<24-N,ie||(w=N+7|0,s[E+48>>2]=w),N=w,!((N|0)<24))break}w=wi(k,255,ye-k|0),s[E+60>>2]=w||ye;break C}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),ue=32-w|0,s[E+52>>2]=k+(ue>>>3|0),s[E+44>>2]=s[E+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w,N=(ue&-8)+w|0}if(k=s[E+44>>2],w=N-1|0,s[E+48>>2]=w,ue=k<<1,s[E+44>>2]=ue,(k|0)<0){if(N=Ee-J|0,k=s[E+5976>>2],ie=1<>2],J=((N|0)<(ie|0)?N:ie)+J|0,(N|0)>=(ie|0)&&(s[E+5976>>2]=((k|0)>=30?30:k)+1),(J|0)!=(Ee|0))continue;break w}break}if((J|0)!=(Ee|0))break y}ye=ue;break k}k=Ee,ie=s[(s[E+5976>>2]<<2)+6936>>2];y:{if((ie|0)<=0){ye=ue,N=0;break y}if((N|0)<=(ie|0)){if(zr(E),w=s[E+48>>2],(ie|0)>(w|0))break t;ue=s[E+44>>2]}w=w-ie|0,s[E+48>>2]=w,ye=ue<>2]=ye,N=ue>>>32-ie|0}if(Ee=N+J|0,(k|0)<(Ee|0))break t}k:{if((Ee|0)<=0)break k;if(J=0,N=0,Ee>>>0>=8)for(ie=Ee&-8,ue=0;k=N<<1,ke[k+W>>1]=be,ke[W+(k|2)>>1]=be,ke[W+(k|4)>>1]=be,ke[W+(k|6)>>1]=be,ke[W+(k|8)>>1]=be,ke[W+(k|10)>>1]=be,ke[W+(k|12)>>1]=be,ke[W+(k|14)>>1]=be,N=N+8|0,ue=ue+8|0,(ie|0)!=(ue|0););if(k=Ee&7,!k)break k;for(;ke[W+(N<<1)>>1]=be,N=N+1|0,J=J+1|0,(k|0)!=(J|0););}if(f=f+Ee|0,(f|0)==s[E+84>>2])break c;k:{y:{if(cn=f<<1,nn=Re[cn+s[E+5980>>2]>>1],(nn|0)==(be|0)){if(ie=0,ue=s[E+5964>>2],rt=de[E+5972|0],k=rt,f=s[E+5968>>2]+Ae(ue,k>>>1|0)|0,(f|0)>(k|0))for(;ie=ie+1|0,k=k<<1,(f|0)>(k|0););if(be=s[(s[E+5976>>2]<<2)+6936>>2],(w|0)>15)break g;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break y;for(f=s[E+56>>2],W=f-1|0;;){if(f>>>0<=k>>>0){if(w)break g;break t}if(J=de[k|0],Lt=(J|0)!=255,!(Lt|(k|0)!=(W|0)&oe[k+1|0]>=0)){if((w|0)>0)break g;break t}if(k=k+1|0,s[E+52>>2]=k,N=w+8|0,s[E+48>>2]=N,ye=J<<24-w|ye,s[E+44>>2]=ye,Lt||(N=w+7|0,s[E+48>>2]=N),w=N,!((N|0)<24))break}N=wi(k,255,f-k|0),s[E+60>>2]=N||f;break g}if(f=0,ue=s[E+5952>>2],rt=de[E+5960|0],k=rt,N=s[E+5956>>2]+Ae(ue,k>>>1|0)|0,(N|0)>(k|0))for(;f=f+1|0,k=k<<1,(N|0)>(k|0););if(Lt=s[(s[E+5976>>2]<<2)+6936>>2],(w|0)>15)break d;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break k;for(W=s[E+56>>2],J=W-1|0;;){if(k>>>0>=W>>>0){if(w)break d;break t}if(ie=de[k|0],pt=(ie|0)!=255,!(pt|(k|0)!=(J|0)&oe[k+1|0]>=0)){if((w|0)>0)break d;break t}if(k=k+1|0,s[E+52>>2]=k,N=w+8|0,s[E+48>>2]=N,ye=ie<<24-w|ye,s[E+44>>2]=ye,pt||(N=w+7|0,s[E+48>>2]=N),w=N,!((N|0)<24))break}N=wi(k,255,W-k|0),s[E+60>>2]=N||W;break d}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+w|0,s[E+48>>2]=f,ye=(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w|ye,s[E+44>>2]=ye,w=f;break g}W=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),N=32-w|0,s[E+52>>2]=(N>>>3|0)+k,N=(N&-8)+w|0,s[E+48>>2]=N,ye=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>w|ye,s[E+44>>2]=ye,w=N;break d}W=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+w,f=(f&-8)+N|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>N,N=f;break p}d:{if(ye>>>0>=65536){N=w,ie=tt(ye),w=ie+1|0,k=N-w|0,s[E+48>>2]=k,J=ye<>2]=J;break d}for(N=15,J=ye<<15,s[E+44>>2]=J,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],pt=ye-1|0;;){ie=N;v:{if((k|0)>0){W=J;break v}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(W=J;;){if(N>>>0>=ye>>>0){if(k)break v;break t}if(J=de[N|0],yn=(J|0)!=255,!(yn|(N|0)!=(pt|0)&oe[N+1|0]>=0)){if((k|0)>0)break v;break t}if(N=N+1|0,s[E+52>>2]=N,w=k+8|0,s[E+48>>2]=w,W=J<<24-k|W,s[E+44>>2]=W,yn||(w=k+7|0,s[E+48>>2]=w),k=w,!((k|0)<24))break}w=wi(N,255,ye-N|0),s[E+60>>2]=w||ye;break v}w=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),yn=32-k|0,s[E+52>>2]=N+(yn>>>3|0),W=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>k|J,k=(yn&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,J=W<<1,s[E+44>>2]=J,N=ie+1|0,!((W|0)>=0))break}}d:{v:{if((46-Lt|0)<=(ie|0)){if((k|0)<=15){if(zr(E),k=s[E+48>>2],(k|0)<16)break t;ue=s[Nr>>2],J=s[E+44>>2]}if(s[E+48>>2]=k-16,s[E+44>>2]=J<<16,ie=(J>>>16|0)+1|0,k=ue+ie|0,w=1,f)break d;rt=de[E+5960|0];break v}if(!f){k=ie+ue|0;break v}k:{if((f|0)>(k|0)){if(zr(E),k=s[E+48>>2],(k|0)<(f|0))break k;ue=s[Nr>>2],J=s[E+44>>2]}s[E+48>>2]=k-f,s[E+44>>2]=J<>>32-f|0)|0,k=ue+ie|0,w=1;break d}break t}w=de[E+5961|0]<<1>>>0>=rt>>>0}f=w,w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,N=(f|0)==(N|0)?0-k|0:k,(N|0)<0&&(oe[E+5961|0]=de[E+5961|0]+1),k=s[E+5956>>2]+((ie-ue|0)+1>>1)|0,s[E+5956>>2]=k,f=de[E+5960|0],(f|0)==(w|0)&&(s[E+5956>>2]=k>>1,oe[E+5961|0]=de[E+5961|0]>>>1,f=(w&254)>>>1|0),oe[E+5960|0]=f+1,k=be>>>0>nn>>>0?0-N|0:N;break m}g:{if(ye>>>0>=65536){J=tt(ye),f=J+1|0,k=w-f|0,s[E+48>>2]=k,W=ye<>2]=W;break g}for(N=15,W=ye<<15,s[E+44>>2]=W,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],Lt=ye-1|0;;){J=N;d:{if((k|0)>0){f=W;break d}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(f=W;;){if(N>>>0>=ye>>>0){if(k)break d;break t}if(W=de[N|0],pt=(W|0)!=255,!(pt|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((k|0)>0)break d;break t}if(N=N+1|0,s[E+52>>2]=N,w=k+8|0,s[E+48>>2]=w,f=W<<24-k|f,s[E+44>>2]=f,pt||(w=k+7|0,s[E+48>>2]=w),k=w,!((k|0)<24))break}w=wi(N,255,ye-N|0),s[E+60>>2]=w||ye;break d}f=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),w=32-k|0,s[E+52>>2]=(w>>>3|0)+N,f=(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>k|W,k=(w&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,W=f<<1,s[E+44>>2]=W,N=J+1|0,!((f|0)>=0))break}}g:{d:{if((46-be|0)<=(J|0)){if((k|0)<=15){if(zr(E),k=s[E+48>>2],(k|0)<16)break t;ue=s[E+5964>>2],W=s[E+44>>2]}if(s[E+48>>2]=k-16,s[E+44>>2]=W<<16,J=(W>>>16|0)+1|0,k=ue+J|0,f=1,ie)break g;rt=de[E+5972|0];break d}if(!ie){k=J+ue|0;break d}v:{if((k|0)<(ie|0)){if(zr(E),k=s[E+48>>2],(ie|0)>(k|0))break v;ue=s[E+5964>>2],W=s[E+44>>2]}s[E+48>>2]=k-ie,s[E+44>>2]=W<>>32-ie|0)|0,k=ue+J|0,f=1;break g}break t}f=de[E+5973|0]<<1>>>0>=rt>>>0}w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,k=(f|0)==(N|0)?0-k|0:k,(k|0)<0&&(oe[E+5973|0]=de[E+5973|0]+1),N=s[E+5968>>2]+((J-ue|0)+1>>1)|0,s[E+5968>>2]=N,f=de[E+5972|0],(f|0)==(w|0)&&(s[E+5968>>2]=N>>1,oe[E+5973|0]=de[E+5973|0]>>>1,f=(w&254)>>>1|0),oe[E+5972|0]=f+1}ke[cn+s[E+5984>>2]>>1]=k+nn,f=s[E+5976>>2],s[E+5976>>2]=((f|0)<=1?1:f)-1,f=Ee+jn|0}jn=f,f=s[E+5980>>2]+(jn<<1)|0,rt=Re[f>>1],ye=Re[f-2>>1];break f}W=s[E+44>>2],w=((k<<11)+14776|0)+(W>>>24<<3)|0,f=s[w+4>>2];p:{if(f){s[E+48>>2]=N-f,s[E+44>>2]=W<>2];break p}c:{if((N|0)>15)break c;if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(J=s[E+56>>2],ue=J-1|0;;){if(w>>>0>=J>>>0){if(N)break c;break t}if(ie=de[w|0],be=(ie|0)!=255,!(be|(w|0)!=(ue|0)&oe[w+1|0]>=0)){if((N|0)>0)break c;break t}if(w=w+1|0,s[E+52>>2]=w,f=N+8|0,s[E+48>>2]=f,W=ie<<24-N|W,s[E+44>>2]=W,be||(f=N+7|0,s[E+48>>2]=f),N=f,!((N|0)<24))break}f=wi(w,255,J-w|0),s[E+60>>2]=f||J;break c}J=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+w,f=(f&-8)+N|0,s[E+48>>2]=f,W=(J<<24|(J&65280)<<8|(J>>>8&65280|J>>>24))>>>N|W,s[E+44>>2]=W,N=f}c:{m:{if(W>>>0>=65536){ie=tt(W),w=ie+1|0,f=N-w|0,s[E+48>>2]=f,J=W<>2]=J;break m}for(ue=15,J=W<<15,s[E+44>>2]=J,f=N-15|0,s[E+48>>2]=f,be=s[E+56>>2],Lt=be-1|0;;){ie=ue;g:{if((f|0)>0){W=J,w=f;break g}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(W=J,w=f;;){if(N>>>0>=be>>>0){if(w)break g;break t}if(J=de[N|0],ue=(J|0)!=255,!(ue|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((w|0)>0)break g;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,W=J<<24-w|W,s[E+44>>2]=W,ue||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,be-N|0),s[E+60>>2]=f||be;break g}w=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),ue=32-f|0,s[E+52>>2]=N+(ue>>>3|0),W=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>f|J,w=(ue&-8)+f|0}if(f=w-1|0,s[E+48>>2]=f,J=W<<1,s[E+44>>2]=J,ue=ie+1|0,!((W|0)>=0))break}if(ie>>>0<47)break m;g:{d:{if((w|0)>16){w=f;break d}N=s[E+52>>2];v:{if(N>>>0>=s[E+60>>2]-3>>>0){for(w=f;;){if(N>>>0>=be>>>0){if(w)break v;break t}if(W=de[N|0],ue=(W|0)!=255,!(ue|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((w|0)>0)break v;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,J=W<<24-w|J,s[E+44>>2]=J,ue||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,be-N|0),s[E+60>>2]=f||be;break d}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),w=(33-w|0)/8|0,s[E+52>>2]=w+N,w=(w<<3)+f|0,s[E+48>>2]=w,J=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f|J,s[E+44>>2]=J}if((w|0)<=15)break g}s[E+48>>2]=w-16,s[E+44>>2]=J<<16,ie=(J>>>16|0)+1|0;break c}break t}if(!k)break c;if((f|0)<(k|0)){if(zr(E),f=s[E+48>>2],(k|0)>(f|0))break h;J=s[E+44>>2]}s[E+48>>2]=f-k,s[E+44>>2]=J<>>32-k|0)|0}if(N=0-(ie&1)^ie>>1,f=N>>31,(f^N)-f>>>0>=65536)break t}if(f=s[Ee+4>>2],w=k?N:(s[Ee+12>>2]+(f<<1)|0)-1>>31^N,N=w>>31,N=s[Ee>>2]+((w^N)-N|0)|0,s[Ee>>2]=N,k=f+w|0,s[Ee+4>>2]=k,(N|0)>16777215||(f=k>>31,(f^k)-f>>>0>=16777216))break l;J=(yn|0)<0?ye:$i,f=s[Ee+12>>2],(f|0)==64&&(s[Ee>>2]=N>>1,k=k>>1,s[Ee+4>>2]=k,f=32),N=f+1|0,s[Ee+12>>2]=N,W=N+k|0;p:{c:{if((W|0)<=0){if(s[Ee+4>>2]=(W|0)>(f^-1)?W:0-f|0,f=s[Ee+8>>2],(f|0)<-127)break p;f=f-1|0;break c}if((k|0)<=0||(f=k-N|0,s[Ee+4>>2]=f>>31&f,f=s[Ee+8>>2],(f|0)>126))break p;f=f+1|0}s[Ee+8>>2]=f}f=nn>>>31|0,N=(f+J|0)+(cn^o0)|0,N=(N|0)>0?N:0,ke[pt+s[E+5984>>2]>>1]=(((N|0)>=65535?65535:N)+f|0)+(w^cn)}if(k=ye,ye=rt,f=jn,w=s[E+84>>2],!(f>>>0>>0))break}k=s[E+5984>>2],N=s[E+5980>>2],f=s[E+5976>>2]}if(s[Ni>>2]=f,f=xr<<1,k=f+k|0,s[E+5984>>2]=k,N=f+N|0,s[E+5980>>2]=N,kr=kr+1|0,(kr|0)!=(vn|0))continue;break u}break}break t}break t}if(f=s[E+72>>2],f>>>0>Xt>>>0|f+s[E+80>>2]>>>0<=Xt>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(k+Vi|0)+(s[E+68>>2]<<1)|0,s[E+76>>2],xr)),Xt=Xt+1|0,ei=ei+1|0,(ei|0)==(Wr|0))break}w=s[E+8>>2]}if((w|0)==(ti|0)){B2(E),Ct&&Gr(Ct),Wt&&Gr(Wt),In=Be+32|0;break e}if(w=s[E+52>>2],f=s[E+56>>2],(w|0)!=(f|0)){if(N=de[w|0],k=w+1|0,s[E+52>>2]=k,(N|0)!=255)break s;for(;;){if((f|0)==(k|0))break a;if(w=de[k|0],k=k+1|0,s[E+52>>2]=k,(w|0)!=255)break}if(N=s[E+108>>2],(w|0)!=(N+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+108>>2]=N+1&7,w=wi(k,255,f-k|0),s[E+60>>2]=w||f,zr(E),(Br|0)>0&&fr(Wt,0,di),(Pr|0)>0&&fr(Ct,0,Ci),k=hi;s[k+64>>2]=1024,s[k+68>>2]=0,s[k+48>>2]=1024,s[k+52>>2]=0,s[k+32>>2]=1024,s[k+36>>2]=0,s[k+16>>2]=1024,s[k+20>>2]=0,s[k+8>>2]=0,s[k+12>>2]=1,s[k>>2]=1024,s[k+4>>2]=0,s[k+72>>2]=0,s[k+76>>2]=1,s[k+56>>2]=0,s[k+60>>2]=1,s[k+40>>2]=0,s[k+44>>2]=1,s[k+24>>2]=0,s[k+28>>2]=1,k=k+80|0,(Nr|0)!=(k|0););s[E+5976>>2]=0,ke[E+5972>>1]=1,s[E+5964>>2]=1,s[E+5968>>2]=1024,ke[E+5960>>1]=1,s[E+5952>>2]=0,s[E+5956>>2]=1024,Xt=ti;continue}break}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Li(),_t()}Li(),_t()}Vn(5),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,W=(k|0)<=(f|0),f=f-k|0,!!W;);return N-ii|0}function Fu(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0;W=s[f+40>>2],s[f+40>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),ii=s[k>>2],w=s[N+4>>2],s[f+68>>2]=s[N>>2],s[f+72>>2]=w,w=s[N+12>>2],s[f+76>>2]=s[N+8>>2],s[f+80>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+104>>2]||(s[f+104>>2]=s[f+8>>2]),w=0,N=0,Be=In-32|0,In=Be,E=f,f=s[E+16>>2],k=s[E+28>>2],W=s[E+84>>2],s[Be+24>>2]=0,s[Be+16>>2]=0,s[Be+20>>2]=0;e:{t:{n:{if(vn=(k|0)!=1?1:f,xr=W+4|0,f=Ae(vn,xr),k=f<<1,k){if((k|0)<0)break n;w=f<<2,Wt=Gn(w),s[Be+16>>2]=Wt,s[Be+24>>2]=(k<<1)+Wt,w=fr(Wt,0,w)+w|0,s[Be+20>>2]=w}s[Be+8>>2]=0,s[Be>>2]=0,s[Be+4>>2]=0;r:{if(vn){if(vn>>>0>=1073741824)break r;k=vn<<2,Ct=Gn(k),s[Be>>2]=Ct,N=k+Ct|0,s[Be+8>>2]=N,fr(Ct,0,k),s[Be+4>>2]=N}Ln=Wt+2|0,ir=Ln+(f<<1)|0,Pr=N-Ct|0,Ci=((Pr>>>2|0)-(Pr>>>0>3)<<2)+4|0,Br=w-Wt|0,di=((Br>>>1|0)-((Br|0)!=1)<<1)+2|0,Nr=E+5952|0,hi=E+112|0,Vi=0-f<<1;i:{a:{s:{for(;;){f=s[E+104>>2],w=s[E+8>>2],N=w-Xt|0,Wr=f>>>0>>0?f:N;o:{if(!Wr){ti=Xt;break o}for(ti=Xt+Wr|0,ei=0;;){s[E+5984>>2]=ir,s[E+5980>>2]=Ln,k=ir,N=Ln,Xt&1&&(s[E+5984>>2]=Ln,s[E+5980>>2]=ir,k=Ln,N=ir),kr=0;u:{if(!vn)break u;l:{for(;;){h:{if(J=kr<<2,f=s[J+Ct>>2],s[E+5976>>2]=f,w=s[E+84>>2],W=(w<<1)+N|0,ke[W>>1]=Re[W-2>>1],ke[k-2>>1]=Re[N>>1],Ni=J+Ct|0,w){for(k=Re[N-2>>1],ye=Re[N>>1],f=0;;){f:{p:{c:{m:{g:{d:{v:{if(N=s[E+5988>>2],jn=f+1|0,rt=Re[s[E+5980>>2]+(jn<<1)>>1],J=ye-k|0,pt=f<<1,W=pt+s[E+5984>>2]|0,be=Re[W-2>>1],k=k-be|0,nn=Ae(Ae(oe[N+(rt-ye|0)|0],9)+oe[J+N|0]|0,9)+oe[k+N|0]|0,nn){for(cn=nn>>31,Ee=((cn^nn)-cn<<4)+hi|0,f=s[Ee>>2],w=s[Ee+12>>2],N=0,W=ye>>>0>>0?-1:0,yn=k^W,$i=be+((W^J)>=0?J:0)|0;k=N,k>>>0<=15&&(N=k+1|0,(f|0)>w<>2],N=s[E+48>>2],(N|0)>7)break p;if(w=s[E+52>>2],w>>>0>2]-3>>>0)break v;for(W=s[E+56>>2],J=W-1|0;;){if(w>>>0>=W>>>0){if(N)break p;break t}if(ue=de[w|0],ie=(ue|0)!=255,!(ie|(w|0)!=(J|0)&oe[w+1|0]>=0)){if((N|0)>0)break p;break t}if(w=w+1|0,s[E+52>>2]=w,f=N+8|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|ue<<24-N,ie||(f=N+7|0,s[E+48>>2]=f),N=f,!((N|0)<24))break}f=wi(w,255,W-w|0),s[E+60>>2]=f||W;break p}Ee=w-f|0,ye=s[E+56>>2],rt=ye-1|0,w=s[E+48>>2],J=0;k:{y:{w:{for(;;){C:{if((w|0)>0){N=w;break C}if(k=s[E+52>>2],k>>>0>=s[E+60>>2]-3>>>0){for(N=w;;){if(k>>>0>=ye>>>0){if(N)break C;break t}if(ue=de[k|0],ie=(ue|0)!=255,!(ie|(k|0)!=(rt|0)&oe[k+1|0]>=0)){if((N|0)>0)break C;break t}if(k=k+1|0,s[E+52>>2]=k,w=N+8|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|ue<<24-N,ie||(w=N+7|0,s[E+48>>2]=w),N=w,!((N|0)<24))break}w=wi(k,255,ye-k|0),s[E+60>>2]=w||ye;break C}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),ue=32-w|0,s[E+52>>2]=k+(ue>>>3|0),s[E+44>>2]=s[E+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w,N=(ue&-8)+w|0}if(k=s[E+44>>2],w=N-1|0,s[E+48>>2]=w,ue=k<<1,s[E+44>>2]=ue,(k|0)<0){if(N=Ee-J|0,k=s[E+5976>>2],ie=1<>2],J=((N|0)<(ie|0)?N:ie)+J|0,(N|0)>=(ie|0)&&(s[E+5976>>2]=((k|0)>=30?30:k)+1),(J|0)!=(Ee|0))continue;break w}break}if((J|0)!=(Ee|0))break y}ye=ue;break k}k=Ee,ie=s[(s[E+5976>>2]<<2)+6936>>2];y:{if((ie|0)<=0){ye=ue,N=0;break y}if((N|0)<=(ie|0)){if(zr(E),w=s[E+48>>2],(ie|0)>(w|0))break t;ue=s[E+44>>2]}w=w-ie|0,s[E+48>>2]=w,ye=ue<>2]=ye,N=ue>>>32-ie|0}if(Ee=N+J|0,(k|0)<(Ee|0))break t}k:{if((Ee|0)<=0)break k;if(J=0,N=0,Ee>>>0>=8)for(ie=Ee&-8,ue=0;k=N<<1,ke[k+W>>1]=be,ke[W+(k|2)>>1]=be,ke[W+(k|4)>>1]=be,ke[W+(k|6)>>1]=be,ke[W+(k|8)>>1]=be,ke[W+(k|10)>>1]=be,ke[W+(k|12)>>1]=be,ke[W+(k|14)>>1]=be,N=N+8|0,ue=ue+8|0,(ie|0)!=(ue|0););if(k=Ee&7,!k)break k;for(;ke[W+(N<<1)>>1]=be,N=N+1|0,J=J+1|0,(k|0)!=(J|0););}if(f=f+Ee|0,(f|0)==s[E+84>>2])break c;k:{y:{if(cn=f<<1,nn=Re[cn+s[E+5980>>2]>>1],(nn|0)==(be|0)){if(ie=0,ue=s[E+5964>>2],rt=de[E+5972|0],k=rt,f=s[E+5968>>2]+Ae(ue,k>>>1|0)|0,(f|0)>(k|0))for(;ie=ie+1|0,k=k<<1,(f|0)>(k|0););if(be=s[(s[E+5976>>2]<<2)+6936>>2],(w|0)>15)break g;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break y;for(f=s[E+56>>2],W=f-1|0;;){if(f>>>0<=k>>>0){if(w)break g;break t}if(J=de[k|0],Lt=(J|0)!=255,!(Lt|(k|0)!=(W|0)&oe[k+1|0]>=0)){if((w|0)>0)break g;break t}if(k=k+1|0,s[E+52>>2]=k,N=w+8|0,s[E+48>>2]=N,ye=J<<24-w|ye,s[E+44>>2]=ye,Lt||(N=w+7|0,s[E+48>>2]=N),w=N,!((N|0)<24))break}N=wi(k,255,f-k|0),s[E+60>>2]=N||f;break g}if(f=0,ue=s[E+5952>>2],rt=de[E+5960|0],k=rt,N=s[E+5956>>2]+Ae(ue,k>>>1|0)|0,(N|0)>(k|0))for(;f=f+1|0,k=k<<1,(N|0)>(k|0););if(Lt=s[(s[E+5976>>2]<<2)+6936>>2],(w|0)>15)break d;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break k;for(W=s[E+56>>2],J=W-1|0;;){if(k>>>0>=W>>>0){if(w)break d;break t}if(ie=de[k|0],pt=(ie|0)!=255,!(pt|(k|0)!=(J|0)&oe[k+1|0]>=0)){if((w|0)>0)break d;break t}if(k=k+1|0,s[E+52>>2]=k,N=w+8|0,s[E+48>>2]=N,ye=ie<<24-w|ye,s[E+44>>2]=ye,pt||(N=w+7|0,s[E+48>>2]=N),w=N,!((N|0)<24))break}N=wi(k,255,W-k|0),s[E+60>>2]=N||W;break d}N=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-w|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+w|0,s[E+48>>2]=f,ye=(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w|ye,s[E+44>>2]=ye,w=f;break g}W=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),N=32-w|0,s[E+52>>2]=(N>>>3|0)+k,N=(N&-8)+w|0,s[E+48>>2]=N,ye=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>w|ye,s[E+44>>2]=ye,w=N;break d}W=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+w,f=(f&-8)+N|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>N,N=f;break p}d:{if(ye>>>0>=65536){N=w,ie=tt(ye),w=ie+1|0,k=N-w|0,s[E+48>>2]=k,J=ye<>2]=J;break d}for(N=15,J=ye<<15,s[E+44>>2]=J,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],pt=ye-1|0;;){ie=N;v:{if((k|0)>0){W=J;break v}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(W=J;;){if(N>>>0>=ye>>>0){if(k)break v;break t}if(J=de[N|0],yn=(J|0)!=255,!(yn|(N|0)!=(pt|0)&oe[N+1|0]>=0)){if((k|0)>0)break v;break t}if(N=N+1|0,s[E+52>>2]=N,w=k+8|0,s[E+48>>2]=w,W=J<<24-k|W,s[E+44>>2]=W,yn||(w=k+7|0,s[E+48>>2]=w),k=w,!((k|0)<24))break}w=wi(N,255,ye-N|0),s[E+60>>2]=w||ye;break v}w=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),yn=32-k|0,s[E+52>>2]=N+(yn>>>3|0),W=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>k|J,k=(yn&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,J=W<<1,s[E+44>>2]=J,N=ie+1|0,!((W|0)>=0))break}}d:{v:{if((34-Lt|0)<=(ie|0)){if((k|0)<=11){if(zr(E),k=s[E+48>>2],(k|0)<12)break t;ue=s[Nr>>2],J=s[E+44>>2]}if(s[E+48>>2]=k-12,s[E+44>>2]=J<<12,ie=(J>>>20|0)+1|0,k=ue+ie|0,w=1,f)break d;rt=de[E+5960|0];break v}if(!f){k=ie+ue|0;break v}k:{if((f|0)>(k|0)){if(zr(E),k=s[E+48>>2],(k|0)<(f|0))break k;ue=s[Nr>>2],J=s[E+44>>2]}s[E+48>>2]=k-f,s[E+44>>2]=J<>>32-f|0)|0,k=ue+ie|0,w=1;break d}break t}w=de[E+5961|0]<<1>>>0>=rt>>>0}f=w,w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,N=(f|0)==(N|0)?0-k|0:k,(N|0)<0&&(oe[E+5961|0]=de[E+5961|0]+1),k=s[E+5956>>2]+((ie-ue|0)+1>>1)|0,s[E+5956>>2]=k,f=de[E+5960|0],(f|0)==(w|0)&&(s[E+5956>>2]=k>>1,oe[E+5961|0]=de[E+5961|0]>>>1,f=(w&254)>>>1|0),oe[E+5960|0]=f+1,k=be>>>0>nn>>>0?0-N|0:N;break m}g:{if(ye>>>0>=65536){J=tt(ye),f=J+1|0,k=w-f|0,s[E+48>>2]=k,W=ye<>2]=W;break g}for(N=15,W=ye<<15,s[E+44>>2]=W,k=w-15|0,s[E+48>>2]=k,ye=s[E+56>>2],Lt=ye-1|0;;){J=N;d:{if((k|0)>0){f=W;break d}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(f=W;;){if(N>>>0>=ye>>>0){if(k)break d;break t}if(W=de[N|0],pt=(W|0)!=255,!(pt|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((k|0)>0)break d;break t}if(N=N+1|0,s[E+52>>2]=N,w=k+8|0,s[E+48>>2]=w,f=W<<24-k|f,s[E+44>>2]=f,pt||(w=k+7|0,s[E+48>>2]=w),k=w,!((k|0)<24))break}w=wi(N,255,ye-N|0),s[E+60>>2]=w||ye;break d}f=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),w=32-k|0,s[E+52>>2]=(w>>>3|0)+N,f=(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))>>>k|W,k=(w&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,W=f<<1,s[E+44>>2]=W,N=J+1|0,!((f|0)>=0))break}}g:{d:{if((34-be|0)<=(J|0)){if((k|0)<=11){if(zr(E),k=s[E+48>>2],(k|0)<12)break t;ue=s[E+5964>>2],W=s[E+44>>2]}if(s[E+48>>2]=k-12,s[E+44>>2]=W<<12,J=(W>>>20|0)+1|0,k=ue+J|0,f=1,ie)break g;rt=de[E+5972|0];break d}if(!ie){k=J+ue|0;break d}v:{if((k|0)<(ie|0)){if(zr(E),k=s[E+48>>2],(ie|0)>(k|0))break v;ue=s[E+5964>>2],W=s[E+44>>2]}s[E+48>>2]=k-ie,s[E+44>>2]=W<>>32-ie|0)|0,k=ue+J|0,f=1;break g}break t}f=de[E+5973|0]<<1>>>0>=rt>>>0}w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,k=(f|0)==(N|0)?0-k|0:k,(k|0)<0&&(oe[E+5973|0]=de[E+5973|0]+1),N=s[E+5968>>2]+((J-ue|0)+1>>1)|0,s[E+5968>>2]=N,f=de[E+5972|0],(f|0)==(w|0)&&(s[E+5968>>2]=N>>1,oe[E+5973|0]=de[E+5973|0]>>>1,f=(w&254)>>>1|0),oe[E+5972|0]=f+1}ke[cn+s[E+5984>>2]>>1]=k+nn&4095,f=s[E+5976>>2],s[E+5976>>2]=((f|0)<=1?1:f)-1,f=Ee+jn|0}jn=f,f=s[E+5980>>2]+(jn<<1)|0,rt=Re[f>>1],ye=Re[f-2>>1];break f}W=s[E+44>>2],w=((k<<11)+14776|0)+(W>>>24<<3)|0,f=s[w+4>>2];p:{if(f){s[E+48>>2]=N-f,s[E+44>>2]=W<>2];break p}c:{if((N|0)>15)break c;if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(J=s[E+56>>2],ue=J-1|0;;){if(w>>>0>=J>>>0){if(N)break c;break t}if(ie=de[w|0],be=(ie|0)!=255,!(be|(w|0)!=(ue|0)&oe[w+1|0]>=0)){if((N|0)>0)break c;break t}if(w=w+1|0,s[E+52>>2]=w,f=N+8|0,s[E+48>>2]=f,W=ie<<24-N|W,s[E+44>>2]=W,be||(f=N+7|0,s[E+48>>2]=f),N=f,!((N|0)<24))break}f=wi(w,255,J-w|0),s[E+60>>2]=f||J;break c}J=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+w,f=(f&-8)+N|0,s[E+48>>2]=f,W=(J<<24|(J&65280)<<8|(J>>>8&65280|J>>>24))>>>N|W,s[E+44>>2]=W,N=f}c:{m:{if(W>>>0>=65536){ie=tt(W),w=ie+1|0,f=N-w|0,s[E+48>>2]=f,J=W<>2]=J;break m}for(ue=15,J=W<<15,s[E+44>>2]=J,f=N-15|0,s[E+48>>2]=f,be=s[E+56>>2],Lt=be-1|0;;){ie=ue;g:{if((f|0)>0){W=J,w=f;break g}if(N=s[E+52>>2],N>>>0>=s[E+60>>2]-3>>>0){for(W=J,w=f;;){if(N>>>0>=be>>>0){if(w)break g;break t}if(J=de[N|0],ue=(J|0)!=255,!(ue|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((w|0)>0)break g;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,W=J<<24-w|W,s[E+44>>2]=W,ue||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,be-N|0),s[E+60>>2]=f||be;break g}w=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),ue=32-f|0,s[E+52>>2]=N+(ue>>>3|0),W=(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>f|J,w=(ue&-8)+f|0}if(f=w-1|0,s[E+48>>2]=f,J=W<<1,s[E+44>>2]=J,ue=ie+1|0,!((W|0)>=0))break}if(ie>>>0<35)break m;g:{d:{if((w|0)>12){w=f;break d}N=s[E+52>>2];v:{if(N>>>0>=s[E+60>>2]-3>>>0){for(w=f;;){if(N>>>0>=be>>>0){if(w)break v;break t}if(W=de[N|0],ue=(W|0)!=255,!(ue|(N|0)!=(Lt|0)&oe[N+1|0]>=0)){if((w|0)>0)break v;break t}if(N=N+1|0,s[E+52>>2]=N,f=w+8|0,s[E+48>>2]=f,J=W<<24-w|J,s[E+44>>2]=J,ue||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(N,255,be-N|0),s[E+60>>2]=f||be;break d}W=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),w=(33-w|0)/8|0,s[E+52>>2]=w+N,w=(w<<3)+f|0,s[E+48>>2]=w,J=(W<<24|(W&65280)<<8|(W>>>8&65280|W>>>24))>>>f|J,s[E+44>>2]=J}if((w|0)<=11)break g}s[E+48>>2]=w-12,s[E+44>>2]=J<<12,ie=(J>>>20|0)+1|0;break c}break t}if(!k)break c;if((f|0)<(k|0)){if(zr(E),f=s[E+48>>2],(k|0)>(f|0))break h;J=s[E+44>>2]}s[E+48>>2]=f-k,s[E+44>>2]=J<>>32-k|0)|0}if(N=0-(ie&1)^ie>>1,f=N>>31,(f^N)-f>>>0>=65536)break t}if(f=s[Ee+4>>2],w=k?N:(s[Ee+12>>2]+(f<<1)|0)-1>>31^N,N=w>>31,N=s[Ee>>2]+((w^N)-N|0)|0,s[Ee>>2]=N,k=f+w|0,s[Ee+4>>2]=k,(N|0)>16777215||(f=k>>31,(f^k)-f>>>0>=16777216))break l;J=(yn|0)<0?ye:$i,f=s[Ee+12>>2],(f|0)==64&&(s[Ee>>2]=N>>1,k=k>>1,s[Ee+4>>2]=k,f=32),N=f+1|0,s[Ee+12>>2]=N,W=N+k|0;p:{c:{if((W|0)<=0){if(s[Ee+4>>2]=(W|0)>(f^-1)?W:0-f|0,f=s[Ee+8>>2],(f|0)<-127)break p;f=f-1|0;break c}if((k|0)<=0||(f=k-N|0,s[Ee+4>>2]=f>>31&f,f=s[Ee+8>>2],(f|0)>126))break p;f=f+1|0}s[Ee+8>>2]=f}f=nn>>>31|0,N=(f+J|0)+(cn^o0)|0,N=(N|0)>0?N:0,ke[pt+s[E+5984>>2]>>1]=(((N|0)>=4095?4095:N)+f|0)+(w^cn)&4095}if(k=ye,ye=rt,f=jn,w=s[E+84>>2],!(f>>>0>>0))break}k=s[E+5984>>2],N=s[E+5980>>2],f=s[E+5976>>2]}if(s[Ni>>2]=f,f=xr<<1,k=f+k|0,s[E+5984>>2]=k,N=f+N|0,s[E+5980>>2]=N,kr=kr+1|0,(kr|0)!=(vn|0))continue;break u}break}break t}break t}if(f=s[E+72>>2],f>>>0>Xt>>>0|f+s[E+80>>2]>>>0<=Xt>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(k+Vi|0)+(s[E+68>>2]<<1)|0,s[E+76>>2],xr)),Xt=Xt+1|0,ei=ei+1|0,(ei|0)==(Wr|0))break}w=s[E+8>>2]}if((w|0)==(ti|0)){B2(E),Ct&&Gr(Ct),Wt&&Gr(Wt),In=Be+32|0;break e}if(w=s[E+52>>2],f=s[E+56>>2],(w|0)!=(f|0)){if(N=de[w|0],k=w+1|0,s[E+52>>2]=k,(N|0)!=255)break s;for(;;){if((f|0)==(k|0))break a;if(w=de[k|0],k=k+1|0,s[E+52>>2]=k,(w|0)!=255)break}if(N=s[E+108>>2],(w|0)!=(N+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+108>>2]=N+1&7,w=wi(k,255,f-k|0),s[E+60>>2]=w||f,zr(E),(Br|0)>0&&fr(Wt,0,di),(Pr|0)>0&&fr(Ct,0,Ci),k=hi;s[k+64>>2]=64,s[k+68>>2]=0,s[k+48>>2]=64,s[k+52>>2]=0,s[k+32>>2]=64,s[k+36>>2]=0,s[k+16>>2]=64,s[k+20>>2]=0,s[k+8>>2]=0,s[k+12>>2]=1,s[k>>2]=64,s[k+4>>2]=0,s[k+72>>2]=0,s[k+76>>2]=1,s[k+56>>2]=0,s[k+60>>2]=1,s[k+40>>2]=0,s[k+44>>2]=1,s[k+24>>2]=0,s[k+28>>2]=1,k=k+80|0,(Nr|0)!=(k|0););s[E+5976>>2]=0,ke[E+5972>>1]=1,s[E+5964>>2]=1,s[E+5968>>2]=64,ke[E+5960>>1]=1,s[E+5952>>2]=0,s[E+5956>>2]=64,Xt=ti;continue}break}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Li(),_t()}Li(),_t()}Vn(5),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,W=(k|0)<=(f|0),f=f-k|0,!!W;);return N-ii|0}function _c(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0;J=s[f+40>>2],s[f+40>>2]=w,J&&Mr[s[s[J>>2]+4>>2]](J),ti=s[k>>2],w=s[N+4>>2],s[f+68>>2]=s[N>>2],s[f+72>>2]=w,w=s[N+12>>2],s[f+76>>2]=s[N+8>>2],s[f+80>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+104>>2]||(s[f+104>>2]=s[f+8>>2]),w=0,be=In-32|0,In=be,E=f,f=s[E+16>>2],N=s[E+28>>2],k=s[E+84>>2],s[be+24>>2]=0,s[be+16>>2]=0,s[be+20>>2]=0;e:{t:{n:{if(yn=(N|0)!=1?1:f,Ln=k+4|0,N=Ae(yn,Ln),f=N<<1,f){if((f|0)<0)break n;k=Gn(f),s[be+16>>2]=k,J=f+k|0,s[be+24>>2]=J,fr(k,0,f),s[be+20>>2]=J}s[be+8>>2]=0,s[be>>2]=0,s[be+4>>2]=0;r:{if(yn){if(yn>>>0>=1073741824)break r;f=yn<<2,w=Gn(f),s[be>>2]=w,k=f+w|0,s[be+8>>2]=k,fr(w,0,f),s[be+4>>2]=k}ei=0-N|0,ir=E+5952|0,Br=E+112|0,hi=N+1|0;i:{a:{s:{for(;;){f=s[E+104>>2],N=s[E+8>>2],k=N-Xt|0,kr=f>>>0>>0?f:k;o:{if(!kr){xr=Xt;break o}for(xr=Xt+kr|0,Pr=0;;){f=s[be+16>>2],k=f+hi|0,s[E+5984>>2]=k,N=f+1|0,s[E+5980>>2]=N;u:{if(!(Xt&1)){f=k,k=N;break u}s[E+5984>>2]=N,s[E+5980>>2]=k,f=N}jn=0;u:{if(!yn)break u;l:{for(;;){h:{if(Nr=jn<<2,s[E+5976>>2]=s[Nr+w>>2],f=s[E+84>>2]+k|0,oe[f|0]=de[f-1|0],oe[s[E+5984>>2]-1|0]=de[s[E+5980>>2]],f=s[E+84>>2],f)for(w=s[E+5980>>2],k=de[w-1|0],ye=de[w|0],J=0;;){f:{p:{c:{m:{g:{d:{v:{if(w=s[E+5988>>2],vn=J+1|0,Be=de[vn+s[E+5980>>2]|0],N=ye-k|0,ie=s[E+5984>>2]+J|0,ue=de[ie-1|0],k=k-ue|0,rt=Ae(Ae(oe[w+(Be-ye|0)|0],9)+oe[N+w|0]|0,9)+oe[k+w|0]|0,rt){for(nn=rt>>31,Ee=((nn^rt)-nn<<4)+Br|0,f=s[Ee>>2],W=s[Ee+12>>2],w=0,ie=ye>>>0>>0?-1:0,cn=k^ie,Ct=ue+((N^ie)>=0?N:0)|0;ie=w,w>>>0<=15&&(w=ie+1|0,(f|0)>W<>2],w=s[E+48>>2],(w|0)>7)break p;if(f=s[E+52>>2],f>>>0>2]-3>>>0)break v;for(k=s[E+56>>2],W=k-1|0;;){if(f>>>0>=k>>>0){if(w)break p;break t}if(ue=de[f|0],pt=(ue|0)!=255,!(pt|(f|0)!=(W|0)&oe[f+1|0]>=0)){if((w|0)>0)break p;break t}if(f=f+1|0,s[E+52>>2]=f,N=w+8|0,s[E+48>>2]=N,s[E+44>>2]=s[E+44>>2]|ue<<24-w,pt||(N=w+7|0,s[E+48>>2]=N),w=N,!((w|0)<24))break}f=wi(f,255,k-f|0),s[E+60>>2]=f||k;break p}ye=f-J|0,Be=s[E+56>>2],Ee=Be-1|0,f=s[E+48>>2],W=0;k:{y:{for(;;){w:{if((f|0)>0){w=f;break w}if(k=s[E+52>>2],k>>>0>=s[E+60>>2]-3>>>0){for(w=f;;){if(k>>>0>=Be>>>0){if(w)break w;break t}if(N=de[k|0],rt=(N|0)!=255,!(rt|(k|0)!=(Ee|0)&oe[k+1|0]>=0)){if((w|0)>0)break w;break t}if(k=k+1|0,s[E+52>>2]=k,f=w+8|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|N<<24-w,rt||(f=w+7|0,s[E+48>>2]=f),w=f,!((f|0)<24))break}f=wi(k,255,Be-k|0),s[E+60>>2]=f||Be;break w}w=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),N=32-f|0,s[E+52>>2]=(N>>>3|0)+k,s[E+44>>2]=s[E+44>>2]|(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>f,w=(N&-8)+f|0}if(k=s[E+44>>2],f=w-1|0,s[E+48>>2]=f,N=k<<1,s[E+44>>2]=N,(k|0)>=0)break y;if(w=ye-W|0,N=s[E+5976>>2],k=1<>2],W=((w|0)<(k|0)?w:k)+W|0,(w|0)>=(k|0)&&(s[E+5976>>2]=((N|0)>=30?30:N)+1),(W|0)==(ye|0))break}break k}if((W|0)==(ye|0))break k;if(k=ye,ye=s[(s[E+5976>>2]<<2)+6936>>2],(ye|0)<=0)f=0;else{if((w|0)<=(ye|0)){if(zr(E),f=s[E+48>>2],(ye|0)>(f|0))break t;N=s[E+44>>2]}s[E+48>>2]=f-ye,s[E+44>>2]=N<>>32-ye|0}if(ye=f+W|0,(k|0)<(ye|0))break t}if((ye|0)>0&&fr(ie,ue,ye),Ee=J+ye|0,(Ee|0)==s[E+84>>2])break c;k:{y:{if(nn=de[Ee+s[E+5980>>2]|0],(nn|0)==(ue|0)){if(W=0,ie=s[E+5964>>2],Be=de[E+5972|0],k=Be,f=s[E+5968>>2]+Ae(ie,k>>>1|0)|0,(f|0)>(k|0))for(;W=W+1|0,k=k<<1,(f|0)>(k|0););if(rt=s[(s[E+5976>>2]<<2)+6936>>2],N=s[E+48>>2],(N|0)>15)break g;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break y;for(f=s[E+56>>2],J=f-1|0;;){if(f>>>0<=k>>>0){if(N)break g;break t}if(ue=de[k|0],cn=(ue|0)!=255,!(cn|(k|0)!=(J|0)&oe[k+1|0]>=0)){if((N|0)>0)break g;break t}if(k=k+1|0,s[E+52>>2]=k,w=N+8|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|ue<<24-N,cn||(w=N+7|0,s[E+48>>2]=w),N=w,!((w|0)<24))break}w=wi(k,255,f-k|0),s[E+60>>2]=w||f;break g}if(W=0,Be=s[E+5952>>2],ie=de[E+5960|0],k=ie,f=s[E+5956>>2]+Ae(Be,k>>>1|0)|0,(f|0)>(k|0))for(;W=W+1|0,k=k<<1,(f|0)>(k|0););if(cn=s[(s[E+5976>>2]<<2)+6936>>2],N=s[E+48>>2],(N|0)>15)break d;if(k=s[E+52>>2],k>>>0>2]-3>>>0)break k;for(f=s[E+56>>2],J=f-1|0;;){if(f>>>0<=k>>>0){if(N)break d;break t}if(rt=de[k|0],Ct=(rt|0)!=255,!(Ct|(k|0)!=(J|0)&oe[k+1|0]>=0)){if((N|0)>0)break d;break t}if(k=k+1|0,s[E+52>>2]=k,w=N+8|0,s[E+48>>2]=w,s[E+44>>2]=s[E+44>>2]|rt<<24-N,Ct||(w=N+7|0,s[E+48>>2]=w),N=w,!((w|0)<24))break}w=wi(k,255,f-k|0),s[E+60>>2]=w||f;break d}w=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+N|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>N,N=f;break g}w=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),f=32-N|0,s[E+52>>2]=(f>>>3|0)+k,f=(f&-8)+N|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24))>>>N,N=f;break d}N=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),k=32-w|0,s[E+52>>2]=f+(k>>>3|0),f=(k&-8)+w|0,s[E+48>>2]=f,s[E+44>>2]=s[E+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w,w=f;break p}f=s[E+44>>2];d:{if(f>>>0>=65536){J=tt(f),w=J+1|0,k=N-w|0,s[E+48>>2]=k,f=f<>2]=f;break d}for(w=15,f=f<<15,s[E+44>>2]=f,k=N-15|0,s[E+48>>2]=k,rt=s[E+56>>2],Ct=rt-1|0;;){J=w;v:{if((k|0)>0){N=f;break v}if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(N=f;;){if(w>>>0>=rt>>>0){if(k)break v;break t}if(Wt=de[w|0],pt=(Wt|0)!=255,!(pt|(w|0)!=(Ct|0)&oe[w+1|0]>=0)){if((k|0)>0)break v;break t}if(w=w+1|0,s[E+52>>2]=w,f=k+8|0,s[E+48>>2]=f,N=Wt<<24-k|N,s[E+44>>2]=N,pt||(f=k+7|0,s[E+48>>2]=f),k=f,!((f|0)<24))break}f=wi(w,255,rt-w|0),s[E+60>>2]=f||rt;break v}N=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),Wt=32-k|0,s[E+52>>2]=w+(Wt>>>3|0),N=(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>k|f,k=(Wt&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,f=N<<1,s[E+44>>2]=f,w=J+1|0,!((N|0)>=0))break}}d:{v:{if((22-cn|0)<=(J|0)){if((k|0)<=7){if(zr(E),k=s[E+48>>2],(k|0)<8)break t;Be=s[ir>>2],f=s[E+44>>2]}if(s[E+48>>2]=k-8,s[E+44>>2]=f<<8,J=(f>>>24|0)+1|0,k=Be+J|0,f=1,W)break d;ie=de[E+5960|0];break v}if(!W){k=J+Be|0;break v}k:{if((k|0)<(W|0)){if(zr(E),k=s[E+48>>2],(W|0)>(k|0))break k;Be=s[ir>>2],f=s[E+44>>2]}s[E+48>>2]=k-W,s[E+44>>2]=f<>>32-W|0)|0,k=Be+J|0,f=1;break d}break t}f=de[E+5961|0]<<1>>>0>=ie>>>0}w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,N=(f|0)==(N|0)?0-k|0:k,(N|0)<0&&(oe[E+5961|0]=de[E+5961|0]+1),k=s[E+5956>>2]+((J-Be|0)+1>>1)|0,s[E+5956>>2]=k,f=de[E+5960|0],(f|0)==(w|0)&&(s[E+5956>>2]=k>>1,oe[E+5961|0]=de[E+5961|0]>>>1,f=(w&254)>>>1|0),oe[E+5960|0]=f+1,k=ue>>>0>nn>>>0?0-N|0:N;break m}f=s[E+44>>2];g:{if(f>>>0>=65536){J=tt(f),w=J+1|0,k=N-w|0,s[E+48>>2]=k,f=f<>2]=f;break g}for(w=15,f=f<<15,s[E+44>>2]=f,k=N-15|0,s[E+48>>2]=k,ue=s[E+56>>2],cn=ue-1|0;;){J=w;d:{if((k|0)>0){N=f;break d}if(w=s[E+52>>2],w>>>0>=s[E+60>>2]-3>>>0){for(N=f;;){if(w>>>0>=ue>>>0){if(k)break d;break t}if(Ct=de[w|0],Wt=(Ct|0)!=255,!(Wt|(w|0)!=(cn|0)&oe[w+1|0]>=0)){if((k|0)>0)break d;break t}if(w=w+1|0,s[E+52>>2]=w,f=k+8|0,s[E+48>>2]=f,N=Ct<<24-k|N,s[E+44>>2]=N,Wt||(f=k+7|0,s[E+48>>2]=f),k=f,!((f|0)<24))break}f=wi(w,255,ue-w|0),s[E+60>>2]=f||ue;break d}N=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),Ct=32-k|0,s[E+52>>2]=w+(Ct>>>3|0),N=(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>k|f,k=(Ct&-8)+k|0}if(k=k-1|0,s[E+48>>2]=k,f=N<<1,s[E+44>>2]=f,w=J+1|0,!((N|0)>=0))break}}g:{d:{if((22-rt|0)<=(J|0)){if((k|0)<=7){if(zr(E),k=s[E+48>>2],(k|0)<8)break t;ie=s[E+5964>>2],f=s[E+44>>2]}if(s[E+48>>2]=k-8,s[E+44>>2]=f<<8,J=(f>>>24|0)+1|0,k=ie+J|0,f=1,W)break g;Be=de[E+5972|0];break d}if(!W){k=J+ie|0;break d}v:{if((k|0)<(W|0)){if(zr(E),k=s[E+48>>2],(W|0)>(k|0))break v;ie=s[E+5964>>2],f=s[E+44>>2]}s[E+48>>2]=k-W,s[E+44>>2]=f<>>32-W|0)|0,k=ie+J|0,f=1;break g}break t}f=de[E+5973|0]<<1>>>0>=Be>>>0}w=de[E+100|0],N=k&1,k=(N+k|0)/2|0,k=(f|0)==(N|0)?0-k|0:k,(k|0)<0&&(oe[E+5973|0]=de[E+5973|0]+1),N=s[E+5968>>2]+((J-ie|0)+1>>1)|0,s[E+5968>>2]=N,f=de[E+5972|0],(f|0)==(w|0)&&(s[E+5968>>2]=N>>1,oe[E+5973|0]=de[E+5973|0]>>>1,f=(w&254)>>>1|0),oe[E+5972|0]=f+1}oe[Ee+s[E+5984>>2]|0]=k+nn,f=s[E+5976>>2],s[E+5976>>2]=((f|0)<=1?1:f)-1,Ee=ye+vn|0}vn=Ee,f=vn+s[E+5980>>2]|0,Be=de[f|0],ye=de[f-1|0];break f}N=s[E+44>>2],k=((ie<<11)+14776|0)+(N>>>24<<3)|0,f=s[k+4>>2];p:{if(f){s[E+48>>2]=w-f,s[E+44>>2]=N<>2];break p}c:{if((w|0)>15)break c;if(f=s[E+52>>2],f>>>0>=s[E+60>>2]-3>>>0){for(W=s[E+56>>2],ue=W-1|0;;){if(f>>>0>=W>>>0){if(w)break c;break t}if(pt=de[f|0],Lt=(pt|0)!=255,!(Lt|(f|0)!=(ue|0)&oe[f+1|0]>=0)){if((w|0)>0)break c;break t}if(f=f+1|0,s[E+52>>2]=f,k=w+8|0,s[E+48>>2]=k,N=pt<<24-w|N,s[E+44>>2]=N,Lt||(k=w+7|0,s[E+48>>2]=k),w=k,!((k|0)<24))break}f=wi(f,255,W-f|0),s[E+60>>2]=f||W;break c}k=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),W=32-w|0,s[E+52>>2]=f+(W>>>3|0),f=(W&-8)+w|0,s[E+48>>2]=f,N=(k<<24|(k&65280)<<8|(k>>>8&65280|k>>>24))>>>w|N,s[E+44>>2]=N,w=f}c:{if(N>>>0>=65536){W=tt(N),f=W+1|0,w=w-f|0,s[E+48>>2]=w,N=N<>2]=N;break c}for(f=15,N=N<<15,s[E+44>>2]=N,w=w-15|0,s[E+48>>2]=w,ue=s[E+56>>2],pt=ue-1|0;;){W=f;m:{if((w|0)>0){k=N;break m}if(f=s[E+52>>2],f>>>0>=s[E+60>>2]-3>>>0){for(k=N;;){if(f>>>0>=ue>>>0){if(w)break m;break t}if(Lt=de[f|0],Wr=(Lt|0)!=255,!(Wr|(f|0)!=(pt|0)&oe[f+1|0]>=0)){if((w|0)>0)break m;break t}if(f=f+1|0,s[E+52>>2]=f,N=w+8|0,s[E+48>>2]=N,k=Lt<<24-w|k,s[E+44>>2]=k,Wr||(N=w+7|0,s[E+48>>2]=N),w=N,!((w|0)<24))break}f=wi(f,255,ue-f|0),s[E+60>>2]=f||ue;break m}k=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),Lt=32-w|0,s[E+52>>2]=f+(Lt>>>3|0),k=(k<<24|(k&65280)<<8|(k>>>8&65280|k>>>24))>>>w|N,w=(Lt&-8)+w|0}if(w=w-1|0,s[E+48>>2]=w,N=k<<1,s[E+44>>2]=N,f=W+1|0,!((k|0)>=0))break}}c:{if(W>>>0>=23){m:{if((w|0)>7)break m;f=s[E+52>>2];g:{if(f>>>0>=s[E+60>>2]-3>>>0){for(W=s[E+56>>2],ue=W-1|0;;){if(f>>>0>=W>>>0){if(w)break g;break t}if(pt=de[f|0],Lt=(pt|0)!=255,!(Lt|(f|0)!=(ue|0)&oe[f+1|0]>=0)){if((w|0)>0)break g;break t}if(f=f+1|0,s[E+52>>2]=f,k=w+8|0,s[E+48>>2]=k,N=pt<<24-w|N,s[E+44>>2]=N,Lt||(k=w+7|0,s[E+48>>2]=k),w=k,!((k|0)<24))break}f=wi(f,255,W-f|0),s[E+60>>2]=f||W;break m}k=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),W=32-w|0,s[E+52>>2]=f+(W>>>3|0),f=(W&-8)+w|0,s[E+48>>2]=f,N=(k<<24|(k&65280)<<8|(k>>>8&65280|k>>>24))>>>w|N,s[E+44>>2]=N,w=f}if((w|0)<=7)break h}s[E+48>>2]=w-8,s[E+44>>2]=N<<8,W=(N>>>24|0)+1|0;break c}if(!ie)break c;if((w|0)<(ie|0)){if(zr(E),w=s[E+48>>2],(ie|0)>(w|0))break t;N=s[E+44>>2]}s[E+48>>2]=w-ie,s[E+44>>2]=N<>>32-ie|0)|0}if(w=0-(W&1)^W>>1,f=w>>31,(f^w)-f>>>0>=65536)break t}if(N=s[Ee+4>>2],f=ie?w:(s[Ee+12>>2]+(N<<1)|0)-1>>31^w,w=f>>31,w=s[Ee>>2]+((f^w)-w|0)|0,s[Ee>>2]=w,k=f+N|0,s[Ee+4>>2]=k,(w|0)>16777215||(N=k>>31,(N^k)-N>>>0>=16777216))break l;ie=(cn|0)<0?ye:Ct,N=s[Ee+12>>2],(N|0)==64&&(s[Ee>>2]=w>>1,k=k>>1,s[Ee+4>>2]=k,N=32),w=N+1|0,s[Ee+12>>2]=w,W=w+k|0;p:{c:{if((W|0)<=0){if(s[Ee+4>>2]=(W|0)>(N^-1)?W:0-N|0,w=s[Ee+8>>2],(w|0)<-127)break p;w=w-1|0;break c}if((k|0)<=0||(w=k-w|0,s[Ee+4>>2]=w>>31&w,w=s[Ee+8>>2],(w|0)>126))break p;w=w+1|0}s[Ee+8>>2]=w}w=rt>>>31|0,N=(w+ie|0)+(Wt^nn)|0,N=(N|0)>0?N:0,oe[s[E+5984>>2]+J|0]=(((N|0)>=255?255:N)+w|0)+(f^nn)}if(k=ye,ye=Be,f=s[E+84>>2],J=vn,!(f>>>0>J>>>0))break}if(w=s[be>>2],s[Nr+w>>2]=s[E+5976>>2],k=s[E+5980>>2]+Ln|0,s[E+5980>>2]=k,f=s[E+5984>>2]+Ln|0,s[E+5984>>2]=f,jn=jn+1|0,(jn|0)!=(yn|0))continue;break u}break}break t}break t}if(N=s[E+72>>2],N>>>0>Xt>>>0|N+s[E+80>>2]>>>0<=Xt>>>0||(N=s[E+40>>2],Mr[s[s[N>>2]+8>>2]](N,s[E+68>>2]+(f+ei|0)|0,s[E+76>>2],Ln)),Xt=Xt+1|0,Pr=Pr+1|0,(Pr|0)==(kr|0))break}N=s[E+8>>2]}if((N|0)==(xr|0)){B2(E),w&&Gr(w),f=s[be+16>>2],f&&Gr(f),In=be+32|0;break e}if(N=s[E+52>>2],f=s[E+56>>2],(N|0)!=(f|0)){if(J=de[N|0],k=N+1|0,s[E+52>>2]=k,(J|0)!=255)break s;for(;;){if((f|0)==(k|0))break a;if(N=de[k|0],k=k+1|0,s[E+52>>2]=k,(N|0)!=255)break}if(J=s[E+108>>2],(N|0)!=(J+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+108>>2]=J+1&7,N=wi(k,255,f-k|0),s[E+60>>2]=N||f,zr(E),f=s[be+16>>2],N=s[be+20>>2]-f|0,(N|0)>0&&(fr(f,0,N),w=s[be>>2]),f=s[be+4>>2]-w|0,(f|0)>0&&fr(w,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),k=Br;s[k+64>>2]=4,s[k+68>>2]=0,s[k+48>>2]=4,s[k+52>>2]=0,s[k+32>>2]=4,s[k+36>>2]=0,s[k+16>>2]=4,s[k+20>>2]=0,s[k+8>>2]=0,s[k+12>>2]=1,s[k>>2]=4,s[k+4>>2]=0,s[k+72>>2]=0,s[k+76>>2]=1,s[k+56>>2]=0,s[k+60>>2]=1,s[k+40>>2]=0,s[k+44>>2]=1,s[k+24>>2]=0,s[k+28>>2]=1,k=k+80|0,(ir|0)!=(k|0););s[E+5976>>2]=0,ke[E+5972>>1]=1,s[E+5964>>2]=1,s[E+5968>>2]=4,ke[E+5960>>1]=1,s[E+5952>>2]=0,s[E+5956>>2]=4,Xt=xr;continue}break}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Li(),_t()}Li(),_t()}Vn(5),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=w-1|0,k=de[w|0]==255?7:8,J=(k|0)<=(f|0),f=f-k|0,!!J;);return N-ti|0}function xc(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0,qa=0,As=0,N0=0,Fa=0,Nf=0,jl=0;Pr=s[f+40>>2],s[f+40>>2]=w,Pr&&Mr[s[s[Pr>>2]+4>>2]](Pr),qa=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,Pr=s[k+4>>2],w=s[k>>2],s[f+52>>2]=w,N=w+Pr|0,s[f+56>>2]=N,w=wi(w,255,Pr),s[f+60>>2]=w||N,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),Xt=In-32|0,In=Xt,N=s[f+16>>2],E=f,w=s[f+28>>2],f=s[f+108>>2],s[Xt+24>>2]=0,s[Xt+16>>2]=0,s[Xt+20>>2]=0;e:{t:{if(Br=(w|0)!=1?1:N,di=f+4|0,k=Ae(Br,di),N=k<<1,N){if(N>>>0>=536870912)break t;w=k<<4,f=Gn(w),s[Xt+16>>2]=f,s[Xt+24>>2]=f+(N<<3),Nf=Xt,jl=fr(f,0,w)+w|0,s[Nf+20>>2]=jl}s[Xt+8>>2]=0,s[Xt>>2]=0,s[Xt+4>>2]=0;n:{if(Br){if(Br>>>0>=1073741824)break n;w=Br<<2,ue=Gn(w),s[Xt>>2]=ue,f=w+ue|0,s[Xt+8>>2]=f,fr(ue,0,w),s[Xt+4>>2]=f}As=E+5976|0,Pr=E+136|0,N0=k+1<<3,Fa=0-k<<3;r:{i:{a:{s:{o:{u:{l:{for(;;){if(N=s[E+128>>2],f=s[E+8>>2],w=f-ti|0,Vi=w>>>0>N>>>0?N:w,Vi){for(Wr=ti,Ni=0;;){f=s[Xt+16>>2],w=f+8|0,s[E+6004>>2]=w,f=f+N0|0,s[E+6008>>2]=f;h:{if(!(Wr&1)){N=f,f=w;break h}s[E+6008>>2]=w,s[E+6004>>2]=f,N=w}if(w=0,Br)for(;;){K0=w<<2,s[E+6e3>>2]=s[K0+ue>>2],k=(s[E+108>>2]<<3)+f|0,f=k-8|0,N=Re[f+4>>1]|Re[f+6>>1]<<16,f=Re[f>>1]|Re[f+2>>1]<<16,ke[k>>1]=f,ke[k+2>>1]=f>>>16,ke[k+4>>1]=N,ke[k+6>>1]=N>>>16,f=s[E+6004>>2],N=Re[f+4>>1]|Re[f+6>>1]<<16,k=s[E+6008>>2]-8|0,f=Re[f>>1]|Re[f+2>>1]<<16,ke[k>>1]=f,ke[k+2>>1]=f>>>16,ke[k+4>>1]=N,ke[k+6>>1]=N>>>16,ie=0,rt=In+-64|0,In=rt;h:{f:{if(W=s[E+108>>2],W)for(ei=E+136|0;;){f=s[E+6004>>2],Ln=ie+1|0,Ee=f+(Ln<<3)|0,hi=ie<<3,J=f+hi|0,ye=Re[J+2>>1],N=f,f=hi-8|0,N=N+f|0,$i=Re[N+2>>1],nn=ye-$i|0,yn=s[E+6012>>2],k=s[E+6008>>2],be=k+f|0,Lt=Re[be+2>>1],kr=$i-Lt|0,o0=Ae(Ae(oe[yn+(Re[Ee+2>>1]-ye|0)|0],9)+oe[nn+yn|0]|0,9)+oe[yn+kr|0]|0,Ct=Re[J>>1],Be=Re[N>>1],ue=Ct-Be|0,pt=Re[J+4>>1],$0=Re[N+4>>1],Rs=pt-$0|0,Wt=Re[J+6>>1],so=Re[N+6>>1],na=Wt-so|0,jn=Re[be+6>>1],cn=so-jn|0,Fo=oe[yn+cn|0]+Ae(oe[yn+na|0]+Ae(oe[yn+(Re[Ee+6>>1]-Wt|0)|0],9)|0,9)|0,J=Re[be+4>>1],ir=$0-J|0,I0=oe[yn+ir|0]+Ae(oe[yn+Rs|0]+Ae(oe[yn+(Re[Ee+4>>1]-pt|0)|0],9)|0,9)|0,f=Re[be>>1],N=Be-f|0,Ee=oe[yn+N|0]+Ae(oe[ue+yn|0]+Ae(oe[yn+(Re[Ee>>1]-Ct|0)|0],9)|0,9)|0;p:{if(!(Fo|(I0|(Ee|o0)))){f=Re[be+4>>1]|Re[be+6>>1]<<16,Lt=f,Wt=Re[be>>1]|Re[be+2>>1]<<16,s[rt+24>>2]=Wt,s[rt+28>>2]=f,s[rt+56>>2]=Wt,s[rt+60>>2]=f,Ln=k+hi|0,ue=W-ie|0,Ct=0,N=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((N|0)<=0&&(zr(E),N=s[E+48>>2]),k=N-1|0,s[E+48>>2]=k,J=s[E+44>>2],f=J<<1,s[E+44>>2]=f,(J|0)>=0)break v;if(J=ue-Ct|0,N=s[E+6e3>>2],f=1<>2],Ct=((f|0)>(J|0)?J:f)+Ct|0,(f|0)<=(J|0)&&(s[E+6e3>>2]=((N|0)>=30?30:N)+1),N=k,(ue|0)==(Ct|0))break}f=ue;break d}if((ue|0)==(Ct|0)){f=ue;break d}if(J=s[(s[E+6e3>>2]<<2)+6936>>2],(J|0)<=0)f=0;else{if((N|0)<=(J|0)){if(zr(E),k=s[E+48>>2],(J|0)>(k|0))break g;f=s[E+44>>2]}s[E+44>>2]=f<>2]=k-J,f=f>>>32-J|0}if(f=f+Ct|0,(ue|0)<(f|0))break m}d:{if((f|0)<=0)break d;if(Be=Re[rt+24>>1]|Re[rt+26>>1]<<16,Ee=Re[rt+28>>1]|Re[rt+30>>1]<<16,N=0,Ct=0,f>>>0>=8)for(ue=f&-8,k=0;ye=Ct<<3,J=ye+Ln|0,ke[J>>1]=Be,pt=Be>>>16|0,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,jn=Ee>>>16|0,ke[J+6>>1]=jn,J=Ln+(ye|8)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|16)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|24)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|32)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|40)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|48)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,J=Ln+(ye|56)|0,ke[J>>1]=Be,ke[J+2>>1]=pt,ke[J+4>>1]=Ee,ke[J+6>>1]=jn,Ct=Ct+8|0,k=k+8|0,(ue|0)!=(k|0););if(k=f&7,!k)break d;for(;ue=Ln+(Ct<<3)|0,ke[ue>>1]=Be,ke[ue+2>>1]=Be>>>16,ke[ue+4>>1]=Ee,ke[ue+6>>1]=Ee>>>16,Ct=Ct+1|0,N=N+1|0,(k|0)!=(N|0););}break c}Vn(5),_t()}Vn(5),_t()}if(Ln=f+ie|0,(Ln|0)==s[E+108>>2])break p;jn=Ln<<3,f=jn+s[E+6004>>2]|0,N=Re[f>>1]|Re[f+2>>1]<<16,f=Re[f+4>>1]|Re[f+6>>1]<<16,s[rt+40>>2]=Wt,s[rt+44>>2]=Lt,s[rt+32>>2]=N,s[rt+36>>2]=f,s[rt+16>>2]=Wt,s[rt+20>>2]=Lt,s[rt+8>>2]=N,s[rt+12>>2]=f,ue=E+5976|0,f=ba(E,ue),N=ba(E,ue),k=ba(E,ue),J=ba(E,ue),pt=s[E+68>>2],Wt=pt<<1,ye=Wt|1,Lt=0-f|0,ue=f,f=Re[rt+8>>1],ue=Ae(ye,f>>>0>1]?Lt:ue)+f|0,Lt=0-pt|0;c:{if((ue|0)<(Lt|0)){ue=Ae(ye,s[E+72>>2])+ue|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(pt+f|0)>=(ue|0))break c;ue=Ae(s[E+72>>2],Wt^-1)+ue|0}be=0-N|0,ie=N,N=Re[rt+10>>1],N=Ae(ye,N>>>0>1]?be:ie)+N|0;c:{if((Lt|0)>(N|0)){N=Ae(ye,s[E+72>>2])+N|0;break c}if((f+pt|0)>=(N|0))break c;N=Ae(s[E+72>>2],Wt^-1)+N|0}be=0-k|0,ie=k,k=Re[rt+12>>1],k=Ae(ye,k>>>0>1]?be:ie)+k|0;c:{if((Lt|0)>(k|0)){k=Ae(ye,s[E+72>>2])+k|0;break c}if((f+pt|0)>=(k|0))break c;k=Ae(s[E+72>>2],Wt^-1)+k|0}be=0-J|0,ie=J,J=Re[rt+14>>1],ie=Ae(ye,J>>>0>1]?be:ie)+J|0;c:{if((Lt|0)>(ie|0)){ie=Ae(ye,s[E+72>>2])+ie|0;break c}if((f+pt|0)>=(ie|0))break c;ie=Ae(s[E+72>>2],Wt^-1)+ie|0}ke[rt+54>>1]=(f&ie)==(ie|0)?ie:(ie|0)>=0?f:0,ke[rt+52>>1]=(f&k)==(k|0)?k:(k|0)>=0?f:0,ke[rt+50>>1]=(f&N)==(N|0)?N:(N|0)>=0?f:0,ke[rt+48>>1]=(f&ue)==(ue|0)?ue:(ue|0)>=0?f:0,N=s[rt+52>>2],k=jn+s[E+6008>>2]|0,f=s[rt+48>>2],ke[k>>1]=f,ke[k+2>>1]=f>>>16,ke[k+4>>1]=N,ke[k+6>>1]=N>>>16,f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,Ln=Ln+1|0;break p}k=N,N=f>>>0>Ct>>>0?-1:0;c:{if((k^N)<0)break c;if((N^ue)<0){Ct=f;break c}Ct=(f-Be|0)+Ct|0}for(ue=Wt,N=pt,k=ye,Nr=Ee>>31,vn=((Nr^Ee)-Nr<<4)+ei|0,Be=s[vn>>2],Ee=s[vn+12>>2],f=0;ie=f,f>>>0<=15&&(f=ie+1|0,(Be|0)>Ee<>2],xr=s[E+64>>2],s[E+48>>2]<=7&&zr(E),Ee=s[E+44>>2],f=((ie<<11)+14776|0)+(Ee>>>24<<3)|0,be=s[f+4>>2];c:{if(be){s[E+44>>2]=Ee<>2]=s[E+48>>2]-be,f=s[f>>2];break c}if(f=is(E,ie,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),Ee=f>>31,(f^Ee)-Ee>>>0>=65536)break f}if(yn=s[E+88>>2],ii=s[E+68>>2],Ci=ie?f:(ii?0:(s[vn+12>>2]+(s[vn+4>>2]<<1)|0)-1>>31)^f,f=Ci>>31,ie=s[vn>>2]+((Ci^f)-f|0)|0,s[vn>>2]=ie,Ee=ii<<1,be=Ee|1,W=s[vn+4>>2]+Ae(be,Ci)|0,s[vn+4>>2]=W,(ie|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Be=((Be^Nr)-Nr|0)+Ct|0,f=(Be&xr)==(Be|0),Ct=s[vn+12>>2],(yn|0)==(Ct|0)&&(s[vn>>2]=ie>>1,W=W>>1,s[vn+4>>2]=W,Ct=yn>>1),ie=f?Be:(Be|0)>=0?xr:0,Be=Ct+1|0,s[vn+12>>2]=Be,f=W+Be|0;c:{m:{if((f|0)<=0){if(s[vn+4>>2]=(f|0)>(Ct^-1)?f:0-Ct|0,f=s[vn+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-Be|0,s[vn+4>>2]=f>>31&f,f=s[vn+8>>2],(f|0)>126))break c;f=f+1|0}s[vn+8>>2]=f}W=ie+Ae((Nr^Ci)-Nr|0,be)|0;c:{if((W|0)<(0-ii|0)){W=Ae(s[E+72>>2],be)+W|0,ie=s[E+64>>2];break c}if(ie=s[E+64>>2],(ii+ie|0)>=(W|0))break c;W=Ae(s[E+72>>2],Ee^-1)+W|0}f=ye>>>0>>0?-1:0;c:{if((f^kr)<0||(k=Lt,(f^nn)<0))break c;k=ye+(k-$i|0)|0}for(xr=o0>>31,nn=((xr^o0)-xr<<4)+ei|0,Ct=s[nn>>2],ye=s[nn+12>>2],f=0;Lt=f,f>>>0<=15&&(f=Lt+1|0,(Ct|0)>ye<>2],s[E+48>>2]<=7&&zr(E),Ct=(W&ie)==(W|0)?W:(W|0)>=0?ie:0,ye=s[E+44>>2],f=((Lt<<11)+14776|0)+(ye>>>24<<3)|0,Be=s[f+4>>2];c:{if(Be){s[E+44>>2]=ye<>2]=s[E+48>>2]-Be,f=s[f>>2];break c}if(f=is(E,Lt,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),ye=f>>31,(f^ye)-ye>>>0>=65536)break f}if(kr=s[E+88>>2],yn=s[E+68>>2],be=Lt?f:(yn?0:(s[nn+12>>2]+(s[nn+4>>2]<<1)|0)-1>>31)^f,f=be>>31,ye=s[nn>>2]+((be^f)-f|0)|0,s[nn>>2]=ye,Lt=yn<<1,Be=Lt|1,W=s[nn+4>>2]+Ae(Be,be)|0,s[nn+4>>2]=W,(ye|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Ee=((Ee^xr)-xr|0)+k|0,k=(Ee&ie)==(Ee|0),k=k?Ee:(Ee|0)>=0?ie:0,ie=s[nn+12>>2],(kr|0)==(ie|0)&&(s[nn>>2]=ye>>1,W=W>>1,s[nn+4>>2]=W,ie=kr>>1),ye=ie+1|0,s[nn+12>>2]=ye,f=W+ye|0;c:{m:{if((f|0)<=0){if(s[nn+4>>2]=(f|0)>(ie^-1)?f:0-ie|0,f=s[nn+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-ye|0,s[nn+4>>2]=f>>31&f,f=s[nn+8>>2],(f|0)>126))break c;f=f+1|0}s[nn+8>>2]=f}W=k+Ae(Be,(be^xr)-xr|0)|0;c:{if((W|0)<(0-yn|0)){W=Ae(Be,s[E+72>>2])+W|0,ie=s[E+64>>2];break c}if(ie=s[E+64>>2],(yn+ie|0)>=(W|0))break c;W=Ae(s[E+72>>2],Lt^-1)+W|0}f=J>>>0>pt>>>0?-1:0;c:{if((f^ir)<0||(N=J,(f^Rs)<0))break c;N=pt+(N-$0|0)|0}for(kr=I0>>31,be=((kr^I0)-kr<<4)+ei|0,Lt=s[be>>2],J=s[be+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(Lt|0)>J<>2],s[E+48>>2]<=7&&zr(E),Lt=(W&ie)==(W|0)?W:(W|0)>=0?ie:0,J=s[E+44>>2],f=((k<<11)+14776|0)+(J>>>24<<3)|0,ye=s[f+4>>2];c:{if(ye){s[E+44>>2]=J<>2]=s[E+48>>2]-ye,f=s[f>>2];break c}if(f=is(E,k,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(Ee=s[E+88>>2],ir=s[E+68>>2],Be=k?f:(ir?0:(s[be+12>>2]+(s[be+4>>2]<<1)|0)-1>>31)^f,f=Be>>31,J=s[be>>2]+((Be^f)-f|0)|0,s[be>>2]=J,k=ir<<1,ye=k|1,W=s[be+4>>2]+Ae(ye,Be)|0,s[be+4>>2]=W,(J|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;pt=((pt^kr)-kr|0)+N|0,N=(pt&ie)==(pt|0),N=N?pt:(pt|0)>=0?ie:0,ie=s[be+12>>2],(Ee|0)==(ie|0)&&(s[be>>2]=J>>1,W=W>>1,s[be+4>>2]=W,ie=Ee>>1),J=ie+1|0,s[be+12>>2]=J,f=W+J|0;c:{m:{if((f|0)<=0){if(s[be+4>>2]=(f|0)>(ie^-1)?f:0-ie|0,f=s[be+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-J|0,s[be+4>>2]=f>>31&f,f=s[be+8>>2],(f|0)>126))break c;f=f+1|0}s[be+8>>2]=f}W=N+Ae(ye,(Be^kr)-kr|0)|0;c:{if((W|0)<(0-ir|0)){W=Ae(ye,s[E+72>>2])+W|0,ie=s[E+64>>2];break c}if(ie=s[E+64>>2],(ir+ie|0)>=(W|0))break c;W=Ae(s[E+72>>2],k^-1)+W|0}f=Wt>>>0>>0?-1:0;c:{if((f^cn)<0||(ue=jn,(f^na)<0))break c;ue=Wt+(ue-so|0)|0}for(ir=Fo>>31,cn=((ir^Fo)-ir<<4)+ei|0,J=s[cn>>2],k=s[cn+12>>2],f=0;N=f,f>>>0<=15&&(f=N+1|0,(J|0)>k<>2],s[E+48>>2]<=7&&zr(E),J=(W&ie)==(W|0)?W:(W|0)>=0?ie:0,k=s[E+44>>2],f=((N<<11)+14776|0)+(k>>>24<<3)|0,Wt=s[f+4>>2];c:{if(Wt){s[E+44>>2]=k<>2]=s[E+48>>2]-Wt,f=s[f>>2];break c}if(f=is(E,N,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),k=f>>31,(f^k)-k>>>0>=65536)break f}if(ye=s[E+88>>2],Be=s[E+68>>2],Ee=N?f:(Be?0:(s[cn+12>>2]+(s[cn+4>>2]<<1)|0)-1>>31)^f,f=Ee>>31,pt=s[cn>>2]+((Ee^f)-f|0)|0,s[cn>>2]=pt,k=Be<<1,Wt=k|1,W=s[cn+4>>2]+Ae(Wt,Ee)|0,s[cn+4>>2]=W,(pt|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;ue=((jn^ir)-ir|0)+ue|0,N=(ue&ie)==(ue|0),N=N?ue:(ue|0)>=0?ie:0,ie=s[cn+12>>2],(ye|0)==(ie|0)&&(s[cn>>2]=pt>>1,W=W>>1,s[cn+4>>2]=W,ie=ye>>1),ue=ie+1|0,s[cn+12>>2]=ue,f=W+ue|0;c:{m:{if((f|0)<=0){if(s[cn+4>>2]=(f|0)>(ie^-1)?f:0-ie|0,f=s[cn+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-ue|0,s[cn+4>>2]=f>>31&f,f=s[cn+8>>2],(f|0)>126))break c;f=f+1|0}s[cn+8>>2]=f}W=N+Ae(Wt,(Ee^ir)-ir|0)|0;c:{if((W|0)<(0-Be|0)){W=Ae(Wt,s[E+72>>2])+W|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(Be+f|0)>=(W|0))break c;W=Ae(s[E+72>>2],k^-1)+W|0}k=s[E+6008>>2]+hi|0,N=Ct&65535|Lt<<16,ke[k>>1]=N,ke[k+2>>1]=N>>>16,f=J&65535|((f&W)==(W|0)?W:(W|0)>=0?f:0)<<16,ke[k+4>>1]=f,ke[k+6>>1]=f>>>16}if(W=s[E+108>>2],ie=Ln,!(W>>>0>ie>>>0))break}In=rt- -64|0;break h}Vn(5),_t()}if(ue=s[Xt>>2],s[K0+ue>>2]=s[E+6e3>>2],N=di<<3,f=N+s[E+6004>>2]|0,s[E+6004>>2]=f,N=N+s[E+6008>>2]|0,s[E+6008>>2]=N,w=w+1|0,(Br|0)==(w|0))break}if(f=s[E+96>>2],f>>>0>Wr>>>0|f+s[E+104>>2]>>>0<=Wr>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(N+Fa|0)+(s[E+92>>2]<<3)|0,s[E+100>>2],di)),Wr=Wr+1|0,Ni=Ni+1|0,(Ni|0)==(Vi|0))break}ti=ti+Vi|0,f=s[E+8>>2]}if(k=s[E+56>>2],w=s[E+52>>2],(f|0)!=(ti|0)){if((w|0)==(k|0))break l;if(f=de[w|0],w=w+1|0,s[E+52>>2]=w,(f|0)!=255)break u;for(;;){if((w|0)==(k|0))break o;if(N=de[w|0],w=w+1|0,s[E+52>>2]=w,(N|0)!=255)break}if(f=s[E+132>>2],(N|0)!=(f+208|0))break s;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=f+1&7,f=wi(w,255,k-w|0),s[E+60>>2]=f||k,zr(E),f=s[Xt+16>>2],w=s[Xt+20>>2]-f|0,(w|0)>0&&(fr(f,0,((w>>>3|0)-(w>>>0>7)<<3)+8|0),ue=s[Xt>>2]),f=s[Xt+4>>2]-ue|0,(f|0)>0&&fr(ue,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,w=Pr;s[w+64>>2]=f,s[w+48>>2]=f,s[w+32>>2]=f,s[w+16>>2]=f,s[w+12>>2]=1,s[w+4>>2]=0,s[w+8>>2]=0,s[w>>2]=f,s[w+76>>2]=1,s[w+68>>2]=0,s[w+72>>2]=0,s[w+60>>2]=1,s[w+52>>2]=0,s[w+56>>2]=0,s[w+44>>2]=1,s[w+36>>2]=0,s[w+40>>2]=0,s[w+28>>2]=1,s[w+20>>2]=0,s[w+24>>2]=0,w=w+80|0,(As|0)!=(w|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f;continue}break}if(w>>>0>=k>>>0)break a;h:{if(de[w|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),w=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[w|0]!=255)break i}if(f)break r;ue&&Gr(ue),f=s[Xt+16>>2],f&&Gr(f),In=Xt+32|0;break e}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}Li(),_t()}Li(),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,ue=de[w|0]==255?7:8,k=(ue|0)<=(f|0),f=f-ue|0,!!k;);return N-qa|0}function Nh(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0,qa=0,As=0,N0=0,Fa=0,Nf=0,jl=0;E=s[f+40>>2],s[f+40>>2]=w,E&&Mr[s[s[E>>2]+4>>2]](E),na=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),Xt=In-32|0,In=Xt,w=s[f+16>>2],E=f,f=s[f+28>>2],N=s[E+108>>2],s[Xt+24>>2]=0,s[Xt+16>>2]=0,s[Xt+20>>2]=0;e:{t:{if(jn=(f|0)!=1?1:w,ti=N+4|0,f=Ae(jn,ti),w=f<<1,w){if(w>>>0>=1073741824)break t;N=f<<3,k=Gn(N),s[Xt+16>>2]=k,s[Xt+24>>2]=k+(w<<2),Nf=Xt,jl=fr(k,0,N)+N|0,s[Nf+20>>2]=jl}s[Xt+8>>2]=0,s[Xt>>2]=0,s[Xt+4>>2]=0;n:{if(jn){if(jn>>>0>=1073741824)break n;w=jn<<2,W=Gn(w),s[Xt>>2]=W,N=w+W|0,s[Xt+8>>2]=N,fr(W,0,w),s[Xt+4>>2]=N}qa=E+5976|0,As=E+136|0,N0=f+1<<2,Fa=0-f<<2;r:{i:{a:{s:{o:{u:{l:{for(;;){if(w=s[E+128>>2],f=s[E+8>>2],N=f-Pr|0,ei=w>>>0>>0?w:N,ei){for(ir=Pr,hi=0;;){f=s[Xt+16>>2],w=f+4|0,s[E+6004>>2]=w,f=f+N0|0,s[E+6008>>2]=f;h:{if(!(ir&1)){N=f,f=w;break h}s[E+6008>>2]=w,s[E+6004>>2]=f,N=w}if(w=0,jn)for(;;){o0=w<<2,s[E+6e3>>2]=s[o0+W>>2],f=(s[E+108>>2]<<2)+f|0,N=f-4|0,N=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24,f=s[E+6008>>2]-4|0,N=s[E+6004>>2],N=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24,ue=0,Lt=In-48|0,In=Lt;h:{f:{if(J=s[E+108>>2],J)for(Br=E+136|0;;){N=s[E+6004>>2],pt=ue+1|0,W=N+(pt<<2)|0,Nr=ue<<2,f=N+Nr|0,ye=de[f+1|0],k=Nr-4|0,be=k+N|0,kr=de[be+1|0],xr=ye-kr|0,N=s[E+6012>>2],cn=s[E+6008>>2],k=cn+k|0,rt=de[k+1|0],$0=kr-rt|0,vn=Ae(Ae(oe[N+(de[W+1|0]-ye|0)|0],9)+oe[N+xr|0]|0,9)+oe[N+$0|0]|0,ie=de[f|0],Ee=de[be|0],nn=ie-Ee|0,Be=de[f+2|0],ii=de[be+2|0],so=Be-ii|0,Ct=de[f+3|0],Ci=de[be+3|0],Fo=Ct-Ci|0,be=de[k+3|0],I0=Ci-be|0,di=oe[N+I0|0]+Ae(oe[N+Fo|0]+Ae(oe[N+(de[W+3|0]-Ct|0)|0],9)|0,9)|0,yn=de[k+2|0],K0=ii-yn|0,Vi=oe[N+K0|0]+Ae(oe[N+so|0]+Ae(oe[N+(de[W+2|0]-Be|0)|0],9)|0,9)|0,f=de[k|0],Ln=Ee-f|0,Wt=oe[N+Ln|0]+Ae(oe[N+nn|0]+Ae(oe[N+(de[W|0]-ie|0)|0],9)|0,9)|0;p:{if(!(di|(Vi|(Wt|vn)))){rt=de[k|0]|de[k+1|0]<<8|(de[k+2|0]<<16|de[k+3|0]<<24),s[Lt+12>>2]=rt,s[Lt+40>>2]=rt,ye=cn+Nr|0,f=J-ue|0,ie=0,N=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((N|0)<=0&&(zr(E),N=s[E+48>>2]),k=N-1|0,s[E+48>>2]=k,W=s[E+44>>2],pt=W<<1,s[E+44>>2]=pt,(W|0)>=0)break v;if(N=f-ie|0,W=s[E+6e3>>2],pt=1<>2],ie=((N|0)<(pt|0)?N:pt)+ie|0,(N|0)>=(pt|0)&&(s[E+6e3>>2]=((W|0)>=30?30:W)+1),N=k,(f|0)==(ie|0))break}break d}if((f|0)==(ie|0))break d;if(W=f,f=s[(s[E+6e3>>2]<<2)+6936>>2],(f|0)<=0)f=0;else{if((f|0)>=(N|0)){if(zr(E),k=s[E+48>>2],(f|0)>(k|0))break g;pt=s[E+44>>2]}s[E+44>>2]=pt<>2]=k-f,f=pt>>>32-f|0}if(f=f+ie|0,(W|0)<(f|0))break m}d:{if((f|0)<=0)break d;if(W=de[Lt+12|0]|de[Lt+13|0]<<8|(de[Lt+14|0]<<16|de[Lt+15|0]<<24),k=0,N=0,f>>>0>=8)for(J=f&-8,yn=0;ie=N<<2,Ct=ie+ye|0,oe[Ct|0]=W,pt=W>>>8|0,oe[Ct+1|0]=pt,Be=W>>>16|0,oe[Ct+2|0]=Be,be=Ct,Ct=W>>>24|0,oe[be+3|0]=Ct,be=ye+(ie|4)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,be=ye+(ie|8)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,be=ye+(ie|12)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,be=ye+(ie|16)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,be=ye+(ie|20)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,be=ye+(ie|24)|0,oe[be|0]=W,oe[be+1|0]=pt,oe[be+2|0]=Be,oe[be+3|0]=Ct,ie=ye+(ie|28)|0,oe[ie|0]=W,oe[ie+1|0]=pt,oe[ie+2|0]=Be,oe[ie+3|0]=Ct,N=N+8|0,yn=yn+8|0,(J|0)!=(yn|0););if(pt=f&7,!pt)break d;for(;ie=ye+(N<<2)|0,oe[ie|0]=W,oe[ie+1|0]=W>>>8,oe[ie+2|0]=W>>>16,oe[ie+3|0]=W>>>24,N=N+1|0,k=k+1|0,(pt|0)!=(k|0););}break c}Vn(5),_t()}Vn(5),_t()}if(pt=f+ue|0,(pt|0)==s[E+108>>2])break p;be=pt<<2,f=be+s[E+6004>>2]|0,f=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),s[Lt+24>>2]=rt,s[Lt+16>>2]=f,s[Lt+8>>2]=rt,s[Lt+4>>2]=f,f=E+5976|0,N=ba(E,f),k=ba(E,f),W=ba(E,f),ue=ba(E,f),ye=s[E+68>>2],Be=ye<<1,ie=Be|1,f=de[Lt+4|0],N=Ae(ie,f>>>0>2])+N|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(ye+f|0)>=(N|0))break c;N=Ae(s[E+72>>2],Be^-1)+N|0}rt=0-k|0,Ee=k,k=de[Lt+5|0],k=Ae(ie,k>>>0(k|0)){k=Ae(ie,s[E+72>>2])+k|0;break c}if((f+ye|0)>=(k|0))break c;k=Ae(s[E+72>>2],Be^-1)+k|0}rt=0-W|0,Ee=W,W=de[Lt+6|0],W=Ae(ie,W>>>0(W|0)){W=Ae(ie,s[E+72>>2])+W|0;break c}if((f+ye|0)>=(W|0))break c;W=Ae(s[E+72>>2],Be^-1)+W|0}rt=0-ue|0,Ee=ue,ue=de[Lt+7|0],ue=Ae(ie,ue>>>0(ue|0)){ue=Ae(ie,s[E+72>>2])+ue|0;break c}if((f+ye|0)>=(ue|0))break c;ue=Ae(s[E+72>>2],Be^-1)+ue|0}oe[Lt+35|0]=(f&ue)==(ue|0)?ue:(ue|0)>=0?f:0,oe[Lt+34|0]=(f&W)==(W|0)?W:(W|0)>=0?f:0,oe[Lt+33|0]=(f&k)==(k|0)?k:(k|0)>=0?f:0,oe[Lt+32|0]=(f&N)==(N|0)?N:(N|0)>=0?f:0,f=be+s[E+6008>>2]|0,N=s[Lt+32>>2],oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24,f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,pt=pt+1|0;break p}N=f>>>0>ie>>>0?-1:0;c:{if((N^Ln)<0)break c;if((N^nn)<0){ie=f;break c}ie=(f-Ee|0)+ie|0}for(N=Ct,k=Be,W=ye,nn=Wt>>31,Ee=((nn^Wt)-nn<<4)+Br|0,J=s[Ee>>2],Wt=s[Ee+12>>2],f=0;ue=f,f>>>0<=15&&(f=ue+1|0,(J|0)>Wt<>2],cn=s[E+64>>2],s[E+48>>2]<=7&&zr(E),J=s[E+44>>2],Ln=((ue<<11)+14776|0)+(J>>>24<<3)|0,f=s[Ln+4>>2];c:{if(f){s[E+44>>2]=J<>2]=s[E+48>>2]-f,f=s[Ln>>2];break c}if(f=is(E,ue,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(Ln=s[E+88>>2],J=f,f=s[E+68>>2],ue=ue?J:J^(f?0:(s[Ee+12>>2]+(s[Ee+4>>2]<<1)|0)-1>>31),J=ue>>31,Ni=s[Ee>>2]+((ue^J)-J|0)|0,s[Ee>>2]=Ni,Rs=f<<1,$i=Rs|1,J=s[Ee+4>>2]+Ae($i,ue)|0,s[Ee+4>>2]=J,(Ni|0)>16777215||(Wr=J>>31,(Wr^J)-Wr>>>0>=16777216))break f;Wt=((Wt^nn)-nn|0)+ie|0,Wr=(Wt&cn)==(Wt|0),ie=s[Ee+12>>2],(Ln|0)==(ie|0)&&(s[Ee>>2]=Ni>>1,J=J>>1,s[Ee+4>>2]=J,ie=Ln>>1),Ln=Wr?Wt:(Wt|0)>=0?cn:0,Wt=ie+1|0,s[Ee+12>>2]=Wt,cn=J+Wt|0;c:{m:{if((cn|0)<=0){if(s[Ee+4>>2]=(cn|0)>(ie^-1)?cn:0-ie|0,ie=s[Ee+8>>2],(ie|0)<-127)break c;ie=ie-1|0;break m}if((J|0)<=0||(ie=J-Wt|0,s[Ee+4>>2]=ie>>31&ie,ie=s[Ee+8>>2],(ie|0)>126))break c;ie=ie+1|0}s[Ee+8>>2]=ie}J=Ln+Ae((ue^nn)-nn|0,$i)|0;c:{if((J|0)<(0-f|0)){J=Ae(s[E+72>>2],$i)+J|0,ue=s[E+64>>2];break c}if(ue=s[E+64>>2],(f+ue|0)>=(J|0))break c;J=Ae(s[E+72>>2],Rs^-1)+J|0}f=ye>>>0>>0?-1:0;c:{if((f^$0)<0||(W=rt,(f^xr)<0))break c;W=ye+(W-kr|0)|0}for(rt=vn>>31,ye=((rt^vn)-rt<<4)+Br|0,Ee=s[ye>>2],nn=s[ye+12>>2],f=0;ie=f,f>>>0<=15&&(f=ie+1|0,(Ee|0)>nn<>2],s[E+48>>2]<=7&&zr(E),kr=(J&ue)==(J|0)?J:(J|0)>=0?ue:0,J=s[E+44>>2],Ee=((ie<<11)+14776|0)+(J>>>24<<3)|0,f=s[Ee+4>>2];c:{if(f){s[E+44>>2]=J<>2]=s[E+48>>2]-f,f=s[Ee>>2];break c}if(f=is(E,ie,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(Ee=s[E+88>>2],J=f,f=s[E+68>>2],ie=ie?J:J^(f?0:(s[ye+12>>2]+(s[ye+4>>2]<<1)|0)-1>>31),J=ie>>31,nn=s[ye>>2]+((ie^J)-J|0)|0,s[ye>>2]=nn,xr=f<<1,vn=xr|1,J=s[ye+4>>2]+Ae(vn,ie)|0,s[ye+4>>2]=J,(nn|0)>16777215||(cn=J>>31,(cn^J)-cn>>>0>=16777216))break f;W=((rt^Wt)-rt|0)+W|0,Wt=(W&ue)==(W|0),cn=(W|0)>=0?ue:0,ue=s[ye+12>>2],(Ee|0)==(ue|0)&&(s[ye>>2]=nn>>1,J=J>>1,s[ye+4>>2]=J,ue=Ee>>1),nn=Wt?W:cn,W=ue+1|0,s[ye+12>>2]=W,Ee=W+J|0;c:{m:{if((Ee|0)<=0){if(s[ye+4>>2]=(Ee|0)>(ue^-1)?Ee:0-ue|0,W=s[ye+8>>2],(W|0)<-127)break c;W=W-1|0;break m}if((J|0)<=0||(W=J-W|0,s[ye+4>>2]=W>>31&W,W=s[ye+8>>2],(W|0)>126))break c;W=W+1|0}s[ye+8>>2]=W}J=nn+Ae(vn,(ie^rt)-rt|0)|0;c:{if((J|0)<(0-f|0)){J=Ae(vn,s[E+72>>2])+J|0,ue=s[E+64>>2];break c}if(ue=s[E+64>>2],(f+ue|0)>=(J|0))break c;J=Ae(s[E+72>>2],xr^-1)+J|0}f=Be>>>0>>0?-1:0;c:{if((f^K0)<0||(k=yn,(f^so)<0))break c;k=Be+(k-ii|0)|0}for(ye=Vi>>31,ie=((ye^Vi)-ye<<4)+Br|0,Be=s[ie>>2],rt=s[ie+12>>2],f=0;W=f,f>>>0<=15&&(f=W+1|0,(Be|0)>rt<>2],s[E+48>>2]<=7&&zr(E),nn=(J&ue)==(J|0)?J:(J|0)>=0?ue:0,Be=s[E+44>>2],rt=((W<<11)+14776|0)+(Be>>>24<<3)|0,f=s[rt+4>>2];c:{if(f){s[E+44>>2]=Be<>2]=s[E+48>>2]-f,f=s[rt>>2];break c}if(f=is(E,W,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),Be=f>>31,(f^Be)-Be>>>0>=65536)break f}if(Be=s[E+88>>2],rt=f,f=s[E+68>>2],W=W?rt:rt^(f?0:(s[ie+12>>2]+(s[ie+4>>2]<<1)|0)-1>>31),rt=W>>31,rt=s[ie>>2]+((W^rt)-rt|0)|0,s[ie>>2]=rt,vn=f<<1,yn=vn|1,J=s[ie+4>>2]+Ae(yn,W)|0,s[ie+4>>2]=J,(rt|0)>16777215||(Wt=J>>31,(Wt^J)-Wt>>>0>=16777216))break f;k=((ye^Ee)-ye|0)+k|0,Ee=(k&ue)==(k|0),Wt=(k|0)>=0?ue:0,ue=s[ie+12>>2],(Be|0)==(ue|0)&&(s[ie>>2]=rt>>1,J=J>>1,s[ie+4>>2]=J,ue=Be>>1),rt=Ee?k:Wt,k=ue+1|0,s[ie+12>>2]=k,Be=k+J|0;c:{m:{if((Be|0)<=0){if(s[ie+4>>2]=(Be|0)>(ue^-1)?Be:0-ue|0,k=s[ie+8>>2],(k|0)<-127)break c;k=k-1|0;break m}if((J|0)<=0||(k=J-k|0,s[ie+4>>2]=k>>31&k,k=s[ie+8>>2],(k|0)>126))break c;k=k+1|0}s[ie+8>>2]=k}J=rt+Ae(yn,(W^ye)-ye|0)|0;c:{if((J|0)<(0-f|0)){J=Ae(yn,s[E+72>>2])+J|0,ue=s[E+64>>2];break c}if(ue=s[E+64>>2],(f+ue|0)>=(J|0))break c;J=Ae(s[E+72>>2],vn^-1)+J|0}f=be>>>0>Ct>>>0?-1:0;c:{if((f^I0)<0||(N=be,(f^Fo)<0))break c;N=Ct+(N-Ci|0)|0}for(ie=di>>31,W=((ie^di)-ie<<4)+Br|0,ye=s[W>>2],Be=s[W+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(ye|0)>Be<>2],s[E+48>>2]<=7&&zr(E),be=(J&ue)==(J|0)?J:(J|0)>=0?ue:0,ye=s[E+44>>2],Be=((k<<11)+14776|0)+(ye>>>24<<3)|0,f=s[Be+4>>2];c:{if(f){s[E+44>>2]=ye<>2]=s[E+48>>2]-f,f=s[Be>>2];break c}if(f=is(E,k,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),ye=f>>31,(f^ye)-ye>>>0>=65536)break f}if(Be=s[E+88>>2],ye=s[E+68>>2],f=k?f:(ye?0:(s[W+12>>2]+(s[W+4>>2]<<1)|0)-1>>31)^f,k=f>>31,k=s[W>>2]+((f^k)-k|0)|0,s[W>>2]=k,yn=ye<<1,Ct=yn|1,J=s[W+4>>2]+Ae(Ct,f)|0,s[W+4>>2]=J,(k|0)>16777215||(Ee=J>>31,(Ee^J)-Ee>>>0>=16777216))break f;N=((ie^rt)-ie|0)+N|0,rt=(N&ue)==(N|0),Ee=(N|0)>=0?ue:0,ue=s[W+12>>2],(Be|0)==(ue|0)&&(s[W>>2]=k>>1,J=J>>1,s[W+4>>2]=J,ue=Be>>1),Be=rt?N:Ee,N=ue+1|0,s[W+12>>2]=N,k=N+J|0;c:{m:{if((k|0)<=0){if(s[W+4>>2]=(k|0)>(ue^-1)?k:0-ue|0,N=s[W+8>>2],(N|0)<-127)break c;N=N-1|0;break m}if((J|0)<=0||(N=J-N|0,s[W+4>>2]=N>>31&N,N=s[W+8>>2],(N|0)>126))break c;N=N+1|0}s[W+8>>2]=N}J=Be+Ae(Ct,(f^ie)-ie|0)|0;c:{if((J|0)<(0-ye|0)){J=Ae(Ct,s[E+72>>2])+J|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(ye+f|0)>=(J|0))break c;J=Ae(s[E+72>>2],yn^-1)+J|0}N=s[E+6008>>2]+Nr|0,f=kr&255|(nn<<8&65280|(be<<16&16711680|((f&J)==(J|0)?J:(J|0)>=0?f:0)<<24)),oe[N|0]=f,oe[N+1|0]=f>>>8,oe[N+2|0]=f>>>16,oe[N+3|0]=f>>>24}if(J=s[E+108>>2],ue=pt,!(J>>>0>ue>>>0))break}In=Lt+48|0;break h}Vn(5),_t()}if(W=s[Xt>>2],s[o0+W>>2]=s[E+6e3>>2],N=ti<<2,f=N+s[E+6004>>2]|0,s[E+6004>>2]=f,N=N+s[E+6008>>2]|0,s[E+6008>>2]=N,w=w+1|0,(jn|0)==(w|0))break}if(f=s[E+96>>2],f>>>0>ir>>>0|f+s[E+104>>2]>>>0<=ir>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(N+Fa|0)+(s[E+92>>2]<<2)|0,s[E+100>>2],ti)),ir=ir+1|0,hi=hi+1|0,(hi|0)==(ei|0))break}Pr=Pr+ei|0,f=s[E+8>>2]}if(N=s[E+56>>2],w=s[E+52>>2],(f|0)!=(Pr|0)){if((w|0)==(N|0))break l;if(f=de[w|0],w=w+1|0,s[E+52>>2]=w,(f|0)!=255)break u;for(;;){if((w|0)==(N|0))break o;if(f=de[w|0],w=w+1|0,s[E+52>>2]=w,(f|0)!=255)break}if(k=s[E+132>>2],(f|0)!=(k+208|0))break s;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=k+1&7,f=wi(w,255,N-w|0),s[E+60>>2]=f||N,zr(E),w=s[Xt+16>>2],f=s[Xt+20>>2]-w|0,(f|0)>0&&(fr(w,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),W=s[Xt>>2]),f=s[Xt+4>>2]-W|0,(f|0)>0&&fr(W,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,w=As;s[w+64>>2]=f,s[w+48>>2]=f,s[w+32>>2]=f,s[w+16>>2]=f,s[w+12>>2]=1,s[w+4>>2]=0,s[w+8>>2]=0,s[w>>2]=f,s[w+76>>2]=1,s[w+68>>2]=0,s[w+72>>2]=0,s[w+60>>2]=1,s[w+52>>2]=0,s[w+56>>2]=0,s[w+44>>2]=1,s[w+36>>2]=0,s[w+40>>2]=0,s[w+28>>2]=1,s[w+20>>2]=0,s[w+24>>2]=0,w=w+80|0,(qa|0)!=(w|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f;continue}break}if(w>>>0>=N>>>0)break a;h:{if(de[w|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),w=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[w|0]!=255)break i}if(f)break r;W&&Gr(W),f=s[Xt+16>>2],f&&Gr(f),In=Xt+32|0;break e}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}Li(),_t()}Li(),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,W=(k|0)<=(f|0),f=f-k|0,!!W;);return N-na|0}function bh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0;ie=s[f+44>>2],s[f+44>>2]=w,ie&&Mr[s[s[ie>>2]+4>>2]](ie),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,Wt=In-32|0,In=Wt,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+116>>2],s[Wt+24>>2]=0,s[Wt+16>>2]=0,s[Wt+20>>2]=0;e:{t:{n:{if(Ln=(w|0)!=1?1:f,ir=N+4|0,f=Ae(Ln,ir),w=f<<1,w){if(w>>>0>=715827883)break n;w=Ae(f,12),jn=Gn(w),w=w-6|0,fr(jn,0,(w-((w>>>0)%6|0)|0)+6|0)}s[Wt+8>>2]=0,s[Wt>>2]=0,s[Wt+4>>2]=0;r:{if(Ln){if(Ln>>>0>=1073741824)break t;if(w=Ln<<2,N=Gn(w),s[Wt>>2]=N,$i=fr(N,0,w),!s[k+8>>2])break r;for(kr=jn+6|0,xr=kr+Ae(f,6)|0;;){for(s[k+6016>>2]=xr,s[k+6012>>2]=kr,f=xr,Pr&1&&(s[k+6016>>2]=kr,s[k+6012>>2]=xr,f=kr),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+116>>2],ir),w=s[k+6012>>2],f=0,o0=s[Wt>>2];;){ti=f<<2,s[k+6008>>2]=s[ti+$i>>2],w=Ae(s[k+116>>2],6)+w|0,N=w-6|0,ie=Re[N>>1]|Re[N+2>>1]<<16,ke[w>>1]=ie,ke[w+2>>1]=ie>>>16,ke[w+4>>1]=Re[N+4>>1],w=s[k+6016>>2]-6|0,N=s[k+6012>>2],ie=Re[N>>1]|Re[N+2>>1]<<16,ke[w>>1]=ie,ke[w+2>>1]=ie>>>16,ke[w+4>>1]=Re[N+4>>1],cn=0;i:{a:{if(s[k+116>>2])for(Br=k+144|0;;){w=s[k+6012>>2],nn=Ae(cn,6),ie=w+nn|0,ye=Re[ie+2>>1],W=nn-6|0,w=W+w|0,vn=Re[w+2>>1],ei=ye-vn|0,N=s[k+6020>>2],Ct=s[k+6016>>2],J=Ct+W|0,ue=Re[J+2>>1],hi=vn-ue|0,Xt=Ae(Ae(oe[N+(Re[ie+8>>1]-ye|0)|0],9)+oe[N+ei|0]|0,9)+oe[N+hi|0]|0,W=Re[ie>>1],E=Re[w>>1],be=W-E|0,pt=Re[ie+4>>1],Nr=Re[w+4>>1],ii=pt-Nr|0,Ee=Re[J+4>>1],Ci=Nr-Ee|0,Wr=oe[N+Ci|0]+Ae(oe[N+ii|0]+Ae(oe[N+(Re[ie+10>>1]-pt|0)|0],9)|0,9)|0,w=Re[J>>1],Be=E-w|0,J=oe[N+Be|0]+Ae(oe[N+be|0]+Ae(oe[N+(Re[ie+6>>1]-W|0)|0],9)|0,9)|0;s:{if(!(Wr|(J|Xt))){w=In-48|0,In=w,N=Ae(cn,6),be=N+s[k+6012>>2]|0,ie=s[k+116>>2]-cn|0,pt=N+s[k+6016>>2]|0,N=pt-6|0,J=Re[N+4>>1],ye=Re[N+2>>1],ue=Re[N>>1],N=0;o:{u:{for(;;){if(W=pt+Ae(N,6)|0,Be=Re[W>>1]-ue|0,Ee=Be>>31,E=s[k+76>>2],(E|0)<((Ee^Be)-Ee|0)||(Be=Re[W+2>>1]-ye|0,Ee=Be>>31,(E|0)<((Ee^Be)-Ee|0))||(Be=Re[W+4>>1]-J|0,Ee=Be>>31,(E|0)<((Ee^Be)-Ee|0)))break u;if(ke[W+4>>1]=J,ke[W+2>>1]=ye,ke[W>>1]=ue,N=N+1|0,(ie|0)==(N|0))break}A1(k,ie,1);break o}if(W=(N|0)==(ie|0),A1(k,N,W),W)break o;W=Ae(N,6),pt=W+pt|0,ie=Re[pt>>1]|Re[pt+2>>1]<<16,Ee=Re[pt+4>>1],ke[w+20>>1]=Ee,ke[w+12>>1]=J,ke[w+26>>1]=ye,ke[w+24>>1]=ue,s[w+32>>2]=ie,ke[w+36>>1]=Ee,ke[w+28>>1]=J,s[w+16>>2]=ie,s[w+8>>2]=s[w+24>>2],ie=W+be|0,ke[w+4>>1]=Re[ie+4>>1],s[w>>2]=Re[ie>>1]|Re[ie+2>>1]<<16,ie=Re[w>>1],W=ie>>>0>1]?-1:1,J=k+5984|0,ye=s[k+80>>2],ue=s[k+76>>2],Ee=Ae(W,Re[w+16>>1]-ie|0),ue=(((Ee|0)>0?ue:0-ue|0)+Ee|0)/(ue<<1|1)|0,ue=(ye&ue>>31)+ue|0,rt=ue-((ue|0)>=((ye+1|0)/2|0)?ye:0)|0,$s(k,J,rt),ye=Re[w+2>>1],be=ye>>>0>1]?-1:1,ue=s[k+80>>2],Ee=s[k+76>>2],E=Ae(be,Re[w+18>>1]-ye|0),Ee=(((E|0)>0?Ee:0-Ee|0)+E|0)/(Ee<<1|1)|0,Ee=(ue&Ee>>31)+Ee|0,Ct=Ee-((Ee|0)>=((ue+1|0)/2|0)?ue:0)|0,$s(k,J,Ct),Be=Re[w+4>>1],nn=Be>>>0>1]?-1:1,E=J,J=s[k+80>>2],ue=s[k+76>>2],Ee=Ae(nn,Re[w+20>>1]-Be|0),ue=(((Ee|0)>0?ue:0-ue|0)+Ee|0)/(ue<<1|1)|0,ue=(J&ue>>31)+ue|0,Xt=ue-((ue|0)>=((J+1|0)/2|0)?J:0)|0,$s(k,E,Xt),Ee=s[k+76>>2],E=Ee<<1,ue=E|1,ie=ie+Ae(ue,Ae(W,rt))|0,rt=0-Ee|0;u:{if((ie|0)<(rt|0)){ie=Ae(ue,s[k+80>>2])+ie|0,W=s[k+72>>2];break u}if(W=s[k+72>>2],(Ee+W|0)>=(ie|0))break u;ie=Ae(s[k+80>>2],E^-1)+ie|0}J=ye+Ae(ue,Ae(be,Ct))|0;u:{if((rt|0)>(J|0)){J=Ae(ue,s[k+80>>2])+J|0;break u}if((W+Ee|0)>=(J|0))break u;J=Ae(s[k+80>>2],E^-1)+J|0}ye=Be+Ae(Xt,Ae(ue,nn))|0;u:{if((rt|0)>(ye|0)){ye=Ae(ue,s[k+80>>2])+ye|0;break u}if((W+Ee|0)>=(ye|0))break u;ye=Ae(s[k+80>>2],E^-1)+ye|0}ke[w+44>>1]=(W&ye)==(ye|0)?ye:(ye|0)>=0?W:0,ke[w+42>>1]=(W&J)==(J|0)?J:(J|0)>=0?W:0,ke[w+40>>1]=(W&ie)==(ie|0)?ie:(ie|0)>=0?W:0,ke[pt+4>>1]=Re[w+44>>1],ie=s[w+40>>2],ke[pt>>1]=ie,ke[pt+2>>1]=ie>>>16,ie=s[k+6008>>2],s[k+6008>>2]=((ie|0)<=1?1:ie)-1,ie=N+1|0}In=w+48|0,cn=ie+cn|0;break s}N=w>>>0>W>>>0?-1:0;o:{if((Be^N)<0)break o;if((N^be)<0){W=w;break o}W=(w-E|0)+W|0}for(cn=cn+1|0,N=pt,ie=ye,Be=J>>31,be=((Be^J)-Be<<4)+Br|0,rt=s[be>>2],E=s[be+12>>2],w=0;J=w,w>>>0<=15&&(w=J+1|0,(rt|0)>E<>2],w=s[k+76>>2],Lt=Re[Ct+nn>>1],W=((Be^s[be+8>>2])-Be|0)+W|0,Ct=s[k+72>>2],di=(W|0)==(W&Ct)?W:(W|0)>=0?Ct:0,W=(Be^Lt-di)-Be|0,W=(((W|0)>0?w:0-w|0)+W|0)/(w<<1|1)|0,W=(rt&W>>31)+W|0,rt=W-((W|0)>=((rt+1|0)/2|0)?rt:0)|0,w=rt^(w|J?0:(E+(s[be+4>>2]<<1)|0)-1>>31),Ct=w>>30^w<<1,w=Ct>>J,Lt=s[k+92>>2],E=Lt-s[k+84>>2]|0;o:{if((w|0)<(E-1|0)){if((w|0)>=31){W=w>>>1|0,E=s[k+52>>2]-W|0,s[k+52>>2]=E;u:{if((E|0)>=0||(Ot(k),s[k+52>>2]>=0))break u;Ot(k)}w=w-W|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}W=w-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,w=Ct&(-1<=0||(s[k+48>>2]=E|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2];u:{l:{if((E|0)>=32){w=W-31|0,s[k+52>>2]=w;h:{if((W|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break h;Ot(k),w=s[k+52>>2]}if(E=(s[k+84>>2]+(w-Lt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,w=s[k+84>>2],W=E-w|0,s[k+52>>2]=W,w=Ct-1&(-1<=0||(s[k+48>>2]=J|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2],s[k+48>>2]=Vi,J=s[k+96>>2],Ct=s[k+76>>2],w=rt>>31,yn=s[be>>2]+((w^rt)-w|0)|0,s[be>>2]=yn,Ni=Ct<<1,Lt=Ni|1,E=s[be+4>>2]+Ae(Lt,rt)|0,s[be+4>>2]=E,(yn|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[be+12>>2],(J|0)==(w|0)&&(s[be>>2]=yn>>1,E=E>>1,s[be+4>>2]=E,w=J>>1),J=w+1|0,s[be+12>>2]=J,yn=E+J|0;o:{u:{if((yn|0)<=0){if(s[be+4>>2]=(yn|0)>(w^-1)?yn:0-w|0,w=s[be+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-J|0,s[be+4>>2]=w>>31&w,w=s[be+8>>2],(w|0)>126))break o;w=w+1|0}s[be+8>>2]=w}E=di+Ae(Lt,(Be^rt)-Be|0)|0,rt=0-Ct|0;o:{if((E|0)<(rt|0)){E=Ae(Lt,s[k+80>>2])+E|0,be=s[k+72>>2];break o}if(be=s[k+72>>2],(Ct+be|0)>=(E|0))break o;E=Ae(s[k+80>>2],Ni^-1)+E|0}w=ye>>>0>>0?-1:0;o:{if((w^hi)<0||(ie=ue,(w^ei)<0))break o;ie=ye+(ie-vn|0)|0}for(ue=Xt>>31,ye=((ue^Xt)-ue<<4)+Br|0,Xt=s[ye>>2],Be=s[ye+12>>2],w=0;J=w,w>>>0<=15&&(w=J+1|0,(Xt|0)>Be<=0?be:0,E=s[k+80>>2],w=((ue^s[ye+8>>2])-ue|0)+ie|0,vn=(w|0)==(w&be)?w:(w|0)>=0?be:0,w=(ue^Re[(nn+s[k+6016>>2]|0)+2>>1]-vn)-ue|0,w=(((w|0)>0?Ct:rt)+w|0)/(Lt|0)|0,w=(E&w>>31)+w|0,ie=w-((w|0)>=((E+1|0)/2|0)?E:0)|0,w=ie^(J|Ct?0:(Be+(s[ye+4>>2]<<1)|0)-1>>31),be=w>>30^w<<1,w=be>>J,Be=s[k+92>>2],E=Be-s[k+84>>2]|0;o:{if((w|0)<(E-1|0)){if((w|0)>=31){E=w>>>1|0,W=W-E|0,s[k+52>>2]=W;u:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break u;Ot(k),W=s[k+52>>2]}w=w-E|0}w=(w^-1)+W|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}W=w-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,w=be&(-1<=0||(s[k+48>>2]=E|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<=32){E=W-31|0,s[k+52>>2]=E;h:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break h;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Be|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=1>>>0-E|Vi,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,w=s[k+84>>2],W=E-w|0,s[k+52>>2]=W,w=be-1&(-1<=0||(s[k+48>>2]=J|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2],s[k+48>>2]=Ct,J=s[k+96>>2],be=s[k+76>>2],w=ie>>31,rt=s[ye>>2]+((w^ie)-w|0)|0,s[ye>>2]=rt,Lt=be<<1,Be=Lt|1,E=s[ye+4>>2]+Ae(Be,ie)|0,s[ye+4>>2]=E,(rt|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[ye+12>>2],(J|0)==(w|0)&&(s[ye>>2]=rt>>1,E=E>>1,s[ye+4>>2]=E,w=J>>1),J=w+1|0,s[ye+12>>2]=J,rt=E+J|0;o:{u:{if((rt|0)<=0){if(s[ye+4>>2]=(rt|0)>(w^-1)?rt:0-w|0,w=s[ye+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-J|0,s[ye+4>>2]=w>>31&w,w=s[ye+8>>2],(w|0)>126))break o;w=w+1|0}s[ye+8>>2]=w}E=vn+Ae(Be,(ie^ue)-ue|0)|0,rt=0-be|0;o:{if((E|0)<(rt|0)){E=Ae(Be,s[k+80>>2])+E|0,ue=s[k+72>>2];break o}if(ue=s[k+72>>2],(be+ue|0)>=(E|0))break o;E=Ae(s[k+80>>2],Lt^-1)+E|0}w=Ee>>>0>pt>>>0?-1:0;o:{if((w^Ci)<0||(N=Ee,(w^ii)<0))break o;N=pt+(N-Nr|0)|0}for(ye=Wr>>31,J=((ye^Wr)-ye<<4)+Br|0,pt=s[J>>2],Ee=s[J+12>>2],w=0;ie=w,w>>>0<=15&&(w=ie+1|0,(pt|0)>Ee<=0?ue:0,pt=s[k+80>>2],E=rt,w=((ye^s[J+8>>2])-ye|0)+N|0,rt=(w|0)==(w&ue)?w:(w|0)>=0?ue:0,w=(ye^Re[(nn+s[k+6016>>2]|0)+4>>1]-rt)-ye|0,w=(((w|0)>0?be:E)+w|0)/(Be|0)|0,w=(pt&w>>31)+w|0,pt=w-((w|0)>=((pt+1|0)/2|0)?pt:0)|0,w=pt^(ie|be?0:(Ee+(s[J+4>>2]<<1)|0)-1>>31),ue=w>>30^w<<1,w=ue>>ie,Ee=s[k+92>>2],N=Ee-s[k+84>>2]|0;o:{if((w|0)<(N-1|0)){if((w|0)>=31){N=w>>>1|0,W=W-N|0,s[k+52>>2]=W;u:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break u;Ot(k),W=s[k+52>>2]}w=w-N|0}w=(w^-1)+W|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}N=w-ie|0,s[k+52>>2]=N,W=s[k+48>>2]|1<>2]=W,w=ue&(-1<=0||(s[k+48>>2]=W|w>>>0-N,Ot(k),N=s[k+52>>2],(N|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-N,Ot(k),N=s[k+52>>2]}w=w<=32){E=W-31|0,s[k+52>>2]=E;h:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break h;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Ee|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-N|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=Ct|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}N=s[k+48>>2]|1<>2]=N,w=s[k+84>>2],E=E-w|0,s[k+52>>2]=E,w=ue-1&(-1<=0||(s[k+48>>2]=N|w>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-E,Ot(k),E=s[k+52>>2]}w=w<>2]=w|s[k+48>>2],w=s[k+96>>2],ie=s[k+76>>2],N=pt>>31,W=s[J>>2]+((N^pt)-N|0)|0,s[J>>2]=W,Ee=ie<<1,ue=Ee|1,E=s[J+4>>2]+Ae(ue,pt)|0,s[J+4>>2]=E,(W|0)>16777215||(N=E>>31,(N^E)-N>>>0>=16777216))break a;N=s[J+12>>2],(w|0)==(N|0)&&(s[J>>2]=W>>1,E=E>>1,s[J+4>>2]=E,N=w>>1),w=N+1|0,s[J+12>>2]=w,W=w+E|0;o:{u:{if((W|0)<=0){if(s[J+4>>2]=(W|0)>(N^-1)?W:0-N|0,w=s[J+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-w|0,s[J+4>>2]=w>>31&w,w=s[J+8>>2],(w|0)>126))break o;w=w+1|0}s[J+8>>2]=w}E=rt+Ae(ue,(ye^pt)-ye|0)|0;o:{if((E|0)<(0-ie|0)){E=Ae(ue,s[k+80>>2])+E|0,w=s[k+72>>2];break o}if(w=s[k+72>>2],(ie+w|0)>=(E|0))break o;E=Ae(s[k+80>>2],Ee^-1)+E|0}N=nn+s[k+6016>>2]|0,ke[N+2>>1]=Lt,ke[N>>1]=Xt,ke[N+4>>1]=(w&E)==(E|0)?E:(E|0)>=0?w:0}if(!(bt[k+116>>2]>cn>>>0))break}break i}Vn(5),_t()}if(s[o0+ti>>2]=s[k+6008>>2],N=Ae(ir,6),w=N+s[k+6012>>2]|0,s[k+6012>>2]=w,s[k+6016>>2]=N+s[k+6016>>2],f=f+1|0,(Ln|0)==(f|0))break}if(Pr=Pr+1|0,!(Pr>>>0>2]))break}break r}if(!s[k+8>>2])break r;for(N=jn+6|0,ie=N+Ae(f,6)|0,f=0;s[k+6016>>2]=ie,s[k+6012>>2]=N,w=ie,f&1&&(s[k+6016>>2]=N,s[k+6012>>2]=ie,w=N),W=s[k+44>>2],Mr[s[s[W>>2]+12>>2]](W,w,s[k+116>>2],ir),f=f+1|0,f>>>0>2];);}Ot(k);r:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break r;Ot(k)}Ot(k),f=s[Wt>>2],f&&Gr(f),jn&&Gr(jn),In=Wt+32|0;break e}Li(),_t()}Li(),_t()}return s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function d4(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0;ie=s[f+44>>2],s[f+44>>2]=w,ie&&Mr[s[s[ie>>2]+4>>2]](ie),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,Wt=In-32|0,In=Wt,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+116>>2],s[Wt+24>>2]=0,s[Wt+16>>2]=0,s[Wt+20>>2]=0;e:{t:{n:{if(Ln=(w|0)!=1?1:f,ir=N+4|0,f=Ae(Ln,ir),w=f<<1,w){if(w>>>0>=1431655766)break n;w=Ae(f,6),jn=Gn(w),w=w-3|0,fr(jn,0,(w-((w>>>0)%3|0)|0)+3|0)}s[Wt+8>>2]=0,s[Wt>>2]=0,s[Wt+4>>2]=0;r:{if(Ln){if(Ln>>>0>=1073741824)break t;if(w=Ln<<2,N=Gn(w),s[Wt>>2]=N,$i=fr(N,0,w),!s[k+8>>2])break r;for(kr=jn+3|0,xr=kr+Ae(f,3)|0;;){for(s[k+6016>>2]=xr,s[k+6012>>2]=kr,f=xr,Pr&1&&(s[k+6016>>2]=kr,s[k+6012>>2]=xr,f=kr),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+116>>2],ir),w=s[k+6012>>2],f=0,o0=s[Wt>>2];;){ti=f<<2,s[k+6008>>2]=s[ti+$i>>2],w=Ae(s[k+116>>2],3)+w|0,N=w-3|0,ie=de[N|0]|de[N+1|0]<<8,oe[w|0]=ie,oe[w+1|0]=ie>>>8,oe[w+2|0]=de[N+2|0],w=s[k+6016>>2]-3|0,N=s[k+6012>>2],ie=de[N|0]|de[N+1|0]<<8,oe[w|0]=ie,oe[w+1|0]=ie>>>8,oe[w+2|0]=de[N+2|0],cn=0;i:{a:{if(s[k+116>>2])for(Br=k+144|0;;){w=s[k+6012>>2],nn=Ae(cn,3),ie=w+nn|0,ye=de[ie+1|0],W=nn-3|0,w=W+w|0,vn=de[w+1|0],ei=ye-vn|0,N=s[k+6020>>2],Ct=s[k+6016>>2],J=Ct+W|0,ue=de[J+1|0],hi=vn-ue|0,Xt=Ae(Ae(oe[N+(de[ie+4|0]-ye|0)|0],9)+oe[N+ei|0]|0,9)+oe[N+hi|0]|0,W=de[ie|0],E=de[w|0],be=W-E|0,pt=de[ie+2|0],Nr=de[w+2|0],ii=pt-Nr|0,Ee=de[J+2|0],Ci=Nr-Ee|0,Wr=oe[N+Ci|0]+Ae(oe[N+ii|0]+Ae(oe[N+(de[ie+5|0]-pt|0)|0],9)|0,9)|0,w=de[J|0],Be=E-w|0,J=oe[N+Be|0]+Ae(oe[N+be|0]+Ae(oe[N+(de[ie+3|0]-W|0)|0],9)|0,9)|0;s:{if(!(Wr|(J|Xt))){w=In-48|0,In=w,N=Ae(cn,3),be=N+s[k+6012>>2]|0,ie=s[k+116>>2]-cn|0,pt=N+s[k+6016>>2]|0,N=pt-3|0,J=de[N+2|0],ye=de[N+1|0],ue=de[N|0],N=0;o:{u:{for(;;){if(W=pt+Ae(N,3)|0,Be=de[W|0]-ue|0,Ee=Be>>31,E=s[k+76>>2],(E|0)<((Ee^Be)-Ee|0)||(Be=de[W+1|0]-ye|0,Ee=Be>>31,(E|0)<((Ee^Be)-Ee|0))||(Be=de[W+2|0]-J|0,Ee=Be>>31,(E|0)<((Ee^Be)-Ee|0)))break u;if(oe[W+2|0]=J,oe[W+1|0]=ye,oe[W|0]=ue,N=N+1|0,(ie|0)==(N|0))break}A1(k,ie,1);break o}if(W=(N|0)==(ie|0),A1(k,N,W),W)break o;W=Ae(N,3),pt=W+pt|0,ie=de[pt|0]|de[pt+1|0]<<8,Ee=de[pt+2|0],oe[w+22|0]=Ee,oe[w+18|0]=J,oe[w+25|0]=ye,oe[w+24|0]=ue,ke[w+32>>1]=ie,oe[w+34|0]=Ee,oe[w+26|0]=J,ke[w+20>>1]=ie,ke[w+16>>1]=Re[w+24>>1],ie=W+be|0,oe[w+14|0]=de[ie+2|0],ke[w+12>>1]=de[ie|0]|de[ie+1|0]<<8,ie=de[w+12|0],W=ie>>>0>2],ue=s[k+76>>2],Ee=Ae(W,de[w+20|0]-ie|0),ue=(((Ee|0)>0?ue:0-ue|0)+Ee|0)/(ue<<1|1)|0,ue=(ye&ue>>31)+ue|0,rt=ue-((ue|0)>=((ye+1|0)/2|0)?ye:0)|0,$s(k,J,rt),ye=de[w+13|0],be=ye>>>0>2],Ee=s[k+76>>2],E=Ae(be,de[w+21|0]-ye|0),Ee=(((E|0)>0?Ee:0-Ee|0)+E|0)/(Ee<<1|1)|0,Ee=(ue&Ee>>31)+Ee|0,Ct=Ee-((Ee|0)>=((ue+1|0)/2|0)?ue:0)|0,$s(k,J,Ct),Be=de[w+14|0],nn=Be>>>0>2],ue=s[k+76>>2],Ee=Ae(nn,de[w+22|0]-Be|0),ue=(((Ee|0)>0?ue:0-ue|0)+Ee|0)/(ue<<1|1)|0,ue=(J&ue>>31)+ue|0,Xt=ue-((ue|0)>=((J+1|0)/2|0)?J:0)|0,$s(k,E,Xt),Ee=s[k+76>>2],E=Ee<<1,ue=E|1,ie=ie+Ae(ue,Ae(W,rt))|0,rt=0-Ee|0;u:{if((ie|0)<(rt|0)){ie=Ae(ue,s[k+80>>2])+ie|0,W=s[k+72>>2];break u}if(W=s[k+72>>2],(Ee+W|0)>=(ie|0))break u;ie=Ae(s[k+80>>2],E^-1)+ie|0}J=ye+Ae(ue,Ae(be,Ct))|0;u:{if((rt|0)>(J|0)){J=Ae(ue,s[k+80>>2])+J|0;break u}if((W+Ee|0)>=(J|0))break u;J=Ae(s[k+80>>2],E^-1)+J|0}ye=Be+Ae(Xt,Ae(ue,nn))|0;u:{if((rt|0)>(ye|0)){ye=Ae(ue,s[k+80>>2])+ye|0;break u}if((W+Ee|0)>=(ye|0))break u;ye=Ae(s[k+80>>2],E^-1)+ye|0}oe[w+42|0]=(W&ye)==(ye|0)?ye:(ye|0)>=0?W:0,oe[w+41|0]=(W&J)==(J|0)?J:(J|0)>=0?W:0,oe[w+40|0]=(W&ie)==(ie|0)?ie:(ie|0)>=0?W:0,oe[pt+2|0]=de[w+42|0],ie=Re[w+40>>1],oe[pt|0]=ie,oe[pt+1|0]=ie>>>8,ie=s[k+6008>>2],s[k+6008>>2]=((ie|0)<=1?1:ie)-1,ie=N+1|0}In=w+48|0,cn=ie+cn|0;break s}N=w>>>0>W>>>0?-1:0;o:{if((Be^N)<0)break o;if((N^be)<0){W=w;break o}W=(w-E|0)+W|0}for(cn=cn+1|0,N=pt,ie=ye,Be=J>>31,be=((Be^J)-Be<<4)+Br|0,rt=s[be>>2],E=s[be+12>>2],w=0;J=w,w>>>0<=15&&(w=J+1|0,(rt|0)>E<>2],w=s[k+76>>2],Lt=de[Ct+nn|0],W=((Be^s[be+8>>2])-Be|0)+W|0,Ct=s[k+72>>2],di=(W|0)==(W&Ct)?W:(W|0)>=0?Ct:0,W=(Be^Lt-di)-Be|0,W=(((W|0)>0?w:0-w|0)+W|0)/(w<<1|1)|0,W=(rt&W>>31)+W|0,rt=W-((W|0)>=((rt+1|0)/2|0)?rt:0)|0,w=rt^(w|J?0:(E+(s[be+4>>2]<<1)|0)-1>>31),Ct=w>>30^w<<1,w=Ct>>J,Lt=s[k+92>>2],E=Lt-s[k+84>>2]|0;o:{if((w|0)<(E-1|0)){if((w|0)>=31){W=w>>>1|0,E=s[k+52>>2]-W|0,s[k+52>>2]=E;u:{if((E|0)>=0||(Ot(k),s[k+52>>2]>=0))break u;Ot(k)}w=w-W|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}W=w-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,w=Ct&(-1<=0||(s[k+48>>2]=E|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2];u:{l:{if((E|0)>=32){w=W-31|0,s[k+52>>2]=w;h:{if((W|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break h;Ot(k),w=s[k+52>>2]}if(E=(s[k+84>>2]+(w-Lt|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,w=s[k+84>>2],W=E-w|0,s[k+52>>2]=W,w=Ct-1&(-1<=0||(s[k+48>>2]=J|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2],s[k+48>>2]=Vi,J=s[k+96>>2],Ct=s[k+76>>2],w=rt>>31,yn=s[be>>2]+((w^rt)-w|0)|0,s[be>>2]=yn,Ni=Ct<<1,Lt=Ni|1,E=s[be+4>>2]+Ae(Lt,rt)|0,s[be+4>>2]=E,(yn|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[be+12>>2],(J|0)==(w|0)&&(s[be>>2]=yn>>1,E=E>>1,s[be+4>>2]=E,w=J>>1),J=w+1|0,s[be+12>>2]=J,yn=E+J|0;o:{u:{if((yn|0)<=0){if(s[be+4>>2]=(yn|0)>(w^-1)?yn:0-w|0,w=s[be+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-J|0,s[be+4>>2]=w>>31&w,w=s[be+8>>2],(w|0)>126))break o;w=w+1|0}s[be+8>>2]=w}E=di+Ae(Lt,(Be^rt)-Be|0)|0,rt=0-Ct|0;o:{if((E|0)<(rt|0)){E=Ae(Lt,s[k+80>>2])+E|0,be=s[k+72>>2];break o}if(be=s[k+72>>2],(Ct+be|0)>=(E|0))break o;E=Ae(s[k+80>>2],Ni^-1)+E|0}w=ye>>>0>>0?-1:0;o:{if((w^hi)<0||(ie=ue,(w^ei)<0))break o;ie=ye+(ie-vn|0)|0}for(ue=Xt>>31,ye=((ue^Xt)-ue<<4)+Br|0,Xt=s[ye>>2],Be=s[ye+12>>2],w=0;J=w,w>>>0<=15&&(w=J+1|0,(Xt|0)>Be<=0?be:0,E=s[k+80>>2],w=((ue^s[ye+8>>2])-ue|0)+ie|0,vn=(w|0)==(w&be)?w:(w|0)>=0?be:0,w=(ue^de[(nn+s[k+6016>>2]|0)+1|0]-vn)-ue|0,w=(((w|0)>0?Ct:rt)+w|0)/(Lt|0)|0,w=(E&w>>31)+w|0,ie=w-((w|0)>=((E+1|0)/2|0)?E:0)|0,w=ie^(J|Ct?0:(Be+(s[ye+4>>2]<<1)|0)-1>>31),be=w>>30^w<<1,w=be>>J,Be=s[k+92>>2],E=Be-s[k+84>>2]|0;o:{if((w|0)<(E-1|0)){if((w|0)>=31){E=w>>>1|0,W=W-E|0,s[k+52>>2]=W;u:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break u;Ot(k),W=s[k+52>>2]}w=w-E|0}w=(w^-1)+W|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}W=w-J|0,s[k+52>>2]=W,E=s[k+48>>2]|1<>2]=E,w=be&(-1<=0||(s[k+48>>2]=E|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<=32){E=W-31|0,s[k+52>>2]=E;h:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break h;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Be|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-E|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=1>>>0-E|Vi,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=s[k+48>>2]|1<>2]=J,w=s[k+84>>2],W=E-w|0,s[k+52>>2]=W,w=be-1&(-1<=0||(s[k+48>>2]=J|w>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-W,Ot(k),W=s[k+52>>2]}w=w<>2],s[k+48>>2]=Ct,J=s[k+96>>2],be=s[k+76>>2],w=ie>>31,rt=s[ye>>2]+((w^ie)-w|0)|0,s[ye>>2]=rt,Lt=be<<1,Be=Lt|1,E=s[ye+4>>2]+Ae(Be,ie)|0,s[ye+4>>2]=E,(rt|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[ye+12>>2],(J|0)==(w|0)&&(s[ye>>2]=rt>>1,E=E>>1,s[ye+4>>2]=E,w=J>>1),J=w+1|0,s[ye+12>>2]=J,rt=E+J|0;o:{u:{if((rt|0)<=0){if(s[ye+4>>2]=(rt|0)>(w^-1)?rt:0-w|0,w=s[ye+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-J|0,s[ye+4>>2]=w>>31&w,w=s[ye+8>>2],(w|0)>126))break o;w=w+1|0}s[ye+8>>2]=w}E=vn+Ae(Be,(ie^ue)-ue|0)|0,rt=0-be|0;o:{if((E|0)<(rt|0)){E=Ae(Be,s[k+80>>2])+E|0,ue=s[k+72>>2];break o}if(ue=s[k+72>>2],(be+ue|0)>=(E|0))break o;E=Ae(s[k+80>>2],Lt^-1)+E|0}w=Ee>>>0>pt>>>0?-1:0;o:{if((w^Ci)<0||(N=Ee,(w^ii)<0))break o;N=pt+(N-Nr|0)|0}for(ye=Wr>>31,J=((ye^Wr)-ye<<4)+Br|0,pt=s[J>>2],Ee=s[J+12>>2],w=0;ie=w,w>>>0<=15&&(w=ie+1|0,(pt|0)>Ee<=0?ue:0,pt=s[k+80>>2],E=rt,w=((ye^s[J+8>>2])-ye|0)+N|0,rt=(w|0)==(w&ue)?w:(w|0)>=0?ue:0,w=(ye^de[(nn+s[k+6016>>2]|0)+2|0]-rt)-ye|0,w=(((w|0)>0?be:E)+w|0)/(Be|0)|0,w=(pt&w>>31)+w|0,pt=w-((w|0)>=((pt+1|0)/2|0)?pt:0)|0,w=pt^(ie|be?0:(Ee+(s[J+4>>2]<<1)|0)-1>>31),ue=w>>30^w<<1,w=ue>>ie,Ee=s[k+92>>2],N=Ee-s[k+84>>2]|0;o:{if((w|0)<(N-1|0)){if((w|0)>=31){N=w>>>1|0,W=W-N|0,s[k+52>>2]=W;u:{if((W|0)>=0||(Ot(k),W=s[k+52>>2],(W|0)>=0))break u;Ot(k),W=s[k+52>>2]}w=w-N|0}w=(w^-1)+W|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}N=w-ie|0,s[k+52>>2]=N,W=s[k+48>>2]|1<>2]=W,w=ue&(-1<=0||(s[k+48>>2]=W|w>>>0-N,Ot(k),N=s[k+52>>2],(N|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-N,Ot(k),N=s[k+52>>2]}w=w<=32){E=W-31|0,s[k+52>>2]=E;h:{if((W|0)>30||(Ot(k),E=s[k+52>>2],(E|0)>=0))break h;Ot(k),E=s[k+52>>2]}if(E=(s[k+84>>2]+(E-Ee|0)|0)+31|0,s[k+52>>2]=E,(E|0)>=0)break u;if(s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)<0)break l;break u}if(E=W-N|0,s[k+52>>2]=E,(E|0)>=0||(s[k+48>>2]=Ct|1>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u}s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}N=s[k+48>>2]|1<>2]=N,w=s[k+84>>2],E=E-w|0,s[k+52>>2]=E,w=ue-1&(-1<=0||(s[k+48>>2]=N|w>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-E,Ot(k),E=s[k+52>>2]}w=w<>2]=w|s[k+48>>2],w=s[k+96>>2],ie=s[k+76>>2],N=pt>>31,W=s[J>>2]+((N^pt)-N|0)|0,s[J>>2]=W,Ee=ie<<1,ue=Ee|1,E=s[J+4>>2]+Ae(ue,pt)|0,s[J+4>>2]=E,(W|0)>16777215||(N=E>>31,(N^E)-N>>>0>=16777216))break a;N=s[J+12>>2],(w|0)==(N|0)&&(s[J>>2]=W>>1,E=E>>1,s[J+4>>2]=E,N=w>>1),w=N+1|0,s[J+12>>2]=w,W=w+E|0;o:{u:{if((W|0)<=0){if(s[J+4>>2]=(W|0)>(N^-1)?W:0-N|0,w=s[J+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-w|0,s[J+4>>2]=w>>31&w,w=s[J+8>>2],(w|0)>126))break o;w=w+1|0}s[J+8>>2]=w}E=rt+Ae(ue,(ye^pt)-ye|0)|0;o:{if((E|0)<(0-ie|0)){E=Ae(ue,s[k+80>>2])+E|0,w=s[k+72>>2];break o}if(w=s[k+72>>2],(ie+w|0)>=(E|0))break o;E=Ae(s[k+80>>2],Ee^-1)+E|0}N=nn+s[k+6016>>2]|0,oe[N+1|0]=Lt,oe[N|0]=Xt,oe[N+2|0]=(w&E)==(E|0)?E:(E|0)>=0?w:0}if(!(bt[k+116>>2]>cn>>>0))break}break i}Vn(5),_t()}if(s[o0+ti>>2]=s[k+6008>>2],N=Ae(ir,3),w=N+s[k+6012>>2]|0,s[k+6012>>2]=w,s[k+6016>>2]=N+s[k+6016>>2],f=f+1|0,(Ln|0)==(f|0))break}if(Pr=Pr+1|0,!(Pr>>>0>2]))break}break r}if(!s[k+8>>2])break r;for(N=jn+3|0,ie=N+Ae(f,3)|0,f=0;s[k+6016>>2]=ie,s[k+6012>>2]=N,w=ie,f&1&&(s[k+6016>>2]=N,s[k+6012>>2]=ie,w=N),W=s[k+44>>2],Mr[s[s[W>>2]+12>>2]](W,w,s[k+116>>2],ir),f=f+1|0,f>>>0>2];);}Ot(k);r:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break r;Ot(k)}Ot(k),f=s[Wt>>2],f&&Gr(f),jn&&Gr(jn),In=Wt+32|0;break e}Li(),_t()}Li(),_t()}return s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function sp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0;J=s[f+44>>2],s[f+44>>2]=w,J&&Mr[s[s[J>>2]+4>>2]](J),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,N=0,Wt=In-32|0,In=Wt,k=f,f=s[k+16>>2],w=s[k+28>>2],J=s[k+92>>2],s[Wt+24>>2]=0,s[Wt+16>>2]=0,s[Wt+20>>2]=0;e:{t:{if(xr=(w|0)!=1?1:f,Br=J+4|0,J=Ae(xr,Br),f=J<<1,f){if(f>>>0>=1073741824)break t;f=J<<3,N=Gn(f),s[Wt+16>>2]=N,fr(N,0,f)}s[Wt+8>>2]=0,s[Wt>>2]=0,s[Wt+4>>2]=0;n:{r:{if(xr){if(xr>>>0<1073741824)break r;Li(),_t()}if(s[k+8>>2])break n;f=0;break e}if(w=xr<<2,f=Gn(w),s[Wt>>2]=f,fr(f,0,w),!s[k+8>>2])break e;for($0=J+1<<2;;){w=s[Wt+16>>2],N=w+4|0,s[k+5988>>2]=N,w=w+$0|0,s[k+5992>>2]=w;r:{if(!(ti&1)){N=w;break r}s[k+5992>>2]=N,s[k+5988>>2]=w}for(w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,N,s[k+92>>2],Br),w=s[k+5988>>2],N=0;;){hi=N<<2,s[k+5984>>2]=s[hi+f>>2],f=(s[k+92>>2]<<2)+w|0,w=f-4|0,w=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),oe[f|0]=w,oe[f+1|0]=w>>>8,oe[f+2|0]=w>>>16,oe[f+3|0]=w>>>24,f=s[k+5992>>2]-4|0,w=s[k+5988>>2],w=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),oe[f|0]=w,oe[f+1|0]=w>>>8,oe[f+2|0]=w>>>16,oe[f+3|0]=w>>>24,w=0;r:{i:{if(s[k+92>>2])for(Nr=k+120|0;;){J=s[k+5988>>2],vn=w+1|0,ue=J+(vn<<2)|0,cn=w<<2,f=J+cn|0,ie=de[f+1|0],E=cn-4|0,J=E+J|0,ir=de[J+1|0],Pr=ie-ir|0,W=de[f|0],ye=de[J|0],nn=W-ye|0,be=de[f+2|0],kr=de[J+2|0],ii=be-kr|0,rt=de[f+3|0],ei=de[J+3|0],Ci=rt-ei|0,J=s[k+5996>>2],Ct=s[k+5992>>2],E=Ct+E|0,Ee=de[E+1|0],di=ir-Ee|0,Lt=Ae(Ae(oe[J+(de[ue+1|0]-ie|0)|0],9)+oe[J+Pr|0]|0,9)+oe[J+di|0]|0,f=de[E|0],Xt=ye-f|0,Be=oe[Xt+J|0]+Ae(oe[J+nn|0]+Ae(oe[J+(de[ue|0]-W|0)|0],9)|0,9)|0,pt=de[E+2|0],Vi=kr-pt|0,Ln=oe[J+Vi|0]+Ae(oe[J+ii|0]+Ae(oe[J+(de[ue+2|0]-be|0)|0],9)|0,9)|0,yn=de[E+3|0],Ni=ei-yn|0,jn=oe[J+Ni|0]+Ae(oe[J+Ci|0]+Ae(oe[J+(de[ue+3|0]-rt|0)|0],9)|0,9)|0;a:{if(!(Lt|Be|Ln|jn)){f=w<<2,vn=f+s[k+5988>>2]|0,J=s[k+92>>2]-w|0,ie=f+s[k+5992>>2]|0,f=ie-4|0,ue=de[f|0]|de[f+1|0]<<8|(de[f+2|0]<<16|de[f+3|0]<<24),be=ue>>>16|0,rt=ue>>>8|0,f=0;s:{o:{for(;;){if(W=ie+(f<<2)|0,E=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),(E&255)!=(ue&255)|(E>>>8&255)!=(rt&255)|(E>>>16&255)!=(be&255))break o;if(oe[W|0]=ue,oe[W+1|0]=ue>>>8,oe[W+2|0]=ue>>>16,oe[W+3|0]=ue>>>24,f=f+1|0,(J|0)==(f|0))break}gu(k,J,1);break s}W=(f|0)==(J|0),gu(k,f,W),W||(Ee=f<<2,J=Ee+vn|0,W=de[J|0]|de[J+1|0]<<8|(de[J+2|0]<<16|de[J+3|0]<<24),pt=W&255,vn=pt>>>0<(ue&255)>>>0?-1:1,E=k+5960|0,J=ie+Ee|0,ie=de[J|0]|de[J+1|0]<<8|(de[J+2|0]<<16|de[J+3|0]<<24),pt=Ae(vn,(ie&255)-pt|0),dl(k,E,pt<<24>>24),yn=W>>>8|0,Ee=yn&255,rt=Ee>>>0<(rt&255)>>>0?-1:1,ye=Ae(rt,(ie>>>8&255)-Ee|0),dl(k,E,ye<<24>>24),cn=W>>>16|0,Ee=cn&255,be=Ee>>>0<(be&255)>>>0?-1:1,nn=Ae(be,(ie>>>16&255)-Ee|0),dl(k,E,nn<<24>>24),Ee=W>>>24|0,ue=Ee>>>0>>24>>>0?-1:1,Be=E,E=Ae(ue,(ie>>>24|0)-Ee|0),dl(k,Be,E<<24>>24),ue=W+Ae(pt,vn)&255|(yn+Ae(ye,rt)<<8&65280|(cn+Ae(be,nn)<<16&16711680|Ee+Ae(E,ue)<<24)),oe[J|0]=ue,oe[J+1|0]=ue>>>8,oe[J+2|0]=ue>>>16,oe[J+3|0]=ue>>>24,J=s[k+5984>>2],s[k+5984>>2]=((J|0)<=1?1:J)-1,J=f+1|0)}vn=w+J|0;break a}w=f>>>0>W>>>0?-1:0;s:{if((w^Xt)<0)break s;if((w^nn)<0){W=f;break s}W=(f-ye|0)+W|0}for(J=rt,ue=be,w=ie,nn=Be>>31,ye=((nn^Be)-nn<<4)+Nr|0,Wr=s[ye>>2],Xt=s[ye+12>>2],f=0;E=f,f>>>0<=15&&(f=E+1|0,(Wr|0)>Xt<>>31|0,f=(Wr+W|0)+(nn^s[ye+8>>2])|0,f=(f|0)>0?f:0,$i=(f|0)>=255?255:f,o0=(nn^de[Ct+cn|0]-$i)-nn|0,Be=o0<<24>>24,f=Be^(E?0:(Xt+(s[ye+4>>2]<<1)|0)-1>>31),Xt=f>>30^f<<1,f=Xt>>E;s:{if((f|0)<=22){f=s[k+52>>2]+(f^-1)|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}W=f-E|0,s[k+52>>2]=W,Ct=s[k+48>>2]|1<>2]=Ct,f=Xt&(-1<=0||(s[k+48>>2]=Ct|f>>>0-W,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],E=f-24|0,s[k+52>>2]=E;o:{if((E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>24-f,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}W=E-8|0,s[k+52>>2]=W,Ct=s[k+48>>2]|1<>2]=Ct,f=Xt-1&255;o:{if((E|0)>7||(s[k+48>>2]=Ct|f>>>8-E,Ot(k),W=s[k+52>>2],(W|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-W,Ot(k),W=s[k+52>>2]}f=f<>2],s[k+48>>2]=Xt,f=Be>>31,Ct=s[ye>>2]+((f^Be)-f|0)|0,s[ye>>2]=Ct,E=Be+s[ye+4>>2]|0,s[ye+4>>2]=E,(Ct|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ye+12>>2],(f|0)==64&&(s[ye>>2]=Ct>>1,E=E>>1,s[ye+4>>2]=E,f=32),Be=f+1|0,s[ye+12>>2]=Be,Ct=E+Be|0;s:{o:{if((Ct|0)<=0){if(s[ye+4>>2]=(Ct|0)>(f^-1)?Ct:0-f|0,f=s[ye+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-Be|0,s[ye+4>>2]=f>>31&f,f=s[ye+8>>2],(f|0)>126))break s;f=f+1|0}s[ye+8>>2]=f}f=ie>>>0>>0?-1:0;s:{if((f^di)<0||(w=Ee,(f^Pr)<0))break s;w=ie+(w-ir|0)|0}for(Ee=Lt>>31,ie=((Ee^Lt)-Ee<<4)+Nr|0,Be=s[ie>>2],ye=s[ie+12>>2],f=0;E=f,f>>>0<=15&&(f=E+1|0,(Be|0)>ye<>2]<<1)|0)-1>>31,Be=Lt>>>31|0,f=(Be+w|0)+(Ee^s[ie+8>>2])|0,f=(f|0)>0?f:0,ir=(f|0)>=255?255:f,Pr=(Ee^de[(s[k+5992>>2]+cn|0)+1|0]-ir)-Ee|0,ye=Pr<<24>>24,f=Ct^ye,Lt=f>>30^f<<1,f=Lt>>E;s:{if((f|0)<=22){f=(f^-1)+W|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=Xt|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-E|0,s[k+52>>2]=w,W=s[k+48>>2]|1<>2]=W,f=Lt&(-1<=0||(s[k+48>>2]=W|f>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-w,Ot(k),w=s[k+52>>2]}f=f<>2]=E;o:{if((E|0)>=0||(s[k+48>>2]=Xt|1>>>24-W,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}w=E-8|0,s[k+52>>2]=w,W=s[k+48>>2]|1<>2]=W,f=Lt-1&255;o:{if((E|0)>7||(s[k+48>>2]=W|f>>>8-E,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-w,Ot(k),w=s[k+52>>2]}f=f<>2],s[k+48>>2]=Lt,f=ye>>31,W=s[ie>>2]+((f^ye)-f|0)|0,s[ie>>2]=W,E=ye+s[ie+4>>2]|0,s[ie+4>>2]=E,(W|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ie+12>>2],(f|0)==64&&(s[ie>>2]=W>>1,E=E>>1,s[ie+4>>2]=E,f=32),W=f+1|0,s[ie+12>>2]=W,ye=E+W|0;s:{o:{if((ye|0)<=0){if(s[ie+4>>2]=(ye|0)>(f^-1)?ye:0-f|0,f=s[ie+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-W|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break s;f=f+1|0}s[ie+8>>2]=f}f=be>>>0>>0?-1:0;s:{if((f^Vi)<0||(ue=pt,(f^ii)<0))break s;ue=be+(ue-kr|0)|0}for(be=Ln>>31,ie=((be^Ln)-be<<4)+Nr|0,pt=s[ie>>2],E=s[ie+12>>2],f=0;W=f,f>>>0<=15&&(f=W+1|0,(pt|0)>E<>>31|0,f=(ye+ue|0)+(be^s[ie+8>>2])|0,f=(f|0)>0?f:0,Ln=(f|0)>=255?255:f,kr=(be^de[(s[k+5992>>2]+cn|0)+2|0]-Ln)-be|0,ue=kr<<24>>24,f=ue^(W?0:(E+(s[ie+4>>2]<<1)|0)-1>>31),pt=f>>30^f<<1,f=pt>>W;s:{if((f|0)<=22){f=(f^-1)+w|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=Lt|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-W|0,s[k+52>>2]=w,E=s[k+48>>2]|1<>2]=E,f=pt&(-1<=0||(s[k+48>>2]=E|f>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-w,Ot(k),w=s[k+52>>2]}f=f<>2]=E;o:{if((E|0)>=0||(s[k+48>>2]=Lt|1>>>24-w,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}w=E-8|0,s[k+52>>2]=w,W=s[k+48>>2]|1<>2]=W,f=pt-1&255;o:{if((E|0)>7||(s[k+48>>2]=W|f>>>8-E,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-w,Ot(k),w=s[k+52>>2]}f=f<>2],s[k+48>>2]=pt,f=ue>>31,W=s[ie>>2]+((f^ue)-f|0)|0,s[ie>>2]=W,E=ue+s[ie+4>>2]|0,s[ie+4>>2]=E,(W|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;f=s[ie+12>>2],(f|0)==64&&(s[ie>>2]=W>>1,E=E>>1,s[ie+4>>2]=E,f=32),ue=f+1|0,s[ie+12>>2]=ue,W=E+ue|0;s:{o:{if((W|0)<=0){if(s[ie+4>>2]=(W|0)>(f^-1)?W:0-f|0,f=s[ie+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-ue|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break s;f=f+1|0}s[ie+8>>2]=f}f=rt>>>0>>0?-1:0;s:{if((f^Ni)<0||(J=yn,(f^Ci)<0))break s;J=rt+(J-ei|0)|0}for(ie=jn>>31,W=((ie^jn)-ie<<4)+Nr|0,rt=s[W>>2],E=s[W+12>>2],f=0;ue=f,f>>>0<=15&&(f=ue+1|0,(rt|0)>E<>>31|0,f=(yn+J|0)+(ie^s[W+8>>2])|0,f=(f|0)>0?f:0,Lt=(f|0)>=255?255:f,jn=(ie^de[(s[k+5992>>2]+cn|0)+3|0]-Lt)-ie|0,J=jn<<24>>24,f=J^(ue?0:(E+(s[W+4>>2]<<1)|0)-1>>31),rt=f>>30^f<<1,f=rt>>ue;s:{if((f|0)<=22){f=(f^-1)+w|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=pt|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-ue|0,s[k+52>>2]=w,E=s[k+48>>2]|1<>2]=E,f=rt&(-1<=0||(s[k+48>>2]=E|f>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-w,Ot(k),w=s[k+52>>2]}f=f<>2]=E;o:{if((E|0)>=0||(s[k+48>>2]=pt|1>>>24-w,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}f=E-8|0,s[k+52>>2]=f,ue=s[k+48>>2]|1<>2]=ue,w=rt-1&255;o:{if((E|0)>7||(s[k+48>>2]=ue|w>>>8-E,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|w>>>0-f,Ot(k),f=s[k+52>>2]}f=w<>2]=f|s[k+48>>2],f=J>>31,w=s[W>>2]+((f^J)-f|0)|0,s[W>>2]=w,E=J+s[W+4>>2]|0,s[W+4>>2]=E,(w|0)>16777215||(f=E>>31,(f^E)-f>>>0>=16777216))break i;ue=(Wr+$i|0)+(nn^o0)|0,rt=(Be+ir|0)+(Ee^Pr)|0,be=(ye+Ln|0)+(be^kr)|0,f=s[W+12>>2],(f|0)==64&&(s[W>>2]=w>>1,E=E>>1,s[W+4>>2]=E,f=32),w=f+1|0,s[W+12>>2]=w,J=w+E|0;s:{o:{if((J|0)<=0){if(s[W+4>>2]=(J|0)>(f^-1)?J:0-f|0,f=s[W+8>>2],(f|0)<-127)break s;f=f-1|0;break o}if((E|0)<=0||(f=E-w|0,s[W+4>>2]=f>>31&f,f=s[W+8>>2],(f|0)>126))break s;f=f+1|0}s[W+8>>2]=f}f=s[k+5992>>2]+cn|0,w=ue&255|(rt<<8&65280|(be<<16&16711680|(Lt+yn|0)+(ie^jn)<<24)),oe[f|0]=w,oe[f+1|0]=w>>>8,oe[f+2|0]=w>>>16,oe[f+3|0]=w>>>24}if(w=vn,!(w>>>0>2]))break}break r}Vn(5),_t()}if(f=s[Wt>>2],s[hi+f>>2]=s[k+5984>>2],J=Br<<2,w=J+s[k+5988>>2]|0,s[k+5988>>2]=w,s[k+5992>>2]=J+s[k+5992>>2],N=N+1|0,(xr|0)==(N|0))break}if(ti=ti+1|0,!(ti>>>0>2]))break}break e}for(w=N+4|0,J=w+(J<<2)|0,N=0;s[k+5992>>2]=J,s[k+5988>>2]=w,f=J,N&1&&(s[k+5992>>2]=w,s[k+5988>>2]=J,f=w),ue=s[k+44>>2],Mr[s[s[ue>>2]+12>>2]](ue,f,s[k+92>>2],Br),N=N+1|0,N>>>0>2];);f=0;break e}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(w=s[k+52>>2],w=w-((w-1|0)%8|0)|0,s[k+52>>2]=w,(w|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),f&&Gr(f),f=s[Wt+16>>2],f&&Gr(f),In=Wt+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function ap(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0,qa=0,As=0;ie=s[f+40>>2],s[f+40>>2]=w,ie&&Mr[s[s[ie>>2]+4>>2]](ie),so=s[k>>2],w=s[N+4>>2],s[f+68>>2]=s[N>>2],s[f+72>>2]=w,w=s[N+12>>2],s[f+76>>2]=s[N+8>>2],s[f+80>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+104>>2]||(s[f+104>>2]=s[f+8>>2]),rt=In-32|0,In=rt,w=s[f+16>>2],E=f,f=s[f+28>>2],N=s[E+84>>2],s[rt+24>>2]=0,s[rt+16>>2]=0,s[rt+20>>2]=0;e:{t:{if(vn=(f|0)!=1?1:w,Br=N+4|0,f=Ae(vn,Br),w=f<<1,w){if(w>>>0>=1073741824)break t;N=f<<3,k=Gn(N),s[rt+16>>2]=k,s[rt+24>>2]=k+(w<<2),qa=rt,As=fr(k,0,N)+N|0,s[qa+20>>2]=As}s[rt+8>>2]=0,s[rt>>2]=0,s[rt+4>>2]=0;n:{if(vn){if(vn>>>0>=1073741824)break n;w=vn<<2,J=Gn(w),s[rt>>2]=J,N=w+J|0,s[rt+8>>2]=N,fr(J,0,w),s[rt+4>>2]=N}Fo=E+5952|0,I0=E+112|0,K0=f+1<<2,Rs=0-f<<2;r:{i:{a:{s:{o:{u:{l:{for(;;){if(w=s[E+104>>2],f=s[E+8>>2],N=f-ir|0,Nr=w>>>0>>0?w:N,Nr){for(jn=ir,Wr=0;;){f=s[rt+16>>2],w=f+4|0,s[E+5980>>2]=w,f=f+K0|0,s[E+5984>>2]=f;h:{if(!(jn&1)){N=f,f=w;break h}s[E+5984>>2]=w,s[E+5980>>2]=f,N=w}if(w=0,vn)for(;;){Ci=w<<2,s[E+5976>>2]=s[Ci+J>>2],f=(s[E+84>>2]<<2)+f|0,N=f-4|0,N=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24,f=s[E+5984>>2]-4|0,N=s[E+5980>>2],N=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24,f=0;h:{f:{if(s[E+84>>2])for(kr=E+112|0;;){k=s[E+5980>>2],Ee=f+1|0,ie=k+(Ee<<2)|0,ti=f<<2,N=k+ti|0,ye=de[N+1|0],J=k,k=ti-4|0,W=J+k|0,yn=de[W+1|0],di=ye-yn|0,J=s[E+5988>>2],ue=k+s[E+5984>>2]|0,be=de[ue+1|0],Vi=yn-be|0,Ln=Ae(Ae(oe[J+(de[ie+1|0]-ye|0)|0],9)+oe[J+di|0]|0,9)+oe[J+Vi|0]|0,k=de[N|0],nn=de[W|0],Lt=k-nn|0,Be=de[N+2|0],ei=de[W+2|0],Ni=Be-ei|0,pt=de[N+3|0],hi=de[W+3|0],$i=pt-hi|0,Ct=de[ue+3|0],o0=hi-Ct|0,xr=oe[J+o0|0]+Ae(oe[J+$i|0]+Ae(oe[J+(de[ie+3|0]-pt|0)|0],9)|0,9)|0,Wt=de[ue+2|0],$0=ei-Wt|0,Pr=oe[J+$0|0]+Ae(oe[J+Ni|0]+Ae(oe[J+(de[ie+2|0]-Be|0)|0],9)|0,9)|0,N=de[ue|0],W=nn-N|0,cn=oe[J+W|0]+Ae(oe[J+Lt|0]+Ae(oe[J+(de[ie|0]-k|0)|0],9)|0,9)|0;p:{if(!(xr|(Pr|(cn|Ln)))){Be=In-16|0,In=Be,ye=s[E+5984>>2]+(f<<2)|0,N=ye-4|0,Wt=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),s[Be+8>>2]=Wt,N=s[E+84>>2],s[Be+4>>2]=Wt,N=N-f|0,W=0,J=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((J|0)<=0&&(zr(E),J=s[E+48>>2]),k=J-1|0,s[E+48>>2]=k,ie=s[E+44>>2],Ee=ie<<1,s[E+44>>2]=Ee,(ie|0)>=0)break v;if(J=N-W|0,ie=s[E+5976>>2],Ee=1<>2],W=((J|0)<(Ee|0)?J:Ee)+W|0,(J|0)>=(Ee|0)&&(s[E+5976>>2]=((ie|0)>=30?30:ie)+1),J=k,(N|0)==(W|0))break}break d}if((N|0)==(W|0))break d;if(ie=N,N=s[(s[E+5976>>2]<<2)+6936>>2],(N|0)<=0)N=0;else{if((N|0)>=(J|0)){if(zr(E),k=s[E+48>>2],(N|0)>(k|0))break g;Ee=s[E+44>>2]}s[E+44>>2]=Ee<>2]=k-N,N=Ee>>>32-N|0}if(N=N+W|0,(ie|0)<(N|0))break m}d:{if((N|0)<=0)break d;if(ie=de[Be+4|0]|de[Be+5|0]<<8|(de[Be+6|0]<<16|de[Be+7|0]<<24),k=0,J=0,N>>>0>=8)for(Ln=N&-8,Ee=0;W=J<<2,Ct=W+ye|0,oe[Ct|0]=ie,pt=ie>>>8|0,oe[Ct+1|0]=pt,be=ie>>>16|0,oe[Ct+2|0]=be,ue=Ct,Ct=ie>>>24|0,oe[ue+3|0]=Ct,ue=ye+(W|4)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,ue=ye+(W|8)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,ue=ye+(W|12)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,ue=ye+(W|16)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,ue=ye+(W|20)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,ue=ye+(W|24)|0,oe[ue|0]=ie,oe[ue+1|0]=pt,oe[ue+2|0]=be,oe[ue+3|0]=Ct,W=ye+(W|28)|0,oe[W|0]=ie,oe[W+1|0]=pt,oe[W+2|0]=be,oe[W+3|0]=Ct,J=J+8|0,Ee=Ee+8|0,(Ln|0)!=(Ee|0););if(W=N&7,!W)break d;for(;Ee=ye+(J<<2)|0,oe[Ee|0]=ie,oe[Ee+1|0]=ie>>>8,oe[Ee+2|0]=ie>>>16,oe[Ee+3|0]=ie>>>24,J=J+1|0,k=k+1|0,(W|0)!=(k|0););}break c}Vn(5),_t()}Vn(5),_t()}k=N,N=N+f|0,(N|0)!=s[E+84>>2]&&(pt=N<<2,N=pt+s[E+5980>>2]|0,N=de[N|0]|de[N+1|0]<<8|(de[N+2|0]<<16|de[N+3|0]<<24),J=E+5952|0,ie=Bu(E,J),Ee=Bu(E,J),W=Bu(E,J),ye=Bu(E,J),J=pt+s[E+5984>>2]|0,Ct=N+((N&255)>>>0<(Wt&255)>>>0?0-ie|0:ie)&255,ie=N>>>8|0,ue=((ie&255)>>>0<(Wt>>>8&255)>>>0?0-Ee|0:Ee)+ie<<8&65280,ie=N>>>16|0,N=N>>>24|0,N=Ct|(ue|(((ie&255)>>>0<(Wt>>>16&255)>>>0?0-W|0:W)+ie<<16&16711680|(N>>>0>>24>>>0?0-ye|0:ye)+N<<24)),oe[J|0]=N,oe[J+1|0]=N>>>8,oe[J+2|0]=N>>>16,oe[J+3|0]=N>>>24,N=s[E+5976>>2],s[E+5976>>2]=((N|0)<=1?1:N)-1,k=k+1|0),In=Be+16|0,Ee=f+k|0;break p}f=N>>>0>k>>>0?-1:0;c:{if((f^W)<0)break c;if((f^Lt)<0){k=N;break c}k=(N-nn|0)+k|0}for(N=pt,J=Be,ie=ye,nn=cn>>31,ue=((nn^cn)-nn<<4)+kr|0,Lt=s[ue>>2],Xt=s[ue+12>>2],f=0;W=f,f>>>0<=15&&(f=W+1|0,(Lt|0)>Xt<>2],s[E+48>>2]<=7&&zr(E),Lt=s[E+44>>2],Xt=((W<<11)+14776|0)+(Lt>>>24<<3)|0,f=s[Xt+4>>2];c:{if(f){s[E+44>>2]=Lt<>2]=s[E+48>>2]-f,f=s[Xt>>2];break c}if(f=is(E,W,32,8),f=f>>1^0-(f&1),Lt=f>>31,(f^Lt)-Lt>>>0>=65536)break f}if(Lt=f,f=s[ue+4>>2],Lt=W?Lt:Lt^(s[ue+12>>2]+(f<<1)|0)-1>>31,W=Lt>>31,Xt=s[ue>>2]+((Lt^W)-W|0)|0,s[ue>>2]=Xt,W=f+Lt|0,s[ue+4>>2]=W,(Xt|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;f=s[ue+12>>2],(f|0)==64&&(s[ue>>2]=Xt>>1,W=W>>1,s[ue+4>>2]=W,f=32),Xt=f+1|0,s[ue+12>>2]=Xt,ii=W+Xt|0;c:{m:{if((ii|0)<=0){if(s[ue+4>>2]=(f^-1)<(ii|0)?ii:0-f|0,f=s[ue+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-Xt|0,s[ue+4>>2]=f>>31&f,f=s[ue+8>>2],(f|0)>126))break c;f=f+1|0}s[ue+8>>2]=f}f=ye>>>0>>0?-1:0;c:{if((f^Vi)<0||(ie=be,(f^di)<0))break c;ie=ye+(ie-yn|0)|0}for(be=Ln>>31,ye=((be^Ln)-be<<4)+kr|0,ue=s[ye>>2],yn=s[ye+12>>2],f=0;W=f,f>>>0<=15&&(f=W+1|0,(ue|0)>yn<>>31|0,k=(f+k|0)+(nn^na)|0,k=(k|0)>0?k:0,f=((k|0)>=255?255:k)+f|0,yn=s[ye+8>>2],s[E+48>>2]<=7&&zr(E),nn=f+(Lt^nn)|0,k=s[E+44>>2],ue=((W<<11)+14776|0)+(k>>>24<<3)|0,f=s[ue+4>>2];c:{if(f){s[E+44>>2]=k<>2]=s[E+48>>2]-f,f=s[ue>>2];break c}if(f=is(E,W,32,8),f=f>>1^0-(f&1),k=f>>31,(f^k)-k>>>0>=65536)break f}if(k=f,f=s[ye+4>>2],ue=W?k:k^(s[ye+12>>2]+(f<<1)|0)-1>>31,k=ue>>31,k=s[ye>>2]+((ue^k)-k|0)|0,s[ye>>2]=k,W=f+ue|0,s[ye+4>>2]=W,(k|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;f=s[ye+12>>2],(f|0)==64&&(s[ye>>2]=k>>1,W=W>>1,s[ye+4>>2]=W,f=32),k=f+1|0,s[ye+12>>2]=k,cn=k+W|0;c:{m:{if((cn|0)<=0){if(s[ye+4>>2]=(cn|0)>(f^-1)?cn:0-f|0,f=s[ye+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-k|0,s[ye+4>>2]=f>>31&f,f=s[ye+8>>2],(f|0)>126))break c;f=f+1|0}s[ye+8>>2]=f}f=Be>>>0>>0?-1:0;c:{if((f^$0)<0||(J=Wt,(f^Ni)<0))break c;J=Be+(J-ei|0)|0}for(Be=Pr>>31,ye=((Be^Pr)-Be<<4)+kr|0,W=s[ye>>2],Wt=s[ye+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(W|0)>Wt<>>31|0,ie=(f+ie|0)+(be^yn)|0,ie=(ie|0)>0?ie:0,f=((ie|0)>=255?255:ie)+f|0,Wt=s[ye+8>>2],s[E+48>>2]<=7&&zr(E),ue=f+(ue^be)|0,ie=s[E+44>>2],W=((k<<11)+14776|0)+(ie>>>24<<3)|0,f=s[W+4>>2];c:{if(f){s[E+44>>2]=ie<>2]=s[E+48>>2]-f,f=s[W>>2];break c}if(f=is(E,k,32,8),f=f>>1^0-(f&1),ie=f>>31,(f^ie)-ie>>>0>=65536)break f}if(ie=f,f=s[ye+4>>2],be=k?ie:ie^(s[ye+12>>2]+(f<<1)|0)-1>>31,k=be>>31,k=s[ye>>2]+((be^k)-k|0)|0,s[ye>>2]=k,W=f+be|0,s[ye+4>>2]=W,(k|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;f=s[ye+12>>2],(f|0)==64&&(s[ye>>2]=k>>1,W=W>>1,s[ye+4>>2]=W,f=32),k=f+1|0,s[ye+12>>2]=k,ie=k+W|0;c:{m:{if((ie|0)<=0){if(s[ye+4>>2]=(ie|0)>(f^-1)?ie:0-f|0,f=s[ye+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-k|0,s[ye+4>>2]=f>>31&f,f=s[ye+8>>2],(f|0)>126))break c;f=f+1|0}s[ye+8>>2]=f}f=pt>>>0>>0?-1:0;c:{if((f^o0)<0||(N=Ct,(f^$i)<0))break c;N=pt+(N-hi|0)|0}for(ye=xr>>31,ie=((ye^xr)-ye<<4)+kr|0,W=s[ie>>2],pt=s[ie+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(W|0)>pt<>>31|0,J=(f+J|0)+(Be^Wt)|0,J=(J|0)>0?J:0,f=((J|0)>=255?255:J)+f|0,pt=s[ie+8>>2],s[E+48>>2]<=7&&zr(E),be=f+(be^Be)|0,J=s[E+44>>2],W=((k<<11)+14776|0)+(J>>>24<<3)|0,f=s[W+4>>2];c:{if(f){s[E+44>>2]=J<>2]=s[E+48>>2]-f,f=s[W>>2];break c}if(f=is(E,k,32,8),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(J=f,f=s[ie+4>>2],k=k?J:J^(s[ie+12>>2]+(f<<1)|0)-1>>31,J=k>>31,J=s[ie>>2]+((k^J)-J|0)|0,s[ie>>2]=J,W=f+k|0,s[ie+4>>2]=W,(J|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;f=s[ie+12>>2],(f|0)==64&&(s[ie>>2]=J>>1,W=W>>1,s[ie+4>>2]=W,f=32),J=f+1|0,s[ie+12>>2]=J,Be=W+J|0;c:{m:{if((Be|0)<=0){if(s[ie+4>>2]=(Be|0)>(f^-1)?Be:0-f|0,f=s[ie+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-J|0,s[ie+4>>2]=f>>31&f,f=s[ie+8>>2],(f|0)>126))break c;f=f+1|0}s[ie+8>>2]=f}f=s[E+5984>>2]+ti|0,J=xr>>>31|0,N=(N+J|0)+(ye^pt)|0,N=(N|0)>0?N:0,N=nn&255|(ue<<8&65280|(be<<16&16711680|(((N|0)>=255?255:N)+J|0)+(k^ye)<<24)),oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=N>>>16,oe[f+3|0]=N>>>24}if(f=Ee,!(f>>>0>2]))break}break h}Vn(5),_t()}if(J=s[rt>>2],s[Ci+J>>2]=s[E+5976>>2],N=Br<<2,f=N+s[E+5980>>2]|0,s[E+5980>>2]=f,N=N+s[E+5984>>2]|0,s[E+5984>>2]=N,w=w+1|0,(vn|0)==(w|0))break}if(f=s[E+72>>2],f>>>0>jn>>>0|f+s[E+80>>2]>>>0<=jn>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(N+Rs|0)+(s[E+68>>2]<<2)|0,s[E+76>>2],Br)),jn=jn+1|0,Wr=Wr+1|0,(Wr|0)==(Nr|0))break}ir=ir+Nr|0,f=s[E+8>>2]}if(N=s[E+56>>2],w=s[E+52>>2],(f|0)!=(ir|0)){if((w|0)==(N|0))break l;if(f=de[w|0],w=w+1|0,s[E+52>>2]=w,(f|0)!=255)break u;for(;;){if((w|0)==(N|0))break o;if(f=de[w|0],w=w+1|0,s[E+52>>2]=w,(f|0)!=255)break}if(k=s[E+108>>2],(f|0)!=(k+208|0))break s;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+108>>2]=k+1&7,f=wi(w,255,N-w|0),s[E+60>>2]=f||N,zr(E),w=s[rt+16>>2],f=s[rt+20>>2]-w|0,(f|0)>0&&(fr(w,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),J=s[rt>>2]),f=s[rt+4>>2]-J|0,(f|0)>0&&fr(J,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),w=I0;s[w+64>>2]=4,s[w+68>>2]=0,s[w+48>>2]=4,s[w+52>>2]=0,s[w+32>>2]=4,s[w+36>>2]=0,s[w+16>>2]=4,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=4,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(Fo|0)!=(w|0););s[E+5976>>2]=0,ke[E+5972>>1]=1,s[E+5964>>2]=1,s[E+5968>>2]=4,ke[E+5960>>1]=1,s[E+5952>>2]=0,s[E+5956>>2]=4;continue}break}if(w>>>0>=N>>>0)break a;h:{if(de[w|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),w=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[w|0]!=255)break i}if(f)break r;J&&Gr(J),f=s[rt+16>>2],f&&Gr(f),In=rt+32|0;break e}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}Li(),_t()}Li(),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,J=(k|0)<=(f|0),f=f-k|0,!!J;);return N-so|0}function lp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0,qa=0,As=0,N0=0,Fa=0;Ln=s[f+40>>2],s[f+40>>2]=w,Ln&&Mr[s[s[Ln>>2]+4>>2]](Ln),Fo=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,Ln=s[k+4>>2],w=s[k>>2],s[f+52>>2]=w,N=w+Ln|0,s[f+56>>2]=N,w=wi(w,255,Ln),s[f+60>>2]=w||N,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),nn=In-32|0,In=nn,N=s[f+16>>2],E=f,w=s[f+28>>2],f=s[f+108>>2],s[nn+24>>2]=0,s[nn+16>>2]=0,s[nn+20>>2]=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(kr=(w|0)!=1?1:N,ti=f+4|0,N=Ae(kr,ti),f=N<<1,f){if(f>>>0>=715827883)break l;w=Ae(N,12),f=Gn(w),s[nn+16>>2]=f,k=f,f=w-6|0,f=(f-((f>>>0)%6|0)|0)+6|0,N0=nn,Fa=fr(k,0,f)+f|0,s[N0+20>>2]=Fa}if(s[nn+8>>2]=0,s[nn>>2]=0,s[nn+4>>2]=0,kr){if(kr>>>0>=1073741824)break u;w=kr<<2,f=Gn(w),s[nn>>2]=f,ei=fr(f,0,w)+w|0,s[nn+4>>2]=ei}for(I0=E+5976|0,K0=E+136|0,Rs=Ae(N+1|0,6),na=Ae(N,-6);;){if(N=s[E+128>>2],f=s[E+8>>2],w=f-Br|0,hi=w>>>0>N>>>0?N:w,hi){for(f=s[nn+16>>2],Ln=f+6|0,N=f+Rs|0,ii=0,qa=s[nn>>2],Pr=Br;;){if(s[E+6008>>2]=N,s[E+6004>>2]=Ln,k=N,f=Ln,Pr&1&&(s[E+6008>>2]=Ln,s[E+6004>>2]=N,k=Ln,f=N),kr)for(ue=0,As=s[nn>>2];;){o0=ue<<2,s[E+6e3>>2]=s[o0+qa>>2],k=Ae(s[E+108>>2],6)+f|0,w=k-6|0,f=Re[w>>1]|Re[w+2>>1]<<16,ke[k>>1]=f,ke[k+2>>1]=f>>>16,ke[k+4>>1]=Re[w+4>>1],k=s[E+6008>>2]-6|0,w=s[E+6004>>2],f=Re[w>>1]|Re[w+2>>1]<<16,ke[k>>1]=f,ke[k+2>>1]=f>>>16,ke[k+4>>1]=Re[w+4>>1],jn=0,ye=In+-64|0,In=ye;h:{f:{if(w=s[E+108>>2],w)for(Ci=E+136|0;;){Nr=Ae(jn,6),f=s[E+6004>>2],Ee=Nr+f|0,be=Re[Ee+2>>1],k=f,f=Nr-6|0,k=k+f|0,di=Re[k+2>>1],$0=be-di|0,rt=s[E+6012>>2],Wt=s[E+6008>>2],cn=Wt+f|0,Ct=Re[cn+2>>1],Lt=di-Ct|0,Vi=Ae(Ae(oe[rt+(Re[Ee+8>>1]-be|0)|0],9)+oe[rt+$0|0]|0,9)+oe[rt+Lt|0]|0,ie=Re[Ee>>1],vn=Re[k>>1],Xt=ie-vn|0,Be=Re[Ee+4>>1],Ni=Re[k+4>>1],so=Be-Ni|0,J=Re[cn+4>>1],ir=Ni-J|0,$i=oe[rt+ir|0]+Ae(oe[rt+so|0]+Ae(oe[rt+(Re[Ee+10>>1]-Be|0)|0],9)|0,9)|0,f=Re[cn>>1],k=vn-f|0,Ee=oe[rt+k|0]+Ae(oe[rt+Xt|0]+Ae(oe[rt+(Re[Ee+6>>1]-ie|0)|0],9)|0,9)|0;p:{if(!($i|(Ee|Vi))){ke[ye+60>>1]=Re[cn+4>>1],s[ye+56>>2]=Re[cn>>1]|Re[cn+2>>1]<<16,k=Re[cn>>1]|Re[cn+2>>1]<<16,f=Re[cn+4>>1],ke[ye+28>>1]=f,ke[ye+52>>1]=f,s[ye+48>>2]=k,s[ye+24>>2]=k,be=Wt+Nr|0,k=w-jn|0,ie=0,f=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((f|0)<=0&&(zr(E),f=s[E+48>>2]),w=f-1|0,s[E+48>>2]=w,J=s[E+44>>2],W=J<<1,s[E+44>>2]=W,(J|0)>=0)break v;if(Ct=k-ie|0,J=s[E+6e3>>2],f=1<>2],ie=((f|0)>(Ct|0)?Ct:f)+ie|0,(f|0)<=(Ct|0)&&(s[E+6e3>>2]=((J|0)>=30?30:J)+1),f=w,(k|0)==(ie|0))break}break d}if((k|0)==(ie|0))break d;if(J=k,k=s[(s[E+6e3>>2]<<2)+6936>>2],(k|0)<=0)f=0;else{if((f|0)<=(k|0)){if(zr(E),w=s[E+48>>2],(k|0)>(w|0))break g;W=s[E+44>>2]}s[E+44>>2]=W<>2]=w-k,f=W>>>32-k|0}if(k=f+ie|0,(J|0)<(k|0))break m}d:{if((k|0)<=0)break d;if(f=0,w=0,k>>>0>=4)for(Ct=k&-4,W=0;Be=be+Ae(w,6)|0,J=Re[ye+24>>1]|Re[ye+26>>1]<<16,ke[Be>>1]=J,ke[Be+2>>1]=J>>>16,ke[Be+4>>1]=Re[ye+28>>1],Be=be+Ae(w|1,6)|0,ke[Be+4>>1]=Re[ye+28>>1],J=Re[ye+24>>1]|Re[ye+26>>1]<<16,ke[Be>>1]=J,ke[Be+2>>1]=J>>>16,Be=be+Ae(w|2,6)|0,ke[Be+4>>1]=Re[ye+28>>1],J=Re[ye+24>>1]|Re[ye+26>>1]<<16,ke[Be>>1]=J,ke[Be+2>>1]=J>>>16,Be=be+Ae(w|3,6)|0,ke[Be+4>>1]=Re[ye+28>>1],J=Re[ye+24>>1]|Re[ye+26>>1]<<16,ke[Be>>1]=J,ke[Be+2>>1]=J>>>16,w=w+4|0,W=W+4|0,(Ct|0)!=(W|0););if(Ct=k&3,!Ct)break d;for(;Be=be+Ae(w,6)|0,J=Re[ye+24>>1]|Re[ye+26>>1]<<16,ke[Be>>1]=J,ke[Be+2>>1]=J>>>16,ke[Be+4>>1]=Re[ye+28>>1],w=w+1|0,f=f+1|0,(Ct|0)!=(f|0););}break c}Vn(5),_t()}Vn(5),_t()}if(jn=k+jn|0,(jn|0)==s[E+108>>2])break p;Ct=Ae(jn,6),f=Ct+s[E+6004>>2]|0,w=Re[f>>1]|Re[f+2>>1]<<16,f=Re[f+4>>1],ke[ye+20>>1]=Re[ye+60>>1],ke[ye+12>>1]=f,s[ye+40>>2]=w,ke[ye+44>>1]=f,s[ye+16>>2]=s[ye+56>>2],s[ye+8>>2]=w,w=E+5976|0,f=ba(E,w),k=ba(E,w),J=ba(E,w),Wt=s[E+68>>2],be=Wt<<1,Ee=be|1,ie=0-f|0,w=f,f=Re[ye+8>>1],f=Ae(Ee,f>>>0>1]?ie:w)+f|0,Be=0-Wt|0;c:{if((f|0)<(Be|0)){f=Ae(Ee,s[E+72>>2])+f|0,w=s[E+64>>2];break c}if(w=s[E+64>>2],(Wt+w|0)>=(f|0))break c;f=Ae(s[E+72>>2],be^-1)+f|0}rt=0-k|0,ie=k,k=Re[ye+10>>1],k=Ae(Ee,k>>>0>1]?rt:ie)+k|0;c:{if((Be|0)>(k|0)){k=Ae(Ee,s[E+72>>2])+k|0;break c}if((w+Wt|0)>=(k|0))break c;k=Ae(s[E+72>>2],be^-1)+k|0}rt=0-J|0,ie=J,J=Re[ye+12>>1],ie=Ae(Ee,J>>>0>1]?rt:ie)+J|0;c:{if((Be|0)>(ie|0)){ie=Ae(Ee,s[E+72>>2])+ie|0;break c}if((w+Wt|0)>=(ie|0))break c;ie=Ae(s[E+72>>2],be^-1)+ie|0}ke[ye+36>>1]=(w&ie)==(ie|0)?ie:(ie|0)>=0?w:0,ke[ye+34>>1]=(w&k)==(k|0)?k:(k|0)>=0?w:0,ke[ye+32>>1]=(f&w)==(f|0)?f:(f|0)>=0?w:0,w=Ct+s[E+6008>>2]|0,f=s[ye+32>>2],ke[w>>1]=f,ke[w+2>>1]=f>>>16,ke[w+4>>1]=Re[ye+36>>1],f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,jn=jn+1|0;break p}w=f>>>0>ie>>>0?-1:0;c:{if((w^k)<0)break c;if((w^Xt)<0){ie=f;break c}ie=(f-vn|0)+ie|0}for(jn=jn+1|0,w=Be,k=be,xr=Ee>>31,yn=((xr^Ee)-xr<<4)+Ci|0,Xt=s[yn>>2],Ee=s[yn+12>>2],f=0;Wt=f,f>>>0<=15&&(f=Wt+1|0,(Xt|0)>Ee<>2],rt=s[E+64>>2],s[E+48>>2]<=7&&zr(E),Ee=s[E+44>>2],f=((Wt<<11)+14776|0)+(Ee>>>24<<3)|0,vn=s[f+4>>2];c:{if(vn){s[E+44>>2]=Ee<>2]=s[E+48>>2]-vn,f=s[f>>2];break c}if(f=is(E,Wt,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),Ee=f>>31,(f^Ee)-Ee>>>0>=65536)break f}if(cn=s[E+88>>2],Wr=s[E+68>>2],pt=Wt?f:(Wr?0:(s[yn+12>>2]+(s[yn+4>>2]<<1)|0)-1>>31)^f,f=pt>>31,Wt=s[yn>>2]+((pt^f)-f|0)|0,s[yn>>2]=Wt,Ee=Wr<<1,vn=Ee|1,W=s[yn+4>>2]+Ae(vn,pt)|0,s[yn+4>>2]=W,(Wt|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Xt=((Xt^xr)-xr|0)+ie|0,f=(Xt&rt)==(Xt|0),ie=s[yn+12>>2],(cn|0)==(ie|0)&&(s[yn>>2]=Wt>>1,W=W>>1,s[yn+4>>2]=W,ie=cn>>1),Wt=f?Xt:(Xt|0)>=0?rt:0,Xt=ie+1|0,s[yn+12>>2]=Xt,f=W+Xt|0;c:{m:{if((f|0)<=0){if(s[yn+4>>2]=(f|0)>(ie^-1)?f:0-ie|0,f=s[yn+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-Xt|0,s[yn+4>>2]=f>>31&f,f=s[yn+8>>2],(f|0)>126))break c;f=f+1|0}s[yn+8>>2]=f}W=Wt+Ae((pt^xr)-xr|0,vn)|0;c:{if((W|0)<(0-Wr|0)){W=Ae(s[E+72>>2],vn)+W|0,pt=s[E+64>>2];break c}if(pt=s[E+64>>2],(Wr+pt|0)>=(W|0))break c;W=Ae(s[E+72>>2],Ee^-1)+W|0}f=be>>>0>>0?-1:0;c:{if((f^Lt)<0||(k=Ct,(f^$0)<0))break c;k=be+(k-di|0)|0}for(cn=Vi>>31,rt=((cn^Vi)-cn<<4)+Ci|0,Wt=s[rt>>2],be=s[rt+12>>2],f=0;Ct=f,f>>>0<=15&&(f=Ct+1|0,(Wt|0)>be<>2],s[E+48>>2]<=7&&zr(E),Wt=(W&pt)==(W|0)?W:(W|0)>=0?pt:0,be=s[E+44>>2],f=((Ct<<11)+14776|0)+(be>>>24<<3)|0,Ee=s[f+4>>2];c:{if(Ee){s[E+44>>2]=be<>2]=s[E+48>>2]-Ee,f=s[f>>2];break c}if(f=is(E,Ct,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),be=f>>31,(f^be)-be>>>0>=65536)break f}if(Xt=s[E+88>>2],vn=s[E+68>>2],Lt=Ct?f:(vn?0:(s[rt+12>>2]+(s[rt+4>>2]<<1)|0)-1>>31)^f,f=Lt>>31,be=s[rt>>2]+((Lt^f)-f|0)|0,s[rt>>2]=be,Ct=vn<<1,Ee=Ct|1,W=s[rt+4>>2]+Ae(Ee,Lt)|0,s[rt+4>>2]=W,(be|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;ie=((ie^cn)-cn|0)+k|0,k=(ie&pt)==(ie|0),k=k?ie:(ie|0)>=0?pt:0,pt=s[rt+12>>2],(Xt|0)==(pt|0)&&(s[rt>>2]=be>>1,W=W>>1,s[rt+4>>2]=W,pt=Xt>>1),be=pt+1|0,s[rt+12>>2]=be,f=W+be|0;c:{m:{if((f|0)<=0){if(s[rt+4>>2]=(f|0)>(pt^-1)?f:0-pt|0,f=s[rt+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-be|0,s[rt+4>>2]=f>>31&f,f=s[rt+8>>2],(f|0)>126))break c;f=f+1|0}s[rt+8>>2]=f}W=k+Ae(Ee,(Lt^cn)-cn|0)|0;c:{if((W|0)<(0-vn|0)){W=Ae(Ee,s[E+72>>2])+W|0,pt=s[E+64>>2];break c}if(pt=s[E+64>>2],(vn+pt|0)>=(W|0))break c;W=Ae(s[E+72>>2],Ct^-1)+W|0}f=J>>>0>Be>>>0?-1:0;c:{if((f^ir)<0||(w=J,(f^so)<0))break c;w=Be+(w-Ni|0)|0}for(ir=$i>>31,Lt=((ir^$i)-ir<<4)+Ci|0,Ct=s[Lt>>2],J=s[Lt+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(Ct|0)>J<>2],s[E+48>>2]<=7&&zr(E),Ct=(W&pt)==(W|0)?W:(W|0)>=0?pt:0,J=s[E+44>>2],f=((k<<11)+14776|0)+(J>>>24<<3)|0,be=s[f+4>>2];c:{if(be){s[E+44>>2]=J<>2]=s[E+48>>2]-be,f=s[f>>2];break c}if(f=is(E,k,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(ie=s[E+88>>2],Xt=s[E+68>>2],Ee=k?f:(Xt?0:(s[Lt+12>>2]+(s[Lt+4>>2]<<1)|0)-1>>31)^f,f=Ee>>31,J=s[Lt>>2]+((Ee^f)-f|0)|0,s[Lt>>2]=J,k=Xt<<1,be=k|1,W=s[Lt+4>>2]+Ae(be,Ee)|0,s[Lt+4>>2]=W,(J|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Be=((Be^ir)-ir|0)+w|0,w=(Be&pt)==(Be|0),w=w?Be:(Be|0)>=0?pt:0,pt=s[Lt+12>>2],(ie|0)==(pt|0)&&(s[Lt>>2]=J>>1,W=W>>1,s[Lt+4>>2]=W,pt=ie>>1),J=pt+1|0,s[Lt+12>>2]=J,f=W+J|0;c:{m:{if((f|0)<=0){if(s[Lt+4>>2]=(f|0)>(pt^-1)?f:0-pt|0,f=s[Lt+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-J|0,s[Lt+4>>2]=f>>31&f,f=s[Lt+8>>2],(f|0)>126))break c;f=f+1|0}s[Lt+8>>2]=f}W=w+Ae(be,(Ee^ir)-ir|0)|0;c:{if((W|0)<(0-Xt|0)){W=Ae(be,s[E+72>>2])+W|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(Xt+f|0)>=(W|0))break c;W=Ae(s[E+72>>2],k^-1)+W|0}w=s[E+6008>>2]+Nr|0,ke[w+2>>1]=Ct,ke[w>>1]=Wt,ke[w+4>>1]=(f&W)==(W|0)?W:(W|0)>=0?f:0}if(w=s[E+108>>2],!(jn>>>0>>0))break}In=ye- -64|0;break h}Vn(5),_t()}if(s[As+o0>>2]=s[E+6e3>>2],w=Ae(ti,6),f=w+s[E+6004>>2]|0,s[E+6004>>2]=f,k=w+s[E+6008>>2]|0,s[E+6008>>2]=k,ue=ue+1|0,(kr|0)==(ue|0))break}if(f=s[E+96>>2],f>>>0>Pr>>>0|f+s[E+104>>2]>>>0<=Pr>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(k+na|0)+Ae(s[E+92>>2],6)|0,s[E+100>>2],ti)),Pr=Pr+1|0,ii=ii+1|0,(ii|0)==(hi|0))break}Br=Br+hi|0,f=s[E+8>>2]}if(N=s[E+56>>2],ue=s[E+52>>2],(f|0)!=(Br|0)){if((N|0)==(ue|0))break o;if(f=de[ue|0],ue=ue+1|0,s[E+52>>2]=ue,(f|0)!=255)break s;for(;;){if((N|0)==(ue|0))break a;if(w=de[ue|0],ue=ue+1|0,s[E+52>>2]=ue,(w|0)!=255)break}if(f=s[E+132>>2],(w|0)!=(f+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=f+1&7,f=wi(ue,255,N-ue|0),s[E+60>>2]=f||N,zr(E),f=s[nn+16>>2],w=s[nn+20>>2]-f|0,(w|0)>0&&(fr(f,0,Ae(((w>>>0)/6|0)-(w>>>0>5)|0,6)+6|0),ei=s[nn+4>>2]),f=s[nn>>2],w=ei-f|0,(w|0)>0&&fr(f,0,((w>>>2|0)-(w>>>0>3)<<2)+4|0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,ue=K0;s[ue+64>>2]=f,s[ue+48>>2]=f,s[ue+32>>2]=f,s[ue+16>>2]=f,s[ue+12>>2]=1,s[ue+4>>2]=0,s[ue+8>>2]=0,s[ue>>2]=f,s[ue+76>>2]=1,s[ue+68>>2]=0,s[ue+72>>2]=0,s[ue+60>>2]=1,s[ue+52>>2]=0,s[ue+56>>2]=0,s[ue+44>>2]=1,s[ue+36>>2]=0,s[ue+40>>2]=0,s[ue+28>>2]=1,s[ue+20>>2]=0,s[ue+24>>2]=0,ue=ue+80|0,(I0|0)!=(ue|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f;continue}break}if(N>>>0<=ue>>>0)break r;h:{if(de[ue|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),ue=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[ue|0]!=255)break n}if(f)break t;f=s[nn>>2],f&&Gr(f),f=s[nn+16>>2],f&&Gr(f),In=nn+32|0;break e}Li(),_t()}Li(),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=w-1|0,Ln=de[w|0]==255?7:8,k=(Ln|0)<=(f|0),f=f-Ln|0,!!k;);return N-Fo|0}function up(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0,qa=0,As=0,N0=0,Fa=0;Ln=s[f+40>>2],s[f+40>>2]=w,Ln&&Mr[s[s[Ln>>2]+4>>2]](Ln),Fo=s[k>>2],w=s[N+4>>2],s[f+92>>2]=s[N>>2],s[f+96>>2]=w,w=s[N+12>>2],s[f+100>>2]=s[N+8>>2],s[f+104>>2]=w,Ln=s[k+4>>2],w=s[k>>2],s[f+52>>2]=w,N=w+Ln|0,s[f+56>>2]=N,w=wi(w,255,Ln),s[f+60>>2]=w||N,zr(f),s[f+128>>2]||(s[f+128>>2]=s[f+8>>2]),nn=In-32|0,In=nn,N=s[f+16>>2],E=f,w=s[f+28>>2],f=s[f+108>>2],s[nn+24>>2]=0,s[nn+16>>2]=0,s[nn+20>>2]=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(kr=(w|0)!=1?1:N,ti=f+4|0,N=Ae(kr,ti),f=N<<1,f){if(f>>>0>=1431655766)break l;w=Ae(N,6),f=Gn(w),s[nn+16>>2]=f,k=f,f=w-3|0,f=(f-((f>>>0)%3|0)|0)+3|0,N0=nn,Fa=fr(k,0,f)+f|0,s[N0+20>>2]=Fa}if(s[nn+8>>2]=0,s[nn>>2]=0,s[nn+4>>2]=0,kr){if(kr>>>0>=1073741824)break u;w=kr<<2,f=Gn(w),s[nn>>2]=f,ei=fr(f,0,w)+w|0,s[nn+4>>2]=ei}for(I0=E+5976|0,K0=E+136|0,Rs=Ae(N+1|0,3),na=Ae(N,-3);;){if(N=s[E+128>>2],f=s[E+8>>2],w=f-Br|0,hi=w>>>0>N>>>0?N:w,hi){for(f=s[nn+16>>2],Ln=f+3|0,N=f+Rs|0,ii=0,qa=s[nn>>2],Pr=Br;;){if(s[E+6008>>2]=N,s[E+6004>>2]=Ln,k=N,f=Ln,Pr&1&&(s[E+6008>>2]=Ln,s[E+6004>>2]=N,k=Ln,f=N),kr)for(ue=0,As=s[nn>>2];;){o0=ue<<2,s[E+6e3>>2]=s[o0+qa>>2],k=Ae(s[E+108>>2],3)+f|0,w=k-3|0,f=de[w|0]|de[w+1|0]<<8,oe[k|0]=f,oe[k+1|0]=f>>>8,oe[k+2|0]=de[w+2|0],k=s[E+6008>>2]-3|0,w=s[E+6004>>2],f=de[w|0]|de[w+1|0]<<8,oe[k|0]=f,oe[k+1|0]=f>>>8,oe[k+2|0]=de[w+2|0],jn=0,ye=In-48|0,In=ye;h:{f:{if(w=s[E+108>>2],w)for(Ci=E+136|0;;){Nr=Ae(jn,3),f=s[E+6004>>2],Ee=Nr+f|0,be=de[Ee+1|0],k=f,f=Nr-3|0,k=k+f|0,di=de[k+1|0],$0=be-di|0,rt=s[E+6012>>2],Wt=s[E+6008>>2],cn=Wt+f|0,Ct=de[cn+1|0],Lt=di-Ct|0,Vi=Ae(Ae(oe[rt+(de[Ee+4|0]-be|0)|0],9)+oe[rt+$0|0]|0,9)+oe[rt+Lt|0]|0,ie=de[Ee|0],vn=de[k|0],Xt=ie-vn|0,Be=de[Ee+2|0],Ni=de[k+2|0],so=Be-Ni|0,J=de[cn+2|0],ir=Ni-J|0,$i=oe[rt+ir|0]+Ae(oe[rt+so|0]+Ae(oe[rt+(de[Ee+5|0]-Be|0)|0],9)|0,9)|0,f=de[cn|0],k=vn-f|0,Ee=oe[rt+k|0]+Ae(oe[rt+Xt|0]+Ae(oe[rt+(de[Ee+3|0]-ie|0)|0],9)|0,9)|0;p:{if(!($i|(Ee|Vi))){oe[ye+42|0]=de[cn+2|0],ke[ye+40>>1]=de[cn|0]|de[cn+1|0]<<8,k=de[cn|0]|de[cn+1|0]<<8,f=de[cn+2|0],oe[ye+14|0]=f,oe[ye+34|0]=f,ke[ye+32>>1]=k,ke[ye+12>>1]=k,be=Wt+Nr|0,k=w-jn|0,ie=0,f=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((f|0)<=0&&(zr(E),f=s[E+48>>2]),w=f-1|0,s[E+48>>2]=w,J=s[E+44>>2],W=J<<1,s[E+44>>2]=W,(J|0)>=0)break v;if(Ct=k-ie|0,J=s[E+6e3>>2],f=1<>2],ie=((f|0)>(Ct|0)?Ct:f)+ie|0,(f|0)<=(Ct|0)&&(s[E+6e3>>2]=((J|0)>=30?30:J)+1),f=w,(k|0)==(ie|0))break}break d}if((k|0)==(ie|0))break d;if(J=k,k=s[(s[E+6e3>>2]<<2)+6936>>2],(k|0)<=0)f=0;else{if((f|0)<=(k|0)){if(zr(E),w=s[E+48>>2],(k|0)>(w|0))break g;W=s[E+44>>2]}s[E+44>>2]=W<>2]=w-k,f=W>>>32-k|0}if(k=f+ie|0,(J|0)<(k|0))break m}d:{if((k|0)<=0)break d;if(f=0,w=0,k>>>0>=4)for(Ct=k&-4,W=0;Be=be+Ae(w,3)|0,J=de[ye+12|0]|de[ye+13|0]<<8,oe[Be|0]=J,oe[Be+1|0]=J>>>8,oe[Be+2|0]=de[ye+14|0],Be=be+Ae(w|1,3)|0,oe[Be+2|0]=de[ye+14|0],J=de[ye+12|0]|de[ye+13|0]<<8,oe[Be|0]=J,oe[Be+1|0]=J>>>8,Be=be+Ae(w|2,3)|0,oe[Be+2|0]=de[ye+14|0],J=de[ye+12|0]|de[ye+13|0]<<8,oe[Be|0]=J,oe[Be+1|0]=J>>>8,Be=be+Ae(w|3,3)|0,oe[Be+2|0]=de[ye+14|0],J=de[ye+12|0]|de[ye+13|0]<<8,oe[Be|0]=J,oe[Be+1|0]=J>>>8,w=w+4|0,W=W+4|0,(Ct|0)!=(W|0););if(Ct=k&3,!Ct)break d;for(;Be=be+Ae(w,3)|0,J=de[ye+12|0]|de[ye+13|0]<<8,oe[Be|0]=J,oe[Be+1|0]=J>>>8,oe[Be+2|0]=de[ye+14|0],w=w+1|0,f=f+1|0,(Ct|0)!=(f|0););}break c}Vn(5),_t()}Vn(5),_t()}if(jn=k+jn|0,(jn|0)==s[E+108>>2])break p;Ct=Ae(jn,3),f=Ct+s[E+6004>>2]|0,w=de[f|0]|de[f+1|0]<<8,f=de[f+2|0],oe[ye+10|0]=de[ye+42|0],oe[ye+6|0]=f,ke[ye+24>>1]=w,oe[ye+26|0]=f,ke[ye+8>>1]=Re[ye+40>>1],ke[ye+4>>1]=w,w=E+5976|0,f=ba(E,w),k=ba(E,w),J=ba(E,w),Wt=s[E+68>>2],be=Wt<<1,Ee=be|1,ie=0-f|0,w=f,f=de[ye+4|0],f=Ae(Ee,f>>>0>2])+f|0,w=s[E+64>>2];break c}if(w=s[E+64>>2],(Wt+w|0)>=(f|0))break c;f=Ae(s[E+72>>2],be^-1)+f|0}rt=0-k|0,ie=k,k=de[ye+5|0],k=Ae(Ee,k>>>0(k|0)){k=Ae(Ee,s[E+72>>2])+k|0;break c}if((w+Wt|0)>=(k|0))break c;k=Ae(s[E+72>>2],be^-1)+k|0}rt=0-J|0,ie=J,J=de[ye+6|0],ie=Ae(Ee,J>>>0(ie|0)){ie=Ae(Ee,s[E+72>>2])+ie|0;break c}if((w+Wt|0)>=(ie|0))break c;ie=Ae(s[E+72>>2],be^-1)+ie|0}oe[ye+18|0]=(w&ie)==(ie|0)?ie:(ie|0)>=0?w:0,oe[ye+17|0]=(w&k)==(k|0)?k:(k|0)>=0?w:0,oe[ye+16|0]=(f&w)==(f|0)?f:(f|0)>=0?w:0,w=Ct+s[E+6008>>2]|0,f=Re[ye+16>>1],oe[w|0]=f,oe[w+1|0]=f>>>8,oe[w+2|0]=de[ye+18|0],f=s[E+6e3>>2],s[E+6e3>>2]=((f|0)<=1?1:f)-1,jn=jn+1|0;break p}w=f>>>0>ie>>>0?-1:0;c:{if((w^k)<0)break c;if((w^Xt)<0){ie=f;break c}ie=(f-vn|0)+ie|0}for(jn=jn+1|0,w=Be,k=be,xr=Ee>>31,yn=((xr^Ee)-xr<<4)+Ci|0,Xt=s[yn>>2],Ee=s[yn+12>>2],f=0;Wt=f,f>>>0<=15&&(f=Wt+1|0,(Xt|0)>Ee<>2],rt=s[E+64>>2],s[E+48>>2]<=7&&zr(E),Ee=s[E+44>>2],f=((Wt<<11)+14776|0)+(Ee>>>24<<3)|0,vn=s[f+4>>2];c:{if(vn){s[E+44>>2]=Ee<>2]=s[E+48>>2]-vn,f=s[f>>2];break c}if(f=is(E,Wt,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),Ee=f>>31,(f^Ee)-Ee>>>0>=65536)break f}if(cn=s[E+88>>2],Wr=s[E+68>>2],pt=Wt?f:(Wr?0:(s[yn+12>>2]+(s[yn+4>>2]<<1)|0)-1>>31)^f,f=pt>>31,Wt=s[yn>>2]+((pt^f)-f|0)|0,s[yn>>2]=Wt,Ee=Wr<<1,vn=Ee|1,W=s[yn+4>>2]+Ae(vn,pt)|0,s[yn+4>>2]=W,(Wt|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Xt=((Xt^xr)-xr|0)+ie|0,f=(Xt&rt)==(Xt|0),ie=s[yn+12>>2],(cn|0)==(ie|0)&&(s[yn>>2]=Wt>>1,W=W>>1,s[yn+4>>2]=W,ie=cn>>1),Wt=f?Xt:(Xt|0)>=0?rt:0,Xt=ie+1|0,s[yn+12>>2]=Xt,f=W+Xt|0;c:{m:{if((f|0)<=0){if(s[yn+4>>2]=(f|0)>(ie^-1)?f:0-ie|0,f=s[yn+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-Xt|0,s[yn+4>>2]=f>>31&f,f=s[yn+8>>2],(f|0)>126))break c;f=f+1|0}s[yn+8>>2]=f}W=Wt+Ae((pt^xr)-xr|0,vn)|0;c:{if((W|0)<(0-Wr|0)){W=Ae(s[E+72>>2],vn)+W|0,pt=s[E+64>>2];break c}if(pt=s[E+64>>2],(Wr+pt|0)>=(W|0))break c;W=Ae(s[E+72>>2],Ee^-1)+W|0}f=be>>>0>>0?-1:0;c:{if((f^Lt)<0||(k=Ct,(f^$0)<0))break c;k=be+(k-di|0)|0}for(cn=Vi>>31,rt=((cn^Vi)-cn<<4)+Ci|0,Wt=s[rt>>2],be=s[rt+12>>2],f=0;Ct=f,f>>>0<=15&&(f=Ct+1|0,(Wt|0)>be<>2],s[E+48>>2]<=7&&zr(E),Wt=(W&pt)==(W|0)?W:(W|0)>=0?pt:0,be=s[E+44>>2],f=((Ct<<11)+14776|0)+(be>>>24<<3)|0,Ee=s[f+4>>2];c:{if(Ee){s[E+44>>2]=be<>2]=s[E+48>>2]-Ee,f=s[f>>2];break c}if(f=is(E,Ct,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),be=f>>31,(f^be)-be>>>0>=65536)break f}if(Xt=s[E+88>>2],vn=s[E+68>>2],Lt=Ct?f:(vn?0:(s[rt+12>>2]+(s[rt+4>>2]<<1)|0)-1>>31)^f,f=Lt>>31,be=s[rt>>2]+((Lt^f)-f|0)|0,s[rt>>2]=be,Ct=vn<<1,Ee=Ct|1,W=s[rt+4>>2]+Ae(Ee,Lt)|0,s[rt+4>>2]=W,(be|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;ie=((ie^cn)-cn|0)+k|0,k=(ie&pt)==(ie|0),k=k?ie:(ie|0)>=0?pt:0,pt=s[rt+12>>2],(Xt|0)==(pt|0)&&(s[rt>>2]=be>>1,W=W>>1,s[rt+4>>2]=W,pt=Xt>>1),be=pt+1|0,s[rt+12>>2]=be,f=W+be|0;c:{m:{if((f|0)<=0){if(s[rt+4>>2]=(f|0)>(pt^-1)?f:0-pt|0,f=s[rt+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-be|0,s[rt+4>>2]=f>>31&f,f=s[rt+8>>2],(f|0)>126))break c;f=f+1|0}s[rt+8>>2]=f}W=k+Ae(Ee,(Lt^cn)-cn|0)|0;c:{if((W|0)<(0-vn|0)){W=Ae(Ee,s[E+72>>2])+W|0,pt=s[E+64>>2];break c}if(pt=s[E+64>>2],(vn+pt|0)>=(W|0))break c;W=Ae(s[E+72>>2],Ct^-1)+W|0}f=J>>>0>Be>>>0?-1:0;c:{if((f^ir)<0||(w=J,(f^so)<0))break c;w=Be+(w-Ni|0)|0}for(ir=$i>>31,Lt=((ir^$i)-ir<<4)+Ci|0,Ct=s[Lt>>2],J=s[Lt+12>>2],f=0;k=f,f>>>0<=15&&(f=k+1|0,(Ct|0)>J<>2],s[E+48>>2]<=7&&zr(E),Ct=(W&pt)==(W|0)?W:(W|0)>=0?pt:0,J=s[E+44>>2],f=((k<<11)+14776|0)+(J>>>24<<3)|0,be=s[f+4>>2];c:{if(be){s[E+44>>2]=J<>2]=s[E+48>>2]-be,f=s[f>>2];break c}if(f=is(E,k,s[E+84>>2],s[E+76>>2]),f=f>>1^0-(f&1),J=f>>31,(f^J)-J>>>0>=65536)break f}if(ie=s[E+88>>2],Xt=s[E+68>>2],Ee=k?f:(Xt?0:(s[Lt+12>>2]+(s[Lt+4>>2]<<1)|0)-1>>31)^f,f=Ee>>31,J=s[Lt>>2]+((Ee^f)-f|0)|0,s[Lt>>2]=J,k=Xt<<1,be=k|1,W=s[Lt+4>>2]+Ae(be,Ee)|0,s[Lt+4>>2]=W,(J|0)>16777215||(f=W>>31,(f^W)-f>>>0>=16777216))break f;Be=((Be^ir)-ir|0)+w|0,w=(Be&pt)==(Be|0),w=w?Be:(Be|0)>=0?pt:0,pt=s[Lt+12>>2],(ie|0)==(pt|0)&&(s[Lt>>2]=J>>1,W=W>>1,s[Lt+4>>2]=W,pt=ie>>1),J=pt+1|0,s[Lt+12>>2]=J,f=W+J|0;c:{m:{if((f|0)<=0){if(s[Lt+4>>2]=(f|0)>(pt^-1)?f:0-pt|0,f=s[Lt+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((W|0)<=0||(f=W-J|0,s[Lt+4>>2]=f>>31&f,f=s[Lt+8>>2],(f|0)>126))break c;f=f+1|0}s[Lt+8>>2]=f}W=w+Ae(be,(Ee^ir)-ir|0)|0;c:{if((W|0)<(0-Xt|0)){W=Ae(be,s[E+72>>2])+W|0,f=s[E+64>>2];break c}if(f=s[E+64>>2],(Xt+f|0)>=(W|0))break c;W=Ae(s[E+72>>2],k^-1)+W|0}w=s[E+6008>>2]+Nr|0,oe[w+1|0]=Ct,oe[w|0]=Wt,oe[w+2|0]=(f&W)==(W|0)?W:(W|0)>=0?f:0}if(w=s[E+108>>2],!(jn>>>0>>0))break}In=ye+48|0;break h}Vn(5),_t()}if(s[As+o0>>2]=s[E+6e3>>2],w=Ae(ti,3),f=w+s[E+6004>>2]|0,s[E+6004>>2]=f,k=w+s[E+6008>>2]|0,s[E+6008>>2]=k,ue=ue+1|0,(kr|0)==(ue|0))break}if(f=s[E+96>>2],f>>>0>Pr>>>0|f+s[E+104>>2]>>>0<=Pr>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(k+na|0)+Ae(s[E+92>>2],3)|0,s[E+100>>2],ti)),Pr=Pr+1|0,ii=ii+1|0,(ii|0)==(hi|0))break}Br=Br+hi|0,f=s[E+8>>2]}if(N=s[E+56>>2],ue=s[E+52>>2],(f|0)!=(Br|0)){if((N|0)==(ue|0))break o;if(f=de[ue|0],ue=ue+1|0,s[E+52>>2]=ue,(f|0)!=255)break s;for(;;){if((N|0)==(ue|0))break a;if(w=de[ue|0],ue=ue+1|0,s[E+52>>2]=ue,(w|0)!=255)break}if(f=s[E+132>>2],(w|0)!=(f+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+132>>2]=f+1&7,f=wi(ue,255,N-ue|0),s[E+60>>2]=f||N,zr(E),f=s[nn+16>>2],w=s[nn+20>>2]-f|0,(w|0)>0&&(fr(f,0,Ae(((w>>>0)/3|0)-(w>>>0>2)|0,3)+3|0),ei=s[nn+4>>2]),f=s[nn>>2],w=ei-f|0,(w|0)>0&&fr(f,0,((w>>>2|0)-(w>>>0>3)<<2)+4|0),f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,ue=K0;s[ue+64>>2]=f,s[ue+48>>2]=f,s[ue+32>>2]=f,s[ue+16>>2]=f,s[ue+12>>2]=1,s[ue+4>>2]=0,s[ue+8>>2]=0,s[ue>>2]=f,s[ue+76>>2]=1,s[ue+68>>2]=0,s[ue+72>>2]=0,s[ue+60>>2]=1,s[ue+52>>2]=0,s[ue+56>>2]=0,s[ue+44>>2]=1,s[ue+36>>2]=0,s[ue+40>>2]=0,s[ue+28>>2]=1,s[ue+20>>2]=0,s[ue+24>>2]=0,ue=ue+80|0,(I0|0)!=(ue|0););s[E+6e3>>2]=0,ke[E+5996>>1]=1,s[E+5988>>2]=1,ke[E+5984>>1]=1,s[E+5976>>2]=0,f=(s[E+72>>2]+32|0)/64|0,f=(f|0)<=2?2:f,s[E+5992>>2]=f,s[E+5980>>2]=f;continue}break}if(N>>>0<=ue>>>0)break r;h:{if(de[ue|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),ue=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[ue|0]!=255)break n}if(f)break t;f=s[nn>>2],f&&Gr(f),f=s[nn+16>>2],f&&Gr(f),In=nn+32|0;break e}Li(),_t()}Li(),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=w-1|0,Ln=de[w|0]==255?7:8,k=(Ln|0)<=(f|0),f=f-Ln|0,!!k;);return N-Fo|0}function cp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0,$i=0,o0=0,$0=0,so=0,Fo=0,I0=0,K0=0,Rs=0,na=0;Ct=s[f+40>>2],s[f+40>>2]=w,Ct&&Mr[s[s[Ct>>2]+4>>2]](Ct),Ni=s[k>>2],w=s[N+4>>2],s[f+68>>2]=s[N>>2],s[f+72>>2]=w,w=s[N+12>>2],s[f+76>>2]=s[N+8>>2],s[f+80>>2]=w,w=s[k+4>>2],N=s[k>>2],s[f+52>>2]=N,k=w+N|0,s[f+56>>2]=k,w=wi(N,255,w),s[f+60>>2]=w||k,zr(f),s[f+104>>2]||(s[f+104>>2]=s[f+8>>2]),Be=In-32|0,In=Be,w=s[f+16>>2],E=f,f=s[f+28>>2],N=s[E+84>>2],s[Be+24>>2]=0,s[Be+16>>2]=0,s[Be+20>>2]=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(vn=(f|0)!=1?1:w,kr=N+4|0,f=Ae(vn,kr),w=f<<1,w){if(w>>>0>=1431655766)break l;w=Ae(f,6),N=Gn(w),s[Be+16>>2]=N,w=w-3|0,w=(w-((w>>>0)%3|0)|0)+3|0,Rs=Be,na=fr(N,0,w)+w|0,s[Rs+20>>2]=na}if(s[Be+8>>2]=0,s[Be>>2]=0,s[Be+4>>2]=0,vn){if(vn>>>0>=1073741824)break u;w=vn<<2,N=Gn(w),s[Be>>2]=N,xr=fr(N,0,w)+w|0,s[Be+4>>2]=xr}for($i=E+5952|0,o0=E+112|0,$0=Ae(f+1|0,3),so=Ae(f,-3);;){if(w=s[E+104>>2],f=s[E+8>>2],N=f-jn|0,Pr=w>>>0>>0?w:N,Pr){for(f=s[Be+16>>2],Ct=f+3|0,ir=f+$0|0,Br=0,Fo=s[Be>>2],Ln=jn;;){if(s[E+5984>>2]=ir,s[E+5980>>2]=Ct,k=ir,f=Ct,Ln&1&&(s[E+5984>>2]=Ct,s[E+5980>>2]=ir,k=Ct,f=ir),vn)for(ie=0,I0=s[Be>>2];;){hi=ie<<2,s[E+5976>>2]=s[hi+Fo>>2],f=Ae(s[E+84>>2],3)+f|0,w=f-3|0,N=de[w|0]|de[w+1|0]<<8,oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=de[w+2|0],f=s[E+5984>>2]-3|0,w=s[E+5980>>2],N=de[w|0]|de[w+1|0]<<8,oe[f|0]=N,oe[f+1|0]=N>>>8,oe[f+2|0]=de[w+2|0],Wt=0;h:{f:{if(s[E+84>>2])for(Nr=E+112|0;;){Wr=Ae(Wt,3),f=s[E+5980>>2],N=Wr+f|0,J=de[N+1|0],k=Wr-3|0,f=k+f|0,yn=de[f+1|0],ii=J-yn|0,w=s[E+5988>>2],k=k+s[E+5984>>2]|0,be=de[k+1|0],Ci=yn-be|0,nn=Ae(Ae(oe[w+(de[N+4|0]-J|0)|0],9)+oe[w+ii|0]|0,9)+oe[w+Ci|0]|0,W=de[N|0],ye=de[f|0],Xt=W-ye|0,ue=de[N+2|0],ti=de[f+2|0],di=ue-ti|0,Lt=de[k+2|0],Vi=ti-Lt|0,Ee=oe[w+Vi|0]+Ae(oe[w+di|0]+Ae(oe[w+(de[N+5|0]-ue|0)|0],9)|0,9)|0,f=de[k|0],k=ye-f|0,cn=oe[w+k|0]+Ae(oe[w+Xt|0]+Ae(oe[w+(de[N+3|0]-W|0)|0],9)|0,9)|0;p:{if(!(Ee|(cn|nn))){J=In-16|0,In=J,be=s[E+5984>>2]+Ae(Wt,3)|0,f=be-3|0,Lt=de[f|0],ye=de[f+1|0],nn=de[f+2|0],oe[J+10|0]=nn,oe[J+9|0]=ye,oe[J+8|0]=Lt,f=s[E+84>>2],oe[J+6|0]=nn,ke[J+4>>1]=Re[J+8>>1],N=f-Wt|0,W=0,f=s[E+48>>2];c:{m:{g:{d:{v:{for(;;){if((f|0)<=0&&(zr(E),f=s[E+48>>2]),k=f-1|0,s[E+48>>2]=k,w=s[E+44>>2],ue=w<<1,s[E+44>>2]=ue,(w|0)>=0)break v;if(f=N-W|0,w=s[E+5976>>2],ue=1<>2],W=((f|0)<(ue|0)?f:ue)+W|0,(f|0)>=(ue|0)&&(s[E+5976>>2]=((w|0)>=30?30:w)+1),f=k,(N|0)==(W|0))break}break d}if((N|0)==(W|0))break d;if(w=N,N=s[(s[E+5976>>2]<<2)+6936>>2],(N|0)<=0)f=0;else{if((f|0)<=(N|0)){if(zr(E),k=s[E+48>>2],(N|0)>(k|0))break g;ue=s[E+44>>2]}s[E+44>>2]=ue<>2]=k-N,f=ue>>>32-N|0}if(N=f+W|0,(w|0)<(N|0))break m}d:{if((N|0)<=0)break d;if(f=0,k=0,N>>>0>=4)for(W=N&-4,ue=0;w=be+Ae(k,3)|0,Ee=de[J+4|0]|de[J+5|0]<<8,oe[w|0]=Ee,oe[w+1|0]=Ee>>>8,oe[w+2|0]=de[J+6|0],w=be+Ae(k|1,3)|0,oe[w+2|0]=de[J+6|0],Ee=de[J+4|0]|de[J+5|0]<<8,oe[w|0]=Ee,oe[w+1|0]=Ee>>>8,w=be+Ae(k|2,3)|0,oe[w+2|0]=de[J+6|0],Ee=de[J+4|0]|de[J+5|0]<<8,oe[w|0]=Ee,oe[w+1|0]=Ee>>>8,w=be+Ae(k|3,3)|0,oe[w+2|0]=de[J+6|0],Ee=de[J+4|0]|de[J+5|0]<<8,oe[w|0]=Ee,oe[w+1|0]=Ee>>>8,k=k+4|0,ue=ue+4|0,(W|0)!=(ue|0););if(W=N&3,!W)break d;for(;w=be+Ae(k,3)|0,ue=de[J+4|0]|de[J+5|0]<<8,oe[w|0]=ue,oe[w+1|0]=ue>>>8,oe[w+2|0]=de[J+6|0],k=k+1|0,f=f+1|0,(W|0)!=(f|0););}k=N;break c}Vn(5),_t()}Vn(5),_t()}f=k+Wt|0,(f|0)!=s[E+84>>2]&&(Ee=Ae(f,3),f=Ee+s[E+5980>>2]|0,w=de[f+1|0],N=de[f+2|0],f=de[f|0],W=E+5952|0,ue=Bu(E,W),be=Bu(E,W),W=Bu(E,W),Ee=Ee+s[E+5984>>2]|0,oe[Ee+1|0]=w+(w>>>0>>0?0-be|0:be),oe[Ee|0]=f+(f>>>0>>0?0-ue|0:ue),oe[Ee+2|0]=N+(N>>>0>>0?0-W|0:W),f=s[E+5976>>2],s[E+5976>>2]=((f|0)<=1?1:f)-1,k=k+1|0),In=J+16|0,Wt=k+Wt|0;break p}w=f>>>0>W>>>0?-1:0;c:{if((k^w)<0)break c;if((w^Xt)<0){W=f;break c}W=(f-ye|0)+W|0}for(Wt=Wt+1|0,k=ue,w=J,Xt=cn>>31,ye=((Xt^cn)-Xt<<4)+Nr|0,rt=s[ye>>2],pt=s[ye+12>>2],f=0;N=f,f>>>0<=15&&(f=N+1|0,(rt|0)>pt<>2],s[E+48>>2]<=7&&zr(E),rt=s[E+44>>2],pt=((N<<11)+14776|0)+(rt>>>24<<3)|0,f=s[pt+4>>2];c:{if(f){s[E+44>>2]=rt<>2]=s[E+48>>2]-f,f=s[pt>>2];break c}if(f=is(E,N,32,8),f=f>>1^0-(f&1),rt=f>>31,(f^rt)-rt>>>0>=65536)break f}if(rt=f,f=s[ye+4>>2],rt=N?rt:rt^(s[ye+12>>2]+(f<<1)|0)-1>>31,N=rt>>31,pt=s[ye>>2]+((rt^N)-N|0)|0,s[ye>>2]=pt,N=f+rt|0,s[ye+4>>2]=N,(pt|0)>16777215||(f=N>>31,(f^N)-f>>>0>=16777216))break f;f=s[ye+12>>2],(f|0)==64&&(s[ye>>2]=pt>>1,N=N>>1,s[ye+4>>2]=N,f=32),pt=f+1|0,s[ye+12>>2]=pt,ei=N+pt|0;c:{m:{if((ei|0)<=0){if(s[ye+4>>2]=(f^-1)<(ei|0)?ei:0-f|0,f=s[ye+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((N|0)<=0||(f=N-pt|0,s[ye+4>>2]=f>>31&f,f=s[ye+8>>2],(f|0)>126))break c;f=f+1|0}s[ye+8>>2]=f}f=J>>>0>>0?-1:0;c:{if((f^Ci)<0||(w=be,(f^ii)<0))break c;w=J+(w-yn|0)|0}for(be=nn>>31,J=((be^nn)-be<<4)+Nr|0,ye=s[J>>2],yn=s[J+12>>2],f=0;N=f,f>>>0<=15&&(f=N+1|0,(ye|0)>yn<>>31|0,W=(f+W|0)+(Xt^K0)|0,W=(W|0)>0?W:0,f=((W|0)>=255?255:W)+f|0,yn=s[J+8>>2],s[E+48>>2]<=7&&zr(E),Xt=f+(rt^Xt)|0,W=s[E+44>>2],ye=((N<<11)+14776|0)+(W>>>24<<3)|0,f=s[ye+4>>2];c:{if(f){s[E+44>>2]=W<>2]=s[E+48>>2]-f,f=s[ye>>2];break c}if(f=is(E,N,32,8),f=f>>1^0-(f&1),W=f>>31,(f^W)-W>>>0>=65536)break f}if(W=f,f=s[J+4>>2],ye=N?W:W^(s[J+12>>2]+(f<<1)|0)-1>>31,N=ye>>31,W=s[J>>2]+((ye^N)-N|0)|0,s[J>>2]=W,N=f+ye|0,s[J+4>>2]=N,(W|0)>16777215||(f=N>>31,(f^N)-f>>>0>=16777216))break f;f=s[J+12>>2],(f|0)==64&&(s[J>>2]=W>>1,N=N>>1,s[J+4>>2]=N,f=32),W=f+1|0,s[J+12>>2]=W,cn=N+W|0;c:{m:{if((cn|0)<=0){if(s[J+4>>2]=(cn|0)>(f^-1)?cn:0-f|0,f=s[J+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((N|0)<=0||(f=N-W|0,s[J+4>>2]=f>>31&f,f=s[J+8>>2],(f|0)>126))break c;f=f+1|0}s[J+8>>2]=f}f=ue>>>0>>0?-1:0;c:{if((f^Vi)<0||(k=Lt,(f^di)<0))break c;k=ue+(k-ti|0)|0}for(J=Ee>>31,W=((J^Ee)-J<<4)+Nr|0,ue=s[W>>2],Lt=s[W+12>>2],f=0;N=f,f>>>0<=15&&(f=N+1|0,(ue|0)>Lt<>>31|0,w=(f+w|0)+(be^yn)|0,w=(w|0)>0?w:0,f=((w|0)>=255?255:w)+f|0,Lt=s[W+8>>2],s[E+48>>2]<=7&&zr(E),ye=f+(ye^be)|0,w=s[E+44>>2],ue=((N<<11)+14776|0)+(w>>>24<<3)|0,f=s[ue+4>>2];c:{if(f){s[E+44>>2]=w<>2]=s[E+48>>2]-f,f=s[ue>>2];break c}if(f=is(E,N,32,8),f=f>>1^0-(f&1),w=f>>31,(f^w)-w>>>0>=65536)break f}if(w=f,f=s[W+4>>2],w=N?w:w^(s[W+12>>2]+(f<<1)|0)-1>>31,N=w>>31,ue=s[W>>2]+((w^N)-N|0)|0,s[W>>2]=ue,N=f+w|0,s[W+4>>2]=N,(ue|0)>16777215||(f=N>>31,(f^N)-f>>>0>=16777216))break f;f=s[W+12>>2],(f|0)==64&&(s[W>>2]=ue>>1,N=N>>1,s[W+4>>2]=N,f=32),ue=f+1|0,s[W+12>>2]=ue,be=N+ue|0;c:{m:{if((be|0)<=0){if(s[W+4>>2]=(be|0)>(f^-1)?be:0-f|0,f=s[W+8>>2],(f|0)<-127)break c;f=f-1|0;break m}if((N|0)<=0||(f=N-ue|0,s[W+4>>2]=f>>31&f,f=s[W+8>>2],(f|0)>126))break c;f=f+1|0}s[W+8>>2]=f}f=s[E+5984>>2]+Wr|0,oe[f+1|0]=ye,oe[f|0]=Xt,W=f,f=Ee>>>31|0,N=(f+k|0)+(J^Lt)|0,N=(N|0)>0?N:0,oe[W+2|0]=(((N|0)>=255?255:N)+f|0)+(w^J)}if(!(bt[E+84>>2]>Wt>>>0))break}break h}Vn(5),_t()}if(s[I0+hi>>2]=s[E+5976>>2],w=Ae(kr,3),f=w+s[E+5980>>2]|0,s[E+5980>>2]=f,k=w+s[E+5984>>2]|0,s[E+5984>>2]=k,ie=ie+1|0,(vn|0)==(ie|0))break}if(f=s[E+72>>2],f>>>0>Ln>>>0|f+s[E+80>>2]>>>0<=Ln>>>0||(f=s[E+40>>2],Mr[s[s[f>>2]+8>>2]](f,(k+so|0)+Ae(s[E+68>>2],3)|0,s[E+76>>2],kr)),Ln=Ln+1|0,Br=Br+1|0,(Br|0)==(Pr|0))break}jn=jn+Pr|0,f=s[E+8>>2]}if(w=s[E+56>>2],ie=s[E+52>>2],(f|0)!=(jn|0)){if((w|0)==(ie|0))break o;if(f=de[ie|0],ie=ie+1|0,s[E+52>>2]=ie,(f|0)!=255)break s;for(;;){if((w|0)==(ie|0))break a;if(f=de[ie|0],ie=ie+1|0,s[E+52>>2]=ie,(f|0)!=255)break}if(N=s[E+108>>2],(f|0)!=(N+208|0))break i;for(s[E+44>>2]=0,s[E+48>>2]=0,s[E+108>>2]=N+1&7,f=wi(ie,255,w-ie|0),s[E+60>>2]=f||w,zr(E),w=s[Be+16>>2],f=s[Be+20>>2]-w|0,(f|0)>0&&(fr(w,0,Ae(((f>>>0)/3|0)-(f>>>0>2)|0,3)+3|0),xr=s[Be+4>>2]),w=s[Be>>2],f=xr-w|0,(f|0)>0&&fr(w,0,((f>>>2|0)-(f>>>0>3)<<2)+4|0),ie=o0;s[ie+64>>2]=4,s[ie+68>>2]=0,s[ie+48>>2]=4,s[ie+52>>2]=0,s[ie+32>>2]=4,s[ie+36>>2]=0,s[ie+16>>2]=4,s[ie+20>>2]=0,s[ie+8>>2]=0,s[ie+12>>2]=1,s[ie>>2]=4,s[ie+4>>2]=0,s[ie+72>>2]=0,s[ie+76>>2]=1,s[ie+56>>2]=0,s[ie+60>>2]=1,s[ie+40>>2]=0,s[ie+44>>2]=1,s[ie+24>>2]=0,s[ie+28>>2]=1,ie=ie+80|0,($i|0)!=(ie|0););s[E+5976>>2]=0,ke[E+5972>>1]=1,s[E+5964>>2]=1,s[E+5968>>2]=4,ke[E+5960>>1]=1,s[E+5952>>2]=0,s[E+5956>>2]=4;continue}break}if(w>>>0<=ie>>>0)break r;h:{if(de[ie|0]==255){f=s[E+44>>2];break h}if(f=s[E+48>>2],(f|0)<=0&&(zr(E),ie=s[E+52>>2],f=s[E+48>>2]),s[E+48>>2]=f-1,f=s[E+44>>2]<<1,s[E+44>>2]=f,de[ie|0]!=255)break n}if(f)break t;f=s[Be>>2],f&&Gr(f),f=s[Be+16>>2],f&&Gr(f),In=Be+32|0;break e}Li(),_t()}Li(),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(26),_t()}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}for(w=s[E+52>>2],f=s[E+48>>2];N=w,w=N-1|0,k=de[w|0]==255?7:8,Ct=(k|0)<=(f|0),f=f-k|0,!!Ct;);return N-Ni|0}function fp(f){f=f|0;var w=0,N=0,k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0;Ee=In-16|0,In=Ee,N=Gn(92),N&&(s[N>>2]=0,s[N+4>>2]=0,s[N+32>>2]=0,s[N+36>>2]=0,s[N+52>>2]=0,s[N+56>>2]=0,s[N+16>>2]=0,s[N+20>>2]=0,s[N+8>>2]=0,s[N+12>>2]=0,s[N+24>>2]=0,s[N+28>>2]=4,s[N+40>>2]=0,s[N+44>>2]=0,oe[N+48|0]=1,s[N+60>>2]=0,s[N+64>>2]=0,s[N+68>>2]=0,s[N+72>>2]=0,s[N+76>>2]=0,s[N+80>>2]=0,s[N+84>>2]=0,s[N+88>>2]=0);e:{if(N){w=s[f+36>>2],w>>>0>=256&&(Vn(105),_t()),s[N+16>>2]=w,s[Ee>>2]=Re[f+24>>1],s[Ee+4>>2]=Re[f+26>>1],s[Ee+8>>2]=de[f+28|0],s[Ee+12>>2]=de[f+29|0];t:{n:{r:{i:{if(s[Ee>>2]){if(!s[Ee+4>>2])break i;if(s[Ee+8>>2]-2>>>0>=15)break r;if(s[Ee+12>>2]-1>>>0>=255)break n;w=s[Ee+4>>2],s[N>>2]=s[Ee>>2],s[N+4>>2]=w,w=s[Ee+12>>2],s[N+8>>2]=s[Ee+8>>2],s[N+12>>2]=w;break t}Vn(100),_t()}Vn(101),_t()}Vn(103),_t()}Vn(102),_t()}w=s[f+32>>2],w>>>0>=3&&(Vn(104),_t()),s[N+20>>2]=w;t:{n:{r:{i:{if(w=s[N>>2],w){if(ie=w,W=s[N+4>>2],w=Ae(W,w),ie>>>0>w>>>0|w>>>0>>0)break i;if(ie=w,W=s[N+12>>2],w=Ae(W,w),ie>>>0>w>>>0|w>>>0>>0)break r;if(ie=w,W=(s[N+8>>2]+7|0)/8|0,w=Ae(W,w),ie>>>0>w>>>0|w>>>0>>0)break n;s[Ee>>2]=w+1058;break t}Vn(7),_t()}Vn(2),_t()}Vn(2),_t()}Vn(2),_t()}W=s[Ee>>2],w=s[f+16>>2],k=s[f+12>>2],J=w-k|0;t:{n:{if(W>>>0>J>>>0){if(ye=W-J|0,ue=s[f+20>>2],ye>>>0<=ue-w>>>0){w=fr(w,0,ye)+ye|0;break n}if((W|0)<0)break e;if(w=ue-k|0,ue=w<<1,w=w>>>0>=1073741823?2147483647:W>>>0>>0?ue:W,ue=Gn(w),fr(ue+J|0,0,ye),J=ea(ue,k,J),s[f+20>>2]=J+w,w=J+W|0,s[f+16>>2]=w,s[f+12>>2]=J,!k)break t;Gr(k),w=s[f+16>>2];break t}if(J>>>0<=W>>>0)break t;w=k+W|0}s[f+16>>2]=w}W=s[f+12>>2],s[N+32>>2]&&(Vn(7),_t()),s[N+36>>2]=W,s[N+32>>2]=1,s[N+40>>2]=w-W,ye=In-16|0,In=ye,w=s[f>>2],s[ye+12>>2]=s[f+4>>2]-w,s[ye+8>>2]=w,w=s[ye+12>>2],s[ye>>2]=s[ye+8>>2],s[ye+4>>2]=w,J=In-96|0,In=J;t:{n:{r:{i:{a:{if(!s[ye+4>>2]||s[ye>>2]){if(!s[N>>2]|!s[N+32>>2])break a;if(s[N+20>>2]&&s[N+12>>2]==1)break i;if(be=-1<>2],W=be^-1,ue=N+72|0,!eo(N+52|0,W,s[N+16>>2],ue))break r;Lt=Ae(Ae(s[N>>2],(s[N+8>>2]+7|0)/8|0),s[N+20>>2]?s[N+12>>2]:1);s:{o:{u:switch(s[N+32>>2]-2|0){case 0:if(w=s[N+44>>2],bt[N+40>>2]>>0)break n;s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=255,w=s[N+44>>2],s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=232,w=s[N+36>>2]+s[N+44>>2]|0,oe[w|0]=0,oe[w+1|0]=8,w=s[N+44>>2]+2|0,s[N+44>>2]=w,w=w+s[N+36>>2]|0,k=de[9988]|de[9989]<<8|(de[9990]<<16|de[9991]<<24),oe[w|0]=k,oe[w+1|0]=k>>>8,oe[w+2|0]=k>>>16,oe[w+3|0]=k>>>24,k=de[9992]|de[9993]<<8,oe[w+4|0]=k,oe[w+5|0]=k>>>8,s[N+44>>2]=s[N+44>>2]+6;break o;case 1:break s;default:break u}if(w=s[N+44>>2],bt[N+40>>2]>>0)break n;s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=255,w=s[N+44>>2],s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=216}if(de[N+28|0]&2){if(s[J+52>>2]=13,s[J+48>>2]=5448,w=s[J+52>>2],s[J+32>>2]=s[J+48>>2],s[J+36>>2]=w,k=s[J+36>>2],w=s[N+44>>2],bt[N+40>>2]<(k+w|0)+4>>>0)break n;s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=255,w=s[N+44>>2],s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=254,w=s[N+36>>2]+s[N+44>>2]|0,k=k+2|0,k=k<<8|(k&65280)>>>8,oe[w|0]=k,oe[w+1|0]=k>>>8,k=s[N+44>>2]+2|0,s[N+44>>2]=k,w=s[J+36>>2],Ms(k+s[N+36>>2]|0,s[J+32>>2],w),s[N+44>>2]=w+s[N+44>>2]}s[N+32>>2]=3}if(k=s[N+24>>2],k){s:switch(s[N+8>>2]-8|0){default:Vn(8),_t();case 0:case 8:break s}if(w=s[N+44>>2],bt[N+40>>2]>>0)break n;s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=255,w=s[N+44>>2],s[N+44>>2]=w+1,oe[w+s[N+36>>2]|0]=232,w=s[N+36>>2]+s[N+44>>2]|0,oe[w|0]=0,oe[w+1|0]=7,w=s[N+44>>2]+2|0,s[N+44>>2]=w,w=w+s[N+36>>2]|0,oe[w+4|0]=k,oe[w|0]=109,oe[w+1|0]=114,oe[w+2|0]=102,oe[w+3|0]=120,s[N+44>>2]=s[N+44>>2]+5}k=N+36|0,w=s[k+8>>2];s:{if(E=Ae(s[N+12>>2],3),bt[k+4>>2]>=(w+E|0)+10>>>0){if(ie=1,s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=255,w=s[k+8>>2],s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=247,w=s[k>>2]+s[k+8>>2]|0,E=E+8|0,E=E<<8|(E&65280)>>>8,oe[w|0]=E,oe[w+1|0]=E>>>8,w=s[N+8>>2],E=s[k+8>>2],s[k+8>>2]=E+3,oe[(E+s[k>>2]|0)+2|0]=w,E=s[N+4>>2],w=(E|s[N>>2])>>>0>65535,Be=s[k>>2]+s[k+8>>2]|0,E=w?0:E,E=E<<8|(E&65280)>>>8,oe[Be|0]=E,oe[Be+1|0]=E>>>8,E=s[k+8>>2]+2|0,s[k+8>>2]=E,E=E+s[k>>2]|0,Be=w?0:Re[N>>1],Be=Be<<8|(Be&65280)>>>8,oe[E|0]=Be,oe[E+1|0]=Be>>>8,E=s[N+12>>2],Be=s[k+8>>2],s[k+8>>2]=Be+3,oe[(Be+s[k>>2]|0)+2|0]=E,s[N+12>>2]>0)for(;E=s[k+8>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=ie,E=s[k+8>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=17,E=s[k+8>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=0,E=s[N+12>>2]>(ie|0),ie=ie+1|0,!!E;);break s}break n}if(w){if(E=s[k+8>>2],bt[k+4>>2]>>0)break n;w=s[N+4>>2],ie=s[N>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=255,E=s[k+8>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=248,E=s[k>>2]+s[k+8>>2]|0,oe[E|0]=0,oe[E+1|0]=12,E=s[k+8>>2],s[k+8>>2]=E+3,oe[(E+s[k>>2]|0)+2|0]=4,E=s[k+8>>2],s[k+8>>2]=E+1,oe[E+s[k>>2]|0]=4,E=s[k>>2]+s[k+8>>2]|0,w=w<<24|(w&65280)<<8|(w>>>8&65280|w>>>24),oe[E|0]=w,oe[E+1|0]=w>>>8,oe[E+2|0]=w>>>16,oe[E+3|0]=w>>>24,w=s[k+8>>2]+4|0,s[k+8>>2]=w,w=w+s[k>>2]|0,ie=ie<<24|(ie&65280)<<8|(ie>>>8&65280|ie>>>24),oe[w|0]=ie,oe[w+1|0]=ie>>>8,oe[w+2|0]=ie>>>16,oe[w+3|0]=ie>>>24,s[k+8>>2]=s[k+8>>2]+4}w=s[N+16>>2];s:{if((be|0)<=-129){ie=w+1|0,E=ie,be=(W>>>0>=4095?4095:W)+128>>>8|0,ie=(be+Ae(w,3)|0)+2|0,ie=(w|0)>=(ie|0)||(W|0)<(ie|0)?E:ie,E=(Ae(w,5)+(be<<2)|0)+3|0,E=(E|0)>(W|0)||(E|0)<(ie|0)?ie:E,w=(Ae(be,17)+Ae(w,7)|0)+4|0,w=(w|0)>(W|0)||(w|0)<(E|0)?E:w;break s}ie=w+1|0,E=ie,be=256/(0-be|0)<<16>>16,ie=(3/(be|0)<<16>>16)+Ae(w,3)|0,ie=(ie|0)<=2?2:ie,ie=(w|0)>=(ie|0)||(W|0)<(ie|0)?E:ie,E=(7/(be|0)<<16>>16)+Ae(w,5)|0,E=(E|0)<=3?3:E,E=(E|0)>(W|0)||(E|0)<(ie|0)?ie:E,w=(21/(be|0)<<16>>16)+Ae(w,7)|0,w=(w|0)<=4?4:w,w=(w|0)>(W|0)||(w|0)<(E|0)?E:w}be=s[N+68>>2],Be=s[N- -64>>2],pt=s[N+60>>2],rt=s[N+52>>2],Ct=s[N+56>>2];s:{o:{u:{if(!(rt|Ct|(Be|pt))&&!be)break u;if((W|0)!=(rt|0)|(ie|0)!=(Ct|0)|((E|0)!=(pt|0)|(w|0)!=(Be|0))||(be|0)!=64)break o}if(!(de[N+28|0]&4)|s[N+8>>2]<13)break s}if(w=s[k+8>>2],bt[k+4>>2]>>0)break n;s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=255,w=s[k+8>>2],s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=248,w=s[k>>2]+s[k+8>>2]|0,oe[w|0]=0,oe[w+1|0]=13,w=s[k+8>>2],s[k+8>>2]=w+3,oe[(w+s[k>>2]|0)+2|0]=1,w=s[k>>2]+s[k+8>>2]|0,W=Re[ue>>1],W=W<<8|W>>>8,oe[w|0]=W,oe[w+1|0]=W>>>8,w=s[k+8>>2]+2|0,s[k+8>>2]=w,w=w+s[k>>2]|0,W=Re[ue+4>>1],W=W<<8|W>>>8,oe[w|0]=W,oe[w+1|0]=W>>>8,w=s[k+8>>2]+2|0,s[k+8>>2]=w,w=w+s[k>>2]|0,W=Re[ue+8>>1],W=W<<8|W>>>8,oe[w|0]=W,oe[w+1|0]=W>>>8,w=s[k+8>>2]+2|0,s[k+8>>2]=w,w=w+s[k>>2]|0,W=Re[ue+12>>1],W=W<<8|W>>>8,oe[w|0]=W,oe[w+1|0]=W>>>8,w=s[k+8>>2]+2|0,s[k+8>>2]=w,w=w+s[k>>2]|0,W=Re[ue+16>>1],W=W<<8|W>>>8,oe[w|0]=W,oe[w+1|0]=W>>>8,s[k+8>>2]=s[k+8>>2]+2}w=s[N+20>>2];s:{if(!w){if(w=s[N+12>>2],!w)break s;for(Be=w-1|0,be=Ae(s[N+4>>2],Lt),E=0;Sf(k,1,s[N+16>>2],s[N+20>>2]),w=s[ye>>2],W=s[ye+4>>2],s[J+80>>2]=s[N>>2],s[J+84>>2]=s[N+4>>2],ie=s[N+8>>2],s[J+92>>2]=1,s[J+88>>2]=ie,ie=s[N+16>>2],s[J+52>>2]=0,s[J+48>>2]=ie,s[J+56>>2]=s[N+20>>2],ie=s[N+24>>2],oe[J+64|0]=0,s[J+60>>2]=ie,ie=Qs(J+80|0,J+48|0,ue),s[J+40>>2]=w,s[J+44>>2]=W,pt=s[s[ie>>2]+8>>2],s[J+8>>2]=w,s[J+12>>2]=W,pt=Mr[pt|0](ie,J+8|0,Lt)|0,Ct=s[N+36>>2],rt=s[N+44>>2],s[J+52>>2]=s[N+40>>2]-rt,s[J+48>>2]=rt+Ct,Ct=s[s[ie>>2]+16>>2],rt=s[J+52>>2],s[J>>2]=s[J+48>>2],s[J+4>>2]=rt,Wt=N,Xt=(Mr[Ct|0](ie,pt,J)|0)+s[N+44>>2]|0,s[Wt+44>>2]=Xt,Mr[s[s[ie>>2]+4>>2]](ie),(E|0)!=(Be|0)&&(s[ye>>2]=w+be,s[ye+4>>2]=W-be),E=E+1|0,(E|0)!=s[N+12>>2];);break s}Sf(k,s[N+12>>2],s[N+16>>2],w),W=s[ye>>2],ie=s[ye+4>>2],w=s[N+12>>2],s[J+80>>2]=s[N>>2],s[J+84>>2]=s[N+4>>2],E=s[N+8>>2],s[J+92>>2]=w,s[J+88>>2]=E,w=s[N+16>>2],s[J+52>>2]=0,s[J+48>>2]=w,s[J+56>>2]=s[N+20>>2],w=s[N+24>>2],oe[J+64|0]=0,s[J+60>>2]=w,w=Qs(J+80|0,J+48|0,ue),s[J+40>>2]=W,s[J+44>>2]=ie,ue=s[s[w>>2]+8>>2],s[J+24>>2]=W,s[J+28>>2]=ie,W=Mr[ue|0](w,J+24|0,Lt)|0,ue=s[N+36>>2],ie=s[N+44>>2],s[J+52>>2]=s[N+40>>2]-ie,s[J+48>>2]=ie+ue,ue=s[s[w>>2]+16>>2],ie=s[J+52>>2],s[J+16>>2]=s[J+48>>2],s[J+20>>2]=ie,Wt=N,Xt=(Mr[ue|0](w,W,J+16|0)|0)+s[N+44>>2]|0,s[Wt+44>>2]=Xt,Mr[s[s[w>>2]+4>>2]](w)}s:{if(!(s[N+28>>2]&1)||(w=s[k+8>>2],!(w&1)))break s;s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=255}if(w=s[k+8>>2],bt[k+4>>2]>>0)break n;s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=255,w=s[k+8>>2],s[k+8>>2]=w+1,oe[w+s[k>>2]|0]=217,s[N+32>>2]=4,In=J+96|0;break t}Vn(1),_t()}Vn(7),_t()}Vn(104),_t()}Vn(106),_t()}Vn(3),_t()}In=ye+16|0,s[Ee>>2]=s[N+44>>2],w=s[Ee>>2],ye=s[f+16>>2],W=s[f+12>>2],k=ye-W|0;t:{if(w>>>0>k>>>0){if(J=w-k|0,ue=s[f+20>>2],J>>>0<=ue-ye>>>0){Wt=f,Xt=fr(ye,0,J)+J|0,s[Wt+16>>2]=Xt;break t}if((w|0)<0)break e;if(ye=ue-W|0,ue=ye<<1,ye=ye>>>0>=1073741823?2147483647:w>>>0>>0?ue:w,ue=Gn(ye),fr(ue+k|0,0,J),k=ea(ue,W,k),s[f+20>>2]=k+ye,s[f+16>>2]=w+k,s[f+12>>2]=k,!W)break t;Gr(W);break t}if(w>>>0>=k>>>0)break t;s[f+16>>2]=w+W}M0(N),In=Ee+16|0;return}f=qh(4),s[f>>2]=14468,s[f>>2]=14448,dt(f|0,14520,28),_t()}Li(),_t()}function hp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0,ti=0,ei=0,hi=0,ii=0,Ci=0,di=0,Vi=0,Ni=0;W=s[f+44>>2],s[f+44>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,Lt=In-32|0,In=Lt,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+92>>2],s[Lt+24>>2]=0,s[Lt+16>>2]=0,s[Lt+20>>2]=0;e:{t:{n:{if(Ln=(w|0)!=1?1:f,xr=N+4|0,f=Ae(Ln,xr),w=f<<1,w){if(w>>>0>=1431655766)break n;w=Ae(f,6),jn=Gn(w),w=w-3|0,fr(jn,0,(w-((w>>>0)%3|0)|0)+3|0)}s[Lt+8>>2]=0,s[Lt>>2]=0,s[Lt+4>>2]=0;r:{if(Ln){if(Ln>>>0>=1073741824)break t;if(w=Ln<<2,N=Gn(w),s[Lt>>2]=N,Vi=fr(N,0,w),!s[k+8>>2])break r;for(Pr=jn+3|0,Nr=Pr+Ae(f,3)|0;;){for(s[k+5992>>2]=Nr,s[k+5988>>2]=Pr,f=Nr,Wr&1&&(s[k+5992>>2]=Pr,s[k+5988>>2]=Nr,f=Pr),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+92>>2],xr),w=s[k+5988>>2],f=0,Ni=s[Lt>>2];;){ei=f<<2,s[k+5984>>2]=s[ei+Vi>>2],w=Ae(s[k+92>>2],3)+w|0,N=w-3|0,W=de[N|0]|de[N+1|0]<<8,oe[w|0]=W,oe[w+1|0]=W>>>8,oe[w+2|0]=de[N+2|0],w=s[k+5992>>2]-3|0,N=s[k+5988>>2],W=de[N|0]|de[N+1|0]<<8,oe[w|0]=W,oe[w+1|0]=W>>>8,oe[w+2|0]=de[N+2|0],nn=0;i:{a:{if(s[k+92>>2])for(ti=k+120|0;;){w=s[k+5988>>2],Wt=Ae(nn,3),W=w+Wt|0,ie=de[W+1|0],ye=Wt-3|0,w=ye+w|0,yn=de[w+1|0],ir=ie-yn|0,J=de[W|0],E=de[w|0],ue=J-E|0,Be=de[W+2|0],vn=de[w+2|0],kr=Be-vn|0,N=s[k+5996>>2],pt=s[k+5992>>2],be=pt+ye|0,ye=de[be+1|0],hi=yn-ye|0,Ee=Ae(Ae(oe[N+(de[W+4|0]-ie|0)|0],9)+oe[N+ir|0]|0,9)+oe[N+hi|0]|0,w=de[be|0],Ct=E-w|0,rt=oe[Ct+N|0]+Ae(oe[N+ue|0]+Ae(oe[N+(de[W+3|0]-J|0)|0],9)|0,9)|0,be=de[be+2|0],ii=vn-be|0,cn=oe[N+ii|0]+Ae(oe[N+kr|0]+Ae(oe[N+(de[W+5|0]-Be|0)|0],9)|0,9)|0;s:{if(!(Ee|rt|cn)){w=Ae(nn,3),ye=w+s[k+5988>>2]|0,N=s[k+92>>2]-nn|0,Be=w+s[k+5992>>2]|0,W=Be-3|0,J=de[W+2|0],E=de[W+1|0],w=0,ie=de[W|0];o:{u:{for(;;){if(W=Be+Ae(w,3)|0,(ie|0)!=de[W|0]|(E|0)!=de[W+1|0]|(J|0)!=de[W+2|0])break u;if(oe[W+2|0]=J,oe[W+1|0]=E,oe[W|0]=ie,w=w+1|0,(N|0)==(w|0))break}gu(k,N,1);break o}W=(w|0)==(N|0),gu(k,w,W),W||(W=Ae(w,3),N=W+Be|0,ue=de[N+2|0],ye=W+ye|0,W=de[ye+2|0],Wt=de[N+1|0],Be=de[ye+1|0],ye=de[ye|0],ie=ie>>>0>ye>>>0?-1:1,be=k+5960|0,Ct=Ae(ie,de[N|0]-ye|0),dl(k,be,Ct<<24>>24),E=E>>>0>Be>>>0?-1:1,Wt=Ae(E,Wt-Be|0),dl(k,be,Wt<<24>>24),Ee=be,J=W>>>0>>0?-1:1,be=Ae(J,ue-W|0),dl(k,Ee,be<<24>>24),oe[N+2|0]=W+Ae(J,be),oe[N+1|0]=Be+Ae(E,Wt),oe[N|0]=ye+Ae(ie,Ct),N=s[k+5984>>2],s[k+5984>>2]=((N|0)<=1?1:N)-1,N=w+1|0)}nn=N+nn|0;break s}N=w>>>0>J>>>0?-1:0;o:{if((N^Ct)<0)break o;if((N^ue)<0){J=w;break o}J=(w-E|0)+J|0}for(nn=nn+1|0,N=Be,W=ie,Ct=rt>>31,ue=((Ct^rt)-Ct<<4)+ti|0,Br=s[ue>>2],Xt=s[ue+12>>2],w=0;E=w,w>>>0<=15&&(w=E+1|0,(Br|0)>Xt<>>31|0,w=(Br+J|0)+(Ct^s[ue+8>>2])|0,w=(w|0)>0?w:0,Ci=(w|0)>=255?255:w,di=(Ct^de[pt+Wt|0]-Ci)-Ct|0,rt=di<<24>>24,w=rt^(E?0:(Xt+(s[ue+4>>2]<<1)|0)-1>>31),Xt=w>>30^w<<1,w=Xt>>E;o:{if((w|0)<=22){w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}J=w-E|0,s[k+52>>2]=J,pt=s[k+48>>2]|1<>2]=pt,w=Xt&(-1<=0||(s[k+48>>2]=pt|w>>>0-J,Ot(k),J=s[k+52>>2],(J|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-J,Ot(k),J=s[k+52>>2]}w=w<>2],E=w-24|0,s[k+52>>2]=E;u:{if((E|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>24-w,Ot(k),E=s[k+52>>2],(E|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=E-8|0,s[k+52>>2]=J,pt=s[k+48>>2]|1<>2]=pt,w=Xt-1&255;u:{if((E|0)>7||(s[k+48>>2]=pt|w>>>8-E,Ot(k),J=s[k+52>>2],(J|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-J,Ot(k),J=s[k+52>>2]}w=w<>2],s[k+48>>2]=Xt,w=rt>>31,pt=s[ue>>2]+((w^rt)-w|0)|0,s[ue>>2]=pt,E=rt+s[ue+4>>2]|0,s[ue+4>>2]=E,(pt|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[ue+12>>2],(w|0)==64&&(s[ue>>2]=pt>>1,E=E>>1,s[ue+4>>2]=E,w=32),rt=w+1|0,s[ue+12>>2]=rt,pt=E+rt|0;o:{u:{if((pt|0)<=0){if(s[ue+4>>2]=(pt|0)>(w^-1)?pt:0-w|0,w=s[ue+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-rt|0,s[ue+4>>2]=w>>31&w,w=s[ue+8>>2],(w|0)>126))break o;w=w+1|0}s[ue+8>>2]=w}w=ie>>>0>>0?-1:0;o:{if((w^hi)<0||(W=ye,(w^ir)<0))break o;W=ie+(W-yn|0)|0}for(ye=Ee>>31,ie=((ye^Ee)-ye<<4)+ti|0,rt=s[ie>>2],ue=s[ie+12>>2],w=0;E=w,w>>>0<=15&&(w=E+1|0,(rt|0)>ue<>>31|0,w=(rt+W|0)+(ye^s[ie+8>>2])|0,w=(w|0)>0?w:0,yn=(w|0)>=255?255:w,ir=(ye^de[(Wt+s[k+5992>>2]|0)+1|0]-yn)-ye|0,W=ir<<24>>24,w=W^(E?0:(ue+(s[ie+4>>2]<<1)|0)-1>>31),ue=w>>30^w<<1,w=ue>>E;o:{if((w|0)<=22){w=(w^-1)+J|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=Xt|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}J=w-E|0,s[k+52>>2]=J,Ee=s[k+48>>2]|1<>2]=Ee,w=ue&(-1<=0||(s[k+48>>2]=Ee|w>>>0-J,Ot(k),J=s[k+52>>2],(J|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-J,Ot(k),J=s[k+52>>2]}w=w<>2]=E;u:{if((E|0)>=0||(s[k+48>>2]=Xt|1>>>24-J,Ot(k),E=s[k+52>>2],(E|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}J=E-8|0,s[k+52>>2]=J,Ee=s[k+48>>2]|1<>2]=Ee,w=ue-1&255;u:{if((E|0)>7||(s[k+48>>2]=Ee|w>>>8-E,Ot(k),J=s[k+52>>2],(J|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-J,Ot(k),J=s[k+52>>2]}w=w<>2],s[k+48>>2]=ue,w=W>>31,Ee=s[ie>>2]+((w^W)-w|0)|0,s[ie>>2]=Ee,E=W+s[ie+4>>2]|0,s[ie+4>>2]=E,(Ee|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;w=s[ie+12>>2],(w|0)==64&&(s[ie>>2]=Ee>>1,E=E>>1,s[ie+4>>2]=E,w=32),W=w+1|0,s[ie+12>>2]=W,Ee=E+W|0;o:{u:{if((Ee|0)<=0){if(s[ie+4>>2]=(Ee|0)>(w^-1)?Ee:0-w|0,w=s[ie+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-W|0,s[ie+4>>2]=w>>31&w,w=s[ie+8>>2],(w|0)>126))break o;w=w+1|0}s[ie+8>>2]=w}w=Be>>>0>>0?-1:0;o:{if((w^ii)<0||(N=be,(w^kr)<0))break o;N=Be+(N-vn|0)|0}for(Be=cn>>31,ie=((Be^cn)-Be<<4)+ti|0,be=s[ie>>2],E=s[ie+12>>2],w=0;W=w,w>>>0<=15&&(w=W+1|0,(be|0)>E<>>31|0,w=(cn+N|0)+(Be^s[ie+8>>2])|0,w=(w|0)>0?w:0,vn=(w|0)>=255?255:w,kr=(Be^de[(Wt+s[k+5992>>2]|0)+2|0]-vn)-Be|0,be=kr<<24>>24,w=be^(W?0:(E+(s[ie+4>>2]<<1)|0)-1>>31),Ee=w>>30^w<<1,w=Ee>>W;o:{if((w|0)<=22){w=(w^-1)+J|0,s[k+52>>2]=w;u:{if((w|0)>=0||(s[k+48>>2]=ue|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}N=w-W|0,s[k+52>>2]=N,J=s[k+48>>2]|1<>2]=J,w=Ee&(-1<=0||(s[k+48>>2]=J|w>>>0-N,Ot(k),N=s[k+52>>2],(N|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|w>>>0-N,Ot(k),N=s[k+52>>2]}w=w<>2]=E;u:{if((E|0)>=0||(s[k+48>>2]=ue|1>>>24-J,Ot(k),E=s[k+52>>2],(E|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-E,Ot(k),E=s[k+52>>2]}w=E-8|0,s[k+52>>2]=w,W=s[k+48>>2]|1<>2]=W,N=Ee-1&255;u:{if((E|0)>7||(s[k+48>>2]=W|N>>>8-E,Ot(k),w=s[k+52>>2],(w|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|N>>>0-w,Ot(k),w=s[k+52>>2]}w=N<>2]=w|s[k+48>>2],w=be>>31,N=s[ie>>2]+((w^be)-w|0)|0,s[ie>>2]=N,E=be+s[ie+4>>2]|0,s[ie+4>>2]=E,(N|0)>16777215||(w=E>>31,(w^E)-w>>>0>=16777216))break a;J=(Br+Ci|0)+(Ct^di)|0,ye=(rt+yn|0)+(ye^ir)|0,w=s[ie+12>>2],(w|0)==64&&(s[ie>>2]=N>>1,E=E>>1,s[ie+4>>2]=E,w=32),N=w+1|0,s[ie+12>>2]=N,W=N+E|0;o:{u:{if((W|0)<=0){if(s[ie+4>>2]=(W|0)>(w^-1)?W:0-w|0,w=s[ie+8>>2],(w|0)<-127)break o;w=w-1|0;break u}if((E|0)<=0||(w=E-N|0,s[ie+4>>2]=w>>31&w,w=s[ie+8>>2],(w|0)>126))break o;w=w+1|0}s[ie+8>>2]=w}w=Wt+s[k+5992>>2]|0,oe[w+2|0]=(cn+vn|0)+(Be^kr),oe[w+1|0]=ye,oe[w|0]=J}if(!(bt[k+92>>2]>nn>>>0))break}break i}Vn(5),_t()}if(s[Ni+ei>>2]=s[k+5984>>2],N=Ae(xr,3),w=N+s[k+5988>>2]|0,s[k+5988>>2]=w,s[k+5992>>2]=N+s[k+5992>>2],f=f+1|0,(Ln|0)==(f|0))break}if(Wr=Wr+1|0,!(Wr>>>0>2]))break}break r}if(!s[k+8>>2])break r;for(N=jn+3|0,W=N+Ae(f,3)|0,f=0;s[k+5992>>2]=W,s[k+5988>>2]=N,w=W,f&1&&(s[k+5992>>2]=N,s[k+5988>>2]=W,w=N),J=s[k+44>>2],Mr[s[s[J>>2]+12>>2]](J,w,s[k+92>>2],xr),f=f+1|0,f>>>0>2];);}Ot(k);r:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break r;Ot(k)}Ot(k),f=s[Lt>>2],f&&Gr(f),jn&&Gr(jn),In=Lt+32|0;break e}Li(),_t()}Li(),_t()}return s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function dp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0;W=s[f+44>>2],s[f+44>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,Ee=In-32|0,In=Ee,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+116>>2],s[Ee+24>>2]=0,s[Ee+16>>2]=0,s[Ee+20>>2]=0;e:{t:{if(Lt=(w|0)!=1?1:f,nn=N+4|0,f=Ae(Lt,nn),w=f<<1,w){if((w|0)<0)break t;N=f<<2,rt=Gn(N),s[Ee+16>>2]=rt,s[Ee+24>>2]=(w<<1)+rt,Nr=Ee,Wr=fr(rt,0,N)+N|0,s[Nr+20>>2]=Wr}s[Ee+8>>2]=0,s[Ee>>2]=0,s[Ee+4>>2]=0;n:{r:{i:{a:{if(Lt){if(Lt>>>0<1073741824)break a;Li(),_t()}if(s[k+8>>2])break i;break e}if(w=Lt<<2,Wt=Gn(w),s[Ee>>2]=Wt,N=w+Wt|0,s[Ee+8>>2]=N,kr=fr(Wt,0,w),s[Ee+4>>2]=N,!s[k+8>>2])break e;for(cn=rt+2|0,vn=cn+(f<<1)|0,xr=k+5984|0,Pr=k+5996|0,Br=k+144|0;;){for(s[k+6016>>2]=vn,s[k+6012>>2]=cn,f=vn,Ln&1&&(s[k+6016>>2]=cn,s[k+6012>>2]=vn,f=cn),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+116>>2],nn),f=s[k+6016>>2],N=s[k+6012>>2],yn=0;;){if(ir=(yn<<2)+kr|0,E=s[ir>>2],s[k+6008>>2]=E,w=s[k+116>>2],W=(w<<1)+N|0,ke[W>>1]=Re[W-2>>1],ke[f-2>>1]=Re[N>>1],w){for(f=Re[N-2>>1],W=Re[N>>1],N=0;;){E=s[k+6020>>2],J=s[k+6012>>2],ie=N+1|0,be=Re[J+(ie<<1)>>1],ye=W-f|0,jn=N<<1,pt=jn+s[k+6016>>2]|0,ue=Re[pt-2>>1],Xt=f-ue|0,f=Ae(Ae(oe[E+(be-W|0)|0],9)+oe[ye+E|0]|0,9)+oe[Xt+E|0]|0;a:{if(f){for(Be=f>>31,J=((f^Be)-Be<<4)+Br|0,w=s[J>>2],E=s[J+12>>2],N=0;f=N,f>>>0<=15&&(N=f+1|0,(w|0)>E<>2],w=s[k+76>>2],N=W>>>0>>0?-1:0,N=((s[J+8>>2]^Be)-Be|0)+((N^Xt)<0?W:ue+((N^ye)>=0?ye:0)|0)|0,ue=s[k+72>>2],Xt=(N|0)==(N&ue)?N:(N|0)>=0?ue:0,N=(Re[pt>>1]-Xt^Be)-Be|0,N=(((N|0)>0?w:0-w|0)+N|0)/(w<<1|1)|0,N=(Ct&N>>31)+N|0,N=N-((N|0)>=((Ct+1|0)/2|0)?Ct:0)|0,w=N^(f|w?0:(E+(s[J+4>>2]<<1)|0)-1>>31),ue=w>>30^w<<1,w=ue>>f,ye=s[k+92>>2],E=ye-s[k+84>>2]|0;s:{if((w|0)>=(E-1|0)){f=s[k+52>>2];o:{u:{if((E|0)<=31){if(f=f-E|0,s[k+52>>2]=f,(f|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)<0)break u;break o}w=f-31|0,s[k+52>>2]=w;l:{if((f|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break l;Ot(k),w=s[k+52>>2]}if(f=(s[k+84>>2]+(w-ye|0)|0)+31|0,s[k+52>>2]=f,(f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}E=s[k+48>>2]|1<>2]=E,w=s[k+84>>2],f=f-w|0,s[k+52>>2]=f,w=ue-1&(-1<=0||(s[k+48>>2]=E|w>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|w>>>0-f,Ot(k),f=s[k+52>>2]}f=w<=31){E=w>>>1|0,ye=s[k+52>>2]-E|0,s[k+52>>2]=ye;o:{if((ye|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}w=w-E|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;o:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}E=w-f|0,s[k+52>>2]=E,w=s[k+48>>2]|1<>2]=w,f=ue&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],ue=s[k+96>>2],w=s[k+76>>2],f=N>>31,ye=s[J>>2]+((f^N)-f|0)|0,s[J>>2]=ye,Ct=w<<1,pt=Ct|1,f=s[J+4>>2]+Ae(pt,N)|0,s[J+4>>2]=f,(ye|0)>16777215||(E=f>>31,(E^f)-E>>>0>16777215))break n;E=s[J+12>>2],(ue|0)==(E|0)&&(s[J>>2]=ye>>1,f=f>>1,s[J+4>>2]=f,E=ue>>1),ue=E+1|0,s[J+12>>2]=ue,ye=f+ue|0;s:{o:{if((ye|0)>0){if((f|0)<=0||(f=f-ue|0,s[J+4>>2]=f>>31&f,f=s[J+8>>2],(f|0)>126))break s;f=f+1|0;break o}if(s[J+4>>2]=(ye|0)>(E^-1)?ye:0-E|0,f=s[J+8>>2],(f|0)<-127)break s;f=f-1|0}s[J+8>>2]=f}f=Xt+Ae(pt,(N^Be)-Be|0)|0;s:{if((f|0)>=(0-w|0)){if(N=s[k+72>>2],(w+N|0)>=(f|0))break s;f=Ae(s[k+80>>2],Ct^-1)+f|0;break s}f=Ae(pt,s[k+80>>2])+f|0,N=s[k+72>>2]}ke[s[k+6016>>2]+jn>>1]=(f&N)==(f|0)?f:(f|0)>=0?N:0;break a}E=w-N|0,ie=J+jn|0,be=s[k+76>>2],f=0;s:{o:{for(;;){if(J=f<<1,w=J+pt|0,Be=Re[w>>1]-ue|0,W=Be>>31,(be|0)<((W^Be)-W|0))break o;if(ke[w>>1]=ue,f=f+1|0,(E|0)==(f|0))break}if(w=E,(w|0)>=1<>2]<<2)+6936>>2])for(f=s[k+52>>2];;){W=f,f=f-1|0,s[k+52>>2]=f;u:{if((W|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-W,Ot(k),f=s[k+52>>2],(f|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}if(s[k+48>>2]=s[k+48>>2]|1<>2],ie=((W|0)>=30?30:W)+1|0,s[k+6008>>2]=ie,w=(-1<>2])+w|0,!((w|0)>=1<>2]))break}if(!w)break s;w=s[k+52>>2],f=w-1|0,s[k+52>>2]=f;u:{if((w|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-w,Ot(k),f=s[k+52>>2],(f|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}s[k+48>>2]=s[k+48>>2]|1<>1],ye=w,W=Re[J+ie>>1],be=ue-W|0,ie=be>>31,w=s[k+76>>2];o:{if((w|0)>=((ie^be)-ie|0)){W=s[k+80>>2],E=E-ue|0,w=(((E|0)>0?w:0-w|0)+E|0)/(w<<1|1)|0,w=(W&w>>31)+w|0,w=w-((w|0)>=((W+1|0)/2|0)?W:0)|0,$s(k,Pr,w),W=s[k+76>>2],ie=W<<1,E=ie|1,w=ue+Ae(E,w)|0;u:{if((w|0)>=(0-W|0)){if(E=s[k+72>>2],(W+E|0)>=(w|0))break u;w=Ae(s[k+80>>2],ie^-1)+w|0;break u}w=Ae(E,s[k+80>>2])+w|0,E=s[k+72>>2]}w=(w&E)==(w|0)?w:(w|0)>=0?E:0;break o}ie=s[k+80>>2],be=W>>>0>>0?-1:1,E=Ae(be,E-W|0),w=(((E|0)>0?w:0-w|0)+E|0)/(w<<1|1)|0,w=(ie&w>>31)+w|0,w=w-((w|0)>=((ie+1|0)/2|0)?ie:0)|0,$s(k,xr,w),ie=s[k+76>>2],J=ie<<1,E=J|1,w=W+Ae(w,Ae(be,E))|0;u:{if((w|0)>=(0-ie|0)){if(E=s[k+72>>2],(ie+E|0)>=(w|0))break u;w=Ae(s[k+80>>2],J^-1)+w|0;break u}w=Ae(E,s[k+80>>2])+w|0,E=s[k+72>>2]}w=(w&E)==(w|0)?w:(w|0)>=0?E:0}ke[ye>>1]=w,w=s[k+6008>>2],s[k+6008>>2]=((w|0)<=1?1:w)-1,E=f+1|0}ie=N+E|0,f=s[k+6012>>2]+(ie<<1)|0,be=Re[f>>1],W=Re[f-2>>1]}if(f=W,W=be,w=s[k+116>>2],N=ie,!(w>>>0>N>>>0))break}N=s[k+6012>>2],E=s[k+6008>>2],f=s[k+6016>>2]}if(s[ir>>2]=E,w=nn<<1,f=w+f|0,s[k+6016>>2]=f,N=w+N|0,s[k+6012>>2]=N,yn=yn+1|0,(yn|0)==(Lt|0))break}if(Ln=Ln+1|0,!(Ln>>>0>2]))break}break e}for(N=rt+2|0,W=N+(f<<1)|0,f=0;s[k+6016>>2]=W,s[k+6012>>2]=N,w=W,f&1&&(s[k+6016>>2]=N,s[k+6012>>2]=W,w=N),E=s[k+44>>2],Mr[s[s[E>>2]+12>>2]](E,w,s[k+116>>2],nn),f=f+1|0,f>>>0>2];);break e}Vn(5),_t()}Vn(5),_t()}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),Wt&&Gr(Wt),rt&&Gr(rt),In=Ee+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function gp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0;k=s[f+44>>2],s[f+44>>2]=w,k&&Mr[s[s[k>>2]+4>>2]](k),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,w=0,ye=In-32|0,In=ye,k=f,f=s[k+16>>2],N=s[k+28>>2],E=s[k+116>>2],s[ye+24>>2]=0,s[ye+16>>2]=0,s[ye+20>>2]=0;e:{t:{if(Lt=(N|0)!=1?1:f,Wt=E+4|0,E=Ae(Lt,Wt),f=E<<1,f){if((f|0)<0)break t;w=Gn(f),s[ye+16>>2]=w,N=f+w|0,s[ye+24>>2]=N,fr(w,0,f),s[ye+20>>2]=N}s[ye+8>>2]=0,s[ye>>2]=0,s[ye+4>>2]=0;n:{r:{i:{a:{if(Lt){if(Lt>>>0<1073741824)break a;Li(),_t()}if(s[k+8>>2])break i;f=0;break e}if(w=Lt<<2,f=Gn(w),s[ye>>2]=f,N=f+w|0,s[ye+8>>2]=N,fr(f,0,w),s[ye+4>>2]=N,!s[k+8>>2])break e;for(vn=k+5984|0,Ln=k+5996|0,jn=k+144|0,ir=E+1|0;;){w=s[ye+16>>2],N=w+ir|0,s[k+6016>>2]=N,w=w+1|0,s[k+6012>>2]=w;a:{if(!(cn&1)){w=N;break a}s[k+6016>>2]=w,s[k+6012>>2]=N}for(N=s[k+44>>2],Mr[s[s[N>>2]+12>>2]](N,w,s[k+116>>2],Wt),w=s[k+6012>>2],nn=0;;){if(yn=nn<<2,s[k+6008>>2]=s[yn+f>>2],f=s[k+116>>2]+w|0,oe[f|0]=de[f-1|0],oe[s[k+6016>>2]-1|0]=de[s[k+6012>>2]],w=s[k+116>>2],w)for(N=s[k+6012>>2],f=de[N-1|0],N=de[N|0],Be=0;;){E=s[k+6020>>2],W=Be+1|0,J=s[k+6012>>2],Ee=de[W+J|0],be=N-f|0,ie=s[k+6016>>2]+Be|0,ue=de[ie-1|0],Xt=f-ue|0,f=Ae(Ae(oe[E+(Ee-N|0)|0],9)+oe[be+E|0]|0,9)+oe[E+Xt|0]|0;a:{if(f){for(rt=f>>31,J=((f^rt)-rt<<4)+jn|0,E=s[J>>2],pt=s[J+12>>2],w=0;f=w,w>>>0<=15&&(w=f+1|0,(E|0)>pt<>2],w=s[k+76>>2],E=N>>>0>>0?-1:0,E=((s[J+8>>2]^rt)-rt|0)+((E^Xt)<0?N:ue+((be^E)>=0?be:0)|0)|0,ue=s[k+72>>2],Xt=(E|0)==(E&ue)?E:(E|0)>=0?ue:0,E=(de[ie|0]-Xt^rt)-rt|0,E=(((E|0)>0?w:0-w|0)+E|0)/(w<<1|1)|0,E=(Ct&E>>31)+E|0,ue=E-((E|0)>=((Ct+1|0)/2|0)?Ct:0)|0,w=ue^(f|w?0:(pt+(s[J+4>>2]<<1)|0)-1>>31),be=w>>30^w<<1,w=be>>f,ie=s[k+92>>2],E=ie-s[k+84>>2]|0;s:{if((w|0)>=(E-1|0)){f=s[k+52>>2];o:{u:{if((E|0)<=31){if(f=f-E|0,s[k+52>>2]=f,(f|0)>=0)break o;if(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)<0)break u;break o}w=f-31|0,s[k+52>>2]=w;l:{if((f|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break l;Ot(k),w=s[k+52>>2]}if(f=(s[k+84>>2]+(w-ie|0)|0)+31|0,s[k+52>>2]=f,(f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o}s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}E=s[k+48>>2]|1<>2]=E,w=s[k+84>>2],f=f-w|0,s[k+52>>2]=f,w=be-1&(-1<=0||(s[k+48>>2]=E|w>>>0-f,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|w>>>0-f,Ot(k),f=s[k+52>>2]}f=w<=31){E=w>>>1|0,ie=s[k+52>>2]-E|0,s[k+52>>2]=ie;o:{if((ie|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}w=w-E|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;o:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}E=w-f|0,s[k+52>>2]=E,w=s[k+48>>2]|1<>2]=w,f=be&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],w=s[k+96>>2],be=s[k+76>>2],f=ue>>31,ie=s[J>>2]+((f^ue)-f|0)|0,s[J>>2]=ie,Ct=be<<1,pt=Ct|1,f=s[J+4>>2]+Ae(pt,ue)|0,s[J+4>>2]=f,(ie|0)>16777215||(E=f>>31,(E^f)-E>>>0>16777215))break n;E=s[J+12>>2],(w|0)==(E|0)&&(s[J>>2]=ie>>1,f=f>>1,s[J+4>>2]=f,E=w>>1),w=E+1|0,s[J+12>>2]=w,ie=f+w|0;s:{o:{if((ie|0)>0){if((f|0)<=0||(f=f-w|0,s[J+4>>2]=f>>31&f,f=s[J+8>>2],(f|0)>126))break s;f=f+1|0;break o}if(s[J+4>>2]=(ie|0)>(E^-1)?ie:0-E|0,f=s[J+8>>2],(f|0)<-127)break s;f=f-1|0}s[J+8>>2]=f}f=Xt+Ae(pt,(ue^rt)-rt|0)|0;s:{if((f|0)>=(0-be|0)){if(w=s[k+72>>2],(be+w|0)>=(f|0))break s;f=Ae(s[k+80>>2],Ct^-1)+f|0;break s}f=Ae(pt,s[k+80>>2])+f|0,w=s[k+72>>2]}oe[s[k+6016>>2]+Be|0]=(f&w)==(f|0)?f:(f|0)>=0?w:0;break a}W=J+Be|0,E=w-Be|0,f=0;s:{o:{for(;;){if(w=f+ie|0,Ee=de[w|0]-ue|0,N=Ee>>31,s[k+76>>2]<((N^Ee)-N|0))break o;if(oe[w|0]=ue,f=f+1|0,(E|0)==(f|0))break}if(w=E,(w|0)>=1<>2]<<2)+6936>>2])for(f=s[k+52>>2];;){N=f,f=f-1|0,s[k+52>>2]=f;u:{if((N|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-N,Ot(k),f=s[k+52>>2],(f|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}if(s[k+48>>2]=s[k+48>>2]|1<>2],W=((N|0)>=30?30:N)+1|0,s[k+6008>>2]=W,w=(-1<>2])+w|0,!((w|0)>=1<>2]))break}if(!w)break s;w=s[k+52>>2],f=w-1|0,s[k+52>>2]=f;u:{if((w|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-w,Ot(k),f=s[k+52>>2],(f|0)>=0))break u;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}s[k+48>>2]=s[k+48>>2]|1<>31,w=s[k+76>>2];o:{if((w|0)>=((W^Ee)-W|0)){N=s[k+80>>2],E=E-ue|0,w=(((E|0)>0?w:0-w|0)+E|0)/(w<<1|1)|0,w=(N&w>>31)+w|0,w=w-((w|0)>=((N+1|0)/2|0)?N:0)|0,$s(k,Ln,w),N=s[k+76>>2],W=N<<1,E=W|1,w=ue+Ae(E,w)|0;u:{if((w|0)>=(0-N|0)){if(E=s[k+72>>2],(N+E|0)>=(w|0))break u;w=Ae(s[k+80>>2],W^-1)+w|0;break u}w=Ae(E,s[k+80>>2])+w|0,E=s[k+72>>2]}w=(w&E)==(w|0)?w:(w|0)>=0?E:0;break o}W=s[k+80>>2],Ee=N>>>0>>0?-1:1,E=Ae(Ee,E-N|0),w=(((E|0)>0?w:0-w|0)+E|0)/(w<<1|1)|0,w=(W&w>>31)+w|0,w=w-((w|0)>=((W+1|0)/2|0)?W:0)|0,$s(k,vn,w),W=s[k+76>>2],J=W<<1,E=J|1,w=N+Ae(w,Ae(Ee,E))|0;u:{if((w|0)>=(0-W|0)){if(E=s[k+72>>2],(W+E|0)>=(w|0))break u;w=Ae(s[k+80>>2],J^-1)+w|0;break u}w=Ae(E,s[k+80>>2])+w|0,E=s[k+72>>2]}w=(w&E)==(w|0)?w:(w|0)>=0?E:0}oe[ie|0]=w,w=s[k+6008>>2],s[k+6008>>2]=((w|0)<=1?1:w)-1,E=f+1|0}W=E+Be|0,f=W+s[k+6012>>2]|0,Ee=de[f|0],N=de[f-1|0]}if(f=N,N=Ee,w=s[k+116>>2],Be=W,!(w>>>0>W>>>0))break}if(f=s[ye>>2],s[yn+f>>2]=s[k+6008>>2],w=s[k+6012>>2]+Wt|0,s[k+6012>>2]=w,s[k+6016>>2]=s[k+6016>>2]+Wt,nn=nn+1|0,(nn|0)==(Lt|0))break}if(cn=cn+1|0,!(cn>>>0>2]))break}break e}for(N=w+1|0,E=E+N|0,f=0;s[k+6016>>2]=E,s[k+6012>>2]=N,w=E,f&1&&(s[k+6016>>2]=N,s[k+6012>>2]=E,w=N),Be=s[k+44>>2],Mr[s[s[Be>>2]+12>>2]](Be,w,s[k+116>>2],Wt),f=f+1|0,f>>>0>2];);f=0;break e}Vn(5),_t()}Vn(5),_t()}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(w=s[k+52>>2],w=w-((w-1|0)%8|0)|0,s[k+52>>2]=w,(w|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),f&&Gr(f),f=s[ye+16>>2],f&&Gr(f),In=ye+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function g4(f,w,N,k,E,W){f=f|0,w=+w,N=N|0,k=k|0,E=E|0,W=W|0;var J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0;Be=In-560|0,In=Be,s[Be+44>>2]=0,kn(+w),J=at(1)|0,at(0)|0;e:{if((J|0)<0){Xt=1,Ln=1126,w=-w,kn(+w),J=at(1)|0,at(0)|0;break e}if(E&2048){Xt=1,Ln=1129;break e}Xt=E&1,Ln=Xt?1132:1127,jn=!Xt}e:{if((J&2146435072)==2146435072){J=Xt+3|0,Ca(f,32,N,J,E&-65537),Ps(f,Ln,Xt),k=W&32,Ps(f,w!=w?k?2525:4832:k?2812:4836,3),Ca(f,32,N,J,E^8192),rt=(N|0)<(J|0)?J:N;break e}cn=Be+16|0;t:{n:{r:{if(w=I4(w,Be+44|0),w=w+w,w!=0){if(J=s[Be+44>>2],s[Be+44>>2]=J-1,yn=W|32,(yn|0)!=97)break r;break t}if(yn=W|32,(yn|0)==97)break t;Ee=s[Be+44>>2],be=(k|0)<0?6:k;break n}Ee=J-29|0,s[Be+44>>2]=Ee,w=w*268435456,be=(k|0)<0?6:k}for(Lt=(Be+48|0)+((Ee|0)>=0?288:0)|0,ie=Lt;w<4294967296&w>=0?k=~~w>>>0:k=0,s[ie>>2]=k,ie=ie+4|0,w=(w-+(k>>>0))*1e9,w!=0;);n:{if((Ee|0)<=0){k=Ee,J=ie,ue=Lt;break n}for(ue=Lt,k=Ee;;){pt=(k|0)>=29?29:k,J=ie-4|0;r:{if(ue>>>0>J>>>0)break r;for(k=0;ye=s[J>>2],vn=k,k=pt&31,(pt&63)>>>0>=32?(rt=ye<>>32-k,k=ye<>>0>vn>>>0?ye+1|0:ye,1e9),ir=J,kr=vn-Q2(k,Ce,1e9,0)|0,s[ir>>2]=kr,J=J-4|0,ue>>>0<=J>>>0;);if(!k)break r;ue=ue-4|0,s[ue>>2]=k}for(;J=ie,ue>>>0>>0&&(ie=J-4|0,!s[ie>>2]););if(k=s[Be+44>>2]-pt|0,s[Be+44>>2]=k,ie=J,!((k|0)>0))break}}if((k|0)<0)for(nn=((be+25>>>0)/9|0)+1|0,Ct=(yn|0)==102;;){k=0-k|0,rt=(k|0)>=9?9:k;n:{if(J>>>0<=ue>>>0){ie=s[ue>>2];break n}for(pt=1e9>>>rt|0,ye=-1<>2],s[ie>>2]=vn+(k>>>rt|0),k=Ae(pt,k&ye),ie=ie+4|0,ie>>>0>>0;);if(ie=s[ue>>2],!k)break n;s[J>>2]=k,J=J+4|0}if(k=rt+s[Be+44>>2]|0,s[Be+44>>2]=k,ue=(!ie<<2)+ue|0,ie=Ct?Lt:ue,J=J-ie>>2>(nn|0)?ie+(nn<<2)|0:J,!((k|0)<0))break}k=0;n:{if(J>>>0<=ue>>>0||(k=Ae(Lt-ue>>2,9),ie=10,ye=s[ue>>2],ye>>>0<10))break n;for(;k=k+1|0,ie=Ae(ie,10),ye>>>0>=ie>>>0;);}if(ie=(be-((yn|0)!=102?k:0)|0)-((yn|0)==103&(be|0)!=0)|0,(ie|0)<(Ae(J-Lt>>2,9)-9|0)){if(pt=ie+9216|0,ye=(pt|0)/9|0,Ee=((((Ee|0)<0?4:292)+Be|0)+(ye<<2)|0)-4048|0,ie=10,rt=pt-Ae(ye,9)|0,(rt|0)<=7)for(;ie=Ae(ie,10),rt=rt+1|0,(rt|0)!=8;);pt=s[Ee>>2],nn=(pt>>>0)/(ie>>>0)|0,Ct=pt-Ae(ie,nn)|0,ye=Ee+4|0;n:{if(!Ct&(ye|0)==(J|0))break n;r:{if(!(nn&1)&&(w=9007199254740992,!(oe[Ee-4|0]&1)|((ie|0)!=1e9|ue>>>0>=Ee>>>0)))break r;w=9007199254740994}if(Wt=(J|0)==(ye|0)?1:1.5,ye=ie>>>1|0,Wt=ye>>>0>Ct>>>0?.5:(ye|0)==(Ct|0)?Wt:1.5,de[Ln|0]!=45|jn||(Wt=-Wt,w=-w),ye=pt-Ct|0,s[Ee>>2]=ye,w+Wt==w)break n;if(k=ie+ye|0,s[Ee>>2]=k,k>>>0>=1e9)for(;s[Ee>>2]=0,Ee=Ee-4|0,Ee>>>0>>0&&(ue=ue-4|0,s[ue>>2]=0),k=s[Ee>>2]+1|0,s[Ee>>2]=k,k>>>0>999999999;);if(k=Ae(Lt-ue>>2,9),ie=10,ye=s[ue>>2],ye>>>0<10)break n;for(;k=k+1|0,ie=Ae(ie,10),ye>>>0>=ie>>>0;);}ie=Ee+4|0,J=J>>>0>ie>>>0?ie:J}for(;ye=J,pt=J>>>0<=ue>>>0,!pt&&(J=ye-4|0,!s[J>>2]););n:{if((yn|0)!=103){Ee=E&8;break n}if(ie=be||1,J=(ie|0)>(k|0)&(k|0)>-5,be=(J?k^-1:-1)+ie|0,W=(J?-1:-2)+W|0,Ee=E&8,Ee)break n;J=-9;r:{if(pt||(Ee=s[ye-4>>2],!Ee)||(rt=10,J=0,(Ee>>>0)%10|0))break r;for(;ie=J,J=J+1|0,rt=Ae(rt,10),!((Ee>>>0)%(rt>>>0)|0););J=ie^-1}if(ie=Ae(ye-Lt>>2,9),(W&-33)==70){Ee=0,J=(J+ie|0)-9|0,J=(J|0)>0?J:0,be=(J|0)>(be|0)?be:J;break n}Ee=0,J=((k+ie|0)+J|0)-9|0,J=(J|0)>0?J:0,be=(J|0)>(be|0)?be:J}if(rt=-1,pt=Ee|be,((pt?2147483645:2147483646)|0)<(be|0))break e;Ct=(((pt|0)!=0)+be|0)+1|0,ie=W&-33;n:{if((ie|0)==70){if((Ct^2147483647)<(k|0))break e;J=(k|0)>0?k:0;break n}if(J=k>>31,J=Mc((J^k)-J|0,0,cn),(cn-J|0)<=1)for(;J=J-1|0,oe[J|0]=48,(cn-J|0)<2;);if(nn=J-2|0,oe[nn|0]=W,oe[J-1|0]=(k|0)<0?45:43,J=cn-nn|0,(J|0)>(Ct^2147483647))break e}if(k=J+Ct|0,(k|0)>(Xt^2147483647))break e;Ct=k+Xt|0,Ca(f,32,N,Ct,E),Ps(f,Ln,Xt),Ca(f,48,N,Ct,E^65536);n:{r:{i:{if((ie|0)==70){for(W=Be+16|0,k=W|8,Ee=W|9,ie=ue>>>0>Lt>>>0?Lt:ue,ue=ie;;){J=Mc(s[ue>>2],0,Ee);a:{if((ie|0)!=(ue|0)){if(Be+16>>>0>=J>>>0)break a;for(;J=J-1|0,oe[J|0]=48,Be+16>>>0>>0;);break a}if((J|0)!=(Ee|0))break a;oe[Be+24|0]=48,J=k}if(Ps(f,J,Ee-J|0),ue=ue+4|0,!(Lt>>>0>=ue>>>0))break}if(pt&&Ps(f,5461,1),(be|0)<=0|ue>>>0>=ye>>>0)break i;for(;;){if(J=Mc(s[ue>>2],0,Ee),J>>>0>Be+16>>>0)for(;J=J-1|0,oe[J|0]=48,Be+16>>>0>>0;);if(Ps(f,J,(be|0)>=9?9:be),J=be-9|0,ue=ue+4|0,ye>>>0<=ue>>>0)break r;if(k=(be|0)>9,be=J,!k)break}break r}a:{if((be|0)<0)break a;for(Lt=ue>>>0>>0?ye:ue+4|0,W=Be+16|0,k=W|8,ye=W|9,ie=ue;;){J=Mc(s[ie>>2],0,ye),(ye|0)==(J|0)&&(oe[Be+24|0]=48,J=k);s:{if((ie|0)!=(ue|0)){if(Be+16>>>0>=J>>>0)break s;for(;J=J-1|0,oe[J|0]=48,Be+16>>>0>>0;);break s}if(Ps(f,J,1),J=J+1|0,!(Ee|be))break s;Ps(f,5461,1)}if(W=ye-J|0,Ps(f,J,(W|0)>(be|0)?be:W),be=be-W|0,ie=ie+4|0,Lt>>>0<=ie>>>0)break a;if(!((be|0)>=0))break}}Ca(f,48,be+18|0,18,0),Ps(f,nn,cn-nn|0);break n}J=be}Ca(f,48,J+9|0,9,0)}Ca(f,32,N,Ct,E^8192),rt=(N|0)<(Ct|0)?Ct:N;break e}Ee=(W<<26>>31&9)+Ln|0;t:{if(k>>>0>11)break t;for(J=12-k|0,Wt=16;Wt=Wt*16,J=J-1|0,!!J;);if(de[Ee|0]==45){w=-(Wt+(-w-Wt));break t}w=w+Wt-Wt}for(J=s[Be+44>>2],ie=J>>31,J=Mc((J^ie)-ie|0,0,cn),(cn|0)==(J|0)&&(oe[Be+15|0]=48,J=Be+15|0),Lt=Xt|2,ue=W&32,ie=s[Be+44>>2],be=J-2|0,oe[be|0]=W+15,oe[J-1|0]=(ie|0)<0?45:43,J=E&8,ie=Be+16|0;W=ie,Qe(w)<2147483648?ye=~~w:ye=-2147483648,oe[ie|0]=ue|de[ye+13392|0],w=(w-+(ye|0))*16,ie=W+1|0,!((k|0)>0|J)&w==0|(ie-(Be+16|0)|0)!=1||(oe[W+1|0]=46,ie=W+2|0),w!=0;);if(rt=-1,J=cn-be|0,W=J+Lt|0,(2147483645-W|0)<(k|0))break e;t:{n:{if(!k||(ue=ie-(Be+16|0)|0,(ue-2|0)>=(k|0)))break n;k=k+2|0;break t}ue=ie-(Be+16|0)|0,k=ue}W=k+W|0,Ca(f,32,N,W,E),Ps(f,Ee,Lt),Ca(f,48,N,W,E^65536),Ps(f,Be+16|0,ue),Ca(f,48,k-ue|0,0,0),Ps(f,be,J),Ca(f,32,N,W,E^8192),rt=(N|0)<(W|0)?W:N}return In=Be+560|0,rt|0}function p4(f,w,N,k){var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0;ye=4039,J=In-80|0,In=J,s[J+76>>2]=4039,vn=J+55|0,Lt=J+56|0;e:{t:{n:{r:{i:for(;;){if(ie=ye,(rt^2147483647)<(E|0))break r;rt=E+rt|0;a:{s:{o:{if(E=ie,W=de[E|0],W)for(;;){u:{ye=W&255;l:{if(!ye){ye=E;break l}if((ye|0)!=37)break u;for(W=E;;){if(de[W+1|0]!=37){ye=W;break l}if(E=E+1|0,Ee=de[W+2|0],ye=W+2|0,W=ye,(Ee|0)!=37)break}}if(E=E-ie|0,yn=rt^2147483647,(E|0)>(yn|0))break r;if(f&&Ps(f,ie,E),E)continue i;s[J+76>>2]=ye,E=ye+1|0,pt=-1,de[ye+2|0]!=36|oe[ye+1|0]-48>>>0>=10||(pt=oe[ye+1|0]-48|0,Wt=1,E=ye+3|0),s[J+76>>2]=E,be=0,W=oe[E|0],ye=W-32|0;l:{if(ye>>>0>31){Ee=E;break l}if(Ee=E,ye=1<>2]=Ee,be=ye|be,W=oe[E+1|0],ye=W-32|0,ye>>>0>=32)break l;if(E=Ee,ye=1<>>0>=10)){s[((oe[Ee+1|0]<<2)+k|0)-192>>2]=10,W=Ee+3|0,Wt=1,E=s[((oe[Ee+1|0]<<3)+N|0)-384>>2];break h}if(Wt)break o;if(W=Ee+1|0,!f){s[J+76>>2]=W,Wt=0,Ct=0;break l}E=s[w>>2],s[w>>2]=E+4,Wt=0,E=s[E>>2]}if(Ct=E,s[J+76>>2]=W,(Ct|0)>=0)break l;Ct=0-Ct|0,be=be|8192;break l}if(Ct=Mp(J+76|0),(Ct|0)<0)break r;W=s[J+76>>2]}E=0,ue=-1;l:{if(de[W|0]!=46){ye=W,cn=0;break l}if(de[W+1|0]==42){h:{if(!(de[W+3|0]!=36|oe[W+2|0]-48>>>0>=10)){s[((oe[W+2|0]<<2)+k|0)-192>>2]=10,ye=W+4|0,ue=s[((oe[W+2|0]<<3)+N|0)-384>>2];break h}if(Wt)break o;if(ye=W+2|0,ue=0,!f)break h;W=s[w>>2],s[w>>2]=W+4,ue=s[W>>2]}s[J+76>>2]=ye,cn=(ue^-1)>>>31|0;break l}s[J+76>>2]=W+1,ue=Mp(J+76|0),ye=s[J+76>>2],cn=1}for(;;){if(Be=E,Ee=28,Xt=ye,E=oe[ye|0],E-123>>>0<4294967238)break n;if(ye=Xt+1|0,E=de[(E+Ae(Be,58)|0)+12863|0],!(E-1>>>0<8))break}s[J+76>>2]=ye;l:{h:{if((E|0)!=27){if(!E)break n;if((pt|0)>=0){s[(pt<<2)+k>>2]=E,E=(pt<<3)+N|0,W=s[E+4>>2],s[J+64>>2]=s[E>>2],s[J+68>>2]=W;break h}if(!f)break a;x4(J- -64|0,E,w);break l}if((pt|0)>=0)break n}if(E=0,!f)continue i}W=be&-65537,be=be&8192?W:be,pt=0,nn=1116,Ee=Lt;l:{h:{f:{p:{c:{m:{g:{d:{v:{k:{y:{w:{C:{_:{x:{S:switch(E=oe[Xt|0],E=Be&&(E&15)==3?E&-33:E,E-88|0){case 11:break l;case 9:case 13:case 14:case 15:break h;case 27:break g;case 12:case 17:break k;case 23:break y;case 0:case 32:break w;case 24:break C;case 22:break _;case 29:break x;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break s;default:break S}S:switch(E-65|0){case 0:case 4:case 5:case 6:break h;case 2:break c;case 1:case 3:break s;default:break S}if((E|0)==83)break m;break s}W=s[J+64>>2],Be=s[J+68>>2],nn=1116;break v}E=0;_:switch(Be&255){case 0:s[s[J+64>>2]>>2]=rt;continue i;case 1:s[s[J+64>>2]>>2]=rt;continue i;case 2:ie=s[J+64>>2],s[ie>>2]=rt,s[ie+4>>2]=rt>>31;continue i;case 3:ke[s[J+64>>2]>>1]=rt;continue i;case 4:oe[s[J+64>>2]]=rt;continue i;case 6:s[s[J+64>>2]>>2]=rt;continue i;case 7:break _;default:continue i}ie=s[J+64>>2],s[ie>>2]=rt,s[ie+4>>2]=rt>>31;continue i}ue=ue>>>0<=8?8:ue,be=be|8,E=120}if(ie=Lt,Xt=E&32,W=s[J+64>>2],Be=s[J+68>>2],W|Be)for(;ie=ie-1|0,oe[ie|0]=Xt|de[(W&15)+13392|0],Ln=!Be&W>>>0>15|(Be|0)!=0,W=(Be&15)<<28|W>>>4,Be=Be>>>4|0,!!Ln;);if(!(s[J+64>>2]|s[J+68>>2])|!(be&8))break d;nn=(E>>>4|0)+1116|0,pt=2;break d}if(E=Lt,ie=s[J+68>>2],Be=ie,W=s[J+64>>2],ie|W)for(;E=E-1|0,oe[E|0]=W&7|48,Xt=!Be&W>>>0>7|(Be|0)!=0,W=(Be&7)<<29|W>>>3,Be=Be>>>3|0,!!Xt;);if(ie=E,!(be&8))break d;E=Lt-ie|0,ue=(E|0)<(ue|0)?ue:E+1|0;break d}if(W=s[J+64>>2],E=s[J+68>>2],Be=E,(E|0)<0){ie=0-(Be+((W|0)!=0)|0)|0,Be=ie,W=0-W|0,s[J+64>>2]=W,s[J+68>>2]=ie,pt=1,nn=1116;break v}if(be&2048){pt=1,nn=1117;break v}pt=be&1,nn=pt?1118:1116}ie=Mc(W,Be,Lt)}if((ue|0)<0&&cn)break r;if(be=cn?be&-65537:be,E=s[J+64>>2],W=s[J+68>>2],!(ue|(E|W)!=0)){ie=Lt,ue=0;break s}E=!(E|W)+(Lt-ie|0)|0,ue=(E|0)<(ue|0)?ue:E;break s}if(E=s[J+64>>2],ie=E||5463,E=ue>>>0>=2147483647?2147483647:ue,Ee=wi(ie,0,E),E=Ee?Ee-ie|0:E,Ee=E+ie|0,(ue|0)>=0){be=W,ue=E;break s}if(be=W,ue=E,de[Ee|0])break r;break s}if(ue){W=s[J+64>>2];break p}E=0,Ca(f,32,Ct,0,be);break f}s[J+12>>2]=0,s[J+8>>2]=s[J+64>>2],W=J+8|0,s[J+64>>2]=W,ue=-1}E=0;p:{for(;;){if(ie=s[W>>2],!ie)break p;if(ie=js(J+4|0,ie),Ee=(ie|0)<0,!(Ee|ie>>>0>ue-E>>>0)){if(W=W+4|0,E=E+ie|0,ue>>>0>E>>>0)continue;break p}break}if(Ee)break t}if(Ee=61,(E|0)<0)break n;if(Ca(f,32,Ct,E,be),!E){E=0;break f}for(Ee=0,W=s[J+64>>2];;){if(ie=s[W>>2],!ie||(ie=js(J+4|0,ie),Ee=ie+Ee|0,Ee>>>0>E>>>0))break f;if(Ps(f,J+4|0,ie),W=W+4|0,!(E>>>0>Ee>>>0))break}}Ca(f,32,Ct,E,be^8192),E=(E|0)<(Ct|0)?Ct:E;continue i}if((ue|0)<0&&cn)break r;if(Ee=61,E=g4(f,Qt[J+64>>3],Ct,ue,be,E),(E|0)>=0)continue i;break n}oe[J+55|0]=s[J+64>>2],ue=1,ie=vn,be=W;break s}W=de[E+1|0],E=E+1|0}if(f)break e;if(!Wt)break a;for(E=1;;){if(f=s[(E<<2)+k>>2],f){if(x4((E<<3)+N|0,f,w),rt=1,E=E+1|0,(E|0)!=10)continue;break e}break}if(rt=1,E>>>0>=10)break e;for(;;){if(s[(E<<2)+k>>2])break o;if(E=E+1|0,(E|0)==10)break}break e}Ee=28;break n}if(Be=Ee-ie|0,ue=(ue|0)>(Be|0)?ue:Be,(ue|0)>(pt^2147483647))break r;if(Ee=61,W=ue+pt|0,E=(W|0)<(Ct|0)?Ct:W,(yn|0)<(E|0))break n;Ca(f,32,E,W,be),Ps(f,nn,pt),Ca(f,48,E,W,be^65536),Ca(f,48,ue,Be,0),Ps(f,ie,Be),Ca(f,32,E,W,be^8192);continue}break}rt=0;break e}Ee=61}s[12164]=Ee}rt=-1}return In=J+80|0,rt}function h5(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0;W=s[f+44>>2],s[f+44>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,ue=In-32|0,In=ue,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+92>>2],s[ue+24>>2]=0,s[ue+16>>2]=0,s[ue+20>>2]=0;e:{t:{if(Lt=(w|0)!=1?1:f,nn=N+4|0,f=Ae(Lt,nn),w=f<<1,w){if((w|0)<0)break t;N=f<<2,Be=Gn(N),s[ue+16>>2]=Be,s[ue+24>>2]=(w<<1)+Be,Nr=ue,Wr=fr(Be,0,N)+N|0,s[Nr+20>>2]=Wr}s[ue+8>>2]=0,s[ue>>2]=0,s[ue+4>>2]=0;n:{r:{i:{a:{if(Lt){if(Lt>>>0<1073741824)break a;Li(),_t()}if(s[k+8>>2])break i;break e}if(w=Lt<<2,Wt=Gn(w),s[ue>>2]=Wt,N=w+Wt|0,s[ue+8>>2]=N,kr=fr(Wt,0,w),s[ue+4>>2]=N,!s[k+8>>2])break e;for(cn=Be+2|0,vn=cn+(f<<1)|0,xr=k+5972|0,Pr=k+5960|0,Br=k+120|0;;){for(s[k+5992>>2]=vn,s[k+5988>>2]=cn,f=vn,Ln&1&&(s[k+5992>>2]=cn,s[k+5988>>2]=vn,f=cn),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+92>>2],nn),f=s[k+5992>>2],N=s[k+5988>>2],yn=0;;){if(ir=(yn<<2)+kr|0,E=s[ir>>2],s[k+5984>>2]=E,w=s[k+92>>2],W=(w<<1)+N|0,ke[W>>1]=Re[W-2>>1],ke[f-2>>1]=Re[N>>1],w){for(f=Re[N-2>>1],W=Re[N>>1],N=0;;){J=s[k+5996>>2],ye=s[k+5988>>2],ie=N+1|0,rt=Re[ye+(ie<<1)>>1],pt=W-f|0,jn=N<<1,Ct=jn+s[k+5992>>2]|0,E=Re[Ct-2>>1],Xt=f-E|0,be=Ae(Ae(oe[J+(rt-W|0)|0],9)+oe[pt+J|0]|0,9)+oe[J+Xt|0]|0;a:{if(be){for(ye=be>>31,J=((ye^be)-ye<<4)+Br|0,Ee=s[J>>2],w=s[J+12>>2],N=0;f=N,f>>>0<=15&&(N=f+1|0,(Ee|0)>w<>2]<<1)|0)-1>>31,N=Re[Ct>>1],Ct=be>>>31|0,w=E>>>0>W>>>0?-1:0,w=(Ct+((w^Xt)<0?W:E+((w^pt)>=0?pt:0)|0)|0)+(ye^s[J+8>>2])|0,w=(w|0)>0?w:0,pt=(w|0)>=4095?4095:w,Xt=(ye^N-pt)-ye|0,N=Xt<<20>>20,w=Ee^N,be=w>>30^w<<1,w=be>>f;s:{if((w|0)>=35){f=s[k+52>>2],w=f-31|0,s[k+52>>2]=w;o:{if((f|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break o;Ot(k),w=s[k+52>>2]}f=w-5|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>5-w,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-12|0,s[k+52>>2]=w,Ee=s[k+48>>2]|1<>2]=Ee,E=be-1&4095;o:{if((f|0)>11||(s[k+48>>2]=Ee|E>>>12-f,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|E>>>0-w,Ot(k),w=s[k+52>>2]}f=E<=31){E=w>>>1|0,Ee=s[k+52>>2]-E|0,s[k+52>>2]=Ee;o:{if((Ee|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}w=w-E|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;o:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}E=w-f|0,s[k+52>>2]=E,w=s[k+48>>2]|1<>2]=w,f=be&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],f=N>>31,w=s[J>>2]+((f^N)-f|0)|0,s[J>>2]=w,f=N+s[J+4>>2]|0,s[J+4>>2]=f,(w|0)>16777215||(N=f>>31,(N^f)-N>>>0>16777215))break n;N=s[J+12>>2],(N|0)==64&&(s[J>>2]=w>>1,f=f>>1,s[J+4>>2]=f,N=32),w=N+1|0,s[J+12>>2]=w,E=f+w|0;s:{o:{if((E|0)>0){if((f|0)<=0||(f=f-w|0,s[J+4>>2]=f>>31&f,f=s[J+8>>2],(f|0)>126))break s;f=f+1|0;break o}if(s[J+4>>2]=(E|0)>(N^-1)?E:0-N|0,f=s[J+8>>2],(f|0)<-127)break s;f=f-1|0}s[J+8>>2]=f}ke[s[k+5992>>2]+jn>>1]=(pt+Ct|0)+(ye^Xt)&4095;break a}w=w-N|0,ie=ye+jn|0,f=0;s:{for(;;){if(rt=f<<1,W=rt+Ct|0,(E|0)!=Re[W>>1]){if(J=(f|0)==(w|0),gu(k,f,J),J)break s;w=Re[ie+rt>>1],ie=Re[W>>1]-w|0;o:{if((w|0)!=(E|0)){E=w>>>0>>0?-1:1,ie=Ae(E,ie),v4(k,Pr,ie<<20>>20),E=Ae(E,ie);break o}E=ie<<20>>20,v4(k,xr,E)}ke[W>>1]=w+E&4095,w=s[k+5984>>2],s[k+5984>>2]=((w|0)<=1?1:w)-1,w=f+1|0;break s}if(ke[W>>1]=E,f=f+1|0,(w|0)==(f|0))break}if(E=w,1<>2]<<2)+6936>>2]<=(w|0))for(f=s[k+52>>2];;){W=f,f=f-1|0,s[k+52>>2]=f;o:{if((W|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-W,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}if(s[k+48>>2]=s[k+48>>2]|1<>2],ie=((W|0)>=30?30:W)+1|0,s[k+5984>>2]=ie,E=(-1<>2])+E|0,!((E|0)>=1<>2]))break}if(!E)break s;W=s[k+52>>2],f=W-1|0,s[k+52>>2]=f;o:{if((W|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-W,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}s[k+48>>2]=s[k+48>>2]|1<>2]+(ie<<1)|0,rt=Re[f>>1],W=Re[f-2>>1]}if(f=W,W=rt,w=s[k+92>>2],N=ie,!(w>>>0>N>>>0))break}N=s[k+5988>>2],E=s[k+5984>>2],f=s[k+5992>>2]}if(s[ir>>2]=E,w=nn<<1,f=w+f|0,s[k+5992>>2]=f,N=w+N|0,s[k+5988>>2]=N,yn=yn+1|0,(yn|0)==(Lt|0))break}if(Ln=Ln+1|0,!(Ln>>>0>2]))break}break e}for(N=Be+2|0,W=N+(f<<1)|0,f=0;s[k+5992>>2]=W,s[k+5988>>2]=N,w=W,f&1&&(s[k+5992>>2]=N,s[k+5988>>2]=W,w=N),E=s[k+44>>2],Mr[s[s[E>>2]+12>>2]](E,w,s[k+92>>2],nn),f=f+1|0,f>>>0>2];);break e}Vn(5),_t()}Vn(5),_t()}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),Wt&&Gr(Wt),Be&&Gr(Be),In=ue+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function Nt(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0,xr=0,Pr=0,Br=0,Nr=0,Wr=0;W=s[f+44>>2],s[f+44>>2]=w,W&&Mr[s[s[W>>2]+4>>2]](W),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,ue=In-32|0,In=ue,k=f,f=s[k+16>>2],w=s[k+28>>2],N=s[k+92>>2],s[ue+24>>2]=0,s[ue+16>>2]=0,s[ue+20>>2]=0;e:{t:{if(Lt=(w|0)!=1?1:f,nn=N+4|0,f=Ae(Lt,nn),w=f<<1,w){if((w|0)<0)break t;N=f<<2,Be=Gn(N),s[ue+16>>2]=Be,s[ue+24>>2]=(w<<1)+Be,Nr=ue,Wr=fr(Be,0,N)+N|0,s[Nr+20>>2]=Wr}s[ue+8>>2]=0,s[ue>>2]=0,s[ue+4>>2]=0;n:{r:{i:{a:{if(Lt){if(Lt>>>0<1073741824)break a;Li(),_t()}if(s[k+8>>2])break i;break e}if(w=Lt<<2,Wt=Gn(w),s[ue>>2]=Wt,N=w+Wt|0,s[ue+8>>2]=N,kr=fr(Wt,0,w),s[ue+4>>2]=N,!s[k+8>>2])break e;for(cn=Be+2|0,vn=cn+(f<<1)|0,xr=k+5972|0,Pr=k+5960|0,Br=k+120|0;;){for(s[k+5992>>2]=vn,s[k+5988>>2]=cn,f=vn,Ln&1&&(s[k+5992>>2]=cn,s[k+5988>>2]=vn,f=cn),w=s[k+44>>2],Mr[s[s[w>>2]+12>>2]](w,f,s[k+92>>2],nn),f=s[k+5992>>2],N=s[k+5988>>2],yn=0;;){if(ir=(yn<<2)+kr|0,E=s[ir>>2],s[k+5984>>2]=E,w=s[k+92>>2],W=(w<<1)+N|0,ke[W>>1]=Re[W-2>>1],ke[f-2>>1]=Re[N>>1],w){for(f=Re[N-2>>1],W=Re[N>>1],N=0;;){J=s[k+5996>>2],ye=s[k+5988>>2],ie=N+1|0,rt=Re[ye+(ie<<1)>>1],pt=W-f|0,jn=N<<1,Ct=jn+s[k+5992>>2]|0,E=Re[Ct-2>>1],Xt=f-E|0,be=Ae(Ae(oe[J+(rt-W|0)|0],9)+oe[pt+J|0]|0,9)+oe[J+Xt|0]|0;a:{if(be){for(ye=be>>31,J=((ye^be)-ye<<4)+Br|0,Ee=s[J>>2],w=s[J+12>>2],N=0;f=N,f>>>0<=15&&(N=f+1|0,(Ee|0)>w<>2]<<1)|0)-1>>31,N=Re[Ct>>1],Ct=be>>>31|0,w=E>>>0>W>>>0?-1:0,w=(Ct+((w^Xt)<0?W:E+((w^pt)>=0?pt:0)|0)|0)+(ye^s[J+8>>2])|0,w=(w|0)>0?w:0,pt=(w|0)>=65535?65535:w,Xt=(ye^N-pt)-ye|0,N=Xt<<16>>16,w=Ee^N,be=w>>30^w<<1,w=be>>f;s:{if((w|0)>=47){f=s[k+52>>2],w=f-31|0,s[k+52>>2]=w;o:{if((f|0)>30||(Ot(k),w=s[k+52>>2],(w|0)>=0))break o;Ot(k),w=s[k+52>>2]}f=w-17|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>17-w,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-16|0,s[k+52>>2]=w,Ee=s[k+48>>2]|1<>2]=Ee,E=be-1&65535;o:{if((f|0)>15||(s[k+48>>2]=Ee|E>>>16-f,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|E>>>0-w,Ot(k),w=s[k+52>>2]}f=E<=31){E=w>>>1|0,Ee=s[k+52>>2]-E|0,s[k+52>>2]=Ee;o:{if((Ee|0)>=0||(Ot(k),s[k+52>>2]>=0))break o;Ot(k)}w=w-E|0}w=s[k+52>>2]+(w^-1)|0,s[k+52>>2]=w;o:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}E=w-f|0,s[k+52>>2]=E,w=s[k+48>>2]|1<>2]=w,f=be&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],f=N>>31,w=s[J>>2]+((f^N)-f|0)|0,s[J>>2]=w,f=N+s[J+4>>2]|0,s[J+4>>2]=f,(w|0)>16777215||(N=f>>31,(N^f)-N>>>0>16777215))break n;N=s[J+12>>2],(N|0)==64&&(s[J>>2]=w>>1,f=f>>1,s[J+4>>2]=f,N=32),w=N+1|0,s[J+12>>2]=w,E=f+w|0;s:{o:{if((E|0)>0){if((f|0)<=0||(f=f-w|0,s[J+4>>2]=f>>31&f,f=s[J+8>>2],(f|0)>126))break s;f=f+1|0;break o}if(s[J+4>>2]=(E|0)>(N^-1)?E:0-N|0,f=s[J+8>>2],(f|0)<-127)break s;f=f-1|0}s[J+8>>2]=f}ke[s[k+5992>>2]+jn>>1]=(pt+Ct|0)+(ye^Xt);break a}w=w-N|0,ie=ye+jn|0,f=0;s:{for(;;){if(rt=f<<1,W=rt+Ct|0,(E|0)!=Re[W>>1]){if(J=(f|0)==(w|0),gu(k,f,J),J)break s;w=Re[ie+rt>>1],ie=Re[W>>1]-w|0;o:{if((w|0)!=(E|0)){E=w>>>0>>0?-1:1,ie=Ae(E,ie),yp(k,Pr,ie<<16>>16),E=Ae(E,ie);break o}E=ie<<16>>16,yp(k,xr,E)}ke[W>>1]=w+E,w=s[k+5984>>2],s[k+5984>>2]=((w|0)<=1?1:w)-1,w=f+1|0;break s}if(ke[W>>1]=E,f=f+1|0,(w|0)==(f|0))break}if(E=w,1<>2]<<2)+6936>>2]<=(w|0))for(f=s[k+52>>2];;){W=f,f=f-1|0,s[k+52>>2]=f;o:{if((W|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-W,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}if(s[k+48>>2]=s[k+48>>2]|1<>2],ie=((W|0)>=30?30:W)+1|0,s[k+5984>>2]=ie,E=(-1<>2])+E|0,!((E|0)>=1<>2]))break}if(!E)break s;W=s[k+52>>2],f=W-1|0,s[k+52>>2]=f;o:{if((W|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-W,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}s[k+48>>2]=s[k+48>>2]|1<>2]+(ie<<1)|0,rt=Re[f>>1],W=Re[f-2>>1]}if(f=W,W=rt,w=s[k+92>>2],N=ie,!(w>>>0>N>>>0))break}N=s[k+5988>>2],E=s[k+5984>>2],f=s[k+5992>>2]}if(s[ir>>2]=E,w=nn<<1,f=w+f|0,s[k+5992>>2]=f,N=w+N|0,s[k+5988>>2]=N,yn=yn+1|0,(yn|0)==(Lt|0))break}if(Ln=Ln+1|0,!(Ln>>>0>2]))break}break e}for(N=Be+2|0,W=N+(f<<1)|0,f=0;s[k+5992>>2]=W,s[k+5988>>2]=N,w=W,f&1&&(s[k+5992>>2]=N,s[k+5988>>2]=W,w=N),E=s[k+44>>2],Mr[s[s[E>>2]+12>>2]](E,w,s[k+92>>2],nn),f=f+1|0,f>>>0>2];);break e}Vn(5),_t()}Vn(5),_t()}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(f=s[k+52>>2],f=f-((f-1|0)%8|0)|0,s[k+52>>2]=f,(f|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),Wt&&Gr(Wt),Be&&Gr(Be),In=ue+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function Vu(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0,Xt=0,nn=0,cn=0,yn=0,vn=0,Ln=0,jn=0,ir=0,kr=0;k=s[f+44>>2],s[f+44>>2]=w,k&&Mr[s[s[k>>2]+4>>2]](k),w=s[N+4>>2],s[f+60>>2]=s[N>>2],s[f+48>>2]=0,s[f+52>>2]=32,s[f+56>>2]=w,w=0,J=In-32|0,In=J,k=f,f=s[k+16>>2],N=s[k+28>>2],E=s[k+92>>2],s[J+24>>2]=0,s[J+16>>2]=0,s[J+20>>2]=0;e:{t:{if(Ct=(N|0)!=1?1:f,Lt=E+4|0,E=Ae(Ct,Lt),f=E<<1,f){if((f|0)<0)break t;w=Gn(f),s[J+16>>2]=w,N=f+w|0,s[J+24>>2]=N,fr(w,0,f),s[J+20>>2]=N}s[J+8>>2]=0,s[J>>2]=0,s[J+4>>2]=0;n:{r:{i:{a:{if(Ct){if(Ct>>>0<1073741824)break a;Li(),_t()}if(s[k+8>>2])break i;f=0;break e}if(w=Ct<<2,f=Gn(w),s[J>>2]=f,N=f+w|0,s[J+8>>2]=N,fr(f,0,w),s[J+4>>2]=N,!s[k+8>>2])break e;for(vn=k+5972|0,Ln=k+5960|0,jn=k+120|0,ir=E+1|0;;){w=s[J+16>>2],N=w+ir|0,s[k+5992>>2]=N,w=w+1|0,s[k+5988>>2]=w;a:{if(!(cn&1)){w=N;break a}s[k+5992>>2]=w,s[k+5988>>2]=N}for(N=s[k+44>>2],Mr[s[s[N>>2]+12>>2]](N,w,s[k+92>>2],Lt),w=s[k+5988>>2],nn=0;;){if(yn=nn<<2,s[k+5984>>2]=s[yn+f>>2],f=s[k+92>>2]+w|0,oe[f|0]=de[f-1|0],oe[s[k+5992>>2]-1|0]=de[s[k+5988>>2]],w=s[k+92>>2],w)for(N=s[k+5988>>2],f=de[N-1|0],N=de[N|0],ye=0;;){E=s[k+5996>>2],ie=ye+1|0,W=s[k+5988>>2],Be=de[ie+W|0],be=N-f|0,Ee=Ae(Ae(oe[E+(Be-N|0)|0],9)+oe[be+E|0]|0,9),ue=E,rt=s[k+5992>>2]+ye|0,E=de[rt-1|0],Wt=f-E|0,ue=Ee+oe[ue+Wt|0]|0;a:{if(ue){for(Ee=ue>>31,W=((Ee^ue)-Ee<<4)+jn|0,pt=s[W>>2],Xt=s[W+12>>2],w=0;f=w,f>>>0<=15&&(w=f+1|0,(pt|0)>Xt<>2]<<1)|0)-1>>31,kr=de[rt|0],rt=ue>>>31|0,w=N>>>0>>0?-1:0,w=(rt+((w^Wt)<0?N:E+((w^be)>=0?be:0)|0)|0)+(Ee^s[W+8>>2])|0,w=(w|0)>0?w:0,Xt=(w|0)>=255?255:w,Wt=(Ee^kr-Xt)-Ee|0,ue=Wt<<24>>24,w=pt^ue,be=w>>30^w<<1,w=be>>f;s:{if((w|0)>=23){w=s[k+52>>2],f=w-24|0,s[k+52>>2]=f;o:{if((f|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>24-w,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}w=f-8|0,s[k+52>>2]=w,pt=s[k+48>>2]|1<>2]=pt,E=be-1&255;o:{if((f|0)>7||(s[k+48>>2]=pt|E>>>8-f,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|E>>>0-w,Ot(k),w=s[k+52>>2]}f=E<>2]+(w^-1)|0,s[k+52>>2]=w;o:{if((w|0)>=0||(s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2],(w|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-w,Ot(k),w=s[k+52>>2]}E=w-f|0,s[k+52>>2]=E,w=s[k+48>>2]|1<>2]=w,f=be&(-1<=0||(s[k+48>>2]=w|f>>>0-E,Ot(k),E=s[k+52>>2],(E|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|f>>>0-E,Ot(k),E=s[k+52>>2]}f=f<>2]=f|s[k+48>>2],f=ue>>31,E=s[W>>2]+((f^ue)-f|0)|0,s[W>>2]=E,f=ue+s[W+4>>2]|0,s[W+4>>2]=f,(E|0)>16777215||(w=f>>31,(w^f)-w>>>0>16777215))break n;w=s[W+12>>2],(w|0)==64&&(s[W>>2]=E>>1,f=f>>1,s[W+4>>2]=f,w=32),E=w+1|0,s[W+12>>2]=E,ue=f+E|0;s:{o:{if((ue|0)>0){if((f|0)<=0||(f=f-E|0,s[W+4>>2]=f>>31&f,f=s[W+8>>2],(f|0)>126))break s;f=f+1|0;break o}if(s[W+4>>2]=(ue|0)>(w^-1)?ue:0-w|0,f=s[W+8>>2],(f|0)<-127)break s;f=f-1|0}s[W+8>>2]=f}oe[s[k+5992>>2]+ye|0]=(rt+Xt|0)+(Ee^Wt);break a}ie=W+ye|0,w=w-ye|0,f=0;s:{for(;;){if(N=f+rt|0,(E|0)!=de[N|0]){if(Be=(f|0)==(w|0),gu(k,f,Be),Be)break s;w=de[f+ie|0],ie=de[N|0]-w|0;o:{if((w|0)!=(E|0)){E=w>>>0>>0?-1:1,ie=Ae(ie,E),dl(k,Ln,ie<<24>>24),E=Ae(E,ie);break o}E=ie<<24>>24,dl(k,vn,E)}oe[N|0]=w+E,w=s[k+5984>>2],s[k+5984>>2]=((w|0)<=1?1:w)-1,w=f+1|0;break s}if(oe[N|0]=E,f=f+1|0,(w|0)==(f|0))break}if(E=w,1<>2]<<2)+6936>>2]<=(w|0))for(f=s[k+52>>2];;){N=f,f=f-1|0,s[k+52>>2]=f;o:{if((N|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-N,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}if(s[k+48>>2]=s[k+48>>2]|1<>2],ie=((N|0)>=30?30:N)+1|0,s[k+5984>>2]=ie,E=(-1<>2])+E|0,!((E|0)>=1<>2]))break}if(!E)break s;N=s[k+52>>2],f=N-1|0,s[k+52>>2]=f;o:{if((N|0)>0||(s[k+48>>2]=s[k+48>>2]|1>>>1-N,Ot(k),f=s[k+52>>2],(f|0)>=0))break o;s[k+48>>2]=s[k+48>>2]|1>>>0-f,Ot(k),f=s[k+52>>2]}s[k+48>>2]=s[k+48>>2]|1<>2]|0,Be=de[f|0],N=de[f-1|0]}if(f=N,N=Be,w=s[k+92>>2],ye=ie,!(w>>>0>ie>>>0))break}if(f=s[J>>2],s[yn+f>>2]=s[k+5984>>2],w=s[k+5988>>2]+Lt|0,s[k+5988>>2]=w,s[k+5992>>2]=s[k+5992>>2]+Lt,nn=nn+1|0,(nn|0)==(Ct|0))break}if(cn=cn+1|0,!(cn>>>0>2]))break}break e}for(N=w+1|0,E=E+N|0,f=0;s[k+5992>>2]=E,s[k+5988>>2]=N,w=E,f&1&&(s[k+5992>>2]=N,s[k+5988>>2]=E,w=N),ye=s[k+44>>2],Mr[s[s[ye>>2]+12>>2]](ye,w,s[k+92>>2],Lt),f=f+1|0,f>>>0>2];);f=0;break e}Vn(5),_t()}Vn(5),_t()}Li(),_t()}Ot(k);e:{if(!de[k+64|0]||(w=s[k+52>>2],w=w-((w-1|0)%8|0)|0,s[k+52>>2]=w,(w|0)>=0)||(Ot(k),s[k+52>>2]>=0))break e;Ot(k)}return Ot(k),f&&Gr(f),f=s[J+16>>2],f&&Gr(f),In=J+32|0,s[k+68>>2]-(s[k+52>>2]-32>>>3|0)|0}function hu(f,w){var N=0,k=0,E=0,W=0,J=0,ie=0;e:{t:{n:{r:{i:switch(w-218|0){case 29:a:{s:{o:{u:{l:{if(k=s[f+12>>2],k>>>0>5){if(w=s[f>>2],N=de[w|0],s[f+24>>2]=N,s[f>>2]=w+1,(N-17&255)>>>0<=240)break l;if(N=de[w+2|0],E=de[w+1|0],s[f>>2]=w+3,N=N|E<<8,N){if(s[f+20>>2])break u;s[f+20>>2]=N}if(N=de[w+4|0],E=de[w+3|0],s[f>>2]=w+5,N=N|E<<8,N){if(s[f+16>>2])break o;s[f+16>>2]=N}if(N=de[w+5|0],s[f+28>>2]=N,w=w+6|0,s[f>>2]=w,!N)break s;if((k|0)!=(Ae(N,3)+6|0))break t;for(;;){E=de[w|0],s[f>>2]=w+1,k=s[f+88>>2],N=k,w=s[f+92>>2];h:{if((N|0)==(w|0))break h;for(;;){if((E|0)==de[N|0])break h;if(N=N+1|0,(w|0)==(N|0))break}N=w}h:{f:{if((w|0)==(N|0)){if((w|0)!=s[f+96>>2]){oe[w|0]=E,s[f+92>>2]=w+1;break h}if(w=w-k|0,N=w+1|0,(N|0)<0)break f;W=w<<1,W=w>>>0>=1073741823?2147483647:N>>>0>>0?W:N,W?N=Gn(W):N=0,J=N+w|0,oe[J|0]=E,w=ea(N,k,w),s[f+96>>2]=w+W,s[f+92>>2]=J+1,s[f+88>>2]=w,k&&Gr(k);break h}Vn(20),_t()}Li(),_t()}if(w=s[f>>2],N=de[w|0],s[f>>2]=w+1,(N|0)!=17)break e;if(w=w+2|0,s[f>>2]=w,ie=ie+1|0,(ie|0)==s[f+28>>2])break}s[f+100>>2]=5;break a}break t}Vn(203),_t()}Vn(201),_t()}Vn(200),_t()}Vn(202),_t()}return;case 0:E=f;a:{s:{if(w=s[f+12>>2],w){if(W=s[E>>2],J=de[W|0],f=W+1|0,s[E>>2]=f,(J-5&255)>>>0<252||(ie=s[E+28>>2],ie>>>0>>0))break s;if((J|0)!=1&(J|0)!=(ie|0))break e;if((w|0)!=((J<<1)+4|0))break t;if(s[E>>2]=W+2,N=de[W+2|0],w=W+3|0,s[E>>2]=w,!N)break a;break e}break t}Vn(202),_t()}a:{if((J|0)==1)break a;if(s[E>>2]=W+4,f=de[W+4|0],N=W+5|0,s[E>>2]=N,f)break e;if((J|0)==2){f=w,w=N;break a}if(s[E>>2]=W+6,f=de[W+6|0],k=W+7|0,s[E>>2]=k,f)break e;if((J|0)==3){f=N,w=k;break a}if(s[E>>2]=W+8,N=de[W+8|0],w=W+9|0,s[E>>2]=w,f=k,N)break e}w=de[w|0],s[E+32>>2]=w,s[E>>2]=f+3,N=s[E+52>>2],N=((N||-1<>2]^-1)|0)/2|0,(w|0)>(((N|0)>=255?255:N)|0)&&(Vn(205),_t()),w=de[f+3|0],s[E>>2]=f+4;a:{s:{if(w>>>0<3){if(w&&(ie|0)==1)break s;if(s[E+40>>2]=w,w=de[f+4|0],s[E>>2]=f+5,w&15)break e;s[E+100>>2]=6;break a}Vn(204),_t()}Vn(204),_t()}return;case 30:a:{if(N=s[f+12>>2],N){w=s[f>>2],k=de[w|0],s[f>>2]=w+1;s:switch(k-1|0){case 0:if((N|0)!=11)break t;N=de[w+2|0],k=de[w+1|0],s[f>>2]=w+3,s[f+52>>2]=N|k<<8,N=de[w+4|0],k=de[w+3|0],s[f>>2]=w+5,s[f+56>>2]=N|k<<8,N=de[w+6|0],k=de[w+5|0],s[f>>2]=w+7,s[f+60>>2]=N|k<<8,N=de[w+8|0],k=de[w+7|0],s[f>>2]=w+9,s[f- -64>>2]=N|k<<8,N=de[w+10|0],k=de[w+9|0],s[f>>2]=w+11,s[f+68>>2]=N|k<<8;break a;case 4:case 5:case 6:case 7:case 8:case 9:case 11:case 12:Vn(23),_t();default:Vn(22),_t();case 1:case 2:break e;case 3:break s}s:{o:{u:{l:{h:{if(N=s[f+12>>2],N>>>0>1){w=s[f>>2],k=de[w|0],s[f>>2]=w+1;f:{p:switch(k-2|0){case 0:if((N|0)!=6)break o;N=de[w+2|0],k=de[w+1|0],s[f>>2]=w+3,E=de[w+4|0],W=de[w+3|0],s[f>>2]=w+5,w=N|k<<8,N=E|W<<8;break f;case 1:if((N|0)!=8)break o;N=de[w+1|0],s[f>>2]=w+2,k=de[w+3|0],E=de[w+2|0],s[f>>2]=w+4,W=de[w+4|0],s[f>>2]=w+5,J=de[w+6|0],ie=de[w+5|0],s[f>>2]=w+7,w=k|N<<16|E<<8,N=J|W<<16|ie<<8;break f;case 2:break p;default:break h}if((N|0)!=10)break o;N=de[w+1|0]|de[w+2|0]<<8|(de[w+3|0]<<16|de[w+4|0]<<24),s[f>>2]=w+5,k=de[w+5|0]|de[w+6|0]<<8|(de[w+7|0]<<16|de[w+8|0]<<24),s[f>>2]=w+9,w=N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24),N=k<<24|(k&65280)<<8|(k>>>8&65280|k>>>24)}if(w){if(s[f+20>>2])break l;s[f+20>>2]=w}if(N){if(s[f+16>>2])break u;s[f+16>>2]=N}break s}break o}Vn(206),_t()}Vn(201),_t()}Vn(200),_t()}Vn(17),_t()}break a}break t}return;case 3:a:{s:switch(s[f+12>>2]-2|0){case 1:w=s[f>>2],N=de[w|0],s[f>>2]=w+1,k=de[w+2|0],E=de[w+1|0],s[f>>2]=w+3,w=k|N<<16|E<<8;break a;case 2:w=s[f>>2],N=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),s[f>>2]=w+4,w=N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24);break a;case 0:break s;default:break t}w=s[f>>2],N=de[w+1|0],k=de[w|0],s[f>>2]=w+2,w=N|k<<8}s[f+36>>2]=w;return;case 14:a:{s:{o:{u:{if(w=s[f+112>>2],w&&(N=s[f+12>>2],Mr[w|0](8,N?s[f>>2]:0,N,s[f+116>>2])|0))break u;if(w=5,N=s[f+12>>2],(N|0)==5){if(N=s[f>>2],s[f>>2]=N+4,de[N|0]!=109|de[N+1|0]!=114|(de[N+2|0]!=102|de[N+3|0]!=120))break a;if(k=de[N+4|0],s[f>>2]=N+5,k>>>0<4)break o;if(k-4>>>0<2)break s;Vn(5),_t()}w=N;break a}Vn(27),_t()}s[f+44>>2]=k;break a}Vn(9),_t()}s[f>>2]=s[f+8>>2]+w;return;case 36:if(w=s[f+104>>2],w&&(N=s[f+12>>2],Mr[w|0](N?s[f>>2]:0,N,s[f+108>>2])|0))break r;s[f>>2]=s[f+8>>2]+s[f+12>>2];return;case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 15:case 16:case 17:case 18:case 19:case 20:case 21:if(N=s[f+112>>2],N&&(k=w-224|0,w=s[f+12>>2],Mr[N|0](k,w?s[f>>2]:0,w,s[f+116>>2])|0))break n;s[f>>2]=s[f+8>>2]+s[f+12>>2];break;default:break i}return}Vn(27),_t()}Vn(27),_t()}Vn(17),_t()}Vn(2),_t()}function Gi(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0;ue=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;if((N|0)!=1)for(W=N&-2,k=0;E=Ae(J,6),ye=E+w|0,ie=Re[ye>>1]|Re[ye+2>>1]<<16,E=E+ue|0,ke[E+4>>1]=Re[ye+4>>1],ke[E>>1]=ie,ke[E+2>>1]=ie>>>16,E=Ae(J|1,6),ye=E+w|0,ie=Re[ye>>1]|Re[ye+2>>1]<<16,E=E+ue|0,ke[E+4>>1]=Re[ye+4>>1],ke[E>>1]=ie,ke[E+2>>1]=ie>>>16,J=J+2|0,k=k+2|0,(W|0)!=(k|0););if(!(N&1))break e;k=w,w=Ae(J,6),E=k+w|0,k=Re[E>>1]|Re[E+2>>1]<<16,w=w+ue|0,ke[w+4>>1]=Re[E+4>>1],ke[w>>1]=k,ke[w+2>>1]=k>>>16;break e}if(be=N>>>0>k>>>0?k:N,!be)break e;if(rt=k<<1,(be|0)!=1)for(ye=be&-2;ie=Re[(J<<1)+w>>1],W=Re[(k+J<<1)+w>>1],Ee=Ae(J,6)+ue|0,ke[Ee+4>>1]=Re[(J+rt<<1)+w>>1],ke[Ee+2>>1]=W,ke[Ee>>1]=ie,Be=J|1,ie=Re[(Be<<1)+w>>1],W=Re[(k+Be<<1)+w>>1],Ee=Ae(Be,6)+ue|0,ke[Ee+4>>1]=Re[(rt+Be<<1)+w>>1],ke[Ee+2>>1]=W,ke[Ee>>1]=ie,J=J+2|0,E=E+2|0,(ye|0)!=(E|0););if(!(be&1))break e;E=Re[(J<<1)+w>>1],k=Re[(k+J<<1)+w>>1],W=Ae(J,6)+ue|0,ke[W+4>>1]=Re[(J+rt<<1)+w>>1],ke[W+2>>1]=k,ke[W>>1]=E;break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;if((N|0)!=1)for(W=N&-2,k=0;ye=J<<3,Ee=ye+ue|0,E=w+ye|0,ie=Re[E+4>>1]|Re[E+6>>1]<<16,E=Re[E>>1]|Re[E+2>>1]<<16,ke[Ee>>1]=E,ke[Ee+2>>1]=E>>>16,ke[Ee+4>>1]=ie,ke[Ee+6>>1]=ie>>>16,E=ye|8,ye=E+ue|0,E=w+E|0,ie=Re[E+4>>1]|Re[E+6>>1]<<16,E=Re[E>>1]|Re[E+2>>1]<<16,ke[ye>>1]=E,ke[ye+2>>1]=E>>>16,ke[ye+4>>1]=ie,ke[ye+6>>1]=ie>>>16,J=J+2|0,k=k+2|0,(W|0)!=(k|0););if(!(N&1))break e;k=J<<3,E=k+ue|0,w=w+k|0,k=Re[w+4>>1]|Re[w+6>>1]<<16,w=Re[w>>1]|Re[w+2>>1]<<16,ke[E>>1]=w,ke[E+2>>1]=w>>>16,ke[E+4>>1]=k,ke[E+6>>1]=k>>>16;break e;case 0:break t;default:break e}if(be=N>>>0>k>>>0?k:N,!be)break e;for(rt=Ae(k,3),Be=k<<1;E=Re[(k+J<<1)+w>>1],W=E>>>16|0,Ee=Re[(J<<1)+w>>1]|E<<16,ye=Re[(J+Be<<1)+w>>1]|W,W=Re[(J+rt<<1)+w>>1]<<16,ie=(J<<3)+ue|0,E=Ee,ke[ie>>1]=E,ke[ie+2>>1]=E>>>16,E=W|ye,ke[ie+4>>1]=E,ke[ie+6>>1]=E>>>16,J=J+1|0,(be|0)!=(J|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(E=s[s[f+4>>2]+12>>2],N>>>0>=4)for(k=N&-4,J=0,ie=E<<1;w=Re[ue+4>>1],ke[ue+4>>1]=Re[ue>>1],ke[ue>>1]=w,W=ie+ue|0,w=Re[W+4>>1],ke[W+4>>1]=Re[W>>1],ke[W>>1]=w,W=W+ie|0,w=Re[W+4>>1],ke[W+4>>1]=Re[W>>1],ke[W>>1]=w,W=W+ie|0,w=Re[W+4>>1],ke[W+4>>1]=Re[W>>1],ke[W>>1]=w,ue=W+ie|0,J=J+4|0,(k|0)!=(J|0););if(k=N&3,!k)break e;for(w=0;N=Re[ue+4>>1],ke[ue+4>>1]=Re[ue>>1],ke[ue>>1]=N,ue=(E<<1)+ue|0,w=w+1|0,(k|0)!=(w|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Sc(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0;k=s[w+8>>2],J=s[w+4>>2],ie=s[w+12>>2],oe[f+132|0]=s[w+16>>2],s[f+128>>2]=ie,s[f+120>>2]=J,s[f+124>>2]=k;e:{t:{if(s[f+76>>2]){ie=s[f+88>>2];break t}if(k=s[f+72>>2],ie=s[f+88>>2],(k|0)!=(-1<=128){w=(k>>>0>=4095?4095:k)+128|0,E=w>>>6|3,ue=w>>>8|0,J=ue+2|0,w=E>>>0>J>>>0?E:J,E=Ae(ue,17)+4|0,k=k>>>0>>0||w>>>0>E>>>0?w:E;break n}E=256/(k+1|0)<<16>>16,w=3/(E|0)<<16>>16,w=(w|0)<=2?2:w,J=(w|0)>(k|0)?1:w,w=7/(E|0)<<16>>16,w=(w|0)<=3?3:w,w=(w|0)>(k|0)?J:w,E=21/(E|0)<<16>>16,E=(E|0)<=4?4:E,k=(k|0)<(E|0)||w>>>0>E>>>0?w:E}if(s[f+120>>2]!=(J|0)|s[f+124>>2]!=(w|0)|(k|0)!=s[f+128>>2])break t;n:switch(ie-8|0){case 2:w=s[11889],s[f+6020>>2]=(s[11890]-w>>>1|0)+w;break e;case 4:w=s[11892],s[f+6020>>2]=(s[11893]-w>>>1|0)+w;break e;case 8:w=s[11895],s[f+6020>>2]=(s[11896]-w>>>1|0)+w;break e;case 0:break n;default:break t}w=s[11886],s[f+6020>>2]=(s[11887]-w>>>1|0)+w;break e}ye=f+6024|0;t:{k=2<>2],J=s[f+6024>>2],E=w-J|0;n:{r:{if(k>>>0>E>>>0){if(ue=k-E|0,W=s[f+6032>>2],ue>>>0<=W-w>>>0){w=fr(w,0,ue)+ue|0;break r}if((k|0)<0)break t;if(w=W-J|0,W=w<<1,w=w>>>0>=1073741823?2147483647:k>>>0>>0?W:k,W=Gn(w),fr(W+E|0,0,ue),E=ea(W,J,E),s[f+6032>>2]=E+w,w=k+E|0,s[f+6028>>2]=w,s[f+6024>>2]=E,!J)break n;Gr(J),w=s[f+6028>>2];break n}if(k>>>0>=E>>>0)break n;w=k+J|0}s[f+6028>>2]=w}if(ie=1<>2],(k|0)!=(w|0))for(w=k,J=0;;){Ee=w+J|0,w=J-ie|0,k=s[f+128>>2],W=252;n:{if((w|0)<=(0-k|0)||(E=s[f+124>>2],W=253,(w|0)<=(0-E|0))||(ue=s[f+120>>2],W=254,(w|0)<=(0-ue|0))||(ye=s[f+76>>2],W=255,(w|0)<(0-ye|0))||(W=0,(w|0)<=(ye|0))||(W=1,(w|0)<(ue|0))||(W=2,(w|0)<(E|0)))break n;W=(w|0)<(k|0)?3:4}if(oe[Ee|0]=W,J=J+1|0,w=s[f+6024>>2],!(J>>>0>2]-w>>>0))break}s[f+6020>>2]=w+ie;break e}Li(),_t()}for(w=(s[f+80>>2]+32|0)/64|0,k=(w|0)<=2?2:w,J=f+5984|0,w=f+144|0;s[w+64>>2]=k,s[w+48>>2]=k,s[w+32>>2]=k,s[w+16>>2]=k,s[w+12>>2]=1,s[w+4>>2]=0,s[w+8>>2]=0,s[w>>2]=k,s[w+76>>2]=1,s[w+68>>2]=0,s[w+72>>2]=0,s[w+60>>2]=1,s[w+52>>2]=0,s[w+56>>2]=0,s[w+44>>2]=1,s[w+36>>2]=0,s[w+40>>2]=0,s[w+28>>2]=1,s[w+20>>2]=0,s[w+24>>2]=0,w=w+80|0,(J|0)!=(w|0););s[f+6008>>2]=0,s[f+5984>>2]=0,s[f+136>>2]=N,ke[f+6004>>1]=1,s[f+5996>>2]=1,ke[f+5992>>1]=1,w=(s[f+80>>2]+32|0)/64|0,w=(w|0)<=2?2:w,s[f+6e3>>2]=w,s[f+5988>>2]=w}function hl(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0;k=s[w+8>>2],J=s[w+4>>2],ie=s[w+12>>2],oe[f+124|0]=s[w+16>>2],s[f+120>>2]=ie,s[f+112>>2]=J,s[f+116>>2]=k;e:{t:{if(s[f+68>>2]){ie=s[f+80>>2];break t}if(k=s[f+64>>2],ie=s[f+80>>2],(k|0)!=(-1<=128){w=(k>>>0>=4095?4095:k)+128|0,E=w>>>6|3,ue=w>>>8|0,J=ue+2|0,w=E>>>0>J>>>0?E:J,E=Ae(ue,17)+4|0,k=k>>>0>>0||w>>>0>E>>>0?w:E;break n}E=256/(k+1|0)<<16>>16,w=3/(E|0)<<16>>16,w=(w|0)<=2?2:w,J=(w|0)>(k|0)?1:w,w=7/(E|0)<<16>>16,w=(w|0)<=3?3:w,w=(w|0)>(k|0)?J:w,E=21/(E|0)<<16>>16,E=(E|0)<=4?4:E,k=(k|0)<(E|0)||w>>>0>E>>>0?w:E}if(s[f+112>>2]!=(J|0)|s[f+116>>2]!=(w|0)|(k|0)!=s[f+120>>2])break t;n:switch(ie-8|0){case 2:w=s[11889],s[f+6012>>2]=(s[11890]-w>>>1|0)+w;break e;case 4:w=s[11892],s[f+6012>>2]=(s[11893]-w>>>1|0)+w;break e;case 8:w=s[11895],s[f+6012>>2]=(s[11896]-w>>>1|0)+w;break e;case 0:break n;default:break t}w=s[11886],s[f+6012>>2]=(s[11887]-w>>>1|0)+w;break e}ye=f+6016|0;t:{k=2<>2],J=s[f+6016>>2],E=w-J|0;n:{r:{if(k>>>0>E>>>0){if(ue=k-E|0,W=s[f+6024>>2],ue>>>0<=W-w>>>0){w=fr(w,0,ue)+ue|0;break r}if((k|0)<0)break t;if(w=W-J|0,W=w<<1,w=w>>>0>=1073741823?2147483647:k>>>0>>0?W:k,W=Gn(w),fr(W+E|0,0,ue),E=ea(W,J,E),s[f+6024>>2]=E+w,w=k+E|0,s[f+6020>>2]=w,s[f+6016>>2]=E,!J)break n;Gr(J),w=s[f+6020>>2];break n}if(k>>>0>=E>>>0)break n;w=k+J|0}s[f+6020>>2]=w}if(ie=1<>2],(k|0)!=(w|0))for(w=k,J=0;;){Ee=w+J|0,w=J-ie|0,k=s[f+120>>2],W=252;n:{if((w|0)<=(0-k|0)||(E=s[f+116>>2],W=253,(w|0)<=(0-E|0))||(ue=s[f+112>>2],W=254,(w|0)<=(0-ue|0))||(ye=s[f+68>>2],W=255,(w|0)<(0-ye|0))||(W=0,(w|0)<=(ye|0))||(W=1,(w|0)<(ue|0))||(W=2,(w|0)<(E|0)))break n;W=(w|0)<(k|0)?3:4}if(oe[Ee|0]=W,J=J+1|0,w=s[f+6016>>2],!(J>>>0>2]-w>>>0))break}s[f+6012>>2]=w+ie;break e}Li(),_t()}for(w=(s[f+72>>2]+32|0)/64|0,k=(w|0)<=2?2:w,J=f+5976|0,w=f+136|0;s[w+64>>2]=k,s[w+48>>2]=k,s[w+32>>2]=k,s[w+16>>2]=k,s[w+12>>2]=1,s[w+4>>2]=0,s[w+8>>2]=0,s[w>>2]=k,s[w+76>>2]=1,s[w+68>>2]=0,s[w+72>>2]=0,s[w+60>>2]=1,s[w+52>>2]=0,s[w+56>>2]=0,s[w+44>>2]=1,s[w+36>>2]=0,s[w+40>>2]=0,s[w+28>>2]=1,s[w+20>>2]=0,s[w+24>>2]=0,w=w+80|0,(J|0)!=(w|0););s[f+6e3>>2]=0,s[f+5976>>2]=0,s[f+128>>2]=N,ke[f+5996>>1]=1,s[f+5988>>2]=1,ke[f+5984>>1]=1,w=(s[f+72>>2]+32|0)/64|0,w=(w|0)<=2?2:w,s[f+5992>>2]=w,s[f+5980>>2]=w}function Fh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0;e:{t:{n:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=8)break n;return f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=1,s[f+4>>2]=w,s[f>>2]=6380,f|0}if(E=f+4|0,J=f+20|0,W=s[f+32>>2],!W){k=Gn(56),W=s[w>>2],ie=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6576,w=s[f+16>>2],N=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,w=Ae(w,N);r:{if(!w){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break r}if((w|0)<0)break t;N=Gn(w),s[k+16>>2]=N,E=w+N|0,s[k+24>>2]=E,fr(N,0,w),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(w),s[k+28>>2]=N,E=w+N|0,s[k+36>>2]=E,fr(N,0,w),s[k+32>>2]=E}return s[k+44>>2]=W,s[k+48>>2]=ie,s[k+52>>2]=-1<>2]^-1,k|0}if(s[f+12>>2]==8){r:switch(W-1|0){case 0:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6668,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 1:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6760,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 2:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6852,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;default:break r}Vn(9),_t()}Vn(8),_t()}return f=Gn(24),w=s[w>>2],oe[f+20|0]=1,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=1,s[f+4>>2]=w,s[f>>2]=6492,f|0}Li(),_t()}return s[k+52>>2]=255,s[k+44>>2]=W,s[k+48>>2]=w,k|0}function xf(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0;e:{t:{n:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=8)break n;return f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=3,s[f+4>>2]=w,s[f>>2]=6380,f|0}if(E=f+4|0,J=f+20|0,W=s[f+32>>2],!W){k=Gn(56),W=s[w>>2],ie=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6576,w=s[f+16>>2],N=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,w=Ae(w,N);r:{if(!w){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break r}if((w|0)<0)break t;N=Gn(w),s[k+16>>2]=N,E=w+N|0,s[k+24>>2]=E,fr(N,0,w),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(w),s[k+28>>2]=N,E=w+N|0,s[k+36>>2]=E,fr(N,0,w),s[k+32>>2]=E}return s[k+44>>2]=W,s[k+48>>2]=ie,s[k+52>>2]=-1<>2]^-1,k|0}if(s[f+12>>2]==8){r:switch(W-1|0){case 0:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6668,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 1:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6760,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 2:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6852,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;default:break r}Vn(9),_t()}Vn(8),_t()}return f=Gn(24),w=s[w>>2],oe[f+20|0]=0,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=3,s[f+4>>2]=w,s[f>>2]=6492,f|0}Li(),_t()}return s[k+52>>2]=255,s[k+44>>2]=W,s[k+48>>2]=w,k|0}function Tc(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0;e:{t:{n:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=8)break n;return f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=4,s[f+4>>2]=w,s[f>>2]=6380,f|0}if(E=f+4|0,J=f+20|0,W=s[f+32>>2],!W){k=Gn(56),W=s[w>>2],ie=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6576,w=s[f+16>>2],N=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,w=Ae(w,N);r:{if(!w){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break r}if((w|0)<0)break t;N=Gn(w),s[k+16>>2]=N,E=w+N|0,s[k+24>>2]=E,fr(N,0,w),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(w),s[k+28>>2]=N,E=w+N|0,s[k+36>>2]=E,fr(N,0,w),s[k+32>>2]=E}return s[k+44>>2]=W,s[k+48>>2]=ie,s[k+52>>2]=-1<>2]^-1,k|0}if(s[f+12>>2]==8){r:switch(W-1|0){case 0:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6668,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 1:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6760,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;case 2:k=Gn(56),W=s[w>>2],w=s[w+4>>2],s[k+12>>2]=N,s[k+8>>2]=J,s[k+4>>2]=E,s[k>>2]=6852,N=s[f+16>>2],f=s[f+4>>2],s[k+24>>2]=0,s[k+16>>2]=0,s[k+20>>2]=0,f=Ae(f,N);i:{if(!f){s[k+28>>2]=0,s[k+32>>2]=0,s[k+36>>2]=0;break i}if((f|0)<0)break t;N=Gn(f),s[k+16>>2]=N,E=f+N|0,s[k+24>>2]=E,fr(N,0,f),s[k+36>>2]=0,s[k+28>>2]=0,s[k+32>>2]=0,s[k+20>>2]=E,N=Gn(f),s[k+28>>2]=N,E=f+N|0,s[k+36>>2]=E,fr(N,0,f),s[k+32>>2]=E}break e;default:break r}Vn(9),_t()}Vn(8),_t()}return f=Gn(24),w=s[w>>2],oe[f+20|0]=0,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=4,s[f+4>>2]=w,s[f>>2]=6492,f|0}Li(),_t()}return s[k+52>>2]=255,s[k+44>>2]=W,s[k+48>>2]=w,k|0}function du(f,w){f=f|0,w=w|0;var N=0,k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0,Ct=0,Lt=0,Wt=0;N=w,w=s[w>>2]+7&-8,s[N>>2]=w+16,pt=f,ue=s[w>>2],k=s[w+4>>2],f=s[w+12>>2],Be=f,J=In-32|0,In=J,f=f&2147483647,ie=f,E=f-1006698496|0,f=f-1140785152|0,N=s[w+8>>2],w=N;e:{if((E|0)==(f|0)&w>>>0>>0|f>>>0>E>>>0){if(f=N,N=Be<<4|f>>>28,w=f<<4|k>>>28,f=N,k=k&268435455,(k|0)==134217728&(ue|0)!=0|k>>>0>134217728){f=f+1073741824|0,w=w+1|0,f=w?f:f+1|0;break e}if(f=f+1073741824|0,ue|(k|0)!=134217728)break e;k=w&1,w=k+w|0,f=w>>>0>>0?f+1|0:f;break e}if(!(!w&(ie|0)==2147418112?!(k|ue):ie>>>0<2147418112)){f=N,N=Be<<4|f>>>28,w=f<<4|k>>>28,f=N&524287|2146959360;break e}if(w=0,f=2146435072,ie>>>0>1140785151||(f=0,rt=ie>>>16|0,rt>>>0<15249))break e;w=ue,f=k,E=Be&65535|65536,ie=E,be=N,W=N,ye=rt-15233|0;t:{if(ye&64){N=w,E=ye+-64|0,w=E&31,(E&63)>>>0>=32?(f=N<>>32-w|f<>>0>=32?(N=Ee<>>32-W|E<>>0>=32?(N=0,w=f>>>W|0):(N=f>>>W|0,w=((1<>>W),W=Ct|w,E=N|E,w=ye&31,(ye&63)>>>0>=32?(N=Ee<>>32-w|f<>2]=w,s[J+20>>2]=f,s[J+24>>2]=W,s[J+28>>2]=E,w=15361-rt|0;t:{if(w&64){k=be,w=w+-64|0,f=w&31,(w&63)>>>0>=32?(N=0,ue=ie>>>f|0):(N=ie>>>f|0,ue=((1<>>f),k=N,be=0,ie=0;break t}if(!w)break t;E=be,f=64-w|0,N=f&31,(f&63)>>>0>=32?(f=E<>>32-N|ie<>>0>=32?(N=0,E=k>>>ue|0):(N=k>>>ue|0,E=((1<>>ue),ue=W|E,k=f|N,E=be,N=w&31,(w&63)>>>0>=32?(f=0,be=ie>>>N|0):(f=ie>>>N|0,be=((1<>>N),ie=f}if(s[J>>2]=ue,s[J+4>>2]=k,s[J+8>>2]=be,s[J+12>>2]=ie,w=s[J+8>>2],f=s[J+12>>2]<<4|w>>>28,w=w<<4,N=s[J>>2],ie=s[J+4>>2],w=ie>>>28|w,k=ie&268435455,N=N|(s[J+16>>2]|s[J+24>>2]|(s[J+20>>2]|s[J+28>>2]))!=0,(k|0)==134217728&(N|0)!=0|k>>>0>134217728){w=w+1|0,f=w?f:f+1|0;break e}if(N|(k|0)!=134217728)break e;N=w,w=w+(w&1)|0,f=N>>>0>w>>>0?f+1|0:f}In=J+32|0,ht(0,w|0),ht(1,Be&-2147483648|f),Lt=pt,Wt=+zt(),Qt[Lt>>3]=Wt}function pp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;be=s[f+44>>2],ye=f;e:{if(!de[s[f+8>>2]+16|0]){J=s[s[ye+4>>2]+12>>2];break e}if(Ms(s[ye+16>>2],be,Ae(N,6)),be=s[ye+16>>2],J=s[s[ye+4>>2]+12>>2],!N)break e;if(f=be,N>>>0>=4)for(ie=N&-4,ue=J<<1;E=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=E,E=f+ue|0,f=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=f,E=E+ue|0,f=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=f,E=E+ue|0,f=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=f,f=E+ue|0,W=W+4|0,(ie|0)!=(W|0););if(ie=N&3,!ie)break e;for(W=0;E=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=E,f=(J<<1)+f|0,W=W+1|0,(ie|0)!=(W|0););}e:{t:switch(J-3|0){case 0:if(J=s[ye+52>>2],s[s[ye+8>>2]+8>>2]==2){if(!N)break e;for(W=0;k=Ae(W,6),E=k+be|0,f=Re[E+4>>1],ie=w+k|0,k=J&Re[E>>1],E=J&Re[E+2>>1],k=k-E^-32768,ke[ie+4>>1]=k,f=(f&J)-E^-32768,ke[ie+2>>1]=f,ke[ie>>1]=(E+((f&65535)+(k&65535)>>>2|0)|0)-16384,W=W+1|0,(W|0)!=(N|0););break e}if(ie=N>>>0>>0?N:k,!ie)break e;for(E=k<<1,W=0;f=Ae(W,6)+be|0,ue=J&Re[f+2>>1],N=(J&Re[f+4>>1])-ue^-32768,f=(J&Re[f>>1])-ue^-32768,ke[(W<<1)+w>>1]=(ue+((N&65535)+(f&65535)>>>2|0)|0)-16384,ke[(k+W<<1)+w>>1]=N,ke[(E+W<<1)+w>>1]=f,W=W+1|0,(ie|0)!=(W|0););break e;case 1:break t;default:break e}t:switch(s[s[ye+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(Ee=s[ye+52>>2],W=0;f=W<<3,E=f+w|0,Be=f+be|0,J=Ee&Re[Be+2>>1],f=((Ee&Re[Be+4>>1])-J^-32768)&65535,k=f>>>16|0,ie=f<<16,ue=f,f=((Ee&Re[Be>>1])-J^-32768)&65535,ue=ie|(J+(ue+f>>>2|0)|0)+49152&65535,ie=f|k,f=(Ee&Re[Be+6>>1])<<16,k=ue,ke[E>>1]=k,ke[E+2>>1]=k>>>16,f=f|ie,ke[E+4>>1]=f,ke[E+6>>1]=f>>>16,W=W+1|0,(W|0)!=(N|0););break e;case 0:break t;default:break e}if(Be=N>>>0>>0?N:k,!Be)break e;for(W=s[ye+52>>2],J=Ae(k,3),ue=k<<1,f=0;N=(f<<3)+be|0,ie=Re[N+6>>1],Ee=W&Re[N+2>>1],E=(W&Re[N+4>>1])-Ee^-32768,N=(W&Re[N>>1])-Ee^-32768,ke[(f<<1)+w>>1]=(((E&65535)+(N&65535)>>>2|0)+Ee|0)-16384,ke[(f+k<<1)+w>>1]=E,ke[(f+ue<<1)+w>>1]=N,ke[(f+J<<1)+w>>1]=W&ie,f=f+1|0,(Be|0)!=(f|0););}s[ye+44>>2]=s[ye+44>>2]+s[ye+12>>2]}function S2(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;Ee=s[f+44>>2];e:{if(!de[s[f+8>>2]+16|0]){ie=s[s[f+4>>2]+12>>2];break e}if(Ms(s[f+16>>2],Ee,Ae(N,6)),Ee=s[f+16>>2],ie=s[s[f+4>>2]+12>>2],!N)break e;if(E=Ee,N>>>0>=4)for(ye=N&-4,W=ie<<1;ue=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=ue,E=E+W|0,ue=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=ue,E=E+W|0,ue=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=ue,E=E+W|0,ue=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=ue,E=E+W|0,J=J+4|0,(ye|0)!=(J|0););if(W=N&3,!W)break e;for(J=0;ye=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=ye,E=(ie<<1)+E|0,J=J+1|0,(W|0)!=(J|0););}e:{t:switch(ie-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;if(k=s[f+52>>2],J=0,(N|0)!=1)for(ye=N&-2,ie=0;W=Ae(J,6),E=W+Ee|0,ue=Re[E>>1],be=Re[E+2>>1],W=w+W|0,ke[W+4>>1]=k&Re[E+4>>1],ke[W+2>>1]=k&be,ke[W>>1]=k&ue,W=Ae(J|1,6),E=W+Ee|0,ue=Re[E>>1],be=Re[E+2>>1],W=w+W|0,ke[W+4>>1]=k&Re[E+4>>1],ke[W+2>>1]=k&be,ke[W>>1]=k&ue,J=J+2|0,ie=ie+2|0,(ye|0)!=(ie|0););if(!(N&1))break e;E=Ae(J,6),N=E+Ee|0,Ee=Re[N>>1],J=Re[N+2>>1],w=w+E|0,ke[w+4>>1]=k&Re[N+4>>1],ke[w+2>>1]=k&J,ke[w>>1]=k&Ee;break e}if(ie=N>>>0>>0?N:k,!ie)break e;for(W=k<<1,N=s[f+52>>2],E=0;J=Ae(E,6)+Ee|0,ye=Re[J+4>>1],ue=Re[J+2>>1],ke[(E<<1)+w>>1]=N&Re[J>>1],ke[(k+E<<1)+w>>1]=N&ue,ke[(E+W<<1)+w>>1]=N&ye,E=E+1|0,(ie|0)!=(E|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(ie=s[f+52>>2],J=0;k=J<<3,E=k+w|0,W=k+Ee|0,k=Re[W+4>>1]&ie,ye=Re[W+2>>1]&ie,ue=ye>>>16|0,ye=Re[W>>1]&ie|ye<<16,ue=k|ue,k=(ie&Re[W+6>>1])<<16,W=ye,ke[E>>1]=W,ke[E+2>>1]=W>>>16,k=k|ue,ke[E+4>>1]=k,ke[E+6>>1]=k>>>16,J=J+1|0,(J|0)!=(N|0););break e;case 0:break t;default:break e}if(ie=N>>>0>>0?N:k,!ie)break e;for(W=Ae(k,3),ye=k<<1,N=s[f+52>>2],E=0;J=(E<<3)+Ee|0,ue=Re[J+6>>1],be=Re[J+4>>1],Be=Re[J+2>>1],ke[(E<<1)+w>>1]=Re[J>>1]&N,ke[(k+E<<1)+w>>1]=N&Be,ke[(E+ye<<1)+w>>1]=N&be,ke[(E+W<<1)+w>>1]=N&ue,E=E+1|0,(ie|0)!=(E|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function mp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0;ie=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;if((N|0)!=1)for(ye=N&-2,k=0;J=Ae(E,3),W=J+w|0,ue=de[W|0]|de[W+1|0]<<8,J=ie+J|0,oe[J+2|0]=de[W+2|0],oe[J|0]=ue,oe[J+1|0]=ue>>>8,J=Ae(E|1,3),W=J+w|0,ue=de[W|0]|de[W+1|0]<<8,J=ie+J|0,oe[J+2|0]=de[W+2|0],oe[J|0]=ue,oe[J+1|0]=ue>>>8,E=E+2|0,k=k+2|0,(ye|0)!=(k|0););if(!(N&1))break e;E=Ae(E,3),w=E+w|0,k=de[w|0]|de[w+1|0]<<8,E=E+ie|0,oe[E+2|0]=de[w+2|0],oe[E|0]=k,oe[E+1|0]=k>>>8;break e}if(W=N>>>0>k>>>0?k:N,!W)break e;if(ue=k<<1,(W|0)!=1)for(Ee=W&-2;ye=de[w+E|0],be=de[(k+E|0)+w|0],J=Ae(E,3)+ie|0,oe[J+2|0]=de[(E+ue|0)+w|0],oe[J+1|0]=be,oe[J|0]=ye,J=E|1,be=de[J+w|0],rt=de[(k+J|0)+w|0],ye=Ae(J,3)+ie|0,oe[ye+2|0]=de[(J+ue|0)+w|0],oe[ye+1|0]=rt,oe[ye|0]=be,E=E+2|0,Be=Be+2|0,(Ee|0)!=(Be|0););if(!(W&1))break e;W=de[w+E|0],J=de[(k+E|0)+w|0],k=Ae(E,3)+ie|0,oe[k+2|0]=de[(E+ue|0)+w|0],oe[k+1|0]=J,oe[k|0]=W;break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(;W=E<<2,k=W+ie|0,W=w+W|0,W=de[W|0]|de[W+1|0]<<8|(de[W+2|0]<<16|de[W+3|0]<<24),oe[k|0]=W,oe[k+1|0]=W>>>8,oe[k+2|0]=W>>>16,oe[k+3|0]=W>>>24,E=E+1|0,(E|0)!=(N|0););break e;case 0:break t;default:break e}if(J=N>>>0>k>>>0?k:N,!J)break e;for(ye=Ae(k,3),Ee=k<<1;W=(E<<2)+ie|0,ue=de[w+E|0]|de[(k+E|0)+w|0]<<8|de[(E+Ee|0)+w|0]<<16|de[(E+ye|0)+w|0]<<24,oe[W|0]=ue,oe[W+1|0]=ue>>>8,oe[W+2|0]=ue>>>16,oe[W+3|0]=ue>>>24,E=E+1|0,(J|0)!=(E|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(w=s[s[f+4>>2]+12>>2],N>>>0>=4)for(W=N&-4,E=0;k=de[ie+2|0],oe[ie+2|0]=de[ie|0],oe[ie|0]=k,k=w+ie|0,ie=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=ie,k=w+k|0,ie=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=ie,k=w+k|0,ie=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=ie,ie=w+k|0,E=E+4|0,(W|0)!=(E|0););if(N=N&3,!N)break e;for(E=0;k=de[ie+2|0],oe[ie+2|0]=de[ie|0],oe[ie|0]=k,ie=w+ie|0,E=E+1|0,(N|0)!=(E|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Ec(f){var w=0,N=0,k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0;ie=8;e:{t:{if(f>>>0>4294967239)break t;for(;;){ie=ie>>>0<=8?8:ie,k=s[12163],N=s[12162],f=f>>>0<=8?8:f+3&-4;n:{if(f>>>0<=127){w=(f>>>3|0)-1|0;break n}if(E=tt(f),w=((f>>>29-E^4)-(E<<2)|0)+110|0,f>>>0<=4095)break n;E=((f>>>30-E^2)-(E<<1)|0)+71|0,w=E>>>0>=63?63:E}if(J=w,w=J&31,(J&63)>>>0>=32?(E=0,w=k>>>w|0):(E=k>>>w|0,w=((1<>>w),w|E){for(;;){k=w;n:{if(E|w){N=E-1|0,ue=N+1|0,W=N,N=w-1|0,W=(N|0)!=-1?ue:W,N=tt(w^N)+32|0,w=tt(E^W),w=(w|0)==32?N:w,N=63-w|0,Ce=0-(w>>>0>63)|0;break n}Ce=0,N=64}W=N,N=W&31,(W&63)>>>0>=32?(w=0,ye=E>>>N|0):(w=E>>>N|0,ye=((1<>>N),E=w,J=W+J|0,N=J<<4,k=s[N+47624>>2],W=N+47616|0;n:{if((k|0)!=(W|0)){if(w=C4(k,ie,f),w)break t;w=s[k+4>>2],s[w+8>>2]=s[k+8>>2],s[s[k+8>>2]+4>>2]=w,s[k+8>>2]=W,w=N+47620|0,s[k+4>>2]=s[w>>2],s[w>>2]=k,s[s[k+4>>2]+8>>2]=k,J=J+1|0,w=(E&1)<<31|ye>>>1,E=E>>>1|0;break n}Ee=s[12163],W=J&63,w=W,k=w&31,w>>>0>=32?(w=0,N=-1>>>k|0):(w=-1>>>k|0,N=w|(1<>>0>=32?(w=N<>>32-k|w<>>0>=32?(w=-1<>>32-w),be=N&-2,N=W&31,W>>>0>=32?(W=0,w=w>>>N|0):(W=w>>>N|0,w=((1<>>N),w=w|ue,Ce=k|W,s[12162]=s[12162]&w,s[12163]=Ce&Ee,w=ye^1}if(!(w|E))break}N=s[12162],k=s[12163]}n:{if(k|N){E=tt(k),W=63-((E|0)==32?tt(N)+32|0:E)|0,w=W<<4,E=s[w+47624>>2];r:{if(!k&N>>>0<1073741824||(J=99,k=w+47616|0,(k|0)==(E|0)))break r;for(;;){if(!J)break r;if(w=C4(E,ie,f),w)break t;if(J=J-1|0,E=s[E+8>>2],(k|0)==(E|0))break}E=k}if(Bh(f+48|0))break n;if(!E||(J=(W<<4)+47616|0,(J|0)==(E|0)))break e;for(;;){if(w=C4(E,ie,f),w)break t;if(E=s[E+8>>2],(J|0)==(E|0))break}break e}if(!Bh(f+48|0))break e}if(w=0,ie-1&ie)break t;if(!(f>>>0<=4294967239))break}}return w}return 0}function vp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;E=s[f+44>>2];e:{if(!de[s[f+8>>2]+16|0]||(Ms(s[f+16>>2],E,Ae(N,3)),E=s[f+16>>2],!N))break e;if(ue=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ie=N&-4;J=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=J,E=E+ue|0,J=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=J,E=E+ue|0,J=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=J,E=E+ue|0,J=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=J,E=E+ue|0,W=W+4|0,(ie|0)!=(W|0););if(ie=N&3,ie)for(W=0;J=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=J,E=E+ue|0,W=W+1|0,(ie|0)!=(W|0););E=s[f+16>>2]}e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;if(k=s[f+52>>2],W=0,(N|0)!=1)for(Ee=N&-2,ue=0;J=Ae(W,3),ie=J+E|0,ye=de[ie|0],be=de[ie+1|0],J=w+J|0,oe[J+2|0]=k&de[ie+2|0],oe[J+1|0]=k&be,oe[J|0]=k&ye,J=Ae(W|1,3),ie=J+E|0,ye=de[ie|0],be=de[ie+1|0],J=w+J|0,oe[J+2|0]=k&de[ie+2|0],oe[J+1|0]=k&be,oe[J|0]=k&ye,W=W+2|0,ue=ue+2|0,(Ee|0)!=(ue|0););if(!(N&1))break e;N=E,E=Ae(W,3),N=N+E|0,W=de[N|0],ue=de[N+1|0],w=w+E|0,oe[w+2|0]=k&de[N+2|0],oe[w+1|0]=k&ue,oe[w|0]=k&W;break e}if(ie=N>>>0>>0?N:k,!ie)break e;for(J=k<<1,W=s[f+52>>2],N=0;ue=E+Ae(N,3)|0,Ee=de[ue+2|0],ye=de[ue+1|0],oe[w+N|0]=W&de[ue|0],oe[(N+k|0)+w|0]=W&ye,oe[(N+J|0)+w|0]=W&Ee,N=N+1|0,(ie|0)!=(N|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=s[f+52>>2],ue=0;ie=ue<<2,W=ie+E|0,ie=w+ie|0,W=k&de[W|0]|((k&de[W+2|0])<<16|(k&de[W+1|0])<<8)|(k&de[W+3|0])<<24,oe[ie|0]=W,oe[ie+1|0]=W>>>8,oe[ie+2|0]=W>>>16,oe[ie+3|0]=W>>>24,ue=ue+1|0,(ue|0)!=(N|0););break e;case 0:break t;default:break e}if(ie=N>>>0>>0?N:k,!ie)break e;for(J=Ae(k,3),Ee=k<<1,W=s[f+52>>2],N=0;ue=E+(N<<2)|0,ye=de[ue+3|0],be=de[ue+2|0],Be=de[ue+1|0],oe[w+N|0]=W&de[ue|0],oe[(N+k|0)+w|0]=W&Be,oe[(N+Ee|0)+w|0]=W&be,oe[(N+J|0)+w|0]=W&ye,N=N+1|0,(ie|0)!=(N|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Dc(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;Ee=s[f+44>>2],ye=f;e:{if(!de[s[f+8>>2]+16|0]){E=s[s[ye+4>>2]+12>>2];break e}if(Ms(s[ye+16>>2],Ee,Ae(N,6)),Ee=s[ye+16>>2],E=s[s[ye+4>>2]+12>>2],!N)break e;if(f=Ee,N>>>0>=4)for(J=N&-4,ie=E<<1;ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+ie|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+ie|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+ie|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+ie|0,W=W+4|0,(J|0)!=(W|0););if(ie=N&3,!ie)break e;for(W=0;J=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=J,f=(E<<1)+f|0,W=W+1|0,(ie|0)!=(W|0););}e:{t:switch(E-3|0){case 0:if(f=s[ye+52>>2],s[s[ye+8>>2]+8>>2]==2){if(!N)break e;for(W=0;E=Ae(W,6),k=E+Ee|0,ie=Re[k+4>>1],J=Re[k>>1],E=w+E|0,k=f&Re[k+2>>1],ke[E+2>>1]=k,J=f&J,ke[E>>1]=J-k^32768,ke[E+4>>1]=(f&ie)-(k+J>>>1|0)^32768,W=W+1|0,(W|0)!=(N|0););break e}if(E=N>>>0>>0?N:k,!E)break e;for(ie=k<<1,W=0;N=Ae(W,6)+Ee|0,J=Re[N+4>>1],ue=f&Re[N>>1],N=f&Re[N+2>>1],ke[(W<<1)+w>>1]=ue-N^32768,ke[(k+W<<1)+w>>1]=N,ke[(W+ie<<1)+w>>1]=(f&J)-(N+ue>>>1|0)^32768,W=W+1|0,(E|0)!=(W|0););break e;case 1:break t;default:break e}t:switch(s[s[ye+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(ie=s[ye+52>>2],W=0;f=W<<3,k=f+w|0,J=f+Ee|0,E=ie&Re[J+2>>1],ue=ie&Re[J>>1],f=(ie&Re[J+4>>1])-(ue+E>>>1|0)&65535^32768,ue=ue-E&65535^32768|E<<16,E=f,f=(ie&Re[J+6>>1])<<16,J=ue,ke[k>>1]=J,ke[k+2>>1]=J>>>16,f=f|E,ke[k+4>>1]=f,ke[k+6>>1]=f>>>16,W=W+1|0,(W|0)!=(N|0););break e;case 0:break t;default:break e}if(W=N>>>0>>0?N:k,!W)break e;for(N=s[ye+52>>2],ie=Ae(k,3),J=k<<1,f=0;E=(f<<3)+Ee|0,ue=Re[E+6>>1],Be=Re[E+4>>1],be=N&Re[E>>1],E=N&Re[E+2>>1],ke[(f<<1)+w>>1]=be-E^32768,ke[(f+k<<1)+w>>1]=E,ke[(f+J<<1)+w>>1]=(N&Be)-(E+be>>>1|0)^32768,ke[(f+ie<<1)+w>>1]=N&ue,f=f+1|0,(W|0)!=(f|0););}s[ye+44>>2]=s[ye+44>>2]+s[ye+12>>2]}function kp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;E=s[f+44>>2];e:{if(!de[s[f+8>>2]+16|0]||(Ms(s[f+16>>2],E,Ae(N,3)),E=s[f+16>>2],!N))break e;if(W=s[s[f+4>>2]+12>>2],N>>>0>=4)for(J=N&-4;ue=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ue,E=E+W|0,ue=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ue,E=E+W|0,ue=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ue,E=E+W|0,ue=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ue,E=E+W|0,ie=ie+4|0,(J|0)!=(ie|0););if(J=N&3,J)for(ie=0;ue=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ue,E=E+W|0,ie=ie+1|0,(J|0)!=(ie|0););E=s[f+16>>2]}e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(W=s[f+52>>2],s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(ie=0;J=Ae(ie,3),k=J+E|0,ue=de[k+2|0],J=w+J|0,Ee=W&de[k|0],k=W&de[k+1|0],ye=Ee-k^-128,oe[J+2|0]=ye,ue=(W&ue)-k^-128,oe[J+1|0]=ue,oe[J|0]=(k+((ue&255)+(ye&255)>>>2|0)|0)+-64,ie=ie+1|0,(ie|0)!=(N|0););break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(ye=k<<1,ie=0;J=E+Ae(ie,3)|0,N=W&de[J+1|0],be=(W&de[J+2|0])-N^-128,J=(W&de[J|0])-N^-128,oe[w+ie|0]=(N+((be&255)+(J&255)>>>2|0)|0)+-64,oe[(k+ie|0)+w|0]=be,oe[(ie+ye|0)+w|0]=J,ie=ie+1|0,(ue|0)!=(ie|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=s[f+52>>2],ie=0;ue=ie<<2,W=ue+E|0,J=k&de[W+1|0],ue=w+ue|0,Ee=J,ye=(k&de[W+2|0])-J&255^128,J=(k&de[W|0])-J&255^128,W=(Ee+(ye+J>>>2|0)|0)+192&255|(ye<<8|J<<16)|(k&de[W+3|0])<<24,oe[ue|0]=W,oe[ue+1|0]=W>>>8,oe[ue+2|0]=W>>>16,oe[ue+3|0]=W>>>24,ie=ie+1|0,(ie|0)!=(N|0););break e;case 0:break t;default:break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(ie=s[f+52>>2],ye=Ae(k,3),be=k<<1,N=0;W=E+(N<<2)|0,Ee=de[W+3|0],J=ie&de[W+1|0],Be=(ie&de[W+2|0])-J^-128,W=(ie&de[W|0])-J^-128,oe[w+N|0]=(((Be&255)+(W&255)>>>2|0)+J|0)+-64,oe[(N+k|0)+w|0]=Be,oe[(N+be|0)+w|0]=W,oe[(N+ye|0)+w|0]=ie&Ee,N=N+1|0,(ue|0)!=(N|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function hn(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;ue=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;E=Ae(W,6),k=E+ue|0,E=w+E|0,ie=Re[E+4>>1],J=Re[E+2>>1],E=(Re[E>>1]-(J+ie>>>2|0)|0)+16384|0,ke[k+2>>1]=E,ke[k+4>>1]=E+J^32768,ke[k>>1]=E+ie^32768,W=W+1|0,(W|0)!=(N|0););break e}if(J=N>>>0>k>>>0?k:N,!J)break e;for(ye=k<<1;E=Ae(W,6)+ue|0,Ee=Re[(k+W<<1)+w>>1],Be=Re[(W+ye<<1)+w>>1],ie=(Re[(W<<1)+w>>1]-(Ee+Be>>>2|0)|0)+16384|0,ke[E+2>>1]=ie,ke[E+4>>1]=ie+Ee^32768,ke[E>>1]=ie+Be^32768,W=W+1|0,(J|0)!=(W|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;E=k<<3,ie=E+ue|0,W=w+E|0,E=Re[W+2>>1],ye=E,J=Re[W+4>>1],E=(Re[W>>1]-(J+E>>>2|0)|0)+16384|0,ye=ye+E^32768,Ee=E<<16,J=E+J^32768,E=ye&65535,ye=J&65535|Ee,J=E,E=Re[W+6>>1]<<16,W=ye,ke[ie>>1]=W,ke[ie+2>>1]=W>>>16,E=E|J,ke[ie+4>>1]=E,ke[ie+6>>1]=E>>>16,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(ye=N>>>0>k>>>0?k:N,!ye)break e;for(Ee=Ae(k,3),Be=k<<1;J=Re[(k+W<<1)+w>>1],be=Re[(W+Be<<1)+w>>1],E=(Re[(W<<1)+w>>1]-(J+be>>>2|0)|0)+16384|0,be=E<<16|(E+be^32768)&65535,J=(E+J^32768)&65535,E=Re[(W+Ee<<1)+w>>1]<<16,ie=(W<<3)+ue|0,ke[ie>>1]=be,ke[ie+2>>1]=be>>>16,E=E|J,ke[ie+4>>1]=E,ke[ie+6>>1]=E>>>16,W=W+1|0,(ye|0)!=(W|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(E=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ie=N&-4,W=0,w=E<<1;k=Re[ue+4>>1],ke[ue+4>>1]=Re[ue>>1],ke[ue>>1]=k,k=w+ue|0,J=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=J,k=w+k|0,J=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=J,k=w+k|0,J=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=J,ue=w+k|0,W=W+4|0,(ie|0)!=(W|0););if(N=N&3,!N)break e;for(w=0;k=Re[ue+4>>1],ke[ue+4>>1]=Re[ue>>1],ke[ue>>1]=k,ue=(E<<1)+ue|0,w=w+1|0,(N|0)!=(w|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Mi(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0,rt=0,pt=0;ye=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;E=Ae(W,6),ie=E+w|0,J=Re[ie+4>>1],k=Re[ie>>1],ue=E+ye|0,E=Re[ie+2>>1],ke[ue+2>>1]=E,k=k+E^-32768,ke[ue>>1]=k,ke[ue+4>>1]=J+(E+(k&65535)>>>1|0)^32768,W=W+1|0,(W|0)!=(N|0););break e}if(ie=N>>>0>k>>>0?k:N,!ie)break e;for(ue=k<<1;E=Re[(W+ue<<1)+w>>1],J=Re[(W<<1)+w>>1],Ee=Ae(W,6)+ye|0,be=Re[(k+W<<1)+w>>1],ke[Ee+2>>1]=be,J=J+be^-32768,ke[Ee>>1]=J,ke[Ee+4>>1]=E+(be+(J&65535)>>>1|0)^32768,W=W+1|0,(ie|0)!=(W|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;J=k<<3,ue=J+ye|0,Be=w+J|0,ie=Re[Be+2>>1],Ee=ie+Re[Be>>1]^-32768,E=(Re[Be+4>>1]+(ie+(Ee&65535)>>>1|0)^32768)&65535,be=Ee&65535|ie<<16,ie=ie>>>16|E,J=Re[Be+6>>1]<<16,E=be,ke[ue>>1]=E,ke[ue+2>>1]=E>>>16,J=J|ie,ke[ue+4>>1]=J,ke[ue+6>>1]=J>>>16,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(rt=N>>>0>k>>>0?k:N,!rt)break e;for(pt=Ae(k,3),Be=k<<1;ie=Re[(k+W<<1)+w>>1],Ee=ie+Re[(W<<1)+w>>1]^-32768,E=(Re[(W+Be<<1)+w>>1]+((Ee&65535)+ie>>>1|0)^32768)&65535,be=Ee&65535|ie<<16,ie=ie>>>16|E,J=Re[(W+pt<<1)+w>>1]<<16,ue=(W<<3)+ye|0,E=be,ke[ue>>1]=E,ke[ue+2>>1]=E>>>16,J=J|ie,ke[ue+4>>1]=J,ke[ue+6>>1]=J>>>16,W=W+1|0,(rt|0)!=(W|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(J=s[s[f+4>>2]+12>>2],N>>>0>=4)for(k=N&-4,W=0,ue=J<<1;w=Re[ye+4>>1],ke[ye+4>>1]=Re[ye>>1],ke[ye>>1]=w,E=ue+ye|0,w=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=w,E=E+ue|0,w=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=w,E=E+ue|0,w=Re[E+4>>1],ke[E+4>>1]=Re[E>>1],ke[E>>1]=w,ye=E+ue|0,W=W+4|0,(k|0)!=(W|0););if(k=N&3,!k)break e;for(w=0;N=Re[ye+4>>1],ke[ye+4>>1]=Re[ye>>1],ke[ye>>1]=N,ye=(J<<1)+ye|0,w=w+1|0,(k|0)!=(w|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Pi(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;Ee=s[f+44>>2],ye=f;e:{if(!de[s[f+8>>2]+16|0]){E=s[s[ye+4>>2]+12>>2];break e}if(Ms(s[ye+16>>2],Ee,Ae(N,6)),Ee=s[ye+16>>2],E=s[s[ye+4>>2]+12>>2],!N)break e;if(f=Ee,N>>>0>=4)for(ie=N&-4,J=E<<1;ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+J|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+J|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+J|0,ue=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ue,f=f+J|0,W=W+4|0,(ie|0)!=(W|0););if(J=N&3,!J)break e;for(W=0;ie=Re[f+4>>1],ke[f+4>>1]=Re[f>>1],ke[f>>1]=ie,f=(E<<1)+f|0,W=W+1|0,(J|0)!=(W|0););}e:{t:switch(E-3|0){case 0:if(f=s[ye+52>>2],s[s[ye+8>>2]+8>>2]==2){if(!N)break e;for(W=0;E=Ae(W,6),k=E+Ee|0,J=Re[k>>1],ie=Re[k+4>>1],E=w+E|0,k=f&Re[k+2>>1],ke[E+2>>1]=k,ke[E+4>>1]=(f&ie)-k^32768,ke[E>>1]=(f&J)-k^32768,W=W+1|0,(W|0)!=(N|0););break e}if(E=N>>>0>>0?N:k,!E)break e;for(J=k<<1,W=0;N=Ae(W,6)+Ee|0,ie=Re[N+4>>1],ue=f&Re[N>>1],N=f&Re[N+2>>1],ke[(W<<1)+w>>1]=ue-N^32768,ke[(k+W<<1)+w>>1]=N,ke[(W+J<<1)+w>>1]=(f&ie)-N^32768,W=W+1|0,(E|0)!=(W|0););break e;case 1:break t;default:break e}t:switch(s[s[ye+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(J=s[ye+52>>2],W=0;f=W<<3,k=f+w|0,ie=f+Ee|0,E=J&Re[ie+2>>1],f=(J&Re[ie+4>>1])-E&65535^32768,ue=(J&Re[ie>>1])-E&65535^32768|E<<16,E=f,f=(J&Re[ie+6>>1])<<16,ie=ue,ke[k>>1]=ie,ke[k+2>>1]=ie>>>16,f=f|E,ke[k+4>>1]=f,ke[k+6>>1]=f>>>16,W=W+1|0,(W|0)!=(N|0););break e;case 0:break t;default:break e}if(W=N>>>0>>0?N:k,!W)break e;for(N=s[ye+52>>2],J=Ae(k,3),ie=k<<1,f=0;E=(f<<3)+Ee|0,ue=Re[E+6>>1],be=Re[E+4>>1],Be=N&Re[E>>1],E=N&Re[E+2>>1],ke[(f<<1)+w>>1]=Be-E^32768,ke[(f+k<<1)+w>>1]=E,ke[(f+ie<<1)+w>>1]=(N&be)-E^32768,ke[(f+J<<1)+w>>1]=N&ue,f=f+1|0,(W|0)!=(f|0););}s[ye+44>>2]=s[ye+44>>2]+s[ye+12>>2]}function $s(f,w,N){var k=0,E=0,W=0,J=0,ie=0,ue=0;ie=s[w>>2],J=de[w+8|0],k=s[w+4>>2]+Ae(ie,J>>>1|0)|0;e:{t:{n:{r:{if((k|0)>(J|0)){for(E=J;W=W+1|0,E=E<<1,(k|0)>(E|0););break r}if((N|0)>0)break n}if(k=0,(N|0)>=0)break t;if(k=1,E=1,J>>>0<=de[w+9|0]<<1>>>0)break e;break t}if(k=0,E=1,J>>>0>de[w+9|0]<<1>>>0)break e}E=(W|0)!=0&k}J=N>>31,J=(((J^N)-J<<1)-ie|0)-E|0,k=J>>W,ue=s[f+92>>2]+(s[(s[f+6008>>2]<<2)+6936>>2]^-1)|0,ie=ue-s[f+84>>2]|0;e:{if((k|0)<(ie-1|0)){if((k|0)>=31){E=k>>>1|0,ie=s[f+52>>2]-E|0,s[f+52>>2]=ie;t:{if((ie|0)>=0||(Ot(f),s[f+52>>2]>=0))break t;Ot(f)}k=k-E|0}k=s[f+52>>2]+(k^-1)|0,s[f+52>>2]=k;t:{if((k|0)>=0||(s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}E=k-W|0,s[f+52>>2]=E,ie=s[f+48>>2]|1<>2]=ie,k=J&(-1<=0||(s[f+48>>2]=ie|k>>>0-E,Ot(f),E=s[f+52>>2],(E|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|k>>>0-E,Ot(f),E=s[f+52>>2]}E=k<>2];t:{if((ie|0)>=32){k=E-31|0,s[f+52>>2]=k;n:{if((E|0)>30||(Ot(f),k=s[f+52>>2],(k|0)>=0))break n;Ot(f),k=s[f+52>>2]}W=(s[f+84>>2]+(k-ue|0)|0)+31|0,s[f+52>>2]=W;break t}W=E-ie|0,s[f+52>>2]=W}t:{if((W|0)>=0){k=f+48|0;break t}if(s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),k=f+48|0,W=s[f+52>>2],(W|0)>=0)break t;s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),W=s[f+52>>2]}E=k,k=s[k>>2]|1<>2]=k,E=s[f+84>>2],W=W-E|0,s[f+52>>2]=W,E=J-1&(-1<=0||(s[f+48>>2]=k|E>>>0-W,Ot(f),W=s[f+52>>2],(W|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|E>>>0-W,Ot(f),W=s[f+52>>2]}E=E<>2]=E|s[f+48>>2],E=de[f+132|0],(N|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((J-s[w>>2]|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(E|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(E&254)>>>1|0),oe[w+8|0]=f+1}function m4(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;ye=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;W=Ae(E,6),k=W+w|0,ie=Re[k>>1],ue=Re[k+4>>1],W=W+ye|0,k=Re[k+2>>1],ke[W+2>>1]=k,ke[W+4>>1]=k+ue^32768,ke[W>>1]=k+ie^32768,E=E+1|0,(E|0)!=(N|0););break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(J=k<<1;be=Re[(E<<1)+w>>1],Ee=Re[(E+J<<1)+w>>1],W=Ae(E,6)+ye|0,ie=Re[(k+E<<1)+w>>1],ke[W+2>>1]=ie,ke[W+4>>1]=ie+Ee^32768,ke[W>>1]=ie+be^32768,E=E+1|0,(ue|0)!=(E|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;W=k<<3,ie=W+ye|0,E=w+W|0,J=Re[E+2>>1],ue=(J+Re[E+4>>1]^32768)&65535,Ee=J+Re[E>>1]^32768,J=J&65535,W=J>>>16|0,J=Ee&65535|J<<16,ue=W|ue,W=Re[E+6>>1]<<16,E=J,ke[ie>>1]=E,ke[ie+2>>1]=E>>>16,W=W|ue,ke[ie+4>>1]=W,ke[ie+6>>1]=W>>>16,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(be=N>>>0>k>>>0?k:N,!be)break e;for(Ee=Ae(k,3),Be=k<<1;J=Re[(k+E<<1)+w>>1],ue=(J+Re[(E+Be<<1)+w>>1]^32768)&65535,ie=J+Re[(E<<1)+w>>1]^32768,J=J&65535,W=J>>>16|0,J=ie&65535|J<<16,ue=W|ue,W=Re[(E+Ee<<1)+w>>1]<<16,ie=(E<<3)+ye|0,ke[ie>>1]=J,ke[ie+2>>1]=J>>>16,W=W|ue,ke[ie+4>>1]=W,ke[ie+6>>1]=W>>>16,E=E+1|0,(be|0)!=(E|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(W=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ie=N&-4,E=0,w=W<<1;k=Re[ye+4>>1],ke[ye+4>>1]=Re[ye>>1],ke[ye>>1]=k,k=w+ye|0,ue=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=ue,k=w+k|0,ue=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=ue,k=w+k|0,ue=Re[k+4>>1],ke[k+4>>1]=Re[k>>1],ke[k>>1]=ue,ye=w+k|0,E=E+4|0,(ie|0)!=(E|0););if(N=N&3,!N)break e;for(w=0;k=Re[ye+4>>1],ke[ye+4>>1]=Re[ye>>1],ke[ye>>1]=k,ye=(W<<1)+ye|0,w=w+1|0,(N|0)!=(w|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function d5(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;E=s[f+44>>2];e:{if(!de[s[f+8>>2]+16|0]||(Ms(s[f+16>>2],E,Ae(N,3)),E=s[f+16>>2],!N))break e;if(W=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ue=N&-4;ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,J=J+4|0,(ue|0)!=(J|0););if(ue=N&3,ue)for(J=0;ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,J=J+1|0,(ue|0)!=(J|0););E=s[f+16>>2]}e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(W=s[f+52>>2],s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(J=0;ue=Ae(J,3),k=ue+E|0,ie=de[k+2|0],ye=de[k|0],ue=w+ue|0,k=W&de[k+1|0],oe[ue+1|0]=k,ye=W&ye,oe[ue|0]=ye-k^128,oe[ue+2|0]=(W&ie)-(k+ye>>>1|0)^128,J=J+1|0,(J|0)!=(N|0););break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(ie=k<<1,J=0;N=E+Ae(J,3)|0,ye=de[N+2|0],Ee=W&de[N|0],N=W&de[N+1|0],oe[w+J|0]=Ee-N^128,oe[(k+J|0)+w|0]=N,oe[(J+ie|0)+w|0]=(W&ye)-(N+Ee>>>1|0)^128,J=J+1|0,(ue|0)!=(J|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=s[f+52>>2],J=0;ie=J<<2,W=ie+E|0,ue=k&de[W+1|0],ie=w+ie|0,ye=k&de[W|0],W=((k&de[W+2|0])-(ye+ue>>>1|0)<<16&16711680|ue<<8|ye-ue&255|(k&de[W+3|0])<<24)^8388736,oe[ie|0]=W,oe[ie+1|0]=W>>>8,oe[ie+2|0]=W>>>16,oe[ie+3|0]=W>>>24,J=J+1|0,(J|0)!=(N|0););break e;case 0:break t;default:break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(J=s[f+52>>2],ie=Ae(k,3),ye=k<<1,N=0;W=E+(N<<2)|0,Ee=de[W+3|0],Be=de[W+2|0],be=J&de[W|0],W=J&de[W+1|0],oe[w+N|0]=be-W^128,oe[(N+k|0)+w|0]=W,oe[(N+ye|0)+w|0]=(J&Be)-(W+be>>>1|0)^128,oe[(N+ie|0)+w|0]=J&Ee,N=N+1|0,(ue|0)!=(N|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function yp(f,w,N){var k=0,E=0,W=0,J=0,ie=0;ie=s[w>>2],J=de[w+8|0],k=s[w+4>>2]+Ae(ie,J>>>1|0)|0;e:{t:{n:{r:{if((k|0)>(J|0)){for(E=J;W=W+1|0,E=E<<1,(k|0)>(E|0););break r}if((N|0)>0)break n}if(k=0,(N|0)>=0)break t;if(k=1,E=1,J>>>0<=de[w+9|0]<<1>>>0)break e;break t}if(k=0,E=1,J>>>0>de[w+9|0]<<1>>>0)break e}E=(W|0)!=0&k}J=N>>31,J=(((J^N)-J<<1)-ie|0)-E|0,k=J>>W,E=s[(s[f+5984>>2]<<2)+6936>>2];e:{if((k|0)<(46-E|0)){if((k|0)>=31){E=k>>>1|0,ie=s[f+52>>2]-E|0,s[f+52>>2]=ie;t:{if((ie|0)>=0||(Ot(f),s[f+52>>2]>=0))break t;Ot(f)}k=k-E|0}k=s[f+52>>2]+(k^-1)|0,s[f+52>>2]=k;t:{if((k|0)>=0||(s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}E=k-W|0,s[f+52>>2]=E,ie=s[f+48>>2]|1<>2]=ie,k=J&(-1<=0||(s[f+48>>2]=ie|k>>>0-E,Ot(f),E=s[f+52>>2],(E|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|k>>>0-E,Ot(f),E=s[f+52>>2]}E=k<>2];t:{if((E+-64|0)<=-49){k=W-31|0,s[f+52>>2]=k;n:{if((W|0)>30||(Ot(f),k=s[f+52>>2],(k|0)>=0))break n;Ot(f),k=s[f+52>>2]}W=(k+E|0)-16|0,s[f+52>>2]=W;break t}W=(E+W|0)-47|0,s[f+52>>2]=W}t:{if((W|0)>=0){k=f+48|0;break t}if(s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),k=f+48|0,W=s[f+52>>2],(W|0)>=0)break t;s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),W=s[f+52>>2]}ie=s[k>>2]|1<>2]=ie,k=W-16|0,s[f+52>>2]=k,E=J-1&65535;t:{if((W|0)>=16||(s[f+48>>2]=ie|E>>>16-W,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|E>>>0-k,Ot(f),k=s[f+52>>2]}E=E<>2]=E|s[f+48>>2],E=de[f+108|0],(N|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((J-s[w>>2]|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(E|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(E&254)>>>1|0),oe[w+8|0]=f+1}function g5(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;J=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;W=Ae(E,3),k=W+J|0,W=w+W|0,ie=de[W+2|0],ue=de[W+1|0],W=(de[W|0]-(ue+ie>>>2|0)|0)- -64|0,oe[k+1|0]=W,oe[k+2|0]=W+ue^128,oe[k|0]=W+ie^128,E=E+1|0,(E|0)!=(N|0););break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(be=k<<1;W=Ae(E,3)+J|0,Ee=de[(k+E|0)+w|0],ye=de[(E+be|0)+w|0],ie=(de[w+E|0]-(Ee+ye>>>2|0)|0)- -64|0,oe[W+1|0]=ie,oe[W+2|0]=ie+Ee^128,oe[W|0]=ie+ye^128,E=E+1|0,(ue|0)!=(E|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;W=k<<2,E=W+w|0,ie=de[E+1|0],W=W+J|0,ye=ie,ue=de[E+2|0],ie=(de[E|0]-(ue+ie>>>2|0)|0)- -64|0,E=((ye+ie^128)&255)<<16|ie<<8&65280|(ie+ue^128)&255|de[E+3|0]<<24,oe[W|0]=E,oe[W+1|0]=E>>>8,oe[W+2|0]=E>>>16,oe[W+3|0]=E>>>24,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(be=Ae(k,3),Ee=k<<1;ye=de[(k+E|0)+w|0],Be=de[(E+Ee|0)+w|0],W=(de[w+E|0]-(ye+Be>>>2|0)|0)- -64|0,ie=(E<<2)+J|0,W=(W+Be^128)&255|(W<<8&65280|((W+ye^128)&255)<<16)|de[(E+be|0)+w|0]<<24,oe[ie|0]=W,oe[ie+1|0]=W>>>8,oe[ie+2|0]=W>>>16,oe[ie+3|0]=W>>>24,E=E+1|0,(ue|0)!=(E|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(w=s[s[f+4>>2]+12>>2],N>>>0>=4)for(W=N&-4,E=0;k=de[J+2|0],oe[J+2|0]=de[J|0],oe[J|0]=k,k=w+J|0,J=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=J,k=w+k|0,J=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=J,k=w+k|0,J=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=J,J=w+k|0,E=E+4|0,(W|0)!=(E|0););if(N=N&3,!N)break e;for(E=0;k=de[J+2|0],oe[J+2|0]=de[J|0],oe[J|0]=k,J=w+J|0,E=E+1|0,(N|0)!=(E|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function v4(f,w,N){var k=0,E=0,W=0,J=0,ie=0;ie=s[w>>2],J=de[w+8|0],k=s[w+4>>2]+Ae(ie,J>>>1|0)|0;e:{t:{n:{r:{if((k|0)>(J|0)){for(E=J;W=W+1|0,E=E<<1,(k|0)>(E|0););break r}if((N|0)>0)break n}if(k=0,(N|0)>=0)break t;if(k=1,E=1,J>>>0<=de[w+9|0]<<1>>>0)break e;break t}if(k=0,E=1,J>>>0>de[w+9|0]<<1>>>0)break e}E=(W|0)!=0&k}J=N>>31,J=(((J^N)-J<<1)-ie|0)-E|0,k=J>>W,E=s[(s[f+5984>>2]<<2)+6936>>2];e:{if((k|0)<(34-E|0)){if((k|0)>=31){E=k>>>1|0,ie=s[f+52>>2]-E|0,s[f+52>>2]=ie;t:{if((ie|0)>=0||(Ot(f),s[f+52>>2]>=0))break t;Ot(f)}k=k-E|0}k=s[f+52>>2]+(k^-1)|0,s[f+52>>2]=k;t:{if((k|0)>=0||(s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}E=k-W|0,s[f+52>>2]=E,ie=s[f+48>>2]|1<>2]=ie,k=J&(-1<=0||(s[f+48>>2]=ie|k>>>0-E,Ot(f),E=s[f+52>>2],(E|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|k>>>0-E,Ot(f),E=s[f+52>>2]}E=k<>2];t:{if((E-48|0)<=-45){k=W-31|0,s[f+52>>2]=k;n:{if((W|0)>30||(Ot(f),k=s[f+52>>2],(k|0)>=0))break n;Ot(f),k=s[f+52>>2]}W=(k+E|0)-4|0,s[f+52>>2]=W;break t}W=(E+W|0)-35|0,s[f+52>>2]=W}t:{if((W|0)>=0){k=f+48|0;break t}if(s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),k=f+48|0,W=s[f+52>>2],(W|0)>=0)break t;s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),W=s[f+52>>2]}ie=s[k>>2]|1<>2]=ie,k=W-12|0,s[f+52>>2]=k,E=J-1&4095;t:{if((W|0)>=12||(s[f+48>>2]=ie|E>>>12-W,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|E>>>0-k,Ot(f),k=s[f+52>>2]}E=E<>2]=E|s[f+48>>2],E=de[f+108|0],(N|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((J-s[w>>2]|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(E|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(E&254)>>>1|0),oe[w+8|0]=f+1}function dl(f,w,N){var k=0,E=0,W=0,J=0,ie=0;ie=s[w>>2],J=de[w+8|0],k=s[w+4>>2]+Ae(ie,J>>>1|0)|0;e:{t:{n:{r:{if((k|0)>(J|0)){for(E=J;W=W+1|0,E=E<<1,(k|0)>(E|0););break r}if((N|0)>0)break n}if(k=0,(N|0)>=0)break t;if(k=1,E=1,J>>>0<=de[w+9|0]<<1>>>0)break e;break t}if(k=0,E=1,J>>>0>de[w+9|0]<<1>>>0)break e}E=(W|0)!=0&k}J=N>>31,J=(((J^N)-J<<1)-ie|0)-E|0,k=J>>W,E=s[(s[f+5984>>2]<<2)+6936>>2];e:{if((k|0)<(22-E|0)){if((k|0)>=31){E=k>>>1|0,ie=s[f+52>>2]-E|0,s[f+52>>2]=ie;t:{if((ie|0)>=0||(Ot(f),s[f+52>>2]>=0))break t;Ot(f)}k=k-E|0}k=s[f+52>>2]+(k^-1)|0,s[f+52>>2]=k;t:{if((k|0)>=0||(s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}E=k-W|0,s[f+52>>2]=E,ie=s[f+48>>2]|1<>2]=ie,k=J&(-1<=0||(s[f+48>>2]=ie|k>>>0-E,Ot(f),E=s[f+52>>2],(E|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|k>>>0-E,Ot(f),E=s[f+52>>2]}E=k<>2];t:{if((E-32|0)<=-41){k=W-31|0,s[f+52>>2]=k;n:{if((W|0)>30||(Ot(f),k=s[f+52>>2],(k|0)>=0))break n;Ot(f),k=s[f+52>>2]}W=(k+E|0)+8|0,s[f+52>>2]=W;break t}W=(E+W|0)-23|0,s[f+52>>2]=W}t:{if((W|0)>=0){k=f+48|0;break t}if(s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),k=f+48|0,W=s[f+52>>2],(W|0)>=0)break t;s[f+48>>2]=s[f+48>>2]|1>>>0-W,Ot(f),W=s[f+52>>2]}ie=s[k>>2]|1<>2]=ie,k=W-8|0,s[f+52>>2]=k,E=J-1&255;t:{if((W|0)>=8||(s[f+48>>2]=ie|E>>>8-W,Ot(f),k=s[f+52>>2],(k|0)>=0))break t;s[f+48>>2]=s[f+48>>2]|E>>>0-k,Ot(f),k=s[f+52>>2]}E=E<>2]=E|s[f+48>>2],E=de[f+108|0],(N|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((J-s[w>>2]|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(E|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(E&254)>>>1|0),oe[w+8|0]=f+1}function wp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0,Be=0;E=s[f+44>>2];e:{if(!de[s[f+8>>2]+16|0]||(Ms(s[f+16>>2],E,Ae(N,3)),E=s[f+16>>2],!N))break e;if(W=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ue=N&-4;ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,J=J+4|0,(ue|0)!=(J|0););if(ue=N&3,ue)for(J=0;ie=de[E+2|0],oe[E+2|0]=de[E|0],oe[E|0]=ie,E=E+W|0,J=J+1|0,(ue|0)!=(J|0););E=s[f+16>>2]}e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(W=s[f+52>>2],s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(J=0;ue=Ae(J,3),k=ue+E|0,ie=de[k|0],ye=de[k+2|0],ue=w+ue|0,k=W&de[k+1|0],oe[ue+1|0]=k,oe[ue+2|0]=(W&ye)-k^128,oe[ue|0]=(W&ie)-k^128,J=J+1|0,(J|0)!=(N|0););break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(ie=k<<1,J=0;N=E+Ae(J,3)|0,ye=de[N+2|0],Ee=W&de[N|0],N=W&de[N+1|0],oe[w+J|0]=Ee-N^128,oe[(k+J|0)+w|0]=N,oe[(J+ie|0)+w|0]=(W&ye)-N^128,J=J+1|0,(ue|0)!=(J|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=s[f+52>>2],J=0;ie=J<<2,W=ie+E|0,ue=k&de[W+1|0],ie=w+ie|0,W=((k&de[W|0])-ue&255|((k&de[W+2|0])-ue<<16&16711680|ue<<8)|(k&de[W+3|0])<<24)^8388736,oe[ie|0]=W,oe[ie+1|0]=W>>>8,oe[ie+2|0]=W>>>16,oe[ie+3|0]=W>>>24,J=J+1|0,(J|0)!=(N|0););break e;case 0:break t;default:break e}if(ue=N>>>0>>0?N:k,!ue)break e;for(J=s[f+52>>2],ie=Ae(k,3),ye=k<<1,N=0;W=E+(N<<2)|0,be=de[W+3|0],Be=de[W+2|0],Ee=J&de[W|0],W=J&de[W+1|0],oe[w+N|0]=Ee-W^128,oe[(N+k|0)+w|0]=W,oe[(N+ye|0)+w|0]=(J&Be)-W^128,oe[(N+ie|0)+w|0]=J&be,N=N+1|0,(ue|0)!=(N|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function k4(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0;W=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;ie=Ae(E,3),k=ie+w|0,J=de[k+2|0],ue=de[k|0],ie=W+ie|0,k=de[k+1|0],oe[ie+1|0]=k,ue=k+ue^-128,oe[ie|0]=ue,oe[ie+2|0]=J+(k+(ue&255)>>>1|0)^128,E=E+1|0,(E|0)!=(N|0););break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(Ee=k<<1;be=de[(E+Ee|0)+w|0],ye=de[w+E|0],ie=Ae(E,3)+W|0,J=de[(k+E|0)+w|0],oe[ie+1|0]=J,ye=J+ye^-128,oe[ie|0]=ye,oe[ie+2|0]=be+(J+(ye&255)>>>1|0)^128,E=E+1|0,(ue|0)!=(E|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;J=k<<2,E=J+w|0,ie=de[E+1|0],J=W+J|0,ue=(ie+de[E|0]^128)&255,E=((de[E+2|0]+(ue+ie>>>1|0)^128)&255)<<16|ie<<8|ue|de[E+3|0]<<24,oe[J|0]=E,oe[J+1|0]=E>>>8,oe[J+2|0]=E>>>16,oe[J+3|0]=E>>>24,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(Ee=N>>>0>k>>>0?k:N,!Ee)break e;for(be=Ae(k,3),ye=k<<1;J=de[(k+E|0)+w|0],ue=(J+de[w+E|0]^128)&255,ie=(E<<2)+W|0,J=ue|(((de[(E+ye|0)+w|0]+(J+ue>>>1|0)^128)&255)<<16|J<<8)|de[(E+be|0)+w|0]<<24,oe[ie|0]=J,oe[ie+1|0]=J>>>8,oe[ie+2|0]=J>>>16,oe[ie+3|0]=J>>>24,E=E+1|0,(Ee|0)!=(E|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(w=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ie=N&-4,E=0;k=de[W+2|0],oe[W+2|0]=de[W|0],oe[W|0]=k,k=w+W|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,k=w+k|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,k=w+k|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,W=w+k|0,E=E+4|0,(ie|0)!=(E|0););if(N=N&3,!N)break e;for(E=0;k=de[W+2|0],oe[W+2|0]=de[W|0],oe[W|0]=k,W=w+W|0,E=E+1|0,(N|0)!=(E|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Cp(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0;W=s[f+44>>2];e:{t:switch(s[s[f+4>>2]+12>>2]-3|0){case 0:if(s[s[f+8>>2]+8>>2]==2){if(!N)break e;for(;ie=Ae(E,3),k=ie+w|0,J=de[k|0],ue=de[k+2|0],ie=W+ie|0,k=de[k+1|0],oe[ie+1|0]=k,oe[ie+2|0]=k+ue^128,oe[ie|0]=k+J^128,E=E+1|0,(E|0)!=(N|0););break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(ye=k<<1;Ee=de[w+E|0],be=de[(E+ye|0)+w|0],ie=Ae(E,3)+W|0,J=de[(k+E|0)+w|0],oe[ie+1|0]=J,oe[ie+2|0]=J+be^128,oe[ie|0]=J+Ee^128,E=E+1|0,(ue|0)!=(E|0););break e;case 1:break t;default:break e}t:switch(s[s[f+8>>2]+8>>2]-1|0){case 1:if(!N)break e;for(k=0;J=k<<2,E=J+w|0,ie=de[E+1|0],J=W+J|0,E=(ie+de[E|0]^128)&255|(((ie+de[E+2|0]^128)&255)<<16|ie<<8)|de[E+3|0]<<24,oe[J|0]=E,oe[J+1|0]=E>>>8,oe[J+2|0]=E>>>16,oe[J+3|0]=E>>>24,k=k+1|0,(k|0)!=(N|0););break e;case 0:break t;default:break e}if(ue=N>>>0>k>>>0?k:N,!ue)break e;for(ye=Ae(k,3),Ee=k<<1;ie=(E<<2)+W|0,J=de[(k+E|0)+w|0],J=((J+de[(E+Ee|0)+w|0]^128)&255)<<16|J<<8|(J+de[w+E|0]^128)&255|de[(E+ye|0)+w|0]<<24,oe[ie|0]=J,oe[ie+1|0]=J>>>8,oe[ie+2|0]=J>>>16,oe[ie+3|0]=J>>>24,E=E+1|0,(ue|0)!=(E|0););}e:{if(!de[s[f+8>>2]+16|0]|!N)break e;if(w=s[s[f+4>>2]+12>>2],N>>>0>=4)for(ie=N&-4,E=0;k=de[W+2|0],oe[W+2|0]=de[W|0],oe[W|0]=k,k=w+W|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,k=w+k|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,k=w+k|0,W=de[k+2|0],oe[k+2|0]=de[k|0],oe[k|0]=W,W=w+k|0,E=E+4|0,(ie|0)!=(E|0););if(N=N&3,!N)break e;for(E=0;k=de[W+2|0],oe[W+2|0]=de[W|0],oe[W|0]=k,W=w+W|0,E=E+1|0,(N|0)!=(E|0););}s[f+44>>2]=s[f+44>>2]+s[f+12>>2]}function Vh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+108|0]=s[w+16>>2],s[f+104>>2]=ie,s[f+96>>2]=k,s[f+100>>2]=E;e:{if(!(s[f+96>>2]!=18|s[f+100>>2]!=67|s[f+104>>2]!=276)){w=s[11895],s[f+5996>>2]=(s[11896]-w>>>1|0)+w;break e}w=s[f+6004>>2],E=s[f+6e3>>2],k=w-E|0;t:{n:{if(k>>>0<=131071){if(ie=131072-k|0,J=s[f+6008>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=131072?131072:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6008>>2]=k+w,w=k+131072|0,s[f+6004>>2]=w,s[f+6e3>>2]=k,!E)break t;Gr(E),w=s[f+6004>>2];break t}if((k|0)==131072)break t;w=E+131072|0}s[f+6004>>2]=w}if(E=s[f+6e3>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-65536|0,E=s[f+104>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+100>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+96>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<65536)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+6e3>>2],!(k>>>0>2]-w>>>0))break}s[f+5996>>2]=w+65536}for(E=f+5960|0,w=f+120|0;s[w+64>>2]=1024,s[w+68>>2]=0,s[w+48>>2]=1024,s[w+52>>2]=0,s[w+32>>2]=1024,s[w+36>>2]=0,s[w+16>>2]=1024,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=1024,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5984>>2]=0,s[f+5960>>2]=0,s[f+5964>>2]=1024,s[f+112>>2]=N,ke[f+5980>>1]=1,w=f+5972|0,s[w>>2]=1,s[w+4>>2]=1024,ke[f+5968>>1]=1}function Uh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+100|0]=s[w+16>>2],s[f+96>>2]=ie,s[f+88>>2]=k,s[f+92>>2]=E;e:{if(!(s[f+88>>2]!=18|s[f+92>>2]!=67|s[f+96>>2]!=276)){w=s[11895],s[f+5988>>2]=(s[11896]-w>>>1|0)+w;break e}w=s[f+5996>>2],E=s[f+5992>>2],k=w-E|0;t:{n:{if(k>>>0<=131071){if(ie=131072-k|0,J=s[f+6e3>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=131072?131072:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6e3>>2]=k+w,w=k+131072|0,s[f+5996>>2]=w,s[f+5992>>2]=k,!E)break t;Gr(E),w=s[f+5996>>2];break t}if((k|0)==131072)break t;w=E+131072|0}s[f+5996>>2]=w}if(E=s[f+5992>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-65536|0,E=s[f+96>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+92>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+88>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<65536)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+5992>>2],!(k>>>0>2]-w>>>0))break}s[f+5988>>2]=w+65536}for(E=f+5952|0,w=f+112|0;s[w+64>>2]=1024,s[w+68>>2]=0,s[w+48>>2]=1024,s[w+52>>2]=0,s[w+32>>2]=1024,s[w+36>>2]=0,s[w+16>>2]=1024,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=1024,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5976>>2]=0,s[f+5952>>2]=0,s[f+5956>>2]=1024,s[f+104>>2]=N,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=1,s[w+4>>2]=1024,ke[f+5960>>1]=1}function _p(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+108|0]=s[w+16>>2],s[f+104>>2]=ie,s[f+96>>2]=k,s[f+100>>2]=E;e:{if(!(s[f+96>>2]!=18|s[f+100>>2]!=67|s[f+104>>2]!=276)){w=s[11892],s[f+5996>>2]=(s[11893]-w>>>1|0)+w;break e}w=s[f+6004>>2],E=s[f+6e3>>2],k=w-E|0;t:{n:{if(k>>>0<=8191){if(ie=8192-k|0,J=s[f+6008>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=8192?8192:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6008>>2]=k+w,w=k- -8192|0,s[f+6004>>2]=w,s[f+6e3>>2]=k,!E)break t;Gr(E),w=s[f+6004>>2];break t}if((k|0)==8192)break t;w=E- -8192|0}s[f+6004>>2]=w}if(E=s[f+6e3>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-4096|0,E=s[f+104>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+100>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+96>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<4096)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+6e3>>2],!(k>>>0>2]-w>>>0))break}s[f+5996>>2]=w+4096}for(E=f+5960|0,w=f+120|0;s[w+64>>2]=64,s[w+68>>2]=0,s[w+48>>2]=64,s[w+52>>2]=0,s[w+32>>2]=64,s[w+36>>2]=0,s[w+16>>2]=64,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=64,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5984>>2]=0,s[f+5960>>2]=0,s[f+5964>>2]=64,s[f+112>>2]=N,ke[f+5980>>1]=1,w=f+5972|0,s[w>>2]=1,s[w+4>>2]=64,ke[f+5968>>1]=1}function p5(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+100|0]=s[w+16>>2],s[f+96>>2]=ie,s[f+88>>2]=k,s[f+92>>2]=E;e:{if(!(s[f+88>>2]!=18|s[f+92>>2]!=67|s[f+96>>2]!=276)){w=s[11892],s[f+5988>>2]=(s[11893]-w>>>1|0)+w;break e}w=s[f+5996>>2],E=s[f+5992>>2],k=w-E|0;t:{n:{if(k>>>0<=8191){if(ie=8192-k|0,J=s[f+6e3>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=8192?8192:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6e3>>2]=k+w,w=k- -8192|0,s[f+5996>>2]=w,s[f+5992>>2]=k,!E)break t;Gr(E),w=s[f+5996>>2];break t}if((k|0)==8192)break t;w=E- -8192|0}s[f+5996>>2]=w}if(E=s[f+5992>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-4096|0,E=s[f+96>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+92>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+88>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<4096)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+5992>>2],!(k>>>0>2]-w>>>0))break}s[f+5988>>2]=w+4096}for(E=f+5952|0,w=f+112|0;s[w+64>>2]=64,s[w+68>>2]=0,s[w+48>>2]=64,s[w+52>>2]=0,s[w+32>>2]=64,s[w+36>>2]=0,s[w+16>>2]=64,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=64,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5976>>2]=0,s[f+5952>>2]=0,s[f+5956>>2]=64,s[f+104>>2]=N,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=1,s[w+4>>2]=64,ke[f+5960>>1]=1}function Gt(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+108|0]=s[w+16>>2],s[f+104>>2]=ie,s[f+96>>2]=k,s[f+100>>2]=E;e:{if(!(s[f+96>>2]!=3|s[f+100>>2]!=7|s[f+104>>2]!=21)){w=s[11886],s[f+5996>>2]=(s[11887]-w>>>1|0)+w;break e}w=s[f+6004>>2],E=s[f+6e3>>2],k=w-E|0;t:{n:{if(k>>>0<=511){if(ie=512-k|0,J=s[f+6008>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=512?512:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6008>>2]=k+w,w=k+512|0,s[f+6004>>2]=w,s[f+6e3>>2]=k,!E)break t;Gr(E),w=s[f+6004>>2];break t}if((k|0)==512)break t;w=E+512|0}s[f+6004>>2]=w}if(E=s[f+6e3>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-256|0,E=s[f+104>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+100>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+96>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<256)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+6e3>>2],!(k>>>0>2]-w>>>0))break}s[f+5996>>2]=w+256}for(E=f+5960|0,w=f+120|0;s[w+64>>2]=4,s[w+68>>2]=0,s[w+48>>2]=4,s[w+52>>2]=0,s[w+32>>2]=4,s[w+36>>2]=0,s[w+16>>2]=4,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=4,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5984>>2]=0,s[f+5960>>2]=0,s[f+5964>>2]=4,s[f+112>>2]=N,ke[f+5980>>1]=1,w=f+5972|0,s[w>>2]=1,s[w+4>>2]=4,ke[f+5968>>1]=1}function Ic(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0;E=s[w+8>>2],k=s[w+4>>2],ie=s[w+12>>2],oe[f+100|0]=s[w+16>>2],s[f+96>>2]=ie,s[f+88>>2]=k,s[f+92>>2]=E;e:{if(!(s[f+88>>2]!=3|s[f+92>>2]!=7|s[f+96>>2]!=21)){w=s[11886],s[f+5988>>2]=(s[11887]-w>>>1|0)+w;break e}w=s[f+5996>>2],E=s[f+5992>>2],k=w-E|0;t:{n:{if(k>>>0<=511){if(ie=512-k|0,J=s[f+6e3>>2],ie>>>0<=J-w>>>0){w=fr(w,0,ie)+ie|0;break n}if(w=J-E|0,J=w<<1,w=w>>>0>=1073741823?2147483647:J>>>0<=512?512:J,J=Gn(w),fr(J+k|0,0,ie),k=ea(J,E,k),s[f+6e3>>2]=k+w,w=k+512|0,s[f+5996>>2]=w,s[f+5992>>2]=k,!E)break t;Gr(E),w=s[f+5996>>2];break t}if((k|0)==512)break t;w=E+512|0}s[f+5996>>2]=w}if(E=s[f+5992>>2],(E|0)!=(w|0))for(k=0,w=E;;){ue=w+k|0,w=k-256|0,E=s[f+96>>2],W=252;t:{if((w|0)<=(0-E|0)||(ie=s[f+92>>2],W=253,(w|0)<=(0-ie|0))||(J=s[f+88>>2],W=254,(w|0)<=(0-J|0))||(W=255,(k|0)<256)||(W=0,!w)||(W=1,(w|0)<(J|0))||(W=2,(w|0)<(ie|0)))break t;W=(w|0)<(E|0)?3:4}if(oe[ue|0]=W,k=k+1|0,w=s[f+5992>>2],!(k>>>0>2]-w>>>0))break}s[f+5988>>2]=w+256}for(E=f+5952|0,w=f+112|0;s[w+64>>2]=4,s[w+68>>2]=0,s[w+48>>2]=4,s[w+52>>2]=0,s[w+32>>2]=4,s[w+36>>2]=0,s[w+16>>2]=4,s[w+20>>2]=0,s[w+8>>2]=0,s[w+12>>2]=1,s[w>>2]=4,s[w+4>>2]=0,s[w+72>>2]=0,s[w+76>>2]=1,s[w+56>>2]=0,s[w+60>>2]=1,s[w+40>>2]=0,s[w+44>>2]=1,s[w+24>>2]=0,s[w+28>>2]=1,w=w+80|0,(E|0)!=(w|0););s[f+5976>>2]=0,s[f+5952>>2]=0,s[f+5956>>2]=4,s[f+104>>2]=N,ke[f+5972>>1]=1,w=f+5964|0,s[w>>2]=1,s[w+4>>2]=4,ke[f+5960>>1]=1}function m5(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0;w=1703;e:{t:switch(N|0){case 1:w=1556;break e;case 100:w=4688;break e;case 101:w=4626;break e;case 102:w=4421;break e;case 103:w=4364;break e;case 104:w=1321;break e;case 105:w=4569;break e;case 110:w=3238;break e;case 111:w=1415;break e;case 106:w=3626;break e;case 112:w=2816;break e;case 113:w=2887;break e;case 15:w=1944;break e;case 16:w=3505;break e;case 17:w=3558;break e;case 18:w=1878;break e;case 19:w=2142;break e;case 20:w=1573;break e;case 21:w=2081;break e;case 22:w=3020;break e;case 23:w=3103;break e;case 24:w=1024;break e;case 25:w=4079;break e;case 26:w=1815;break e;case 27:w=2983;break e;case 28:w=2023;break e;case 29:w=2419;break e;case 203:w=4264;break e;case 2:w=2308;break e;case 3:w=1145;break e;case 4:w=3784;break e;case 5:w=2618;break e;case 6:w=4160;break e;case 7:w=2938;break e;case 8:w=3693;break e;case 9:w=3747;break e;case 10:w=2529;break e;case 11:w=3443;break e;case 12:w=3357;break e;case 13:w=2208;break e;case 14:w=3845;break e;case 200:w=3957;break e;case 201:w=3885;break e;case 202:w=4480;break e;case 204:w=1219;break e;case 205:w=4749;break e;case 206:w=1726;break e;case 0:break e;default:break t}w=2491}if(k=L1(w),k>>>0<2147483632){e:{t:{if(k>>>0>=11){E=(k|15)+1|0,N=Gn(E),s[f+8>>2]=E|-2147483648,s[f>>2]=N,s[f+4>>2]=k,E=N+k|0,f=N;break t}if(oe[f+11|0]=k,E=f+k|0,!k)break e}ea(f,w,k)}oe[E|0]=0;return}ta(),_t()}function xp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0;W=In+-64|0,In=W;e:{if(wa(w,14104,0)){s[N>>2]=0,k=1;break e}t:{if(de[f+8|0]&24)E=1;else{if(!w||(E=Wi(w,13836),!E))break t;E=(de[E+8|0]&24)!=0}J=wa(f,w,E)}if(J){if(k=1,f=s[N>>2],!f)break e;s[N>>2]=s[f>>2];break e}t:{if(!w)break t;if(E=Wi(w,13884),!E||(w=s[N>>2],w&&(s[N>>2]=s[w>>2]),J=s[E+8>>2],w=s[f+8>>2],J&(w^-1)&7|w&(J^-1)&96)||(k=1,wa(s[f+12>>2],s[E+12>>2],0)))break e;if(wa(s[f+12>>2],14092,0)){if(f=s[E+12>>2],!f)break e;k=!Wi(f,13936);break e}if(J=s[f+12>>2],!J)break t;if(k=0,w=Wi(J,13884),w){if(!(oe[f+8|0]&1))break e;f=s[E+12>>2],N=0;n:{r:{for(;;){if(k=0,!f)break n;if(f=Wi(f,13884),!f|s[f+8>>2]&(s[w+8>>2]^-1))break r;if(k=1,wa(s[w+12>>2],s[f+12>>2],0))break n;if(!(oe[w+8|0]&1)||(k=s[w+12>>2],!k))break r;if(w=Wi(k,13884),w){f=s[f+12>>2];continue}break}if(w=Wi(k,13996),!w)break r;N=M4(w,s[f+12>>2])}k=N}break e}if(w=Wi(J,13996),w){if(!(oe[f+8|0]&1))break e;k=M4(w,s[E+12>>2]);break e}if(w=Wi(J,13788),!w||(f=s[E+12>>2],!f)||(f=Wi(f,13788),!f))break e;k=W+8|0,fr(k|4,0,52),s[W+56>>2]=1,s[W+20>>2]=-1,s[W+16>>2]=w,s[W+8>>2]=f,Mr[s[s[f>>2]+28>>2]](f,k,s[N>>2],1),f=s[W+32>>2],!s[N>>2]|(f|0)!=1||(s[N>>2]=s[W+24>>2]),k=(f|0)==1;break e}k=0}return In=W- -64|0,k|0}function y4(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0;W=In-1040|0,In=W,ue=s[12164];e:{t:{n:{E=W+16|0,w=Re[((N>>>0<=153?N:0)<<1)+12608>>1]+10693|0,k=L1(w);r:{if(k>>>0>=1024){Ms(E,w,1023),oe[E+1023|0]=0,w=68;break r}Ms(E,w,k+1|0),w=0}switch(w+1|0){case 1:break e;case 0:break n;default:break t}}w=s[12164]}if(E=5561,(w|0)==28)break e;tn(),_t()}if(!de[E|0]){s[W>>2]=N,J=In-16|0,In=J,s[J+12>>2]=W,w=In-160|0,In=w,s[w+148>>2]=1023,E=W+16|0,s[w+144>>2]=E,N=fr(w,0,144),s[N+76>>2]=-1,s[N+36>>2]=219,s[N+80>>2]=-1,s[N+44>>2]=N+159,s[N+84>>2]=N+144,oe[E|0]=0,k=In-208|0,In=k,s[k+204>>2]=W,w=k+160|0,fr(w,0,40),s[k+200>>2]=s[k+204>>2];e:{if((p4(0,k+200|0,k+80|0,w)|0)<0)break e;ye=s[N+76>>2]>=0,w=s[N>>2],s[N+72>>2]<=0&&(s[N>>2]=w&-33);t:{n:{r:{if(!s[N+48>>2]){s[N+48>>2]=80,s[N+28>>2]=0,s[N+16>>2]=0,s[N+20>>2]=0,ie=s[N+44>>2],s[N+44>>2]=k;break r}if(s[N+16>>2])break n}if(Yr(N))break t}p4(N,k+200|0,k+80|0,k+160|0)}if(ie&&(Mr[s[N+36>>2]](N,0,0)|0,s[N+48>>2]=0,s[N+44>>2]=ie,s[N+28>>2]=0,s[N+16>>2]=0,s[N+20>>2]=0),s[N>>2]=s[N>>2]|w&32,!ye)break e}In=k+208|0,In=N+160|0,In=J+16|0}s[12164]=ue,Ip(f,E),In=W+1040|0}function Ms(f,w,N){var k=0,E=0,W=0;if(N>>>0>=512)return He(f|0,w|0,N|0),f;E=f+N|0;e:{if(!((f^w)&3)){t:{if(!(f&3)){N=f;break t}if(!N){N=f;break t}for(N=f;;){if(oe[N|0]=de[w|0],w=w+1|0,N=N+1|0,!(N&3))break t;if(!(N>>>0>>0))break}}k=E&-4;t:{if(k>>>0<64||(W=k+-64|0,W>>>0>>0))break t;for(;s[N>>2]=s[w>>2],s[N+4>>2]=s[w+4>>2],s[N+8>>2]=s[w+8>>2],s[N+12>>2]=s[w+12>>2],s[N+16>>2]=s[w+16>>2],s[N+20>>2]=s[w+20>>2],s[N+24>>2]=s[w+24>>2],s[N+28>>2]=s[w+28>>2],s[N+32>>2]=s[w+32>>2],s[N+36>>2]=s[w+36>>2],s[N+40>>2]=s[w+40>>2],s[N+44>>2]=s[w+44>>2],s[N+48>>2]=s[w+48>>2],s[N+52>>2]=s[w+52>>2],s[N+56>>2]=s[w+56>>2],s[N+60>>2]=s[w+60>>2],w=w- -64|0,N=N- -64|0,W>>>0>=N>>>0;);}if(N>>>0>=k>>>0)break e;for(;s[N>>2]=s[w>>2],w=w+4|0,N=N+4|0,k>>>0>N>>>0;);break e}if(E>>>0<4){N=f;break e}if(k=E-4|0,k>>>0>>0){N=f;break e}for(N=f;oe[N|0]=de[w|0],oe[N+1|0]=de[w+1|0],oe[N+2|0]=de[w+2|0],oe[N+3|0]=de[w+3|0],w=w+4|0,N=N+4|0,k>>>0>=N>>>0;);}if(N>>>0>>0)for(;oe[N|0]=de[w|0],w=w+1|0,N=N+1|0,(E|0)!=(N|0););return f}function Ot(f){var w=0,N=0,k=0,E=0;e:{if(bt[f+56>>2]>=4){if(s[f+52>>2]>31||(w=de[f+64|0],oe[s[f+60>>2]]=s[f+48>>2]>>>(w?25:24),w=w?7:8,E=s[f+48>>2]<>2]=E,k=w+s[f+52>>2]|0,s[f+52>>2]=k,w=s[f+60>>2],N=de[w|0],s[f+60>>2]=w+1,s[f+56>>2]=s[f+56>>2]-1,s[f+68>>2]=s[f+68>>2]+1,N=(N|0)==255,oe[f+64|0]=N,(k|0)>31)||(oe[w+1|0]=E>>>(N?25:24),w=N?7:8,E=s[f+48>>2]<>2]=E,k=w+s[f+52>>2]|0,s[f+52>>2]=k,w=s[f+60>>2],N=de[w|0],s[f+60>>2]=w+1,s[f+56>>2]=s[f+56>>2]-1,s[f+68>>2]=s[f+68>>2]+1,oe[f+64|0]=(N|0)==255,(k|0)>31)||(k=w,w=(N|0)==255,oe[k+1|0]=E>>>(w?25:24),w=w?7:8,E=s[f+48>>2]<>2]=E,k=w+s[f+52>>2]|0,s[f+52>>2]=k,w=s[f+60>>2],N=de[w|0],s[f+60>>2]=w+1,s[f+56>>2]=s[f+56>>2]-1,s[f+68>>2]=s[f+68>>2]+1,N=(N|0)==255,oe[f+64|0]=N,(k|0)>31))break e;oe[w+1|0]=E>>>(N?25:24),w=N?7:8,s[f+48>>2]=s[f+48>>2]<>2]=w+s[f+52>>2],w=s[f+60>>2],N=de[w|0],s[f+60>>2]=w+1,s[f+56>>2]=s[f+56>>2]-1,s[f+68>>2]=s[f+68>>2]+1,oe[f+64|0]=(N|0)==255;return}Vn(3),_t()}s[f+52>>2]=32}function Bh(f){var w=0,N=0,k=0,E=0,W=0;k=s[3678],w=f+7&-8,N=k+w|0;e:{t:{if(N>>>0<=k>>>0&&w||N>>>0>E2()<<16>>>0&&!(F(N|0)|0))break t;s[3678]=N;break e}s[12164]=48,k=-1}if((k|0)!=-1){w=f+k|0,N=w-16|0,s[N+12>>2]=16,s[N>>2]=16,f=s[12160],f?W=s[f+8>>2]:W=0;e:{t:{if((W|0)==(k|0)){if(E=k-(s[k-4>>2]&-2)|0,W=s[E-4>>2],s[f+8>>2]=w,f=E-(W&-2)|0,w=-16,!(oe[(f+s[f>>2]|0)-4|0]&1))break t;w=s[f+4>>2],s[w+8>>2]=s[f+8>>2],s[s[f+8>>2]+4>>2]=w,N=N-f|0,s[f>>2]=N;break e}s[k+12>>2]=16,s[k>>2]=16,s[k+8>>2]=w,s[k+4>>2]=f,s[12160]=k,w=16}f=w+k|0,N=N-f|0,s[f>>2]=N}s[((N&-4)+f|0)-4>>2]=N|1,w=s[f>>2]-8|0;e:{if(w>>>0<=127){N=(w>>>3|0)-1|0;break e}if(E=tt(w),N=((w>>>29-E^4)-(E<<2)|0)+110|0,w>>>0<=4095)break e;N=((w>>>30-E^2)-(E<<1)|0)+71|0,N=N>>>0>=63?63:N}w=N<<4,s[f+4>>2]=w+47616,w=w+47624|0,s[f+8>>2]=s[w>>2],s[w>>2]=f,s[s[f+8>>2]+4>>2]=f,w=s[12162],E=s[12163],f=N&31,(N&63)>>>0>=32?(N=1<>>32-f),s[12162]=W|w,s[12163]=N|E}return(k|0)!=-1}function eo(f,w,N,k){var E=0,W=0,J=0,ie=0;E=s[f>>2];e:{t:{if(!E){E=w;break t}if((w|0)<(E|0)|(E|0)<=0)break e}if(ie=s[f+4>>2],(E|0)<(ie|0)|(N|0)>=(ie|0)&&ie)break e;t:{if((E|0)>=128){w=N+1|0,W=w,J=(E>>>0>=4095?4095:E)+128>>>8|0,w=(J+Ae(N,3)|0)+2|0,W=(w|0)<=(N|0)||(w|0)>(E|0)?W:w,w=(Ae(N,5)+(J<<2)|0)+3|0,w=(w|0)>(E|0)||(w|0)<(W|0)?W:w,N=(Ae(N,7)+Ae(J,17)|0)+4|0,J=(N|0)>(E|0)||(w|0)>(N|0)?w:N;break t}w=N+1|0,W=w,J=256/(E+1|0)<<16>>16,w=(3/(J|0)<<16>>16)+Ae(N,3)|0,w=(w|0)<=2?2:w,W=(w|0)<=(N|0)||(w|0)>(E|0)?W:w,w=(7/(J|0)<<16>>16)+Ae(N,5)|0,w=(w|0)<=3?3:w,w=(w|0)>(E|0)||(w|0)<(W|0)?W:w,N=(21/(J|0)<<16>>16)+Ae(N,7)|0,N=(N|0)<=4?4:N,J=(N|0)>(E|0)||(w|0)>(N|0)?w:N}if(ie=ie||W,N=s[f+8>>2],N&&(W=0,(N|0)<(ie|0)||(w=N,(E|0)<(w|0)))||(N=s[f+12>>2],N&&(W=0,(w|0)>(N|0)|(N|0)>(E|0)))||(f=s[f+16>>2],f&&(W=0,(f|0)<3|f>>>0>((E|0)<=255?255:E)>>>0))||(W=1,!k))break e;s[k+8>>2]=w,s[k+4>>2]=ie,s[k>>2]=E,s[k+16>>2]=f||64,s[k+12>>2]=N||J}return W}function w4(f,w,N){var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0;ue=In-16|0,In=ue,ie=de[f+11|0]>>>7|0?(s[f+8>>2]&2147483647)-1|0:10,E=ie,de[f+11|0]>>>7|0?W=s[f+4>>2]:W=de[f+11|0]&127;e:{if(E-W>>>0>=N>>>0){if(!N)break e;de[f+11|0]>>>7|0?E=s[f>>2]:E=f,pu(E+W|0,w,N),w=N+W|0;t:{if(de[f+11|0]>>>7|0){s[f+4>>2]=w;break t}oe[f+11|0]=w|de[f+11|0]&128,oe[f+11|0]=de[f+11|0]&127}oe[ue+15|0]=0,oe[w+E|0]=de[ue+15|0];break e}E=In-16|0,In=E;t:{if(ye=W,k=(W+N|0)-ie|0,k>>>0<=(ie^-1)+2147483631>>>0){de[f+11|0]>>>7|0?W=s[f>>2]:W=f,ie>>>0<1073741799?(s[E+12>>2]=ie<<1,s[E>>2]=k+ie,k=In-16|0,In=k,In=k+16|0,k=E+12|0,k=s[(bt[E>>2]>2]?k:E)>>2],k>>>0>=11?(J=k+16&-16,k=J-1|0,J=(k|0)==11?J:k):J=10,J=J+1|0):J=2147483631,N4(E,J),k=s[E>>2],ye&&pu(k,W,ye),N&&pu(k+ye|0,w,N),(ie|0)!=10&&Gr(W),s[f>>2]=k,s[f+8>>2]=s[f+8>>2]&-2147483648|s[E+4>>2]&2147483647,s[f+8>>2]=s[f+8>>2]|-2147483648,w=f,f=N+ye|0,s[w+4>>2]=f,oe[E+12|0]=0,oe[f+k|0]=de[E+12|0],In=E+16|0;break t}ta(),_t()}}In=ue+16|0}function Gh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0;k=In-48|0,In=k;e:{t:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=16)break t;f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=6,s[f+4>>2]=w,s[f>>2]=6380;break e}if(W=f+4|0,J=f+20|0,E=s[f+32>>2],!E){E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+8>>2]=w,s[k+12>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Tf(E,k+8|0,N,W,J);break e}if(s[f+12>>2]==16){n:switch(E-1|0){case 0:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+16>>2]=w,s[k+20>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Wh(E,k+16|0,N,W,J);break e;case 1:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+24>>2]=w,s[k+28>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=$h(E,k+24|0,N,W,J);break e;case 2:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+32>>2]=w,s[k+36>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=S4(E,k+32|0,N,W,J);break e;default:break n}Vn(9),_t()}Vn(8),_t()}f=Gn(24),w=s[w>>2],oe[f+20|0]=0,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=6,s[f+4>>2]=w,s[f>>2]=6492}return In=k+48|0,f|0}function Sp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0;k=In-48|0,In=k;e:{t:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=16)break t;f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=8,s[f+4>>2]=w,s[f>>2]=6380;break e}if(W=f+4|0,J=f+20|0,E=s[f+32>>2],!E){E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+8>>2]=w,s[k+12>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Tf(E,k+8|0,N,W,J);break e}if(s[f+12>>2]==16){n:switch(E-1|0){case 0:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+16>>2]=w,s[k+20>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Wh(E,k+16|0,N,W,J);break e;case 1:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+24>>2]=w,s[k+28>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=$h(E,k+24|0,N,W,J);break e;case 2:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+32>>2]=w,s[k+36>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=S4(E,k+32|0,N,W,J);break e;default:break n}Vn(9),_t()}Vn(8),_t()}f=Gn(24),w=s[w>>2],oe[f+20|0]=0,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=8,s[f+4>>2]=w,s[f>>2]=6492}return In=k+48|0,f|0}function Oc(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0;k=In-48|0,In=k;e:{t:{if(!s[f+28>>2]){if(W=s[f+12>>2],(W|0)!=16)break t;f=Gn(16),w=s[w>>2],s[f+12>>2]=N,s[f+8>>2]=2,s[f+4>>2]=w,s[f>>2]=6380;break e}if(W=f+4|0,J=f+20|0,E=s[f+32>>2],!E){E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+8>>2]=w,s[k+12>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Tf(E,k+8|0,N,W,J);break e}if(s[f+12>>2]==16){n:switch(E-1|0){case 0:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+16>>2]=w,s[k+20>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=Wh(E,k+16|0,N,W,J);break e;case 1:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+24>>2]=w,s[k+28>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=$h(E,k+24|0,N,W,J);break e;case 2:E=Gn(56),f=s[w+4>>2],w=s[w>>2],s[k+32>>2]=w,s[k+36>>2]=f,s[k+40>>2]=w,s[k+44>>2]=f,f=S4(E,k+32|0,N,W,J);break e;default:break n}Vn(9),_t()}Vn(8),_t()}f=Gn(24),w=s[w>>2],oe[f+20|0]=0,s[f+16>>2]=-1<>2]=N,s[f+8>>2]=2,s[f+4>>2]=w,s[f>>2]=6492}return In=k+48|0,f|0}function gu(f,w,N){var k=0,E=0,W=0;if(k=s[(s[f+5984>>2]<<2)+6936>>2],1<>2];;){k=E,E=k-1|0,s[f+52>>2]=E;e:{if((k|0)>0||(s[f+48>>2]=s[f+48>>2]|1>>>1-k,Ot(f),E=s[f+52>>2],(E|0)>=0))break e;s[f+48>>2]=s[f+48>>2]|1>>>0-E,Ot(f),E=s[f+52>>2]}if(s[f+48>>2]=s[f+48>>2]|1<>2],W=((k|0)>=30?30:k)+1|0,s[f+5984>>2]=W,w=(-1<>2])+w|0,k=s[(W<<2)+6936>>2],!((w|0)>=1<>2],k=w-1|0,s[f+52>>2]=k;n:{if((w|0)>0){E=f+48|0;break n}if(s[f+48>>2]=s[f+48>>2]|1>>>1-w,Ot(f),E=f+48|0,k=s[f+52>>2],(k|0)>=0)break n;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}f=1<>2]+(k^-1)|0,s[f+52>>2]=k;n:{if((k|0)>=0){E=f+48|0;break n}if(s[f+48>>2]=s[f+48>>2]|w>>>0-k,Ot(f),E=f+48|0,k=s[f+52>>2],(k|0)>=0)break n;s[f+48>>2]=s[f+48>>2]|w>>>0-k,Ot(f),k=s[f+52>>2]}f=w<>2]=f|s[E>>2]}}function A1(f,w,N){var k=0,E=0,W=0;if(k=s[(s[f+6008>>2]<<2)+6936>>2],1<>2];;){k=E,E=k-1|0,s[f+52>>2]=E;e:{if((k|0)>0||(s[f+48>>2]=s[f+48>>2]|1>>>1-k,Ot(f),E=s[f+52>>2],(E|0)>=0))break e;s[f+48>>2]=s[f+48>>2]|1>>>0-E,Ot(f),E=s[f+52>>2]}if(s[f+48>>2]=s[f+48>>2]|1<>2],W=((k|0)>=30?30:k)+1|0,s[f+6008>>2]=W,w=(-1<>2])+w|0,k=s[(W<<2)+6936>>2],!((w|0)>=1<>2],k=w-1|0,s[f+52>>2]=k;n:{if((w|0)>0){E=f+48|0;break n}if(s[f+48>>2]=s[f+48>>2]|1>>>1-w,Ot(f),E=f+48|0,k=s[f+52>>2],(k|0)>=0)break n;s[f+48>>2]=s[f+48>>2]|1>>>0-k,Ot(f),k=s[f+52>>2]}f=1<>2]+(k^-1)|0,s[f+52>>2]=k;n:{if((k|0)>=0){E=f+48|0;break n}if(s[f+48>>2]=s[f+48>>2]|w>>>0-k,Ot(f),E=f+48|0,k=s[f+52>>2],(k|0)>=0)break n;s[f+48>>2]=s[f+48>>2]|w>>>0-k,Ot(f),k=s[f+52>>2]}f=w<>2]=f|s[E>>2]}}function Tp(f,w,N){var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0,be=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(w){if(!N)break l;break u}f=(f>>>0)/(N>>>0)|0,Ce=0;break e}if(!f)break o;break s}if(!(N-1&N))break a;W=(tt(N)+33|0)-tt(w)|0,J=0-W|0;break r}f=(w>>>0)/0|0,Ce=0;break e}if(k=32-tt(w)|0,k>>>0<31)break i;break n}if((N|0)==1)break t;W=N?31-tt(N-1^N)|0:32,N=W&31,(W&63)>>>0>=32?f=w>>>N|0:(k=w>>>N|0,f=((1<>>N),Ce=k;break e}W=k+1|0,J=63-k|0}if(k=W&63,E=k&31,k>>>0>=32?(k=0,ie=w>>>E|0):(k=w>>>E|0,ie=((1<>>E),J=J&63,E=J&31,J>>>0>=32?(w=f<>>32-E|w<>>31,k=ie<<1|w>>>31,E=be-(ue+(k>>>0>J>>>0)|0)>>31,ye=N&E,ie=k-ye|0,k=ue-(k>>>0>>0)|0,w=w<<1|f>>>31,f=Ee|f<<1,Ee=E&1,W=W-1|0,!!W;);Ce=w<<1|f>>>31,f=Ee|f<<1;break e}f=0,w=0}Ce=w}return f}function C4(f,w,N){var k=0,E=0,W=0,J=0;if(k=f+4|0,E=(k+w|0)-1&0-w,w=s[f>>2],E+N>>>0<=(w+f|0)-4>>>0){W=s[f+4>>2],s[W+8>>2]=s[f+8>>2],s[s[f+8>>2]+4>>2]=W,(k|0)!=(E|0)&&(E=E-k|0,W=f-(s[f-4>>2]&-2)|0,k=E+s[W>>2]|0,s[W>>2]=k,s[(W+(k&-4)|0)-4>>2]=k,f=f+E|0,w=w-E|0,s[f>>2]=w);e:{if(N+24>>>0<=w>>>0){k=(f+N|0)+8|0,w=(w-N|0)-8|0,s[k>>2]=w,s[(k+(w&-4)|0)-4>>2]=w|1,E=s[k>>2]-8|0;t:{if(E>>>0<=127){w=(E>>>3|0)-1|0;break t}if(W=tt(E),w=((E>>>29-W^4)-(W<<2)|0)+110|0,E>>>0<=4095)break t;w=((E>>>30-W^2)-(W<<1)|0)+71|0,w=w>>>0>=63?63:w}E=w<<4,s[k+4>>2]=E+47616,E=E+47624|0,s[k+8>>2]=s[E>>2],s[E>>2]=k,s[s[k+8>>2]+4>>2]=k,E=s[12162],W=s[12163],k=w&31,(w&63)>>>0>=32?(w=1<>>32-k,k=J),s[12162]=k|E,s[12163]=w|W,w=N+8|0,s[f>>2]=w,s[((w&-4)+f|0)-4>>2]=w;break e}s[(f+w|0)-4>>2]=w}f=f+4|0}else f=0;return f}function _4(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0;var E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0;W=s[f+4>>2];e:{if(de[f+20|0]){if(!N)break e;if(ie=N&3,k=0,N>>>0>=4)for(E=N&-4,N=0;oe[w+k|0]=de[k+W|0]&de[f+16|0],J=k|1,oe[J+w|0]=de[W+J|0]&de[f+16|0],J=k|2,oe[J+w|0]=de[W+J|0]&de[f+16|0],J=k|3,oe[J+w|0]=de[W+J|0]&de[f+16|0],k=k+4|0,N=N+4|0,(E|0)!=(N|0););if(ie)for(;oe[w+k|0]=de[k+W|0]&de[f+16|0],k=k+1|0,ue=ue+1|0,(ie|0)!=(ue|0););W=s[f+4>>2];break e}if(!N)break e;if(ie=s[f+16>>2],k=0,N>>>0>=4)for(J=N&-4;E=k<<1,ke[E+w>>1]=ie&Re[W+E>>1],ue=E|2,ke[ue+w>>1]=ie&Re[W+ue>>1],ue=E|4,ke[ue+w>>1]=ie&Re[W+ue>>1],E=E|6,ke[E+w>>1]=ie&Re[W+E>>1],k=k+4|0,ye=ye+4|0,(J|0)!=(ye|0););if(N=N&3,!N)break e;for(;E=k<<1,ke[E+w>>1]=ie&Re[W+E>>1],k=k+1|0,Ee=Ee+1|0,(N|0)!=(Ee|0););}s[f+4>>2]=s[f+12>>2]+W}function Vn(f){var w=0,N=0,k=0,E=0,W=0,J=0;E=qh(16),w=In-16|0,In=w,de[14773]||(oe[14773]=1),s[w+12>>2]=14708,s[w+8>>2]=f,f=s[w+12>>2],s[w>>2]=s[w+8>>2],s[w+4>>2]=f,J=In-32|0,In=J,k=Ip(J,5561),N=In-16|0,In=N,s[w>>2]&&(de[k+11|0]>>>7|0?f=s[k+4>>2]:f=de[k+11|0]&127,f&&w4(k,5559,L1(5559)),f=s[w+4>>2],Mr[s[s[f>>2]+24>>2]](N,f,s[w>>2]),de[N+11|0]>>>7|0?f=s[N>>2]:f=N,de[N+11|0]>>>7|0?W=s[N+4>>2]:W=de[N+11|0]&127,w4(k,f,W),Rf(N)),W=s[k+4>>2],f=J+16|0,s[f>>2]=s[k>>2],s[f+4>>2]=W,s[f+8>>2]=s[k+8>>2],s[k>>2]=0,s[k+4>>2]=0,s[k+8>>2]=0,In=N+16|0,s[E>>2]=14468,s[E>>2]=14560,W=E+4|0,de[f+11|0]>>>7|0?N=s[f>>2]:N=f,ju(W,N),Rf(f),Rf(k),s[E>>2]=13488,f=s[w+4>>2],s[E+8>>2]=s[w>>2],s[E+12>>2]=f,In=J+32|0,s[E>>2]=5936,In=w+16|0,dt(E|0,5916,29),_t()}function Ep(){En(14092,3553),te(14116,2703,1,1,0),fn(14128,2473,1,-128,127),fn(14152,2466,1,-128,127),fn(14140,2464,1,0,255),fn(14164,1213,2,-32768,32767),fn(14176,1204,2,0,65535),fn(14188,1552,4,-2147483648,2147483647),fn(14200,1543,4,0,-1),fn(14212,2739,4,-2147483648,2147483647),fn(14224,2730,4,0,-1),b4(14236,1663,-2147483648,2147483647),b4(14248,1662,0,-1),De(14260,1656,4),De(14272,3231,8),mr(5632,2770),mr(10060,5277),t(10132,4,2744),t(10208,2,2782),t(10284,4,2797),r(5816,2708),xt(10324,0,5208),xt(10364,0,5310),xt(5860,1,5238),xt(10404,2,4840),xt(10444,3,4871),xt(10484,4,4911),xt(10524,5,4940),xt(10564,4,5347),xt(10604,5,5377),xt(10364,0,5042),xt(5860,1,5009),xt(10404,2,5108),xt(10444,3,5074),xt(10484,4,5175),xt(10524,5,5141),xt(10644,6,4978),xt(10684,7,5416)}function ea(f,w,N){var k=0,E=0;e:{if((f|0)==(w|0))break e;if(E=f+N|0,w-E>>>0<=0-(N<<1)>>>0)return Ms(f,w,N);k=(f^w)&3;t:{n:{if(f>>>0>>0){if(k){k=f;break t}if(!(f&3)){k=f;break n}for(k=f;;){if(!N)break e;if(oe[k|0]=de[w|0],w=w+1|0,N=N-1|0,k=k+1|0,!(k&3))break}break n}r:{if(k)break r;if(E&3)for(;;){if(!N)break e;if(N=N-1|0,k=N+f|0,oe[k|0]=de[w+N|0],!(k&3))break}if(N>>>0<=3)break r;for(;N=N-4|0,s[N+f>>2]=s[w+N>>2],N>>>0>3;);}if(!N)break e;for(;N=N-1|0,oe[N+f|0]=de[w+N|0],!!N;);break e}if(N>>>0<=3)break t;for(;s[k>>2]=s[w>>2],w=w+4|0,k=k+4|0,N=N-4|0,N>>>0>3;);}if(!N)break e;for(;oe[k|0]=de[w|0],k=k+1|0,w=w+1|0,N=N-1|0,!!N;);}return f}function x4(f,w,N){e:switch(w-9|0){case 0:w=s[N>>2],s[N>>2]=w+4,s[f>>2]=s[w>>2];return;case 6:w=s[N>>2],s[N>>2]=w+4,w=ke[w>>1],s[f>>2]=w,s[f+4>>2]=w>>31;return;case 7:w=s[N>>2],s[N>>2]=w+4,s[f>>2]=Re[w>>1],s[f+4>>2]=0;return;case 8:w=s[N>>2],s[N>>2]=w+4,w=oe[w|0],s[f>>2]=w,s[f+4>>2]=w>>31;return;case 9:w=s[N>>2],s[N>>2]=w+4,s[f>>2]=de[w|0],s[f+4>>2]=0;return;case 16:w=s[N>>2]+7&-8,s[N>>2]=w+8,Qt[f>>3]=Qt[w>>3];return;case 17:du(f,N);default:return;case 1:case 4:case 14:w=s[N>>2],s[N>>2]=w+4,w=s[w>>2],s[f>>2]=w,s[f+4>>2]=w>>31;return;case 2:case 5:case 11:case 15:w=s[N>>2],s[N>>2]=w+4,s[f>>2]=s[w>>2],s[f+4>>2]=0;return;case 3:case 10:case 12:case 13:break e}w=s[N>>2]+7&-8,s[N>>2]=w+8,N=s[w+4>>2],s[f>>2]=s[w>>2],s[f+4>>2]=N}function Wi(f,w){var N=0,k=0,E=0;N=In+-64|0,In=N,k=s[f>>2],E=s[k-4>>2],k=s[k-8>>2],s[N+32>>2]=0,s[N+36>>2]=0,s[N+40>>2]=0,s[N+44>>2]=0,s[N+48>>2]=0,s[N+52>>2]=0,oe[N+55|0]=0,oe[N+56|0]=0,oe[N+57|0]=0,oe[N+58|0]=0,oe[N+59|0]=0,oe[N+60|0]=0,oe[N+61|0]=0,oe[N+62|0]=0,s[N+24>>2]=0,s[N+28>>2]=0,s[N+20>>2]=0,s[N+16>>2]=13740,s[N+12>>2]=f,s[N+8>>2]=w,f=f+k|0,k=0;e:{if(wa(E,w,0)){s[N+56>>2]=1,Mr[s[s[E>>2]+20>>2]](E,N+8|0,f,f,1,0),k=s[N+32>>2]==1?f:0;break e}Mr[s[s[E>>2]+24>>2]](E,N+8|0,f,1,0);t:switch(s[N+44>>2]){case 0:k=s[N+48>>2]==1&&s[N+36>>2]==1&&s[N+40>>2]==1?s[N+28>>2]:0;break e;case 1:break t;default:break e}if(s[N+32>>2]!=1&&s[N+48>>2]|s[N+36>>2]!=1|s[N+40>>2]!=1)break e;k=s[N+24>>2]}return In=N- -64|0,k}function fr(f,w,N){var k=0,E=0,W=0,J=0;e:{if(!N||(oe[f|0]=w,k=f+N|0,oe[k-1|0]=w,N>>>0<3)||(oe[f+2|0]=w,oe[f+1|0]=w,oe[k-3|0]=w,oe[k-2|0]=w,N>>>0<7)||(oe[f+3|0]=w,oe[k-4|0]=w,N>>>0<9)||(k=0-f&3,E=k+f|0,w=Ae(w&255,16843009),s[E>>2]=w,k=N-k&-4,N=k+E|0,s[N-4>>2]=w,k>>>0<9)||(s[E+8>>2]=w,s[E+4>>2]=w,s[N-8>>2]=w,s[N-12>>2]=w,k>>>0<25)||(s[E+24>>2]=w,s[E+20>>2]=w,s[E+16>>2]=w,s[E+12>>2]=w,s[N-16>>2]=w,s[N-20>>2]=w,s[N-24>>2]=w,s[N-28>>2]=w,J=E&4|24,N=k-J|0,N>>>0<32))break e;for(k=Q2(w,0,1,1),W=Ce,w=E+J|0;s[w+24>>2]=k,s[w+28>>2]=W,s[w+16>>2]=k,s[w+20>>2]=W,s[w+8>>2]=k,s[w+12>>2]=W,s[w>>2]=k,s[w+4>>2]=W,w=w+32|0,N=N-32|0,N>>>0>31;);}return f}function is(f,w,N,k){var E=0,W=0,J=0,ie=0,ue=0,ye=0;s[f+48>>2]<=15&&zr(f),W=s[f+44>>2];e:{if(W>>>0>=65536){ie=W,W=tt(W),ue=W+1|0,J=ie<>2]=J,E=s[f+48>>2]-ue|0,s[f+48>>2]=E;break e}for(ue=15,ie=W<<15,s[f+44>>2]=ie,E=s[f+48>>2]-15|0,s[f+48>>2]=E;W=ue,(E|0)<=0&&(zr(f),E=s[f+48>>2],ie=s[f+44>>2]),J=ie<<1,s[f+44>>2]=J,E=E-1|0,s[f+48>>2]=E,ue=W+1|0,ye=(ie|0)>=0,ie=J,!!ye;);}e:{t:{if(((k^-1)+N|0)<=(W|0)){if((k|0)>(E|0)){if(zr(f),E=s[f+48>>2],(E|0)<(k|0))break t;J=s[f+44>>2]}return s[f+44>>2]=J<>2]=E-k,(J>>>32-k|0)+1|0}if(w){if((w|0)>(E|0)){if(zr(f),E=s[f+48>>2],(E|0)<(w|0))break e;J=s[f+44>>2]}s[f+44>>2]=J<>2]=E-w,W=(W<>>32-w|0)|0}return W}Vn(5),_t()}Vn(5),_t()}function Gr(f){f=f|0;var w=0,N=0,k=0,E=0,W=0;if(f){w=f-4|0,E=s[w>>2],N=E,k=w,W=s[f-8>>2],f=W&-2,(f|0)!=(W|0)&&(k=w-f|0,N=s[k+4>>2],s[N+8>>2]=s[k+8>>2],s[s[k+8>>2]+4>>2]=N,N=f+E|0),f=w+E|0,w=s[f>>2],(w|0)!=s[(f+w|0)-4>>2]&&(E=s[f+4>>2],s[E+8>>2]=s[f+8>>2],s[s[f+8>>2]+4>>2]=E,N=w+N|0),s[k>>2]=N,s[((N&-4)+k|0)-4>>2]=N|1,w=s[k>>2]-8|0;e:{if(w>>>0<=127){f=(w>>>3|0)-1|0;break e}if(N=tt(w),f=((w>>>29-N^4)-(N<<2)|0)+110|0,w>>>0<=4095)break e;f=((w>>>30-N^2)-(N<<1)|0)+71|0,f=f>>>0>=63?63:f}w=f<<4,s[k+4>>2]=w+47616,w=w+47624|0,s[k+8>>2]=s[w>>2],s[w>>2]=k,s[s[k+8>>2]+4>>2]=k,w=s[12162],N=s[12163],k=f&31,(f&63)>>>0>=32?(f=1<>>32-k),s[12162]=E|w,s[12163]=f|N}}function Dp(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0;ie=In-16|0,In=ie,k=Re[N>>1]|Re[N+2>>1]<<16,ke[w+24>>1]=k,ke[w+26>>1]=k>>>16,ke[w+28>>1]=Re[N+4>>1];e:{k=Ae(de[w+29|0],Ae(Ae(Re[w+26>>1],k&65535),de[w+28|0]+7>>>3|0)),N=s[w+4>>2],J=s[w>>2],E=N-J|0;t:{n:{if(k>>>0>E>>>0){if(ue=k-E|0,W=s[w+8>>2],ue>>>0<=W-N>>>0){N=fr(N,0,ue)+ue|0;break n}if((k|0)<0)break e;if(N=W-J|0,W=N<<1,N=N>>>0>=1073741823?2147483647:k>>>0>>0?W:k,W=Gn(N),fr(W+E|0,0,ue),E=ea(W,J,E),s[w+8>>2]=E+N,N=k+E|0,s[w+4>>2]=N,s[w>>2]=E,!J)break t;Gr(J),N=s[w+4>>2];break t}if(k>>>0>=E>>>0)break t;N=k+J|0}s[w+4>>2]=N}w=s[w>>2],s[ie+12>>2]=w,s[ie+8>>2]=N-w,ye=f,Ee=Qn(5860,ie+8|0)|0,s[ye>>2]=Ee,In=ie+16|0;return}Li(),_t()}function zr(f){var w=0,N=0,k=0,E=0,W=0,J=0,ie=0;if(w=s[f+52>>2],w>>>0>=s[f+60>>2]-3>>>0){N=s[f+56>>2],E=N-1|0;e:{for(;;){if(w>>>0>=N>>>0){if(s[f+48>>2])break e;Vn(5),_t()}if(J=de[w|0],ie=(J|0)!=255,!(ie|(w|0)!=(E|0)&oe[w+1|0]>=0)){if(s[f+48>>2]>0)break e;Vn(5),_t()}if(w=w+1|0,s[f+52>>2]=w,k=s[f+48>>2],W=k+8|0,s[f+48>>2]=W,s[f+44>>2]=s[f+44>>2]|J<<24-k,ie||(W=k+7|0,s[f+48>>2]=W),!((W|0)<24))break}E=f,f=wi(w,255,N-w|0),s[E+60>>2]=f||N}return}N=de[w|0]|de[w+1|0]<<8|(de[w+2|0]<<16|de[w+3|0]<<24),E=w,w=s[f+48>>2],k=(32-w|0)/8|0,s[f+52>>2]=E+k,s[f+48>>2]=w+(k<<3),s[f+44>>2]=s[f+44>>2]|(N<<24|(N&65280)<<8|(N>>>8&65280|N>>>24))>>>w}function Sf(f,w,N,k){var E=0,W=0,J=0;if(W=w<<1,E=s[f+8>>2],bt[f+4>>2]>=(W+E|0)+8>>>0){if(s[f+8>>2]=E+1,oe[E+s[f>>2]|0]=255,E=s[f+8>>2],s[f+8>>2]=E+1,oe[E+s[f>>2]|0]=218,E=s[f>>2]+s[f+8>>2]|0,W=W+6|0,W=W<<8|(W&65280)>>>8,oe[E|0]=W,oe[E+1|0]=W>>>8,E=s[f+8>>2],s[f+8>>2]=E+3,oe[(E+s[f>>2]|0)+2|0]=w,w)for(E=de[f+12|0],W=0;J=s[f+8>>2],s[f+8>>2]=J+1,oe[s[f>>2]+J|0]=E,E=s[f+8>>2],s[f+8>>2]=E+1,oe[E+s[f>>2]|0]=0,E=de[f+12|0]+1|0,oe[f+12|0]=E,W=W+1|0,(W|0)!=(w|0););w=s[f+8>>2],s[f+8>>2]=w+1,oe[w+s[f>>2]|0]=N,w=s[f+8>>2],s[f+8>>2]=w+1,oe[w+s[f>>2]|0]=k,w=s[f+8>>2],s[f+8>>2]=w+1,oe[w+s[f>>2]|0]=0;return}Vn(3),_t()}function Uu(f,w){f=f|0,w=w|0;var N=0,k=0,E=0,W=0;if(k=In-16|0,In=k,!de[14772]){if(oe[14772]=1,E=14736,W=or(1098)|0,s[E>>2]=W,!de[49496]){e:{for(;;){if(!de[N+48848|0]){oe[N+48848|0]=1,s[(N<<2)+48976>>2]=0,s[12375]=N,N=0;break e}if(N=N+1|0,(N|0)==128)break}N=6}N&&(Nc(),_t()),oe[49496]=1}e:{if(!de[49497]){if(N=s[12375],N>>>0>127|!de[N+48848|0]?N=28:(s[(N<<2)+48976>>2]=49500,N=0),N)break e;oe[49497]=1}if(N=Ec(12),!N)break e;s[N+4>>2]=0,s[N>>2]=26,s[N+8>>2]=s[12376],s[12376]=N}}N=s[w+16>>2],w=s[w+12>>2],s[k+12>>2]=w,s[k+8>>2]=N-w,E=f,W=ni(s[3684],1,5876,k+8|0)|0,s[E>>2]=W,In=k+16|0}function ya(f,w,N,k,E){if(f=f|0,w=w|0,N=N|0,k=k|0,E=E|0,wa(f,s[w+8>>2],E)){s[w+28>>2]==1|s[w+4>>2]!=(N|0)||(s[w+28>>2]=k);return}e:{if(wa(f,s[w>>2],E)){if(!(s[w+16>>2]!=(N|0)&s[w+20>>2]!=(N|0))){if((k|0)!=1)break e;s[w+32>>2]=1;return}s[w+32>>2]=k;t:{if(s[w+44>>2]==4)break t;if(ke[w+52>>1]=0,f=s[f+8>>2],Mr[s[s[f>>2]+20>>2]](f,w,N,N,1,E),de[w+53|0]){if(s[w+44>>2]=3,!de[w+52|0])break t;break e}s[w+44>>2]=4}if(s[w+20>>2]=N,s[w+40>>2]=s[w+40>>2]+1,s[w+36>>2]!=1|s[w+24>>2]!=2)break e;oe[w+54|0]=1;return}f=s[f+8>>2],Mr[s[s[f>>2]+24>>2]](f,w,N,k,E)}}function l0(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0,ie=0,ue=0,ye=0,Ee=0;ie=In-16|0,In=ie;e:{k=s[w+4>>2],J=s[w>>2],E=k-J|0;t:{n:{if(E>>>0>>0){if(ue=N-E|0,W=s[w+8>>2],ue>>>0<=W-k>>>0){k=fr(k,0,ue)+ue|0;break n}if((N|0)<0)break e;if(k=W-J|0,W=k<<1,k=k>>>0>=1073741823?2147483647:N>>>0>>0?W:N,W=Gn(k),fr(W+E|0,0,ue),E=ea(W,J,E),s[w+8>>2]=E+k,k=N+E|0,s[w+4>>2]=k,s[w>>2]=E,!J)break t;Gr(J),k=s[w+4>>2];break t}if(N>>>0>=E>>>0)break t;k=N+J|0}s[w+4>>2]=k}w=s[w>>2],s[ie+12>>2]=w,s[ie+8>>2]=k-w,ye=f,Ee=Qn(5860,ie+8|0)|0,s[ye>>2]=Ee,In=ie+16|0;return}Li(),_t()}function Tf(f,w,N,k,E){var W=0;s[f+12>>2]=N,s[f+8>>2]=E,s[f+4>>2]=k,s[f>>2]=7180,N=s[k>>2],E=s[k+12>>2],s[f+24>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0;e:{t:{N=Ae(N,E);n:{if(!N){s[f+28>>2]=0,s[f+32>>2]=0,s[f+36>>2]=0;break n}if((N|0)<0)break t;if(N=N<<1,E=Gn(N),s[f+16>>2]=E,W=N+E|0,s[f+24>>2]=W,fr(E,0,N),s[f+36>>2]=0,s[f+28>>2]=0,s[f+32>>2]=0,s[f+20>>2]=W,(N|0)<0)break e;E=Gn(N),s[f+28>>2]=E,W=N+E|0,s[f+36>>2]=W,fr(E,0,N),s[f+32>>2]=W}return N=s[w+4>>2],s[f+44>>2]=s[w>>2],s[f+48>>2]=N,s[f+52>>2]=-1<>2]^-1,f}Li(),_t()}Li(),_t()}function Wh(f,w,N,k,E){var W=0;s[f+12>>2]=N,s[f+8>>2]=E,s[f+4>>2]=k,s[f>>2]=7272,N=s[k>>2],E=s[k+12>>2],s[f+24>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0;e:{t:{N=Ae(N,E);n:{if(!N){s[f+28>>2]=0,s[f+32>>2]=0,s[f+36>>2]=0;break n}if((N|0)<0)break t;if(N=N<<1,E=Gn(N),s[f+16>>2]=E,W=N+E|0,s[f+24>>2]=W,fr(E,0,N),s[f+36>>2]=0,s[f+28>>2]=0,s[f+32>>2]=0,s[f+20>>2]=W,(N|0)<0)break e;E=Gn(N),s[f+28>>2]=E,W=N+E|0,s[f+36>>2]=W,fr(E,0,N),s[f+32>>2]=W}return N=s[w+4>>2],s[f+44>>2]=s[w>>2],s[f+48>>2]=N,s[f+52>>2]=-1<>2]^-1,f}Li(),_t()}Li(),_t()}function $h(f,w,N,k,E){var W=0;s[f+12>>2]=N,s[f+8>>2]=E,s[f+4>>2]=k,s[f>>2]=7364,N=s[k>>2],E=s[k+12>>2],s[f+24>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0;e:{t:{N=Ae(N,E);n:{if(!N){s[f+28>>2]=0,s[f+32>>2]=0,s[f+36>>2]=0;break n}if((N|0)<0)break t;if(N=N<<1,E=Gn(N),s[f+16>>2]=E,W=N+E|0,s[f+24>>2]=W,fr(E,0,N),s[f+36>>2]=0,s[f+28>>2]=0,s[f+32>>2]=0,s[f+20>>2]=W,(N|0)<0)break e;E=Gn(N),s[f+28>>2]=E,W=N+E|0,s[f+36>>2]=W,fr(E,0,N),s[f+32>>2]=W}return N=s[w+4>>2],s[f+44>>2]=s[w>>2],s[f+48>>2]=N,s[f+52>>2]=-1<>2]^-1,f}Li(),_t()}Li(),_t()}function S4(f,w,N,k,E){var W=0;s[f+12>>2]=N,s[f+8>>2]=E,s[f+4>>2]=k,s[f>>2]=7456,N=s[k>>2],E=s[k+12>>2],s[f+24>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0;e:{t:{N=Ae(N,E);n:{if(!N){s[f+28>>2]=0,s[f+32>>2]=0,s[f+36>>2]=0;break n}if((N|0)<0)break t;if(N=N<<1,E=Gn(N),s[f+16>>2]=E,W=N+E|0,s[f+24>>2]=W,fr(E,0,N),s[f+36>>2]=0,s[f+28>>2]=0,s[f+32>>2]=0,s[f+20>>2]=W,(N|0)<0)break e;E=Gn(N),s[f+28>>2]=E,W=N+E|0,s[f+36>>2]=W,fr(E,0,N),s[f+32>>2]=W}return N=s[w+4>>2],s[f+44>>2]=s[w>>2],s[f+48>>2]=N,s[f+52>>2]=-1<>2]^-1,f}Li(),_t()}Li(),_t()}function ba(f,w){var N=0,k=0,E=0,W=0,J=0;if(E=1,N=de[w+8|0],k=s[w+4>>2]+Ae(s[w>>2],N>>>1|0)|0,(N|0)<(k|0))for(;W=W+1|0,N=N<<1,(k|0)>(N|0););return N=is(f,W,s[f+84>>2]+(s[(s[f+6e3>>2]<<2)+6936>>2]^-1)|0,s[f+76>>2]),J=s[w>>2],k=N+J|0,E=W?E:de[w+8|0]<=de[w+9|0]<<1>>>0,W=de[f+124|0],f=k&1,k=(f+k|0)/2|0,E=(f|0)==(E|0)?0-k|0:k,(E|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((N-J|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(W|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(W&254)>>>1|0),oe[w+8|0]=f+1,E}function T4(){var f=0;Ue(5696,5724,5760,0,5640,10,5776,0,5776,0,2405,5666,11),ln(5696,1,5780,5640,12,13),f=Gn(8),s[f+4>>2]=0,s[f>>2]=14,Kt(5696,2260,3,5784,5824,15,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=16,Kt(5696,2277,2,5868,5669,17,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=18,Kt(5696,3314,2,5880,5888,19,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=20,Kt(5696,2478,2,5948,5669,21,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=22,Kt(5696,3339,2,5956,5669,23,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=24,Kt(5696,1687,2,5964,5669,25,f|0,0)}function Bu(f,w){var N=0,k=0,E=0,W=0,J=0;if(E=1,N=de[w+8|0],k=s[w+4>>2]+Ae(s[w>>2],N>>>1|0)|0,(N|0)<(k|0))for(;W=W+1|0,N=N<<1,(k|0)>(N|0););return N=is(f,W,31-s[(s[f+5976>>2]<<2)+6936>>2]|0,8),J=s[w>>2],k=N+J|0,E=W?E:de[w+8|0]<=de[w+9|0]<<1>>>0,W=de[f+100|0],f=k&1,k=(f+k|0)/2|0,E=(f|0)==(E|0)?0-k|0:k,(E|0)<0&&(oe[w+9|0]=de[w+9|0]+1),N=s[w+4>>2]+((N-J|0)+1>>1)|0,s[w+4>>2]=N,f=de[w+8|0],(f|0)==(W|0)&&(s[w+4>>2]=N>>1,oe[w+9|0]=de[w+9|0]>>>1,f=(W&254)>>>1|0),oe[w+8|0]=f+1,E}function js(f,w){if(!f)return 0;e:{t:{if(f){if(w>>>0<=127)break t;n:{if(!s[s[12203]>>2]){if((w&-128)==57216)break t;break n}if(w>>>0<=2047){oe[f+1|0]=w&63|128,oe[f|0]=w>>>6|192,f=2;break e}if(!((w&-8192)!=57344&w>>>0>=55296)){oe[f+2|0]=w&63|128,oe[f|0]=w>>>12|224,oe[f+1|0]=w>>>6&63|128,f=3;break e}if(w-65536>>>0<=1048575){oe[f+3|0]=w&63|128,oe[f|0]=w>>>18|240,oe[f+2|0]=w>>>6&63|128,oe[f+1|0]=w>>>12&63|128,f=4;break e}}s[12164]=25,f=-1}else f=1;break e}oe[f|0]=w,f=1}return f}function Ip(f,w){var N=0,k=0,E=0,W=0,J=0,ie=0;W=In-16|0,In=W,k=L1(w),E=In-16|0,In=E;e:{if(k>>>0<=2147483631){t:{if(k>>>0<11){oe[f+11|0]=de[f+11|0]&128|k,oe[f+11|0]=de[f+11|0]&127,N=f;break t}ie=E+8|0,k>>>0>=11?(J=k+16&-16,N=J-1|0,N=(N|0)==11?J:N):N=10,N4(ie,N+1|0),N=s[E+8>>2],s[f>>2]=N,s[f+8>>2]=s[f+8>>2]&-2147483648|s[E+12>>2]&2147483647,s[f+8>>2]=s[f+8>>2]|-2147483648,s[f+4>>2]=k}pu(N,w,k),oe[E+7|0]=0,oe[k+N|0]=de[E+7|0],In=E+16|0;break e}ta(),_t()}return In=W+16|0,f}function wi(f,w,N){var k=0,E=0;k=(N|0)!=0;e:{t:{n:{if(!(f&3)|!N)break n;for(E=w&255;;){if((E|0)==de[f|0])break t;if(N=N-1|0,k=(N|0)!=0,f=f+1|0,!(f&3))break n;if(!N)break}}if(!k)break e;if(!(de[f|0]==(w&255)|N>>>0<4))for(k=Ae(w&255,16843009);;){if(E=k^s[f>>2],(E^-1)&E-16843009&-2139062144)break t;if(f=f+4|0,N=N-4|0,!(N>>>0>3))break}if(!N)break e}for(w=w&255;;){if((w|0)==de[f|0])return f;if(f=f+1|0,N=N-1|0,!N)break}}return 0}function pu(f,w,N){var k=0,E=0,W=0,J=0,ie=0;W=In-16|0,In=W,k=In-32|0,In=k,E=In-16|0,In=E,s[E+12>>2]=w,s[E+8>>2]=w+N,s[k+24>>2]=s[E+12>>2],s[k+28>>2]=s[E+8>>2],In=E+16|0,N=In-16|0,In=N,ie=s[k+28>>2],E=s[k+24>>2],J=ie-E|0,(E|0)!=(ie|0)&&ea(f,E,J),s[N+12>>2]=E+J,s[N+8>>2]=f+J,s[k+16>>2]=s[N+12>>2],s[k+20>>2]=s[N+8>>2],In=N+16|0,s[k+12>>2]=(s[k+16>>2]-w|0)+w,s[k+8>>2]=(s[k+20>>2]-f|0)+f,s[W+8>>2]=s[k+12>>2],s[W+12>>2]=s[k+8>>2],In=k+32|0,In=W+16|0}function Ef(){var f=0;Ue(5988,6016,6052,0,5640,30,5776,0,5776,0,2294,5666,31),ln(5988,1,6068,5640,32,33),f=Gn(8),s[f+4>>2]=0,s[f>>2]=34,Kt(5988,2277,3,6072,5824,35,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=36,Kt(5988,2260,2,6084,5669,37,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=38,Kt(5988,1671,3,6092,5673,39,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=40,Kt(5988,3321,3,6104,5673,41,f|0,0),f=Gn(8),s[f+4>>2]=0,s[f>>2]=42,Kt(5988,3307,2,6116,5888,43,f|0,0)}function E4(){var f=0,w=0;R1(5656,2481,5664,4,5666,5),f=Gn(4),s[f>>2]=0,w=Gn(4),s[w>>2]=0,Bn(5656,2724,14176,5669,6,f|0,14176,5673,7,w|0),f=Gn(4),s[f>>2]=2,w=Gn(4),s[w>>2]=2,Bn(5656,1649,14176,5669,6,f|0,14176,5673,7,w|0),f=Gn(4),s[f>>2]=4,w=Gn(4),s[w>>2]=4,Bn(5656,3217,14140,5669,8,f|0,14140,5673,9,w|0),f=Gn(4),s[f>>2]=5,w=Gn(4),s[w>>2]=5,Bn(5656,1528,14140,5669,8,f|0,14140,5673,9,w|0),ri(5656)}function Df(f,w){e:{t:{if(w-224>>>0<16)break t;n:switch(w-192|0){case 26:if(s[f+100>>2]==5)break t;Vn(16),_t();case 55:if(s[f+100>>2]!=5)break t;Vn(19),_t();case 0:case 1:case 2:case 3:case 5:case 6:case 7:case 9:case 10:case 11:case 57:Vn(10),_t();case 24:Vn(18),_t();case 25:Vn(21),_t();case 29:case 56:case 62:break t;default:break n}if((w&248)==208)break e;Vn(11),_t()}return}Vn(25),_t()}function Ps(f,w,N){var k=0,E=0,W=0;if(!(de[f|0]&32))e:{k=w,w=f,f=s[w+16>>2];t:{if(!f){if(Yr(w))break t;f=s[w+16>>2]}if(W=s[w+20>>2],f-W>>>0>>0){Mr[s[w+36>>2]](w,k,N)|0;break e}n:{if(s[w+80>>2]<0)break n;for(f=N;;){if(E=f,!f)break n;if(f=E-1|0,de[k+f|0]==10)break}if(Mr[s[w+36>>2]](w,k,E)>>>0>>0)break t;k=k+E|0,N=N-E|0,W=s[w+20>>2]}Ms(W,k,N),s[w+20>>2]=s[w+20>>2]+N}}}function v5(f,w,N,k,E){if(f=f|0,w=w|0,N=N|0,k=k|0,E=E|0,wa(f,s[w+8>>2],E)){s[w+28>>2]==1|s[w+4>>2]!=(N|0)||(s[w+28>>2]=k);return}e:{if(!wa(f,s[w>>2],E))break e;if(!(s[w+16>>2]!=(N|0)&s[w+20>>2]!=(N|0))){if((k|0)!=1)break e;s[w+32>>2]=1;return}s[w+20>>2]=N,s[w+32>>2]=k,s[w+40>>2]=s[w+40>>2]+1,s[w+36>>2]!=1|s[w+24>>2]!=2||(oe[w+54|0]=1),s[w+44>>2]=4}}function If(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0,J=0;return E=s[f+84>>2],W=s[E+4>>2],J=s[f+28>>2],k=s[f+20>>2]-J|0,k=k>>>0>W>>>0?W:k,k&&(Ms(s[E>>2],J,k),s[E>>2]=k+s[E>>2],W=s[E+4>>2]-k|0,s[E+4>>2]=W),k=s[E>>2],W=N>>>0>W>>>0?W:N,W&&(Ms(k,w,W),k=W+s[E>>2]|0,s[E>>2]=k,s[E+4>>2]=s[E+4>>2]-W),oe[k|0]=0,w=s[f+44>>2],s[f+28>>2]=w,s[f+20>>2]=w,N|0}function D4(f,w,N,k){oe[f+53|0]=1;e:{if(s[f+4>>2]!=(N|0))break e;oe[f+52|0]=1,N=s[f+16>>2];t:{if(!N){if(s[f+36>>2]=1,s[f+24>>2]=k,s[f+16>>2]=w,(k|0)!=1)break e;if(s[f+48>>2]==1)break t;break e}if((w|0)==(N|0)){if(N=s[f+24>>2],(N|0)==2&&(s[f+24>>2]=k,N=k),s[f+48>>2]!=1)break e;if((N|0)==1)break t;break e}s[f+36>>2]=s[f+36>>2]+1}oe[f+54|0]=1}}function Io(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0;E=In+-64|0,In=E,k=1;e:{if(wa(f,w,0)||(k=0,!w)||(w=Wi(w,13788),k=0,!w))break e;k=E+8|0,fr(k|4,0,52),s[E+56>>2]=1,s[E+20>>2]=-1,s[E+16>>2]=f,s[E+8>>2]=w,Mr[s[s[w>>2]+28>>2]](w,k,s[N>>2],1),f=s[E+32>>2],(f|0)==1&&(s[N>>2]=s[E+24>>2]),k=(f|0)==1}return In=E- -64|0,k|0}function B2(f){var w=0,N=0;e:{t:{if(N=s[f+52>>2],N>>>0>2]){n:{if(de[N|0]==255){f=s[f+44>>2];break n}if(w=s[f+48>>2],(w|0)<=0&&(zr(f),N=s[f+52>>2],w=s[f+48>>2]),s[f+48>>2]=w-1,w=f,f=s[f+44>>2]<<1,s[w+44>>2]=f,de[N|0]!=255)break t}if(f)break e;return}Vn(4),_t()}Vn(6),_t()}Vn(6),_t()}function wa(f,w,N){var k=0;if(!N)return s[f+4>>2]==s[w+4>>2];if((f|0)==(w|0))return 1;k=s[f+4>>2],f=de[k|0],N=s[w+4>>2],w=de[N|0];e:{if(!f|(w|0)!=(f|0))break e;for(;;){if(w=de[N+1|0],f=de[k+1|0],!f)break e;if(N=N+1|0,k=k+1|0,(f|0)!=(w|0))break}}return(f|0)==(w|0)}function Mc(f,w,N){var k=0,E=0,W=0,J=0;if(w)for(;N=N-1|0,E=f,f=Tp(f,w,10),k=Ce,W=N,J=E-Q2(f,k,10,0)|48,oe[W|0]=J,E=w>>>0>9,w=k,!!E;);if(f)for(;N=N-1|0,w=(f>>>0)/10|0,oe[N|0]=f-Ae(w,10)|48,k=f>>>0>9,f=w,!!k;);return N}function L1(f){var w=0,N=0,k=0;w=f;e:{if(w&3)for(;;){if(!de[w|0])break e;if(w=w+1|0,!(w&3))break}for(;N=w,w=w+4|0,k=s[N>>2],!((k^-1)&k-16843009&-2139062144););for(;w=N,N=w+1|0,!!de[w|0];);}return w-f|0}function Op(f){f=f|0;var w=0,N=0,k=0;if(w=L1(5455),w>>>0<2147483632){e:{t:{if(w>>>0>=11){N=(w|15)+1|0,k=Gn(N),s[f+8>>2]=N|-2147483648,s[f>>2]=k,s[f+4>>2]=w,N=w+k|0,f=k;break t}if(oe[f+11|0]=w,N=f+w|0,!w)break e}ea(f,5455,w)}oe[N|0]=0;return}ta(),_t()}function I4(f,w){var N=0,k=0,E=0;if(kn(+f),k=at(1)|0,E=at(0)|0,N=k>>>20&2047,(N|0)!=2047){if(!N)return f==0?N=0:(f=I4(f*18446744073709552e3,w),N=s[w>>2]+-64|0),s[w>>2]=N,f;s[w>>2]=N-1022,ht(0,E|0),ht(1,k&-2146435073|1071644672),f=+zt()}return f}function Mp(f){var w=0,N=0,k=0;if(oe[s[f>>2]]-48>>>0>=10)return 0;for(;k=s[f>>2],N=-1,w>>>0<=214748364&&(N=oe[k|0]-48|0,w=Ae(w,10),N=(N|0)>(w^2147483647)?-1:N+w|0),s[f>>2]=k+1,w=N,oe[k+1|0]-48>>>0<10;);return w}function Q2(f,w,N,k){var E=0,W=0,J=0,ie=0,ue=0,ye=0;return E=N>>>16|0,W=f>>>16|0,ye=Ae(E,W),J=N&65535,ie=f&65535,ue=Ae(J,ie),W=(ue>>>16|0)+Ae(W,J)|0,E=(W&65535)+Ae(E,ie)|0,Ce=(Ae(w,N)+ye|0)+Ae(f,k)+(W>>>16)+(E>>>16)|0,ue&65535|E<<16}function Of(f){f=f|0;var w=0,N=0,k=0,E=0,W=0;return w=In-16|0,In=w,Mr[f|0](w),N=de[w+11|0],E=N<<24>>24,f=(E|0)<0,N=f?s[w+4>>2]:N,k=Ec(N+4|0),s[k>>2]=N,W=s[w>>2],Ms(k+4|0,f?W:w,N),(E|0)<0&&Gr(W),In=w+16|0,k|0}function jh(f,w,N){var k=0;if(k=s[f+16>>2],!k){s[f+36>>2]=1,s[f+24>>2]=N,s[f+16>>2]=w;return}e:{if((w|0)==(k|0)){if(s[f+24>>2]!=2)break e;s[f+24>>2]=N;return}oe[f+54|0]=1,s[f+24>>2]=2,s[f+36>>2]=s[f+36>>2]+1}}function Gu(f){f=f|0;var w=0;return w=s[f+6024>>2],w&&(s[f+6028>>2]=w,Gr(w)),s[f>>2]=8776,w=s[f+44>>2],s[f+44>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function zh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0,W=0;return k=In-16|0,In=k,E=s[f>>2],W=k+8|0,f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(E=s[E+s[w>>2]>>2]),Mr[E|0](W,w,N),Ye(s[k+8>>2]),f=s[k+8>>2],xe(f|0),In=k+16|0,f|0}function Mf(f){f=f|0;var w=0;return w=s[f+6e3>>2],w&&(s[f+6004>>2]=w,Gr(w)),s[f>>2]=8776,w=s[f+44>>2],s[f+44>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function Ca(f,w,N,k,E){var W=0;if(W=In-256|0,In=W,!(E&73728|(N|0)<=(k|0))){if(k=N-k|0,N=k>>>0<256,fr(W,w&255,N?k:256),!N)for(;Ps(f,W,256),k=k-256|0,k>>>0>255;);Ps(f,W,k)}In=W+256|0}function Pp(f,w){f=f|0,w=w|0;var N=0;return N=s[f>>2],f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(N=s[N+s[w>>2]>>2]),f=Mr[N|0](w)|0,w=Gn(6),ke[w+4>>1]=Re[f+4>>1],f=Re[f>>1]|Re[f+2>>1]<<16,ke[w>>1]=f,ke[w+2>>1]=f>>>16,w|0}function Wu(f){f=f|0;var w=0;w=s[f+6024>>2],w&&(s[f+6028>>2]=w,Gr(w)),s[f>>2]=8776,w=s[f+44>>2],s[f+44>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),Gr(f)}function Pc(f){f=f|0;var w=0;w=s[f+6e3>>2],w&&(s[f+6004>>2]=w,Gr(w)),s[f>>2]=8776,w=s[f+44>>2],s[f+44>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),Gr(f)}function O4(f,w){f=f|0,w=w|0;var N=0,k=0,E=0;return N=In-16|0,In=N,k=s[f>>2],E=N+8|0,f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(k=s[k+s[w>>2]>>2]),Mr[k|0](E,w),Ye(s[N+8>>2]),f=s[N+8>>2],xe(f|0),In=N+16|0,f|0}function Yr(f){var w=0;return w=s[f+72>>2],s[f+72>>2]=w-1|w,w=s[f>>2],w&8?(s[f>>2]=w|32,-1):(s[f+4>>2]=0,s[f+8>>2]=0,w=s[f+44>>2],s[f+28>>2]=w,s[f+20>>2]=w,s[f+16>>2]=w+s[f+48>>2],0)}function M4(f,w){var N=0;e:{if(!w||(w=Wi(w,13996),!w|s[w+8>>2]&(s[f+8>>2]^-1))||!wa(s[f+12>>2],s[w+12>>2],0))break e;N=wa(s[f+16>>2],s[w+16>>2],0)}return N}function k5(f){f=f|0;var w=0;return s[f>>2]=8776,w=s[f+44>>2],s[f+44>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function Hh(f,w,N){f=f|0,w=w|0,N=N|0;var k=0,E=0;return k=In-16|0,In=k,E=k+8|0,Mr[s[s[f>>2]+12>>2]](E,f,w),In=k+16|0,s[E>>2]==s[N>>2]&s[E+4>>2]==s[N+4>>2]}function mu(f){f=f|0;var w=0;return w=s[f+5992>>2],w&&(s[f+5996>>2]=w,Gr(w)),s[f>>2]=6352,w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function Rc(f){f=f|0;var w=0;return w=s[f+6016>>2],w&&(s[f+6020>>2]=w,Gr(w)),s[f>>2]=6352,w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function y5(f,w,N,k,E,W){if(f=f|0,w=w|0,N=N|0,k=k|0,E=E|0,W=W|0,wa(f,s[w+8>>2],W)){D4(w,N,k,E);return}f=s[f+8>>2],Mr[s[s[f>>2]+20>>2]](f,w,N,k,E,W)}function Pf(f){f=f|0;var w=0;w=s[f+5992>>2],w&&(s[f+5996>>2]=w,Gr(w)),s[f>>2]=6352,w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),Gr(f)}function $u(f){f=f|0;var w=0;w=s[f+6016>>2],w&&(s[f+6020>>2]=w,Gr(w)),s[f>>2]=6352,w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),Gr(f)}function w5(){var f=0;return f=Gn(40),s[f>>2]=0,s[f+4>>2]=0,s[f+32>>2]=0,s[f+36>>2]=0,s[f+8>>2]=0,s[f+12>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0,f|0}function ju(f,w){var N=0,k=0,E=0,W=0;N=L1(w),k=Gn(N+13|0),s[k+8>>2]=0,s[k+4>>2]=N,s[k>>2]=N,E=f,W=Ms(k+12|0,w,N+1|0),s[E>>2]=W}function Rp(f,w,N,k){if(f=f|0,w=w|0,N=N|0,k=k|0,wa(f,s[w+8>>2],0)){jh(w,N,k);return}f=s[f+8>>2],Mr[s[s[f>>2]+28>>2]](f,w,N,k)}function Gn(f){var w=0;f=f||1;e:{for(;;){if(w=Ec(f),w)break e;if(w=s[12373],w){Mr[w|0]();continue}break}tn(),_t()}return w}function Ap(f){for(f=f|0;;){if(f=s[12376],f){s[12376]=s[f+8>>2],Mr[s[f>>2]](s[f+4>>2]),Gr(f);continue}break}oe[49497]=0}function Go(f,w,N){f=f|0,w=w|0,N=N|0;var k=0;k=s[f>>2],f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(k=s[k+s[w>>2]>>2]),Mr[k|0](w,N)}function Lp(f,w){f=f|0,w=w|0;var N=0;return N=s[f>>2],f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(N=s[N+s[w>>2]>>2]),Mr[N|0](w)|0}function Wl(f){f=f|0;var w=0;return w=s[f+28>>2],w&&(s[f+32>>2]=w,Gr(w)),w=s[f+16>>2],w&&(s[f+20>>2]=w,Gr(w)),f|0}function C5(){var f=0;return f=Gn(40),s[f>>2]=0,s[f+4>>2]=0,s[f+16>>2]=0,s[f+20>>2]=0,s[f+8>>2]=0,s[f+12>>2]=0,f|0}function N1(f){f=f|0;var w=0;f&&(w=s[f+12>>2],w&&(s[f+16>>2]=w,Gr(w)),w=s[f>>2],w&&(s[f+4>>2]=w,Gr(w)),Gr(f))}function $l(f){f=f|0;var w=0;w=s[f+28>>2],w&&(s[f+32>>2]=w,Gr(w)),w=s[f+16>>2],w&&(s[f+20>>2]=w,Gr(w)),Gr(f)}function P4(f,w){f=f|0,w=w|0;var N=0;N=s[f>>2],f=s[f+4>>2],w=(f>>1)+w|0,f&1&&(N=s[N+s[w>>2]>>2]),Mr[N|0](w)}function vu(f){f=f|0;var w=0;return s[f>>2]=6352,w=s[f+40>>2],s[f+40>>2]=0,w&&Mr[s[s[w>>2]+4>>2]](w),f|0}function _5(f,w,N,k){f=f|0,w=w|0,N=N|0,Ms(w,s[f+4>>2],Ae(s[f+8>>2],N)),s[f+4>>2]=s[f+4>>2]+s[f+12>>2]}function T2(f,w,N,k){f=f|0,w=w|0,N=N|0,Ms(s[f+4>>2],w,Ae(s[f+8>>2],N)),s[f+4>>2]=s[f+4>>2]+s[f+12>>2]}function Np(f){var w=0;w=qh(8),s[w>>2]=14468,s[w>>2]=14540,ju(w+4|0,f),s[w>>2]=14608,dt(w|0,14640,3),_t()}function x5(f){f=f|0;var w=0,N=0;return f=s[f+4>>2],w=L1(f)+1|0,N=Ec(w),N?f=Ms(N,f,w):f=0,f|0}function pi(){var f=0;if(f=s[11898],f)for(;Mr[s[f>>2]](),f=s[f+4>>2],!!f;);}function S5(f,w,N,k,E,W){f=f|0,w=w|0,N=N|0,k=k|0,E=E|0,W=W|0,wa(f,s[w+8>>2],W)&&D4(w,N,k,E)}function Ac(f,w,N){f=f|0,N=N|0,de[49488]||(oe[49488]=1),s[f+4>>2]=14716,s[f>>2]=N}function R4(f){var w=0;f=s[f>>2]-12|0,w=s[f+8>>2]-1|0,s[f+8>>2]=w,(w|0)<0&&Gr(f)}function Kh(f){f=f|0;var w=0;f&&(w=s[f+92>>2],w&&(s[f+96>>2]=w,Gr(w)),Gr(f))}function A4(f,w,N,k){f=f|0,w=w|0,N=N|0,k=k|0,wa(f,s[w+8>>2],0)&&jh(w,N,k)}function T5(f,w,N){return f=f|0,w=w|0,N=N|0,s[w>>2]==(N|0)&s[w+4>>2]==(f|0)}function bp(f){return f=f|0,f?(Wi(f,13884)|0)!=0|0:0}function Fp(){var f=0;return f=Gn(6),s[f>>2]=0,ke[f+4>>1]=0,f|0}function Vp(f,w,N){f=f|0,w=w|0,N=N|0,s[f+4>>2]=w,s[f>>2]=N}function Jr(f){return f=f|0,s[f>>2]=14560,R4(f+4|0),f|0}function Up(f){f=f|0,f=s[11886],f&&(s[11887]=f,Gr(f))}function E5(f){f=f|0,f=s[11889],f&&(s[11890]=f,Gr(f))}function D5(f){f=f|0,f=s[11892],f&&(s[11893]=f,Gr(f))}function I5(f){f=f|0,f=s[11895],f&&(s[11896]=f,Gr(f))}function D0(f){return f=f|0,s[f>>2]=14540,R4(f+4|0),f|0}function L4(f,w,N){return f=f|0,w=w|0,wa(f,w,0)|0}function Bp(f,w,N){f=f|0,w=w|0,N=N|0,ke[s[f>>2]+w>>1]=N}function N4(f,w){var N=0;N=Gn(w),s[f+4>>2]=w,s[f>>2]=N}function O5(f,w,N){f=f|0,w=w|0,N=N|0,oe[s[f>>2]+w|0]=N}function Gp(f,w){return f=f|0,w=w|0,Re[s[f>>2]+w>>1]}function M5(f,w){return f=f|0,w=w|0,de[s[f>>2]+w|0]}function Rf(f){de[f+11|0]>>>7|0&&Gr(s[f>>2])}function Wp(f){return f=f|0,f=In-f&-16,In=f,f|0}function b4(f,w,N,k){ps(f|0,w|0,8,0,N|0,-1,k|0)}function $p(f,w){f=f|0,w=w|0,s[f+36>>2]=w}function P5(f,w){f=f|0,w=w|0,s[f+32>>2]=w}function F4(f){return f=f|0,Mr[f|0]()|0}function V4(f){return f=f|0,s[f+36>>2]}function R5(){Rr(2514,1,5564,5640,1,2)}function qh(f){return Ec(f+80|0)+80|0}function Af(f){return f=f|0,de[f+32|0]}function vt(f){return f=f|0,s[f+4>>2]}function jp(f){return f=f|0,Jr(f)|0}function A5(f){return f=f|0,Ec(f)|0}function zu(f){return f=f|0,f+24|0}function M0(f){f=f|0,f&&Gr(f)}function U4(f){return 2499}function B4(f){return 4056}function L5(f){return 5988}function Lf(f){f=f|0,Jr(f),Gr(f)}function N5(f){return 5696}function G4(f){f=f|0,D0(f),Gr(f)}function W4(f){return 4071}function zp(f){return 2611}function b5(f){return 1711}function F5(f){xe(s[3684])}function u0(f){return f=f|0,f|0}function Hp(f){f=f|0,Gr(Jr(f))}function ta(){Np(2757),_t()}function $4(f){Ap(0)}function Li(){Np(1808),_t()}function Lc(){return In|0}function V5(f){f=f|0,In=f}function Xh(f){_t()}function U5(){Nc(),_t()}function Nc(){tn(),_t()}function ms(f){}function b1(f){Gr(f)}var Mr=Sn([null,Of,Op,D0,Fp,M0,Gp,Bp,M5,O5,N5,N1,F4,C5,l0,zh,Uu,O4,On,P4,zu,Pp,Af,Lp,V4,Lp,F5,Kh,u0,jp,L5,N1,F4,w5,Dp,zh,Uu,O4,$p,Go,P5,Go,fp,P4,R5,E4,T4,Ef,Hp,vt,ms,u0,b1,b5,Vp,Hh,T5,m5,Up,E5,D5,I5,Rc,$u,Fh,hl,fl,vu,Xh,U5,u0,b1,T2,_5,b1,T2,_4,Wl,$l,mp,vp,Wl,$l,Cp,wp,Wl,$l,k4,d5,Wl,$l,g5,kp,Rc,$u,Oc,hl,Z2,Wl,$l,Gi,S2,Wl,$l,m4,Pi,Wl,$l,Mi,Dc,Wl,$l,hn,pp,mu,Pf,xf,Ic,cp,mu,Pf,Tc,Ic,ap,mu,Pf,Fh,Ic,_c,mu,Pf,Oc,p5,Fu,mu,Pf,Oc,Uh,fu,Rc,$u,xf,hl,up,Rc,$u,Tc,hl,Nh,Rc,$u,Gh,hl,lp,Rc,$u,Sp,hl,xc,Gu,Wu,Fh,Sc,gp,k5,Xh,Gu,Wu,Oc,Sc,dp,Mf,Pc,xf,Gt,hp,Mf,Pc,Tc,Gt,sp,Mf,Pc,Fh,Gt,Vu,Mf,Pc,Oc,_p,h5,Mf,Pc,Oc,Vh,Nt,Gu,Wu,xf,Sc,d4,Gu,Wu,Tc,Sc,Lh,Gu,Wu,Gh,Sc,bh,Gu,Wu,Sp,Sc,Q0,Ep,g4,du,If,b1,W4,y4,b1,zp,Ac,y4,Lf,$4,Ap,u0,b1,ms,ms,L4,b1,Io,S5,v5,A4,b1,y5,ya,Rp,b1,xp,b1,B4,b1,U4,G4,vt,Jr,Lf,G4]);function E2(){return ze.byteLength/65536|0}function lr(f){f=f|0;var w=E2()|0,N=w+f|0;if(w=sn);)++Sn;if(Sn-gt>16&&ft.buffer&&pe)return pe.decode(ft.subarray(gt,Sn));for(var Xn="";gt>10,56320|ht&1023)}}return Xn}function Te(ft,gt){return ft?we(Ge,ft,gt):""}function Ve(ft,gt,Ft,sn){if(!(sn>0))return 0;for(var Sn=Ft,Xn=Ft+sn-1,tr=0;tr=55296&&Wn<=57343){var at=ft.charCodeAt(++tr);Wn=65536+((Wn&1023)<<10)|at&1023}if(Wn<=127){if(Ft>=Xn)break;gt[Ft++]=Wn}else if(Wn<=2047){if(Ft+1>=Xn)break;gt[Ft++]=192|Wn>>6,gt[Ft++]=128|Wn&63}else if(Wn<=65535){if(Ft+2>=Xn)break;gt[Ft++]=224|Wn>>12,gt[Ft++]=128|Wn>>6&63,gt[Ft++]=128|Wn&63}else{if(Ft+3>=Xn)break;gt[Ft++]=240|Wn>>18,gt[Ft++]=128|Wn>>12&63,gt[Ft++]=128|Wn>>6&63,gt[Ft++]=128|Wn&63}}return gt[Ft]=0,Ft-Sn}function Pe(ft,gt,Ft){return Ve(ft,Ge,gt,Ft)}function je(ft){for(var gt=0,Ft=0;Ft=55296&&sn<=57343?(gt+=4,++Ft):gt+=3}return gt}var Je,it,Ge,Ke,qe,ut,wt,Et,qt;function $t(ft){Je=ft,c.HEAP8=it=new Int8Array(ft),c.HEAP16=Ke=new Int16Array(ft),c.HEAP32=ut=new Int32Array(ft),c.HEAPU8=Ge=new Uint8Array(ft),c.HEAPU16=qe=new Uint16Array(ft),c.HEAPU32=wt=new Uint32Array(ft),c.HEAPF32=Et=new Float32Array(ft),c.HEAPF64=qt=new Float64Array(ft)}var Jt=c.INITIAL_MEMORY||52428800;c.wasmMemory?le=c.wasmMemory:le=new ne.Memory({initial:Jt/65536,maximum:32768}),le&&(Je=le.buffer),Jt=Je.byteLength,$t(Je);var Dn,Nn=[],xn=[],et=[];function Me(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)yt(c.preRun.shift());An(Nn)}function ct(){An(xn)}function st(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Pt(c.postRun.shift());An(et)}function yt(ft){Nn.unshift(ft)}function St(ft){xn.unshift(ft)}function Pt(ft){et.unshift(ft)}var mn=0,Pn=null;function Hn(ft){mn++,c.monitorRunDependencies&&c.monitorRunDependencies(mn)}function Kn(ft){if(mn--,c.monitorRunDependencies&&c.monitorRunDependencies(mn),mn==0&&Pn){var gt=Pn;Pn=null,gt()}}function Dt(ft){c.onAbort&&c.onAbort(ft),ft="Aborted("+ft+")",X(ft),ce=!0,ft+=". Build with -sASSERTIONS for more info.";var gt=new ne.RuntimeError(ft);throw v(gt),gt}var Vt="charlsjs.js.mem",gn="data:application/octet-stream;base64,";function Bt(ft){return ft.startsWith(gn)}function rn(ft){return ft.startsWith("file://")}var Zn;Zn="charlsjs.wasm",Bt(Zn)||(Zn=V(Zn));function Ut(ft){try{if(ft==Zn&&ee)return new Uint8Array(ee);if(z)return z(ft);throw"both async and sync fetching of the wasm failed"}catch(gt){Dt(gt)}}function Ir(){if(!ee&&(T||P)){if(typeof fetch=="function"&&!rn(Zn))return fetch(Zn,{credentials:"same-origin"}).then(function(ft){if(!ft.ok)throw"failed to load wasm binary file at '"+Zn+"'";return ft.arrayBuffer()}).catch(function(){return Ut(Zn)});if(j)return new Promise(function(ft,gt){j(Zn,function(Ft){ft(new Uint8Array(Ft))},gt)})}return Promise.resolve().then(function(){return Ut(Zn)})}function br(){var ft={a:x2};function gt(tr,Wn){var at=tr.exports;c.asm=at,dn(),Dn=c.asm.C,St(c.asm.A),Kn()}Hn();function Ft(tr){gt(tr.instance)}function sn(tr){return Ir().then(function(Wn){return ne.instantiate(Wn,ft)}).then(function(Wn){return Wn}).then(tr,function(Wn){X("failed to asynchronously prepare wasm: "+Wn),Dt(Wn)})}function Sn(){return!ee&&typeof ne.instantiateStreaming=="function"&&!Bt(Zn)&&!rn(Zn)&&!I&&typeof fetch=="function"?fetch(Zn,{credentials:"same-origin"}).then(function(tr){var Wn=ne.instantiateStreaming(tr,ft);return Wn.then(Ft,function(at){return X("wasm streaming compile failed: "+at),X("falling back to ArrayBuffer instantiation"),sn(Ft)})}):sn(Ft)}if(c.instantiateWasm)try{var Xn=c.instantiateWasm(ft,gt);return Xn}catch(tr){X("Module.instantiateWasm callback failed with error: "+tr),v(tr)}return Sn().catch(v),{}}function jr(ft){this.name="ExitStatus",this.message="Program terminated with exit("+ft+")",this.status=ft}function An(ft){for(;ft.length>0;)ft.shift()(c)}function hr(ft){this.excPtr=ft,this.ptr=ft-24,this.set_type=function(gt){wt[this.ptr+4>>2]=gt},this.get_type=function(){return wt[this.ptr+4>>2]},this.set_destructor=function(gt){wt[this.ptr+8>>2]=gt},this.get_destructor=function(){return wt[this.ptr+8>>2]},this.set_refcount=function(gt){ut[this.ptr>>2]=gt},this.set_caught=function(gt){gt=gt?1:0,it[this.ptr+12>>0]=gt},this.get_caught=function(){return it[this.ptr+12>>0]!=0},this.set_rethrown=function(gt){gt=gt?1:0,it[this.ptr+13>>0]=gt},this.get_rethrown=function(){return it[this.ptr+13>>0]!=0},this.init=function(gt,Ft){this.set_adjusted_ptr(0),this.set_type(gt),this.set_destructor(Ft),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var gt=ut[this.ptr>>2];ut[this.ptr>>2]=gt+1},this.release_ref=function(){var gt=ut[this.ptr>>2];return ut[this.ptr>>2]=gt-1,gt===1},this.set_adjusted_ptr=function(gt){wt[this.ptr+16>>2]=gt},this.get_adjusted_ptr=function(){return wt[this.ptr+16>>2]},this.get_exception_ptr=function(){var gt=It(this.get_type());if(gt)return wt[this.excPtr>>2];var Ft=this.get_adjusted_ptr();return Ft!==0?Ft:this.excPtr}}function Cr(ft,gt,Ft){var sn=new hr(ft);throw sn.init(gt,Ft),ft}var wr={};function Fr(ft){for(;ft.length;){var gt=ft.pop(),Ft=ft.pop();Ft(gt)}}function ui(ft){return this.fromWireType(ut[ft>>2])}var Kr={},ai={},vi={},e0=48,p0=57;function Hi(ft){if(ft===void 0)return"_unknown";ft=ft.replace(/[^a-zA-Z0-9_]/g,"$");var gt=ft.charCodeAt(0);return gt>=e0&><=p0?"_"+ft:ft}function T0(ft,gt){return ft=Hi(ft),new Function("body","return function "+ft+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(gt)}function wo(ft,gt){var Ft=T0(gt,function(sn){this.name=gt,this.message=sn;var Sn=new Error(sn).stack;Sn!==void 0&&(this.stack=this.toString()+` +`+Sn.replace(/^Error(:[^\n]*)?\n/,""))});return Ft.prototype=Object.create(ft.prototype),Ft.prototype.constructor=Ft,Ft.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Ft}var uo=void 0;function Yn(ft){throw new uo(ft)}function Tr(ft,gt,Ft){ft.forEach(function(Wn){vi[Wn]=gt});function sn(Wn){var at=Ft(Wn);at.length!==ft.length&&Yn("Mismatched type converter count");for(var ht=0;ht{ai.hasOwnProperty(Wn)?Sn[at]=ai[Wn]:(Xn.push(Wn),Kr.hasOwnProperty(Wn)||(Kr[Wn]=[]),Kr[Wn].push(()=>{Sn[at]=ai[Wn],++tr,tr===Xn.length&&sn(Sn)}))}),Xn.length===0&&sn(Sn)}function Ai(ft){var gt=wr[ft];delete wr[ft];var Ft=gt.rawConstructor,sn=gt.rawDestructor,Sn=gt.fields,Xn=Sn.map(tr=>tr.getterReturnType).concat(Sn.map(tr=>tr.setterArgumentType));Tr([ft],Xn,tr=>{var Wn={};return Sn.forEach((at,ht)=>{var zt=at.fieldName,kn=tr[ht],_t=at.getter,dr=at.getterContext,ot=tr[ht+Sn.length],nt=at.setter,Fe=at.setterContext;Wn[zt]={read:ze=>kn.fromWireType(_t(dr,ze)),write:(ze,oe)=>{var ke=[];nt(Fe,ze,ot.toWireType(ke,oe)),Fr(ke)}}}),[{name:gt.name,fromWireType:function(at){var ht={};for(var zt in Wn)ht[zt]=Wn[zt].read(at);return sn(at),ht},toWireType:function(at,ht){for(var zt in Wn)if(!(zt in ht))throw new TypeError('Missing field: "'+zt+'"');var kn=Ft();for(zt in Wn)Wn[zt].write(kn,ht[zt]);return at!==null&&at.push(sn,kn),kn},argPackAdvance:8,readValueFromPointer:ui,destructorFunction:sn}]})}function t0(ft,gt,Ft,sn,Sn){}function Mo(ft){switch(ft){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+ft)}}function Fi(){for(var ft=new Array(256),gt=0;gt<256;++gt)ft[gt]=String.fromCharCode(gt);x0=ft}var x0=void 0;function xi(ft){for(var gt="",Ft=ft;Ge[Ft];)gt+=x0[Ge[Ft++]];return gt}var Ki=void 0;function ki(ft){throw new Ki(ft)}function k0(ft,gt,Ft={}){if(!("argPackAdvance"in gt))throw new TypeError("registerType registeredInstance requires argPackAdvance");var sn=gt.name;if(ft||ki('type "'+sn+'" must have a positive integer typeid pointer'),ai.hasOwnProperty(ft)){if(Ft.ignoreDuplicateRegistrations)return;ki("Cannot register type '"+sn+"' twice")}if(ai[ft]=gt,delete vi[ft],Kr.hasOwnProperty(ft)){var Sn=Kr[ft];delete Kr[ft],Sn.forEach(Xn=>Xn())}}function r0(ft,gt,Ft,sn,Sn){var Xn=Mo(Ft);gt=xi(gt),k0(ft,{name:gt,fromWireType:function(tr){return!!tr},toWireType:function(tr,Wn){return Wn?sn:Sn},argPackAdvance:8,readValueFromPointer:function(tr){var Wn;if(Ft===1)Wn=it;else if(Ft===2)Wn=Ke;else if(Ft===4)Wn=ut;else throw new TypeError("Unknown boolean type size: "+gt);return this.fromWireType(Wn[tr>>Xn])},destructorFunction:null})}function Yi(ft){if(!(this instanceof Ts)||!(ft instanceof Ts))return!1;for(var gt=this.$$.ptrType.registeredClass,Ft=this.$$.ptr,sn=ft.$$.ptrType.registeredClass,Sn=ft.$$.ptr;gt.baseClass;)Ft=gt.upcast(Ft),gt=gt.baseClass;for(;sn.baseClass;)Sn=sn.upcast(Sn),sn=sn.baseClass;return gt===sn&&Ft===Sn}function jo(ft){return{count:ft.count,deleteScheduled:ft.deleteScheduled,preservePointerOnDelete:ft.preservePointerOnDelete,ptr:ft.ptr,ptrType:ft.ptrType,smartPtr:ft.smartPtr,smartPtrType:ft.smartPtrType}}function ga(ft){function gt(Ft){return Ft.$$.ptrType.registeredClass.name}ki(gt(ft)+" instance already deleted")}var Ma=!1;function Co(ft){}function ls(ft){ft.smartPtr?ft.smartPtrType.rawDestructor(ft.smartPtr):ft.ptrType.registeredClass.rawDestructor(ft.ptr)}function pn(ft){ft.count.value-=1;var gt=ft.count.value===0;gt&&ls(ft)}function yr(ft,gt,Ft){if(gt===Ft)return ft;if(Ft.baseClass===void 0)return null;var sn=yr(ft,gt,Ft.baseClass);return sn===null?null:Ft.downcast(sn)}var Fn={};function Mn(){return Object.keys(Ui).length}function Sr(){var ft=[];for(var gt in Ui)Ui.hasOwnProperty(gt)&&ft.push(Ui[gt]);return ft}var Ar=[];function Lr(){for(;Ar.length;){var ft=Ar.pop();ft.$$.deleteScheduled=!1,ft.delete()}}var qr=void 0;function Vr(ft){qr=ft,Ar.length&&qr&&qr(Lr)}function Si(){c.getInheritedInstanceCount=Mn,c.getLiveInheritedInstances=Sr,c.flushPendingDeletes=Lr,c.setDelayFunction=Vr}var Ui={};function S0(ft,gt){for(gt===void 0&&ki("ptr should not be undefined");ft.baseClass;)gt=ft.upcast(gt),ft=ft.baseClass;return gt}function i0(ft,gt){return gt=S0(ft,gt),Ui[gt]}function yi(ft,gt){(!gt.ptrType||!gt.ptr)&&Yn("makeClassHandle requires ptr and ptrType");var Ft=!!gt.smartPtrType,sn=!!gt.smartPtr;return Ft!==sn&&Yn("Both smartPtrType and smartPtr must be specified"),gt.count={value:1},Z0(Object.create(ft,{$$:{value:gt}}))}function L0(ft){var gt=this.getPointee(ft);if(!gt)return this.destructor(ft),null;var Ft=i0(this.registeredClass,gt);if(Ft!==void 0){if(Ft.$$.count.value===0)return Ft.$$.ptr=gt,Ft.$$.smartPtr=ft,Ft.clone();var sn=Ft.clone();return this.destructor(ft),sn}function Sn(){return this.isSmartPointer?yi(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:gt,smartPtrType:this,smartPtr:ft}):yi(this.registeredClass.instancePrototype,{ptrType:this,ptr:ft})}var Xn=this.registeredClass.getActualType(gt),tr=Fn[Xn];if(!tr)return Sn.call(this);var Wn;this.isConst?Wn=tr.constPointerType:Wn=tr.pointerType;var at=yr(gt,this.registeredClass,Wn.registeredClass);return at===null?Sn.call(this):this.isSmartPointer?yi(Wn.registeredClass.instancePrototype,{ptrType:Wn,ptr:at,smartPtrType:this,smartPtr:ft}):yi(Wn.registeredClass.instancePrototype,{ptrType:Wn,ptr:at})}function Z0(ft){return typeof FinalizationRegistry>"u"?(Z0=gt=>gt,ft):(Ma=new FinalizationRegistry(gt=>{pn(gt.$$)}),Z0=gt=>{var Ft=gt.$$,sn=!!Ft.smartPtr;if(sn){var Sn={$$:Ft};Ma.register(gt,Sn,gt)}return gt},Co=gt=>Ma.unregister(gt),Z0(ft))}function oo(){if(this.$$.ptr||ga(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var ft=Z0(Object.create(Object.getPrototypeOf(this),{$$:{value:jo(this.$$)}}));return ft.$$.count.value+=1,ft.$$.deleteScheduled=!1,ft}function _o(){this.$$.ptr||ga(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ki("Object already scheduled for deletion"),Co(this),pn(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Bo(){return!this.$$.ptr}function xo(){return this.$$.ptr||ga(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ki("Object already scheduled for deletion"),Ar.push(this),Ar.length===1&&qr&&qr(Lr),this.$$.deleteScheduled=!0,this}function Js(){Ts.prototype.isAliasOf=Yi,Ts.prototype.clone=oo,Ts.prototype.delete=_o,Ts.prototype.isDeleted=Bo,Ts.prototype.deleteLater=xo}function Ts(){}function L2(ft,gt,Ft){if(ft[gt].overloadTable===void 0){var sn=ft[gt];ft[gt]=function(){return ft[gt].overloadTable.hasOwnProperty(arguments.length)||ki("Function '"+Ft+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+ft[gt].overloadTable+")!"),ft[gt].overloadTable[arguments.length].apply(this,arguments)},ft[gt].overloadTable=[],ft[gt].overloadTable[sn.argCount]=sn}}function Zs(ft,gt,Ft){c.hasOwnProperty(ft)?((Ft===void 0||c[ft].overloadTable!==void 0&&c[ft].overloadTable[Ft]!==void 0)&&ki("Cannot register public name '"+ft+"' twice"),L2(c,ft,ft),c.hasOwnProperty(Ft)&&ki("Cannot register multiple overloads of a function with the same number of arguments ("+Ft+")!"),c[ft].overloadTable[Ft]=gt):(c[ft]=gt,Ft!==void 0&&(c[ft].numArguments=Ft))}function us(ft,gt,Ft,sn,Sn,Xn,tr,Wn){this.name=ft,this.constructor=gt,this.instancePrototype=Ft,this.rawDestructor=sn,this.baseClass=Sn,this.getActualType=Xn,this.upcast=tr,this.downcast=Wn,this.pureVirtualFunctions=[]}function N2(ft,gt,Ft){for(;gt!==Ft;)gt.upcast||ki("Expected null or instance of "+Ft.name+", got an instance of "+gt.name),ft=gt.upcast(ft),gt=gt.baseClass;return ft}function Rl(ft,gt){if(gt===null)return this.isReference&&ki("null is not a valid "+this.name),0;gt.$$||ki('Cannot pass "'+bo(gt)+'" as a '+this.name),gt.$$.ptr||ki("Cannot pass deleted object as a pointer of type "+this.name);var Ft=gt.$$.ptrType.registeredClass,sn=N2(gt.$$.ptr,Ft,this.registeredClass);return sn}function k1(ft,gt){var Ft;if(gt===null)return this.isReference&&ki("null is not a valid "+this.name),this.isSmartPointer?(Ft=this.rawConstructor(),ft!==null&&ft.push(this.rawDestructor,Ft),Ft):0;gt.$$||ki('Cannot pass "'+bo(gt)+'" as a '+this.name),gt.$$.ptr||ki("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&>.$$.ptrType.isConst&&ki("Cannot convert argument of type "+(gt.$$.smartPtrType?gt.$$.smartPtrType.name:gt.$$.ptrType.name)+" to parameter type "+this.name);var sn=gt.$$.ptrType.registeredClass;if(Ft=N2(gt.$$.ptr,sn,this.registeredClass),this.isSmartPointer)switch(gt.$$.smartPtr===void 0&&ki("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:gt.$$.smartPtrType===this?Ft=gt.$$.smartPtr:ki("Cannot convert argument of type "+(gt.$$.smartPtrType?gt.$$.smartPtrType.name:gt.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:Ft=gt.$$.smartPtr;break;case 2:if(gt.$$.smartPtrType===this)Ft=gt.$$.smartPtr;else{var Sn=gt.clone();Ft=this.rawShare(Ft,va.toHandle(function(){Sn.delete()})),ft!==null&&ft.push(this.rawDestructor,Ft)}break;default:ki("Unsupporting sharing policy")}return Ft}function y1(ft,gt){if(gt===null)return this.isReference&&ki("null is not a valid "+this.name),0;gt.$$||ki('Cannot pass "'+bo(gt)+'" as a '+this.name),gt.$$.ptr||ki("Cannot pass deleted object as a pointer of type "+this.name),gt.$$.ptrType.isConst&&ki("Cannot convert argument of type "+gt.$$.ptrType.name+" to parameter type "+this.name);var Ft=gt.$$.ptrType.registeredClass,sn=N2(gt.$$.ptr,Ft,this.registeredClass);return sn}function Pa(ft){return this.rawGetPointee&&(ft=this.rawGetPointee(ft)),ft}function Ra(ft){this.rawDestructor&&this.rawDestructor(ft)}function pa(ft){ft!==null&&ft.delete()}function Es(){ma.prototype.getPointee=Pa,ma.prototype.destructor=Ra,ma.prototype.argPackAdvance=8,ma.prototype.readValueFromPointer=ui,ma.prototype.deleteObject=pa,ma.prototype.fromWireType=L0}function ma(ft,gt,Ft,sn,Sn,Xn,tr,Wn,at,ht,zt){this.name=ft,this.registeredClass=gt,this.isReference=Ft,this.isConst=sn,this.isSmartPointer=Sn,this.pointeeType=Xn,this.sharingPolicy=tr,this.rawGetPointee=Wn,this.rawConstructor=at,this.rawShare=ht,this.rawDestructor=zt,!Sn&>.baseClass===void 0?sn?(this.toWireType=Rl,this.destructorFunction=null):(this.toWireType=y1,this.destructorFunction=null):this.toWireType=k1}function a2(ft,gt,Ft){c.hasOwnProperty(ft)||Yn("Replacing nonexistant public symbol"),c[ft].overloadTable!==void 0&&Ft!==void 0?c[ft].overloadTable[Ft]=gt:(c[ft]=gt,c[ft].argCount=Ft)}function Ds(ft,gt,Ft){var sn=c["dynCall_"+ft];return Ft&&Ft.length?sn.apply(null,[gt].concat(Ft)):sn.call(null,gt)}var W0=[];function w1(ft){var gt=W0[ft];return gt||(ft>=W0.length&&(W0.length=ft+1),W0[ft]=gt=Dn.get(ft)),gt}function gs(ft,gt,Ft){if(ft.includes("j"))return Ds(ft,gt,Ft);var sn=w1(gt).apply(null,Ft);return sn}function zo(ft,gt){var Ft=[];return function(){return Ft.length=0,Object.assign(Ft,arguments),gs(ft,gt,Ft)}}function Eo(ft,gt){ft=xi(ft);function Ft(){return ft.includes("j")?zo(ft,gt):w1(gt)}var sn=Ft();return typeof sn!="function"&&ki("unknown function pointer with signature "+ft+": "+gt),sn}var l2=void 0;function Do(ft){var gt=Ws(ft),Ft=xi(gt);return ka(gt),Ft}function Ho(ft,gt){var Ft=[],sn={};function Sn(Xn){if(!sn[Xn]&&!ai[Xn]){if(vi[Xn]){vi[Xn].forEach(Sn);return}Ft.push(Xn),sn[Xn]=!0}}throw gt.forEach(Sn),new l2(ft+": "+Ft.map(Do).join([", "]))}function q2(ft,gt,Ft,sn,Sn,Xn,tr,Wn,at,ht,zt,kn,_t){zt=xi(zt),Xn=Eo(Sn,Xn),Wn&&(Wn=Eo(tr,Wn)),ht&&(ht=Eo(at,ht)),_t=Eo(kn,_t);var dr=Hi(zt);Zs(dr,function(){Ho("Cannot construct "+zt+" due to unbound types",[sn])}),Tr([ft,gt,Ft],sn?[sn]:[],function(ot){ot=ot[0];var nt,Fe;sn?(nt=ot.registeredClass,Fe=nt.instancePrototype):Fe=Ts.prototype;var ze=T0(dr,function(){if(Object.getPrototypeOf(this)!==oe)throw new Ki("Use 'new' to construct "+zt);if(ke.constructor_body===void 0)throw new Ki(zt+" has no accessible constructor");var bt=ke.constructor_body[arguments.length];if(bt===void 0)throw new Ki("Tried to invoke ctor of "+zt+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ke.constructor_body).toString()+") parameters instead!");return bt.apply(this,arguments)}),oe=Object.create(Fe,{constructor:{value:ze}});ze.prototype=oe;var ke=new us(zt,ze,oe,_t,nt,Xn,Wn,ht),s=new ma(zt,ke,!0,!1,!1),de=new ma(zt+"*",ke,!1,!1,!1),Re=new ma(zt+" const*",ke,!1,!0,!1);return Fn[ft]={pointerType:de,constPointerType:Re},a2(dr,ze),[s,de,Re]})}function Ka(ft,gt){for(var Ft=[],sn=0;sn>2]);return Ft}function w2(ft,gt){if(!(ft instanceof Function))throw new TypeError("new_ called with constructor type "+typeof ft+" which is not a function");var Ft=T0(ft.name||"unknownFunctionName",function(){});Ft.prototype=ft.prototype;var sn=new Ft,Sn=ft.apply(sn,gt);return Sn instanceof Object?Sn:sn}function co(ft,gt,Ft,sn,Sn){var Xn=gt.length;Xn<2&&ki("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var tr=gt[1]!==null&&Ft!==null,Wn=!1,at=1;at0?", ":"")+kn),_t+=(ht?"var rv = ":"")+"invoker(fn"+(kn.length>0?", ":"")+kn+`); +`,Wn)_t+=`runDestructors(destructors); +`;else for(var at=tr?1:2;at0);var tr=Ka(gt,Ft);Sn=Eo(sn,Sn),Tr([],[ft],function(Wn){Wn=Wn[0];var at="constructor "+Wn.name;if(Wn.registeredClass.constructor_body===void 0&&(Wn.registeredClass.constructor_body=[]),Wn.registeredClass.constructor_body[gt-1]!==void 0)throw new Ki("Cannot register multiple constructors with identical number of parameters ("+(gt-1)+") for class '"+Wn.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Wn.registeredClass.constructor_body[gt-1]=()=>{Ho("Cannot construct "+Wn.name+" due to unbound types",tr)},Tr([],tr,function(ht){return ht.splice(1,0,null),Wn.registeredClass.constructor_body[gt-1]=co(at,ht,null,Sn,Xn),[]}),[]})}function rs(ft,gt,Ft,sn,Sn,Xn,tr,Wn){var at=Ka(Ft,sn);gt=xi(gt),Xn=Eo(Sn,Xn),Tr([],[ft],function(ht){ht=ht[0];var zt=ht.name+"."+gt;gt.startsWith("@@")&&(gt=Symbol[gt.substring(2)]),Wn&&ht.registeredClass.pureVirtualFunctions.push(gt);function kn(){Ho("Cannot call "+zt+" due to unbound types",at)}var _t=ht.registeredClass.instancePrototype,dr=_t[gt];return dr===void 0||dr.overloadTable===void 0&&dr.className!==ht.name&&dr.argCount===Ft-2?(kn.argCount=Ft-2,kn.className=ht.name,_t[gt]=kn):(L2(_t,gt,zt),_t[gt].overloadTable[Ft-2]=kn),Tr([],at,function(ot){var nt=co(zt,ot,ht,Xn,tr);return _t[gt].overloadTable===void 0?(nt.argCount=Ft-2,_t[gt]=nt):_t[gt].overloadTable[Ft-2]=nt,[]}),[]})}var Ko=[],Gs=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Is(ft){ft>4&&--Gs[ft].refcount===0&&(Gs[ft]=void 0,Ko.push(ft))}function Os(){for(var ft=0,gt=5;gt(ft||ki("Cannot use deleted val. handle = "+ft),Gs[ft].value),toHandle:ft=>{switch(ft){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var gt=Ko.length?Ko.pop():Gs.length;return Gs[gt]={refcount:1,value:ft},gt}}}};function b2(ft,gt){gt=xi(gt),k0(ft,{name:gt,fromWireType:function(Ft){var sn=va.toValue(Ft);return Is(Ft),sn},toWireType:function(Ft,sn){return va.toHandle(sn)},argPackAdvance:8,readValueFromPointer:ui,destructorFunction:null})}function bo(ft){if(ft===null)return"null";var gt=typeof ft;return gt==="object"||gt==="array"||gt==="function"?ft.toString():""+ft}function La(ft,gt){switch(gt){case 2:return function(Ft){return this.fromWireType(Et[Ft>>2])};case 3:return function(Ft){return this.fromWireType(qt[Ft>>3])};default:throw new TypeError("Unknown float type: "+ft)}}function C1(ft,gt,Ft){var sn=Mo(Ft);gt=xi(gt),k0(ft,{name:gt,fromWireType:function(Sn){return Sn},toWireType:function(Sn,Xn){return Xn},argPackAdvance:8,readValueFromPointer:La(gt,sn),destructorFunction:null})}function _1(ft,gt,Ft,sn,Sn,Xn){var tr=Ka(gt,Ft);ft=xi(ft),Sn=Eo(sn,Sn),Zs(ft,function(){Ho("Cannot call "+ft+" due to unbound types",tr)},gt-1),Tr([],tr,function(Wn){var at=[Wn[0],null].concat(Wn.slice(1));return a2(ft,co(ft,at,null,Sn,Xn),gt-1),[]})}function tl(ft,gt,Ft){switch(gt){case 0:return Ft?function(Sn){return it[Sn]}:function(Sn){return Ge[Sn]};case 1:return Ft?function(Sn){return Ke[Sn>>1]}:function(Sn){return qe[Sn>>1]};case 2:return Ft?function(Sn){return ut[Sn>>2]}:function(Sn){return wt[Sn>>2]};default:throw new TypeError("Unknown integer type: "+ft)}}function F2(ft,gt,Ft,sn,Sn){gt=xi(gt);var Xn=Mo(Ft),tr=kn=>kn;if(sn===0){var Wn=32-8*Ft;tr=kn=>kn<>>Wn}var at=gt.includes("unsigned"),ht=(kn,_t)=>{},zt;at?zt=function(kn,_t){return ht(_t,this.name),_t>>>0}:zt=function(kn,_t){return ht(_t,this.name),_t},k0(ft,{name:gt,fromWireType:tr,toWireType:zt,argPackAdvance:8,readValueFromPointer:tl(gt,Xn,sn!==0),destructorFunction:null})}function nl(ft,gt,Ft){var sn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Sn=sn[gt];function Xn(tr){tr=tr>>2;var Wn=wt,at=Wn[tr],ht=Wn[tr+1];return new Sn(Je,ht,at)}Ft=xi(Ft),k0(ft,{name:Ft,fromWireType:Xn,argPackAdvance:8,readValueFromPointer:Xn},{ignoreDuplicateRegistrations:!0})}function x1(ft,gt){gt=xi(gt);var Ft=gt==="std::string";k0(ft,{name:gt,fromWireType:function(sn){var Sn=wt[sn>>2],Xn=sn+4,tr;if(Ft)for(var Wn=Xn,at=0;at<=Sn;++at){var ht=Xn+at;if(at==Sn||Ge[ht]==0){var zt=ht-Wn,kn=Te(Wn,zt);tr===void 0?tr=kn:(tr+="\0",tr+=kn),Wn=ht+1}}else{for(var _t=new Array(Sn),at=0;at>2]=Xn,Ft&&tr)Pe(Sn,at,Xn+1);else if(tr)for(var ht=0;ht255&&(ka(at),ki("String has UTF-16 code units that do not fit in 8 bits")),Ge[at+ht]=zt}else for(var ht=0;ht>1,Sn=sn+gt/2;!(sn>=Sn)&&qe[sn];)++sn;if(Ft=sn<<1,Ft-ft>32&&rl)return rl.decode(Ge.subarray(ft,Ft));for(var Xn="",tr=0;!(tr>=gt/2);++tr){var Wn=Ke[ft+tr*2>>1];if(Wn==0)break;Xn+=String.fromCharCode(Wn)}return Xn}function S1(ft,gt,Ft){if(Ft===void 0&&(Ft=2147483647),Ft<2)return 0;Ft-=2;for(var sn=gt,Sn=Ft>1]=tr,gt+=2}return Ke[gt>>1]=0,gt-sn}function Ll(ft){return ft.length*2}function Nl(ft,gt){for(var Ft=0,sn="";!(Ft>=gt/4);){var Sn=ut[ft+Ft*4>>2];if(Sn==0)break;if(++Ft,Sn>=65536){var Xn=Sn-65536;sn+=String.fromCharCode(55296|Xn>>10,56320|Xn&1023)}else sn+=String.fromCharCode(Sn)}return sn}function bl(ft,gt,Ft){if(Ft===void 0&&(Ft=2147483647),Ft<4)return 0;for(var sn=gt,Sn=sn+Ft-4,Xn=0;Xn=55296&&tr<=57343){var Wn=ft.charCodeAt(++Xn);tr=65536+((tr&1023)<<10)|Wn&1023}if(ut[gt>>2]=tr,gt+=4,gt+4>Sn)break}return ut[gt>>2]=0,gt-sn}function Fl(ft){for(var gt=0,Ft=0;Ft=55296&&sn<=57343&&++Ft,gt+=4}return gt}function il(ft,gt,Ft){Ft=xi(Ft);var sn,Sn,Xn,tr,Wn;gt===2?(sn=Al,Sn=S1,tr=Ll,Xn=()=>qe,Wn=1):gt===4&&(sn=Nl,Sn=bl,tr=Fl,Xn=()=>wt,Wn=2),k0(ft,{name:Ft,fromWireType:function(at){for(var ht=wt[at>>2],zt=Xn(),kn,_t=at+4,dr=0;dr<=ht;++dr){var ot=at+4+dr*gt;if(dr==ht||zt[ot>>Wn]==0){var nt=ot-_t,Fe=sn(_t,nt);kn===void 0?kn=Fe:(kn+="\0",kn+=Fe),_t=ot+gt}}return ka(at),kn},toWireType:function(at,ht){typeof ht!="string"&&ki("Cannot pass non-string to C++ string type "+Ft);var zt=tr(ht),kn=J2(4+zt+gt);return wt[kn>>2]=zt>>Wn,Sn(ht,kn+4,zt+gt),at!==null&&at.push(ka,kn),kn},argPackAdvance:8,readValueFromPointer:ui,destructorFunction:function(at){ka(at)}})}function Vl(ft,gt,Ft,sn,Sn,Xn){wr[ft]={name:xi(gt),rawConstructor:Eo(Ft,sn),rawDestructor:Eo(Sn,Xn),fields:[]}}function ol(ft,gt,Ft,sn,Sn,Xn,tr,Wn,at,ht){wr[ft].fields.push({fieldName:xi(gt),getterReturnType:Ft,getter:Eo(sn,Sn),getterContext:Xn,setterArgumentType:tr,setter:Eo(Wn,at),setterContext:ht})}function sl(ft,gt){gt=xi(gt),k0(ft,{isVoid:!0,name:gt,argPackAdvance:0,fromWireType:function(){},toWireType:function(Ft,sn){}})}var Ul={};function T1(ft){var gt=Ul[ft];return gt===void 0?xi(ft):gt}function E1(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function al(ft){return ft===0?va.toHandle(E1()):(ft=T1(ft),va.toHandle(E1()[ft]))}function X2(ft){ft>4&&(Gs[ft].refcount+=1)}function D1(ft,gt){var Ft=ai[ft];return Ft===void 0&&ki(gt+" has unknown type "+Do(ft)),Ft}function ll(ft){for(var gt="",Ft=0;Ftwt,Sn="return function emval_allocator_"+ft+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,Ft=0;Ft>2)], 'parameter "+Ft+`'); +var arg`+Ft+" = argType"+Ft+`.readValueFromPointer(args); +args += argType`+Ft+`['argPackAdvance']; +argTypes += 4; +`;return Sn+="var obj = new constructor("+gt+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",Sn)(D1,c,va.toHandle,sn)}var I1={};function O1(ft,gt,Ft,sn){ft=va.toValue(ft);var Sn=I1[gt];return Sn||(Sn=ll(gt),I1[gt]=Sn),Sn(ft,Ft,sn)}function ul(ft,gt){ft=D1(ft,"_emval_take_value");var Ft=ft.readValueFromPointer(gt);return va.toHandle(Ft)}function cl(){Dt("")}function Bl(ft,gt,Ft){Ge.copyWithin(ft,gt,gt+Ft)}function Gl(){return 2147483648}function Y2(ft){try{return le.grow(ft-Je.byteLength+65535>>>16),$t(le.buffer),1}catch{}}function M1(ft){var gt=Ge.length;ft=ft>>>0;var Ft=Gl();if(ft>Ft)return!1;let sn=(at,ht)=>at+(ht-at%ht)%ht;for(var Sn=1;Sn<=4;Sn*=2){var Xn=gt*(1+.2/Sn);Xn=Math.min(Xn,ft+100663296);var tr=Math.min(Ft,sn(Math.max(ft,Xn),65536)),Wn=Y2(tr);if(Wn)return!0}return!1}function u2(ft){var gt=c["_"+ft];return gt}function _2(ft,gt){it.set(ft,gt)}function Na(ft,gt,Ft,sn,Sn){var Xn={string:ot=>{var nt=0;if(ot!=null&&ot!==0){var Fe=(ot.length<<2)+1;nt=Tt(Fe),Pe(ot,nt,Fe)}return nt},array:ot=>{var nt=Tt(ot.length);return _2(ot,nt),nt}};function tr(ot){return gt==="string"?Te(ot):gt==="boolean"?!!ot:ot}var Wn=u2(ft),at=[],ht=0;if(sn)for(var zt=0;zt{Sn.byteLength&&(Sn=new Uint8Array(Sn)),Ge.set(Sn,1024),c.memoryInitializerRequest&&delete c.memoryInitializerRequest.response,Kn()},Ft=()=>{j(Vt,gt,function(){var Sn=new Error("could not load memory initializer "+Vt);v(Sn)})};if(c.memoryInitializerRequest){var sn=()=>{var Sn=c.memoryInitializerRequest,Xn=Sn.response;if(Sn.status!==200&&Sn.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+Sn.status+", retrying "+Vt),Ft();return}gt(Xn)};c.memoryInitializerRequest.response?setTimeout(sn,0):c.memoryInitializerRequest.addEventListener("load",sn)}else Ft()}}var qn;Pn=function ft(){qn||cr(),qn||(Pn=ft)};function cr(ft){if(mn>0||(Me(),mn>0))return;function gt(){qn||(qn=!0,c.calledRun=!0,!ce&&(ct(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),st()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),gt()},1)):gt()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return cr(),l.ready}})();n.exports=o})(CEe);var _Ee={exports:{}};(function(n,e){var o=(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(i=i||__filename),function(l){l=l||{};var c=typeof l<"u"?l:{},g,v;c.ready=new Promise(function(ot,nt){g=ot,v=nt});var _=Object.assign({},c),T="./this.program",P=typeof window=="object",I=typeof importScripts=="function",R=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",L=!P&&!R&&!I,V="";function U(ot){return c.locateFile?c.locateFile(ot,V):V+ot}var j,z,$;if(R){var K=p1,X=p1;I?V=X.dirname(V)+"/":V=__dirname+"/",j=(ot,nt)=>(ot=Ut(ot)?new URL(ot):X.normalize(ot),K.readFileSync(ot,nt?void 0:"utf8")),$=ot=>{var nt=j(ot,!0);return nt.buffer||(nt=new Uint8Array(nt)),nt},z=(ot,nt,Fe)=>{ot=Ut(ot)?new URL(ot):X.normalize(ot),K.readFile(ot,function(ze,oe){ze?Fe(ze):nt(oe.buffer)})},process.argv.length>1&&(T=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(ot){if(!(ot instanceof hr))throw ot}),process.on("unhandledRejection",function(ot){throw ot}),c.inspect=function(){return"[Emscripten Module object]"}}else(P||I)&&(I?V=self.location.href:typeof document<"u"&&document.currentScript&&(V=document.currentScript.src),i&&(V=i),V.indexOf("blob:")!==0?V=V.substr(0,V.replace(/[?#].*/,"").lastIndexOf("/")+1):V="",j=ot=>{var nt=new XMLHttpRequest;return nt.open("GET",ot,!1),nt.send(null),nt.responseText},I&&($=ot=>{var nt=new XMLHttpRequest;return nt.open("GET",ot,!1),nt.responseType="arraybuffer",nt.send(null),new Uint8Array(nt.response)}),z=(ot,nt,Fe)=>{var ze=new XMLHttpRequest;ze.open("GET",ot,!0),ze.responseType="arraybuffer",ze.onload=()=>{if(ze.status==200||ze.status==0&&ze.response){nt(ze.response);return}Fe()},ze.onerror=Fe,ze.send(null)});var ee=c.print||console.log.bind(console),ne=c.printErr||console.warn.bind(console);Object.assign(c,_),_=null,c.arguments&&c.arguments,c.thisProgram&&(T=c.thisProgram),c.quit&&c.quit;var le;c.wasmBinary&&(le=c.wasmBinary),c.noExitRuntime;var ce={Memory:function(ot){this.buffer=new ArrayBuffer(ot.initial*65536)},Module:function(ot){},Instance:function(ot,nt){this.exports=function(ze){function oe(xt){return xt.set=function(Kt,fn){this[Kt]=fn},xt.get=function(Kt){return this[Kt]},xt}var ke=new ArrayBuffer(16),s=new Int32Array(ke),de=new Float64Array(ke);function Re(xt){return s[xt]}function bt(xt,Kt){s[xt]=Kt}function Qt(){return de[0]}function Ae(xt){de[0]=xt}function Qe(){throw new Error("abort")}function tt(xt){var Kt=xt.a,fn=Kt.a,Bn=fn.buffer;fn.grow=Er;var dt=new Int8Array(Bn),tn=new Int16Array(Bn),t=new Int32Array(Bn),xe=new Uint8Array(Bn),Qn=new Uint16Array(Bn),ln=new Uint32Array(Bn),Ue=new Float32Array(Bn),mr=new Float64Array(Bn),De=Math.imul,Ye=Math.fround,Rr=Math.abs,ri=Math.clz32,R1=Math.min,ps=Math.max,F=Math.floor,He=Math.ceil,r=Math.sqrt,te=1/0,En=Kt.b,ni=Kt.c,or=Kt.d,In=Kt.e,Ce=Kt.f,On=Kt.g,U2=Kt.h,Q0=Kt.i,Lh=Kt.j,Qs=Kt.k,Z2=Kt.l,fl=Kt.m,fu=Kt.n,Fu=Kt.o,_c=Kt.p,xc=Kt.q,Nh=Kt.r,bh=Kt.s,d4=Kt.t,sp=Kt.u,ap=Kt.v,lp=Kt.w,up=Kt.x,cp=Kt.y,fp=Kt.z,hp=Kt.A,dp=Kt.B,gp=Kt.C,g4=Kt.D,p4=Kt.E,h5=Kt.F,Nt=117760,Vu=0,hu=0,Gi=0;function Sc(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=Ye(0),ji=0,Ji=0,s0=0,f0=0,P0=0,U0=0,q0=0,no=0,fo=0,Ro=0,Vo=0,qo=0,Xo=0,ss=0,xa=0,Ua=0,Ba=0;Zr=Nt-96|0,Nt=Zr,jt=t[x+8>>2];e:{t:{n:{if(!t[x>>2]){if(S=De(t[jt+16>>2]-t[jt+8>>2]|0,t[jt+20>>2]-t[jt+12>>2]|0)<<2,M=Jo(S),t[jt+60>>2]=M,!M){vt(t[x+32>>2],1,17900,0),se=x+28|0;break t}pi(M,0,S);break n}if(S=t[jt+60>>2],!S)break n;Gt(S),t[jt+60>>2]=0}if(!t[t[x+28>>2]>>2])break e;Ro=t[x+16>>2],S=(De(t[Ro+24>>2],152)+t[Ro+28>>2]|0)-152|0,Ua=t[S>>2],Ba=t[S+8>>2],Vo=t[x+20>>2],qo=t[x+12>>2],xa=t[x+4>>2],se=x+28|0;n:{if(y=Kp(u),y)break n;if(y=oi(1,156),!y){vt(t[x+32>>2],1,10256,0);break t}if(t[y+140>>2]=0,Hp(u,y))break n;vt(t[x+32>>2],1,18588,0),u=t[y+116>>2],u&&(Gt(u),t[y+116>>2]=0),u=t[y+120>>2],u&&(Gt(u),t[y+120>>2]=0),Gt(t[y+148>>2]),Gt(y);break t}t[y+144>>2]=t[x+24>>2],en=t[x+40>>2],li=t[x+36>>2],rr=t[x+32>>2],S=t[Vo+808>>2],u=t[qo+16>>2];n:{sr=t[Vo+16>>2];r:{if(sr&64){Y=Nt-304|0,Nt=Y;i:{if(S){if(li){vt(rr,1,5603,0);break i}vt(rr,1,5603,0);break i}G=t[y+116>>2],S=t[jt+20>>2]-t[jt+12>>2]|0,u=t[jt+16>>2]-t[jt+8>>2]|0,M=De(S,u);a:{s:{if(M>>>0>ln[y+132>>2]){if(Gt(G),Yt=M<<2,G=Jo(Yt),t[y+116>>2]=G,!G)break i;t[y+132>>2]=M;break s}if(!G)break a;Yt=M<<2}pi(G,0,Yt)}G=t[y+120>>2];a:{if(ln[y+136>>2]>2639||(Gt(G),G=Jo(10560),t[y+120>>2]=G,G))break a;break i}if(t[y+136>>2]=2640,pi(G,0,10560),t[y+128>>2]=S,t[y+124>>2]=u,H=t[jt+24>>2],!H){m=1;break i}Oe=t[jt+28>>2];a:{s:{o:{u:{l:{if(S=t[jt+52>>2],S){if(he=t[jt+4>>2],Yt=0,G=0,S>>>0>=4)for(u=S&-4;M=m<<3,G=t[(he+(M|24)|0)+4>>2]+(t[(he+(M|16)|0)+4>>2]+(t[(he+(M|8)|0)+4>>2]+(t[(M+he|0)+4>>2]+G|0)|0)|0)|0,m=m+4|0,O=O+4|0,(u|0)!=(O|0););if(u=S&3,u)for(;G=t[(he+(m<<3)|0)+4>>2]+G|0,m=m+1|0,Yt=Yt+1|0,(u|0)!=(Yt|0););if(!t[y+144>>2]&S>>>0<=1)break u;if(ln[y+152>>2]>>0)break l;break o}if(t[y+144>>2])break o;m=1;break i}if(Yt=Wi(t[y+148>>2],G),!Yt){m=0;break i}t[y+152>>2]=G,t[y+148>>2]=Yt,S=t[jt+52>>2];break s}if(m=1,(S|0)!=1)break i;Yt=t[t[jt+4>>2]>>2];break a}Yt=t[y+148>>2]}if(!S){G=0;break a}for(M=t[jt+4>>2],G=0,m=0;S=m<<3,u=S+M|0,Yr(G+Yt|0,t[u>>2],t[u+4>>2]),M=t[jt+4>>2],G=t[(S+M|0)+4>>2]+G|0,m=m+1|0,m>>>0>2];);}m=0,M=0,S=t[jt+40>>2],he=0;a:{if(!S||(u=t[jt>>2],M=t[u+8>>2],he=0,(S|0)==1))break a;he=t[u+32>>2]}S=H-Oe|0,M=M+he|0;a:{if(!M)break a;if(m=1,u=t[jt>>2],Ze=t[u>>2],(M|0)==1){m=0;break a}me=t[u+24>>2]}er=S+1|0,s0=t[y+116>>2],Qr=t[y+120>>2],bn=t[jt+12>>2],un=t[jt+20>>2],kt=t[jt+8>>2],ss=t[jt+16>>2];a:{s:{o:{u:{l:{h:{f:{p:{if(!(me|!m)){if(!li)break p;vt(rr,2,21421,0),M=1;break f}if(M>>>0<4)break f;if(li){t[Y+112>>2]=M,vt(rr,1,20056,Y+112|0);break a}t[Y+96>>2]=M,vt(rr,1,20056,Y+96|0),m=0;break i}if(vt(rr,2,21421,0),m=t[jt+24>>2],m>>>0>30)break h;if(Ne=1,m>>>0>=er>>>0)break u;break s}if(m=t[jt+24>>2],m>>>0<=30)break l;if(!li)break h;t[Y+32>>2]=t[jt+24>>2],vt(rr,1,23639,Y+32|0);break a}t[Y>>2]=m,vt(rr,1,23639,Y),m=0;break i}if(m>>>0>>0)break o;if((m|0)!=(er|0)){Ne=M;break u}if(M>>>0<2){Ne=M;break u}if(Ne=1,xe[49816])break u;if(!li){dt[49816]=1,t[Y+64>>2]=M,vt(rr,2,20883,Y- -64|0);break u}xe[49816]||(dt[49816]=1,t[Y+80>>2]=M,vt(rr,2,20883,Y+80|0))}if(!(!(Ze>>>0<2|G>>>0>>0)&me+Ze>>>0<=G>>>0)){if(li){m=0,vt(rr,1,19604,0);break i}m=0,vt(rr,1,19604,0);break i}if(O=Ze+Yt|0,Cn=xe[O-1|0]<<4|xe[O-2|0]&15,!(!(Cn>>>0<2|(Ze|0)<(Cn|0))&Cn>>>0<4080)){if(li){m=0,vt(rr,1,27282,0);break i}m=0,vt(rr,1,27282,0);break i}Tn=t[jt+28>>2],t[Y+272>>2]=0,t[Y+280>>2]=0,t[Y+264>>2]=0,t[Y+268>>2]=0,t[Y+296>>2]=0,t[Y+300>>2]=0,t[Y+284>>2]=0,t[Y+288>>2]=0,S=Cn-1|0,t[Y+276>>2]=S,G=(Ze+Yt|0)-Cn|0,t[Y+256>>2]=G,he=255,he=Cn>>>0>=2?xe[G|0]:he,u=8,t[Y+272>>2]=8,M=Cn-2|0,t[Y+276>>2]=M,he=(S|0)==1?he|15:he,S=0,Oe=S,t[Y+264>>2]=he,t[Y+268>>2]=S,H=G+((Cn|0)>1)|0,t[Y+256>>2]=H,t[Y+280>>2]=!S&(he|0)==255,re=G&3;u:{l:{if((re|0)==3)break l;if(S=255,!Oe&(he|0)==255&&(G=0,xe[H|0]>143))break u;if(S=(Cn|0)>=3?xe[H|0]:S,Q=Cn-3|0,t[Y+276>>2]=Q,G=!Oe&(he|0)==255,u=G?15:16,t[Y+272>>2]=u,_e=H+((Cn|0)>2)|0,t[Y+256>>2]=_e,S=(M|0)==1?S|15:S,M=0,t[Y+280>>2]=!M&(S|0)==255,M=S,H=he,S=G?7:8,G=S&31,(S&63)>>>0>=32?(en=H<>>32-G|Oe<>2]=he,t[Y+268>>2]=S,(re|0)==2)break l;if(!_r&(M|0)==255&&(G=0,xe[_e|0]>143))break u;if(m=255,m=(Cn|0)>=4?xe[_e|0]:m,H=Cn-4|0,t[Y+276>>2]=H,_e=_e+((Cn|0)>3)|0,t[Y+256>>2]=_e,S=(Q|0)==1?m|15:m,G=0,m=G,t[Y+280>>2]=!m&(S|0)==255,G=!_r&(M|0)==255,u=(G?7:8)+u|0,t[Y+272>>2]=u,M=S,S=G?7:8,G=S&31,(S&63)>>>0>=32?(Q=he<>>32-G|Oe<>2]=he,t[Y+268>>2]=S,(re|0)==1)break l;if(S=255,!m&(M|0)==255&&(G=0,xe[_e|0]>143))break u;S=(Cn|0)>=5?xe[_e|0]:S,t[Y+276>>2]=Cn-5,t[Y+256>>2]=_e+((Cn|0)>4),G=0,S=(H|0)==1?S|15:S,t[Y+280>>2]=!G&(S|0)==255,M=!m&(M|0)==255,u=(M?7:8)+u|0,t[Y+272>>2]=u,H=he,M=M?7:8,he=M&31,(M&63)>>>0>=32?(re=H<>>32-he|Oe<>2]=he,t[Y+268>>2]=S}S=he,u=64-u|0,M=u&31,(u&63)>>>0>=32?(Q=S<>>32-M|Oe<>2]=u,t[Y+268>>2]=Q,G=1}if(!G){if(li){m=0,vt(rr,1,22031,0);break i}m=0,vt(rr,1,22031,0);break i}Rt=ss-kt|0,_r=Cn-2|0,t[Y+244>>2]=_r,S=Ze+Yt|0,u=S-3|0,t[Y+224>>2]=u,H=xe[S-2|0],_e=H>>>0>143,t[Y+248>>2]=_e,Oe=0,he=H>>>4|0,t[Y+232>>2]=he,t[Y+236>>2]=0,S=(he&7)==7?3:4,t[Y+240>>2]=S,M=(u&3)+1|0,$e=(M|0)<(_r|0)?M:_r;u:{l:{if((Cn|0)<=2){M=_r-$e|0,t[Y+244>>2]=M;break l}M=u-1|0,t[Y+224>>2]=M,G=xe[u|0],_e=G>>>0>143,t[Y+248>>2]=_e,u=S&31,(S&63)>>>0>=32?(re=G<>>32-u,u=G<>2]=he,Oe=re,t[Y+236>>2]=re,S=(H>>>0<=143?8:(G&127)==127?7:8)+S|0,t[Y+240>>2]=S;h:{if(($e|0)<2){u=M;break h}if(u=M-1|0,t[Y+224>>2]=u,M=xe[M|0],_e=M>>>0>143,t[Y+248>>2]=_e,H=S&31,(S&63)>>>0>=32?(Q=M<>>32-H,H=M<>2]=he,Oe=Q|Oe,t[Y+236>>2]=Oe,S=(G>>>0<=143?8:(M&127)==127?7:8)+S|0,t[Y+240>>2]=S,m=($e|0)<=1?1:$e,(m|0)==2)break h;if(H=u-1|0,t[Y+224>>2]=H,G=xe[u|0],_e=G>>>0>143,t[Y+248>>2]=_e,u=S&31,(S&63)>>>0>=32?(Q=G<>>32-u,u=G<>2]=he,t[Y+236>>2]=u,S=(M>>>0<=143?8:(G&127)==127?7:8)+S|0,t[Y+240>>2]=S,(m|0)==3){u=H;break h}u=H-1|0,t[Y+224>>2]=u,M=xe[H|0],_e=M>>>0>143,t[Y+248>>2]=_e,H=S&31,(S&63)>>>0>=32?(en=M<>>32-H,H=M<>2]=he,Oe=Oe|en,t[Y+236>>2]=Oe,S=(G>>>0<=143?8:(M&127)==127?7:8)+S|0,t[Y+240>>2]=S}if(M=_r-$e|0,t[Y+244>>2]=M,S>>>0>32)break u}l:{if((M|0)>=4){G=t[u-3>>2],t[Y+244>>2]=M-4,t[Y+224>>2]=u-4;break l}if((M|0)<=0){G=0;break l}$e=M&1;h:{if((M|0)==1){m=24,G=0;break h}for(_r=M&-2,m=24,G=0,Q=0;H=u-1|0,t[Y+224>>2]=H,re=xe[u|0],u=u-2|0,t[Y+224>>2]=u,t[Y+244>>2]=M-1,H=xe[H|0],M=M-2|0,t[Y+244>>2]=M,G=re<>2]=u-1,u=xe[u|0],t[Y+244>>2]=M-1,G=u<>2]=re>>>0>143,H=_e&&(G&2130706432)==2130706432?7:8,M=H+(G>>>0<=2415919103?8:(G&8323072)==8323072?7:8)|0,m=G>>>16&255,u=M+(m>>>0<=143?8:(G&32512)==32512?7:8)|0,Q=G>>>8&255,t[Y+240>>2]=u+((Q>>>0<=143?8:(G&127)==127?7:8)+S|0),u=m<>>24|Q<>>0>=32?(Q=u<>>32-M,u=u<>2]=u|he,t[Y+236>>2]=Q|Oe}l0(Y+192|0,Yt,Ze-Cn|0,255),_r=0;u:{if(Ne>>>0<2||(l0(Y+160|0,O,me,0),_r=0,(Ne|0)==2))break u;he=0,Oe=0,m=0,t[Y+152>>2]=1,t[Y+144>>2]=0,t[Y+136>>2]=0,t[Y+140>>2]=0,H=me,G=H-1|0,t[Y+148>>2]=G,S=(Ze+Yt|0)+G|0,t[Y+128>>2]=S,_r=S&3;l:{if((H|0)<=0){u=S;break l}u=S-1|0,t[Y+128>>2]=u,he=xe[S|0]}t[Y+136>>2]=he,t[Y+140>>2]=0,O=he>>>0>143,t[Y+152>>2]=O,_e=(he&127)==127?7:8,t[Y+144>>2]=_e;l:{if(!_r)break l;Ze=H-2|0,t[Y+148>>2]=Ze;h:{if((H|0)<2){S=u;break h}S=u-1|0,t[Y+128>>2]=S,m=xe[u|0]}if(O=m>>>0>143,t[Y+152>>2]=O,u=_e&31,(_e&63)>>>0>=32?(Q=m<>>32-u,u=m<>2]=re,t[Y+140>>2]=Q,_e=(he>>>0<=143?8:(m&127)==127?7:8)+_e|0,t[Y+144>>2]=_e,(_r|0)==1){u=S,he=re,H=G,G=Ze;break l}Q=H-3|0,t[Y+148>>2]=Q;h:{if((H|0)<3){M=S;break h}M=S-1|0,t[Y+128>>2]=M,A=xe[S|0]}if(O=A>>>0>143,t[Y+152>>2]=O,u=_e&31,(_e&63)>>>0>=32?(en=A<>>32-u,u=A<>2]=he,t[Y+140>>2]=u,_e=(m>>>0<=143?8:(A&127)==127?7:8)+_e|0,t[Y+144>>2]=_e,(_r|0)==2){u=M,H=Ze,G=Q;break l}G=H-4|0,t[Y+148>>2]=G,m=0;h:{if((H|0)<4){u=M;break h}u=M-1|0,t[Y+128>>2]=u,m=xe[M|0]}O=m>>>0>143,t[Y+152>>2]=O,S=_e&31,(_e&63)>>>0>=32?(re=m<>>32-S,S=m<>2]=he,t[Y+140>>2]=S,_e=(A>>>0<=143?8:(m&127)==127?7:8)+_e|0,t[Y+144>>2]=_e,H=Q}if(_e>>>0<=32){l:{if((H|0)>=5){S=t[u-3>>2],t[Y+148>>2]=H-5,t[Y+128>>2]=u-4;break l}if(S=0,(H|0)<2)break l;for(H=24;m=u-1|0,t[Y+128>>2]=m,u=xe[u|0],M=G-1|0,t[Y+148>>2]=M,S=u<>>0>1,u=m,H=H-8|0,G=M,!!Q;);}Q=S&255,t[Y+152>>2]=Q>>>0>143,G=O&&(S&2130706432)==2130706432?7:8,M=G+(S>>>0<=2415919103?8:(S&8323072)==8323072?7:8)|0,H=S>>>16&255,u=M+(H>>>0<=143?8:(S&32512)==32512?7:8)|0,m=S>>>8&255,t[Y+144>>2]=u+((m>>>0<=143?8:(S&127)==127?7:8)+_e|0),u=H<>>24|m<>>0>=32?(Q=u<>>32-S,u=u<>2]=u|he,t[Y+140>>2]=Q|Oe}_r=1}gi=un-bn|0,Rn=er+1|0,dt[Qr+2112|0]=0,A=Qr+2112|0,S=Uu(Y+256|0);u:{if((Rt|0)<=0){gr=Tn-1|0;break u}for(gr=Tn-1|0,me=Qr,M=A,Yt=0,H=s0,O=0;;){Ze=O,m=Qn[(Yt<<8|(Sf(Y+224|0)&127)<<1)+31008>>1];l:{if(Yt)break l;if(u=S-2|0,m=(u|0)==-1?m:0,(S|0)>1){S=u;break l}S=Uu(Y+256|0)}if(Oe=t[Y+232>>2],G=t[Y+236>>2],u=t[Y+240>>2],un=m>>>4|0,_e=t[me>>2]|(un&3|m>>>2&48)<<_i,t[me>>2]=_e,$e=m&16,Yt=m>>>5&7|$e>>>4,he=u,u=m&7,O=he-u|0,he=((1<>>u,Oe=G>>>u|0,u=he,G=0,(Rt|0)>(Ze|2)){G=Qn[(Yt<<8|(u&127)<<1)+31008>>1];l:{if(Yt)break l;if(u=S-2|0,G=(u|0)==-1?G:0,(S|0)>1){S=u;break l}S=Uu(Y+256|0)}Yt=G>>>4&1|G>>>5&7,u=G&7,O=O-u|0,he=((1<>>u,Oe=Oe>>>u|0,u=he}t[me>>2]=_e|(G<<2&768|G&48)<<_i+4,_e=G>>>2&2|m>>>3&1;l:{if((_e|0)!=3)break l;if(Q=S-2|0,_e=(Q|0)==-1?4:3,(S|0)>1){S=Q;break l}S=Uu(Y+256|0)}l:{if(!_e){t[Y+120>>2]=1,t[Y+124>>2]=1,u=0;break l}if(_e>>>0<=2){Q=xe[(u&7)+35156|0],bn=Q>>>2&7,re=Q&3,Q=(((-1<>>re)+(Q>>>5|0)|0)+1|0,u=(_e|0)==1,t[Y+124>>2]=u?1:Q,t[Y+120>>2]=u?Q:1,u=re+bn|0;break l}if(Q=u,u=xe[(u&7)+35156|0],en=u&3,Q=Q>>>en|0,(_e|0)==3){if(er=(u>>>5|0)+1|0,(en|0)==3){t[Y+124>>2]=Q&1|2,u=u>>>2&7,t[Y+120>>2]=er+((-1<>>1),u=u+4|0;break l}_e=xe[(Q&7)+35156|0],re=_e&3,Q=Q>>>re|0,bn=u>>>2&7,t[Y+120>>2]=er+(Q&(-1<>>2&7,t[Y+124>>2]=(((-1<>>bn)+(_e>>>5|0)|0)+1,u=u+(re+(en+bn|0)|0)|0;break l}_e=xe[(Q&7)+35156|0],re=_e&3,Q=Q>>>re|0,bn=u>>>2&7,t[Y+120>>2]=((Q&(-1<>>5|0)|0)+3,u=_e>>>2&7,t[Y+124>>2]=(((-1<>>bn)+(_e>>>5|0)|0)+3,u=u+(bn+(re+en|0)|0)|0}l:{if(er=t[Y+120>>2],er>>>0<=Rn>>>0&&(bn=t[Y+124>>2],bn>>>0<=Rn>>>0))break l;if(li){m=0,vt(rr,1,28088,0);break i}m=0,vt(rr,1,28088,0);break i}if(t[Y+240>>2]=O-u,re=u&31,(u&63)>>>0>=32?(Q=0,u=Oe>>>re|0):(Q=Oe>>>re|0,u=((1<>>re),t[Y+232>>2]=u,t[Y+236>>2]=Q,Oe=G&240|un&15,O=Ze+4|0,u=(O|0)<=(Rt|0)?255:255>>>(O-Rt<<1)|0,un=(gi|0)>1?u:u&85,Oe&(un^-1)){if(li){m=0,vt(rr,1,23313,0);break i}m=0,vt(rr,1,23313,0);break i}l:{h:{if($e){Oe=ya(Y+192|0),re=er+(m<<19>>31)|0,t[Y+208>>2]=t[Y+208>>2]-re,he=t[Y+204>>2],u=t[Y+200>>2],_e=re&31,(re&63)>>>0>=32?(Q=0,u=he>>>_e|0):(Q=he>>>_e|0,u=((1<<_e)-1&he)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,_e=(Oe&(-1<>>8&1)<>2]=_e}l:{if(m&32){Oe=ya(Y+192|0),re=er+(m<<18>>31)|0,t[Y+208>>2]=t[Y+208>>2]-re,he=t[Y+204>>2],u=t[Y+200>>2],_e=re&31,(re&63)>>>0>=32?(Q=0,u=he>>>_e|0):(Q=he>>>_e|0,u=((1<<_e)-1&he)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,u=Oe&(-1<>>9&1)<>2]=u+2<>>0>>0?Oe:u)|128;break l}if(!(un&2))break l;t[(Rt<<2)+H>>2]=0}re=H+4|0;l:{h:{if(m&64){Oe=ya(Y+192|0),_e=er+(m<<17>>31)|0,t[Y+208>>2]=t[Y+208>>2]-_e,he=t[Y+204>>2],u=t[Y+200>>2],$e=_e&31,(_e&63)>>>0>=32?(Q=0,u=he>>>$e|0):(Q=he>>>$e|0,u=((1<<$e)-1&he)<<32-$e|u>>>$e),t[Y+200>>2]=u,t[Y+204>>2]=Q,$r=(Oe&(-1<<_e^-1)|(m>>>10&1)<<_e|1)+2<>2]=$r}dt[M+1|0]=0;l:{if(m&128){Oe=ya(Y+192|0),_e=er+(m<<16>>31)|0,t[Y+208>>2]=t[Y+208>>2]-_e,he=t[Y+204>>2],u=t[Y+200>>2],$e=_e&31,(_e&63)>>>0>=32?(Q=0,u=he>>>$e|0):(Q=he>>>$e|0,u=((1<<$e)-1&he)<<32-$e|u>>>$e),t[Y+200>>2]=u,t[Y+204>>2]=Q,u=Oe&(-1<<_e^-1)|(m>>>11&1)<<_e|1,t[re+(Rt<<2)>>2]=u+2<>2]=0}m=H+8|0;l:{h:{if(G&16){Oe=ya(Y+192|0),re=bn+(G<<19>>31)|0,t[Y+208>>2]=t[Y+208>>2]-re,he=t[Y+204>>2],u=t[Y+200>>2],_e=re&31,(re&63)>>>0>=32?(Q=0,u=he>>>_e|0):(Q=he>>>_e|0,u=((1<<_e)-1&he)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,_e=(Oe&(-1<>>8&1)<>2]=_e}l:{if(G&32){Oe=ya(Y+192|0),re=bn+(G<<18>>31)|0,t[Y+208>>2]=t[Y+208>>2]-re,he=t[Y+204>>2],u=t[Y+200>>2],_e=re&31,(re&63)>>>0>=32?(Q=0,u=he>>>_e|0):(Q=he>>>_e|0,u=((1<<_e)-1&he)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,u=Oe&(-1<>>9&1)<>2]=u+2<>>0>>0?Oe:u)|128;break l}if(!(un&32))break l;t[m+(Rt<<2)>>2]=0}re=H+12|0,M=M+2|0;l:{h:{if(G&64){Oe=ya(Y+192|0),m=bn+(G<<17>>31)|0,t[Y+208>>2]=t[Y+208>>2]-m,he=t[Y+204>>2],u=t[Y+200>>2],_e=m&31,(m&63)>>>0>=32?(Q=0,u=he>>>_e|0):(Q=he>>>_e|0,u=((1<<_e)-1&he)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,_e=(Oe&(-1<>>10&1)<>2]=_e}Oe=Ze&4,dt[M|0]=0;l:{if(G&128){he=ya(Y+192|0),Ze=bn+(G<<16>>31)|0,t[Y+208>>2]=t[Y+208>>2]-Ze,m=t[Y+204>>2],u=t[Y+200>>2],_e=Ze&31,(Ze&63)>>>0>=32?(Q=0,u=m>>>_e|0):(Q=m>>>_e|0,u=((1<<_e)-1&m)<<32-_e|u>>>_e),t[Y+200>>2]=u,t[Y+204>>2]=Q,u=he&(-1<>>11&1)<>2]=u+2<>>0<128)break l;t[re+(Rt<<2)>>2]=0}if(_i=_i^16,me=me+Oe|0,H=H+16|0,!((O|0)<(Rt|0)))break}}if(Xo=sr&8,no=Qr+1584|0,fo=Qr+1056|0,ji=Qr+528|0,$n=De(Rt,3),f0=Rt<<1,u=Tn-2|0,U0=3<2)for(Tn=(Rt+7>>>1&2147483644)+4|0;;){$e=_e,Dr=xe[A|0],dt[A|0]=0,_i=_i&-17^2;u:{if((Rt|0)<=0){_e=$e+2|0;break u}for(Yt=$e&4?ji:Qr,_e=$e+2|0,H=s0+(De($e,Rt)<<2)|0,un=0,M=A,Ze=0;;){sr=Ze,en=Dr&255,u=xe[M+1|0]>>>5&4|(en>>>7|un),G=Qn[(u<<8|(Sf(Y+224|0)&127)<<1)+33056>>1];l:{if(u)break l;if(u=S-2|0,G=(u|0)==-1?G:0,(S|0)>1){S=u;break l}S=Uu(Y+256|0)}he=t[Y+232>>2],Oe=t[Y+236>>2],u=t[Y+240>>2],re=t[Yt>>2]|(G>>>4&3|G>>>2&48)<<_i,t[Yt>>2]=re,er=G&64,bn=G&128,un=er>>>5|bn>>>6,m=u,u=G&7,$r=m-u|0,he=((1<>>u,Oe=Oe>>>u|0,Ze=he,O=0;l:{if((Rt|0)<=(sr|2)){m=0;break l}u=xe[M+2|0]>>>5&4|xe[M+1|0]>>>7|un,m=Qn[(u<<8|(Ze&127)<<1)+33056>>1];h:{if(u)break h;if(u=S-2|0,m=(u|0)==-1?m:0,(S|0)>1){S=u;break h}S=Uu(Y+256|0)}un=(m>>>5|m>>>6)&2,u=m&7,$r=$r-u|0,he=((1<>>u,Oe=Oe>>>u|0,Ze=he}t[Yt>>2]=re|(m<<2&768|m&48)<<_i+4,u=1,me=1,Q=m>>>2&2|G>>>3&1;l:{if(!Q)break l;if(Cn=xe[(Ze&7)+35156|0],O=Cn&3,me=Ze>>>O|0,(Q|0)!=3){re=Cn>>>2&7,Ze=((me&(-1<>>5|0)|0)+1|0,Q=(Q|0)==1,u=Q?1:Ze,me=Q?Ze:1,O=O+re|0;break l}Ze=xe[(me&7)+35156|0],u=Ze&3,re=Cn>>>2&7,Q=Ze>>>2&7,O=(u+(re+O|0)|0)+Q|0,u=me>>>u|0,me=((u&(-1<>>5|0)|0)+1|0,u=(((-1<>>re)+(Ze>>>5|0)|0)+1|0}if(t[Y+240>>2]=$r-O,Q=O&31,(O&63)>>>0>=32?(re=0,Oe=Oe>>>Q|0):(re=Oe>>>Q|0,Oe=((1<>>Q),t[Y+232>>2]=Oe,t[Y+236>>2]=re,Q=G&240,Q-1&Q&&(he=en&127,Oe=xe[M+1|0]&127,he=he>>>0>Oe>>>0?he:Oe,Oe=he-2|0,me=(he>>>0>=Oe>>>0?Oe:0)+me|0),he=m&240,he-1&he&&(Ze=u,Oe=xe[M+1|0]&127,u=xe[M+2|0]&127,u=u>>>0>>0?Oe:u,u=Ze+(u>>>0>2?u-2|0:0)|0),!(me>>>0<=Rn>>>0&u>>>0<=Rn>>>0)){if(li){m=0,vt(rr,1,28188,0);break i}m=0,vt(rr,1,28188,0);break i}if(Dr=xe[M+2|0],dt[M+1|0]=0,dt[M+2|0]=0,Ze=sr+4|0,Oe=(Ze|0)<=(Rt|0)?255:255>>>(Ze-Rt<<1)|0,Cn=(_e|0)>(gi|0)?Oe&85:Oe,(he|Q>>>4)&(Cn^-1)){if(li){m=0,vt(rr,1,23313,0);break i}m=0,vt(rr,1,23313,0);break i}l:{h:{if(G&16){he=ya(Y+192|0),O=(G<<19>>31)+me|0,t[Y+208>>2]=t[Y+208>>2]-O,Q=t[Y+204>>2],Oe=t[Y+200>>2],en=O&31,(O&63)>>>0>=32?(re=0,Oe=Q>>>en|0):(re=Q>>>en|0,Oe=((1<>>en),t[Y+200>>2]=Oe,t[Y+204>>2]=re,$r=(he&(-1<>>8&1)<>2]=$r}l:{if(G&32){he=ya(Y+192|0),O=(G<<18>>31)+me|0,t[Y+208>>2]=t[Y+208>>2]-O,Q=t[Y+204>>2],Oe=t[Y+200>>2],en=O&31,(O&63)>>>0>=32?(re=0,Oe=Q>>>en|0):(re=Q>>>en|0,Oe=((1<>>en),t[Y+200>>2]=Oe,t[Y+204>>2]=re,Oe=he&(-1<>>9&1)<>2]=Oe+2<>>0>Oe>>>0?he:Oe)|128;break l}if(!(Cn&2))break l;t[(Rt<<2)+H>>2]=0}O=H+4|0;l:{h:{if(er){he=ya(Y+192|0),er=(G<<17>>31)+me|0,t[Y+208>>2]=t[Y+208>>2]-er,Q=t[Y+204>>2],Oe=t[Y+200>>2],en=er&31,(er&63)>>>0>=32?(re=0,Oe=Q>>>en|0):(re=Q>>>en|0,Oe=((1<>>en),t[Y+200>>2]=Oe,t[Y+204>>2]=re,Di=(he&(-1<>>10&1)<>2]=Di}l:{if(bn){he=ya(Y+192|0),me=(G<<16>>31)+me|0,t[Y+208>>2]=t[Y+208>>2]-me,Q=t[Y+204>>2],Oe=t[Y+200>>2],bn=me&31,(me&63)>>>0>=32?(re=0,Oe=Q>>>bn|0):(re=Q>>>bn|0,Oe=((1<>>bn),t[Y+200>>2]=Oe,t[Y+204>>2]=re,G=he&(-1<>>11&1)<>2]=G+2<>2]=0}Q=H+8|0;l:{h:{if(m&16){Oe=ya(Y+192|0),me=(m<<19>>31)+u|0,t[Y+208>>2]=t[Y+208>>2]-me,he=t[Y+204>>2],G=t[Y+200>>2],O=me&31,(me&63)>>>0>=32?(re=0,G=he>>>O|0):(re=he>>>O|0,G=((1<>>O),t[Y+200>>2]=G,t[Y+204>>2]=re,me=(Oe&(-1<>>8&1)<>2]=me}l:{if(m&32){Oe=ya(Y+192|0),me=(m<<18>>31)+u|0,t[Y+208>>2]=t[Y+208>>2]-me,he=t[Y+204>>2],G=t[Y+200>>2],O=me&31,(me&63)>>>0>=32?(re=0,G=he>>>O|0):(re=he>>>O|0,G=((1<>>O),t[Y+200>>2]=G,t[Y+204>>2]=re,G=Oe&(-1<>>9&1)<>2]=G+2<>>0>>0?Oe:G)|128;break l}if(!(Cn&32))break l;t[Q+(Rt<<2)>>2]=0}Q=H+12|0;l:{h:{if(m&64){Oe=ya(Y+192|0),me=(m<<17>>31)+u|0,t[Y+208>>2]=t[Y+208>>2]-me,he=t[Y+204>>2],G=t[Y+200>>2],O=me&31,(me&63)>>>0>=32?(re=0,G=he>>>O|0):(re=he>>>O|0,G=((1<>>O),t[Y+200>>2]=G,t[Y+204>>2]=re,me=(Oe&(-1<>>10&1)<>2]=me}G=sr&4,M=M+2|0;l:{if(m&128){Oe=ya(Y+192|0),me=(m<<16>>31)+u|0,t[Y+208>>2]=t[Y+208>>2]-me,he=t[Y+204>>2],u=t[Y+200>>2],sr=me&31,(me&63)>>>0>=32?(re=0,u=he>>>sr|0):(re=he>>>sr|0,u=((1<>>sr),t[Y+200>>2]=u,t[Y+204>>2]=re,u=Oe&(-1<>>11&1)<>2]=u+2<>>0<128)break l;t[Q+(Rt<<2)>>2]=0}if(_i=_i^16,Yt=G+Yt|0,H=H+16|0,!((Ze|0)<(Rt|0)))break}}u:{if(_e&3|Ne>>>0<2)break u;sr=_e&4;l:{h:{if(_r){if(Q=sr?Qr:ji,O=0,(Rt|0)<=0)break h;for(H=s0+(De(Rt,$e-2|0)<<2)|0;;){if(G=Sf(Y+128|0),m=0,Ze=t[Q>>2],Ze){for(m=H+(O<<2)|0,u=0,M=15;;){f:{if(!(M&Ze)||(he=M&286331153,he&Ze&&(t[m>>2]=q0|t[m>>2]^((G^-1)&1)<>>1|0),Ze&he<<1&&(Oe=(Rt<<2)+m|0,t[Oe>>2]=q0|t[Oe>>2]^((G^-1)&1)<>>1|0),Ze&he<<2&&(Oe=(f0<<2)+m|0,t[Oe>>2]=q0|t[Oe>>2]^((G^-1)&1)<>>1|0),!(Ze&he<<3)))break f;Oe=($n<<2)+m|0,t[Oe>>2]=q0|t[Oe>>2]^((G^-1)&1)<>>1|0}if(m=m+4|0,M=M<<4,u=u+1|0,(u|0)==8)break}m=Nk(Ze)}if(Q=Q+4|0,t[Y+144>>2]=t[Y+144>>2]-m,M=t[Y+140>>2],u=t[Y+136>>2],G=m&31,(m&63)>>>0>=32?(re=0,u=M>>>G|0):(re=M>>>G|0,u=((1<>>G),t[Y+136>>2]=u,t[Y+140>>2]=re,O=O+8|0,!((Rt|0)>(O|0)))break}}if(Yt=!sr,me=0,G=0,Di=sr?fo:no,m=Di,Q=sr?Qr:ji,M=Q,(Rt|0)<=0)break l;for(;u=G>>>28|0,G=t[M>>2],u=G|(u|G<<4|G>>>4),t[m>>2]=u,u=u|t[M+4>>2]<<28,t[m>>2]=(u>>>1&2004318071|u<<1&-286331154|u)&(G^-1),m=m+4|0,M=M+4|0,me=me+8|0,(Rt|0)>(me|0););break l}Yt=!sr,Di=sr?fo:no}if($e>>>0<6)break u;me=0,u=0,m=Q,Dr=Yt?fo:no,G=Dr,he=Yt?Qr:ji,M=he,Ze=(Rt|0)<=0;l:{if(Ze)break l;for(;Oe=m+4|0,H=t[m>>2],Xo?u=t[G>>2]:u=t[G>>2]|(H|(H<<4|u>>>28|H>>>4|t[Oe>>2]<<28))<<3&-2004318072,t[G>>2]=u&(t[M>>2]^-1),M=M+4|0,G=G+4|0,u=H,m=Oe,me=me+8|0,(Rt|0)>(me|0););if(Ze)break l;for(en=s0+(De(Rt,$e-6|0)<<2)|0,$r=0,$e=he;;){if(me=0,m=t[Dr>>2],m){for(er=Rt-$r|0,G=0,un=0;;){Oe=G,G=ya(Y+160|0),u=un+4|0,Cn=(Rt|0)>(u+$r|0)?u:er,bn=(Cn|0)<=(un|0);h:{if(bn){M=0;break h}for(P0=t[$e>>2]^-1,O=((un|$r)<<2)+en|0,M=0,u=un,sr=u<<2,Ze=15<>>1|0,M=M+1|0),re=Ji<<1,re&m&&(G&1&&(me=re|me,m=P0&116<<(u<<2)|m),G=G>>>1|0,M=M+1|0),re=Ji<<2,re&m&&(G&1&&(me=re|me,m=P0&232<<(u<<2)|m),G=G>>>1|0,M=M+1|0),re=Ji<<3,!(re&m)))break f;G&1&&(me=re|me,m=P0&192<<(u<<2)|m),M=M+1|0,G=G>>>1|0}if(H=H<<4,u=u+1|0,!((Cn|0)>(u|0)))break}if(bn|!(me>>>sr&65535))break h;for(;;){f:{if(!(me&Ze)||(H=Ze&286331153,H&me&&(t[O>>2]=U0|(t[O>>2]|G<<31),G=G>>>1|0,M=M+1|0),H<<1&me&&(u=(Rt<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),G=G>>>1|0,M=M+1|0),H<<2&me&&(u=(f0<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),G=G>>>1|0,M=M+1|0),!(H<<3&me)))break f;u=($n<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),M=M+1|0,G=G>>>1|0}if(Ze=Ze<<4,O=O+4|0,un=un+1|0,!((Cn|0)>(un|0)))break}}if(t[Y+176>>2]=t[Y+176>>2]-M,G=t[Y+172>>2],u=t[Y+168>>2],H=M&31,(M&63)>>>0>=32?(re=0,u=G>>>H|0):(re=G>>>H|0,u=((1<>>H),t[Y+168>>2]=u,t[Y+172>>2]=re,G=1,un=4,!!(Oe&1))break}t[Dr+4>>2]=t[Dr+4>>2]|(me>>>27&14|me>>>29|me>>>28)&(t[$e+4>>2]^-1)}if(G=t[$e>>2]|me,Oe=G>>>3&286331153,M=Oe>>>4|Oe<<4|Oe,$r&&(u=Di-4|0,t[u>>2]=t[u>>2]|(t[Q-4>>2]^-1)&Oe<<28),t[Di>>2]=t[Di>>2]|M&(t[Q>>2]^-1),t[Di+4>>2]=t[Di+4>>2]|(t[Q+4>>2]^-1)&G>>>31,Dr=Dr+4|0,$e=$e+4|0,Di=Di+4|0,Q=Q+4|0,$r=$r+8|0,!((Rt|0)>($r|0)))break}}pi(he,0,Tn)}if(!((_e|0)<(gi|0)))break}u:{if(Ne>>>0<2)break u;H=(gi&3)-1|0;l:{if(H>>>0<2&_r){if((Rt|0)<=0)break l;for(Oe=s0+(De(Rt,gi&16777212)<<2)|0,O=gi&4?ji:Qr,en=0;;){if(G=Sf(Y+128|0),m=0,Q=t[O>>2],Q){for(m=Oe+(en<<2)|0,M=15,u=0;;){h:{if(!(M&Q)||(he=M&286331153,he&Q&&(t[m>>2]=q0|t[m>>2]^((G^-1)&1)<>>1|0),Q&he<<1&&(S=(Rt<<2)+m|0,t[S>>2]=q0|t[S>>2]^((G^-1)&1)<>>1|0),Q&he<<2&&(S=(f0<<2)+m|0,t[S>>2]=q0|t[S>>2]^((G^-1)&1)<>>1|0),!(Q&he<<3)))break h;S=($n<<2)+m|0,t[S>>2]=q0|t[S>>2]^((G^-1)&1)<>>1|0}if(m=m+4|0,M=M<<4,u=u+1|0,(u|0)==8)break}m=Nk(Q)}if(O=O+4|0,t[Y+144>>2]=t[Y+144>>2]-m,S=t[Y+140>>2],u=t[Y+136>>2],M=m&31,(m&63)>>>0>=32?(re=0,u=S>>>M|0):(re=S>>>M|0,u=((1<>>M),t[Y+136>>2]=u,t[Y+140>>2]=re,en=en+8|0,!((Rt|0)>(en|0)))break}}if((Rt|0)<=0|H>>>0>1)break l;for(u=gi&4,m=u?ji:Qr,M=u?no:fo,me=0,G=0;u=G>>>28|0,G=t[m>>2],u=G|(u|G<<4|G>>>4),t[M>>2]=u,u=u|t[m+4>>2]<<28,t[M>>2]=(u>>>1&2004318071|u<<1&-286331154|u)&(G^-1),M=M+4|0,m=m+4|0,me=me+8|0,(Rt|0)>(me|0););}if(Ne=(gi|0)>6?(gi-(gi+1&3)|0)-3|0:0,(gi|0)<=(Ne|0))break u;for(un=(Rt|0)<=0;;){S=gi-Ne|0,u=S-1|0;l:{h:{if(u>>>0>=3){if($r=-1,(S|0)<5)break h;if(un)break l;if(u=Ne&4,m=u?ji:Qr,G=u?no:fo,M=0,!Xo){for(M=u?Qr:ji,me=0,H=0;u=H>>>28|0,H=t[M>>2],t[G>>2]=(t[G>>2]|(H|(u|H<<4|H>>>4|t[M+4>>2]<<28))<<3&-2004318072)&(t[m>>2]^-1),m=m+4|0,G=G+4|0,M=M+4|0,me=me+8|0,(Rt|0)>(me|0););break h}for(;t[G>>2]=t[G>>2]&(t[m>>2]^-1),m=m+4|0,G=G+4|0,M=M+8|0,(Rt|0)>(M|0););break h}$r=t[(u<<2)+35164>>2]}if(un)break l;for(u=Ne&4,_i=u?ji:Qr,_e=u?no:fo,Ze=u?Qr:ji,S=u?fo:no,_r=s0+(De(Ne,Rt)<<2)|0,Dr=0;;){if(me=0,m=t[_e>>2]&$r,m){for(sr=Rt-Dr|0,G=0,he=0;;){Oe=G,G=ya(Y+160|0),u=he+4|0,$e=(Rt|0)>(u+Dr|0)?u:sr,re=($e|0)<=(he|0);h:{if(re){M=0;break h}for(er=(t[_i>>2]^-1)&$r,O=_r+((he|Dr)<<2)|0,M=0,u=he,A=u<<2,en=15<>>1|0,M=M+1|0),Q=bn<<1,Q&m&&(G&1&&(me=Q|me,m=er&116<<(u<<2)|m),G=G>>>1|0,M=M+1|0),Q=bn<<2,Q&m&&(G&1&&(me=Q|me,m=er&232<<(u<<2)|m),G=G>>>1|0,M=M+1|0),Q=bn<<3,!(Q&m)))break f;G&1&&(me=Q|me,m=er&192<<(u<<2)|m),M=M+1|0,G=G>>>1|0}if(H=H<<4,u=u+1|0,!(($e|0)>(u|0)))break}if(re|!(me>>>A&65535))break h;for(;;){f:{if(!(me&en)||(H=en&286331153,H&me&&(t[O>>2]=U0|(t[O>>2]|G<<31),G=G>>>1|0,M=M+1|0),H<<1&me&&(u=(Rt<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),G=G>>>1|0,M=M+1|0),H<<2&me&&(u=(f0<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),G=G>>>1|0,M=M+1|0),!(H<<3&me)))break f;u=($n<<2)+O|0,t[u>>2]=U0|(t[u>>2]|G<<31),M=M+1|0,G=G>>>1|0}if(en=en<<4,O=O+4|0,he=he+1|0,!(($e|0)>(he|0)))break}}if(t[Y+176>>2]=t[Y+176>>2]-M,G=t[Y+172>>2],u=t[Y+168>>2],H=M&31,(M&63)>>>0>=32?(re=0,u=G>>>H|0):(re=G>>>H|0,u=((1<>>H),t[Y+168>>2]=u,t[Y+172>>2]=re,G=1,he=4,!!(Oe&1))break}t[_e+4>>2]=t[_e+4>>2]|(me>>>27&14|me>>>29|me>>>28)&(t[_i+4>>2]^-1)}if(G=t[_i>>2]|me,Oe=G>>>3&286331153,M=Oe>>>4|Oe<<4|Oe,Dr&&(u=S-4|0,t[u>>2]=t[u>>2]|(t[Ze-4>>2]^-1)&Oe<<28),t[S>>2]=t[S>>2]|M&(t[Ze>>2]^-1),t[S+4>>2]=t[S+4>>2]|(t[Ze+4>>2]^-1)&G>>>31,_e=_e+4|0,_i=_i+4|0,S=S+4|0,Ze=Ze+4|0,Dr=Dr+8|0,!((Rt|0)>(Dr|0)))break}}if(Ne=Ne+4|0,!((gi|0)>(Ne|0)))break}}if(m=1,(gi|0)<=0|(Rt|0)<=0)break i;for(Oe=Rt&-4,H=Rt&3,M=(kt^-1)+ss>>>0<3,Yt=0;;){if(G=s0+(De(Rt,Yt)<<2)|0,m=0,!M)for(;S=t[G>>2],u=S&2147483647,t[G>>2]=(S|0)<0?0-u|0:u,S=t[G+4>>2],u=S&2147483647,t[G+4>>2]=(S|0)<0?0-u|0:u,S=t[G+8>>2],u=S&2147483647,t[G+8>>2]=(S|0)<0?0-u|0:u,S=t[G+12>>2],u=S&2147483647,t[G+12>>2]=(S|0)<0?0-u|0:u,G=G+16|0,m=m+4|0,(Oe|0)!=(m|0););if(m=0,H)for(;S=t[G>>2],u=S&2147483647,t[G>>2]=(S|0)<0?0-u|0:u,G=G+4|0,m=m+1|0,(H|0)!=(m|0););if(m=1,Yt=Yt+1|0,(gi|0)==(Yt|0))break}break i}if(!li)break s;t[Y+52>>2]=t[jt+24>>2],t[Y+48>>2]=er,vt(rr,1,20152,Y+48|0);break a}t[Y+20>>2]=m,t[Y+16>>2]=er,vt(rr,1,20152,Y+16|0),m=0;break i}m=0}if(Nt=Y+304|0,m)break r;break t}if(t[y+108>>2]=(u<<9)+36688,!Tf(y,t[jt+16>>2]-t[jt+8>>2]|0,t[jt+20>>2]-t[jt+12>>2]|0))break t;if(un=S+t[jt+28>>2]|0,(un|0)>=31){if(!li)break n;t[Zr+16>>2]=un,vt(rr,2,18983,Zr+16|0);break t}k(y),t[y+100>>2]=36656,t[y+96>>2]=35280,t[y+28>>2]=35312;i:{a:{s:{o:{if(H=t[jt+52>>2],H>>>0>1)break o;if(!t[y+144>>2])break a;if(H)break o;break s}if(Y=t[jt+4>>2],H-1>>>0>=3)for(u=H&-4,S=0;M=Ne<<3,m=t[(Y+(M|24)|0)+4>>2]+(t[(Y+(M|16)|0)+4>>2]+(t[(Y+(M|8)|0)+4>>2]+(t[(M+Y|0)+4>>2]+m|0)|0)|0)|0,Ne=Ne+4|0,S=S+4|0,(u|0)!=(S|0););if(u=H&3,!u)break s;for(M=0;m=t[(Y+(Ne<<3)|0)+4>>2]+m|0,Ne=Ne+1|0,M=M+1|0,(u|0)!=(M|0););}if(S=m+2|0,S>>>0>ln[y+152>>2]){if(u=Wi(t[y+148>>2],S),!u)break t;t[y+148>>2]=u,u=u+m|0,dt[u|0]=0,dt[u+1|0]=0,t[y+152>>2]=S,H=t[jt+52>>2]}if(gr=t[y+148>>2],!H)break i;for(m=t[jt+4>>2],Ne=0,u=0;M=u<<3,S=M+m|0,Yr(Ne+gr|0,t[S>>2],t[S+4>>2]),m=t[jt+4>>2],Ne=t[(M+m|0)+4>>2]+Ne|0,u=u+1|0,u>>>0>2];);break i}if((H|0)!=1)break r;gr=t[t[jt+4>>2]>>2]}if(u=t[jt+60>>2],u&&(er=t[y+116>>2],t[y+116>>2]=u),t[jt+44>>2])for(ss=sr&8,bn=sr&1,Qr=!(sr&2),f0=2;;){Y=gr+Di|0,P0=t[jt>>2]+De(Xo,24)|0,S=t[P0>>2],Ji=bn&(f0>>>0<2&(t[jt+28>>2]-4|0)>=(un|0));i:{if(Ji){t[y+20>>2]=Y,u=S+Y|0,t[y+24>>2]=u,tn[y+112>>1]=xe[u|0]|xe[u+1|0]<<8,dt[u|0]=255,dt[t[y+24>>2]+1|0]=255,t[y+8>>2]=0,t[y>>2]=0,t[y+16>>2]=Y;break i}t[y+20>>2]=Y,u=S+Y|0,t[y+24>>2]=u,tn[y+112>>1]=xe[u|0]|xe[u+1|0]<<8,dt[u|0]=255,dt[t[y+24>>2]+1|0]=255,t[y+104>>2]=y+28,t[y+16>>2]=Y,t[y+12>>2]=0,u=S?xe[Y|0]<<16:16711680,t[y>>2]=u,se=1,S=Y+1|0,M=xe[Y+1|0];a:{if(xe[Y|0]==255){if(M>>>0>=144){t[y+12>>2]=1,u=u|65280;break a}t[y+16>>2]=S,se=0,u=u+(M<<9)|0;break a}t[y+16>>2]=S,u=u|M<<8}t[y+8>>2]=se,t[y+4>>2]=32768,t[y>>2]=u<<7}s0=t[P0>>2];i:{if(!t[P0+8>>2]|(un|0)<=0)break i;for(_r=Qr|Ji,Cn=0;;){a:{s:{o:switch(f0|0){case 0:if(Ji){if(u=1<>>1|u,A=t[y+124>>2],he=A<<2,u=(he+t[y+120>>2]|0)+12|0,M=t[y+116>>2],G=0,S=t[y+128>>2],S>>>0>=4){if(!A)break a;for(Q=De(A,3),H=A<<1,Ze=0-re|0;;){for(S=0;;){se=u,u=t[u>>2];u:{if(!u)break u;if(!(!(u&495)|u&2097168)){u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,Oe=t[y+16>>2],u=xe[Oe|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=Oe+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=Oe+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}t[y+8>>2]=Y;l:{if(!(u>>>Y&1))break l;Oe=Y-1|0;h:{if(Y)break h;Y=(u|0)==255,Oe=t[y+16>>2],u=xe[Oe|0];f:{if(!Y){t[y>>2]=u,t[y+16>>2]=Oe+1;break f}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=Oe+1,Oe=6;break h}u=255,t[y>>2]=255}Oe=7}if(t[y+8>>2]=Oe,Oe=u>>>Oe&1,t[M>>2]=Oe?Ze:re,Y=t[y+124>>2],u=se-4|0,t[u>>2]=t[u>>2]|32,t[se+4>>2]=t[se+4>>2]|8,t[se>>2]=t[se>>2]|Oe<<19|16,ss)break l;u=se+(-2-Y<<2)|0,t[u+4>>2]=t[u+4>>2]|32768,t[u>>2]=t[u>>2]|Oe<<31|65536,u=u-4|0,t[u>>2]=t[u>>2]|131072}u=t[se>>2]|2097152,t[se>>2]=u}if(!(!(u&3960)|u&16777344)){u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,Oe=t[y+16>>2],u=xe[Oe|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=Oe+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=Oe+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}if(t[y+8>>2]=Y,u>>>Y&1){Oe=M+he|0,m=Y-1|0;l:{if(Y)break l;Y=(u|0)==255,m=t[y+16>>2],u=xe[m|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=m+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=m+1,m=6;break l}u=255,t[y>>2]=255}m=7}t[y+8>>2]=m,Y=u>>>m&1,t[Oe>>2]=Y?Ze:re,u=se-4|0,t[u>>2]=t[u>>2]|256,t[se+4>>2]=t[se+4>>2]|64,u=t[se>>2]|Y<<22|128}else u=t[se>>2];u=u|16777216,t[se>>2]=u}if(!(!(u&31680)|u&134218752)){u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,Oe=t[y+16>>2],u=xe[Oe|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=Oe+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=Oe+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}if(t[y+8>>2]=Y,u>>>Y&1){Oe=(H<<2)+M|0,m=Y-1|0;l:{if(Y)break l;Y=(u|0)==255,m=t[y+16>>2],u=xe[m|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=m+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=m+1,m=6;break l}u=255,t[y>>2]=255}m=7}t[y+8>>2]=m,Y=u>>>m&1,t[Oe>>2]=Y?Ze:re,u=se-4|0,t[u>>2]=t[u>>2]|2048,t[se+4>>2]=t[se+4>>2]|512,u=t[se>>2]|Y<<25|1024}else u=t[se>>2];u=u|134217728,t[se>>2]=u}if(!(u&253440)|u&1073750016)break u;u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,Oe=t[y+16>>2],u=xe[Oe|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=Oe+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=Oe+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}if(t[y+8>>2]=Y,u>>>Y&1){Oe=(Q<<2)+M|0,m=Y-1|0;l:{if(Y)break l;Y=(u|0)==255,m=t[y+16>>2],u=xe[m|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=m+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=m+1,m=6;break l}u=255,t[y>>2]=255}m=7}t[y+8>>2]=m,Y=Oe,Oe=u>>>m&1,t[Y>>2]=Oe?Ze:re,Y=t[y+124>>2],u=se-4|0,t[u>>2]=t[u>>2]|16384,t[se+4>>2]=t[se+4>>2]|4096,t[se>>2]=t[se>>2]|Oe<<28|8192,u=se+(Y<<2)|0,t[u+4>>2]=t[u+4>>2]|4,t[u+12>>2]=t[u+12>>2]|1,t[u+8>>2]=t[u+8>>2]|Oe<<18|2}t[se>>2]=t[se>>2]|1073741824}if(M=M+4|0,u=se+4|0,S=S+1|0,(A|0)==(S|0))break}if(u=se+12|0,M=(Q<<2)+M|0,G=G+4|0,S=t[y+128>>2],!(G>>>0<(S&-4)>>>0))break}}if(!A|S>>>0<=G>>>0)break s;for(_e=0,Oe=0-re|0,se=S;;){u:{if((G|0)==(se|0)){se=G;break u}for(he=u-4|0,O=t[u>>2],Ne=0;;){if(m=De(Ne,3),se=O>>>m|0,!(se&2097168|!(se&495))){S=t[y>>2],se=t[y+8>>2];l:{if(se){se=se-1|0;break l}se=(S|0)!=255,Y=t[y+16>>2],S=xe[Y|0];h:{if(!se){if(S>>>0>=144){S=255,t[y>>2]=255;break h}t[y>>2]=S,t[y+16>>2]=Y+1,se=6;break l}t[y>>2]=S,t[y+16>>2]=Y+1}se=7}t[y+8>>2]=se;l:{if(!(S>>>se&1))break l;Y=(De(A,Ne)<<2)+M|0,H=se-1|0;h:{if(se)break h;se=(S|0)!=255,H=t[y+16>>2],S=xe[H|0];f:{if(!se){if(S>>>0>=144){S=255,t[y>>2]=255;break f}t[y>>2]=S,t[y+16>>2]=H+1,H=6;break h}t[y>>2]=S,t[y+16>>2]=H+1}H=7}if(t[y+8>>2]=H,se=Y,Y=S>>>H&1,t[se>>2]=Y?Oe:re,se=t[y+124>>2],t[he>>2]=t[he>>2]|32<>2]=t[u>>2]|(Y<<19|16)<>2]=t[u+4>>2]|8<>2]=t[S+4>>2]|32768,t[S>>2]=t[S>>2]|Y<<31|65536,S=S-4|0,t[S>>2]=t[S>>2]|131072),(Ne|0)!=3)break l;S=(se+2<<2)+u|0,t[S+4>>2]=t[S+4>>2]|1,t[S>>2]=t[S>>2]|Y<<18|2,S=S-4|0,t[S>>2]=t[S>>2]|4}O=t[u>>2]|2097152<>2]=O,S=t[y+128>>2]}if(se=S,Ne=Ne+1|0,!(Ne>>>0>>0))break}}if(M=M+4|0,u=u+4|0,_e=_e+1|0,(A|0)==(_e|0))break}break s}$n=0;u:{l:{h:{if(Rn=t[y+124>>2],!((Rn|0)!=64|t[y+128>>2]!=64)){if(u=1<>>1|u,se=0-Y|0,S=t[y+120>>2]+268|0,me=t[y+8>>2],u=t[y+4>>2],m=t[y>>2],Ne=t[y+104>>2],M=t[y+116>>2],sr&8)break h;for(;;){for(O=0;;){if(G=M,Oe=S,S=t[S>>2],S){f:{if(S&2097168||(M=S&495,!M))break f;H=(xe[M+t[y+108>>2]|0]<<2)+y|0,Ne=H+28|0,he=t[Ne>>2],M=t[he>>2],u=u-M|0;p:{if(m>>>16>>>0>>0){for(Q=t[he+4>>2],Ze=H,H=u>>>0>>0,t[Ze+28>>2]=t[he+(H?8:12)>>2];;){c:{if(me)break c;if(he=t[y+16>>2],u=he+1|0,Ze=xe[he+1|0],xe[he|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break c}t[y+16>>2]=u,m=(Ze<<9)+m|0,me=7;break c}t[y+16>>2]=u,me=8,m=(Ze<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Q:!Q;break p}if(m=m-(M<<16)|0,!(u&32768)){for(Q=t[he+4>>2],M=u>>>0>>0,t[H+28>>2]=t[he+(M?12:8)>>2];;){c:{if(me)break c;if(he=t[y+16>>2],H=he+1|0,Ze=xe[he+1|0],xe[he|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break c}t[y+16>>2]=H,m=(Ze<<9)+m|0,me=7;break c}t[y+16>>2]=H,me=8,m=(Ze<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Q:Q;break p}M=t[he+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>17&4|(t[A>>2]>>>19&1|(S>>>14&16|(S>>>16&64|S&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];p:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){c:{if(me)break c;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break c}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break c}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break p}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){c:{if(me)break c;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break c}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break c}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break p}M=t[re+4>>2]}H=M^he,t[G>>2]=H?se:Y,t[A>>2]=t[A>>2]|32,t[Oe+4>>2]=t[Oe+4>>2]|8,M=Oe-268|0,t[M>>2]=t[M>>2]|131072,M=Oe-260|0,t[M>>2]=t[M>>2]|32768,M=Oe-264|0,t[M>>2]=t[M>>2]|H<<31|65536,S=H<<19|S|16}S=S|2097152}if(!(!(S&3960)|S&16777344)){he=S>>>3|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;f:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>20&4|(t[A>>2]>>>22&1|(S>>>15&16|(S>>>19&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];f:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[re+4>>2]}M=M^he,t[G+256>>2]=M?se:Y,t[A>>2]=t[A>>2]|256,t[Oe+4>>2]=t[Oe+4>>2]|64,S=M<<22|S|128}S=S|16777216}if(!(!(S&31680)|S&134218752)){he=S>>>6|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;f:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>23&4|(t[A>>2]>>>25&1|(S>>>18&16|(S>>>22&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];f:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[re+4>>2]}M=M^he,t[G+512>>2]=M?se:Y,t[A>>2]=t[A>>2]|2048,t[Oe+4>>2]=t[Oe+4>>2]|512,S=M<<25|S|1024}S=S|134217728}if(!(!(S&253440)|S&1073750016)){he=S>>>9|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;f:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>26&4|(t[A>>2]>>>28&1|(S>>>21&16|(S>>>25&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];f:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[re+4>>2]}M=M^he,t[G+768>>2]=M?se:Y,t[A>>2]=t[A>>2]|16384,t[Oe+4>>2]=t[Oe+4>>2]|4096,t[Oe+260>>2]=t[Oe+260>>2]|4,t[Oe+268>>2]=t[Oe+268>>2]|1,t[Oe+264>>2]=t[Oe+264>>2]|M<<18|2,S=M<<28|S|8192}S=S|1073741824}t[Oe>>2]=S}if(S=Oe+4|0,M=G+4|0,O=O+1|0,(O|0)==64)break}if(S=Oe+12|0,M=G+772|0,G=$n>>>0<60,$n=$n+4|0,!G)break}break l}u=1<>>1|u,Oe=t[y+120>>2],se=(Oe+(Rn<<2)|0)+12|0,S=t[y+128>>2],me=t[y+8>>2],u=t[y+4>>2],m=t[y>>2],Ne=t[y+104>>2],M=t[y+116>>2];f:{if(sr&8){p:{if(S>>>0<4){G=0;break p}if(Rn){for(G=0,Oe=0-Y|0,Tn=De(Rn,12),re=Rn<<3;;){for(Ze=0;;){if(H=se,se=t[H>>2],se){c:{if(se&2097168||(S=se&495,!S))break c;he=(xe[S+t[y+108>>2]|0]<<2)+y|0,Ne=he+28|0,Q=t[Ne>>2],S=t[Q>>2],u=u-S|0;m:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[Q+4>>2],u&32768)break m;for(A=t[Q+4>>2],S=u>>>0>>0,t[he+28>>2]=t[Q+(S?12:8)>>2];;){g:{if(me)break g;if(Q=t[y+16>>2],he=Q+1|0,_e=xe[Q+1|0],xe[Q|0]!=255){t[y+16>>2]=he,me=8,m=(_e<<8)+m|0;break g}if(_e>>>0<=143){t[y+16>>2]=he,m=(_e<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break m}for(A=t[Q+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[Q+(he?8:12)>>2];;){g:{if(me)break g;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]!=255){t[y+16>>2]=u,me=8,m=(_e<<8)+m|0;break g}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=he?A:!A}if(A){$e=H-4|0,he=t[H+4>>2]>>>17&4|(t[$e>>2]>>>19&1|(se>>>14&16|(se>>>16&64|se&170))),A=(xe[he+38736|0]<<2)+y|0,Ne=A+28|0,O=t[Ne>>2],S=t[O>>2],u=u-S|0,Q=xe[he+38992|0];m:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[O+4>>2],u&32768)break m;for(_e=t[O+4>>2],S=u>>>0>>0,t[A+28>>2]=t[O+(S?12:8)>>2];;){g:{if(me)break g;if(A=t[y+16>>2],he=A+1|0,O=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=(O<<8)+m|0;break g}if(O>>>0<=143){t[y+16>>2]=he,m=(O<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!_e:_e;break m}for(_e=t[O+4>>2],he=u>>>0>>0,t[A+28>>2]=t[O+(he?8:12)>>2];;){g:{if(me)break g;if(A=t[y+16>>2],u=A+1|0,O=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=(O<<8)+m|0;break g}if(O>>>0<=143){t[y+16>>2]=u,m=(O<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?_e:!_e}S=he^Q,t[M>>2]=S?Oe:Y,t[$e>>2]=t[$e>>2]|32,t[H+4>>2]=t[H+4>>2]|8,se=S<<19|se|16}se=se|2097152}if(!(!(se&3960)|se&16777344)){Q=se>>>3|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>20&4|(t[O>>2]>>>22&1|(se>>>15&16|(se>>>19&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=(Rn<<2)+M|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|256,t[H+4>>2]=t[H+4>>2]|64,se=S<<22|se|128}se=se|16777216}if(!(!(se&31680)|se&134218752)){Q=se>>>6|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>23&4|(t[O>>2]>>>25&1|(se>>>18&16|(se>>>22&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=M+re|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|2048,t[H+4>>2]=t[H+4>>2]|512,se=S<<25|se|1024}se=se|134217728}if(!(!(se&253440)|se&1073750016)){Q=se>>>9|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>26&4|(t[O>>2]>>>28&1|(se>>>21&16|(se>>>25&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=M+Tn|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|16384,t[H+4>>2]=t[H+4>>2]|4096,he=H+(t[y+124>>2]<<2)|0,t[he+4>>2]=t[he+4>>2]|4,t[he+12>>2]=t[he+12>>2]|1,t[he+8>>2]=t[he+8>>2]|S<<18|2,se=S<<28|se|8192}se=se|1073741824}t[H>>2]=se}if(se=H+4|0,M=M+4|0,Ze=Ze+1|0,(Rn|0)==(Ze|0))break}if(se=H+12|0,M=M+Tn|0,G=G+4|0,S=t[y+128>>2],!(G>>>0<(S&-4)>>>0))break}break p}se=S&-4,se=(se>>>0<=4?4:se)-1|0,G=(se&-4)+4|0,se=(Oe+(se<<1&-8)|0)+20|0}if(t[y+8>>2]=me,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=Ne,!Rn|S>>>0<=G>>>0)break f;for(;;){if(u=(S|0)==(G|0),me=0,S=G,!u)for(;Bh(y,se,(De(me,Rn)<<2)+M|0,Y,me,t[y+124>>2]+2|0,1),me=me+1|0,S=t[y+128>>2],me>>>0>>0;);if(se=se+4|0,M=M+4|0,$n=$n+1|0,(Rn|0)==($n|0))break}break f}p:{if(S>>>0<4){G=0;break p}if(Rn){for(G=0,Oe=0-Y|0,Tn=De(Rn,12),re=Rn<<3;;){for(Ze=0;;){if(H=se,se=t[H>>2],se){c:{if(se&2097168||(S=se&495,!S))break c;he=(xe[S+t[y+108>>2]|0]<<2)+y|0,Ne=he+28|0,Q=t[Ne>>2],S=t[Q>>2],u=u-S|0;m:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[Q+4>>2],u&32768)break m;for(A=t[Q+4>>2],S=u>>>0>>0,t[he+28>>2]=t[Q+(S?12:8)>>2];;){g:{if(me)break g;if(Q=t[y+16>>2],he=Q+1|0,_e=xe[Q+1|0],xe[Q|0]!=255){t[y+16>>2]=he,me=8,m=(_e<<8)+m|0;break g}if(_e>>>0<=143){t[y+16>>2]=he,m=(_e<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break m}for(A=t[Q+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[Q+(he?8:12)>>2];;){g:{if(me)break g;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]!=255){t[y+16>>2]=u,me=8,m=(_e<<8)+m|0;break g}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=he?A:!A}if(A){$e=H-4|0,he=t[H+4>>2]>>>17&4|(t[$e>>2]>>>19&1|(se>>>14&16|(se>>>16&64|se&170))),A=(xe[he+38736|0]<<2)+y|0,Ne=A+28|0,O=t[Ne>>2],S=t[O>>2],u=u-S|0,Q=xe[he+38992|0];m:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[O+4>>2],u&32768)break m;for(_e=t[O+4>>2],S=u>>>0>>0,t[A+28>>2]=t[O+(S?12:8)>>2];;){g:{if(me)break g;if(A=t[y+16>>2],he=A+1|0,O=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=(O<<8)+m|0;break g}if(O>>>0<=143){t[y+16>>2]=he,m=(O<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!_e:_e;break m}for(_e=t[O+4>>2],he=u>>>0>>0,t[A+28>>2]=t[O+(he?8:12)>>2];;){g:{if(me)break g;if(A=t[y+16>>2],u=A+1|0,O=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=(O<<8)+m|0;break g}if(O>>>0<=143){t[y+16>>2]=u,m=(O<<9)+m|0,me=7;break g}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?_e:!_e}he=he^Q,t[M>>2]=he?Oe:Y,t[$e>>2]=t[$e>>2]|32,t[H+4>>2]=t[H+4>>2]|8,S=H+(-2-t[y+124>>2]<<2)|0,t[S+4>>2]=t[S+4>>2]|32768,t[S>>2]=t[S>>2]|he<<31|65536,S=S-4|0,t[S>>2]=t[S>>2]|131072,se=he<<19|se|16}se=se|2097152}if(!(!(se&3960)|se&16777344)){Q=se>>>3|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>20&4|(t[O>>2]>>>22&1|(se>>>15&16|(se>>>19&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=(Rn<<2)+M|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|256,t[H+4>>2]=t[H+4>>2]|64,se=S<<22|se|128}se=se|16777216}if(!(!(se&31680)|se&134218752)){Q=se>>>6|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>23&4|(t[O>>2]>>>25&1|(se>>>18&16|(se>>>22&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=M+re|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|2048,t[H+4>>2]=t[H+4>>2]|512,se=S<<25|se|1024}se=se|134217728}if(!(!(se&253440)|se&1073750016)){Q=se>>>9|0,he=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,Ne=he+28|0,A=t[Ne>>2],S=t[A>>2],u=u-S|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,$e=t[A+4>>2],u&32768)break c;for(_e=t[A+4>>2],S=u>>>0>>0,t[he+28>>2]=t[A+(S?12:8)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],he=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=he,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=he,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}$e=S?!_e:_e;break c}for(_e=t[A+4>>2],$e=he,he=u>>>0>>0,t[$e+28>>2]=t[A+(he?8:12)>>2];;){m:{if(me)break m;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,me=8,m=($e<<8)+m|0;break m}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,$e=he?_e:!_e}if($e){O=H-4|0,he=t[H+4>>2]>>>26&4|(t[O>>2]>>>28&1|(se>>>21&16|(se>>>25&64|Q&170))),_e=(xe[he+38736|0]<<2)+y|0,Ne=_e+28|0,kt=t[Ne>>2],S=t[kt>>2],u=u-S|0,A=xe[he+38992|0],Q=M+Tn|0;c:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,he=t[kt+4>>2],u&32768)break c;for($e=t[kt+4>>2],S=u>>>0>>0,t[_e+28>>2]=t[kt+(S?12:8)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],he=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=he,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=he,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}he=S?!$e:$e;break c}for($e=t[kt+4>>2],he=u>>>0>>0,t[_e+28>>2]=t[kt+(he?8:12)>>2];;){m:{if(me)break m;if(_e=t[y+16>>2],u=_e+1|0,kt=xe[_e+1|0],xe[_e|0]!=255){t[y+16>>2]=u,me=8,m=(kt<<8)+m|0;break m}if(kt>>>0<=143){t[y+16>>2]=u,m=(kt<<9)+m|0,me=7;break m}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8}if(me=me-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,he=he?$e:!$e}S=he^A,t[Q>>2]=S?Oe:Y,t[O>>2]=t[O>>2]|16384,t[H+4>>2]=t[H+4>>2]|4096,he=H+(t[y+124>>2]<<2)|0,t[he+4>>2]=t[he+4>>2]|4,t[he+12>>2]=t[he+12>>2]|1,t[he+8>>2]=t[he+8>>2]|S<<18|2,se=S<<28|se|8192}se=se|1073741824}t[H>>2]=se}if(se=H+4|0,M=M+4|0,Ze=Ze+1|0,(Rn|0)==(Ze|0))break}if(se=H+12|0,M=M+Tn|0,G=G+4|0,S=t[y+128>>2],!(G>>>0<(S&-4)>>>0))break}break p}se=S&-4,se=(se>>>0<=4?4:se)-1|0,G=(se&-4)+4|0,se=(Oe+(se<<1&-8)|0)+20|0}if(t[y+8>>2]=me,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=Ne,!Rn|S>>>0<=G>>>0)break f;for(;;){if(u=(S|0)==(G|0),me=0,S=G,!u)for(;Bh(y,se,(De(me,Rn)<<2)+M|0,Y,me,t[y+124>>2]+2|0,0),me=me+1|0,S=t[y+128>>2],me>>>0>>0;);if(se=se+4|0,M=M+4|0,$n=$n+1|0,(Rn|0)==($n|0))break}}break u}for(;;){for(O=0;;){if(G=M,Oe=S,S=t[S>>2],S){h:{if(S&2097168||(M=S&495,!M))break h;H=(xe[M+t[y+108>>2]|0]<<2)+y|0,Ne=H+28|0,he=t[Ne>>2],M=t[he>>2],u=u-M|0;f:{if(m>>>16>>>0>>0){for(Q=t[he+4>>2],Ze=H,H=u>>>0>>0,t[Ze+28>>2]=t[he+(H?8:12)>>2];;){p:{if(me)break p;if(he=t[y+16>>2],u=he+1|0,Ze=xe[he+1|0],xe[he|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(Ze<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(Ze<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Q:!Q;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Q=t[he+4>>2],M=u>>>0>>0,t[H+28>>2]=t[he+(M?12:8)>>2];;){p:{if(me)break p;if(he=t[y+16>>2],H=he+1|0,Ze=xe[he+1|0],xe[he|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(Ze<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(Ze<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Q:Q;break f}M=t[he+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>17&4|(t[A>>2]>>>19&1|(S>>>14&16|(S>>>16&64|S&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];f:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break f}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){p:{if(me)break p;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break p}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break p}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break f}M=t[re+4>>2]}M=M^he,t[G>>2]=M?se:Y,t[A>>2]=t[A>>2]|32,t[Oe+4>>2]=t[Oe+4>>2]|8,S=M<<19|S|16}S=S|2097152}if(!(!(S&3960)|S&16777344)){he=S>>>3|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;h:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>20&4|(t[A>>2]>>>22&1|(S>>>15&16|(S>>>19&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];h:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[re+4>>2]}M=M^he,t[G+256>>2]=M?se:Y,t[A>>2]=t[A>>2]|256,t[Oe+4>>2]=t[Oe+4>>2]|64,S=M<<22|S|128}S=S|16777216}if(!(!(S&31680)|S&134218752)){he=S>>>6|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;h:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>23&4|(t[A>>2]>>>25&1|(S>>>18&16|(S>>>22&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];h:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[re+4>>2]}M=M^he,t[G+512>>2]=M?se:Y,t[A>>2]=t[A>>2]|2048,t[Oe+4>>2]=t[Oe+4>>2]|512,S=M<<25|S|1024}S=S|134217728}if(!(!(S&253440)|S&1073750016)){he=S>>>9|0,H=(xe[t[y+108>>2]+(he&495)|0]<<2)+y|0,Ne=H+28|0,Q=t[Ne>>2],M=t[Q>>2],u=u-M|0;h:{if(m>>>16>>>0>>0){for(Ze=t[Q+4>>2],A=H,H=u>>>0>>0,t[A+28>>2]=t[Q+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[Q+4>>2],M=u>>>0>>0,t[H+28>>2]=t[Q+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,A=xe[Q+1|0],xe[Q|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(A<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(A<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[Q+4>>2]}if(M){A=Oe-4|0,H=t[Oe+4>>2]>>>26&4|(t[A>>2]>>>28&1|(S>>>21&16|(S>>>25&64|he&170))),Q=(xe[H+38736|0]<<2)+y|0,Ne=Q+28|0,re=t[Ne>>2],M=t[re>>2],u=u-M|0,he=xe[H+38992|0];h:{if(m>>>16>>>0>>0){for(Ze=t[re+4>>2],H=u>>>0>>0,t[Q+28>>2]=t[re+(H?8:12)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=u,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=u,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=H?Ze:!Ze;break h}if(m=m-(M<<16)|0,!(u&32768)){for(Ze=t[re+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[re+(M?12:8)>>2];;){f:{if(me)break f;if(Q=t[y+16>>2],H=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,me=8;break f}t[y+16>>2]=H,m=(re<<9)+m|0,me=7;break f}t[y+16>>2]=H,me=8,m=(re<<8)+m|0}if(me=me-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Ze:Ze;break h}M=t[re+4>>2]}M=M^he,t[G+768>>2]=M?se:Y,t[A>>2]=t[A>>2]|16384,t[Oe+4>>2]=t[Oe+4>>2]|4096,t[Oe+260>>2]=t[Oe+260>>2]|4,t[Oe+268>>2]=t[Oe+268>>2]|1,t[Oe+264>>2]=t[Oe+264>>2]|M<<18|2,S=M<<28|S|8192}S=S|1073741824}t[Oe>>2]=S}if(S=Oe+4|0,M=G+4|0,O=O+1|0,(O|0)==64)break}if(S=Oe+12|0,M=G+772|0,G=$n>>>0<60,$n=$n+4|0,!G)break}}t[y+8>>2]=me,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=Ne}break s;case 1:if(Ji){if(re=1<>>1|0,A=t[y+124>>2],H=A<<2,u=(H+t[y+120>>2]|0)+12|0,M=t[y+116>>2],G=0,S=t[y+128>>2],S>>>0>=4){if(!A)break a;for(Q=De(A,3),Oe=A<<1,Ze=0-re|0;;){for(S=0;;){se=u,u=t[u>>2];u:{if(!u)break u;if((u&2097168)==16){u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,he=t[y+16>>2],u=xe[he|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=he+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=he+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}t[y+8>>2]=Y,Y=u>>>Y&1,u=t[M>>2],t[M>>2]=((Y|0)==(u>>>31|0)?Ze:re)+u,u=t[se>>2]|1048576,t[se>>2]=u}if((u&16777344)==128){m=M+H|0,u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,he=t[y+16>>2],u=xe[he|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=he+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=he+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}t[y+8>>2]=Y,Y=u>>>Y&1,u=t[m>>2],t[m>>2]=((Y|0)==(u>>>31|0)?Ze:re)+u,u=t[se>>2]|8388608,t[se>>2]=u}if((u&134218752)==1024){m=(Oe<<2)+M|0,u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,he=t[y+16>>2],u=xe[he|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=he+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=he+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}t[y+8>>2]=Y,Y=u>>>Y&1,u=t[m>>2],t[m>>2]=((Y|0)==(u>>>31|0)?Ze:re)+u,u=t[se>>2]|67108864,t[se>>2]=u}if((u&1073750016)!=8192)break u;m=(Q<<2)+M|0,u=t[y>>2],Y=t[y+8>>2];l:{if(Y){Y=Y-1|0;break l}Y=(u|0)==255,he=t[y+16>>2],u=xe[he|0];h:{if(!Y){t[y>>2]=u,t[y+16>>2]=he+1;break h}if(u>>>0<=143){t[y>>2]=u,t[y+16>>2]=he+1,Y=6;break l}u=255,t[y>>2]=255}Y=7}t[y+8>>2]=Y,Y=u>>>Y&1,u=t[m>>2],t[m>>2]=((Y|0)==(u>>>31|0)?Ze:re)+u,t[se>>2]=t[se>>2]|536870912}if(M=M+4|0,u=se+4|0,S=S+1|0,(A|0)==(S|0))break}if(u=se+12|0,M=(Q<<2)+M|0,G=G+4|0,S=t[y+128>>2],!(G>>>0<(S&-4)>>>0))break}}if(!A|S>>>0<=G>>>0)break s;for(_e=0,Y=0-re|0,se=S;;){u:{if((G|0)==(se|0)){se=G;break u}for(me=t[u>>2],Ne=0;;){if(he=De(Ne,3),(2097168<>2],se=t[y+8>>2];l:{if(se){se=se-1|0;break l}se=(S|0)!=255,Oe=t[y+16>>2],S=xe[Oe|0];h:{if(!se){if(S>>>0>=144){S=255,t[y>>2]=255;break h}t[y>>2]=S,t[y+16>>2]=Oe+1,se=6;break l}t[y>>2]=S,t[y+16>>2]=Oe+1}se=7}t[y+8>>2]=se,se=S>>>se&1,S=t[H>>2],t[H>>2]=((se|0)==(S>>>31|0)?Y:re)+S,me=t[u>>2]|1048576<>2]=me,S=t[y+128>>2]}if(se=S,Ne=Ne+1|0,!(Ne>>>0>>0))break}}if(M=M+4|0,u=u+4|0,_e=_e+1|0,(A|0)==(_e|0))break}break s}if(G=t[y+120>>2],se=t[y+116>>2],Tn=t[y+124>>2],S=t[y+128>>2],!((Tn|0)!=64|(S|0)!=64)){for(S=G+268|0,_e=0,A=1<>>1|0,Ze=0-A|0,Ne=t[y+8>>2],M=t[y+4>>2],u=t[y>>2],O=t[y+104>>2];;){for(G=0;;){if(Oe=se,Y=S,se=t[S>>2],se){if((se&2097168)==16){H=((se&1048576?16:se&495?15:14)<<2)+y|0,O=H+28|0,he=t[O>>2],S=t[he>>2],M=M-S|0;u:{if(u>>>16>>>0>>0){for(m=t[he+4>>2],Q=H,H=S>>>0>M>>>0,t[Q+28>>2]=t[he+(H?8:12)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],M=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=M,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=M,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,H=H?m:!m;break u}if(u=u-(S<<16)|0,!(M&32768)){for(m=t[he+4>>2],S=S>>>0>M>>>0,t[H+28>>2]=t[he+(S?12:8)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],H=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=H,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=H,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}H=S?!m:m;break u}H=t[he+4>>2]}S=t[Oe>>2],t[Oe>>2]=((H|0)==(S>>>31|0)?Ze:A)+S,se=se|1048576}if((se&16777344)==128){H=((se&8388608?16:se&3960?15:14)<<2)+y|0,O=H+28|0,he=t[O>>2],S=t[he>>2],M=M-S|0;u:{if(u>>>16>>>0>>0){for(m=t[he+4>>2],Q=H,H=S>>>0>M>>>0,t[Q+28>>2]=t[he+(H?8:12)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],M=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=M,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=M,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,H=H?m:!m;break u}if(u=u-(S<<16)|0,!(M&32768)){for(m=t[he+4>>2],S=S>>>0>M>>>0,t[H+28>>2]=t[he+(S?12:8)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],H=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=H,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=H,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}H=S?!m:m;break u}H=t[he+4>>2]}S=t[Oe+256>>2],t[Oe+256>>2]=((H|0)==(S>>>31|0)?Ze:A)+S,se=se|8388608}if((se&134218752)==1024){H=((se&67108864?16:se&31680?15:14)<<2)+y|0,O=H+28|0,he=t[O>>2],S=t[he>>2],M=M-S|0;u:{if(u>>>16>>>0>>0){for(m=t[he+4>>2],Q=H,H=S>>>0>M>>>0,t[Q+28>>2]=t[he+(H?8:12)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],M=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=M,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=M,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,H=H?m:!m;break u}if(u=u-(S<<16)|0,!(M&32768)){for(m=t[he+4>>2],S=S>>>0>M>>>0,t[H+28>>2]=t[he+(S?12:8)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],H=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=H,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=H,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}H=S?!m:m;break u}H=t[he+4>>2]}S=t[Oe+512>>2],t[Oe+512>>2]=((H|0)==(S>>>31|0)?Ze:A)+S,se=se|67108864}if((se&1073750016)==8192){H=((se&536870912?16:se&253440?15:14)<<2)+y|0,O=H+28|0,he=t[O>>2],S=t[he>>2],M=M-S|0;u:{if(u>>>16>>>0>>0){for(m=t[he+4>>2],Q=H,H=S>>>0>M>>>0,t[Q+28>>2]=t[he+(H?8:12)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],M=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=M,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=M,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,H=H?m:!m;break u}if(u=u-(S<<16)|0,!(M&32768)){for(m=t[he+4>>2],S=S>>>0>M>>>0,t[H+28>>2]=t[he+(S?12:8)>>2];;){l:{if(Ne)break l;if(he=t[y+16>>2],H=he+1|0,Q=xe[he+1|0],xe[he|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8;break l}t[y+16>>2]=H,u=(Q<<9)+u|0,Ne=7;break l}t[y+16>>2]=H,Ne=8,u=(Q<<8)+u|0}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}H=S?!m:m;break u}H=t[he+4>>2]}S=t[Oe+768>>2],t[Oe+768>>2]=((H|0)==(S>>>31|0)?Ze:A)+S,se=se|536870912}t[Y>>2]=se}if(S=Y+4|0,se=Oe+4|0,G=G+1|0,(G|0)==64)break}if(S=Y+12|0,se=Oe+772|0,Y=_e>>>0<60,_e=_e+4|0,!Y)break}t[y+8>>2]=Ne,t[y+4>>2]=M,t[y>>2]=u,t[y+104>>2]=O;break s}$e=1<>>1|0,Q=Tn<<2,H=(Q+G|0)+12|0,Ne=t[y+8>>2],M=t[y+4>>2],u=t[y>>2],O=t[y+104>>2],m=0;u:{if(S>>>0<4)break u;if(Tn){for(A=De(Tn,3),he=Tn<<1,me=0-$e|0;;){for(G=0;;){if(Y=H,_e=t[Y>>2],_e){if((_e&2097168)==16){Oe=((_e&1048576?16:_e&495?15:14)<<2)+y|0,O=Oe+28|0,H=t[O>>2],S=t[H>>2],M=M-S|0;l:{if(u>>>16>>>0>=S>>>0){if(u=u-(S<<16)|0,Ze=t[H+4>>2],M&32768)break l;for(Ze=t[H+4>>2],S=S>>>0>M>>>0,t[Oe+28>>2]=t[H+(S?12:8)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],Oe=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Oe,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=Oe,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}Ze=S?!Ze:Ze;break l}for(Ze=t[H+4>>2],re=Oe,Oe=S>>>0>M>>>0,t[re+28>>2]=t[H+(Oe?8:12)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],M=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=M,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=M,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,Ze=Oe?Ze:!Ze}Oe=Ze,S=t[se>>2],t[se>>2]=((Oe|0)==(S>>>31|0)?me:$e)+S,_e=_e|1048576}if((_e&16777344)==128){Oe=((_e&8388608?16:_e&3960?15:14)<<2)+y|0,O=Oe+28|0,H=t[O>>2],S=t[H>>2],M=M-S|0;l:{if(u>>>16>>>0>=S>>>0){if(u=u-(S<<16)|0,Ze=t[H+4>>2],M&32768)break l;for(Ze=t[H+4>>2],S=S>>>0>M>>>0,t[Oe+28>>2]=t[H+(S?12:8)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],Oe=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Oe,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=Oe,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}Ze=S?!Ze:Ze;break l}for(Ze=t[H+4>>2],re=Oe,Oe=S>>>0>M>>>0,t[re+28>>2]=t[H+(Oe?8:12)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],M=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=M,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=M,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,Ze=Oe?Ze:!Ze}H=Ze,S=Q+se|0,Oe=t[S>>2],t[S>>2]=Oe+((H|0)==(Oe>>>31|0)?me:$e),_e=_e|8388608}if((_e&134218752)==1024){Oe=((_e&67108864?16:_e&31680?15:14)<<2)+y|0,O=Oe+28|0,H=t[O>>2],S=t[H>>2],M=M-S|0;l:{if(u>>>16>>>0>=S>>>0){if(u=u-(S<<16)|0,Ze=t[H+4>>2],M&32768)break l;for(Ze=t[H+4>>2],S=S>>>0>M>>>0,t[Oe+28>>2]=t[H+(S?12:8)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],Oe=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Oe,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=Oe,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}Ze=S?!Ze:Ze;break l}for(Ze=t[H+4>>2],re=Oe,Oe=S>>>0>M>>>0,t[re+28>>2]=t[H+(Oe?8:12)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],M=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=M,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=M,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,Ze=Oe?Ze:!Ze}H=Ze,S=(he<<2)+se|0,Oe=t[S>>2],t[S>>2]=Oe+((H|0)==(Oe>>>31|0)?me:$e),_e=_e|67108864}if((_e&1073750016)==8192){Oe=((_e&536870912?16:_e&253440?15:14)<<2)+y|0,O=Oe+28|0,H=t[O>>2],S=t[H>>2],M=M-S|0;l:{if(u>>>16>>>0>=S>>>0){if(u=u-(S<<16)|0,Ze=t[H+4>>2],M&32768)break l;for(Ze=t[H+4>>2],S=S>>>0>M>>>0,t[Oe+28>>2]=t[H+(S?12:8)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],Oe=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Oe,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=Oe,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,M=M<<1,!(M>>>0<32768))break}Ze=S?!Ze:Ze;break l}for(Ze=t[H+4>>2],re=Oe,Oe=S>>>0>M>>>0,t[re+28>>2]=t[H+(Oe?8:12)>>2];;){h:{if(Ne)break h;if(H=t[y+16>>2],M=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=M,Ne=8,u=(re<<8)+u|0;break h}if(re>>>0<=143){t[y+16>>2]=M,u=(re<<9)+u|0,Ne=7;break h}t[y+12>>2]=t[y+12>>2]+1,u=u+65280|0,Ne=8}if(Ne=Ne-1|0,u=u<<1,S=S<<1,!(S>>>0<32768))break}M=S,Ze=Oe?Ze:!Ze}H=Ze,S=(A<<2)+se|0,Oe=t[S>>2],t[S>>2]=Oe+((H|0)==(Oe>>>31|0)?me:$e),_e=_e|536870912}t[Y>>2]=_e}if(H=Y+4|0,se=se+4|0,G=G+1|0,(Tn|0)==(G|0))break}if(H=Y+12|0,se=(A<<2)+se|0,m=m+4|0,S=t[y+128>>2],!(m>>>0<(S&-4)>>>0))break}break u}Y=S&-4,Y=(Y>>>0<=4?4:Y)-1|0,m=(Y&-4)+4|0,H=(G+(Y<<1&-8)|0)+20|0}if(t[y+8>>2]=Ne,t[y+4>>2]=M,t[y>>2]=u,t[y+104>>2]=O,!Tn|m>>>0>=S>>>0)break s;for(_e=0,Y=0-$e|0,u=S;;){u:{if((u|0)==(m|0)){u=m;break u}for(Ne=t[H>>2],me=0;;){if(A=De(me,3),(2097168<>>A|0,G=((u&1048576?16:u&495?15:14)<<2)+y|0,t[y+104>>2]=G+28,Oe=t[G+28>>2],u=t[Oe>>2],S=t[y+4>>2]-u|0,t[y+4>>2]=S,M=t[y>>2];l:{if(M>>>16>>>0>>0){for(t[y+4>>2]=u,he=t[Oe+4>>2],S=u>>>0>S>>>0,t[G+28>>2]=t[Oe+(S?8:12)>>2],Ne=t[y+8>>2];;){h:{if(Ne)break h;if(Oe=t[y+16>>2],G=Oe+1|0,Ze=xe[Oe+1|0],xe[Oe|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,M=M+65280|0,Ne=8;break h}t[y+16>>2]=G,M=(Ze<<9)+M|0,Ne=7;break h}t[y+16>>2]=G,Ne=8,M=(Ze<<8)+M|0}if(Ne=Ne-1|0,t[y+8>>2]=Ne,M=M<<1,t[y>>2]=M,u=u<<1,t[y+4>>2]=u,!(u>>>0<32768))break}S=S?he:!he;break l}if(M=M-(u<<16)|0,t[y>>2]=M,!(S&32768)){for(he=t[Oe+4>>2],u=u>>>0>S>>>0,t[G+28>>2]=t[Oe+(u?12:8)>>2],Ne=t[y+8>>2];;){h:{if(Ne)break h;if(Oe=t[y+16>>2],G=Oe+1|0,Ze=xe[Oe+1|0],xe[Oe|0]==255){if(Ze>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,M=M+65280|0,Ne=8;break h}t[y+16>>2]=G,M=(Ze<<9)+M|0,Ne=7;break h}t[y+16>>2]=G,Ne=8,M=(Ze<<8)+M|0}if(Ne=Ne-1|0,t[y+8>>2]=Ne,M=M<<1,t[y>>2]=M,S=S<<1,t[y+4>>2]=S,!(S>>>0<32768))break}S=u?!he:he;break l}S=t[Oe+4>>2]}u=t[Q>>2],t[Q>>2]=((S|0)==(u>>>31|0)?Y:$e)+u,Ne=t[H>>2]|1048576<>2]=Ne,S=t[y+128>>2]}if(me=me+1|0,u=S,!(me>>>0>>0))break}}if(H=H+4|0,se=se+4|0,_e=_e+1|0,(Tn|0)==(_e|0))break}break s;case 2:break o;default:break s}$e=0,Tn=0,Ze=0;o:{u:{l:{if(Rn=t[y+124>>2],!((Rn|0)!=64|t[y+128>>2]!=64)){if(u=1<>>1|u,me=0-Tn|0,Oe=y+100|0,Y=y+96|0,S=t[y+120>>2]+268|0,O=t[y+8>>2],u=t[y+4>>2],m=t[y>>2],se=t[y+104>>2],M=t[y+116>>2],sr&8)break l;for(;;){for(Ze=0;;){H=M,he=S;h:{f:{p:{c:{S=t[S>>2];m:{if(!S){se=t[Y>>2],S=t[se>>2],u=u-S|0;g:{if(m>>>16>>>0>>0){for(G=t[se+4>>2],M=u>>>0>>0,t[Y>>2]=t[se+(M?8:12)>>2];;){d:{if(O)break d;if(se=t[y+16>>2],u=se+1|0,Q=xe[se+1|0],xe[se|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(Q<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(Q<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=M?G:!G;break g}if(m=m-(S<<16)|0,!(u&32768)){for(G=t[se+4>>2],S=u>>>0>>0,t[Y>>2]=t[se+(S?12:8)>>2];;){d:{if(O)break d;if(se=t[y+16>>2],M=se+1|0,Q=xe[se+1|0],xe[se|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=M,m=(Q<<9)+m|0,O=7;break d}t[y+16>>2]=M,O=8,m=(Q<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!G:G;break g}S=t[se+4>>2]}if(!S){se=Y;break h}M=t[Oe>>2],S=t[M>>2],u=u-S|0;g:{if(m>>>16>>>0>>0){for(Q=t[M+4>>2],se=u>>>0>>0,M=t[(se?8:12)+M>>2],t[Oe>>2]=M;;){d:{if(O)break d;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,G=se?Q:!Q;break g}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[M+4>>2],S=u>>>0>>0,M=t[(S?12:8)+M>>2],t[Oe>>2]=M;;){d:{if(O)break d;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break d}t[y+16>>2]=se,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}G=S?!Q:Q;break g}G=t[M+4>>2]}S=t[M>>2],u=u-S|0;g:{if(m>>>16>>>0>>0){for(Q=t[M+4>>2],se=M,M=u>>>0>>0,t[Oe>>2]=t[se+(M?8:12)>>2];;){d:{if(O)break d;if(se=t[y+16>>2],u=se+1|0,A=xe[se+1|0],xe[se|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,M=M?Q:!Q;break g}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[M+4>>2],S=u>>>0>>0,t[Oe>>2]=t[(S?12:8)+M>>2];;){d:{if(O)break d;if(se=t[y+16>>2],M=se+1|0,A=xe[se+1|0],xe[se|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=M,m=(A<<9)+m|0,O=7;break d}t[y+16>>2]=M,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=S?!Q:Q;break g}M=t[M+4>>2]}S=0,se=Oe;g:{d:{v:{k:{y:switch(M|G<<1){case 0:A=he-4|0,se=t[he+4>>2]>>>17&4|t[A>>2]>>>19&1,M=(xe[se+38736|0]<<2)+y|0,G=t[M+28>>2],S=t[G>>2],u=u-S|0;w:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=M,M=u>>>0>>0,t[Ne+28>>2]=t[G+(M?8:12)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],u=G+1|0,re=xe[G+1|0],xe[G|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break C}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break C}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=M?Q:!Q;break w}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[G+4>>2],S=u>>>0>>0,t[M+28>>2]=t[G+(S?12:8)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],M=G+1|0,re=xe[G+1|0],xe[G|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break C}t[y+16>>2]=M,m=(re<<9)+m|0,O=7;break C}t[y+16>>2]=M,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!Q:Q;break w}S=t[G+4>>2]}M=S^xe[se+38992|0],t[H>>2]=M?me:Tn,t[A>>2]=t[A>>2]|32,t[he+4>>2]=t[he+4>>2]|8,S=he-268|0,t[S>>2]=t[S>>2]|131072,S=he-260|0,t[S>>2]=t[S>>2]|32768,S=he-264|0,t[S>>2]=t[S>>2]|M<<31|65536,se=M<<19,M=(xe[t[y+108>>2]+2|0]<<2)+y|0,G=t[M+28>>2],S=t[G>>2],u=u-S|0;w:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=M,M=u>>>0>>0,t[Ne+28>>2]=t[G+(M?8:12)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break C}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break C}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,M=M?Q:!Q;break w}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[G+4>>2],S=u>>>0>>0,t[M+28>>2]=t[G+(S?12:8)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],M=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break C}t[y+16>>2]=M,m=(A<<9)+m|0,O=7;break C}t[y+16>>2]=M,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=S?!Q:Q;break w}M=t[G+4>>2]}if(S=se|16,!M)break k;break;case 3:break g;case 2:break v;case 1:break y;default:break f}re=he-4|0,G=t[he+4>>2]>>>20&4|(t[re>>2]>>>22&1|(S>>>15&16|(S>>>19&64|S>>>3&170))),se=(xe[G+38736|0]<<2)+y|0,Q=t[se+28>>2],M=t[Q>>2],u=u-M|0;y:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[Q+(se?8:12)>>2];;){w:{if(O)break w;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break w}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?A:!A;break y}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[se+28>>2]=t[Q+(M?12:8)>>2];;){w:{if(O)break w;if(Q=t[y+16>>2],se=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=se,m=(_e<<9)+m|0,O=7;break w}t[y+16>>2]=se,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break y}M=t[Q+4>>2]}M=M^xe[G+38992|0],t[H+256>>2]=M?me:Tn,t[re>>2]=t[re>>2]|256,t[he+4>>2]=t[he+4>>2]|64,S=M<<22|S|128}se=(xe[t[y+108>>2]+(S>>>6&495)|0]<<2)+y|0,G=t[se+28>>2],M=t[G>>2],u=u-M|0;k:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[G+(se?8:12)>>2];;){y:{if(O)break y;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break y}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break y}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?Q:!Q;break k}if(m=m-(M<<16)|0,!(u&32768)){for(Q=t[G+4>>2],M=u>>>0>>0,t[se+28>>2]=t[G+(M?12:8)>>2];;){y:{if(O)break y;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break y}t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break y}t[y+16>>2]=se,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Q:Q;break k}M=t[G+4>>2]}if(!M)break d}re=he-4|0,G=t[he+4>>2]>>>23&4|(t[re>>2]>>>25&1|(S>>>18&16|(S>>>22&64|S>>>6&170))),se=(xe[G+38736|0]<<2)+y|0,Q=t[se+28>>2],M=t[Q>>2],u=u-M|0;v:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[Q+(se?8:12)>>2];;){k:{if(O)break k;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break k}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break k}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?A:!A;break v}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[se+28>>2]=t[Q+(M?12:8)>>2];;){k:{if(O)break k;if(Q=t[y+16>>2],se=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break k}t[y+16>>2]=se,m=(_e<<9)+m|0,O=7;break k}t[y+16>>2]=se,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break v}M=t[Q+4>>2]}M=M^xe[G+38992|0],t[H+512>>2]=M?me:Tn,t[re>>2]=t[re>>2]|2048,t[he+4>>2]=t[he+4>>2]|512,S=M<<25|S|1024}G=(xe[t[y+108>>2]+(S>>>9&495)|0]<<2)+y|0,se=G+28|0,Q=t[se>>2],M=t[Q>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[Q+(G?8:12)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break d}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[G+28>>2]=t[Q+(M?12:8)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break d}M=t[Q+4>>2]}if(!M)break f}if(_e=he-4|0,Yt=t[he+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(S>>>21&16|(S>>>25&64|S>>>9&170))),Q=(xe[Yt+38736|0]<<2)+y|0,se=Q+28|0,G=t[se>>2],M=t[G>>2],u=u-M|0,m>>>16>>>0>>0){for(A=t[G+4>>2],Ne=G,G=u>>>0>>0,t[Q+28>>2]=t[Ne+(G?8:12)>>2];;){g:{if(O)break g;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break g}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break p}if(m=m-(M<<16)|0,u&32768)break m;for(A=t[G+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[(M?12:8)+G>>2];;){g:{if(O)break g;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break g}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break p}g:{if(S&2097168)break g;G=(xe[t[y+108>>2]+(S&495)|0]<<2)+y|0,se=G+28|0,Q=t[se>>2],M=t[Q>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[Q+(G?8:12)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break d}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[G+28>>2]=t[Q+(M?12:8)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break d}M=t[Q+4>>2]}if(!M)break g;_e=he-4|0,Q=t[he+4>>2]>>>17&4|(t[_e>>2]>>>19&1|(S>>>14&16|(S>>>16&64|S&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break d}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break d}M=t[A+4>>2]}G=M^xe[Q+38992|0],t[H>>2]=G?me:Tn,t[_e>>2]=t[_e>>2]|32,t[he+4>>2]=t[he+4>>2]|8,M=he-268|0,t[M>>2]=t[M>>2]|131072,M=he-260|0,t[M>>2]=t[M>>2]|32768,M=he-264|0,t[M>>2]=t[M>>2]|G<<31|65536,S=G<<19|S|16}g:{if(S&16777344)break g;Q=S>>>3|0,G=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break d}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break d}M=t[A+4>>2]}if(!M)break g;_e=he-4|0,Q=t[he+4>>2]>>>20&4|(t[_e>>2]>>>22&1|(S>>>15&16|(S>>>19&64|Q&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break d}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break d}M=t[A+4>>2]}M=M^xe[Q+38992|0],t[H+256>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|256,t[he+4>>2]=t[he+4>>2]|64,S=M<<22|S|128}g:{if(S&134218752)break g;Q=S>>>6|0,G=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break d}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break d}M=t[A+4>>2]}if(!M)break g;_e=he-4|0,Q=t[he+4>>2]>>>23&4|(t[_e>>2]>>>25&1|(S>>>18&16|(S>>>22&64|Q&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break d}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break v}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break d}M=t[A+4>>2]}M=M^xe[Q+38992|0],t[H+512>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|2048,t[he+4>>2]=t[he+4>>2]|512,S=M<<25|S|1024}if(S&1073750016)break f;G=u,Q=S>>>9|0,u=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=u+28|0,A=t[se>>2],M=t[A>>2],G=G-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=u,u=M>>>0>G>>>0,t[Ne+28>>2]=t[A+(u?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}G=M,u=u?re:!re;break g}if(m=m-(M<<16)|0,!(G&32768)){for(re=t[A+4>>2],Ne=u,u=M>>>0>G>>>0,t[Ne+28>>2]=t[A+(u?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],M=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=M,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=M,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,G=G<<1,!(G>>>0<32768))break}u=u?!re:re;break g}u=t[A+4>>2]}if(!u){u=G;break f}if(M=G,_e=he-4|0,Yt=t[he+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(S>>>21&16|(S>>>25&64|Q&170))),Q=(xe[Yt+38736|0]<<2)+y|0,se=Q+28|0,G=t[se>>2],u=t[G>>2],M=M-u|0,m>>>16>>>0>>0){for(A=t[G+4>>2],M=u>>>0>M>>>0,t[Q+28>>2]=t[(M?8:12)+G>>2];;){g:{if(O)break g;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break g}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?A:!A;break p}if(m=m-(u<<16)|0,!(M&32768))break c;u=M}M=t[G+4>>2];break p}for(A=t[G+4>>2],Ne=G,G=u>>>0>M>>>0,t[Q+28>>2]=t[Ne+(G?12:8)>>2];;){c:{if(O)break c;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break c}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break c}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?!A:A}M=M^xe[Yt+38992|0],t[H+768>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|16384,t[he+4>>2]=t[he+4>>2]|4096,t[he+260>>2]=t[he+260>>2]|4,t[he+268>>2]=t[he+268>>2]|1,t[he+264>>2]=t[he+264>>2]|M<<18|2,S=M<<28|S|8192}t[he>>2]=S&-1226833921}if(S=he+4|0,M=H+4|0,Ze=Ze+1|0,(Ze|0)==64)break}if(S=he+12|0,M=H+772|0,G=$e>>>0<60,$e=$e+4|0,!G)break}break u}u=1<>>1|u,Y=t[y+120>>2],se=(Y+(Rn<<2)|0)+12|0,S=t[y+128>>2],O=t[y+8>>2],u=t[y+4>>2],m=t[y>>2],G=t[y+104>>2],M=t[y+116>>2];h:{f:{if(sr&8){if(S>>>0<4)break h;if(!Rn)break f;for(he=y+100|0,Oe=y+96|0,me=De(Rn,3),Ne=Rn<<1,kt=0-$n|0;;){for(Dr=0;;){p:{c:{m:{g:{if(Q=se,se=t[Q>>2],se){d:{if(se&2097168)break d;Y=(xe[t[y+108>>2]+(se&495)|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break v;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){k:{if(O)break k;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break k}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break v}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[H+(Y?8:12)>>2];;){k:{if(O)break k;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break k}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}if(!A)break d;_e=Q-4|0,H=t[Q+4>>2]>>>17&4|(t[_e>>2]>>>19&1|(se>>>14&16|(se>>>16&64|se&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break v;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break v}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,S=S^xe[H+38992|0],t[M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|32,t[Q+4>>2]=t[Q+4>>2]|8,se=S<<19|se|16}d:{if(se&16777344)break d;H=se>>>3|0,Y=(xe[t[y+108>>2]+(H&495)|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break v;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],Y=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break v}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}if(!re)break d;_e=Q-4|0,H=t[Q+4>>2]>>>20&4|(t[_e>>2]>>>22&1|(se>>>15&16|(se>>>19&64|H&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break v;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break v}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,S=S^xe[H+38992|0],t[(Rn<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|256,t[Q+4>>2]=t[Q+4>>2]|64,se=S<<22|se|128}d:{if(se&134218752)break d;H=se>>>6|0,Y=(xe[t[y+108>>2]+(H&495)|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break v;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],Y=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break v}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}if(!re)break d;_e=Q-4|0,H=t[Q+4>>2]>>>23&4|(t[_e>>2]>>>25&1|(se>>>18&16|(se>>>22&64|H&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break v;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break v}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break k}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,S=S^xe[H+38992|0],t[(Ne<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|2048,t[Q+4>>2]=t[Q+4>>2]|512,se=S<<25|se|1024}if(se&1073750016)break c;H=u,Y=se>>>9|0,u=(xe[t[y+108>>2]+(Y&495)|0]<<2)+y|0,G=u+28|0,A=t[G>>2],S=t[A>>2],H=H-S|0;d:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],H&32768)break d;for(re=t[A+4>>2],$e=u,u=S>>>0>H>>>0,t[$e+28>>2]=t[A+(u?12:8)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],S=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=S,O=8,m=(_e<<8)+m|0;break v}if(_e>>>0<=143){t[y+16>>2]=S,m=(_e<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,H=H<<1,!(H>>>0<32768))break}re=u?!re:re;break d}for(re=t[A+4>>2],$e=u,u=S>>>0>H>>>0,t[$e+28>>2]=t[A+(u?8:12)>>2];;){v:{if(O)break v;if(A=t[y+16>>2],H=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=H,O=8,m=(_e<<8)+m|0;break v}if(_e>>>0<=143){t[y+16>>2]=H,m=(_e<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}H=S,re=u?re:!re}if(!re){u=H;break c}if(S=H,_e=Q-4|0,$e=t[Q+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(se>>>21&16|(se>>>25&64|Y&170))),Y=(xe[$e+38736|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],u=t[H>>2],S=S-u|0,m>>>16>>>0>=u>>>0){if(m=m-(u<<16)|0,S&32768){u=S;break g}for(A=t[H+4>>2],re=Y,Y=u>>>0>S>>>0,t[re+28>>2]=t[(Y?12:8)+H>>2];;){d:{if(O)break d;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break d}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break d}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=Y?!A:A;break m}for(A=t[H+4>>2],S=u>>>0>S>>>0,t[Y+28>>2]=t[(S?8:12)+H>>2];;){d:{if(O)break d;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break d}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break d}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?A:!A;break m}Y=t[Oe>>2],se=t[Y>>2],u=u-se|0;d:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,S=t[Y+4>>2],u&32768)break d;for(G=t[Y+4>>2],S=u>>>0>>0,t[Oe>>2]=t[Y+(S?12:8)>>2];;){v:{if(O)break v;if(Y=t[y+16>>2],se=Y+1|0,H=xe[Y+1|0],xe[Y|0]!=255){t[y+16>>2]=se,O=8,m=(H<<8)+m|0;break v}if(H>>>0<=143){t[y+16>>2]=se,m=(H<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!G:G;break d}for(G=t[Y+4>>2],S=u>>>0>>0,t[Oe>>2]=t[Y+(S?8:12)>>2];;){v:{if(O)break v;if(Y=t[y+16>>2],u=Y+1|0,H=xe[Y+1|0],xe[Y|0]!=255){t[y+16>>2]=u,O=8,m=(H<<8)+m|0;break v}if(H>>>0<=143){t[y+16>>2]=u,m=(H<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,S=S?G:!G}if(!S){G=Oe;break p}S=t[he>>2],se=t[S>>2],u=u-se|0;d:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,Y=t[S+4>>2],u&32768)break d;for(H=t[S+4>>2],se=u>>>0>>0,S=t[(se?12:8)+S>>2],t[he>>2]=S;;){v:{if(O)break v;if(G=t[y+16>>2],Y=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=Y,O=8,m=(A<<8)+m|0;break v}if(A>>>0<=143){t[y+16>>2]=Y,m=(A<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}Y=se?!H:H;break d}for(H=t[S+4>>2],Y=u>>>0>>0,S=t[(Y?8:12)+S>>2],t[he>>2]=S;;){v:{if(O)break v;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break v}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,Y=Y?H:!H}se=t[S>>2],u=u-se|0;d:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,G=t[S+4>>2],u&32768)break d;for(H=t[S+4>>2],G=S,S=u>>>0>>0,t[he>>2]=t[G+(S?12:8)>>2];;){v:{if(O)break v;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(A<<8)+m|0;break v}if(A>>>0<=143){t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}G=S?!H:H;break d}for(H=t[S+4>>2],G=S,S=u>>>0>>0,t[he>>2]=t[G+(S?8:12)>>2];;){v:{if(O)break v;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break v}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,G=S?H:!H}S=G,se=0,G=he;d:{v:{k:{y:{w:switch(S|Y<<1){case 0:A=Q-4|0,Y=t[Q+4>>2]>>>17&4|t[A>>2]>>>19&1,S=(xe[Y+38736|0]<<2)+y|0,G=t[S+28>>2],se=t[G>>2],u=u-se|0;C:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,H=t[G+4>>2],u&32768)break C;for(H=t[G+4>>2],re=S,S=u>>>0>>0,t[re+28>>2]=t[G+(S?12:8)>>2];;){_:{if(O)break _;if(G=t[y+16>>2],se=G+1|0,re=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(re<<8)+m|0;break _}if(re>>>0<=143){t[y+16>>2]=se,m=(re<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break C}for(H=t[G+4>>2],re=S,S=u>>>0>>0,t[re+28>>2]=t[G+(S?8:12)>>2];;){_:{if(O)break _;if(G=t[y+16>>2],u=G+1|0,re=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break _}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,H=S?H:!H}S=H,S=S^xe[Y+38992|0],t[M>>2]=S?kt:$n,t[A>>2]=t[A>>2]|32,t[Q+4>>2]=t[Q+4>>2]|8,Y=S<<19,S=(xe[t[y+108>>2]+2|0]<<2)+y|0,G=t[S+28>>2],se=t[G>>2],u=u-se|0;C:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,H=t[G+4>>2],u&32768)break C;for(H=t[G+4>>2],A=S,S=u>>>0>>0,t[A+28>>2]=t[G+(S?12:8)>>2];;){_:{if(O)break _;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(A<<8)+m|0;break _}if(A>>>0<=143){t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break C}for(H=t[G+4>>2],A=S,S=u>>>0>>0,t[A+28>>2]=t[G+(S?8:12)>>2];;){_:{if(O)break _;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break _}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,H=S?H:!H}if(S=H,se=Y|16,!S)break y;break;case 3:break d;case 2:break k;case 1:break w;default:break c}re=Q-4|0,G=t[Q+4>>2]>>>20&4|(t[re>>2]>>>22&1|(se>>>15&16|(se>>>19&64|se>>>3&170))),Y=(xe[G+38736|0]<<2)+y|0,H=t[Y+28>>2],S=t[H>>2],u=u-S|0;w:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break w;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){C:{if(O)break C;if(H=t[y+16>>2],Y=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break C}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break C}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break w}for(A=t[H+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[H+(Y?8:12)>>2];;){C:{if(O)break C;if(H=t[y+16>>2],u=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break C}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break C}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}S=A,S=S^xe[G+38992|0],t[(Rn<<2)+M>>2]=S?kt:$n,t[re>>2]=t[re>>2]|256,t[Q+4>>2]=t[Q+4>>2]|64,se=S<<22|se|128}Y=(xe[t[y+108>>2]+(se>>>6&495)|0]<<2)+y|0,G=t[Y+28>>2],S=t[G>>2],u=u-S|0;y:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,H=t[G+4>>2],u&32768)break y;for(H=t[G+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[G+(S?12:8)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],Y=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=Y,O=8,m=(A<<8)+m|0;break w}if(A>>>0<=143){t[y+16>>2]=Y,m=(A<<9)+m|0,O=7;break w}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break y}for(H=t[G+4>>2],A=Y,Y=u>>>0>>0,t[A+28>>2]=t[G+(Y?8:12)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break w}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break w}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,H=Y?H:!H}if(!H)break v}re=Q-4|0,G=t[Q+4>>2]>>>23&4|(t[re>>2]>>>25&1|(se>>>18&16|(se>>>22&64|se>>>6&170))),Y=(xe[G+38736|0]<<2)+y|0,H=t[Y+28>>2],S=t[H>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break k;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],Y=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break k}for(A=t[H+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[H+(Y?8:12)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],u=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}S=A,S=S^xe[G+38992|0],t[(Ne<<2)+M>>2]=S?kt:$n,t[re>>2]=t[re>>2]|2048,t[Q+4>>2]=t[Q+4>>2]|512,se=S<<25|se|1024}Y=(xe[t[y+108>>2]+(se>>>9&495)|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break v;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){k:{if(O)break k;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break k}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break v}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[H+(Y?8:12)>>2];;){k:{if(O)break k;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break k}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}if(!A)break c}if(_e=Q-4|0,$e=t[Q+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(se>>>21&16|(se>>>25&64|se>>>9&170))),Y=(xe[$e+38736|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0,m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,u&32768)break g;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[(S?12:8)+H>>2];;){d:{if(O)break d;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break d}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break d}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!A:A;break m}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[(Y?8:12)+H>>2];;){d:{if(O)break d;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break d}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break d}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=Y?A:!A;break m}S=t[H+4>>2]}S=S^xe[$e+38992|0],t[(me<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|16384,t[Q+4>>2]=t[Q+4>>2]|4096,Y=Q+(t[y+124>>2]<<2)|0,t[Y+4>>2]=t[Y+4>>2]|4,t[Y+12>>2]=t[Y+12>>2]|1,t[Y+8>>2]=t[Y+8>>2]|S<<18|2,se=S<<28|se|8192}t[Q>>2]=se&-1226833921}if(se=Q+4|0,M=M+4|0,Dr=Dr+1|0,(Rn|0)==(Dr|0))break}if(se=Q+12|0,M=(me<<2)+M|0,Ze=Ze+4|0,S=t[y+128>>2],!(Ze>>>0<(S&-4)>>>0))break}break h}p:{if(S>>>0<4)break p;if(Rn){for(he=y+100|0,Oe=y+96|0,me=De(Rn,3),Ne=Rn<<1,kt=0-$n|0;;){for(Dr=0;;){c:{m:{g:{d:{if(Q=se,se=t[Q>>2],se){v:{if(se&2097168)break v;Y=(xe[t[y+108>>2]+(se&495)|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break k;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break y}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break k}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[H+(Y?8:12)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break y}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}if(!A)break v;_e=Q-4|0,H=t[Q+4>>2]>>>17&4|(t[_e>>2]>>>19&1|(se>>>14&16|(se>>>16&64|se&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break k;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break k}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,Y=S^xe[H+38992|0],t[M>>2]=Y?kt:$n,t[_e>>2]=t[_e>>2]|32,t[Q+4>>2]=t[Q+4>>2]|8,S=Q+(-2-t[y+124>>2]<<2)|0,t[S+4>>2]=t[S+4>>2]|32768,t[S>>2]=t[S>>2]|Y<<31|65536,S=S-4|0,t[S>>2]=t[S>>2]|131072,se=Y<<19|se|16}v:{if(se&16777344)break v;H=se>>>3|0,Y=(xe[t[y+108>>2]+(H&495)|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break k;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],Y=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break k}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}if(!re)break v;_e=Q-4|0,H=t[Q+4>>2]>>>20&4|(t[_e>>2]>>>22&1|(se>>>15&16|(se>>>19&64|H&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break k;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break k}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,S=S^xe[H+38992|0],t[(Rn<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|256,t[Q+4>>2]=t[Q+4>>2]|64,se=S<<22|se|128}v:{if(se&134218752)break v;H=se>>>6|0,Y=(xe[t[y+108>>2]+(H&495)|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break k;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],Y=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break k}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break y}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}if(!re)break v;_e=Q-4|0,H=t[Q+4>>2]>>>23&4|(t[_e>>2]>>>25&1|(se>>>18&16|(se>>>22&64|H&170))),Y=(xe[H+38736|0]<<2)+y|0,G=Y+28|0,A=t[G>>2],S=t[A>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],u&32768)break k;for(re=t[A+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[A+(S?12:8)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],Y=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=Y,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=Y,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}re=S?!re:re;break k}for(re=t[A+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[A+(Y?8:12)>>2];;){y:{if(O)break y;if(A=t[y+16>>2],u=A+1|0,$e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=u,O=8,m=($e<<8)+m|0;break y}if($e>>>0<=143){t[y+16>>2]=u,m=($e<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,re=Y?re:!re}S=re,S=S^xe[H+38992|0],t[(Ne<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|2048,t[Q+4>>2]=t[Q+4>>2]|512,se=S<<25|se|1024}if(se&1073750016)break m;H=u,Y=se>>>9|0,u=(xe[t[y+108>>2]+(Y&495)|0]<<2)+y|0,G=u+28|0,A=t[G>>2],S=t[A>>2],H=H-S|0;v:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,re=t[A+4>>2],H&32768)break v;for(re=t[A+4>>2],$e=u,u=S>>>0>H>>>0,t[$e+28>>2]=t[A+(u?12:8)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],S=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=S,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=S,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,H=H<<1,!(H>>>0<32768))break}re=u?!re:re;break v}for(re=t[A+4>>2],$e=u,u=S>>>0>H>>>0,t[$e+28>>2]=t[A+(u?8:12)>>2];;){k:{if(O)break k;if(A=t[y+16>>2],H=A+1|0,_e=xe[A+1|0],xe[A|0]!=255){t[y+16>>2]=H,O=8,m=(_e<<8)+m|0;break k}if(_e>>>0<=143){t[y+16>>2]=H,m=(_e<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}H=S,re=u?re:!re}if(!re){u=H;break m}if(S=H,_e=Q-4|0,$e=t[Q+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(se>>>21&16|(se>>>25&64|Y&170))),Y=(xe[$e+38736|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],u=t[H>>2],S=S-u|0,m>>>16>>>0>=u>>>0){if(m=m-(u<<16)|0,S&32768){u=S;break d}for(A=t[H+4>>2],re=Y,Y=u>>>0>S>>>0,t[re+28>>2]=t[(Y?12:8)+H>>2];;){v:{if(O)break v;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break v}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=Y?!A:A;break g}for(A=t[H+4>>2],S=u>>>0>S>>>0,t[Y+28>>2]=t[(S?8:12)+H>>2];;){v:{if(O)break v;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break v}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?A:!A;break g}Y=t[Oe>>2],se=t[Y>>2],u=u-se|0;v:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,S=t[Y+4>>2],u&32768)break v;for(G=t[Y+4>>2],S=u>>>0>>0,t[Oe>>2]=t[Y+(S?12:8)>>2];;){k:{if(O)break k;if(Y=t[y+16>>2],se=Y+1|0,H=xe[Y+1|0],xe[Y|0]!=255){t[y+16>>2]=se,O=8,m=(H<<8)+m|0;break k}if(H>>>0<=143){t[y+16>>2]=se,m=(H<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!G:G;break v}for(G=t[Y+4>>2],S=u>>>0>>0,t[Oe>>2]=t[Y+(S?8:12)>>2];;){k:{if(O)break k;if(Y=t[y+16>>2],u=Y+1|0,H=xe[Y+1|0],xe[Y|0]!=255){t[y+16>>2]=u,O=8,m=(H<<8)+m|0;break k}if(H>>>0<=143){t[y+16>>2]=u,m=(H<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,S=S?G:!G}if(!S){G=Oe;break c}S=t[he>>2],se=t[S>>2],u=u-se|0;v:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,Y=t[S+4>>2],u&32768)break v;for(H=t[S+4>>2],se=u>>>0>>0,S=t[(se?12:8)+S>>2],t[he>>2]=S;;){k:{if(O)break k;if(G=t[y+16>>2],Y=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=Y,O=8,m=(A<<8)+m|0;break k}if(A>>>0<=143){t[y+16>>2]=Y,m=(A<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}Y=se?!H:H;break v}for(H=t[S+4>>2],Y=u>>>0>>0,S=t[(Y?8:12)+S>>2],t[he>>2]=S;;){k:{if(O)break k;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break k}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,Y=Y?H:!H}se=t[S>>2],u=u-se|0;v:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,G=t[S+4>>2],u&32768)break v;for(H=t[S+4>>2],G=S,S=u>>>0>>0,t[he>>2]=t[G+(S?12:8)>>2];;){k:{if(O)break k;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(A<<8)+m|0;break k}if(A>>>0<=143){t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}G=S?!H:H;break v}for(H=t[S+4>>2],G=S,S=u>>>0>>0,t[he>>2]=t[G+(S?8:12)>>2];;){k:{if(O)break k;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break k}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break k}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,G=S?H:!H}S=G,se=0,G=he;v:{k:{y:{w:{C:switch(S|Y<<1){case 0:A=Q-4|0,Y=t[Q+4>>2]>>>17&4|t[A>>2]>>>19&1,S=(xe[Y+38736|0]<<2)+y|0,G=t[S+28>>2],se=t[G>>2],u=u-se|0;_:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,H=t[G+4>>2],u&32768)break _;for(H=t[G+4>>2],re=S,S=u>>>0>>0,t[re+28>>2]=t[G+(S?12:8)>>2];;){x:{if(O)break x;if(G=t[y+16>>2],se=G+1|0,re=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(re<<8)+m|0;break x}if(re>>>0<=143){t[y+16>>2]=se,m=(re<<9)+m|0,O=7;break x}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break _}for(H=t[G+4>>2],re=S,S=u>>>0>>0,t[re+28>>2]=t[G+(S?8:12)>>2];;){x:{if(O)break x;if(G=t[y+16>>2],u=G+1|0,re=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break x}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break x}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,H=S?H:!H}S=H,se=S^xe[Y+38992|0],t[M>>2]=se?kt:$n,t[A>>2]=t[A>>2]|32,t[Q+4>>2]=t[Q+4>>2]|8,S=Q+(-2-t[y+124>>2]<<2)|0,t[S+4>>2]=t[S+4>>2]|32768,t[S>>2]=t[S>>2]|se<<31|65536,S=S-4|0,t[S>>2]=t[S>>2]|131072,Y=se<<19,S=(xe[t[y+108>>2]+2|0]<<2)+y|0,G=t[S+28>>2],se=t[G>>2],u=u-se|0;_:{if(m>>>16>>>0>=se>>>0){if(m=m-(se<<16)|0,H=t[G+4>>2],u&32768)break _;for(H=t[G+4>>2],A=S,S=u>>>0>>0,t[A+28>>2]=t[G+(S?12:8)>>2];;){x:{if(O)break x;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=se,O=8,m=(A<<8)+m|0;break x}if(A>>>0<=143){t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break x}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break _}for(H=t[G+4>>2],A=S,S=u>>>0>>0,t[A+28>>2]=t[G+(S?8:12)>>2];;){x:{if(O)break x;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break x}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break x}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,se=se<<1,!(se>>>0<32768))break}u=se,H=S?H:!H}if(S=H,se=Y|16,!S)break w;break;case 3:break v;case 2:break y;case 1:break C;default:break m}re=Q-4|0,G=t[Q+4>>2]>>>20&4|(t[re>>2]>>>22&1|(se>>>15&16|(se>>>19&64|se>>>3&170))),Y=(xe[G+38736|0]<<2)+y|0,H=t[Y+28>>2],S=t[H>>2],u=u-S|0;C:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break C;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){_:{if(O)break _;if(H=t[y+16>>2],Y=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break _}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break C}for(A=t[H+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[H+(Y?8:12)>>2];;){_:{if(O)break _;if(H=t[y+16>>2],u=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break _}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break _}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}S=A,S=S^xe[G+38992|0],t[(Rn<<2)+M>>2]=S?kt:$n,t[re>>2]=t[re>>2]|256,t[Q+4>>2]=t[Q+4>>2]|64,se=S<<22|se|128}Y=(xe[t[y+108>>2]+(se>>>6&495)|0]<<2)+y|0,G=t[Y+28>>2],S=t[G>>2],u=u-S|0;w:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,H=t[G+4>>2],u&32768)break w;for(H=t[G+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[G+(S?12:8)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],Y=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=Y,O=8,m=(A<<8)+m|0;break C}if(A>>>0<=143){t[y+16>>2]=Y,m=(A<<9)+m|0,O=7;break C}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}H=S?!H:H;break w}for(H=t[G+4>>2],A=Y,Y=u>>>0>>0,t[A+28>>2]=t[G+(Y?8:12)>>2];;){C:{if(O)break C;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]!=255){t[y+16>>2]=u,O=8,m=(A<<8)+m|0;break C}if(A>>>0<=143){t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break C}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,H=Y?H:!H}if(!H)break k}re=Q-4|0,G=t[Q+4>>2]>>>23&4|(t[re>>2]>>>25&1|(se>>>18&16|(se>>>22&64|se>>>6&170))),Y=(xe[G+38736|0]<<2)+y|0,H=t[Y+28>>2],S=t[H>>2],u=u-S|0;y:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break y;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){w:{if(O)break w;if(H=t[y+16>>2],Y=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(_e<<8)+m|0;break w}if(_e>>>0<=143){t[y+16>>2]=Y,m=(_e<<9)+m|0,O=7;break w}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break y}for(A=t[H+4>>2],$e=Y,Y=u>>>0>>0,t[$e+28>>2]=t[H+(Y?8:12)>>2];;){w:{if(O)break w;if(H=t[y+16>>2],u=H+1|0,_e=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(_e<<8)+m|0;break w}if(_e>>>0<=143){t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break w}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}S=A,S=S^xe[G+38992|0],t[(Ne<<2)+M>>2]=S?kt:$n,t[re>>2]=t[re>>2]|2048,t[Q+4>>2]=t[Q+4>>2]|512,se=S<<25|se|1024}Y=(xe[t[y+108>>2]+(se>>>9&495)|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0;k:{if(m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,A=t[H+4>>2],u&32768)break k;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[H+(S?12:8)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break y}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}A=S?!A:A;break k}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[H+(Y?8:12)>>2];;){y:{if(O)break y;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break y}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break y}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,A=Y?A:!A}if(!A)break m}if(_e=Q-4|0,$e=t[Q+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(se>>>21&16|(se>>>25&64|se>>>9&170))),Y=(xe[$e+38736|0]<<2)+y|0,G=Y+28|0,H=t[G>>2],S=t[H>>2],u=u-S|0,m>>>16>>>0>=S>>>0){if(m=m-(S<<16)|0,u&32768)break d;for(A=t[H+4>>2],S=u>>>0>>0,t[Y+28>>2]=t[(S?12:8)+H>>2];;){v:{if(O)break v;if(H=t[y+16>>2],Y=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=Y,O=8,m=(re<<8)+m|0;break v}if(re>>>0<=143){t[y+16>>2]=Y,m=(re<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!A:A;break g}for(A=t[H+4>>2],re=Y,Y=u>>>0>>0,t[re+28>>2]=t[(Y?8:12)+H>>2];;){v:{if(O)break v;if(H=t[y+16>>2],u=H+1|0,re=xe[H+1|0],xe[H|0]!=255){t[y+16>>2]=u,O=8,m=(re<<8)+m|0;break v}if(re>>>0<=143){t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break v}t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=Y?A:!A;break g}S=t[H+4>>2]}S=S^xe[$e+38992|0],t[(me<<2)+M>>2]=S?kt:$n,t[_e>>2]=t[_e>>2]|16384,t[Q+4>>2]=t[Q+4>>2]|4096,Y=Q+(t[y+124>>2]<<2)|0,t[Y+4>>2]=t[Y+4>>2]|4,t[Y+12>>2]=t[Y+12>>2]|1,t[Y+8>>2]=t[Y+8>>2]|S<<18|2,se=S<<28|se|8192}t[Q>>2]=se&-1226833921}if(se=Q+4|0,M=M+4|0,Dr=Dr+1|0,(Rn|0)==(Dr|0))break}if(se=Q+12|0,M=(me<<2)+M|0,Ze=Ze+4|0,S=t[y+128>>2],!(Ze>>>0<(S&-4)>>>0))break}break p}se=S&-4,se=(se>>>0<=4?4:se)-1|0,Ze=(se&-4)+4|0,se=(Y+(se<<1&-8)|0)+20|0}if(t[y+8>>2]=O,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=G,!Rn|S>>>0<=Ze>>>0)break o;for(;;){if(O=0,t[y+128>>2]!=(Ze|0))for(;eo(y,se,(De(O,Rn)<<2)+M|0,$n,O,0),O=O+1|0,O>>>0>2]-Ze>>>0;);if(t[se>>2]=t[se>>2]&-1226833921,M=M+4|0,se=se+4|0,Tn=Tn+1|0,(Rn|0)==(Tn|0))break}break o}se=S&-4,se=(se>>>0<=4?4:se)-1|0,Ze=(se&-4)+4|0,se=(Y+(se<<1&-8)|0)+20|0}if(t[y+8>>2]=O,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=G,!Rn|S>>>0<=Ze>>>0)break o;for(;;){if(O=0,t[y+128>>2]!=(Ze|0))for(;eo(y,se,(De(O,Rn)<<2)+M|0,$n,O,1),O=O+1|0,O>>>0>2]-Ze>>>0;);if(t[se>>2]=t[se>>2]&-1226833921,M=M+4|0,se=se+4|0,Tn=Tn+1|0,(Rn|0)==(Tn|0))break}break o}for(;;){for(Ze=0;;){H=M,he=S;l:{h:{f:{p:{S=t[S>>2];c:{if(!S){se=t[Y>>2],S=t[se>>2],u=u-S|0;m:{if(m>>>16>>>0>>0){for(G=t[se+4>>2],M=u>>>0>>0,t[Y>>2]=t[se+(M?8:12)>>2];;){g:{if(O)break g;if(se=t[y+16>>2],u=se+1|0,Q=xe[se+1|0],xe[se|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=u,m=(Q<<9)+m|0,O=7;break g}t[y+16>>2]=u,O=8,m=(Q<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=M?G:!G;break m}if(m=m-(S<<16)|0,!(u&32768)){for(G=t[se+4>>2],S=u>>>0>>0,t[Y>>2]=t[se+(S?12:8)>>2];;){g:{if(O)break g;if(se=t[y+16>>2],M=se+1|0,Q=xe[se+1|0],xe[se|0]==255){if(Q>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=M,m=(Q<<9)+m|0,O=7;break g}t[y+16>>2]=M,O=8,m=(Q<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!G:G;break m}S=t[se+4>>2]}if(!S){se=Y;break l}M=t[Oe>>2],S=t[M>>2],u=u-S|0;m:{if(m>>>16>>>0>>0){for(Q=t[M+4>>2],se=u>>>0>>0,M=t[(se?8:12)+M>>2],t[Oe>>2]=M;;){g:{if(O)break g;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break g}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,G=se?Q:!Q;break m}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[M+4>>2],S=u>>>0>>0,M=t[(S?12:8)+M>>2],t[Oe>>2]=M;;){g:{if(O)break g;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break g}t[y+16>>2]=se,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}G=S?!Q:Q;break m}G=t[M+4>>2]}S=t[M>>2],u=u-S|0;m:{if(m>>>16>>>0>>0){for(Q=t[M+4>>2],se=M,M=u>>>0>>0,t[Oe>>2]=t[se+(M?8:12)>>2];;){g:{if(O)break g;if(se=t[y+16>>2],u=se+1|0,A=xe[se+1|0],xe[se|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break g}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,M=M?Q:!Q;break m}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[M+4>>2],S=u>>>0>>0,t[Oe>>2]=t[(S?12:8)+M>>2];;){g:{if(O)break g;if(se=t[y+16>>2],M=se+1|0,A=xe[se+1|0],xe[se|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=M,m=(A<<9)+m|0,O=7;break g}t[y+16>>2]=M,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=S?!Q:Q;break m}M=t[M+4>>2]}S=0,se=Oe;m:{g:{d:{v:{k:switch(M|G<<1){case 0:A=he-4|0,se=t[he+4>>2]>>>17&4|t[A>>2]>>>19&1,M=(xe[se+38736|0]<<2)+y|0,G=t[M+28>>2],S=t[G>>2],u=u-S|0;y:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=M,M=u>>>0>>0,t[Ne+28>>2]=t[G+(M?8:12)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],u=G+1|0,re=xe[G+1|0],xe[G|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break w}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,S=M?Q:!Q;break y}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[G+4>>2],S=u>>>0>>0,t[M+28>>2]=t[G+(S?12:8)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],M=G+1|0,re=xe[G+1|0],xe[G|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=M,m=(re<<9)+m|0,O=7;break w}t[y+16>>2]=M,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}S=S?!Q:Q;break y}S=t[G+4>>2]}S=S^xe[se+38992|0],t[H>>2]=S?me:Tn,t[A>>2]=t[A>>2]|32,t[he+4>>2]=t[he+4>>2]|8,se=S<<19,M=(xe[t[y+108>>2]+2|0]<<2)+y|0,G=t[M+28>>2],S=t[G>>2],u=u-S|0;y:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=M,M=u>>>0>>0,t[Ne+28>>2]=t[G+(M?8:12)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break w}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,S=S<<1,!(S>>>0<32768))break}u=S,M=M?Q:!Q;break y}if(m=m-(S<<16)|0,!(u&32768)){for(Q=t[G+4>>2],S=u>>>0>>0,t[M+28>>2]=t[G+(S?12:8)>>2];;){w:{if(O)break w;if(G=t[y+16>>2],M=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break w}t[y+16>>2]=M,m=(A<<9)+m|0,O=7;break w}t[y+16>>2]=M,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=S?!Q:Q;break y}M=t[G+4>>2]}if(S=se|16,!M)break v;break;case 3:break m;case 2:break d;case 1:break k;default:break h}re=he-4|0,G=t[he+4>>2]>>>20&4|(t[re>>2]>>>22&1|(S>>>15&16|(S>>>19&64|S>>>3&170))),se=(xe[G+38736|0]<<2)+y|0,Q=t[se+28>>2],M=t[Q>>2],u=u-M|0;k:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[Q+(se?8:12)>>2];;){y:{if(O)break y;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break y}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break y}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?A:!A;break k}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[se+28>>2]=t[Q+(M?12:8)>>2];;){y:{if(O)break y;if(Q=t[y+16>>2],se=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break y}t[y+16>>2]=se,m=(_e<<9)+m|0,O=7;break y}t[y+16>>2]=se,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break k}M=t[Q+4>>2]}M=M^xe[G+38992|0],t[H+256>>2]=M?me:Tn,t[re>>2]=t[re>>2]|256,t[he+4>>2]=t[he+4>>2]|64,S=M<<22|S|128}se=(xe[t[y+108>>2]+(S>>>6&495)|0]<<2)+y|0,G=t[se+28>>2],M=t[G>>2],u=u-M|0;v:{if(m>>>16>>>0>>0){for(Q=t[G+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[G+(se?8:12)>>2];;){k:{if(O)break k;if(G=t[y+16>>2],u=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break k}t[y+16>>2]=u,m=(A<<9)+m|0,O=7;break k}t[y+16>>2]=u,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?Q:!Q;break v}if(m=m-(M<<16)|0,!(u&32768)){for(Q=t[G+4>>2],M=u>>>0>>0,t[se+28>>2]=t[G+(M?12:8)>>2];;){k:{if(O)break k;if(G=t[y+16>>2],se=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break k}t[y+16>>2]=se,m=(A<<9)+m|0,O=7;break k}t[y+16>>2]=se,O=8,m=(A<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!Q:Q;break v}M=t[G+4>>2]}if(!M)break g}re=he-4|0,G=t[he+4>>2]>>>23&4|(t[re>>2]>>>25&1|(S>>>18&16|(S>>>22&64|S>>>6&170))),se=(xe[G+38736|0]<<2)+y|0,Q=t[se+28>>2],M=t[Q>>2],u=u-M|0;d:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=se,se=u>>>0>>0,t[Ne+28>>2]=t[Q+(se?8:12)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],u=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=se?A:!A;break d}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[se+28>>2]=t[Q+(M?12:8)>>2];;){v:{if(O)break v;if(Q=t[y+16>>2],se=Q+1|0,_e=xe[Q+1|0],xe[Q|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break v}t[y+16>>2]=se,m=(_e<<9)+m|0,O=7;break v}t[y+16>>2]=se,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break d}M=t[Q+4>>2]}M=M^xe[G+38992|0],t[H+512>>2]=M?me:Tn,t[re>>2]=t[re>>2]|2048,t[he+4>>2]=t[he+4>>2]|512,S=M<<25|S|1024}G=(xe[t[y+108>>2]+(S>>>9&495)|0]<<2)+y|0,se=G+28|0,Q=t[se>>2],M=t[Q>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[Q+(G?8:12)>>2];;){d:{if(O)break d;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break g}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[G+28>>2]=t[Q+(M?12:8)>>2];;){d:{if(O)break d;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break g}M=t[Q+4>>2]}if(!M)break h}if(_e=he-4|0,Yt=t[he+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(S>>>21&16|(S>>>25&64|S>>>9&170))),Q=(xe[Yt+38736|0]<<2)+y|0,se=Q+28|0,G=t[se>>2],M=t[G>>2],u=u-M|0,m>>>16>>>0>>0){for(A=t[G+4>>2],Ne=G,G=u>>>0>>0,t[Q+28>>2]=t[Ne+(G?8:12)>>2];;){m:{if(O)break m;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break m}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break m}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break f}if(m=m-(M<<16)|0,u&32768)break c;for(A=t[G+4>>2],M=u>>>0>>0,t[Q+28>>2]=t[(M?12:8)+G>>2];;){m:{if(O)break m;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break m}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break m}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break f}m:{if(S&2097168)break m;G=(xe[t[y+108>>2]+(S&495)|0]<<2)+y|0,se=G+28|0,Q=t[se>>2],M=t[Q>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(A=t[Q+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[Q+(G?8:12)>>2];;){d:{if(O)break d;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?A:!A;break g}if(m=m-(M<<16)|0,!(u&32768)){for(A=t[Q+4>>2],M=u>>>0>>0,t[G+28>>2]=t[Q+(M?12:8)>>2];;){d:{if(O)break d;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!A:A;break g}M=t[Q+4>>2]}if(!M)break m;_e=he-4|0,Q=t[he+4>>2]>>>17&4|(t[_e>>2]>>>19&1|(S>>>14&16|(S>>>16&64|S&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break g}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break g}M=t[A+4>>2]}M=M^xe[Q+38992|0],t[H>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|32,t[he+4>>2]=t[he+4>>2]|8,S=M<<19|S|16}m:{if(S&16777344)break m;Q=S>>>3|0,G=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break g}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break g}M=t[A+4>>2]}if(!M)break m;_e=he-4|0,Q=t[he+4>>2]>>>20&4|(t[_e>>2]>>>22&1|(S>>>15&16|(S>>>19&64|Q&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break g}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break g}M=t[A+4>>2]}M=M^xe[Q+38992|0],t[H+256>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|256,t[he+4>>2]=t[he+4>>2]|64,S=M<<22|S|128}m:{if(S&134218752)break m;Q=S>>>6|0,G=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],u=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break g}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break g}M=t[A+4>>2]}if(!M)break m;_e=he-4|0,Q=t[he+4>>2]>>>23&4|(t[_e>>2]>>>25&1|(S>>>18&16|(S>>>22&64|Q&170))),G=(xe[Q+38736|0]<<2)+y|0,se=G+28|0,A=t[se>>2],M=t[A>>2],u=u-M|0;g:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=G,G=u>>>0>>0,t[Ne+28>>2]=t[A+(G?8:12)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],u=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=u,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=u,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?re:!re;break g}if(m=m-(M<<16)|0,!(u&32768)){for(re=t[A+4>>2],M=u>>>0>>0,t[G+28>>2]=t[A+(M?12:8)>>2];;){d:{if(O)break d;if(A=t[y+16>>2],G=A+1|0,Ne=xe[A+1|0],xe[A|0]==255){if(Ne>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break d}t[y+16>>2]=G,m=(Ne<<9)+m|0,O=7;break d}t[y+16>>2]=G,O=8,m=(Ne<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?!re:re;break g}M=t[A+4>>2]}M=M^xe[Q+38992|0],t[H+512>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|2048,t[he+4>>2]=t[he+4>>2]|512,S=M<<25|S|1024}if(S&1073750016)break h;G=u,Q=S>>>9|0,u=(xe[t[y+108>>2]+(Q&495)|0]<<2)+y|0,se=u+28|0,A=t[se>>2],M=t[A>>2],G=G-M|0;m:{if(m>>>16>>>0>>0){for(re=t[A+4>>2],Ne=u,u=M>>>0>G>>>0,t[Ne+28>>2]=t[A+(u?8:12)>>2];;){g:{if(O)break g;if(A=t[y+16>>2],G=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=G,m=(_e<<9)+m|0,O=7;break g}t[y+16>>2]=G,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}G=M,u=u?re:!re;break m}if(m=m-(M<<16)|0,!(G&32768)){for(re=t[A+4>>2],Ne=u,u=M>>>0>G>>>0,t[Ne+28>>2]=t[A+(u?12:8)>>2];;){g:{if(O)break g;if(A=t[y+16>>2],M=A+1|0,_e=xe[A+1|0],xe[A|0]==255){if(_e>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break g}t[y+16>>2]=M,m=(_e<<9)+m|0,O=7;break g}t[y+16>>2]=M,O=8,m=(_e<<8)+m|0}if(O=O-1|0,m=m<<1,G=G<<1,!(G>>>0<32768))break}u=u?!re:re;break m}u=t[A+4>>2]}if(!u){u=G;break h}if(M=G,_e=he-4|0,Yt=t[he+4>>2]>>>26&4|(t[_e>>2]>>>28&1|(S>>>21&16|(S>>>25&64|Q&170))),Q=(xe[Yt+38736|0]<<2)+y|0,se=Q+28|0,G=t[se>>2],u=t[G>>2],M=M-u|0,m>>>16>>>0>>0){for(A=t[G+4>>2],M=u>>>0>M>>>0,t[Q+28>>2]=t[(M?8:12)+G>>2];;){m:{if(O)break m;if(Q=t[y+16>>2],G=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break m}t[y+16>>2]=G,m=(re<<9)+m|0,O=7;break m}t[y+16>>2]=G,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,u=u<<1,!(u>>>0<32768))break}M=M?A:!A;break f}if(m=m-(u<<16)|0,!(M&32768))break p;u=M}M=t[G+4>>2];break f}for(A=t[G+4>>2],Ne=G,G=u>>>0>M>>>0,t[Q+28>>2]=t[Ne+(G?12:8)>>2];;){p:{if(O)break p;if(Q=t[y+16>>2],u=Q+1|0,re=xe[Q+1|0],xe[Q|0]==255){if(re>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,m=m+65280|0,O=8;break p}t[y+16>>2]=u,m=(re<<9)+m|0,O=7;break p}t[y+16>>2]=u,O=8,m=(re<<8)+m|0}if(O=O-1|0,m=m<<1,M=M<<1,!(M>>>0<32768))break}u=M,M=G?!A:A}M=M^xe[Yt+38992|0],t[H+768>>2]=M?me:Tn,t[_e>>2]=t[_e>>2]|16384,t[he+4>>2]=t[he+4>>2]|4096,t[he+260>>2]=t[he+260>>2]|4,t[he+268>>2]=t[he+268>>2]|1,t[he+264>>2]=t[he+264>>2]|M<<18|2,S=M<<28|S|8192}t[he>>2]=S&-1226833921}if(S=he+4|0,M=H+4|0,Ze=Ze+1|0,(Ze|0)==64)break}if(S=he+12|0,M=H+772|0,G=$e>>>0<60,$e=$e+4|0,!G)break}}t[y+8>>2]=O,t[y+4>>2]=u,t[y>>2]=m,t[y+104>>2]=se}o:{if(!(sr&32))break o;t[y+104>>2]=y+100,S=t[y+100>>2],u=t[S>>2],m=t[y+4>>2]-u|0,t[y+4>>2]=m,O=t[y>>2];u:{if(O>>>16>>>0>>0){for(t[y+4>>2]=u,S=t[(u>>>0>m>>>0?8:12)+S>>2],t[y+100>>2]=S,m=t[y+8>>2];;){l:{if(m)break l;if(se=t[y+16>>2],M=se+1|0,Y=xe[se+1|0],xe[se|0]==255){if(Y>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,m=8;break l}t[y+16>>2]=M,O=(Y<<9)+O|0,m=7;break l}t[y+16>>2]=M,m=8,O=(Y<<8)+O|0}if(m=m-1|0,t[y+8>>2]=m,O=O<<1,t[y>>2]=O,u=u<<1,t[y+4>>2]=u,!(u>>>0<32768))break}m=u;break u}if(O=O-(u<<16)|0,t[y>>2]=O,m&32768)break u;for(S=t[(u>>>0>m>>>0?12:8)+S>>2],t[y+100>>2]=S,u=t[y+8>>2];;){l:{if(u)break l;if(M=t[y+16>>2],u=M+1|0,se=xe[M+1|0],xe[M|0]==255){if(se>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,u=8;break l}t[y+16>>2]=u,O=(se<<9)+O|0,u=7;break l}t[y+16>>2]=u,u=8,O=(se<<8)+O|0}if(u=u-1|0,t[y+8>>2]=u,O=O<<1,t[y>>2]=O,m=m<<1,t[y+4>>2]=m,!(m>>>0<32768))break}}u=t[S>>2],m=m-u|0,t[y+4>>2]=m;u:{if(O>>>16>>>0>>0){for(t[y+4>>2]=u,S=t[(u>>>0>m>>>0?8:12)+S>>2],t[y+100>>2]=S,m=t[y+8>>2];;){l:{if(m)break l;if(se=t[y+16>>2],M=se+1|0,Y=xe[se+1|0],xe[se|0]==255){if(Y>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,m=8;break l}t[y+16>>2]=M,O=(Y<<9)+O|0,m=7;break l}t[y+16>>2]=M,m=8,O=(Y<<8)+O|0}if(m=m-1|0,t[y+8>>2]=m,O=O<<1,t[y>>2]=O,u=u<<1,t[y+4>>2]=u,!(u>>>0<32768))break}m=u;break u}if(O=O-(u<<16)|0,t[y>>2]=O,m&32768)break u;for(S=t[(u>>>0>m>>>0?12:8)+S>>2],t[y+100>>2]=S,u=t[y+8>>2];;){l:{if(u)break l;if(M=t[y+16>>2],u=M+1|0,se=xe[M+1|0],xe[M|0]==255){if(se>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,u=8;break l}t[y+16>>2]=u,O=(se<<9)+O|0,u=7;break l}t[y+16>>2]=u,u=8,O=(se<<8)+O|0}if(u=u-1|0,t[y+8>>2]=u,O=O<<1,t[y>>2]=O,m=m<<1,t[y+4>>2]=m,!(m>>>0<32768))break}}u=t[S>>2],m=m-u|0,t[y+4>>2]=m;u:{if(O>>>16>>>0>>0){for(t[y+4>>2]=u,S=t[(u>>>0>m>>>0?8:12)+S>>2],t[y+100>>2]=S,m=t[y+8>>2];;){l:{if(m)break l;if(se=t[y+16>>2],M=se+1|0,Y=xe[se+1|0],xe[se|0]==255){if(Y>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,m=8;break l}t[y+16>>2]=M,O=(Y<<9)+O|0,m=7;break l}t[y+16>>2]=M,m=8,O=(Y<<8)+O|0}if(m=m-1|0,t[y+8>>2]=m,O=O<<1,t[y>>2]=O,u=u<<1,t[y+4>>2]=u,!(u>>>0<32768))break}m=u;break u}if(O=O-(u<<16)|0,t[y>>2]=O,m&32768)break u;for(S=t[(u>>>0>m>>>0?12:8)+S>>2],t[y+100>>2]=S,u=t[y+8>>2];;){l:{if(u)break l;if(M=t[y+16>>2],u=M+1|0,se=xe[M+1|0],xe[M|0]==255){if(se>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,u=8;break l}t[y+16>>2]=u,O=(se<<9)+O|0,u=7;break l}t[y+16>>2]=u,u=8,O=(se<<8)+O|0}if(u=u-1|0,t[y+8>>2]=u,O=O<<1,t[y>>2]=O,m=m<<1,t[y+4>>2]=m,!(m>>>0<32768))break}}if(u=t[S>>2],m=m-u|0,t[y+4>>2]=m,O>>>16>>>0>>0){for(t[y+4>>2]=u,t[y+100>>2]=t[(u>>>0>m>>>0?8:12)+S>>2],m=t[y+8>>2];;){u:{if(m)break u;if(M=t[y+16>>2],S=M+1|0,se=xe[M+1|0],xe[M|0]==255){if(se>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,O=O+65280|0,m=8;break u}t[y+16>>2]=S,O=(se<<9)+O|0,m=7;break u}t[y+16>>2]=S,m=8,O=(se<<8)+O|0}if(m=m-1|0,t[y+8>>2]=m,O=O<<1,t[y>>2]=O,u=u<<1,t[y+4>>2]=u,!(u>>>0<32768))break}break o}if(M=O-(u<<16)|0,t[y>>2]=M,m&32768)break o;for(t[y+100>>2]=t[(u>>>0>m>>>0?12:8)+S>>2],O=t[y+8>>2];;){u:{if(O)break u;if(S=t[y+16>>2],u=S+1|0,se=xe[S+1|0],xe[S|0]==255){if(se>>>0>=144){t[y+12>>2]=t[y+12>>2]+1,M=M+65280|0,O=8;break u}t[y+16>>2]=u,M=(se<<9)+M|0,O=7;break u}t[y+16>>2]=u,O=8,M=(se<<8)+M|0}if(O=O-1|0,t[y+8>>2]=O,M=M<<1,t[y>>2]=M,m=m<<1,t[y+4>>2]=m,!(m>>>0<32768))break}}}if(_r)break a;k(y),t[y+100>>2]=36656,t[y+96>>2]=35280,t[y+28>>2]=35312}if(u=f0+1|0,S=(u|0)==3,f0=S?0:u,un=un-S|0,Cn=Cn+1|0,Cn>>>0>=ln[P0+8>>2])break i;if(!((un|0)>0))break}}if(Di=Di+s0|0,S=t[y+24>>2],u=Qn[y+112>>1],dt[S|0]=u,dt[S+1|0]=u>>>8,Xo=Xo+1|0,!(Xo>>>0>2]))break}i:{if(!en)break i;a:{if(S=t[y+24>>2],M=t[y+16>>2],S>>>0>M+2>>>0){if(!li)break a;M=t[y+16>>2],S=t[y+24>>2],u=t[y+20>>2],t[Zr+56>>2]=S-u,t[Zr+52>>2]=M-u,t[Zr+48>>2]=(S-M|0)-2,vt(rr,2,27212,Zr+48|0);break i}if(u=t[y+12>>2],u>>>0<3)break i;if(li){t[Zr+80>>2]=t[y+12>>2],vt(rr,2,16692,Zr+80|0);break i}t[Zr+64>>2]=u,vt(rr,2,16692,Zr- -64|0);break i}u=t[y+20>>2],t[Zr+40>>2]=S-u,t[Zr+36>>2]=M-u,t[Zr+32>>2]=(S-M|0)-2,vt(rr,2,27212,Zr+32|0)}if(!t[jt+60>>2])break r;t[y+116>>2]=er}se=t[qo+4>>2],M=t[jt+12>>2],me=t[jt+8>>2]-t[qo>>2]|0,S=t[qo+16>>2],S&1&&(u=(t[Ro+28>>2]+De(xa,152)|0)-152|0,me=(t[u+8>>2]+me|0)-t[u>>2]|0),O=M-se|0,S&2&&(u=(t[Ro+28>>2]+De(xa,152)|0)-152|0,O=(t[u+12>>2]+O|0)-t[u+4>>2]|0),Oe=t[jt+60>>2],Ne=Oe||t[y+116>>2],Ze=t[y+128>>2],A=t[y+124>>2],u=t[Vo+808>>2];r:{if(!u)break r;if((u|0)>=31){if(!Ze|!A)break r;pi(Ne,0,De(A,Ze)<<2);break r}if(!Ze|!A)break r;for(Y=1<>2],S=G>>31,S=(S^G)-S|0,(S|0)>=(Y|0)&&(S=S>>>t[Vo+808>>2]|0,t[M>>2]=(G|0)<0?0-S|0:S),u=u+1|0,(A|0)!=(u|0););if(_e=_e+1|0,(Ze|0)==(_e|0))break}}if(Oe){if(Y=De(A,Ze),t[Vo+20>>2]==1){if(!Y)break e;if(u=0,(Y|0)!=1)for(se=Y&-2,m=0;M=u<<2,S=M+Ne|0,t[S>>2]=t[S>>2]/2,S=(M|4)+Ne|0,t[S>>2]=t[S>>2]/2,u=u+2|0,m=m+2|0,(se|0)!=(m|0););if(!(Y&1))break e;u=(u<<2)+Ne|0,t[u>>2]=t[u>>2]/2;break e}if(!Y)break e;if(Bi=Ye(Ue[qo+32>>2]*Ye(.5)),Y>>>0>=4)for(S=Y&-4,u=0;Ue[Ne>>2]=Bi*Ye(t[Ne>>2]),Ue[Ne+4>>2]=Bi*Ye(t[Ne+4>>2]),Ue[Ne+8>>2]=Bi*Ye(t[Ne+8>>2]),Ue[Ne+12>>2]=Bi*Ye(t[Ne+12>>2]),Ne=Ne+16|0,u=u+4|0,(S|0)!=(u|0););if(S=Y&3,!S)break e;for(u=0;Ue[Ne>>2]=Bi*Ye(t[Ne>>2]),Ne=Ne+4|0,u=u+1|0,(S|0)!=(u|0););break e}if(Q=Ba-Ua|0,t[Vo+20>>2]==1){if(!Ze)break e;for(m=t[Ro+36>>2]+(De(O,Q)+me<<2)|0,Oe=A&-4,G=0;;){if(u=0,Oe)for(y=De(G,Q),Y=De(A,G);he=(u+Y<<2)+Ne|0,se=t[he+4>>2],M=t[he+8>>2],S=t[he+12>>2],H=m+(u+y<<2)|0,t[H>>2]=t[he>>2]/2,t[H+12>>2]=(S|0)/2,t[H+8>>2]=(M|0)/2,t[H+4>>2]=(se|0)/2,u=u+4|0,Oe>>>0>u>>>0;);r:{if(u>>>0>=A>>>0||(S=u+1|0,se=De(G,Q),M=De(A,G),A-u&1&&(t[m+(u+se<<2)>>2]=t[(u+M<<2)+Ne>>2]/2,u=S),(S|0)==(A|0)))break r;for(;t[m+(u+se<<2)>>2]=t[(u+M<<2)+Ne>>2]/2,S=u+1|0,t[m+(S+se<<2)>>2]=t[(S+M<<2)+Ne>>2]/2,u=u+2|0,(A|0)!=(u|0););}if(G=G+1|0,(Ze|0)==(G|0))break}break e}if(!Ze|!A)break e;for(Bi=Ye(Ue[qo+32>>2]*Ye(.5)),M=A&-4,Y=A&3,se=t[Ro+36>>2]+(De(O,Q)+me<<2)|0,G=0,S=A-1>>>0<3;;){if(u=se,m=0,!S)for(;Ue[u>>2]=Bi*Ye(t[Ne>>2]),Ue[u+4>>2]=Bi*Ye(t[Ne+4>>2]),Ue[u+8>>2]=Bi*Ye(t[Ne+8>>2]),Ue[u+12>>2]=Bi*Ye(t[Ne+12>>2]),u=u+16|0,Ne=Ne+16|0,m=m+4|0,(M|0)!=(m|0););if(m=0,Y)for(;Ue[u>>2]=Bi*Ye(t[Ne>>2]),u=u+4|0,Ne=Ne+4|0,m=m+1|0,(Y|0)!=(m|0););if(se=(Q<<2)+se|0,G=G+1|0,(Ze|0)==(G|0))break}break e}t[Zr>>2]=un,vt(rr,2,18983,Zr)}t[t[se>>2]>>2]=0}Gt(x),Nt=Zr+96|0}function hl(x,u,m,y,S,M){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0;var O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=Ye(0),P0=0,U0=0,q0=0,no=0,fo=0,Ro=0,Vo=0,qo=0,Xo=0,ss=0,xa=0,Ua=0,Ba=0,t1=0,U1=0,B1=0,G1=0,pl=0,ml=0,zl=0,wu=0,Cu=0,K4=0,q4=0,X4=0,Yp=0,Jp=0,Zp=0,J5=0,Z5=0,Q5=0,e3=0,t3=0,n3=0,Yk=0,Jk=0,Zk=0,Qk=0,ey=0,ty=0,ny=0,ry=0,iy=0,oy=0,sy=0,ay=0,ly=0,xx=0,Sx=0,Tx=0;K4=Nt-16|0,Nt=K4;e:{if(!(xe[x+8|0]&128)|t[x+204>>2]!=(u|0))break e;if(A=t[x+156>>2],J5=A+De(u,5644)|0,un=t[J5+5596>>2],!un){Gn(J5);break e}en=t[x+208>>2],G=t[x+76>>2],G||(G=t[x+72>>2]),Q=t[G>>2],Y=t[G+4>>2],H=t[G+8>>2],G=t[G+12>>2],he=t[x+60>>2],re=t[x- -64>>2],xx=A+De(u,5644)|0,se=t[xx+5600>>2],zl=Nt-16|0,Nt=zl,t[en+36>>2]=u,A=t[t[en+28>>2]+76>>2],t[en+64>>2]=1,t[en+60>>2]=G,t[en+56>>2]=H,t[en+52>>2]=Y,t[en+48>>2]=Q,t[en+32>>2]=A+De(u,5644),Gt(t[en+68>>2]),t[en+68>>2]=0;t:{if(he){if(sr=oi(4,t[t[en+24>>2]+16>>2]),!sr)break t;if(he>>>0>=4)for(u=he&-4;A=Ne<<2,t[(t[A+re>>2]<<2)+sr>>2]=1,t[(t[re+(A|4)>>2]<<2)+sr>>2]=1,t[(t[re+(A|8)>>2]<<2)+sr>>2]=1,t[(t[re+(A|12)>>2]<<2)+sr>>2]=1,Ne=Ne+4|0,O=O+4|0,(u|0)!=(O|0););if(u=he&3,u)for(;t[(t[re+(Ne<<2)>>2]<<2)+sr>>2]=1,Ne=Ne+1|0,_i=_i+1|0,(u|0)!=(_i|0););t[en+68>>2]=sr}n:{u=t[en+24>>2],Ji=t[u+16>>2];r:{if(!Ji)break r;Ne=0;i:{for(;;){a:{if(!t[(Ne<<2)+sr>>2]&&sr||(A=t[u+24>>2]+De(Ne,52)|0,$e=t[A+4>>2],re=$e-1|0,O=t[en+60>>2],G=re+O|0,he=0-!$e|0,Y=he,Q=c0(G,O>>>0>G>>>0?Y+1|0:Y,$e,0),Oe=t[A>>2],H=Oe-1|0,O=t[en+56>>2],A=H+O|0,G=0-!Oe|0,A=c0(A,O>>>0>A>>>0?G+1|0:G,Oe,0),Y=he,O=t[en+52>>2],re=O+re|0,O=c0(re,O>>>0>re>>>0?Y+1|0:Y,$e,0),$e=t[t[t[en+20>>2]>>2]+20>>2]+De(Ne,76)|0,re=t[$e+20>>2]-t[$e+24>>2]|0,re>>>0>31))break a;Y=H,H=t[en+48>>2],he=Y+H|0,H=c0(he,H>>>0>he>>>0?G+1|0:G,Oe,0),G=H-t[$e>>2]|0;s:{if((H>>>0>=G>>>0?G:0)>>>re|0||(G=O-t[$e+4>>2]|0,(O>>>0>=G>>>0?G:0)>>>re|0)||(G=t[$e+8>>2],O=G-A|0,(O>>>0<=G>>>0?O:0)>>>re|0))break s;if(A=t[$e+12>>2],O=A-Q|0,!((O>>>0<=A>>>0?O:0)>>>re|0))break a}t[en+64>>2]=0;break i}if(Ne=Ne+1|0,(Ji|0)==(Ne|0))break}if(!t[en+64>>2])break i;if(!Ji)break r;for(;;){Q=t[t[t[en+20>>2]>>2]+20>>2]+De(kt,76)|0,u=(De(t[Q+24>>2],152)+t[Q+28>>2]|0)-152|0,Y=t[u+4>>2],G=t[u+12>>2],A=t[u>>2],O=t[u+8>>2],u=t[en+68>>2];a:{if(!t[u+(kt<<2)>>2]&&u)break a;H=G-Y|0,O=O-A|0;s:{if((G|0)==(Y|0)||(N0(H,0,O,0),!Gi))break s;_i=0,vt(M,1,4933,0);break t}if(u=De(O,H),u>>>0>=1073741824){_i=0,vt(M,1,4933,0);break t}O=u<<2,t[Q+44>>2]=O;s:{o:{u:{l:{if(u=t[Q+36>>2],u){if(O>>>0<=ln[Q+48>>2])break a;if(t[Q+40>>2])break l}O=Jo(O),t[Q+36>>2]=O,u=t[Q+44>>2];h:{if(O){Cn=u;break h}if(Cn=0,u)break u}t[Q+48>>2]=Cn,Ne=Q+40|0;break s}if(Ne=Q+40|0,Gt(u),u=Jo(t[Q+44>>2]),t[Q+36>>2]=u,u)break o;t[Q+48>>2]=0,t[Q+44>>2]=0,t[Q+40>>2]=0}_i=0,vt(M,1,4933,0);break t}t[Q+48>>2]=t[Q+44>>2]}t[Ne>>2]=1}if(kt=kt+1|0,u=t[en+24>>2],!(kt>>>0>2]))break}break r}if(!Ji)break r;for(bn=t[u+24>>2],gr=t[t[t[en+20>>2]>>2]+20>>2],O=0;;){i:{if(!t[(O<<2)+sr>>2]&&sr)break i;if(A=gr+De(O,76)|0,re=t[A>>2],H=bn+De(O,52)|0,$e=t[H>>2],he=$e-1|0,G=t[en+48>>2],Oe=he+G|0,Q=0-!$e|0,Y=Q,G=c0(Oe,G>>>0>Oe>>>0?Y+1|0:Y,$e,0),_e=G>>>0>>0?re:G,t[A+56>>2]=_e,re=t[H+4>>2],H=re-1|0,Oe=t[en+52>>2],Cn=H+Oe|0,G=0-!re|0,me=t[A+4>>2],Y=c0(Cn,Oe>>>0>Cn>>>0?G+1|0:G,re,0),Oe=Y>>>0>>0?me:Y,t[A+60>>2]=Oe,Y=Q,me=t[A+8>>2],Q=he,he=t[en+56>>2],Cn=Q+he|0,Y=c0(Cn,he>>>0>Cn>>>0?Y+1|0:Y,$e,0),$e=Y>>>0>me>>>0?me:Y,t[A+64>>2]=$e,Y=t[A+12>>2],Q=H,H=t[en+60>>2],Q=Q+H|0,G=c0(Q,H>>>0>Q>>>0?G+1|0:G,re,0),me=G>>>0>Y>>>0?Y:G,t[A+68>>2]=me,me>>>0>>0|_e>>>0>$e>>>0)break n;if(re=t[A+20>>2],!re)break i;for(Yt=t[A+28>>2],he=_e,Cn=0,_e=0,Q=0;H=Yt+De(_e,152)|0,G=H,Ne=re+(Cn^-1)|0,A=Ne&31,(Ne&63)>>>0>=32?(Y=-1<>>32-A,A=-1<>>0>>0?A+1|0:A,Rn=Ne&31,t[Di+148>>2]=(Ne&63)>>>0>=32?Y>>>Rn|0:((1<>>Rn,G=$e+Qr|0,Y=G>>>0<$e>>>0?A+1|0:A,Rn=Ne&31,t[H+144>>2]=(Ne&63)>>>0>=32?Y>>>Rn|0:((1<>>Rn,Y=Oe+Qr|0,G=Y>>>0>>0?A+1|0:A,Rn=Ne&31,t[H+140>>2]=(Ne&63)>>>0>=32?G>>>Rn|0:((1<>>Rn,Y=A,A=he+Qr|0,Y=A>>>0>>0?Y+1|0:Y,G=Ne&31,t[H+136>>2]=(Ne&63)>>>0>=32?Y>>>G|0:((1<>>G,Cn=Cn+1|0,Y=Q,A=_e+1|0,Y=A?Y:Y+1|0,_e=A,Q=Y,!!((re|0)!=(A|0)|Y););}if(O=O+1|0,(Ji|0)==(O|0))break}}if(_i=0,t[zl+8>>2]=0,Bi=q5(u,t[en+28>>2]),!Bi)break t;qo=t[t[en+20>>2]>>2],Tn=Nt-144|0,Nt=Tn,fo=t[en+36>>2],u=De(fo,5644),Y=t[Bi+4>>2],s0=u+t[Y+76>>2]|0,Yt=t[s0+420>>2],Oe=0,re=0,he=0,Zr=Nt-32|0,Nt=Zr,U0=t[Y+76>>2],Ne=U0+u|0,Qr=t[Ne+420>>2],Di=t[Bi>>2],H=Di,ji=t[H+16>>2],Q=si(De(ji,528));r:{if(!Q)break r;A=si(ji<<2);i:{if(!A){A=Q;break i}if(u=ju(H,t[Y+76>>2],fo,M),u){a:{if(!ji)break a;if(O=Q,ji>>>0>=8)for(G=ji&-8;$e=Ze<<2,t[$e+A>>2]=O,t[($e|4)+A>>2]=O+528,t[($e|8)+A>>2]=O+1056,t[($e|12)+A>>2]=O+1584,t[($e|16)+A>>2]=O+2112,t[($e|20)+A>>2]=O+2640,t[($e|24)+A>>2]=O+3168,t[($e|28)+A>>2]=O+3696,Ze=Ze+8|0,O=O+4224|0,Oe=Oe+8|0,(G|0)!=(Oe|0););if(G=ji&7,!G)break a;for(;t[(Ze<<2)+A>>2]=O,Ze=Ze+1|0,O=O+528|0,re=re+1|0,(G|0)!=(re|0););}re=Qr+1|0,Gh(H,Y,fo,Zr+20|0,Zr+16|0,Zr+12|0,Zr+8|0,Zr+4|0,Zr,Zr+24|0,Zr+28|0,A),ss=t[Zr+28>>2],Ro=t[Zr+24>>2],t[u+4>>2]=0,bn=U0+De(fo,5644)|0,G=t[bn+8>>2]+1|0,gr=De(ji,Ro),Ji=De(gr,ss),N0(G,0,Ji,0);a:{if(!Gi&&(O=De(G,Ji),t[u+8>>2]=O,O=oi(O,2),t[u+4>>2]=O,O))break a;if(Gt(Q),Gt(A),O=t[u+4>>2],O&&(Gt(O),t[u+4>>2]=0),!re){A=u;break i}for(G=0,Oe=u;;){if(O=t[Oe+200>>2],O){if(Rt=0,Ze=t[Oe+196>>2],Ze){for(;A=t[O+12>>2],A&&(Gt(A),t[O+12>>2]=0,Ze=t[Oe+196>>2]),O=O+16|0,Rt=Rt+1|0,Ze>>>0>Rt>>>0;);O=t[Oe+200>>2]}Gt(O),t[Oe+200>>2]=0}if(Oe=Oe+240|0,O=(G|0)==(Qr|0),G=G+1|0,!!O)break}A=u;break i}if(H=t[H+24>>2],Cn=t[Zr+20>>2],t[u+204>>2]=Cn,_e=t[Zr+12>>2],t[u+208>>2]=_e,me=t[Zr+16>>2],t[u+212>>2]=me,$e=t[Zr+8>>2],t[u+216>>2]=$e,t[u+12>>2]=Ji,t[u+16>>2]=gr,t[u+20>>2]=Ro,he=1,t[u+24>>2]=1,ji)for(Oe=t[u+200>>2],G=H;;){O=t[(Dr<<2)+A>>2],t[Oe>>2]=t[G>>2],t[Oe+4>>2]=t[G+4>>2],Rn=t[Oe+8>>2];a:{if(!Rn)break a;if(Rt=t[Oe+12>>2],(Rn|0)!=1)for(Y=Rn&-2,Ze=0;t[Rt>>2]=t[O>>2],t[Rt+4>>2]=t[O+4>>2],t[Rt+8>>2]=t[O+8>>2],t[Rt+12>>2]=t[O+12>>2],t[Rt+16>>2]=t[O+16>>2],t[Rt+20>>2]=t[O+20>>2],t[Rt+24>>2]=t[O+24>>2],t[Rt+28>>2]=t[O+28>>2],Rt=Rt+32|0,O=O+32|0,Ze=Ze+2|0,(Y|0)!=(Ze|0););if(!(Rn&1))break a;t[Rt>>2]=t[O>>2],t[Rt+4>>2]=t[O+4>>2],t[Rt+8>>2]=t[O+8>>2],t[Rt+12>>2]=t[O+12>>2]}if(G=G+52|0,Oe=Oe+16|0,Dr=Dr+1|0,(ji|0)==(Dr|0))break}if(re>>>0>1)for(re=u;;){if(t[re+456>>2]=$e,t[re+452>>2]=me,t[re+448>>2]=_e,t[re+444>>2]=Cn,t[re+264>>2]=1,t[re+260>>2]=Ro,t[re+256>>2]=gr,t[re+252>>2]=Ji,ji)for(Oe=t[re+440>>2],Dr=0,G=H;;){O=t[(Dr<<2)+A>>2],t[Oe>>2]=t[G>>2],t[Oe+4>>2]=t[G+4>>2],Rn=t[Oe+8>>2];a:{if(!Rn)break a;if(Rt=t[Oe+12>>2],(Rn|0)!=1)for(Y=Rn&-2,Ze=0;t[Rt>>2]=t[O>>2],t[Rt+4>>2]=t[O+4>>2],t[Rt+8>>2]=t[O+8>>2],t[Rt+12>>2]=t[O+12>>2],t[Rt+16>>2]=t[O+16>>2],t[Rt+20>>2]=t[O+20>>2],t[Rt+24>>2]=t[O+24>>2],t[Rt+28>>2]=t[O+28>>2],Rt=Rt+32|0,O=O+32|0,Ze=Ze+2|0,(Y|0)!=(Ze|0););if(!(Rn&1))break a;t[Rt>>2]=t[O>>2],t[Rt+4>>2]=t[O+4>>2],t[Rt+8>>2]=t[O+8>>2],t[Rt+12>>2]=t[O+12>>2]}if(G=G+52|0,Oe=Oe+16|0,Dr=Dr+1|0,(ji|0)==(Dr|0))break}if(O=t[re+8>>2],t[re+244>>2]=t[re+4>>2],t[re+248>>2]=O,O=(he|0)!=(Qr|0),re=re+240|0,he=he+1|0,!O)break}Gt(Q),Gt(A),Q=t[Ne+420>>2];a:{if(xe[(U0+De(fo,5644)|0)+5640|0]&4){if((Q|0)==-1)break a;for(Rt=(U0+De(fo,5644)|0)+424|0,G=t[bn+8>>2],Ze=0,O=u;A=t[Rt+36>>2],t[O+44>>2]=1,t[O+84>>2]=A,t[O+48>>2]=t[Rt>>2],A=t[Rt+4>>2],t[O+68>>2]=0,t[O+72>>2]=0,t[O+52>>2]=A,t[O+60>>2]=t[Rt+12>>2],t[O- -64>>2]=t[Rt+16>>2],A=t[Rt+8>>2],t[O+76>>2]=Ro,t[O+56>>2]=A>>>0>>0?A:G,Rt=Rt+148|0,O=O+240|0,A=(Q|0)==(Ze|0),Ze=Ze+1|0,!A;);break a}if((Q|0)==-1)break a;if(A=Q+1|0,G=A&1,Y=t[(U0+De(fo,5644)|0)+4>>2],H=t[bn+8>>2],O=u,Q)for(A=A&-2,re=0;t[O+44>>2]=1,t[O+48>>2]=0,t[O+68>>2]=0,t[O+72>>2]=0,t[O+52>>2]=0,t[O+84>>2]=Y,t[O+60>>2]=ss,t[O- -64>>2]=t[O+196>>2],t[O+324>>2]=Y,t[O+76>>2]=Ro,t[O+56>>2]=H,t[O+308>>2]=0,t[O+312>>2]=0,t[O+292>>2]=0,t[O+284>>2]=1,t[O+288>>2]=0,t[O+300>>2]=ss,t[O+296>>2]=H,t[O+316>>2]=Ro,t[O+304>>2]=t[O+436>>2],O=O+480|0,re=re+2|0,(A|0)!=(re|0););if(!G)break a;t[O+44>>2]=1,t[O+48>>2]=0,t[O+68>>2]=0,t[O+72>>2]=0,t[O+52>>2]=0,t[O+84>>2]=Y,t[O+60>>2]=ss,t[O- -64>>2]=t[O+196>>2],t[O+76>>2]=Ro,t[O+56>>2]=H}he=u;break r}Gt(Q)}Gt(A)}Nt=Zr+32|0,H=he;r:{i:{if(!H)break i;bn=Yt+1|0,he=un,Q=H;a:{s:{for(;;){if(t[Q+84>>2]==-1||(u=si(t[Di+16>>2]<<2),!u))break a;if(Qr=pi(u,1,t[Di+16>>2]<<2),du(Q))for(;;){o:{u:{if(ln[Q+40>>2]>=ln[s0+12>>2]||(u=t[Q+32>>2],O=t[qo+20>>2]+De(t[Q+28>>2],76)|0,u>>>0>=ln[O+24>>2])||(O=t[O+28>>2]+De(u,152)|0,!t[O+24>>2]))break u;for(Ne=0;;){if(u=O+De(Ne,36)|0,A=t[u+48>>2]+De(t[Q+36>>2],40)|0,!Gr(en,t[Q+28>>2],t[Q+32>>2],t[u+44>>2],t[A>>2],t[A+4>>2],t[A+8>>2],t[A+12>>2])){if(Ne=Ne+1|0,Ne>>>0>2])continue;break u}break}if(t[Qr+(t[Q+28>>2]<<2)>>2]=0,t[Tn+136>>2]=0,!dl(t[Bi+4>>2],t[qo+20>>2],s0,Q,Tn+140|0,he,Tn+136|0,se,M))break s;if(Ze=t[Tn+136>>2],t[Tn+140>>2]){Rn=0,t[Tn+136>>2]=0,gr=t[(t[qo+20>>2]+De(t[Q+28>>2],76)|0)+28>>2]+De(t[Q+32>>2],152)|0,A=t[gr+24>>2];l:{if(!A)break l;for(Rn=se-Ze|0,Cn=se+he|0,jt=gr+28|0,Oe=0,_e=0,me=he+Ze|0,O=me;;){h:{if(t[jt+8>>2]==t[jt>>2]|t[jt+12>>2]==t[jt+4>>2]||(u=t[jt+20>>2]+De(t[Q+36>>2],40)|0,$e=De(t[u+20>>2],t[u+16>>2]),!$e))break h;for(Ne=t[u+24>>2],er=0;;){if(_e&&(t[Ne+52>>2]=0),G=t[Ne+36>>2],G){A=t[Ne>>2],Y=t[Ne+40>>2];f:{if(Y){if(u=De(Y,24)+A|0,A=u-24|0,t[A+4>>2]!=t[A+12>>2])break f;A=u,u=Y+1|0}else u=1;t[Ne+40>>2]=u}f:{for(;;){u=t[A+20>>2];p:{if(u>>>0>(O^-1)>>>0|Cn>>>0>>0|_e){if(re=t[Q+28>>2],Y=t[Q+32>>2],G=t[Q+36>>2],t[t[Bi+4>>2]+104>>2]){t[Tn+120>>2]=re,t[Tn+116>>2]=Y,t[Tn+112>>2]=Oe,t[Tn+108>>2]=G,t[Tn+104>>2]=er,t[Tn+100>>2]=Rn,t[Tn+96>>2]=u,vt(M,1,26216,Tn+96|0);break s}if(t[Tn+88>>2]=re,t[Tn+84>>2]=Y,t[Tn+80>>2]=Oe,t[Tn+76>>2]=G,t[Tn+72>>2]=er,t[Tn+68>>2]=Rn,t[Tn+64>>2]=u,vt(M,2,26216,Tn- -64|0),t[Ne+52>>2]=0,Y=t[A+16>>2],t[A+4>>2]=Y+t[A+4>>2],u=t[Ne+36>>2],G=u-Y|0,t[Ne+36>>2]=G,_e=1,(u|0)==(Y|0))break p;A=t[Ne+40>>2]+1|0,t[Ne+40>>2]=A;break f}_e=t[Ne+52>>2];c:{if((_e|0)!=t[Ne+56>>2]){Rt=t[Ne+4>>2];break c}if(u=_e<<1|1,Rt=Wi(t[Ne+4>>2],u<<3),!Rt){vt(M,1,1035,0);break s}t[Ne+56>>2]=u,t[Ne+4>>2]=Rt,G=t[Ne+36>>2],_e=t[Ne+52>>2],u=t[A+20>>2]}Y=(_e<<3)+Rt|0,t[Y+4>>2]=u,t[Y>>2]=O,t[Ne+52>>2]=_e+1,t[A>>2]=t[A>>2]+u,Yt=t[A+16>>2],re=Yt+t[A+4>>2]|0,t[A+4>>2]=re,Y=G-Yt|0,t[Ne+36>>2]=Y,t[A+8>>2]=re,O=u+O|0,_e=0,(G|0)!=(Yt|0)&&(t[Ne+40>>2]=t[Ne+40>>2]+1,A=A+24|0),G=Y}if(!G)break}A=t[Ne+40>>2]}t[Ne+44>>2]=A}if(Ne=Ne- -64|0,er=er+1|0,($e|0)==(er|0))break}A=t[gr+24>>2]}if(jt=jt+36|0,Oe=Oe+1|0,!(Oe>>>0>>0))break}if(_e)break l;Rn=O-me|0}Ze=Ze+Rn|0}A=t[Q+28>>2],u=t[Di+24>>2]+De(A,52)|0,O=t[u+36>>2],G=u,u=t[Q+32>>2],t[G+36>>2]=u>>>0>O>>>0?u:O;break o}if(t[Tn+136>>2]=0,!dl(t[Bi+4>>2],t[qo+20>>2],s0,Q,Tn+140|0,he,Tn+136|0,se,M))break s;if(Ze=t[Tn+136>>2],t[Tn+140>>2]){$e=t[(t[qo+20>>2]+De(t[Q+28>>2],76)|0)+28>>2]+De(t[Q+32>>2],152)|0,A=t[$e+24>>2];u:{if(!A){O=0;break u}for(_e=se-Ze|0,Oe=$e+28|0,O=0,er=0;;){l:{if(t[Oe+8>>2]==t[Oe>>2]|t[Oe+12>>2]==t[Oe+4>>2]||(u=t[Oe+20>>2]+De(t[Q+36>>2],40)|0,Y=De(t[u+20>>2],t[u+16>>2]),!Y))break l;for(Ne=t[u+24>>2],Rt=0;;){h:{if(G=t[Ne+36>>2],!G)break h;A=t[Ne>>2];f:{p:{if(re=t[Ne+40>>2],re){if(A=De(re,24)+A|0,u=A-24|0,t[u+4>>2]!=t[u+12>>2]){A=u;break p}rr=re+1|0}else rr=1;u=0;break f}u=1}for(;;){if(!u){t[Ne+40>>2]=rr,u=1;continue}f:{p:{if(me=t[A+20>>2],u=me+O|0,!(u>>>0>=me>>>0&u>>>0<=_e>>>0)){if(re=t[Q+28>>2],G=t[Q+32>>2],u=t[Q+36>>2],t[t[Bi+4>>2]+104>>2])break p;t[Tn+24>>2]=re,t[Tn+20>>2]=G,t[Tn+16>>2]=er,t[Tn+12>>2]=u,t[Tn+8>>2]=Rt,t[Tn+4>>2]=_e,t[Tn>>2]=me,vt(M,2,26131,Tn),G=t[Ne+36>>2],u=t[A+20>>2]+O|0}if(re=t[A+16>>2],t[A+4>>2]=re+t[A+4>>2],O=G-re|0,t[Ne+36>>2]=O,(G|0)!=(re|0))break f;O=u;break h}t[Tn+56>>2]=re,t[Tn+52>>2]=G,t[Tn+48>>2]=er,t[Tn+44>>2]=u,t[Tn+40>>2]=Rt,t[Tn+36>>2]=_e,t[Tn+32>>2]=me,vt(M,1,26131,Tn+32|0);break s}A=A+24|0,rr=t[Ne+40>>2]+1|0,G=O,O=u,u=0}}if(Ne=Ne- -64|0,Rt=Rt+1|0,(Y|0)==(Rt|0))break}A=t[$e+24>>2]}if(Oe=Oe+36|0,er=er+1|0,!(er>>>0>>0))break}}Ze=O+Ze|0}A=t[Q+28>>2]}o:{if(!t[Qr+(A<<2)>>2]||(u=t[Di+24>>2]+De(A,52)|0,t[u+36>>2]))break o;t[u+36>>2]=t[(t[qo+20>>2]+De(A,76)|0)+24>>2]-1}if(se=se-Ze|0,he=he+Ze|0,!du(Q))break}if(Gt(Qr),Q=Q+240|0,$r=$r+1|0,!($r>>>0<=ln[s0+420>>2]))break}f(H,bn),t[zl+8>>2]=he-un,u=1;break r}f(H,bn),Gt(Qr);break i}f(H,bn)}u=0}if(Nt=Tn+144|0,C(Bi),!u)break t;Ne=t[t[en+32>>2]+5584>>2],$e=t[t[en+20>>2]>>2],Cn=t[$e+20>>2],t[zl+12>>2]=1,_e=Vk(),kt=0,u=0,O=t[en+32>>2],u=t[O+12>>2]==t[O+8>>2]?t[Ne+16>>2]>>>4&1:u,_i=t[$e+16>>2];r:{if(!_i)break r;for(;;){if(O=t[en+68>>2],!(!t[O+(kt<<2)>>2]&&O)){he=zl+12|0,se=0,G=t[Cn+24>>2];i:{if(!G)break i;for(Oe=t[en+44>>2];;){if(un=t[Cn+28>>2]+De(se,152)|0,Q=t[un+24>>2],Q){for(G=t[un+20>>2],H=t[un+16>>2],re=0;;){if(De(H,G)){for(me=un+De(re,36)|0,Y=me+28|0,Rt=0;;){Yt=t[me+48>>2]+De(Rt,40)|0,O=Gr(en,t[Cn+16>>2],se,t[me+44>>2],t[Yt>>2],t[Yt+4>>2],t[Yt+8>>2],t[Yt+12>>2]),H=t[Yt+20>>2],Q=t[Yt+16>>2],A=De(H,Q);a:{if(O){if(!A)break a;for(Q=0;;){A=t[Yt+24>>2]+(Q<<6)|0;s:{if(!Gr(en,t[Cn+16>>2],se,t[me+44>>2],t[A+8>>2],t[A+12>>2],t[A+16>>2],t[A+20>>2])){if(O=t[A+60>>2],!O)break s;Gt(O),t[A+60>>2]=0;break s}if(!t[en+64>>2]&&t[A+60>>2]|t[A+16>>2]==t[A+8>>2]|t[A+20>>2]==t[A+12>>2])break s;if(G=oi(1,44),!G){t[zl+12>>2]=0;break i}if(O=t[en+64>>2],t[G+36>>2]=_e,t[G+28>>2]=he,t[G+20>>2]=Ne,t[G+16>>2]=Cn,t[G+12>>2]=Y,t[G+8>>2]=A,t[G+4>>2]=se,t[G>>2]=O,t[G+40>>2]=u,t[G+32>>2]=M,t[G+24>>2]=t[Oe+4>>2]>1,Be(Oe,248,G),!t[zl+12>>2])break i}if(Q=Q+1|0,!(Q>>>0>2],t[Yt+16>>2])>>>0))break}break a}if(!A)break a;for(G=0;A=t[Yt+24>>2]+(G<<6)|0,O=t[A+60>>2],O&&(Gt(O),t[A+60>>2]=0,Q=t[Yt+16>>2],H=t[Yt+20>>2]),G=G+1|0,G>>>0>>0;);}if(Rt=Rt+1|0,H=t[un+16>>2],G=t[un+20>>2],!(Rt>>>0>>0))break}Q=t[un+24>>2]}if(re=re+1|0,!(re>>>0>>0))break}G=t[Cn+24>>2]}if(se=se+1|0,!(se>>>0>>0))break}}if(!t[zl+12>>2])break r;_i=t[$e+16>>2]}if(Ne=Ne+1080|0,Cn=Cn+76|0,kt=kt+1|0,!(_i>>>0>kt>>>0))break}}if(_i=0,Za(t[en+44>>2]),_e&&C(_e),!t[zl+12>>2])break t;r:{if(t[en+64>>2]||(Cn=t[en+24>>2],!t[Cn+16>>2]))break r;for(Ne=0;;){Q=t[t[t[en+20>>2]>>2]+20>>2]+De(Ne,76)|0,u=t[Q+28>>2]+De(t[(t[Cn+24>>2]+De(Ne,52)|0)+36>>2],152)|0,H=t[u+136>>2],G=t[u+144>>2],A=t[u+140>>2],O=t[u+148>>2],Gt(t[Q+52>>2]),t[Q+52>>2]=0;i:{if(u=t[en+68>>2],(H|0)==(G|0)|(t[u+(Ne<<2)>>2]?0:u)|(O|0)==(A|0))break i;if(A=O-A|0,O=G-H|0,N0(A,0,O,0),Gi){vt(M,1,4933,0);break t}if(u=De(O,A),u>>>0>=1073741824){vt(M,1,4933,0);break t}if(u=Jo(u<<2),t[Q+52>>2]=u,u)break i;vt(M,1,4933,0);break t}if(Ne=Ne+1|0,Cn=t[en+24>>2],!(Ne>>>0>2]))break}}if(xa=t[t[en+20>>2]>>2],t[xa+16>>2]){for(kt=t[xa+20>>2],Ne=t[t[en+32>>2]+5584>>2],Cn=t[t[en+24>>2]+24>>2],sr=0;;){r:{if(u=t[en+68>>2],!t[u+(sr<<2)>>2]&&u)break r;if(u=t[Cn+36>>2]+1|0,t[Ne+20>>2]==1){Xo=u,O=0,q0=Nt-32|0,Nt=q0;i:{a:{if(t[en+64>>2]){if(u=1,(Xo|0)==1)break i;H=t[kt+28>>2],Ze=Xo-1|0,he=Ze&1,bn=t[en+44>>2];s:{if((Xo|0)==2){Q=0,A=H;break s}for(Y=Ze&-2,Q=0,A=H,u=0;O=t[A+160>>2]-t[A+152>>2]|0,G=O>>>0>>0?Q:O,O=t[A+164>>2]-t[A+156>>2]|0,G=O>>>0>>0?G:O,O=t[A+312>>2]-t[A+304>>2]|0,G=O>>>0>>0?G:O,O=t[A+316>>2]-t[A+308>>2]|0,Q=O>>>0>>0?G:O,A=A+304|0,u=u+2|0,(Y|0)!=(u|0););}if(he&&(u=t[A+160>>2]-t[A+152>>2]|0,O=u>>>0>>0?Q:u,u=t[A+164>>2]-t[A+156>>2]|0,Q=u>>>0>>0?O:u),u=0,Q>>>0>134217727||(O=(De(t[kt+24>>2],152)+H|0)-152|0,re=t[O>>2],he=t[O+8>>2],Y=t[H+4>>2],O=t[H+12>>2],G=t[H>>2],A=t[H+8>>2],Yt=t[bn+4>>2],me=Q<<5,gr=Gf(me),t[q0+16>>2]=gr,!gr))break i;if(t[q0>>2]=gr,Ze)for(un=he-re|0,O=O-Y|0,G=A-G|0;;){_e=t[kt+36>>2],Y=O,t[q0+8>>2]=O,u=G,t[q0+24>>2]=u,he=t[H+156>>2],Q=t[H+164>>2],A=t[H+160>>2],O=t[H+152>>2],t[q0+28>>2]=(O|0)%2,G=A-O|0,t[q0+20>>2]=G-u,re=(Yt|0)<2,O=Q-he|0;s:{if(!(!re&O>>>0>1)){if(A=0,!O)break s;for(;I4(q0+16|0,_e+(De(A,un)<<2)|0),A=A+1|0,(A|0)!=(O|0););break s}for($e=O>>>0>>0?O:Yt,he=$e-1|0,Oe=(O>>>0)/($e>>>0)|0,Q=0;;){if(A=si(36),!A)break a;if(u=t[q0+20>>2],t[A>>2]=t[q0+16>>2],t[A+4>>2]=u,u=t[q0+28>>2],t[A+8>>2]=t[q0+24>>2],t[A+12>>2]=u,t[A+28>>2]=De(Q,Oe),t[A+24>>2]=_e,t[A+20>>2]=un,t[A+16>>2]=G,u=(Q|0)==(he|0),Q=Q+1|0,t[A+32>>2]=u?O:De(Oe,Q),u=Gf(me),t[A>>2]=u,!u){u=0,Za(bn),Gt(A),Gt(gr);break i}if(Be(bn,113,A),(Q|0)==($e|0))break}Za(bn)}t[q0+4>>2]=O-Y,t[q0+12>>2]=t[H+156>>2]%2;s:{if(!(!re&G>>>0>1)){if(Q=8,A=0,G>>>0>=8)for(;Ot(q0,_e+(A<<2)|0,un,8),A=Q,Q=A+8|0,Q>>>0<=G>>>0;);if(A>>>0>=G>>>0)break s;Ot(q0,_e+(A<<2)|0,un,G-A|0);break s}for(re=G>>>0>>0?G:Yt,Y=re-1|0,he=(G>>>0)/(re>>>0)|0,Q=0;;){if(A=si(36),!A)break a;if(u=t[q0+4>>2],t[A>>2]=t[q0>>2],t[A+4>>2]=u,u=t[q0+12>>2],t[A+8>>2]=t[q0+8>>2],t[A+12>>2]=u,t[A+28>>2]=De(Q,he),t[A+24>>2]=_e,t[A+20>>2]=un,t[A+16>>2]=O,u=(Y|0)==(Q|0),Q=Q+1|0,t[A+32>>2]=u?G:De(he,Q),u=Gf(me),t[A>>2]=u,!u){u=0,Za(bn),Gt(A),Gt(gr);break i}if(Be(bn,114,A),(Q|0)==(re|0))break}Za(bn)}if(H=H+152|0,Ze=Ze-1|0,!Ze)break}u=1,Gt(gr);break i}if(u=1,$e=t[kt+28>>2],Z5=Xo-1|0,q4=$e+De(Z5,152)|0,t[q4>>2]==t[q4+8>>2]|t[q4+4>>2]==t[q4+12>>2])break i;if(Oe=t[$e+4>>2],re=t[$e+12>>2],he=t[$e>>2],Q=t[$e+8>>2],bn=t[kt+68>>2],gr=t[kt+64>>2],Yt=t[kt+60>>2],un=t[kt+56>>2],wu=E4(kt,Xo),!wu){u=0;break i}s:{o:{u:{l:{h:{if((Xo|0)!=1){if(Y=Z5&1,(Xo|0)!=2)break h;u=0,A=$e;break l}break u}for(H=Z5&-2,u=0,A=$e;G=t[A+160>>2]-t[A+152>>2]|0,G=u>>>0>G>>>0?u:G,u=t[A+164>>2]-t[A+156>>2]|0,G=u>>>0>>0?G:u,u=t[A+312>>2]-t[A+304>>2]|0,G=u>>>0>>0?G:u,u=t[A+316>>2]-t[A+308>>2]|0,u=u>>>0>>0?G:u,A=A+304|0,O=O+2|0,(H|0)!=(O|0););}if(Y&&(O=t[A+160>>2]-t[A+152>>2]|0,O=u>>>0>O>>>0?u:O,u=t[A+164>>2]-t[A+156>>2]|0,u=u>>>0>>0?O:u),u>>>0>=268435456||(se=Gf(u<<4),!se))break s;l:{if(Xo>>>0<2)break l;Oe=re-Oe|0,_e=Q-he|0,Ro=se+28|0,qo=se+24|0,fo=se+20|0,he=se+4|0,Yp=1,jt=$e;h:for(;;){O=t[jt+156>>2],U1=t[jt+164>>2]-O|0,B1=U1-Oe|0,u=t[jt+152>>2],_r=(u|0)%2|0,Q5=(O|0)%2|0,Tn=t[jt+160>>2]-u|0,gi=Tn-_e|0,A=un,O=A,Ze=Yt,G=Ze,u=gr,re=u,Rn=bn,er=bn,H=t[kt+20>>2];f:{if((H|0)==(Yp|0)||(H=H-Yp|0,G=0,O=0,un&&(u=H&31,(H&63)>>>0>=32?(Y=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,O=H&31,O=(H&63)>>>0>=32?Y>>>O|0:((1<>>O),Yt&&(u=H&31,(H&63)>>>0>=32?(Y=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,A=H&31,G=(H&63)>>>0>=32?Y>>>A|0:((1<>>A),Rn=0,u=0,gr&&(u=H&31,(H&63)>>>0>=32?(Y=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,A=H&31,u=(H&63)>>>0>=32?Y>>>A|0:((1<>>A),bn&&(A=H&31,(H&63)>>>0>=32?(Y=-1<>>32-A,A=-1<>>0>>0?Y+1|0:Y,Q=H&31,Rn=(H&63)>>>0>=32?Y>>>Q|0:((1<>>Q),re=0,A=0,rr=1<>>0>>0&&(A=H&31,(H&63)>>>0>=32?(Y=-1<>>32-A,A=-1<>>0>Q>>>0?Y+1|0:Y,A=Q,Q=H&31,A=(H&63)>>>0>=32?Y>>>Q|0:((1<>>Q),rr>>>0>>0&&(Q=H&31,(H&63)>>>0>=32?(Y=-1<>>32-Q,Q=-1<>>0>re>>>0?Y+1|0:Y,Q=re,re=H&31,re=(H&63)>>>0>=32?Y>>>re|0:((1<>>re),er=0,Ze=0,Yt>>>0>rr>>>0&&(Q=H&31,(H&63)>>>0>=32?(Y=-1<>>32-Q,Q=-1<>>0>me>>>0?Y+1|0:Y,Q=me,me=H&31,Ze=(H&63)>>>0>=32?Y>>>me|0:((1<>>me),bn>>>0<=rr>>>0))break f;Q=H&31,(H&63)>>>0>=32?(Y=-1<>>32-Q,Q=-1<>>0>me>>>0?Y+1|0:Y,Q=me,me=H&31,er=(H&63)>>>0>=32?Y>>>me|0:((1<>>me}if(Y=0,me=t[jt+180>>2],H=re-me|0,H=(H>>>0<=re>>>0?H:0)+2|0,H=0-(H>>>0<2?1:Y)|H,pl=H>>>0>>0?H:gi,re=pl,Q=t[jt+216>>2],H=u-Q|0,u=(u>>>0>=H>>>0?H:0)+2|0,u=0-(u>>>0<2?1:Y)|u,G1=u>>>0<_e>>>0?u:_e,H=(_r?re:G1)<<1,u=(_r?G1:re)<<1|1,X4=u>>>0>>0?H:u,ss=X4>>>0>>0,u=A-me|0,A=u>>>0<=A>>>0?u:0,u=A-2|0,H=u>>>0<=A>>>0?u:0,u=O-Q|0,O=u>>>0<=O>>>0?u:0,u=O-2|0,rr=u>>>0<=O>>>0?u:0,Ji=(_r?H:rr)<<1,Qr=(_r?rr:H)<<1|1,re=Ji>>>0>>0,Y=t[jt+184>>2],u=G-Y|0,O=u>>>0<=G>>>0?u:0,u=O-2|0,me=u>>>0<=O>>>0?u:0,Rt=me,A=t[jt+220>>2],u=Ze-A|0,O=u>>>0<=Ze>>>0?u:0,u=O-2|0,Q=u>>>0<=O>>>0?u:0,s0=Q,u=Rn-Y|0,u=u>>>0<=Rn>>>0?u:0,Y=0,u=u+2|0,u=0-(u>>>0<2?1:Y)|u,P0=u>>>0>>0?u:Oe,U0=P0,u=er-A|0,u=(u>>>0<=er>>>0?u:0)+2|0,u=0-(u>>>0<2?1:Y)|u,Vo=u>>>0>>0?u:B1,Di=Vo,Q5&&(s0=me,U0=Vo,Rt=Q,Di=P0),Jp=ss?X4:Tn,Dr=re?Ji:Qr,Sx=Oe+Vo|0,Tx=Q+Oe|0,U1)for(G=gi<<1,A=G-1|0,O=(rr|0)<(gi|0),Yk=se+((O?rr<<1|1:A)<<2)|0,ji=(_e|0)>(pl|0)?pl:_e-1|0,er=0,Jk=(_e|0)>1|(gi|0)>0,Zk=(Jp|0)!=0&Tn>>>0>X4>>>0,u=_r<<2,Qk=(he-u|0)+(H<<3)|0,Zp=se+(rr<<3)|0,ey=Zp+u|0,Bi=(gi|0)>(G1|0)?G1:gi,ss=rr+1|0,ty=_e+pl|0,e3=H+_e|0,ny=se+(Dr<<2)|0,ry=!_e&(gi|0)==1,$n=se+(Jp<<2)|0,$r=$n-4|0,u=_e<<1,no=u-2|0,Ji=se+(no<<2)|0,Qr=se+(A<<2)|0,Ua=u-1|0,Rn=se+(Ua<<2)|0,ml=G-2|0,Y=se+(ml<<2)|0,Cu=(se+((O?rr:gi)<<3)|0)-4|0;;){f:{if(!(er>>>0>>0&me>>>0<=er>>>0|er>>>0>>0&er>>>0>=Tx>>>0)){Zr=er+1|0;break f}Zk&&(t[$r>>2]=0),Tn>>>0>X4>>>0&&(t[$n>>2]=0),Zr=er+1|0,F1(wu,rr,er,G1,Zr,ey,2,0),F1(wu,e3,er,ty,Zr,Qk,2,0);p:{c:{m:{if(!_r){if(!Jk)break p;if((rr|0)>=(G1|0))break c;g:{d:{if((rr|0)>0){u=t[Cu>>2];break d}if(u=t[he>>2],O=u,(rr|0)<0)break g}O=u,u=t[Yk>>2]}if(t[Zp>>2]=t[Zp>>2]-((u+O|0)+2>>2),u=ss,O=u,G=rr,(u|0)>=(Bi|0))break m;for(;u=se+(O<<3)|0,t[u>>2]=t[u>>2]-((t[(se+(G<<3)|0)+4>>2]+t[u+4>>2]|0)+2>>2),G=O,O=O+1|0,(Bi|0)!=(O|0););u=Bi;break m}g:{if(!ry){if(u=rr,(G1|0)<=(u|0))break g;for(;;){Ze=se+(u<<3)|0,G=t[Ze+4>>2];d:{v:{if((u|0)>=0){A=t[se+(((u|0)<(gi|0)?u<<1:ml)<<2)>>2],u=u+1|0;break v}if(A=t[se>>2],(u|0)!=-1){u=u+1|0,re=se;break d}u=0}if(re=Y,(u|0)>=(gi|0))break d;re=se+(u<<3)|0}if(t[Ze+4>>2]=G-((t[re>>2]+A|0)+2>>2),!((u|0)<(G1|0)))break}break g}t[se>>2]=t[se>>2]/2;break p}if(u=H,(pl|0)<=(u|0))break p;for(;;){re=se+(u<<3)|0,G=t[re>>2];g:{if((u|0)<0){Ze=t[he>>2],O=he;break g}if(A=u<<1,Ze=t[se+(((u|0)<(_e|0)?A|1:Ua)<<2)>>2],O=he,!u||(O=Rn,(u|0)>(_e|0)))break g;O=(se+(A<<2)|0)-4|0}if(t[re>>2]=G+(t[O>>2]+Ze>>1),u=u+1|0,(pl|0)==(u|0))break}break p}if((u|0)>=(G1|0))break c;for(;;){O=se+(u<<3)|0,G=O,A=t[O>>2];m:{g:{if((u|0)>0){Ze=t[(se+(((u|0)<(gi|0)?u:gi)<<3)|0)-4>>2];break g}if(Ze=t[he>>2],O=he,(u|0)<0)break m}if(O=Qr,(u|0)>=(gi|0))break m;O=(se+(u<<3)|0)+4|0}if(t[G>>2]=A-((t[O>>2]+Ze|0)+2>>2),u=u+1|0,(G1|0)==(u|0))break}}if((H|0)>=(pl|0))break p;if(O=H,u=O,(ji|0)>(u|0)){for(;O=se+(u<<3)|0,u=u+1|0,t[O+4>>2]=t[O+4>>2]+(t[se+(u<<3)>>2]+t[O>>2]>>1),(u|0)!=(ji|0););O=ji}if((O|0)>=(pl|0))break p;for(;;){u=Ji,A=O;c:{m:{if((O|0)>=0){G=t[se+(((A|0)<(_e|0)?A<<1:no)<<2)>>2],O=A+1|0;break m}if(G=t[se>>2],(A|0)!=-1){O=A+1|0,u=se;break c}O=0}if((_e|0)<=(O|0))break c;u=se+(O<<3)|0}if(A=se+(A<<3)|0,t[A+4>>2]=t[A+4>>2]+(t[u>>2]+G>>1),!((O|0)<(pl|0)))break}}if(!Jh(wu,Dr,er,Jp,Zr,ny,1,0))break o}if(er=Zr,(U1|0)==(er|0))break}for(jt=jt+152|0,O=U0<<1,u=Di<<1|1,u=u>>>0>>0?O:u,X4=u>>>0>>0?u:U1,u=me<<3,O=B1<<3,iy=O-1|0,G=(me|0)<(B1|0),Zp=se+((G?u|7:iy)<<2)|0,oy=O-2|0,Yk=se+((G?u|6:oy)<<2)|0,sy=O-3|0,Jk=se+((G?u|5:sy)<<2)|0,ay=O-4|0,Zk=se+((G?u|4:ay)<<2)|0,Rn=(Oe|0)>(Vo|0)?Vo:Oe-1|0,u=(B1|0)>0,Qk=u|(Oe|0)>1,t1=se+(me<<5)|0,ey=t1+(Q5<<4)|0,ty=(se+(4-(Q5<<2)<<2)|0)+(Q<<5)|0,A=Oe<<3,pl=A-8|0,t3=se+(((Oe|0)<=0?pl:0)<<2)|0,G1=O-8|0,n3=se+((u?0:G1)<<2)|0,rr=(P0|0)<(B1|0)?P0:B1,_e=me+1|0,O=Rt<<1,u=s0<<1|1,e3=u>>>0>O>>>0?O:u,ny=se+(e3<<4)|0,ry=!Oe&(B1|0)==1,u=se+(Oe<<5)|0,$n=u-20|0,$r=u-24|0,no=u-28|0,Ua=u-4|0,ml=u-8|0,Cu=u-12|0,u=se+(B1<<5)|0,Ze=u-20|0,er=u-24|0,gi=u-28|0,Zr=se+(pl<<2)|0,ji=se+(iy<<2)|0,Bi=se+(oy<<2)|0,Rt=se+(sy<<2)|0,s0=se+(ay<<2)|0,U0=A-4|0,Di=se+(U0<<2)|0,ss=se+(G1<<2)|0,u=se+((G?me:B1)<<5)|0,re=u-4|0,Y=u-8|0,A=u-12|0,Ji=u-16|0;;){f:{p:{c:{m:{if(Qr=Dr,Dr>>>0>>0){if(u=Jp-Qr|0,Dr=Qr+(u>>>0>=4?4:u)|0,F1(wu,Qr,me,Dr,P0,ey,1,8),F1(wu,Qr,Tx,Dr,Sx,ty,1,8),!Q5){if(!Qk)break f;if((me|0)>=(P0|0))break p;g:{if((me|0)>0){u=t[Ji>>2],H=Y,G=A,O=re;break g}if(u=t[se+16>>2],(me|0)<0)break m;H=qo,G=fo,O=Ro}t[t1>>2]=t[t1>>2]-((t[Zk>>2]+u|0)+2>>2),t[t1+4>>2]=t[t1+4>>2]-((t[G>>2]+t[Jk>>2]|0)+2>>2),t[t1+8>>2]=t[t1+8>>2]-((t[H>>2]+t[Yk>>2]|0)+2>>2),u=t[Zp>>2],O=t[O>>2];break c}if(ry){t[se>>2]=t[se>>2]/2,t[se+4>>2]=t[se+4>>2]/2,t[se+8>>2]=t[se+8>>2]/2,t[se+12>>2]=t[se+12>>2]/2;break f}if(u=me,(P0|0)>(u|0))for(;;){li=u<<3,O=li|4;g:{d:{if((u|0)<0){if(H=se+(O<<2)|0,G=t[H>>2],O=t[se>>2],(u|0)==-1)break d;t[H>>2]=G-((O<<1)+2>>2),G=li<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]-((t[se+4>>2]<<1)+2>>2),O=se+(G|24)|0,t[O>>2]=t[O>>2]-((t[se+8>>2]<<1)+2>>2),H=(t[se+12>>2]<<1)+2|0,O=se+(G|28)|0;break g}if(H=(u|0)<(B1|0)?li:G1,G=u+1|0,(G|0)>=(B1|0)){O=se+(O<<2)|0,H=H<<2,t[O>>2]=t[O>>2]-((t[H+se>>2]+t[ss>>2]|0)+2>>2),G=li<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]-((t[se+(H|4)>>2]+t[gi>>2]|0)+2>>2),O=se+(G|24)|0,t[O>>2]=t[O>>2]-((t[se+(H|8)>>2]+t[er>>2]|0)+2>>2),H=(t[se+(H|12)>>2]+t[Ze>>2]|0)+2|0,O=se+(G|28)|0;break g}O=se+(O<<2)|0,_r=H<<2,H=se+(G<<5)|0,t[O>>2]=t[O>>2]-((t[_r+se>>2]+t[H>>2]|0)+2>>2),G=li<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]-((t[se+(_r|4)>>2]+t[H+4>>2]|0)+2>>2),O=se+(G|24)|0,t[O>>2]=t[O>>2]-((t[se+(_r|8)>>2]+t[H+8>>2]|0)+2>>2),H=(t[se+(_r|12)>>2]+t[H+12>>2]|0)+2|0,O=se+(G|28)|0;break g}t[H>>2]=G-((O+t[n3>>2]|0)+2>>2),G=li<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]-((t[se+4>>2]+t[n3+4>>2]|0)+2>>2),O=se+(G|24)|0,t[O>>2]=t[O>>2]-((t[se+8>>2]+t[n3+8>>2]|0)+2>>2),H=(t[se+12>>2]+t[n3+12>>2]|0)+2|0,O=se+(G|28)|0}if(t[O>>2]=t[O>>2]-(H>>2),u=u+1|0,(P0|0)==(u|0))break}if(u=Q,(Vo|0)<=(u|0))break f;for(;;){O=u<<3;g:{if((u|0)<0){G=O<<2,O=G+se|0,t[O>>2]=t[O>>2]+(t[se+16>>2]<<1>>1),O=se+(G|4)|0,t[O>>2]=t[O>>2]+(t[se+20>>2]<<1>>1),O=se+(G|8)|0,t[O>>2]=t[O>>2]+(t[se+24>>2]<<1>>1),H=t[se+28>>2]<<1,O=se+(G|12)|0;break g}if(li=((u|0)<(Oe|0)?O|4:U0)<<2,G=t[li+se>>2],_r=O<<2,H=_r+se|0,O=t[H>>2],!u){t[H>>2]=O+(G+t[se+16>>2]>>1),O=se+(_r|4)|0,t[O>>2]=t[O>>2]+(t[se+20>>2]+t[se+(li|4)>>2]>>1),O=se+(_r|8)|0,t[O>>2]=t[O>>2]+(t[se+24>>2]+t[se+(li|8)>>2]>>1),H=t[se+28>>2]+t[se+(li|12)>>2]|0,O=se+(_r|12)|0;break g}if((u|0)<=(Oe|0)){t[H>>2]=O+(G+t[H-16>>2]>>1),O=se+(_r|4)|0,t[O>>2]=t[O>>2]+(t[H-12>>2]+t[se+(li|4)>>2]>>1),O=se+(_r|8)|0,t[O>>2]=t[O>>2]+(t[H-8>>2]+t[se+(li|8)>>2]>>1),H=t[H-4>>2]+t[se+(li|12)>>2]|0,O=se+(_r|12)|0;break g}t[H>>2]=O+(G+t[Di>>2]>>1),O=se+(_r|4)|0,t[O>>2]=t[O>>2]+(t[Cu>>2]+t[se+(li|4)>>2]>>1),O=se+(_r|8)|0,t[O>>2]=t[O>>2]+(t[ml>>2]+t[se+(li|8)>>2]>>1),H=t[Ua>>2]+t[se+(li|12)>>2]|0,O=se+(_r|12)|0}if(t[O>>2]=t[O>>2]+(H>>1),u=u+1|0,(Vo|0)==(u|0))break}break f}if(_e=Tn,Oe=U1,Yp=Yp+1|0,(Xo|0)!=(Yp|0))continue h;break l}t[t1>>2]=t[t1>>2]-((u<<1)+2>>2),t[t1+4>>2]=t[t1+4>>2]-((t[fo>>2]<<1)+2>>2),t[t1+8>>2]=t[t1+8>>2]-((t[qo>>2]<<1)+2>>2),u=t[Ro>>2],O=u}if(t[t1+12>>2]=t[t1+12>>2]-((u+O|0)+2>>2),G=me,O=_e,u=O,(rr|0)>(u|0)){for(;H=se+(O<<5)|0,u=se+(G<<5)|0,t[H>>2]=t[H>>2]-((t[u+16>>2]+t[H+16>>2]|0)+2>>2),t[H+4>>2]=t[H+4>>2]-((t[u+20>>2]+t[H+20>>2]|0)+2>>2),t[H+8>>2]=t[H+8>>2]-((t[u+24>>2]+t[H+24>>2]|0)+2>>2),t[H+12>>2]=t[H+12>>2]-((t[u+28>>2]+t[H+28>>2]|0)+2>>2),G=O,O=O+1|0,(rr|0)!=(O|0););u=rr}if((u|0)>=(P0|0))break p;for(;;){Ba=u<<3,li=(u|0)<(B1|0);c:{if((u|0)<=0){if(H=t[se+16>>2],(u|0)>=0){G=Ba<<2,O=G+se|0,t[O>>2]=t[O>>2]-((H+t[se+((li?Ba|4:ay)<<2)>>2]|0)+2>>2),O=se+(G|4)|0,t[O>>2]=t[O>>2]-((t[se+20>>2]+t[se+((li?Ba|5:sy)<<2)>>2]|0)+2>>2),O=se+(G|8)|0,t[O>>2]=t[O>>2]-((t[se+24>>2]+t[se+((li?Ba|6:oy)<<2)>>2]|0)+2>>2),G=(t[se+28>>2]+t[se+((li?Ba|7:iy)<<2)>>2]|0)+2|0;break c}G=Ba<<2,O=G+se|0,t[O>>2]=t[O>>2]-((H<<1)+2>>2),O=se+(G|4)|0,t[O>>2]=t[O>>2]-((t[se+20>>2]<<1)+2>>2),O=se+(G|8)|0,t[O>>2]=t[O>>2]-((t[se+24>>2]<<1)+2>>2),G=(t[se+28>>2]<<1)+2|0;break c}if(_r=se+((li?u:B1)<<5)|0,H=t[_r-16>>2],!li){G=Ba<<2,O=G+se|0,t[O>>2]=t[O>>2]-((H+t[s0>>2]|0)+2>>2),O=se+(G|4)|0,t[O>>2]=t[O>>2]-((t[_r-12>>2]+t[Rt>>2]|0)+2>>2),O=se+(G|8)|0,t[O>>2]=t[O>>2]-((t[_r-8>>2]+t[Bi>>2]|0)+2>>2),G=(t[_r-4>>2]+t[ji>>2]|0)+2|0;break c}G=Ba<<2,O=G+se|0,t[O>>2]=t[O>>2]-((H+t[se+(G|16)>>2]|0)+2>>2),O=se+(G|4)|0,t[O>>2]=t[O>>2]-((t[_r-12>>2]+t[se+(G|20)>>2]|0)+2>>2),O=se+(G|8)|0,t[O>>2]=t[O>>2]-((t[_r-8>>2]+t[se+(G|24)>>2]|0)+2>>2),G=(t[_r-4>>2]+t[se+(G|28)>>2]|0)+2|0}if(O=se+(Ba<<2|12)|0,t[O>>2]=t[O>>2]-(G>>2),u=u+1|0,(P0|0)==(u|0))break}}if((Q|0)>=(Vo|0))break f;if(O=Q,u=O,(Rn|0)>(u|0)){for(;u=se+(O<<5)|0,t[u+16>>2]=t[u+16>>2]+(t[u+32>>2]+t[u>>2]>>1),t[u+28>>2]=t[u+28>>2]+(t[u+44>>2]+t[u+12>>2]>>1),t[u+24>>2]=t[u+24>>2]+(t[u+40>>2]+t[u+8>>2]>>1),t[u+20>>2]=t[u+20>>2]+(t[u+36>>2]+t[u+4>>2]>>1),O=O+1|0,(Rn|0)!=(O|0););u=Rn}if((u|0)>=(Vo|0))break f;for(;;){Ba=u<<3,O=Ba|4,H=se+(Ba<<2|28)|0;p:{if((u|0)<0){if(G=t[se>>2],(u|0)!=-1){O=se+(O<<2)|0,t[O>>2]=G+t[O>>2],G=Ba<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]+t[se+4>>2],O=se+(G|24)|0,t[O>>2]=t[O>>2]+t[se+8>>2],O=t[se+12>>2];break p}O=se+(O<<2)|0,t[O>>2]=t[O>>2]+(G+t[t3>>2]>>1),G=Ba<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]+(t[t3+4>>2]+t[se+4>>2]>>1),O=se+(G|24)|0,t[O>>2]=t[O>>2]+(t[t3+8>>2]+t[se+8>>2]>>1),O=t[t3+12>>2]+t[se+12>>2]>>1;break p}if(_r=(u|0)<(Oe|0)?Ba:pl,G=u+1|0,(G|0)>=(Oe|0)){O=se+(O<<2)|0,_r=_r<<2,t[O>>2]=t[O>>2]+(t[Zr>>2]+t[_r+se>>2]>>1),G=Ba<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]+(t[no>>2]+t[se+(_r|4)>>2]>>1),O=se+(G|24)|0,t[O>>2]=t[O>>2]+(t[$r>>2]+t[se+(_r|8)>>2]>>1),O=t[$n>>2]+t[se+(_r|12)>>2]>>1;break p}O=se+(O<<2)|0,li=se+(G<<5)|0,_r=_r<<2,t[O>>2]=t[O>>2]+(t[li>>2]+t[_r+se>>2]>>1),G=Ba<<2,O=se+(G|20)|0,t[O>>2]=t[O>>2]+(t[li+4>>2]+t[se+(_r|4)>>2]>>1),O=se+(G|24)|0,t[O>>2]=t[O>>2]+(t[li+8>>2]+t[se+(_r|8)>>2]>>1),O=t[li+12>>2]+t[se+(_r|12)>>2]>>1}if(t[H>>2]=O+t[H>>2],u=u+1|0,(Vo|0)==(u|0))break}}if(!Jh(wu,Qr,e3,Dr,X4,ny,1,4))break}break}break o}Gt(se),u=1}Y=$e+De(Z5,152)|0,H=t[Y+136>>2],G=t[q4>>2],A=t[q4+4>>2],O=t[Y+144>>2],F1(wu,H-G|0,t[Y+140>>2]-A|0,O-G|0,t[Y+148>>2]-A|0,t[kt+52>>2],1,O-H|0),As(wu);break i}As(wu),Gt(se),u=0;break i}As(wu),u=0;break i}u=0,Za(bn),Gt(gr)}if(Nt=q0+32|0,u)break r;break t}O=u,re=0,_e=0,$n=Nt+-64|0,Nt=$n;i:{if(t[en+64>>2]){if(A=t[kt+28>>2],Q=1,(O|0)==1)break i;Rn=O-1|0,Q=Rn&1;a:{if((O|0)==2){H=0,u=A;break a}for(Y=Rn&-2,H=0,u=A;O=t[u+160>>2]-t[u+152>>2]|0,G=O>>>0>>0?H:O,O=t[u+164>>2]-t[u+156>>2]|0,G=O>>>0>>0?G:O,O=t[u+312>>2]-t[u+304>>2]|0,G=O>>>0>>0?G:O,O=t[u+316>>2]-t[u+308>>2]|0,H=O>>>0>>0?G:O,u=u+304|0,_e=_e+2|0,(Y|0)!=(_e|0););}if(Q&&(O=t[u+160>>2]-t[u+152>>2]|0,O=O>>>0>>0?H:O,u=t[u+164>>2]-t[u+156>>2]|0,H=u>>>0>>0?O:u),Q=0,H>>>0>134217727||(u=(De(t[kt+24>>2],152)+A|0)-152|0,Oe=t[u>>2],re=t[u+8>>2],he=t[A+4>>2],G=t[A+12>>2],O=t[A>>2],u=t[A+8>>2],er=t[en+44>>2],P0=t[er+4>>2],Zr=H<<5,Y=Jo(Zr),t[$n+32>>2]=Y,!Y))break i;if(t[$n>>2]=Y,!Rn){Q=1,Gt(Y);break i}se=G-he|0,O=u-O|0,u=P0>>>1|0,ji=u>>>0<=2?2:u,Bi=Y+32|0,Ze=re-Oe|0,qo=De(Ze,7),fo=De(Ze,6),Rt=De(Ze,5),s0=Ze<<2,U0=De(Ze,3),Di=Ze<<1,G=t[kt+36>>2],ss=Ze<<5,Oe=Y;a:{for(;;){$e=se,t[$n+8>>2]=se,t[$n+40>>2]=O,gi=t[A+156>>2],Xo=t[A+164>>2],u=t[A+160>>2],Q=t[A+152>>2],t[$n+56>>2]=0,H=O,t[$n+52>>2]=O,t[$n+48>>2]=0,me=(Q|0)%2|0,t[$n+44>>2]=me,O=u-Q|0,gr=O-H|0,t[$n+60>>2]=gr,t[$n+36>>2]=gr,un=(P0|0)<2,se=Xo-gi|0;s:{if(!(!un&se>>>0>15)){if(re=0,u=G,se>>>0<8)break s;for(Oe=t[$n+32>>2];;){if(H=$n+32|0,Uh(H,u,Ze,8),B2(H),H=0,O){for(;Q=(H<<5)+Oe|0,Ue[(H<<2)+u>>2]=Ue[Q>>2],Ue[(H+Ze<<2)+u>>2]=Ue[Q+4>>2],Ue[(H+Di<<2)+u>>2]=Ue[Q+8>>2],Ue[(H+U0<<2)+u>>2]=Ue[Q+12>>2],H=H+1|0,(H|0)!=(O|0););for(H=0;Q=(H<<5)+Oe|0,Ue[(H+s0<<2)+u>>2]=Ue[Q+16>>2],Ue[(H+Rt<<2)+u>>2]=Ue[Q+20>>2],Ue[(H+fo<<2)+u>>2]=Ue[Q+24>>2],Ue[(H+qo<<2)+u>>2]=Ue[Q+28>>2],H=H+1|0,(H|0)!=(O|0););}if(u=u+ss|0,re=re+8|0,!((re|7)>>>0>>0))break}break s}for(u=se>>>3|0,Yt=u>>>0>>0?u:P0,_e=(se>>>0)/(Yt>>>0)&-8,re=se&-8,Q=0,u=G;;){if(bn=si(48),!bn){Q=0,Za(er),Gt(Oe);break i}if(he=Jo(Zr),t[bn>>2]=he,!he){Q=0,Za(er),Gt(bn),Gt(Oe);break i}if(t[bn+40>>2]=u,t[bn+36>>2]=Ze,t[bn+32>>2]=O,t[bn+28>>2]=gr,t[bn+24>>2]=0,t[bn+20>>2]=H,t[bn+16>>2]=0,t[bn+12>>2]=me,t[bn+8>>2]=H,t[bn+4>>2]=gr,he=re-De(Q,_e)|0,Q=Q+1|0,he=(Yt|0)==(Q|0)?he:_e,t[bn+44>>2]=he,Be(er,117,bn),u=(De(he,Ze)<<2)+u|0,(Q|0)==(Yt|0))break}Za(er)}s:{if(se>>>0<=re>>>0||(H=$n+32|0,Q=se-re|0,Uh(H,u,Ze,Q),B2(H),!O))break s;for(H=Q>>>0<=1?1:Q,_e=H&-4,Yt=H&3,me=H-1|0,Q=0,Oe=t[$n+32>>2];;){if(gr=(Q<<5)+Oe|0,H=0,he=0,me>>>0>=3)for(;Ue[(De(H,Ze)+Q<<2)+u>>2]=Ue[gr+(H<<2)>>2],re=H|1,Ue[(De(re,Ze)+Q<<2)+u>>2]=Ue[gr+(re<<2)>>2],re=H|2,Ue[(De(re,Ze)+Q<<2)+u>>2]=Ue[gr+(re<<2)>>2],re=H|3,Ue[(De(re,Ze)+Q<<2)+u>>2]=Ue[gr+(re<<2)>>2],H=H+4|0,he=he+4|0,(_e|0)!=(he|0););if(he=0,Yt)for(;Ue[(De(H,Ze)+Q<<2)+u>>2]=Ue[gr+(H<<2)>>2],H=H+1|0,he=he+1|0,(Yt|0)!=(he|0););if(Q=Q+1|0,(Q|0)==(O|0))break}}Dr=se-$e|0,t[$n+4>>2]=Dr,u=t[A+156>>2],t[$n+28>>2]=Dr,t[$n+24>>2]=0,t[$n+20>>2]=$e,t[$n+16>>2]=0,Vo=(u|0)%2|0,t[$n+12>>2]=Vo;s:{if(!(!un&O>>>0>15)){if(H=G,O>>>0<8)break s;for(Ji=se&-2,Qr=se&1,rr=Dr&-2,bn=Dr&1,gr=$e&-2,Yt=$e&1,un=$e+gi|0,Ro=Xo-1|0,_e=De(Ze,$e),u=Vo<<5,U1=Bi-u|0,Tn=u+Y|0,Q=O;;){u=0,he=0;o:{u:switch($e|0){default:for(;jt=(De(u,Ze)<<2)+H|0,re=t[jt+4>>2],me=Tn+(u<<6)|0,t[me>>2]=t[jt>>2],t[me+4>>2]=re,re=t[jt+28>>2],t[me+24>>2]=t[jt+24>>2],t[me+28>>2]=re,re=t[jt+20>>2],t[me+16>>2]=t[jt+16>>2],t[me+20>>2]=re,re=t[jt+12>>2],t[me+8>>2]=t[jt+8>>2],t[me+12>>2]=re,re=u|1,me=Tn+(re<<6)|0,jt=(De(re,Ze)<<2)+H|0,re=t[jt+28>>2],t[me+24>>2]=t[jt+24>>2],t[me+28>>2]=re,re=t[jt+20>>2],t[me+16>>2]=t[jt+16>>2],t[me+20>>2]=re,re=t[jt+12>>2],t[me+8>>2]=t[jt+8>>2],t[me+12>>2]=re,re=t[jt+4>>2],t[me>>2]=t[jt>>2],t[me+4>>2]=re,u=u+2|0,he=he+2|0,(gr|0)!=(he|0););break;case 0:break o;case 1:break u}if(!Yt)break o;he=Tn+(u<<6)|0,re=(De(u,Ze)<<2)+H|0,u=t[re+4>>2],t[he>>2]=t[re>>2],t[he+4>>2]=u,u=t[re+28>>2],t[he+24>>2]=t[re+24>>2],t[he+28>>2]=u,u=t[re+20>>2],t[he+16>>2]=t[re+16>>2],t[he+20>>2]=u,u=t[re+12>>2],t[he+8>>2]=t[re+8>>2],t[he+12>>2]=u}o:{if((se|0)==($e|0))break o;if(me=(_e<<2)+H|0,u=0,$r=0,(un|0)!=(Ro|0))for(;jt=me+(De(u,Ze)<<2)|0,he=t[jt+4>>2],re=U1+(u<<6)|0,t[re>>2]=t[jt>>2],t[re+4>>2]=he,he=t[jt+28>>2],t[re+24>>2]=t[jt+24>>2],t[re+28>>2]=he,he=t[jt+20>>2],t[re+16>>2]=t[jt+16>>2],t[re+20>>2]=he,he=t[jt+12>>2],t[re+8>>2]=t[jt+8>>2],t[re+12>>2]=he,he=u|1,re=U1+(he<<6)|0,jt=me+(De(he,Ze)<<2)|0,he=t[jt+28>>2],t[re+24>>2]=t[jt+24>>2],t[re+28>>2]=he,he=t[jt+20>>2],t[re+16>>2]=t[jt+16>>2],t[re+20>>2]=he,he=t[jt+12>>2],t[re+8>>2]=t[jt+8>>2],t[re+12>>2]=he,he=t[jt+4>>2],t[re>>2]=t[jt>>2],t[re+4>>2]=he,u=u+2|0,$r=$r+2|0,(rr|0)!=($r|0););if(!bn)break o;he=U1+(u<<6)|0,re=me+(De(u,Ze)<<2)|0,u=t[re+4>>2],t[he>>2]=t[re>>2],t[he+4>>2]=u,u=t[re+28>>2],t[he+24>>2]=t[re+24>>2],t[he+28>>2]=u,u=t[re+20>>2],t[he+16>>2]=t[re+16>>2],t[he+20>>2]=u,u=t[re+12>>2],t[he+8>>2]=t[re+8>>2],t[he+12>>2]=u}B2($n);o:{if(!se)break o;if(u=0,he=0,(gi|0)!=(Ro|0))for(;jt=Y+(u<<5)|0,re=t[jt+4>>2],me=(De(u,Ze)<<2)+H|0,t[me>>2]=t[jt>>2],t[me+4>>2]=re,re=t[jt+28>>2],t[me+24>>2]=t[jt+24>>2],t[me+28>>2]=re,re=t[jt+20>>2],t[me+16>>2]=t[jt+16>>2],t[me+20>>2]=re,re=t[jt+12>>2],t[me+8>>2]=t[jt+8>>2],t[me+12>>2]=re,re=u|1,me=(De(re,Ze)<<2)+H|0,jt=Y+(re<<5)|0,re=t[jt+28>>2],t[me+24>>2]=t[jt+24>>2],t[me+28>>2]=re,re=t[jt+20>>2],t[me+16>>2]=t[jt+16>>2],t[me+20>>2]=re,re=t[jt+12>>2],t[me+8>>2]=t[jt+8>>2],t[me+12>>2]=re,re=t[jt+4>>2],t[me>>2]=t[jt>>2],t[me+4>>2]=re,u=u+2|0,he=he+2|0,(Ji|0)!=(he|0););if(!Qr)break o;he=(De(u,Ze)<<2)+H|0,re=Y+(u<<5)|0,u=t[re+4>>2],t[he>>2]=t[re>>2],t[he+4>>2]=u,u=t[re+28>>2],t[he+24>>2]=t[re+24>>2],t[he+28>>2]=u,u=t[re+20>>2],t[he+16>>2]=t[re+16>>2],t[he+20>>2]=u,u=t[re+12>>2],t[he+8>>2]=t[re+8>>2],t[he+12>>2]=u}if(H=H+32|0,Q=Q-8|0,!(Q>>>0>7))break}break s}if(u=O>>>3|0,me=u>>>0>>0?u:ji,u=(O>>>0)/(me>>>0)|0,H=G,me)for(re=u&-8,he=O&-8,Q=0;;){if(_e=si(48),!_e){Za(er),Q=0;break a}if(u=Jo(Zr),t[_e>>2]=u,!u){Za(er),Gt(_e),Q=0;break a}if(t[_e+40>>2]=H,t[_e+36>>2]=Ze,t[_e+32>>2]=se,t[_e+28>>2]=Dr,t[_e+24>>2]=0,t[_e+20>>2]=$e,t[_e+16>>2]=0,t[_e+12>>2]=Vo,t[_e+8>>2]=$e,t[_e+4>>2]=Dr,u=he-De(Q,re)|0,Q=Q+1|0,u=(me|0)==(Q|0)?u:re,t[_e+44>>2]=u,Be(er,118,_e),H=(u<<2)+H|0,(Q|0)==(me|0))break}Za(er)}Yt=O&7;s:{if(!Yt)break s;me=Vo<<5;o:{if(!$e)break o;if(un=Y+me|0,_e=Yt<<2,u=0,($e|0)!=1)for(re=$e&-2,he=0;Yr(un+(u<<6)|0,(De(u,Ze)<<2)+H|0,_e),Q=u|1,Yr(un+(Q<<6)|0,(De(Q,Ze)<<2)+H|0,_e),u=u+2|0,he=he+2|0,(re|0)!=(he|0););if(!($e&1))break o;Yr(un+(u<<6)|0,(De(u,Ze)<<2)+H|0,_e)}o:{if((se|0)==($e|0))break o;if(_e=Bi-me|0,me=(De(Ze,$e)<<2)+H|0,re=Yt<<2,u=0,(gi|0)!=(Xo+($e^-1)|0))for(he=Dr&-2,$r=0;Yr(_e+(u<<6)|0,me+(De(u,Ze)<<2)|0,re),Q=u|1,Yr(_e+(Q<<6)|0,me+(De(Q,Ze)<<2)|0,re),u=u+2|0,$r=$r+2|0,(he|0)!=($r|0););if(!(Dr&1))break o;Yr(_e+(u<<6)|0,me+(De(u,Ze)<<2)|0,re)}if(B2($n),!se)break s;if($e=Yt<<2,u=0,(Xo|0)!=(gi+1|0))for(he=se&-2,re=0;Yr((De(u,Ze)<<2)+H|0,Y+(u<<5)|0,$e),Q=u|1,Yr((De(Q,Ze)<<2)+H|0,Y+(Q<<5)|0,$e),u=u+2|0,re=re+2|0,(he|0)!=(re|0););if(!(se&1))break s;Yr((De(u,Ze)<<2)+H|0,Y+(u<<5)|0,$e)}if(A=A+152|0,Rn=Rn-1|0,!Rn)break}Q=1}Gt(t[$n+32>>2]);break i}if(Q=1,$e=t[kt+28>>2],jt=O-1|0,ml=$e+De(jt,152)|0,t[ml>>2]==t[ml+8>>2]|t[ml+4>>2]==t[ml+12>>2])break i;if(_e=t[$e+4>>2],me=t[$e+12>>2],Oe=t[$e>>2],he=t[$e+8>>2],bn=t[kt+68>>2],gr=t[kt+64>>2],Yt=t[kt+60>>2],un=t[kt+56>>2],no=E4(kt,O),!no){Q=0;break i}a:{s:{if((O|0)!=1){if(Y=jt&1,(O|0)!=2)break s;Q=0,u=$e;break a}H=$e+De(jt,152)|0,G=t[H+136>>2],A=t[ml>>2],O=t[ml+4>>2],u=t[H+144>>2],F1(no,G-A|0,t[H+140>>2]-O|0,u-A|0,t[H+148>>2]-O|0,t[kt+52>>2],1,u-G|0),As(no);break i}for(H=jt&-2,Q=0,u=$e;A=t[u+160>>2]-t[u+152>>2]|0,G=A>>>0>>0?Q:A,A=t[u+164>>2]-t[u+156>>2]|0,G=A>>>0>>0?G:A,A=t[u+312>>2]-t[u+304>>2]|0,G=A>>>0>>0?G:A,A=t[u+316>>2]-t[u+308>>2]|0,Q=A>>>0>>0?G:A,u=u+304|0,re=re+2|0,(H|0)!=(re|0););}Y&&(A=t[u+160>>2]-t[u+152>>2]|0,A=A>>>0>>0?Q:A,u=t[u+164>>2]-t[u+156>>2]|0,Q=u>>>0>>0?A:u);a:{if(Q>>>0>=134217728||(Ua=Jo(Q<<5),t[$n+32>>2]=Ua,!Ua))break a;t[$n>>2]=Ua;s:{if(O>>>0>=2)for(se=me-_e|0,Oe=he-Oe|0,Xo=Ua+32|0,Qr=O,Rn=t[kt+20>>2],ss=1,me=0,Rt=$e;;){t[$n+8>>2]=se,t[$n+40>>2]=Oe,A=t[Rt+164>>2],O=t[Rt+160>>2],G=t[Rt+156>>2],u=t[Rt+152>>2],Cu=(u|0)%2|0,t[$n+44>>2]=Cu,Vo=(G|0)%2|0,t[$n+12>>2]=Vo,Ji=O-u|0,Di=Ji-Oe|0,t[$n+36>>2]=Di,s0=A-G|0,ji=s0-se|0,t[$n+4>>2]=ji,he=un,H=he,O=Yt,Q=O,u=gr,$r=u,re=bn,Dr=re;o:{if(!me&(Rn|0)==(ss|0)||(A=Rn-ss|0,Q=0,H=0,un&&(u=A&31,(A&63)>>>0>=32?(Y=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,O=A&31,H=(A&63)>>>0>=32?Y>>>O|0:((1<>>O),Yt&&(u=A&31,(A&63)>>>0>=32?(G=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,O=A&31,Q=(A&63)>>>0>=32?Y>>>O|0:((1<>>O),re=0,u=0,gr&&(u=A&31,(A&63)>>>0>=32?(Y=-1<>>32-u,u=-1<>>0>>0?Y+1|0:Y,O=A&31,u=(A&63)>>>0>=32?Y>>>O|0:((1<>>O),bn&&(O=A&31,(A&63)>>>0>=32?(Y=-1<>>32-O),O=bn+(G^-1)|0,Y=Y^-1,Y=O>>>0>>0?Y+1|0:Y,G=A&31,re=(A&63)>>>0>=32?Y>>>G|0:((1<>>G),$r=0,he=0,rr=1<>>0>>0&&(O=A&31,(A&63)>>>0>=32?(Y=-1<>>32-O),O=G^-1,he=O+(un-rr|0)|0,G=Y^-1,G=O>>>0>he>>>0?G+1|0:G,Y=A&31,he=(A&63)>>>0>=32?G>>>Y|0:((1<>>Y),rr>>>0>>0&&(O=A&31,(A&63)>>>0>=32?(Y=-1<>>32-O),O=G^-1,G=O+(gr-rr|0)|0,Y=Y^-1,Y=O>>>0>G>>>0?Y+1|0:Y,O=G,G=A&31,$r=(A&63)>>>0>=32?Y>>>G|0:((1<>>G),Dr=0,O=0,Yt>>>0>rr>>>0&&(O=A&31,(A&63)>>>0>=32?(G=-1<>>32-O),O=Y^-1,_e=O+(Yt-rr|0)|0,Y=G^-1,Y=O>>>0>_e>>>0?Y+1|0:Y,G=A&31,O=(A&63)>>>0>=32?Y>>>G|0:((1<>>G),bn>>>0<=rr>>>0))break o;G=A&31,(A&63)>>>0>=32?(Y=-1<>>32-G,G=-1<>>0>_e>>>0?Y+1|0:Y,G=_e,_e=A&31,Dr=(A&63)>>>0>=32?Y>>>_e|0:((1<<_e)-1&Y)<<32-_e|G>>>_e}Y=0,G=0,rr=t[Rt+180>>2],A=$r-rr|0,A=(A>>>0<=$r>>>0?A:0)+4|0,A=0-(A>>>0<4?1:Y)|A,gi=A>>>0>>0?A:Di,Y=t[Rt+216>>2],A=u-Y|0,u=(u>>>0>=A>>>0?A:0)+4|0,u=0-(u>>>0<4?1:G)|u,P0=u>>>0>>0?u:Oe,A=(Cu?gi:P0)<<1,u=(Cu?P0:gi)<<1|1,Bi=u>>>0>>0?A:u,Ro=Bi>>>0>>0,u=he-rr|0,A=u>>>0<=he>>>0?u:0,u=A-4|0,Ze=u>>>0<=A>>>0?u:0,u=H-Y|0,A=u>>>0<=H>>>0?u:0,u=A-4|0,er=u>>>0<=A>>>0?u:0,qo=(Cu?Ze:er)<<1,fo=(Cu?er:Ze)<<1|1,H=qo>>>0>>0,G=t[Rt+184>>2],u=Q-G|0,A=u>>>0<=Q>>>0?u:0,u=A-4|0,U0=u>>>0<=A>>>0?u:0,rr=U0,A=t[Rt+220>>2],u=O-A|0,O=u>>>0<=O>>>0?u:0,u=O-4|0,Di=u>>>0<=O>>>0?u:0,_e=Di,Y=0,u=re-G|0,u=(u>>>0<=re>>>0?u:0)+4|0,u=0-(u>>>0<4?1:Y)|u,he=u>>>0>>0?u:se,Q=he,u=Dr-A|0,u=(u>>>0<=Dr>>>0?u:0)+4|0,u=0-(u>>>0<4?1:Y)|u,G=u>>>0>>0?u:ji,A=G,Vo&&(rr=Di,_e=U0,Q=G,A=he),Dr=Ro?Bi:Ji,$r=H?qo:fo,t[$n+60>>2]=gi,t[$n+56>>2]=Ze,t[$n+52>>2]=P0,t[$n+48>>2]=er;o:{if(s0>>>0<8){H=7,u=0;break o}for(u=Cu<<5,Zr=(Xo-u|0)+(Ze<<6)|0,ji=(u+Ua|0)+(er<<6)|0,Bi=Oe+gi|0,Ro=Oe+Ze|0,qo=G+se|0,fo=se+Di|0,re=Ua+($r<<5)|0,O=0,H=7;;){u:{if(!(O>>>0>>0&H>>>0>=U0>>>0|O>>>0>>0&H>>>0>=fo>>>0)){u=O+8|0;break u}if(u=0,H=s0-O|0,Y=H>>>0>=8?8:H,Y)for(;U1=u+O|0,Tn=U1+1|0,H=u<<2,F1(no,er,U1,P0,Tn,H+ji|0,16,0),F1(no,Ro,U1,Bi,Tn,H+Zr|0,16,0),u=u+1|0,(Y|0)!=(u|0););if(B2($n+32|0),u=O+8|0,!Jh(no,$r,O,Dr,u,re,8,1))break s}if(O=u,H=u|7,!(s0>>>0>H>>>0))break}}if(!(!(u>>>0>>0&H>>>0>=U0>>>0)&(G+se>>>0<=u>>>0|se+Di>>>0>H>>>0)|u>>>0>=s0>>>0)){if((u|0)!=(s0|0))for(Ro=s0-u|0,O=Cu<<5,qo=(Xo-O|0)+(Ze<<6)|0,fo=(O+Ua|0)+(er<<6)|0,re=Oe+gi|0,Y=Oe+Ze|0,H=0;Bi=u+H|0,Oe=Bi+1|0,O=H<<2,F1(no,er,Bi,P0,Oe,O+fo|0,16,0),F1(no,Y,Bi,re,Oe,O+qo|0,16,0),H=H+1|0,(Ro|0)!=(H|0););if(B2($n+32|0),!Jh(no,$r,u,Dr,s0,Ua+($r<<5)|0,8,1))break s}if(t[$n+28>>2]=G,t[$n+24>>2]=Di,t[$n+20>>2]=he,t[$n+16>>2]=U0,Dr>>>0>$r>>>0)for(O=Q<<1,u=A<<1|1,u=u>>>0>>0?O:u,re=u>>>0>>0?u:s0,u=Vo<<5,Q=(Xo-u|0)+(Di<<6)|0,Y=(u+Ua|0)+(U0<<6)|0,H=G+se|0,G=se+Di|0,O=rr<<1,u=_e<<1|1,A=u>>>0>O>>>0?O:u,O=Ua+(A<<5)|0;;){if(u=Dr-$r|0,u=(u>>>0>=8?8:u)+$r|0,F1(no,$r,U0,u,he,Y,1,16),F1(no,$r,G,u,H,Q,1,16),B2($n),!Jh(no,$r,A,u,re,O,1,8))break s;if($r=$r+8|0,!(Dr>>>0>$r>>>0))break}if(Rt=Rt+152|0,Oe=Ji,se=s0,Y=me,u=ss+1|0,Y=u?Y:Y+1|0,ss=u,me=Y,!((Qr|0)!=(u|0)|Y))break}Q=1,H=$e+De(jt,152)|0,G=t[H+136>>2],A=t[ml>>2],O=t[ml+4>>2],u=t[H+144>>2],F1(no,G-A|0,t[H+140>>2]-O|0,u-A|0,t[H+148>>2]-O|0,t[kt+52>>2],1,u-G|0),As(no),Gt(Ua);break i}As(no),Gt(Ua),Q=0;break i}As(no),Q=0}if(Nt=$n- -64|0,Q)break r;break t}if(Ne=Ne+1080|0,Cn=Cn+52|0,kt=kt+76|0,sr=sr+1|0,!(sr>>>0>2]))break}xa=t[t[en+20>>2]>>2]}Q=t[en+32>>2],u=t[Q+16>>2];r:{if(t[en+68>>2]|!u)break r;kt=t[xa+20>>2],Y=t[kt+28>>2];i:{a:{if(H=t[en+64>>2],H){if(sr=t[xa+16>>2],sr>>>0<3)break i;if(G=t[kt+24>>2],!((G|0)==t[kt+100>>2]&(G|0)==t[kt+176>>2])){vt(M,1,20580,0);break t}A=t[t[en+24>>2]+24>>2],O=t[A+36>>2];s:{if((O|0)!=t[A+88>>2]|(O|0)!=t[A+140>>2]||(A=De(G,152),O=(A+Y|0)-152|0,O=De(t[O+12>>2]-t[O+4>>2]|0,t[O+8>>2]-t[O>>2]|0),G=(A+t[kt+104>>2]|0)-152|0,(O|0)!=(De(t[G+12>>2]-t[G+4>>2]|0,t[G+8>>2]-t[G>>2]|0)|0)))break s;if(A=(A+t[kt+180>>2]|0)-152|0,(De(t[A+12>>2]-t[A+4>>2]|0,t[A+8>>2]-t[A>>2]|0)|0)==(O|0))break a}vt(M,1,20580,0);break t}if(sr=t[xa+16>>2],sr>>>0<3)break i;O=t[t[en+24>>2]+24>>2],A=t[O+36>>2];s:{if((A|0)!=t[O+88>>2]|(A|0)!=t[O+140>>2]||(A=De(A,152),O=A+Y|0,O=De(t[O+148>>2]-t[O+140>>2]|0,t[O+144>>2]-t[O+136>>2]|0),G=A+t[kt+104>>2]|0,(O|0)!=(De(t[G+148>>2]-t[G+140>>2]|0,t[G+144>>2]-t[G+136>>2]|0)|0)))break s;if(A=A+t[kt+180>>2]|0,(De(t[A+148>>2]-t[A+140>>2]|0,t[A+144>>2]-t[A+136>>2]|0)|0)==(O|0))break a}vt(M,1,20580,0);break t}if((u|0)==2){if(!t[Q+5608>>2])break r;if(Yt=si(sr<<2),!Yt)break t;un=t[xa+16>>2];a:{if(!un)break a;s:{o:{if(t[en+64>>2]){if(G=un&3,u=0,un>>>0>=4)break o;sr=0;break s}G=un&3,u=0;u:{if(un>>>0<4){sr=0;break u}for(A=un&-4,sr=0,H=0;Y=sr<<2,t[Y+Yt>>2]=t[kt+52>>2],t[Yt+(Y|4)>>2]=t[kt+128>>2],t[Yt+(Y|8)>>2]=t[kt+204>>2],t[Yt+(Y|12)>>2]=t[kt+280>>2],sr=sr+4|0,kt=kt+304|0,H=H+4|0,(A|0)!=(H|0););}if(!G)break a;for(;t[Yt+(sr<<2)>>2]=t[kt+52>>2],sr=sr+1|0,kt=kt+76|0,u=u+1|0,(G|0)!=(u|0););break a}for(A=un&-4,sr=0,H=0;Y=sr<<2,t[Y+Yt>>2]=t[kt+36>>2],t[Yt+(Y|4)>>2]=t[kt+112>>2],t[Yt+(Y|8)>>2]=t[kt+188>>2],t[Yt+(Y|12)>>2]=t[kt+264>>2],sr=sr+4|0,kt=kt+304|0,H=H+4|0,(A|0)!=(H|0););}if(!G)break a;for(;t[Yt+(sr<<2)>>2]=t[kt+36>>2],sr=sr+1|0,kt=kt+76|0,u=u+1|0,(G|0)!=(u|0););}A=t[Q+5608>>2],Rt=0,_e=si(un<<3),u=0;a:{if(!_e)break a;if(!(!O|!un))for(Q=_e+(un<<2)|0,Oe=un&-4,$e=un&3,Y=un-1|0;;){if(u=0,he=0,H=Y>>>0<3,!H)for(;re=u<<2,Ue[re+_e>>2]=Ue[t[re+Yt>>2]>>2],G=re|4,Ue[G+_e>>2]=Ue[t[G+Yt>>2]>>2],G=re|8,Ue[G+_e>>2]=Ue[t[G+Yt>>2]>>2],G=re|12,Ue[G+_e>>2]=Ue[t[G+Yt>>2]>>2],u=u+4|0,he=he+4|0,(Oe|0)!=(he|0););if(se=0,$e)for(;G=u<<2,Ue[G+_e>>2]=Ue[t[G+Yt>>2]>>2],u=u+1|0,se=se+1|0,($e|0)!=(se|0););for(Cn=0,u=A;;){if(G=Cn<<2,me=G+Q|0,t[me>>2]=0,f0=Ye(0),se=0,Ne=0,!H)for(;he=se<<2,f0=Ye(Ye(Ue[u>>2]*Ue[he+_e>>2])+f0),Ue[me>>2]=f0,f0=Ye(Ye(Ue[u+4>>2]*Ue[_e+(he|4)>>2])+f0),Ue[me>>2]=f0,f0=Ye(Ye(Ue[u+8>>2]*Ue[_e+(he|8)>>2])+f0),Ue[me>>2]=f0,f0=Ye(Ye(Ue[u+12>>2]*Ue[_e+(he|12)>>2])+f0),Ue[me>>2]=f0,se=se+4|0,u=u+16|0,Ne=Ne+4|0,(Oe|0)!=(Ne|0););if(re=0,$e)for(;f0=Ye(Ye(Ue[u>>2]*Ue[_e+(se<<2)>>2])+f0),Ue[me>>2]=f0,se=se+1|0,u=u+4|0,re=re+1|0,($e|0)!=(re|0););if(G=G+Yt|0,he=t[G>>2],t[G>>2]=he+4,Ue[he>>2]=f0,Cn=Cn+1|0,(un|0)==(Cn|0))break}if(Rt=Rt+1|0,(Rt|0)==(O|0))break}Gt(_e),u=1}if(Gt(Yt),u)break r;break t}if(t[t[Q+5584>>2]+20>>2]==1){if(H){Fa(t[kt+36>>2],t[kt+112>>2],t[kt+188>>2],O);break r}Fa(t[kt+52>>2],t[kt+128>>2],t[kt+204>>2],O);break r}if(H){rt(t[kt+36>>2],t[kt+112>>2],t[kt+188>>2],O);break r}rt(t[kt+52>>2],t[kt+128>>2],t[kt+204>>2],O);break r}t[zl>>2]=sr,vt(M,1,20641,zl)}if(_e=t[t[en+20>>2]>>2],!t[_e+16>>2]){_i=1;break t}for(me=t[en+68>>2],kt=t[_e+20>>2],O=t[t[en+32>>2]+5584>>2],G=t[t[en+24>>2]+24>>2],A=0;;){r:{if(!t[me+(A<<2)>>2]&&me)break r;u=t[G+36>>2],Q=t[kt+28>>2];i:{if(!t[en+64>>2]){u=Q+De(u,152)|0,H=t[u+148>>2]-t[u+140>>2]|0,xa=t[u+144>>2]-t[u+136>>2]|0,se=0,u=kt+52|0;break i}Y=Q+De(u,152)|0,H=t[Y+12>>2]-t[Y+4>>2]|0,u=(Q+De(t[kt+24>>2],152)|0)-152|0,xa=t[Y+8>>2]-t[Y>>2]|0,se=t[u+8>>2]-(xa+t[u>>2]|0)|0,u=kt+36|0}Y=t[G+24>>2];i:{if(t[G+32>>2]){Y=1<>2],t[O+20>>2]!=1){if(!H|!xa)break r;for($e=Cn>>31,Oe=Q>>31,u=0;;){for(sr=0;;){f0=Ue[Ne>>2],Y=Cn;i:{if(f0>Ye(2147483648)||(Y=Q,f0>2],re=Y,Y=Y>>31,f0=bc(f0);a:{if(Ye(Rr(f0))>31)|0,re=re+un|0,Y=re>>>0>>0?Y+1|0:Y,Y=(Y|0)<=(Oe|0)&Q>>>0>re>>>0|(Y|0)<(Oe|0)?he:re>>>0>>0&(Y|0)<=($e|0)|(Y|0)<($e|0)?re:Cn}if(t[Ne>>2]=Y,Ne=Ne+4|0,sr=sr+1|0,(xa|0)==(sr|0))break}if(Ne=(se<<2)+Ne|0,u=u+1|0,(H|0)==(u|0))break}break r}if(!H|!xa)break r;for(he=xa&-2,Y=xa&1,u=0;;){if(sr=0,(xa|0)!=1)for(;re=t[O+1076>>2]+t[Ne>>2]|0,t[Ne>>2]=(Q|0)>(re|0)?Q:(re|0)<(Cn|0)?re:Cn,re=t[O+1076>>2]+t[Ne+4>>2]|0,t[Ne+4>>2]=(Q|0)>(re|0)?Q:(re|0)<(Cn|0)?re:Cn,Ne=Ne+8|0,sr=sr+2|0,(he|0)!=(sr|0););if(Y&&(re=t[O+1076>>2]+t[Ne>>2]|0,t[Ne>>2]=(Q|0)>(re|0)?Q:(re|0)<(Cn|0)?re:Cn,Ne=Ne+4|0),Ne=(se<<2)+Ne|0,u=u+1|0,(H|0)==(u|0))break}}if(kt=kt+76|0,O=O+1080|0,G=G+52|0,_i=1,A=A+1|0,!(A>>>0>2]))break}break t}_i=0,vt(M,1,5756,0)}if(Nt=zl+16|0,!_i){Gn(J5),t[x+8>>2]=t[x+8>>2]|32768,vt(M,1,22012,0);break e}t:{if(!m)break t;if(H=0,Q=0,Oe=t[x+208>>2],u=pu(Oe,1),!((u|0)==-1|u>>>0>y>>>0))n:{if(H=1,u=t[Oe+24>>2],!t[u+16>>2])break n;for(G=t[u+24>>2],A=t[t[t[Oe+20>>2]>>2]+20>>2];;){u=t[G+24>>2],Y=u&7,O=u>>>3|0,u=t[G+36>>2],H=t[A+28>>2];r:{if(t[Oe+64>>2]){y=H+De(u,152)|0,_i=t[y+12>>2]-t[y+4>>2]|0,u=(H+De(t[A+24>>2],152)|0)-152|0,y=t[y+8>>2]-t[y>>2]|0,Cn=t[u+8>>2]-(y+t[u>>2]|0)|0,u=A+36|0;break r}u=H+De(u,152)|0,_i=t[u+148>>2]-t[u+140>>2]|0,y=t[u+144>>2]-t[u+136>>2]|0,Cn=0,u=A+52|0}H=t[u>>2];r:{i:{a:{s:switch(u=O+((Y|0)!=0)|0,((u|0)==3?4:u)-1|0){case 1:break i;case 0:break a;case 3:break s;default:break r}if(!_i)break r;if(re=y+Cn|0,$e=y<<2,_i>>>0>=4)for(Y=_i&-4,u=0;O=Yr(m,H,$e),m=re<<2,he=m+H|0,H=m,y=m+he|0,m=y+m|0,H=H+m|0,m=Yr(Yr(Yr(O+$e|0,he,$e)+$e|0,y,$e)+$e|0,m,$e)+$e|0,u=u+4|0,(Y|0)!=(u|0););if(u=0,y=_i&3,!y)break r;for(;m=Yr(m,H,$e),H=(re<<2)+H|0,m=m+$e|0,u=u+1|0,(y|0)!=(u|0););break r}if(u=!_i|!y,t[G+32>>2]){if(u)break r;for(Y=y&-8,he=y&7,O=y-1|0,u=0;;){if(y=0,O>>>0>=7)for(;dt[m|0]=t[H>>2],dt[m+1|0]=t[H+4>>2],dt[m+2|0]=t[H+8>>2],dt[m+3|0]=t[H+12>>2],dt[m+4|0]=t[H+16>>2],dt[m+5|0]=t[H+20>>2],dt[m+6|0]=t[H+24>>2],dt[m+7|0]=t[H+28>>2],m=m+8|0,H=H+32|0,y=y+8|0,(Y|0)!=(y|0););if(y=0,he)for(;dt[m|0]=t[H>>2],m=m+1|0,H=H+4|0,y=y+1|0,(he|0)!=(y|0););if(H=(Cn<<2)+H|0,u=u+1|0,(_i|0)==(u|0))break}break r}if(u)break r;for(Y=y&-8,he=y&7,O=y-1|0,u=0;;){if(y=0,O>>>0>=7)for(;dt[m|0]=t[H>>2],dt[m+1|0]=t[H+4>>2],dt[m+2|0]=t[H+8>>2],dt[m+3|0]=t[H+12>>2],dt[m+4|0]=t[H+16>>2],dt[m+5|0]=t[H+20>>2],dt[m+6|0]=t[H+24>>2],dt[m+7|0]=t[H+28>>2],m=m+8|0,H=H+32|0,y=y+8|0,(Y|0)!=(y|0););if(y=0,he)for(;dt[m|0]=t[H>>2],m=m+1|0,H=H+4|0,y=y+1|0,(he|0)!=(y|0););if(H=(Cn<<2)+H|0,u=u+1|0,(_i|0)==(u|0))break}break r}if(u=!_i|!y,t[G+32>>2]){if(u)break r;for(Y=y&-8,he=y&7,O=y-1|0,u=0;;){if(y=0,O>>>0>=7)for(;tn[m>>1]=t[H>>2],tn[m+2>>1]=t[H+4>>2],tn[m+4>>1]=t[H+8>>2],tn[m+6>>1]=t[H+12>>2],tn[m+8>>1]=t[H+16>>2],tn[m+10>>1]=t[H+20>>2],tn[m+12>>1]=t[H+24>>2],tn[m+14>>1]=t[H+28>>2],m=m+16|0,H=H+32|0,y=y+8|0,(Y|0)!=(y|0););if(y=0,he)for(;tn[m>>1]=t[H>>2],m=m+2|0,H=H+4|0,y=y+1|0,(he|0)!=(y|0););if(H=(Cn<<2)+H|0,u=u+1|0,(_i|0)==(u|0))break}break r}if(u)break r;for(Y=y&-8,he=y&7,O=y-1|0,u=0;;){if(y=0,O>>>0>=7)for(;tn[m>>1]=t[H>>2],tn[m+2>>1]=t[H+4>>2],tn[m+4>>1]=t[H+8>>2],tn[m+6>>1]=t[H+12>>2],tn[m+8>>1]=t[H+16>>2],tn[m+10>>1]=t[H+20>>2],tn[m+12>>1]=t[H+24>>2],tn[m+14>>1]=t[H+28>>2],m=m+16|0,H=H+32|0,y=y+8|0,(Y|0)!=(y|0););if(y=0,he)for(;tn[m>>1]=t[H>>2],m=m+2|0,H=H+4|0,y=y+1|0,(he|0)!=(y|0););if(H=(Cn<<2)+H|0,u=u+1|0,(_i|0)==(u|0))break}}if(A=A+76|0,G=G+52|0,H=1,Q=Q+1|0,!(Q>>>0>2]+16>>2]))break}}if(!H)break e;if(m=J5+5596|0,u=t[m>>2],!u)break t;Gt(u),t[m>>2]=0,t[xx+5600>>2]=0}if(t[x+8>>2]=t[x+8>>2]&-129,dt[x+68|0]=xe[x+68|0]&254,ly=1,y=t[S+12>>2],O=y,m=t[S+8>>2],O|m?(y=t[S+56>>2],u=m-y|0,m=O-(t[S+60>>2]+(m>>>0>>0)|0)|0):(u=0,m=0),m=!(u|m),u=t[x+8>>2],m&(u|0)==64|(u|0)==256)break e;if((js(S,K4+10|0,2,M)|0)!=2){vt(M,t[x+184>>2]?1:2,4334,0),ly=!t[x+184>>2];break e}if(ue(K4+10|0,K4+12|0,2),u=t[K4+12>>2],(u|0)==65424)break e;if((u|0)==65497){t[x+8>>2]=256,t[x+204>>2]=0;break e}if(y=t[S+12>>2],O=y,m=t[S+8>>2],O|m?(y=t[S+56>>2],u=m-y|0,m=O-(t[S+60>>2]+(m>>>0>>0)|0)|0):(u=0,m=0),!(u|m)){t[x+8>>2]=64,vt(M,2,18620,0);break e}ly=0,vt(M,1,18556,0)}return Nt=K4+16|0,ly|0}function Fh(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=Ye(0),Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=Ye(0),Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=0,P0=0,U0=0,q0=0,no=0,fo=0;er=t[x+16>>2],G=t[er+4>>2],Cn=t[x+8>>2],Q=t[Cn+16>>2],m=t[er>>2],S=t[Cn+12>>2],O=t[x+20>>2],A=t[O>>2],M=t[O+8>>2],Oe=t[x+4>>2],se=t[x+24>>2];e:{if(!t[t[x+36>>2]>>2])break e;if(y=Kp(u),y||(y=oi(1,156),y&&(t[y+140>>2]=1),Hp(u,y)),u=S-m|0,m=t[er+16>>2],m&1&&(S=u,u=(t[O+28>>2]+De(Oe,152)|0)-152|0,u=(S+t[u+8>>2]|0)-t[u>>2]|0),S=Q-G|0,m&2&&(m=S,S=(t[O+28>>2]+De(Oe,152)|0)-152|0,S=(m+t[S+12>>2]|0)-t[S+4>>2]|0),!Tf(y,t[Cn+20>>2]-t[Cn+12>>2]|0,t[Cn+24>>2]-t[Cn+16>>2]|0)){t[t[x+36>>2]>>2]=0,Gt(x);return}Yt=t[y+128>>2],Tn=Yt&-4,H=M-A|0,me=t[O+36>>2]+(De(H,S)+u<<2)|0,M=t[y+116>>2],$n=t[y+124>>2];t:{if(t[se+20>>2]==1){n:{if(!Tn){A=0,S=M;break n}if(!$n)break t;for(A=0,S=M;;){for(Y=De(A,H),G=De(H,A|3),Q=De(H,A|2),u=De(H,A|1),m=0;t[S>>2]=t[me+(m+Y<<2)>>2]<<6,t[S+4>>2]=t[me+(u+m<<2)>>2]<<6,t[S+8>>2]=t[me+(m+Q<<2)>>2]<<6,t[S+12>>2]=t[me+(m+G<<2)>>2]<<6,S=S+16|0,m=m+1|0,($n|0)!=(m|0););if(A=A+4|0,!(Tn>>>0>A>>>0))break}}if(!$n|A>>>0>=Yt>>>0)break t;for(Q=Yt-A&3,u=Yt+(A^-1)>>>0<3;;){if(m=A,G=0,Q)for(;t[S>>2]=t[me+(De(m,H)+he<<2)>>2]<<6,m=m+1|0,S=S+4|0,G=G+1|0,(Q|0)!=(G|0););if(!u)for(;t[S>>2]=t[me+(De(m,H)+he<<2)>>2]<<6,t[S+4>>2]=t[me+(De(H,m+1|0)+he<<2)>>2]<<6,t[S+8>>2]=t[me+(De(H,m+2|0)+he<<2)>>2]<<6,t[S+12>>2]=t[me+(De(H,m+3|0)+he<<2)>>2]<<6,S=S+16|0,m=m+4|0,(Yt|0)!=(m|0););if(he=he+1|0,($n|0)==(he|0))break}break t}n:{if(!Tn){A=0,S=M;break n}if(!$n)break t;for(_r=Ue[er+32>>2],A=0,S=M;;){for(Y=De(A,H),G=De(H,A|3),Q=De(H,A|2),u=De(H,A|1),m=0;;){un=bc(Ye(Ye(Ue[me+(m+Y<<2)>>2]/_r)*Ye(64)));r:{if(Ye(Rr(un))>2]=re,un=bc(Ye(Ye(Ue[me+(u+m<<2)>>2]/_r)*Ye(64)));r:{if(Ye(Rr(un))>2]=re,un=bc(Ye(Ye(Ue[me+(m+Q<<2)>>2]/_r)*Ye(64)));r:{if(Ye(Rr(un))>2]=re,un=bc(Ye(Ye(Ue[me+(m+G<<2)>>2]/_r)*Ye(64)));r:{if(Ye(Rr(un))>2]=re,S=S+16|0,m=m+1|0,($n|0)==(m|0))break}if(A=A+4|0,!(Tn>>>0>A>>>0))break}}if(!$n|A>>>0>=Yt>>>0)break t;for(Y=De(A,H),G=Yt-A&1,_r=Ue[er+32>>2],u=A+1|0,Q=(u|0)==(Yt|0);;){if(G){un=bc(Ye(Ye(Ue[me+(Y+he<<2)>>2]/_r)*Ye(64)));n:{if(Ye(Rr(un))>2]=m,S=S+4|0,m=u}else m=A;if(!Q)for(;;){un=bc(Ye(Ye(Ue[me+(De(m,H)+he<<2)>>2]/_r)*Ye(64)));n:{if(Ye(Rr(un))>2]=Tn,un=bc(Ye(Ye(Ue[me+(De(H,m+1|0)+he<<2)>>2]/_r)*Ye(64)));n:{if(Ye(Rr(un))>2]=Tn,S=S+8|0,m=m+2|0,(Yt|0)==(m|0))break}if(he=he+1|0,($n|0)==(he|0))break}}Q=t[x+32>>2],Y=t[x+28>>2],Yt=t[se+16>>2],A=t[se+20>>2],G=t[x>>2],un=Ue[er+32>>2],u=t[O+20>>2],sr=t[er+16>>2],t[y+108>>2]=(sr<<9)+36688;t:{n:{r:{S=t[y+128>>2];i:{if(!S||(O=t[y+124>>2],!O))break i;for(Dr=u+(Oe^-1)|0,Bi=+un,u=0,he=0;;){if(m=0,O){for(;;){S=t[M>>2];a:{if((S|0)<0){S=0-((S|0)==-2147483648?-2147483647:S)|0,t[M>>2]=S|-2147483648,u=(u|0)>(S|0)?u:S;break a}u=(u|0)>(S|0)?u:S}if(M=M+4|0,m=m+1|0,(O|0)==(m|0))break}S=t[y+128>>2]}if(he=he+1|0,he>>>0>>0){O=t[y+124>>2];continue}break}if(u)break r}t[Cn+28>>2]=0;break n}r:{if((u|0)>1){for(S=0;m=S,S=m+1|0,M=u>>>0>3,u=u>>>1|0,!!M;);if(u=m-4|0,t[Cn+28>>2]=u,!u)break n;er=Cn+28|0;break r}u=-5,t[Cn+28>>2]=-5,er=Cn+28|0}if(k(y),t[y+100>>2]=36656,t[y+96>>2]=35280,t[y+28>>2]=35312,S=t[Cn>>2],t[y>>2]=0,t[y+4>>2]=32768,t[y+20>>2]=S,t[y+8>>2]=12,t[y+12>>2]=0,t[y+104>>2]=y+28,t[y+16>>2]=S-1,$e=u-1|0,($e|0)<0)break n;for(s0=(Y|0)!=0&G>>>0>>0,f0=Yt&2,li=Yt&16,P0=Yt&4,U0=Yt&32,gi=Yt&8,Tn=y+100|0,$n=y+96|0,ji=Yt&1,q0=Y+(G<<3)|0,no=Bi/+((sr?(sr|0)==3?4:2:1)|0),fo=(A|0)!=1,$r=2;;){Rn=$r>>>0<2&(t[Cn+28>>2]-4|0)>($e|0)&ji,Yt=t[Cn+8>>2]+De(Zr,24)|0;r:{if(!Zr|!(dt[Yt-4|0]&1))break r;if(Rn){t[y+8>>2]=-559038737,t[y>>2]=0;break r}t[y+8>>2]=12,t[y>>2]=0,t[y+4>>2]=32768,u=t[y+16>>2]-1|0,t[y+16>>2]=u,xe[u|0]==255&&(t[y+8>>2]=13)}r:{i:{a:{s:{o:{u:{l:switch($r|0){case 0:if(re=64<<$e,A=t[y+120>>2],Q=t[y+124>>2],M=(A+(Q<<2)|0)+12|0,he=t[y+116>>2],S=t[y+8>>2],m=t[y+4>>2],u=t[y>>2],G=t[y+104>>2],Ze=0,O=t[y+128>>2],O>>>0<4){Oe=0;break i}if(!Q)break u;for(Rt=$e?39248:39504,jt=re&2147483584,Oe=0;;){if(Q=0,me=t[y+124>>2],me){for(;;){O=t[M>>2];h:{if(!O)break h;f:{if(O&2097168||(A=O&495,!A))break f;Y=jt&t[he>>2],se=(Y|0)!=0,O=(xe[A+t[y+108>>2]|0]<<2)+y|0,G=O+28|0;p:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(se<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break p}if(A=t[O+28>>2],H=t[A>>2],m=m-H|0,(se|0)==t[A+4>>2]){if(!(m&32768)){for(t[O+28>>2]=t[A+8>>2],O=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break p}u=u+H|0;break p}for(t[O+28>>2]=t[A+12>>2],O=m,m=m>>>0>>0,O=m?O:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}p:{if(!Y)break p;H=M-4|0,A=t[M>>2],A=t[M+4>>2]>>>17&4|(t[H>>2]>>>19&1|(A>>>16&64|A&170|A>>>14&16)),_e=(xe[A+38736|0]<<2)+y|0,G=_e+28|0,se=t[he>>2],Ne=se>>>31|0,Y=tn[Rt+(((se&2147483647)>>>$e&127)<<1)>>1];c:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(Ne<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break c}if(O=t[_e+28>>2],kt=t[O>>2],m=m-kt|0,t[O+4>>2]==(Ne^xe[A+38992|0])){if(!(m&32768)){for(t[_e+28>>2]=t[O+8>>2],O=m>>>0>kt>>>0?m:kt,u=(m>>>0>=kt>>>0?kt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break c}u=u+kt|0;break c}for(t[_e+28>>2]=t[O+12>>2],O=m,m=m>>>0>>0,O=m?O:kt,u=(m?kt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}if(Ze=Y+Ze|0,A=t[y+124>>2],t[H>>2]=t[H>>2]|32,t[M+4>>2]=t[M+4>>2]|8,t[M>>2]=t[M>>2]|Ne<<19|16,gi)break p;A=(-2-A<<2)+M|0,t[A+4>>2]=t[A+4>>2]|32768,t[A>>2]=t[A>>2]|se&-2147483648|65536,A=A-4|0,t[A>>2]=t[A>>2]|131072}O=t[M>>2]|2097152,t[M>>2]=O}if(!(!(O&3960)|O&16777344)){O=(xe[t[y+108>>2]+(O>>>3&495)|0]<<2)+y|0,G=O+28|0,Y=jt&t[he+4>>2],A=(Y|0)!=0;f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(A<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(se=t[O+28>>2],H=t[se>>2],m=m-H|0,(A|0)==t[se+4>>2]){if(!(m&32768)){for(t[O+28>>2]=t[se+8>>2],O=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+H|0;break f}for(t[O+28>>2]=t[se+12>>2],O=m,m=m>>>0>>0,O=m?O:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}if(A=t[M>>2],Y){H=M-4|0,se=t[M+4>>2]>>>20&4|(t[H>>2]>>>22&1|(A>>>15&16|(A>>>19&64|A>>>3&170))),O=(xe[se+38736|0]<<2)+y|0,G=O+28|0,A=t[he+4>>2],Ne=A>>>31|0,Y=tn[Rt+(((A&2147483647)>>>$e&127)<<1)>>1];f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(Ne<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(A=t[O+28>>2],_e=t[A>>2],m=m-_e|0,t[A+4>>2]==(Ne^xe[se+38992|0])){if(!(m&32768)){for(t[O+28>>2]=t[A+8>>2],O=m>>>0>_e>>>0?m:_e,u=(m>>>0>=_e>>>0?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+_e|0;break f}for(t[O+28>>2]=t[A+12>>2],O=m,m=m>>>0<_e>>>0,O=m?O:_e,u=(m?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}Ze=Y+Ze|0,t[H>>2]=t[H>>2]|256,t[M+4>>2]=t[M+4>>2]|64,A=t[M>>2]|Ne<<22|128}O=A|16777216,t[M>>2]=O}if(!(!(O&31680)|O&134218752)){O=(xe[t[y+108>>2]+(O>>>6&495)|0]<<2)+y|0,G=O+28|0,Y=jt&t[he+8>>2],A=(Y|0)!=0;f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(A<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(se=t[O+28>>2],H=t[se>>2],m=m-H|0,(A|0)==t[se+4>>2]){if(!(m&32768)){for(t[O+28>>2]=t[se+8>>2],O=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+H|0;break f}for(t[O+28>>2]=t[se+12>>2],O=m,m=m>>>0>>0,O=m?O:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}if(A=t[M>>2],Y){H=M-4|0,se=t[M+4>>2]>>>23&4|(t[H>>2]>>>25&1|(A>>>18&16|(A>>>22&64|A>>>6&170))),O=(xe[se+38736|0]<<2)+y|0,G=O+28|0,A=t[he+8>>2],Ne=A>>>31|0,Y=tn[Rt+(((A&2147483647)>>>$e&127)<<1)>>1];f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(Ne<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(A=t[O+28>>2],_e=t[A>>2],m=m-_e|0,t[A+4>>2]==(Ne^xe[se+38992|0])){if(!(m&32768)){for(t[O+28>>2]=t[A+8>>2],O=m>>>0>_e>>>0?m:_e,u=(m>>>0>=_e>>>0?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+_e|0;break f}for(t[O+28>>2]=t[A+12>>2],O=m,m=m>>>0<_e>>>0,O=m?O:_e,u=(m?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}Ze=Y+Ze|0,t[H>>2]=t[H>>2]|2048,t[M+4>>2]=t[M+4>>2]|512,A=t[M>>2]|Ne<<25|1024}O=A|134217728,t[M>>2]=O}if(!(O&253440)|O&1073750016)break h;O=(xe[t[y+108>>2]+(O>>>9&495)|0]<<2)+y|0,G=O+28|0,Y=jt&t[he+12>>2],A=(Y|0)!=0;f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(A<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(se=t[O+28>>2],H=t[se>>2],m=m-H|0,(A|0)==t[se+4>>2]){if(!(m&32768)){for(t[O+28>>2]=t[se+8>>2],O=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+H|0;break f}for(t[O+28>>2]=t[se+12>>2],O=m,m=m>>>0>>0,O=m?O:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}if(Y){H=M-4|0,A=t[M>>2],se=t[M+4>>2]>>>26&4|(t[H>>2]>>>28&1|(A>>>25&64|A>>>9&170|A>>>21&16)),O=(xe[se+38736|0]<<2)+y|0,G=O+28|0,A=t[he+12>>2],Ne=A>>>31|0,Y=tn[Rt+(((A&2147483647)>>>$e&127)<<1)>>1];f:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(Ne<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break f}if(A=t[O+28>>2],_e=t[A>>2],m=m-_e|0,t[A+4>>2]==(Ne^xe[se+38992|0])){if(!(m&32768)){for(t[O+28>>2]=t[A+8>>2],O=m>>>0>_e>>>0?m:_e,u=(m>>>0>=_e>>>0?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break f}u=u+_e|0;break f}for(t[O+28>>2]=t[A+12>>2],O=m,m=m>>>0<_e>>>0,O=m?O:_e,u=(m?_e:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}A=t[y+124>>2],t[H>>2]=t[H>>2]|16384,t[M+4>>2]=t[M+4>>2]|4096,t[M>>2]=t[M>>2]|Ne<<28|8192,A=(A<<2)+M|0,t[A+4>>2]=t[A+4>>2]|4,t[A+12>>2]=t[A+12>>2]|1,t[A+8>>2]=t[A+8>>2]|Ne<<18|2,Ze=Y+Ze|0}t[M>>2]=t[M>>2]|1073741824}if(he=he+16|0,M=M+4|0,Q=Q+1|0,(me|0)==(Q|0))break}O=t[y+128>>2]}if(M=M+8|0,Oe=Oe+4|0,!(Oe>>>0<(O&-4)>>>0))break}break i;case 2:break o;case 1:break l;default:break r}jt=$e+6|0,O=t[y+124>>2],he=(t[y+120>>2]+(O<<2)|0)+12|0,Y=t[y+116>>2],S=t[y+8>>2],m=t[y+4>>2],u=t[y>>2],se=t[y+104>>2],Ze=0,Q=t[y+128>>2];l:{if(Q>>>0<4){Oe=0;break l}if(!O)break a;for(Ne=$e?39760:40016,G=1,Oe=0;;){if(A=0,M=0,G){for(;;){if(M=t[he>>2],!(!(M&9360)|(M&1226833920)==1226833920)){if((M&2097168)!=16)Q=M;else{me=((M&1048576?16:M&495?15:14)<<2)+y|0,se=me+28|0,Q=t[Y>>2]&2147483647,O=Q>>>jt&1,G=tn[Ne+((Q>>>$e&127)<<1)>>1];h:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(O<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break h}if(Q=t[me+28>>2],H=t[Q>>2],m=m-H|0,(O|0)==t[Q+4>>2]){if(!(m&32768)){for(t[me+28>>2]=t[Q+8>>2],O=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),Q=O&16384,m=O<<1,O=m,!Q;);break h}u=u+H|0;break h}for(t[me+28>>2]=t[Q+12>>2],O=m,m=m>>>0>>0,O=m?O:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),Q=O&16384,m=O<<1,O=m,!Q;);}Ze=G+Ze|0,Q=M|1048576}if((M&16777344)==128){H=((M&8388608?16:M&3960?15:14)<<2)+y|0,se=H+28|0,G=t[Y+4>>2]&2147483647,O=G>>>jt&1,me=tn[Ne+((G>>>$e&127)<<1)>>1];h:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(O<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break h}if(G=t[H+28>>2],re=t[G>>2],m=m-re|0,(O|0)==t[G+4>>2]){if(!(m&32768)){for(t[H+28>>2]=t[G+8>>2],O=m>>>0>re>>>0?m:re,u=(m>>>0>=re>>>0?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=O&16384,m=O<<1,O=m,!G;);break h}u=u+re|0;break h}for(t[H+28>>2]=t[G+12>>2],O=m,m=m>>>0>>0,O=m?O:re,u=(m?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=O&16384,m=O<<1,O=m,!G;);}Ze=me+Ze|0,Q=Q|8388608}if((M&134218752)==1024){H=((M&67108864?16:M&31680?15:14)<<2)+y|0,se=H+28|0,G=t[Y+8>>2]&2147483647,O=G>>>jt&1,me=tn[Ne+((G>>>$e&127)<<1)>>1];h:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(O<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break h}if(G=t[H+28>>2],re=t[G>>2],m=m-re|0,(O|0)==t[G+4>>2]){if(!(m&32768)){for(t[H+28>>2]=t[G+8>>2],O=m>>>0>re>>>0?m:re,u=(m>>>0>=re>>>0?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=O&16384,m=O<<1,O=m,!G;);break h}u=u+re|0;break h}for(t[H+28>>2]=t[G+12>>2],O=m,m=m>>>0>>0,O=m?O:re,u=(m?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=O&16384,m=O<<1,O=m,!G;);}Ze=me+Ze|0,Q=Q|67108864}if((M&1073750016)==8192){me=((M&536870912?16:M&253440?15:14)<<2)+y|0,se=me+28|0,M=t[Y+12>>2]&2147483647,G=M>>>jt&1,O=tn[Ne+((M>>>$e&127)<<1)>>1];h:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(G<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break h}if(M=t[me+28>>2],H=t[M>>2],m=m-H|0,(G|0)==t[M+4>>2]){if(!(m&32768)){for(t[me+28>>2]=t[M+8>>2],M=m>>>0>H>>>0?m:H,u=(m>>>0>=H>>>0?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=M&16384,m=M<<1,M=m,!G;);break h}u=u+H|0;break h}for(t[me+28>>2]=t[M+12>>2],M=m,m=m>>>0>>0,M=m?M:H,u=(m?H:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=M&16384,m=M<<1,M=m,!G;);}Ze=O+Ze|0,Q=Q|536870912}t[he>>2]=Q,O=t[y+124>>2]}if(Y=Y+16|0,he=he+4|0,A=A+1|0,!(O>>>0>A>>>0))break}Q=t[y+128>>2],M=O}if(he=he+8|0,G=M,Oe=Oe+4|0,!(Oe>>>0<(Q&-4)>>>0))break}}if(!O|Q>>>0<=Oe>>>0)break a;if(_e=Q-Oe|0,H=$e?39760:40016,A=0,Rn)break s;for(me=_e<<2,Oe=0;;){M=t[he>>2];l:{if(M&9360){for(G=0,A=Y;;){if(re=De(G,3),(2097168<>>re|0,Q=((m&1048576?16:m&495?15:14)<<2)+y|0,se=Q+28|0,Ne=t[se>>2],Rt=t[Ne>>2],m=O-Rt|0,M=t[A>>2]&2147483647,O=tn[H+((M>>>$e&127)<<1)>>1];h:{if(t[Ne+4>>2]!=(M>>>jt&1)){for(t[Q+28>>2]=t[Ne+12>>2],M=m,m=m>>>0>>0,M=m?M:Rt,u=(m?Rt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),Q=M&16384,m=M<<1,M=m,!Q;);break h}if(m&32768){u=u+Rt|0;break h}for(t[Q+28>>2]=t[Ne+8>>2],M=m>>>0>Rt>>>0?m:Rt,u=(m>>>0>=Rt>>>0?Rt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),Q=M&16384,m=M<<1,M=m,!Q;);}M=t[he>>2]|1048576<>2]=M,Ze=O+Ze|0}if(A=A+4|0,G=G+1|0,(_e|0)==(G|0))break}O=t[y+124>>2],Y=Y+me|0;break l}Y=Y+me|0}if(he=he+4|0,Oe=Oe+1|0,!(Oe>>>0>>0))break}break a}M=O&-4,M=(M>>>0<=4?4:M)-1|0,Oe=(M&-4)+4|0,M=(A+(M<<1&-8)|0)+20|0;break i}Rt=64<<$e,m=t[y+124>>2],Y=(t[y+120>>2]+(m<<2)|0)+12|0,se=t[y+116>>2],S=t[y+8>>2],M=t[y+4>>2],u=t[y>>2],A=t[y+104>>2],Ze=0,O=t[y+128>>2];o:{u:{if(O>>>0<4){me=0;break u}if(!m)break o;for(Ne=$e?39248:39504,bn=Rt&2147483584,G=1,me=0;;){if(jt=0,he=0,G){for(;;){l:{h:{f:{p:{c:{m:{if(he=t[Y>>2],!he){m=t[$n>>2],A=t[m>>2],M=M-A|0;g:{if(bn&t[se>>2]){G=0,Oe=0,Q=1;break g}if(G=0,bn&t[se+4>>2]){se=se+4|0,Oe=1,Q=1;break g}if(bn&t[se+8>>2]){se=se+8|0,Oe=2,Q=1;break g}if(bn&t[se+12>>2]){se=se+12|0,Oe=3,Q=1;break g}se=se+16|0,Oe=4,G=1,Q=0}g:{if((Q|0)==t[m+4>>2]){if(!(M&32768)){for(t[$n>>2]=t[m+8>>2],m=M>>>0>A>>>0?M:A,u=(M>>>0>=A>>>0?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=m&16384,M=m<<1,m=M,!A;);break g}u=u+A|0;break g}for(t[$n>>2]=t[m+12>>2],m=M,M=M>>>0>>0,m=M?m:A,u=(M?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=m&16384,M=m<<1,m=M,!A;);}if(G){A=$n;break l}m=t[Tn>>2],A=t[m>>2],O=M-A|0;g:{if(t[m+4>>2]==(Oe>>>1|0)){if(!(O&32768)){for(t[Tn>>2]=t[m+8>>2],m=O>>>0>A>>>0?O:A,u=(O>>>0>=A>>>0?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),M=m&16384,O=m<<1,m=O,!M;);break g}u=u+A|0;break g}for(t[Tn>>2]=t[m+12>>2],M=O>>>0>>0,m=M?O:A,u=(M?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),M=m&16384,O=m<<1,m=O,!M;);}m=t[Tn>>2],A=t[m>>2],M=O-A|0;g:{if(t[m+4>>2]==(Oe&1)){if(!(M&32768)){for(t[Tn>>2]=t[m+8>>2],m=M>>>0>A>>>0?M:A,u=(M>>>0>=A>>>0?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=m&16384,M=m<<1,m=M,!A;);break g}u=u+A|0;break g}for(t[Tn>>2]=t[m+12>>2],m=M,M=M>>>0>>0,m=M?m:A,u=(M?A:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=m&16384,M=m<<1,m=M,!A;);}if(m=t[Y>>2],(m&1226843280)==1226843280)break c;if(A=Tn,Q)break m;break h}if(Oe=0,m=he,(m&1226843280)!=1226843280)break m;break p}for(en=Y-4|0,G=Oe,Q=se;;){rr=De(G,3);m:{if(!(!he&(G|0)==(Oe|0))){if(m=m>>>rr|0,m&2097168)break m;m=(xe[t[y+108>>2]+(m&495)|0]<<2)+y|0,A=m+28|0,O=t[A>>2],re=t[O>>2],M=M-re|0,H=bn&t[Q>>2];g:{if(t[O+4>>2]==((H|0)!=0|0)){if(!(M&32768)){for(t[m+28>>2]=t[O+8>>2],m=M>>>0>re>>>0?M:re,u=(M>>>0>=re>>>0?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),O=m&16384,M=m<<1,m=M,!O;);break g}u=u+re|0;break g}for(t[m+28>>2]=t[O+12>>2],m=M,M=M>>>0>>0,m=M?m:re,u=(M?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),O=m&16384,M=m<<1,m=M,!O;);}if(!H)break m;m=t[Y>>2]}m=t[Y+4>>2]>>>rr+17&4|(t[en>>2]>>>rr+19&1|(m>>>(G?rr+12|0:14)&16|(m>>>rr+16&64|m>>>rr&170))),O=(xe[m+38736|0]<<2)+y|0,A=O+28|0,kt=t[A>>2],gr=t[kt>>2],M=M-gr|0,_e=t[Q>>2],H=tn[Ne+(((_e&2147483647)>>>$e&127)<<1)>>1],re=_e>>>31|0;g:{if(t[kt+4>>2]==(re^xe[m+38992|0])){if(!(M&32768)){for(t[O+28>>2]=t[kt+8>>2],m=M>>>0>gr>>>0?M:gr,u=(M>>>0>=gr>>>0?gr:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),O=m&16384,M=m<<1,m=M,!O;);break g}u=u+gr|0;break g}for(t[O+28>>2]=t[kt+12>>2],m=M,M=M>>>0>>0,m=M?m:gr,u=(M?gr:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),O=m&16384,M=m<<1,m=M,!O;);}if(O=t[y+124>>2],t[en>>2]=t[en>>2]|32<>2]=t[Y>>2]|(re<<19|16)<>2]=t[Y+4>>2]|8<>2]=t[m+4>>2]|32768,t[m>>2]=t[m>>2]|_e&-2147483648|65536,m=m-4|0,t[m>>2]=t[m>>2]|131072),Ze=H+Ze|0,(G|0)!=3)break m;m=(O+2<<2)+Y|0,t[m+4>>2]=t[m+4>>2]|1,t[m>>2]=t[m>>2]|re<<18|2,m=m-4|0,t[m>>2]=t[m>>2]|4}if(m=t[Y>>2]&(2097152<>2]=m,Q=Q+4|0,G=G+1|0,(G|0)==4)break}break h}A=Tn;c:{m:switch(Oe|0){case 1:Oe=1,m=m&-1224736769;break c;case 3:Oe=3,m=m&-1073741825;break c;case 0:break p;case 2:break m;default:break h}Oe=2,m=m&-1207959553}break f}Oe=0,m=m&-1226833921}t[Y>>2]=m}se=(4-Oe<<2)+se|0}if(Y=Y+4|0,m=t[y+124>>2],jt=jt+1|0,!(m>>>0>jt>>>0))break}O=t[y+128>>2],he=m}if(Y=Y+8|0,G=he,me=me+4|0,!(me>>>0<(O&-4)>>>0))break}}if(!m|O>>>0<=me>>>0)break o;for(Ne=$e?39248:39504,H=Rt&2147483584,Oe=0;;){u:{l:{if(m=t[Y>>2],(m&1226843280)!=1226843280){if((O|0)!=(me|0))break l;O=me;break u}t[Y>>2]=m&-1226833921,O=t[y+128>>2];break u}for(Rt=Y-4|0,he=0,Q=se;;){en=De(he,3),m=m>>>en|0;l:{if(m&2097168)break l;m=(xe[t[y+108>>2]+(m&495)|0]<<2)+y|0,A=m+28|0,G=t[A>>2],re=t[G>>2],M=M-re|0,O=H&t[Q>>2];h:{if(t[G+4>>2]==((O|0)!=0|0)){if(!(M&32768)){for(t[m+28>>2]=t[G+8>>2],m=M>>>0>re>>>0?M:re,u=(M>>>0>=re>>>0?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=m&16384,M=m<<1,m=M,!G;);break h}u=u+re|0;break h}for(t[m+28>>2]=t[G+12>>2],m=M,M=M>>>0>>0,m=M?m:re,u=(M?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=m&16384,M=m<<1,m=M,!G;);}if(!O)break l;m=t[Y>>2],m=t[Y+4>>2]>>>en+17&4|(t[Rt>>2]>>>en+19&1|(m>>>en+16&64|m>>>en&170|m>>>(he?en+12|0:14)&16)),G=(xe[m+38736|0]<<2)+y|0,A=G+28|0,jt=t[A>>2],kt=t[jt>>2],M=M-kt|0,_e=t[Q>>2],O=tn[Ne+(((_e&2147483647)>>>$e&127)<<1)>>1],re=_e>>>31|0;h:{if(t[jt+4>>2]==(re^xe[m+38992|0])){if(!(M&32768)){for(t[G+28>>2]=t[jt+8>>2],m=M>>>0>kt>>>0?M:kt,u=(M>>>0>=kt>>>0?kt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=m&16384,M=m<<1,m=M,!G;);break h}u=u+kt|0;break h}for(t[G+28>>2]=t[jt+12>>2],m=M,M=M>>>0>>0,m=M?m:kt,u=(M?kt:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),G=m&16384,M=m<<1,m=M,!G;);}if(G=t[y+124>>2],t[Rt>>2]=t[Rt>>2]|32<>2]=t[Y>>2]|(re<<19|16)<>2]=t[Y+4>>2]|8<>2]=t[m+4>>2]|32768,t[m>>2]=t[m>>2]|_e&-2147483648|65536,m=m-4|0,t[m>>2]=t[m>>2]|131072),Ze=O+Ze|0,(he|0)!=3)break l;m=(G+2<<2)+Y|0,t[m+4>>2]=t[m+4>>2]|1,t[m>>2]=t[m>>2]|re<<18|2,m=m-4|0,t[m>>2]=t[m>>2]|4}if(m=t[Y>>2]&(2097152<>2]=m,Q=Q+4|0,he=he+1|0,O=t[y+128>>2],!(he>>>0>>0))break}}if(Y=Y+4|0,se=(O-me<<2)+se|0,Oe=Oe+1|0,!(Oe>>>0>2]))break}}if(t[y+8>>2]=S,t[y+4>>2]=M,t[y>>2]=u,t[y+104>>2]=A,!U0)break r;for(t[y+104>>2]=y+100,m=t[y+4>>2],A=1;;){u=m,m=t[y+104>>2],M=t[m>>2],Q=t[M>>2],u=u-Q|0;o:{u:{if(t[M+4>>2]==(A&1)){if(t[y+4>>2]=u,u&32768)break u;for(S=t[y>>2],t[m>>2]=t[M+8>>2],m=u>>>0>Q>>>0?u:Q,u=S+(u>>>0>=Q>>>0?Q:0)|0,M=t[y+8>>2];;){M=M-1|0,t[y+8>>2]=M,S=u<<1,t[y>>2]=S,m=m<<1,t[y+4>>2]=m;l:{if(M){u=S;break l}h:{f:{if(M=t[y+16>>2],m=xe[M|0],(m|0)==255){u=M+1|0,t[y+16>>2]=u;break f}p:{if(!(u&67108864)){u=M+1|0,t[y+16>>2]=u,m=S>>>19|0;break p}if(dt[M|0]=m+1,u=t[y+16>>2],xe[u|0]==255){u=u+1|0,t[y+16>>2]=u,S=t[y>>2]&134217727,t[y>>2]=S;break f}u=u+1|0,t[y+16>>2]=u,m=t[y>>2]>>>19|0}M=8,S=524287;break h}m=S>>>20|0,M=7,S=1048575}dt[u|0]=m,t[y+8>>2]=M,u=S&t[y>>2],t[y>>2]=u,m=t[y+4>>2]}if(m&32768)break}break o}for(S=t[y>>2],t[m>>2]=t[M+12>>2],m=u,u=u>>>0>>0,m=u?m:Q,u=S+(u?Q:0)|0,M=t[y+8>>2];;){M=M-1|0,t[y+8>>2]=M,S=u<<1,t[y>>2]=S,m=m<<1,t[y+4>>2]=m;l:{if(M){u=S;break l}h:{f:{if(M=t[y+16>>2],m=xe[M|0],(m|0)==255){u=M+1|0,t[y+16>>2]=u;break f}p:{if(!(u&67108864)){u=M+1|0,t[y+16>>2]=u,m=S>>>19|0;break p}if(dt[M|0]=m+1,u=t[y+16>>2],xe[u|0]==255){u=u+1|0,t[y+16>>2]=u,S=t[y>>2]&134217727,t[y>>2]=S;break f}u=u+1|0,t[y+16>>2]=u,m=t[y>>2]>>>19|0}M=8,S=524287;break h}m=S>>>20|0,M=7,S=1048575}dt[u|0]=m,t[y+8>>2]=M,u=S&t[y>>2],t[y>>2]=u,m=t[y+4>>2]}if(m&32768)break}break o}t[y>>2]=Q+t[y>>2],m=u}if(A=A+1|0,(A|0)==5)break}break r}for(;;){G=t[he>>2];s:{if(G&9360){for(M=0;O=De(M,3),(2097168<>2]&2147483647,S=(S|0)==-559038737?7:S-1|0,u=((Oe>>>jt&1)<>>O|0,se=((Q&1048576?16:Q&495?15:14)<<2)+y|0,Q=tn[H+((Oe>>>$e&127)<<1)>>1],S||(dt[t[y+16>>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,G=t[he>>2],u=0),Ze=Q+Ze|0,G=1048576<>2]=G,se=se+28|0),Y=Y+4|0,M=M+1|0,(_e|0)!=(M|0););O=t[y+124>>2];break s}Y=(_e<<2)+Y|0}if(he=he+4|0,A=A+1|0,!(O>>>0>A>>>0))break}}t[y+8>>2]=S,t[y+4>>2]=m,t[y>>2]=u,t[y+104>>2]=se;break r}i:{if(O>>>0<=Oe>>>0||(Y=t[y+124>>2],!Y))break i;for(Ne=$e?39248:39504,H=re&2147483584,se=0;;){A=t[M>>2];a:{if(A){if(O>>>0<=Oe>>>0)break a;for(Rt=M-4|0,Q=Oe;;){_e=Q-Oe|0,bn=De(_e,3),Y=A>>>bn|0;s:{if(Y&2097168||(Y=Y&495,!Y))break s;me=(xe[Y+t[y+108>>2]|0]<<2)+y|0,G=me+28|0,Y=H&t[he>>2],A=(Y|0)!=0;o:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(A<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break o}if(O=t[me+28>>2],re=t[O>>2],m=m-re|0,(A|0)==t[O+4>>2]){if(!(m&32768)){for(t[me+28>>2]=t[O+8>>2],O=m>>>0>re>>>0?m:re,u=(m>>>0>=re>>>0?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break o}u=u+re|0;break o}for(t[me+28>>2]=t[O+12>>2],O=m,m=m>>>0>>0,O=m?O:re,u=(m?re:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}o:{if(!Y)break o;A=(Q|0)==(Oe|0),me=A&(gi|0)!=0,G=t[M>>2],A=t[M+4>>2]>>>bn+17&4|(t[Rt>>2]>>>bn+19&1|(G>>>bn+16&64|G>>>bn&170|G>>>(A?14:bn+12|0)&16)),jt=(xe[A+38736|0]<<2)+y|0,G=jt+28|0,re=t[he>>2],kt=re>>>31|0,Y=tn[Ne+(((re&2147483647)>>>$e&127)<<1)>>1];u:{if(Rn){if(S=(S|0)==-559038737?7:S-1|0,u=(kt<>2]]=u,S=t[y+16>>2],u=xe[S|0],t[y+16>>2]=S+1,S=(u|0)==255?7:8,u=0;break u}if(O=t[jt+28>>2],en=t[O>>2],m=m-en|0,t[O+4>>2]==(kt^xe[A+38992|0])){if(!(m&32768)){for(t[jt+28>>2]=t[O+8>>2],O=m>>>0>en>>>0?m:en,u=(m>>>0>=en>>>0?en:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);break u}u=u+en|0;break u}for(t[jt+28>>2]=t[O+12>>2],O=m,m=m>>>0>>0,O=m?O:en,u=(m?en:0)+u|0;u=u<<1,S=S-1|0,S||(t[y>>2]=u,u0(y),S=t[y+8>>2],u=t[y>>2]),A=O&16384,m=O<<1,O=m,!A;);}if(O=t[y+124>>2],t[Rt>>2]=t[Rt>>2]|32<>2]=t[M>>2]|(kt<<19|16)<>2]=t[M+4>>2]|8<>2]=t[A+4>>2]|32768,t[A>>2]=t[A>>2]|re&-2147483648|65536,A=A-4|0,t[A>>2]=t[A>>2]|131072),Ze=Y+Ze|0,(_e|0)!=3)break o;A=(O+2<<2)+M|0,t[A+4>>2]=t[A+4>>2]|1,t[A>>2]=t[A>>2]|kt<<18|2,A=A-4|0,t[A>>2]=t[A>>2]|4}A=t[M>>2]|2097152<>2]=A,O=t[y+128>>2]}if(he=he+4|0,Q=Q+1|0,!(Q>>>0>>0))break}Y=t[y+124>>2];break a}he=(O-Oe<<2)+he|0}if(M=M+4|0,se=se+1|0,!(se>>>0>>0))break}}t[y+8>>2]=S,t[y+4>>2]=m,t[y>>2]=u,t[y+104>>2]=G}Di=1,Di=s0?mr[q0>>3]:Di;r:{if(!fo){u=Dr>>>0>8&&sr?8:Dr,Ji=mr[(De(sr,80)+((Dr>>>0>9?sr?u:9:u)<<3)|0)+29744>>3],Qr=Bi;break r}u=Dr>>>0>8&&sr?8:Dr,Ji=mr[(De(sr,80)+((Dr>>>0>9?sr?u:9:u)<<3)|0)+30064>>3],Qr=no}Qr=Di*Ji*Qr*+(1<<$e),_i=_i+Qr*(Qr*+(Ze|0)*.0001220703125),mr[Yt+8>>3]=_i;r:{i:{a:{if(!$e&($r|0)==2|P0)break a;if(!ji)break i;if(u=t[er>>2]-4|0,($r|0)==2&(u|0)==($e|0))break a;if(!$r|(u|0)<=($e|0))break i}a:{if(Rn){M=0,A=0;s:{o:{u:{l:{if(u=t[y+8>>2],u>>>0>=7){if((u|0)!=7)break u;if(li)break o;if(S=t[y+16>>2]-1|0,xe[S|0]==255)break l;break o}if(u)break o;m=t[y>>2];break s}t[y+16>>2]=S;break a}u:{if((u|0)!=8|li||(u=t[y+16>>2],xe[u-1|0]!=127)||(u=u-2|0,xe[u|0]!=255))break u;t[y+16>>2]=u}break a}Y=u&3,m=t[y>>2];o:{if(u-1>>>0<3){S=0;break o}for(G=u&-4,S=0;O=m,m=S&255,S=1-S&255,m=((O+(m<>2]=m,t[y+8>>2]=0}dt[t[y+16>>2]]=m,t[y+16>>2]=t[y+16>>2]+1;break a}if(li){if(u=t[y+8>>2],S=12-u|0,(S|0)>0)for(M=t[y>>2];;){t[y+8>>2]=0,u=M<>2]=u;s:{o:{if(M=t[y+16>>2],m=xe[M|0],(m|0)==255){m=M+1|0,t[y+16>>2]=m;break o}u:{if(!(u&134217728)){m=M+1|0,t[y+16>>2]=m,A=u>>>19|0;break u}if(dt[M|0]=m+1,u=t[y+16>>2],xe[u|0]==255){m=u+1|0,t[y+16>>2]=m,u=t[y>>2]&134217727,t[y>>2]=u;break o}m=u+1|0,t[y+16>>2]=m,A=t[y>>2]>>>19|0}M=524287,u=8;break s}A=u>>>20|0,M=1048575,u=7}if(dt[m|0]=A,t[y+8>>2]=u,M=t[y>>2]&M,t[y>>2]=M,S=S-u|0,!((S|0)>0))break}if(m=t[y+16>>2],u=xe[m|0],(u|0)!=255){S=t[y>>2];s:{o:{if(!(S&134217728)){u=m+1|0,t[y+16>>2]=u,S=S>>>19|0;break o}if(dt[m|0]=u+1,u=t[y+16>>2],xe[u|0]==255){u=u+1|0,t[y+16>>2]=u,S=t[y>>2]&134217727,t[y>>2]=S,S=S>>>20|0,M=7,m=1048575;break s}u=u+1|0,t[y+16>>2]=u,S=t[y>>2]>>>19|0}M=8,m=524287}dt[u|0]=S,t[y+8>>2]=M,t[y>>2]=t[y>>2]&m}break a}u=t[y>>2],S=u|65535,u=(S>>>0>2]>>>0?S:S-32768|0)<>2],t[y>>2]=u;s:{o:{if(m=t[y+16>>2],S=xe[m|0],(S|0)==255){m=m+1|0,t[y+16>>2]=m;break o}u:{if(!(u&134217728)){m=m+1|0,t[y+16>>2]=m,u=u>>>19|0;break u}if(dt[m|0]=S+1,u=t[y+16>>2],xe[u|0]==255){m=u+1|0,t[y+16>>2]=m,u=t[y>>2]&134217727,t[y>>2]=u;break o}m=u+1|0,t[y+16>>2]=m,u=t[y>>2]>>>19|0}M=8,S=524287;break s}u=u>>>20|0,M=7,S=1048575}dt[m|0]=u,t[y+8>>2]=M,u=(t[y>>2]&S)<>2]=u;s:{o:{if(m=t[y+16>>2],S=xe[m|0],(S|0)==255){m=m+1|0,t[y+16>>2]=m;break o}u:{if(!(u&134217728)){m=m+1|0,t[y+16>>2]=m,u=u>>>19|0;break u}if(dt[m|0]=S+1,u=t[y+16>>2],xe[u|0]==255){m=u+1|0,t[y+16>>2]=m,u=t[y>>2]&134217727,t[y>>2]=u;break o}m=u+1|0,t[y+16>>2]=m,u=t[y>>2]>>>19|0}M=8,S=524287;break s}u=u>>>20|0,M=7,S=1048575}dt[m|0]=u,t[y+8>>2]=M,t[y>>2]=t[y>>2]&S,u=t[y+16>>2],xe[u|0]!=255&&(t[y+16>>2]=u+1)}dt[Yt+20|0]=xe[Yt+20|0]|1,u=t[y+16>>2]-t[y+20>>2]|0;break r}if(u=3,Rn){S=t[y+8>>2],u=1;i:{if(S>>>0<7||(u=0,(S|0)!=7)||(u=1,li))break i;u=xe[t[y+16>>2]-1|0]!=255}}dt[Yt+20|0]=xe[Yt+20|0]&254,u=(t[y+16>>2]-t[y+20>>2]|0)+u|0}if(t[Yt>>2]=u,S=$r+1|0,u=(S|0)==3,$e=$e-u|0,f0&&(t[y+28>>2]=35312,t[y+100>>2]=36656,t[y+92>>2]=35184,t[y+88>>2]=35184,t[y+84>>2]=35184,t[y+80>>2]=35184,t[y+76>>2]=35184,t[y+72>>2]=35184,t[y+68>>2]=35184,t[y- -64>>2]=35184,t[y+60>>2]=35184,t[y+56>>2]=35184,t[y+52>>2]=35184,t[y+48>>2]=35184,t[y+44>>2]=35184,t[y+40>>2]=35184,t[y+36>>2]=35184,t[y+32>>2]=35184,t[y+96>>2]=35280),$r=u?0:S,Zr=Zr+1|0,!(($e|0)>=0))break}if(t[Cn+48>>2]=Zr,!Zr||(m=t[y+16>>2]-t[y+20>>2]|0,A=t[Cn+48>>2],!A))break t;Q=t[Cn+8>>2],Y=A&3;r:{if(!Y){u=m,S=A;break r}for(M=0,S=A;S=S-1|0,G=Q+De(S,24)|0,u=t[G>>2],m>>>0>>0&&(t[G>>2]=m,u=m),m=u,M=M+1|0,(Y|0)!=(M|0););}if(A>>>0>=4)for(;G=Q+De(S,24)|0,M=G-24|0,m=t[M>>2],m>>>0>u>>>0&&(t[M>>2]=u,m=u),M=G-48|0,u=t[M>>2],m>>>0>>0&&(t[M>>2]=m,u=m),M=G-72|0,m=t[M>>2],m>>>0>u>>>0&&(t[M>>2]=u,m=u),S=S-4|0,M=Q+De(S,24)|0,u=t[M>>2],m>>>0>>0&&(t[M>>2]=m,u=m),!!S;);if(M=t[Cn>>2],S=Q,u=t[S>>2],m=u-1|0,xe[M+m|0]==255&&(t[Q>>2]=m,u=m),t[S+16>>2]=u,S=1,(A|0)==1)break t;for(;G=Q+De(S,24)|0,m=t[G>>2],u=m-1|0,xe[u+M|0]==255&&(t[G>>2]=u,m=u),t[G+16>>2]=m-t[G-24>>2],S=S+1|0,(A|0)!=(S|0););break t}t[Cn+48>>2]=0}if(!t[x+40>>2]){u=t[x+12>>2],mr[u+32>>3]=_i+mr[u+32>>3],Gt(x);return}if(S=t[x+40>>2],u=t[x+12>>2],mr[u+32>>3]=_i+mr[u+32>>3],!S)break e}Gt(x)}function xf(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=Ye(0),se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=Ye(0),kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=Ye(0),rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=Ye(0),Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=0;se=Nt-400|0,Nt=se;e:{if(!m|(!x|!u))break e;if(Y=t[u+5592>>2],Y-34>>>0<=4294967262){t[se+4>>2]=33,t[se>>2]=Y,vt(y,1,18109,se);break e}if(O=t[u+5596>>2],O-1025>>>0<=4294966274){t[se+16>>2]=O,vt(y,1,18358,se+16|0);break e}if(M=t[u+5600>>2],M-1025>>>0<=4294966274){t[se+32>>2]=M,vt(y,1,18283,se+32|0);break e}if(De(M,O)>>>0<4097){for(S=O;Q=A,A=A+1|0,me=S>>>0>3,S=S>>>1|0,!!me;);if(A=0,(M|0)>=2)for(S=M;A=A+1|0,me=S>>>0>3,S=S>>>1|0,!!me;);if((O|0)!=2<>2]=O,vt(y,1,18358,se+352|0),S=0;break e}if((M|0)!=1<>2]=M,vt(y,1,18358,se+336|0),S=0;break e}t:{if(!t[u+24>>2])break t;if(!t[u+32>>2]){S=0,vt(y,1,9415,0);break e}if(t[u+4788>>2]>=11){t[se+304>>2]=10,vt(y,1,17525,se+304|0),S=0;break e}if((Y|0)<11)break t;t[se+320>>2]=10,vt(y,1,17585,se+320|0),S=0;break e}S=t[m+16>>2],t[x+104>>2]=1,t[x+108>>2]=1,t[x+68>>2]=S;t:{if(Qn[u+18704>>1])break t;M=t[u+18676>>2]-1|0,M>>>0<=2&&(O=M<<2,t[u+18700>>2]=t[O+30880>>2],A=M<<4,S=A&31,tn[u+18704>>1]=(A&63)>>>0>=32?4>>>S|0:((1<>>S,t[u+18680>>2]=t[O+30892>>2]),S=3;n:{r:{i:{a:switch(O=t[u+18684>>2],O-3|0){case 0:break r;case 1:break i;default:break a}if(S=33024,(O|0)==33024)break r;if(M>>>0<3)break n;break t}S=4}tn[u+18704>>1]=S}vt(y,2,5466,0)}A=t[u+4788>>2];t:{if(!A){A=1,t[u+20>>2]=1,t[u+4788>>2]=1,t[u+4792>>2]=0;break t}if(t[u+20>>2]){if(S=1,A>>>0<2){A=1;break t}for(O=u+4792|0;;){er=Ue[O+(S<<2)>>2],Zr=Ye(ps(er,Ye(1))),M=S-1|0,re=Ue[O+(M<<2)>>2],Ze=Ye(ps(re,Ye(1)));n:{if(!(Zr>=Ze))break n;if(en=+er,er!=Zr){if(Rt=+re,$n=+Zr,re!=Ze){mr[se+168>>3]=Ze,mr[se+160>>3]=Rt,t[se+152>>2]=M,mr[se+144>>3]=$n,mr[se+136>>3]=en,t[se+128>>2]=S,vt(y,2,25866,se+128|0);break n}mr[se+208>>3]=Rt,t[se+200>>2]=M,mr[se+192>>3]=$n,mr[se+184>>3]=en,t[se+176>>2]=S,vt(y,2,9717,se+176|0);break n}if(Rt=+re,re!=Ze){mr[se+256>>3]=Ze,mr[se+248>>3]=Rt,t[se+240>>2]=M,mr[se+232>>3]=en,t[se+224>>2]=S,vt(y,2,25782,se+224|0);break n}mr[se+296>>3]=Rt,t[se+288>>2]=M,mr[se+280>>3]=en,t[se+272>>2]=S,vt(y,2,9651,se+272|0)}if(S=S+1|0,A=t[u+4788>>2],!(S>>>0>>0))break}break t}if(!t[u+28>>2])break t;if(S=1,A>>>0<2){A=1;break t}for(M=u+5192|0;re=Ue[M+(S<<2)>>2],O=S-1|0,Ze=Ue[M+(O<<2)>>2],!(re>3]=Ze,t[se+112>>2]=O,t[se+96>>2]=S,mr[se+104>>3]=re,vt(y,2,9801,se+96|0),A=t[u+4788>>2]),S=S+1|0,A>>>0>S>>>0;);}M=t[u+18700>>2];t:{if((M|0)<=0){if(re=Ue[((A<<2)+u|0)+4788>>2],re>Ye(0)){S=t[m+24>>2],re=Ye(+ln[m+16>>2]*+ln[S+8>>2]*+ln[S+12>>2]*+ln[S+24>>2]/(+re*8*+ln[S>>2]*+ln[S+4>>2])),M=re>Ye(2147483648),re=Ye(F(re));n:{if(Ye(Rr(re))>2]=M?2147483647:S;break t}t[u+18700>>2]=0;break t}if((A|0)!=1|(Qn[u+18704>>1]-1024&65535)>>>0>1435|Ue[u+4792>>2]!=Ye(0)||(S=t[m+24>>2],Ue[u+4792>>2]=Ye(De(De(De(t[S+8>>2],t[m+16>>2]),t[S+12>>2]),t[S+24>>2])>>>0)/Ye(De(t[S+4>>2],De(M,t[S>>2]))<<3>>>0)),!A)break t;if(S=t[m+24>>2],re=Ye(+ln[m+16>>2]*+ln[S+8>>2]*+ln[S+12>>2]*+ln[S+24>>2]/(+(M|0)*8*+ln[S>>2]*+ln[S+4>>2])),S=0,A>>>0>=4)for(Q=A&-4,O=0;M=S<<2,Y=(M+u|0)+4792|0,re>Ue[Y>>2]&&(Ue[Y>>2]=re,H=1),Y=((M|4)+u|0)+4792|0,re>Ue[Y>>2]&&(Ue[Y>>2]=re,H=1),Y=((M|8)+u|0)+4792|0,re>Ue[Y>>2]&&(Ue[Y>>2]=re,H=1),M=((M|12)+u|0)+4792|0,re>Ue[M>>2]&&(Ue[M>>2]=re,H=1),S=S+4|0,O=O+4|0,(Q|0)!=(O|0););if(M=A&3,M)for(;O=((S<<2)+u|0)+4792|0,re>Ue[O>>2]&&(Ue[O>>2]=re,H=1),S=S+1|0,G=G+1|0,(M|0)!=(G|0););if(!H)break t;vt(y,2,5060,0)}t:{n:{r:{i:{if(S=Qn[u+18704>>1],(S-3&65535)>>>0>=4&(S-1024&65535)>>>0>1435||(t[x+16>>2]=1,S=Qn[u+18704>>1],(S-3&65535)>>>0>3))break i;if(M=10798,(S-5&65535)>>>0<2)break r;O=0,S=Nt+-64|0,Nt=S,t[u+16>>2]=1,t[u>>2]=0,t[u+4>>2]=0,tn[u+18688>>1]=17153,t[u+18180>>2]=0,t[u+18184>>2]=0,t[u+8>>2]=0,t[u+12>>2]=1,t[u+18188>>2]=1,t[u+18192>>2]=1,t[u+5612>>2]=-1,t[u+5596>>2]=32,t[u+5600>>2]=32,t[u+5604>>2]=0,t[u+5608>>2]=1,M=t[u+4788>>2],(M|0)>=2&&(A=u+4792|0,re=Ue[(A+(M<<2)|0)-4>>2],t[S+48>>2]=M,mr[S+56>>3]=re,vt(y,2,2184,S+48|0),Ue[u+4792>>2]=Ue[(A+(t[u+4788>>2]<<2)|0)-4>>2],t[u+4788>>2]=1);a:{s:{o:{u:{l:{h:{f:{p:{c:switch(Qn[u+18704>>1]-3|0){case 0:if(H=t[u+5592>>2],(H|0)<7)break l;t[S>>2]=H+1,vt(y,2,26771,S),H=6;break p;case 1:break c;default:break h}if(H=t[u+5592>>2],(H|0)<=1){t[S+16>>2]=H+1,vt(y,2,26917,S+16|0),t[u+5592>>2]=1,t[u+40>>2]=t[u+40>>2]|1;break u}if(H>>>0<8)break f;t[S+32>>2]=H+1,vt(y,2,26617,S+32|0),H=7}t[u+5592>>2]=H}A=H-1|0,t[u+5620>>2]=A,t[u+40>>2]=t[u+40>>2]|1;break s}H=t[u+5592>>2]}if(t[u+40>>2]=t[u+40>>2]|1,(H|0)!=1)break o}t[u+5756>>2]=128,t[u+5620>>2]=1,t[u+5624>>2]=128,H=1;break a}if(A=H-1|0,t[u+5620>>2]=A,(H|0)<2)break a}if(G=0,A-1>>>0>=3)for(me=A&-4,M=u+5624|0,Q=u+5756|0;Y=G<<2,t[Y+M>>2]=256,t[Y+Q>>2]=256,_e=Y|4,t[_e+M>>2]=256,t[Q+_e>>2]=256,_e=Y|8,t[_e+M>>2]=256,t[Q+_e>>2]=256,Y=Y|12,t[Y+M>>2]=256,t[Y+Q>>2]=256,G=G+4|0,O=O+4|0,(me|0)!=(O|0););if(M=A&3,!M)break a;for(;O=(G<<2)+u|0,t[O+5756>>2]=256,t[O+5624>>2]=256,G=G+1|0,Ne=Ne+1|0,(M|0)!=(Ne|0););}t[u+44>>2]=4,G=0,Qn[u+18704>>1]==4&&(t[u+48>>2]=0,t[u+52>>2]=0,t[u+244>>2]=1,t[u+80>>2]=4,t[u- -64>>2]=3,M=H-1|0,t[u+60>>2]=M,t[u+56>>2]=1,t[u+96>>2]=1,t[u+228>>2]=4,t[u+212>>2]=3,t[u+208>>2]=H,t[u+200>>2]=0,t[u+204>>2]=1,t[u+196>>2]=M,G=2),t[u+20>>2]=1,t[u+4784>>2]=G,M=t[u+18700>>2];a:{if((M|0)<=0){t[u+18700>>2]=1302083,vt(y,2,22559,0);break a}if(M>>>0<1302084)break a;vt(y,2,19883,0),t[u+18700>>2]=1302083}M=t[u+18680>>2];a:{if((M|0)<=0){t[u+18680>>2]=1041666,vt(y,2,22410,0);break a}if(M>>>0<1041667)break a;vt(y,2,19710,0),t[u+18680>>2]=1041666}M=t[m+24>>2],Ue[u+4792>>2]=Ye(De(De(De(t[M+8>>2],t[m+16>>2]),t[M+12>>2]),t[M+24>>2])>>>0)/Ye(De(t[M+4>>2],De(t[u+18700>>2],t[M>>2]))<<3>>>0),Nt=S- -64|0,A=Qn[u+18704>>1],Ne=0,S=Nt-80|0,Nt=S;a:{s:{o:{if(M=t[m+16>>2],(M|0)==3){if(M=t[m+24>>2],t[M+32>>2]|t[M+24>>2]!=12){G=M+32|0,O=M+24|0;break o}if(Ne=1,G=M+84|0,O=M+76|0,t[G>>2]|t[O>>2]!=12||(Ne=2,G=M+136|0,O=M+128|0,t[G>>2]|t[O>>2]!=12))break o;G=1;u:switch(A-3|0){case 0:if(O=t[M+12>>2],M=t[M+8>>2],O>>>0<1081&M>>>0<=2048)break a;t[S+4>>2]=O,t[S>>2]=M,vt(y,2,15743,S);break s;case 1:break u;default:break a}if(O=t[M+12>>2],M=t[M+8>>2],O>>>0<2161&M>>>0<=4096)break a;t[S+20>>2]=O,t[S+16>>2]=M,vt(y,2,15578,S+16|0);break s}t[S+48>>2]=M,vt(y,2,16131,S+48|0);break s}M=xe[2362]|xe[2363]<<8|(xe[2364]<<16|xe[2365]<<24),dt[S+75|0]=M,dt[S+76|0]=M>>>8,dt[S+77|0]=M>>>16,dt[S+78|0]=M>>>24,t[S+72>>2]=xe[2359]|xe[2360]<<8|(xe[2361]<<16|xe[2362]<<24),dt[S- -64|0]=xe[2365],M=xe[2361]|xe[2362]<<8|(xe[2363]<<16|xe[2364]<<24),t[S+56>>2]=xe[2357]|xe[2358]<<8|(xe[2359]<<16|xe[2360]<<24),t[S+60>>2]=M,M=t[G>>2],t[S+36>>2]=t[O>>2],t[S+32>>2]=Ne,t[S+40>>2]=M?S+72|0:S+56|0,vt(y,2,15914,S+32|0)}G=0}if(Nt=S+80|0,!G)break n;break t}if(M=10860,(S&65535)==7||(M=10750,(S-256&65535)>>>0<524))break r;if((S-1024&65535)>>>0<=1435){A=0,t[u+5596>>2]!=64|t[u+5600>>2]!=64||(t[u+5596>>2]=32,t[u+5600>>2]=32),S=Qn[u+18704>>1],tn[u+18688>>1]=17153,t[u+44>>2]||(t[u+44>>2]=4),G=S&-256,(S&65024)!=1024&(G|0)!=1536||(t[u+5608>>2]=1),S=t[u+5592>>2];i:{if((S|0)!=6)break i;if(t[m>>2]){S=6;break i}if(S=6,t[m+4>>2])break i;H=t[u>>2],M=t[(H?u+12|0:m+8|0)>>2],O=6;a:{s:{o:switch((G&65535)-1024>>>8|0){case 3:if(M>>>0>2047||(S=5,M>>>0>1023))break s;break a;case 4:if(M>>>0>4095)break a;if(M>>>0>2047||(S=5,M>>>0>1023))break s;break a;case 0:break s;case 5:break o;default:break a}if(M>>>0>4095)break a;if(M>>>0>2047)break s;if(S=5,M>>>0<1024)break a}t[u+5592>>2]=S,O=S}a:{if(!H&&(G=t[m+8>>2],S=O-1|0,M=1<>>0>>0|M>>>0>ln[m+12>>2]))break a;S=O;break i}if(t[u+5592>>2]=S,M=O-2|0,H=1<>>0<=G>>>0&H>>>0<=ln[m+12>>2])break i;if(t[u+5592>>2]=M,S>>>0<2){S=M;break i}if(S=O-3|0,H=1<>>0>G>>>0|H>>>0>ln[m+12>>2])){S=M;break i}if(t[u+5592>>2]=S,M>>>0<2||(M=O-4|0,H=1<>>0<=G>>>0&H>>>0<=ln[m+12>>2]))break i;if(t[u+5592>>2]=M,S>>>0<2){S=M;break i}if(S=O-5|0,H=1<>>0>G>>>0|H>>>0>ln[m+12>>2])){S=M;break i}if(t[u+5592>>2]=S,M>>>0<2||(M=O-6|0,O=1<>>0<=G>>>0&O>>>0<=ln[m+12>>2]))break i;t[u+5592>>2]=M,S=M}i:{if(t[u+40>>2])break i;if(t[u+40>>2]=1,(S|0)==1){t[u+5756>>2]=128,t[u+5620>>2]=1,t[u+5624>>2]=128;break i}if(H=S-1|0,t[u+5620>>2]=H,(S|0)<2)break i;if(O=0,S-2>>>0>=3)for(Q=H&-4,S=u+5624|0,M=u+5756|0;G=O<<2,t[G+S>>2]=256,t[M+G>>2]=256,Y=G|4,t[Y+S>>2]=256,t[M+Y>>2]=256,Y=G|8,t[Y+S>>2]=256,t[M+Y>>2]=256,G=G|12,t[G+S>>2]=256,t[M+G>>2]=256,O=O+4|0,A=A+4|0,(Q|0)!=(A|0););if(S=H&3,!S)break i;for(;M=(O<<2)+u|0,t[M+5756>>2]=256,t[M+5624>>2]=256,O=O+1|0,Ne=Ne+1|0,(S|0)!=(Ne|0););}O=Nt-400|0,Nt=O,Q=t[(t[u>>2]?u+12|0:m+8|0)>>2],H=t[u+5592>>2],M=Qn[u+18704>>1],S=M&15;i:{a:{if(S>>>0>=12){t[O+336>>2]=S,vt(y,2,11283,O+336|0);break a}if(A=M>>>4&15,Y=Qn[(S<<1)+30528>>1],G=1,A>>>0<=Y>>>0)break i;t[O+360>>2]=A,t[O+356>>2]=S,t[O+352>>2]=Y,vt(y,2,11159,O+352|0)}G=0}S=t[m+16>>2],S>>>0>=4&&(t[O+320>>2]=S,vt(y,2,12251,O+320|0),G=0),S=t[m>>2],A=t[m+4>>2],S|A&&(t[O+304>>2]=S,t[O+308>>2]=(A|0)!=0,vt(y,2,11503,O+304|0),G=0),S=t[u+4>>2],A=t[u+8>>2],S|A&&(t[O+292>>2]=A,t[O+288>>2]=S,vt(y,2,11389,O+288|0),G=0),Y=M&65280;i:{if(!t[u>>2])break i;A=t[m+8>>2],S=t[u+12>>2];a:{if(!((M&65024)!=1024&(Y|0)!=1536)){if(me=t[m+12>>2],_e=t[u+16>>2],me>>>0<=_e>>>0&S>>>0>=A>>>0)break i;t[O+268>>2]=me,t[O+264>>2]=A,t[O+260>>2]=_e,t[O+256>>2]=S,vt(y,2,12396,O+256|0);break a}if(S>>>0>=A>>>0&ln[u+16>>2]>=ln[m+12>>2]||(A=t[u+16>>2],(S|0)==1024&(A|0)==1024))break i;t[O+276>>2]=A,t[O+272>>2]=S,vt(y,2,10915,O+272|0)}G=0}S=t[m+16>>2];i:{if(!S)break i;for(A=0;me=t[m+24>>2]+De(A,52)|0,t[me+24>>2]-8>>>0<=8&!t[me+32>>2]||(G=0,S=xe[2362]|xe[2363]<<8|(xe[2364]<<16|xe[2365]<<24),dt[O+395|0]=S,dt[O+396|0]=S>>>8,dt[O+397|0]=S>>>16,dt[O+398|0]=S>>>24,t[O+392>>2]=xe[2359]|xe[2360]<<8|(xe[2361]<<16|xe[2362]<<24),dt[O+384|0]=xe[2365],S=xe[2361]|xe[2362]<<8|(xe[2363]<<16|xe[2364]<<24),t[O+376>>2]=xe[2357]|xe[2358]<<8|(xe[2359]<<16|xe[2360]<<24),t[O+380>>2]=S,S=t[me+32>>2],t[O+244>>2]=t[me+24>>2],t[O+240>>2]=A,t[O+248>>2]=S?O+392|0:O+376|0,vt(y,2,12062,O+240|0),S=t[m+16>>2]),A=A+1|0,A>>>0>>0;);if(!S||(S=t[t[m+24>>2]>>2],(S|0)!=1&&(t[O+224>>2]=S,vt(y,2,15091,O+224|0),G=0),S=t[t[m+24>>2]+4>>2],(S|0)!=1&&(t[O+212>>2]=0,t[O+208>>2]=S,vt(y,2,13255,O+208|0),G=0),ln[m+16>>2]<2)||(S=t[t[m+24>>2]+52>>2],S-1>>>0>=2&&(t[O+192>>2]=S,vt(y,2,14989,O+192|0),G=0),S=t[t[m+24>>2]+56>>2],(S|0)!=1&&(t[O+180>>2]=1,t[O+176>>2]=S,vt(y,2,13255,O+176|0),G=0),A=2,ln[m+16>>2]<=2))break i;for(;S=De(A,52),me=S+t[m+24>>2]|0,_e=t[me>>2],me=t[me-52>>2],(_e|0)!=(me|0)&&(t[O+168>>2]=me,t[O+164>>2]=_e,t[O+160>>2]=A+1,vt(y,2,15335,O+160|0),G=0),S=t[(S+t[m+24>>2]|0)+4>>2],(S|0)!=1&&(t[O+148>>2]=A,t[O+144>>2]=S,vt(y,2,13255,O+144|0),G=0),A=A+1|0,A>>>0>2];);}S=Y-1024>>>8|0;i:{if(S>>>0>5){G=0;break i}a:{s:{o:{if(A=1<>2],me=t[A+12>>2],A=t[A+8>>2],me>>>0<3113&A>>>0<=4096)break a;t[O+116>>2]=me,t[O+112>>2]=A,vt(y,2,11914,O+112|0);break s}if(A=t[m+24>>2],me=t[A+12>>2],A=t[A+8>>2],me>>>0<1557&A>>>0<=2048)break a;t[O+100>>2]=me,t[O+96>>2]=A,vt(y,2,11618,O+96|0);break s}if(A=t[m+24>>2],me=t[A+12>>2],A=t[A+8>>2],me>>>0<6225&A>>>0<=8192)break a;t[O+132>>2]=me,t[O+128>>2]=A,vt(y,2,11766,O+128|0)}G=0}t[u+5612>>2]!=-1&&(vt(y,2,12552,0),G=0),A=t[u+5596>>2],me=t[u+5600>>2],(A|0)==32&(me|0)==32||(t[O+84>>2]=me,t[O+80>>2]=A,vt(y,2,13122,O+80|0),G=0),A=t[u+44>>2],(A|0)!=4&&(t[O+64>>2]=A,vt(y,2,14858,O- -64|0),G=0),A=t[u+4784>>2],A&&(t[O+48>>2]=A,vt(y,2,15467,O+48|0),G=0),A=t[u+5604>>2],A&&(t[O+32>>2]=A,vt(y,2,15188,O+32|0),G=0),A=t[u+5608>>2];a:{s:{if(!((M&65024)!=1024&(Y|0)!=1536)){if(M=12975,(A|0)!=1)break s;break a}if(M=12828,!A)break a}G=0,vt(y,2,M,0)}M=t[u+4788>>2],(M|0)!=1&&(t[O+16>>2]=M,vt(y,2,13368,O+16|0),G=0);a:{s:{o:switch(S|0){case 0:if(A=14598,H-2>>>0>=5)break s;break a;case 1:if(A=14478,H-2>>>0>=6)break s;break a;case 2:if(A=14218,H-2>>>0>=7)break s;break a;case 3:if(Q>>>0>=2048){if(A=14078,H-2>>>0>=5)break s;break a}if(Q>>>0<1024)break a;if(A=13637,H-2>>>0>=4)break s;break a;case 4:if(Q>>>0>=4096){if(A=14338,H-2>>>0>=6)break s;break a}if(Q>>>0>=2048){if(A=13784,H-2>>>0>=5)break s;break a}if(Q>>>0<1024)break a;if(A=13490,H-2>>>0>=4)break s;break a;case 5:break o;default:break a}if(Q>>>0>=8192){if(A=14718,H-2>>>0>=7)break s;break a}if(Q>>>0>=4096){if(A=13931,H-2>>>0>=6)break s;break a}if(Q>>>0>=2048){if(A=13784,H-2>>>0>=5)break s;break a}if(Q>>>0<1024||(A=13490,H-2>>>0<4))break a}t[O>>2]=H-1,vt(y,2,A,O),G=0}if(M=t[u+5620>>2],t[u+5592>>2]!=1){if(A=0,(M|0)<=0)break i;for(;S=(A<<2)+u|0,t[S+5624>>2]==256&t[S+5756>>2]==256||(G=0,vt(y,2,12685,0),M=t[u+5620>>2]),A=A+1|0,(A|0)<(M|0););break i}if(!((M|0)!=1|t[u+5624>>2]!=128)&t[u+5756>>2]==128)break i;G=0,vt(y,2,12685,0)}if(Nt=O+400|0,!G)break n;break t}if(S<<16>>16>=0)break t;if(S=S&65535,M=23551,(S|0)==32768)break r;if((S|0)==33024)break t;M=23492}vt(y,2,M,0)}tn[u+18704>>1]=0}t[x+160>>2]=t[u+18680>>2],tn[x+80>>1]=Qn[u+18704>>1];t:{if(t[u+24>>2]){t[x+176>>2]=2;break t}if(t[u+28>>2]){t[x+176>>2]=1;break t}t[x+176>>2]=0}if(t[u+24>>2]){if(M=De(De(t[u+4788>>2],t[u+5592>>2]),12),S=si(M),t[x+168>>2]=S,!S){S=0,vt(y,1,27700,0);break e}Yr(S,t[u+32>>2],M)}t[x+92>>2]=t[u+12>>2],t[x+96>>2]=t[u+16>>2],t[x+84>>2]=t[u+4>>2],t[x+88>>2]=t[u+8>>2],S=t[u+36>>2];t:{if(S){if(S=si(Nr(S)+1|0),t[x+100>>2]=S,!S){S=0,vt(y,1,9459,0);break e}O=t[u+36>>2];n:{r:{if((O^S)&3){M=xe[O|0];break r}if(O&3)for(;;){if(M=xe[O|0],dt[S|0]=M,!M)break n;if(S=S+1|0,O=O+1|0,!(O&3))break}if(M=t[O>>2],(M^-1)&M-16843009&-2139062144)break r;for(;t[S>>2]=M,M=t[O+4>>2],S=S+4|0,O=O+4|0,!(M-16843009&(M^-1)&-2139062144););}if(dt[S|0]=M,!(M&255))break n;for(;M=xe[O+1|0],dt[S+1|0]=M,S=S+1|0,O=O+1|0,!!M;);}break t}if(S=0,M=xe[30489]|xe[30490]<<8|(xe[30491]<<16|xe[30492]<<24),O=xe[30485]|xe[30486]<<8|(xe[30487]<<16|xe[30488]<<24),dt[se+389|0]=O,dt[se+390|0]=O>>>8,dt[se+391|0]=O>>>16,dt[se+392|0]=O>>>24,dt[se+393|0]=M,dt[se+394|0]=M>>>8,dt[se+395|0]=M>>>16,dt[se+396|0]=M>>>24,M=t[7621],t[se+384>>2]=t[7620],t[se+388>>2]=M,M=t[7619],t[se+376>>2]=t[7618],t[se+380>>2]=M,M=t[7617],t[se+368>>2]=t[7616],t[se+372>>2]=M,M=si((Nr(se+368|0)+Nr(3215)|0)+1|0),t[x+100>>2]=M,!M){vt(y,1,9513,0);break e}t[se+84>>2]=3215,t[se+80>>2]=se+368,O=Nt-16|0,Nt=O,G=se+80|0,t[O+12>>2]=G,S=Nt-160|0,Nt=S,H=S+8|0,Yr(H,48304,144),t[S+52>>2]=M,t[S+28>>2]=M,A=-2-M|0,A=A>>>0>2147483647?2147483647:A,t[S+56>>2]=A,M=M+A|0,t[S+36>>2]=M,t[S+24>>2]=M,fe(H,1377,G),A&&(M=t[S+28>>2],dt[M-((M|0)==t[S+24>>2])|0]=0),Nt=S+160|0,Nt=O+16|0}t:{if(t[u>>2]){if(S=t[x+92>>2],!S){S=0,vt(y,1,9395,0);break e}if(M=t[x+96>>2],!M){S=0,vt(y,1,4722,0);break e}if(A=t[m+8>>2]-t[x+84>>2]|0,G=A,O=A+S|0,H=S>>31,A=H+(A>>31)|0,A=O>>>0>>0?A+1|0:A,S=I0(O-1|0,A-!O|0,S,H),t[x+104>>2]=S,A=t[m+12>>2]-t[x+88>>2]|0,G=A,O=A+M|0,H=M>>31,A=H+(A>>31)|0,A=O>>>0>>0?A+1|0:A,M=I0(O-1|0,A-!O|0,M,H),t[x+108>>2]=M,S>>>0<=65535/(M>>>0)>>>0)break t;t[se+68>>2]=M,t[se+64>>2]=S,vt(y,1,25457,se- -64|0),S=0;break e}t[x+92>>2]=t[m+8>>2]-t[x+84>>2],t[x+96>>2]=t[m+12>>2]-t[x+88>>2]}if(xe[u+18688|0]&&(dt[x+172|0]=xe[u+18689|0],dt[x+180|0]=xe[x+180|0]|1),S=oi(De(t[x+108>>2],t[x+104>>2]),5644),t[x+156>>2]=S,S){if(De(t[x+108>>2],t[x+104>>2]))for(li=u+48|0;;){if(M=t[x+176>>2],he=t[x+156>>2]+De(gr,5644)|0,O=t[u+4788>>2],t[he+8>>2]=O,O)for(S=Qn[x+80>>1],A=(S-3&65535)>>>0<4|(S-1024&65535)>>>0<1436,S=0;;){t:{n:{if(A){if((M|0)!=1)break n;G=S<<2,H=G+he|0,G=u+G|0,Ue[H+5184>>2]=Ue[G+5192>>2],Ue[H+20>>2]=Ue[G+4792>>2];break t}if((M|0)!=1)break n;G=S<<2,Ue[(G+he|0)+5184>>2]=Ue[(u+G|0)+5192>>2];break t}if(G=S<<2,H=G+he|0,re=Ue[(u+G|0)+4792>>2],Ue[H+20>>2]=re,!(re<=Ye(1)))break t;t[H+20>>2]=0}if(S=S+1|0,(O|0)==(S|0))break}t[he>>2]=t[u+40>>2],t[he+4>>2]=t[u+44>>2],t[he+16>>2]=dt[u+18690|0],dt[he+5640|0]=xe[he+5640|0]&251;t:{n:{r:{i:{Cn=t[u+4784>>2];a:{if(Cn){for(G=gr+1|0,H=0,O=0;;){if((G|0)==t[(De(H,148)+u|0)+96>>2]){if(M=De(O,148),S=M+u|0,Q=t[S+52>>2],A=t[m+16>>2],Q>>>0>=A>>>0)break i;Y=t[S+48>>2],M=M+he|0,t[M+428>>2]=Q,t[M+424>>2]=Y,t[M+432>>2]=t[S+56>>2],t[M+436>>2]=t[S+60>>2],Q=t[S- -64>>2],t[M+440>>2]=A>>>0>Q>>>0?Q:A,t[M+456>>2]=t[S+80>>2],t[M+472>>2]=t[S+96>>2],O=O+1|0}if(H=H+1|0,(Cn|0)==(H|0))break}if(!O)break a;H=0,$e=t[u+4788>>2],kt=t[u+5592>>2],_e=t[m+16>>2],Rn=De(kt,_e),un=oi(De($e,Rn),4);s:{if(un){if(Cn)for(Yt=gr+1|0;;){Oe=De(H,148)+li|0;o:{if((Yt|0)!=t[Oe+48>>2]||(A=t[Oe>>2],M=t[Oe+12>>2],A>>>0>=(M>>>0>>0?M:kt)>>>0))break o;for(me=De(A,_e),Ne=t[Oe+16>>2];;){if(S=t[Oe+4>>2],S>>>0<(_e>>>0>Ne>>>0?Ne:_e)>>>0){for(G=S+me|0,Y=t[Oe+8>>2];;){if(Q=0,M=G,G=M+1|0,Y>>>0<$e>>>0?Y:$e){for(;t[un+(M<<2)>>2]=1,M=M+Rn|0,Q=Q+1|0,Y=t[Oe+8>>2],Q>>>0<(Y>>>0<$e>>>0?Y:$e)>>>0;);Ne=t[Oe+16>>2]}if(S=S+1|0,!(S>>>0<(_e>>>0>Ne>>>0?Ne:_e)>>>0))break}M=t[Oe+12>>2]}if(me=me+_e|0,A=A+1|0,!(A>>>0<(M>>>0>>0?M:kt)>>>0))break}}if(H=H+1|0,(Cn|0)==(H|0))break}o:{if(!_e|(!$e|!kt))break o;for(Cn=_e&-4,Oe=_e&3,A=0,Yt=_e-1>>>0<3,Y=0,G=0;;){for(S=A,me=0;;){if(Ne=0,M=S,!Yt)for(;H=un+(M<<2)|0,Y=t[H>>2]!=1|Y|t[H+4>>2]!=1|t[H+8>>2]!=1|t[H+12>>2]!=1,M=M+4|0,Ne=Ne+4|0,(Cn|0)!=(Ne|0););if(Q=0,Oe)for(;Y=t[un+(M<<2)>>2]!=1|Y,M=M+1|0,Q=Q+1|0,(Oe|0)!=(Q|0););if(S=S+_e|0,me=me+1|0,(kt|0)==(me|0))break}if(A=A+Rn|0,G=G+1|0,($e|0)==(G|0))break}if(!Y)break o;vt(y,1,18018,0)}Gt(un);break s}vt(y,1,19662,0)}S=he+5640|0,dt[S|0]=xe[S|0]|4,S=O-1|0}else S=0;t[he+420>>2]=S}if(S=oi(t[m+16>>2],1080),t[he+5584>>2]=S,!S){S=0,vt(y,1,5152,0);break e}if(_r=he+5584|0,t[u+18696>>2]){if(S=t[m+16>>2],rr=De(S,S)<<2,S=si(rr),!S){S=0,vt(y,1,7983,0);break e}if(gi=t[u+18696>>2],t[he+16>>2]=2,M=si(rr),t[he+5612>>2]=M,!M){Gt(S),S=0,vt(y,1,27880,0);break e}if(Yr(M,t[u+18696>>2],rr),me=Yr(S,t[u+18696>>2],rr),Ne=si(rr),t[he+5608>>2]=Ne,!Ne){Gt(me),S=0,vt(y,1,27772,0);break e}O=0,Y=0,M=0,G=0,kt=0,Oe=t[m+16>>2],S=si(Oe<<4);a:{if(!S)break a;un=Oe-1|0,Yt=Oe<<2,Q=pi(S,0,Yt),Dr=Q+Yt|0;s:{o:{if(Oe){if(A=Q,un>>>0>=7)for(S=Oe&-8;t[A>>2]=O,t[A+28>>2]=O|7,t[A+24>>2]=O|6,t[A+20>>2]=O|5,t[A+16>>2]=O|4,t[A+12>>2]=O|3,t[A+8>>2]=O|2,t[A+4>>2]=O|1,O=O+8|0,A=A+32|0,Y=Y+8|0,(S|0)!=(Y|0););if(S=Oe&7,S)for(Y=0;t[A>>2]=O,O=O+1|0,A=A+4|0,Y=Y+1|0,(S|0)!=(Y|0););if(!un)break o}for(bn=Oe-2|0,Cn=un,S=1,_e=me,H=Q;;){if((M|0)==(Oe|0))break s;Rn=M<<2,Y=Rn+_e|0,re=Ye(0);u:{if(!(Oe-M&1)){A=Y,O=M;break u}re=Ue[Y>>2],re=re>Ye(0)?re:Ye(-re),O=re>Ye(0),re=O?re:Ye(0),G=O?M:G,A=Y+Yt|0,O=M+1|0}if((M|0)!=(un|0))for(;Ze=Ue[A>>2],er=Ze>Ye(0)?Ze:Ye(-Ze),$e=er>re,jt=A+Yt|0,Ze=Ue[jt>>2],Ze=Ze>Ye(0)?Ze:Ye(-Ze),re=$e?er:re,A=Ze>re,re=A?Ze:re,G=A?O+1|0:$e?O:G,A=Yt+jt|0,O=O+2|0,(Oe|0)!=(O|0););if(re==Ye(0))break s;if((M|0)!=(G|0)&&(O=t[H>>2],A=((G<<2)+H|0)-Rn|0,t[H>>2]=t[A>>2],t[A>>2]=O,O=(De(Oe,G-M|0)<<2)+_e|0,A=Yr(Dr,O,Yt),Yr(O,_e,Yt),Yr(_e,A,Yt)),S>>>0>>0)for(sr=bn-M|0,Ze=Ue[Y>>2],Tn=un-M&3,$r=0-Cn|0,A=Y+4|0,O=Y+Yt|0,$e=S;;){if(re=Ye(Ue[O>>2]/Ze),Ue[O>>2]=re,O=O+4|0,re=Ye(-re),jt=0,Y=S,Tn)for(;Ue[O>>2]=Ye(re*Ue[A>>2])+Ue[O>>2],O=O+4|0,Y=Y+1|0,A=A+4|0,jt=jt+1|0,(Tn|0)!=(jt|0););if(sr>>>0>=3)for(;Ue[O>>2]=Ye(re*Ue[A>>2])+Ue[O>>2],Ue[O+4>>2]=Ye(re*Ue[A+4>>2])+Ue[O+4>>2],Ue[O+8>>2]=Ye(re*Ue[A+8>>2])+Ue[O+8>>2],Ue[O+12>>2]=Ye(re*Ue[A+12>>2])+Ue[O+12>>2],O=O+16|0,A=A+16|0,Y=Y+4|0,(Oe|0)!=(Y|0););if(O=O+Rn|0,A=($r<<2)+A|0,$e=$e+1|0,(Oe|0)==($e|0))break}if(H=H+4|0,Cn=Cn-1|0,S=S+1|0,_e=_e+Yt|0,M=M+1|0,(un|0)==(M|0))break}if(Oe)break o;Gt(Q),kt=1;break a}for(Tn=Oe<<2,_e=(Oe<<3)+Dr|0,$e=Tn+_e|0,bn=Tn+Dr|0,Cn=bn+Tn|0,_i=Oe&-4,$r=Oe&3,Rn=(me+(De(Oe,Oe)<<2)|0)-4|0,Di=(Oe^-1)<<2,sr=0;;){for(kt=pi(Dr,0,Yt),t[kt+(sr<<2)>>2]=1065353216,S=Q,M=me,H=_e,G=0;;){o:{if(!G){re=Ye(0);break o}if(re=Ye(0),O=M,A=_e,G>>>0>=4)for(jt=G&-4,Y=0;re=Ye(Ye(Ue[O+12>>2]*Ue[A+12>>2])+Ye(Ye(Ue[O+8>>2]*Ue[A+8>>2])+Ye(Ye(Ue[O+4>>2]*Ue[A+4>>2])+Ye(Ye(Ue[O>>2]*Ue[A>>2])+re)))),A=A+16|0,O=O+16|0,Y=Y+4|0,(jt|0)!=(Y|0););if(Y=0,jt=G&3,!jt)break o;for(;re=Ye(Ye(Ue[O>>2]*Ue[A>>2])+re),O=O+4|0,A=A+4|0,Y=Y+1|0,(jt|0)!=(Y|0););}if(Ue[H>>2]=Ue[kt+(t[S>>2]<<2)>>2]-re,H=H+4|0,S=S+4|0,M=M+Tn|0,G=G+1|0,(Oe|0)==(G|0))break}for(kt=0,S=Cn,H=$e,G=Rn,M=Oe;;){Y=M,M=M-1|0,O=S,S=S-4|0,H=H-4|0,Ze=Ue[G>>2],re=Ye(0);o:{if(Y>>>0>=Oe>>>0)break o;if(jt=0,A=G,Qr=kt&3,Qr)for(;Y=Y+1|0,re=Ye(Ye(Ue[A+4>>2]*Ue[O>>2])+re),A=A+4|0,O=O+4|0,jt=jt+1|0,(Qr|0)!=(jt|0););if(kt-1>>>0<3)break o;for(;re=Ye(Ye(Ue[A+16>>2]*Ue[O+12>>2])+Ye(Ye(Ue[A+12>>2]*Ue[O+8>>2])+Ye(Ye(Ue[A+8>>2]*Ue[O+4>>2])+Ye(Ye(Ue[A+4>>2]*Ue[O>>2])+re)))),O=O+16|0,A=A+16|0,Y=Y+4|0,(Oe|0)!=(Y|0););}if(Ue[S>>2]=Ye(Ue[H>>2]-re)/Ze,kt=kt+1|0,G=G+Di|0,!M)break}if(jt=0,O=Ne,A=0,M=0,un>>>0>=3)for(;S=A<<2,Ue[O>>2]=Ue[S+bn>>2],O=O+Tn|0,Ue[O>>2]=Ue[(S|4)+bn>>2],O=O+Tn|0,Ue[O>>2]=Ue[(S|8)+bn>>2],O=O+Tn|0,Ue[O>>2]=Ue[(S|12)+bn>>2],O=O+Tn|0,A=A+4|0,M=M+4|0,(_i|0)!=(M|0););if($r)for(;Ue[O>>2]=Ue[(A<<2)+bn>>2],A=A+1|0,O=O+Tn|0,jt=jt+1|0,($r|0)!=(jt|0););if(Ne=Ne+4|0,kt=1,sr=sr+1|0,(Oe|0)==(sr|0))break}}Gt(Q)}if(!kt){Gt(me),S=0,vt(y,1,27832,0);break e}if(G=si(t[m+16>>2]<<3),t[he+5604>>2]=G,!G){Gt(me),S=0,vt(y,1,27938,0);break e}if(A=t[he+5608>>2],M=0,S=t[m+16>>2],S)for(Y=S&-4,H=S&3,_e=S>>>0<4;;){if(en=0,O=M,Q=0,!_e)for(;Oe=S+O|0,Ne=Oe+S|0,$e=Ne+S|0,Rt=+Ue[A+($e<<2)>>2],Bi=Rt*Rt,Rt=+Ue[A+(Ne<<2)>>2],ji=Rt*Rt,Rt=+Ue[A+(Oe<<2)>>2],$n=Rt*Rt,Rt=+Ue[A+(O<<2)>>2],en=Bi+(ji+($n+(Rt*Rt+en))),O=S+$e|0,Q=Q+4|0,(Y|0)!=(Q|0););if(Q=0,H)for(;Rt=+Ue[A+(O<<2)>>2],en=Rt*Rt+en,O=S+O|0,Q=Q+1|0,(H|0)!=(Q|0););if(mr[G+(M<<3)>>3]=r(en),M=M+1|0,(S|0)==(M|0))break}Gt(me),G=t[m+16>>2];a:{if(!G)break a;if(M=rr+gi|0,A=t[_r>>2],O=0,S=0,G>>>0>=4)for(H=G&-4,me=0;t[(A+De(S,1080)|0)+1076>>2]=t[M+(S<<2)>>2],Q=S|1,t[(A+De(Q,1080)|0)+1076>>2]=t[M+(Q<<2)>>2],Q=S|2,t[(A+De(Q,1080)|0)+1076>>2]=t[M+(Q<<2)>>2],Q=S|3,t[(A+De(Q,1080)|0)+1076>>2]=t[M+(Q<<2)>>2],S=S+4|0,me=me+4|0,(H|0)!=(me|0););if(G=G&3,!G)break a;for(;t[(A+De(S,1080)|0)+1076>>2]=t[M+(S<<2)>>2],S=S+1|0,O=O+1|0,(G|0)!=(O|0););}$e=0,H=0;a:{s:{if(t[he+16>>2]==2){Y=t[he+5620>>2];o:{if(!t[he+5608>>2]){G=1;break o}if(t[he+5624>>2]==(Y|0)){if(S=Y+10|0,t[he+5624>>2]=S,S=Wi(t[he+5616>>2],De(S,20)),!S)break s;t[he+5616>>2]=S,M=t[he+5620>>2],pi(S+De(M,20)|0,0,De(t[he+5624>>2]-M|0,20)),Y=t[he+5620>>2]}if(O=t[he+5616>>2],$e=O+De(Y,20)|0,S=$e,M=t[S+12>>2],M&&(Gt(M),t[S+12>>2]=0),t[$e+4>>2]=1,t[$e+8>>2]=1,G=2,t[$e>>2]=2,_e=S,S=t[m+16>>2],A=De(S,S),Q=A<<2,M=si(Q),t[_e+12>>2]=M,S=0,!M)break a;Zt[t[(t[$e>>2]<<2)+30512>>2]](t[he+5608>>2],M,A),t[(O+De(Y,20)|0)+16>>2]=Q,Y=t[he+5620>>2]+1|0,t[he+5620>>2]=Y}if(t[he+5624>>2]==(Y|0)){if(S=Y+10|0,t[he+5624>>2]=S,S=Wi(t[he+5616>>2],De(S,20)),!S)break s;t[he+5616>>2]=S,M=t[he+5620>>2],$e=(Ji=pi(S+De(M,20)|0,0,De(t[he+5624>>2]-M|0,20))-20|0,s0=0,f0=$e,f0?Ji:s0),Y=t[he+5620>>2]}if(Oe=t[he+5616>>2],O=Oe+De(Y,20)|0,S=t[O+12>>2],S&&(Gt(S),t[O+12>>2]=0),t[O+4>>2]=2,t[O+8>>2]=G,t[O>>2]=2,A=t[m+16>>2],me=A<<2,M=si(me),t[O+12>>2]=M,S=0,!M)break a;if(S=si(me),!S){Gt(t[O+12>>2]),t[O+12>>2]=0,S=0;break a}o:{if(!A)break o;_e=A&3,Q=t[he+5584>>2];u:{if(A>>>0<4){M=S;break u}for(Ne=A&-4,M=S;Ue[M>>2]=t[Q+1076>>2],Ue[M+4>>2]=t[Q+2156>>2],Ue[M+8>>2]=t[Q+3236>>2],Ue[M+12>>2]=t[Q+4316>>2],Q=Q+4320|0,M=M+16|0,H=H+4|0,(Ne|0)!=(H|0););}if(!_e)break o;for(H=0;Ue[M>>2]=t[Q+1076>>2],Q=Q+1080|0,M=M+4|0,H=H+1|0,(_e|0)!=(H|0););}if(Zt[t[(t[O>>2]<<2)+30512>>2]](S,t[O+12>>2],A),Gt(S),t[(Oe+De(Y,20)|0)+16>>2]=me,t[he+5620>>2]=t[he+5620>>2]+1,M=t[he+5632>>2],(M|0)==t[he+5636>>2]){if(S=M+10|0,t[he+5636>>2]=S,S=Wi(t[he+5628>>2],De(S,20)),!S){Gt(t[he+5628>>2]),t[he+5636>>2]=0,t[he+5628>>2]=0,t[he+5632>>2]=0,S=0;break a}t[he+5628>>2]=S,M=t[he+5632>>2],pi(S+De(M,20)|0,0,De(t[he+5636>>2]-M|0,20)),M=t[he+5632>>2]}S=t[he+5628>>2]+De(M,20)|0,t[S+8>>2]=$e,dt[S+16|0]=xe[S+16|0]|1,M=t[m+16>>2],t[S+12>>2]=O,t[S>>2]=G+1,t[S+4>>2]=M,t[he+5632>>2]=t[he+5632>>2]+1}S=1;break a}Gt(t[he+5616>>2]),t[he+5624>>2]=0,t[he+5616>>2]=0,t[he+5620>>2]=0,S=0}if(S)break r;S=0,vt(y,1,9605,0);break e}a:{s:{if(t[he+16>>2]!=1)break s;if(H=t[m+16>>2],H>>>0<3)break a;S=t[m+24>>2],M=t[S>>2];o:{if((M|0)!=t[S+52>>2]|(M|0)!=t[S+104>>2]||(M=t[S+4>>2],(M|0)!=t[S+56>>2]))break o;if((M|0)==t[S+108>>2])break s}vt(y,2,23404,0),t[he+16>>2]=0}H=t[m+16>>2]}if(!H)break t;if(O=H&1,M=t[m+24>>2],S=0,(H|0)!=1)for(A=H&-2,H=0;G=M+De(S,52)|0,t[G+32>>2]||(t[(t[_r>>2]+De(S,1080)|0)+1076>>2]=1<>2]-1),G=S|1,Q=M+De(G,52)|0,t[Q+32>>2]||(t[(t[_r>>2]+De(G,1080)|0)+1076>>2]=1<>2]-1),S=S+2|0,H=H+2|0,(A|0)!=(H|0););if(!O||(M=M+De(S,52)|0,t[M+32>>2]))break n;t[(t[_r>>2]+De(S,1080)|0)+1076>>2]=1<>2]-1;break n}t[se+48>>2]=H,vt(y,1,17645,se+48|0),S=0;break e}if(!t[m+16>>2])break t}for(_e=0;;){if(Q=t[_r>>2]+De(_e,1080)|0,O=t[u+40>>2]&1,t[Q>>2]=O,M=t[u+5592>>2],t[Q+4>>2]=M,A=0,S=t[u+5596>>2],(S|0)>=2)for(;A=A+1|0,G=S>>>0>3,S=S>>>1|0,!!G;);if(t[Q+8>>2]=A,A=0,S=t[u+5600>>2],(S|0)>=2)for(;A=A+1|0,G=S>>>0>3,S=S>>>1|0,!!G;);t[Q+12>>2]=A,t[Q+16>>2]=t[u+5604>>2],S=t[u+5608>>2],t[Q+804>>2]=2,t[Q+20>>2]=!S,t[Q+24>>2]=((S|0)!=0)<<1,t[Q+808>>2]=t[u+5612>>2]==(_e|0)?t[u+5616>>2]:0;n:{if(O){if(me=0,O=M,(M|0)<=0)break n;for(;;){O=O-1|0,S=t[u+5620>>2];r:{if((S|0)>(me|0)){S=1,H=1,G=(me<<2)+u|0,A=t[G+5624>>2];i:{if((A|0)<=0||(H=0,(A|0)==1))break i;for(;H=H+1|0,Y=A>>>0>3,A=A>>>1|0,!!Y;);}if(t[(Q+(O<<2)|0)+812>>2]=H,A=t[G+5756>>2],(A|0)<=0||(S=0,(A|0)==1))break r;for(;S=S+1|0,G=A>>>0>3,A=A>>>1|0,!!G;);break r}S=S-1|0,H=(S<<2)+u|0,Y=me-S|0,A=t[H+5756>>2]>>Y,S=1,G=1,H=t[H+5624>>2]>>Y;i:{if((H|0)<=0||(G=0,(H|0)==1))break i;for(;G=G+1|0,Y=H>>>0>3,H=H>>>1|0,!!Y;);}if(t[(Q+(O<<2)|0)+812>>2]=G,(A|0)<=0||(S=0,(A|0)==1))break r;for(;S=S+1|0,G=A>>>0>3,A=A>>>1|0,!!G;);}if(t[(Q+(O<<2)|0)+944>>2]=S,me=me+1|0,(M|0)==(me|0))break}break n}if(!M)break n;for(S=0;M=Q+(S<<2)|0,t[M+944>>2]=15,t[M+812>>2]=15,S=S+1|0,S>>>0>2];);}if(S=t[(t[m+24>>2]+De(_e,52)|0)+24>>2],Y=0,M=t[Q+4>>2],me=De(M,3)-2|0,me)for(he=S+13|0,Oe=M-1|0,Ne=t[Q+24>>2],$e=t[Q+20>>2];;){O=0,M=0,Y&&(M=Y-1|0,S=(M>>>0)/3|0,O=S^-1,M=(M-De(S,3)|0)+1|0),H=$e&&M?M-1>>>0<2?1:2:0,Ne?(S=O+Oe|0,O=S>>>0>8&&M?8:S,$n=+(1<>>0>9?M?O:9:O)<<3)|0)+30064>>3]):$n=1,en=F($n*8192);n:{if(Rr(en)<2147483648){S=~~en;break n}S=-2147483648}if(O=0,A=0,M=S,(S|0)>=2){for(;A=O,O=O+1|0,G=M>>>0>3,M=M>>>1|0,!!G;);for(O=A^-1,A=0,M=S;G=A,A=A+1|0,kt=M>>>0>3,M=M>>>1|0,!!kt;);A=(G>>>0>10?S>>G-10:S<<10-G)&2047}if(S=Q+(Y<<3)|0,t[S+32>>2]=A,t[S+28>>2]=(H+he|0)+O,Y=Y+1|0,(me|0)==(Y|0))break}if(_e=_e+1|0,!(_e>>>0>2]))break}}if(gr=gr+1|0,!(gr>>>0>2],t[x+104>>2])>>>0))break}if(S=1,x=t[u+18696>>2],!x)break e;Gt(x),t[u+18696>>2]=0;break e}S=0,vt(y,1,5216,0);break e}vt(y,1,18650,0)}return Nt=se+400|0,S|0}function Tc(x,u,m,y,S,M){var O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=Ye(0),kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=Ye(0),bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=0,P0=0,U0=0,q0=Ye(0),no=0,fo=0,Ro=0,Vo=0,qo=0,Xo=0,ss=0;Di=Nt-16|0,Nt=Di;e:{if(S>>>0<=3){S=0,vt(M,1,7308,0);break e}lr(m,65427,2),t[u+4>>2]=t[x+8>>2],t[u+8>>2]=t[x+12>>2],t[x+12>>2]||(t[t[t[u+20>>2]>>2]+840>>2]=0),t[y>>2]=0;t:{if(se=t[x+60>>2],!se||(G=oi(1,12),G&&(t[G>>2]=se),G))break t;S=0,vt(M,1,16543,0);break e}if(se=S-4|0,er=t[x- -64>>2],se>>>0>>0){S=0,vt(M,1,7308,0),Qh(G);break e}S=0,Y=t[x+204>>2],U0=m+2|0,gi=y,ji=se-er|0,er=G,rr=Nt-1216|0,Nt=rr,se=u;t:{n:{r:{if(t[u+8>>2])break r;t[se+36>>2]=Y,t[se+32>>2]=t[t[se+28>>2]+76>>2]+De(Y,5644),$e=t[t[se+20>>2]>>2],me=t[$e+16>>2];i:{if(!me){Rt=t[se+32>>2],Y=t[$e+20>>2],me=0;break i}for(Rt=t[se+32>>2],G=t[Rt+5584>>2],Y=t[$e+20>>2],H=Y;;){_e=De(t[H+12>>2]-t[H+4>>2]|0,t[H+8>>2]-t[H>>2]|0),O=t[H+36>>2];a:{if(t[G+20>>2]!=1){if(!_e)break a;if(u=t[G+1076>>2],_e>>>0>=4)for(un=_e&-4,y=0;Ue[O>>2]=t[O>>2]-u|0,Ue[O+4>>2]=t[O+4>>2]-u|0,Ue[O+8>>2]=t[O+8>>2]-u|0,Ue[O+12>>2]=t[O+12>>2]-u|0,O=O+16|0,y=y+4|0,(un|0)!=(y|0););if(y=0,_e=_e&3,!_e)break a;for(;Ue[O>>2]=t[O>>2]-u|0,O=O+4|0,y=y+1|0,(_e|0)!=(y|0););break a}if(!_e)break a;if(_e>>>0>=4)for(y=_e&-4,u=0;t[O>>2]=t[O>>2]-t[G+1076>>2],t[O+4>>2]=t[O+4>>2]-t[G+1076>>2],t[O+8>>2]=t[O+8>>2]-t[G+1076>>2],t[O+12>>2]=t[O+12>>2]-t[G+1076>>2],O=O+16|0,u=u+4|0,(y|0)!=(u|0););if(u=0,y=_e&3,y)for(;t[O>>2]=t[O>>2]-t[G+1076>>2],O=O+4|0,u=u+1|0,(y|0)!=(u|0););me=t[$e+16>>2]}if(H=H+76|0,G=G+1080|0,re=re+1|0,!(me>>>0>re>>>0))break}}_e=De(t[Y+12>>2]-t[Y+4>>2]|0,t[Y+8>>2]-t[Y>>2]|0);i:{a:switch(t[Rt+16>>2]){case 2:if(!t[Rt+5612>>2])break i;if(Rt=0,me=si(me<<2),!me)break t;re=t[$e+16>>2];s:{if(!re)break s;G=re&3,y=0;o:{if(re>>>0<4){O=0;break o}for($e=re&-4,O=0,H=0;u=O<<2,t[u+me>>2]=t[Y+36>>2],t[me+(u|4)>>2]=t[Y+112>>2],t[me+(u|8)>>2]=t[Y+188>>2],t[me+(u|12)>>2]=t[Y+264>>2],O=O+4|0,Y=Y+304|0,H=H+4|0,($e|0)!=(H|0););}if(!G)break s;for(;t[me+(O<<2)>>2]=t[Y+36>>2],O=O+1|0,Y=Y+76|0,y=y+1|0,(G|0)!=(y|0););}y=t[t[se+32>>2]+5612>>2],u=De(re,re),Y=si(u+re<<2),G=0;s:{if(!Y)break s;G=Y+(re<<2)|0;o:{if(!u)break o;if(u>>>0>=4)for($e=u&-4;;){O=he<<2,Yt=O+G|0,Ze=Ye(Ue[y>>2]*Ye(8192));u:{if(Ye(Rr(Ze))>2]=H,Yt=G+(O|4)|0,Ze=Ye(Ue[y+4>>2]*Ye(8192));u:{if(Ye(Rr(Ze))>2]=H,Yt=G+(O|8)|0,Ze=Ye(Ue[y+8>>2]*Ye(8192));u:{if(Ye(Rr(Ze))>2]=H,O=G+(O|12)|0,Ze=Ye(Ue[y+12>>2]*Ye(8192));u:{if(Ye(Rr(Ze))>2]=H,he=he+4|0,y=y+16|0,Oe=Oe+4|0,($e|0)==(Oe|0))break}if(O=u&1,!O)break o;for(;;){H=G+(he<<2)|0,Ze=Ye(Ue[y>>2]*Ye(8192));u:{if(Ye(Rr(Ze))>2]=u,he=he+1|0,y=y+4|0,Q=Q+1|0,(O|0)==(Q|0))break}}if(!(!_e|!re))for($n=re&-2,sr=re&1,gr=re&-4,$e=re&3,un=re-1|0;;){if(y=0,Oe=0,un>>>0>=3)for(;u=y<<2,t[u+Y>>2]=t[t[u+me>>2]>>2],Q=u|4,t[Q+Y>>2]=t[t[Q+me>>2]>>2],Q=u|8,t[Q+Y>>2]=t[t[Q+me>>2]>>2],u=u|12,t[u+Y>>2]=t[t[u+me>>2]>>2],y=y+4|0,Oe=Oe+4|0,(gr|0)!=(Oe|0););if(he=0,$e)for(;u=y<<2,t[u+Y>>2]=t[t[u+me>>2]>>2],y=y+1|0,he=he+1|0,($e|0)!=(he|0););for(y=G,O=0;;){if(Yt=me+(O<<2)|0,u=t[Yt>>2],t[u>>2]=0,Q=0,he=0,Oe=0,un)for(;Cn=he<<2,H=t[Cn+Y>>2],bn=H,_r=H>>31,H=t[y>>2],bn=N0(bn,_r,H,H>>31),H=Gi,bn=bn+4096|0,Q=(((bn>>>0<4096?H+1|0:H)&8191)<<19|bn>>>13)+Q|0,t[u>>2]=Q,H=t[Y+(Cn|4)>>2],bn=H,Cn=H>>31,H=t[y+4>>2],Cn=N0(bn,Cn,H,H>>31),H=Gi,Cn=Cn+4096|0,Q=(((Cn>>>0<4096?H+1|0:H)&8191)<<19|Cn>>>13)+Q|0,t[u>>2]=Q,he=he+2|0,y=y+8|0,Oe=Oe+2|0,($n|0)!=(Oe|0););if(sr&&(H=t[Y+(he<<2)>>2],bn=H,he=H>>31,H=t[y>>2],he=N0(bn,he,H,H>>31),H=Gi,he=he+4096|0,t[u>>2]=(((he>>>0<4096?H+1|0:H)&8191)<<19|he>>>13)+Q,y=y+4|0),t[Yt>>2]=u+4,O=O+1|0,(re|0)==(O|0))break}if(Tn=Tn+1|0,(_e|0)==(Tn|0))break}Gt(Y),G=1}if(Gt(me),G)break i;break t;case 0:break i;default:break a}if(u=t[Y+188>>2],y=t[Y+112>>2],G=t[Y+36>>2],!t[t[Rt+5584>>2]+20>>2]){if(_e)for(;Y=Q<<2,O=Y+G|0,H=u+Y|0,Ze=Ue[H>>2],Rn=Ue[O>>2],Y=y+Y|0,q0=Ue[Y>>2],Ue[O>>2]=Ye(Ze*Ye(.11400000005960464))+Ye(Ye(Rn*Ye(.29899999499320984))+Ye(q0*Ye(.5870000123977661))),Ue[Y>>2]=Ye(Ze*Ye(.5))+Ye(Ye(Rn*Ye(-.16875000298023224))+Ye(q0*Ye(-.33125999569892883))),Ue[H>>2]=Ye(Ze*Ye(-.08130999654531479))+Ye(Ye(Rn*Ye(.5))+Ye(q0*Ye(-.4186899960041046))),Q=Q+1|0,(_e|0)!=(Q|0););break i}if(_e)for(;Q=he<<2,O=Q+G|0,Yt=O,O=t[O>>2],H=y+Q|0,Y=t[H>>2],Q=u+Q|0,re=t[Q>>2],t[Yt>>2]=(O+(Y<<1)|0)+re>>2,t[H>>2]=re-Y,t[Q>>2]=O-Y,he=he+1|0,(_e|0)!=(he|0););}if(y=t[t[se+20>>2]>>2],t[y+16>>2])for(O=t[t[se+32>>2]+5584>>2],G=t[y+20>>2],u=0;;){i:{a:switch(t[O+20>>2]){case 1:if(_4(t[se+44>>2],G,109,110))break i;break n;case 0:break a;default:break i}if(!_4(t[se+44>>2],G,115,116))break n}if(O=O+1080|0,G=G+76|0,u=u+1|0,!(u>>>0>2]))break}me=t[se+32>>2];i:{if(t[me+16>>2]==1){if(!t[t[me+5584>>2]+20>>2]){G=3,u=29712;break i}G=3,u=29680;break i}G=t[t[se+24>>2]+16>>2],u=t[me+5604>>2]}Y=t[t[se+20>>2]>>2],Oe=0,H=Nt-16|0,Nt=H,t[H+12>>2]=1,$n=t[se+44>>2],_e=Vk(),t[Y+32>>2]=0,t[Y+36>>2]=0,re=t[Y+16>>2];i:{if(!re)break i;for(;;){a:{if($e=t[Y+20>>2]+De(Oe,76)|0,Q=t[$e+20>>2],Q){for(sr=t[me+5584>>2]+De(Oe,1080)|0,Tn=0;;){if(O=t[$e+28>>2]+De(Tn,152)|0,t[O+24>>2]){for(he=0;;){gr=O+De(he,36)|0,Yt=gr+28|0,y=Yt,t[y+8>>2]!=t[y>>2]?y=t[y+12>>2]==t[y+4>>2]:y=1;s:{if(y||(Q=t[O+16>>2],re=t[O+20>>2],!De(Q,re)))break s;for(un=0;;){if(Rt=t[gr+48>>2]+De(un,40)|0,De(t[Rt+20>>2],t[Rt+16>>2])){for(re=0;;){if(Q=t[Rt+24>>2],y=oi(1,44),!y)break a;if(t[y+12>>2]=Y,t[y>>2]=Oe,t[y+40>>2]=_e,t[y+32>>2]=G,t[y+28>>2]=u,t[y+24>>2]=sr,t[y+20>>2]=$e,t[y+16>>2]=Yt,t[y+4>>2]=Tn,t[y+8>>2]=Q+De(re,52),t[y+36>>2]=H+12,Be($n,250,y),re=re+1|0,!(re>>>0>2],t[Rt+16>>2])>>>0))break}re=t[O+20>>2],Q=t[O+16>>2]}if(un=un+1|0,!(un>>>0>>0))break}}if(he=he+1|0,!(he>>>0>2]))break}Q=t[$e+20>>2]}if(Tn=Tn+1|0,!(Tn>>>0>>0))break}re=t[Y+16>>2]}if(Oe=Oe+1|0,Oe>>>0>>0)continue;break i}break}t[H+12>>2]=0}if(Za(t[se+44>>2]),_e&&C(_e),Nt=H+16|0,!t[H+12>>2])break n;if(Tn=t[se+28>>2],t[rr+12>>2]=0,ln[Tn+96>>2]<=1){Rt=t[se+32>>2],Y=0,he=t[t[se+20>>2]>>2],t[he+24>>2]=0,Cn=t[he+16>>2];i:{if(!Cn){$r=17976931348623157e292;break i}for(bn=t[he+20>>2],Ji=t[t[se+24>>2]+24>>2],$r=17976931348623157e292,H=0;;){$e=bn+De(H,76)|0,t[$e+72>>2]=0,Bi=t[$e+20>>2];a:{if(!Bi){me=0;break a}for(no=t[$e+28>>2],me=0,Q=0;;){if(un=no+De(Q,152)|0,s0=t[un+24>>2],s0)for(Oe=0;;){u=un+De(Oe,36)|0;s:{if(t[u+36>>2]==t[u+28>>2]|t[u+40>>2]==t[u+32>>2]||(f0=De(t[un+20>>2],t[un+16>>2]),!f0))break s;for(P0=t[u+48>>2],_e=0;;){if($n=P0+De(_e,40)|0,_r=De(t[$n+20>>2],t[$n+16>>2]),_r)for(re=0;;){y=t[$n+24>>2]+De(re,52)|0,sr=t[y+48>>2];o:{if(!sr||(gr=t[y+8>>2],G=t[gr>>2],G&&(A=mr[gr+8>>3]/+(G|0),_i=A>_i?A:_i,$r=A<$r?A:$r),O=1,(sr|0)==1))break o;for(;Yt=gr+De(O,24)|0,u=t[Yt>>2],(u|0)!=(G|0)&&(A=(mr[Yt+8>>3]-mr[Yt-16>>3])/+(u-G|0),_i=A>_i?A:_i,$r=A<$r?A:$r),G=u,O=O+1|0,(sr|0)!=(O|0););}if(u=De(t[y+24>>2]-t[y+16>>2]|0,t[y+20>>2]-t[y+12>>2]|0),Y=u+Y|0,t[he+24>>2]=Y,me=u+me|0,t[$e+72>>2]=me,re=re+1|0,(_r|0)==(re|0))break}if(_e=_e+1|0,(f0|0)==(_e|0))break}}if(Oe=Oe+1|0,(s0|0)==(Oe|0))break}if(Q=Q+1|0,(Bi|0)==(Q|0))break}}if(A=+(1<>2])+-1,Vo=A*A*+(me>>>0)+Vo,H=H+1|0,(Cn|0)==(H|0))break}}if(!t[Rt+8>>2])break r;for(O=0;;){y=Rt+(O<<2)|0,Rn=Ue[y+20>>2],Ze=Ye(He(Rn));i:{if(Ze=Ye(0)){Q=~~Ze>>>0;break i}Q=0}Oe=Rn>Ye(0),me=t[Tn+96>>2],re=Nt-16|0,Nt=re,Ze=Ue[y+5184>>2],Ne=+Ye(Ze/Ye(10)),Ae(+Ne),u=Re(1)|0,y=Re(0)|0,Y=u>>>20|0,_e=Y&2047,$e=_e-1086|0;i:{if($e>>>0<=4294967167){if(G=(u<<1|y>>>31)+2097152|0,!(y<<1)&(G|0)==2097152|G>>>0<2097152){if(G=u<<1|y>>>31,y=y<<1,A=1,!(G|y)||(A=Ne+10,(G|0)==-2097152&(y|0)!=0|G>>>0>4292870144))break i;A=(u|0)<0?0:Ne*Ne;break i}if($e>>>0<=4294967167){if(A=Ne+1,_e>>>0<=957)break i;if(Y>>>0<2048){u=Nt-16|0,mr[u+8>>3]=3105036184601418e216,A=mr[u+8>>3]*3105036184601418e216;break i}u=Nt-16|0,mr[u+8>>3]=12882297539194267e-247,A=mr[u+8>>3]*12882297539194267e-247;break i}}A=mr[5828],jt=A*1.25+-1,Dr=A*0,A=jt+Dr,li=mr[5391]*3+mr[5830],kt=A+li,Zr=mr[5393],en=A*Zr,Zr=jt*Zr,Qr=jt*Zr,jt=kt+Qr,Dr=mr[5392]*3+mr[5831]+(A+(li-kt))+Dr*(en+Zr)+(Qr+(kt-jt)),kt=A*en,kt=Dr+A*kt*(kt*(kt*(A*mr[5399]+mr[5398])+(A*mr[5397]+mr[5396]))+(A*mr[5395]+mr[5394])),A=jt+kt,mr[re+8>>3]=kt+(jt-A),bt(0,y&-134217728),bt(1,u|0),en=+Qt(),Ae(+A),u=Re(1)|0,bt(0,Re(0)&-134217728),bt(1,u|0),jt=+Qt(),kt=en*jt,Ne=(Ne-en)*jt+(mr[re+8>>3]+(A-jt))*Ne,Ae(+kt),u=Re(1)|0,Re(0)|0;a:{s:{if(G=u>>>20&2047,u=G-969|0,u>>>0<63)break s;if(A=kt+1,(u|0)<0)break a;if(u=G>>>0<1033,G=0,u)break s;if(Ae(+kt),u=Re(1)|0,Re(0)|0,(u|0)<0){u=Nt-16|0,mr[u+8>>3]=12882297539194267e-247,A=mr[u+8>>3]*12882297539194267e-247;break a}u=Nt-16|0,mr[u+8>>3]=3105036184601418e216,A=mr[u+8>>3]*3105036184601418e216;break a}if(A=mr[5122],jt=mr[5121]*kt+A,A=jt-A,A=A*mr[5124]+(A*mr[5123]+kt)+Ne,Ne=A*A,en=Ne*Ne*(A*mr[5128]+mr[5127]),Ne=Ne*(A*mr[5126]+mr[5125]),Ae(+jt),Re(1)|0,Y=Re(0)|0,y=Y<<4&2032,A=en+(Ne+(mr[y+41080>>3]+A)),_e=0,y=y+41088|0,u=_e+t[y>>2]|0,y=t[y+4>>2]+(Y<<13)|0,y=u>>>0<_e>>>0?y+1|0:y,!G){s:{if(!(Y&-2147483648)){bt(0,u|0),bt(1,y-1058013184|0),Ne=+Qt(),A=(Ne*A+Ne)*5486124068793689e288;break s}G=y+1071644672|0,y=G,bt(0,u|0),bt(1,y|0),Ne=+Qt(),jt=Ne*A,A=jt+Ne,Rr(A)<1&&(u=Nt-16|0,mr[u+8>>3]=22250738585072014e-324,mr[u+8>>3]=mr[u+8>>3]*22250738585072014e-324,bt(0,0),bt(1,y&-2147483648),kt=A<0?-1:1,en=A+kt,A=en+(jt+(Ne-A)+(A+(kt-en)))-kt,A=(qo=+Qt(),Xo=A,ss=A==0,ss?qo:Xo)),A=A*22250738585072014e-324}break a}bt(0,u|0),bt(1,y|0),Ne=+Qt(),A=Ne*A+Ne}}Ne=A,Nt=re+16|0,kt=mr[he+32>>3],A=-1;i:{a:{s:switch(me|0){case 0:if(Oe)break a;break i;case 1:break s;default:break i}if(!(Ze>Ye(0)))break i}if(Y=q5(t[se+24>>2],Tn),!Y)break n;for(Q=Oe&&Q>>>0>>0?Q:ji,Zr=kt-Vo/Ne,H=O+1|0,u=O<<3,re=u+he|0,Oe=u+rr|0,A=0,u=0,G=0,jt=0,kt=_i,Ne=$r;;){a:{if(en=A,A=(kt+Ne)*.5,Rr(A-en)<=en*5e-6){A=en;break a}y=Wh(t[t[se+20>>2]>>2],O,A,0);s:{o:{if(t[Tn+96>>2]==1){if(y=Qn[Tn>>1],!((y-3&65535)>>>0>=4&(y-1024&65535)>>>0>1435)){if(!$s(Y,t[se+36>>2],he,H,U0,rr+12|0,Q,0,t[se+8>>2],t[se>>2],t[se+16>>2],0,M)){Ne=A;break s}if(en=kt,Dr=jt,y=u,li=A,kt=A,jt=A,O?Qr=mr[Oe+8>>3]+mr[re+40>>3]:Qr=mr[he+40>>3],!(Qr>3]+mr[re+40>>3]:Qr=mr[he+40>>3],!(Qr>2],he,H,U0,rr+12|0,Q,0,t[se+8>>2],t[se>>2],t[se+16>>2],0,M))break s}Ne=li,kt=en,jt=Dr,u=y}if(G=G+1|0,(G|0)!=128)continue}break}C(Y),A=jt==0?A:jt}if(Wh(t[t[se+20>>2]>>2],O,A,1),u=(rr+16|0)+(O<<3)|0,O?(y=O<<3,A=mr[(y+rr|0)+8>>3]+mr[(y+he|0)+40>>3]):A=mr[he+40>>3],mr[u>>3]=A,O=O+1|0,!(O>>>0>2]))break}break r}if(me=t[t[se+32>>2]+8>>2],!me||(u=t[t[se+20>>2]>>2],sr=t[u+16>>2],!sr))break r;for(gr=t[u+20>>2],H=0;;){for(Yt=H-1|0,Y=0;;){if(re=gr+De(Y,76)|0,he=t[re+20>>2],he){for(Cn=t[(t[t[se+24>>2]+24>>2]+De(Y,52)|0)+24>>2],Ze=Ye(+(Cn>>>0)*.0625),Rt=t[Tn+88>>2],G=0;;){for(Oe=De(G,he),O=0;;){u=((rr+16|0)+De(G,120)|0)+De(O,12)|0,y=Rt+De(O+Oe|0,12)|0,Rn=Ye(Ze*Ye(t[y>>2]));i:{if(Ye(Rr(Rn))>2]=Q,Rn=Ye(Ze*Ye(t[y+4>>2]));i:{if(Ye(Rr(Rn))>2]=Q,Rn=Ye(Ze*Ye(t[y+8>>2]));i:{if(Ye(Rr(Rn))>2]=y,O=O+1|0,(he|0)==(O|0))break}if(G=G+1|0,(me|0)==(G|0))break}for(bn=t[re+28>>2],Rt=0;;){if(re=bn+De(Rt,152)|0,Ji=t[re+24>>2],Ji)for(Oe=0;;){u=re+De(Oe,36)|0;i:{if(t[u+36>>2]==t[u+28>>2]|t[u+40>>2]==t[u+32>>2]||(Bi=De(t[re+20>>2],t[re+16>>2]),!Bi))break i;for($e=((rr+16|0)+De(Rt,12)|0)+(Oe<<2)|0,no=$e+De(Yt,120)|0,s0=$e+De(H,120)|0,f0=t[u+48>>2],_e=0;;){if(un=f0+De(_e,40)|0,P0=De(t[un+20>>2],t[un+16>>2]),P0)for(u=0;;){$n=De(H,24),Q=t[un+24>>2]+De(u,52)|0,_r=t[Q+4>>2],G=Cn-t[Q+28>>2]|0;a:{if(H){if(O=t[no>>2],y=t[s0>>2]-O|0,(O|0)>(G|0))break a;y=(O-G|0)+y|0,y=(y|0)>0?y:0;break a}y=t[$e>>2],t[Q+44>>2]=0,y=(y|0)>(G|0)?y-G|0:0}O=$n+_r|0,G=t[Q+44>>2];a:{s:{if(!G){if(G=De(y,3)-2|0,y=y?G:0,t[O>>2]=y,!y)break a;t[O+4>>2]=t[(t[Q+8>>2]+De(y,24)|0)-24>>2],y=t[Q>>2];break s}if(y=De(y,3),t[O>>2]=y,!y)break a;_r=t[Q+8>>2],$n=t[(_r+De(G,24)|0)-24>>2],G=y+G|0,t[O+4>>2]=t[(_r+De(G,24)|0)-24>>2]-$n,y=$n+t[Q>>2]|0}t[O+16>>2]=y,t[Q+44>>2]=G}if(u=u+1|0,(P0|0)==(u|0))break}if(_e=_e+1|0,(Bi|0)==(_e|0))break}}if(Oe=Oe+1|0,(Ji|0)==(Oe|0))break}if(Rt=Rt+1|0,(he|0)==(Rt|0))break}}if(Y=Y+1|0,(sr|0)==(Y|0))break}if(H=H+1|0,(me|0)==(H|0))break}}if(u=q5(t[se+24>>2],t[se+28>>2]),!u)break n;if(y=$s(u,t[se+36>>2],t[t[se+20>>2]>>2],t[t[se+32>>2]+8>>2],U0,gi,ji,er,t[se+4>>2],t[se>>2],t[se+16>>2],1,M),C(u),Rt=1,y)break t}Rt=0}if(Nt=rr+1216|0,!Rt){vt(M,1,10099,0),Qh(er);break e}t[gi>>2]=t[gi>>2]+2;t:{if(t[x+60>>2]){if(G=si(t[x+64>>2]),!G){vt(M,1,3764,0),Qh(er);break e}if(lr(G,65368,2),lr(G+4|0,0,1),S=G+5|0,Q=G+2|0,t[er+4>>2]){for(se=3;;){if(u=t[t[er+8>>2]+(fo<<2)>>2],dt[Di+11|0]=u&127,x=1,u>>>0>=128)for(;y=u>>>7|0,dt[(Di+11|0)+x|0]=y|128,x=x+1|0,Y=u>>>0>16383,u=y,!!Y;);if(u=x&255,y=se&65535,u+y>>>0>=65536){if((Ro&255)==255)break t;lr(Q,y,2),lr(S,65368,2),Ro=Ro+1|0,lr(S+4|0,Ro&255,1),Q=S+2|0,se=3,S=S+5|0}if(y=x&255,y)for(;u=u-1|0,lr(S,xe[u+(Di+11|0)|0],1),S=S+1|0,x=x-1|0,!!(x&255););if(se=y+se|0,fo=fo+1|0,!(fo>>>0>2]))break}x=se&65535}else x=3;lr(Q,x,2),x=S-G|0,N1(x+m|0,m,t[gi>>2]),Yr(m,G,x),Gt(G),t[gi>>2]=x+t[gi>>2]}Qh(er),S=1;break e}S=0,vt(M,1,27607,0),Qh(er),Gt(G)}return Nt=Di+16|0,S}function du(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:switch(t[x+84>>2]){case 0:h:{if(m=t[x+52>>2],u=t[x+196>>2],m>>>0>>0&&(H=t[x- -64>>2],H>>>0>>0))break h;vt(t[x+236>>2],1,18758,0);break t}if(!t[x+44>>2]){G=t[x+36>>2],u=0;break u}t[x+44>>2]=0,re=t[x+68>>2],u=1;break u;case 1:h:{if(m=t[x+52>>2],u=t[x+196>>2],m>>>0>>0&&(H=t[x- -64>>2],H>>>0>>0))break h;vt(t[x+236>>2],1,18803,0);break t}if(!t[x+44>>2]){Y=t[x+36>>2],u=0;break i}t[x+44>>2]=0,re=t[x+48>>2],u=1;break i;case 2:h:{if(un=t[x+52>>2],jt=t[x+196>>2],un>>>0>>0&&(Y=t[x- -64>>2],Y>>>0>>0))break h;vt(t[x+236>>2],1,18938,0);break t}if(!t[x+44>>2]){Yt=t[x+40>>2];break a}for(t[x+228>>2]=0,t[x+232>>2]=0,t[x+44>>2]=0,Ze=t[x+200>>2];;){if(sr=Ze+(Oe<<4)|0,O=t[sr+8>>2],O)for(H=t[sr+12>>2],u=0;;){M=O+(u^-1)|0,y=H+(u<<4)|0,$e=M+t[y>>2]|0;h:{if($e>>>0>31||(m=t[sr>>2],m>>>0>-1>>>$e>>>0))break h;m=m<<$e,G=G&&m>>>0>G>>>0?G:m,t[x+228>>2]=G}M=M+t[y+4>>2]|0;h:{if(M>>>0>31||(m=t[sr+4>>2],m>>>0>-1>>>M>>>0))break h;m=m<>>0>re>>>0?re:m,t[x+232>>2]=re}if(u=u+1|0,(O|0)==(u|0))break}if(Oe=Oe+1|0,(jt|0)==(Oe|0))break}if(!G|!re)break r;xe[x|0]||(t[x+108>>2]=t[x+208>>2],t[x+100>>2]=t[x+204>>2],t[x+112>>2]=t[x+216>>2],t[x+104>>2]=t[x+212>>2]),me=t[x+48>>2],u=1;break a;case 3:h:{if(un=t[x+52>>2],O=t[x+196>>2],un>>>0>>0&&(me=t[x- -64>>2],me>>>0>>0))break h;vt(t[x+236>>2],1,18893,0);break t}if(!t[x+44>>2]){Cn=t[x+200>>2],Y=t[x+28>>2],Yt=Cn+(Y<<4)|0,Tn=t[x+40>>2];break s}for(t[x+228>>2]=0,t[x+232>>2]=0,t[x+44>>2]=0,Cn=t[x+200>>2];;){if(jt=(he<<4)+Cn|0,$e=t[jt+8>>2],$e)for(H=t[jt+12>>2],u=0;;){M=$e+(u^-1)|0,y=H+(u<<4)|0,Ze=M+t[y>>2]|0;h:{if(Ze>>>0>31||(m=t[jt>>2],m>>>0>-1>>>Ze>>>0))break h;m=m<>>0>G>>>0?G:m,t[x+228>>2]=G}M=M+t[y+4>>2]|0;h:{if(M>>>0>31||(m=t[jt+4>>2],m>>>0>-1>>>M>>>0))break h;m=m<>>0>re>>>0?re:m,t[x+232>>2]=re}if(u=u+1|0,($e|0)==(u|0))break}if(he=he+1|0,(O|0)==(he|0))break}if(!G|!re)break r;h:{if(xe[x|0]){he=t[x+108>>2];break h}he=t[x+208>>2],t[x+108>>2]=he,t[x+100>>2]=t[x+204>>2],t[x+112>>2]=t[x+216>>2],t[x+104>>2]=t[x+212>>2]}u=1;break s;case 4:break l;default:break r}l:{if(he=t[x+52>>2],u=t[x+196>>2],he>>>0>>0&&(_e=t[x- -64>>2],_e>>>0>>0))break l;vt(t[x+236>>2],1,18848,0);break r}if(!t[x+44>>2]){he=t[x+28>>2],re=t[x+200>>2]+(he<<4)|0,Oe=t[x+40>>2],u=0;break o}t[x+28>>2]=he,t[x+44>>2]=0,u=1;break o}u:for(;;){l:{h:{if(!u){G=G+1|0;break h}if(t[x+40>>2]=re,ln[x+56>>2]<=re>>>0)break t;Y=t[x+48>>2],u=0;break l}u=1}l:for(;;){h:{f:{p:{c:{if(!u){if(t[x+32>>2]=Y,ln[x+60>>2]<=Y>>>0)break c;t[x+28>>2]=m,u=m,me=0;break h}if(t[x+36>>2]=G,ln[x+76>>2]<=G>>>0){u=t[x+28>>2],me=1;break h}if(u=((De(t[x+16>>2],t[x+32>>2])+De(t[x+12>>2],t[x+40>>2])|0)+De(t[x+20>>2],t[x+28>>2])|0)+De(t[x+24>>2],G)|0,u>>>0>=ln[x+8>>2])break n;if(u=t[x+4>>2]+(u<<1)|0,Qn[u>>1])break p;break e}re=t[x+40>>2]+1|0;break f}u=0;continue u}u=1;continue u}for(;;){h:{f:{p:{if(!me){if(u>>>0>=H>>>0)break p;if(M=t[x+32>>2],y=t[x+200>>2],M>>>0>=ln[(y+(u<<4)|0)+8>>2])break h;xe[x|0]||(u=t[(y+(u<<4)|0)+12>>2]+(M<<4)|0,t[x+76>>2]=De(t[u+12>>2],t[u+8>>2])),G=t[x+72>>2],u=1;continue l}u=u+1|0,t[x+28>>2]=u;break f}Y=t[x+32>>2]+1|0,u=0;continue l}me=0;continue}me=1}}}}o:for(;;){u:{l:{if(!u){Oe=Oe+1|0,t[x+40>>2]=Oe;break l}if(_e>>>0<=he>>>0||(t[x+228>>2]=0,t[x+232>>2]=0,m=t[x+200>>2],u=he<<4,re=m+u|0,O=t[re+8>>2],!O))break t;for(u=u+m|0,Ze=u,H=t[u+12>>2],G=0,Y=0,u=0;;){M=O+(u^-1)|0,y=H+(u<<4)|0,$e=M+t[y>>2]|0;h:{if($e>>>0>31||(m=t[re>>2],m>>>0>-1>>>$e>>>0))break h;m=m<<$e,Y=Y&&m>>>0>Y>>>0?Y:m,t[x+228>>2]=Y}M=M+t[y+4>>2]|0;h:{if(M>>>0>31||(m=t[Ze+4>>2],m>>>0>-1>>>M>>>0))break h;m=m<>>0>G>>>0?G:m,t[x+232>>2]=G}if(u=u+1|0,(O|0)==(u|0))break}if(!Y|!G)break r;h:{if(xe[x|0]){G=t[x+108>>2];break h}G=t[x+208>>2],t[x+108>>2]=G,t[x+100>>2]=t[x+204>>2],t[x+112>>2]=t[x+216>>2],t[x+104>>2]=t[x+212>>2]}u=0;break u}u=1}u:for(;;){l:{h:{f:{p:{if(!u){if(t[x+224>>2]=G,ln[x+112>>2]<=G>>>0)break p;Cn=t[x+100>>2],u=0;break l}if(ln[x+56>>2]<=Oe>>>0){me=t[x+32>>2],u=1;break l}if(u=((De(t[x+16>>2],t[x+32>>2])+De(t[x+12>>2],Oe)|0)+De(t[x+20>>2],he)|0)+De(t[x+24>>2],t[x+36>>2])|0,u>>>0>=ln[x+8>>2])break n;if(u=t[x+4>>2]+(u<<1)|0,Qn[u>>1])break f;break e}he=he+1|0,t[x+28>>2]=he;break h}u=0;continue o}u=1;continue o}for(;;){l:{h:{f:{p:{if(!u){if(t[x+220>>2]=Cn,ln[x+104>>2]<=Cn>>>0)break f;me=t[x+48>>2];break p}me=me+1|0}if(t[x+32>>2]=me,u=t[x+60>>2],y=t[re+8>>2],(u>>>0>>0?u:y)>>>0>me>>>0){if(M=t[re>>2],m=M,A=y+(me^-1)|0,Q=A,y=Q&31,(Q&63)>>>0>=32?(u=M<>>32-y,Rt=M<>>0>=32?m>>>y|0:((1<>>y)|0)||(m=t[re+4>>2],u=Q&31,H=-1>>>u|0,(m&((Q&63)>>>0>=32?H:H|(1<>>0>=32?(u=m<>>32-y,kt=m<>2],H=Rn+y|0,sr=c0(H,y>>>0>H>>>0?u+1|0:u,kt,en),bn=t[x+208>>2],y=Rn+bn|0,u=bn>>>0>y>>>0?u+1|0:u,Ze=c0(y,u,kt,en),un=Rt-1|0,y=t[x+212>>2],O=un+y|0,H=S-!Rt|0,u=H,jt=c0(O,y>>>0>O>>>0?u+1|0:u,Rt,S),$n=t[x+204>>2],y=un+$n|0,u=$n>>>0>y>>>0?u+1|0:u,y=c0(y,u,Rt,S),er=t[re+12>>2],rr=t[er+(me<<4)>>2],Ne=rr+A|0,u=Ne&31,O=-1>>>u|0,(M|0)!=(((Ne&63)>>>0>=32?O:O|(1<>2],A=se+A|0,Y=A&31,(A&63)>>>0>=32?(u=m<>>32-Y,Y=m<>>0>=32?u>>>O|0:((1<>>O)|0))||(O=t[x+224>>2],Zh(O,Y,u)|Gi&&((O|0)!=(bn|0)||(m=A&31,(A&63)>>>0>=32?(u=-1<>>32-m,m=-1<>>0>=32?(u=A<>>32-Y|u<>2],(Ne&63)>>>0>=32?(u=M<>>32-A,A=M<>>0>=32?(u=-1<>>32-M),A=A^-1,M=u^-1,Y=A,u=0,A=y,Ne=Q&31,(Q&63)>>>0>=32?(u=A<>>32-Ne|u<>2],!A|!t[u+12>>2]|(y|0)==(jt|0))||(Ze|0)==(sr|0))break l;Oe=t[x+68>>2],t[x+40>>2]=Oe,u=H,m=m+un|0,u=m>>>0>>0?u+1|0:u,M=(c0(m,u,Rt,S)>>>rr)-(y>>>rr)|0,u=$e,m=O+Rn|0,u=m>>>0>>0?u+1|0:u,_r=x,Dr=De(A,(c0(m,u,kt,en)>>>se)-(Ze>>>se)|0)+M|0,t[_r+36>>2]=Dr,u=1;continue u}m=t[x+220>>2],u=t[x+228>>2],Cn=m+u-(m>>>0)%(u>>>0)|0;break h}m=t[x+224>>2],u=t[x+232>>2],G=m+u-(m>>>0)%(u>>>0)|0,u=0;continue u}u=0;continue}u=1}}}}s:for(;;){o:{u:{if(!u){Tn=Tn+1|0,t[x+40>>2]=Tn;break u}if(t[x+224>>2]=he,ln[x+112>>2]<=he>>>0)break t;Rt=t[x+100>>2],u=0;break o}u=1}o:for(;;){u:{l:{h:{f:{if(!u){if(t[x+220>>2]=Rt,ln[x+104>>2]<=Rt>>>0)break f;t[x+28>>2]=un,Y=un,u=0;break u}if(ln[x+56>>2]<=Tn>>>0){Oe=t[x+32>>2],u=1;break u}if(u=((De(t[x+16>>2],t[x+32>>2])+De(t[x+12>>2],Tn)|0)+De(t[x+20>>2],Y)|0)+De(t[x+24>>2],t[x+36>>2])|0,u>>>0>=ln[x+8>>2])break n;if(u=t[x+4>>2]+(u<<1)|0,Qn[u>>1])break h;break e}m=t[x+224>>2],u=t[x+232>>2],he=m+u-(m>>>0)%(u>>>0)|0;break l}u=0;continue s}u=1;continue s}for(;;){u:{l:{h:{f:{if(!u){if(Y>>>0>=me>>>0)break h;Oe=t[x+48>>2],t[x+32>>2]=Oe,Yt=(Y<<4)+Cn|0;break f}Oe=Oe+1|0,t[x+32>>2]=Oe}if(u=t[x+60>>2],y=t[Yt+8>>2],(u>>>0>>0?u:y)>>>0>Oe>>>0){if(M=t[Yt>>2],m=M,S=y+(Oe^-1)|0,_e=S,y=S&31,(S&63)>>>0>=32?(u=M<>>32-y,G=M<>>0>=32?m>>>y|0:((1<>>y)|0)||(m=t[Yt+4>>2],u=_e&31,H=-1>>>u|0,(m&((_e&63)>>>0>=32?H:H|(1<>>0>=32?(u=m<>>32-y,re=m<>2],H=Rn+y|0,sr=c0(H,y>>>0>H>>>0?u+1|0:u,re,A),kt=t[x+208>>2],y=kt+Rn|0,u=kt>>>0>y>>>0?u+1|0:u,Ze=c0(y,u,re,A),en=G-1|0,y=t[x+212>>2],O=en+y|0,H=Ne-!G|0,u=H,jt=c0(O,y>>>0>O>>>0?u+1|0:u,G,Ne),bn=t[x+204>>2],y=en+bn|0,u=bn>>>0>y>>>0?u+1|0:u,y=c0(y,u,G,Ne),$n=t[Yt+12>>2],er=t[$n+(Oe<<4)>>2],Q=er+S|0,u=Q&31,O=-1>>>u|0,(M|0)!=(((Q&63)>>>0>=32?O:O|(1<>2],S=rr+S|0,se=S&31,(S&63)>>>0>=32?(u=m<>>32-se,se=m<>>0>=32?u>>>O|0:((1<>>O)|0))||(O=t[x+224>>2],Zh(O,se,u)|Gi&&((O|0)!=(kt|0)||(m=S&31,(S&63)>>>0>=32?(u=-1<>>32-m,m=-1<>>0>=32?(u=S<>>32-se|u<>2],(Q&63)>>>0>=32?(u=M<>>32-S,S=M<>>0>=32?(u=-1<>>32-M),S=S^-1,M=u^-1,se=S,u=0,S=y,Q=_e&31,(_e&63)>>>0>=32?(u=S<>>32-Q|u<>2],!S|!t[u+12>>2]|(y|0)==(jt|0))||(Ze|0)==(sr|0))break u;Tn=t[x+68>>2],t[x+40>>2]=Tn,u=H,m=m+en|0,u=m>>>0>>0?u+1|0:u,M=(c0(m,u,G,Ne)>>>er)-(y>>>er)|0,u=$e,m=O+Rn|0,u=m>>>0>>0?u+1|0:u,_r=x,Dr=De(S,(c0(m,u,re,A)>>>rr)-(Ze>>>rr)|0)+M|0,t[_r+36>>2]=Dr,u=1;continue o}Y=Y+1|0,t[x+28>>2]=Y;break l}m=t[x+220>>2],u=t[x+228>>2],Rt=m+u-(m>>>0)%(u>>>0)|0,u=0;continue o}u=0;continue}u=1}}}}a:for(;;){s:{o:{if(!u){Yt=Yt+1|0,t[x+40>>2]=Yt;break o}if(t[x+32>>2]=me,ln[x+60>>2]<=me>>>0)break t;Tn=t[x+108>>2],u=0;break s}u=1}s:for(;;){o:{u:{l:{h:{if(!u){if(t[x+224>>2]=Tn,ln[x+112>>2]<=Tn>>>0)break h;Cn=t[x+100>>2],u=0;break o}if(ln[x+56>>2]<=Yt>>>0){he=t[x+28>>2],u=1;break o}if(u=((De(t[x+16>>2],t[x+32>>2])+De(t[x+12>>2],Yt)|0)+De(t[x+20>>2],t[x+28>>2])|0)+De(t[x+24>>2],t[x+36>>2])|0,u>>>0>=ln[x+8>>2])break n;if(u=t[x+4>>2]+(u<<1)|0,Qn[u>>1])break l;break e}me=t[x+32>>2]+1|0;break u}u=0;continue a}u=1;continue a}for(;;){o:{u:{l:{h:{if(!u){if(t[x+220>>2]=Cn,ln[x+104>>2]<=Cn>>>0)break l;t[x+28>>2]=un,he=un;break h}he=he+1|0,t[x+28>>2]=he}if(Y>>>0>he>>>0){if(Rt=t[x+32>>2],y=t[x+200>>2],Q=y+(he<<4)|0,u=t[Q+8>>2],Rt>>>0>=u>>>0||(M=t[Q>>2],m=M,S=u+(Rt^-1)|0,_e=S,H=S&31,(S&63)>>>0>=32?(u=M<>>32-H,G=M<>>0>=32?m>>>H|0:((1<>>H)|0))||(m=t[(y+(he<<4)|0)+4>>2],u=_e&31,H=-1>>>u|0,(m&((_e&63)>>>0>=32?H:H|(1<>>0>=32?(u=m<>>32-y,re=m<>2],H=Rn+y|0,sr=c0(H,y>>>0>H>>>0?u+1|0:u,re,A),kt=t[x+208>>2],y=kt+Rn|0,u=kt>>>0>y>>>0?u+1|0:u,Ze=c0(y,u,re,A),en=G-1|0,y=t[x+212>>2],O=en+y|0,H=Ne-!G|0,u=H,jt=c0(O,y>>>0>O>>>0?u+1|0:u,G,Ne),bn=t[x+204>>2],y=en+bn|0,u=bn>>>0>y>>>0?u+1|0:u,y=c0(y,u,G,Ne),$n=t[Q+12>>2],er=t[$n+(Rt<<4)>>2],Q=er+S|0,u=Q&31,O=-1>>>u|0,(M|0)!=(((Q&63)>>>0>=32?O:O|(1<>2],S=rr+S|0,se=S&31,(S&63)>>>0>=32?(u=m<>>32-se,se=m<>>0>=32?u>>>O|0:((1<>>O)|0))||(O=t[x+224>>2],Zh(O,se,u)|Gi&&((O|0)!=(kt|0)||(m=S&31,(S&63)>>>0>=32?(u=-1<>>32-m,m=-1<>>0>=32?(u=S<>>32-se|u<>2],(Q&63)>>>0>=32?(u=M<>>32-S,S=M<>>0>=32?(u=-1<>>32-M),S=S^-1,M=u^-1,se=S,u=0,S=y,Q=_e&31,(_e&63)>>>0>=32?(u=S<>>32-Q|u<>2],!S|!t[u+12>>2]|(y|0)==(jt|0))||(Ze|0)==(sr|0))break o;Yt=t[x+68>>2],t[x+40>>2]=Yt,u=H,m=m+en|0,u=m>>>0>>0?u+1|0:u,M=(c0(m,u,G,Ne)>>>er)-(y>>>er)|0,u=$e,m=O+Rn|0,u=m>>>0>>0?u+1|0:u,_r=x,Dr=De(S,(c0(m,u,re,A)>>>rr)-(Ze>>>rr)|0)+M|0,t[_r+36>>2]=Dr,u=1;continue s}m=t[x+220>>2],u=t[x+228>>2],Cn=m+u-(m>>>0)%(u>>>0)|0;break u}m=t[x+224>>2],u=t[x+232>>2],Tn=m+u-(m>>>0)%(u>>>0)|0,u=0;continue s}u=0;continue}u=1}}}}i:for(;;){a:{s:{if(!u){Y=Y+1|0;break s}if(t[x+32>>2]=re,ln[x+60>>2]<=re>>>0)break t;G=t[x+68>>2],u=0;break a}u=1}a:for(;;){s:{o:{u:{l:{if(!u){if(t[x+40>>2]=G,ln[x+56>>2]<=G>>>0)break l;t[x+28>>2]=m,u=m,me=0;break s}if(t[x+36>>2]=Y,ln[x+76>>2]<=Y>>>0){u=t[x+28>>2],me=1;break s}if(u=((De(t[x+16>>2],t[x+32>>2])+De(t[x+12>>2],t[x+40>>2])|0)+De(t[x+20>>2],t[x+28>>2])|0)+De(t[x+24>>2],Y)|0,u>>>0>=ln[x+8>>2])break n;if(u=t[x+4>>2]+(u<<1)|0,Qn[u>>1])break u;break e}re=t[x+32>>2]+1|0;break o}u=0;continue i}u=1;continue i}for(;;){s:{o:{u:{if(!me){if(u>>>0>=H>>>0)break u;if(M=t[x+32>>2],y=t[x+200>>2],M>>>0>=ln[(y+(u<<4)|0)+8>>2])break s;xe[x|0]||(u=t[(y+(u<<4)|0)+12>>2]+(M<<4)|0,t[x+76>>2]=De(t[u+12>>2],t[u+8>>2])),Y=t[x+72>>2],u=1;continue a}u=u+1|0,t[x+28>>2]=u;break o}G=t[x+40>>2]+1|0,u=0;continue a}me=0;continue}me=1}}}}return 0}vt(t[x+236>>2],1,2121,0)}return 0}return tn[u>>1]=1,1}function pp(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0;er=Nt-16|0,Nt=er;e:{if(ln[x+16>>2]<=2){t[x+20>>2]=2;break e}t:{if(m=t[x+24>>2],t[m>>2]!=1)break t;n:switch(t[m+52>>2]-1|0){case 1:if(!(t[m+104>>2]!=2|t[m+4>>2]!=1|(t[m+56>>2]!=2|t[m+108>>2]!=2))){Tn=x,x=t[x+24>>2],A=t[x+24>>2],me=t[x+148>>2],kt=t[x+96>>2],se=t[x+44>>2],bn=t[x+8>>2],x=t[x+12>>2],m=De(bn,x)<<2,jt=Jo(m),en=Jo(m),un=Jo(m);r:{i:{a:{if(!(!un|(!jt|!en))){if(O=-1<>2]&1,gr=m-x|0,Ne=t[Tn>>2],!x|!bn)break a;G=+Ye(0-$e|0),u=G*.344+G*.714;s:{if(Rr(u)<2147483648){S=~~u;break s}S=-2147483648}u=G*1.772;s:{if(Rr(u)<2147483648){H=~~u;break s}H=-2147483648}u=G*1.402;s:{if(Rr(u)<2147483648){y=~~u;break s}y=-2147483648}for(x=jt,A=en,m=un;Ze=t[se>>2],Oe=Ze+y|0,t[x>>2]=(Oe|0)>=0?(O|0)>(Oe|0)?Oe:O:0,Oe=Ze-S|0,t[A>>2]=(Oe|0)>=0?(O|0)>(Oe|0)?Oe:O:0,Oe=H+Ze|0,t[m>>2]=(Oe|0)>=0?(O|0)>(Oe|0)?Oe:O:0,m=m+4|0,A=A+4|0,x=x+4|0,se=se+4|0,he=he+1|0,(bn|0)!=(he|0););break i}Gt(jt),Gt(en),Gt(un);break r}m=un,A=en,x=jt}if(sr=gr&-2,sr){$n=Ne&1,_r=bn-$n|0,G=+Ye(0-$e|0),u=G*.344+G*.714;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}_e=_r&-2,y=_e-1|0,u=G*1.772;i:{if(Rr(u)<2147483648){Ze=~~u;break i}Ze=-2147483648}H=sr-1|0,y=y&-2,u=G*1.402;i:{if(Rr(u)<2147483648){Oe=~~u;break i}Oe=-2147483648}for(rr=H&-2,Ne=y+2|0,Rn=bn<<2;;){if(H=m+Rn|0,y=A+Rn|0,he=x+Rn|0,Cn=se+Rn|0,$n){Y=t[se>>2],S=Y+Oe|0,t[x>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,S=Y-Q|0,t[A>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,S=Y+Ze|0,t[m>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[Cn>>2],M=M+S|0,t[he>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[y>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=M+S|0,t[H>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,H=H+4|0,y=y+4|0,he=he+4|0,Cn=Cn+4|0,m=m+4|0,A=A+4|0,se=se+4|0,x=x+4|0}if(Rt=0,_e){for(;;){Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[se>>2],M=M+S|0,t[x>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[A>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=M+S|0,t[m>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[se+4>>2],M=M+S|0,t[x+4>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[A+4>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=M+S|0,t[m+4>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[Cn>>2],M=M+S|0,t[he>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[y>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=M+S|0,t[H>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[Cn+4>>2],M=M+S|0,t[he+4>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[y+4>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}if(S=M+S|0,t[H+4>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,me=me+4|0,kt=kt+4|0,H=H+8|0,y=y+8|0,he=he+8|0,Cn=Cn+8|0,m=m+8|0,A=A+8|0,x=x+8|0,se=se+8|0,Rt=Rt+2|0,!(_e>>>0>Rt>>>0))break}S=Ne}else S=0;if(S>>>0<_r>>>0){Y=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=t[se>>2],M=M+S|0,t[x>>2]=(M|0)>=0?(O|0)>(M|0)?M:O:0,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}Y=S-M|0,t[A>>2]=(Y|0)>=0?(O|0)>(Y|0)?Y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){M=~~u;break i}M=-2147483648}S=M+S|0,t[m>>2]=(S|0)>=0?(O|0)>(S|0)?S:O:0,Y=t[kt>>2],M=he,re=+Ye(t[me>>2]-$e|0),u=re*1.402;i:{if(Rr(u)<2147483648){he=~~u;break i}he=-2147483648}S=t[Cn>>2],he=he+S|0,t[M>>2]=(he|0)>=0?(O|0)>(he|0)?he:O:0,he=y,G=+Ye(Y-$e|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){y=~~u;break i}y=-2147483648}y=S-y|0,t[he>>2]=(y|0)>=0?(O|0)>(y|0)?y:O:0,u=G*1.772;i:{if(Rr(u)<2147483648){y=~~u;break i}y=-2147483648}y=y+S|0,t[H>>2]=(y|0)>=0?(O|0)>(y|0)?y:O:0,me=me+4|0,kt=kt+4|0,m=m+4|0,A=A+4|0,se=se+4|0,x=x+4|0}if(m=m+Rn|0,A=A+Rn|0,x=x+Rn|0,se=se+Rn|0,Yt=Yt+2|0,!(sr>>>0>Yt>>>0))break}y=rr+2|0}else y=0;i:{if(y>>>0>=gr>>>0)break i;if(Oe=bn&-2,Oe){for(S=Oe-1&-2,he=0;;){H=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;a:{if(Rr(u)<2147483648){Ne=~~u;break a}Ne=-2147483648}y=t[se>>2],Ne=Ne+y|0,t[x>>2]=(Ne|0)>=0?(O|0)>(Ne|0)?Ne:O:0,G=+Ye(H-$e|0),u=G*.344+re*.714;a:{if(Rr(u)<2147483648){H=~~u;break a}H=-2147483648}H=y-H|0,t[A>>2]=(H|0)>=0?(O|0)>(H|0)?H:O:0,u=G*1.772;a:{if(Rr(u)<2147483648){H=~~u;break a}H=-2147483648}y=H+y|0,t[m>>2]=(y|0)>=0?(O|0)>(y|0)?y:O:0,H=t[kt>>2],re=+Ye(t[me>>2]-$e|0),u=re*1.402;a:{if(Rr(u)<2147483648){Ne=~~u;break a}Ne=-2147483648}y=t[se+4>>2],Ne=Ne+y|0,t[x+4>>2]=(Ne|0)>=0?(O|0)>(Ne|0)?Ne:O:0,G=+Ye(H-$e|0),u=G*.344+re*.714;a:{if(Rr(u)<2147483648){H=~~u;break a}H=-2147483648}H=y-H|0,t[A+4>>2]=(H|0)>=0?(O|0)>(H|0)?H:O:0,u=G*1.772;a:{if(Rr(u)<2147483648){H=~~u;break a}H=-2147483648}if(y=H+y|0,t[m+4>>2]=(y|0)>=0?(O|0)>(y|0)?y:O:0,me=me+4|0,kt=kt+4|0,m=m+8|0,A=A+8|0,x=x+8|0,se=se+8|0,he=he+2|0,!(Oe>>>0>he>>>0))break}y=S+2|0}else y=0;if(y>>>0>=bn>>>0)break i;y=t[kt>>2],S=x,re=+Ye(t[me>>2]-$e|0),u=re*1.402;a:{if(Rr(u)<2147483648){H=~~u;break a}H=-2147483648}x=t[se>>2],H=H+x|0,t[S>>2]=(H|0)>=0?(O|0)>(H|0)?H:O:0,S=A,G=+Ye(y-$e|0),u=G*.344+re*.714;a:{if(Rr(u)<2147483648){A=~~u;break a}A=-2147483648}A=x-A|0,t[S>>2]=(A|0)>=0?(O|0)>(A|0)?A:O:0,u=G*1.772;a:{if(Rr(u)<2147483648){A=~~u;break a}A=-2147483648}x=A+x|0,t[m>>2]=(x|0)>=0?(x|0)<(O|0)?x:O:0}Gt(t[t[Tn+24>>2]+44>>2]),x=t[Tn+24>>2],t[x+44>>2]=jt,Gt(t[x+96>>2]),x=t[Tn+24>>2],t[x+96>>2]=en,Gt(t[x+148>>2]),m=t[Tn+24>>2],t[m+148>>2]=un,x=t[m+8>>2],t[m+112>>2]=x,t[m+60>>2]=x,x=t[m+12>>2],t[m+116>>2]=x,t[m- -64>>2]=x,x=t[m>>2],t[m+104>>2]=x,t[m+52>>2]=x,x=t[m+4>>2],t[m+108>>2]=x,t[m+56>>2]=x,t[Tn+20>>2]=1}break e}if(t[m+104>>2]!=2|t[m+4>>2]!=1|(t[m+56>>2]!=1|t[m+108>>2]!=1))break t;Ze=x,m=t[x+24>>2],A=t[m+24>>2],se=t[m+148>>2],me=t[m+96>>2],Rt=t[m+44>>2],x=t[m+8>>2],$n=t[m+12>>2],m=De(x,$n)<<2,Oe=Jo(m),Ne=Jo(m),S=Jo(m);r:{if(!(!S|(!Oe|!Ne))){if($n){Tn=t[Ze>>2]&1,rr=x-Tn|0,M=1<>2],y=Q+un|0,t[x>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,y=Q-jt|0,t[A>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,y=Q+en|0,t[m>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,A=A+4|0,Rt=Rt+4|0,m=m+4|0,x=x+4|0),Cn=0,Y){for(;;){Q=t[me>>2],re=+Ye(t[se>>2]-M|0),u=re*1.402;i:{if(Rr(u)<2147483648){O=~~u;break i}O=-2147483648}y=t[Rt>>2],Yt=O+y|0,t[x>>2]=(Yt|0)>=0?(_e|0)>(Yt|0)?Yt:_e:0,G=+Ye(Q-M|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}Q=y-Q|0,t[A>>2]=(Q|0)>=0?(_e|0)>(Q|0)?Q:_e:0,u=G*1.772;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}y=Q+y|0,t[m>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,Q=t[me>>2],re=+Ye(t[se>>2]-M|0),u=re*1.402;i:{if(Rr(u)<2147483648){O=~~u;break i}O=-2147483648}y=t[Rt+4>>2],Yt=O+y|0,t[x+4>>2]=(Yt|0)>=0?(_e|0)>(Yt|0)?Yt:_e:0,G=+Ye(Q-M|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}Q=y-Q|0,t[A+4>>2]=(Q|0)>=0?(_e|0)>(Q|0)?Q:_e:0,u=G*1.772;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}if(y=Q+y|0,t[m+4>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,se=se+4|0,me=me+4|0,m=m+8|0,A=A+8|0,x=x+8|0,Rt=Rt+8|0,Cn=Cn+2|0,!(Y>>>0>Cn>>>0))break}y=H}else y=0;if(y>>>0>>0){Q=t[me>>2],re=+Ye(t[se>>2]-M|0),u=re*1.402;i:{if(Rr(u)<2147483648){O=~~u;break i}O=-2147483648}y=t[Rt>>2],Yt=O+y|0,t[x>>2]=(Yt|0)>=0?(_e|0)>(Yt|0)?Yt:_e:0,G=+Ye(Q-M|0),u=G*.344+re*.714;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}Q=y-Q|0,t[A>>2]=(Q|0)>=0?(_e|0)>(Q|0)?Q:_e:0,u=G*1.772;i:{if(Rr(u)<2147483648){Q=~~u;break i}Q=-2147483648}y=Q+y|0,t[m>>2]=(y|0)>=0?(y|0)<(_e|0)?y:_e:0,se=se+4|0,me=me+4|0,A=A+4|0,Rt=Rt+4|0,m=m+4|0,x=x+4|0}if(he=he+1|0,($n|0)==(he|0))break}}Gt(t[t[Ze+24>>2]+44>>2]),x=t[Ze+24>>2],t[x+44>>2]=Oe,Gt(t[x+96>>2]),x=t[Ze+24>>2],t[x+96>>2]=Ne,Gt(t[x+148>>2]),m=t[Ze+24>>2],t[m+148>>2]=S,x=t[m+8>>2],t[m+112>>2]=x,t[m+60>>2]=x,x=t[m+12>>2],t[m+116>>2]=x,t[m- -64>>2]=x,x=t[m>>2],t[m+104>>2]=x,t[m+52>>2]=x,x=t[m+4>>2],t[m+108>>2]=x,t[m+56>>2]=x,t[Ze+20>>2]=1;break r}Gt(Oe),Gt(Ne),Gt(S)}break e;case 0:break n;default:break t}if(t[m+104>>2]!=1|t[m+4>>2]!=1|(t[m+56>>2]!=1|t[m+108>>2]!=1))break t;m=t[x+24>>2],A=t[m+24>>2],Rt=t[m+148>>2],se=t[m+96>>2],me=t[m+44>>2],Oe=De(t[m+12>>2],t[m+8>>2]),m=Oe<<2,en=Jo(m),un=Jo(m),he=Jo(m);n:{if(!(!he|(!en|!un))){if(Oe)for(Ze=-1<>2],re=+Ye(t[Rt>>2]-Ne|0),u=re*1.402;r:{if(Rr(u)<2147483648){S=~~u;break r}S=-2147483648}H=t[me>>2],S=S+H|0,t[y>>2]=(S|0)>=0?(S|0)<(Ze|0)?S:Ze:0,G=+Ye(jt-Ne|0),u=G*.344+re*.714;r:{if(Rr(u)<2147483648){S=~~u;break r}S=-2147483648}jt=H-S|0,t[A>>2]=(jt|0)>=0?(Ze|0)>(jt|0)?jt:Ze:0,u=G*1.772;r:{if(Rr(u)<2147483648){S=~~u;break r}S=-2147483648}if(H=S+H|0,t[m>>2]=(H|0)>=0?(H|0)<(Ze|0)?H:Ze:0,m=m+4|0,A=A+4|0,y=y+4|0,Rt=Rt+4|0,se=se+4|0,me=me+4|0,kt=kt+1|0,(Oe|0)==(kt|0))break}Gt(t[t[x+24>>2]+44>>2]),m=t[x+24>>2],t[m+44>>2]=en,Gt(t[m+96>>2]),m=t[x+24>>2],t[m+96>>2]=un,Gt(t[m+148>>2]),t[t[x+24>>2]+148>>2]=he,t[x+20>>2]=1;break n}Gt(en),Gt(un),Gt(he)}break e}t[er+4>>2]=262,t[er>>2]=1646,to(t[11824],18514,er)}Nt=er+16|0}function S2(x){x=x|0;var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;Q=Nt-16|0,Nt=Q;e:{t:{n:{r:{i:{a:{s:{o:{u:{if(x>>>0<=244){if(O=t[12926],A=x>>>0<11?16:x+11&-8,m=A>>>3|0,u=O>>>m|0,u&3){m=m+((u^-1)&1)|0,x=m<<3,u=x+51744|0,y=t[x+51752>>2],x=t[y+8>>2];l:{if((u|0)==(x|0)){re=51704,se=D2(m)&O,t[re>>2]=se;break l}t[x+12>>2]=u,t[u+8>>2]=x}x=y+8|0,u=m<<3,t[y+4>>2]=u|3,u=u+y|0,t[u+4>>2]=t[u+4>>2]|1;break e}if(Y=t[12928],Y>>>0>=A>>>0)break u;if(u){x=2<>2],x=t[S+8>>2];l:{if((u|0)==(x|0)){O=D2(y)&O,t[12926]=O;break l}t[x+12>>2]=u,t[u+8>>2]=x}if(t[S+4>>2]=A|3,m=S+A|0,x=y<<3,y=x-A|0,t[m+4>>2]=y|1,t[x+S>>2]=y,Y){u=(Y&-8)+51744|0,M=t[12931],x=1<<(Y>>>3);l:{if(!(x&O)){t[12926]=x|O,x=u;break l}x=t[u+8>>2]}t[u+8>>2]=M,t[x+12>>2]=M,t[M+12>>2]=u,t[M+8>>2]=x}x=S+8|0,t[12931]=m,t[12928]=y;break e}if(H=t[12927],!H)break u;for(m=t[(gl(0-H&H)<<2)+52008>>2],M=(t[m+4>>2]&-8)-A|0,u=m;;){l:{if(x=t[u+16>>2],!x&&(x=t[u+20>>2],!x))break l;u=(t[x+4>>2]&-8)-A|0,y=u>>>0>>0,M=y?u:M,m=y?x:m,u=x;continue}break}if(G=t[m+24>>2],y=t[m+12>>2],(y|0)!=(m|0)){x=t[m+8>>2],t[x+12>>2]=y,t[y+8>>2]=x;break t}if(u=m+20|0,x=t[u>>2],!x){if(x=t[m+16>>2],!x)break o;u=m+16|0}for(;S=u,y=x,u=x+20|0,x=t[u>>2],!(!x&&(u=y+16|0,x=t[y+16>>2],!x)););t[S>>2]=0;break t}if(A=-1,x>>>0>4294967231||(x=x+11|0,A=x&-8,H=t[12927],!H))break u;M=0-A|0,O=0;l:{if(A>>>0<256||(O=31,A>>>0>16777215))break l;x=ri(x>>>8|0),O=((A>>>38-x&1)-(x<<1)|0)+62|0}u=t[(O<<2)+52008>>2];l:{h:{f:{if(!u){x=0;break f}for(x=0,m=A<<((O|0)!=31?25-(O>>>1|0)|0:0);;){p:{if(S=(t[u+4>>2]&-8)-A|0,S>>>0>=M>>>0||(y=u,M=S,S))break p;M=0,x=u;break h}if(S=t[u+20>>2],u=t[((m>>>29&4)+u|0)+16>>2],x=S?(S|0)==(u|0)?x:S:x,m=m<<1,!u)break}}if(!(x|y)){if(y=0,x=2<>2]}if(!x)break l}for(;u=(t[x+4>>2]&-8)-A|0,m=u>>>0>>0,M=m?u:M,y=m?x:y,u=t[x+16>>2],u?x=u:x=t[x+20>>2],!!x;);}if(!y|t[12928]-A>>>0<=M>>>0)break u;if(O=t[y+24>>2],m=t[y+12>>2],(y|0)!=(m|0)){x=t[y+8>>2],t[x+12>>2]=m,t[m+8>>2]=x;break n}if(u=y+20|0,x=t[u>>2],!x){if(x=t[y+16>>2],!x)break s;u=y+16|0}for(;S=u,m=x,u=x+20|0,x=t[u>>2],!(!x&&(u=m+16|0,x=t[m+16>>2],!x)););t[S>>2]=0;break n}if(m=t[12928],m>>>0>=A>>>0){y=t[12931],u=m-A|0;u:{if(u>>>0>=16){t[12928]=u,x=y+A|0,t[12931]=x,t[x+4>>2]=u|1,t[m+y>>2]=u,t[y+4>>2]=A|3;break u}t[12931]=0,t[12928]=0,t[y+4>>2]=m|3,x=m+y|0,t[x+4>>2]=t[x+4>>2]|1}x=y+8|0;break e}if(G=t[12929],G>>>0>A>>>0){u=G-A|0,t[12929]=u,m=t[12932],x=m+A|0,t[12932]=x,t[x+4>>2]=u|1,t[m+4>>2]=A|3,x=m+8|0;break e}if(x=0,H=A+47|0,t[13044]?m=t[13046]:(t[13047]=-1,t[13048]=-1,t[13045]=4096,t[13046]=4096,t[13044]=Q+12&-16^1431655768,t[13049]=0,t[13037]=0,m=4096),S=H+m|0,M=0-m|0,u=S&M,u>>>0<=A>>>0||(y=t[13036],y&&(m=t[13034],O=m+u|0,y>>>0>>0|m>>>0>=O>>>0)))break e;u:{if(!(xe[52148]&4)){l:{h:{f:{p:{if(y=t[12932],y)for(x=52152;;){if(m=t[x>>2],m>>>0<=y>>>0&y>>>0>2]>>>0)break p;if(x=t[x+8>>2],!x)break}if(m=Ff(0),(m|0)==-1||(O=u,y=t[13045],x=y-1|0,x&m&&(O=(u-m|0)+(x+m&0-y)|0),O>>>0<=A>>>0)||(y=t[13036],y&&(x=t[13034],M=x+O|0,y>>>0>>0|x>>>0>=M>>>0)))break l;if(x=Ff(O),(m|0)!=(x|0))break f;break u}if(O=M&S-G,m=Ff(O),(m|0)==(t[x>>2]+t[x+4>>2]|0))break h;x=m}if((x|0)==-1)break l;if(A+48>>>0<=O>>>0){m=x;break u}if(m=t[13046],m=m+(H-O|0)&0-m,(Ff(m)|0)==-1)break l;O=m+O|0,m=x;break u}if((m|0)!=-1)break u}t[13037]=t[13037]|4}if(m=Ff(u),x=Ff(0),(m|0)==-1|(x|0)==-1|x>>>0<=m>>>0||(O=x-m|0,O>>>0<=A+40>>>0))break r}x=t[13034]+O|0,t[13034]=x,x>>>0>ln[13035]&&(t[13035]=x);u:{if(S=t[12932],S){for(x=52152;;){if(y=t[x>>2],u=t[x+4>>2],(y+u|0)==(m|0))break u;if(x=t[x+8>>2],!x)break}break a}for(x=t[12930],x>>>0<=m>>>0&&x||(t[12930]=m),x=0,t[13039]=O,t[13038]=m,t[12934]=-1,t[12935]=t[13044],t[13041]=0;y=x<<3,u=y+51744|0,t[y+51752>>2]=u,t[y+51756>>2]=u,x=x+1|0,(x|0)!=32;);y=O-40|0,x=m+8&7?-8-m&7:0,u=y-x|0,t[12929]=u,x=x+m|0,t[12932]=x,t[x+4>>2]=u|1,t[(m+y|0)+4>>2]=40,t[12933]=t[13048];break i}if(xe[x+12|0]&8|y>>>0>S>>>0|m>>>0<=S>>>0)break a;t[x+4>>2]=u+O,x=S+8&7?-8-S&7:0,m=x+S|0,t[12932]=m,u=t[12929]+O|0,x=u-x|0,t[12929]=x,t[m+4>>2]=x|1,t[(u+S|0)+4>>2]=40,t[12933]=t[13048];break i}y=0;break t}m=0;break n}ln[12930]>m>>>0&&(t[12930]=m),u=m+O|0,x=52152;a:{s:{o:{u:{l:{h:{for(;;){if((u|0)!=t[x>>2]){if(x=t[x+8>>2],x)continue;break h}break}if(!(xe[x+12|0]&8))break l}for(x=52152;;){if(u=t[x>>2],u>>>0<=S>>>0&&(M=u+t[x+4>>2]|0,M>>>0>S>>>0))break u;x=t[x+8>>2]}}if(t[x>>2]=m,t[x+4>>2]=t[x+4>>2]+O,H=(m+8&7?-8-m&7:0)+m|0,t[H+4>>2]=A|3,O=u+(u+8&7?-8-u&7:0)|0,G=A+H|0,x=O-G|0,(S|0)==(O|0)){t[12932]=G,x=t[12929]+x|0,t[12929]=x,t[G+4>>2]=x|1;break s}if(t[12931]==(O|0)){t[12931]=G,x=t[12928]+x|0,t[12928]=x,t[G+4>>2]=x|1,t[x+G>>2]=x;break s}if(M=t[O+4>>2],(M&3)==1){S=M&-8;l:{if(M>>>0<=255){if(y=t[O+8>>2],u=M>>>3|0,m=t[O+12>>2],(m|0)==(y|0)){re=51704,se=t[12926]&D2(u),t[re>>2]=se;break l}t[y+12>>2]=m,t[m+8>>2]=y;break l}A=t[O+24>>2],m=t[O+12>>2];h:{if((O|0)!=(m|0)){u=t[O+8>>2],t[u+12>>2]=m,t[m+8>>2]=u;break h}f:{if(M=O+20|0,u=t[M>>2],u||(M=O+16|0,u=t[M>>2],u))break f;m=0;break h}for(;y=M,m=u,M=m+20|0,u=t[M>>2],!(!u&&(M=m+16|0,u=t[m+16>>2],!u)););t[y>>2]=0}if(!A)break l;y=t[O+28>>2],u=(y<<2)+52008|0;h:{if(t[u>>2]==(O|0)){if(t[u>>2]=m,m)break h;re=51708,se=t[12927]&D2(y),t[re>>2]=se;break l}if(t[A+(t[A+16>>2]==(O|0)?16:20)>>2]=m,!m)break l}if(t[m+24>>2]=A,u=t[O+16>>2],u&&(t[m+16>>2]=u,t[u+24>>2]=m),u=t[O+20>>2],!u)break l;t[m+20>>2]=u,t[u+24>>2]=m}O=S+O|0,M=t[O+4>>2],x=x+S|0}if(t[O+4>>2]=M&-2,t[G+4>>2]=x|1,t[x+G>>2]=x,x>>>0<=255){u=(x&-8)+51744|0,m=t[12926],x=1<<(x>>>3);l:{if(!(m&x)){t[12926]=x|m,x=u;break l}x=t[u+8>>2]}t[u+8>>2]=G,t[x+12>>2]=G,t[G+12>>2]=u,t[G+8>>2]=x;break s}M=31,x>>>0<=16777215&&(u=ri(x>>>8|0),M=((x>>>38-u&1)-(u<<1)|0)+62|0),t[G+28>>2]=M,t[G+16>>2]=0,t[G+20>>2]=0,u=(M<<2)+52008|0,y=t[12927],m=1<>2]=G;break l}for(M=x<<((M|0)!=31?25-(M>>>1|0)|0:0),m=t[u>>2];;){if(u=m,(t[m+4>>2]&-8)==(x|0))break o;if(m=M>>>29|0,M=M<<1,y=(m&4)+u|0,m=t[y+16>>2],!m)break}t[y+16>>2]=G}t[G+24>>2]=u,t[G+12>>2]=G,t[G+8>>2]=G;break s}for(y=O-40|0,x=m+8&7?-8-m&7:0,u=y-x|0,t[12929]=u,x=x+m|0,t[12932]=x,t[x+4>>2]=u|1,t[(m+y|0)+4>>2]=40,t[12933]=t[13048],x=(M+(M-39&7?39-M&7:0)|0)-47|0,y=x>>>0>>0?S:x,t[y+4>>2]=27,x=t[13041],t[y+16>>2]=t[13040],t[y+20>>2]=x,x=t[13039],t[y+8>>2]=t[13038],t[y+12>>2]=x,t[13040]=y+8,t[13039]=O,t[13038]=m,t[13041]=0,x=y+24|0;t[x+4>>2]=7,u=x+8|0,x=x+4|0,u>>>0>>0;);if((y|0)==(S|0))break i;if(t[y+4>>2]=t[y+4>>2]&-2,M=y-S|0,t[S+4>>2]=M|1,t[y>>2]=M,M>>>0<=255){u=(M&-8)+51744|0,m=t[12926],x=1<<(M>>>3);u:{if(!(m&x)){t[12926]=x|m,x=u;break u}x=t[u+8>>2]}t[u+8>>2]=S,t[x+12>>2]=S,t[S+12>>2]=u,t[S+8>>2]=x;break i}x=31,M>>>0<=16777215&&(x=ri(M>>>8|0),x=((M>>>38-x&1)-(x<<1)|0)+62|0),t[S+28>>2]=x,t[S+16>>2]=0,t[S+20>>2]=0,u=(x<<2)+52008|0,y=t[12927],m=1<>2]=S;break u}for(x=M<<((x|0)!=31?25-(x>>>1|0)|0:0),y=t[u>>2];;){if(u=y,(M|0)==(t[u+4>>2]&-8))break a;if(m=x>>>29|0,x=x<<1,m=(m&4)+u|0,y=t[m+16>>2],!y)break}t[m+16>>2]=S}t[S+24>>2]=u,t[S+12>>2]=S,t[S+8>>2]=S;break i}x=t[u+8>>2],t[x+12>>2]=G,t[u+8>>2]=G,t[G+24>>2]=0,t[G+12>>2]=u,t[G+8>>2]=x}x=H+8|0;break e}x=t[u+8>>2],t[x+12>>2]=S,t[u+8>>2]=S,t[S+24>>2]=0,t[S+12>>2]=u,t[S+8>>2]=x}if(x=t[12929],x>>>0<=A>>>0)break r;u=x-A|0,t[12929]=u,m=t[12932],x=m+A|0,t[12932]=x,t[x+4>>2]=u|1,t[m+4>>2]=A|3,x=m+8|0;break e}t[12458]=48,x=0;break e}n:{if(!O)break n;u=t[y+28>>2],x=(u<<2)+52008|0;r:{if(t[x>>2]==(y|0)){if(t[x>>2]=m,m)break r;H=D2(u)&H,t[12927]=H;break n}if(t[O+(t[O+16>>2]==(y|0)?16:20)>>2]=m,!m)break n}if(t[m+24>>2]=O,x=t[y+16>>2],x&&(t[m+16>>2]=x,t[x+24>>2]=m),x=t[y+20>>2],!x)break n;t[m+20>>2]=x,t[x+24>>2]=m}n:{if(M>>>0<=15){x=M+A|0,t[y+4>>2]=x|3,x=x+y|0,t[x+4>>2]=t[x+4>>2]|1;break n}if(t[y+4>>2]=A|3,S=y+A|0,t[S+4>>2]=M|1,t[S+M>>2]=M,M>>>0<=255){u=(M&-8)+51744|0,m=t[12926],x=1<<(M>>>3);r:{if(!(m&x)){t[12926]=x|m,x=u;break r}x=t[u+8>>2]}t[u+8>>2]=S,t[x+12>>2]=S,t[S+12>>2]=u,t[S+8>>2]=x;break n}x=31,M>>>0<=16777215&&(x=ri(M>>>8|0),x=((M>>>38-x&1)-(x<<1)|0)+62|0),t[S+28>>2]=x,t[S+16>>2]=0,t[S+20>>2]=0,u=(x<<2)+52008|0;r:{m=1<>2]=S;break i}for(x=M<<((x|0)!=31?25-(x>>>1|0)|0:0),A=t[u>>2];;){if(u=A,(t[u+4>>2]&-8)==(M|0))break r;if(m=x>>>29|0,x=x<<1,m=(m&4)+u|0,A=t[m+16>>2],!A)break}t[m+16>>2]=S}t[S+24>>2]=u,t[S+12>>2]=S,t[S+8>>2]=S;break n}x=t[u+8>>2],t[x+12>>2]=S,t[u+8>>2]=S,t[S+24>>2]=0,t[S+12>>2]=u,t[S+8>>2]=x}x=y+8|0;break e}t:{if(!G)break t;u=t[m+28>>2],x=(u<<2)+52008|0;n:{if(t[x>>2]==(m|0)){if(t[x>>2]=y,y)break n;re=51708,se=D2(u)&H,t[re>>2]=se;break t}if(t[G+(t[G+16>>2]==(m|0)?16:20)>>2]=y,!y)break t}if(t[y+24>>2]=G,x=t[m+16>>2],x&&(t[y+16>>2]=x,t[x+24>>2]=y),x=t[m+20>>2],!x)break t;t[y+20>>2]=x,t[x+24>>2]=y}t:{if(M>>>0<=15){x=M+A|0,t[m+4>>2]=x|3,x=x+m|0,t[x+4>>2]=t[x+4>>2]|1;break t}if(t[m+4>>2]=A|3,y=m+A|0,t[y+4>>2]=M|1,t[y+M>>2]=M,Y){u=(Y&-8)+51744|0,S=t[12931],x=1<<(Y>>>3);n:{if(!(x&O)){t[12926]=x|O,x=u;break n}x=t[u+8>>2]}t[u+8>>2]=S,t[x+12>>2]=S,t[S+12>>2]=u,t[S+8>>2]=x}t[12931]=y,t[12928]=M}x=m+8|0}return Nt=Q+16|0,x|0}function mp(x,u,m,y,S){var M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0,Ji=0,s0=0,f0=Ye(0);Rn=t[x+28>>2],Tn=t[(t[Rn+76>>2]+De(u,5644)|0)+5584>>2],he=t[x+24>>2],$n=t[he+24>>2],re=t[Rn+24>>2],M=(u>>>0)/(re>>>0)|0,en=t[t[x+20>>2]>>2],x=t[Rn+12>>2],re=t[Rn+4>>2]+De(x,u-De(M,re)|0)|0,u=t[he>>2],H=u>>>0>>0?re:u,t[en>>2]=H,u=0,Q=x,x=x+re|0,x=0-(Q>>>0>x>>>0?1:u)|x,u=t[he+8>>2],x=x>>>0>>0?x:u,t[en+8>>2]=x;e:{if(!((x|0)>(H|0)&(H|0)>=0)){vt(S,1,10661,0);break e}if(re=t[en+20>>2],x=t[Rn+16>>2],M=t[Rn+8>>2]+De(x,M)|0,u=t[he+4>>2],H=u>>>0>>0?M:u,t[en+4>>2]=H,u=0,Q=x,x=x+M|0,x=0-(Q>>>0>x>>>0?1:u)|x,u=t[he+12>>2],x=x>>>0>>0?x:u,t[en+12>>2]=x,!((x|0)>(H|0)&(H|0)>=0)){vt(S,1,10623,0);break e}t:{if(t[Tn+4>>2]){if(t[en+16>>2])break t;return 1}vt(S,1,8841,0);break e}t:{n:{r:{for(;;){if(t[$n+36>>2]=0,x=t[$n>>2],M=x>>31,kt=x-1|0,u=t[en>>2],H=u,he=kt+u|0,O=M-!x|0,u=O+(u>>31)|0,u=I0(he,H>>>0>he>>>0?u+1|0:u,x,M),un=u,t[re>>2]=u,he=t[$n+4>>2],_e=he>>31,H=he-1|0,u=t[en+4>>2],Q=u,Ze=H+u|0,G=_e-!he|0,u=G+(u>>31)|0,Ze=I0(Ze,Q>>>0>Ze>>>0?u+1|0:u,he,_e),t[re+4>>2]=Ze,u=t[en+8>>2],Q=u,kt=u+kt|0,u=(u>>31)+O|0,x=I0(kt,Q>>>0>kt>>>0?u+1|0:u,x,M),M=x,t[re+8>>2]=x,x=t[en+12>>2],t[re+16>>2]=Zr,u=G+(x>>31)|0,x=x+H|0,u=x>>>0>>0?u+1|0:u,x=I0(x,u,he,_e),t[re+12>>2]=x,he=t[Tn+4>>2],t[re+20>>2]=he,u=t[Rn+80>>2],t[re+24>>2]=u>>>0>he>>>0?1:he-u|0,m){H=x-Ze|0,M=M-un|0;i:{if((x|0)==(Ze|0)||(N0(H,0,M,0),!Gi))break i;break n}if(x=De(M,H),x>>>0>=1073741824)break n;t[re+44>>2]=x<<2}Gt(t[re+52>>2]),t[re+68>>2]=0,t[re+60>>2]=0,t[re+64>>2]=0,t[re+52>>2]=0,t[re+56>>2]=0,x=De(he,152),u=t[re+28>>2];i:{if(!u){if(u=si(x),t[re+28>>2]=u,!u)break e;t[re+32>>2]=x,pi(u,0,x);break i}if(x>>>0<=ln[re+32>>2])break i;if(u=Wi(u,x),!u){vt(S,1,5337,0),Gt(t[re+28>>2]),t[re+28>>2]=0,t[re+32>>2]=0;break e}t[re+28>>2]=u,Q=u,u=t[re+32>>2],pi(Q+u|0,0,x-u|0),t[re+32>>2]=x}if(x=t[re+20>>2],x)for(rr=Tn+28|0,he=t[re+28>>2],er=0;;){if(_e=x-1|0,M=_e&31,(_e&63)>>>0>=32?(u=-1<>>32-M),Ze=O^-1,H=t[re>>2],M=Ze+H|0,kt=u^-1,u=kt+(H>>31)|0,u=M>>>0>>0?u+1|0:u,H=M,M=_e&31,un=(_e&63)>>>0>=32?u>>M:((1<>>M,t[he>>2]=un,u=t[re+4>>2],H=u,M=u+Ze|0,u=(u>>31)+kt|0,u=M>>>0>>0?u+1|0:u,H=M,M=_e&31,O=(_e&63)>>>0>=32?u>>M:((1<>>M,t[he+4>>2]=O,u=t[re+8>>2],H=u,M=u+Ze|0,u=(u>>31)+kt|0,u=M>>>0>>0?u+1|0:u,H=M,M=_e&31,Q=(_e&63)>>>0>=32?u>>M:((1<>>M,t[he+8>>2]=Q,u=t[re+12>>2],H=u,M=u+Ze|0,u=(u>>31)+kt|0,u=M>>>0>>0?u+1|0:u,H=M,M=_e&31,H=(_e&63)>>>0>=32?u>>M:((1<>>M,t[he+12>>2]=H,G=Q>>31,se=(er<<2)+Tn|0,Rt=t[se+812>>2],M=Rt&31,(Rt&63)>>>0>=32?(u=1<>>32-M),$e=Y,M=$e+Q|0,u=u+G|0,G=M-1|0,M=(M>>>0<$e>>>0?u+1|0:u)-!M|0,u=Rt&31,G=((Rt&63)>>>0>=32?M>>u:((1<>>u)<>31,$e=t[se+944>>2],M=$e&31,($e&63)>>>0>=32?(u=-1<>>32-M,M=-1<>>0>>0?u+1|0:u,se=M,M=$e&31,u=(($e&63)>>>0>=32?u>>M:((1<>>M)<<$e,(u|0)<0))break t;sr=O&-1<<$e,H=(O|0)!=(H|0)?u-sr>>$e:0,t[he+20>>2]=H,gr=un&-1<>Rt:0,t[he+16>>2]=M;i:{if(!M||(N0(M,0,H,0),!Gi))break i;break n}if(_r=De(M,H),_r>>>0>=107374183)break n;for(bn=De(_r,40),Q=he,er?($e=$e-1|0,Rt=Rt-1|0,u=sr>>31,M=sr+1|0,sr=((M?u:u+1|0)&1)<<31|M>>>1,u=gr>>31,M=gr+1|0,gr=((M?u:u+1|0)&1)<<31|M>>>1,u=3):u=1,t[Q+24>>2]=u,gi=1<<$e,_i=1<>>0>=32?(u=1<>>32-H),li=x,H=u,x=t[Tn+12>>2],jt=x>>>0<$e>>>0?x:$e,x=jt&31,(jt&63)>>>0>=32?(u=-1<>>32-x,x=-1<>2],Cn=x>>>0>>0?x:Rt,x=Cn&31,(Cn&63)>>>0>=32?(u=-1<>>32-x,x=-1<>2]=0,u=t[re>>2],Q=u,O=u+Ze|0,u=(u>>31)+kt|0,u=O>>>0>>0?u+1|0:u,Q=O,O=_e&31,Ne=(_e&63)>>>0>=32?u>>O:((1<>>O,t[M>>2]=Ne,u=t[re+4>>2],Q=u,O=u+Ze|0,u=(u>>31)+kt|0,u=O>>>0>>0?u+1|0:u,Q=O,O=_e&31,Y=(_e&63)>>>0>=32?u>>O:((1<>>O,O=Ze,G=O,Q=kt,se=Q,A=_e;break i}x=$r+1|0,t[M+16>>2]=x,O=x&1,Q=_e&31,(_e&63)>>>0>=32?(u=O<>>32-Q,Q=O<>2],G=se+O|0,Q=O>>>0>>0?u+1|0:u,u=Q+(se>>31)|0,u=G>>>0>>0?u+1|0:u,se=G,G=un&31,Ne=(un&63)>>>0>=32?u>>G:((1<>>G,t[M>>2]=Ne,G=x>>>1|0,se=_e&31,(_e&63)>>>0>=32?(u=G<>>32-se,se=G<>2],A=Y+G|0,se=G>>>0>>0?u+1|0:u,u=se+(Y>>31)|0,u=A>>>0>>0?u+1|0:u,Y=A,A=un&31,Y=(un&63)>>>0>=32?u>>A:((1<>>A,A=un}me=t[re+8>>2],Yt=me>>31,Oe=t[re+12>>2],t[M+4>>2]=Y,u=(Oe>>31)+se|0,G=G+Oe|0,u=G>>>0>>0?u+1|0:u,se=G,G=A&31,G=(A&63)>>>0>=32?u>>G:((1<>>G,t[M+12>>2]=G,u=Q+Yt|0,O=O+me|0,u=O>>>0>>0?u+1|0:u,Q=O,O=A&31,u=(A&63)>>>0>=32?u>>O:((1<>>O,t[M+8>>2]=u;i:{a:{s:{if(m){if((u|0)==(Ne|0)|(G|0)==(Y|0))break i;if(x)break s;u=0;break a}if(u=0,!t[Tn+20>>2]|!x)break a}u=(x|0)==3?2:1}O=t[rr+4>>2],Dr=1,x=(t[$n+24>>2]+u|0)-t[rr>>2]|0;a:{if((x|0)>=1024){if(Dr=898846567431158e293,x>>>0<2047){x=x-1023|0;break a}Dr=te,x=((x|0)>=3069?3069:x)-2046|0;break a}if((x|0)>-1023)break a;if(Dr=2004168360008973e-307,x>>>0>4294965304){x=x+969|0;break a}Dr=0,x=((x|0)<=-2960?-2960:x)+1938|0}bt(0,0),bt(1,x+1023<<20),s0=M,f0=Ye(Dr*+Qt()*(+(O|0)*.00048828125+1)),Ue[s0+32>>2]=f0,t[M+28>>2]=(t[rr>>2]+t[Tn+804>>2]|0)-1,x=t[M+20>>2];a:{if(!(x|!_r)){if(x=si(bn),t[M+20>>2]=x,!x){vt(S,1,4805,0);break e}pi(x,0,bn),t[M+24>>2]=bn;break a}if(bn>>>0>ln[M+24>>2]){if(x=Wi(x,bn),!x){vt(S,1,4805,0),Gt(t[M+20>>2]),t[M+20>>2]=0,t[M+24>>2]=0;break e}t[M+20>>2]=x,u=x,x=t[M+24>>2],pi(u+x|0,0,bn-x|0),t[M+24>>2]=bn}if(!_r)break i}for(x=t[M+20>>2],Q=0;;){if(O=t[he+16>>2],u=(Q>>>0)/(O>>>0)|0,O=(Q-De(u,O)<>2],se=(O|0)>(G|0)?O:G,t[x>>2]=se,u=(u<<$e)+sr|0,G=t[M+4>>2],A=(u|0)>(G|0)?u:G,t[x+4>>2]=A,O=O+_i|0,G=t[M+8>>2],O=(O|0)<(G|0)?O:G,t[x+8>>2]=O,u=u+gi|0,G=t[M+12>>2],G=(u|0)<(G|0)?u:G,t[x+12>>2]=G,u=(O>>31)+Ji|0,Y=O,O=O+ji|0,u=Y>>>0>O>>>0?u+1|0:u,Y=O,O=Cn&31,se=se>>Cn,Y=((Cn&63)>>>0>=32?u>>O:((1<>>O)-se<>Cn,t[x+16>>2]=Y,u=(G>>31)+Bi|0,O=G+Di|0,u=O>>>0>>0?u+1|0:u,G=A>>jt,A=O,O=jt&31,u=((jt&63)>>>0>=32?u>>O:((1<>>O)-G<>jt,t[x+20>>2]=u,O=De(u,Y),N0(y,0,O,0),Gi){vt(S,1,4886,0);break e}u=De(y,O),A=t[x+24>>2];a:{s:{if(!(A|!O)){if(A=si(u),t[x+24>>2]=A,!A)break e;pi(A,0,u),A=x+28|0;break s}if(u>>>0<=ln[x+28>>2])break a;if(A=Wi(A,u),!A){Gt(t[x+24>>2]),t[x+24>>2]=0,t[x+28>>2]=0,vt(S,1,4411,0);break e}t[x+24>>2]=A,Y=A,A=t[x+28>>2],pi(Y+A|0,0,u-A|0),A=x+28|0}t[A>>2]=u}u=t[x+20>>2],A=t[x+16>>2],Y=t[x+32>>2];a:{if(!Y){u=$h(A,u,S);break a}u=Dp(Y,A,u,S)}t[x+32>>2]=u,u=t[x+20>>2],A=t[x+16>>2],Y=t[x+36>>2];a:{if(!Y){u=$h(A,u,S);break a}u=Dp(Y,A,u,S)}t[x+36>>2]=u;a:{if(!O)break a;if(Ne=0,!m)for(;;){Oe=t[x+16>>2],Y=(Ne>>>0)/(Oe>>>0)|0,u=t[x+24>>2]+(Ne<<6)|0,me=t[u>>2];s:{if(me){Yt=t[u+56>>2],Qr=t[u+4>>2],A=t[u+48>>2],Gt(t[u+60>>2]),t[u+56>>2]=0,t[u+60>>2]=0,t[u+48>>2]=0,t[u+52>>2]=0,t[u+40>>2]=0,t[u+44>>2]=0,t[u+32>>2]=0,t[u+36>>2]=0,t[u+24>>2]=0,t[u+28>>2]=0,t[u+16>>2]=0,t[u+20>>2]=0,t[u+8>>2]=0,t[u+12>>2]=0,t[u>>2]=me,t[u+48>>2]=A,A&&pi(me,0,De(A,24)),t[u+4>>2]=Qr,t[u+56>>2]=Yt;break s}if(A=oi(10,24),t[u>>2]=A,!A)break e;t[u+48>>2]=10}if(A=se+(Ne-De(Y,Oe)|0)|0,me=A<>2],t[u+8>>2]=(me|0)>(Oe|0)?me:Oe,Y=G+Y|0,me=Y<>2],t[u+12>>2]=(me|0)>(Oe|0)?me:Oe,A=A+1<>2],t[u+16>>2]=(A|0)<(me|0)?A:me,Qr=u,u=Y+1<>2],t[Qr+20>>2]=(u|0)<(A|0)?u:A,Ne=Ne+1|0,(O|0)==(Ne|0))break a}for(;;){Y=t[x+16>>2],A=(Ne>>>0)/(Y>>>0)|0;s:{if(u=t[x+24>>2]+De(Ne,52)|0,t[u+4>>2]||(me=oi(100,24),t[u+4>>2]=me,me))break s;break e}s:{if(t[u+8>>2]||(me=oi(100,24),t[u+8>>2]=me,me))break s;break e}if(Y=se+(Ne-De(A,Y)|0)|0,me=Y<>2],me=(me|0)>(Oe|0)?me:Oe,t[u+12>>2]=me,A=A+G|0,Oe=A<>2],Oe=(Oe|0)>(Yt|0)?Oe:Yt,t[u+16>>2]=Oe,Y=Y+1<>2],Y=(Y|0)<(Yt|0)?Y:Yt,t[u+20>>2]=Y,A=A+1<>2],A=(A|0)<(Yt|0)?A:Yt,t[u+24>>2]=A,A=De(Y-me|0,A-Oe|0)<<2,Y=A+74|0,Y>>>0>ln[u+36>>2]){if(me=t[u>>2],me&&Gt(me-1|0),A=si(A+75|0),t[u>>2]=A,!A)break r;t[u+36>>2]=Y,dt[A|0]=0,t[u>>2]=t[u>>2]+1}if(Ne=Ne+1|0,(O|0)==(Ne|0))break}}if(x=x+40|0,Q=Q+1|0,(_r|0)==(Q|0))break}}if(rr=rr+8|0,M=M+36|0,$r=$r+1|0,!($r>>>0>2]))break}if(he=he+152|0,x=_e,er=er+1|0,!(er>>>0>2]))break}if($n=$n+52|0,re=re+76|0,Tn=Tn+1080|0,Zr=Zr+1|0,!(Zr>>>0>2]))break}return 1}return t[u+36>>2]=0,0}vt(S,1,4933,0);break e}vt(S,1,4236,0)}return 0}function Ec(x,u,m,y,S,M){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0;var O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0;he=((y|0)!=0)+m|0,re=he>>>1|0;e:{t:{if((M|0)!=8){if(!m)break e;if(!M)break t;for(G=7-M|0,me=((G>>>0<=7?G:0)<<2)+4|0,_e=M&-4,se=M&3,Oe=M<<2,G=0;;){if(Y=G<<3,Q=De(S,G),O=0,H=0,M>>>0>=4)for(;t[(O+Y<<2)+u>>2]=t[(O+Q<<2)+x>>2],A=O|1,t[(A+Y<<2)+u>>2]=t[(A+Q<<2)+x>>2],A=O|2,t[(A+Y<<2)+u>>2]=t[(A+Q<<2)+x>>2],A=O|3,t[(Y+A<<2)+u>>2]=t[(A+Q<<2)+x>>2],O=O+4|0,H=H+4|0,(_e|0)!=(H|0););if(H=0,se)for(;A=O,t[(O+Y<<2)+u>>2]=t[(O+Q<<2)+x>>2],O=O+1|0,H=H+1|0,(se|0)!=(H|0););if(A>>>0<=6&&pi(((G<<5)+Oe|0)+u|0,0,me),G=G+1|0,(G|0)==(m|0))break}break e}if(!m)break e;if((m|0)!=1)for(H=m&-2;A=(De(S,O)<<2)+x|0,Q=t[A+4>>2],Y=(O<<5)+u|0,t[Y>>2]=t[A>>2],t[Y+4>>2]=Q,Q=t[A+28>>2],t[Y+24>>2]=t[A+24>>2],t[Y+28>>2]=Q,Q=t[A+20>>2],t[Y+16>>2]=t[A+16>>2],t[Y+20>>2]=Q,Q=t[A+12>>2],t[Y+8>>2]=t[A+8>>2],t[Y+12>>2]=Q,A=O|1,Y=(A<<5)+u|0,A=(De(S,A)<<2)+x|0,Q=t[A+28>>2],t[Y+24>>2]=t[A+24>>2],t[Y+28>>2]=Q,Q=t[A+20>>2],t[Y+16>>2]=t[A+16>>2],t[Y+20>>2]=Q,Q=t[A+12>>2],t[Y+8>>2]=t[A+8>>2],t[Y+12>>2]=Q,Q=t[A+4>>2],t[Y>>2]=t[A>>2],t[Y+4>>2]=Q,O=O+2|0,G=G+2|0,(H|0)!=(G|0););if(!(m&1))break e;A=(O<<5)+u|0,G=(De(S,O)<<2)+x|0,O=t[G+4>>2],t[A>>2]=t[G>>2],t[A+4>>2]=O,O=t[G+28>>2],t[A+24>>2]=t[G+24>>2],t[A+28>>2]=O,O=t[G+20>>2],t[A+16>>2]=t[G+16>>2],t[A+20>>2]=O,O=t[G+12>>2],t[A+8>>2]=t[G+8>>2],t[A+12>>2]=O;break e}pi(u,0,m<<5)}Y=m-re|0;e:{if(y){if(m>>>0<2)break e;if(G=0,he>>>0>=4)for(Q=re>>>0<=2?2:re,O=0,A=1;O=(O<<6)+u|0,G=A,H=(G<<6)+u|0,t[O+32>>2]=t[O+32>>2]-(t[H>>2]+t[O>>2]>>1),t[O+36>>2]=t[O+36>>2]-(t[H+4>>2]+t[O+4>>2]>>1),t[O+40>>2]=t[O+40>>2]-(t[H+8>>2]+t[O+8>>2]>>1),t[O+44>>2]=t[O+44>>2]-(t[H+12>>2]+t[O+12>>2]>>1),t[O+48>>2]=t[O+48>>2]-(t[H+16>>2]+t[O+16>>2]>>1),t[O+52>>2]=t[O+52>>2]-(t[H+20>>2]+t[O+20>>2]>>1),t[O+56>>2]=t[O+56>>2]-(t[H+24>>2]+t[O+24>>2]>>1),t[O+60>>2]=t[O+60>>2]-(t[H+28>>2]+t[O+28>>2]>>1),O=G,A=O+1|0,(Q|0)!=(A|0););if(A=1,H=m&1,H||(G=(G<<6)+u|0,t[G+32>>2]=t[G+32>>2]-t[G>>2],t[G+36>>2]=t[G+36>>2]-t[G+4>>2],t[G+40>>2]=t[G+40>>2]-t[G+8>>2],t[G+44>>2]=t[G+44>>2]-t[G+12>>2],t[G+48>>2]=t[G+48>>2]-t[G+16>>2],t[G+52>>2]=t[G+52>>2]-t[G+20>>2],t[G+56>>2]=t[G+56>>2]-t[G+24>>2],t[G+60>>2]=t[G+60>>2]-t[G+28>>2]),t[u>>2]=t[u>>2]+((t[u+32>>2]<<1)+2>>2),t[u+4>>2]=t[u+4>>2]+((t[u+36>>2]<<1)+2>>2),t[u+8>>2]=t[u+8>>2]+((t[u+40>>2]<<1)+2>>2),t[u+12>>2]=t[u+12>>2]+((t[u+44>>2]<<1)+2>>2),t[u+16>>2]=t[u+16>>2]+((t[u+48>>2]<<1)+2>>2),t[u+20>>2]=t[u+20>>2]+((t[u+52>>2]<<1)+2>>2),t[u+24>>2]=t[u+24>>2]+((t[u+56>>2]<<1)+2>>2),t[u+28>>2]=t[u+28>>2]+((t[u+60>>2]<<1)+2>>2),O=16,Y>>>0>=2){for(;G=(A<<6)+u|0,t[G>>2]=t[G>>2]+((t[G-32>>2]+t[G+32>>2]|0)+2>>2),t[G+4>>2]=t[G+4>>2]+((t[G-28>>2]+t[G+36>>2]|0)+2>>2),t[G+12>>2]=t[G+12>>2]+((t[G-20>>2]+t[G+44>>2]|0)+2>>2),t[G+8>>2]=t[G+8>>2]+((t[G-24>>2]+t[G+40>>2]|0)+2>>2),t[G+16>>2]=t[G+16>>2]+((t[G-16>>2]+t[G+48>>2]|0)+2>>2),t[G+20>>2]=t[G+20>>2]+((t[G-12>>2]+t[G+52>>2]|0)+2>>2),t[G+24>>2]=t[G+24>>2]+((t[G-8>>2]+t[G+56>>2]|0)+2>>2),t[G+28>>2]=t[G+28>>2]+((t[G-4>>2]+t[G+60>>2]|0)+2>>2),A=A+1|0,(Y|0)!=(A|0););O=Y<<4}if(!H)break e;G=O<<2,A=G+u|0,t[A>>2]=t[A>>2]+((t[A-32>>2]<<1)+2>>2),O=(G|4)+u|0,t[O>>2]=t[O>>2]+((t[A-28>>2]<<1)+2>>2),O=(G|8)+u|0,t[O>>2]=t[O>>2]+((t[A-24>>2]<<1)+2>>2),O=(G|12)+u|0,t[O>>2]=t[O>>2]+((t[A-20>>2]<<1)+2>>2),O=(G|16)+u|0,t[O>>2]=t[O>>2]+((t[A-16>>2]<<1)+2>>2),O=(G|20)+u|0,t[O>>2]=t[O>>2]+((t[A-12>>2]<<1)+2>>2),O=(G|24)+u|0,t[O>>2]=t[O>>2]+((t[A-8>>2]<<1)+2>>2),G=(G|28)+u|0,t[G>>2]=t[G>>2]+((t[A-4>>2]<<1)+2>>2);break e}if((m|0)!=1){if(t[u>>2]=t[u>>2]-t[u+32>>2],t[u+4>>2]=t[u+4>>2]-t[u+36>>2],t[u+8>>2]=t[u+8>>2]-t[u+40>>2],t[u+12>>2]=t[u+12>>2]-t[u+44>>2],t[u+16>>2]=t[u+16>>2]-t[u+48>>2],t[u+20>>2]=t[u+20>>2]-t[u+52>>2],t[u+24>>2]=t[u+24>>2]-t[u+56>>2],t[u+28>>2]=t[u+28>>2]-t[u+60>>2],O=16,he>>>0>3){for(O=re>>>0<=2?2:re,A=1;G=(A<<6)+u|0,t[G+4>>2]=t[G+4>>2]-(t[G-28>>2]+t[G+36>>2]>>1),t[G+8>>2]=t[G+8>>2]-(t[G-24>>2]+t[G+40>>2]>>1),t[G+12>>2]=t[G+12>>2]-(t[G-20>>2]+t[G+44>>2]>>1),t[G>>2]=t[G>>2]-(t[G-32>>2]+t[G+32>>2]>>1),t[G+16>>2]=t[G+16>>2]-(t[G-16>>2]+t[G+48>>2]>>1),t[G+20>>2]=t[G+20>>2]-(t[G-12>>2]+t[G+52>>2]>>1),t[G+24>>2]=t[G+24>>2]-(t[G-8>>2]+t[G+56>>2]>>1),t[G+28>>2]=t[G+28>>2]-(t[G-4>>2]+t[G+60>>2]>>1),A=A+1|0,(O|0)!=(A|0););O=O<<4}A=1,Q=m&1,Q&&(O=O<<2,G=O+u|0,t[G>>2]=t[G>>2]-t[G-32>>2],H=(O|4)+u|0,t[H>>2]=t[H>>2]-t[G-28>>2],H=(O|8)+u|0,t[H>>2]=t[H>>2]-t[G-24>>2],H=(O|12)+u|0,t[H>>2]=t[H>>2]-t[G-20>>2],H=(O|16)+u|0,t[H>>2]=t[H>>2]-t[G-16>>2],H=(O|20)+u|0,t[H>>2]=t[H>>2]-t[G-12>>2],H=(O|24)+u|0,t[H>>2]=t[H>>2]-t[G-8>>2],O=(O|28)+u|0,t[O>>2]=t[O>>2]-t[G-4>>2]),O=0;t:{if(Y>>>0<2){G=0;break t}for(;O=(O<<6)+u|0,G=A,H=(G<<6)+u|0,t[O+32>>2]=t[O+32>>2]+((t[O>>2]+t[H>>2]|0)+2>>2),t[O+36>>2]=t[O+36>>2]+((t[O+4>>2]+t[H+4>>2]|0)+2>>2),t[O+40>>2]=t[O+40>>2]+((t[O+8>>2]+t[H+8>>2]|0)+2>>2),t[O+44>>2]=t[O+44>>2]+((t[O+12>>2]+t[H+12>>2]|0)+2>>2),t[O+48>>2]=t[O+48>>2]+((t[O+16>>2]+t[H+16>>2]|0)+2>>2),t[O+52>>2]=t[O+52>>2]+((t[O+20>>2]+t[H+20>>2]|0)+2>>2),t[O+56>>2]=t[O+56>>2]+((t[O+24>>2]+t[H+24>>2]|0)+2>>2),t[O+60>>2]=t[O+60>>2]+((t[O+28>>2]+t[H+28>>2]|0)+2>>2),O=G,A=O+1|0,(Y|0)!=(A|0););}if(Q)break e;A=(G<<6)+u|0,t[A+32>>2]=t[A+32>>2]+((t[A>>2]<<1)+2>>2),t[A+36>>2]=t[A+36>>2]+((t[A+4>>2]<<1)+2>>2),t[A+40>>2]=t[A+40>>2]+((t[A+8>>2]<<1)+2>>2),t[A+44>>2]=t[A+44>>2]+((t[A+12>>2]<<1)+2>>2),t[A+48>>2]=t[A+48>>2]+((t[A+16>>2]<<1)+2>>2),t[A+52>>2]=t[A+52>>2]+((t[A+20>>2]<<1)+2>>2),t[A+56>>2]=t[A+56>>2]+((t[A+24>>2]<<1)+2>>2),t[A+60>>2]=t[A+60>>2]+((t[A+28>>2]<<1)+2>>2);break e}t[u>>2]=t[u>>2]<<1,t[u+4>>2]=t[u+4>>2]<<1,t[u+8>>2]=t[u+8>>2]<<1,t[u+12>>2]=t[u+12>>2]<<1,t[u+16>>2]=t[u+16>>2]<<1,t[u+20>>2]=t[u+20>>2]<<1,t[u+24>>2]=t[u+24>>2]<<1,t[u+28>>2]=t[u+28>>2]<<1}e:{if((M|0)==8){Q=!y<<3;t:{if(he>>>0<2)break t;y=re-1|0,O=(Q<<2)+u|0,M=re&3;n:{if(!M){G=re,A=x;break n}for(H=0,he=S<<2,G=re,A=x;se=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=se,se=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=se,se=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=se,se=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=se,O=O- -64|0,G=G-1|0,A=A+he|0,H=H+1|0,(M|0)!=(H|0););}if(y>>>0<3)break t;for(M=S<<2;y=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=y,y=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=y,y=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=y,y=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=y,y=M+A|0,A=t[O+92>>2],t[y+24>>2]=t[O+88>>2],t[y+28>>2]=A,A=t[O+84>>2],t[y+16>>2]=t[O+80>>2],t[y+20>>2]=A,A=t[O+76>>2],t[y+8>>2]=t[O+72>>2],t[y+12>>2]=A,A=t[O+68>>2],t[y>>2]=t[O+64>>2],t[y+4>>2]=A,A=t[O+156>>2],y=y+M|0,t[y+24>>2]=t[O+152>>2],t[y+28>>2]=A,A=t[O+148>>2],t[y+16>>2]=t[O+144>>2],t[y+20>>2]=A,A=t[O+140>>2],t[y+8>>2]=t[O+136>>2],t[y+12>>2]=A,A=t[O+132>>2],t[y>>2]=t[O+128>>2],t[y+4>>2]=A,A=t[O+220>>2],y=y+M|0,t[y+24>>2]=t[O+216>>2],t[y+28>>2]=A,A=t[O+212>>2],t[y+16>>2]=t[O+208>>2],t[y+20>>2]=A,A=t[O+204>>2],t[y+8>>2]=t[O+200>>2],t[y+12>>2]=A,A=t[O+196>>2],t[y>>2]=t[O+192>>2],t[y+4>>2]=A,A=y+M|0,O=O+256|0,G=G-4|0,!!G;);}if(!Y)break e;if(A=(De(S,re)<<2)+x|0,O=((Q^8)<<2)+u|0,x=Y&3,x)for(u=0,y=S<<2;M=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=M,M=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=M,M=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=M,M=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=M,O=O- -64|0,Y=Y-1|0,A=y+A|0,u=u+1|0,(x|0)!=(u|0););if((re^-1)+m>>>0<3)break e;for(u=S<<2;x=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=x,x=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=x,x=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=x,x=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=x,m=t[O+92>>2],x=u+A|0,t[x+24>>2]=t[O+88>>2],t[x+28>>2]=m,m=t[O+84>>2],t[x+16>>2]=t[O+80>>2],t[x+20>>2]=m,m=t[O+76>>2],t[x+8>>2]=t[O+72>>2],t[x+12>>2]=m,m=t[O+68>>2],t[x>>2]=t[O+64>>2],t[x+4>>2]=m,m=t[O+156>>2],x=x+u|0,t[x+24>>2]=t[O+152>>2],t[x+28>>2]=m,m=t[O+148>>2],t[x+16>>2]=t[O+144>>2],t[x+20>>2]=m,m=t[O+140>>2],t[x+8>>2]=t[O+136>>2],t[x+12>>2]=m,m=t[O+132>>2],t[x>>2]=t[O+128>>2],t[x+4>>2]=m,m=t[O+220>>2],x=x+u|0,t[x+24>>2]=t[O+216>>2],t[x+28>>2]=m,m=t[O+212>>2],t[x+16>>2]=t[O+208>>2],t[x+20>>2]=m,m=t[O+204>>2],t[x+8>>2]=t[O+200>>2],t[x+12>>2]=m,m=t[O+196>>2],t[x>>2]=t[O+192>>2],t[x+4>>2]=m,A=x+u|0,O=O+256|0,Y=Y-4|0,!!Y;);break e}Op(u,x,Y,re,S,!y,M)}}function vp(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=Ye(0),he=0,me=0,_e=Ye(0),Oe=0,Ne=Ye(0),$e=Ye(0),Ze=Ye(0),kt=0,Rt=0,jt=0,Yt=0,en=Ye(0),un=0,Cn=0;Y=Nt-8272|0,Nt=Y,t[Y+12>>2]=0,M=t[t[x>>2]>>2],m=oi(1,96),S=0;e:{if(!m)break e;t[m+76>>2]=1;t:{n:{r:switch(((M|0)!=1375686655)<<1){case 0:if(t[m+88>>2]=204,t[m+84>>2]=205,t[m+80>>2]=206,t[m+16>>2]=207,t[m+4>>2]=208,t[m+28>>2]=209,t[m+24>>2]=210,t[m+20>>2]=211,t[m>>2]=212,t[m+92>>2]=213,t[m+44>>2]=214,t[m+40>>2]=215,t[m+36>>2]=216,t[m+32>>2]=217,t[m+12>>2]=218,t[m+8>>2]=219,S=Kh(),t[m+48>>2]=S,S)break n;break t;case 2:break r;default:break t}t[m+88>>2]=220,t[m+84>>2]=221,t[m+80>>2]=222,t[m+16>>2]=223,t[m+4>>2]=224,t[m+92>>2]=225,t[m+44>>2]=226,t[m+40>>2]=227,t[m+36>>2]=228,t[m+32>>2]=229,t[m+28>>2]=230,t[m+24>>2]=231,t[m+20>>2]=232,t[m+12>>2]=233,t[m+8>>2]=234,t[m>>2]=235,S=oi(1,136);r:{if(S){M=Kh(),t[S>>2]=M;i:{if(!M||(t[S+108>>2]=0,t[S+112>>2]=0,dt[S+124|0]=0,t[S+116>>2]=0,t[S+120>>2]=0,M=Bf(),t[S+4>>2]=M,!M)||(M=Bf(),t[S+8>>2]=M,!M))break i;break r}L4(S)}S=0}if(t[m+48>>2]=S,!S)break t}t[m+72>>2]=106,t[m+64>>2]=106,t[m+60>>2]=0,t[m+52>>2]=0,t[m+56>>2]=0,t[m+68>>2]=106,S=m;break e}Gt(m),S=0}S&&(t[S+60>>2]=0,t[S+72>>2]=55),S&&(t[S+56>>2]=0,t[S+68>>2]=56),S&&(t[S+52>>2]=0,t[S- -64>>2]=57),m=Y+16|0,m&&(m=pi(m,0,8248),t[m+8248>>2]=0,t[m+8200>>2]=-1,t[m+8204>>2]=-1),t[Y+16>>2]=u,t[Y+20>>2]=t[x+84>>2],m=t[x>>2],t[Y+4>>2]=m,t[Y>>2]=m,t[Y+8>>2]=t[x+4>>2]-m,re=Ln(1),re&&(re&&(t[re+4>>2]=0,t[re>>2]=Y),m=t[Y+8>>2],re&&(t[re+8>>2]=m,t[re+12>>2]=0),!re|!(xe[re+68|0]&2)||(t[re+16>>2]=58),re&&(t[re+24>>2]=59),re&&(t[re+28>>2]=60));e:{if(m=Y+16|0,!(!S|!m))t:{if(!t[S+76>>2]){vt(S+52|0,1,20420,0),y=0;break t}Zt[t[S+24>>2]](t[S+48>>2],m),y=1}t:{if(!y){G5(1508),z4(re),H4(S);break t}y=Y+12|0,m=0;n:if(!re|!S)M=m;else{if(!t[S+76>>2]){vt(S+52|0,1,20501,0),M=0;break n}M=Zt[t[S>>2]](re,t[S+48>>2],y,S+52|0)|0}if(!M){G5(1571),z4(re),H4(S),di(t[Y+12>>2]);break t}if(y=t[Y+12>>2],!t[S+76>>2]|(!S|!re)||(m=Zt[t[S+4>>2]](t[S+48>>2],re,y,S+52|0)|0),!m){G5(3442),H4(S),z4(re),di(t[Y+12>>2]);break t}G=t[Y+12>>2],m=t[G+16>>2];n:{r:{i:{if(y=t[G+20>>2],(y|0)!=3){if((m|0)==3){if(m=t[G+24>>2],t[m>>2]!=t[m+4>>2]|t[m+52>>2]==1)break i;t[G+20>>2]=3,pp(G);break n}if(m>>>0>2)break i;break r}if(m>>>0<3)break r;pp(G);break n}if(!(t[Y+8220>>2]==14|(y|0)!=5)){H=Nt-16|0,Nt=H;i:{a:{s:{if(ln[G+16>>2]<4||(m=t[G+24>>2],y=t[m>>2],(y|0)!=t[m+52>>2]|(y|0)!=t[m+104>>2]|(y|0)!=t[m+156>>2])||(y=t[m+4>>2],(y|0)!=t[m+56>>2]|(y|0)!=t[m+108>>2]))break s;if((y|0)==t[m+160>>2])break a}t[H+4>>2]=619,t[H>>2]=1646,to(t[11824],18429,H);break i}me=De(t[m+12>>2],t[m+8>>2]);a:{if(!me){M=t[m+200>>2];break a}for(Ne=Ye(Ye(1)/Ye(-1<>2]^-1)),$e=Ye(Ye(1)/Ye(-1<>2]^-1)),_e=Ye(Ye(1)/Ye(-1<>2]^-1)),en=Ye(Ye(1)/Ye(-1<>2]^-1)),M=t[m+200>>2],O=t[m+148>>2],Oe=t[m+96>>2],he=t[m+44>>2];;){y=A<<2,kt=y+he|0,se=Ye(Ye(1)-Ye($e*Ye(t[y+M>>2]))),Ze=Ye(Ye(Ye(Ye(1)-Ye(Ne*Ye(t[kt>>2])))*Ye(255))*se);s:{if(Ye(Rr(Ze))>2],y=y+Oe|0,Rt=t[y>>2],t[kt>>2]=Q,Ze=Ye(Ye(Ye(Ye(1)-Ye(en*Ye(Rt|0)))*Ye(255))*se);s:{if(Ye(Rr(Ze))>2]=Q,se=Ye(Ye(Ye(Ye(1)-Ye(_e*Ye(jt|0)))*Ye(255))*se);s:{if(Ye(Rr(se))>2]=y,A=A+1|0,(me|0)==(A|0))break}}if(Gt(M),m=t[G+24>>2],t[m+24>>2]=8,t[m+128>>2]=8,t[m+76>>2]=8,t[m+200>>2]=0,t[G+20>>2]=1,m=t[G+16>>2]-1|0,t[G+16>>2]=m,m>>>0<4)break i;for(A=3;m=t[G+24>>2]+De(A,52)|0,t[m+48>>2]=t[m+100>>2],y=t[m+96>>2],t[m+40>>2]=t[m+92>>2],t[m+44>>2]=y,y=t[m+88>>2],t[m+32>>2]=t[m+84>>2],t[m+36>>2]=y,y=t[m+80>>2],t[m+24>>2]=t[m+76>>2],t[m+28>>2]=y,y=t[m+72>>2],t[m+16>>2]=t[m+68>>2],t[m+20>>2]=y,y=t[m+64>>2],t[m+8>>2]=t[m+60>>2],t[m+12>>2]=y,y=t[m+56>>2],t[m>>2]=t[m+52>>2],t[m+4>>2]=y,A=A+1|0,A>>>0>2];);}Nt=H+16|0;break n}if((y|0)!=4)break n;Q=Nt-16|0,Nt=Q;i:{a:{s:{if(ln[G+16>>2]<3||(y=t[G+24>>2],m=t[y>>2],(m|0)!=t[y+52>>2]|(m|0)!=t[y+104>>2])||(m=t[y+4>>2],(m|0)!=t[y+56>>2]))break s;if((m|0)==t[y+108>>2])break a}t[Q+4>>2]=680,t[Q>>2]=1646,to(t[11824],18471,Q);break i}if(me=De(t[y+12>>2],t[y+8>>2]),me)for(M=t[y+24>>2],m=-1<>2]?0:M,Oe=t[y+84>>2]?0:M,he=t[y+148>>2],kt=t[y+96>>2],jt=t[y+44>>2],y=0;;){M=y<<2,A=M+he|0,se=Ye(t[A>>2]-O|0),H=M+kt|0,Ne=Ye(t[H>>2]-Oe|0),Rt=M+jt|0,$e=Ye(t[Rt>>2]),_e=Ye(Ye(Ye(se*Ye(1.4019900560379028))+Ye(Ye(Ne*Ye(-3680000008898787e-20))+$e))+Ye(.5));a:{if(Ye(Rr(_e))>2]=(m|0)<(M|0)?m:(M|0)>0?M:0,_e=Ye(Ye(Ye(se*Ye(-.7141128182411194))+Ye(Ye($e*Ye(1.0003000497817993))+Ye(Ne*Ye(-.34412500262260437))))+Ye(.5));a:{if(Ye(Rr(_e))>2]=(m|0)<(M|0)?m:(M|0)>0?M:0,se=Ye(Ye(Ye(se*Ye(-7999999979801942e-21))+Ye(Ye($e*Ye(.9998229742050171))+Ye(Ne*Ye(1.7720400094985962))))+Ye(.5));a:{if(Ye(Rr(se))>2]=(m|0)<(M|0)?m:(M|0)>0?M:0,y=y+1|0,(me|0)==(y|0))break}t[G+20>>2]=1}Nt=Q+16|0;break n}t[G+20>>2]=2}m=t[Y+12>>2],tn[x+24>>1]=t[m+8>>2],tn[x+26>>1]=t[m+12>>2],dt[x+29|0]=t[m+16>>2],A=0,y=t[m+24>>2],dt[x+30|0]=t[y+32>>2]!=0,dt[x+28|0]=t[y+24>>2],t[x+80>>2]=t[m+20>>2],t[x+44>>2]=t[m>>2],t[x+48>>2]=t[m+4>>2],S?m=Zt[t[S+84>>2]](t[S+48>>2])|0:m=0,t[x+76>>2]=t[m+40>>2],t[x+40>>2]=t[m+36>>2],y=t[m+48>>2],dt[x+36|0]=t[y+24>>2]==1,t[x+68>>2]=1<>2],t[x+72>>2]=1<>2],t[x+60>>2]=t[m>>2],t[x- -64>>2]=t[m+4>>2],t[x+52>>2]=t[m+8>>2],t[x+56>>2]=t[m+12>>2],t[x+32>>2]=t[y+8>>2]-1,M=Qn[x+26>>1],y=Qn[x+24>>1];n:{if(!u)break n;H=u&3;r:{if(!H){m=u;break r}for(m=u;m=m-1|0,M=M+1>>>1|0,y=y+1>>>1|0,A=A+1|0,(H|0)!=(A|0););}if(u>>>0<4)break n;for(;M=(((M+1>>>1|0)+1>>>1|0)+1>>>1|0)+1>>>1|0,y=(((y+1>>>1|0)+1>>>1|0)+1>>>1|0)+1>>>1|0,m=m-4|0,!!m;);}Oe=xe[x+28|0]+7>>>3|0,u=De(Oe,De(xe[x+29|0],De(y,M))),G=t[x+16>>2],m=t[x+12>>2],A=G-m|0;n:{if(u>>>0>A>>>0){if(H=u-A|0,Q=t[x+20>>2],H>>>0<=Q-G>>>0){un=x,Cn=pi(G,0,H)+H|0,t[un+16>>2]=Cn;break n}if((u|0)<0)break e;if(G=Q-m|0,Q=G<<1,G=G>>>0>=1073741823?2147483647:u>>>0>>0?Q:u,Q=Ri(G),pi(Q+A|0,0,H),A=N1(Q,m,A),t[x+20>>2]=A+G,t[x+16>>2]=u+A,t[x+12>>2]=A,!m)break n;Gt(m);break n}if(u>>>0>=A>>>0)break n;t[x+16>>2]=u+m}if(M)for(G=y&-2,Q=y&1,me=y-1|0;;){m=xe[x+29|0],A=De(y,Yt),u=De(m,De(A,Oe));n:{if((m|0)==1){if(A=t[t[t[Y+12>>2]+24>>2]+44>>2]+(A<<2)|0,xe[x+28|0]<=8){if(!y)break n;if(H=u+t[x+12>>2]|0,m=0,u=0,me)for(;O=t[A+(m<<2)>>2],O=(O|0)>=255?255:O,dt[m+H|0]=(O|0)>0?O:0,he=m|1,O=t[A+(he<<2)>>2],O=(O|0)>=255?255:O,dt[H+he|0]=(O|0)>0?O:0,m=m+2|0,u=u+2|0,(G|0)!=(u|0););if(!Q)break n;u=t[A+(m<<2)>>2],u=(u|0)>=255?255:u,dt[m+H|0]=(u|0)>0?u:0;break n}if(H=u+t[x+12>>2]|0,xe[x+30|0]){if(!y)break n;if(m=0,u=0,me)for(;O=t[A+(m<<2)>>2],O=(O|0)>=32767?32767:O,tn[H+(m<<1)>>1]=(O|0)<=-32768?-32768:O,he=m|1,O=t[A+(he<<2)>>2],O=(O|0)>=32767?32767:O,tn[H+(he<<1)>>1]=(O|0)<=-32768?-32768:O,m=m+2|0,u=u+2|0,(G|0)!=(u|0););if(!Q)break n;u=t[A+(m<<2)>>2],u=(u|0)>=32767?32767:u,tn[H+(m<<1)>>1]=(u|0)<=-32768?-32768:u;break n}if(!y)break n;if(m=0,u=0,me)for(;O=t[A+(m<<2)>>2],O=(O|0)>=65535?65535:O,tn[H+(m<<1)>>1]=(O|0)>0?O:0,he=m|1,O=t[A+(he<<2)>>2],O=(O|0)>=65535?65535:O,tn[H+(he<<1)>>1]=(O|0)>0?O:0,m=m+2|0,u=u+2|0,(G|0)!=(u|0););if(!Q)break n;u=t[A+(m<<2)>>2],u=(u|0)>=65535?65535:u,tn[H+(m<<1)>>1]=(u|0)>0?u:0;break n}if(!y|xe[x+28|0]>8)break n;for(O=u+t[x+12>>2]|0,m=0;u=O+De(m,3)|0,H=m+A<<2,dt[u|0]=t[H+t[t[t[Y+12>>2]+24>>2]+44>>2]>>2],dt[u+1|0]=t[H+t[t[t[Y+12>>2]+24>>2]+96>>2]>>2],dt[u+2|0]=t[H+t[t[t[Y+12>>2]+24>>2]+148>>2]>>2],m=m+1|0,(y|0)!=(m|0););}if(Yt=Yt+1|0,(Yt|0)==(M|0))break}z4(re),H4(S),di(t[Y+12>>2])}Nt=Y+8272|0;return}Mt(),Qe()}function Dc(x,u,m,y,S,M,O,A,G,H,Y){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,O=O|0,A=A|0,G=G|0,H=H|0,Y=Y|0;var Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=Ye(0),en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0;he=Nt-80|0,Nt=he,t[he+40>>2]=65424,Ze=De(t[x+108>>2],t[x+104>>2]);e:{t:{n:{Q=t[x+8>>2];r:{if((Q|0)!=8){if(H=0,(Q|0)!=256)break e;t[he+40>>2]=65497;break r}if(dt[x+68|0]&1)break r;Cn=Ze&-2,Tn=Ze&1,Rn=he+77|0,bn=he+76|0,$n=he+72|0,Q=65424;i:{a:{s:{for(;;){o:{u:{l:{h:{f:{if((Q|0)==65427)break f;for(;;){if(re=t[H+12>>2],se=re,Q=t[H+8>>2],re|Q?(me=t[H+56>>2],re=Q-me|0,Q=se-(t[H+60>>2]+(Q>>>0>>0)|0)|0):(re=0,Q=0),!(Q|re)){t[x+8>>2]=64;break f}if((js(H,t[x+16>>2],2,Y)|0)!=2){vt(Y,1,4334,0),H=0;break e}if(ue(t[x+16>>2],he+36|0,2),ln[he+36>>2]<=1){vt(Y,1,9971,0),H=0;break e}p:{if(t[he+40>>2]!=32896||(re=t[H+12>>2],se=re,Q=t[H+8>>2],re|Q?(me=t[H+56>>2],re=Q-me|0,Q=se-(t[H+60>>2]+(Q>>>0>>0)|0)|0):(re=0,Q=0),Q|re))break p;t[x+8>>2]=64;break f}for(Q=t[he+36>>2],se=t[x+8>>2],se&16&&(t[x+24>>2]=(t[x+24>>2]-Q|0)-2),Oe=Q-2|0,t[he+36>>2]=Oe,re=30560,_e=t[he+40>>2];Q=re,me=t[Q>>2],!!(me&&(re=Q+12|0,(me|0)!=(_e|0))););if(!(se&t[Q+4>>2])){vt(Y,1,8880,0),H=0;break e}p:{if(ln[x+20>>2]>=Oe>>>0){re=t[x+16>>2];break p}if(se=t[H+12>>2],_e=se,re=t[H+8>>2],se|re?(Ne=t[H+56>>2],se=re-Ne|0,re=_e-(t[H+60>>2]+(re>>>0>>0)|0)|0):(se=0,re=0),se>>>0>>0&(re|0)<=0|(re|0)<0){vt(Y,1,9295,0),H=0;break e}if(re=Wi(t[x+16>>2],t[he+36>>2]),!re){Gt(t[x+16>>2]),t[x+16>>2]=0,t[x+20>>2]=0,vt(Y,1,8456,0),H=0;break e}t[x+16>>2]=re,Oe=t[he+36>>2],t[x+20>>2]=Oe}if(re=js(H,re,Oe,Y),(re|0)!=t[he+36>>2]){vt(Y,1,4334,0),H=0;break e}if(Q=t[Q+8>>2],!Q){vt(Y,1,22766,0),H=0;break e}if(!(Zt[Q|0](x,t[x+16>>2],re,Y)|0)){t[he+32>>2]=t[he+40>>2],vt(Y,1,25296,he+32|0),H=0;break e}re=t[H+56>>2],_e=t[he+36>>2],Ne=t[x+200>>2],Oe=t[Ne+40>>2],jt=t[x+204>>2],$e=De(jt,40),Q=Oe+$e|0,kt=t[Q+20>>2],se=kt+1|0,Rt=t[Q+28>>2];p:{if(se>>>0<=Rt>>>0){Q=t[Q+24>>2];break p}Yt=Ye(Ye(Rt>>>0)+Ye(100));c:{if(Yt=Ye(0)){se=~~Yt>>>0;break c}se=0}if(t[Q+28>>2]=se,Q=Wi(t[Q+24>>2],De(se,24)),Oe=t[Ne+40>>2],se=$e+Oe|0,!Q)break h;t[se+24>>2]=Q,kt=t[se+20>>2],se=kt+1|0}Q=De(kt,24)+Q|0,t[Q+16>>2]=_e+4,re=(re-_e|0)-4|0,t[Q+8>>2]=re,t[Q+12>>2]=re>>31,tn[Q>>1]=me,Q=Oe+$e|0,t[Q+20>>2]=se;p:{if((me|0)!=65424||(se=t[Q+16>>2],se&&(Q=se+De(t[Q+12>>2],24)|0,t[Q>>2]=re,t[Q+4>>2]=0),Q=(t[H+56>>2]-t[he+36>>2]|0)-4|0,re=t[x+52>>2],Q>>>0<=ln[x+48>>2]&(re|0)>=0|(re|0)>0))break p;t[x+48>>2]=Q,t[x+52>>2]=0}if(xe[x+68|0]&4){if((Zt[t[H+40>>2]](H,t[x+24>>2],0,Y)|0)!=t[x+24>>2]|Gi){vt(Y,1,4334,0),H=0;break e}t[he+40>>2]=65427;break f}if((js(H,t[x+16>>2],2,Y)|0)!=2){vt(Y,1,4334,0),H=0;break e}if(ue(t[x+16>>2],he+40|0,2),t[he+40>>2]==65427)break}}if(re=t[H+12>>2],se=re,Q=t[H+8>>2],re|Q?(me=t[H+56>>2],re=Q-me|0,Q=se-(t[H+60>>2]+(Q>>>0>>0)|0)|0):(re=0,Q=0),!(Q|re)&t[x+8>>2]==64)break o;if(Q=xe[x+68|0],!(Q&4)){re=t[x+204>>2],se=t[x+156>>2];f:{p:{if(t[x+56>>2]){Q=t[H+8>>2],Q|t[H+12>>2]?Q=Q-t[H+56>>2]|0:Q=0;break p}if(Q=t[x+24>>2],Q>>>0<2)break f}Q=Q-2|0,t[x+24>>2]=Q}if(re=se+De(re,5644)|0,kt=re+5600|0,$e=re+5596|0,!Q)break l;if(se=t[H+12>>2],me=se,re=t[H+8>>2],se|re?(_e=t[H+56>>2],se=re-_e|0,re=me-(t[H+60>>2]+(re>>>0<_e>>>0)|0)|0):(se=0,re=0),(re|0)<=0&Q>>>0>se>>>0|(re|0)<0){if(t[x+184>>2]){vt(Y,1,9340,0),H=0;break e}vt(Y,2,9340,0)}if(re=t[x+24>>2],re>>>0>=4294967294){vt(Y,1,2453,0),H=0;break e}se=t[$e>>2];f:{if(se){if(me=t[kt>>2],me>>>0>-3-re>>>0){vt(Y,1,1853,0),H=0;break e}if(re=Wi(se,(re+me|0)+2|0),re){t[$e>>2]=re;break l}Gt(t[$e>>2]),t[$e>>2]=0;break f}if(re=si(re+2|0),t[$e>>2]=re,re)break l}vt(Y,1,10119,0),H=0;break e}t[x+8>>2]=8,dt[x+68|0]=Q&250;break u}Gt(t[se+24>>2]),x=t[Ne+40>>2]+De(jt,40)|0,t[x+28>>2]=0,t[x+20>>2]=0,t[x+24>>2]=0,vt(Y,1,6356,0),H=0;break e}if(jt=t[x+200>>2],jt){Rt=t[H+56>>2],me=Rt-2|0,Ne=t[H+60>>2],_e=Ne-(Rt>>>0<2)|0,Oe=t[jt+40>>2],un=t[x+204>>2],en=De(un,40),re=Oe+en|0,se=t[re+16>>2]+De(t[re+12>>2],24)|0,t[se+8>>2]=me,t[se+12>>2]=_e,_e=se,se=Ne,Ne=t[x+24>>2],Rt=Ne+Rt|0,t[_e+16>>2]=Rt,t[_e+20>>2]=Ne>>>0>Rt>>>0?se+1|0:se,Ne=t[x+24>>2],se=t[re+20>>2],_e=se+1|0,Rt=t[re+28>>2];l:{if(_e>>>0<=Rt>>>0){re=t[re+24>>2];break l}Yt=Ye(Ye(Rt>>>0)+Ye(100));h:{if(Yt=Ye(0)){se=~~Yt>>>0;break h}se=0}if(t[re+28>>2]=se,re=Wi(t[re+24>>2],De(se,24)),Oe=t[jt+40>>2],se=en+Oe|0,!re)break a;t[se+24>>2]=re,se=t[se+20>>2],_e=se+1|0}re=De(se,24)+re|0,t[re+16>>2]=Ne+2,t[re+8>>2]=me,t[re+12>>2]=me>>31,tn[re>>1]=65427,t[(Oe+en|0)+20>>2]=_e}if(Q?Q=js(H,t[$e>>2]+t[kt>>2]|0,t[x+24>>2],Y):Q=0,t[x+8>>2]=(Q|0)==t[x+24>>2]?8:64,t[kt>>2]=Q+t[kt>>2],Q=xe[x+68|0],(Q&9)!=1||(dt[x+68|0]=Q|8,t[H+28>>2]==98)||(re=t[H+60>>2],_e=re,Q=t[H+56>>2],(re&Q)==-1))break u;Ne=t[x+204>>2];l:{for(;;){if(re=0,(js(H,he+70|0,2,Y)|0)!=2||(ue(he+70|0,he- -64|0,2),t[he+64>>2]!=65424))break l;if(se=4334,(js(H,he+70|0,2,Y)|0)!=2)break n;if(ue(he+70|0,he+60|0,2),t[he+60>>2]!=10){se=9971;break n}if(t[he+60>>2]=8,me=js(H,he+70|0,8,Y),(me|0)!=t[he+60>>2])break n;if((me|0)!=8){se=6578;break n}if(ue(he+70|0,he+56|0,2),ue($n,he+52|0,4),ue(bn,he+48|0,1),ue(Rn,he+44|0,1),(Ne|0)!=t[he+56>>2]){if(se=t[he+52>>2],se>>>0<14)break l;if(se=se-12|0,t[he+52>>2]=se,se=Zt[t[H+40>>2]](H,se,0,Y)|0,!Gi&t[he+52>>2]==(se|0))continue;break l}break}re=t[he+48>>2]==t[he+44>>2]}if(!(Zt[t[H+44>>2]](H,Q,_e,Y)|0))break t;if(!re)break u;dt[x+68|0]=xe[x+68|0]&238|16;l:{if(!Ze)break l;if(se=t[x+156>>2],Q=0,re=0,(Ze|0)!=1)for(;me=se+De(Q,5644)|0,_e=t[me+5592>>2],_e&&(t[me+5592>>2]=_e+1),me=se+De(Q|1,5644)|0,_e=t[me+5592>>2],_e&&(t[me+5592>>2]=_e+1),Q=Q+2|0,re=re+2|0,(Cn|0)!=(re|0););if(!Tn||(Q=se+De(Q,5644)|0,re=t[Q+5592>>2],!re))break l;t[Q+5592>>2]=re+1}vt(Y,2,19302,0)}if(dt[x+68|0]&1)break o;if((js(H,t[x+16>>2],2,Y)|0)!=2){if(!(!Ze|(Ze|0)!=(t[x+204>>2]+1|0)))for(H=t[x+156>>2],Q=0;;){if(re=H+De(Q,5644)|0,!(t[re+5588>>2]|t[re+5592>>2]))break i;if(Q=Q+1|0,(Ze|0)==(Q|0))break}vt(Y,1,4334,0),H=0;break e}if(ue(t[x+16>>2],he+40|0,2),Q=t[he+40>>2],dt[x+68|0]&1)break s;if((Q|0)!=65497)continue;break s}break}Q=t[he+40>>2]}if(t[x+8>>2]==256|(Q|0)!=65497)break r;t[x+8>>2]=256,t[x+204>>2]=0;break r}Gt(t[se+24>>2]),x=t[jt+40>>2]+De(un,40)|0,t[x+28>>2]=0,t[x+20>>2]=0,t[x+24>>2]=0,vt(Y,1,6356,0),H=0;break e}t[he+16>>2]=Q,vt(Y,4,21619,he+16|0),t[x+204>>2]=Q,t[he+40>>2]=65497,t[x+8>>2]=256}me=t[x+156>>2],Q=t[x+204>>2];r:{i:{if(dt[x+68|0]&1)break i;a:{s:{if(Q>>>0>=Ze>>>0)break s;for(H=me+De(Q,5644)|0;;){if(t[H+5596>>2])break s;if(Q=Q+1|0,t[x+204>>2]=Q,H=H+5644|0,(Q|0)==(Ze|0))break}break a}if((Q|0)!=(Ze|0))break i}t[G>>2]=0;break r}i:{a:{if(H=me+De(Q,5644)|0,t[H+5172>>2])x=16430;else{if(!(xe[H+5640|0]&2))break i;Ne=H+5172|0,kt=me+De(Q,5644)|0,Ze=t[kt+5160>>2];s:{if(!Ze){se=0;break s}if(re=t[kt+5164>>2],_e=0,se=0,H=0,Ze>>>0>=4)for(jt=Ze&-4,Oe=0;$e=H<<3,se=t[(re+($e|24)|0)+4>>2]+(t[(re+($e|16)|0)+4>>2]+(t[(re+($e|8)|0)+4>>2]+(t[(re+$e|0)+4>>2]+se|0)|0)|0)|0,H=H+4|0,Oe=Oe+4|0,(jt|0)!=(Oe|0););if(Oe=Ze&3,!Oe)break s;for(;se=t[(re+(H<<3)|0)+4>>2]+se|0,H=H+1|0,_e=_e+1|0,(Oe|0)!=(_e|0););}if(H=si(se),t[Ne>>2]=H,H)break a;x=6540}vt(Y,1,x,0),vt(Y,1,18057,0),H=0;break e}if(me=me+De(Q,5644)|0,t[me+5180>>2]=se,_e=me+5164|0,se=t[me+5164>>2],Oe=kt+5160|0,H=t[Oe>>2],H)for(re=0,Q=0;Ze=Q<<3,$e=Ze+se|0,kt=t[$e>>2],kt&&(Yr(t[Ne>>2]+re|0,kt,t[$e+4>>2]),H=Ze+t[_e>>2]|0,$e=t[H+4>>2],Gt(t[H>>2]),se=t[_e>>2],H=Ze+se|0,t[H>>2]=0,t[H+4>>2]=0,re=re+$e|0,H=t[Oe>>2]),Q=Q+1|0,Q>>>0>>0;);t[Oe>>2]=0,Gt(se),t[_e>>2]=0,t[me+5168>>2]=t[Ne>>2],t[me+5176>>2]=t[me+5180>>2]}if(!mp(t[x+208>>2],t[x+204>>2],0,64,Y)){vt(Y,1,6161,0),H=0;break e}if(H=t[x+204>>2],t[he+4>>2]=De(t[x+104>>2],t[x+108>>2]),t[he>>2]=H+1,vt(Y,4,22944,he),t[u>>2]=t[x+204>>2],t[G>>2]=1,m&&(u=pu(t[x+208>>2],0),t[m>>2]=u,H=0,(u|0)==-1))break e;u=t[t[t[x+208>>2]+20>>2]>>2],t[y>>2]=t[u>>2],t[S>>2]=t[u+4>>2],t[M>>2]=t[u+8>>2],t[O>>2]=t[u+12>>2],t[A>>2]=t[u+16>>2],t[x+8>>2]=t[x+8>>2]|128}H=1;break e}vt(Y,1,se,0)}vt(Y,1,6195,0),H=0}return Nt=he+80|0,H|0}function kp(x,u,m,y,S,M,O,A,G){var H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0;Ne=t[x>>2];e:{if(Ne>>>0>>0|u>>>0>=y>>>0|(u>>>0>=Ne>>>0|m>>>0>=S>>>0)||(Ne=t[x+4>>2],Ne>>>0<=m>>>0|S>>>0>Ne>>>0))break e;for(Rn=(m>>>0)/ln[x+12>>2]|0,Oe=t[x+8>>2],bn=(u>>>0)/(Oe>>>0)|0,un=m;;){for(Ne=t[x+12>>2],H=Ne,H=(m|0)==(un|0)?H-((m>>>0)%(H>>>0)|0)|0:H,Yt=S-un|0,_e=H>>>0>>0?H:Yt,Cn=_e&-4,kt=_e&3,rr=_e&-8,$n=_e&7,en=_e-1|0,sr=(O|0)==2&(_e|0)==1,er=De(Ne-H|0,Oe),Tn=(De(un-m|0,A)<<2)+M|0,Yt=bn,Ne=u;;){H=(u|0)==(Ne|0)?(De(Oe,bn)-u|0)+Oe|0:Oe,Y=y-Ne|0,me=H>>>0>>0?H:Y,Y=Oe-H|0,H=t[t[x+24>>2]+(De(t[x+16>>2],Rn)+Yt<<2)>>2];t:{n:{if(G){r:{i:{a:{s:{if(H){if(Y=((er<<2)+H|0)+(Y<<2)|0,H=Ne-u|0,(O|0)==1)break r;if(Q=(De(O,H)<<2)+Tn|0,(me|0)==1)break i;if(sr)break a;if((O|0)!=8|me>>>0<=7)break s;if(!_e)break t;for(he=me&-4,se=0;;){if(H=0,he)for(;t[(H<<5)+Q>>2]=t[(H<<2)+Y>>2],re=H|1,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],re=H|2,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],re=H|3,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],H=H+4|0,he>>>0>H>>>0;);o:{if(H>>>0>=me>>>0)break o;if(Ze=(H^-1)+me|0,re=0,Rt=me-H&3,Rt)for(;t[(H<<5)+Q>>2]=t[(H<<2)+Y>>2],H=H+1|0,re=re+1|0,(Rt|0)!=(re|0););if(Ze>>>0<3)break o;for(;t[(H<<5)+Q>>2]=t[(H<<2)+Y>>2],re=H+1|0,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],re=H+2|0,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],re=H+3|0,t[(re<<5)+Q>>2]=t[(re<<2)+Y>>2],H=H+4|0,(me|0)!=(H|0););}if(Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,se=se+1|0,(_e|0)==(se|0))break}break t}if((O|0)!=1){if(!_e)break t;for(Ze=me&-4,he=me&3,Y=(De(Ne-u|0,O)<<2)+Tn|0,se=0;;){o:{if(!me)break o;if(Q=0,H=0,re=0,me>>>0>=4)for(;t[(De(O,H)<<2)+Y>>2]=0,t[(De(H|1,O)<<2)+Y>>2]=0,t[(De(H|2,O)<<2)+Y>>2]=0,t[(De(H|3,O)<<2)+Y>>2]=0,H=H+4|0,re=re+4|0,(Ze|0)!=(re|0););if(!he)break o;for(;t[(De(O,H)<<2)+Y>>2]=0,H=H+1|0,Q=Q+1|0,(he|0)!=(Q|0););}if(Y=(A<<2)+Y|0,se=se+1|0,(_e|0)==(se|0))break}break t}if(!_e)break t;if(H=me<<2,Y=(Ne-u<<2)+Tn|0,Q=0,en>>>0>=7)for(;$e=pi(Y,0,H),Y=A<<2,Y=pi(pi(pi(pi(pi(pi(pi($e+Y|0,0,H)+Y|0,0,H)+Y|0,0,H)+Y|0,0,H)+Y|0,0,H)+Y|0,0,H)+Y|0,0,H)+Y|0,Q=Q+8|0,(rr|0)!=(Q|0););if(Q=0,!$n)break t;for(;Y=pi(Y,0,H)+(A<<2)|0,Q=Q+1|0,($n|0)!=(Q|0););break t}if(!_e)break t;Rt=me&-4,Ze=me&3,jt=me-1|0,he=0;break n}if(H=0,re=me&-4,re)for(;t[(H<<3)+Q>>2]=t[(H<<2)+Y>>2],se=H|1,t[(se<<3)+Q>>2]=t[(se<<2)+Y>>2],se=H|2,t[(se<<3)+Q>>2]=t[(se<<2)+Y>>2],se=H|3,t[(se<<3)+Q>>2]=t[(se<<2)+Y>>2],H=H+4|0,re>>>0>H>>>0;);if(H>>>0>=me>>>0)break t;if(se=(H^-1)+me|0,re=0,he=me-H&3,he)for(;t[(H<<3)+Q>>2]=t[(H<<2)+Y>>2],H=H+1|0,re=re+1|0,(he|0)!=(re|0););if(se>>>0<3)break t;for(;t[(H<<3)+Q>>2]=t[(H<<2)+Y>>2],re=H+1|0,t[(re<<3)+Q>>2]=t[(re<<2)+Y>>2],re=H+2|0,t[(re<<3)+Q>>2]=t[(re<<2)+Y>>2],re=H+3|0,t[(re<<3)+Q>>2]=t[(re<<2)+Y>>2],H=H+4|0,(me|0)!=(H|0););break t}if(!_e)break t;if(re=0,en>>>0>=3)for(;t[Q>>2]=t[Y>>2],H=A<<2,Q=H+Q|0,$e=Y,Y=Oe<<2,se=$e+Y|0,t[Q>>2]=t[se>>2],Q=H+Q|0,se=Y+se|0,t[Q>>2]=t[se>>2],Q=H+Q|0,se=Y+se|0,t[Q>>2]=t[se>>2],Y=Y+se|0,Q=H+Q|0,re=re+4|0,(Cn|0)!=(re|0););if(H=0,!kt)break t;for(;t[Q>>2]=t[Y>>2],Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,H=H+1|0,(kt|0)!=(H|0););break t}if(H=(H<<2)+Tn|0,(me|0)!=4){if(!_e)break t;if(Q=me<<2,re=0,en>>>0>=3)for(;he=Yr(H,Y,Q),H=Oe<<2,se=H+Y|0,Ze=H+se|0,Rt=Ze+H|0,Y=Rt+H|0,H=A<<2,H=Yr(Yr(Yr(H+he|0,se,Q)+H|0,Ze,Q)+H|0,Rt,Q)+H|0,re=re+4|0,(Cn|0)!=(re|0););if(re=0,!kt)break t;for(;H=Yr(H,Y,Q),Y=(Oe<<2)+Y|0,H=H+(A<<2)|0,re=re+1|0,(kt|0)!=(re|0););break t}if(!_e)break t;if(se=0,en>>>0>=3)for(;Q=t[Y+4>>2],t[H>>2]=t[Y>>2],t[H+4>>2]=Q,Q=t[Y+12>>2],t[H+8>>2]=t[Y+8>>2],t[H+12>>2]=Q,re=Oe<<2,Y=re+Y|0,he=t[Y+12>>2],Q=A<<2,H=Q+H|0,t[H+8>>2]=t[Y+8>>2],t[H+12>>2]=he,he=t[Y+4>>2],t[H>>2]=t[Y>>2],t[H+4>>2]=he,Y=Y+re|0,he=t[Y+12>>2],H=H+Q|0,t[H+8>>2]=t[Y+8>>2],t[H+12>>2]=he,he=t[Y+4>>2],t[H>>2]=t[Y>>2],t[H+4>>2]=he,Y=Y+re|0,he=t[Y+12>>2],H=H+Q|0,t[H+8>>2]=t[Y+8>>2],t[H+12>>2]=he,he=t[Y+4>>2],t[H>>2]=t[Y>>2],t[H+4>>2]=he,Y=Y+re|0,H=H+Q|0,se=se+4|0,(Cn|0)!=(se|0););if(Q=0,!kt)break t;for(;re=t[Y+4>>2],t[H>>2]=t[Y>>2],t[H+4>>2]=re,re=t[Y+12>>2],t[H+8>>2]=t[Y+8>>2],t[H+12>>2]=re,Y=(Oe<<2)+Y|0,H=(A<<2)+H|0,Q=Q+1|0,(kt|0)!=(Q|0););break t}if(!H){if(H=oi(1,De(t[x+8>>2],t[x+12>>2])<<2),!H)return 0;t[t[x+24>>2]+(De(t[x+16>>2],Rn)+Yt<<2)>>2]=H}Y=((er<<2)+H|0)+(Y<<2)|0,H=Ne-u|0;r:{i:{a:{s:{if((O|0)!=1){if(Q=(De(O,H)<<2)+Tn|0,(me|0)==1)break s;if((O|0)!=8|me>>>0<=7)break a;if(!_e)break t;for(he=me&-4,se=0;;){if(H=0,he)for(;t[(H<<2)+Y>>2]=t[(H<<5)+Q>>2],re=H|1,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],re=H|2,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],re=H|3,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],H=H+4|0,he>>>0>H>>>0;);o:{if(H>>>0>=me>>>0)break o;if(Ze=(H^-1)+me|0,re=0,Rt=me-H&3,Rt)for(;t[(H<<2)+Y>>2]=t[(H<<5)+Q>>2],H=H+1|0,re=re+1|0,(Rt|0)!=(re|0););if(Ze>>>0<3)break o;for(;t[(H<<2)+Y>>2]=t[(H<<5)+Q>>2],re=H+1|0,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],re=H+2|0,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],re=H+3|0,t[(re<<2)+Y>>2]=t[(re<<5)+Q>>2],H=H+4|0,(me|0)!=(H|0););}if(Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,se=se+1|0,(_e|0)==(se|0))break}break t}if(H=(H<<2)+Tn|0,(me|0)==4)break i;if(!_e)break t;if(Q=me<<2,re=0,en>>>0>=3)for(;Y=Yr(Y,H,Q),$e=H,H=A<<2,se=$e+H|0,he=H+se|0,Ze=he+H|0,H=Ze+H|0,$e=Y,Y=Oe<<2,Y=Yr(Yr(Yr($e+Y|0,se,Q)+Y|0,he,Q)+Y|0,Ze,Q)+Y|0,re=re+4|0,(Cn|0)!=(re|0););if(re=0,!kt)break t;for(;Y=Yr(Y,H,Q),H=(A<<2)+H|0,Y=Y+(Oe<<2)|0,re=re+1|0,(kt|0)!=(re|0););break t}if(!_e)break t;if(se=0,en>>>0>=3)for(;t[Y>>2]=t[Q>>2],H=Oe<<2,Y=H+Y|0,$e=Q,Q=A<<2,re=$e+Q|0,t[Y>>2]=t[re>>2],Y=H+Y|0,re=Q+re|0,t[Y>>2]=t[re>>2],Y=H+Y|0,re=Q+re|0,t[Y>>2]=t[re>>2],Y=H+Y|0,Q=Q+re|0,se=se+4|0,(Cn|0)!=(se|0););if(H=0,!kt)break t;for(;t[Y>>2]=t[Q>>2],Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,H=H+1|0,(kt|0)!=(H|0););break t}if(!_e)break t;Rt=me&-4,Ze=me&3,he=0;break r}if(!_e)break t;if(se=0,en>>>0>=3)for(;Q=t[H+4>>2],t[Y>>2]=t[H>>2],t[Y+4>>2]=Q,Q=t[H+12>>2],t[Y+8>>2]=t[H+8>>2],t[Y+12>>2]=Q,re=A<<2,H=re+H|0,he=t[H+12>>2],Q=Oe<<2,Y=Q+Y|0,t[Y+8>>2]=t[H+8>>2],t[Y+12>>2]=he,he=t[H+4>>2],t[Y>>2]=t[H>>2],t[Y+4>>2]=he,H=H+re|0,he=t[H+12>>2],Y=Y+Q|0,t[Y+8>>2]=t[H+8>>2],t[Y+12>>2]=he,he=t[H+4>>2],t[Y>>2]=t[H>>2],t[Y+4>>2]=he,H=H+re|0,he=t[H+12>>2],Y=Y+Q|0,t[Y+8>>2]=t[H+8>>2],t[Y+12>>2]=he,he=t[H+4>>2],t[Y>>2]=t[H>>2],t[Y+4>>2]=he,H=H+re|0,Y=Y+Q|0,se=se+4|0,(Cn|0)!=(se|0););if(Q=0,!kt)break t;for(;re=t[H+4>>2],t[Y>>2]=t[H>>2],t[Y+4>>2]=re,re=t[H+12>>2],t[Y+8>>2]=t[H+8>>2],t[Y+12>>2]=re,H=(A<<2)+H|0,Y=(Oe<<2)+Y|0,Q=Q+1|0,(kt|0)!=(Q|0););break t}for(;;){r:{if(!me)break r;if(re=0,H=0,se=0,me>>>0>=4)for(;t[(H<<2)+Y>>2]=t[(De(O,H)<<2)+Q>>2],jt=H|1,t[(jt<<2)+Y>>2]=t[(De(O,jt)<<2)+Q>>2],jt=H|2,t[(jt<<2)+Y>>2]=t[(De(O,jt)<<2)+Q>>2],jt=H|3,t[(jt<<2)+Y>>2]=t[(De(O,jt)<<2)+Q>>2],H=H+4|0,se=se+4|0,(Rt|0)!=(se|0););if(!Ze)break r;for(;t[(H<<2)+Y>>2]=t[(De(O,H)<<2)+Q>>2],H=H+1|0,re=re+1|0,(Ze|0)!=(re|0););}if(Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,he=he+1|0,(he|0)==(_e|0))break}break t}for(;;){n:{if(!me)break n;if(re=0,H=0,se=0,jt>>>0>=3)for(;t[(De(O,H)<<2)+Q>>2]=t[(H<<2)+Y>>2],$e=H|1,t[(De($e,O)<<2)+Q>>2]=t[($e<<2)+Y>>2],$e=H|2,t[(De($e,O)<<2)+Q>>2]=t[($e<<2)+Y>>2],$e=H|3,t[(De($e,O)<<2)+Q>>2]=t[($e<<2)+Y>>2],H=H+4|0,se=se+4|0,(Rt|0)!=(se|0););if(!Ze)break n;for(;t[(De(O,H)<<2)+Q>>2]=t[(H<<2)+Y>>2],H=H+1|0,re=re+1|0,(Ze|0)!=(re|0););}if(Y=(Oe<<2)+Y|0,Q=(A<<2)+Q|0,he=he+1|0,(he|0)==(_e|0))break}}if(Yt=Yt+1|0,Ne=me+Ne|0,!(Ne>>>0>>0))break}if(Rn=Rn+1|0,un=_e+un|0,!(un>>>0>>0))break}}return 1}function hn(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=Ye(0),G=Ye(0),H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=Ye(0),Oe=0,Ne=0,$e=0,Ze=0;e:{if((m|0)==1)break e;me=Yr(u,x,m<<2),Q=!y,se=me+(Q<<2)|0,M=(y|0)!=0,Oe=(M<<2)+me|0,u=Oe+4|0,S=u,$e=m+M|0,re=$e>>>1|0,he=m-re|0,M=re-M|0,Y=(M|0)>(he|0)?he:M,H=Y>>>0>he>>>0?he:Y;t:{if(!H)break t;if(S=u-4|0,Ue[S>>2]=Ye(Ye(Ue[se>>2]+Ue[u>>2])*Ye(-1.5861343145370483))+Ue[S>>2],S=u+8|0,M=1,H>>>0>4){for(;A=Ue[S>>2],G=Ue[S+8>>2],Ue[S+4>>2]=Ye(Ye(A+G)*Ye(-1.5861343145370483))+Ue[S+4>>2],_e=G,G=Ue[S+16>>2],Ue[S+12>>2]=Ye(Ye(_e+G)*Ye(-1.5861343145370483))+Ue[S+12>>2],Ue[S+20>>2]=Ye(Ye(G+Ue[S+24>>2])*Ye(-1.5861343145370483))+Ue[S+20>>2],O=S-4|0,Ue[O>>2]=Ye(Ye(A+Ue[S-8>>2])*Ye(-1.5861343145370483))+Ue[O>>2],S=S+32|0,O=M+7|0,M=M+4|0,O>>>0>>0;);M=(H-5&-4)+5|0}if(M>>>0>=H>>>0||(O=M+1|0,H-M&1&&(M=S-4|0,Ue[M>>2]=Ye(Ye(Ue[S-8>>2]+Ue[S>>2])*Ye(-1.5861343145370483))+Ue[M>>2],M=O,S=S+8|0),(O|0)==(H|0)))break t;for(;A=Ue[S>>2],Ue[S+4>>2]=Ye(Ye(A+Ue[S+8>>2])*Ye(-1.5861343145370483))+Ue[S+4>>2],O=S-4|0,Ue[O>>2]=Ye(Ye(A+Ue[S-8>>2])*Ye(-1.5861343145370483))+Ue[O>>2],S=S+16|0,M=M+2|0,(H|0)!=(M|0););}Ze=Y>>>0>=he>>>0,Ze||(M=S-4|0,A=Ue[S-8>>2],Ue[M>>2]=Ye(Ye(A+A)*Ye(-1.5861343145370483))+Ue[M>>2]),S=se+4|0,M=S,O=he-Q|0,Ne=(O|0)>(re|0)?re:O,Q=re>>>0>>0?re:Ne;t:{if(!Q)break t;if(M=S-4|0,Ue[M>>2]=Ye(Ye(Ue[Oe>>2]+Ue[S>>2])*Ye(-.05298011749982834))+Ue[M>>2],M=S+8|0,O=1,Q>>>0>4){for(;A=Ue[M>>2],G=Ue[M+8>>2],Ue[M+4>>2]=Ye(Ye(A+G)*Ye(-.05298011749982834))+Ue[M+4>>2],_e=G,G=Ue[M+16>>2],Ue[M+12>>2]=Ye(Ye(_e+G)*Ye(-.05298011749982834))+Ue[M+12>>2],Ue[M+20>>2]=Ye(Ye(G+Ue[M+24>>2])*Ye(-.05298011749982834))+Ue[M+20>>2],Y=M-4|0,Ue[Y>>2]=Ye(Ye(A+Ue[M-8>>2])*Ye(-.05298011749982834))+Ue[Y>>2],M=M+32|0,Y=O+7|0,O=O+4|0,Q>>>0>Y>>>0;);O=(Q-5&-4)+5|0}if(O>>>0>=Q>>>0||(Y=O+1|0,Q-O&1&&(O=M-4|0,Ue[O>>2]=Ye(Ye(Ue[M-8>>2]+Ue[M>>2])*Ye(-.05298011749982834))+Ue[O>>2],O=Y,M=M+8|0),(Q|0)==(Y|0)))break t;for(;A=Ue[M>>2],Ue[M+4>>2]=Ye(Ye(A+Ue[M+8>>2])*Ye(-.05298011749982834))+Ue[M+4>>2],Y=M-4|0,Ue[Y>>2]=Ye(Ye(A+Ue[M-8>>2])*Ye(-.05298011749982834))+Ue[Y>>2],M=M+16|0,O=O+2|0,(Q|0)!=(O|0););}Y=re>>>0<=Ne>>>0,Y||(O=M-4|0,A=Ue[M-8>>2],Ue[O>>2]=Ye(Ye(A+A)*Ye(-.05298011749982834))+Ue[O>>2]);t:{if(!H)break t;if(M=u-4|0,Ue[M>>2]=Ye(Ye(Ue[se>>2]+Ue[u>>2])*Ye(.8829110860824585))+Ue[M>>2],u=u+8|0,M=1,H>>>0>4){for(;A=Ue[u>>2],G=Ue[u+8>>2],Ue[u+4>>2]=Ye(Ye(A+G)*Ye(.8829110860824585))+Ue[u+4>>2],_e=G,G=Ue[u+16>>2],Ue[u+12>>2]=Ye(Ye(_e+G)*Ye(.8829110860824585))+Ue[u+12>>2],Ue[u+20>>2]=Ye(Ye(G+Ue[u+24>>2])*Ye(.8829110860824585))+Ue[u+20>>2],O=u-4|0,Ue[O>>2]=Ye(Ye(A+Ue[u-8>>2])*Ye(.8829110860824585))+Ue[O>>2],u=u+32|0,O=M+7|0,M=M+4|0,O>>>0>>0;);M=(H-5&-4)+5|0}if(M>>>0>=H>>>0||(O=M+1|0,H-M&1&&(M=u-4|0,Ue[M>>2]=Ye(Ye(Ue[u-8>>2]+Ue[u>>2])*Ye(.8829110860824585))+Ue[M>>2],M=O,u=u+8|0),(O|0)==(H|0)))break t;for(;A=Ue[u>>2],Ue[u+4>>2]=Ye(Ye(A+Ue[u+8>>2])*Ye(.8829110860824585))+Ue[u+4>>2],O=u-4|0,Ue[O>>2]=Ye(Ye(A+Ue[u-8>>2])*Ye(.8829110860824585))+Ue[O>>2],u=u+16|0,M=M+2|0,(H|0)!=(M|0););}Ze||(M=u-4|0,A=Ue[u-8>>2],Ue[M>>2]=Ye(Ye(A+A)*Ye(.8829110860824585))+Ue[M>>2]);t:{if(!Q)break t;if(u=S-4|0,Ue[u>>2]=Ye(Ye(Ue[Oe>>2]+Ue[S>>2])*Ye(.4435068666934967))+Ue[u>>2],S=S+8|0,u=1,Q>>>0>4){for(;A=Ue[S>>2],G=Ue[S+8>>2],Ue[S+4>>2]=Ye(Ye(A+G)*Ye(.4435068666934967))+Ue[S+4>>2],_e=G,G=Ue[S+16>>2],Ue[S+12>>2]=Ye(Ye(_e+G)*Ye(.4435068666934967))+Ue[S+12>>2],Ue[S+20>>2]=Ye(Ye(G+Ue[S+24>>2])*Ye(.4435068666934967))+Ue[S+20>>2],M=S-4|0,Ue[M>>2]=Ye(Ye(A+Ue[S-8>>2])*Ye(.4435068666934967))+Ue[M>>2],S=S+32|0,M=u+7|0,u=u+4|0,M>>>0>>0;);u=(Q-5&-4)+5|0}if(u>>>0>=Q>>>0||(M=u+1|0,Q-u&1&&(u=S-4|0,Ue[u>>2]=Ye(Ye(Ue[S-8>>2]+Ue[S>>2])*Ye(.4435068666934967))+Ue[u>>2],S=S+8|0,u=M),(M|0)==(Q|0)))break t;for(;A=Ue[S>>2],Ue[S+4>>2]=Ye(Ye(A+Ue[S+8>>2])*Ye(.4435068666934967))+Ue[S+4>>2],M=S-4|0,Ue[M>>2]=Ye(Ye(A+Ue[S-8>>2])*Ye(.4435068666934967))+Ue[M>>2],S=S+16|0,u=u+2|0,(Q|0)!=(u|0););}Y||(u=S-4|0,A=Ue[S-8>>2],Ue[u>>2]=Ye(Ye(A+A)*Ye(.4435068666934967))+Ue[u>>2]);t:{n:{r:{i:{if(y){if(S=0,M=re>>>0>>0?re:he,M>>>0<=3){u=me;break r}for(u=me;Ue[u>>2]=Ue[u>>2]*Ye(.8128930926322937),Ue[u+4>>2]=Ue[u+4>>2]*Ye(1.2301740646362305),Ue[u+8>>2]=Ue[u+8>>2]*Ye(.8128930926322937),Ue[u+12>>2]=Ue[u+12>>2]*Ye(1.2301740646362305),Ue[u+16>>2]=Ue[u+16>>2]*Ye(.8128930926322937),Ue[u+20>>2]=Ue[u+20>>2]*Ye(1.2301740646362305),Ue[u+24>>2]=Ue[u+24>>2]*Ye(.8128930926322937),Ue[u+28>>2]=Ue[u+28>>2]*Ye(1.2301740646362305),u=u+32|0,S=S+4|0,M>>>0>(S|3)>>>0;);break i}S=0,M=re>>>0>he>>>0?he:re;a:{if(M>>>0<=3){u=me;break a}for(u=me;Ue[u>>2]=Ue[u>>2]*Ye(1.2301740646362305),Ue[u+4>>2]=Ue[u+4>>2]*Ye(.8128930926322937),Ue[u+8>>2]=Ue[u+8>>2]*Ye(1.2301740646362305),Ue[u+12>>2]=Ue[u+12>>2]*Ye(.8128930926322937),Ue[u+16>>2]=Ue[u+16>>2]*Ye(1.2301740646362305),Ue[u+20>>2]=Ue[u+20>>2]*Ye(.8128930926322937),Ue[u+24>>2]=Ue[u+24>>2]*Ye(1.2301740646362305),Ue[u+28>>2]=Ue[u+28>>2]*Ye(.8128930926322937),u=u+32|0,S=S+4|0,M>>>0>(S|3)>>>0;);S=M&2147483644}if(S>>>0>>0){if(Y=M+(S^-1)|0,H=M&3,H)for(O=0;Ue[u>>2]=Ue[u>>2]*Ye(1.2301740646362305),Ue[u+4>>2]=Ue[u+4>>2]*Ye(.8128930926322937),S=S+1|0,u=u+8|0,O=O+1|0,(H|0)!=(O|0););if(Y>>>0>=3)for(;Ue[u>>2]=Ue[u>>2]*Ye(1.2301740646362305),Ue[u+4>>2]=Ue[u+4>>2]*Ye(.8128930926322937),Ue[u+8>>2]=Ue[u+8>>2]*Ye(1.2301740646362305),Ue[u+12>>2]=Ue[u+12>>2]*Ye(.8128930926322937),Ue[u+16>>2]=Ue[u+16>>2]*Ye(1.2301740646362305),Ue[u+20>>2]=Ue[u+20>>2]*Ye(.8128930926322937),Ue[u+24>>2]=Ue[u+24>>2]*Ye(1.2301740646362305),Ue[u+28>>2]=Ue[u+28>>2]*Ye(.8128930926322937),u=u+32|0,S=S+4|0,(M|0)!=(S|0););S=M}if(A=Ye(1.2301740646362305),S>>>0>>0)break n;if(S>>>0>=re>>>0)break t;u=u+4|0,A=Ye(.8128930926322937);break n}S=M&2147483644}if(S>>>0>>0){if(Y=M+(S^-1)|0,H=M&3,H)for(O=0;Ue[u>>2]=Ue[u>>2]*Ye(.8128930926322937),Ue[u+4>>2]=Ue[u+4>>2]*Ye(1.2301740646362305),S=S+1|0,u=u+8|0,O=O+1|0,(H|0)!=(O|0););if(Y>>>0>=3)for(;Ue[u>>2]=Ue[u>>2]*Ye(.8128930926322937),Ue[u+4>>2]=Ue[u+4>>2]*Ye(1.2301740646362305),Ue[u+8>>2]=Ue[u+8>>2]*Ye(.8128930926322937),Ue[u+12>>2]=Ue[u+12>>2]*Ye(1.2301740646362305),Ue[u+16>>2]=Ue[u+16>>2]*Ye(.8128930926322937),Ue[u+20>>2]=Ue[u+20>>2]*Ye(1.2301740646362305),Ue[u+24>>2]=Ue[u+24>>2]*Ye(.8128930926322937),Ue[u+28>>2]=Ue[u+28>>2]*Ye(1.2301740646362305),u=u+32|0,S=S+4|0,(M|0)!=(S|0););S=M}if(A=Ye(.8128930926322937),S>>>0>>0)break n;if(S>>>0>=he>>>0)break t;u=u+4|0,A=Ye(1.2301740646362305)}Ue[u>>2]=A*Ue[u>>2]}t:{if($e>>>0<2)break t;M=re&7;n:{if(re-1>>>0<7){u=x;break n}for(O=re&2147483640,S=0,u=x;t[u>>2]=t[se>>2],t[u+4>>2]=t[se+8>>2],t[u+8>>2]=t[se+16>>2],t[u+12>>2]=t[se+24>>2],t[u+16>>2]=t[se+32>>2],t[u+20>>2]=t[se+40>>2],t[u+24>>2]=t[se+48>>2],t[u+28>>2]=t[se+56>>2],se=se- -64|0,u=u+32|0,S=S+8|0,(O|0)!=(S|0););}if(!M)break t;for(S=0;t[u>>2]=t[se>>2],se=se+8|0,u=u+4|0,S=S+1|0,(M|0)!=(S|0););}if((he|0)<=0)break e;if(u=(re<<2)+x|0,S=(((y?0:-1)<<2)+me|0)+4|0,(re^-1)+m>>>0>=7)for(x=he&-8,M=0;t[u>>2]=t[S>>2],t[u+4>>2]=t[S+8>>2],t[u+8>>2]=t[S+16>>2],t[u+12>>2]=t[S+24>>2],t[u+16>>2]=t[S+32>>2],t[u+20>>2]=t[S+40>>2],t[u+24>>2]=t[S+48>>2],t[u+28>>2]=t[S+56>>2],S=S- -64|0,u=u+32|0,M=M+8|0,(x|0)!=(M|0););if(x=he&7,!x)break e;for(M=0;t[u>>2]=t[S>>2],S=S+8|0,u=u+4|0,M=M+1|0,(x|0)!=(M|0););}}function Mi(x){x=x|0;var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;A=Nt-18752|0,Nt=A,y=xe[x+29|0],t[A+32>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0,H=y>>>0>1?1:2;e:{t:{if(y){n:{if(G=t[A+32>>2],u=t[A+28>>2],y>>>0<=(G-u|0)/36>>>0){y&&(M=u,u=De(y,36)-36|0,u=(u-((u>>>0)%36|0)|0)+36|0,u=pi(M,0,u)+u|0),t[A+28>>2]=u;break n}r:{if(O=u,u=t[A+24>>2],S=O-u|0,Y=(S|0)/36|0,O=Y+y|0,O>>>0<119304648){if(G=(G-u|0)/36|0,Q=G<<1,O=G>>>0>=59652323?119304647:O>>>0>>0?Q:O,O){if(O>>>0>=119304648)break r;M=Ri(De(O,36))}y=De(y,36)-36|0,y=(y-((y>>>0)%36|0)|0)+36|0,G=pi(De(Y,36)+M|0,0,y),S=N1(G+De((S|0)/-36|0,36)|0,u,S),t[A+32>>2]=De(O,36)+M,t[A+28>>2]=y+G,t[A+24>>2]=S,u&&Gt(u);break n}Mt(),Qe()}H5(),Qe()}if(u=xe[x+29|0],u)break t}M=t[A+24>>2];break e}for(S=Qn[x+26>>1],G=xe[x+30|0],O=xe[x+28|0],Y=Qn[x+24>>1],M=t[A+24>>2];y=De(m,36)+M|0,t[y+32>>2]=G,t[y+28>>2]=O,t[y+24>>2]=O,t[y+12>>2]=S,t[y+8>>2]=Y,t[y>>2]=1,t[y+4>>2]=1,m=m+1|0,(u|0)!=(m|0););m=u}G=0;e:{t:{if(u=oi(1,36),u){if(t[u+16>>2]=m,t[u+20>>2]=H,y=oi(m,52),t[u+24>>2]=y,!y)break t;if(m)for(;;){if(y=t[u+24>>2],O=y+De(G,52)|0,S=De(G,36)+M|0,t[O>>2]=t[S>>2],t[O+4>>2]=t[S+4>>2],Y=t[S+8>>2],t[O+8>>2]=Y,H=t[S+12>>2],t[O+12>>2]=H,t[O+16>>2]=t[S+16>>2],t[O+20>>2]=t[S+20>>2],t[O+24>>2]=t[S+24>>2],t[O+32>>2]=t[S+32>>2],!(!H|Y>>>0<=4294967295/(H>>>0)>>>2>>>0)){if(M=t[u+16>>2],M){for(m=0;y=t[(t[u+24>>2]+De(m,52)|0)+44>>2],y&&(Gt(y),M=t[u+16>>2]),m=m+1|0,M>>>0>m>>>0;);y=t[u+24>>2]}Gt(y);break t}if(y=Jo(De(H,Y)<<2),t[O+44>>2]=y,!y){if(m=t[u+24>>2],!m)break t;if(M=t[u+16>>2],M){for(m=0;y=t[(t[u+24>>2]+De(m,52)|0)+44>>2],y&&(Gt(y),M=t[u+16>>2]),m=m+1|0,M>>>0>m>>>0;);m=t[u+24>>2]}Gt(m);break t}if(pi(y,0,De(t[O+8>>2],t[O+12>>2])<<2),G=G+1|0,(G|0)==(m|0))break}}else u=0;break e}m=t[u+28>>2],m&&Gt(m),Gt(u),u=0}O=u,t[O>>2]=t[x+68>>2],t[O+4>>2]=t[x+72>>2],m=Qn[x+24>>1],t[O+8>>2]=m,u=Qn[x+26>>1],t[O+12>>2]=u;e:{t:{if(y=xe[x+28|0],y>>>0>=9){if(y>>>0>16)break e;if(y=t[x+4>>2],u=t[x>>2],!xe[x+30|0])break t;if((u|0)==(y|0))break e;for(m=t[t[O+24>>2]+44>>2];t[m>>2]=tn[u>>1],m=m+4|0,u=u+2|0,(y|0)!=(u|0););break e}if(y=xe[x+29|0],(y|0)!=1){if(!y||(u=De(u,m),!u))break e;for(S=t[x>>2],Y=u&2147483644,H=u&3,Q=t[O+24>>2],m=0,se=u>>>0<4;;){if(G=t[(Q+De(m,52)|0)+44>>2],u=0,M=0,!se)for(;t[G+(u<<2)>>2]=xe[S+(De(u,y)+m|0)|0],re=u|1,t[G+(re<<2)>>2]=xe[S+(De(y,re)+m|0)|0],re=u|2,t[G+(re<<2)>>2]=xe[S+(De(y,re)+m|0)|0],re=u|3,t[G+(re<<2)>>2]=xe[S+(De(y,re)+m|0)|0],u=u+4|0,M=M+4|0,(Y|0)!=(M|0););if(M=0,H)for(;t[G+(u<<2)>>2]=xe[S+(De(u,y)+m|0)|0],u=u+1|0,M=M+1|0,(H|0)!=(M|0););if(m=m+1|0,(y|0)==(m|0))break}break e}if(u=t[x>>2],y=t[x+4>>2],(u|0)==(y|0))break e;if(S=y+(u^-1)|0,m=t[t[O+24>>2]+44>>2],G=y-u&7,G)for(M=0;t[m>>2]=xe[u|0],m=m+4|0,u=u+1|0,M=M+1|0,(G|0)!=(M|0););if(S>>>0<7)break e;for(;t[m>>2]=xe[u|0],t[m+4>>2]=xe[u+1|0],t[m+8>>2]=xe[u+2|0],t[m+12>>2]=xe[u+3|0],t[m+16>>2]=xe[u+4|0],t[m+20>>2]=xe[u+5|0],t[m+24>>2]=xe[u+6|0],t[m+28>>2]=xe[u+7|0],m=m+32|0,u=u+8|0,(y|0)!=(u|0););break e}if((u|0)==(y|0))break e;for(m=t[t[O+24>>2]+44>>2];t[m>>2]=Qn[u>>1],m=m+4|0,u=u+2|0,(y|0)!=(u|0););}m=A+40|0,m&&(m=pi(m,0,18708),t[m+18196>>2]=-1,t[m+18200>>2]=-1,t[m+18188>>2]=1,t[m+18192>>2]=1,t[m+5612>>2]=-1,t[m+5600>>2]=64,t[m+5592>>2]=6,t[m+5596>>2]=64,t[m+4788>>2]=0,t[m+18692>>2]=0,t[m+24>>2]=0),dt[A+18730|0]=dt[x+29|0]>1,t[A+84>>2]=t[x+52>>2],t[A+5632>>2]=t[x+32>>2]+1,t[A+5648>>2]=xe[x+36|0]^1,y=t[x+44>>2],m=t[x+40>>2],u=y-m>>2,t[A+4828>>2]=u;e:{if((m|0)==(y|0))break e;if(y=u>>>0<=1?1:u,G=y&3,H=0,u=0,y-1>>>0>=3)for(Y=y&-4,y=A+4832|0,M=0;S=u<<2,Ue[S+y>>2]=Ue[m+S>>2],Q=S|4,Ue[Q+y>>2]=Ue[m+Q>>2],Q=S|8,Ue[Q+y>>2]=Ue[m+Q>>2],S=S|12,Ue[S+y>>2]=Ue[m+S>>2],u=u+4|0,M=M+4|0,(Y|0)!=(M|0););if(!G)break e;for(;y=u<<2,Ue[(y+A|0)+4832>>2]=Ue[m+y>>2],u=u+1|0,H=H+1|0,(G|0)!=(H|0););}t[A+60>>2]=1,u=oi(1,96),m=0;e:{if(!u)break e;t[u+76>>2]=0,t[u+12>>2]=236,t[u+4>>2]=237,t[u+92>>2]=213,t[u+24>>2]=238,t[u+20>>2]=239,t[u+16>>2]=211,t[u+8>>2]=240,t[u>>2]=241,y=oi(1,232),m=0;t:{if(!y)break t;t[y>>2]=0,dt[y+188|0]=xe[y+188|0]&253,m=si(1e3),t[y+52>>2]=m;n:{if(!m||(t[y+56>>2]=1e3,m=Bf(),t[y+196>>2]=m,!m)||(m=Bf(),t[y+192>>2]=m,!m))break n;m=0,S=Fp();r:{if(!S)break r;if(M=Nc(),!bf(S,2390)){m=M;break r}if(S=pt(S),(S|0)<0)break r;m=M?M<<1:64,m=(m|0)>(S|0)?S:m}if(M=vu(m),t[y+212>>2]=M,m=y,M)break t;if(m=vu(0),t[y+212>>2]=m,!m)break n;m=y;break t}Df(y),m=0}if(t[u+48>>2]=m,m){t[u+72>>2]=106,t[u+64>>2]=106,t[u+60>>2]=0,t[u+52>>2]=0,t[u+56>>2]=0,t[u+68>>2]=106,m=u;break e}Gt(u),m=0}m&&(t[m+56>>2]=0,t[m+68>>2]=89),m&&(t[m+52>>2]=0,t[m- -64>>2]=90),u=0,y=A+40|0,!m|!y|(t[m+76>>2]|!O)||(u=Zt[t[m+20>>2]](t[m+48>>2],y,O,m+52|0)|0);e:{t:{if(!u){os(8026,42,1,t[11824]),H4(m),di(O);break t}y=t[x+4>>2]-t[x>>2]|0,u=t[x+16>>2],M=t[x+12>>2],S=u-M|0;n:{r:{if(y>>>0>S>>>0){if(G=y-S|0,H=t[x+20>>2],G>>>0<=H-u>>>0){u=pi(u,0,G)+G|0;break r}if((y|0)<0)break e;if(u=H-M|0,H=u<<1,u=u>>>0>=1073741823?2147483647:y>>>0>>0?H:y,H=Ri(u),pi(H+S|0,0,G),S=N1(H,M,S),t[x+20>>2]=S+u,u=y+S|0,t[x+16>>2]=u,t[x+12>>2]=S,!M)break n;Gt(M),u=t[x+16>>2];break n}if(y>>>0>=S>>>0)break n;u=y+M|0}t[x+16>>2]=u}if(y=t[x+12>>2],t[A+12>>2]=y,t[A+8>>2]=y,t[A+16>>2]=u-y,y=Ln(0),y&&(y&&(t[y+4>>2]=0,t[y>>2]=A+8),u=t[A+16>>2],y&&(t[y+8>>2]=u,t[y+12>>2]=0),!y|!(dt[y+68|0]&1)||(t[y+20>>2]=91),y&&(t[y+24>>2]=59),y&&(t[y+28>>2]=60)),u=0,t[m+76>>2]|(!m|!y)||(u=Zt[t[m>>2]](t[m+48>>2],y,O,m+52|0)|0),!u){os(4974,43,1,t[11824]);break t}if(u=0,t[m+76>>2]|(!m|!y)||(u=Zt[t[m+4>>2]](t[m+48>>2],y,m+52|0)|0),!u){os(10442,35,1,t[11824]);break t}if(u=0,t[m+76>>2]|(!m|!y)||(u=Zt[t[m+12>>2]](t[m+48>>2],y,m+52|0)|0),!u){os(5018,41,1,t[11824]);break t}if(m=t[A+12>>2]-t[A+8>>2]|0,M=t[x+16>>2],u=t[x+12>>2],y=M-u|0,m>>>0>y>>>0){if(O=m-y|0,S=t[x+20>>2],O>>>0<=S-M>>>0){he=x,me=pi(M,0,O)+O|0,t[he+16>>2]=me;break t}if((m|0)<0)break e;if(M=S-u|0,S=M<<1,M=M>>>0>=1073741823?2147483647:m>>>0>>0?S:m,S=Ri(M),pi(S+y|0,0,O),y=N1(S,u,y),t[x+20>>2]=y+M,t[x+16>>2]=m+y,t[x+12>>2]=y,!u)break t;Gt(u);break t}if(m>>>0>=y>>>0)break t;t[x+16>>2]=u+m}x=t[A+24>>2],x&&(t[A+28>>2]=x,Gt(x)),Nt=A+18752|0;return}Mt(),Qe()}function Pi(x,u,m,y,S,M){x=x|0,u=+u,m=m|0,y=y|0,S=S|0,M=M|0;var O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0;re=Nt-560|0,Nt=re,t[re+44>>2]=0,Ae(+u),O=Re(1)|0,Re(0)|0;e:{if((O|0)<0){Ne=1,jt=1111,u=-u,Ae(+u),O=Re(1)|0,Re(0)|0;break e}if(S&2048){Ne=1,jt=1114;break e}Ne=S&1,jt=Ne?1117:1112,Yt=!Ne}e:{if((O&2146435072)==2146435072){O=Ne+3|0,Xa(x,32,m,O,S&-65537),Hs(x,jt,Ne),y=M&32,Hs(x,u!=u?y?1773:2445:y?2042:2449,3),Xa(x,32,m,O,S^8192),se=(m|0)<(O|0)?O:m;break e}Ze=re+16|0;t:{n:{r:{if(u=ti(u,re+44|0),u=u+u,u!=0){if(O=t[re+44>>2],t[re+44>>2]=O-1,kt=M|32,(kt|0)!=97)break r;break t}if(kt=M|32,(kt|0)==97)break t;Y=t[re+44>>2],Q=(y|0)<0?6:y;break n}Y=O-29|0,t[re+44>>2]=Y,u=u*268435456,Q=(y|0)<0?6:y}for(_e=(re+48|0)+((Y|0)>=0?288:0)|0,A=_e;u<4294967296&u>=0?y=~~u>>>0:y=0,t[A>>2]=y,A=A+4|0,u=(u-+(y>>>0))*1e9,u!=0;);n:{if((Y|0)<=0){y=Y,O=A,G=_e;break n}for(G=_e,y=Y;;){he=(y|0)>=29?29:y,O=A-4|0;r:{if(G>>>0>O>>>0)break r;for(y=0;H=t[O>>2],Rt=y,y=he&31,(he&63)>>>0>=32?(se=H<>>32-y,y=H<>>0>Rt>>>0?H+1|0:H,1e9,0),en=O,un=Rt-N0(y,Gi,1e9,0)|0,t[en>>2]=un,O=O-4|0,G>>>0<=O>>>0;);if(!y)break r;G=G-4|0,t[G>>2]=y}for(;O=A,G>>>0>>0&&(A=O-4|0,!t[A>>2]););if(y=t[re+44>>2]-he|0,t[re+44>>2]=y,A=O,!((y|0)>0))break}}if((y|0)<0)for($e=((Q+25>>>0)/9|0)+1|0,me=(kt|0)==102;;){y=0-y|0,se=(y|0)>=9?9:y;n:{if(O>>>0<=G>>>0){A=t[G>>2];break n}for(he=1e9>>>se|0,H=-1<>2],t[A>>2]=Rt+(y>>>se|0),y=De(he,y&H),A=A+4|0,A>>>0>>0;);if(A=t[G>>2],!y)break n;t[O>>2]=y,O=O+4|0}if(y=se+t[re+44>>2]|0,t[re+44>>2]=y,G=(!A<<2)+G|0,A=me?_e:G,O=O-A>>2>($e|0)?A+($e<<2)|0:O,!((y|0)<0))break}y=0;n:{if(O>>>0<=G>>>0||(y=De(_e-G>>2,9),A=10,H=t[G>>2],H>>>0<10))break n;for(;y=y+1|0,A=De(A,10),H>>>0>=A>>>0;);}if(A=(Q-((kt|0)!=102?y:0)|0)-((kt|0)==103&(Q|0)!=0)|0,(A|0)<(De(O-_e>>2,9)-9|0)){if(he=A+9216|0,H=(he|0)/9|0,Y=((((Y|0)<0?4:292)+re|0)+(H<<2)|0)-4048|0,A=10,se=he-De(H,9)|0,(se|0)<=7)for(;A=De(A,10),se=se+1|0,(se|0)!=8;);he=t[Y>>2],$e=(he>>>0)/(A>>>0)|0,me=he-De(A,$e)|0,H=Y+4|0;n:{if(!me&(H|0)==(O|0))break n;r:{if(!($e&1)&&(u=9007199254740992,!(dt[Y-4|0]&1)|((A|0)!=1e9|G>>>0>=Y>>>0)))break r;u=9007199254740994}if(Oe=(O|0)==(H|0)?1:1.5,H=A>>>1|0,Oe=H>>>0>me>>>0?.5:(H|0)==(me|0)?Oe:1.5,xe[jt|0]!=45|Yt||(Oe=-Oe,u=-u),H=he-me|0,t[Y>>2]=H,u+Oe==u)break n;if(y=A+H|0,t[Y>>2]=y,y>>>0>=1e9)for(;t[Y>>2]=0,Y=Y-4|0,Y>>>0>>0&&(G=G-4|0,t[G>>2]=0),y=t[Y>>2]+1|0,t[Y>>2]=y,y>>>0>999999999;);if(y=De(_e-G>>2,9),A=10,H=t[G>>2],H>>>0<10)break n;for(;y=y+1|0,A=De(A,10),H>>>0>=A>>>0;);}A=Y+4|0,O=O>>>0>A>>>0?A:O}for(;H=O,he=O>>>0<=G>>>0,!he&&(O=H-4|0,!t[O>>2]););n:{if((kt|0)!=103){Y=S&8;break n}if(A=Q||1,O=(A|0)>(y|0)&(y|0)>-5,Q=(O?y^-1:-1)+A|0,M=(O?-1:-2)+M|0,Y=S&8,Y)break n;O=-9;r:{if(he||(Y=t[H-4>>2],!Y)||(se=10,O=0,(Y>>>0)%10|0))break r;for(;A=O,O=O+1|0,se=De(se,10),!((Y>>>0)%(se>>>0)|0););O=A^-1}if(A=De(H-_e>>2,9),(M&-33)==70){Y=0,O=(O+A|0)-9|0,O=(O|0)>0?O:0,Q=(O|0)>(Q|0)?Q:O;break n}Y=0,O=((y+A|0)+O|0)-9|0,O=(O|0)>0?O:0,Q=(O|0)>(Q|0)?Q:O}if(se=-1,he=Y|Q,((he?2147483645:2147483646)|0)<(Q|0))break e;me=(((he|0)!=0)+Q|0)+1|0,A=M&-33;n:{if((A|0)==70){if((me^2147483647)<(y|0))break e;O=(y|0)>0?y:0;break n}if(O=y>>31,O=xr((O^y)-O|0,0,Ze),(Ze-O|0)<=1)for(;O=O-1|0,dt[O|0]=48,(Ze-O|0)<2;);if($e=O-2|0,dt[$e|0]=M,dt[O-1|0]=(y|0)<0?45:43,O=Ze-$e|0,(O|0)>(me^2147483647))break e}if(y=O+me|0,(y|0)>(Ne^2147483647))break e;me=y+Ne|0,Xa(x,32,m,me,S),Hs(x,jt,Ne),Xa(x,48,m,me,S^65536);n:{r:{i:{if((A|0)==70){for(M=re+16|0,y=M|8,Y=M|9,A=G>>>0>_e>>>0?_e:G,G=A;;){O=xr(t[G>>2],0,Y);a:{if((A|0)!=(G|0)){if(re+16>>>0>=O>>>0)break a;for(;O=O-1|0,dt[O|0]=48,re+16>>>0>>0;);break a}if((O|0)!=(Y|0))break a;dt[re+24|0]=48,O=y}if(Hs(x,O,Y-O|0),G=G+4|0,!(_e>>>0>=G>>>0))break}if(he&&Hs(x,3374,1),(Q|0)<=0|G>>>0>=H>>>0)break i;for(;;){if(O=xr(t[G>>2],0,Y),O>>>0>re+16>>>0)for(;O=O-1|0,dt[O|0]=48,re+16>>>0>>0;);if(Hs(x,O,(Q|0)>=9?9:Q),O=Q-9|0,G=G+4|0,H>>>0<=G>>>0)break r;if(y=(Q|0)>9,Q=O,!y)break}break r}a:{if((Q|0)<0)break a;for(_e=G>>>0>>0?H:G+4|0,M=re+16|0,y=M|8,H=M|9,A=G;;){O=xr(t[A>>2],0,H),(H|0)==(O|0)&&(dt[re+24|0]=48,O=y);s:{if((A|0)!=(G|0)){if(re+16>>>0>=O>>>0)break s;for(;O=O-1|0,dt[O|0]=48,re+16>>>0>>0;);break s}if(Hs(x,O,1),O=O+1|0,!(Y|Q))break s;Hs(x,3374,1)}if(M=H-O|0,Hs(x,O,(M|0)>(Q|0)?Q:M),Q=Q-M|0,A=A+4|0,_e>>>0<=A>>>0)break a;if(!((Q|0)>=0))break}}Xa(x,48,Q+18|0,18,0),Hs(x,$e,Ze-$e|0);break n}O=Q}Xa(x,48,O+9|0,9,0)}Xa(x,32,m,me,S^8192),se=(m|0)<(me|0)?me:m;break e}Y=(M<<26>>31&9)+jt|0;t:{if(y>>>0>11)break t;for(O=12-y|0,Oe=16;Oe=Oe*16,O=O-1|0,!!O;);if(xe[Y|0]==45){u=-(Oe+(-u-Oe));break t}u=u+Oe-Oe}for(O=t[re+44>>2],A=O>>31,O=xr((O^A)-A|0,0,Ze),(Ze|0)==(O|0)&&(dt[re+15|0]=48,O=re+15|0),_e=Ne|2,G=M&32,A=t[re+44>>2],Q=O-2|0,dt[Q|0]=M+15,dt[O-1|0]=(A|0)<0?45:43,O=S&8,A=re+16|0;M=A,Rr(u)<2147483648?H=~~u:H=-2147483648,dt[A|0]=G|xe[H+48288|0],u=(u-+(H|0))*16,A=M+1|0,!((y|0)>0|O)&u==0|(A-(re+16|0)|0)!=1||(dt[M+1|0]=46,A=M+2|0),u!=0;);if(se=-1,O=Ze-Q|0,M=O+_e|0,(2147483645-M|0)<(y|0))break e;t:{n:{if(!y||(G=A-(re+16|0)|0,(G-2|0)>=(y|0)))break n;y=y+2|0;break t}G=A-(re+16|0)|0,y=G}M=y+M|0,Xa(x,32,m,M,S),Hs(x,Y,_e),Xa(x,48,m,M,S^65536),Hs(x,re+16|0,G),Xa(x,48,y-G|0,0,0),Hs(x,Q,O),Xa(x,32,m,M,S^8192),se=(m|0)<(M|0)?M:m}return Nt=re+560|0,se|0}function $s(x,u,m,y,S,M,O,A,G,H,Y,Q,re){var se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0,li=0,gi=0,_i=0,Di=0,Bi=0,ji=0;Rt=Nt-16|0,Nt=Rt,$e=t[x+4>>2],gr=t[$e+76>>2]+De(u,5644)|0,un=t[x>>2],_r=1,_r=t[$e+80>>2]?t[un+16>>2]:_r,Bi=Qn[$e>>1],ji=t[gr+420>>2],Cn=Q,Dr=re,Q=0,Oe=Nt-32|0,Nt=Oe,jt=u,Zr=t[$e+76>>2],Qr=t[(Zr+De(u,5644)|0)+420>>2],Ze=t[un+16>>2],kt=si(De(Ze,528));e:{if(!kt)break e;t:{u=si(Ze<<2);n:{if(!u){u=kt;break n}if(x=ju(un,t[$e+76>>2],jt,Dr),x){r:{if(!Ze)break r;if(se=kt,Ze>>>0>=8)for(re=Ze&-8;me=Ne<<2,t[me+u>>2]=se,t[(me|4)+u>>2]=se+528,t[(me|8)+u>>2]=se+1056,t[(me|12)+u>>2]=se+1584,t[(me|16)+u>>2]=se+2112,t[(me|20)+u>>2]=se+2640,t[(me|24)+u>>2]=se+3168,t[(me|28)+u>>2]=se+3696,Ne=Ne+8|0,se=se+4224|0,_e=_e+8|0,(re|0)!=(_e|0););if(re=Ze&7,!re)break r;for(;t[(Ne<<2)+u>>2]=se,Ne=Ne+1|0,se=se+528|0,he=he+1|0,(re|0)!=(he|0););}if($r=Qr+1|0,Gh(un,$e,jt,Oe+20|0,Oe+16|0,Oe+12|0,Oe+8|0,Oe+4|0,Oe,Oe+24|0,Oe+28|0,u),Di=t[Oe+28>>2],Tn=t[Oe+24>>2],dt[x|0]=dt[$e+100|0]&1,li=De(Ze,Tn),gi=De(li,Di),re=De(gi,t[(De(jt,5644)+Zr|0)+8>>2]),t[x+8>>2]=re,re=oi(re,2),t[x+4>>2]=re,!re){if(Gt(kt),Gt(u),u=t[x+4>>2],u&&(Gt(u),t[x+4>>2]=0),!$r){u=x;break n}for(me=0,_e=x;;){if(se=t[_e+200>>2],se){if(he=0,Ne=t[_e+196>>2],Ne){for(;u=t[se+12>>2],u&&(Gt(u),t[se+12>>2]=0,Ne=t[_e+196>>2]),se=se+16|0,he=he+1|0,Ne>>>0>he>>>0;);se=t[_e+200>>2]}Gt(se),t[_e+200>>2]=0}if(_e=_e+240|0,u=(me|0)==(Qr|0),me=me+1|0,!!u)break}u=x;break n}if(re=t[un+24>>2],Rn=t[Oe+20>>2],t[x+204>>2]=Rn,bn=t[Oe+12>>2],t[x+208>>2]=bn,$n=t[Oe+16>>2],t[x+212>>2]=$n,er=t[Oe+8>>2],t[x+216>>2]=er,rr=t[Oe+4>>2],t[x+228>>2]=rr,sr=t[Oe>>2],t[x+232>>2]=sr,t[x+12>>2]=gi,t[x+16>>2]=li,t[x+20>>2]=Tn,t[x+24>>2]=1,Ze)for(_e=t[x+200>>2],me=re;;){se=t[(en<<2)+u>>2],t[_e>>2]=t[me>>2],t[_e+4>>2]=t[me+4>>2],Yt=t[_e+8>>2];r:{if(!Yt)break r;if(he=t[_e+12>>2],(Yt|0)!=1)for(Q=Yt&-2,Ne=0;t[he>>2]=t[se>>2],t[he+4>>2]=t[se+4>>2],t[he+8>>2]=t[se+8>>2],t[he+12>>2]=t[se+12>>2],t[he+16>>2]=t[se+16>>2],t[he+20>>2]=t[se+20>>2],t[he+24>>2]=t[se+24>>2],t[he+28>>2]=t[se+28>>2],he=he+32|0,se=se+32|0,Ne=Ne+2|0,(Q|0)!=(Ne|0););if(!(Yt&1))break r;t[he>>2]=t[se>>2],t[he+4>>2]=t[se+4>>2],t[he+8>>2]=t[se+8>>2],t[he+12>>2]=t[se+12>>2]}if(me=me+52|0,_e=_e+16|0,en=en+1|0,(en|0)==(Ze|0))break}if(_i=1,$r>>>0>1)for(Q=x;;){if(t[Q+472>>2]=sr,t[Q+468>>2]=rr,t[Q+456>>2]=er,t[Q+452>>2]=$n,t[Q+448>>2]=bn,t[Q+444>>2]=Rn,t[Q+264>>2]=1,t[Q+260>>2]=Tn,t[Q+256>>2]=li,t[Q+252>>2]=gi,Ze)for(_e=t[Q+440>>2],en=0,me=re;;){se=t[(en<<2)+u>>2],t[_e>>2]=t[me>>2],t[_e+4>>2]=t[me+4>>2],Yt=t[_e+8>>2];r:{if(!Yt)break r;if(he=t[_e+12>>2],(Yt|0)!=1)for($r=Yt&-2,Ne=0;t[he>>2]=t[se>>2],t[he+4>>2]=t[se+4>>2],t[he+8>>2]=t[se+8>>2],t[he+12>>2]=t[se+12>>2],t[he+16>>2]=t[se+16>>2],t[he+20>>2]=t[se+20>>2],t[he+24>>2]=t[se+24>>2],t[he+28>>2]=t[se+28>>2],he=he+32|0,se=se+32|0,Ne=Ne+2|0,($r|0)!=(Ne|0););if(!(Yt&1))break r;t[he>>2]=t[se>>2],t[he+4>>2]=t[se+4>>2],t[he+8>>2]=t[se+8>>2],t[he+12>>2]=t[se+12>>2]}if(me=me+52|0,_e=_e+16|0,en=en+1|0,(en|0)==(Ze|0))break}if(me=t[Q+8>>2],t[Q+244>>2]=t[Q+4>>2],t[Q+248>>2]=me,me=(Qr|0)!=(_i|0),Q=Q+240|0,_i=_i+1|0,!me)break}if(Gt(kt),Gt(u),Q=De(jt,5644),!(xe[(Q+Zr|0)+5640|0]&4))break t;u=Qn[$e>>1];r:{if(u>>>0>=3){if((Cn|0)==1|u>>>0<7)break r;break t}if((Cn|0)!=1)break t}if(re=t[$e+76>>2]+De(jt,5644)|0,u=t[re+428>>2],t[re+496>>2]=t[re+424>>2],t[re+500>>2]=u,t[re+492>>2]=0,t[re+544>>2]=sr,t[re+540>>2]=rr,t[re+536>>2]=er,t[re+532>>2]=bn,t[re+528>>2]=$n,t[re+524>>2]=Rn,t[re+520>>2]=Tn,t[re+504>>2]=0,t[re+516>>2]=t[re+440>>2],u=t[re+436>>2],t[re+508>>2]=t[re+432>>2],t[re+512>>2]=u,t[re+460>>2]=t[re+456>>2],Q=t[re+420>>2],Q-1>>>0>4294967293){Q=x;break e}for(se=re+424|0,he=1;u=t[se+152>>2],t[se+220>>2]=t[se+148>>2],t[se+224>>2]=u,t[se+228>>2]=0,t[se+268>>2]=sr,t[se+264>>2]=rr,t[se+260>>2]=er,t[se+256>>2]=bn,t[se+252>>2]=$n,t[se+248>>2]=Rn,t[se+244>>2]=Tn,u=t[se+164>>2],t[se+236>>2]=t[se+160>>2],t[se+240>>2]=u,u=t[se+156>>2],t[se+232>>2]=u,t[se+184>>2]=t[se+180>>2],t[se+216>>2]=u>>>0>ln[se+84>>2]?u:0,se=se+148|0,u=(Q|0)==(he|0),he=he+1|0,!u;);Q=x;break e}Gt(kt)}Gt(u);break e}if(u=t[$e+76>>2],kt=t[(u+Q|0)+420>>2],(kt|0)==-1){Q=x;break e}for(u=u+De(jt,5644)|0,se=u+424|0,re=t[u+4>>2],Q=t[u+8>>2],he=0;t[se+92>>2]=Ze,t[se+76>>2]=0,t[se+80>>2]=0,t[se+88>>2]=Di,t[se+84>>2]=Q,t[se+68>>2]=0,t[se+72>>2]=0,t[se+120>>2]=sr,t[se+116>>2]=rr,t[se+112>>2]=er,t[se+108>>2]=bn,t[se+104>>2]=$n,t[se+100>>2]=Rn,t[se+96>>2]=Tn,t[se+36>>2]=re,se=se+148|0,u=(he|0)==(kt|0),he=he+1|0,!u;);Q=x}Nt=Oe+32|0,u=Q;e:{if(!u){x=0;break e}me=ji+1|0,x=0,t[M>>2]=0;t:{n:{if(!Cn){if(!_r)break n;for(kt=(Bi|0)==4?2:1,Y=0;;){re=1,G=0,Q=0,A=u;r:{for(;;){if(x=0,Cp(u,$e,jt,Q,Y,H,0),t[A+84>>2]==-1)break t;i:{if(du(A))for(;;){if(ln[A+40>>2]>>0){if(t[Rt+12>>2]=0,!k4(m,gr,A,S,Rt+12|0,O,0,Dr))break i;x=t[Rt+12>>2],t[M>>2]=x+t[M>>2],O=O-x|0,G=x+G|0,S=x+S|0}if(!du(A))break}if(x=t[$e+80>>2],x>>>0>>0&&x)break i;if(A=A+240|0,Q=Q+1|0,re=kt>>>0>Q>>>0,(Q|0)!=(kt|0))continue;break r}break}if(f(u,me),!re)break r;x=0;break e}if(x=1,Y=Y+1|0,(_r|0)==(Y|0))break}break t}if(Cp(u,$e,jt,Y,G,H,Cn),H=u+De(Y,240)|0,t[H+84>>2]==-1||!(!A|!t[A>>2])&&(G=si(yk(un,$e,jt)<<2),t[A+8>>2]=G,!G))break t;if(!du(H))break n;if(G=u+De(Y,240)|0,!A)for(;;){if(ln[G+40>>2]>>0){if(x=0,t[Rt+12>>2]=0,!k4(m,gr,H,S,Rt+12|0,O,Cn,Dr))break t;x=t[Rt+12>>2],t[M>>2]=x+t[M>>2],t[m+840>>2]=t[m+840>>2]+1,O=O-x|0,S=x+S|0}if(x=1,!du(H))break t}for(;;){if(ln[G+40>>2]>>0){if(x=0,t[Rt+12>>2]=0,!k4(m,gr,H,S,Rt+12|0,O,Cn,Dr))break t;x=t[Rt+12>>2],t[M>>2]=x+t[M>>2],t[A>>2]&&(t[t[A+8>>2]+(t[A+4>>2]<<2)>>2]=x,t[A+4>>2]=t[A+4>>2]+1),O=O-x|0,t[m+840>>2]=t[m+840>>2]+1,S=x+S|0}if(!du(H))break}}x=1}f(u,me)}return Nt=Rt+16|0,x}function m4(x,u,m,y,S,M,O){var A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0;H=Nt-80|0,Nt=H,t[H+76>>2]=u,Yt=H+55|0,$e=H+56|0;e:{t:{n:{r:{i:for(;;){if(Y=u,(_e^2147483647)<(A|0))break r;_e=A+_e|0;a:{s:{o:{if(A=Y,G=xe[A|0],G)for(;;){u:{u=G&255;l:{if(!u){u=A;break l}if((u|0)!=37)break u;for(G=A;;){if(xe[G+1|0]!=37){u=G;break l}if(A=A+1|0,re=xe[G+2|0],u=G+2|0,G=u,(re|0)!=37)break}}if(A=A-Y|0,jt=_e^2147483647,(A|0)>(jt|0))break r;if(x&&Hs(x,Y,A),A)continue i;t[H+76>>2]=u,A=u+1|0,Oe=-1,xe[u+2|0]!=36|dt[u+1|0]-48>>>0>=10||(Oe=dt[u+1|0]-48|0,Ze=1,A=u+3|0),t[H+76>>2]=A,he=0,G=dt[A|0],u=G-32|0;l:{if(u>>>0>31){se=A;break l}if(se=A,u=1<>2]=se,he=u|he,G=dt[A+1|0],u=G-32|0,u>>>0>=32)break l;if(A=se,u=1<>>0>=10)){t[((dt[se+1|0]<<2)+S|0)-192>>2]=10,G=se+3|0,Ze=1,u=t[((dt[se+1|0]<<3)+y|0)-384>>2];break h}if(Ze)break o;if(G=se+1|0,!x){t[H+76>>2]=G,Ze=0,Ne=0;break l}u=t[m>>2],t[m>>2]=u+4,Ze=0,u=t[u>>2]}if(t[H+76>>2]=G,Ne=u,(u|0)>=0)break l;Ne=0-Ne|0,he=he|8192;break l}if(Ne=Fo(H+76|0),(Ne|0)<0)break r;G=t[H+76>>2]}A=0,Q=-1;l:{if(xe[G|0]!=46){u=G,Rt=0;break l}if(xe[G+1|0]==42){h:{if(!(xe[G+3|0]!=36|dt[G+2|0]-48>>>0>=10)){t[((dt[G+2|0]<<2)+S|0)-192>>2]=10,u=G+4|0,Q=t[((dt[G+2|0]<<3)+y|0)-384>>2];break h}if(Ze)break o;if(u=G+2|0,Q=0,!x)break h;G=t[m>>2],t[m>>2]=G+4,Q=t[G>>2]}t[H+76>>2]=u,Rt=(Q^-1)>>>31|0;break l}t[H+76>>2]=G+1,Q=Fo(H+76|0),u=t[H+76>>2],Rt=1}for(;;){if(me=A,se=28,re=u,A=dt[u|0],A-123>>>0<4294967238)break n;if(u=re+1|0,A=xe[(A+De(me,58)|0)+47759|0],!(A-1>>>0<8))break}t[H+76>>2]=u;l:{h:{if((A|0)!=27){if(!A)break n;if((Oe|0)>=0){t[(Oe<<2)+S>>2]=A,G=(Oe<<3)+y|0,A=t[G+4>>2],t[H+64>>2]=t[G>>2],t[H+68>>2]=A;break h}if(!x)break a;$l(H- -64|0,A,m,O);break l}if((Oe|0)>=0)break n}if(A=0,!x)continue i}G=he&-65537,he=he&8192?G:he,Oe=0,kt=1101,se=$e;l:{h:{f:{p:{c:{m:{g:{d:{v:{k:{y:{w:{C:{_:{x:{S:switch(A=dt[re|0],A=me&&(A&15)==3?A&-33:A,A-88|0){case 11:break l;case 9:case 13:case 14:case 15:break h;case 27:break g;case 12:case 17:break k;case 23:break y;case 0:case 32:break w;case 24:break C;case 22:break _;case 29:break x;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break s;default:break S}S:switch(A-65|0){case 0:case 4:case 5:case 6:break h;case 2:break c;case 1:case 3:break s;default:break S}if((A|0)==83)break m;break s}G=t[H+64>>2],re=t[H+68>>2],kt=1101;break v}A=0;_:switch(me&255){case 0:t[t[H+64>>2]>>2]=_e;continue i;case 1:t[t[H+64>>2]>>2]=_e;continue i;case 2:Y=t[H+64>>2],t[Y>>2]=_e,t[Y+4>>2]=_e>>31;continue i;case 3:tn[t[H+64>>2]>>1]=_e;continue i;case 4:dt[t[H+64>>2]]=_e;continue i;case 6:t[t[H+64>>2]>>2]=_e;continue i;case 7:break _;default:continue i}Y=t[H+64>>2],t[Y>>2]=_e,t[Y+4>>2]=_e>>31;continue i}Q=Q>>>0<=8?8:Q,he=he|8,A=120}if(Y=$e,G=t[H+64>>2],re=t[H+68>>2],G|re)for(en=A&32;Y=Y-1|0,dt[Y|0]=en|xe[(G&15)+48288|0],un=!re&G>>>0>15|(re|0)!=0,me=re,re=re>>>4|0,G=(me&15)<<28|G>>>4,!!un;);if(!(t[H+64>>2]|t[H+68>>2])|!(he&8))break d;kt=(A>>>4|0)+1101|0,Oe=2;break d}if(A=$e,Y=t[H+68>>2],re=Y,G=t[H+64>>2],Y|G)for(;A=A-1|0,dt[A|0]=G&7|48,me=!re&G>>>0>7|(re|0)!=0,Y=re,re=Y>>>3|0,G=(Y&7)<<29|G>>>3,!!me;);if(Y=A,!(he&8))break d;A=$e-Y|0,Q=(A|0)<(Q|0)?Q:A+1|0;break d}if(G=t[H+64>>2],A=t[H+68>>2],re=A,(A|0)<0){Y=0-(re+((G|0)!=0)|0)|0,re=Y,G=0-G|0,t[H+64>>2]=G,t[H+68>>2]=Y,Oe=1,kt=1101;break v}if(he&2048){Oe=1,kt=1102;break v}Oe=he&1,kt=Oe?1103:1101}Y=xr(G,re,$e)}if((Q|0)<0&&Rt)break r;if(he=Rt?he&-65537:he,A=t[H+64>>2],G=t[H+68>>2],!(Q|(A|G)!=0)){Y=$e,Q=0;break s}A=!(A|G)+($e-Y|0)|0,Q=(A|0)<(Q|0)?Q:A;break s}se=Q>>>0>=2147483647?2147483647:Q,me=se,he=(se|0)!=0,A=t[H+64>>2],Y=A||3376,A=Y;g:{d:{v:{k:{if(!(A&3)|!se)break k;for(;;){if(!xe[A|0])break v;if(me=me-1|0,he=(me|0)!=0,A=A+1|0,!(A&3))break k;if(!me)break}}if(!he)break d;if(!(!xe[A|0]|me>>>0<4))for(;;){if(re=t[A>>2],(re^-1)&re-16843009&-2139062144)break v;if(A=A+4|0,me=me-4|0,!(me>>>0>3))break}if(!me)break d}for(;;){if(!xe[A|0])break g;if(A=A+1|0,me=me-1|0,!me)break}}A=0}if(A=A?A-Y|0:se,se=A+Y|0,(Q|0)>=0){he=G,Q=A;break s}if(he=G,Q=A,xe[se|0])break r;break s}if(Q){G=t[H+64>>2];break p}A=0,Xa(x,32,Ne,0,he);break f}t[H+12>>2]=0,t[H+8>>2]=t[H+64>>2],G=H+8|0,t[H+64>>2]=G,Q=-1}A=0;p:{for(;;){if(Y=t[G>>2],!Y)break p;if(re=jp(H+4|0,Y),Y=(re|0)<0,!(Y|re>>>0>Q-A>>>0)){if(G=G+4|0,A=A+re|0,Q>>>0>A>>>0)continue;break p}break}if(Y)break t}if(se=61,(A|0)<0)break n;if(Xa(x,32,Ne,A,he),!A){A=0;break f}for(se=0,G=t[H+64>>2];;){if(Y=t[G>>2],!Y||(Y=jp(H+4|0,Y),se=Y+se|0,se>>>0>A>>>0))break f;if(Hs(x,H+4|0,Y),G=G+4|0,!(A>>>0>se>>>0))break}}Xa(x,32,Ne,A,he^8192),A=(A|0)<(Ne|0)?Ne:A;continue i}if((Q|0)<0&&Rt)break r;if(se=61,A=Zt[M|0](x,mr[H+64>>3],Ne,Q,he,A)|0,(A|0)>=0)continue i;break n}dt[H+55|0]=t[H+64>>2],Q=1,Y=Yt,he=G;break s}G=xe[A+1|0],A=A+1|0}if(x)break e;if(!Ze)break a;for(A=1;;){if(x=t[(A<<2)+S>>2],x){if($l((A<<3)+y|0,x,m,O),_e=1,A=A+1|0,(A|0)!=10)continue;break e}break}if(_e=1,A>>>0>=10)break e;for(;;){if(t[(A<<2)+S>>2])break o;if(A=A+1|0,(A|0)==10)break}break e}se=28;break n}if(re=se-Y|0,G=(Q|0)>(re|0)?Q:re,(G|0)>(Oe^2147483647))break r;if(se=61,Q=G+Oe|0,A=(Q|0)<(Ne|0)?Ne:Q,(jt|0)<(A|0))break n;Xa(x,32,A,Q,he),Hs(x,kt,Oe),Xa(x,48,A,Q,he^65536),Xa(x,48,G,re,0),Hs(x,Y,re),Xa(x,32,A,Q,he^8192);continue}break}_e=0;break e}se=61}t[12458]=se}_e=-1}return Nt=H+80|0,_e}function d5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0;O=Nt-160|0,Nt=O;e:{if(m>>>0<=35){m=0,vt(y,1,10018,0);break e}if(m=m-36|0,Q=(m>>>0)/3|0,(De(Q,3)|0)!=(m|0)){m=0,vt(y,1,10018,0);break e}G=t[x+72>>2],m=O+156|0,ue(u,m,2),tn[x+80>>1]=t[O+156>>2],ue(u+2|0,G+8|0,4),ue(u+6|0,G+12|0,4),ue(u+10|0,G,4),ue(u+14|0,G+4|0,4),ue(u+18|0,x+92|0,4),ue(u+22|0,x+96|0,4),ue(u+26|0,x+84|0,4),ue(u+30|0,x+88|0,4),ue(u+34|0,m,2);t:{n:{r:{if(m=t[O+156>>2],m>>>0<=16384){if(t[G+16>>2]=m,(m|0)!=(Q|0)){t[O+132>>2]=Q,t[O+128>>2]=m,vt(y,1,26503,O+128|0),m=0;break e}i:{re=t[G+8>>2],Y=t[G>>2];a:{if(re>>>0<=Y>>>0){A=t[G+4>>2],H=t[G+12>>2];break a}if(A=t[G+4>>2],H=t[G+12>>2],A>>>0>>0)break i}t[O+120>>2]=H-A,t[O+124>>2]=0-(A>>>0>H>>>0),t[O+112>>2]=re-Y,t[O+116>>2]=0-(Y>>>0>re>>>0),vt(y,1,26065,O+112|0),m=0;break e}m=t[x+96>>2];i:{if(M=t[x+92>>2],M){if(m)break i;m=0}t[O+4>>2]=m,t[O>>2]=M,vt(y,1,27071,O),m=0;break e}i:{se=t[x+84>>2];a:{if(se>>>0>Y>>>0||(he=t[x+88>>2],he>>>0>A>>>0)||(me=M,M=M+se|0,Y>>>0>=(0-(me>>>0>M>>>0?1:S)|M)>>>0))break a;if(M=m,m=m+he|0,(0-(M>>>0>m>>>0?1:S)|m)>>>0>A>>>0)break i}m=0,vt(y,1,4743,0);break e}i:{if(t[x+224>>2]||(m=t[x+216>>2],!m)||(S=t[x+220>>2],!S)||(M=re-Y|0,A=H-A|0,(M|0)==(m|0)&(A|0)==(S|0)))break i;t[O+108>>2]=A,t[O+104>>2]=M,t[O+100>>2]=S,t[O+96>>2]=m,vt(y,1,25343,O+96|0),m=0;break e}if(S=oi(Q,52),t[G+24>>2]=S,!S)break r;i:{if(!t[G+16>>2])break i;if(m=O+152|0,ue(u+36|0,m,1),M=t[O+152>>2],Q=M>>>7|0,t[S+32>>2]=Q,re=(M&127)+1|0,t[S+24>>2]=re,M=t[x+224>>2],ue(u+37|0,m,1),t[S>>2]=t[O+152>>2],ue(u+38|0,m,1),A=t[O+152>>2],t[S+4>>2]=A,m=0,Y=t[S>>2],Y-256>>>0<4294967041){H=0;break t}if(!A){H=0;break t}if(H=0,A>>>0>255)break t;if(A=t[S+24>>2],A>>>0>31)break n;if(t[S+36>>2]=0,t[S+40>>2]=t[x+160>>2],H=1,ln[G+16>>2]<=1)break i;for(Q=M?0:Q,M=M?0:re,u=u+39|0;;){if(ue(u,O+152|0,1),Y=t[O+152>>2],A=Y>>>7|0,t[S+84>>2]=A,Y=(Y&127)+1|0,t[S+76>>2]=Y,re=u+1|0,(M|0)==(Y|0)&(A|0)==(Q|0)|(t[x+224>>2]|xe[x+188|0]&4)||(t[O+84>>2]=A,t[O+80>>2]=Y,t[O+76>>2]=H,t[O+72>>2]=Q,t[O+68>>2]=M,t[O+64>>2]=H,vt(y,2,26301,O- -64|0)),A=O+152|0,ue(re,A,1),t[S+52>>2]=t[O+152>>2],ue(u+2|0,A,1),A=t[O+152>>2],t[S+56>>2]=A,Y=t[S+52>>2],!A|Y-256>>>0<4294967041|A>>>0>=256)break t;if(A=t[S+76>>2],A>>>0>=32)break n;if(u=u+3|0,t[S+88>>2]=0,t[S+92>>2]=t[x+160>>2],S=S+52|0,H=H+1|0,!(H>>>0>2]))break}}if(m=0,M=t[x+92>>2],!M||(A=t[x+96>>2],!A))break e;if(H=M-1|0,re=t[x+84>>2],S=t[G+8>>2]-re|0,Y=S,u=H+S|0,se=M>>31,Oe=se-!M|0,S=Oe+(S>>31)|0,u=I0(u,u>>>0>>0?S+1|0:S,M,se),t[x+104>>2]=u,Y=A-1|0,he=t[x+88>>2],S=t[G+12>>2]-he|0,me=S,Q=Y+S|0,_e=A>>31,Ne=_e-!A|0,S=Ne+(S>>31)|0,S=I0(Q,Q>>>0>>0?S+1|0:S,A,_e),t[x+108>>2]=S,!(!(!u|!S)&u>>>0<=65535/(S>>>0)>>>0)){t[O+20>>2]=S,t[O+16>>2]=u,vt(y,1,25457,O+16|0);break e}Q=De(u,S);i:{if(xe[x+68|0]&2){t[x+28>>2]=(t[x+28>>2]-re>>>0)/(M>>>0),t[x+32>>2]=(t[x+32>>2]-he>>>0)/(A>>>0),u=H,S=t[x+36>>2]-re|0,H=S,u=u+S|0,S=(S>>31)+Oe|0,kt=x,Rt=I0(u,u>>>0>>0?S+1|0:S,M,se),t[kt+36>>2]=Rt,S=t[x+40>>2]-he|0,M=S,u=S+Y|0,S=(S>>31)+Ne|0,kt=x,Rt=I0(u,u>>>0>>0?S+1|0:S,A,_e),t[kt+40>>2]=Rt;break i}t[x+28>>2]=0,t[x+32>>2]=0,t[x+40>>2]=S,t[x+36>>2]=u}if(u=oi(Q,5644),t[x+156>>2]=u,!u){vt(y,1,6466,0);break e}if(u=oi(t[G+16>>2],1080),t[t[x+12>>2]+5584>>2]=u,!t[t[x+12>>2]+5584>>2]){vt(y,1,6466,0);break e}if(u=oi(10,20),t[t[x+12>>2]+5616>>2]=u,u=t[x+12>>2],!t[u+5616>>2]){vt(y,1,6466,0);break e}if(t[u+5624>>2]=10,u=oi(10,20),t[t[x+12>>2]+5628>>2]=u,u=t[x+12>>2],!t[u+5628>>2]){vt(y,1,6466,0);break e}t[u+5636>>2]=10,S=t[G+16>>2];i:{if(!S)break i;if(M=t[G+24>>2],u=0,(S|0)!=1)for(A=S&-2;H=M+De(u,52)|0,t[H+32>>2]||(t[(t[t[x+12>>2]+5584>>2]+De(u,1080)|0)+1076>>2]=1<>2]-1),H=u|1,Y=M+De(H,52)|0,t[Y+32>>2]||(t[(t[t[x+12>>2]+5584>>2]+De(H,1080)|0)+1076>>2]=1<>2]-1),u=u+2|0,m=m+2|0,(A|0)!=(m|0););if(!(S&1)||(m=M+De(u,52)|0,t[m+32>>2]))break i;t[(t[t[x+12>>2]+5584>>2]+De(u,1080)|0)+1076>>2]=1<>2]-1}if(Q)for(u=t[x+156>>2],m=0;;){if(S=oi(t[G+16>>2],1080),t[u+5584>>2]=S,!S){m=0,vt(y,1,6466,0);break e}if(u=u+5644|0,m=m+1|0,(Q|0)==(m|0))break}if(t[x+8>>2]=4,u=0,$e=t[G+16>>2],$e)for(y=t[x+88>>2],m=t[x+96>>2],M=y+De(m,t[x+108>>2]-1|0)|0,S=0,me=m,m=m+M|0,m=0-(me>>>0>m>>>0?1:S)|m,S=t[G+12>>2],se=m>>>0>>0?m:S,M=t[x+84>>2],S=t[x+92>>2],x=M+De(S,t[x+104>>2]-1|0)|0,m=0,x=x+S|0,x=0-(x>>>0>>0?1:m)|x,m=t[G+8>>2],he=x>>>0>>0?x:m,x=t[G+4>>2],Y=x>>>0>>0?y:x,x=t[G>>2],Q=x>>>0>>0?M:x,x=t[G+24>>2];M=t[x+4>>2],G=M-1|0,_e=0-!M|0,S=_e,m=G+Y|0,S=m>>>0>>0?S+1|0:S,Oe=c0(m,S,M,0),t[x+20>>2]=Oe,A=t[x>>2],re=A-1|0,me=0-!A|0,m=me,y=Q+re|0,m=y>>>0>>0?m+1|0:m,Ne=c0(y,m,A,0),t[x+16>>2]=Ne,y=t[x+40>>2],S=y&31,(y&63)>>>0>=32?(m=-1<>>32-S,S=-1<>>0>G>>>0?S+1|0:S,M=c0(G,S,M,0)-Oe|0,S=m,m=M+H|0,S=m>>>0>>0?S+1|0:S,M=m,m=y&31,t[x+12>>2]=(y&63)>>>0>=32?S>>>m|0:((1<>>m,m=me,S=re+he|0,m=S>>>0>>0?m+1|0:m,m=c0(S,m,A,0)-Ne|0,S=Ze,m=m+H|0,S=m>>>0>>0?S+1|0:S,M=m,m=y&31,t[x+8>>2]=(y&63)>>>0>=32?S>>>m|0:((1<>>m,x=x+52|0,u=u+1|0,($e|0)!=(u|0););m=1;break e}t[O+144>>2]=m,vt(y,1,17673,O+144|0),m=0;break e}m=0,t[G+16>>2]=0,vt(y,1,6466,0);break e}t[O+52>>2]=A,t[O+48>>2]=H,vt(y,1,27379,O+48|0);break e}t[O+40>>2]=A,t[O+36>>2]=Y,t[O+32>>2]=H,vt(y,1,25677,O+32|0)}return Nt=O+160|0,m|0}function yp(x,u,m,y,S,M){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0;var O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0;e:{if((m|0)==1)break e;me=(y|0)!=0,_e=me+m|0,se=_e>>>1|0,re=m-se|0;t:{n:{if((M|0)!=8){if(!m)break t;if(!M)break n;for(O=7-M|0,Oe=((O>>>0<=7?O:0)<<2)+4|0,Ne=M&-4,Q=M&3,$e=M<<2;;){if(Y=G<<3,he=De(S,G),O=0,H=0,M>>>0>=4)for(;t[(O+Y<<2)+u>>2]=t[(O+he<<2)+x>>2],A=O|1,t[(A+Y<<2)+u>>2]=t[(A+he<<2)+x>>2],A=O|2,t[(A+Y<<2)+u>>2]=t[(A+he<<2)+x>>2],A=O|3,t[(Y+A<<2)+u>>2]=t[(A+he<<2)+x>>2],O=O+4|0,H=H+4|0,(Ne|0)!=(H|0););if(H=0,Q)for(;A=O,t[(O+Y<<2)+u>>2]=t[(O+he<<2)+x>>2],O=O+1|0,H=H+1|0,(Q|0)!=(H|0););if(A>>>0<=6&&pi(((G<<5)+$e|0)+u|0,0,Oe),G=G+1|0,(G|0)==(m|0))break}break t}if(!m)break t;if((m|0)!=1)for(he=m&-2;A=(De(S,O)<<2)+x|0,H=t[A+4>>2],G=(O<<5)+u|0,t[G>>2]=t[A>>2],t[G+4>>2]=H,H=t[A+28>>2],t[G+24>>2]=t[A+24>>2],t[G+28>>2]=H,H=t[A+20>>2],t[G+16>>2]=t[A+16>>2],t[G+20>>2]=H,H=t[A+12>>2],t[G+8>>2]=t[A+8>>2],t[G+12>>2]=H,A=O|1,G=(A<<5)+u|0,A=(De(S,A)<<2)+x|0,H=t[A+28>>2],t[G+24>>2]=t[A+24>>2],t[G+28>>2]=H,H=t[A+20>>2],t[G+16>>2]=t[A+16>>2],t[G+20>>2]=H,H=t[A+12>>2],t[G+8>>2]=t[A+8>>2],t[G+12>>2]=H,H=t[A+4>>2],t[G>>2]=t[A>>2],t[G+4>>2]=H,O=O+2|0,Y=Y+2|0,(he|0)!=(Y|0););if(!(m&1))break t;A=(O<<5)+u|0,O=(De(S,O)<<2)+x|0,G=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=G,G=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=G,G=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=G,G=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=G;break t}pi(u,0,m<<5)}if(G=0,he=!y,A=(he<<5)+u|0,O=(((y|0)!=0)<<5)+u|0,y=O+32|0,Y=se-me|0,Y=(re|0)<(Y|0)?re:Y,ba(A,y,re,Y,Ye(-1.5861343145370483)),H=A+32|0,Q=re-he|0,Q=(Q|0)>(se|0)?se:Q,ba(O,H,se,Q,Ye(-.05298011749982834)),ba(A,y,re,Y,Ye(.8829110860824585)),ba(O,H,se,Q,Ye(.4435068666934967)),re)for(;y=O+(G<<6)|0,Ue[y>>2]=Ue[y>>2]*Ye(1.2301740646362305),Ue[y+4>>2]=Ue[y+4>>2]*Ye(1.2301740646362305),Ue[y+8>>2]=Ue[y+8>>2]*Ye(1.2301740646362305),Ue[y+12>>2]=Ue[y+12>>2]*Ye(1.2301740646362305),Ue[y+16>>2]=Ue[y+16>>2]*Ye(1.2301740646362305),Ue[y+20>>2]=Ue[y+20>>2]*Ye(1.2301740646362305),Ue[y+24>>2]=Ue[y+24>>2]*Ye(1.2301740646362305),Ue[y+28>>2]=Ue[y+28>>2]*Ye(1.2301740646362305),G=G+1|0,(re|0)!=(G|0););t:{n:{if(_e>>>0>=2){for(G=0;y=(G<<6)+A|0,Ue[y>>2]=Ue[y>>2]*Ye(.8128930926322937),Ue[y+4>>2]=Ue[y+4>>2]*Ye(.8128930926322937),Ue[y+8>>2]=Ue[y+8>>2]*Ye(.8128930926322937),Ue[y+12>>2]=Ue[y+12>>2]*Ye(.8128930926322937),Ue[y+16>>2]=Ue[y+16>>2]*Ye(.8128930926322937),Ue[y+20>>2]=Ue[y+20>>2]*Ye(.8128930926322937),Ue[y+24>>2]=Ue[y+24>>2]*Ye(.8128930926322937),Ue[y+28>>2]=Ue[y+28>>2]*Ye(.8128930926322937),G=G+1|0,(se|0)!=(G|0););if((M|0)!=8)break n;y=se-1|0,M=se&3;r:{if(!M){G=se,O=x;break r}for(Y=0,H=S<<2,G=se,O=x;Q=t[A+4>>2],t[O>>2]=t[A>>2],t[O+4>>2]=Q,Q=t[A+28>>2],t[O+24>>2]=t[A+24>>2],t[O+28>>2]=Q,Q=t[A+20>>2],t[O+16>>2]=t[A+16>>2],t[O+20>>2]=Q,Q=t[A+12>>2],t[O+8>>2]=t[A+8>>2],t[O+12>>2]=Q,A=A- -64|0,G=G-1|0,O=O+H|0,Y=Y+1|0,(M|0)!=(Y|0););}if(y>>>0<3)break t;for(M=S<<2;y=t[A+4>>2],t[O>>2]=t[A>>2],t[O+4>>2]=y,y=t[A+28>>2],t[O+24>>2]=t[A+24>>2],t[O+28>>2]=y,y=t[A+20>>2],t[O+16>>2]=t[A+16>>2],t[O+20>>2]=y,y=t[A+12>>2],t[O+8>>2]=t[A+8>>2],t[O+12>>2]=y,y=M+O|0,O=t[A+92>>2],t[y+24>>2]=t[A+88>>2],t[y+28>>2]=O,O=t[A+84>>2],t[y+16>>2]=t[A+80>>2],t[y+20>>2]=O,O=t[A+76>>2],t[y+8>>2]=t[A+72>>2],t[y+12>>2]=O,O=t[A+68>>2],t[y>>2]=t[A+64>>2],t[y+4>>2]=O,O=t[A+156>>2],y=y+M|0,t[y+24>>2]=t[A+152>>2],t[y+28>>2]=O,O=t[A+148>>2],t[y+16>>2]=t[A+144>>2],t[y+20>>2]=O,O=t[A+140>>2],t[y+8>>2]=t[A+136>>2],t[y+12>>2]=O,O=t[A+132>>2],t[y>>2]=t[A+128>>2],t[y+4>>2]=O,O=t[A+220>>2],y=y+M|0,t[y+24>>2]=t[A+216>>2],t[y+28>>2]=O,O=t[A+212>>2],t[y+16>>2]=t[A+208>>2],t[y+20>>2]=O,O=t[A+204>>2],t[y+8>>2]=t[A+200>>2],t[y+12>>2]=O,O=t[A+196>>2],t[y>>2]=t[A+192>>2],t[y+4>>2]=O,O=y+M|0,A=A+256|0,G=G-4|0,!!G;);break t}if((M|0)==8)break t}Op(u,x,re,se,S,he,M);break e}if(!re)break e;if(O=(8-(he<<3)<<2)+u|0,A=(De(S,se)<<2)+x|0,x=re&3,x)for(u=0,y=S<<2;M=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=M,M=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=M,M=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=M,M=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=M,O=O- -64|0,re=re-1|0,A=y+A|0,u=u+1|0,(x|0)!=(u|0););if((se^-1)+m>>>0<3)break e;for(u=S<<2;x=t[O+4>>2],t[A>>2]=t[O>>2],t[A+4>>2]=x,x=t[O+28>>2],t[A+24>>2]=t[O+24>>2],t[A+28>>2]=x,x=t[O+20>>2],t[A+16>>2]=t[O+16>>2],t[A+20>>2]=x,x=t[O+12>>2],t[A+8>>2]=t[O+8>>2],t[A+12>>2]=x,m=t[O+92>>2],x=u+A|0,t[x+24>>2]=t[O+88>>2],t[x+28>>2]=m,m=t[O+84>>2],t[x+16>>2]=t[O+80>>2],t[x+20>>2]=m,m=t[O+76>>2],t[x+8>>2]=t[O+72>>2],t[x+12>>2]=m,m=t[O+68>>2],t[x>>2]=t[O+64>>2],t[x+4>>2]=m,m=t[O+156>>2],x=x+u|0,t[x+24>>2]=t[O+152>>2],t[x+28>>2]=m,m=t[O+148>>2],t[x+16>>2]=t[O+144>>2],t[x+20>>2]=m,m=t[O+140>>2],t[x+8>>2]=t[O+136>>2],t[x+12>>2]=m,m=t[O+132>>2],t[x>>2]=t[O+128>>2],t[x+4>>2]=m,m=t[O+220>>2],x=x+u|0,t[x+24>>2]=t[O+216>>2],t[x+28>>2]=m,m=t[O+212>>2],t[x+16>>2]=t[O+208>>2],t[x+20>>2]=m,m=t[O+204>>2],t[x+8>>2]=t[O+200>>2],t[x+12>>2]=m,m=t[O+196>>2],t[x>>2]=t[O+192>>2],t[x+4>>2]=m,A=x+u|0,O=O+256|0,re=re-4|0,!!re;);}}function g5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=Ye(0),O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=Ye(0),$e=0,Ze=0,kt=Ye(0),Rt=Ye(0),jt=0,Yt=0,en=0,un=0;en=Nt-16|0,Nt=en,me=t[x+156>>2],re=t[x+72>>2],H=t[re+16>>2],O=t[re+24>>2],S=t[O+24>>2],A=t[O+4>>2],G=t[O>>2],O=t[u+56>>2],u=t[u+60>>2];e:{t:{if(se=t[x+108>>2],!se){se=0;break t}if(Y=t[x+104>>2],!Y)break t;for(Ne=Ye(+(O>>>0)+ +(u|0)*4294967296),_e=De(se,Y),y=1,Q=dt[x+180|0]&1?148:149,Ze=+(De(S,H)>>>0),kt=Ye(De(G,A)<<3>>>0),O=0;;){if(G=O+1|0,S=0,y){for(;;){u=S,S=u+1|0,M=Ye(Zt[Q|0](me)),$e=t[me+8>>2];n:{if(!$e)break n;if(Rt=Ye(M/Ye($e>>>0)),H=t[x+84>>2],Y=t[x+92>>2],y=H+De(Y,S)|0,A=t[re+8>>2],y=(y|0)<(A|0)?y:A,A=H+De(u,Y)|0,u=t[re>>2],jt=Ze*+(y-((u|0)<(A|0)?A:u)>>>0),y=t[x+88>>2],H=t[x+96>>2],A=y+De(H,G)|0,u=t[re+12>>2],Y=(u|0)>(A|0)?A:u,A=y+De(O,H)|0,u=t[re+4>>2],jt=jt*+(Y-((u|0)<(A|0)?A:u)>>>0),y=me+20|0,($e|0)!=1)for(A=$e&-2,u=0;M=Ue[y>>2],M>Ye(0)&&(Ue[y>>2]=Ye(jt/+Ye(M*kt))-Rt),M=Ue[y+4>>2],M>Ye(0)&&(Ue[y+4>>2]=Ye(jt/+Ye(M*kt))-Rt),y=y+8|0,u=u+2|0,(A|0)!=(u|0););if(!($e&1)||(M=Ue[y>>2],!(M>Ye(0))))break n;Ue[y>>2]=Ye(jt/+Ye(M*kt))-Rt}if(me=me+5644|0,Y=t[x+104>>2],!(Y>>>0>S>>>0))break}se=t[x+108>>2],y=Y}else y=0;if(O=G,!(se>>>0>O>>>0))break}if(O=t[x+156>>2],!se){se=0;break e}if(!Y)break e;for(kt=Ye(Ne/Ye(_e>>>0)),Rt=Ye(kt+Ye(2)),S=O;;){for(Oe=0;;){M=Ue[S+20>>2];n:{if(!(M>Ye(0))||(M=Ye(M-kt),Ue[S+20>>2]=M,!(M>2]=1106247680}y=S+24|0,A=t[S+8>>2];n:{if(A-3>>>0>4294967293)break n;if((A|0)!=3)for(G=(A&-2)-4|0,Q=0;;){u=Q,M=Ue[y>>2];r:{if(!(M>Ye(0))||(Ne=Ye(M-kt),Ue[y>>2]=Ne,M=Ue[y-4>>2],!(Ne>2]=M+Ye(20)}M=Ue[y+4>>2];r:{if(!(M>Ye(0))||(Ne=Ye(M-kt),Ue[y+4>>2]=Ne,M=Ue[y>>2],!(Ne>2]=M+Ye(20)}if(Q=u+2|0,y=y+8|0,(u|0)==(G|0))break}if(!(A&1))break n;M=Ue[y>>2];r:{if(!(M>Ye(0))||(Ne=Ye(M-kt),Ue[y>>2]=Ne,M=Ue[y-4>>2],!(Ne>2]=M+Ye(20)}y=y+4|0}M=Ue[y>>2];n:{if(!(M>Ye(0))||(Ne=Ye(M-Rt),Ue[y>>2]=Ne,M=Ue[y-4>>2],!(Ne>2]=M+Ye(20)}if(S=S+5644|0,Oe=Oe+1|0,(Oe|0)==(Y|0))break}if(he=he+1|0,(he|0)==(se|0))break}break e}O=t[x+156>>2]}if(Oe=t[re+16>>2],Oe){for(u=t[x+96>>2],$e=u-1|0,_e=0-!u|0,u=t[x+92>>2],Q=u-1|0,Y=0-!u|0,y=t[re+24>>2],u=0,A=0,G=0;H=A,S=G,un=t[y+24>>2],A=_e,G=t[y+4>>2],re=G+$e|0,A=c0(re,G>>>0>re>>>0?A+1|0:A,G,0),re=t[y>>2],he=re+Q|0,G=Y,Yt=H,H=N0(un,0,N0(A,0,c0(he,re>>>0>he>>>0?G+1|0:G,re,0),0),Gi),A=Yt+H|0,G=Gi+S|0,G=A>>>0>>0?G+1|0:G,y=y+52|0,u=u+1|0,(Oe|0)!=(u|0););Ze=(+(A>>>0)+ +(G>>>0)*4294967296)*1.4*.125;e:{if(Ze<18446744073709552e3&Ze>=0){G=Rr(Ze)>=1?~~(Ze>0?R1(F(Ze*23283064365386963e-26),4294967295):He((Ze-+(~~Ze>>>0>>>0))*23283064365386963e-26))>>>0:0,u=~~Ze>>>0;break e}G=0,u=0}A=u+500|0,A>>>0<500&&(G=G+1|0)}else A=500,G=0;if(se=De(t[x+104>>2],se),se){if(Q=0,y=O,u=0,se>>>0>=4)for(H=se&-4,me=0;S=t[y+5592>>2],S=u>>>0>S>>>0?u:S,u=t[y+11236>>2],S=u>>>0>>0?S:u,u=t[y+16880>>2],S=u>>>0>>0?S:u,u=t[y+22524>>2],u=u>>>0>>0?S:u,y=y+22576|0,me=me+4|0,(H|0)!=(me|0););if(H=se&3,H)for(;S=t[y+5592>>2],u=u>>>0>S>>>0?u:S,y=y+5644|0,Q=Q+1|0,(H|0)!=(Q|0););H=De(u,12)}else H=0;if((Qn[x+80>>1]-3&65535)>>>0>=4){if(he=t[t[x+72>>2]+16>>2],Yt=he-1|0,y=12,!(!se|!he)){for($e=he&-2,_e=he&1,un=he-1|0,me=0,Y=0;;){if(re=t[(De(Y,5644)+O|0)+5584>>2],y=0,Oe=0,un)for(;u=5,Q=5,S=re+De(y,1080)|0,dt[S|0]&1&&(Q=t[S+4>>2]+5|0),S=re+De(y|1,1080)|0,dt[S|0]&1&&(u=t[S+4>>2]+5|0),S=Q>>>0>>0?me:Q,me=u>>>0>>0?S:u,y=y+2|0,Oe=Oe+2|0,($e|0)!=(Oe|0););if(_e&&(u=5,S=re+De(y,1080)|0,dt[S|0]&1&&(u=t[S+4>>2]+5|0),me=u>>>0>>0?me:u),Y=Y+1|0,(se|0)==(Y|0))break}for(re=he&-2,$e=he&1,S=0,he=0;;){if(Oe=t[(De(he,5644)+O|0)+5584>>2],y=0,Y=0,un)for(;u=5,Q=5,_e=Oe+De(y,1080)|0,dt[_e|0]&1&&(Q=t[_e+4>>2]+5|0),_e=Oe+De(y|1,1080)|0,dt[_e|0]&1&&(u=t[_e+4>>2]+5|0),S=S>>>0>Q>>>0?S:Q,S=u>>>0>>0?S:u,y=y+2|0,Y=Y+2|0,(re|0)!=(Y|0););if($e&&(u=5,y=Oe+De(y,1080)|0,dt[y|0]&1&&(u=t[y+4>>2]+5|0),S=u>>>0>>0?S:u),he=he+1|0,(se|0)==(he|0))break}y=(S+me|0)+12|0}H=De(y,Yt)+H|0}Yt=G+1|0;e:{t:{if(se){_e=se&3,u=0;n:{if(se>>>0<4){y=0;break n}for(Y=se&-4,y=0,Q=0;S=t[O+420>>2],y=y>>>0>S>>>0?y:S,S=t[O+6064>>2],y=y>>>0>S>>>0?y:S,S=t[O+11708>>2],y=y>>>0>S>>>0?y:S,S=t[O+17352>>2],y=y>>>0>S>>>0?y:S,O=O+22576|0,Q=Q+4|0,(Y|0)!=(Q|0););}if(_e)for(;S=t[O+420>>2],y=y>>>0>S>>>0?y:S,O=O+5644|0,u=u+1|0,(_e|0)!=(u|0););if(S=(De(y,9)+H|0)+13|0,!t[x+60>>2])break e;for(H=x+80|0,y=0,u=0;O=yk(t[x+72>>2],H,u),y=y>>>0>O>>>0?y:O,u=u+1|0,u>>>0>2],t[x+108>>2])>>>0;);break t}if(y=0,S=H+13|0,!t[x+60>>2])break e}H=x- -64|0,O=De(y,5)+S|0,S=0,u=y+16381|0,S=u>>>0<16381?1:S,u=(De(c0(u,S,16382,0),6)+O|0)+1|0,t[H>>2]=u,S=u+O|0}u=S,u=u+A|0,G=S>>>0>u>>>0?Yt:G,S=u,u=!G&(u|0)==-1|(G|0)!=0,O=u?-1:S,u=u?0:G,t[x+48>>2]=O,G=si(O),t[x+44>>2]=G;e:{if(!G){t[en>>2]=(u&1048575)<<12|O>>>20,vt(m,1,16363,en),y=0;break e}if(y=1,!t[x+16>>2])break e;if(u=si(De(t[x+40>>2],6)),t[x+32>>2]=u,!u){y=0;break e}t[x+36>>2]=u}return Nt=en+16|0,y|0}function v4(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0;$e=Nt-16|0,Nt=$e,Rt=De(t[x+104>>2],t[x+108>>2]);e:{if(!Rt){y=1;break e}jt=t[x+208>>2];t:{n:{r:{for(;;){i:{if(t[x+204>>2]!=(y|0)){vt(m,1,3254,0);break i}if(Y=t[x+108>>2],re=t[x+104>>2],Yt=y+1|0,t[$e>>2]=Yt,t[$e+4>>2]=De(Y,re),vt(m,4,17849,$e),t[x+12>>2]=0,Y=t[x+208>>2],t[Y+12>>2]=t[(t[x+156>>2]+De(y,5644)|0)+5592>>2],t[x+8>>2]=0,!Wf(Y,t[x+204>>2],m))break i;a:{if(M=t[x+208>>2],se=t[t[M+24>>2]+16>>2],!se)break a;if(y=0,(Rt|0)==1){if(Y=t[t[jt+24>>2]+24>>2],re=t[t[t[jt+20>>2]>>2]+20>>2],O=0,se>>>0>=4)for(H=se&-4,Q=0;A=t[(Y+De(y,52)|0)+44>>2],G=re+De(y,76)|0,t[G+40>>2]=0,t[G+36>>2]=A,A=y|1,G=t[(Y+De(A,52)|0)+44>>2],A=re+De(A,76)|0,t[A+40>>2]=0,t[A+36>>2]=G,A=y|2,G=t[(Y+De(A,52)|0)+44>>2],A=re+De(A,76)|0,t[A+40>>2]=0,t[A+36>>2]=G,A=y|3,G=t[(Y+De(A,52)|0)+44>>2],A=re+De(A,76)|0,t[A+40>>2]=0,t[A+36>>2]=G,y=y+4|0,Q=Q+4|0,(H|0)!=(Q|0););if(se=se&3,!se)break a;for(;Q=t[(Y+De(y,52)|0)+44>>2],H=re+De(y,76)|0,t[H+40>>2]=0,t[H+36>>2]=Q,y=y+1|0,O=O+1|0,(se|0)!=(O|0););break a}for(;;){if(Lc(t[t[t[jt+20>>2]>>2]+20>>2]+De(y,76)|0)){if(y=y+1|0,M=t[x+208>>2],y>>>0>2]+16>>2])continue;break a}break}if(y=0,vt(m,1,3338,0),S)break n;break e}if(O=0,y=0,Y=t[M+24>>2],se=t[Y+16>>2],se)for(re=t[Y+24>>2],Y=t[t[t[M+20>>2]>>2]+20>>2];M=y,y=t[re+24>>2],y=(y>>>3|0)+((y&7)!=0)|0,y=M+De(De(t[Y+12>>2]-t[Y+4>>2]|0,t[Y+8>>2]-t[Y>>2]|0),(y|0)==3?4:y)|0,Y=Y+76|0,re=re+52|0,O=O+1|0,(se|0)!=(O|0););if(re=y,(Rt|0)!=1){a:{if(re>>>0>un>>>0){if(un=re,Y=Wi(S,re),Y)break a;S&&Gt(S),y=0,vt(m,1,5910,0);break e}if(Y=S,S)break a;y=0;break e}if(se=t[x+208>>2],y=t[se+24>>2],t[y+16>>2]){for(Ze=0,S=Y;;){Ne=t[y+24>>2]+De(Ze,52)|0,O=t[Ne>>2],Q=O>>31,H=O-1|0,me=t[y>>2],M=t[y+8>>2]-me|0,G=M,A=H+M|0,he=Q-!O|0,M=he+(M>>31)|0,M=I0(A,A>>>0>>0?M+1|0:M,O,Q),A=M,Oe=t[t[t[se+20>>2]>>2]+20>>2]+De(Ze,76)|0,_e=t[Oe+8>>2],M=t[Oe>>2],G=_e-M|0,kt=A-G|0,Cn=t[Ne+44>>2],he=(me>>31)+he|0,H=H+me|0,he=H>>>0>>0?he+1|0:he,me=M-I0(H,he,O,Q)|0,H=t[Oe+4>>2],O=t[Ne+4>>2],Q=t[y+4>>2],he=Q,y=O+Q|0,en=O>>31,Q=en+(Q>>31)|0,Q=y>>>0>>0?Q+1|0:Q,y=(De(A,H-I0(y-1|0,Q-!y|0,O,en)|0)+me<<2)+Cn|0,O=t[Oe+12>>2],Q=O-H|0,A=t[Ne+24>>2],me=A>>>3|0,Oe=A&7,he=me+((Oe|0)!=0)|0,A=(he|0)==3;a:{s:{o:{u:switch(he=A?4:he,(Oe||A?he:me)-1|0){case 1:break s;case 0:break o;case 3:break u;default:break a}if((O|0)==(H|0)|(M|0)==(_e|0))break a;for(A=G&-8,H=G&7,G=_e+(M^-1)|0,O=0;;){if(M=0,G>>>0>=7)for(;t[S>>2]=t[y>>2],t[S+4>>2]=t[y+4>>2],t[S+8>>2]=t[y+8>>2],t[S+12>>2]=t[y+12>>2],t[S+16>>2]=t[y+16>>2],t[S+20>>2]=t[y+20>>2],t[S+24>>2]=t[y+24>>2],t[S+28>>2]=t[y+28>>2],S=S+32|0,y=y+32|0,M=M+8|0,(A|0)!=(M|0););if(M=0,H)for(;t[S>>2]=t[y>>2],S=S+4|0,y=y+4|0,M=M+1|0,(H|0)!=(M|0););if(y=(kt<<2)+y|0,O=O+1|0,(Q|0)==(O|0))break}break a}if(O=(O|0)==(H|0)|(M|0)==(_e|0),t[Ne+32>>2]){if(O)break a;for(A=G&-8,H=G&7,G=_e+(M^-1)|0,O=0;;){if(M=0,G>>>0>=7)for(;dt[S|0]=t[y>>2],dt[S+1|0]=t[y+4>>2],dt[S+2|0]=t[y+8>>2],dt[S+3|0]=t[y+12>>2],dt[S+4|0]=t[y+16>>2],dt[S+5|0]=t[y+20>>2],dt[S+6|0]=t[y+24>>2],dt[S+7|0]=t[y+28>>2],y=y+32|0,S=S+8|0,M=M+8|0,(A|0)!=(M|0););if(M=0,H)for(;dt[S|0]=t[y>>2],y=y+4|0,S=S+1|0,M=M+1|0,(H|0)!=(M|0););if(y=(kt<<2)+y|0,O=O+1|0,(Q|0)==(O|0))break}break a}if(O)break a;for(A=G&-8,H=G&7,G=_e+(M^-1)|0,O=0;;){if(M=0,G>>>0>=7)for(;dt[S|0]=t[y>>2],dt[S+1|0]=t[y+4>>2],dt[S+2|0]=t[y+8>>2],dt[S+3|0]=t[y+12>>2],dt[S+4|0]=t[y+16>>2],dt[S+5|0]=t[y+20>>2],dt[S+6|0]=t[y+24>>2],dt[S+7|0]=t[y+28>>2],y=y+32|0,S=S+8|0,M=M+8|0,(A|0)!=(M|0););if(M=0,H)for(;dt[S|0]=t[y>>2],y=y+4|0,S=S+1|0,M=M+1|0,(H|0)!=(M|0););if(y=(kt<<2)+y|0,O=O+1|0,(Q|0)==(O|0))break}break a}if(O=(O|0)==(H|0)|(M|0)==(_e|0),t[Ne+32>>2]){if(O)break a;for(A=G&-8,H=G&7,G=_e+(M^-1)|0,O=0;;){if(M=0,G>>>0>=7)for(;tn[S>>1]=t[y>>2],tn[S+2>>1]=t[y+4>>2],tn[S+4>>1]=t[y+8>>2],tn[S+6>>1]=t[y+12>>2],tn[S+8>>1]=t[y+16>>2],tn[S+10>>1]=t[y+20>>2],tn[S+12>>1]=t[y+24>>2],tn[S+14>>1]=t[y+28>>2],S=S+16|0,y=y+32|0,M=M+8|0,(A|0)!=(M|0););if(M=0,H)for(;tn[S>>1]=t[y>>2],S=S+2|0,y=y+4|0,M=M+1|0,(H|0)!=(M|0););if(y=(kt<<2)+y|0,O=O+1|0,(Q|0)==(O|0))break}break a}if(O)break a;for(A=G&-8,H=G&7,G=_e+(M^-1)|0,O=0;;){if(M=0,G>>>0>=7)for(;tn[S>>1]=t[y>>2],tn[S+2>>1]=t[y+4>>2],tn[S+4>>1]=t[y+8>>2],tn[S+6>>1]=t[y+12>>2],tn[S+8>>1]=t[y+16>>2],tn[S+10>>1]=t[y+20>>2],tn[S+12>>1]=t[y+24>>2],tn[S+14>>1]=t[y+28>>2],S=S+16|0,y=y+32|0,M=M+8|0,(A|0)!=(M|0););if(M=0,H)for(;tn[S>>1]=t[y>>2],S=S+2|0,y=y+4|0,M=M+1|0,(H|0)!=(M|0););if(y=(kt<<2)+y|0,O=O+1|0,(Q|0)==(O|0))break}}if(Ze=Ze+1|0,y=t[se+24>>2],!(Ze>>>0>2]))break}se=t[x+208>>2]}if(!xp(se,Y,re))break t;S=Y}if(!is(x,u,m))break i;if(y=Yt,(Rt|0)!=(y|0))continue;break r}break}if(y=0,S)break n;break e}if(y=1,!S)break e}Gt(S);break e}y=0,vt(m,1,3291,0),Gt(Y)}return Nt=$e+16|0,y|0}function dl(x,u,m,y,S,M,O,A,G){var H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0;me=Nt-32|0,Nt=me,t[me+24>>2]=M,kt=t[(De(t[y+28>>2],76)+u|0)+28>>2],Ne=t[y+32>>2];e:{t:{if(t[y+40>>2]||(_e=kt+De(Ne,152)|0,!t[_e+24>>2]))break t;for(Y=_e+28|0;;){n:{if(t[Y+12>>2]==t[Y+4>>2]|t[Y+8>>2]==t[Y>>2])break n;if(u=t[y+36>>2],u>>>0>=ln[Y+24>>2]/40>>>0){vt(G,1,4787,0);break e}if(u=t[Y+20>>2]+De(u,40)|0,Lf(t[u+32>>2]),Lf(t[u+36>>2]),he=De(t[u+20>>2],t[u+16>>2]),!he)break n;if(u=t[u+24>>2],he>>>0>=8)for(re=he&-8,H=0;t[u+40>>2]=0,t[u+44>>2]=0,t[u+488>>2]=0,t[u+492>>2]=0,t[u+424>>2]=0,t[u+428>>2]=0,t[u+360>>2]=0,t[u+364>>2]=0,t[u+296>>2]=0,t[u+300>>2]=0,t[u+232>>2]=0,t[u+236>>2]=0,t[u+168>>2]=0,t[u+172>>2]=0,t[u+104>>2]=0,t[u+108>>2]=0,u=u+512|0,H=H+8|0,(re|0)!=(H|0););if(H=0,he=he&7,!he)break n;for(;t[u+40>>2]=0,t[u+44>>2]=0,u=u- -64|0,H=H+1|0,(he|0)!=(H|0););}if(Y=Y+36|0,Q=Q+1|0,!(Q>>>0>2]))break}}he=M;t:{if(!(xe[m|0]&2))break t;if(A>>>0<=5){vt(G,2,6788,0);break t}if(!(xe[M|0]==255&xe[M+1|0]==145)){vt(G,2,6830,0);break t}he=M+6|0,t[me+24>>2]=he}if(re=si(20),!re)break e;t:{if(dt[x+108|0]&1){$e=x+40|0,he=t[x+40>>2],_e=x+44|0;break t}if(xe[m+5640|0]&2){$e=m+5168|0,he=t[m+5168>>2],_e=m+5180|0;break t}t[me+28>>2]=(M+A|0)-he,$e=me+24|0,_e=me+28|0}if(x=t[_e>>2],t[re+12>>2]=0,t[re+16>>2]=0,t[re+8>>2]=he,t[re>>2]=he,t[re+4>>2]=x+he,!W(re,1)){na(re),x=t[re+8>>2]-t[re>>2]|0,C(re),u=x+he|0;t:{if(!(xe[m|0]&4))break t;if(t[$e>>2]+(t[_e>>2]-u|0)>>>0<=1){vt(G,2,7219,0);break t}if(!(xe[u|0]==255&xe[u+1|0]==146)){vt(G,2,7261,0);break t}u=u+2|0}t[_e>>2]=t[_e>>2]+(t[$e>>2]-u|0),t[$e>>2]=u,t[S>>2]=0,t[O>>2]=t[me+24>>2]-M,jt=1;break e}if(Rt=kt+De(Ne,152)|0,t[Rt+24>>2])for(x=Rt+28|0;;){u=t[y+36>>2],A=t[x+20>>2],kt=x;t:{if(t[x+12>>2]==t[x+4>>2]|t[x+8>>2]==t[x>>2]||(Ne=A+De(u,40)|0,Yt=De(t[Ne+20>>2],t[Ne+16>>2]),!Yt))break t;for(Y=t[Ne+24>>2],x=0;;){n:{r:{if(!t[Y+40>>2]){u=G4(re,t[Ne+32>>2],x,t[y+40>>2]+1|0);break r}u=W(re,1)}if(!u){t[Y+36>>2]=0;break n}if(!t[Y+40>>2]){for(u=0;A=u,u=u+1|0,!G4(re,t[Ne+36>>2],x,A););u=t[kt+28>>2],t[Y+32>>2]=3,t[Y+24>>2]=u,t[Y+28>>2]=(u-A|0)+1}u=1;r:{if(!W(re,1)||(u=2,!W(re,1)))break r;if(u=W(re,2),(u|0)!=3){u=u+3|0;break r}if(u=W(re,5),(u|0)!=31){u=u+6|0;break r}u=W(re,7)+37|0}for(t[Y+36>>2]=u,u=0;A=u,u=u+1|0,!!W(re,1););t[Y+32>>2]=A+t[Y+32>>2];r:{A=t[Y+40>>2];i:{if(!A){if(A=t[(t[m+5584>>2]+De(t[y+28>>2],1080)|0)+16>>2],!t[Y+48>>2]){if(u=Wi(t[Y>>2],240),!u)break r;t[Y>>2]=u,pi(u+De(t[Y+48>>2],24)|0,0,240),t[Y+48>>2]=10}u=t[Y>>2],t[u>>2]=0,t[u+4>>2]=0,t[u+16>>2]=0,t[u+20>>2]=0,t[u+8>>2]=0,t[u+12>>2]=0,t[u+12>>2]=A&4?1:A&1?10:109,Q=0;break i}if(u=t[Y>>2],Q=A-1|0,H=u+De(Q,24)|0,t[H+4>>2]!=t[H+12>>2])break i;if(H=t[(t[m+5584>>2]+De(t[y+28>>2],1080)|0)+16>>2],Q=t[Y+48>>2],Q>>>0>>0){if(Q=Q+10|0,u=Wi(u,De(Q,24)),!u)break r;t[Y>>2]=u,pi(u+De(t[Y+48>>2],24)|0,0,240),t[Y+48>>2]=Q,u=t[Y>>2]}u=De(A,24)+u|0,t[u>>2]=0,t[u+4>>2]=0,t[u+16>>2]=0,t[u+20>>2]=0,t[u+8>>2]=0,t[u+12>>2]=0,Q=1;a:{if(H&4||(Q=109,!(H&1)))break a;Q=t[u-12>>2],Q=(Q|0)==1||(Q|0)==10?2:1}t[u+12>>2]=Q,Q=A}if(A=t[Y+36>>2],xe[(t[m+5584>>2]+De(t[y+28>>2],1080)|0)+16|0]&64)for(;;){if(Ze=De(Q,24),se=Q?A:1,t[(Ze+t[Y>>2]|0)+16>>2]=se,Oe=t[Y+32>>2],H=0,u=A,se>>>0>=2)for(;H=H+1|0,se=u>>>0>3,u=u>>>1|0,!!se;);if(u=H+Oe|0,u>>>0>=33){t[me+16>>2]=u,vt(G,1,27512,me+16|0);break r}if(H=W(re,u),u=t[Y>>2],se=Ze+u|0,t[se+20>>2]=H,A=A-t[se+16>>2]|0,(A|0)<=0)break n;if(Oe=t[(t[m+5584>>2]+De(t[y+28>>2],1080)|0)+16>>2],H=t[Y+48>>2],H>>>0>>0){if(H=H+10|0,u=Wi(u,De(H,24)),!u)break r;t[Y>>2]=u,pi(u+De(t[Y+48>>2],24)|0,0,240),t[Y+48>>2]=H,u=t[Y>>2]}Q=Q+1|0,H=De(Q,24)+u|0,t[H>>2]=0,t[H+4>>2]=0,t[H+16>>2]=0,t[H+20>>2]=0,t[H+8>>2]=0,t[H+12>>2]=0,se=1;i:{if(Oe&4||(se=109,!(Oe&1)))break i;u=t[(u+Ze|0)+12>>2],se=(u|0)==1||(u|0)==10?2:1}t[H+12>>2]=se}for(;;){if(Ze=De(Q,24),H=Ze+t[Y>>2]|0,u=t[H+12>>2]-t[H+4>>2]|0,u=(u|0)<(A|0)?u:A,t[H+16>>2]=u,se=t[Y+32>>2],H=0,u>>>0>=2)for(;H=H+1|0,Oe=u>>>0>3,u=u>>>1|0,!!Oe;);if(u=H+se|0,u>>>0>=33){t[me>>2]=u,vt(G,1,27512,me);break r}if(H=W(re,u),u=t[Y>>2],se=Ze+u|0,t[se+20>>2]=H,A=A-t[se+16>>2]|0,(A|0)<=0)break n;if(Oe=t[(t[m+5584>>2]+De(t[y+28>>2],1080)|0)+16>>2],H=t[Y+48>>2],H>>>0>>0){if(H=H+10|0,u=Wi(u,De(H,24)),!u)break r;t[Y>>2]=u,pi(u+De(t[Y+48>>2],24)|0,0,240),t[Y+48>>2]=H,u=t[Y>>2]}Q=Q+1|0,H=De(Q,24)+u|0,t[H>>2]=0,t[H+4>>2]=0,t[H+16>>2]=0,t[H+20>>2]=0,t[H+8>>2]=0,t[H+12>>2]=0,se=1;i:{if(Oe&4||(se=109,!(Oe&1)))break i;u=t[(u+Ze|0)+12>>2],se=(u|0)==1||(u|0)==10?2:1}t[H+12>>2]=se}}C(re);break e}if(Y=Y- -64|0,x=x+1|0,(Yt|0)==(x|0))break}}if(x=kt+36|0,en=en+1|0,!(en>>>0>2]))break}if(!na(re)){C(re);break e}x=t[re+8>>2]-t[re>>2]|0,C(re),u=x+he|0;t:{if(!(xe[m|0]&4))break t;if(t[$e>>2]+(t[_e>>2]-u|0)>>>0<=1){vt(G,2,7219,0);break t}if(!(xe[u|0]==255&xe[u+1|0]==146)){vt(G,2,7261,0);break t}u=u+2|0}t[_e>>2]=t[_e>>2]+(t[$e>>2]-u|0),t[$e>>2]=u,jt=1,t[S>>2]=1,t[O>>2]=t[me+24>>2]-M}return Nt=me+32|0,jt}function wp(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=Ye(0),se=0,he=0;G=Nt-48|0,Nt=G,t[x+8>>2]=1;e:{t:{n:{if((js(u,G+40|0,2,m)|0)!=2||(ue(G+40|0,G+44|0,2),t[G+44>>2]!=65359))break n;if(t[x+8>>2]=2,y=t[u+56>>2],S=y-2|0,y=t[u+60>>2]-(y>>>0<2)|0,M=t[x+200>>2],t[M>>2]=S,t[M+4>>2]=y,t[G+16>>2]=S,t[G+20>>2]=y,vt(m,4,24106,G+16|0),M=t[x+200>>2],Y=t[M>>2],O=t[M+24>>2],y=O+1|0,S=t[M+32>>2],y>>>0<=S>>>0){S=t[M+28>>2];break t}re=Ye(Ye(S>>>0)+Ye(100));r:{if(re=Ye(0)){y=~~re>>>0;break r}y=0}if(t[M+32>>2]=y,S=Wi(t[M+28>>2],De(y,24)),S){t[M+28>>2]=S,O=t[M+24>>2],y=O+1|0;break t}Gt(t[M+28>>2]),t[M+32>>2]=0,t[M+24>>2]=0,t[M+28>>2]=0,vt(m,1,6392,0)}vt(m,1,27988,0),x=0;break e}if(S=De(O,24)+S|0,t[S+16>>2]=2,t[S+8>>2]=Y,t[S+12>>2]=Y>>31,tn[S>>1]=65359,t[M+24>>2]=y,(js(u,t[x+16>>2],2,m)|0)!=2){vt(m,1,4334,0),x=0;break e}ue(t[x+16>>2],G+40|0,2);t:{n:{if(S=t[G+40>>2],(S|0)!=65424){for(;;){if(O=30560,S>>>0<=65279){t[G>>2]=S,vt(m,1,4131,G),x=0;break e}for(;y=O,M=t[y>>2],!!(M&&(O=y+12|0,(M|0)!=(S|0))););r:{i:{if(M)break i;H=2,vt(m,2,6340,0),O=4334;a:{s:{if((js(u,t[x+16>>2],2,m)|0)!=2)break s;for(;;){if(ue(t[x+16>>2],G+44|0,2),M=30560,S=t[G+44>>2],S>>>0>=65280){for(;y=M,Q=t[y>>2],!!(Q&&(M=y+12|0,(S|0)!=(Q|0))););if(!(t[y+4>>2]&t[x+8>>2])){O=8880;break s}if(Q){if((Q|0)==65424){t[G+40>>2]=65424;break r}if(Y=t[u+56>>2],M=t[x+200>>2],y=t[M+24>>2],S=y+1|0,O=t[M+32>>2],S>>>0<=O>>>0){O=t[M+28>>2];break a}re=Ye(Ye(O>>>0)+Ye(100));o:{if(re=Ye(0)){y=~~re>>>0;break o}y=0}if(t[M+32>>2]=y,O=Wi(t[M+28>>2],De(y,24)),O){t[M+28>>2]=O,y=t[M+24>>2],S=y+1|0;break a}Gt(t[M+28>>2]),t[M+32>>2]=0,t[M+24>>2]=0,t[M+28>>2]=0,O=6392;break s}H=H+2|0}if((js(u,t[x+16>>2],2,m)|0)!=2)break}}vt(m,1,O,0),vt(m,1,20365,0),x=0;break e}for(y=De(y,24)+O|0,t[y+16>>2]=H,O=Y-H|0,t[y+8>>2]=O,t[y+12>>2]=O>>31,tn[y>>1]=0,t[M+24>>2]=S,t[G+40>>2]=Q,S=30560;;){if(y=S,M=t[y>>2],!M)break i;if(S=y+12|0,(M|0)==(Q|0))break}}if(!(t[y+4>>2]&t[x+8>>2])){vt(m,1,8880,0),x=0;break e}if((js(u,t[x+16>>2],2,m)|0)!=2){vt(m,1,4334,0),x=0;break e}if(ue(t[x+16>>2],G+36|0,2),S=t[G+36>>2],S>>>0<=1){vt(m,1,9997,0),x=0;break e}if(O=S-2|0,t[G+36>>2]=O,S=t[x+16>>2],ln[x+20>>2]>>0){if(S=Wi(S,O),!S){Gt(t[x+16>>2]),t[x+16>>2]=0,t[x+20>>2]=0,vt(m,1,8456,0),x=0;break e}t[x+16>>2]=S,O=t[G+36>>2],t[x+20>>2]=O}if(S=js(u,S,O,m),(S|0)!=t[G+36>>2]){vt(m,1,4334,0),x=0;break e}if(!(Zt[t[y+8>>2]](x,t[x+16>>2],S,m)|0)){vt(m,1,4352,0),x=0;break e}Y=t[u+56>>2],Q=t[G+36>>2],y=t[x+200>>2],S=t[y+24>>2],H=S+1|0,O=t[y+32>>2];i:{if(H>>>0<=O>>>0){O=t[y+28>>2];break i}re=Ye(Ye(O>>>0)+Ye(100));a:{if(re=Ye(0)){S=~~re>>>0;break a}S=0}if(t[y+32>>2]=S,O=Wi(t[y+28>>2],De(S,24)),!O)break t;t[y+28>>2]=O,S=t[y+24>>2],H=S+1|0}if(S=De(S,24)+O|0,t[S+16>>2]=Q+4,O=(Y-Q|0)-4|0,t[S+8>>2]=O,t[S+12>>2]=O>>31,tn[S>>1]=M,t[y+24>>2]=H,(js(u,t[x+16>>2],2,m)|0)!=2){vt(m,1,4334,0),x=0;break e}if(he=(M|0)==65372?1:he,A=(M|0)==65362?1:A,se=(M|0)==65361?1:se,ue(t[x+16>>2],G+40|0,2),S=t[G+40>>2],(S|0)!=65424)continue}break}if(se)break n}vt(m,1,8268,0),x=0;break e}if(!A){vt(m,1,8314,0),x=0;break e}if(!he){vt(m,1,8360,0),x=0;break e}M=0,H=0,se=0,Y=Nt-16|0,Nt=Y,he=1;n:{if(!(dt[x+188|0]&1))break n;r:{if(S=t[x+112>>2],!S)break r;i:{for(;;){if(y=t[x+116>>2]+(se<<3)|0,A=t[y>>2],A){if(O=t[y+4>>2],y=M-O|0,y=M>>>0>=y>>>0?y:0,M>>>0>>0){for(S=O-M|0,O=M+A|0;;){if(S>>>0<4)break i;if(ue(O,Y+12|0,4),M=t[Y+12>>2],A=S-4|0,Q=M>>>0>A>>>0,y=Q?M-A|0:y,S=A-M|0,H=M+H|0,O=((Q?0:M)+O|0)+4|0,!(M>>>0>>0))break}S=t[x+112>>2]}M=y}if(se=se+1|0,!(se>>>0>>0))break}if(!M)break r;he=0,vt(m,1,5314,0);break n}he=0,vt(m,1,9128,0);break n}if(M=si(H),t[x+136>>2]=M,!M){he=0,vt(m,1,6968,0);break n}t[x+124>>2]=H,A=t[x+116>>2];r:{if(y=t[x+112>>2],y){for(S=0,M=0,H=0;;){if(se=H<<3,Q=se+A|0,O=t[Q>>2],O){A=t[x+136>>2]+M|0,y=t[Q+4>>2];i:{if(y>>>0<=S>>>0){Yr(A,O,y),M=M+y|0,S=S-y|0;break i}if(Yr(A,O,S),M=M+S|0,A=y-S|0,A)for(S=S+O|0;;){if(A>>>0<4)break r;if(ue(S,Y+8|0,4),S=S+4|0,O=t[x+136>>2]+M|0,y=A-4|0,A=t[Y+8>>2],y>>>0>>0){Yr(O,S,y),M=M+y|0,S=t[Y+8>>2]-y|0;break i}if(Yr(O,S,A),O=t[Y+8>>2],M=O+M|0,S=S+O|0,A=y-O|0,!A)break}S=0}Gt(t[se+t[x+116>>2]>>2]),A=t[x+116>>2],y=se+A|0,t[y>>2]=0,t[y+4>>2]=0,y=t[x+112>>2]}if(H=H+1|0,!(H>>>0>>0))break}H=t[x+124>>2],M=t[x+136>>2]}t[x+144>>2]=H,t[x+120>>2]=M,t[x+112>>2]=0,Gt(A),t[x+116>>2]=0;break n}he=0,vt(m,1,9128,0)}if(Nt=Y+16|0,!he){vt(m,1,18083,0),x=0;break e}vt(m,4,22795,0),m=t[x+200>>2],y=t[u+56>>2],y=y-2|0,t[m+8>>2]=y,t[m+12>>2]=0,t[x+8>>2]=8,x=1;break e}Gt(t[y+28>>2]),t[y+32>>2]=0,t[y+24>>2]=0,t[y+28>>2]=0,vt(m,1,6392,0),x=0}return Nt=G+48|0,x|0}function k4(x,u,m,y,S,M,O,A){var G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0;he=Nt-80|0,Nt=he,re=t[(t[x+20>>2]+De(t[m+28>>2],76)|0)+28>>2],kt=t[m+40>>2],Ne=t[m+36>>2],$e=t[m+32>>2];e:{if(xe[u|0]&2){if(M>>>0<=5){if((O|0)!=1)break e;t[he+68>>2]=6,t[he+64>>2]=M,vt(A,1,22866,he- -64|0);break e}dt[y|0]=255,dt[y+1|0]=145,dt[y+2|0]=0,dt[y+3|0]=4,dt[y+4|0]=t[x+840>>2]>>>8,dt[y+5|0]=t[x+840>>2],M=M-6|0,x=y+6|0}else x=y;Oe=x;t:{n:{r:{i:{a:{s:{if(kt||(Y=re+De($e,152)|0,!t[Y+24>>2]))break s;for(H=Y+28|0,G=De(Ne,40);;){o:{if(t[H+12>>2]==t[H+4>>2]|t[H+8>>2]==t[H>>2])break o;if(x=De(t[Y+20>>2],t[Y+16>>2]),x>>>0<=Ne>>>0)break a;if(x=G+t[H+20>>2]|0,Lf(t[x+32>>2]),Lf(t[x+36>>2]),Q=De(t[x+20>>2],t[x+16>>2]),!Q)break o;for(m=0;se=t[x+24>>2]+De(m,52)|0,t[se+40>>2]=0,Uf(t[x+36>>2],m,t[H+28>>2]-t[se+28>>2]|0),m=m+1|0,(Q|0)!=(m|0););}if(H=H+36|0,me=me+1|0,!(me>>>0>2]))break}}if(G=si(20),!G)break e;if(t[G+12>>2]=0,t[G+16>>2]=8,t[G+8>>2]=Oe,t[G>>2]=Oe,t[G+4>>2]=M+Oe,ir(G,1),Ze=re+De($e,152)|0,re=Ze+28|0,t[Ze+24>>2])for(bn=kt+1|0,$n=De(Ne,40),x=re;;){$e=x;s:{if(t[x+12>>2]==t[x+4>>2]|t[x+8>>2]==t[x>>2])break s;if(x=De(t[Ze+20>>2],t[Ze+16>>2]),x>>>0<=Ne>>>0)break i;if(Rt=t[$e+20>>2]+$n|0,un=De(t[Rt+20>>2],t[Rt+16>>2]),!un)break s;for(m=t[Rt+24>>2],x=0;t[m+40>>2]|!t[t[m+4>>2]+De(kt,24)>>2]||Uf(t[Rt+32>>2],x,kt),m=m+52|0,x=x+1|0,(un|0)!=(x|0););if(!un)break s;for(se=t[Rt+24>>2],jt=0;;){Yt=t[se+4>>2]+De(kt,24)|0;o:{if(!t[se+40>>2]){W4(G,t[Rt+32>>2],jt,bn);break o}ir(G,t[Yt>>2]!=0)}m=t[Yt>>2];o:{if(!m)break o;t[se+40>>2]||(t[se+32>>2]=3,W4(G,t[Rt+36>>2],jt,999),m=t[Yt>>2]);u:{l:switch(m-1|0){case 0:ir(G,0);break u;case 1:E(G,2,2);break u;default:break l}if(m>>>0<=5){E(G,m-3|12,4);break u}if(m>>>0<=36){E(G,m-6|480,9);break u}if(m>>>0>164)break u;E(G,m-37|65408,16)}x=0,H=0,Y=0,me=t[se+40>>2],en=me+t[Yt>>2]|0;u:{if(me>>>0>=en>>>0)break u;for(Cn=en-1|0,_e=t[se+8>>2]+De(me,24)|0;;){if(H=H+1|0,x=t[_e+16>>2]+x|0,!(!(dt[_e+20|0]&1)&(me|0)!=(Cn|0))){if(m=0,Q=0,(x|0)>=2)for(;Q=Q+1|0,Tn=x>>>0>3,x=x>>>1|0,!!Tn;);if(Tn=t[se+32>>2],(H|0)>=2){for(;x=m,m=x+1|0,er=H>>>0>3,H=H>>>1|0,!!er;);x=x^-1}else x=0;x=(x+(Q-Tn|0)|0)+1|0,Y=(x|0)<(Y|0)?Y:x,H=0,x=0}if(_e=_e+24|0,me=me+1|0,(en|0)==(me|0))break}if(m=Y,(m|0)<=0)break u;for(;ir(G,1),Q=m>>>0>1,m=m-1|0,!!Q;);}if(ir(G,0),t[se+32>>2]=t[se+32>>2]+Y,me=t[se+40>>2],en>>>0<=me>>>0)break o;for(_e=t[se+8>>2]+De(me,24)|0;;){m=H+1|0,x=t[_e+16>>2]+x|0;u:{if(!(dt[_e+20|0]&1|((t[se+40>>2]+t[Yt>>2]|0)-1|0)==(me|0))){H=m;break u}if(Y=t[se+32>>2],H=0,Q=0,(m|0)>=2)for(;Q=Q+1|0,Cn=m>>>0>3,m=m>>>1|0,!!Cn;);E(G,x,Y+Q|0),x=0}if(_e=_e+24|0,me=me+1|0,(en|0)==(me|0))break}}if(se=se+52|0,jt=jt+1|0,(un|0)==(jt|0))break}}if(x=$e+36|0,Rn=Rn+1|0,!(Rn>>>0>2]))break}Y=t[G+12>>2],x=Y<<8&65280,t[G+12>>2]=x,t[G+16>>2]=(x|0)==65280?7:8,m=t[G+8>>2],x=0;s:{if(m>>>0>=ln[G+4>>2]||(t[G+8>>2]=m+1,dt[m|0]=Y,x=1,t[G+16>>2]!=7)||(Y=t[G+12>>2],x=Y<<8&65280,t[G+12>>2]=x,t[G+16>>2]=(x|0)==65280?7:8,m=t[G+8>>2],x=0,m>>>0>=ln[G+4>>2]))break s;t[G+8>>2]=m+1,dt[m|0]=Y,x=1}if(!x){C(G);break e}if(x=t[G+8>>2]-t[G>>2]|0,C(G),m=M-x|0,Q=x+Oe|0,xe[u|0]&4){if(m>>>0<=1){if((O|0)!=1)break e;t[he+20>>2]=2,t[he+16>>2]=m,vt(A,1,22866,he+16|0);break e}dt[Q|0]=255,dt[Q+1|0]=146,Q=Q+2|0,m=m-2|0}if(!t[Ze+24>>2])break n;if((O|0)==1)break r;for(Y=0,M=De(Ne,40),O=De(kt,24);;){s:{if(t[re+12>>2]==t[re+4>>2]|t[re+8>>2]==t[re>>2]||(x=M+t[re+20>>2]|0,Oe=De(t[x+20>>2],t[x+16>>2]),!Oe))break s;for(H=t[x+24>>2],u=0;;){if(x=O+t[H+4>>2]|0,$e=t[x>>2],$e){if(x=t[x+4>>2],m>>>0>>0){u=0;break t}t[H+40>>2]=$e+t[H+40>>2],Q=x+Q|0,m=m-x|0}if(H=H+52|0,u=u+1|0,(Oe|0)==(u|0))break}}if(re=re+36|0,Y=Y+1|0,!(Y>>>0>2]))break}break n}t[he+52>>2]=x,t[he+48>>2]=Ne,vt(A,1,4254,he+48|0);break e}t[he+36>>2]=x,t[he+32>>2]=Ne,vt(A,1,4254,he+32|0);break e}for(Y=0,M=De(Ne,40),O=De(kt,24);;){r:{if(t[re+12>>2]==t[re+4>>2]|t[re+8>>2]==t[re>>2]||(x=M+t[re+20>>2]|0,Oe=De(t[x+20>>2],t[x+16>>2]),!Oe))break r;for(H=t[x+24>>2],_e=0;;){if(u=O+t[H+4>>2]|0,t[u>>2]){if(x=t[u+4>>2],m>>>0>>0){u=1;break t}x=Yr(Q,t[u+16>>2],x),t[H+40>>2]=t[H+40>>2]+t[u>>2],u=t[u+4>>2],m=m-u|0,Q=x+u|0}if(H=H+52|0,_e=_e+1|0,(Oe|0)==(_e|0))break}}if(re=re+36|0,Y=Y+1|0,!(Y>>>0>2]))break}}t[S>>2]=t[S>>2]+(Q-y|0),rr=1;break e}if(!u)break e;t[he+4>>2]=x,t[he>>2]=m,vt(A,1,22866,he)}return Nt=he+80|0,rr}function Cp(x,u,m,y,S,M,O){var A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0;A=30384,_e=t[u+76>>2],G=(_e+De(m,5644)|0)+De(y,148)|0,me=G;e:{t:switch(t[G+460>>2]){default:A=30444;break e;case 0:A=30396;break e;case 3:A=30408;break e;case 1:A=30420;break e;case 4:break e;case 2:break t}A=30432}se=A+4|0,A=De(y,240)+x|0,t[A+44>>2]=1,t[A+84>>2]=t[me+460>>2],he=A+48|0;e:{t:{if(!(dt[u+100|0]&1))break t;if(H=Qn[u>>1],(H-3&65535)>>>0<4)break e;if(H>>>0>=1024){if((O|0)==1)break e;if(H>>>0>=2460)break t;break e}if((O|0)==1)break e}t[he>>2]=t[G+496>>2],t[A+60>>2]=t[G+512>>2],t[A+52>>2]=t[G+500>>2],t[A- -64>>2]=t[G+516>>2],t[A+68>>2]=t[G+492>>2],t[A+56>>2]=t[G+508>>2],t[A+72>>2]=t[G+504>>2],t[A+76>>2]=t[G+520>>2],t[A+100>>2]=t[G+524>>2],t[A+108>>2]=t[G+532>>2],t[A+104>>2]=t[G+528>>2],t[A+112>>2]=t[G+536>>2];return}if((M|0)<=2)for(Y=(De(m,5644)+_e|0)+De(y,148)|0,Oe=Y+512|0,Ne=Y+496|0,$e=Y+516|0,Ze=Y+500|0,kt=Y+508|0,Rt=Y+492|0,jt=Y+520|0,Yt=Y+504|0,en=Y+536|0,un=Y+528|0,Q=De(y,240)+x|0,Cn=Q+60|0,Tn=Q- -64|0,Rn=Q+52|0,bn=Q+56|0,$n=Q+68|0,er=Q+76|0,rr=Q+72|0,sr=Q+112|0,gr=Q+104|0,re=M;;){A=Ne,O=he,G=Oe,H=Cn;e:{t:{n:{r:{i:switch(re=re+1|0,dt[re+se|0]-67|0){case 15:break t;case 13:break n;case 9:break r;case 0:break i;default:break e}A=Ze,O=Rn,G=$e,H=Tn;break t}A=Rt,O=$n,G=kt,H=bn;break t}if(A=Yt,O=rr,G=jt,H=er,ln[me+460>>2]<2)break t;t[Q+100>>2]=t[Y+524>>2],t[Q+108>>2]=t[Y+532>>2],A=un,O=gr,G=en,H=sr}t[O>>2]=t[A>>2],t[H>>2]=t[G>>2]}if((re|0)==3)break}e:{if(S){if((M|0)<0)break e;for(S=(De(m,5644)+_e|0)+De(y,148)|0,O=De(y,240)+x|0,G=O- -64|0,A=1;;){x=M;t:{n:{r:{i:{a:switch(H=M+se|0,dt[H|0]-67|0){case 13:break n;case 9:break r;case 15:break i;case 0:break a;default:break t}M=t[S+556>>2],t[O+52>>2]=M-1,t[G>>2]=M;break t}M=t[S+552>>2],t[he>>2]=M-1,t[O+60>>2]=M;break t}M=t[S+548>>2],t[O+68>>2]=M-1,t[O+56>>2]=M;break t}if(ln[me+460>>2]<=1){M=t[S+560>>2],t[O+72>>2]=M-1,t[O+76>>2]=M;break t}M=t[S+564>>2],re=t[S+540>>2],t[O+100>>2]=M-(((M>>>0)%(re>>>0)|0)+re|0),t[O+104>>2]=M,M=t[S+568>>2],re=t[S+544>>2],t[O+108>>2]=M-(((M>>>0)%(re>>>0)|0)+re|0),t[O+112>>2]=M}M=(A|0)!=1,A=0;t:{if(M)break t;A=1;n:{r:switch(dt[H|0]-67|0){case 15:if(M=t[S+552>>2],(M|0)==t[S+512>>2]){if(A=0,!Ac(x-1|0,u,m,y,se))break t;M=t[S+496>>2],t[he>>2]=M,A=1,M=M+1|0,t[O+60>>2]=M,t[S+552>>2]=M;break t}t[he>>2]=M,M=M+1|0,t[O+60>>2]=M,t[S+552>>2]=M;break n;case 0:if(M=t[S+556>>2],(M|0)==t[S+516>>2]){if(A=0,!Ac(x-1|0,u,m,y,se))break t;M=t[S+500>>2],t[O+52>>2]=M,A=1,M=M+1|0,t[G>>2]=M,t[S+556>>2]=M;break t}t[O+52>>2]=M,M=M+1|0,t[G>>2]=M,t[S+556>>2]=M;break n;case 9:if(M=t[S+548>>2],(M|0)==t[S+508>>2]){if(A=0,!Ac(x-1|0,u,m,y,se))break t;M=t[S+492>>2],t[O+68>>2]=M,A=1,M=M+1|0,t[O+56>>2]=M,t[S+548>>2]=M;break t}t[O+68>>2]=M,M=M+1|0,t[O+56>>2]=M,t[S+548>>2]=M;break n;case 13:break r;default:break t}if(ln[me+460>>2]<=1){if(M=t[S+560>>2],(M|0)==t[S+520>>2]){if(A=0,!Ac(x-1|0,u,m,y,se))break t;M=t[S+504>>2],t[O+72>>2]=M,A=1,M=M+1|0,t[O+76>>2]=M,t[S+560>>2]=M;break t}t[O+72>>2]=M,M=M+1|0,t[O+76>>2]=M,t[S+560>>2]=M;break n}if(M=t[S+564>>2],M>>>0>=ln[S+528>>2]){M=t[S+568>>2];r:{if(M>>>0>=ln[S+536>>2]){if(A=0,!Ac(x-1|0,u,m,y,se))break t;M=t[S+532>>2],t[O+108>>2]=M,A=t[S+544>>2],M=A+M-(M>>>0)%(A>>>0)|0,A=1;break r}t[O+108>>2]=M,A=t[S+544>>2],M=A+M-(M>>>0)%(A>>>0)|0,A=0}t[O+112>>2]=M,t[S+568>>2]=M,M=t[S+524>>2],t[O+100>>2]=M,H=t[S+540>>2],M=H+M-(M>>>0)%(H>>>0)|0,t[O+104>>2]=M,t[S+564>>2]=M;break t}t[O+100>>2]=M,A=t[S+540>>2],M=A+M-(M>>>0)%(A>>>0)|0,t[O+104>>2]=M,t[S+564>>2]=M}A=0}if(M=x-1|0,!((x|0)>0))break}break e}if((M|0)<0)break e;for(u=(De(m,5644)+_e|0)+De(y,148)|0,m=De(y,240)+x|0,O=m- -64|0;;){x=M;t:{n:switch(dt[M+se|0]-67|0){case 0:y=t[u+500>>2],t[m+52>>2]=y,y=y+1|0,t[O>>2]=y,t[u+556>>2]=y;break t;case 15:y=t[u+496>>2],t[he>>2]=y,y=y+1|0,t[m+60>>2]=y,t[u+552>>2]=y;break t;case 9:y=t[u+492>>2],t[m+68>>2]=y,y=y+1|0,t[m+56>>2]=y,t[u+548>>2]=y;break t;case 13:break n;default:break t}if(ln[me+460>>2]<=1){y=t[u+504>>2],t[m+72>>2]=y,y=y+1|0,t[m+76>>2]=y,t[u+560>>2]=y;break t}y=t[u+532>>2],S=t[u+524>>2],t[m+100>>2]=S,M=t[u+540>>2],S=M+S-(S>>>0)%(M>>>0)|0,t[m+104>>2]=S,t[m+108>>2]=y,M=t[u+544>>2],y=M+y-(y>>>0)%(M>>>0)|0,t[m+112>>2]=y,t[u+564>>2]=S,t[u+568>>2]=y}if(M=x-1|0,!((x|0)>0))break}}}function Vh(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0,sr=0,gr=0,_r=0,Dr=0,$r=0,Zr=0,Qr=0;if(u=0,t[x+40>>2]=0,gr=De(t[x+108>>2],t[x+104>>2]),gr)for(me=x+80|0,Ze=t[x+72>>2],m=t[x+156>>2];;){kt=0,$n=0,O=t[me+16>>2],Rt=u,Y=t[me+24>>2],A=(u>>>0)/(Y>>>0)|0,G=t[me+8>>2]+De(O,A)|0,y=0,u=O+G|0,u=0-(u>>>0>>0?1:y)|u,y=t[Ze+12>>2],Yt=u>>>0>>0?u:y,u=t[me+12>>2],O=t[me+4>>2]+De(u,Rt-De(A,Y)|0)|0,y=0,S=u,u=u+O|0,u=0-(S>>>0>u>>>0?1:y)|u,y=t[Ze+8>>2],en=u>>>0>>0?u:y,u=t[Ze+4>>2],un=u>>>0>>0?G:u,u=t[Ze>>2],Cn=u>>>0>>0?O:u,er=t[me+76>>2],rr=t[Ze+16>>2];e:{if(!rr){re=2147483647,G=0,se=2147483647;break e}for(Tn=t[(De(Rt,5644)+er|0)+5584>>2],Rn=t[Ze+24>>2],re=2147483647,G=0,se=2147483647;;){O=t[Rn+4>>2],u=O-1|0,S=0-!O|0,y=S,Y=u+Yt|0,y=Y>>>0>>0?y+1|0:y,A=c0(Y,y,O,0),Y=t[Rn>>2],H=Y-1|0,_e=0-!Y|0,y=_e,Oe=H,H=en+H|0,y=H>>>0>>0?y+1|0:y,H=c0(H,y,Y,0),y=S,u=u+un|0,y=u>>>0>>0?y+1|0:y,S=c0(u,y,O,0),y=_e,u=Oe+Cn|0,y=u>>>0>>0?y+1|0:y,y=c0(u,y,Y,0),_e=t[Tn+4>>2],u=_e;t:{if(G>>>0>=u>>>0&&(u=G,!_e))break t;for(_r=A,Zr=H,Dr=S,Qr=y,Ne=0,Oe=0,G=0;A=(Ne^-1)+_e|0,H=A&31,(A&63)>>>0>=32?(y=-1<>>32-H),he=S^-1,H=he,S=H+Zr|0,bn=y^-1,y=bn+sr|0,y=S>>>0>>0?y+1|0:y,M=0,$e=(Oe<<2)+Tn|0,H=t[$e+812>>2],jt=S,S=A&31,jt=(A&63)>>>0>=32?y>>>S|0:((1<>>S,S=H&31,(H&63)>>>0>=32?(y=-1<>>32-S,S=-1<>>0>>0?y+1|0:y,S=H&31,S=(H&63)>>>0>=32?y>>>S|0:((1<>>S,y=sr+bn|0,Q=S,M=he+Qr|0,y=M>>>0>>0?y+1|0:y,S=A&31,y=(A&63)>>>0>=32?y>>>S|0:((1<>>S,jt=(y|0)!=(jt|0)?Q-(y>>>H|0)&-1>>>H:0,y=sr+bn|0,M=he+_r|0,y=M>>>0<_r>>>0?y+1|0:y,Q=0,S=t[$e+944>>2],$e=M,M=A&31,$e=(A&63)>>>0>=32?y>>>M|0:((1<>>M,M=S&31,(S&63)>>>0>=32?(y=-1<>>32-M,M=-1<>>0<$r>>>0?y+1|0:y,M=S&31,M=(S&63)>>>0>=32?y>>>M|0:((1<>>M,y=sr+bn|0,Q=M,he=he+Dr|0,y=he>>>0>>0?y+1|0:y,M=A&31,y=(A&63)>>>0>=32?y>>>M|0:((1<>>M,y=De((y|0)!=($e|0)?Q-(y>>>S|0)&-1>>>S:0,jt),kt=y>>>0>kt>>>0?y:kt,y=S+A|0,S=y&31,(y&63)>>>0>=32?(y=O<>>32-S,S=O<>>0>se>>>0?se:S,y=A+H|0,A=y&31,(y&63)>>>0>=32?(y=Y<>>32-A,A=Y<>>0>re>>>0?re:A,Ne=Ne+1|0,y=G,Oe=Oe+1|0,y=Oe?y:y+1|0,G=y,!!((Oe|0)!=(_e|0)|y););G=u}if(Tn=Tn+1080|0,Rn=Rn+52|0,$n=$n+1|0,(rr|0)==($n|0))break}}u=De(Rt,5644)+er|0,y=t[u+420>>2];e:{if(xe[u+5640|0]&4){if(G=t[u+428>>2],t[u+496>>2]=t[u+424>>2],t[u+500>>2]=G,t[u+492>>2]=0,t[u+544>>2]=se,t[u+540>>2]=re,t[u+536>>2]=Yt,t[u+532>>2]=un,t[u+528>>2]=en,t[u+524>>2]=Cn,t[u+520>>2]=kt,t[u+504>>2]=0,t[u+516>>2]=t[u+440>>2],G=t[u+436>>2],t[u+508>>2]=t[u+432>>2],t[u+512>>2]=G,t[u+460>>2]=t[u+456>>2],y-1>>>0>4294967293)break e;for(u=u+424|0,G=1;O=t[u+152>>2],t[u+220>>2]=t[u+148>>2],t[u+224>>2]=O,t[u+228>>2]=0,t[u+268>>2]=se,t[u+264>>2]=re,t[u+260>>2]=Yt,t[u+256>>2]=un,t[u+252>>2]=en,t[u+248>>2]=Cn,t[u+244>>2]=kt,O=t[u+164>>2],t[u+236>>2]=t[u+160>>2],t[u+240>>2]=O,O=t[u+156>>2],t[u+232>>2]=O,t[u+184>>2]=t[u+180>>2],t[u+216>>2]=O>>>0>ln[u+84>>2]?O:0,u=u+148|0,O=(y|0)==(G|0),G=G+1|0,!O;);break e}if((y|0)==-1)break e;for(O=De(Rt,5644)+er|0,u=O+424|0,Y=t[O+4>>2],O=t[O+8>>2],Ne=0;t[u+92>>2]=rr,t[u+76>>2]=0,t[u+80>>2]=0,t[u+88>>2]=G,t[u+84>>2]=O,t[u+68>>2]=0,t[u+72>>2]=0,t[u+120>>2]=se,t[u+116>>2]=re,t[u+112>>2]=Yt,t[u+108>>2]=un,t[u+104>>2]=en,t[u+100>>2]=Cn,t[u+96>>2]=kt,t[u+36>>2]=Y,u=u+148|0,A=(y|0)!=(Ne|0),Ne=Ne+1|0,!!A;);}for(u=0,G=0;y=zh(me,u,Rt),t[x+40>>2]=y+t[x+40>>2],G=y+G|0,u=u+1|0,u>>>0<=ln[m+420>>2];);if(t[m+5592>>2]=G,m=m+5644|0,u=Rt+1|0,(gr|0)==(u|0))break}return 1}function Uh(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;S=t[x>>2],M=t[x+12>>2]<<5,A=S+M|0,Q=S-M|0,S=t[x+16>>2],G=t[x+28>>2],H=t[x+20>>2],re=t[x+8>>2];e:{t:{if(u&15|y>>>0<8|A&15){if(S>>>0>=H>>>0)break e;n:switch(y-1|0){case 1:if(M=S+1|0,H-S&1&&(O=A+(S<<6)|0,Ue[O>>2]=Ue[(S<<2)+u>>2],Ue[O+4>>2]=Ue[(m+S<<2)+u>>2],S=M),(M|0)==(H|0))break e;for(;M=A+(S<<6)|0,Ue[M>>2]=Ue[(S<<2)+u>>2],Ue[M+4>>2]=Ue[(m+S<<2)+u>>2],M=S+1|0,O=A+(M<<6)|0,Ue[O>>2]=Ue[(M<<2)+u>>2],Ue[O+4>>2]=Ue[(m+M<<2)+u>>2],S=S+2|0,(H|0)!=(S|0););break e;case 0:break n;default:break t}if(O=(S^-1)+H|0,Y=H-S&3,Y)for(M=0;Ue[A+(S<<6)>>2]=Ue[(S<<2)+u>>2],S=S+1|0,M=M+1|0,(Y|0)!=(M|0););if(O>>>0<3)break e;for(;Ue[A+(S<<6)>>2]=Ue[(S<<2)+u>>2],M=S+1|0,Ue[A+(M<<6)>>2]=Ue[(M<<2)+u>>2],M=S+2|0,Ue[A+(M<<6)>>2]=Ue[(M<<2)+u>>2],M=S+3|0,Ue[A+(M<<6)>>2]=Ue[(M<<2)+u>>2],S=S+4|0,(H|0)!=(S|0););break e}if(S>>>0>=H>>>0)break e;for(;M=A+(S<<6)|0,Ue[M>>2]=Ue[(S<<2)+u>>2],O=m+S|0,Ue[M+4>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+8>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+12>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+16>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+20>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+24>>2]=Ue[(O<<2)+u>>2],Ue[M+28>>2]=Ue[(m+O<<2)+u>>2],S=S+1|0,(H|0)!=(S|0););break e}for(;;){M=A+(S<<6)|0,Ue[M>>2]=Ue[(S<<2)+u>>2],O=m+S|0,Ue[M+4>>2]=Ue[(O<<2)+u>>2],O=m+O|0,Ue[M+8>>2]=Ue[(O<<2)+u>>2];t:{if((y|0)==3||(O=m+O|0,Ue[M+12>>2]=Ue[(O<<2)+u>>2],(y|0)==4)||(O=m+O|0,Ue[M+16>>2]=Ue[(O<<2)+u>>2],(y|0)==5)||(O=m+O|0,Ue[M+20>>2]=Ue[(O<<2)+u>>2],(y|0)==6)||(O=m+O|0,Ue[M+24>>2]=Ue[(O<<2)+u>>2],(y|0)==7))break t;Ue[M+28>>2]=Ue[(m+O<<2)+u>>2]}if(S=S+1|0,(H|0)==(S|0))break}}M=Q+32|0,S=t[x+24>>2],u=(re<<2)+u|0;e:{if(u&15|y>>>0<8|M&15){if(S>>>0>=G>>>0)break e;t:switch(y-1|0){case 1:if(x=S+1|0,G-S&1&&(y=M+(S<<6)|0,Ue[y>>2]=Ue[u+(S<<2)>>2],Ue[y+4>>2]=Ue[u+(m+S<<2)>>2],S=x),(x|0)==(G|0))break e;for(;x=M+(S<<6)|0,Ue[x>>2]=Ue[u+(S<<2)>>2],Ue[x+4>>2]=Ue[u+(m+S<<2)>>2],x=S+1|0,y=M+(x<<6)|0,Ue[y>>2]=Ue[u+(x<<2)>>2],Ue[y+4>>2]=Ue[u+(x+m<<2)>>2],S=S+2|0,(G|0)!=(S|0););break e;case 0:if(x=(S^-1)+G|0,y=G-S&3,y)for(m=0;Ue[M+(S<<6)>>2]=Ue[u+(S<<2)>>2],S=S+1|0,m=m+1|0,(y|0)!=(m|0););if(x>>>0<3)break e;for(;Ue[M+(S<<6)>>2]=Ue[u+(S<<2)>>2],x=S+1|0,Ue[M+(x<<6)>>2]=Ue[u+(x<<2)>>2],x=S+2|0,Ue[M+(x<<6)>>2]=Ue[u+(x<<2)>>2],x=S+3|0,Ue[M+(x<<6)>>2]=Ue[u+(x<<2)>>2],S=S+4|0,(G|0)!=(S|0););break e;default:break t}for(;;){x=M+(S<<6)|0,Ue[x>>2]=Ue[u+(S<<2)>>2],A=m+S|0,Ue[x+4>>2]=Ue[u+(A<<2)>>2],A=m+A|0,Ue[x+8>>2]=Ue[u+(A<<2)>>2];t:{if((y|0)==3||(A=m+A|0,Ue[x+12>>2]=Ue[u+(A<<2)>>2],(y|0)==4)||(A=m+A|0,Ue[x+16>>2]=Ue[u+(A<<2)>>2],(y|0)==5)||(A=m+A|0,Ue[x+20>>2]=Ue[u+(A<<2)>>2],(y|0)==6)||(A=m+A|0,Ue[x+24>>2]=Ue[u+(A<<2)>>2],(y|0)==7))break t;Ue[x+28>>2]=Ue[u+(m+A<<2)>>2]}if(S=S+1|0,(G|0)==(S|0))break}break e}if(S>>>0>=G>>>0)break e;for(;x=M+(S<<6)|0,Ue[x>>2]=Ue[u+(S<<2)>>2],y=m+S|0,Ue[x+4>>2]=Ue[u+(y<<2)>>2],y=m+y|0,Ue[x+8>>2]=Ue[u+(y<<2)>>2],y=m+y|0,Ue[x+12>>2]=Ue[u+(y<<2)>>2],y=m+y|0,Ue[x+16>>2]=Ue[u+(y<<2)>>2],y=m+y|0,Ue[x+20>>2]=Ue[u+(y<<2)>>2],y=m+y|0,Ue[x+24>>2]=Ue[u+(y<<2)>>2],Ue[x+28>>2]=Ue[u+(m+y<<2)>>2],S=S+1|0,(G|0)!=(S|0););}}function _p(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;M=Nt-176|0,Nt=M;e:{if(u&384){os(9639,11,1,m);break e}t:{if(!(u&1)||(O=t[x+72>>2],!O))break t;if(y=Nt-80|0,Nt=y,os(3588,13,1,m),dt[y+78|0]=9,dt[y+79|0]=0,S=t[O+4>>2],t[y+68>>2]=t[O>>2],t[y+72>>2]=S,G=y+78|0,t[y+64>>2]=G,to(m,17157,y- -64|0),S=t[O+12>>2],t[y+52>>2]=t[O+8>>2],t[y+56>>2]=S,t[y+48>>2]=G,to(m,17122,y+48|0),t[y+36>>2]=t[O+16>>2],t[y+32>>2]=G,to(m,16880,y+32|0),!(!t[O+24>>2]|!t[O+16>>2]))for(;Q=y+78|0,t[y+16>>2]=Q,t[y+20>>2]=A,to(m,3620,y+16|0),G=t[O+24>>2],S=Nt-48|0,Nt=S,dt[S+47|0]=0,dt[S+45|0]=9,dt[S+46|0]=9,H=De(A,52)+G|0,G=t[H+4>>2],t[S+36>>2]=t[H>>2],t[S+40>>2]=G,G=S+45|0,t[S+32>>2]=G,to(m,16812,S+32|0),t[S+20>>2]=t[H+24>>2],t[S+16>>2]=G,to(m,17074,S+16|0),t[S+4>>2]=t[H+32>>2],t[S>>2]=G,to(m,17047,S),Nt=S+48|0,t[y>>2]=Q,to(m,3498,y),A=A+1|0,A>>>0>2];);os(3506,2,1,m),Nt=y+80|0}!(u&2)|!t[x+72>>2]||(os(3727,36,1,m),S=t[x+88>>2],t[M+160>>2]=t[x+84>>2],t[M+164>>2]=S,to(m,17139,M+160|0),S=t[x+96>>2],t[M+144>>2]=t[x+92>>2],t[M+148>>2]=S,to(m,16794,M+144|0),S=t[x+108>>2],t[M+128>>2]=t[x+104>>2],t[M+132>>2]=S,to(m,17031,M+128|0),Pp(t[x+12>>2],t[t[x+72>>2]+16>>2],m),os(3506,2,1,m));t:{if(!(u&8)|!t[x+72>>2]||(S=De(t[x+104>>2],t[x+108>>2]),!S))break t;for(y=t[x+156>>2];Pp(y,t[t[x+72>>2]+16>>2],m),y=y+5644|0,Y=Y+1|0,(S|0)!=(Y|0););}if(!(u&16))break e;if(A=t[x+200>>2],os(3689,37,1,m),S=t[A>>2],u=t[A+4>>2],x=t[A+12>>2],t[M+120>>2]=t[A+8>>2],t[M+124>>2]=x,t[M+112>>2]=S,t[M+116>>2]=u,to(m,9228,M+112|0),os(3671,17,1,m),!(!t[A+28>>2]|!t[A+24>>2]))for(y=0;x=t[A+28>>2]+De(y,24)|0,O=Qn[x>>1],S=t[x+8>>2],u=t[x+12>>2],t[M+96>>2]=t[x+16>>2],t[M+88>>2]=S,t[M+92>>2]=u,t[M+80>>2]=O,to(m,17e3,M+80|0),y=y+1|0,y>>>0>2];);os(3504,4,1,m),O=t[A+40>>2];t:{if(!O||(S=t[A+36>>2],!S))break t;if(x=0,y=0,S>>>0>=4)for(u=S&-4;x=t[(O+De(y|3,40)|0)+4>>2]+(t[(O+De(y|2,40)|0)+4>>2]+(t[(O+De(y|1,40)|0)+4>>2]+(t[(O+De(y,40)|0)+4>>2]+x|0)|0)|0)|0,y=y+4|0,re=re+4|0,(u|0)!=(re|0););if(u=S&3,u)for(;x=t[(O+De(y,40)|0)+4>>2]+x|0,y=y+1|0,se=se+1|0,(u|0)!=(se|0););if(!x)break t;if(os(3654,16,1,m),t[A+36>>2])for(Y=t[A+40>>2],G=0;;){H=De(G,40),re=t[(H+Y|0)+4>>2],t[M+68>>2]=re,t[M+64>>2]=G,to(m,17086,M- -64|0),Y=t[A+40>>2];n:{if(!re||(y=0,!t[(H+Y|0)+16>>2]))break n;for(;Q=t[(H+t[A+40>>2]|0)+16>>2]+De(y,24)|0,se=t[Q>>2],O=t[Q+4>>2],S=t[Q+8>>2],u=t[Q+12>>2],x=t[Q+20>>2],t[M+56>>2]=t[Q+16>>2],t[M+60>>2]=x,t[M+48>>2]=S,t[M+52>>2]=u,t[M+40>>2]=se,t[M+44>>2]=O,t[M+32>>2]=y,to(m,21553,M+32|0),y=y+1|0,(re|0)!=(y|0););Y=t[A+40>>2]}x=H+Y|0;n:{if(!t[x+24>>2]||(y=0,!t[x+20>>2]))break n;for(;x=t[(H+Y|0)+24>>2]+De(y,24)|0,O=Qn[x>>1],S=t[x+8>>2],u=t[x+12>>2],t[M+16>>2]=t[x+16>>2],t[M+8>>2]=S,t[M+12>>2]=u,t[M>>2]=O,to(m,17e3,M),y=y+1|0,Y=t[A+40>>2],y>>>0>2];);}if(G=G+1|0,!(G>>>0>2]))break}os(3504,4,1,m)}os(3506,2,1,m)}Nt=M+176|0}function p5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;e:{t:{n:{if(!m|(!x|!u))break n;if(t[m+16>>2]-16385>>>0<=4294950911)return vt(y,1,8069,0),0;if(!xf(t[x>>2],u,m,y))break n;if(t[x+64>>2]=1,t[x+56>>2]=1785737760,t[x+60>>2]=0,S=si(4),t[x+68>>2]=S,!S||(t[S>>2]=1785737760,S=t[m+16>>2],t[x+20>>2]=S,Y=si(De(S,12)),t[x+72>>2]=Y,!Y))break t;t[x+16>>2]=t[m+12>>2]-t[m+4>>2],t[x+12>>2]=t[m+8>>2]-t[m>>2],H=t[m+24>>2],M=t[H+24>>2],t[x+24>>2]=(M+(t[H+32>>2]<<7)|0)-1,G=t[m+16>>2];r:{if(G>>>0<2)break r;if(O=G-1|0,Q=O&3,S=1,G-2>>>0>=3)for(se=O&-4,O=0;A=H+De(S,52)|0,(M|0)!=t[A+24>>2]&&(t[x+24>>2]=255),(M|0)!=t[A+76>>2]&&(t[x+24>>2]=255),(M|0)!=t[A+128>>2]&&(t[x+24>>2]=255),(M|0)!=t[A+180>>2]&&(t[x+24>>2]=255),S=S+4|0,O=O+4|0,(se|0)!=(O|0););if(!Q)break r;for(O=0;(M|0)!=t[(H+De(S,52)|0)+24>>2]&&(t[x+24>>2]=255),S=S+1|0,O=O+1|0,(Q|0)!=(O|0););}S=0,t[x+36>>2]=0,t[x+28>>2]=7,t[x+32>>2]=0;r:{if(!G)break r;if((G|0)!=1)for(O=G&-2,A=0;M=H+De(S,52)|0,t[(Y+De(S,12)|0)+8>>2]=(t[M+24>>2]+(t[M+32>>2]<<7)|0)-1,Q=S|1,M=H+De(Q,52)|0,t[(Y+De(Q,12)|0)+8>>2]=(t[M+24>>2]+(t[M+32>>2]<<7)|0)-1,S=S+2|0,A=A+2|0,(O|0)!=(A|0););if(!(G&1))break r;M=Y+De(S,12)|0,S=H+De(S,52)|0,t[M+8>>2]=(t[S+24>>2]+(t[S+32>>2]<<7)|0)-1}r:{i:{if(t[m+32>>2]){t[x+40>>2]=2,S=0;break i}if(t[x+40>>2]=1,S=t[m+20>>2],S-1>>>0>2)break r;S=S+15|0}t[x+48>>2]=S}r:{if(!G)break r;Q=G&1;i:{if((G|0)==1){O=0,A=0,S=0;break i}for(se=G&-2,O=0,A=0,S=0,M=0;re=S|1,Y=Qn[(H+De(re,52)|0)+48>>1],he=re,re=Qn[(H+De(S,52)|0)+48>>1],O=Y?he:re?S:O,A=(((re|0)!=0)+A|0)+((Y|0)!=0)|0,S=S+2|0,M=M+2|0,(se|0)!=(M|0););}Q&&(M=S,S=Qn[(H+De(S,52)|0)+48>>1],O=S?M:O,A=((S|0)!=0)+A|0),S=22345;i:{a:switch(A|0){case 0:break r;case 1:break a;default:break i}if(S=22188,M=t[x+48>>2]-16|0,M>>>0>2||(S=20790,M=t[(M<<2)+30992>>2],G>>>0<=M>>>0)||(S=22262,M>>>0>O>>>0))break i;if(S=si(8),t[x+116>>2]=S,!S||(G=si(De(t[m+16>>2],6)),S=t[x+116>>2],t[S>>2]=G,!G))break e;if(H=t[m+16>>2],tn[S+4>>1]=H,S=0,M-1>>>0>=3)for(Q=M&-4,O=0;y=G+De(S,6)|0,A=S|1,tn[y+4>>1]=A,tn[y+2>>1]=0,tn[y>>1]=S,y=G+De(A,6)|0,Y=S|2,tn[y+4>>1]=Y,tn[y+2>>1]=0,tn[y>>1]=A,y=G+De(Y,6)|0,A=S|3,tn[y+4>>1]=A,tn[y+2>>1]=0,tn[y>>1]=Y,y=G+De(A,6)|0,S=S+4|0,tn[y+4>>1]=S,tn[y+2>>1]=0,tn[y>>1]=A,O=O+4|0,(Q|0)!=(O|0););for(Y=M&3,O=0;A=G+De(S,6)|0,y=S+1|0,tn[A+4>>1]=y,tn[A+2>>1]=0,tn[A>>1]=S,S=y,O=O+1|0,(Y|0)!=(O|0););if(M>>>0>=H>>>0||(y=M+1|0,S=t[m+24>>2],H-M&1&&(m=Qn[(S+De(M,52)|0)+48>>1],O=G+De(M,6)|0,tn[O>>1]=M,tn[O+4>>1]=m?0:-1,tn[O+2>>1]=m?1:-1,M=y),(y|0)==(H|0)))break r;for(;O=S+De(M,52)|0,y=Qn[O+48>>1],m=G+De(M,6)|0,tn[m>>1]=M,tn[m+4>>1]=y?0:-1,tn[m+2>>1]=y?1:-1,y=Qn[O+100>>1],tn[m+6>>1]=M+1,tn[m+10>>1]=y?0:-1,tn[m+8>>1]=y?1:-1,M=M+2|0,(H|0)!=(M|0););break r}vt(y,2,S,0)}t[x+44>>2]=0,t[x+52>>2]=0,t[x+96>>2]=t[u+18692>>2],S=1}return S|0}return vt(y,1,8182,0),0}return vt(y,1,8138,0),0}function Gt(x){x=x|0;var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0;e:{if(!x)break e;y=x-8|0,u=t[x-4>>2],x=u&-8,M=y+x|0;t:{if(u&1)break t;if(!(u&3)||(u=t[y>>2],y=y-u|0,y>>>0>>0<=255){if(S=t[y+8>>2],u=u>>>3|0,m=t[y+12>>2],(m|0)==(S|0)){G=51704,H=t[12926]&D2(u),t[G>>2]=H;break t}t[S+12>>2]=m,t[m+8>>2]=S;break t}A=t[y+24>>2],u=t[y+12>>2];n:{if((y|0)!=(u|0)){m=t[y+8>>2],t[m+12>>2]=u,t[u+8>>2]=m;break n}r:{if(S=y+20|0,m=t[S>>2],m||(S=y+16|0,m=t[S>>2],m))break r;u=0;break n}for(;O=S,u=m,S=u+20|0,m=t[S>>2],!(!m&&(S=u+16|0,m=t[u+16>>2],!m)););t[O>>2]=0}if(!A)break t;S=t[y+28>>2],m=(S<<2)+52008|0;n:{if(t[m>>2]==(y|0)){if(t[m>>2]=u,u)break n;G=51708,H=t[12927]&D2(S),t[G>>2]=H;break t}if(t[A+(t[A+16>>2]==(y|0)?16:20)>>2]=u,!u)break t}if(t[u+24>>2]=A,m=t[y+16>>2],m&&(t[u+16>>2]=m,t[m+24>>2]=u),m=t[y+20>>2],!m)break t;t[u+20>>2]=m,t[m+24>>2]=u;break t}if(u=t[M+4>>2],(u&3)!=3)break t;t[12928]=x,t[M+4>>2]=u&-2,t[y+4>>2]=x|1,t[x+y>>2]=x;return}if(y>>>0>=M>>>0||(u=t[M+4>>2],!(u&1)))break e;t:{if(!(u&2)){if(t[12932]==(M|0)){if(t[12932]=y,x=t[12929]+x|0,t[12929]=x,t[y+4>>2]=x|1,t[12931]!=(y|0))break e;t[12928]=0,t[12931]=0;return}if(t[12931]==(M|0)){t[12931]=y,x=t[12928]+x|0,t[12928]=x,t[y+4>>2]=x|1,t[x+y>>2]=x;return}x=(u&-8)+x|0;n:{if(u>>>0<=255){if(S=t[M+8>>2],u=u>>>3|0,m=t[M+12>>2],(m|0)==(S|0)){G=51704,H=t[12926]&D2(u),t[G>>2]=H;break n}t[S+12>>2]=m,t[m+8>>2]=S;break n}A=t[M+24>>2],u=t[M+12>>2];r:{if((M|0)!=(u|0)){m=t[M+8>>2],t[m+12>>2]=u,t[u+8>>2]=m;break r}i:{if(S=M+20|0,m=t[S>>2],m||(S=M+16|0,m=t[S>>2],m))break i;u=0;break r}for(;O=S,u=m,S=u+20|0,m=t[S>>2],!(!m&&(S=u+16|0,m=t[u+16>>2],!m)););t[O>>2]=0}if(!A)break n;S=t[M+28>>2],m=(S<<2)+52008|0;r:{if(t[m>>2]==(M|0)){if(t[m>>2]=u,u)break r;G=51708,H=t[12927]&D2(S),t[G>>2]=H;break n}if(t[A+(t[A+16>>2]==(M|0)?16:20)>>2]=u,!u)break n}if(t[u+24>>2]=A,m=t[M+16>>2],m&&(t[u+16>>2]=m,t[m+24>>2]=u),m=t[M+20>>2],!m)break n;t[u+20>>2]=m,t[m+24>>2]=u}if(t[y+4>>2]=x|1,t[x+y>>2]=x,t[12931]!=(y|0))break t;t[12928]=x;return}t[M+4>>2]=u&-2,t[y+4>>2]=x|1,t[x+y>>2]=x}if(x>>>0<=255){u=(x&-8)+51744|0,m=t[12926],x=1<<(x>>>3);t:{if(!(m&x)){t[12926]=x|m,x=u;break t}x=t[u+8>>2]}t[u+8>>2]=y,t[x+12>>2]=y,t[y+12>>2]=u,t[y+8>>2]=x;return}S=31,x>>>0<=16777215&&(u=ri(x>>>8|0),S=((x>>>38-u&1)-(u<<1)|0)+62|0),t[y+28>>2]=S,t[y+16>>2]=0,t[y+20>>2]=0,O=(S<<2)+52008|0;t:{n:{m=t[12927],u=1<>2]=y,t[y+24>>2]=O;break r}for(S=x<<((S|0)!=31?25-(S>>>1|0)|0:0),u=t[O>>2];;){if(m=u,(t[u+4>>2]&-8)==(x|0))break n;if(u=S>>>29|0,S=S<<1,O=m+(u&4)|0,u=t[O+16>>2],!u)break}t[O+16>>2]=y,t[y+24>>2]=m}t[y+12>>2]=y,t[y+8>>2]=y;break t}x=t[m+8>>2],t[x+12>>2]=y,t[m+8>>2]=y,t[y+24>>2]=0,t[y+12>>2]=m,t[y+8>>2]=x}x=t[12934]-1|0,t[12934]=x||-1}}function Ic(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0;M=x+u|0,m=t[x+4>>2];e:{t:{if(m&1)break t;if(!(m&3))break e;m=t[x>>2],u=m+u|0;n:{if(x=x-m|0,(x|0)!=t[12931]){if(m>>>0<=255){if(S=t[x+8>>2],m=m>>>3|0,y=t[x+12>>2],(y|0)!=(S|0))break n;G=51704,H=t[12926]&D2(m),t[G>>2]=H;break t}A=t[x+24>>2],m=t[x+12>>2];r:{if((m|0)!=(x|0)){y=t[x+8>>2],t[y+12>>2]=m,t[m+8>>2]=y;break r}i:{if(S=x+20|0,y=t[S>>2],y||(S=x+16|0,y=t[S>>2],y))break i;m=0;break r}for(;O=S,m=y,S=m+20|0,y=t[S>>2],!(!y&&(S=m+16|0,y=t[m+16>>2],!y)););t[O>>2]=0}if(!A)break t;S=t[x+28>>2],y=(S<<2)+52008|0;r:{if(t[y>>2]==(x|0)){if(t[y>>2]=m,m)break r;G=51708,H=t[12927]&D2(S),t[G>>2]=H;break t}if(t[A+(t[A+16>>2]==(x|0)?16:20)>>2]=m,!m)break t}if(t[m+24>>2]=A,y=t[x+16>>2],y&&(t[m+16>>2]=y,t[y+24>>2]=m),y=t[x+20>>2],!y)break t;t[m+20>>2]=y,t[y+24>>2]=m;break t}if(m=t[M+4>>2],(m&3)!=3)break t;t[12928]=u,t[M+4>>2]=m&-2,t[x+4>>2]=u|1,t[M>>2]=u;return}t[S+12>>2]=y,t[y+8>>2]=S}m=t[M+4>>2];t:{if(!(m&2)){if(t[12932]==(M|0)){if(t[12932]=x,u=t[12929]+u|0,t[12929]=u,t[x+4>>2]=u|1,t[12931]!=(x|0))break e;t[12928]=0,t[12931]=0;return}if(t[12931]==(M|0)){t[12931]=x,u=t[12928]+u|0,t[12928]=u,t[x+4>>2]=u|1,t[x+u>>2]=u;return}u=(m&-8)+u|0;n:{if(m>>>0<=255){if(S=t[M+8>>2],m=m>>>3|0,y=t[M+12>>2],(y|0)==(S|0)){G=51704,H=t[12926]&D2(m),t[G>>2]=H;break n}t[S+12>>2]=y,t[y+8>>2]=S;break n}A=t[M+24>>2],m=t[M+12>>2];r:{if((M|0)!=(m|0)){y=t[M+8>>2],t[y+12>>2]=m,t[m+8>>2]=y;break r}i:{if(y=M+20|0,S=t[y>>2],S||(y=M+16|0,S=t[y>>2],S))break i;m=0;break r}for(;O=y,m=S,y=m+20|0,S=t[y>>2],!(!S&&(y=m+16|0,S=t[m+16>>2],!S)););t[O>>2]=0}if(!A)break n;S=t[M+28>>2],y=(S<<2)+52008|0;r:{if(t[y>>2]==(M|0)){if(t[y>>2]=m,m)break r;G=51708,H=t[12927]&D2(S),t[G>>2]=H;break n}if(t[A+(t[A+16>>2]==(M|0)?16:20)>>2]=m,!m)break n}if(t[m+24>>2]=A,y=t[M+16>>2],y&&(t[m+16>>2]=y,t[y+24>>2]=m),y=t[M+20>>2],!y)break n;t[m+20>>2]=y,t[y+24>>2]=m}if(t[x+4>>2]=u|1,t[x+u>>2]=u,t[12931]!=(x|0))break t;t[12928]=u;return}t[M+4>>2]=m&-2,t[x+4>>2]=u|1,t[x+u>>2]=u}if(u>>>0<=255){m=(u&-8)+51744|0,y=t[12926],u=1<<(u>>>3);t:{if(!(y&u)){t[12926]=u|y,u=m;break t}u=t[m+8>>2]}t[m+8>>2]=x,t[u+12>>2]=x,t[x+12>>2]=m,t[x+8>>2]=u;return}S=31,u>>>0<=16777215&&(m=ri(u>>>8|0),S=((u>>>38-m&1)-(m<<1)|0)+62|0),t[x+28>>2]=S,t[x+16>>2]=0,t[x+20>>2]=0,O=(S<<2)+52008|0;t:{y=t[12927],m=1<>2]=x,t[x+24>>2]=O;break n}for(S=u<<((S|0)!=31?25-(S>>>1|0)|0:0),m=t[O>>2];;){if(y=m,(t[m+4>>2]&-8)==(u|0))break t;if(m=S>>>29|0,S=S<<1,O=y+(m&4)|0,m=t[O+16>>2],!m)break}t[O+16>>2]=x,t[x+24>>2]=y}t[x+12>>2]=x,t[x+8>>2]=x;return}u=t[y+8>>2],t[u+12>>2]=x,t[y+8>>2]=x,t[x+24>>2]=0,t[x+12>>2]=y,t[x+8>>2]=u}}function m5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;M=Nt-112|0,Nt=M,Y=1024;e:{t:{if(A=oi(1,1024),A){for(se=M+88|4,Q=M+108|0;;){n:{r:{i:{if((js(u,M+104|0,8,m)|0)!=8)break i;ue(M+104|0,M+88|0,4),ue(Q,se,4),G=8;a:{s:{o:{u:switch(t[M+88>>2]){case 0:if(y=t[u+12>>2],O=y,S=t[u+8>>2],y|S?(H=t[u+56>>2],y=S-H|0,S=O-(t[u+60>>2]+(S>>>0>>0)|0)|0):(y=0,S=0),y>>>0<4294967288&(S|0)<=0|(S|0)<0)break o;vt(m,1,18716,0);break i;case 1:break u;default:break a}if((js(u,M+104|0,8,m)|0)!=8)break i;if(ue(M+104|0,M+100|0,4),!t[M+100>>2])break s;vt(m,1,18716,0);break i}t[M+88>>2]=y+8;break a}ue(Q,M+88|0,4),G=16}if(y=t[M+92>>2],(y|0)==1785737827){if(u=t[x+100>>2],u&4){t[x+100>>2]=u|8;break i}vt(m,1,9159,0),Gt(A),x=0;break e}if(S=t[M+88>>2],!S){vt(m,1,5652,0),Gt(A),x=0;break e}if(S>>>0>>0){t[M+4>>2]=y,t[M>>2]=S,vt(m,1,25270,M);break t}a:{s:{o:{u:{l:{h:{f:{p:{c:{m:{if((y|0)<=1668246641){if((y|0)==1651532643)break p;if((y|0)==1667523942)break h;if((y|0)!=1668112752)break m;O=30976;break l}if((y|0)<=1783635999){if((y|0)==1668246642)break c;if(O=30944,(y|0)==1768449138)break l;if((y|0)!=1718909296)break m;O=30920;break o}if((y|0)==1885564018)break f;if((y|0)==1783636e3)break u;if(O=30928,(y|0)==1785737832)break o}if(y=t[x+100>>2],y&1)break a;vt(m,1,3925,0),Gt(A),x=0;break e}O=30952;break l}O=30960;break l}O=30968;break l}O=30984}if(t[M+76>>2]=y&255,t[M+64>>2]=y>>>24,t[M+72>>2]=y>>>8&255,t[M+68>>2]=y>>>16&255,vt(m,2,3874,M- -64|0),S=S-G|0,xe[x+100|0]&4)break s;if(y=t[M+92>>2],t[M+48>>2]=y>>>24,t[M+60>>2]=y&255,t[M+52>>2]=y>>>16&255,t[M+56>>2]=y>>>8&255,vt(m,2,16297,M+48|0),t[x+100>>2]=t[x+100>>2]|2147483647,y=Zt[t[u+40>>2]](u,S,0,m)|0,!Gi&(y|0)==(S|0))continue;vt(m,1,6241,0),Gt(A),x=0;break e}O=30912}S=S-G|0}if(y=S,G=t[u+12>>2],H=G,S=t[u+8>>2],G|S?(re=t[u+56>>2],G=S-re|0,S=H-(t[u+60>>2]+(S>>>0>>0)|0)|0):(G=0,S=0),(S|0)<=0&y>>>0>G>>>0|(S|0)<0){O=t[M+88>>2],S=t[M+92>>2],x=t[u+8>>2],x|t[u+12>>2]?x=x-t[u+56>>2]|0:x=0,t[M+40>>2]=x,t[M+36>>2]=y,t[M+32>>2]=S&255,t[M+20>>2]=S>>>24,t[M+16>>2]=O,t[M+28>>2]=S>>>8&255,t[M+24>>2]=S>>>16&255,vt(m,1,28012,M+16|0);break t}if(y>>>0<=Y>>>0){S=A;break n}if(Y=y,S=Wi(A,y),S)break n;Gt(A),vt(m,1,4056,0),x=0;break e}if(!(y&2)){vt(m,1,3995,0),Gt(A),x=0;break e}if(t[x+100>>2]=y|2147483647,y=S-G|0,S=Zt[t[u+40>>2]](u,y,0,m)|0,!Gi&(y|0)==(S|0))continue;if(!(xe[x+100|0]&8))break r;vt(m,2,6241,0)}Gt(A),x=1;break e}vt(m,1,6241,0),Gt(A),x=0;break e}if((js(u,S,y,m)|0)!=(y|0)){vt(m,1,6291,0),Gt(S),x=0;break e}if(A=S,!(Zt[t[O+4>>2]](x,S,y,m)|0))break}Gt(A),x=0;break e}vt(m,1,8406,0),x=0;break e}Gt(A),x=0}return Nt=M+112|0,x|0}function xp(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0;if(G=t[x+24>>2],A=t[G+16>>2],A){for(S=t[G+24>>2],y=t[t[t[x+20>>2]>>2]+20>>2];H=M,M=t[S+24>>2],M=(M>>>3|0)+((M&7)!=0)|0,M=H+De(De(t[y+12>>2]-t[y+4>>2]|0,t[y+8>>2]-t[y>>2]|0),(M|0)==3?4:M)|0,y=y+76|0,S=S+52|0,O=O+1|0,(A|0)!=(O|0););if(y=(m|0)==(M|0),!(!A|(m|0)!=(M|0)))for(A=t[G+24>>2],M=t[t[t[x+20>>2]>>2]+20>>2],x=0;;){m=De(t[M+12>>2]-t[M+4>>2]|0,t[M+8>>2]-t[M>>2]|0);e:{t:{n:{r:switch(y=t[A+24>>2],y=(y>>>3|0)+((y&7)!=0)|0,((y|0)==3?4:y)-1|0){case 3:break t;case 1:break n;case 0:break r;default:break e}if(y=t[M+36>>2],t[A+32>>2]){if(!m)break e;if(m>>>0>=8)for(O=m&-8,S=0;t[y>>2]=dt[u|0],t[y+4>>2]=dt[u+1|0],t[y+8>>2]=dt[u+2|0],t[y+12>>2]=dt[u+3|0],t[y+16>>2]=dt[u+4|0],t[y+20>>2]=dt[u+5|0],t[y+24>>2]=dt[u+6|0],t[y+28>>2]=dt[u+7|0],y=y+32|0,u=u+8|0,S=S+8|0,(O|0)!=(S|0););if(S=0,m=m&7,!m)break e;for(;t[y>>2]=dt[u|0],y=y+4|0,u=u+1|0,S=S+1|0,(m|0)!=(S|0););break e}if(!m)break e;if(m>>>0>=8)for(O=m&-8,S=0;t[y>>2]=xe[u|0],t[y+4>>2]=xe[u+1|0],t[y+8>>2]=xe[u+2|0],t[y+12>>2]=xe[u+3|0],t[y+16>>2]=xe[u+4|0],t[y+20>>2]=xe[u+5|0],t[y+24>>2]=xe[u+6|0],t[y+28>>2]=xe[u+7|0],y=y+32|0,u=u+8|0,S=S+8|0,(O|0)!=(S|0););if(S=0,m=m&7,!m)break e;for(;t[y>>2]=xe[u|0],y=y+4|0,u=u+1|0,S=S+1|0,(m|0)!=(S|0););break e}if(y=t[M+36>>2],t[A+32>>2]){if(!m)break e;if(m>>>0>=8)for(O=m&-8,S=0;t[y>>2]=tn[u>>1],t[y+4>>2]=tn[u+2>>1],t[y+8>>2]=tn[u+4>>1],t[y+12>>2]=tn[u+6>>1],t[y+16>>2]=tn[u+8>>1],t[y+20>>2]=tn[u+10>>1],t[y+24>>2]=tn[u+12>>1],t[y+28>>2]=tn[u+14>>1],y=y+32|0,u=u+16|0,S=S+8|0,(O|0)!=(S|0););if(S=0,m=m&7,!m)break e;for(;t[y>>2]=tn[u>>1],y=y+4|0,u=u+2|0,S=S+1|0,(m|0)!=(S|0););break e}if(!m)break e;if(m>>>0>=8)for(O=m&-8,S=0;t[y>>2]=Qn[u>>1],t[y+4>>2]=Qn[u+2>>1],t[y+8>>2]=Qn[u+4>>1],t[y+12>>2]=Qn[u+6>>1],t[y+16>>2]=Qn[u+8>>1],t[y+20>>2]=Qn[u+10>>1],t[y+24>>2]=Qn[u+12>>1],t[y+28>>2]=Qn[u+14>>1],y=y+32|0,u=u+16|0,S=S+8|0,(O|0)!=(S|0););if(S=0,m=m&7,!m)break e;for(;t[y>>2]=Qn[u>>1],y=y+4|0,u=u+2|0,S=S+1|0,(m|0)!=(S|0););break e}if(!m)break e;if(y=t[M+36>>2],m>>>0>=8)for(O=m&-8,S=0;t[y>>2]=t[u>>2],t[y+4>>2]=t[u+4>>2],t[y+8>>2]=t[u+8>>2],t[y+12>>2]=t[u+12>>2],t[y+16>>2]=t[u+16>>2],t[y+20>>2]=t[u+20>>2],t[y+24>>2]=t[u+24>>2],t[y+28>>2]=t[u+28>>2],y=y+32|0,u=u+32|0,S=S+8|0,(O|0)!=(S|0););if(S=0,m=m&7,!m)break e;for(;t[y>>2]=t[u>>2],y=y+4|0,u=u+4|0,S=S+1|0,(m|0)!=(S|0););}if(M=M+76|0,A=A+52|0,y=1,x=x+1|0,!(x>>>0>2]))break}return y}return!m}function y4(x,u,m,y,S){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0;var M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0,$n=0,er=0,rr=0;_e=Nt-16|0,Nt=_e;e:{if(!m){vt(y,1,22150,0);break e}if(Yt=t[m+16>>2],A=t[x+72>>2],Yt>>>0>2]){vt(y,1,21154,0);break e}if(O=t[x+104>>2],M=De(O,t[x+108>>2]),M>>>0<=S>>>0){t[_e>>2]=S,t[_e+4>>2]=M-1,vt(y,1,28694,_e),O=0;break e}if(M=(S>>>0)/(O>>>0)|0,G=S-De(M,O)|0,O=t[x+84>>2]+De(G,t[x+92>>2])|0,t[m>>2]=O,A=t[A>>2],Oe=O>>>0>A>>>0?O:A,t[m>>2]=Oe,O=t[x+84>>2]+De(t[x+92>>2],G+1|0)|0,t[m+8>>2]=O,A=t[t[x+72>>2]+8>>2],O=O>>>0>>0?O:A,t[m+8>>2]=O,A=t[x+88>>2]+De(M,t[x+96>>2])|0,t[m+4>>2]=A,G=t[t[x+72>>2]+4>>2],Ne=A>>>0>G>>>0?A:G,t[m+4>>2]=Ne,M=t[x+88>>2]+De(t[x+96>>2],M+1|0)|0,t[m+12>>2]=M,A=t[t[x+72>>2]+12>>2],M=M>>>0>>0?M:A,t[m+12>>2]=M,A=t[x+72>>2],Q=t[A+16>>2],Q)for(un=M,Cn=M>>31,Tn=O,Rn=O>>31,bn=Ne>>31,$n=Oe>>31,er=t[A+24>>2],O=t[m+24>>2];A=t[(er+De(me,52)|0)+40>>2],t[O+40>>2]=A,Y=t[O>>2],$e=Y>>31,en=$e-!Y|0,re=$n+en|0,Ze=Y-1|0,M=Oe+Ze|0,re=M>>>0>>0?re+1|0:re,kt=I0(M,re,Y,$e),t[O+16>>2]=kt,H=t[O+4>>2],se=H>>31,re=se-!H|0,M=bn+re|0,he=H-1|0,G=Ne+he|0,M=G>>>0>>0?M+1|0:M,Rt=I0(G,M,H,se),t[O+20>>2]=Rt,G=A&31,(A&63)>>>0>=32?(M=-1<>>32-G,G=-1<>>0>he>>>0?re+1|0:re,H=I0(he,re,H,se),M=(H>>31)+M|0,se=H,H=G+H|0,M=se>>>0>H>>>0?M+1|0:M,se=H,H=A&31,H=(A&63)>>>0>=32?M>>H:((1<>>H,M=jt+(Rt>>31)|0,he=H,se=G+Rt|0,M=se>>>0>>0?M+1|0:M,H=A&31,t[O+12>>2]=he-((A&63)>>>0>=32?M>>H:((1<>>H),M=Rn+en|0,H=Ze+Tn|0,M=H>>>0>>0?M+1|0:M,Y=I0(H,M,Y,$e),M=jt+(Y>>31)|0,Y=G+Y|0,M=Y>>>0>>0?M+1|0:M,H=Y,Y=A&31,Y=(A&63)>>>0>=32?M>>Y:((1<>>Y,M=jt+(kt>>31)|0,H=G,G=G+kt|0,M=H>>>0>G>>>0?M+1|0:M,H=Y,Y=G,G=A&31,t[O+8>>2]=H-((A&63)>>>0>=32?M>>G:((1<>>G),O=O+52|0,me=me+1|0,(me|0)!=(Q|0););if(Q>>>0>>0){for(O=t[m+24>>2];M=De(Q,52),Gt(t[(M+O|0)+44>>2]),O=t[m+24>>2],t[(M+O|0)+44>>2]=0,Q=Q+1|0,Q>>>0>2];);t[m+16>>2]=t[t[x+72>>2]+16>>2]}if(O=t[x+76>>2],O&&di(O),M=Le(),t[x+76>>2]=M,O=0,!M||(Hh(m,M),t[x+44>>2]=S,!vn(t[x+192>>2],124,y)))break e;M=t[x+192>>2],A=t[M>>2],Q=t[M+8>>2];t:{if(A){if(O=1,(A|0)!=1)for(G=A&-2,me=0;;){S=0;n:{if(!O||(S=0,!(Zt[t[Q>>2]](x,u,y)|0)))break n;S=(Zt[t[Q+4>>2]](x,u,y)|0)!=0}if(O=S,Q=Q+8|0,me=me+2|0,(G|0)==(me|0))break}n:{r:{if(A&1){if(!O)break r;O=(Zt[t[Q>>2]](x,u,y)|0)!=0}if(t[M>>2]=0,!(O&1))break n;break t}t[M>>2]=0}di(t[x+72>>2]),O=0,t[x+72>>2]=0;break e}t[M>>2]=0}O=D4(x,m)}return Nt=_e+16|0,O|0}function Ms(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;S=Nt-112|0,Nt=S,t[S+104>>2]=0;e:{if((m|0)!=8){vt(y,1,6578,0),vt(y,1,6578,0);break e}if(ue(u,x+204|0,2),ue(u+2|0,S+108|0,4),ue(u+6|0,S+100|0,1),ue(u+7|0,S+104|0,1),O=t[x+204>>2],G=t[x+104>>2],O>>>0>=De(G,t[x+108>>2])>>>0){t[S+96>>2]=O,vt(y,1,17436,S+96|0);break e}H=(O>>>0)/(G>>>0)|0,m=t[x+156>>2];t:{if(u=t[x+44>>2],!((u|0)<0|(u|0)==(O|0))){A=t[S+100>>2];break t}if(A=t[(m+De(O,5644)|0)+5588>>2]+1|0,u=t[S+100>>2],(A|0)==(u|0))break t;t[S+88>>2]=A,t[S+84>>2]=u,t[S+80>>2]=O,vt(y,1,17460,S+80|0);break e}t[(m+De(O,5644)|0)+5588>>2]=A;t:{if(u=t[S+108>>2],u-1>>>0<=12){if((u|0)!=12)break t;t[S+48>>2]=12,vt(y,2,22983,S+48|0),u=t[S+108>>2]}u||(vt(y,4,21279,0),t[x+56>>2]=1);n:{r:{i:{a:{if(A=m+De(O,5644)|0,M=t[A+5592>>2],M){if(u=t[S+100>>2],u>>>0>>0)break a;t[S+36>>2]=M,t[S+32>>2]=u,vt(y,1,8633,S+32|0),t[x+56>>2]=1,M=0;break e}if(m=t[S+104>>2],m)break i;break n}if(m=t[S+104>>2],!m)break r}if(M=(xe[x+68|0]>>>4&1)+m|0,t[S+104>>2]=M,A=A+5592|0,m=t[A>>2],u=t[S+100>>2],!(!m|m>>>0>u>>>0)){t[S+20>>2]=m,t[S+16>>2]=u,vt(y,1,8534,S+16|0),t[x+56>>2]=1,M=0;break e}if(u>>>0>=M>>>0){t[S+4>>2]=M,t[S>>2]=u,vt(y,1,8733,S),t[x+56>>2]=1,M=0;break e}t[A>>2]=M}if((t[S+100>>2]+1|0)!=(M|0))break n;dt[x+68|0]=xe[x+68|0]|1}u=t[S+108>>2],t[x+8>>2]=16,t[x+24>>2]=t[x+56>>2]?0:u-12|0,u=t[x+44>>2];n:{if((u|0)==-1){if(M=4,u=O-De(H,G)|0,u>>>0>2]|u>>>0>=ln[x+36>>2]|H>>>0>2])break n;M=(H>>>0>=ln[x+40>>2])<<2;break n}M=((u|0)!=t[x+204>>2])<<2}if(dt[x+68|0]=xe[x+68|0]&251|M,M=1,u=t[x+200>>2],!u)break e;if(A=t[u+40>>2],m=t[x+204>>2],u=A+De(m,40)|0,t[u>>2]=m,t[u+12>>2]=t[S+100>>2],O=t[S+104>>2],O){if(t[u+4>>2]=O,t[u+8>>2]=t[S+104>>2],m=t[S+104>>2],u=t[u+16>>2],!u){if(u=oi(m,24),t[(t[t[x+200>>2]+40>>2]+De(t[x+204>>2],40)|0)+16>>2]=u,u)break e;M=0,vt(y,1,16475,0);break e}if(u=Wi(u,De(m,24)),m=t[t[x+200>>2]+40>>2]+De(t[x+204>>2],40)|0,!u){Gt(t[m+16>>2]),M=0,t[(t[t[x+200>>2]+40>>2]+De(t[x+204>>2],40)|0)+16>>2]=0,vt(y,1,16475,0);break e}t[m+16>>2]=u;break e}n:{if(u=t[u+16>>2],u||(t[(De(m,40)+A|0)+8>>2]=10,u=oi(10,24),A=t[t[x+200>>2]+40>>2],m=t[x+204>>2],O=A+De(m,40)|0,t[O+16>>2]=u,u))break n;M=0,t[O+8>>2]=0,vt(y,1,16475,0);break e}if(O=t[S+100>>2],m=De(m,40)+A|0,O>>>0>2])break e;if(A=m,m=O+1|0,t[A+8>>2]=m,u=Wi(u,De(m,24)),m=t[t[x+200>>2]+40>>2]+De(t[x+204>>2],40)|0,!u){Gt(t[m+16>>2]),M=0,x=t[t[x+200>>2]+40>>2]+De(t[x+204>>2],40)|0,t[x+8>>2]=0,t[x+16>>2]=0,vt(y,1,16475,0);break e}t[m+16>>2]=u;break e}t[S+64>>2]=u,vt(y,1,23252,S- -64|0)}return Nt=S+112|0,M|0}function Ot(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0;Y=t[x+8>>2],G=Y+t[x+4>>2]|0;e:{if(!t[x+12>>2]){if((G|0)<2|(y|0)<=0)break e;for(_e=G&-4,se=G&3,Oe=G&1,Ne=G-4>>>1|0,M=t[x>>2],S=G-1|0,$e=M+(S<<2)|0,Ze=De(m,Y)<<2,kt=G>>>0<4,Rt=S>>>0<3,jt=De(S>>>1|0,m)<<2;;){if(S=t[u+Ze>>2],x=t[u>>2]-(S+1>>1)|0,O=0,A=0,!kt)for(;re=A+1|0,Yt=t[(De(re,m)<<2)+u>>2],Q=t[(De(Y+re|0,m)<<2)+u>>2],he=O<<2,t[he+M>>2]=x,H=x,x=Yt-((S+Q|0)+2>>2)|0,t[M+(he|4)>>2]=(H+x>>1)+S,O=O+2|0,H=(A|0)!=(Ne|0),S=Q,A=re,!!H;);if(t[M+(O<<2)>>2]=x,Oe?(O=t[u+jt>>2]-(S+1>>1)|0,t[$e>>2]=O,x=x+O>>1,Q=-2):Q=-1,t[(Q+G<<2)+M>>2]=x+S,S=0,x=0,O=0,!Rt)for(;t[(De(x,m)<<2)+u>>2]=t[M+(x<<2)>>2],A=x|1,t[(De(A,m)<<2)+u>>2]=t[M+(A<<2)>>2],A=x|2,t[(De(A,m)<<2)+u>>2]=t[M+(A<<2)>>2],A=x|3,t[(De(A,m)<<2)+u>>2]=t[M+(A<<2)>>2],x=x+4|0,O=O+4|0,(_e|0)!=(O|0););if(se)for(;t[(De(x,m)<<2)+u>>2]=t[M+(x<<2)>>2],x=x+1|0,S=S+1|0,(se|0)!=(S|0););if(u=u+4|0,me=me+1|0,(me|0)==(y|0))break}break e}t:switch(G-1|0){case 0:if((y|0)<=0)break e;if(y>>>0>=4)for(m=y&-4,x=0;t[u>>2]=t[u>>2]/2,t[u+4>>2]=t[u+4>>2]/2,t[u+8>>2]=t[u+8>>2]/2,t[u+12>>2]=t[u+12>>2]/2,u=u+16|0,x=x+4|0,(m|0)!=(x|0););if(m=y&3,!m)break e;for(x=0;t[u>>2]=t[u>>2]/2,u=u+4|0,x=x+1|0,(m|0)!=(x|0););break e;case 1:if((y|0)<=0)break e;for(x=t[x>>2],O=De(m,Y)<<2;M=u+O|0,A=t[u>>2]-(t[M>>2]+1>>1)|0,t[x+4>>2]=A,M=A+t[M>>2]|0,t[x>>2]=M,t[u>>2]=M,t[(m<<2)+u>>2]=t[x+4>>2],u=u+4|0,S=S+1|0,(S|0)!=(y|0););break e;default:break t}if((G|0)<3|(y|0)<=0)break e;for(_e=G&-4,se=G&3,Oe=G&1,H=t[x>>2],Ne=(H+(G<<2)|0)-4|0,x=G-2|0,$e=H+(x<<2)|0,S=G|-2,Ze=((S+G|0)-3>>>1|0)+1|0,kt=De(m,Y)<<2,Rt=(x+S|0)+1>>>0<2,jt=De((G>>>1|0)-1|0,m)<<2;;){if(Y=u+kt|0,O=t[Y+(m<<2)>>2],x=t[Y>>2],S=t[u>>2]-((O+x|0)+2>>2)|0,t[H>>2]=S+x,A=1,x=1,!Rt)for(;Yt=t[(De(x,m)<<2)+u>>2],re=x+1|0,M=t[Y+(De(re,m)<<2)>>2],he=H+(A<<2)|0,t[he>>2]=S,Q=S,S=Yt-((M+O|0)+2>>2)|0,t[he+4>>2]=(Q+S>>1)+O,A=A+2|0,Q=(x|0)!=(Ze|0),x=re,O=M,!!Q;);t[H+(A<<2)>>2]=S;t:{if(!Oe){x=t[u+jt>>2]-(O+1>>1)|0,t[$e>>2]=(S+x>>1)+O;break t}x=S+O|0}if(t[Ne>>2]=x,S=0,x=0,O=0,G>>>0>=4)for(;t[(De(x,m)<<2)+u>>2]=t[H+(x<<2)>>2],M=x|1,t[(De(M,m)<<2)+u>>2]=t[H+(M<<2)>>2],M=x|2,t[(De(M,m)<<2)+u>>2]=t[H+(M<<2)>>2],M=x|3,t[(De(M,m)<<2)+u>>2]=t[H+(M<<2)>>2],x=x+4|0,O=O+4|0,(_e|0)!=(O|0););if(se)for(;t[(De(x,m)<<2)+u>>2]=t[H+(x<<2)>>2],x=x+1|0,S=S+1|0,(se|0)!=(S|0););if(u=u+4|0,me=me+1|0,(me|0)==(y|0))break}}}function Bh(x,u,m,y,S,M,O){var A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;e:{if(se=De(S,3),A=t[u>>2]>>>se|0,A&2097168||(A=A&495,!A))break e;Q=(xe[A+t[x+108>>2]|0]<<2)+x|0,t[x+104>>2]=Q+28,Y=t[Q+28>>2],G=t[Y>>2],A=t[x+4>>2]-G|0,t[x+4>>2]=A,H=t[x>>2];t:{if(H>>>16>>>0>>0){for(t[x+4>>2]=G,re=t[Y+4>>2],A=A>>>0>>0,t[Q+28>>2]=t[Y+(A?8:12)>>2],Y=A?re:!re,A=t[x+8>>2];;){n:{if(A)break n;if(A=t[x+16>>2],re=A+1|0,Q=xe[A+1|0],xe[A|0]==255){if(Q>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,H=H+65280|0,A=8;break n}t[x+16>>2]=re,H=(Q<<9)+H|0,A=7;break n}t[x+16>>2]=re,A=8,H=(Q<<8)+H|0}if(A=A-1|0,t[x+8>>2]=A,H=H<<1,t[x>>2]=H,G=G<<1,t[x+4>>2]=G,!(G>>>0<32768))break}A=G;break t}if(H=H-(G<<16)|0,t[x>>2]=H,!(A&32768)){for(re=t[Y+4>>2],G=A>>>0>>0,t[Q+28>>2]=t[Y+(G?12:8)>>2],Y=G?!re:re,G=t[x+8>>2];;){n:{if(G)break n;if(G=t[x+16>>2],re=G+1|0,Q=xe[G+1|0],xe[G|0]==255){if(Q>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,H=H+65280|0,G=8;break n}t[x+16>>2]=re,H=(Q<<9)+H|0,G=7;break n}t[x+16>>2]=re,G=8,H=(Q<<8)+H|0}if(G=G-1|0,t[x+8>>2]=G,H=H<<1,t[x>>2]=H,A=A<<1,t[x+4>>2]=A,!(A>>>0<32768))break}break t}Y=t[Y+4>>2]}t:{if(!Y)break t;he=u-4|0,G=t[u>>2],Y=t[u+4>>2]>>>se+17&4|(t[he>>2]>>>se+19&1|(G>>>se+16&64|G>>>se&170|G>>>(S?se+12|0:14)&16)),re=(xe[Y+38736|0]<<2)+x|0,t[x+104>>2]=re+28,Q=t[re+28>>2],G=t[Q>>2],A=A-G|0,t[x+4>>2]=A,me=xe[Y+38992|0];n:{if(H>>>16>>>0>>0){for(t[x+4>>2]=G,Y=t[Q+4>>2],A=A>>>0>>0,t[re+28>>2]=t[Q+(A?8:12)>>2],Q=A?Y:!Y,A=t[x+8>>2];;){r:{if(A)break r;if(A=t[x+16>>2],re=A+1|0,Y=xe[A+1|0],xe[A|0]==255){if(Y>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,H=H+65280|0,A=8;break r}t[x+16>>2]=re,H=(Y<<9)+H|0,A=7;break r}t[x+16>>2]=re,A=8,H=(Y<<8)+H|0}if(A=A-1|0,t[x+8>>2]=A,H=H<<1,t[x>>2]=H,G=G<<1,t[x+4>>2]=G,!(G>>>0<32768))break}break n}if(Y=H-(G<<16)|0,t[x>>2]=Y,!(A&32768)){for(H=t[Q+4>>2],G=A>>>0>>0,t[re+28>>2]=t[Q+(G?12:8)>>2],Q=G?!H:H,H=t[x+8>>2];;){r:{if(H)break r;if(H=t[x+16>>2],re=H+1|0,G=xe[H+1|0],xe[H|0]==255){if(G>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,Y=Y+65280|0,H=8;break r}t[x+16>>2]=re,Y=(G<<9)+Y|0,H=7;break r}t[x+16>>2]=re,H=8,Y=(G<<8)+Y|0}if(H=H-1|0,t[x+8>>2]=H,Y=Y<<1,t[x>>2]=Y,A=A<<1,t[x+4>>2]=A,!(A>>>0<32768))break}break n}Q=t[Q+4>>2]}if(x=m,m=Q^me,t[x>>2]=m?0-y|0:y,t[he>>2]=t[he>>2]|32<>2]=t[u>>2]|(m<<19|16)<>2]=t[u+4>>2]|8<>2]=t[x+4>>2]|32768,t[x>>2]=t[x>>2]|m<<31|65536,x=x-4|0,t[x>>2]=t[x>>2]|131072),(S|0)!=3)break t;x=(M<<2)+u|0,t[x+4>>2]=t[x+4>>2]|1,t[x>>2]=t[x>>2]|m<<18|2,x=x-4|0,t[x>>2]=t[x>>2]|4}t[u>>2]=t[u>>2]|2097152<>2]>>>re|0,O&2097168)break e;Y=(xe[t[x+108>>2]+(O&495)|0]<<2)+x|0,t[x+104>>2]=Y+28,H=t[Y+28>>2],A=t[H>>2],O=t[x+4>>2]-A|0,t[x+4>>2]=O,G=t[x>>2];t:{if(G>>>16>>>0>>0){for(t[x+4>>2]=A,Q=t[H+4>>2],O=O>>>0>>0,t[Y+28>>2]=t[H+(O?8:12)>>2],H=O?Q:!Q,O=t[x+8>>2];;){n:{if(O)break n;if(O=t[x+16>>2],Q=O+1|0,Y=xe[O+1|0],xe[O|0]==255){if(Y>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,G=G+65280|0,O=8;break n}t[x+16>>2]=Q,G=(Y<<9)+G|0,O=7;break n}t[x+16>>2]=Q,O=8,G=(Y<<8)+G|0}if(O=O-1|0,t[x+8>>2]=O,G=G<<1,t[x>>2]=G,A=A<<1,t[x+4>>2]=A,!(A>>>0<32768))break}O=A;break t}if(G=G-(A<<16)|0,t[x>>2]=G,!(O&32768)){for(Q=t[H+4>>2],A=O>>>0>>0,t[Y+28>>2]=t[H+(A?12:8)>>2],H=A?!Q:Q,A=t[x+8>>2];;){n:{if(A)break n;if(A=t[x+16>>2],Q=A+1|0,Y=xe[A+1|0],xe[A|0]==255){if(Y>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,G=G+65280|0,A=8;break n}t[x+16>>2]=Q,G=(Y<<9)+G|0,A=7;break n}t[x+16>>2]=Q,A=8,G=(Y<<8)+G|0}if(A=A-1|0,t[x+8>>2]=A,G=G<<1,t[x>>2]=G,O=O<<1,t[x+4>>2]=O,!(O>>>0<32768))break}break t}H=t[H+4>>2]}if(!H)break e;se=u-4|0,A=t[u>>2],he=t[u+4>>2]>>>re+17&4|(t[se>>2]>>>re+19&1|(A>>>re+16&64|A>>>re&170|A>>>(S?re+12|0:14)&16)),Q=(xe[he+38736|0]<<2)+x|0,t[x+104>>2]=Q+28,Y=t[Q+28>>2],A=t[Y>>2],O=O-A|0,t[x+4>>2]=O;t:{if(G>>>16>>>0>>0){for(t[x+4>>2]=A,H=t[Y+4>>2],O=O>>>0>>0,t[Q+28>>2]=t[Y+(O?8:12)>>2],Y=O?H:!H,O=t[x+8>>2];;){n:{if(O)break n;if(O=t[x+16>>2],Q=O+1|0,H=xe[O+1|0],xe[O|0]==255){if(H>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,G=G+65280|0,O=8;break n}t[x+16>>2]=Q,G=(H<<9)+G|0,O=7;break n}t[x+16>>2]=Q,O=8,G=(H<<8)+G|0}if(O=O-1|0,t[x+8>>2]=O,G=G<<1,t[x>>2]=G,A=A<<1,t[x+4>>2]=A,!(A>>>0<32768))break}break t}if(H=G-(A<<16)|0,t[x>>2]=H,!(O&32768)){for(G=t[Y+4>>2],A=O>>>0>>0,t[Q+28>>2]=t[Y+(A?12:8)>>2],Y=A?!G:G,G=t[x+8>>2];;){n:{if(G)break n;if(G=t[x+16>>2],Q=G+1|0,A=xe[G+1|0],xe[G|0]==255){if(A>>>0>=144){t[x+12>>2]=t[x+12>>2]+1,H=H+65280|0,G=8;break n}t[x+16>>2]=Q,H=(A<<9)+H|0,G=7;break n}t[x+16>>2]=Q,G=8,H=(A<<8)+H|0}if(G=G-1|0,t[x+8>>2]=G,H=H<<1,t[x>>2]=H,O=O<<1,t[x+4>>2]=O,!(O>>>0<32768))break}break t}Y=t[Y+4>>2]}if(O=0-y|0,A=y,y=xe[he+38992|0]^Y,t[m>>2]=y?O:A,t[se>>2]=t[se>>2]|32<>2]=t[u>>2]|(y<<19|16)<>2]=t[u+4>>2]|8<>2]<<2)+u|0,t[m+4>>2]=t[m+4>>2]|32768,t[m>>2]=t[m>>2]|y<<31|65536,m=m-4|0,t[m>>2]=t[m>>2]|131072),(S|0)!=3)break e;x=(t[x+124>>2]<<2)+u|0,t[x+4>>2]=t[x+4>>2]|4,t[x+12>>2]=t[x+12>>2]|1,t[x+8>>2]=t[x+8>>2]|y<<18|2}}function w4(x,u,m,y,S,M,O){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,O=O|0;var A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0;A=Nt-208|0,Nt=A,H=t[x+72>>2];e:{if(!(!(!t[t[x+156>>2]+5596>>2]||t[x+104>>2]!=1|t[x+108>>2]!=1)|t[x+8>>2]==8)){vt(O,1,21198,0);break e}Q=t[u+16>>2];t:{if(!Q)break t;if(Y=t[u+24>>2],Q>>>0>=4)for(re=Q&-4;t[(De(G,52)+Y|0)+40>>2]=t[x+160>>2],t[(De(G|1,52)+Y|0)+40>>2]=t[x+160>>2],t[(De(G|2,52)+Y|0)+40>>2]=t[x+160>>2],t[(De(G|3,52)+Y|0)+40>>2]=t[x+160>>2],G=G+4|0,se=se+4|0,(re|0)!=(se|0););if(Q=Q&3,!Q)break t;for(;t[(De(G,52)+Y|0)+40>>2]=t[x+160>>2],G=G+1|0,he=he+1|0,(Q|0)!=(he|0););}if(!(m|y|S|M)){vt(O,4,10287,0),t[x+28>>2]=0,t[x+32>>2]=0,m=t[x+108>>2],t[x+36>>2]=t[x+104>>2],t[x+40>>2]=m,t[u>>2]=t[H>>2],t[u+4>>2]=t[H+4>>2],t[u+8>>2]=t[H+8>>2],t[u+12>>2]=t[H+12>>2],G=Ef(u,O);break e}if((m|0)<0){t[A>>2]=m,vt(O,1,23939,A),G=0;break e}if(G=t[H+8>>2],G>>>0>>0){t[A+20>>2]=G,t[A+16>>2]=m,vt(O,1,24407,A+16|0),G=0;break e}G=t[H>>2];t:{if(G>>>0>m>>>0){t[A+196>>2]=G,t[A+192>>2]=m,vt(O,2,24759,A+192|0),t[x+28>>2]=0,m=t[H>>2];break t}t[x+28>>2]=(m-t[x+84>>2]>>>0)/ln[x+92>>2]}if(t[u>>2]=m,(y|0)<0){t[A+32>>2]=y,vt(O,1,23875,A+32|0),G=0;break e}if(m=t[H+12>>2],m>>>0>>0){t[A+52>>2]=m,t[A+48>>2]=y,vt(O,1,24234,A+48|0),G=0;break e}m=t[H+4>>2];t:{if(m>>>0>y>>>0){t[A+180>>2]=m,t[A+176>>2]=y,vt(O,2,24584,A+176|0),t[x+32>>2]=0,y=t[H+4>>2];break t}t[x+32>>2]=(y-t[x+88>>2]>>>0)/ln[x+96>>2]}if(t[u+4>>2]=y,G=0,(S|0)<=0){t[A+64>>2]=S,vt(O,1,23809,A- -64|0);break e}if(m=t[H>>2],m>>>0>S>>>0){t[A+84>>2]=m,t[A+80>>2]=S,vt(O,1,24670,A+80|0);break e}m=t[H+8>>2];t:{if(m>>>0>>0){t[A+164>>2]=m,t[A+160>>2]=S,vt(O,2,24319,A+160|0),t[x+36>>2]=t[x+104>>2],S=t[H+8>>2];break t}m=t[x+92>>2],Y=S-t[x+84>>2]|0,Q=Y,y=m+Y|0,re=m>>31,Y=re+(Y>>31)|0,Y=y>>>0>>0?Y+1|0:Y,me=x,_e=I0(y-1|0,Y-!y|0,m,re),t[me+36>>2]=_e}if(t[u+8>>2]=S,(M|0)<=0){t[A+96>>2]=M,vt(O,1,23742,A+96|0);break e}if(m=t[H+4>>2],m>>>0>M>>>0){t[A+116>>2]=m,t[A+112>>2]=M,vt(O,1,24494,A+112|0);break e}m=t[H+12>>2];t:{if(m>>>0>>0){t[A+148>>2]=m,t[A+144>>2]=M,vt(O,2,24145,A+144|0),t[x+40>>2]=t[x+108>>2],M=t[H+12>>2];break t}m=t[x+96>>2],S=M-t[x+88>>2]|0,G=S,y=m+G|0,H=m>>31,S=H+(G>>31)|0,S=y>>>0>>0?S+1|0:S,me=x,_e=I0(y-1|0,S-!y|0,m,H),t[me+40>>2]=_e}if(t[u+12>>2]=M,dt[x+68|0]=xe[x+68|0]|2,G=Ef(u,O),!G){G=0;break e}x=t[u>>2],m=t[u+4>>2],y=t[u+12>>2],t[A+136>>2]=t[u+8>>2],t[A+140>>2]=y,t[A+128>>2]=x,t[A+132>>2]=m,vt(O,4,17203,A+128|0)}return Nt=A+208|0,G|0}function Gh(x,u,m,y,S,M,O,A,G,H,Y,Q){var re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0,bn=0;if(en=t[(t[u+76>>2]+De(m,5644)|0)+5584>>2],un=t[x+24>>2],re=t[u+24>>2],se=(m>>>0)/(re>>>0)|0,m=t[u+4>>2]+De(t[u+12>>2],m-De(re,se)|0)|0,re=t[x>>2],t[y>>2]=m>>>0>re>>>0?m:re,re=0,_e=m,m=m+t[u+12>>2]|0,m=0-(_e>>>0>m>>>0?1:re)|m,re=t[x+8>>2],t[S>>2]=m>>>0>>0?m:re,m=t[u+8>>2]+De(se,t[u+16>>2])|0,re=t[x+4>>2],t[M>>2]=m>>>0>re>>>0?m:re,re=0,u=m+t[u+16>>2]|0,u=0-(u>>>0>>0?1:re)|u,m=t[x+12>>2],t[O>>2]=u>>>0>>0?u:m,t[H>>2]=0,t[Y>>2]=0,t[A>>2]=2147483647,t[G>>2]=2147483647,t[x+16>>2])for(;;){if(m=Q?t[(bn<<2)+Q>>2]:0,u=t[un+4>>2],Ze=u-1|0,me=t[O>>2],se=Ze+me|0,kt=0-!u|0,re=kt,se=c0(se,se>>>0>>0?re+1|0:re,u,0),jt=t[un>>2],Cn=jt-1|0,Ne=t[S>>2],me=Cn+Ne|0,Yt=0-!jt|0,re=Yt,me=c0(me,me>>>0>>0?re+1|0:re,jt,0),re=kt,Ne=t[M>>2],Ze=Ne+Ze|0,Ze=c0(Ze,Ne>>>0>Ze>>>0?re+1|0:re,u,0),re=Yt,kt=t[y>>2],u=kt+Cn|0,re=c0(u,u>>>0>>0?re+1|0:re,jt,0),u=t[en+4>>2],u>>>0>ln[Y>>2]&&(t[Y>>2]=u,u=t[en+4>>2]),u)for(Cn=se,Yt=0,jt=me,kt=re,Tn=0;;){u=u-1|0,re=(Tn<<2)+en|0,se=t[re+944>>2],me=t[re+812>>2],Ne=0,m&&(t[m+4>>2]=se,t[m>>2]=me,Ne=m+8|0),m=u+me|0;e:{if(m>>>0>31||(re=t[un>>2],re>>>0>-1>>>m>>>0))break e;he=t[A>>2],m=re<>2]=m>>>0>he>>>0?he:m}m=u+se|0;e:{if(m>>>0>31||(re=t[un+4>>2],re>>>0>-1>>>m>>>0))break e;he=t[G>>2],m=re<>2]=m>>>0>he>>>0?he:m}if(m=0,he=u&31,(u&63)>>>0>=32?(re=-1<>>32-he),Rt=_e^-1,he=Rt+Cn|0,Rn=re^-1,re=Rn+Yt|0,re=he>>>0>>0?re+1|0:re,$e=0,_e=he,he=u&31,_e=(u&63)>>>0>=32?re>>>he|0:((1<>>he,he=se&31,(se&63)>>>0>=32?(re=1<>>32-he),he=_e+Oe|0,re=re+$e|0,$e=he-1|0,he=(he>>>0>>0?re+1|0:re)-!he|0,re=se&31,he=(se&63)>>>0>=32?he>>>re|0:((1<>>re,re=Yt+Rn|0,Oe=he,$e=Ze+Rt|0,re=$e>>>0>>0?re+1|0:re,he=u&31,re=(u&63)>>>0>=32?re>>>he|0:((1<>>he,he=(re|0)!=(_e|0)?Oe-(re>>>se|0)&-1>>>se:0,re=Yt+Rn|0,se=jt+Rt|0,re=se>>>0>>0?re+1|0:re,$e=0,_e=se,se=u&31,_e=(u&63)>>>0>=32?re>>>se|0:((1<>>se,se=me&31,(me&63)>>>0>=32?(re=1<>>32-se),se=_e+Oe|0,re=re+$e|0,$e=se-1|0,se=(se>>>0>>0?re+1|0:re)-!se|0,re=me&31,se=(me&63)>>>0>=32?se>>>re|0:((1<>>re,re=Yt+Rn|0,Oe=se,Rt=kt+Rt|0,re=Rt>>>0>>0?re+1|0:re,se=u&31,re=(u&63)>>>0>=32?re>>>se|0:((1<>>se,re=(re|0)!=(_e|0)?Oe-(re>>>me|0)&-1>>>me:0,Ne&&(t[Ne+4>>2]=he,t[Ne>>2]=re,m=Ne+8|0),re=De(re,he),re>>>0>ln[H>>2]&&(t[H>>2]=re),Tn=Tn+1|0,!(Tn>>>0>2]))break}if(un=un+52|0,en=en+1080|0,bn=bn+1|0,!(bn>>>0>2]))break}}function Sp(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;O=Nt-16|0,Nt=O,t[x+8>>2]==16?A=t[x+156>>2]+De(t[x+204>>2],5644)|0:A=t[x+12>>2];e:{if(m>>>0<=1){vt(y,1,7880,0),x=0;break e}if(ue(u,O+12|0,2),t[O+12>>2]){vt(y,2,9559,0),x=1;break e}if(m>>>0<=6){vt(y,1,7880,0),x=0;break e}ue(u+2|0,O+8|0,1),H=t[A+5628>>2],x=H;t:{n:{r:{if(S=t[A+5632>>2],!S)break r;for(G=t[O+8>>2];;){if((G|0)==t[x>>2])break r;if(x=x+20|0,M=M+1|0,(S|0)==(M|0))break}break n}if((S|0)!=(M|0))break t}if((S|0)==t[A+5636>>2]){if(x=S+10|0,t[A+5636>>2]=x,x=Wi(H,De(x,20)),!x){Gt(t[A+5628>>2]),t[A+5636>>2]=0,t[A+5628>>2]=0,t[A+5632>>2]=0,vt(y,1,7945,0),x=0;break e}t[A+5628>>2]=x,S=t[A+5632>>2],pi(x+De(S,20)|0,0,De(t[A+5636>>2]-S|0,20)),H=t[A+5628>>2],S=t[A+5632>>2]}x=De(S,20)+H|0,se=1}if(t[x>>2]=t[O+8>>2],ue(u+3|0,O+12|0,2),t[O+12>>2]){vt(y,2,9559,0),x=1;break e}if(ue(u+5|0,O+4|0,2),M=t[O+4>>2],M>>>0>=2){vt(y,2,5377,0),x=1;break e}if(S=m-7|0,M)for(m=u+7|0,H=0;;){if(S>>>0<=2){vt(y,1,7880,0),x=0;break e}if(ue(m,O+12|0,1),t[O+12>>2]!=1){vt(y,2,9062,0),x=1;break e}if(ue(m+1|0,O,2),M=t[O>>2],u=M&32767,t[x+4>>2]=u,G=S-3|0,S=(M>>>15|0)+1|0,Y=De(S,u)+2|0,G>>>0>>0){vt(y,1,7880,0),x=0;break e}if(m=m+3|0,M=0,u)for(;;){if(ue(m,O+12|0,S),t[O+12>>2]!=(M|0)){vt(y,2,10202,0),x=1;break e}if(m=m+S|0,M=M+1|0,!(M>>>0>2]))break}if(ue(m,O,2),S=t[O>>2],u=S&32767,t[O>>2]=u,(u|0)!=t[x+4>>2]){vt(y,2,5690,0),x=1;break e}if(S=(S>>>15|0)+1|0,Q=De(S,u)+3|0,Y=G-Y|0,Q>>>0>Y>>>0){vt(y,1,7880,0),x=0;break e}if(m=m+2|0,M=0,u)for(;;){if(ue(m,O+12|0,S),t[O+12>>2]!=(M|0)){vt(y,2,10202,0),x=1;break e}if(m=m+S|0,M=M+1|0,!(M>>>0>2]))break}ue(m,O+12|0,3),S=t[O+12>>2],t[x+8>>2]=0,t[x+12>>2]=0,dt[x+16|0]=(S>>>16&1|xe[x+16|0]&254)^1,G=S&255,t[O+8>>2]=G;t:{if(!G)break t;if(re=t[A+5620>>2],re)for(M=t[A+5616>>2],u=0;;){if((G|0)==t[M+8>>2]){t[x+8>>2]=M;break t}if(M=M+20|0,u=u+1|0,(re|0)==(u|0))break}vt(y,1,7880,0),x=0;break e}S=S>>>8&255,t[O+8>>2]=S;t:{if(!S)break t;if(G=t[A+5620>>2],G)for(M=t[A+5616>>2],u=0;;){if((S|0)==t[M+8>>2]){t[x+12>>2]=M;break t}if(M=M+20|0,u=u+1|0,(G|0)==(u|0))break}vt(y,1,7880,0),x=0;break e}if(S=Y-Q|0,m=m+3|0,H=H+1|0,!(H>>>0>2]))break}if(S){vt(y,1,7880,0),x=0;break e}if(x=1,!se)break e;t[A+5632>>2]=t[A+5632>>2]+1,x=1}return Nt=O+16|0,x|0}function Oc(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;if(y=t[x+52>>2],H=t[x+72>>2],S=t[H+16>>2],M=S+6|0,M>>>0>ln[x+56>>2]){if(y=Wi(y,M),!y)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7646,0),0;t[x+56>>2]=M,t[x+52>>2]=y}if(lr(y,65400,2),lr(y+2|0,S+4|0,2),lr(y+4|0,t[H+16>>2],2),t[H+16>>2])for(S=y+6|0,y=t[H+24>>2];lr(S,t[y+24>>2]-1|t[y+32>>2]<<7,1),y=y+52|0,S=S+1|0,O=O+1|0,O>>>0>2];);e:{if((Go(u,t[x+52>>2],M,m)|0)!=(M|0))break e;if(Q=t[x+156>>2],G=t[x+204>>2],O=Q+De(G,5644)|0,t[O+5620>>2])for(H=O+5620|0,S=t[O+5616>>2];;){if(y=t[x+52>>2],M=t[S+16>>2],Y=M+10|0,Y>>>0>ln[x+56>>2]){if(y=Wi(y,Y),!y)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,6711,0),0;t[x+56>>2]=Y,t[x+52>>2]=y}if(lr(y,65396,2),lr(y+2|0,M+8|0,2),lr(y+4|0,0,2),lr(y+6|0,xe[S+8|0]|t[S+4>>2]<<8|t[S>>2]<<10,2),lr(y+8|0,0,2),Yr(y+10|0,t[S+12>>2],t[S+16>>2]),(Go(u,t[x+52>>2],Y,m)|0)!=(Y|0))break e;if(S=S+20|0,A=A+1|0,!(A>>>0>2]))break}t:{if(t[O+5632>>2])for(H=O+5632|0,A=t[(Q+De(G,5644)|0)+5628>>2],Q=0;;){if(S=t[x+52>>2],y=t[A+4>>2],M=y>>>0>255,Y=M?2:1,y=De(y,Y)<<1,G=y+19|0,G>>>0>ln[x+56>>2]){if(S=Wi(S,G),!S)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7906,0),0;t[x+56>>2]=G,t[x+52>>2]=S}if(lr(S,65397,2),lr(S+2|0,y+17|0,2),O=0,lr(S+4|0,0,2),lr(S+6|0,t[A>>2],1),lr(S+7|0,0,2),lr(S+9|0,1,2),lr(S+11|0,1,1),y=M<<15,lr(S+12|0,y|t[A+4>>2],2),S=S+14|0,re=0,M=0,t[A+4>>2])for(;lr(S,re,Y),S=S+Y|0,re=re+1|0,M=t[A+4>>2],re>>>0>>0;);if(lr(S,y|M,2),S=S+2|0,t[A+4>>2])for(;lr(S,O,Y),S=S+Y|0,O=O+1|0,O>>>0>2];);if(y=((xe[A+16|0]^-1)&1)<<16,M=t[A+8>>2],M&&(y=t[M+8>>2]|y),M=t[A+12>>2],M&&(y=t[M+8>>2]<<8|y),lr(S,y,3),(Go(u,t[x+52>>2],G,m)|0)!=(G|0))break t;if(A=A+20|0,Q=Q+1|0,!(Q>>>0>2]))break}if(y=t[x+52>>2],H=t[x+156>>2],Q=t[x+204>>2],M=H+De(Q,5644)|0,S=t[M+5632>>2],G=S+5|0,G>>>0>ln[x+56>>2]){if(y=Wi(y,G),!y){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,6877,0);break t}t[x+56>>2]=G,t[x+52>>2]=y}if(lr(y,65399,2),lr(y+2|0,S+3|0,2),re=1,M=M+5632|0,lr(y+4|0,t[M>>2],1),t[M>>2])for(y=y+5|0,S=t[(H+De(Q,5644)|0)+5628>>2],O=0;lr(y,t[S>>2],1),S=S+20|0,y=y+1|0,O=O+1|0,O>>>0>2];);if((Go(u,t[x+52>>2],G,m)|0)==(G|0))break e}re=0}return re|0}function gu(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;M=Nt-144|0,Nt=M;e:{t:{G=t[u+8>>2];n:{if(!G){O=t[u+12>>2];break n}S=t[x+16>>2],A=Qn[G+4>>1],O=t[u+12>>2],!O|!t[O+12>>2]||(S=xe[O+18|0]);r:{if(A){for(G=t[G>>2],u=0;;){if(y=G+De(u,6)|0,Y=Qn[y>>1],Y>>>0>=S>>>0){t[M+132>>2]=S,t[M+128>>2]=Y,vt(m,1,25052,M+128|0),Y=0;break e}i:{if(y=Qn[y+4>>1],!(!y|(y|0)==65535)&&(y=y-1|0,y>>>0>=S>>>0))break i;if(u=u+1|0,(A|0)==(u|0))break r;continue}break}t[M+116>>2]=S,t[M+112>>2]=y,vt(m,1,25052,M+112|0),Y=0;break e}if(S)break t;break n}if(!A)break t;for(;;){for(S=S-1|0,u=0;;){if(Qn[G+De(u,6)>>1]!=(S|0)){if(u=u+1|0,(A|0)!=(u|0))continue;break t}break}if((A|0)==(u&65535))break t;if(!S)break}}if(Y=1,!O||(G=t[O+12>>2],!G))break e;n:{S=xe[O+18|0];r:{if(S){for(u=0,A=1;O=t[x+16>>2],y=Qn[G+(u<<2)>>1],O>>>0<=y>>>0&&(t[M+100>>2]=O,t[M+96>>2]=y,vt(m,1,25052,M+96|0),A=0),u=u+1|0,(S|0)!=(u|0););if(O=oi(S,4),!O)break r;if(u=0,S){for(;;){y=G+(u<<2)|0,Q=xe[y+2|0];i:{if(Q>>>0>=2){t[M+20>>2]=Q,t[M+16>>2]=u,vt(m,1,23213,M+16|0),A=0;break i}if(y=xe[y+3|0],y>>>0>=S>>>0){t[M+80>>2]=y,vt(m,1,23157,M+80|0),A=0;break i}if(H=(y<<2)+O|0,!(!t[H>>2]|(Q|0)!=1)){t[M+32>>2]=y,vt(m,1,22088,M+32|0),A=0;break i}if(!(!y|Q)){t[M+52>>2]=y,t[M+48>>2]=u,vt(m,1,23020,M+48|0),A=0;break i}if(!((u|0)==(y|0)|(Q|0)!=1)){t[M+72>>2]=y,t[M+68>>2]=u,t[M+64>>2]=u,vt(m,1,23056,M- -64|0),A=0;break i}t[H>>2]=1}if(u=u+1|0,(S|0)==(u|0))break}if(S)for(u=0;y=u<<2,t[y+O>>2]|!xe[(y+G|0)+2|0]||(t[M>>2]=u,vt(m,1,21716,M),A=0),u=u+1|0,(S|0)!=(u|0););u=S}if(!A){Gt(O),Y=0;break e}if(!S|t[x+16>>2]!=1)break n;for(x=0,y=0;;){if(t[(x<<2)+O>>2]){if(y=y+1|0,x=y&65535,S>>>0>x>>>0)continue;break n}break}if(y=0,vt(m,2,19520,0),x=0,S=0,u-1>>>0>=3)for(Q=u&252,A=0;m=x<<2,H=m+G|0,dt[H+3|0]=S,dt[H+2|0]=1,H=G+(m|4)|0,dt[H+3|0]=S|1,dt[H+2|0]=1,H=G+(m|8)|0,dt[H+3|0]=S|2,dt[H+2|0]=1,m=G+(m|12)|0,dt[m+3|0]=S|3,dt[m+2|0]=1,S=S+4|0,x=x+4|0,A=A+4|0,(Q|0)!=(A|0););if(u=u&3,!u)break n;for(;m=G+(x<<2)|0,dt[m+3|0]=S,dt[m+2|0]=1,S=S+1|0,x=x+1|0,y=y+1|0,(u|0)!=(y|0););break n}if(O=oi(S,4),O)break n}Y=0,vt(m,1,23475,0);break e}Gt(O);break e}Y=0,vt(m,1,19571,0)}return Nt=M+144|0,Y}function A1(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0;me=Nt-16|0,Nt=me,he=t[x+24>>2];e:{t:{n:{r:{i:{if(G=t[u+12>>2],H=xe[G+18|0],H){for(Oe=t[G+12>>2],Ne=t[G>>2],O=t[G+4>>2],se=t[G+8>>2];;){if(t[(De(Qn[(S<<2)+Oe>>1],52)+he|0)+44>>2]){if(y=y+1|0,S=y&65535,H>>>0>S>>>0)continue;break i}break}t[me>>2]=S,vt(m,1,25214,me),x=0;break e}if(u=De(H,52),H=0,G=si(u),!G)break r;break t}if(G=si(De(H,52)),G)break n}vt(m,1,25162,0),x=0;break e}if(!H)break t;for(S=0;;){if(y=(S<<2)+Oe|0,A=Qn[y>>1],M=De(xe[y+2|0]?xe[y+3|0]:S,52)+G|0,y=De(A,52)+he|0,A=t[y+4>>2],t[M>>2]=t[y>>2],t[M+4>>2]=A,t[M+48>>2]=t[y+48>>2],A=t[y+44>>2],t[M+40>>2]=t[y+40>>2],t[M+44>>2]=A,A=t[y+36>>2],t[M+32>>2]=t[y+32>>2],t[M+36>>2]=A,A=t[y+28>>2],t[M+24>>2]=t[y+24>>2],t[M+28>>2]=A,A=t[y+20>>2],t[M+16>>2]=t[y+16>>2],t[M+20>>2]=A,A=t[y+12>>2],t[M+8>>2]=t[y+8>>2],t[M+12>>2]=A,M=De(S,52)+G|0,y=Jo(De(t[y+8>>2],t[y+12>>2])<<2),t[M+44>>2]=y,!y){if(S&65535)for(;S=S-1|0,Gt(t[(De(S,52)+G|0)+44>>2]),!!S;);Gt(G),vt(m,1,25162,0),x=0;break e}if(t[M+24>>2]=xe[S+se|0],t[M+32>>2]=xe[S+O|0],S=S+1|0,(H|0)==(S|0))break}if(!H)break t;for(se=Qn[t[u+12>>2]+16>>1],A=se-1|0;;){S=De(_e,52)+G|0,u=De(t[S+12>>2],t[S+8>>2]),y=(_e<<2)+Oe|0,m=t[(De(Qn[y>>1],52)+he|0)+44>>2];n:{if(!xe[y+2|0]){if(!u)break n;if(M=t[S+44>>2],S=0,y=0,u>>>0>=4)for(Q=u&-4,Y=0;O=y<<2,t[O+M>>2]=t[m+O>>2],re=O|4,t[re+M>>2]=t[m+re>>2],re=O|8,t[re+M>>2]=t[m+re>>2],O=O|12,t[O+M>>2]=t[m+O>>2],y=y+4|0,Y=Y+4|0,(Q|0)!=(Y|0););if(u=u&3,!u)break n;for(;O=y<<2,t[O+M>>2]=t[m+O>>2],y=y+1|0,S=S+1|0,(u|0)!=(S|0););break n}if(!u)break n;if(M=xe[y+3|0],O=t[(De(M,52)+G|0)+44>>2],y=0,(u|0)!=1)for(re=u&-2,S=0;Q=y<<2,Y=t[Q+m>>2],t[O+Q>>2]=t[(M+De((Y|0)>=0?(Y|0)<(se|0)?Y:A:0,H)<<2)+Ne>>2],Q=Q|4,Y=t[Q+m>>2],t[O+Q>>2]=t[(M+De((Y|0)>=0?(Y|0)<(se|0)?Y:A:0,H)<<2)+Ne>>2],y=y+2|0,S=S+2|0,(re|0)!=(S|0););if(!(u&1))break n;u=m,m=y<<2,u=t[u+m>>2],t[m+O>>2]=t[(M+De((u|0)>=0?(u|0)<(se|0)?u:A:0,H)<<2)+Ne>>2]}if(_e=_e+1|0,(_e|0)==(H|0))break}}if(u=t[x+16>>2],u)for(S=0;m=t[(De(S,52)+he|0)+44>>2],m&&Gt(m),S=S+1|0,(u|0)!=(S|0););Gt(he),t[x+16>>2]=H,t[x+24>>2]=G,x=1}return Nt=me+16|0,x}function Tp(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;if(ln[x+44>>2]>=8)for(G=t[x+40>>2],Q=8;;){Y=t[x+12>>2]<<5,S=t[x>>2],O=t[x+36>>2],u=t[x+16>>2],A=t[x+20>>2];e:{if(u>>>0>=A>>>0||(H=S+Y|0,y=u+1|0,A-u&1&&(m=H+(u<<6)|0,u=(De(u,O)<<2)+G|0,M=t[u+4>>2],t[m>>2]=t[u>>2],t[m+4>>2]=M,M=t[u+28>>2],t[m+24>>2]=t[u+24>>2],t[m+28>>2]=M,M=t[u+20>>2],t[m+16>>2]=t[u+16>>2],t[m+20>>2]=M,M=t[u+12>>2],t[m+8>>2]=t[u+8>>2],t[m+12>>2]=M,u=y),(y|0)==(A|0)))break e;for(;y=(De(u,O)<<2)+G|0,M=t[y+4>>2],m=H+(u<<6)|0,t[m>>2]=t[y>>2],t[m+4>>2]=M,M=t[y+28>>2],t[m+24>>2]=t[y+24>>2],t[m+28>>2]=M,M=t[y+20>>2],t[m+16>>2]=t[y+16>>2],t[m+20>>2]=M,M=t[y+12>>2],t[m+8>>2]=t[y+8>>2],t[m+12>>2]=M,y=u+1|0,m=H+(y<<6)|0,y=(De(y,O)<<2)+G|0,M=t[y+28>>2],t[m+24>>2]=t[y+24>>2],t[m+28>>2]=M,M=t[y+20>>2],t[m+16>>2]=t[y+16>>2],t[m+20>>2]=M,M=t[y+12>>2],t[m+8>>2]=t[y+8>>2],t[m+12>>2]=M,M=t[y+4>>2],t[m>>2]=t[y>>2],t[m+4>>2]=M,u=u+2|0,(A|0)!=(u|0););}u=t[x+24>>2],A=t[x+28>>2];e:{if(u>>>0>=A>>>0||(H=(S-Y|0)+32|0,Y=(De(O,t[x+8>>2])<<2)+G|0,y=u+1|0,A-u&1&&(m=H+(u<<6)|0,u=Y+(De(u,O)<<2)|0,S=t[u+4>>2],t[m>>2]=t[u>>2],t[m+4>>2]=S,S=t[u+28>>2],t[m+24>>2]=t[u+24>>2],t[m+28>>2]=S,S=t[u+20>>2],t[m+16>>2]=t[u+16>>2],t[m+20>>2]=S,S=t[u+12>>2],t[m+8>>2]=t[u+8>>2],t[m+12>>2]=S,u=y),(y|0)==(A|0)))break e;for(;y=Y+(De(u,O)<<2)|0,S=t[y+4>>2],m=H+(u<<6)|0,t[m>>2]=t[y>>2],t[m+4>>2]=S,S=t[y+28>>2],t[m+24>>2]=t[y+24>>2],t[m+28>>2]=S,S=t[y+20>>2],t[m+16>>2]=t[y+16>>2],t[m+20>>2]=S,S=t[y+12>>2],t[m+8>>2]=t[y+8>>2],t[m+12>>2]=S,y=u+1|0,m=H+(y<<6)|0,y=Y+(De(y,O)<<2)|0,S=t[y+28>>2],t[m+24>>2]=t[y+24>>2],t[m+28>>2]=S,S=t[y+20>>2],t[m+16>>2]=t[y+16>>2],t[m+20>>2]=S,S=t[y+12>>2],t[m+8>>2]=t[y+8>>2],t[m+12>>2]=S,S=t[y+4>>2],t[m>>2]=t[y>>2],t[m+4>>2]=S,u=u+2|0,(A|0)!=(u|0););}if(B2(x),u=0,t[x+32>>2])for(;y=t[x>>2]+(u<<5)|0,m=t[y+4>>2],O=(De(t[x+36>>2],u)<<2)+G|0,t[O>>2]=t[y>>2],t[O+4>>2]=m,m=t[y+28>>2],t[O+24>>2]=t[y+24>>2],t[O+28>>2]=m,m=t[y+20>>2],t[O+16>>2]=t[y+16>>2],t[O+20>>2]=m,m=t[y+12>>2],t[O+8>>2]=t[y+8>>2],t[O+12>>2]=m,u=u+1|0,u>>>0>2];);if(G=G+32|0,Q=Q+8|0,!(Q>>>0<=ln[x+44>>2]))break}Gt(t[x>>2]),Gt(x)}function C4(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0;m=u,u=t[u>>2]+7&-8,t[m>>2]=u+16,he=x,G=t[u>>2],y=t[u+4>>2],x=t[u+12>>2],re=x,O=Nt-32|0,Nt=O,x=x&2147483647,A=x,S=x-1006698496|0,x=x-1140785152|0,m=t[u+8>>2],u=m;e:{if((S|0)==(x|0)&u>>>0>>0|x>>>0>S>>>0){if(x=m,m=re<<4|x>>>28,u=x<<4|y>>>28,x=m,y=y&268435455,(y|0)==134217728&(G|0)!=0|y>>>0>134217728){x=x+1073741824|0,u=u+1|0,x=u?x:x+1|0;break e}if(x=x+1073741824|0,G|(y|0)!=134217728)break e;y=u&1,u=y+u|0,x=u>>>0>>0?x+1|0:x;break e}if(!(!u&(A|0)==2147418112?!(y|G):A>>>0<2147418112)){x=m,m=re<<4|x>>>28,u=x<<4|y>>>28,x=m&524287|2146959360;break e}if(u=0,x=2146435072,A>>>0>1140785151||(x=0,se=A>>>16|0,se>>>0<15249))break e;u=G,x=y,S=re&65535|65536,A=S,Q=m,M=m,H=se-15233|0;t:{if(H&64){m=u,S=H+-64|0,u=S&31,(S&63)>>>0>=32?(x=m<>>32-u|x<>>0>=32?(m=Y<>>32-M|S<>>0>=32?(m=0,u=x>>>M|0):(m=x>>>M|0,u=((1<>>M),M=me|u,S=m|S,u=H&31,(H&63)>>>0>=32?(m=Y<>>32-u|x<>2]=u,t[O+20>>2]=x,t[O+24>>2]=M,t[O+28>>2]=S,u=15361-se|0;t:{if(u&64){y=Q,u=u+-64|0,x=u&31,(u&63)>>>0>=32?(m=0,G=A>>>x|0):(m=A>>>x|0,G=((1<>>x),y=m,Q=0,A=0;break t}if(!u)break t;S=Q,x=64-u|0,m=x&31,(x&63)>>>0>=32?(x=S<>>32-m|A<>>0>=32?(m=0,S=y>>>G|0):(m=y>>>G|0,S=((1<>>G),G=M|S,y=x|m,S=Q,m=u&31,(u&63)>>>0>=32?(x=0,Q=A>>>m|0):(x=A>>>m|0,Q=((1<>>m),A=x}if(t[O>>2]=G,t[O+4>>2]=y,t[O+8>>2]=Q,t[O+12>>2]=A,u=t[O+8>>2],x=t[O+12>>2]<<4|u>>>28,u=u<<4,m=t[O>>2],A=t[O+4>>2],u=A>>>28|u,y=A&268435455,m=m|(t[O+16>>2]|t[O+24>>2]|(t[O+20>>2]|t[O+28>>2]))!=0,(y|0)==134217728&(m|0)!=0|y>>>0>134217728){u=u+1|0,x=u?x:x+1|0;break e}if(m|(y|0)!=134217728)break e;m=u,u=u+(u&1)|0,x=m>>>0>u>>>0?x+1|0:x}Nt=O+32|0,bt(0,u|0),bt(1,re&-2147483648|x),_e=he,Oe=+Qt(),mr[_e>>3]=Oe}function _4(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0;Oe=t[x+4>>2],Q=t[u>>2],H=t[u+8>>2],Y=t[u+28>>2],he=t[u+36>>2],A=t[u+20>>2],M=A-1|0;e:{if(M){re=M&1;t:{if((A|0)==2){u=Y;break t}for(Ne=M&-2,u=Y;G=t[u+160>>2]-t[u+152>>2]|0,O=O>>>0>G>>>0?O:G,G=t[u+164>>2]-t[u+156>>2]|0,O=O>>>0>G>>>0?O:G,G=t[u+312>>2]-t[u+304>>2]|0,O=O>>>0>G>>>0?O:G,G=t[u+316>>2]-t[u+308>>2]|0,O=O>>>0>G>>>0?O:G,u=u+304|0,S=S+2|0,(Ne|0)!=(S|0););}if(re&&(S=t[u+160>>2]-t[u+152>>2]|0,S=S>>>0>>0?O:S,u=t[u+164>>2]-t[u+156>>2]|0,O=u>>>0>>0?S:u),S=0,O>>>0>134217727)break e}if(Ne=O<<5,re=Gf(Ne),!re&&O)break e;t:{n:{if(M)for(Q=H-Q|0,Y=Y+De(M,152)|0,u=A-2|0,G=(Oe|0)<2;;){O=u,u=Y,Y=u-152|0,Ze=t[Y>>2],kt=t[Y+8>>2],me=t[u+12>>2],se=t[u+4>>2],A=me-se|0,H=se&1,Rt=t[u>>2],M=t[u+8>>2]-Rt|0;r:{if(!(!G&M>>>0>15)){if(u=0,M>>>0>=8)for(S=!H;Zt[m|0]((u<<2)+he|0,re,A,S,Q,8),u=u+8|0,M>>>0>(u|7)>>>0;);if(u>>>0>=M>>>0)break r;Zt[m|0]((u<<2)+he|0,re,A,!H,Q,M-u|0);break r}for(jt=t[Y+12>>2]-t[Y+4>>2]|0,en=A-jt|0,_e=M>>>0>>0?M:Oe,$e=(M>>>0)/(_e>>>0)&-8,S=0;;){if(u=si(40),!u)break n;if(Yt=Gf(Ne),t[u>>2]=Yt,!Yt){Za(x),Gt(u),S=0;break t}if(t[u+36>>2]=m,t[u+24>>2]=he,t[u+20>>2]=Q,t[u+16>>2]=A,t[u+12>>2]=H,t[u+8>>2]=jt,t[u+4>>2]=en,t[u+28>>2]=De(S,$e),S=S+1|0,t[u+32>>2]=(S|0)==(_e|0)?M:De($e,S),Be(x,111,u),(S|0)==(_e|0))break}Za(x)}H=Rt&1;r:{if(!(!G&A>>>0>1)){if((se|0)==(me|0))break r;if(S=!H,u=0,(A|0)!=1)for(se=A&-2,H=0;Zt[y|0]((De(u,Q)<<2)+he|0,re,M,S),Zt[y|0]((De(Q,u|1)<<2)+he|0,re,M,S),u=u+2|0,H=H+2|0,(se|0)!=(H|0););if(!(A&1))break r;Zt[y|0]((De(u,Q)<<2)+he|0,re,M,S);break r}for($e=kt-Ze|0,Ze=M-$e|0,se=A>>>0>>0?A:Oe,kt=se-1|0,_e=(A>>>0)/(se>>>0)|0,S=0;;){if(u=si(40),!u)break n;if(me=Gf(Ne),t[u>>2]=me,!me){Za(x),Gt(u),S=0;break t}if(t[u+36>>2]=y,t[u+24>>2]=he,t[u+20>>2]=Q,t[u+16>>2]=M,t[u+12>>2]=H,t[u+8>>2]=$e,t[u+4>>2]=Ze,t[u+28>>2]=De(S,_e),me=(S|0)==(kt|0),S=S+1|0,t[u+32>>2]=me?A:De(_e,S),Be(x,112,u),(S|0)==(se|0))break}Za(x)}if(u=O-1|0,!O)break}S=1;break t}Za(x),S=0}Gt(re)}return S}function Vn(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0;if(M=Nt-80|0,Nt=M,A=t[u+8>>2],re=t[A>>2],se=Qn[A+4>>1],se){for(A=0,Oe=se-2&65535,he=1;;){me=De(A,6)+re|0,G=Qn[me>>1],y=t[x+16>>2];e:{if(G>>>0>=y>>>0){t[M+20>>2]=y,t[M+16>>2]=G,vt(m,2,16937,M+16|0);break e}if(S=Qn[me+4>>1],(S+1&65535)>>>0<=1){tn[(t[x+24>>2]+De(G,52)|0)+48>>1]=Qn[me+2>>1];break e}if(_e=S-1|0,Q=_e&65535,y>>>0<=Q>>>0){t[M+4>>2]=y,t[M>>2]=Q,vt(m,2,16896,M);break e}t:{if(Qn[me+2>>1]|(G|0)==(Q|0)||(S=t[x+24>>2],y=S+De(G,52)|0,t[M+72>>2]=t[y+48>>2],O=t[y+44>>2],H=M- -64|0,t[H>>2]=t[y+40>>2],t[H+4>>2]=O,O=t[y+36>>2],t[M+56>>2]=t[y+32>>2],t[M+60>>2]=O,O=t[y+28>>2],t[M+48>>2]=t[y+24>>2],t[M+52>>2]=O,O=t[y+20>>2],t[M+40>>2]=t[y+16>>2],t[M+44>>2]=O,O=t[y+12>>2],t[M+32>>2]=t[y+8>>2],t[M+36>>2]=O,O=t[y+4>>2],t[M+24>>2]=t[y>>2],t[M+28>>2]=O,O=De(Q,52),S=O+S|0,t[y+48>>2]=t[S+48>>2],Y=t[S+44>>2],t[y+40>>2]=t[S+40>>2],t[y+44>>2]=Y,Y=t[S+36>>2],t[y+32>>2]=t[S+32>>2],t[y+36>>2]=Y,Y=t[S+28>>2],t[y+24>>2]=t[S+24>>2],t[y+28>>2]=Y,Y=t[S+20>>2],t[y+16>>2]=t[S+16>>2],t[y+20>>2]=Y,Y=t[S+12>>2],t[y+8>>2]=t[S+8>>2],t[y+12>>2]=Y,Y=t[S+4>>2],t[y>>2]=t[S>>2],t[y+4>>2]=Y,S=t[M+28>>2],y=O+t[x+24>>2]|0,t[y>>2]=t[M+24>>2],t[y+4>>2]=S,t[y+48>>2]=t[M+72>>2],S=t[H+4>>2],t[y+40>>2]=t[H>>2],t[y+44>>2]=S,S=t[M+60>>2],t[y+32>>2]=t[M+56>>2],t[y+36>>2]=S,S=t[M+52>>2],t[y+24>>2]=t[M+48>>2],t[y+28>>2]=S,S=t[M+44>>2],t[y+16>>2]=t[M+40>>2],t[y+20>>2]=S,S=t[M+36>>2],t[y+8>>2]=t[M+32>>2],t[y+12>>2]=S,A+1>>>0>=se>>>0))break t;if(S=he,(A^-1)+se&1){S=_e,y=De(he,6)+re|0,H=Qn[y>>1];n:{if((H|0)!=(G|0)&&(S=G,(H|0)!=(Q|0)))break n;tn[y>>1]=S}S=he+1|0}if((A&65535)==(Oe|0))break t;for(;;){y=_e,H=De(S,6)+re|0,O=Qn[H>>1];n:{if((O|0)!=(G|0)&&(y=G,(O|0)!=(Q|0)))break n;tn[H>>1]=y}y=_e,O=Qn[H+6>>1];n:{if((O|0)!=(G|0)&&(y=G,(O|0)!=(Q|0)))break n;tn[H+6>>1]=y}if(S=S+2|0,(S&65535)==(se|0))break}}tn[(t[x+24>>2]+De(G,52)|0)+48>>1]=Qn[me+2>>1]}if(he=he+1|0,A=A+1|0,(se|0)==(A|0))break}A=t[u+8>>2],re=t[A>>2]}re&&(Gt(re),A=t[u+8>>2]),Gt(A),t[u+8>>2]=0,Nt=M+80|0}function Ep(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0;M=Nt-80|0,Nt=M,t[M+76>>2]=1,S=t[x+200>>2],y=t[S+40>>2];e:{t:{if(y)break t;if(y=De(t[x+108>>2],t[x+104>>2]),t[S+36>>2]=y,y=oi(y,40),S=t[x+200>>2],t[S+40>>2]=y,!y){S=0;break e}if(!t[S+36>>2])break t;for(;;){if(S=0,A=De(O,40),y=A+y|0,t[y+20>>2]=0,t[y+28>>2]=100,H=oi(100,24),G=t[x+200>>2],y=t[G+40>>2],t[(A+y|0)+24>>2]=H,!H)break e;if(O=O+1|0,!(O>>>0>2]))break}}H=t[x+44>>2];t:{if(!t[y+16>>2])break t;n:{if(y=De(H,40)+y|0,!t[y+4>>2]){if(y=t[x+52>>2],S=t[x+48>>2]+2|0,y=S>>>0<2?y+1|0:y,jl(u,S,y,m))break n;S=0,vt(m,1,8923,0);break e}if(y=t[y+16>>2],S=t[y>>2],y=t[y+4>>2],S=S+2|0,y=S>>>0<2?y+1|0:y,jl(u,S,y,m))break n;S=0,vt(m,1,8923,0);break e}if(t[x+8>>2]!=256)break t;t[x+8>>2]=8}A=De(t[x+108>>2],t[x+104>>2]);t:{if(!A)break t;if(S=t[x+156>>2],y=0,A>>>0>=8)for(G=A&-8,O=0;t[(S+De(y,5644)|0)+5588>>2]=-1,t[(S+De(y|1,5644)|0)+5588>>2]=-1,t[(S+De(y|2,5644)|0)+5588>>2]=-1,t[(S+De(y|3,5644)|0)+5588>>2]=-1,t[(S+De(y|4,5644)|0)+5588>>2]=-1,t[(S+De(y|5,5644)|0)+5588>>2]=-1,t[(S+De(y|6,5644)|0)+5588>>2]=-1,t[(S+De(y|7,5644)|0)+5588>>2]=-1,y=y+8|0,O=O+8|0,(G|0)!=(O|0););if(O=A&7,!O)break t;for(;t[(S+De(y,5644)|0)+5588>>2]=-1,y=y+1|0,Y=Y+1|0,(O|0)!=(Y|0););}if(S=0,!Dc(x,M+72|0,0,M+68|0,M- -64|0,M+60|0,M+56|0,M+52|0,M+76|0,u,m))break e;for(A=H+1|0;;){t:{if(!t[M+76>>2])break t;if(y=t[M+72>>2],!hl(x,y,0,0,u,m)||(G=t[x+104>>2],Y=t[x+108>>2],O=y+1|0,t[M+32>>2]=O,t[M+36>>2]=De(G,Y),vt(m,4,22836,M+32|0),!x4(t[x+208>>2],t[t[x+76>>2]+24>>2])))break e;if(S=t[x+156>>2]+De(y,5644)|0,G=t[S+5596>>2],G&&(Gt(G),t[S+5596>>2]=0,t[S+5600>>2]=0),t[M+16>>2]=O,vt(m,4,28933,M+16|0),(y|0)==(H|0)){if(y=t[x+200>>2],S=t[y+8>>2],y=t[y+12>>2],S=S+2|0,y=S>>>0<2?y+1|0:y,jl(u,S,y,m))break t;S=0,vt(m,1,8923,0);break e}if(t[M+4>>2]=A,t[M>>2]=O,vt(m,2,24985,M),S=0,Dc(x,M+72|0,0,M+68|0,M- -64|0,M+60|0,M+56|0,M+52|0,M+76|0,u,m))continue;break e}break}S=(V4(x,m)|0)!=0}return Nt=M+80|0,S|0}function ea(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;if(S=Le(),t[x+72>>2]=S,!S)return vt(y,1,3221,0),0;Hh(m,S),S=t[m+24>>2];e:{if(!S||(M=t[m+16>>2],!M))break e;if(m=0,(M|0)!=1)for(A=M&-2;O=De(m,52),G=O+S|0,Y=t[G+44>>2],Y&&(t[(O+t[t[x+72>>2]+24>>2]|0)+44>>2]=Y,t[G+44>>2]=0),O=De(m|1,52),G=O+S|0,Y=t[G+44>>2],Y&&(t[(O+t[t[x+72>>2]+24>>2]|0)+44>>2]=Y,t[G+44>>2]=0),m=m+2|0,H=H+2|0,(A|0)!=(H|0););if(!(M&1)||(m=De(m,52),S=m+S|0,M=t[S+44>>2],!M))break e;t[(m+t[t[x+72>>2]+24>>2]|0)+44>>2]=M,t[S+44>>2]=0}e:{t:{if(!vn(t[x+196>>2],130,y)||!vn(t[x+196>>2],131,y)||!vn(t[x+196>>2],132,y))break t;A=t[x+196>>2],O=t[A>>2],M=t[A+8>>2];n:{r:{if(O){if(m=1,(O|0)!=1)for(G=O&-2,H=0;;){S=0;i:{if(!m||(S=0,!(Zt[t[M>>2]](x,u,y)|0)))break i;S=(Zt[t[M+4>>2]](x,u,y)|0)!=0}if(m=S,M=M+8|0,H=H+2|0,(G|0)==(H|0))break}if(O&1){if(!m)break n;m=(Zt[t[M>>2]](x,u,y)|0)!=0}if(t[A>>2]=0,m&1)break r;break t}t[A>>2]=0}if(!vn(t[x+192>>2],133,y)||!vn(t[x+192>>2],134,y)||!vn(t[x+192>>2],135,y)||!vn(t[x+192>>2],136,y)||!vn(t[x+192>>2],137,y)||!vn(t[x+192>>2],138,y)||!vn(t[x+192>>2],139,y))break t;r:{if(!t[x+16>>2])break r;if(!vn(t[x+192>>2],140,y))break t;if(Qn[x+80>>1]!=4)break r;if(!vn(t[x+192>>2],141,y))break t}if(!vn(t[x+192>>2],142,y)||t[x+100>>2]&&!vn(t[x+192>>2],143,y)||(Qn[x+80>>1]&33024)==33024&&!vn(t[x+192>>2],144,y)||t[x+200>>2]&&!vn(t[x+192>>2],145,y)||!vn(t[x+192>>2],146,y)||!vn(t[x+192>>2],147,y))break t;if(S=t[x+192>>2],A=t[S>>2],m=t[S+8>>2],!A)break e;if(M=1,(A|0)!=1)for(G=A&-2,O=0;H=0,M&&(H=(Zt[t[m>>2]](x,u,y)|0)!=0),M=0,H&&(M=(Zt[t[m+4>>2]](x,u,y)|0)!=0),m=m+8|0,O=O+2|0,(G|0)!=(O|0););if(A&1){if(!M)return t[S>>2]=0,0;M=(Zt[t[m>>2]](x,u,y)|0)!=0}return t[S>>2]=0,M|0}t[A>>2]=0}return 0}return t[S>>2]=0,1}function x4(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0;if(Ne=t[x+24>>2],!t[Ne+16>>2])return 1;for(me=t[Ne+24>>2],re=t[t[t[x+20>>2]>>2]+20>>2];;){t[u+36>>2]=t[me+36>>2],m=t[me+36>>2],S=t[re+28>>2],Ze=t[x+64>>2];e:{if(Ze){y=(S+De(t[re+24>>2],152)|0)-152|0,_e=t[y+8>>2]-t[y>>2]|0,y=re+36|0,m=S+De(m,152)|0,A=m+12|0,S=t[m+8>>2],G=t[m>>2],m=m+4|0;break e}m=S+De(m,152)|0,S=t[m+144>>2],G=t[m+136>>2],_e=S-G|0,y=re+52|0,A=m+148|0,m=m+140|0}kt=t[y>>2];e:{t:{if(!kt)break t;he=t[m>>2],Oe=t[A>>2],H=S-G|0,O=t[u+40>>2],m=O&31,(O&63)>>>0>=32?(y=-1<>>32-m,m=-1<>2],A=Y+Q|0,M=y^-1,m=M,m=A>>>0>>0?m+1|0:m,y=O&31,Q=(O&63)>>>0>=32?m>>>y|0:((1<>>y,y=t[u+12>>2],se=t[u+16>>2],Y=se+Y|0,m=M,A=t[u+8>>2],m=Y>>>0>>0?m+1|0:m,M=O&31,O=(O&63)>>>0>=32?m>>>M|0:((1<>>M,m=A+O|0;n:{if(O>>>0>>0){if(se=G-O|0,O=0,m>>>0>=S>>>0){M=0,S=H;break n}S=m-G|0,M=H-S|0;break n}if(O=O-G|0,m>>>0>=S>>>0){S=H-O|0,se=0,M=0;break n}M=S-m|0,se=0,S=A}m=Oe-he|0,H=y+Q|0;n:{if(Q>>>0>>0){if($e=he-Q|0,Q=0,Y=0,H>>>0>=Oe>>>0)break n;Y=m,m=H-he|0,Y=Y-m|0;break n}if(Q=Q-he|0,H>>>0>=Oe>>>0){m=m-Q|0,$e=0,Y=0;break n}$e=0,m=y,Y=Oe-H|0}if(G=0,(O|Q|(M|Y))<0||(S|m)<0)break e;H=De(A,$e)+se|0;n:{r:{i:{if(M=t[u+44>>2],O=De(Q,_e)+O|0,M|O|((A|0)!=(_e|0)|H)||(S|0)!=(A|0))break i;if((m|0)!=(y|0))break r;S=(Ze?36:52)+re|0,t[u+44>>2]=t[S>>2],t[S>>2]=0;break t}if(M)break n}if(!y||(N0(y,0,A,0),Gi)||(y=De(y,A),y>>>0>1073741823)||(y=Jo(y<<2),t[u+44>>2]=y,!y))break e;if(A=t[u+8>>2],M=t[u+12>>2],(A|0)==(S|0)&(M|0)==(m|0))break n;pi(y,0,De(A,M)<<2)}if(!m)break t;if(A=m&1,S=S<<2,y=t[u+44>>2]+(H<<2)|0,G=(O<<2)+kt|0,(m|0)!=1)for(O=m&-2,m=0;H=Yr(y,G,S),M=_e<<2,y=M+G|0,G=y+M|0,y=Yr(H+(t[u+8>>2]<<2)|0,y,S)+(t[u+8>>2]<<2)|0,m=m+2|0,(O|0)!=(m|0););if(!A)break t;Yr(y,G,S)}if(re=re+76|0,me=me+52|0,u=u+52|0,G=1,Rt=Rt+1|0,Rt>>>0>2])continue}break}return G}function Wi(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;if(!u)return 0;e:{if(!x){S=S2(u);break e}if(u>>>0>=4294967232){t[12458]=48,S=0;break e}O=u>>>0<11?16:u+11&-8,S=x-8|0,H=t[S+4>>2],M=H&-8;t:{if(!(H&3)){if(O>>>0<256||M>>>0>=O+4>>>0&&(m=S,M-O>>>0<=t[13046]<<1>>>0))break t;m=0;break t}A=M+S|0;n:{if(M>>>0>=O>>>0){if(y=M-O|0,y>>>0<16)break n;t[S+4>>2]=H&1|O|2,m=S+O|0,t[m+4>>2]=y|3,t[A+4>>2]=t[A+4>>2]|1,Ic(m,y);break n}if(t[12932]==(A|0)){if(M=M+t[12929]|0,M>>>0<=O>>>0)break t;t[S+4>>2]=H&1|O|2,y=S+O|0,m=M-O|0,t[y+4>>2]=m|1,t[12929]=m,t[12932]=y;break n}if(t[12931]==(A|0)){if(y=M+t[12928]|0,y>>>0>>0)break t;m=y-O|0;r:{if(m>>>0>=16){t[S+4>>2]=H&1|O|2,M=S+O|0,t[M+4>>2]=m|1,y=y+S|0,t[y>>2]=m,t[y+4>>2]=t[y+4>>2]&-2;break r}t[S+4>>2]=y|H&1|2,m=y+S|0,t[m+4>>2]=t[m+4>>2]|1,m=0,M=0}t[12931]=M,t[12928]=m;break n}if(y=t[A+4>>2],y&2||(Y=M+(y&-8)|0,Y>>>0>>0))break t;re=Y-O|0;r:{if(y>>>0<=255){if(M=t[A+8>>2],m=y>>>3|0,y=t[A+12>>2],(y|0)==(M|0)){se=51704,he=t[12926]&D2(m),t[se>>2]=he;break r}t[M+12>>2]=y,t[y+8>>2]=M;break r}Q=t[A+24>>2],G=t[A+12>>2];i:{if((G|0)!=(A|0)){m=t[A+8>>2],t[m+12>>2]=G,t[G+8>>2]=m;break i}a:{if(M=A+20|0,m=t[M>>2],m||(M=A+16|0,m=t[M>>2],m))break a;G=0;break i}for(;y=M,G=m,M=m+20|0,m=t[M>>2],!(!m&&(M=G+16|0,m=t[G+16>>2],!m)););t[y>>2]=0}if(!Q)break r;y=t[A+28>>2],m=(y<<2)+52008|0;i:{if(t[m>>2]==(A|0)){if(t[m>>2]=G,G)break i;se=51708,he=t[12927]&D2(y),t[se>>2]=he;break r}if(t[(t[Q+16>>2]==(A|0)?16:20)+Q>>2]=G,!G)break r}if(t[G+24>>2]=Q,m=t[A+16>>2],m&&(t[G+16>>2]=m,t[m+24>>2]=G),m=t[A+20>>2],!m)break r;t[G+20>>2]=m,t[m+24>>2]=G}if(re>>>0<=15){t[S+4>>2]=H&1|Y|2,m=S+Y|0,t[m+4>>2]=t[m+4>>2]|1;break n}t[S+4>>2]=H&1|O|2,y=S+O|0,t[y+4>>2]=re|3,m=S+Y|0,t[m+4>>2]=t[m+4>>2]|1,Ic(y,re)}m=S}if(S=m+8|0,m||(m=S2(u),S=0,!m))break e;S=t[x-4>>2],S=(S&3?-4:-8)+(S&-8)|0,Yr(m,x,u>>>0>S>>>0?S:u),Gt(x),S=m}return S}function fr(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;O=Nt-16|0,Nt=O,t[x+8>>2]==16?A=t[x+156>>2]+De(t[x+204>>2],5644)|0:A=t[x+12>>2];e:{if(!m){vt(y,1,6851,0);break e}if(G=t[x+72>>2],S=1,ue(u,O+8|0,1),M=t[O+8>>2],M>>>0>=2){vt(y,2,20258,0);break e}if((M+1|0)!=(m|0)){S=0,vt(y,2,6851,0);break e}y=t[G+16>>2];t:{if(!y)break t;if(S=t[A+5584>>2],y>>>0>=8)for(G=y&-8,m=0;t[S+1076>>2]=0,t[S+8636>>2]=0,t[S+7556>>2]=0,t[S+6476>>2]=0,t[S+5396>>2]=0,t[S+4316>>2]=0,t[S+3236>>2]=0,t[S+2156>>2]=0,S=S+8640|0,m=m+8|0,(G|0)!=(m|0););if(y=y&7,!y)break t;for(m=0;t[S+1076>>2]=0,S=S+1080|0,m=m+1|0,(y|0)!=(m|0););}if(m=t[A+5608>>2],m&&(Gt(m),t[A+5608>>2]=0,M=t[O+8>>2]),!M){S=1;break e}for(G=0;;){u=u+1|0,ue(u,O+12|0,1);t:{if(!t[A+5632>>2]||(y=t[A+5628>>2],t[y>>2]!=t[O+12>>2])||(M=t[y+4>>2],H=t[x+72>>2],(M|0)!=t[H+16>>2]))break t;if(m=t[y+8>>2],m){if(S=0,M=De(M,M),t[m+16>>2]!=(De(M,t[(t[m>>2]<<2)+30496>>2])|0)||(Y=si(M<<2),t[A+5608>>2]=Y,!Y))break e;Zt[t[(t[m>>2]<<2)+30848>>2]](t[m+12>>2],Y,M)}if(m=t[y+12>>2],!m)break t;if(S=0,y=t[H+16>>2],t[m+16>>2]!=(De(y,t[(t[m>>2]<<2)+30496>>2])|0)||(M=si(y<<2),!M))break e;Zt[t[(t[m>>2]<<2)+30864>>2]](t[m+12>>2],M,y),m=t[H+16>>2];n:{if(!m)break n;H=m&7,S=t[A+5584>>2];r:{if(m>>>0<8){m=M;break r}for(Y=m&-8,y=0,m=M;t[S+1076>>2]=t[m>>2],t[S+2156>>2]=t[m+4>>2],t[S+3236>>2]=t[m+8>>2],t[S+4316>>2]=t[m+12>>2],t[S+5396>>2]=t[m+16>>2],t[S+6476>>2]=t[m+20>>2],t[S+7556>>2]=t[m+24>>2],t[S+8636>>2]=t[m+28>>2],S=S+8640|0,m=m+32|0,y=y+8|0,(Y|0)!=(y|0););}if(y=0,!H)break n;for(;t[S+1076>>2]=t[m>>2],S=S+1080|0,m=m+4|0,y=y+1|0,(H|0)!=(y|0););}Gt(M)}if(S=1,G=G+1|0,!(G>>>0>2]))break}}return Nt=O+16|0,S|0}function is(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0;y=Nt-16|0,Nt=y,S=t[x+44>>2],me=t[x+48>>2],re=t[x+208>>2],t[re+16>>2]=0,t[x+8>>2]=0,t[y+8>>2]=0;e:{if(!qa(x,S,me,y+8|0,m)||(A=t[y+8>>2],H=me-A|0,Y=S+A|0,!(xe[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+5640|0]&4)|(Qn[x+80>>1]-3&65535)>>>0<4||(t[y+8>>2]=0,Vp(x,Y,y+8|0),O=t[y+8>>2],H=H-O|0,Y=O+Y|0,A=O+A|0),t[y+8>>2]=0,!Tc(x,re,Y,y+8|0,H,m)))break e;M=t[y+8>>2]+A|0,lr(S+6|0,M,4),t[x+16>>2]&&(A=t[x+20>>2]?1:2,lr(t[x+36>>2],t[x+204>>2],A),A=A+t[x+36>>2]|0,t[x+36>>2]=A,lr(A,M,4),t[x+36>>2]=t[x+36>>2]+4),_e=t[x+156>>2],re=t[x+208>>2],Y=0,Oe=x+80|0,se=t[x+204>>2],Q=zh(Oe,0,se),t[x+12>>2]=t[x+12>>2]+1,A=me-M|0,S=S+M|0;t:{n:{if(Q>>>0<2){M=A;break n}for(H=1,M=A;;){if(t[x+8>>2]=H,t[y+12>>2]=0,!qa(x,S,M,y+12|0,m)||(O=t[y+12>>2],t[y+12>>2]=0,he=S+O|0,M=M-O|0,!Tc(x,re,he,y+12|0,M,m)))break t;if(G=S+6|0,S=t[y+12>>2],O=S+O|0,lr(G,O,4),t[x+16>>2]&&(G=t[x+20>>2]?1:2,lr(t[x+36>>2],t[x+204>>2],G),G=G+t[x+36>>2]|0,t[x+36>>2]=G,lr(G,O,4),t[x+36>>2]=t[x+36>>2]+4),M=M-S|0,S=S+he|0,Y=O+Y|0,t[x+12>>2]=t[x+12>>2]+1,H=H+1|0,(Q|0)==(H|0))break}}if(_e=_e+De(se,5644)|0,t[_e+420>>2])for(O=1;;){if(t[re+16>>2]=O,H=0,se=zh(Oe,O,t[x+204>>2]),se)for(;;){if(t[x+8>>2]=H,t[y+12>>2]=0,!qa(x,S,M,y+12|0,m)||(Q=t[y+12>>2],t[y+12>>2]=0,he=S+Q|0,M=M-Q|0,!Tc(x,re,he,y+12|0,M,m)))break t;if(G=S+6|0,S=t[y+12>>2],Q=S+Q|0,lr(G,Q,4),t[x+16>>2]&&(G=t[x+20>>2]?1:2,lr(t[x+36>>2],t[x+204>>2],G),G=G+t[x+36>>2]|0,t[x+36>>2]=G,lr(G,Q,4),t[x+36>>2]=t[x+36>>2]+4),M=M-S|0,S=S+he|0,Y=Y+Q|0,t[x+12>>2]=t[x+12>>2]+1,H=H+1|0,(se|0)==(H|0))break}if(O=O+1|0,!(O>>>0<=ln[_e+420>>2]))break}if(M=0,S=u,u=(Y-A|0)+me|0,(Go(S,t[x+44>>2],u,m)|0)!=(u|0))break e;M=1,t[x+204>>2]=t[x+204>>2]+1;break e}M=0}return Nt=y+16|0,M}function Gr(x,u,m,y,S,M,O,A){var G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0;se=t[t[x+24>>2]+24>>2]+De(u,52)|0,Q=t[se+4>>2],re=Q-1|0,he=t[x+60>>2],H=re+he|0,Y=0-!Q|0,G=Y,_e=t[t[t[x+20>>2]>>2]+20>>2]+De(u,76)|0,me=t[_e+12>>2],G=c0(H,H>>>0>>0?G+1|0:G,Q,0),Oe=G>>>0>me>>>0?me:G,H=t[se>>2],se=H-1|0,Ne=t[x+56>>2],me=se+Ne|0,he=0-!H|0,G=he,$e=t[_e+8>>2],G=c0(me,me>>>0>>0?G+1|0:G,H,0),me=G>>>0>$e>>>0?$e:G,G=Y,$e=t[_e+4>>2],Ne=t[x+52>>2],re=Ne+re|0,G=c0(re,re>>>0>>0?G+1|0:G,Q,0),re=G>>>0<$e>>>0?$e:G,G=he,Y=t[_e>>2],he=se,se=t[x+48>>2],Q=he+se|0,G=c0(Q,Q>>>0>>0?G+1|0:G,H,0),G=G>>>0>>0?Y:G,Q=0,se=t[(t[t[x+32>>2]+5584>>2]+De(u,1080)|0)+20>>2],m=t[_e+20>>2]+(m?0-m|0:-1)|0;e:{if(!m){u=me,Q=G,x=re;break e}if(Y=m-1|0,H=(y&1)<>>0>>0&&(x=m&31,he=G-H|0,(m&63)>>>0>=32?(G=-1<>>32-x,x=-1<>>0>>0?G+1|0:G,u=x,x=m&31,Q=(m&63)>>>0>=32?G>>>x|0:((1<>>x),u=0,x=0,Y=y>>>1<>>0>>0&&(x=m&31,G=re-Y|0,(m&63)>>>0>=32?(y=-1<>>32-x,x=-1<>>0>>0?G+1|0:G,x=m&31,x=(m&63)>>>0>=32?G>>>x|0:((1<>>x),H>>>0>>0&&(u=m&31,(m&63)>>>0>=32?(G=-1<>>32-u,u=-1<>>0>>0?G+1|0:G,y=u,u=m&31,u=(m&63)>>>0>=32?G>>>u|0:((1<>>u),Y>>>0>=Oe>>>0){Oe=0;break e}y=m&31,(m&63)>>>0>=32?(G=-1<>>32-y,y=-1<>>0>>0?G+1|0:G,H=y,y=m&31,Oe=(m&63)>>>0>=32?G>>>y|0:((1<>>y}return G=0,y=u,H=(se|0)==1,m=H?2:3,u=u+m|0,y=(0-(y>>>0>u>>>0?G+1|0:G)|u)>>>0>S>>>0,u=m+Oe|0,u=y&(0-(u>>>0>>0?G+1|0:G)|u)>>>0>M>>>0,y=H?2:3,m=Q-y|0,y=x-y|0,u&(m>>>0<=Q>>>0?m:0)>>>0>>0&(x>>>0>=y>>>0?y:0)>>>0>>0}function Dp(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;H=Nt-256|0,Nt=H;e:{if(!x){x=0;break e}if(!(t[x>>2]==(u|0)&t[x+4>>2]==(m|0))){for(t[x+4>>2]=m,t[x>>2]=u,t[H>>2]=m,t[H+128>>2]=u,S=m,M=u;he=G,G=G+1|0,A=G<<2,se=(S+1|0)/2|0,t[A+H>>2]=se,Y=A+(H+128|0)|0,A=(M+1|0)/2|0,t[Y>>2]=A,re=De(S,M),O=re+O|0,S=se,M=A,re>>>0>1;);t[x+8>>2]=O;t:{n:{r:{i:{if(!O){if(S=t[x+12>>2],!S)break r;M=x+12|0;break i}if(O=O<<4,O>>>0<=ln[x+16>>2])break t;if(u=Wi(t[x+12>>2],O),u)break n;if(vt(y,1,10394,0),M=x+12|0,S=t[M>>2],!S)break r}Gt(S),t[M>>2]=0}Gt(x),x=0;break e}t[x+12>>2]=u,m=u,u=t[x+16>>2],pi(m+u|0,0,O-u|0),t[x+16>>2]=O,m=t[x+4>>2],u=t[x>>2]}if(M=t[x+12>>2],he)for(y=0,S=(De(u,m)<<4)+M|0,O=S;;){u=y<<2,Y=t[u+H>>2];t:{if((Y|0)<=0)break t;re=Y-1|0,Q=0;n:{r:{if(m=t[u+(H+128|0)>>2],(m|0)<=0){if(se=Y&1,G=0,(Y|0)!=1)break r;u=O;break n}for(;;){for(u=O,O=m;;){i:{if(t[M>>2]=S,(O|0)==1){M=M+16|0,S=S+16|0;break i}if(t[M+16>>2]=S,S=S+16|0,M=M+32|0,A=(O|0)>2,O=O-2|0,A)continue}break}if(A=((Q|0)==(re|0)|Q)&1,O=A?S:u+(m<<4)|0,S=A?S:u,Q=Q+1|0,(Y|0)==(Q|0))break}break t}for(A=Y&-2;u=(G|0)==(re|0),G=G+2|0,S=u?S:O,O=S,u=S,Q=Q+2|0,(A|0)!=(Q|0););}if(!se){O=S;break t}O=(m<<4)+u|0,m=((G|0)==(re|0)|G)&1,O=m?S:O,S=m?S:u}if(y=y+1|0,(he|0)==(y|0))break}t[M>>2]=0}if(m=t[x+8>>2],!m)break e;if(S=t[x+12>>2],m>>>0>=4)for(u=m&-4,M=0;t[S+12>>2]=0,t[S+4>>2]=999,t[S+8>>2]=0,t[S+60>>2]=0,t[S+52>>2]=999,t[S+56>>2]=0,t[S+44>>2]=0,t[S+36>>2]=999,t[S+40>>2]=0,t[S+28>>2]=0,t[S+20>>2]=999,t[S+24>>2]=0,S=S- -64|0,M=M+4|0,(u|0)!=(M|0););if(u=m&3,!u)break e;for(M=0;t[S+12>>2]=0,t[S+4>>2]=999,t[S+8>>2]=0,S=S+16|0,M=M+1|0,(u|0)!=(M|0););}return Nt=H+256|0,x}function zr(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0;S=Nt-80|0,Nt=S,t[S+76>>2]=1;e:{t:{if(y=t[x+104>>2],(y|0)!=1|t[x+108>>2]!=1|(t[x+84>>2]|t[x+88>>2])||(M=t[x+76>>2],t[M>>2]|t[M+4>>2]|(t[M+8>>2]!=t[x+92>>2]|t[M+12>>2]!=t[x+96>>2])))break t;if(y=0,!Dc(x,S+72|0,0,S+68|0,S- -64|0,S+60|0,S+56|0,S+52|0,S+76|0,u,m))break e;n:{if(hl(x,t[S+72>>2],0,0,u,m)){if(u=t[x+76>>2],t[u+16>>2])break n;y=1;break e}vt(m,1,19043,0);break e}for(u=t[u+24>>2],m=0;y=De(m,52),Gt(t[(y+u|0)+44>>2]),M=t[x+76>>2],u=t[M+24>>2],O=y+u|0,A=t[x+208>>2],G=t[t[t[A+20>>2]>>2]+20>>2]+De(m,76)|0,t[O+44>>2]=t[G+36>>2],t[O+36>>2]=t[(y+t[t[A+24>>2]+24>>2]|0)+36>>2],t[G+36>>2]=0,y=1,m=m+1|0,m>>>0>2];);break e}for(;;){t:{n:{if(!(!t[t[x+156>>2]+5596>>2]|((y|0)!=1|t[x+108>>2]!=1))){t[S+72>>2]=0,t[x+204>>2]=0,t[x+8>>2]=t[x+8>>2]|128,y=0;break n}if(y=0,!Dc(x,S+72|0,0,S+68|0,S- -64|0,S+60|0,S+56|0,S+52|0,S+76|0,u,m))break e;if(!t[S+76>>2])break t;y=t[S+72>>2]}if(M=y+1|0,A=hl(x,y,0,0,u,m),O=De(t[x+104>>2],t[x+108>>2]),!A){t[S+4>>2]=O,t[S>>2]=M,vt(m,1,17174,S),y=0;break e}if(t[S+36>>2]=O,t[S+32>>2]=M,vt(m,4,22836,S+32|0),!x4(t[x+208>>2],t[t[x+76>>2]+24>>2])){y=0;break e}n:{if(!(t[x+104>>2]!=1|t[x+108>>2]!=1)&&(O=t[x+76>>2],A=t[x+72>>2],t[O>>2]!=t[A>>2]|t[O+4>>2]!=t[A+4>>2]|(t[O+8>>2]!=t[A+8>>2]|t[O+12>>2]!=t[A+12>>2]))||(y=t[x+156>>2]+De(y,5644)|0,O=t[y+5596>>2],!O))break n;Gt(O),t[y+5596>>2]=0,t[y+5600>>2]=0}if(t[S+16>>2]=M,vt(m,4,28933,S+16|0),M=t[u+12>>2],O=M,y=t[u+8>>2],M|y?(A=t[u+56>>2],M=y-A|0,y=O-(t[u+60>>2]+(y>>>0>>0)|0)|0):(M=0,y=0),!(y|M)&t[x+8>>2]==64)break t;if(G=G+1|0,y=t[x+104>>2],(G|0)!=(De(y,t[x+108>>2])|0))continue}break}y=(V4(x,m)|0)!=0}return Nt=S+80|0,y|0}function Sf(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;if(O=t[x+16>>2],O>>>0>=32)return t[x+8>>2];y=t[x+20>>2];e:{if((y|0)>=4){u=t[x>>2],m=t[u-3>>2],y=y-4|0,t[x+20>>2]=y,t[x>>2]=u-4;break e}if((y|0)<=0)break e;Y=y&1,u=t[x>>2];t:{if((y|0)==1){S=24;break t}for(H=y&-2,S=24;A=u-1|0,t[x>>2]=A,G=xe[u|0],u=u-2|0,t[x>>2]=u,t[x+20>>2]=y-1,A=xe[A|0],y=y-2|0,t[x+20>>2]=y,m=G<>2]=u-1,u=xe[u|0],t[x+20>>2]=y-1,m=u<>2],H=m&255,t[x+24>>2]=H>>>0>143,u=u&&(m&2130706432)==2130706432?7:8,A=u+(m>>>0<=2415919103?8:(m&8323072)==8323072?7:8)|0,M=m>>>16&255,G=A+(M>>>0<=143?8:(m&32512)==32512?7:8)|0,S=m>>>8&255,Y=G+(O+(S>>>0<=143?8:(m&127)==127?7:8)|0)|0,t[x+16>>2]=Y,Q=t[x+12>>2],u=M<>>24|S<>>0>=32?(S=u<>>32-m,u=u<>2],u=S|Q,A=u,t[x+8>>2]=O,t[x+12>>2]=u,Y>>>0<=31){e:{if((y|0)>=4){u=t[x>>2],m=t[u-3>>2],t[x+20>>2]=y-4,t[x>>2]=u-4;break e}if((y|0)<=0){m=0;break e}G=y&1,u=t[x>>2];t:{if((y|0)==1){S=24,m=0;break t}for(Q=y&-2,S=24,m=0,M=0;re=u-1|0,t[x>>2]=re,se=xe[u|0],u=u-2|0,t[x>>2]=u,t[x+20>>2]=y-1,re=xe[re|0],y=y-2|0,t[x+20>>2]=y,m=se<>2]=u-1,u=xe[u|0],t[x+20>>2]=y-1,m=u<>2]=y>>>0>143,H=H>>>0<=143?8:(m&2130706432)==2130706432?7:8,G=H+(m>>>0<=2415919103?8:(m&8323072)==8323072?7:8)|0,M=m>>>16&255,Q=G+(M>>>0<=143?8:(m&32512)==32512?7:8)|0,S=m>>>8&255,t[x+16>>2]=Q+(Y+(S>>>0<=143?8:(m&127)==127?7:8)|0),u=x,x=M<>>24|S<>>0>=32?(y=x<>>32-m,x=x<>2]=O,t[u+12>>2]=y|A}return O}function Uu(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;u=t[x+32>>2];e:{if(u)break e;m=t[x+16>>2];t:{if((m|0)>5){S=m;break t}u=t[x+20>>2];n:{r:{if((u|0)>=5){S=t[x>>2],O=t[S>>2],t[x>>2]=S+4,G=u-4|0;break r}if((u|0)<=0){O=-1;break n}S=t[x>>2];i:{if((u|0)==1){y=S,M=-1;break i}for(M=-1;y=S+1|0,t[x>>2]=y,S=xe[S|0],A=u-1|0,t[x+20>>2]=A,M=(255<>>0>2,S=y,u=A,!!H;);}t[x>>2]=y+1,O=(255<>2]=G}if(S=t[x+24>>2],y=O>>>24|0,t[x+24>>2]=(y|0)==255,M=O>>>8&255,G=(M|0)==255,u=O&255,A=(u|0)==255,O=O>>>16&255,H=(O|0)==255,Y=(G+(A+S|0)|0)+H|0,S=(m-Y|0)+32|0,t[x+16>>2]=S,Q=t[x+12>>2],y=y|(O|(M|u<<(A?7:8))<<(G?7:8))<<(H?7:8),m=(Y-m|0)+32|0,u=m&31,(m&63)>>>0>=32?(A=y<>>32-u,u=y<>2]=u|t[x+8>>2],t[x+12>>2]=A|Q,u=0,(S|0)<6)break e}for(O=0;;){if(u=8,(O|0)==8)break e;m=t[x+28>>2],A=t[(m<<2)+35104>>2],u=t[x+8>>2],y=t[x+12>>2];t:{if((y|0)<0){S=S-1|0,t[x+16>>2]=S,t[x+8>>2]=u<<1,t[x+12>>2]=y<<1|u>>>31,t[x+28>>2]=(m|0)>=11?12:m+1|0,y=(-1<>2]=S,t[x+28>>2]=(m|0)>1?m-1|0:0,G=u,m=M&31,(M&63)>>>0>=32?(M=G<>>32-m|y<>2]=m,t[x+12>>2]=M,M=u,m=63-A|0,u=m&31,y=((-1<>>0>=32?y>>>u|0:((1<>>u))<<1|1}if(M=t[x+44>>2],u=De(O,7),m=u&31,G=t[x+40>>2],(u&63)>>>0>=32?(A=63<>>32-m,m=63<>31,M=y,y=u&31,m=x,(u&63)>>>0>=32?(A=M<>>32-y|A<>2]=u|G,t[m+44>>2]=A|H,O=O+1|0,u=O,!((S|0)>5))break}}return t[x+32>>2]=u-1,y=t[x+44>>2],M=y>>>7|0,S=t[x+40>>2],t[x+40>>2]=(y&127)<<25|S>>>7,t[x+44>>2]=M,S&127}function ya(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0;if(A=t[x+16>>2],A>>>0>=32)return t[x+8>>2];y=t[x+24>>2];e:{if((y|0)>=4){u=t[x>>2],m=t[u>>2],O=y-4|0,t[x+24>>2]=O,t[x>>2]=u+4;break e}if(m=t[x+28>>2]?-1:0,(y|0)<=0){O=y;break e}H=y&1,u=t[x>>2];t:{if((y|0)==1){M=u;break t}for(G=y&-2;t[x>>2]=u+1,Y=xe[u|0],M=u+2|0,t[x>>2]=M,t[x+24>>2]=y-1,u=xe[u+1|0],y=y-2|0,t[x+24>>2]=y,m=((255<>2]=M+1,u=xe[M|0],t[x+24>>2]=y-1,m=(255<>2],G=m>>>24|0,t[x+20>>2]=(G|0)==255,M=m>>>16&255,y=m>>>8&255,u=u?7:8,m=m&255,S=u+((m|0)==255?7:8)|0,Y=((y|0)==255?7:8)+S|0,H=(A+((M|0)==255?7:8)|0)+Y|0,t[x+16>>2]=H,Q=t[x+12>>2],u=m|(y<>>0>=32?(M=u<>>32-m,u=u<>2],u=M|Q,Y=u,t[x+8>>2]=A,t[x+12>>2]=u,H>>>0<=31){e:{if((O|0)>=4){u=t[x>>2],y=t[u>>2],t[x+24>>2]=O-4,t[x>>2]=u+4;break e}if(S=0,y=t[x+28>>2]?-1:0,(O|0)<=0)break e;Q=O&1,u=t[x>>2];t:{if((O|0)==1){m=u;break t}for(re=O&-2,M=0;t[x>>2]=u+1,se=xe[u|0],m=u+2|0,t[x>>2]=m,t[x+24>>2]=O-1,u=xe[u+1|0],O=O-2|0,t[x+24>>2]=O,y=((255<>2]=m+1,u=xe[m|0],t[x+24>>2]=O-1,y=(255<>>24|0,t[x+20>>2]=(m|0)==255,M=y>>>16&255,O=y>>>8&255,S=(G|0)==255?7:8,y=y&255,G=S+((y|0)==255?7:8)|0,Q=((O|0)==255?7:8)+G|0,t[x+16>>2]=(H+((M|0)==255?7:8)|0)+Q,u=x,x=y|(O<>>0>=32?(M=x<>>32-m,x=x<>2]=A,t[u+12>>2]=M|Y}return A}function l0(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;t[x+8>>2]=0,t[x+12>>2]=0,t[x>>2]=u,t[x+28>>2]=y,t[x+16>>2]=0,t[x+20>>2]=0,O=m-1|0,t[x+24>>2]=O,se=u&3;e:{if((m|0)<=0){S=u,u=y;break e}S=u+1|0,t[x>>2]=S,u=xe[u|0]}A=8,t[x+16>>2]=8,G=u,t[x+8>>2]=u,t[x+12>>2]=0,M=u&255,H=(M|0)==255,t[x+20>>2]=H;e:{if((se|0)==3)break e;he=m-2|0,t[x+24>>2]=he;t:{if((m|0)<2){u=S,S=y;break t}u=S+1|0,t[x>>2]=u,S=xe[S|0]}if(A=(M|0)==255?15:16,t[x+16>>2]=A,Y=S&255,H=(Y|0)==255,t[x+20>>2]=H,G=G|S<<8,t[x+8>>2]=G,re=S>>>24|0,t[x+12>>2]=re,(se|0)==2){S=u,m=O,O=he;break e}Q=m-3|0,t[x+24>>2]=Q;t:{if((m|0)<3){M=u,u=y;break t}M=u+1|0,t[x>>2]=M,u=xe[u|0]}if(me=u&255,H=(me|0)==255,t[x+20>>2]=H,Y=((Y|0)==255?7:8)+A|0,t[x+16>>2]=Y,O=A&31,(A&63)>>>0>=32?(S=u<>>32-O,u=u<>2]=G,t[x+12>>2]=u,(se|0)==1){S=M,A=Y,m=he,O=Q;break e}O=m-4|0,t[x+24>>2]=O;t:{if((m|0)<4){S=M,u=y;break t}S=M+1|0,t[x>>2]=S,u=xe[M|0]}H=(u&255)==255,t[x+20>>2]=H,A=Y+((me|0)==255?7:8)|0,t[x+16>>2]=A,m=Y&31,(Y&63)>>>0>=32?(M=u<>>32-m,u=u<>2]=G,t[x+12>>2]=u,m=Q}e:{if((m|0)>=5){y=t[S>>2],t[x+24>>2]=m-5,t[x>>2]=S+4;break e}if(u=0,y=y?-1:0,(m|0)<2)break e;for(;M=S+1|0,t[x>>2]=M,S=xe[S|0],m=O-1|0,t[x+24>>2]=m,y=(255<>>0>1,S=M,O=m,!!Q;);}Q=y>>>24|0,t[x+20>>2]=(Q|0)==255,M=y>>>16&255,O=y>>>8&255,S=y&255,y=H?7:8,m=((S|0)==255?7:8)+y|0,u=((O|0)==255?7:8)+m|0,t[x+16>>2]=(((M|0)==255?7:8)+A|0)+u,u=S|(O<>>0>=32?(m=u<>>32-y,u=u<>2]=u|G,t[x+12>>2]=m|re}function Tf(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0;y=t[x+116>>2];e:{M=De(u,m);t:{n:{r:{if(M>>>0>ln[x+132>>2]){if(Gt(y),y=Jo(M<<2),t[x+116>>2]=y,!y)break t;t[x+132>>2]=M;break r}if(!y)break n}pi(y,0,M<<2)}if(y=t[x+120>>2],A=u+2|0,H=m+3>>>2|0,M=De(A,H+2|0),M>>>0<=ln[x+136>>2]){S=M<<2;break e}if(Gt(y),S=M<<2,y=Jo(S),t[x+120>>2]=y,y)break e}return 0}t[x+136>>2]=M,pi(y,0,S),M=t[x+120>>2];e:{if(!A)break e;if(y=M,G=u+1|0,G>>>0>=7)for(S=A&-8;t[y+24>>2]=1226833920,t[y+28>>2]=1226833920,t[y+16>>2]=1226833920,t[y+20>>2]=1226833920,t[y+8>>2]=1226833920,t[y+12>>2]=1226833920,t[y>>2]=1226833920,t[y+4>>2]=1226833920,y=y+32|0,O=O+8|0,(S|0)!=(O|0););if(S=A&7,S)for(O=0;t[y>>2]=1226833920,y=y+4|0,O=O+1|0,(S|0)!=(O|0););if(!A)break e;if(y=M+(De(H+1|0,A)<<2)|0,G>>>0>=7)for(S=A&-8,O=0;t[y+24>>2]=1226833920,t[y+28>>2]=1226833920,t[y+16>>2]=1226833920,t[y+20>>2]=1226833920,t[y+8>>2]=1226833920,t[y+12>>2]=1226833920,t[y>>2]=1226833920,t[y+4>>2]=1226833920,y=y+32|0,O=O+8|0,(S|0)!=(O|0););if(S=A&7,!S)break e;for(O=0;t[y>>2]=1226833920,y=y+4|0,O=O+1|0,(S|0)!=(O|0););}y=m&3;e:{if(!y|!A)break e;if(G=(y|0)==1?1224736768:(y|0)==2?1207959552:1073741824,y=M+(De(A,H)<<2)|0,u+1>>>0>=7)for(M=A&-8,S=0;t[y+28>>2]=G,t[y+24>>2]=G,t[y+20>>2]=G,t[y+16>>2]=G,t[y+12>>2]=G,t[y+8>>2]=G,t[y+4>>2]=G,t[y>>2]=G,y=y+32|0,S=S+8|0,(M|0)!=(S|0););if(M=A&7,!M)break e;for(S=0;t[y>>2]=G,y=y+4|0,S=S+1|0,(M|0)!=(S|0););}return t[x+128>>2]=m,t[x+124>>2]=u,1}function Wh(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0,jt=0,Yt=0,en=0,un=0,Cn=0,Tn=0,Rn=0;if(Oe=(u<<3)+x|0,S=Oe+40|0,t[S>>2]=0,t[S+4>>2]=0,Ze=t[x+16>>2],!Ze)return 1;for(Cn=t[x+20>>2],kt=1;;){if(x=De(Ne,76)+Cn|0,Rt=t[x+20>>2],Rt)for(Tn=t[x+28>>2],re=0;;){if(se=De(re,152)+Tn|0,jt=t[se+24>>2],jt)for(he=0;;){x=De(he,36)+se|0;e:{if(t[x+36>>2]==t[x+28>>2]|t[x+40>>2]==t[x+32>>2]||(Yt=De(t[se+20>>2],t[se+16>>2]),!Yt))break e;for(Rn=t[x+48>>2],me=0;;){if($e=De(me,40)+Rn|0,en=De(t[$e+20>>2],t[$e+16>>2]),en)for(_e=0;;){A=t[$e+24>>2]+De(_e,52)|0,x=t[A+4>>2],u||(t[A+44>>2]=0),H=x+De(u,24)|0;t:{if(m<0){S=t[A+48>>2],M=t[A+44>>2];break t}if(M=t[A+44>>2],un=t[A+48>>2],M>>>0>=un>>>0){S=M;break t}for(Q=t[A+8>>2],S=M,x=M;;){Y=De(x,24)+Q|0,O=t[Y>>2];n:{if(!S){G=mr[Y+8>>3];break n}G=mr[Y+8>>3],Y=(De(S,24)+Q|0)-24|0,G=G-mr[Y+8>>3],O=O-t[Y>>2]|0}n:{if(!O){x=x+1|0,S=G!=0?x:S;break n}x=x+1|0,S=m-G/+(O>>>0)<2220446049250313e-31?x:S}if((x|0)==(un|0))break}}O=t[H>>2],x=S-M|0,(O|0)!=(x|0)?(t[H>>2]=x,kt=0):x=O;t:{if(!x){t[H+8>>2]=0,t[H+12>>2]=0;break t}Q=t[A+8>>2],O=Q+De(S-1|0,24)|0,x=t[O>>2];n:{if(!M){G=mr[O+8>>3],O=t[A>>2];break n}M=(Q+De(M,24)|0)-24|0,G=mr[O+8>>3]-mr[M+8>>3],M=t[M>>2],O=M+t[A>>2]|0,x=x-M|0}if(t[H+16>>2]=O,t[H+4>>2]=x,mr[H+8>>3]=G,mr[Oe+40>>3]=G+mr[Oe+40>>3],!y)break t;t[A+44>>2]=S}if(_e=_e+1|0,(en|0)==(_e|0))break}if(me=me+1|0,(Yt|0)==(me|0))break}}if(he=he+1|0,(jt|0)==(he|0))break}if(re=re+1|0,(Rt|0)==(re|0))break}if(Ne=Ne+1|0,(Ze|0)==(Ne|0))break}return kt}function $h(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;H=Nt-256|0,Nt=H,M=oi(1,20);e:{if(!M){vt(m,1,10356,0),M=0;break e}for(t[M+4>>2]=u,t[M>>2]=x,t[H>>2]=u,t[H+128>>2]=x;me=O,O=O+1|0,A=O<<2,y=(u+1|0)/2|0,t[A+H>>2]=y,re=A+(H+128|0)|0,A=(x+1|0)/2|0,t[re>>2]=A,G=De(x,u),S=G+S|0,u=y,x=A,G>>>0>1;);if(t[M+8>>2]=S,!S){Gt(M),M=0;break e}if(y=oi(S,16),t[M+12>>2]=y,!y){vt(m,1,6057,0),Gt(M),M=0;break e}if(Q=t[M+8>>2],t[M+16>>2]=Q<<4,x=y,me)for(S=(De(t[M+4>>2],t[M>>2])<<4)+y|0,u=S;;){m=se<<2,G=t[m+H>>2];t:{if((G|0)<=0)break t;he=G-1|0,A=0;n:{if(m=t[m+(H+128|0)>>2],(m|0)<=0){if(O=0,(G|0)!=1)for(Y=G&-2;re=(O|0)==(he|0),O=O+2|0,S=re?u:S,u=S,A=A+2|0,(Y|0)!=(A|0););if(G&1)break n;u=S;break t}for(;;){for(O=S,S=m;;){r:{if(t[x>>2]=u,(S|0)==1){x=x+16|0,u=u+16|0;break r}if(t[x+16>>2]=u,u=u+16|0,x=x+32|0,Y=(S|0)>2,S=S-2|0,Y)continue}break}if(Y=((A|0)==(he|0)|A)&1,S=Y?u:O+(m<<4)|0,u=Y?u:O,A=A+1|0,(G|0)==(A|0))break}break t}O=((O|0)==(he|0)|O)&1,m=O?u:(m<<4)+S|0,u=O?u:S,S=m}if(se=se+1|0,(se|0)==(me|0))break}t[x>>2]=0;t:{if(!Q)break t;if(Q>>>0>=4)for(x=Q&-4,u=0;t[y+12>>2]=0,t[y+4>>2]=999,t[y+8>>2]=0,t[y+60>>2]=0,t[y+52>>2]=999,t[y+56>>2]=0,t[y+44>>2]=0,t[y+36>>2]=999,t[y+40>>2]=0,t[y+28>>2]=0,t[y+20>>2]=999,t[y+24>>2]=0,y=y- -64|0,u=u+4|0,(x|0)!=(u|0););if(x=Q&3,!x)break t;for(u=0;t[y+12>>2]=0,t[y+4>>2]=999,t[y+8>>2]=0,y=y+16|0,u=u+1|0,(x|0)!=(u|0););}}return Nt=H+256|0,M}function S4(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;A=Nt-16|0,Nt=A,G=t[x+72>>2],t[x+8>>2]==16?S=t[x+156>>2]+De(t[x+204>>2],5644)|0:S=t[x+12>>2],dt[S+5640|0]=xe[S+5640|0]|1;e:{if(m>>>0<=4){vt(y,1,7464,0);break e}if(ue(u,S,1),ln[S>>2]>=8){vt(y,1,7404,0);break e}if(ue(u+1|0,A+8|0,1),O=t[A+8>>2],t[S+4>>2]=O,(O|0)>=5&&(vt(y,1,7363,0),t[S+4>>2]=-1),ue(u+2|0,S+8|0,2),O=t[S+8>>2],O-65536>>>0<=4294901760){t[A>>2]=O,vt(y,1,18215,A);break e}if(H=t[x+164>>2],t[S+12>>2]=H||O,ue(u+4|0,S+16|0,1),ln[S+16>>2]>=2){vt(y,1,9019,0);break e}H=u+5|0,t[A+12>>2]=m-5,G=t[G+16>>2];t:{if(!G)break t;if(u=t[S>>2]&1,S=t[S+5584>>2],O=0,G>>>0>=8)for(Y=G&-8,m=0;t[S+De(M,1080)>>2]=u,t[S+De(M|1,1080)>>2]=u,t[S+De(M|2,1080)>>2]=u,t[S+De(M|3,1080)>>2]=u,t[S+De(M|4,1080)>>2]=u,t[S+De(M|5,1080)>>2]=u,t[S+De(M|6,1080)>>2]=u,t[S+De(M|7,1080)>>2]=u,M=M+8|0,m=m+8|0,(Y|0)!=(m|0););if(m=G&7,!m)break t;for(;t[S+De(M,1080)>>2]=u,M=M+1|0,O=O+1|0,(m|0)!=(O|0););}if(M=0,!wi(x,0,H,A+12|0,y)){vt(y,1,7464,0);break e}if(t[A+12>>2]){vt(y,1,7464,0);break e}if(t[x+8>>2]==16?u=t[x+156>>2]+De(t[x+204>>2],5644)|0:u=t[x+12>>2],ln[t[x+72>>2]+16>>2]>=2)for(u=t[u+5584>>2],y=t[u+4>>2]<<2,S=u+944|0,M=u+812|0,O=1,m=u;t[m+1084>>2]=t[u+4>>2],t[m+1088>>2]=t[u+8>>2],t[m+1092>>2]=t[u+12>>2],t[m+1096>>2]=t[u+16>>2],t[m+1100>>2]=t[u+20>>2],Yr(m+1892|0,M,y),Yr(m+2024|0,S,y),m=m+1080|0,O=O+1|0,O>>>0>2]+16>>2];);M=1}return Nt=A+16|0,M|0}function ba(x,u,m,y,S){var M=0,O=Ye(0),A=0,G=0,H=0,Y=Ye(0);G=m>>>0>>0?m:y;e:{if(!G){x=u;break e}if(M=u-32|0,O=Ue[u>>2],Ue[M>>2]=Ye(Ye(Ue[x>>2]+O)*S)+Ue[M>>2],M=u-28|0,Ue[M>>2]=Ye(Ye(Ue[x+4>>2]+Ue[u+4>>2])*S)+Ue[M>>2],M=u-24|0,Ue[M>>2]=Ye(Ye(Ue[x+8>>2]+Ue[u+8>>2])*S)+Ue[M>>2],M=u-20|0,Ue[M>>2]=Ye(Ye(Ue[x+12>>2]+Ue[u+12>>2])*S)+Ue[M>>2],M=u-16|0,Ue[M>>2]=Ye(Ye(Ue[x+16>>2]+Ue[u+16>>2])*S)+Ue[M>>2],M=u-12|0,Ue[M>>2]=Ye(Ye(Ue[x+20>>2]+Ue[u+20>>2])*S)+Ue[M>>2],M=u-8|0,Ue[M>>2]=Ye(Ye(Ue[x+24>>2]+Ue[u+24>>2])*S)+Ue[M>>2],M=u-4|0,Ue[M>>2]=Ye(Ye(Ue[x+28>>2]+Ue[u+28>>2])*S)+Ue[M>>2],x=u- -64|0,H=1,(G|0)==1)break e;for(;M=x-32|0,Y=O,O=Ue[u+64>>2],Ue[M>>2]=Ye(Ye(Y+O)*S)+Ue[M>>2],M=x,A=x-28|0,Ue[A>>2]=Ye(Ye(Ue[u+4>>2]+Ue[x+4>>2])*S)+Ue[A>>2],A=x-24|0,Ue[A>>2]=Ye(Ye(Ue[u+8>>2]+Ue[x+8>>2])*S)+Ue[A>>2],A=x-20|0,Ue[A>>2]=Ye(Ye(Ue[u+12>>2]+Ue[x+12>>2])*S)+Ue[A>>2],A=x-16|0,Ue[A>>2]=Ye(Ye(Ue[u+16>>2]+Ue[x+16>>2])*S)+Ue[A>>2],A=x-12|0,Ue[A>>2]=Ye(Ye(Ue[u+20>>2]+Ue[x+20>>2])*S)+Ue[A>>2],A=x-8|0,Ue[A>>2]=Ye(Ye(Ue[u+24>>2]+Ue[x+24>>2])*S)+Ue[A>>2],A=x-4|0,Ue[A>>2]=Ye(Ye(Ue[u+28>>2]+Ue[x+28>>2])*S)+Ue[A>>2],x=x- -64|0,u=M,H=H+1|0,(H|0)!=(G|0););}m>>>0>y>>>0&&(u=x-32|0,O=Ue[x+-64>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-28|0,O=Ue[x-60>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-24|0,O=Ue[x-56>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-20|0,O=Ue[x-52>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-16|0,O=Ue[x-48>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-12|0,O=Ue[x-44>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-8|0,O=Ue[x-40>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2],u=x-4|0,O=Ue[x-36>>2],Ue[u>>2]=Ye(Ye(O+O)*S)+Ue[u>>2])}function T4(x){x=x|0;var u=0,m=0,y=0,S=0,M=0,O=0;e:{if(y=oi(1,48),y){if(u=t[x+200>>2],m=t[u+4>>2],t[y>>2]=t[u>>2],t[y+4>>2]=m,m=t[u+12>>2],t[y+8>>2]=t[u+8>>2],t[y+12>>2]=m,m=t[u+20>>2],t[y+16>>2]=t[u+16>>2],t[y+20>>2]=m,m=t[u+24>>2],t[y+24>>2]=m,u=si(De(m,24)),t[y+28>>2]=u,!u)return Gt(y),0;m=t[t[x+200>>2]+28>>2];t:{if(m){Yr(u,m,De(t[y+24>>2],24));break t}Gt(u),t[y+28>>2]=0}if(m=t[t[x+200>>2]+36>>2],t[y+36>>2]=m,u=oi(m,40),t[y+40>>2]=u,!u)return Gt(t[y+28>>2]),Gt(y),0;t:{if(t[t[x+200>>2]+40>>2]){if(!t[y+36>>2])break t;for(;;){if(S=De(O,40),m=t[(S+t[t[x+200>>2]+40>>2]|0)+20>>2],t[(u+S|0)+20>>2]=m,M=si(De(m,24)),m=t[y+40>>2],u=m+S|0,t[u+24>>2]=M,!M){if(O){for(u=0;Gt(t[(t[y+40>>2]+De(u,40)|0)+24>>2]),u=u+1|0,(O|0)!=(u|0););m=t[y+40>>2]}break e}m=t[(S+t[t[x+200>>2]+40>>2]|0)+24>>2];n:{if(m){Yr(M,m,De(t[u+20>>2],24)),u=t[y+40>>2];break n}Gt(M),u=t[y+40>>2],t[(S+u|0)+24>>2]=0}if(m=t[(S+t[t[x+200>>2]+40>>2]|0)+4>>2],t[(u+S|0)+4>>2]=m,M=si(De(m,24)),m=t[y+40>>2],u=m+S|0,t[u+16>>2]=M,!M){if(O){for(u=0;x=De(u,40),Gt(t[(x+t[y+40>>2]|0)+24>>2]),Gt(t[(x+t[y+40>>2]|0)+16>>2]),u=u+1|0,(O|0)!=(u|0););m=t[y+40>>2]}break e}m=t[(S+t[t[x+200>>2]+40>>2]|0)+16>>2];n:{if(m){Yr(M,m,De(t[u+4>>2],24)),u=t[y+40>>2];break n}Gt(M),u=t[y+40>>2],t[(S+u|0)+16>>2]=0}if(m=u+S|0,t[m+32>>2]=0,t[m+36>>2]=0,O=O+1|0,!(O>>>0>2]))break}break t}Gt(u),t[y+40>>2]=0}}else y=0;return y|0}return Gt(m),Gt(t[y+28>>2]),Gt(y),0}function Bu(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;S=Nt-80|0,Nt=S;e:{if(m>>>0<=2){vt(y,1,26001,0);break e}if(xe[x+124|0]){vt(y,4,21754,0),O=1;break e}O=1,ue(u,x+40|0,1),ue(u+1|0,x+52|0,1),ue(u+2|0,x+44|0,1),M=u+3|0;t:{n:{r:{i:{a:switch(A=t[x+40>>2],A-1|0){case 1:break i;case 0:break a;default:break r}if(m>>>0<=6){t[S+16>>2]=m,vt(y,1,27132,S+16|0),O=0;break e}if((m|0)==7|t[x+48>>2]==14||(t[S+48>>2]=m,vt(y,2,27132,S+48|0)),ue(M,x+48|0,4),t[x+48>>2]!=14)break t;if(M=si(36),!M){O=0,vt(y,1,17870,0);break e}t[M>>2]=14,t[S+64>>2]=0,t[S+56>>2]=0,t[S+72>>2]=0,t[S+60>>2]=0,t[S+68>>2]=0,t[S+76>>2]=0,O=4470064,t[S+52>>2]=4470064,t[M+4>>2]=1145390592;a:{if((m|0)!=7){if((m|0)==35){ue(u+7|0,S+76|0,4),ue(u+11|0,S+72|0,4),ue(u+15|0,S+68|0,4),ue(u+19|0,S- -64|0,4),ue(u+23|0,S+60|0,4),ue(u+27|0,S+56|0,4),ue(u+31|0,S+52|0,4),t[M+4>>2]=0,O=t[S+52>>2],m=t[S+56>>2],y=t[S+64>>2],G=t[S+68>>2],H=t[S+76>>2],A=t[S+72>>2],u=t[S+60>>2];break a}t[S+32>>2]=m,vt(y,2,27168,S+32|0)}m=0,y=0,A=0,u=0}t[M+24>>2]=u,t[M+16>>2]=G,t[M+8>>2]=H,t[M+32>>2]=O,t[M+28>>2]=m,t[M+20>>2]=y,t[M+12>>2]=A,t[x+112>>2]=0,t[x+108>>2]=M;break t}if(u=m-3|0,t[x+112>>2]=u,y=oi(1,u),t[x+108>>2]=y,!y)break n;if((m|0)<=3)break t;for(m=0;ue(M,S+76|0,1),dt[t[x+108>>2]+m|0]=t[S+76>>2],M=M+1|0,m=m+1|0,(u|0)!=(m|0););break t}if(A>>>0<3)break e;t[S>>2]=A,vt(y,4,28282,S);break e}O=0,t[x+112>>2]=0;break e}O=1,dt[x+124|0]=1}return Nt=S+80|0,O|0}function js(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0;if(O=t[x+48>>2],O>>>0>=m>>>0)return Yr(u,t[x+36>>2],m),t[x+36>>2]=t[x+36>>2]+m,t[x+48>>2]=t[x+48>>2]-m,M=t[x+60>>2],u=t[x+56>>2]+m|0,M=u>>>0>>0?M+1|0:M,t[x+56>>2]=u,t[x+60>>2]=M,m;if(xe[x+68|0]&4)return Yr(u,t[x+36>>2],O),m=t[x+48>>2],t[x+48>>2]=0,t[x+36>>2]=m+t[x+36>>2],u=t[x+60>>2],y=m,m=t[x+56>>2]+m|0,u=y>>>0>m>>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u,O||-1;e:{if(O){A=Yr(u,t[x+36>>2],O),G=t[x+32>>2],t[x+36>>2]=G,S=t[x+48>>2],t[x+48>>2]=0,u=t[x+60>>2],M=t[x+56>>2]+S|0,u=M>>>0>>0?u+1|0:u,t[x+56>>2]=M,t[x+60>>2]=u,m=m-S|0,u=S+A|0;break e}G=t[x+32>>2],t[x+36>>2]=G}e:{t:{for(;;){n:{S=t[x>>2],A=t[x+16>>2],M=t[x+64>>2];r:{if(M>>>0>m>>>0){if(A=Zt[A|0](G,M,S)|0,t[x+48>>2]=A,(A|0)==-1)break e;if(m>>>0<=A>>>0)break n;Yr(u,t[x+36>>2],A),G=t[x+32>>2],t[x+36>>2]=G,S=t[x+48>>2];break r}if(S=Zt[A|0](u,m,S)|0,t[x+48>>2]=S,(S|0)==-1)break e;if(m>>>0<=S>>>0)break t;G=t[x+32>>2],t[x+36>>2]=G,A=S}t[x+48>>2]=0,M=t[x+60>>2],H=t[x+56>>2]+S|0,M=H>>>0>>0?M+1|0:M,t[x+56>>2]=H,t[x+60>>2]=M,u=u+S|0,m=m-S|0,O=O+A|0;continue}break}return Yr(u,t[x+36>>2],m),t[x+36>>2]=t[x+36>>2]+m,t[x+48>>2]=t[x+48>>2]-m,u=t[x+60>>2],y=t[x+56>>2]+m|0,u=y>>>0>>0?u+1|0:u,t[x+56>>2]=y,t[x+60>>2]=u,m+O|0}return t[x+48>>2]=0,t[x+36>>2]=t[x+32>>2],u=t[x+60>>2],m=t[x+56>>2]+S|0,u=m>>>0>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u,S+O|0}return vt(y,4,27674,0),t[x+48>>2]=0,t[x+68>>2]=t[x+68>>2]|4,O||-1}function Ip(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;if(S=t[x+48>>2],S>>>0>=u>>>0)return t[x+48>>2]=S-u,t[x+36>>2]=t[x+36>>2]+u,S=m+t[x+60>>2]|0,y=u+t[x+56>>2]|0,S=y>>>0>>0?S+1|0:S,t[x+56>>2]=y,t[x+60>>2]=S,Gi=m,u|0;if(xe[x+68|0]&4)return t[x+48>>2]=0,t[x+36>>2]=S+t[x+36>>2],O=t[x+60>>2],m=t[x+56>>2],u=m+S|0,t[x+56>>2]=u,t[x+60>>2]=u>>>0>>0?O+1|0:O,Gi=S?0:-1,(S||-1)|0;S&&(t[x+48>>2]=0,t[x+36>>2]=t[x+32>>2],G=u,M=S,u=u-S|0,m=m-(S>>>0>G>>>0)|0);e:{if(!!u&(m|0)>=0|(m|0)>0)for(;;){if(G=t[x+12>>2],S=m+O|0,A=u+M|0,S=t[x+60>>2]+(A>>>0>>0?S+1|0:S)|0,H=A,A=A+t[x+56>>2]|0,S=H>>>0>A>>>0?S+1|0:S,(S|0)==(G|0)&A>>>0>ln[x+8>>2]|S>>>0>G>>>0){vt(y,4,27674,0),t[x+48>>2]=0,t[x+36>>2]=t[x+32>>2],u=O+t[x+60>>2]|0,m=M+t[x+56>>2]|0,u=m>>>0>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u,y=t[x+8>>2],M=y-m|0,S=t[x+12>>2],O=S-((m>>>0>y>>>0)+u|0)|0,G=Zt[t[x+28>>2]](y,S,t[x>>2])|0,A=t[x+68>>2],G&&(t[x+56>>2]=y,t[x+60>>2]=S),t[x+68>>2]=A|4,x=(m|0)==(y|0)&(u|0)==(S|0),u=x?-1:M;break e}if(S=Zt[t[x+24>>2]](u,m,t[x>>2])|0,G=Gi,A=G,(S&A)==-1){vt(y,4,27674,0),t[x+68>>2]=t[x+68>>2]|4,S=O+t[x+60>>2]|0,u=M+t[x+56>>2]|0,S=u>>>0>>0?S+1|0:S,t[x+56>>2]=u,t[x+60>>2]=S,x=!(O|M),u=x?-1:M;break e}if(O=O+A|0,M=S+M|0,O=M>>>0>>0?O+1|0:O,m=m-((u>>>0>>0)+A|0)|0,u=u-S|0,!(!!u&(m|0)>=0|(m|0)>0))break}return u=O+t[x+60>>2]|0,m=M+t[x+56>>2]|0,u=m>>>0>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u,Gi=O,M|0}return Gi=x?-1:O,u|0}function wi(x,u,m,y,S){var M=0,O=0,A=0,G=0,H=0;O=Nt-32|0,Nt=O,t[x+8>>2]==16?A=t[x+156>>2]+De(t[x+204>>2],5644)|0:A=t[x+12>>2];e:{if(ln[y>>2]<=4){x=0,vt(S,1,4504,0);break e}if(G=t[A+5584>>2],A=G+De(u,1080)|0,ue(m,A+4|0,1),M=t[A+4>>2]+1|0,t[A+4>>2]=M,M>>>0>=34){t[O+4>>2]=33,t[O>>2]=M,vt(S,1,17272,O),x=0;break e}if(H=t[x+160>>2],H>>>0>=M>>>0){t[O+24>>2]=M,t[O+20>>2]=H,t[O+16>>2]=u,vt(S,1,28755,O+16|0),t[x+8>>2]=t[x+8>>2]|32768,x=0;break e}if(x=G+De(u,1080)|0,ue(m+1|0,x+8|0,1),t[x+8>>2]=t[x+8>>2]+2,ue(m+2|0,x+12|0,1),M=t[x+12>>2]+2|0,t[x+12>>2]=M,x=t[x+8>>2],!(!(x>>>0>10|M>>>0>10)&x+M>>>0<13)){x=0,vt(S,1,8951,0);break e}if(x=G+De(u,1080)|0,ue(m+3|0,x+16|0,1),xe[x+16|0]&128){x=0,vt(S,1,10543,0);break e}if(ue(m+4|0,x+20|0,1),ln[x+20>>2]>=2){x=0,vt(S,1,10478,0);break e}if(M=t[y>>2]-5|0,t[y>>2]=M,x=1,H=t[A+4>>2],!(dt[A|0]&1)){if(!H)break e;for(y=0,u=G+De(u,1080)|0;x=u+(y<<2)|0,t[x+944>>2]=15,t[x+812>>2]=15,x=1,y=y+1|0,y>>>0>2];);break e}if(M>>>0>=H>>>0){t:{if(!H){u=0;break t}if(ue(m+5|0,O+28|0,1),G=G+De(u,1080)|0,t[G+812>>2]=t[O+28>>2]&15,t[G+944>>2]=t[O+28>>2]>>>4,u=t[A+4>>2],u>>>0>=2)for(x=m+6|0,m=1;;){ue(x,O+28|0,1);n:{if(u=t[O+28>>2],u>>>0>=16&&(u=u&15,u))break n;x=0,vt(S,1,9948,0);break e}if(M=G+(m<<2)|0,t[M+812>>2]=u,t[M+944>>2]=t[O+28>>2]>>>4,x=x+1|0,u=t[A+4>>2],m=m+1|0,!(u>>>0>m>>>0))break}M=t[y>>2]}t[y>>2]=M-u,x=1;break e}x=0,vt(S,1,4504,0)}return Nt=O+32|0,x}function pu(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0;if(S=t[x+24>>2],H=t[S+16>>2],!H)return 0;M=t[S+24>>2],S=t[t[t[x+20>>2]>>2]+20>>2];e:{t:{if(!u){for(u=0;;){m=t[M+24>>2],x=(t[S+28>>2]+De(t[S+24>>2],152)|0)-152|0,O=t[x+12>>2],A=t[x+4>>2],y=O-A|0,x=t[x+8>>2]-t[x>>2]|0;n:{if((O|0)==(A|0)||(N0(x,0,y,0),!Gi))break n;break e}y=De(x,y);n:{if(x=(m>>>3|0)+((m&7)!=0)|0,m=(x|0)==3?4:x,!m||(N0(m,0,y,0),!Gi))break n;break e}if(x=-1,m=De(m,y),m>>>0>(u^-1)>>>0)break t;if(S=S+76|0,M=M+52|0,u=u+m|0,x=u,G=G+1|0,(H|0)==(G|0))break}break t}if(u=0,!t[x+64>>2]){for(;;){m=t[M+24>>2],x=(t[S+28>>2]+De(t[S+24>>2],152)|0)-152|0,O=t[x+148>>2],A=t[x+140>>2],y=O-A|0,x=t[x+144>>2]-t[x+136>>2]|0;n:{if((O|0)==(A|0)||(N0(x,0,y,0),!Gi))break n;break e}y=De(x,y);n:{if(x=(m>>>3|0)+((m&7)!=0)|0,m=(x|0)==3?4:x,!m||(N0(m,0,y,0),!Gi))break n;break e}if(x=-1,m=De(m,y),m>>>0>(u^-1)>>>0)break t;if(S=S+76|0,M=M+52|0,u=u+m|0,x=u,G=G+1|0,(H|0)==(G|0))break}break t}for(;;){m=t[M+24>>2],x=(t[S+28>>2]+De(t[S+24>>2],152)|0)-152|0,O=t[x+12>>2],A=t[x+4>>2],y=O-A|0,x=t[x+8>>2]-t[x>>2]|0;n:{if((O|0)==(A|0)||(N0(x,0,y,0),!Gi))break n;break e}y=De(x,y);n:{if(x=(m>>>3|0)+((m&7)!=0)|0,m=(x|0)==3?4:x,!m||(N0(m,0,y,0),!Gi))break n;break e}if(x=-1,m=De(m,y),m>>>0>(u^-1)>>>0)break t;if(S=S+76|0,M=M+52|0,u=u+m|0,x=u,G=G+1|0,(H|0)==(G|0))break}}return x}return-1}function Ef(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0,Ze=0,kt=0,Rt=0;A=Nt-32|0,Nt=A,$e=t[x+16>>2];e:{if(!$e){S=1;break e}t:{if(se=t[x>>2],(se|0)<0||(he=t[x+4>>2],(he|0)<0)||(m=t[x+8>>2],(m|0)<0)||(M=t[x+12>>2],(M|0)<0))break t;for(x=t[x+24>>2],kt=m,Rt=M;;){if(y=t[x>>2],G=y>>31,O=G-!y|0,m=O,Y=y-1|0,M=se+Y|0,m=M>>>0>>0?m+1|0:m,me=I0(M,m,y,G),t[x+16>>2]=me,H=t[x+4>>2],_e=H>>31,Ze=_e-!H|0,m=Ze,Oe=H-1|0,M=he+Oe|0,m=M>>>0>>0?m+1|0:m,Ne=I0(M,m,H,_e),t[x+20>>2]=Ne,M=t[x+40>>2],S=M&31,(M&63)>>>0>=32?(m=-1<>>32-S,S=-1<>>0>Y>>>0?m+1|0:m,y=I0(Y,m,y,G),m=(y>>31)+Q|0,O=y,y=y+S|0,m=O>>>0>y>>>0?m+1|0:m,G=y,y=M&31,y=(M&63)>>>0>=32?m>>y:((1<>>y,m=Q+(me>>31)|0,O=y,G=S+me|0,m=G>>>0>>0?m+1|0:m,y=M&31,m=O-((M&63)>>>0>=32?m>>y:((1<>>y)|0,(m|0)<0){t[A+4>>2]=m,t[A>>2]=re,vt(u,1,24847,A),S=0;break e}if(t[x+8>>2]=m,m=Ze,y=Oe+Rt|0,m=y>>>0>>0?m+1|0:m,y=I0(y,m,H,_e),m=Q+(y>>31)|0,y=y+S|0,m=y>>>0>>0?m+1|0:m,H=y,y=M&31,y=(M&63)>>>0>=32?m>>y:((1<>>y,m=Q+(Ne>>31)|0,O=S,S=S+Ne|0,m=O>>>0>S>>>0?m+1|0:m,O=y,y=S,S=M&31,m=O-((M&63)>>>0>=32?m>>S:((1<>>S)|0,(m|0)<0){t[A+20>>2]=m,t[A+16>>2]=re,vt(u,1,24916,A+16|0),S=0;break e}if(t[x+12>>2]=m,x=x+52|0,S=1,re=re+1|0,($e|0)==(re|0))break}break e}vt(u,1,10699,0)}return Nt=A+32|0,S}function E4(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0,Oe=0,Ne=0,$e=0;y=(t[x+28>>2]+De(u,152)|0)-152|0,m=t[y+8>>2]-t[y>>2]|0,O=m,y=t[y+12>>2]-t[y+4>>2]|0,M=y,m=m>>>0>=64?64:m,S=y>>>0>=64?64:y;e:{t:{if(!O|!y|(!m|!S)||m>>>0>4294967295/(S>>>0)>>>2>>>0)break t;y=oi(1,28),t[y+12>>2]=S,t[y+8>>2]=m,t[y+4>>2]=M,t[y>>2]=O,G=M,M=S+M|0,H=G>>>0>M>>>0?1:H,S=c0(M-1|0,H-!M|0,S,0),t[y+20>>2]=S,M=0,G=O,O=m+O|0,M=G>>>0>O>>>0?1:M,m=c0(O-1|0,M-!O|0,m,0),t[y+16>>2]=m,N0(S,0,m,0);n:{if(Gi||(m=oi(4,De(m,S)),t[y+24>>2]=m,!m))break n;break e}Gt(y)}y=0}if(!y)return 0;e:{if(u)for(;;){if(M=t[x+28>>2]+De(Q,152)|0,m=t[M+24>>2],m)for(he=Q-1|0,O=t[M+20>>2],A=t[M+16>>2],re=0;;){if(De(O,A)){for(H=M+De(re,36)|0,se=0;;){if(Y=t[H+48>>2]+De(se,40)|0,S=t[Y+20>>2],m=t[Y+16>>2],De(S,m)){for(O=0;;){if(A=t[Y+24>>2]+(O<<6)|0,me=t[A+60>>2],me){if(Ne=t[A+20>>2],$e=t[A+16>>2],_e=t[A+8>>2],m=_e-t[H+28>>2]|0,A=t[A+12>>2],S=A-t[H+32>>2]|0,Oe=t[H+44>>2],Oe&1&&(G=m,m=t[x+28>>2]+De(he,152)|0,m=(G+t[m+8>>2]|0)-t[m>>2]|0),Oe&2&&(G=S,S=t[x+28>>2]+De(he,152)|0,S=(G+t[S+12>>2]|0)-t[S+4>>2]|0),G=m,m=$e-_e|0,!Jh(y,G,S,G+m|0,(Ne-A|0)+S|0,me,1,m))break e;S=t[Y+20>>2],m=t[Y+16>>2]}if(O=O+1|0,!(O>>>0>>0))break}A=t[M+16>>2],O=t[M+20>>2]}if(se=se+1|0,!(se>>>0>>0))break}m=t[M+24>>2]}if(re=re+1|0,!(re>>>0>>0))break}if(Q=Q+1|0,(Q|0)==(u|0))break}return y}return As(y),0}function Df(x){x=x|0;var u=0,m=0,y=0,S=0,M=0;if(x){e:{if(t[x>>2]){u=t[x+12>>2],u&&(Gn(u),Gt(t[x+12>>2]),t[x+12>>2]=0),u=t[x+16>>2],u&&(Gt(u),t[x+16>>2]=0,t[x+20>>2]=0),Gt(t[x- -64>>2]),t[x+60>>2]=0,t[x+64>>2]=0;break e}if(u=t[x+44>>2],u&&(Gt(u),t[x+44>>2]=0),u=t[x+32>>2],u&&(Gt(u),t[x+32>>2]=0,t[x+36>>2]=0),u=t[x+52>>2],!u)break e;Gt(u),t[x+52>>2]=0,t[x+56>>2]=0}if(L1(t[x+208>>2]),u=t[x+156>>2],u){if(y=De(t[x+104>>2],t[x+108>>2]),y){for(;Gn(u),u=u+5644|0,m=m+1|0,(y|0)!=(m|0););u=t[x+156>>2]}Gt(u),t[x+156>>2]=0}if(u=t[x+116>>2],u){if(m=t[x+112>>2],m){for(u=0;y=t[t[x+116>>2]+(u<<3)>>2],y&&(Gt(y),m=t[x+112>>2]),u=u+1|0,m>>>0>u>>>0;);u=t[x+116>>2]}t[x+112>>2]=0,Gt(u),t[x+116>>2]=0}if(Gt(t[x+136>>2]),t[x+120>>2]=0,t[x+136>>2]=0,Gt(t[x+100>>2]),t[x+100>>2]=0,xe[x+188|0]&2||Gt(t[x+168>>2]),pi(x+80|0,0,112),Xp(t[x+192>>2]),t[x+192>>2]=0,Xp(t[x+196>>2]),t[x+192>>2]=0,u=t[x+200>>2],u){if(m=t[u+28>>2],m&&(Gt(m),t[u+28>>2]=0),m=t[u+40>>2],m){if(t[u+36>>2])for(;y=De(M,40),S=t[(y+m|0)+36>>2],S&&(Gt(S),m=t[u+40>>2],t[(y+m|0)+36>>2]=0),S=t[(m+y|0)+16>>2],S&&(Gt(S),m=t[u+40>>2],t[(y+m|0)+16>>2]=0),S=t[(m+y|0)+24>>2],S&&(Gt(S),m=t[u+40>>2],t[(y+m|0)+24>>2]=0),M=M+1|0,M>>>0>2];);Gt(m),t[u+40>>2]=0}Gt(u)}t[x+200>>2]=0,di(t[x+72>>2]),t[x+72>>2]=0,di(t[x+76>>2]),t[x+76>>2]=0,A4(t[x+212>>2]),t[x+212>>2]=0,Gt(x)}}function Ps(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;S=Le(),t[u+72>>2]=S;e:{t:{if(!S)break t;n:{if(vn(t[u+196>>2],119,y)&&vn(t[u+196>>2],120,y))break n;break e}O=t[u+196>>2],G=t[O>>2],M=t[O+8>>2];n:{if(G){if(S=1,(G|0)!=1)for(Y=G&-2;;){A=0;r:{if(!S||(A=0,!(Zt[t[M>>2]](u,x,y)|0)))break r;A=(Zt[t[M+4>>2]](u,x,y)|0)!=0}if(S=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}r:{i:{if(G&1){if(!S)break i;S=(Zt[t[M>>2]](u,x,y)|0)!=0}if(t[O>>2]=0,!S)break r;break n}t[O>>2]=0}break e}t[O>>2]=0}n:{if(vn(t[u+192>>2],121,y)&&vn(t[u+192>>2],122,y))break n;break e}O=t[u+192>>2],G=t[O>>2],M=t[O+8>>2];n:{if(G){if(S=1,(G|0)!=1)for(Y=G&-2,H=0;;){A=0;r:{if(!S||(A=0,!(Zt[t[M>>2]](u,x,y)|0)))break r;A=(Zt[t[M+4>>2]](u,x,y)|0)!=0}if(S=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}r:{i:{if(G&1){if(!S)break i;S=(Zt[t[M>>2]](u,x,y)|0)!=0}if(t[O>>2]=0,!S)break r;break n}t[O>>2]=0}break e}t[O>>2]=0}if(x=Le(),t[m>>2]=x,!x)break t;Hh(t[u+72>>2],x),x=De(t[u+108>>2],t[u+104>>2]),t[t[u+200>>2]+36>>2]=x,y=oi(x,40),x=t[u+200>>2],t[x+40>>2]=y;n:{if(!y)break n;if(!t[x+36>>2])return 1;for(M=0;;){if(S=De(M,40),x=S+y|0,t[x+20>>2]=0,t[x+28>>2]=100,x=oi(100,24),O=t[u+200>>2],y=t[O+40>>2],t[(S+y|0)+24>>2]=x,!x)break n;if(Q=1,M=M+1|0,!(M>>>0>2]))break}break t}di(t[m>>2]),Q=0,t[m>>2]=0}return Q|0}return di(t[u+72>>2]),t[u+72>>2]=0,0}function v5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;H=t[x+72>>2],Y=De(t[x+104>>2],t[x+108>>2]);e:{if(Y)for(u=t[H+16>>2],he=De(u,1080),Q=De(u,u)<<2,S=t[x+12>>2],y=t[x+156>>2];;){if(re=t[y+5584>>2],u=Yr(y,S,5644),t[u+5608>>2]=0,t[u+5588>>2]=-1,t[u+5168>>2]=0,t[u+5636>>2]=0,t[u+5616>>2]=0,t[u+5624>>2]=0,t[u+5628>>2]=0,t[u+5584>>2]=re,dt[u+5640|0]=xe[u+5640|0]&252,t[S+5608>>2]){if(y=si(Q),t[u+5608>>2]=y,!y)return 0;Yr(y,t[S+5608>>2],Q)}if(M=De(t[S+5624>>2],20),y=si(M),t[u+5616>>2]=y,G=0,!y)break e;if(Yr(y,t[S+5616>>2],M),O=t[S+5620>>2],O)for(y=t[S+5616>>2],M=t[u+5616>>2],A=0;;){if(t[y+12>>2]){if(O=si(t[y+16>>2]),t[M+12>>2]=O,!O)return 0;Yr(O,t[y+12>>2],t[y+16>>2]),O=t[S+5620>>2]}if(t[u+5624>>2]=t[u+5624>>2]+1,M=M+20|0,y=y+20|0,A=A+1|0,!(A>>>0>>0))break}if(M=De(t[S+5636>>2],20),y=si(M),t[u+5628>>2]=y,!y)break e;if(Yr(y,t[S+5628>>2],M),t[u+5636>>2]=t[S+5636>>2],G=t[S+5636>>2],G)for(y=t[S+5628>>2],M=t[u+5628>>2],A=0;O=t[y+8>>2],O&&(t[M+8>>2]=t[u+5616>>2]+De((O-t[S+5616>>2]|0)/20|0,20)),O=t[y+12>>2],O&&(t[M+12>>2]=t[u+5616>>2]+De((O-t[S+5616>>2]|0)/20|0,20)),M=M+20|0,y=y+20|0,A=A+1|0,(G|0)!=(A|0););if(Yr(re,t[S+5584>>2],he),y=u+5644|0,se=se+1|0,(Y|0)==(se|0))break}if(G=1,u=$5(1),t[x+208>>2]=u,!u)return 0;if(Wr(u,H,x+80|0,t[x+212>>2]))break e;L1(t[x+208>>2]),G=0,t[x+208>>2]=0,vt(m,1,6161,0)}return G|0}function If(x){x=x|0;var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0;O=Nt-16|0,Nt=O,Q=t[t[x+72>>2]+16>>2],u=oi(1,56),t[O+12>>2]=u;e:{if(!u)break e;if(G=t[t[x+72>>2]+16>>2],t[u+24>>2]=G,t[u>>2]=t[x+84>>2],t[u+4>>2]=t[x+88>>2],t[u+8>>2]=t[x+92>>2],t[u+12>>2]=t[x+96>>2],t[u+16>>2]=t[x+104>>2],A=t[x+108>>2],t[u+52>>2]=0,t[u+20>>2]=A,H=t[x+12>>2],t[u+32>>2]=t[H>>2],t[u+36>>2]=t[H+4>>2],t[u+40>>2]=t[H+8>>2],t[u+44>>2]=t[H+16>>2],x=oi(G,1080),t[u+48>>2]=x,x){if(Q)for(;;){x=De(Y,1080),y=x+t[u+48>>2]|0,m=x+t[H+5584>>2]|0,t[y+4>>2]=t[m>>2],x=t[m+4>>2],t[y+8>>2]=x,t[y+12>>2]=t[m+8>>2],t[y+16>>2]=t[m+12>>2],t[y+20>>2]=t[m+16>>2],t[y+24>>2]=t[m+20>>2],x>>>0<=32&&(Yr(y+948|0,m+944|0,x),Yr(y+816|0,m+812|0,t[m+4>>2])),x=t[m+24>>2],t[y+28>>2]=x,t[y+808>>2]=t[m+804>>2],M=1;t:{if((x|0)!=1){if(x=De(t[m+4>>2],3),x-3>>>0>95)break t;M=x-2|0}if(he=M&1,x=0,(M|0)!=1)for(me=M&-2,M=0;re=y+32|0,A=x<<2,se=m+28|0,S=se+(x<<3)|0,t[re+A>>2]=t[S+4>>2],G=y+420|0,t[G+A>>2]=t[S>>2],S=x|1,A=S<<2,S=(S<<3)+se|0,t[A+re>>2]=t[S+4>>2],t[A+G>>2]=t[S>>2],x=x+2|0,M=M+2|0,(me|0)!=(M|0););if(!he)break t;S=(x<<2)+y|0,x=(x<<3)+m|0,t[S+32>>2]=t[x+32>>2],t[S+420>>2]=t[x+28>>2]}if(t[y+812>>2]=t[m+808>>2],Y=Y+1|0,(Y|0)==(Q|0))break}S=u;break e}O+12|0&&(x=t[O+12>>2],u=t[x+48>>2],u&&(Gt(u),x=t[O+12>>2]),Gt(x),t[O+12>>2]=0)}return Nt=O+16|0,S|0}function D4(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0;e:{t:{if(S=t[x+60>>2],!S){if(t[u+16>>2])break t;return 1}if(G=si(De(S,52)),!G)break e;if(S=0,t[u+16>>2])for(y=t[u+24>>2];S=De(M,52),Gt(t[(S+y|0)+44>>2]),y=t[u+24>>2],t[(S+y|0)+44>>2]=0,M=M+1|0,S=t[u+16>>2],M>>>0>>0;);if(t[x+60>>2]){for(M=t[t[x+76>>2]+24>>2],S=0;A=De(t[t[x+64>>2]+(S<<2)>>2],52),y=A+M|0,m=t[y+4>>2],O=G+De(S,52)|0,t[O>>2]=t[y>>2],t[O+4>>2]=m,t[O+48>>2]=t[y+48>>2],m=t[y+44>>2],t[O+40>>2]=t[y+40>>2],t[O+44>>2]=m,m=t[y+36>>2],t[O+32>>2]=t[y+32>>2],t[O+36>>2]=m,m=t[y+28>>2],t[O+24>>2]=t[y+24>>2],t[O+28>>2]=m,m=t[y+20>>2],t[O+16>>2]=t[y+16>>2],t[O+20>>2]=m,m=t[y+12>>2],t[O+8>>2]=t[y+8>>2],t[O+12>>2]=m,M=t[t[x+76>>2]+24>>2],m=A+M|0,t[O+36>>2]=t[m+36>>2],t[O+44>>2]=t[m+44>>2],t[m+44>>2]=0,S=S+1|0,m=t[x+60>>2],S>>>0>>0;);S=t[u+16>>2]}if(S){for(y=t[t[x+76>>2]+24>>2],M=0;m=De(M,52),Gt(t[(m+y|0)+44>>2]),y=t[t[x+76>>2]+24>>2],t[(m+y|0)+44>>2]=0,M=M+1|0,M>>>0>2];);m=t[x+60>>2]}return t[u+16>>2]=m,Gt(t[u+24>>2]),t[u+24>>2]=G,1}for(S=t[u+24>>2],M=t[t[x+76>>2]+24>>2];A=De(y,52),m=A+S|0,t[m+36>>2]=t[(M+A|0)+36>>2],Gt(t[m+44>>2]),S=t[u+24>>2],M=t[t[x+76>>2]+24>>2],m=A+M|0,t[(A+S|0)+44>>2]=t[m+44>>2],t[m+44>>2]=0,y=y+1|0,y>>>0>2];);return 1}return di(t[x+72>>2]),t[x+72>>2]=0,0}function Io(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;A=Nt-16|0,Nt=A,t[x+8>>2]==16?M=t[x+156>>2]+De(t[x+204>>2],5644)|0:M=t[x+12>>2];e:{if(m>>>0<=1){vt(y,1,6685,0),x=0;break e}ue(u,A+12|0,2);t:{if(t[A+12>>2]){vt(y,2,6101,0);break t}if(m>>>0<=6){vt(y,1,6685,0),x=0;break e}ue(u+2|0,A+12|0,2),S=t[M+5616>>2],Y=xe[A+12|0];n:{r:{i:{if(O=t[M+5620>>2],!O){x=S;break i}for(x=S;;){if(t[x+8>>2]==(Y|0))break i;if(x=x+20|0,G=G+1|0,(G|0)==(O|0))break}break r}if((O|0)!=(G|0))break n}if(t[M+5624>>2]==(O|0)){if(x=O+10|0,t[M+5624>>2]=x,x=Wi(S,De(x,20)),S=t[M+5616>>2],!x){Gt(S),t[M+5624>>2]=0,t[M+5616>>2]=0,t[M+5620>>2]=0,vt(y,1,6750,0),x=0;break e}r:{if((x|0)==(S|0)||(Q=t[M+5632>>2],!Q))break r;for(re=t[M+5628>>2],G=0;O=De(G,20)+re|0,H=t[O+8>>2],H&&(t[O+8>>2]=x+De((H-S|0)/20|0,20)),H=t[O+12>>2],H&&(t[O+12>>2]=x+De((H-S|0)/20|0,20)),G=G+1|0,(Q|0)!=(G|0););}t[M+5616>>2]=x,S=t[M+5620>>2],pi(x+De(S,20)|0,0,De(t[M+5624>>2]-S|0,20)),O=t[M+5620>>2],S=t[M+5616>>2]}t[M+5620>>2]=O+1,x=De(O,20)+S|0}if(S=t[x+12>>2],S&&(Gt(S),t[x+12>>2]=0,t[x+16>>2]=0),t[x+8>>2]=Y,S=t[A+12>>2],t[x>>2]=S>>>10&3,t[x+4>>2]=S>>>8&3,ue(u+4|0,A+12|0,2),t[A+12>>2]){vt(y,2,5270,0);break t}if(m=m-6|0,S=si(m),t[x+12>>2]=S,!S){vt(y,1,6685,0),x=0;break e}Yr(S,u+6|0,m),t[x+16>>2]=m}x=1}return Nt=A+16|0,x|0}function B2(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;e:{t:{if(!t[x+12>>2]){if(Y=1,t[x+4>>2]>0|t[x+8>>2]>1)break t;break e}if(S=1,t[x+8>>2]>0)break t;if(t[x+4>>2]<2)break e}if(u=t[x>>2],M=u+(S<<5)|0,O=t[x+16>>2],A=t[x+20>>2],O>>>0>>0)for(y=O;m=(y<<6)+M|0,Ue[m>>2]=Ue[m>>2]*Ye(1.2301740646362305),Ue[m+4>>2]=Ue[m+4>>2]*Ye(1.2301740646362305),Ue[m+8>>2]=Ue[m+8>>2]*Ye(1.2301740646362305),Ue[m+12>>2]=Ue[m+12>>2]*Ye(1.2301740646362305),Ue[m+16>>2]=Ue[m+16>>2]*Ye(1.2301740646362305),Ue[m+20>>2]=Ue[m+20>>2]*Ye(1.2301740646362305),Ue[m+24>>2]=Ue[m+24>>2]*Ye(1.2301740646362305),Ue[m+28>>2]=Ue[m+28>>2]*Ye(1.2301740646362305),y=y+1|0,(A|0)!=(y|0););if(G=u+(Y<<5)|0,H=t[x+28>>2],m=t[x+24>>2],H>>>0>m>>>0)for(y=m;u=(y<<6)+G|0,Ue[u>>2]=Ue[u>>2]*Ye(1.625732421875),Ue[u+4>>2]=Ue[u+4>>2]*Ye(1.625732421875),Ue[u+8>>2]=Ue[u+8>>2]*Ye(1.625732421875),Ue[u+12>>2]=Ue[u+12>>2]*Ye(1.625732421875),Ue[u+16>>2]=Ue[u+16>>2]*Ye(1.625732421875),Ue[u+20>>2]=Ue[u+20>>2]*Ye(1.625732421875),Ue[u+24>>2]=Ue[u+24>>2]*Ye(1.625732421875),Ue[u+28>>2]=Ue[u+28>>2]*Ye(1.625732421875),y=y+1|0,(H|0)!=(y|0););u=M+32|0,y=t[x+8>>2],x=t[x+4>>2],S=x-S|0,S=(y|0)<(S|0)?y:S,mu(G,u,O,A,S,Ye(-.4435068666934967)),Q=G+32|0,y=y-Y|0,x=(x|0)<(y|0)?x:y,mu(M,Q,m,H,x,Ye(-.8829110860824585)),mu(G,u,O,A,S,Ye(.05298011749982834)),mu(M,Q,m,H,x,Ye(1.5861343145370483))}}function wa(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;M=Nt+-64|0,Nt=M;e:{if(Ja(u,48848,0)){t[m>>2]=0,y=1;break e}t:{if(xe[x+8|0]&24)S=1;else{if(!u||(S=T2(u,48580),!S))break t;S=(xe[S+8|0]&24)!=0}O=Ja(x,u,S)}if(O){if(y=1,x=t[m>>2],!x)break e;t[m>>2]=t[x>>2];break e}t:{if(!u)break t;if(S=T2(u,48628),!S||(u=t[m>>2],u&&(t[m>>2]=t[u>>2]),O=t[S+8>>2],u=t[x+8>>2],O&(u^-1)&7|u&(O^-1)&96)||(y=1,Ja(t[x+12>>2],t[S+12>>2],0)))break e;if(Ja(t[x+12>>2],48836,0)){if(x=t[S+12>>2],!x)break e;y=!T2(x,48680);break e}if(O=t[x+12>>2],!O)break t;if(y=0,u=T2(O,48628),u){if(!(dt[x+8|0]&1))break e;x=t[S+12>>2],m=0;n:{r:{for(;;){if(y=0,!x)break n;if(x=T2(x,48628),!x|t[x+8>>2]&(t[u+8>>2]^-1))break r;if(y=1,Ja(t[u+12>>2],t[x+12>>2],0))break n;if(!(dt[u+8|0]&1)||(y=t[u+12>>2],!y))break r;if(u=T2(y,48628),u){x=t[x+12>>2];continue}break}if(u=T2(y,48740),!u)break r;m=Ck(u,t[x+12>>2])}y=m}break e}if(u=T2(O,48740),u){if(!(dt[x+8|0]&1))break e;y=Ck(u,t[S+12>>2]);break e}if(u=T2(O,48532),!u||(x=t[S+12>>2],!x)||(x=T2(x,48532),!x))break e;y=M+8|0,pi(y|4,0,52),t[M+56>>2]=1,t[M+20>>2]=-1,t[M+16>>2]=u,t[M+8>>2]=x,Zt[t[t[x>>2]+28>>2]](x,y,t[m>>2],1),x=t[M+32>>2],!t[m>>2]|(x|0)!=1||(t[m>>2]=t[M+24>>2]),y=(x|0)==1;break e}y=0}return Nt=M- -64|0,y|0}function Mc(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;Y=Nt-16|0,Nt=Y,y=1,se=t[x+72>>2],Q=t[se+16>>2];e:{if(Q>>>0<2)break e;for(A=1;;){M=t[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+5584>>2],O=t[M+24>>2];t:{n:{if(H=De(A,1080),re=H+M|0,G=t[re+24>>2],(O|0)!=(G|0)|t[M+804>>2]!=t[re+804>>2])break n;if(S=1,(O|0)!=1){if(y=t[M+4>>2],(y|0)!=t[re+4>>2])break n;if(S=De(y,3)-2|0,!S)break t}for(y=0;;){if(he=(y<<3)+M|0,t[he+28>>2]!=t[(H+he|0)+28>>2])break n;if(y=y+1|0,(S|0)==(y|0))break}if(!O||(y=0,!S))break t;for(;;){if(O=(y<<3)+M|0,t[O+32>>2]!=t[(O+H|0)+32>>2])break n;if(y=y+1|0,(S|0)==(y|0))break}break t}if(S=1,y=t[x+52>>2],S=(G|0)!=1?De(t[re+4>>2],3)-2|0:S,O=(Q>>>0>256?6:5)+(G?S<<1|1:S+1|0)|0,O>>>0>ln[x+56>>2]){if(y=Wi(y,O),!y){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,y=0,vt(m,1,7841,0);break e}t[x+56>>2]=O,t[x+52>>2]=y,M=t[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+5584>>2],G=t[(H+M|0)+24>>2]}if(S=1,S=(G|0)!=1?De(t[(M+H|0)+4>>2],3)-2|0:S,lr(y,65373,2),S=G?S<<1|1:S+1|0,M=ln[t[x+72>>2]+16>>2]<257,lr(y+2|0,S+(M?3:4)|0,2),lr(y+4|0,A,M?1:2),t[Y+12>>2]=S,bp(t[x+156>>2],t[x+204>>2],A,(M?5:6)+y|0,Y+12|0,m),(Go(u,t[x+52>>2],O,m)|0)!=(O|0)){y=0;break e}se=t[x+72>>2]}if(y=1,A=A+1|0,Q=t[se+16>>2],!(A>>>0>>0))break}}return Nt=Y+16|0,y|0}function L1(x){var u=0,m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0;if(x){if(u=t[x+20>>2],u){if(M=t[u>>2],M){if(S=t[M+20>>2],t[M+16>>2]){for(A=dt[x+40|0]&1?251:252;;){if(y=t[S+28>>2],y){if(u=t[S+32>>2],u>>>0>=152){for(Y=(u>>>0)/152|0,G=0;;){if(u=t[y+48>>2],u){if(m=t[y+52>>2],m>>>0>=40){for(O=(m>>>0)/40|0,m=0;Yh(t[u+32>>2]),t[u+32>>2]=0,Yh(t[u+36>>2]),t[u+36>>2]=0,Zt[A|0](u),u=u+40|0,m=m+1|0,(O|0)!=(m|0););u=t[y+48>>2]}Gt(u),t[y+48>>2]=0}if(u=t[y+84>>2],u){if(m=t[y+88>>2],m>>>0>=40){for(O=(m>>>0)/40|0,m=0;Yh(t[u+32>>2]),t[u+32>>2]=0,Yh(t[u+36>>2]),t[u+36>>2]=0,Zt[A|0](u),u=u+40|0,m=m+1|0,(O|0)!=(m|0););u=t[y+84>>2]}Gt(u),t[y+84>>2]=0}if(u=t[y+120>>2],u){if(m=t[y+124>>2],m>>>0>=40){for(O=(m>>>0)/40|0,m=0;Yh(t[u+32>>2]),t[u+32>>2]=0,Yh(t[u+36>>2]),t[u+36>>2]=0,Zt[A|0](u),u=u+40|0,m=m+1|0,(O|0)!=(m|0););u=t[y+120>>2]}Gt(u),t[y+120>>2]=0}if(y=y+152|0,G=G+1|0,(Y|0)==(G|0))break}y=t[S+28>>2]}Gt(y),t[S+28>>2]=0}e:{if(!t[S+40>>2]||(u=t[S+36>>2],!u))break e;Gt(u),t[S+44>>2]=0,t[S+48>>2]=0,t[S+36>>2]=0,t[S+40>>2]=0}if(Gt(t[S+52>>2]),S=S+76|0,H=H+1|0,!(H>>>0>2]))break}S=t[M+20>>2]}Gt(S),t[M+20>>2]=0,Gt(t[t[x+20>>2]>>2]),u=t[x+20>>2],t[u>>2]=0}Gt(u),t[x+20>>2]=0}Gt(t[x+68>>2]),Gt(x)}}function Op(x,u,m,y,S,M,O){var A=0,G=0,H=0,Y=0,Q=0,re=0;if(Q=M<<3,y)for(A=(Q<<2)+x|0,re=O-2|0,Y=y,G=u;;){Y=Y-1|0,M=0;e:{t:switch(re|0){case 6:M=t[A+4>>2],t[G>>2]=t[A>>2],t[G+4>>2]=M,M=t[A+28>>2],t[G+24>>2]=t[A+24>>2],t[G+28>>2]=M,M=t[A+20>>2],t[G+16>>2]=t[A+16>>2],t[G+20>>2]=M,M=t[A+12>>2],t[G+8>>2]=t[A+8>>2],t[G+12>>2]=M;break e;case 5:t[G>>2]=t[A>>2],M=1;case 4:H=M<<2,t[H+G>>2]=t[A+H>>2],M=M+1|0;case 3:H=M<<2,t[H+G>>2]=t[A+H>>2],M=M+1|0;case 2:H=M<<2,t[H+G>>2]=t[A+H>>2],M=M+1|0;case 1:H=M<<2,t[H+G>>2]=t[A+H>>2],M=M+1|0;case 0:H=M<<2,t[H+G>>2]=t[A+H>>2],M=M+1|0;break;default:break t}M=M<<2,t[M+G>>2]=t[M+A>>2]}if(A=A- -64|0,G=(S<<2)+G|0,!Y)break}if(m)for(A=(De(y,S)<<2)+u|0,G=(8-Q<<2)+x|0,x=O-2|0;;){m=m-1|0,M=0;e:{t:switch(x|0){case 5:t[A>>2]=t[G>>2],M=1;case 4:u=M<<2,t[u+A>>2]=t[u+G>>2],M=M+1|0;case 3:u=M<<2,t[u+A>>2]=t[u+G>>2],M=M+1|0;case 2:u=M<<2,t[u+A>>2]=t[u+G>>2],M=M+1|0;case 1:u=M<<2,t[u+A>>2]=t[u+G>>2],M=M+1|0;case 0:u=M<<2,t[u+A>>2]=t[u+G>>2],M=M+1|0;default:u=M<<2,t[u+A>>2]=t[u+G>>2];break e;case 6:break t}u=t[G+4>>2],t[A>>2]=t[G>>2],t[A+4>>2]=u,u=t[G+28>>2],t[A+24>>2]=t[G+24>>2],t[A+28>>2]=u,u=t[G+20>>2],t[A+16>>2]=t[G+16>>2],t[A+20>>2]=u,u=t[G+12>>2],t[A+8>>2]=t[G+8>>2],t[A+12>>2]=u}if(G=G- -64|0,A=(S<<2)+A|0,!m)break}}function I4(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;m=t[x+8>>2],S=m+t[x+4>>2]|0;e:{if(!t[x+12>>2]){if((S|0)<2)break e;A=(m<<2)+u|0,m=t[A>>2],y=t[u>>2]-(m+1>>1)|0,G=t[x>>2];t:{if(S>>>0<4){M=m;break t}for(Y=(S-4>>>1|0)+1|0,x=1;M=x<<2,Q=t[M+u>>2],M=t[M+A>>2],re=O<<2,t[re+G>>2]=y,H=y,y=Q-((m+M|0)+2>>2)|0,t[G+(re|4)>>2]=(H+y>>1)+m,O=O+2|0,H=(x|0)!=(Y|0),m=M,x=x+1|0,!!H;);}t[G+(O<<2)>>2]=y,S&1?(m=S-1|0,x=t[(m<<1&-4)+u>>2]-(M+1>>1)|0,t[G+(m<<2)>>2]=x,y=x+y>>1,x=-2):x=-1,t[(x+S<<2)+G>>2]=y+M,Yr(u,G,S<<2);return}t:switch(S-1|0){case 0:t[u>>2]=t[u>>2]/2;return;case 1:x=t[x>>2],m=(m<<2)+u|0,y=t[u>>2]-(t[m>>2]+1>>1)|0,t[x+4>>2]=y,t[x>>2]=y+t[m>>2],m=t[x+4>>2],t[u>>2]=t[x>>2],t[u+4>>2]=m;return;default:break t}if((S|0)<3)break e;A=t[x>>2],Y=(m<<2)+u|0,m=t[Y+4>>2],x=t[Y>>2],y=t[u>>2]-((m+x|0)+2>>2)|0,t[A>>2]=y+x,x=S|-2,Q=S-2|0;t:{if((x+Q|0)+1>>>0<2){O=m,M=1;break t}for(re=((x+S|0)-3>>>1|0)+1|0,M=1,x=1;he=t[(x<<2)+u>>2],G=x+1|0,O=t[(G<<2)+Y>>2],se=(M<<2)+A|0,t[se>>2]=y,H=y,y=he-((m+O|0)+2>>2)|0,t[se+4>>2]=(H+y>>1)+m,M=M+2|0,H=(x|0)!=(re|0),m=O,x=G,!!H;);}t[(M<<2)+A>>2]=y;t:{if(!(S&1)){x=t[((S<<1&-4)+u|0)-4>>2]-(O+1>>1)|0,t[(Q<<2)+A>>2]=(y+x>>1)+O;break t}x=y+O|0}m=S<<2,t[(m+A|0)-4>>2]=x,Yr(u,A,m)}}function Mp(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0;Q=Nt-16|0,Nt=Q,y=1,M=t[x+72>>2],A=t[M+16>>2];e:{if(A>>>0<2)break e;for(H=1;;){t:{n:{if(G=t[x+156>>2],re=t[x+204>>2],S=t[(G+De(re,5644)|0)+5584>>2],Y=De(H,1080),y=S+Y|0,me=t[y>>2],(me|0)!=t[S>>2]||(se=t[S+4>>2],(se|0)!=t[y+4>>2]|t[S+8>>2]!=t[y+8>>2]|(t[S+12>>2]!=t[y+12>>2]|t[S+16>>2]!=t[y+16>>2]))||t[S+20>>2]!=t[y+20>>2])break n;if(O=0,!se)break t;for(;;){if(he=(O<<2)+S|0,_e=he+Y|0,t[he+812>>2]!=t[_e+812>>2]|t[he+944>>2]!=t[_e+944>>2])break n;if(O=O+1|0,(se|0)==(O|0))break}break t}if(M=5,O=me&1,M=O?t[y+4>>2]+5|0:M,y=t[x+52>>2],M=(A>>>0<257?6:7)+M|0,M>>>0>ln[x+56>>2]){if(y=Wi(y,M),!y){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,y=0,vt(m,1,7776,0);break e}t[x+56>>2]=M,t[x+52>>2]=y,A=t[t[x+72>>2]+16>>2],G=t[x+156>>2],re=t[x+204>>2],S=t[(G+De(re,5644)|0)+5584>>2],O=t[Y+S>>2]&1}if(G=(De(re,5644)+G|0)+5584|0,S=O?t[(S+Y|0)+4>>2]+5|0:5,lr(y,65363,2),O=A>>>0<257?1:2,lr(y+2|0,(O+S|0)+3|0,2),y=y+4|0,lr(y,H,O),y=y+O|0,lr(y,t[t[G>>2]+Y>>2],1),t[Q+12>>2]=S,$p(t[x+156>>2],t[x+204>>2],y+1|0,Q+12|0,m),(Go(u,t[x+52>>2],M,m)|0)!=(M|0)){y=0;break e}M=t[x+72>>2]}if(y=1,A=t[M+16>>2],H=H+1|0,!(A>>>0>H>>>0))break}}return Nt=Q+16|0,y|0}function Q2(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0,me=0,_e=0;Y=Nt-16|0,Nt=Y,y=Qn[m+4>>1]|Qn[m+6>>1]<<16,m=Qn[m>>1]|Qn[m+2>>1]<<16,t[u+24>>2]=m,t[u+28>>2]=y,S=u+56|0,A=m,H=y,m=y>>>8|0,M=m&255,O=t[u+56>>2],y=t[u+60>>2]-O>>3;e:{if(M>>>0>y>>>0){zp(S,M-y|0),y=xe[u+29|0],m=y;break e}y>>>0>M>>>0&&(t[u+60>>2]=O+(M<<3)),y=M}se=A>>>16|0;e:{if(!(m&255))break e;if(S=t[S>>2],m=0,y-1>>>0>=3)for(he=y&252;O=m<<3,G=O+S|0,t[G>>2]=1,t[G+4>>2]=1,G=S+(O|8)|0,t[G>>2]=1,t[G+4>>2]=1,G=S+(O|16)|0,t[G>>2]=1,t[G+4>>2]=1,O=S+(O|24)|0,t[O>>2]=1,t[O+4>>2]=1,m=m+4|0,Q=Q+4|0,(Q|0)!=(he|0););if(y=y&3,!y)break e;for(;O=S+(m<<3)|0,t[O>>2]=1,t[O+4>>2]=1,m=m+1|0,re=re+1|0,(y|0)!=(re|0););}e:{M=De(M,De(De(A&65535,se),(H&255)+7>>>3|0)),m=t[u+4>>2],y=t[u>>2],A=m-y|0;t:{n:{if(M>>>0>A>>>0){if(H=M-A|0,S=t[u+8>>2],H>>>0<=S-m>>>0){m=pi(m,0,H)+H|0;break n}if((M|0)<0)break e;if(m=S-y|0,S=m<<1,m=m>>>0>=1073741823?2147483647:S>>>0>M>>>0?S:M,S=Ri(m),pi(S+A|0,0,H),A=N1(S,y,A),t[u+8>>2]=A+m,m=M+A|0,t[u+4>>2]=m,t[u>>2]=A,!y)break t;Gt(y),m=t[u+4>>2];break t}if(M>>>0>=A>>>0)break t;m=y+M|0}t[u+4>>2]=m}u=t[u>>2],t[Y+12>>2]=u,t[Y+8>>2]=m-u,me=x,_e=Ce(29300,Y+8|0)|0,t[me>>2]=_e,Nt=Y+16|0;return}Mt(),Qe()}function Of(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;y=Nt+-64|0,Nt=y,t[y+32>>2]=0,t[y+36>>2]=0,t[y+40>>2]=0,t[y+44>>2]=0,t[y+48>>2]=0,t[y+52>>2]=0,t[y+56>>2]=0,t[y+60>>2]=0,t[y+16>>2]=0,t[y+20>>2]=0,t[y+24>>2]=0,t[y+28>>2]=0,S=t[x+24>>2],t[y+16>>2]=191;e:{if((S|0)!=255){O=2,S=192;break e}t[y+40>>2]=192,O=3,S=193}t[y+28>>2]=S,t[x+116>>2]&&(t[(y+16|0)+De(O,12)>>2]=194,O=O+1|0),lr(y+12|0,1785737832,4),S=Zt[t[y+16>>2]](x,y+16|8)|0,t[y+20>>2]=S;e:{t:{if(!S||(M=t[y+24>>2],S=Zt[t[y+28>>2]](x,y+36|0)|0,t[y+32>>2]=S,!S))break t;M=t[y+36>>2]+(M+8|0)|0,S=M;n:{if((O|0)==2)break n;if(S=Zt[t[y+40>>2]](x,y+48|0)|0,t[y+44>>2]=S,!S)break t;if(S=M+t[y+48>>2]|0,(O|0)==3)break n;if(x=Zt[t[y+52>>2]](x,y+60|0)|0,t[y+56>>2]=x,!x)break t;S=S+t[y+60>>2]|0}x=y+8|0,lr(x,S,4);n:{r:{if((Go(u,x,8,m)|0)!=8)break r;for(x=y+16|0,M=0;;){if((Go(u,t[x+4>>2],t[x+8>>2],m)|0)!=t[x+8>>2])break r;if(x=x+12|0,S=1,M=M+1|0,(O|0)==(M|0))break}break n}S=0,vt(m,1,3788,0)}for(x=y+16|0,M=0;u=t[x+4>>2],u&&Gt(u),x=x+12|0,M=M+1|0,(O|0)!=(M|0););break e}for(M=0,vt(m,1,17936,0),x=y+16|0;u=t[x+4>>2],u&&Gt(u),x=x+12|0,M=M+1|0,(O|0)!=(M|0););S=0}return Nt=y- -64|0,S|0}function jh(){var x=0;Z2(29144,29168,29200,0,29056,21,29216,0,29216,0,1560,29082,22),Qs(29144,1,29220,29056,23,24),x=Ri(8),t[x+4>>2]=0,t[x>>2]=25,En(29144,1423,3,29224,29264,26,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=27,En(29144,1440,2,29308,29085,28,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=29,En(29144,1621,2,29320,29328,30,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=31,En(29144,1782,3,29332,29264,32,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=33,En(29144,2158,2,29320,29328,30,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=34,En(29144,1727,4,29344,29360,35,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=36,En(29144,1714,2,29368,29085,37,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=38,En(29144,1318,2,29376,29085,39,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=40,En(29144,2105,2,29384,29085,41,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=42,En(29144,1477,2,29392,29085,43,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=44,En(29144,1229,2,29400,29085,45,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=46,En(29144,2058,2,29408,29085,47,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=48,En(29144,1200,2,29400,29085,45,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=49,En(29144,1358,2,29408,29085,47,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=50,En(29144,1287,2,29416,29085,51,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=52,En(29144,2165,2,29424,29085,53,x|0,0)}function Gu(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;e:{t:{n:{r:{i:{a:{s:{o:{u:{l:{if(S=u,S){if(!m)break l;if(!y)break u;if(S=ri(y)-ri(S)|0,S>>>0<=31)break o;break t}if((y|0)==1|y>>>0>1)break t;return u=(x>>>0)/(m>>>0)|0,Vu=x-De(u,m)|0,hu=0,Gi=0,u}if(!x)break s;if(!y||(M=y-1|0,M&y))break a;return Vu=x,hu=S&M,x=S>>>gl(y)|0,Gi=0,x}if(M=m-1|0,!(M&m))break i;H=(ri(m)+33|0)-ri(S)|0,A=0-H|0;break n}H=S+1|0,A=63-S|0;break n}return Vu=0,x=(S>>>0)/(y>>>0)|0,hu=S-De(x,y)|0,Gi=0,x}if(S=ri(y)-ri(S)|0,S>>>0<31)break r;break t}if(Vu=x&M,hu=0,(m|0)==1)break e;return m=gl(m),y=m&31,(m&63)>>>0>=32?(S=0,x=u>>>y|0):(S=u>>>y|0,x=((1<>>y),Gi=S,x}H=S+1|0,A=63-S|0}if(M=x,S=H&63,O=S&31,(S&63)>>>0>=32?(S=0,M=u>>>O|0):(S=u>>>O|0,M=((1<>>O),A=A&63,O=A&31,(A&63)>>>0>=32?(G=x<>>32-O|u<>>31,M=M<<1|u>>>31,Y=S,Q=A-(S+(M>>>0>O>>>0)|0)|0,re=Q>>31,G=re,S=M,Q=m&G,M=S-Q|0,S=Y-((y&G)+(S>>>0>>0)|0)|0,G=u<<1|x>>>31,x=se|x<<1,u=G|he,Y=re&1,se=Y,H=H-1|0,!!H;);return Vu=M,hu=S,G=u<<1|x>>>31,x=Y|x<<1,Gi=G|he,x}Vu=x,hu=u,x=0,u=0}return Gi=u,x}function zh(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0;y=30384;e:{t:{n:{r:{i:{a:switch(O=t[x+76>>2],t[(O+De(m,5644)|0)+4>>2]){case 4:break e;case 2:break t;case 1:break n;case 3:break r;case 0:break i;default:break a}y=30444;break e}y=30396;break e}y=30408;break e}y=30420;break e}y=30432}S=1;e:{if(dt[x+100|0]&1){m=(O+De(m,5644)|0)+De(u,148)|0,O=m+512|0,A=m+520|0,u=m+508|0,G=xe[x+92|0],H=m+516|0,m=H;t:{n:{r:{i:{a:switch(M=dt[y+4|0],M-67|0){case 0:break n;case 9:break r;case 13:break i;case 15:break a;default:break t}m=O;break n}m=A;break n}m=u}S=t[m>>2]}if(m=0,(M|0)==(G|0))break e;m=u;t:{n:{r:{i:{a:switch(M=dt[y+5|0],M-67|0){case 9:break n;case 0:break r;case 15:break i;case 13:break a;default:break t}m=A;break n}m=O;break n}m=H}S=De(t[m>>2],S)}if(m=1,(M|0)==(G|0))break e;m=u;t:{n:{r:{i:{a:switch(M=dt[y+6|0],M-67|0){case 9:break n;case 0:break r;case 15:break i;case 13:break a;default:break t}m=A;break n}m=O;break n}m=H}S=De(t[m>>2],S)}if(m=2,(M|0)==(G|0))break e;t:{n:{r:{i:{a:switch(y=dt[y+7|0],y-67|0){case 9:break n;case 0:break r;case 15:break i;case 13:break a;default:break t}u=A;break n}u=O;break n}u=H}S=De(t[u>>2],S)}if(m=3,(y|0)==(G|0))break e}return S}return t[x+84>>2]=m,S}function Mf(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;A=Nt-16|0,Nt=A;e:{if(!(xe[x+100|0]&2)){vt(y,1,21917,0),x=0;break e}t[x+104>>2]=0;t:{n:{r:{if(m){for(;;){if(m>>>0<=7){vt(y,1,5787,0);break t}O=A+12|0,ue(u,O,4),S=t[A+12>>2],ue(u+4|0,O,4),M=8,O=t[A+12>>2];i:{a:{s:switch(S|0){case 1:if(m>>>0<16){S=5827;break n}if(ue(u+8|0,A+8|0,4),t[A+8>>2]){S=18716;break n}if(ue(u+12|0,A+12|0,4),S=t[A+12>>2],S)break a;S=5652;break n;case 0:break s;default:break i}vt(y,1,5652,0);break t}M=16}if(S>>>0>>0){vt(y,1,19415,0);break t}if(m>>>0>>0){vt(y,1,19343,0),x=0;break e}i:{a:{H=u+M|0,Y=S-M|0;s:{o:{u:{l:{if((O|0)<=1668246641){if((O|0)==1651532643)break l;if((O|0)==1667523942)break o;if((O|0)!=1668112752)break a;M=30976;break s}if((O|0)==1885564018)break u;if(M=30944,(O|0)==1768449138)break s;if((O|0)!=1668246642)break a;M=30952;break s}M=30960;break s}M=30968;break s}M=30984}if(Zt[t[M+4>>2]](x,H,Y,y)|0)break i;x=0;break e}t[x+104>>2]=t[x+104>>2]|2147483647}if(G=(O|0)==1768449138?1:G,u=u+S|0,m=m-S|0,!m)break}if(G)break r}vt(y,1,19243,0),x=0;break e}dt[x+132|0]=1,t[x+100>>2]=t[x+100>>2]|4,x=1;break e}vt(y,1,S,0)}vt(y,1,3831,0),x=0}return Nt=A+16|0,x|0}function Ca(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;S=((y|0)!=0)+m|0,M=S>>>1|0,A=m-M|0;e:{if(y){if(m>>>0<2)break e;if(O=M-1|0,S>>>0>=4)for(G=(O|0)<=1?1:O,y=0;H=(y+M<<2)+u|0,S=(y<<3)+x|0,y=y+1|0,t[H>>2]=t[S+4>>2]-(t[(y<<3)+x>>2]+t[S>>2]>>1),(y|0)!=(G|0););if(y=1,S=m&1,S||(m=(G<<3)+x|0,t[(M+G<<2)+u>>2]=t[m+4>>2]-t[m>>2]),m=(M<<2)+u|0,t[x>>2]=t[x>>2]+((t[m>>2]<<1)+2>>2),(A|0)>=2){for(;t[(y<<2)+x>>2]=t[(y<<3)+x>>2]+((t[(y+O<<2)+u>>2]+t[(y+M<<2)+u>>2]|0)+2>>2),y=y+1|0,(A|0)!=(y|0););y=A}S&&(t[(y<<2)+x>>2]=t[(y<<3)+x>>2]+((t[(y+O<<2)+u>>2]<<1)+2>>2)),Yr((M<<2)+x|0,m,A<<2);return}if(y=t[x>>2],(m|0)==1){t[x>>2]=y<<1;return}if(G=(M<<2)+u|0,t[G>>2]=y-t[x+4>>2],O=1,S>>>0>=4)for(O=M>>>0<=2?2:M,y=1;S=(y<<3)+x|0,t[(y+M<<2)+u>>2]=t[S>>2]-(t[S-4>>2]+t[S+4>>2]>>1),y=y+1|0,(O|0)!=(y|0););if(S=m&1,S&&(m=(O<<3)+x|0,t[(O+M<<2)+u>>2]=t[m>>2]-t[m-4>>2]),O=0,(A|0)>=2)for(O=A-1|0,y=0;m=(y+M<<2)+u|0,t[(y<<2)+x>>2]=t[((y<<3)+x|0)+4>>2]+((t[m>>2]+t[m+4>>2]|0)+2>>2),y=y+1|0,(O|0)!=(y|0););S||(t[(O<<2)+x>>2]=t[((O<<3)+x|0)+4>>2]+((t[(O+M<<2)+u>>2]<<1)+2>>2)),Yr((M<<2)+x|0,G,A<<2)}}function Pp(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0;if(y=Nt-256|0,Nt=y,x){if(os(3602,17,1,m),t[y+240>>2]=t[x>>2],to(m,4211,y+240|0),t[y+224>>2]=t[x+4>>2],to(m,4224,y+224|0),t[y+208>>2]=t[x+8>>2],to(m,16863,y+208|0),t[y+192>>2]=t[x+16>>2],to(m,4182,y+192|0),(u|0)>0)for(;;){if(S=t[x+5584>>2],t[y+176>>2]=A,to(m,3640,y+176|0),S=S+De(A,1080)|0,t[y+160>>2]=t[S>>2],to(m,4210,y+160|0),t[y+144>>2]=t[S+4>>2],to(m,16977,y+144|0),t[y+128>>2]=t[S+8>>2],to(m,16747,y+128|0),t[y+112>>2]=t[S+12>>2],to(m,16763,y+112|0),t[y+96>>2]=t[S+16>>2],to(m,4193,y+96|0),t[y+80>>2]=t[S+20>>2],to(m,17059,y+80|0),os(3170,23,1,m),M=0,t[S+4>>2])for(;O=S+(M<<2)|0,G=t[O+812>>2],t[y+68>>2]=t[O+944>>2],t[y+64>>2]=G,to(m,3489,y- -64|0),M=M+1|0,M>>>0>2];);ms(m),t[y+48>>2]=t[S+24>>2],to(m,16779,y+48|0),t[y+32>>2]=t[S+804>>2],to(m,16846,y+32|0),O=1,os(3194,20,1,m);e:{if(t[S+24>>2]!=1){if(M=t[S+4>>2],(M|0)<=0)break e;O=De(M,3)-2|0}for(M=0;G=S+(M<<3)|0,Gi=t[G+28>>2],t[y+16>>2]=t[G+32>>2],t[y+20>>2]=Gi,to(m,3489,y+16|0),M=M+1|0,(O|0)!=(M|0););}if(ms(m),t[y>>2]=t[S+808>>2],to(m,16829,y),os(3503,5,1,m),A=A+1|0,(A|0)==(u|0))break}os(3504,4,1,m)}Nt=y+256|0}function Wu(x,u,m,y,S){var M=0,O=0,A=0,G=0,H=0,Y=0;O=Nt-16|0,Nt=O,t[x+8>>2]==16?x=t[x+156>>2]+De(t[x+204>>2],5644)|0:x=t[x+12>>2],M=t[y>>2];e:{if(!M){m=0,vt(S,1,4539,0);break e}H=t[x+5584>>2],t[y>>2]=M-1,ue(m,O+12|0,1),G=De(u,1080)+H|0,M=t[O+12>>2]&31,t[G+24>>2]=M,t[G+804>>2]=t[O+12>>2]>>>5,x=m+1|0;t:{n:{r:{i:{a:switch(M|0){case 0:A=t[y>>2];break i;case 1:break r;default:break a}A=t[y>>2]>>>1|0}if(A>>>0>=98&&(t[O+4>>2]=97,t[O+8>>2]=97,t[O>>2]=A,vt(S,2,28388,O),M=t[G+24>>2]),M){if(M=A,M)break r;M=0;break n}if(A)for(m=0,S=De(u,1080)+H|0;ue(x,O+12|0,1),m>>>0<=96&&(M=t[O+12>>2],Y=S+(m<<3)|0,t[Y+32>>2]=0,t[Y+28>>2]=M>>>3),x=x+1|0,m=m+1|0,(A|0)!=(m|0););x=t[y>>2]-A|0;break t}for(m=0;ue(x,O+12|0,2),m>>>0<=96&&(S=(m<<3)+G|0,t[S+28>>2]=t[O+12>>2]>>>11,t[S+32>>2]=t[O+12>>2]&2047),x=x+2|0,m=m+1|0,(M|0)!=(m|0););}x=t[y>>2]-(M<<1)|0}if(t[y>>2]=x,m=1,t[G+24>>2]!=1)break e;for(y=De(u,1080)+H|0,S=t[y+28>>2],M=t[y+32>>2],x=1;u=y+(x<<3)|0,t[u+40>>2]=M,t[u+32>>2]=M,A=S-((x>>>0)/3|0)|0,t[u+36>>2]=(A|0)>0?A:0,A=u,u=S-((x-1>>>0)/3|0)|0,t[A+28>>2]=(u|0)>0?u:0,x=x+2|0,(x|0)!=97;);}return Nt=O+16|0,m}function Pc(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;e:{if(!m)break e;t:{if(S=t[x+160>>2],!S||(M=t[x+72>>2],!M|!t[M+16>>2]|(S|0)!=t[t[M+24>>2]+40>>2])||(O=t[m+16>>2],!O)||(M=t[m+24>>2],t[M+40>>2]|t[M+44>>2]))break t;if(S=0,O>>>0>=4)for(H=O&-4;t[(M+De(S,52)|0)+40>>2]=t[x+160>>2],t[(M+De(S|1,52)|0)+40>>2]=t[x+160>>2],t[(M+De(S|2,52)|0)+40>>2]=t[x+160>>2],t[(M+De(S|3,52)|0)+40>>2]=t[x+160>>2],S=S+4|0,A=A+4|0,(H|0)!=(A|0););if(A=O&3,A)for(;t[(M+De(S,52)|0)+40>>2]=t[x+160>>2],S=S+1|0,Y=Y+1|0,(A|0)!=(Y|0););if(Ef(m,y))break t;return 0}if(S=t[x+76>>2],!S&&(S=Le(),t[x+76>>2]=S,!S)||(Hh(m,S),!vn(t[x+192>>2],123,y)))break e;O=t[x+192>>2],H=t[O>>2],S=t[O+8>>2];t:{if(H){if(G=1,(H|0)!=1)for(Y=H&-2,A=0;;){M=0;n:{if(!G||(M=0,!(Zt[t[S>>2]](x,u,y)|0)))break n;M=(Zt[t[S+4>>2]](x,u,y)|0)!=0}if(G=M,S=S+8|0,A=A+2|0,(Y|0)==(A|0))break}n:{r:{if(H&1){if(!G)break r;G=(Zt[t[S>>2]](x,u,y)|0)!=0}if(t[O>>2]=0,!(G&1))break n;break t}t[O>>2]=0}return di(t[x+72>>2]),t[x+72>>2]=0,0}t[O>>2]=0}G=D4(x,m)}return G|0}function O4(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;O=Nt-16|0,Nt=O,S=1;e:{if(!u||(y=t[u>>2],!y))break e;t:{n:{for(;;){Q=u;r:{if(!Ni(y,3148,4)){if(!bf(y,2399)){t[x+60>>2]=1;break r}if(bf(y,2431))break n;t[x+60>>2]=0;break r}if(!Ni(y,3165,4)){if(!bf(y,2407)){t[x+16>>2]=1;break r}if(bf(y,2438))break n;t[x+16>>2]=0;break r}if(u=20344,Ni(y,3153,11)||(A=pt(y+11|0),u=18165,A>>>0>7))break t;if(G=De(t[x+108>>2],t[x+104>>2]),!G|!t[x+68>>2])break r;if(H=t[x+156>>2],M=1,u=0,(G|0)!=1)for(re=G&-2,Y=0;;){if(S=0,M)for(M=t[(De(u,5644)+H|0)+5584>>2],y=0;t[(M+De(y,1080)|0)+804>>2]=A,y=y+1|0,S=t[x+68>>2],y>>>0>>0;);i:{if(!S){M=0;break i}for(S=t[(De(u|1,5644)+H|0)+5584>>2],y=0;t[(S+De(y,1080)|0)+804>>2]=A,y=y+1|0,M=t[x+68>>2],y>>>0>>0;);}if(u=u+2|0,Y=Y+2|0,(re|0)==(Y|0))break}if(!(G&1)|!M)break r;for(u=t[(De(u,5644)+H|0)+5584>>2],y=0;t[(u+De(y,1080)|0)+804>>2]=A,y=y+1|0,y>>>0>2];);}if(u=Q+4|0,y=t[Q+4>>2],!y)break}S=1;break e}u=20313}t[O>>2]=y,vt(m,1,u,O),S=0}return Nt=O+16|0,S|0}function Yr(x,u,m){var y=0,S=0,M=0;if(m>>>0>=512)return hp(x|0,u|0,m|0),x;S=x+m|0;e:{if(!((x^u)&3)){t:{if(!(x&3)){m=x;break t}if(!m){m=x;break t}for(m=x;;){if(dt[m|0]=xe[u|0],u=u+1|0,m=m+1|0,!(m&3))break t;if(!(m>>>0>>0))break}}y=S&-4;t:{if(y>>>0<64||(M=y+-64|0,M>>>0>>0))break t;for(;t[m>>2]=t[u>>2],t[m+4>>2]=t[u+4>>2],t[m+8>>2]=t[u+8>>2],t[m+12>>2]=t[u+12>>2],t[m+16>>2]=t[u+16>>2],t[m+20>>2]=t[u+20>>2],t[m+24>>2]=t[u+24>>2],t[m+28>>2]=t[u+28>>2],t[m+32>>2]=t[u+32>>2],t[m+36>>2]=t[u+36>>2],t[m+40>>2]=t[u+40>>2],t[m+44>>2]=t[u+44>>2],t[m+48>>2]=t[u+48>>2],t[m+52>>2]=t[u+52>>2],t[m+56>>2]=t[u+56>>2],t[m+60>>2]=t[u+60>>2],u=u- -64|0,m=m- -64|0,M>>>0>=m>>>0;);}if(m>>>0>=y>>>0)break e;for(;t[m>>2]=t[u>>2],u=u+4|0,m=m+4|0,y>>>0>m>>>0;);break e}if(S>>>0<4){m=x;break e}if(y=S-4|0,y>>>0>>0){m=x;break e}for(m=x;dt[m|0]=xe[u|0],dt[m+1|0]=xe[u+1|0],dt[m+2|0]=xe[u+2|0],dt[m+3|0]=xe[u+3|0],u=u+4|0,m=m+4|0,y>>>0>=m>>>0;);}if(m>>>0>>0)for(;dt[m|0]=xe[u|0],u=u+1|0,m=m+1|0,(S|0)!=(m|0););return x}function M4(){var x=0;Z2(29448,29472,29504,0,29056,61,29216,0,29216,0,1497,29082,62),Qs(29448,1,29520,29056,63,64),x=Ri(8),t[x+4>>2]=0,t[x>>2]=65,En(29448,1440,3,29524,29264,66,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=67,En(29448,1423,2,29536,29085,68,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=69,En(29448,2151,2,29544,29328,70,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=71,En(29448,1300,3,29552,29089,72,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=73,En(29448,1024,4,29568,29360,74,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=75,En(29448,1457,3,29552,29089,72,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=76,En(29448,2084,4,29584,29360,77,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=78,En(29448,1214,3,29600,29089,79,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=80,En(29448,2046,3,29612,29089,81,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=82,En(29448,1186,3,29600,29089,79,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=83,En(29448,1339,3,29612,29089,81,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=84,En(29448,1271,3,29552,29089,72,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=85,En(29448,1244,4,29632,29360,86,x|0,0),x=Ri(8),t[x+4>>2]=0,t[x>>2]=87,En(29448,1694,4,29648,29664,88,x|0,0)}function k5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;e:{t:{n:{if(!vn(t[x+4>>2],185,y))break n;S=t[x+4>>2],G=t[S>>2],M=t[S+8>>2];r:{i:{a:{if(G){if(O=1,(G|0)!=1)for(Y=G&-2;;){A=0;s:{if(!O||(A=0,!(Zt[t[M>>2]](x,u,y)|0)))break s;A=(Zt[t[M+4>>2]](x,u,y)|0)!=0}if(O=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}if(G&1){if(!O)break i;O=(Zt[t[M>>2]](x,u,y)|0)!=0}if(t[S>>2]=0,O)break a;break n}t[S>>2]=0}if(!vn(t[x+8>>2],186,y)||!vn(t[x+8>>2],187,y)||!vn(t[x+8>>2],188,y)||t[x+96>>2]&&!vn(t[x+8>>2],189,y)||!vn(t[x+8>>2],190,y))break n;if(S=t[x+8>>2],G=t[S>>2],M=t[S+8>>2],!G)break t;if(O=1,(G|0)!=1)for(Y=G&-2,H=0;;){A=0;a:{if(!O||(A=0,!(Zt[t[M>>2]](x,u,y)|0)))break a;A=(Zt[t[M+4>>2]](x,u,y)|0)!=0}if(O=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}if(G&1){if(!O)break r;O=(Zt[t[M>>2]](x,u,y)|0)!=0}if(t[S>>2]=0,!O)break n;break e}return t[S>>2]=0,0}t[S>>2]=0}return 0}t[S>>2]=0}return ea(t[x>>2],u,m,y)|0}function Hh(x,u){var m=0,y=0,S=0,M=0,O=0;if(t[u>>2]=t[x>>2],t[u+4>>2]=t[x+4>>2],t[u+8>>2]=t[x+8>>2],t[u+12>>2]=t[x+12>>2],m=t[u+24>>2],m){if(y=t[u+16>>2],y){for(m=0;M=t[(t[u+24>>2]+De(m,52)|0)+44>>2],M&&(Gt(M),y=t[u+16>>2]),m=m+1|0,y>>>0>m>>>0;);m=t[u+24>>2]}Gt(m),t[u+24>>2]=0}if(m=t[x+16>>2],t[u+16>>2]=m,m=si(De(m,52)),t[u+24>>2]=m,m){if(t[u+16>>2])for(M=0;O=De(M,52),m=O+m|0,y=t[x+24>>2]+O|0,S=t[y+4>>2],t[m>>2]=t[y>>2],t[m+4>>2]=S,t[m+48>>2]=t[y+48>>2],S=t[y+44>>2],t[m+40>>2]=t[y+40>>2],t[m+44>>2]=S,S=t[y+36>>2],t[m+32>>2]=t[y+32>>2],t[m+36>>2]=S,S=t[y+28>>2],t[m+24>>2]=t[y+24>>2],t[m+28>>2]=S,S=t[y+20>>2],t[m+16>>2]=t[y+16>>2],t[m+20>>2]=S,S=t[y+12>>2],t[m+8>>2]=t[y+8>>2],t[m+12>>2]=S,m=t[u+24>>2],t[(O+m|0)+44>>2]=0,M=M+1|0,M>>>0>2];);if(t[u+20>>2]=t[x+20>>2],m=t[x+32>>2],t[u+32>>2]=m,m){if(m=si(m),t[u+28>>2]=m,!m){t[u+28>>2]=0,t[u+32>>2]=0;return}Yr(m,t[x+28>>2],t[x+32>>2]);return}t[u+28>>2]=0;return}t[u+16>>2]=0,t[u+24>>2]=0}function mu(x,u,m,y,S,M){var O=0,A=0,G=Ye(0),H=Ye(0);A=(m<<6)+u|0,O=m?A:u,x=m?A+-64|0:x,A=y>>>0>>0?y:S;e:{if(A>>>0<=m>>>0){u=x;break e}for(G=Ue[x>>2];u=O,O=u-32|0,H=G,G=Ue[u>>2],Ue[O>>2]=Ye(Ye(H+G)*M)+Ue[O>>2],O=u-28|0,Ue[O>>2]=Ye(Ye(Ue[x+4>>2]+Ue[u+4>>2])*M)+Ue[O>>2],O=u-24|0,Ue[O>>2]=Ye(Ye(Ue[x+8>>2]+Ue[u+8>>2])*M)+Ue[O>>2],O=u-20|0,Ue[O>>2]=Ye(Ye(Ue[x+12>>2]+Ue[u+12>>2])*M)+Ue[O>>2],O=u-16|0,Ue[O>>2]=Ye(Ye(Ue[x+16>>2]+Ue[u+16>>2])*M)+Ue[O>>2],O=u-12|0,Ue[O>>2]=Ye(Ye(Ue[x+20>>2]+Ue[u+20>>2])*M)+Ue[O>>2],O=u-8|0,Ue[O>>2]=Ye(Ye(Ue[x+24>>2]+Ue[u+24>>2])*M)+Ue[O>>2],O=u-4|0,Ue[O>>2]=Ye(Ye(Ue[x+28>>2]+Ue[u+28>>2])*M)+Ue[O>>2],O=u- -64|0,x=u,m=m+1|0,(A|0)!=(m|0););}y>>>0>S>>>0&&(x=O-32|0,M=Ye(M+M),Ue[x>>2]=Ye(Ue[u>>2]*M)+Ue[x>>2],x=O-28|0,Ue[x>>2]=Ye(Ue[u+4>>2]*M)+Ue[x>>2],x=O-24|0,Ue[x>>2]=Ye(Ue[u+8>>2]*M)+Ue[x>>2],x=O-20|0,Ue[x>>2]=Ye(Ue[u+12>>2]*M)+Ue[x>>2],x=O-16|0,Ue[x>>2]=Ye(Ue[u+16>>2]*M)+Ue[x>>2],x=O-12|0,Ue[x>>2]=Ye(Ue[u+20>>2]*M)+Ue[x>>2],x=O-8|0,Ue[x>>2]=Ye(Ue[u+24>>2]*M)+Ue[x>>2],x=O-4|0,Ue[x>>2]=Ye(Ue[u+28>>2]*M)+Ue[x>>2])}function Rc(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0;M=Nt-16|0,Nt=M;e:{if(t[x+120>>2]|m>>>0<3)break e;if(ue(u,M+12|0,2),H=Qn[M+12>>1],H-1025>>>0<=4294966271){t[M>>2]=H,vt(y,1,6019,M);break e}if(ue(u+2|0,M+12|0,1),G=Qn[M+12>>1],!G){vt(y,1,5421,0);break e}if(G+3>>>0>m>>>0||(A=si(De(G,H)<<2),!A))break e;if(Y=si(G),!Y){Gt(A);break e}if(Q=si(G),!Q){Gt(A),Gt(Y);break e}if(O=si(20),!O){Gt(A),Gt(Y),Gt(Q);break e}for(y=u+3|0,t[O+8>>2]=Y,t[O+4>>2]=Q,tn[O+16>>1]=H,t[O>>2]=A,re=t[M+12>>2],t[O+12>>2]=0,dt[O+18|0]=re,t[x+120>>2]=O;ue(y,M+12|0,1),dt[S+Y|0]=(xe[M+12|0]&127)+1,dt[S+Q|0]=xe[M+12|0]>>>7,y=y+1|0,S=S+1|0,(G|0)!=(S|0););if(!H){S=1;break e}for(O=0;;){for(S=0,x=0;;){if(S=xe[S+Y|0]+7>>>3|0,S=S>>>0>=4?4:S,(S+(y-u|0)|0)>(m|0)){S=0;break e}if(ue(y,M+12|0,S),t[A>>2]=t[M+12>>2],A=A+4|0,y=y+S|0,x=x+1|0,S=x&65535,!(G>>>0>S>>>0))break}if(S=1,O=O+1|0,(H|0)==(O|0))break}}return Nt=M+16|0,S|0}function y5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;e:{t:{n:{if(!vn(t[u+8>>2],183,y))break n;S=t[u+4>>2],G=t[S>>2],M=t[S+8>>2];r:{i:{a:{if(G){if(O=1,(G|0)!=1)for(Y=G&-2;;){A=0;s:{if(!O||(A=0,!(Zt[t[M>>2]](u,x,y)|0)))break s;A=(Zt[t[M+4>>2]](u,x,y)|0)!=0}if(O=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}if(G&1){if(!O)break i;O=(Zt[t[M>>2]](u,x,y)|0)!=0}if(t[S>>2]=0,O)break a;break n}t[S>>2]=0}if(S=t[u+8>>2],G=t[S>>2],M=t[S+8>>2],!G)break t;if(O=1,(G|0)!=1)for(Y=G&-2,H=0;;){A=0;a:{if(!O||(A=0,!(Zt[t[M>>2]](u,x,y)|0)))break a;A=(Zt[t[M+4>>2]](u,x,y)|0)!=0}if(O=A,M=M+8|0,H=H+2|0,(Y|0)==(H|0))break}if(G&1){if(!O)break r;O=(Zt[t[M>>2]](u,x,y)|0)!=0}if(t[S>>2]=0,!O)break n;break e}return t[S>>2]=0,0}t[S>>2]=0}return 0}t[S>>2]=0}return xe[u+132|0]?xe[u+133|0]?Ps(x,t[u>>2],m,y)|0:(vt(y,1,22708,0),0):(vt(y,1,22737,0),0)}function Pf(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0;if(M=-1,S=-1,!(xe[x+68|0]&8)){M=t[x+32>>2],t[x+36>>2]=M;e:{t:{n:{if(S=t[x+48>>2],S){for(;;){if(S=Zt[t[x+20>>2]](M,S,t[x>>2])|0,(S|0)==-1)break n;if(M=S+t[x+36>>2]|0,t[x+36>>2]=M,S=t[x+48>>2]-S|0,t[x+48>>2]=S,!S)break}M=t[x+32>>2]}if(t[x+36>>2]=M,!!u&(m|0)>=0|(m|0)>0)break t;M=0,S=0;break e}return t[x+68>>2]=t[x+68>>2]|8,vt(y,4,27581,0),t[x+48>>2]=0,t[x+68>>2]=t[x+68>>2]|8,Gi=-1,-1}for(M=0,S=0;;){if(O=Zt[t[x+24>>2]](u,m,t[x>>2])|0,A=Gi,(O&A)==-1)return vt(y,4,27566,0),t[x+68>>2]=t[x+68>>2]|8,u=S+t[x+60>>2]|0,m=M+t[x+56>>2]|0,u=m>>>0>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u,x=!(S|M),u=x?-1:M,Gi=x?-1:S,u|0;if(S=S+A|0,M=M+O|0,S=M>>>0>>0?S+1|0:S,m=m-(A+(u>>>0>>0)|0)|0,u=u-O|0,!(!!u&(m|0)>=0|(m|0)>0))break}}u=S+t[x+60>>2]|0,m=M+t[x+56>>2]|0,u=m>>>0>>0?u+1|0:u,t[x+56>>2]=m,t[x+60>>2]=u}return Gi=S,M|0}function $u(x,u,m){var y=0,S=0,M=0,O=0,A=0;e:{t:{if((u|0)==8){u=S2(m);break t}if(y=28,u&3|u>>>0<4||(M=u>>>2|0,M-1&M)||(y=48,-64-u>>>0>>0))break e;M=16,u=u>>>0<=16?16:u,y=u>>>0<=16?16:u;n:{if(!(y-1&y)){u=y;break n}for(;u=M,M=u<<1,u>>>0>>0;);}n:{if(-64-u>>>0<=m>>>0){t[12458]=48,m=0;break n}if(M=m>>>0<11?16:m+11&-8,S=S2((M+u|0)+12|0),m=0,!S)break n;m=S-8|0;r:{if(!(S&u-1)){u=m;break r}if(O=S-4|0,A=t[O>>2],y=u,u=((u+S|0)-1&0-u)-8|0,u=(u-m>>>0<=15?y:0)+u|0,y=u-m|0,S=(A&-8)-y|0,!(A&3)){m=t[m>>2],t[u+4>>2]=S,t[u>>2]=m+y;break r}t[u+4>>2]=S|t[u+4>>2]&1|2,S=u+S|0,t[S+4>>2]=t[S+4>>2]|1,t[O>>2]=y|t[O>>2]&1|2,S=m+y|0,t[S+4>>2]=t[S+4>>2]|1,Ic(m,y)}m=t[u+4>>2];r:{if(!(m&3)||(y=m&-8,y>>>0<=M+16>>>0))break r;t[u+4>>2]=M|m&1|2,m=u+M|0,M=y-M|0,t[m+4>>2]=M|3,y=u+y|0,t[y+4>>2]=t[y+4>>2]|1,Ic(m,M)}m=u+8|0}u=m}if(!u)return 48;t[x>>2]=u,y=0}return y}function w5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0;O=Nt-16|0,Nt=O;e:{if(m>>>0<=1){vt(y,1,6514,0),x=0;break e}if(dt[x+188|0]&1){vt(y,1,24005,0),x=0;break e}A=t[x+156>>2],M=t[x+204>>2],x=A+De(M,5644)|0,dt[x+5640|0]=xe[x+5640|0]|2,ue(u,O+12|0,1),G=x+5164|0,S=t[x+5164>>2];t:{if(!S){if(x=t[O+12>>2]+1|0,S=oi(x,8),t[G>>2]=S,!S){vt(y,1,6540,0),x=0;break e}t[(A+De(M,5644)|0)+5160>>2]=x;break t}if(M=t[O+12>>2],M>>>0>2])break t;if(A=S,S=M+1|0,M=Wi(A,S<<3),!M){vt(y,1,6540,0),x=0;break e}t[G>>2]=M,x=x+5160|0,A=t[x>>2],pi(M+(A<<3)|0,0,S-A<<3),t[x>>2]=S,S=t[G>>2]}if(x=t[O+12>>2],t[(x<<3)+S>>2]){t[O>>2]=x,vt(y,1,16648,O),x=0;break e}if(x=m-1|0,m=si(x),S=t[G>>2],M=t[O+12>>2],t[S+(M<<3)>>2]=m,!m){vt(y,1,6540,0),x=0;break e}t[(S+(M<<3)|0)+4>>2]=x,Yr(t[S+(t[O+12>>2]<<3)>>2],u+1|0,x),x=1}return Nt=O+16|0,x|0}function ju(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;if(A=t[(De(m,5644)+u|0)+420>>2],S=A+1|0,O=oi(S,240),O){e:{if(S)for(Y=(De(m,5644)+u|0)+5584|0,u=t[x+16>>2],S=O;;){if(t[S+236>>2]=y,u=oi(u,16),t[S+200>>2]=u,!u)break e;if(M=t[x+16>>2],t[S+196>>2]=M,m=0,u=0,M)for(;;){if(G=t[S+200>>2]+(m<<4)|0,M=t[Y>>2]+De(m,1080)|0,u=oi(t[M+4>>2],16),t[G+12>>2]=u,!u)break e;if(t[G+8>>2]=t[M+4>>2],u=t[x+16>>2],m=m+1|0,!(u>>>0>m>>>0))break}if(S=S+240|0,m=(A|0)==(H|0),H=H+1|0,!!m)break}return O}for(x=t[O+4>>2],x&&(Gt(x),t[O+4>>2]=0),S=O,x=0;;){if(m=t[S+200>>2],m){if(u=0,M=t[S+196>>2],M){for(;y=t[m+12>>2],y&&(Gt(y),t[m+12>>2]=0,M=t[S+196>>2]),m=m+16|0,u=u+1|0,M>>>0>u>>>0;);m=t[S+200>>2]}Gt(m),t[S+200>>2]=0}if(S=S+240|0,u=(x|0)==(A|0),x=x+1|0,!!u)break}Gt(O)}return 0}function Rp(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;O=Nt-16|0,Nt=O,G=t[t[x+72>>2]+16>>2],A=G>>>0<257?1:2,S=(A<<1)+5|0,M=(m>>>0)/(S>>>0)|0;e:{if(!((De(S,M)|0)==(m|0)&m>>>0>=S>>>0)){vt(y,1,7685,0),x=0;break e}if(t[x+8>>2]==16?S=t[x+156>>2]+De(t[x+204>>2],5644)|0:S=t[x+12>>2],x=0,m=xe[S+5640|0],x=m&4?t[S+420>>2]+1|0:x,M=M+x|0,M>>>0>=32){t[O>>2]=M,vt(y,1,17418,O),x=0;break e}if(dt[S+5640|0]=m|4,x>>>0>>0)for(m=(S+De(x,148)|0)+424|0;ue(u,m,1),u=u+1|0,ue(u,m+4|0,A),u=u+A|0,ue(u,m+8|0,2),y=t[m+8>>2],H=t[S+8>>2],t[m+8>>2]=y>>>0>>0?y:H,ue(u+2|0,m+12|0,1),u=u+3|0,ue(u,m+16|0,A),u=u+A|0,ue(u,O+12|0,1),t[m+36>>2]=t[O+12>>2],y=t[m+16>>2],t[m+16>>2]=y>>>0>>0?y:G,m=m+148|0,u=u+1|0,x=x+1|0,(M|0)!=(x|0););t[S+420>>2]=M-1,x=1}return Nt=O+16|0,x|0}function Gn(x){var u=0,m=0,y=0,S=0;e:{if(!x)break e;if(u=t[x+5164>>2],u){if(m=t[x+5160>>2],m){for(u=0;y=t[t[x+5164>>2]+(u<<3)>>2],y&&(Gt(y),m=t[x+5160>>2]),u=u+1|0,m>>>0>u>>>0;);u=t[x+5164>>2]}t[x+5160>>2]=0,Gt(u),t[x+5164>>2]=0}if(u=t[x+5172>>2],u&&(Gt(u),t[x+5172>>2]=0),u=t[x+5584>>2],u&&(Gt(u),t[x+5584>>2]=0),u=t[x+5612>>2],u&&(Gt(u),t[x+5612>>2]=0),u=t[x+5608>>2],u&&(Gt(u),t[x+5608>>2]=0),u=t[x+5628>>2],u&&(Gt(u),t[x+5636>>2]=0,t[x+5628>>2]=0,t[x+5632>>2]=0),u=t[x+5616>>2],u){if(S=t[x+5620>>2],S){for(m=0;y=t[u+12>>2],y&&(Gt(y),t[u+12>>2]=0,S=t[x+5620>>2]),u=u+20|0,m=m+1|0,S>>>0>m>>>0;);u=t[x+5616>>2]}Gt(u),t[x+5616>>2]=0}if(u=t[x+5604>>2],u&&(Gt(u),t[x+5604>>2]=0),u=t[x+5596>>2],!u)break e;Gt(u),t[x+5596>>2]=0,t[x+5600>>2]=0}}function Ap(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0;S=Nt-32|0,Nt=S;e:{if(t[x+72>>2]){vt(y,2,16600,0),m=1;break e}if((m|0)!=14){m=0,vt(y,1,25968,0);break e}ue(u,x+16|0,4),ue(u+4|0,x+12|0,4),ue(u+8|0,x+20|0,2),m=t[x+12>>2];t:{O=t[x+16>>2];n:{if(!O)break n;if(!m){m=0;break n}if(M=t[x+20>>2],M)break t}t[S+8>>2]=t[x+20>>2],t[S+4>>2]=O,t[S>>2]=m,vt(y,1,25626,S),m=0;break e}if(M-16385>>>0<=4294950911){m=0,vt(y,1,25540,0);break e}if(m=oi(M,12),t[x+72>>2]=m,!m){m=0,vt(y,1,25577,0);break e}m=1,ue(u+10|0,x+24|0,1),ue(u+11|0,x+28|0,1),M=t[x+28>>2],(M|0)!=7&&(t[S+16>>2]=M,vt(y,4,28604,S+16|0)),ue(u+12|0,x+32|0,1),ue(u+13|0,x+36|0,1),u=t[x>>2],dt[u+188|0]=xe[u+188|0]&251|(t[x+24>>2]==255)<<2,u=t[x>>2],t[u+216>>2]=t[x+12>>2],t[u+220>>2]=t[x+16>>2],dt[x+133|0]=1}return Nt=S+32|0,m|0}function Go(x,u,m,y){var S=0,M=0,O=0,A=0,G=0;e:{t:{if(xe[x+68|0]&8)break t;if(A=t[x+64>>2],O=t[x+48>>2],S=A-O|0,S>>>0>=m>>>0){M=t[x+36>>2];break e}for(;;){if((O|0)!=(A|0)&&(Yr(t[x+36>>2],u,S),O=t[x+48>>2]+S|0,t[x+48>>2]=O,M=t[x+60>>2],A=t[x+56>>2]+S|0,M=A>>>0>>0?M+1|0:M,t[x+56>>2]=A,t[x+60>>2]=M,m=m-S|0,G=S+G|0,u=u+S|0),M=t[x+32>>2],t[x+36>>2]=M,O){for(;;){if(S=Zt[t[x+20>>2]](M,O,t[x>>2])|0,(S|0)==-1){t[x+68>>2]=t[x+68>>2]|8,vt(y,4,27581,0);break t}if(M=S+t[x+36>>2]|0,t[x+36>>2]=M,O=t[x+48>>2]-S|0,t[x+48>>2]=O,!O)break}M=t[x+32>>2]}if(t[x+36>>2]=M,O=0,S=t[x+64>>2],A=S,!(m>>>0>S>>>0))break}break e}return-1}return Yr(M,u,m),t[x+36>>2]=t[x+36>>2]+m,t[x+48>>2]=t[x+48>>2]+m,u=t[x+60>>2],y=t[x+56>>2]+m|0,u=y>>>0>>0?u+1|0:u,t[x+56>>2]=y,t[x+60>>2]=u,m+G|0}function Lp(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;M=Nt-32|0,Nt=M,y=t[x+28>>2],t[M+16>>2]=y,O=t[x+20>>2],t[M+28>>2]=m,t[M+24>>2]=u,u=O-y|0,t[M+20>>2]=u,O=u+m|0,G=2;e:{t:{u=M+16|0,y=fu(t[x+60>>2],u|0,2,M+12|0)|0,y?(t[12458]=y,y=-1):y=0;n:{r:{if(y){y=u;break r}for(;;){if(S=t[M+12>>2],(S|0)==(O|0))break n;if((S|0)<0){y=u;break t}if(A=t[u+4>>2],H=A>>>0>>0,y=(H<<3)+u|0,A=S-(H?A:0)|0,t[y>>2]=A+t[y>>2],u=(H?12:4)+u|0,t[u>>2]=t[u>>2]-A,O=O-S|0,u=y,G=G-H|0,S=fu(t[x+60>>2],u|0,G|0,M+12|0)|0,S?(t[12458]=S,S=-1):S=0,!!S)break}}if((O|0)!=-1)break t}u=t[x+44>>2],t[x+28>>2]=u,t[x+20>>2]=u,t[x+16>>2]=u+t[x+48>>2],x=m;break e}if(t[x+28>>2]=0,t[x+16>>2]=0,t[x+20>>2]=0,t[x>>2]=t[x>>2]|32,x=0,(G|0)==2)break e;x=m-t[y+4>>2]|0}return Nt=M+32|0,x|0}function Wl(){g4(48836,2179),gp(48860,1777,1,1,0),In(48872,1641,1,-128,127),In(48896,1634,1,-128,127),In(48884,1632,1,0,255),In(48908,1139,2,-32768,32767),In(48920,1130,2,0,65535),In(48932,1175,4,-2147483648,2147483647),In(48944,1166,4,0,-1),In(48956,1969,4,-2147483648,2147483647),In(48968,1960,4,0,-1),qu(48980,1263,-2147483648,2147483647),qu(48992,1262,0,-1),xc(49004,1256,4),xc(49016,2098,8),_c(29048,2e3),_c(40336,2977),Q0(40408,4,1974),Q0(40484,2,2012),Q0(40560,4,2027),dp(29256,1816),ni(40600,0,2908),ni(40640,0,3010),ni(29300,1,2938),ni(40680,2,2540),ni(40720,3,2571),ni(40760,4,2611),ni(40800,5,2640),ni(40840,4,3047),ni(40880,5,3077),ni(40640,0,2742),ni(29300,1,2709),ni(40680,2,2808),ni(40720,3,2774),ni(40760,4,2875),ni(40800,5,2841),ni(40920,6,2678),ni(40960,7,3116)}function C5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0;if(y=t[x+52>>2],S=t[x+72>>2],M=t[S+24>>2],O=De(t[S+16>>2],3),A=O+40|0,A>>>0>ln[x+56>>2]){if(y=Wi(y,A),!y)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,6428,0),0;t[x+56>>2]=A,t[x+52>>2]=y}if(lr(y,65361,2),lr(y+2|0,O+38|0,2),lr(y+4|0,Qn[x+80>>1],2),lr(y+6|0,t[S+8>>2],4),lr(y+10|0,t[S+12>>2],4),lr(y+14|0,t[S>>2],4),lr(y+18|0,t[S+4>>2],4),lr(y+22|0,t[x+92>>2],4),lr(y+26|0,t[x+96>>2],4),lr(y+30|0,t[x+84>>2],4),lr(y+34|0,t[x+88>>2],4),lr(y+38|0,t[S+16>>2],2),t[S+16>>2])for(y=y+40|0,O=0;lr(y,(t[M+24>>2]+(t[M+32>>2]<<7)|0)-1|0,1),lr(y+1|0,t[M>>2],1),lr(y+2|0,t[M+4>>2],1),M=M+52|0,y=y+3|0,O=O+1|0,O>>>0>2];);return(Go(u,t[x+52>>2],A,m)|0)==(A|0)|0}function N1(x,u,m){var y=0,S=0;e:{if((x|0)==(u|0))break e;if(S=x+m|0,u-S>>>0<=0-(m<<1)>>>0)return Yr(x,u,m);y=(x^u)&3;t:{n:{if(x>>>0>>0){if(y){y=x;break t}if(!(x&3)){y=x;break n}for(y=x;;){if(!m)break e;if(dt[y|0]=xe[u|0],u=u+1|0,m=m-1|0,y=y+1|0,!(y&3))break}break n}r:{if(y)break r;if(S&3)for(;;){if(!m)break e;if(m=m-1|0,y=m+x|0,dt[y|0]=xe[u+m|0],!(y&3))break}if(m>>>0<=3)break r;for(;m=m-4|0,t[m+x>>2]=t[u+m>>2],m>>>0>3;);}if(!m)break e;for(;m=m-1|0,dt[m+x|0]=xe[u+m|0],!!m;);break e}if(m>>>0<=3)break t;for(;t[y>>2]=t[u>>2],u=u+4|0,y=y+4|0,m=m-4|0,m>>>0>3;);}if(!m)break e;for(;dt[y|0]=xe[u|0],y=y+1|0,u=u+1|0,m=m-1|0,!!m;);}return x}function $l(x,u,m,y){e:switch(u-9|0){case 0:u=t[m>>2],t[m>>2]=u+4,t[x>>2]=t[u>>2];return;case 6:u=t[m>>2],t[m>>2]=u+4,u=tn[u>>1],t[x>>2]=u,t[x+4>>2]=u>>31;return;case 7:u=t[m>>2],t[m>>2]=u+4,t[x>>2]=Qn[u>>1],t[x+4>>2]=0;return;case 8:u=t[m>>2],t[m>>2]=u+4,u=dt[u|0],t[x>>2]=u,t[x+4>>2]=u>>31;return;case 9:u=t[m>>2],t[m>>2]=u+4,t[x>>2]=xe[u|0],t[x+4>>2]=0;return;case 16:u=t[m>>2]+7&-8,t[m>>2]=u+8,mr[x>>3]=mr[u>>3];return;case 17:Zt[y|0](x,m);default:return;case 1:case 4:case 14:u=t[m>>2],t[m>>2]=u+4,u=t[u>>2],t[x>>2]=u,t[x+4>>2]=u>>31;return;case 2:case 5:case 11:case 15:u=t[m>>2],t[m>>2]=u+4,t[x>>2]=t[u>>2],t[x+4>>2]=0;return;case 3:case 10:case 12:case 13:break e}u=t[m>>2]+7&-8,t[m>>2]=u+8,m=t[u+4>>2],t[x>>2]=t[u>>2],t[x+4>>2]=m}function P4(x,u,m,y,S,M){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0;var O=0,A=0,G=0;A=Nt-48|0,Nt=A;e:{t:{n:{if(t[x+204>>2]!=(u|0)){vt(M,1,3254,0);break n}if(G=t[x+108>>2],O=t[x+104>>2],t[A+32>>2]=u+1,t[A+36>>2]=De(O,G),vt(M,4,17849,A+32|0),G=0,t[x+12>>2]=0,O=t[x+208>>2],t[O+12>>2]=t[(t[x+156>>2]+De(u,5644)|0)+5592>>2],t[x+8>>2]=0,!Wf(O,t[x+204>>2],M))break n;r:{if(O=t[x+208>>2],!t[t[O+24>>2]+16>>2])break r;for(;;){if(Lc(t[t[t[O+20>>2]>>2]+20>>2]+De(G,76)|0)){if(G=G+1|0,O=t[x+208>>2],G>>>0>2]+16>>2])continue;break r}break}vt(M,1,3338,0),m=0;break e}if(!xp(O,m,y)){vt(M,1,3291,0),m=0;break e}if(m=1,is(x,S,M))break e;t[A+16>>2]=u,vt(M,1,17734,A+16|0);break t}t[A>>2]=u,vt(M,1,17792,A)}m=0}return Nt=A+48|0,m|0}function vu(x){var u=0,m=0,y=0;y=Nt-48|0,Nt=y,u=oi(1,44);e:{if(u){if(t[u+16>>2]=0,(x|0)<=0){if(x=oi(1,8),t[u+36>>2]=x,x)break e;Gt(u),u=0;break e}if(m=oi(1,24),!m){t[u+12>>2]=0,Gt(u),u=0;break e}t[u+12>>2]=m;t:{if(m=si(48),!m){t[u+8>>2]=0;break t}if(t[u+8>>2]=m,m=oi(x,20),t[u>>2]=m,!m)break t;t[u+4>>2]=x,t[m>>2]=u,x=oi(1,24);n:{if(!x){t[t[u>>2]+12>>2]=0;break n}if(t[t[u>>2]+12>>2]=x,x=si(48),!x){if(x=t[u>>2],t[x+16>>2]=0,x=t[x+12>>2],!x)break n;Gt(x);break n}if(m=t[u>>2],t[m+8>>2]=0,t[m+16>>2]=x,x=si(12),x&&(t[x>>2]=107,t[x+4>>2]=m,Gt(x)),x=t[u>>2],t[x+4>>2]=0,m=t[x+12>>2],m&&(Gt(m),x=t[u>>2]),x=t[x+16>>2],!x)break n;Gt(x)}if(t[u+4>>2]=0,!(t[u+16>>2]!=2&-2))break t;break e}A4(u)}u=0}return Nt=y+48|0,u}function _5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0;O=Nt-16|0,Nt=O;e:{if(m>>>0<=1){vt(y,1,6942,0),x=0;break e}dt[x+188|0]=xe[x+188|0]|1,ue(u,O+12|0,1),S=t[x+116>>2];t:{if(!S){if(M=t[O+12>>2]+1|0,S=oi(M,8),t[x+116>>2]=S,!S){vt(y,1,6968,0),x=0;break e}t[x+112>>2]=M;break t}if(M=t[O+12>>2],M>>>0>2])break t;if(A=S,S=M+1|0,M=Wi(A,S<<3),!M){vt(y,1,6968,0),x=0;break e}t[x+116>>2]=M,A=t[x+112>>2],pi(M+(A<<3)|0,0,S-A<<3),t[x+112>>2]=S,S=t[x+116>>2]}if(A=S,S=t[O+12>>2],t[A+(S<<3)>>2]){t[O>>2]=S,vt(y,1,16670,O),x=0;break e}if(m=m-1|0,S=si(m),x=t[x+116>>2],M=t[O+12>>2],t[x+(M<<3)>>2]=S,!S){vt(y,1,6968,0),x=0;break e}t[(x+(M<<3)|0)+4>>2]=m,Yr(t[x+(t[O+12>>2]<<3)>>2],u+1|0,m),x=1}return Nt=O+16|0,x|0}function T2(x,u){var m=0,y=0,S=0;m=Nt+-64|0,Nt=m,y=t[x>>2],S=t[y-4>>2],y=t[y-8>>2],t[m+32>>2]=0,t[m+36>>2]=0,t[m+40>>2]=0,t[m+44>>2]=0,t[m+48>>2]=0,t[m+52>>2]=0,dt[m+55|0]=0,dt[m+56|0]=0,dt[m+57|0]=0,dt[m+58|0]=0,dt[m+59|0]=0,dt[m+60|0]=0,dt[m+61|0]=0,dt[m+62|0]=0,t[m+24>>2]=0,t[m+28>>2]=0,t[m+20>>2]=0,t[m+16>>2]=48484,t[m+12>>2]=x,t[m+8>>2]=u,x=x+y|0,y=0;e:{if(Ja(S,u,0)){t[m+56>>2]=1,Zt[t[t[S>>2]+20>>2]](S,m+8|0,x,x,1,0),y=t[m+32>>2]==1?x:0;break e}Zt[t[t[S>>2]+24>>2]](S,m+8|0,x,1,0);t:switch(t[m+44>>2]){case 0:y=t[m+48>>2]==1&&t[m+36>>2]==1&&t[m+40>>2]==1?t[m+28>>2]:0;break e;case 1:break t;default:break e}if(t[m+32>>2]!=1&&t[m+48>>2]|t[m+36>>2]!=1|t[m+40>>2]!=1)break e;y=t[m+24>>2]}return Nt=m- -64|0,y}function Np(){var x=0,u=0;x=Nt-16|0,Nt=x;e:{if(cp(x+12|0,x+8|0)|0||(u=S2((t[x+12>>2]<<2)+4|0),t[12459]=u,!u)||(u=S2(t[x+8>>2]),u&&(t[t[12459]+(t[x+12>>2]<<2)>>2]=0,!(up(t[12459],u|0)|0))))break e;t[12459]=0}Nt=x+16|0,t[12441]=92,t[12442]=0,bh(1762,1,28980,29056,1,2),t[12442]=t[12455],t[12455]=49764,t[12443]=93,t[12444]=0,F4(),t[12444]=t[12455],t[12455]=49772,t[12445]=94,t[12446]=0,ei(),t[12446]=t[12455],t[12455]=49780,t[12447]=95,t[12448]=0,hi(),t[12448]=t[12455],t[12455]=49788,t[12449]=96,t[12450]=0,jh(),t[12450]=t[12455],t[12455]=49796,t[12451]=97,t[12452]=0,M4(),t[12452]=t[12455],t[12455]=49804,t[12456]=253,t[12457]=0,Wl(),t[12457]=t[12455],t[12455]=49824,t[12660]=49872,t[12642]=42}function x5(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0,re=0,se=0,he=0;if(ln[x+44>>2]>=8)for(S=t[x+36>>2],G=De(S,7),H=De(S,6),Y=De(S,5),Q=S<<2,re=De(S,3),se=S<<1,m=t[x+40>>2],he=S<<5,O=8;;){Uh(x,m,t[x+36>>2],8),B2(x),M=t[x+32>>2];e:{if(!M)break e;for(A=t[x>>2],u=0;y=A+(u<<5)|0,Ue[(u<<2)+m>>2]=Ue[y>>2],Ue[(u+S<<2)+m>>2]=Ue[y+4>>2],Ue[(u+se<<2)+m>>2]=Ue[y+8>>2],Ue[(u+re<<2)+m>>2]=Ue[y+12>>2],u=u+1|0,(M|0)!=(u|0););if(!M)break e;for(A=t[x>>2],u=0;y=A+(u<<5)|0,Ue[(u+Q<<2)+m>>2]=Ue[y+16>>2],Ue[(u+Y<<2)+m>>2]=Ue[y+20>>2],Ue[(u+H<<2)+m>>2]=Ue[y+24>>2],Ue[(u+G<<2)+m>>2]=Ue[y+28>>2],u=u+1|0,(M|0)!=(u|0););}if(m=m+he|0,O=O+8|0,!(O>>>0<=ln[x+44>>2]))break}Gt(t[x>>2]),Gt(x)}function pi(x,u,m){var y=0,S=0,M=0,O=0;e:{if(!m||(dt[x|0]=u,y=x+m|0,dt[y-1|0]=u,m>>>0<3)||(dt[x+2|0]=u,dt[x+1|0]=u,dt[y-3|0]=u,dt[y-2|0]=u,m>>>0<7)||(dt[x+3|0]=u,dt[y-4|0]=u,m>>>0<9)||(y=0-x&3,S=y+x|0,u=De(u&255,16843009),t[S>>2]=u,y=m-y&-4,m=y+S|0,t[m-4>>2]=u,y>>>0<9)||(t[S+8>>2]=u,t[S+4>>2]=u,t[m-8>>2]=u,t[m-12>>2]=u,y>>>0<25)||(t[S+24>>2]=u,t[S+20>>2]=u,t[S+16>>2]=u,t[S+12>>2]=u,t[m-16>>2]=u,t[m-20>>2]=u,t[m-24>>2]=u,t[m-28>>2]=u,O=S&4|24,m=y-O|0,m>>>0<32))break e;for(y=N0(u,0,1,1),M=Gi,u=S+O|0;t[u+24>>2]=y,t[u+28>>2]=M,t[u+16>>2]=y,t[u+20>>2]=M,t[u+8>>2]=y,t[u+12>>2]=M,t[u>>2]=y,t[u+4>>2]=M,u=u+32|0,m=m-32|0,m>>>0>31;);}return x}function S5(x,u,m,y,S){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0;var M=0;e:{if(!m)break e;if(vt(y,2,20715,0),!y4(t[x>>2],u,m,y,S))return vt(y,1,10153,0),0;if(M=1,t[t[x>>2]+60>>2]||(M=0,S=x+108|0,!gu(m,S,y)))break e;u=1;t:{n:switch(t[x+48>>2]-12|0){case 5:u=2;break t;case 6:u=3;break t;case 12:u=4;break t;case 0:u=5;break t;case 4:break t;default:break n}u=-1}t[m+20>>2]=u,u=t[x+120>>2];t:{if(!u)break t;if(!t[u+12>>2]){Gt(t[u+4>>2]),Gt(t[t[x+120>>2]+8>>2]),Gt(t[t[x+120>>2]>>2]),u=t[x+120>>2],M=t[u+12>>2],M&&(Gt(M),u=t[x+120>>2]),Gt(u),t[x+120>>2]=0;break t}if(!A1(m,S,y))break e}if(t[x+116>>2]&&Vn(m,S,y),M=1,u=t[S>>2],!u)break e;t[m+28>>2]=u,t[m+32>>2]=t[x+112>>2],t[x+108>>2]=0}return M|0}function Ac(x,u,m,y,S){var M=0,O=0,A=0,G=0;e:{if((x|0)<0)break e;A=t[u+76>>2],M=x;t:{for(;;){n:switch(dt[S+M|0]-67|0){case 0:if(G=1,M=(De(m,5644)+A|0)+De(y,148)|0,t[M+556>>2]!=t[M+516>>2])break e;break t;case 9:if(G=1,M=(De(m,5644)+A|0)+De(y,148)|0,t[M+548>>2]!=t[M+508>>2])break e;break t;case 13:if(G=1,O=(De(m,5644)+A|0)+De(y,148)|0,ln[O+460>>2]<=1){if(x=M,t[O+560>>2]!=t[O+520>>2])break e;break t}if(t[O+564>>2]!=t[O+528>>2]||(x=M,M=(De(m,5644)+A|0)+De(y,148)|0,t[M+568>>2]!=t[M+536>>2]))break e;break t;default:if(O=(M|0)>0,M=M-1|0,O)continue;break e;case 15:break n}break}if(G=1,M=(De(m,5644)+A|0)+De(y,148)|0,t[M+552>>2]!=t[M+512>>2])break e}return(Ac(x-1|0,u,m,y,S)|0)!=0}return G}function R4(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0;if(!m)return 0;if(!Pc(t[x>>2],u,m,y))return vt(y,1,10153,0),0;u=1;e:{if(t[t[x>>2]+60>>2]|t[x+128>>2])break e;if(S=x+108|0,!gu(m,S,y))return 0;t:{n:switch(t[x+48>>2]-12|0){case 5:u=2;break t;case 6:u=3;break t;case 12:u=4;break t;case 0:u=5;break t;case 4:break t;default:break n}u=-1}t[m+20>>2]=u,u=t[x+120>>2];t:{if(!u)break t;if(!t[u+12>>2]){Gt(t[t[S+12>>2]+4>>2]),Gt(t[t[S+12>>2]+8>>2]),Gt(t[t[S+12>>2]>>2]),u=t[S+12>>2],M=t[u+12>>2],M&&(Gt(M),u=t[S+12>>2]),Gt(u),t[S+12>>2]=0;break t}if(u=0,!A1(m,S,y))break e}if(t[x+116>>2]&&Vn(m,S,y),u=1,y=t[S>>2],!y)break e;t[m+28>>2]=y,t[m+32>>2]=t[x+112>>2],t[x+108>>2]=0}return u|0}function Kh(){var x=0,u=0,m=0,y=0;e:{if(u=oi(1,232),u){if(t[u>>2]=1,t[u+184>>2]=1,dt[u+188|0]=xe[u+188|0]|6,x=oi(1,5644),t[u+12>>2]=x,!x||(x=oi(1,1e3),t[u+16>>2]=x,!x))break e;t[u+48>>2]=0,t[u+52>>2]=0,t[u+44>>2]=-1,t[u+20>>2]=1e3;t:{if(x=oi(1,48),x){if(t[x+24>>2]=0,t[x+32>>2]=100,y=oi(100,24),t[x+28>>2]=y,y)break t;Gt(x)}t[u+200>>2]=0;break e}if(t[x+40>>2]=0,t[u+200>>2]=x,x=Bf(),t[u+196>>2]=x,!x||(x=Bf(),t[u+192>>2]=x,!x))break e;x=0,m=Fp();t:{if(!m)break t;if(y=Nc(),!bf(m,2390)){x=y;break t}if(m=pt(m),(m|0)<0)break t;x=y?y<<1:64,x=(x|0)>(m|0)?m:x}if(x=vu(x),t[u+212>>2]=x,!x&&(x=vu(0),t[u+212>>2]=x,!x))break e}else u=0;return u}return Df(u),0}function A4(x){var u=0,m=0,y=0,S=0,M=0,O=0;if(O=Nt-16|0,Nt=O,x){e:{if(!t[x+8>>2])break e;if(t[x+12>>2]&&(t[x+40>>2]=0),t[x+16>>2]=1,t[x+4>>2]>0)for(;y=De(u,20),m=t[x>>2],Gt(t[(m+y|0)+4>>2]),m=t[x>>2],S=t[(m+y|0)+16>>2],S&&(Gt(S),m=t[x>>2]),m=t[(m+y|0)+12>>2],m&&Gt(m),u=u+1|0,(u|0)>2];);if(Gt(t[x>>2]),u=t[x+28>>2],u)for(;m=t[u+4>>2],Gt(u),t[x+28>>2]=m,u=m,!!u;);if(u=t[x+8>>2],!u)break e;Gt(u)}if(u=t[x+12>>2],u&&Gt(u),u=t[x+36>>2],u){if(m=t[u+4>>2],(m|0)>0)for(;y=t[u>>2]+De(M,12)|0,S=t[y+8>>2],S&&(Zt[S|0](t[y+4>>2]),m=t[u+4>>2]),M=M+1|0,(M|0)<(m|0););Gt(t[u>>2]),Gt(u)}Gt(x)}Nt=O+16|0}function T5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;M=Nt-16|0,Nt=M,A=5,G=t[x+156>>2],S=t[x+204>>2],H=G+De(S,5644)|0,y=t[H+5584>>2],dt[y|0]&1&&(A=t[y+4>>2]+5|0),y=t[x+52>>2],O=A+9|0;e:{if(O>>>0>ln[x+56>>2]){if(y=Wi(y,O),!y){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7490,0),x=0;break e}t[x+56>>2]=O,t[x+52>>2]=y}if(lr(y,65362,2),lr(y+2|0,A+7|0,2),lr(y+4|0,t[H>>2],1),S=G+De(S,5644)|0,lr(y+5|0,t[S+4>>2],1),lr(y+6|0,t[S+8>>2],2),lr(y+8|0,t[S+16>>2],1),t[M+12>>2]=A,!$p(t[x+156>>2],t[x+204>>2],y+9|0,M+12|0,m)){vt(m,1,7438,0),x=0;break e}if(t[M+12>>2]){vt(m,1,7438,0),x=0;break e}x=(Go(u,t[x+52>>2],O,m)|0)==(O|0)}return Nt=M+16|0,x|0}function bp(x,u,m,y,S,M){var O=0,A=0;O=1;e:{t:{n:{if(A=t[(De(u,5644)+x|0)+5584>>2],x=A+De(m,1080)|0,u=t[x+24>>2],(u|0)==1||(x=De(t[x+4>>2],3),O=x-2|0,u))break n;if(u=x-1|0,u>>>0>ln[S>>2])break e;if(x=1,M=De(m,1080)+A|0,lr(y,t[M+804>>2]<<5,1),!O)break t;for(m=0;y=y+1|0,lr(y,t[(M+(m<<3)|0)+28>>2]<<3,1),m=m+1|0,(O|0)!=(m|0););x=u;break t}if(x=O<<1|1,x>>>0>ln[S>>2])break e;if(M=u,u=De(m,1080)+A|0,lr(y,M+(t[u+804>>2]<<5)|0,1),!O)break t;for(m=y+1|0,y=0;M=u+(y<<3)|0,lr(m,(t[M+28>>2]<<11)+t[M+32>>2]|0,2),m=m+2|0,y=y+1|0,(O|0)!=(y|0););}return t[S>>2]=t[S>>2]-x,1}return vt(M,1,4575,0),0}function Fp(){var x=0,u=0,m=0,y=0;u=2415;e:{for(;;){if(x=xe[u|0],!x|(x|0)==61)break e;if(u=u+1|0,!(u&3))break}x=t[u>>2];t:{if((x^-1)&x-16843009&-2139062144)break t;for(;;){if(x=x^1027423549,(x^-1)&x-16843009&-2139062144)break t;if(x=t[u+4>>2],u=u+4|0,!!(x-16843009&(x^-1)&-2139062144))break}}for(;x=u,m=xe[x|0],!!(m&&(u=x+1|0,(m|0)!=61)););u=x}if((u|0)==2415)return 0;m=u-2415|0;e:{if(xe[m+2415|0]||(u=t[12459],!u)||(x=t[u>>2],!x))break e;for(;;){t:{if(!Ni(2415,x,m)&&(x=m+t[u>>2]|0,xe[x|0]==61))break t;if(x=t[u+4>>2],u=u+4|0,x)continue;break e}break}y=x+1|0}return y}function Vp(x,u,m){var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0,Q=0;if(M=t[x+156>>2]+De(t[x+204>>2],5644)|0,Q=t[M+5584>>2],G=t[M+420>>2],A=t[t[x+72>>2]+16>>2],lr(u,65375,2),x=G+1|0,S=A>>>0<257?1:2,H=De(x,(S<<1)+5|0),lr(u+2|0,H+2|0,2),x)for(u=u+4|0,x=M+424|0;lr(u,t[x>>2],1),u=u+1|0,lr(u,t[x+4>>2],S),u=u+S|0,lr(u,t[x+8>>2],2),lr(u+2|0,t[x+12>>2],1),u=u+3|0,lr(u,t[x+16>>2],S),O=u+S|0,lr(O,t[x+36>>2],1),u=t[x+8>>2],y=t[M+8>>2],t[x+8>>2]=(u|0)<(y|0)?u:y,u=t[Q+4>>2],y=t[x+16>>2],t[x+16>>2]=(y|0)<(A|0)?y:A,y=t[x+12>>2],t[x+12>>2]=(u|0)>(y|0)?y:u,x=x+148|0,u=O+1|0,O=(G|0)!=(Y|0),Y=Y+1|0,!!O;);t[m>>2]=H+4}function Jr(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0;S=Nt-16|0,Nt=S;e:{if(t[x+116>>2])break e;if(m>>>0<=1){vt(y,1,19149,0);break e}if(ue(u,S+12|0,2),M=t[S+12>>2],A=M&65535,!A){vt(y,1,19182,0);break e}if(De(A,6)+2>>>0>m>>>0){vt(y,1,19149,0);break e}if(y=si(De(M,6)),!y)break e;if(m=si(8),t[x+116>>2]=m,!m){Gt(y);break e}if(t[m>>2]=y,M=m,m=Qn[S+12>>1],tn[M+4>>1]=m,!m){O=1;break e}for(m=0;O=S+12|0,ue(u+2|0,O,2),M=y+De(m,6)|0,tn[M>>1]=t[S+12>>2],ue(u+4|0,O,2),tn[M+2>>1]=t[S+12>>2],u=u+6|0,ue(u,O,2),tn[M+4>>1]=t[S+12>>2],O=1,m=m+1|0,m>>>0>2]+4>>1];);}return Nt=S+16|0,O|0}function Up(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0;m=0,M=!(t[x+104>>2]|t[x+100>>2])&t[x>>2]!=0&t[x+8>>2]!=0&t[x+4>>2]!=0&t[x+64>>2]!=0&t[x+16>>2]!=0&t[x+12>>2]!=0,y=t[x+20>>2];e:{if(!y)break e;if(O=t[x+72>>2],y>>>0>=4)for(A=y&-4;M=(t[(De(m,12)+O|0)+8>>2]&126)>>>0<38&M&(t[(De(m|1,12)+O|0)+8>>2]&126)>>>0<38&(t[(De(m|2,12)+O|0)+8>>2]&126)>>>0<38&(t[(De(m|3,12)+O|0)+8>>2]&126)>>>0<38,m=m+4|0,S=S+4|0,(A|0)!=(S|0););if(y=y&3,!y)break e;for(S=0;M=(t[(De(m,12)+O|0)+8>>2]&126)>>>0<38&M,m=m+1|0,S=S+1|0,(y|0)!=(S|0););}return t[u+28>>2]!=98&M&t[x+40>>2]-1>>>0<2}function E5(x){x=x|0;var u=0,m=0,y=0,S=0;u=t[x>>2],S=oi(1,8);e:{if(t[u+16>>2]==1)break e;for(;;){if(y=t[u+20>>2],!y){if(!t[x+8>>2]){if(t[x+8>>2]=1,t[u+32>>2]=t[u+32>>2]+1,m=si(8),!m){t[u+16>>2]=2;break e}t[m>>2]=x,t[m+4>>2]=t[u+28>>2],t[u+28>>2]=m}if(t[u+16>>2]!=1)continue;break e}if(t[u+20>>2]=t[y+4>>2],m=t[y>>2],Gt(y),!m)break e;if(y=t[m>>2],y&&Zt[y|0](t[m+4>>2],S),Gt(m),t[u+24>>2]=t[u+24>>2]-1,t[u+16>>2]==1)break}}if(S){if(u=t[S+4>>2],(u|0)>0)for(x=0;m=t[S>>2]+De(x,12)|0,y=t[m+8>>2],y&&(Zt[y|0](t[m+4>>2]),u=t[S+4>>2]),x=x+1|0,(u|0)>(x|0););Gt(t[S>>2]),Gt(S)}}function D5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0;m=1;e:{if((Qn[x+80>>1]&33280)!=33280||(O=De(t[x+104>>2],t[x+108>>2]),!O))break e;for(M=t[x+156>>2];;){t:{if(t[M+16>>2]!=2||(m=t[M+5612>>2]!=0&m,y=t[t[x+72>>2]+16>>2],!y))break t;if(u=t[M+5584>>2],y>>>0>=4)for(G=y&-4,S=0;m=(t[u+20>>2]^-1)&m&((t[u+3260>>2]|(t[u+1100>>2]|t[u+2180>>2]))^-1),u=u+4320|0,S=S+4|0,(G|0)!=(S|0););if(S=0,y=y&3,!y)break t;for(;m=(t[u+20>>2]^-1)&m,u=u+1080|0,S=S+1|0,(y|0)!=(S|0););}if(M=M+5644|0,A=A+1|0,(O|0)==(A|0))break}}return m|0}function I5(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0;if(y=Nt-16|0,Nt=y,!xe[49812]){if(dt[49812]=1,M=49760,O=h5(1083)|0,t[M>>2]=O,!xe[52204]){e:{for(;;){if(!xe[m+49904|0]){dt[m+49904|0]=1,t[(m<<2)+50032>>2]=0,t[13052]=m,m=0;break e}if(m=m+1|0,(m|0)==128)break}m=6}m&&(fl(),Qe()),dt[52204]=1}e:{if(!xe[52205]){if(m=28,S=t[13052],S>>>0>127|!xe[S+49904|0]||(t[(S<<2)+50032>>2]=52208,m=0),m)break e;dt[52205]=1}if(m=S2(12),!m)break e;t[m+4>>2]=0,t[m>>2]=54,t[m+8>>2]=t[13053],t[13053]=m}}m=t[u+16>>2],u=t[u+12>>2],t[y+12>>2]=u,t[y+8>>2]=m-u,M=x,O=p4(t[12440],1,29316,y+8|0)|0,t[M>>2]=O,Nt=y+16|0}function D0(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0;if(dt[x+36|0]=u,u=t[x+40>>2],y=t[x+44>>2]-u>>2,y>>>0>>0){e:{if(m=m-y|0,M=t[x+48>>2],u=t[x+44>>2],m>>>0<=M-u>>2>>>0){m&&(y=u,u=m<<2,u=pi(y,0,u)+u|0),t[x+44>>2]=u;break e}t:{if(y=u,u=t[x+40>>2],O=y-u|0,A=O>>2,S=m+A|0,S>>>0<1073741824){if(y=0,M=M-u|0,G=M>>1,S=M>>>0>=2147483644?1073741823:S>>>0>>0?G:S,S){if(S>>>0>=1073741824)break t;y=Ri(S<<2)}m=m<<2,M=pi((A<<2)+y|0,0,m),y=N1(y,u,O),t[x+48>>2]=y+(S<<2),t[x+44>>2]=m+M,t[x+40>>2]=y,u&&Gt(u);break e}Mt(),Qe()}H5(),Qe()}return}m>>>0>>0&&(t[x+44>>2]=u+(m<<2))}function L4(x){x=x|0;var u=0,m=0;x&&(Df(t[x>>2]),t[x>>2]=0,u=t[x+72>>2],u&&(Gt(u),t[x+72>>2]=0),u=t[x+68>>2],u&&(Gt(u),t[x+68>>2]=0),u=t[x+108>>2],u&&(Gt(u),t[x+108>>2]=0),u=t[x+116>>2],u&&(m=t[u>>2],m&&(Gt(m),u=t[x+116>>2],t[u>>2]=0),Gt(u),t[x+116>>2]=0),u=t[x+120>>2],u&&(m=t[u+12>>2],m&&(Gt(m),u=t[x+120>>2],t[u+12>>2]=0),m=t[u+4>>2],m&&(Gt(m),u=t[x+120>>2],t[u+4>>2]=0),m=t[u+8>>2],m&&(Gt(m),u=t[x+120>>2],t[u+8>>2]=0),m=t[u>>2],m&&(Gt(m),u=t[x+120>>2],t[u>>2]=0),Gt(u),t[x+120>>2]=0),u=t[x+4>>2],u&&(Xp(u),t[x+4>>2]=0),u=t[x+8>>2],u&&(Xp(u),t[x+8>>2]=0),Gt(x))}function Bp(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0,H=0;O=Nt-32|0,Nt=O,M=t[x+72>>2];e:{if(!M){vt(y,1,25089,0),S=0;break e}if(M=oi(4,t[M+16>>2]),S=0,!M)break e;if(u)for(H=t[x+72>>2];;){t:{S=t[(A<<2)+m>>2];n:{if(S>>>0>=ln[H+16>>2]){t[O+16>>2]=S,vt(y,1,4305,O+16|0);break n}if(G=M+(S<<2)|0,!t[G>>2])break t;t[O>>2]=S,vt(y,1,5871,O)}Gt(M),S=0;break e}if(t[G>>2]=1,A=A+1|0,(A|0)==(u|0))break}Gt(M),Gt(t[x- -64>>2]);t:{if(u){if(S=u<<2,y=si(S),t[x+64>>2]=y,!y){t[x+60>>2]=0,S=0;break e}Yr(y,m,S);break t}t[x+64>>2]=0}t[x+60>>2]=u,S=1}return Nt=O+32|0,S|0}function N4(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;e:{if(!vn(t[x+192>>2],125,m)||t[x+16>>2]&&!vn(t[x+192>>2],126,m)||!vn(t[x+192>>2],127,m)||!vn(t[x+192>>2],128,m)||!vn(t[x+192>>2],129,m))break e;O=t[x+192>>2],M=t[O>>2],S=t[O+8>>2],y=1;t:{if(!M)break t;if((M|0)!=1)for(H=M&-2;A=0,y&&(A=(Zt[t[S>>2]](x,u,m)|0)!=0),y=0,A&&(y=(Zt[t[S+4>>2]](x,u,m)|0)!=0),S=S+8|0,G=G+2|0,(G|0)!=(H|0););if(!(M&1))break t;if(!y){y=0;break t}y=(Zt[t[S>>2]](x,u,m)|0)!=0}t[O>>2]=0}return y|0}function O5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;O=Nt-16|0,Nt=O,y=1,S=t[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+5584>>2],M=t[S+24>>2],(M|0)!=1&&(y=De(t[S+4>>2],3)-2|0),S=t[x+52>>2],y=M?y<<1|1:y+1|0,M=y+4|0;e:{if(M>>>0>ln[x+56>>2]){if(S=Wi(S,M),!S){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,y=0,vt(m,1,7581,0);break e}t[x+56>>2]=M,t[x+52>>2]=S}if(lr(S,65372,2),lr(S+2|0,y+2|0,2),t[O+12>>2]=y,y=0,!bp(t[x+156>>2],t[x+204>>2],0,S+4|0,O+12|0,m)){vt(m,1,7529,0);break e}if(t[O+12>>2]){vt(m,1,7529,0);break e}y=(Go(u,t[x+52>>2],M,m)|0)==(M|0)}return Nt=O+16|0,y|0}function Gp(x,u,m,y,S){var M=0,O=0,A=0;M=Nt-208|0,Nt=M,t[M+204>>2]=m,m=M+160|0,pi(m,0,40),t[M+200>>2]=t[M+204>>2];e:{if((m4(0,u,M+200|0,M+80|0,m,y,S)|0)<0)break e;A=t[x+76>>2]>=0,m=t[x>>2],t[x+72>>2]<=0&&(t[x>>2]=m&-33);t:{n:{r:{if(!t[x+48>>2]){t[x+48>>2]=80,t[x+28>>2]=0,t[x+16>>2]=0,t[x+20>>2]=0,O=t[x+44>>2],t[x+44>>2]=M;break r}if(t[x+16>>2])break n}if(W5(x))break t}m4(x,u,M+200|0,M+80|0,M+160|0,y,S)}if(O&&(Zt[t[x+36>>2]](x,0,0)|0,t[x+48>>2]=0,t[x+44>>2]=O,t[x+28>>2]=0,t[x+16>>2]=0,t[x+20>>2]=0),t[x>>2]=t[x>>2]|m&32,!A)break e}Nt=M+208|0}function M5(x,u,m,y,S){if(x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,Ja(x,t[u+8>>2],S)){t[u+28>>2]==1|t[u+4>>2]!=(m|0)||(t[u+28>>2]=y);return}e:{if(Ja(x,t[u>>2],S)){if(!(t[u+16>>2]!=(m|0)&t[u+20>>2]!=(m|0))){if((y|0)!=1)break e;t[u+32>>2]=1;return}t[u+32>>2]=y;t:{if(t[u+44>>2]==4)break t;if(tn[u+52>>1]=0,x=t[x+8>>2],Zt[t[t[x>>2]+20>>2]](x,u,m,m,1,S),xe[u+53|0]){if(t[u+44>>2]=3,!xe[u+52|0])break t;break e}t[u+44>>2]=4}if(t[u+20>>2]=m,t[u+40>>2]=t[u+40>>2]+1,t[u+36>>2]!=1|t[u+24>>2]!=2)break e;dt[u+54|0]=1;return}x=t[x+8>>2],Zt[t[t[x>>2]+24>>2]](x,u,m,y,S)}}function Rf(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0,Y=0;A=Nt-16|0,Nt=A;e:{y=t[u+4>>2],O=t[u>>2],S=y-O|0;t:{n:{if(S>>>0>>0){if(G=m-S|0,M=t[u+8>>2],G>>>0<=M-y>>>0){y=pi(y,0,G)+G|0;break n}if((m|0)<0)break e;if(y=M-O|0,M=y<<1,y=y>>>0>=1073741823?2147483647:m>>>0>>0?M:m,M=Ri(y),pi(M+S|0,0,G),S=N1(M,O,S),t[u+8>>2]=S+y,y=m+S|0,t[u+4>>2]=y,t[u>>2]=S,!O)break t;Gt(O),y=t[u+4>>2];break t}if(m>>>0>=S>>>0)break t;y=m+O|0}t[u+4>>2]=y}u=t[u>>2],t[A+12>>2]=u,t[A+8>>2]=y-u,H=x,Y=Ce(29300,A+8|0)|0,t[H>>2]=Y,Nt=A+16|0;return}Mt(),Qe()}function Wp(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0;S=15;e:{t:switch(t[x+40>>2]-1|0){case 1:S=t[x+112>>2]+11|0;break;case 0:break t;default:break e}if(m=oi(1,S),!m)break e;lr(m,S,4),lr(m+4|0,1668246642,4),lr(m+8|0,t[x+40>>2],1),lr(m+9|0,t[x+52>>2],1),lr(m+10|0,t[x+44>>2],1),y=m+11|0;t:{n:switch(t[x+40>>2]-1|0){case 1:if(!t[x+112>>2])break t;for(;lr(y,xe[t[x+108>>2]+M|0],1),y=y+1|0,M=M+1|0,M>>>0>2];);break t;case 0:break n;default:break t}lr(y,t[x+48>>2],4)}t[u>>2]=S,y=m}return y|0}function b4(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0;S=Nt-16|0,Nt=S,t[x+8>>2]==16?O=t[x+156>>2]+De(t[x+204>>2],5644)|0:O=t[x+12>>2],A=t[x+72>>2],M=ln[A+16>>2]<257?1:2;e:{if(M>>>0>=m>>>0){m=0,vt(y,1,7750,0);break e}if(t[S+12>>2]=(M^-1)+m,ue(u,S+8|0,M),G=t[S+8>>2],G>>>0>=ln[A+16>>2]){m=0,vt(y,1,25404,0);break e}if(m=1,u=u+M|0,ue(u,t[O+5584>>2]+De(G,1080)|0,1),!wi(x,t[S+8>>2],u+1|0,S+12|0,y)){m=0,vt(y,1,7750,0);break e}if(!t[S+12>>2])break e;m=0,vt(y,1,7750,0)}return Nt=S+16|0,m|0}function $p(x,u,m,y,S){var M=0;e:{if(ln[y>>2]<=4)break e;if(u=t[(De(u,5644)+x|0)+5584>>2],lr(m,t[u+4>>2]-1|0,1),lr(m+1|0,t[u+8>>2]-2|0,1),lr(m+2|0,t[u+12>>2]-2|0,1),lr(m+3|0,t[u+16>>2],1),lr(m+4|0,t[u+20>>2],1),M=t[y>>2]-5|0,t[y>>2]=M,dt[u|0]&1){t:{n:{if(x=t[u+4>>2],x>>>0<=M>>>0){if(x)break n;x=0;break t}break e}for(m=m+5|0,S=0;x=u+(S<<2)|0,lr(m,(t[x+944>>2]<<4)+t[x+812>>2]|0,1),m=m+1|0,x=t[u+4>>2],S=S+1|0,x>>>0>S>>>0;);M=t[y>>2]}t[y>>2]=M-x}return 1}return vt(S,1,4469,0),0}function P5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0;M=Nt-16|0,Nt=M,S=t[x+120>>2];e:{if(!S){vt(y,1,19103,0),m=0;break e}if(t[S+12>>2]){vt(y,1,22119,0),m=0;break e}if(S=xe[S+18|0],O=S<<2,O>>>0>m>>>0){vt(y,1,19070,0),m=0;break e}if(O=si(O),m=0,!O)break e;if(S)for(y=0;m=M+12|0,ue(u,m,2),A=O+(y<<2)|0,tn[A>>1]=t[M+12>>2],ue(u+2|0,m,1),dt[A+2|0]=t[M+12>>2],ue(u+3|0,m,1),dt[A+3|0]=t[M+12>>2],u=u+4|0,y=y+1|0,(S|0)!=(y|0););t[t[x+120>>2]+12>>2]=O,m=1}return Nt=M+16|0,m|0}function F4(){var x=0,u=0;U2(29072,1717,29080,5,29082,6),x=Ri(4),t[x>>2]=0,u=Ri(4),t[u>>2]=0,or(29072,1954,48920,29085,7,x|0,48920,29089,8,u|0),x=Ri(4),t[x>>2]=2,u=Ri(4),t[u>>2]=2,or(29072,1179,48920,29085,7,x|0,48920,29089,8,u|0),x=Ri(4),t[x>>2]=4,u=Ri(4),t[u>>2]=4,or(29072,2070,48884,29085,9,x|0,48884,29089,10,u|0),x=Ri(4),t[x>>2]=5,u=Ri(4),t[u>>2]=5,or(29072,1145,48884,29085,9,x|0,48884,29089,10,u|0),x=Ri(4),t[x>>2]=6,u=Ri(4),t[u>>2]=6,or(29072,2366,48860,29085,11,x|0,48860,29089,12,u|0),On(29072)}function V4(x,u){var m=0,y=0,S=0,M=0,O=0;M=Nt-32|0,Nt=M,m=t[x+60>>2];e:{t:{if(m){for(O=1;S=t[t[x+64>>2]+(y<<2)>>2],t[(t[t[x+76>>2]+24>>2]+De(S,52)|0)+44>>2]||(t[M+16>>2]=S,vt(u,2,17241,M+16|0),O=0,m=t[x+60>>2]),y=y+1|0,m>>>0>y>>>0;);break t}if(O=1,m=t[x+76>>2],S=1,!t[m+16>>2])break e;for(;t[(t[m+24>>2]+De(y,52)|0)+44>>2]||(t[M>>2]=y,vt(u,2,17241,M),O=0,m=t[x+76>>2]),y=y+1|0,y>>>0>2];);}if(S=1,O)break e;vt(u,1,4848,0),S=0}return Nt=M+32|0,S}function R5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0,G=0;S=Nt-16|0,Nt=S,O=t[t[x+72>>2]+16>>2];e:{if((O+2|0)!=(m|0)){vt(y,1,7620,0);break e}if(ue(u,S+12|0,2),t[S+12>>2]!=(O|0)){vt(y,1,7620,0);break e}if(!O){M=1;break e}for(m=u+2|0,x=t[t[x+72>>2]+24>>2],u=0;;){if(ue(m,S+8|0,1),M=t[S+8>>2],A=M&127,G=A+1|0,t[x+24>>2]=G,t[x+32>>2]=M>>>7&1,A>>>0>=31){t[S+4>>2]=G,t[S>>2]=u,vt(y,1,27379,S),M=0;break e}if(x=x+52|0,M=1,m=m+1|0,u=u+1|0,(O|0)==(u|0))break}}return Nt=S+16|0,M|0}function qh(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0,A=0;S=Nt-16|0,Nt=S;e:{t:{A=S+8|0;n:{if(ln[t[x+72>>2]+16>>2]<=256){if(m){M=-1,O=1;break n}vt(y,1,7815,0),x=0;break e}if(m>>>0<=1)break t;M=-2,O=2}if(ue(u,A,O),t[S+12>>2]=m+M,m=t[S+8>>2],M=t[t[x+72>>2]+16>>2],m>>>0>=M>>>0){t[S+4>>2]=M,t[S>>2]=m,vt(y,1,17349,S),x=0;break e}if(!Wu(x,m,u+O|0,S+12|0,y)){vt(y,1,7815,0),x=0;break e}if(x=1,!t[S+12>>2])break e;vt(y,1,7815,0),x=0;break e}vt(y,1,7815,0),x=0}return Nt=S+16|0,x|0}function Af(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0;if(y=t[x+40>>2],y>>>0>=10922)return vt(m,1,7049,0),0;if(M=y>>>0<256,t[x+20>>2]=M,S=t[x+52>>2],O=De(y,M?5:6),y=O+6|0,y>>>0>ln[x+56>>2]){if(S=Wi(S,y),!S)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7154,0),0;t[x+56>>2]=y,t[x+52>>2]=S}return pi(S,0,y),S=t[x+52>>2],A=t[u+60>>2],t[x+24>>2]=t[u+56>>2],t[x+28>>2]=A,lr(S,65365,2),lr(S+2|0,O+4|0,2),lr(S+4|0,0,1),lr(S+5|0,M?80:96,1),(Go(u,t[x+52>>2],y,m)|0)==(y|0)|0}function vt(x,u,m,y){var S=0,M=0,O=0;S=Nt-528|0,Nt=S;e:{if(!x)break e;t:{n:switch(u-1|0){case 0:u=x+12|0;break t;case 1:u=x+16|0,x=x+4|0;break t;case 3:break n;default:break e}u=x+20|0,x=x+8|0}if(M=t[u>>2],!M|!m)break e;O=t[x>>2],u=pi(S,0,512),t[u+524>>2]=y,x=Nt-160|0,Nt=x,t[x+148>>2]=511,t[x+144>>2]=u,x=pi(x,0,144),t[x+76>>2]=-1,t[x+36>>2]=261,t[x+80>>2]=-1,t[x+44>>2]=x+159,t[x+84>>2]=x+144,dt[u|0]=0,Gp(x,m,y,259,260),Nt=x+160|0,dt[u+511|0]=0,Zt[M|0](u,O)}Nt=S+528|0}function jp(x,u){if(!x)return 0;e:{t:{if(x){if(u>>>0<=127)break t;n:{if(!t[t[12660]>>2]){if((u&-128)==57216)break t;break n}if(u>>>0<=2047){dt[x+1|0]=u&63|128,dt[x|0]=u>>>6|192,x=2;break e}if(!((u&-8192)!=57344&u>>>0>=55296)){dt[x+2|0]=u&63|128,dt[x|0]=u>>>12|224,dt[x+1|0]=u>>>6&63|128,x=3;break e}if(u-65536>>>0<=1048575){dt[x+3|0]=u&63|128,dt[x|0]=u>>>18|240,dt[x+2|0]=u>>>6&63|128,dt[x+1|0]=u>>>12&63|128,x=4;break e}}t[12458]=25,x=-1}else x=1;break e}dt[x|0]=u,x=1}return x}function A5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0;if(m)for(;Ae(+Ue[x>>2]),y=Re(1)|0,S=Re(0)|0,M=S&16711680,O=M>>>8|0,G=M<<24,M=S&-16777216,y=G|M<<8|(((y&255)<<24|S>>>8)&-16777216|((y&16777215)<<8|S>>>24)&16711680|(y>>>8&65280|y>>>24)),dt[u|0]=y,dt[u+1|0]=y>>>8,dt[u+2|0]=y>>>16,dt[u+3|0]=y>>>24,y=O|M>>>24|(S<<24|(S&65280)<<8),O=0,y=y|(O|O),dt[u+4|0]=y,dt[u+5|0]=y>>>8,dt[u+6|0]=y>>>16,dt[u+7|0]=y>>>24,u=u+8|0,x=x+4|0,A=A+1|0,(A|0)!=(m|0););}function zu(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0;M=t[x+32>>2],t[x+36>>2]=M;e:{if(S=t[x+48>>2],S){for(;;){if(S=Zt[t[x+20>>2]](M,S,t[x>>2])|0,(S|0)==-1)break e;if(M=S+t[x+36>>2]|0,t[x+36>>2]=M,S=t[x+48>>2]-S|0,t[x+48>>2]=S,!S)break}M=t[x+32>>2]}return t[x+48>>2]=0,t[x+36>>2]=M,Zt[t[x+28>>2]](u,m,t[x>>2])|0?(t[x+56>>2]=u,t[x+60>>2]=m,1):(t[x+68>>2]=t[x+68>>2]|8,0)}return t[x+68>>2]=t[x+68>>2]|8,vt(y,4,27581,0),t[x+68>>2]=t[x+68>>2]|8,0}function M0(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0;if(y=t[x+72>>2],S=t[y+16>>2],!S)return 1;for(A=t[t[x+156>>2]+5584>>2];;){e:{if(t[A+808>>2]){if(G=t[t[x+156>>2]+5584>>2],M=t[x+52>>2],lr(M,65374,2),y=S>>>0<257?1:2,lr(M+2|0,y|4,2),S=M+4|0,lr(S,O,y),M=0,S=y+S|0,lr(S,0,1),lr(S+1|0,t[(De(O,1080)+G|0)+808>>2],1),y=y+6|0,(Go(u,t[x+52>>2],y,m)|0)!=(y|0))break e;y=t[x+72>>2]}if(A=A+1080|0,M=1,S=t[y+16>>2],O=O+1|0,S>>>0>O>>>0)continue}break}return M|0}function U4(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;e:{t:{n:{if(!vn(t[x+8>>2],183,m))break n;if(y=t[x+8>>2],A=t[y>>2],S=t[y+8>>2],!A)break t;if(M=1,(A|0)!=1)for(H=A&-2;;){O=0;r:{if(!M||(O=0,!(Zt[t[S>>2]](x,u,m)|0)))break r;O=(Zt[t[S+4>>2]](x,u,m)|0)!=0}if(M=O,S=S+8|0,G=G+2|0,(G|0)==(H|0))break}r:{if(A&1){if(!M)break r;M=(Zt[t[S>>2]](x,u,m)|0)!=0}if(t[y>>2]=0,!M)break n;break e}t[y>>2]=0}return 0}t[y>>2]=0}return 1}function B4(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0;if(t[x+100>>2]!=1)return vt(y,1,21962,0),0;e:{if(m>>>0<=7||(ue(u,x+56|0,4),ue(u+4|0,x+60|0,4),m&3))break e;S=m-8|0,m=S>>>2|0,t[x+64>>2]=m;t:{if(S>>>0>=4){if(m=oi(m,4),t[x+68>>2]=m,!m)break t;m=t[x+64>>2]}if(m)for(y=u+8|0,m=0;ue(y,t[x+68>>2]+(m<<2)|0,4),y=y+4|0,m=m+1|0,m>>>0>2];);return t[x+100>>2]=t[x+100>>2]|2,1}return vt(y,1,4098,0),0}return vt(y,1,9878,0),0}function L5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0;S=Nt-16|0,Nt=S,t[S+12>>2]=m;e:{if(!(!Wu(x,0,u,S+12|0,y)|t[S+12>>2])){if(t[x+8>>2]==16?u=t[x+156>>2]+De(t[x+204>>2],5644)|0:u=t[x+12>>2],M=1,ln[t[x+72>>2]+16>>2]<2)break e;for(m=t[u+5584>>2],O=m+28|0,u=1,y=m;t[y+1104>>2]=t[m+24>>2],t[y+1884>>2]=t[m+804>>2],Yr(y+1108|0,O,776),y=y+1080|0,u=u+1|0,u>>>0>2]+16>>2];);break e}vt(y,1,7555,0)}return Nt=S+16|0,M|0}function Lf(x){var u=0,m=0,y=0;e:{if(!x||(u=t[x+8>>2],!u))break e;if(x=t[x+12>>2],u>>>0>=4)for(y=u&-4;t[x+12>>2]=0,t[x+4>>2]=999,t[x+8>>2]=0,t[x+60>>2]=0,t[x+52>>2]=999,t[x+56>>2]=0,t[x+44>>2]=0,t[x+36>>2]=999,t[x+40>>2]=0,t[x+28>>2]=0,t[x+20>>2]=999,t[x+24>>2]=0,x=x- -64|0,m=m+4|0,(y|0)!=(m|0););if(u=u&3,!u)break e;for(m=0;t[x+12>>2]=0,t[x+4>>2]=999,t[x+8>>2]=0,x=x+16|0,m=m+1|0,(u|0)!=(m|0););}}function N5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;e:{if(!vn(t[x+8>>2],184,m)||!N4(t[x>>2],u,m))break e;A=t[x+8>>2],O=t[A>>2],S=t[A+8>>2],y=1;t:{if(!O)break t;if((O|0)!=1)for(H=O&-2;;){M=0;n:{if(!y||(M=0,!(Zt[t[S>>2]](x,u,m)|0)))break n;M=(Zt[t[S+4>>2]](x,u,m)|0)!=0}if(y=M,S=S+8|0,G=G+2|0,(G|0)==(H|0))break}if(!(O&1))break t;if(!y){y=0;break t}y=(Zt[t[S>>2]](x,u,m)|0)!=0}t[A>>2]=0}return y|0}function G4(x,u,m,y){var S=0,M=0,O=0;if(M=Nt-128|0,Nt=M,S=M,u=t[u+12>>2]+(m<<4)|0,t[u>>2])for(;t[S>>2]=u,S=S+4|0,u=t[u>>2],!!t[u>>2];);for(;;){m=t[u+8>>2],(O|0)>(m|0)&&(t[u+8>>2]=O,m=O);e:{if((m|0)>=(y|0))break e;for(;;){if(t[u+4>>2]<=(m|0))break e;t:{if(W(x,1)){t[u+4>>2]=m;break t}m=m+1|0}if(!((m|0)<(y|0)))break}}if(t[u+8>>2]=m,(S|0)!=(M|0)){S=S-4|0,u=t[S>>2],O=m;continue}break}return Nt=M+128|0,t[u+4>>2]<(y|0)}function W4(x,u,m,y){var S=0,M=0,O=0;if(M=Nt-128|0,Nt=M,S=M,u=t[u+12>>2]+(m<<4)|0,t[u>>2])for(;t[S>>2]=u,S=S+4|0,u=t[u>>2],!!t[u>>2];);for(;;){m=t[u+8>>2],(O|0)>(m|0)&&(t[u+8>>2]=O,m=O);e:{if((m|0)>=(y|0))break e;for(;;){if(t[u+4>>2]<=(m|0)){if(t[u+12>>2])break e;ir(x,1),t[u+12>>2]=1;break e}if(ir(x,0),m=m+1|0,(y|0)==(m|0))break}m=y}if(t[u+8>>2]=m,(S|0)!=(M|0)){S=S-4|0,u=t[S>>2],O=m;continue}break}Nt=M+128|0}function zp(x,u){var m=0,y=0,S=0,M=0,O=0,A=0,G=0;if(S=t[x+8>>2],m=t[x+4>>2],S-m>>3>>>0>=u>>>0){u&&(u=u<<3,m=pi(m,0,u)+u|0),t[x+4>>2]=m;return}e:{if(M=m,m=t[x>>2],O=M-m|0,A=O>>3,y=A+u|0,y>>>0<536870912){if(S=S-m|0,M=S>>2,y=S>>>0>=2147483640?536870911:y>>>0>>0?M:y,y){if(y>>>0>=536870912)break e;G=Ri(y<<3)}u=u<<3,S=pi((A<<3)+G|0,0,u),M=y<<3,y=N1(G,m,O),t[x+8>>2]=M+y,t[x+4>>2]=u+S,t[x>>2]=y,m&&Gt(m);return}Mt(),Qe()}H5(),Qe()}function b5(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0;S=Nt-16|0,Nt=S,O=t[t[x+72>>2]+16>>2],M=O>>>0<257?1:2;e:{if((M+2|0)!=(m|0)){x=0,vt(y,1,6916,0);break e}if(t[x+8>>2]==16?m=t[x+156>>2]+De(t[x+204>>2],5644)|0:m=t[x+12>>2],ue(u,S+12|0,M),x=1,u=u+M|0,ue(u,S+8|0,1),M=t[S+12>>2],M>>>0>=O>>>0){t[S+4>>2]=O,t[S>>2]=M,vt(y,1,26446,S),x=0;break e}ue(u+1|0,(t[m+5584>>2]+De(M,1080)|0)+808|0,1)}return Nt=S+16|0,x|0}function F5(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0,O=0,A=0;if(M=De(Qn[t[x+116>>2]+4>>1],6)+10|0,m=si(M),m){if(lr(m,M,4),lr(m+4|0,1667523942,4),lr(m+8|0,Qn[t[x+116>>2]+4>>1],2),S=t[x+116>>2],Qn[S+4>>1])for(y=m+10|0;A=De(O,6),lr(y,Qn[A+t[S>>2]>>1],2),lr(y+2|0,Qn[(t[t[x+116>>2]>>2]+A|0)+2>>1],2),lr(y+4|0,Qn[(t[t[x+116>>2]>>2]+A|0)+4>>1],2),y=y+6|0,O=O+1|0,S=t[x+116>>2],O>>>0>1];);t[u>>2]=M}return m|0}function u0(x){var u=0,m=0,y=0,S=0;e:{t:{if(u=t[x+16>>2],m=xe[u|0],(m|0)==255){m=u+1|0,t[x+16>>2]=m,u=t[x>>2]>>>20|0;break t}y=t[x>>2];n:{if(!(y&134217728)){m=u+1|0,t[x+16>>2]=m,u=y>>>19|0;break n}if(dt[u|0]=m+1,u=t[x+16>>2],xe[u|0]==255){m=u+1|0,t[x+16>>2]=m,u=t[x>>2]&134217727,t[x>>2]=u,u=u>>>20|0;break t}m=u+1|0,t[x+16>>2]=m,u=t[x>>2]>>>19|0}S=8,y=524287;break e}S=7,y=1048575}dt[m|0]=u,t[x+8>>2]=S,t[x>>2]=t[x>>2]&y}function Hp(x,u){var m=0,y=0,S=0,M=0;if(y=t[x+4>>2],(y|0)!=2147483647){if(m=t[x>>2],(y|0)>0)for(;;){if(!t[m+De(S,12)>>2])return y=De(S,12),S=y+m|0,M=t[S+8>>2],M&&(Zt[M|0](t[S+4>>2]),m=t[x>>2]),x=m+y|0,t[x+8>>2]=249,t[x+4>>2]=u,1;if(S=S+1|0,(y|0)==(S|0))break}if(m=Wi(m,De(y,12)+12|0),!m)return 0;t[x>>2]=m,y=t[x+4>>2],m=m+De(y,12)|0,t[m+8>>2]=249,t[m+4>>2]=u,t[m>>2]=0,t[x+4>>2]=y+1,x=1}else x=0;return x}function ta(){var x=0,u=0;return x=Ri(112),t[x>>2]=0,t[x+4>>2]=0,t[x+56>>2]=0,t[x+60>>2]=0,t[x+40>>2]=0,t[x+44>>2]=0,dt[x+36|0]=1,t[x+32>>2]=5,t[x+100>>2]=0,t[x+104>>2]=0,t[x+92>>2]=64,t[x+96>>2]=64,t[x+16>>2]=0,t[x+20>>2]=0,t[x+8>>2]=0,t[x+12>>2]=0,t[x+48>>2]=0,t[x+52>>2]=2,u=x- -64|0,t[u>>2]=0,t[u+4>>2]=0,t[x+72>>2]=0,t[x+76>>2]=0,t[x+80>>2]=0,t[x+84>>2]=0,t[x+88>>2]=0,t[x+108>>2]=0,x|0}function $4(x,u,m){var y=0,S=0,M=0;y=t[m+16>>2];e:{if(!y){if(W5(m))break e;y=t[m+16>>2]}if(M=t[m+20>>2],y-M>>>0>>0)return Zt[t[m+36>>2]](m,x,u)|0;t:{if(t[m+80>>2]<0){y=0;break t}for(S=u;;){if(y=S,!y){y=0;break t}if(S=y-1|0,xe[S+x|0]==10)break}if(S=Zt[t[m+36>>2]](m,x,y)|0,S>>>0>>0)break e;x=x+y|0,u=u-y|0,M=t[m+20>>2]}Yr(M,x,u),t[m+20>>2]=t[m+20>>2]+u,S=u+y|0}return S}function Li(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;if(lr(t[x+52>>2],65497,2),(Go(u,t[x+52>>2],2,m)|0)==2){x=t[u+32>>2],t[u+36>>2]=x,y=t[u+48>>2];e:{if(y){for(;;){if(y=Zt[t[u+20>>2]](x,y,t[u>>2])|0,(y|0)==-1){t[u+68>>2]=t[u+68>>2]|8,vt(m,4,27581,0),x=0;break e}if(x=y+t[u+36>>2]|0,t[u+36>>2]=x,y=t[u+48>>2]-y|0,t[u+48>>2]=y,!y)break}x=t[u+32>>2]}t[u+36>>2]=x,x=1}}else x=0;return x|0}function Lc(x){var u=0,m=0,y=0;m=t[x+44>>2];e:{t:{if(u=t[x+36>>2],u){if(y=1,m>>>0<=ln[x+48>>2])break e;if(t[x+40>>2])break t}u=Jo(m),t[x+36>>2]=u,m=t[x+44>>2];n:{if(u){u=m;break n}if(u=0,y=u,m)break e}return t[x+40>>2]=1,t[x+48>>2]=u,1}if(Gt(u),m=Jo(t[x+44>>2]),t[x+36>>2]=m,!m)return t[x+48>>2]=0,t[x+40>>2]=0,t[x+44>>2]=0,0;t[x+40>>2]=1,t[x+48>>2]=t[x+44>>2],y=1}return y}function V5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;if(S=(t[x+64>>2]<<2)+16|0,y=oi(1,S),!y)return vt(m,1,17979,0),0;if(lr(y,S,4),lr(y+4|0,1718909296,4),lr(y+8|0,t[x+56>>2],4),lr(y+12|0,t[x+60>>2],4),t[x+64>>2])for(O=y+16|0;lr(O,t[t[x+68>>2]+(M<<2)>>2],4),M=M+1|0,M>>>0>2];);return x=(Go(u,y,S,m)|0)==(S|0),x||vt(m,1,9187,0),Gt(y),x|0}function Xh(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;t[x+160>>2]=u,y=t[x+72>>2];e:{if(!y||(M=t[y+24>>2],!M)||(S=t[x+12>>2],!S|!t[S+5584>>2]))break e;if(S=t[y+16>>2],!S)return 1;for(y=0;;){if(ln[(t[t[x+12>>2]+5584>>2]+De(y,1080)|0)+4>>2]<=u>>>0)return vt(m,1,19444,0),0;if(t[(De(y,52)+M|0)+40>>2]=u,O=1,y=y+1|0,(S|0)==(y|0))break}}return O|0}function U5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;M=Nt-16|0,Nt=M,y=t[x+52>>2],S=De(t[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+420>>2]+1|0,ln[t[x+72>>2]+16>>2]<257?7:9)+4|0;e:{if(S>>>0>ln[x+56>>2]){if(y=Wi(y,S),!y){Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7711,0),x=0;break e}t[x+56>>2]=S,t[x+52>>2]=y}Vp(x,y,M+12|0),x=(Go(u,t[x+52>>2],S,m)|0)==(S|0)}return Nt=M+16|0,x|0}function Nc(){var x=0,u=0;u=tn[23740];e:{if(!u){t[12458]=28,x=-1;break e}t:{n:{if((u|0)>-2)break n;x=200809;r:switch((u&255)-1|0){case 1:x=131072;break e;case 2:x=32768;break e;case 3:x=65536;break e;case 4:case 10:x=2147483647;break e;case 5:case 6:x=1;break e;case 7:case 8:x=lp()>>>16|0;break e;case 0:break t;case 9:break r;default:break n}x=0;break e}x=u}}return x}function ms(x){var u=0,m=0;if(u=t[x+76>>2],!((u|0)>=0&(!u|t[12642]!=(u&-1073741825)))){e:{if(t[x+80>>2]==10||(u=t[x+20>>2],(u|0)==t[x+16>>2]))break e;t[x+20>>2]=u+1,dt[u|0]=10;return}Pr(x);return}u=x+76|0,m=t[u>>2],t[u>>2]=m||1073741823;e:{t:{if(t[x+80>>2]==10||(m=t[x+20>>2],(m|0)==t[x+16>>2]))break t;t[x+20>>2]=m+1,dt[m|0]=10;break e}Pr(x)}t[u>>2]=0}function b1(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;if(S=Qn[u+26>>1],u=Qn[u+24>>1],t[x>>2]=u,m){M=m&3;e:{if(!M){y=m;break e}for(y=m;y=y-1|0,S=S+1>>>1|0,u=u+1>>>1|0,O=O+1|0,(M|0)!=(O|0););}if(m>>>0>=4)for(;S=(((S+1>>>1|0)+1>>>1|0)+1>>>1|0)+1>>>1|0,u=(((u+1>>>1|0)+1>>>1|0)+1>>>1|0)+1>>>1|0,y=y-4|0,!!y;);t[x>>2]=u}t[x+4>>2]=S}function Mr(x,u,m,y,S){if(x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,Ja(x,t[u+8>>2],S)){t[u+28>>2]==1|t[u+4>>2]!=(m|0)||(t[u+28>>2]=y);return}e:{if(!Ja(x,t[u>>2],S))break e;if(!(t[u+16>>2]!=(m|0)&t[u+20>>2]!=(m|0))){if((y|0)!=1)break e;t[u+32>>2]=1;return}t[u+20>>2]=m,t[u+32>>2]=y,t[u+40>>2]=t[u+40>>2]+1,t[u+36>>2]!=1|t[u+24>>2]!=2||(dt[u+54|0]=1),t[u+44>>2]=4}}function E2(x,u){x=x|0,u=u|0;var m=0,y=0;if(m=t[x+32>>2],u=t[x+28>>2],m>>>0>u+7>>>0)for(;Zt[t[x+36>>2]](t[x+24>>2]+(u<<2)|0,t[x>>2],t[x+16>>2],!t[x+12>>2],t[x+20>>2],8),y=u+15|0,u=u+8|0,m=t[x+32>>2],y>>>0>>0;);u>>>0>>0&&Zt[t[x+36>>2]](t[x+24>>2]+(u<<2)|0,t[x>>2],t[x+16>>2],!t[x+12>>2],t[x+20>>2],m-u|0),Gt(t[x>>2]),Gt(x)}function lr(x,u,m){var y=0,S=0;y=Nt-16|0,t[y+12>>2]=u;e:{if(!m)break e;if(S=m&3,u=(y+12|0)+m|0,m>>>0>=4)for(y=m&-4,m=0;dt[x|0]=xe[u-1|0],dt[x+1|0]=xe[u-2|0],dt[x+2|0]=xe[u-3|0],u=u-4|0,dt[x+3|0]=xe[u|0],x=x+4|0,m=m+4|0,(y|0)!=(m|0););if(!S)break e;for(m=0;u=u-1|0,dt[x|0]=xe[u|0],x=x+1|0,m=m+1|0,(S|0)!=(m|0););}}function f(x,u){var m=0,y=0,S=0,M=0,O=0,A=0;if(x){if(m=t[x+4>>2],m&&(Gt(m),t[x+4>>2]=0),u)for(m=x;;){if(y=t[m+200>>2],y){if(S=0,M=t[m+196>>2],M){for(;O=t[y+12>>2],O&&(Gt(O),t[y+12>>2]=0,M=t[m+196>>2]),y=y+16|0,S=S+1|0,S>>>0>>0;);y=t[m+200>>2]}Gt(y),t[m+200>>2]=0}if(m=m+240|0,A=A+1|0,(A|0)==(u|0))break}Gt(x)}}function w(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;return S=t[x+84>>2],M=t[S+4>>2],O=t[x+28>>2],y=t[x+20>>2]-O|0,y=y>>>0>M>>>0?M:y,y&&(Yr(t[S>>2],O,y),t[S>>2]=y+t[S>>2],M=t[S+4>>2]-y|0,t[S+4>>2]=M),y=t[S>>2],M=m>>>0>M>>>0?M:m,M&&(Yr(y,u,M),y=M+t[S>>2]|0,t[S>>2]=y,t[S+4>>2]=t[S+4>>2]-M),dt[y|0]=0,u=t[x+44>>2],t[x+28>>2]=u,t[x+20>>2]=u,m|0}function N(x,u,m,y){dt[x+53|0]=1;e:{if(t[x+4>>2]!=(m|0))break e;dt[x+52|0]=1,m=t[x+16>>2];t:{if(!m){if(t[x+36>>2]=1,t[x+24>>2]=y,t[x+16>>2]=u,(y|0)!=1)break e;if(t[x+48>>2]==1)break t;break e}if((u|0)==(m|0)){if(m=t[x+24>>2],(m|0)==2&&(t[x+24>>2]=y,m=y),t[x+48>>2]!=1)break e;if((m|0)==1)break t;break e}t[x+36>>2]=t[x+36>>2]+1}dt[x+54|0]=1}}function k(x){t[x+28>>2]=35184,t[x+100>>2]=35184,t[x+96>>2]=35184,t[x+92>>2]=35184,t[x+88>>2]=35184,t[x+84>>2]=35184,t[x+80>>2]=35184,t[x+76>>2]=35184,t[x+72>>2]=35184,t[x+68>>2]=35184,t[x- -64>>2]=35184,t[x+60>>2]=35184,t[x+56>>2]=35184,t[x+52>>2]=35184,t[x+48>>2]=35184,t[x+44>>2]=35184,t[x+40>>2]=35184,t[x+36>>2]=35184,t[x+32>>2]=35184}function E(x,u,m){var y=0,S=0,M=0,O=0,A=0;if((m|0)>0)for(y=t[x+16>>2];;){O=m,m=m-1|0,A=u>>>m&1;e:{if(y||(M=t[x+12>>2],y=M<<8&65280,t[x+12>>2]=y,y=(y|0)==65280?7:8,t[x+16>>2]=y,S=t[x+8>>2],S>>>0>=ln[x+4>>2]))break e;t[x+8>>2]=S+1,dt[S|0]=M,y=t[x+16>>2]}if(y=y-1|0,t[x+16>>2]=y,t[x+12>>2]=t[x+12>>2]|A<>>0>1))break}}function W(x,u){var m=0,y=0,S=0,M=0,O=0;if((u|0)<=0)return 0;for(m=t[x+12>>2],y=t[x+16>>2];;){O=u,u=u-1|0;e:{if(y||(m=m<<8&65280,t[x+12>>2]=m,y=(m|0)==65280?7:8,t[x+16>>2]=y,S=t[x+8>>2],S>>>0>=ln[x+4>>2]))break e;t[x+8>>2]=S+1,m=xe[S|0]|m,t[x+12>>2]=m}if(y=y-1|0,t[x+16>>2]=y,M=(m>>>y&1)<>>0>1))break}return M}function J(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;S=Nt+-64|0,Nt=S,y=1;e:{if(Ja(x,u,0)||(y=0,!u)||(u=T2(u,48532),y=0,!u))break e;y=S+8|0,pi(y|4,0,52),t[S+56>>2]=1,t[S+20>>2]=-1,t[S+16>>2]=x,t[S+8>>2]=u,Zt[t[t[u>>2]+28>>2]](u,y,t[m>>2],1),x=t[S+32>>2],(x|0)==1&&(t[m>>2]=t[S+24>>2]),y=(x|0)==1}return Nt=S- -64|0,y|0}function ie(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0;M=Nt-16|0,Nt=M,S=t[x+24>>2],(S|0)!=255&&(t[M>>2]=S,vt(y,2,4608,M));e:{t:{if(t[x+20>>2]==(m|0)){if(m)break t;S=1;break e}S=0,vt(y,1,26033,0);break e}for(m=0;S=1,ue(u,(t[x+72>>2]+De(m,12)|0)+8|0,1),u=u+1|0,m=m+1|0,m>>>0>2];);}return Nt=M+16|0,S|0}function ue(x,u,m){var y=0,S=0;t[u>>2]=0;e:{if(!m)break e;if(y=m&3,u=u+m|0,m>>>0>=4)for(S=m&-4,m=0;dt[u-1|0]=xe[x|0],dt[u-2|0]=xe[x+1|0],dt[u-3|0]=xe[x+2|0],u=u-4|0,dt[u|0]=xe[x+3|0],x=x+4|0,m=m+4|0,(S|0)!=(m|0););if(!y)break e;for(m=0;u=u-1|0,dt[u|0]=xe[x|0],x=x+1|0,m=m+1|0,(y|0)!=(m|0););}}function ye(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0;S=Nt-16|0,Nt=S;e:{if(!m){vt(y,1,6659,0),x=0;break e}if(ue(u,S+12|0,1),M=m-1|0,x=1,!M)break e;for(x=0,m=0;u=u+1|0,ue(u,S+8|0,1),O=t[S+8>>2],m=O<<24>>31&(O&127|m)<<7,x=x+1|0,(M|0)!=(x|0););if(x=1,!m)break e;vt(y,1,6659,0),x=0}return Nt=S+16|0,x|0}function Ee(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;y=Nt-16|0,Nt=y,M=t[u+60>>2],S=t[u+56>>2],lr(y+8|0,S-t[x+80>>2]|0,4),lr(y+12|0,1785737827,4);e:{t:{if(!(Zt[t[u+44>>2]](u,t[x+80>>2],t[x+84>>2],m)|0)||(Go(u,y+8|0,8,m)|0)!=8)break t;if(x=1,Zt[t[u+44>>2]](u,S,M,m)|0)break e}vt(m,1,21390,0),x=0}return Nt=y+16|0,x|0}function be(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;if(y=t[x+52>>2],O=t[x+100>>2],M=Nr(O),S=M+6|0,S>>>0>ln[x+56>>2]){if(y=Wi(y,S),!y)return Gt(t[x+52>>2]),t[x+52>>2]=0,t[x+56>>2]=0,vt(m,1,7006,0),0;t[x+56>>2]=S,t[x+52>>2]=y}return lr(y,65380,2),lr(y+2|0,M+4|0,2),lr(y+4|0,1,2),Yr(y+6|0,O,M),(Go(u,t[x+52>>2],S,m)|0)==(S|0)|0}function Be(x,u,m){var y=0;if(!t[x+12>>2]){Zt[u|0](m,t[x+36>>2]);return}if(y=si(8),y){if(t[y+4>>2]=m,t[y>>2]=u,u=si(8),!u){Gt(y);return}t[u>>2]=y,t[x+40>>2]=De(t[x+4>>2],100),t[u+4>>2]=t[x+20>>2],t[x+20>>2]=u,t[x+24>>2]=t[x+24>>2]+1,u=t[x+28>>2],u&&(t[t[u>>2]+8>>2]=0,t[x+28>>2]=t[u+4>>2],t[x+32>>2]=t[x+32>>2]-1,Gt(u))}}function rt(x,u,m,y){var S=0,M=0,O=Ye(0),A=0,G=Ye(0),H=0,Y=Ye(0);if(y)for(;S=M<<2,A=S+u|0,G=Ue[A>>2],H=x+S|0,O=Ue[H>>2],S=m+S|0,Y=Ue[S>>2],Ue[H>>2]=Ye(Y*Ye(1.4019999504089355))+O,Ue[A>>2]=Ye(O+Ye(G*Ye(-.3441300094127655)))+Ye(Y*Ye(-.714139997959137)),Ue[S>>2]=O+Ye(G*Ye(1.7719999551773071)),M=M+1|0,(M|0)!=(y|0););}function pt(x){for(var u=0,m=0,y=0,S=0;u=x,x=u+1|0,m=dt[u|0],!!((m|0)==32|m-9>>>0<5););e:{t:{n:switch(m=dt[u|0],m-43|0){case 0:break t;case 2:break n;default:break e}S=1}m=dt[x|0],u=x}if(m-48>>>0<10)for(;y=(De(y,10)-dt[u|0]|0)+48|0,x=dt[u+1|0],u=u+1|0,x-48>>>0<10;);return S?y:0-y|0}function Ct(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0,A=0,G=0,H=0;M=t[x+40>>2],O=t[x+20>>2],A=t[u+56>>2],G=t[u+60>>2],y=t[x+28>>2],S=t[x+24>>2]+6|0,y=S>>>0<6?y+1|0:y;e:{if(!(Zt[t[u+44>>2]](u,S,y,m)|0)||(y=t[x+32>>2],x=De(O?5:6,M),(Go(u,y,x,m)|0)!=(x|0)))break e;H=(Zt[t[u+44>>2]](u,A,G,m)|0)!=0}return H|0}function Lt(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=Ye(0),M=0,O=0;if(y=Nt-16|0,Nt=y,m)for(;;){dt[y+15|0]=xe[x|0],dt[y+14|0]=xe[x+1|0],dt[y+13|0]=xe[x+2|0],dt[y+12|0]=xe[x+3|0],S=Ue[y+12>>2];e:{if(Ye(Rr(S))>2]=M,u=u+4|0,x=x+4|0,O=O+1|0,(O|0)==(m|0))break}Nt=y+16|0}function Wt(x){x=x|0;var u=0,m=0,y=0,S=0;if(u=t[x+24>>2],u){if(m=t[x+28>>2],m>>>0>=52){for(S=(m>>>0)/52|0;m=t[u>>2],m&&(Gt(m-1|0),t[u>>2]=0),m=t[u+4>>2],m&&(Gt(m),t[u+4>>2]=0),m=t[u+8>>2],m&&(Gt(m),t[u+8>>2]=0),u=u+52|0,y=y+1|0,(S|0)!=(y|0););u=t[x+24>>2]}Gt(u),t[x+24>>2]=0}}function Xt(x){x=x|0;var u=0,m=0,y=0,S=0;if(u=t[x+24>>2],u){if(m=t[x+28>>2],m>>>0>=64){for(S=m>>>6|0;m=t[u>>2],m&&(Gt(m),t[u>>2]=0),m=t[u+4>>2],m&&(Gt(m),t[u+4>>2]=0),Gt(t[u+60>>2]),t[u+60>>2]=0,u=u- -64|0,y=y+1|0,(S|0)!=(y|0););u=t[x+24>>2]}Gt(u),t[x+24>>2]=0}}function nn(x,u){x=x|0,u=u|0;var m=0;return m=oi(1,22),m&&(lr(m,22,4),lr(m+4|0,1768449138,4),lr(m+8|0,t[x+16>>2],4),lr(m+12|0,t[x+12>>2],4),lr(m+16|0,t[x+20>>2],2),lr(m+18|0,t[x+24>>2],1),lr(m+19|0,t[x+28>>2],1),lr(m+20|0,t[x+32>>2],1),lr(m+21|0,t[x+36>>2],1),t[u>>2]=22),m|0}function cn(x,u){x=x|0,u=u|0;var m=0,y=0;if(m=t[x+32>>2],u=t[x+28>>2],y=u+8|0,m>>>0>=y>>>0)for(;Ot(x,t[x+24>>2]+(u<<2)|0,t[x+20>>2],8),m=t[x+32>>2],u=y,y=u+8|0,m>>>0>=y>>>0;);u>>>0>>0&&Ot(x,t[x+24>>2]+(u<<2)|0,t[x+20>>2],m-u|0),Gt(t[x>>2]),Gt(x)}function yn(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0;S=Nt-16|0,Nt=S;e:{if(t[x+100>>2]){vt(y,1,21863,0),x=0;break e}if((m|0)!=4){vt(y,1,9914,0),x=0;break e}if(ue(u,S+12|0,4),t[S+12>>2]!=218793738){vt(y,1,8490,0),x=0;break e}t[x+100>>2]=t[x+100>>2]|1,x=1}return Nt=S+16|0,x|0}function vn(x,u,m){var y=0,S=0;e:{y=t[x>>2],S=t[x+4>>2];t:{if((y|0)!=(S|0)){S=t[x+8>>2];break t}if(y=S+10|0,t[x+4>>2]=y,S=Wi(t[x+8>>2],y<<2),!S)break e;t[x+8>>2]=S,y=t[x>>2]}return t[(y<<2)+S>>2]=u,t[x>>2]=y+1,1}return Gt(t[x+8>>2]),t[x>>2]=0,t[x+4>>2]=0,vt(m,1,10046,0),0}function Ln(x){var u=0,m=0;if(u=oi(1,72),u){if(t[u+64>>2]=1048576,m=si(1048576),t[u+32>>2]=m,!m)return Gt(u),0;t[u+36>>2]=m,t[u+28>>2]=98,t[u+24>>2]=99,t[u+20>>2]=100,t[u+16>>2]=101,t[u+44>>2]=x?102:103,t[u+40>>2]=x?104:105,t[u+68>>2]=t[u+68>>2]|(x?2:1)}else u=0;return u}function jn(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0;if(y=t[x+20>>2]+8|0,m=oi(1,y),m){if(lr(m,y,4),lr(m+4|0,1651532643,4),t[x+20>>2])for(S=m+8|0;lr(S,t[(t[x+72>>2]+De(M,12)|0)+8>>2],1),S=S+1|0,M=M+1|0,M>>>0>2];);t[u>>2]=y}return m|0}function ir(x,u){var m=0,y=0,S=0;m=t[x+16>>2];e:{if(m||(S=t[x+12>>2],m=S<<8&65280,t[x+12>>2]=m,m=(m|0)==65280?7:8,t[x+16>>2]=m,y=t[x+8>>2],y>>>0>=ln[x+4>>2]))break e;t[x+8>>2]=y+1,dt[y|0]=S,m=t[x+16>>2]}m=m-1|0,t[x+16>>2]=m,t[x+12>>2]=t[x+12>>2]|u<>>0<=1){S=0,vt(y,1,7128,0);break e}if(ue(u,x+12|0,1),ue(u+1|0,x+8|0,1),u=t[x+8>>2],!((m-2>>>0)%(((u>>>5&2)+(u>>>4&3)|0)+2>>>0)|0))break e;S=0,vt(y,1,7128,0)}return Nt=x+16|0,S|0}function xr(x,u,m){var y=0,S=0,M=0,O=0;if(u)for(;m=m-1|0,S=x,x=c0(x,u,10,0),y=Gi,M=m,O=S-N0(x,y,10,0)|48,dt[M|0]=O,S=u>>>0>9,u=y,!!S;);if(x)for(;m=m-1|0,u=(x>>>0)/10|0,dt[m|0]=x-De(u,10)|48,y=x>>>0>9,x=u,!!y;);return m}function Pr(x){var u=0,m=0,y=0;m=Nt-16|0,Nt=m,dt[m+15|0]=10,u=t[x+16>>2];e:{if(!u){if(W5(x))break e;u=t[x+16>>2]}if(y=u,u=t[x+20>>2],!((y|0)==(u|0)|t[x+80>>2]==10)){t[x+20>>2]=u+1,dt[u|0]=10;break e}if((Zt[t[x+36>>2]](x,m+15|0,1)|0)!=1)break e}Nt=m+16|0}function Br(x){x=x|0;var u=0,m=0,y=0;if(u=Nr(3215),u>>>0<2147483632){e:{t:{if(u>>>0>=11){m=(u|15)+1|0,y=Ri(m),t[x+8>>2]=m|-2147483648,t[x>>2]=y,t[x+4>>2]=u,m=u+y|0,x=y;break t}if(dt[x+11|0]=u,m=x+u|0,!u)break e}N1(x,3215,u)}dt[m|0]=0;return}_a(1987),Qe()}function Nr(x){var u=0,m=0,y=0;u=x;e:{if(u&3)for(;;){if(!xe[u|0])break e;if(u=u+1|0,!(u&3))break}for(;m=u,u=u+4|0,y=t[m>>2],!((y^-1)&y-16843009&-2139062144););for(;u=m,m=u+1|0,!!xe[u|0];);}return u-x|0}function Wr(x,u,m,y){var S=0,M=0,O=0;t[x+28>>2]=m,t[x+24>>2]=u,S=oi(1,848),t[t[x+20>>2]>>2]=S;e:{if(!S||(S=oi(t[u+16>>2],76),M=t[t[x+20>>2]>>2],t[M+20>>2]=S,!S))break e;t[M+16>>2]=t[u+16>>2],u=t[m+84>>2],t[x+44>>2]=y,t[x>>2]=u,O=1}return O}function ti(x,u){var m=0,y=0,S=0;if(Ae(+x),y=Re(1)|0,S=Re(0)|0,m=y>>>20&2047,(m|0)!=2047){if(!m)return x==0?m=0:(x=ti(x*18446744073709552e3,u),m=t[u>>2]+-64|0),t[u>>2]=m,x;t[u>>2]=m-1022,bt(0,S|0),bt(1,y&-2146435073|1071644672),x=+Qt()}return x}function ei(){var x=0,u=0;U2(29104,1160,29080,13,29082,14),x=Ri(4),t[x>>2]=0,u=Ri(4),t[u>>2]=0,or(29104,1128,48944,29085,15,x|0,48944,29089,16,u|0),x=Ri(4),t[x>>2]=4,u=Ri(4),t[u>>2]=4,or(29104,1099,48944,29085,15,x|0,48944,29089,16,u|0),On(29104)}function hi(){var x=0,u=0;U2(29120,2065,29080,17,29082,18),x=Ri(4),t[x>>2]=0,u=Ri(4),t[u>>2]=0,or(29120,1954,48944,29085,19,x|0,48944,29089,20,u|0),x=Ri(4),t[x>>2]=4,u=Ri(4),t[u>>2]=4,or(29120,1179,48944,29085,19,x|0,48944,29089,20,u|0),On(29120)}function ii(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;dt[y+15|0]=xe[x|0],dt[y+14|0]=xe[x+1|0],dt[y+13|0]=xe[x+2|0],dt[y+12|0]=xe[x+3|0],Ue[u>>2]=Ue[y+12>>2],u=u+4|0,x=x+4|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function Ci(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0,O=0;if(y=Nt-16|0,Nt=y,m)for(;;){Vf(x,y+8|0),S=mr[y+8>>3];e:{if(Rr(S)<2147483648){M=~~S;break e}M=-2147483648}if(t[u>>2]=M,u=u+4|0,x=x+8|0,O=O+1|0,(O|0)==(m|0))break}Nt=y+16|0}function di(x){var u=0,m=0,y=0;if(x){if(u=t[x+24>>2],u){if(m=t[x+16>>2],m){for(u=0;y=t[(t[x+24>>2]+De(u,52)|0)+44>>2],y&&(Gt(y),m=t[x+16>>2]),u=u+1|0,m>>>0>u>>>0;);u=t[x+24>>2]}Gt(u)}u=t[x+28>>2],u&&Gt(u),Gt(x)}}function Vi(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0,M=0,O=0;S=Nt-16|0,Nt=S,M=u,u=t[x+4>>2],M=M+(u>>1)|0,x=t[x>>2],x=u&1?t[t[M>>2]+x>>2]:x,O=t[y+4>>2],u=t[y>>2],t[S>>2]=u,t[S+4>>2]=O,t[S+8>>2]=u,t[S+12>>2]=O,Zt[x|0](M,m,S),Nt=S+16|0}function Ni(x,u,m){var y=0,S=0,M=0;if(!m)return 0;y=xe[x|0];e:{if(!y)break e;for(;;){t:{if(S=xe[u|0],!S||(m=m-1|0,!m|(y|0)!=(S|0)))break t;if(u=u+1|0,y=xe[x+1|0],x=x+1|0,y)continue;break e}break}M=y}return(M&255)-xe[u|0]|0}function $i(){var x=0;return x=Ri(88),t[x>>2]=0,t[x+4>>2]=0,t[x+44>>2]=0,t[x+48>>2]=0,t[x+84>>2]=1,t[x+16>>2]=0,t[x+20>>2]=0,t[x+8>>2]=0,t[x+12>>2]=0,t[x+52>>2]=0,t[x+56>>2]=0,t[x+60>>2]=0,t[x+64>>2]=0,t[x+68>>2]=0,t[x+72>>2]=0,x|0}function o0(x,u,m){x=x|0,u=u|0,m=m|0;e:{if(u=t[t[t[x+156>>2]+5584>>2]+4>>2],u-33>>>0<4294967264||(u=1<>>0>ln[x+92>>2]|u>>>0>ln[x+96>>2]))break e;return!t[x+8>>2]&t[x+192>>2]!=0&t[x+196>>2]!=0}return vt(m,1,5949,0),0}function $0(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(m)for(;y=t[x>>2],y=y<<24|(y&65280)<<8|(y>>>8&65280|y>>>24),dt[u|0]=y,dt[u+1|0]=y>>>8,dt[u+2|0]=y>>>16,dt[u+3|0]=y>>>24,u=u+4|0,x=x+4|0,S=S+1|0,(S|0)!=(m|0););}function so(x){x=x|0;var u=0;x&&(u=t[x+100>>2],u&&(t[x+104>>2]=u,Gt(u)),u=t[x+56>>2],u&&(t[x+60>>2]=u,Gt(u)),u=t[x+40>>2],u&&(t[x+44>>2]=u,Gt(u)),u=t[x+12>>2],u&&(t[x+16>>2]=u,Gt(u)),u=t[x>>2],u&&(t[x+4>>2]=u,Gt(u)),Gt(x))}function Fo(x){var u=0,m=0,y=0;if(dt[t[x>>2]]-48>>>0>=10)return 0;for(;y=t[x>>2],m=-1,u>>>0<=214748364&&(m=dt[y|0]-48|0,u=De(u,10),m=(m|0)>(u^2147483647)?-1:m+u|0),t[x>>2]=y+1,u=m,dt[y+1|0]-48>>>0<10;);return u}function I0(x,u,m,y){var S=0,M=0,O=0,A=0;return M=u^y,O=M>>31,S=u>>31,x=x^S,A=x-S|0,S=(u^S)-((x>>>0>>0)+S|0)|0,x=y>>31,u=m^x,M=M>>31,x=c0(A,S,u-x|0,(x^y)-((x>>>0>u>>>0)+x|0)|0)^M,u=x-M|0,Gi=(O^Gi)-((x>>>0>>0)+O|0)|0,u}function K0(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;return y=Nt-16|0,Nt=y,S=t[x>>2],M=y+8|0,x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(S=t[S+t[u>>2]>>2]),Zt[S|0](M,u,m),x=Ri(8),u=t[y+12>>2],t[x>>2]=t[y+8>>2],t[x+4>>2]=u,Nt=y+16|0,x|0}function Rs(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;y=Nt-16|0,Nt=y,S=u,u=t[x+4>>2],S=S+(u>>1)|0,x=t[x>>2],x=u&1?t[t[S>>2]+x>>2]:x,M=t[m+4>>2],u=t[m>>2],t[y>>2]=u,t[y+4>>2]=M,t[y+8>>2]=u,t[y+12>>2]=M,Zt[x|0](S,y),Nt=y+16|0}function na(x){var u=0,m=0,y=0;u=t[x+12>>2];e:{if((u&255)==255){if(u=u<<8&65280,t[x+12>>2]=u,t[x+16>>2]=(u|0)==65280?7:8,m=t[x+8>>2],y=0,m>>>0>=ln[x+4>>2])break e;t[x+8>>2]=m+1,t[x+12>>2]=u|xe[m|0]}t[x+16>>2]=0,y=1}return y}function qa(x,u,m,y,S){return m>>>0<=11?(vt(S,1,6604,0),0):(lr(u,65424,2),lr(u+2|0,10,2),lr(u+4|0,t[x+204>>2],2),lr(u+10|0,t[x+12>>2],1),lr(u+11|0,t[(t[x+156>>2]+De(t[x+204>>2],5644)|0)+5592>>2],1),t[y>>2]=12,1)}function As(x){var u=0,m=0,y=0,S=0;if(x){if(u=t[x+20>>2],m=t[x+16>>2],De(u,m))for(;S=t[t[x+24>>2]+(y<<2)>>2],S&&(Gt(S),m=t[x+16>>2],u=t[x+20>>2]),y=y+1|0,y>>>0>>0;);Gt(t[x+24>>2]),Gt(x)}}function N0(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0;return S=m>>>16|0,M=x>>>16|0,H=De(S,M),O=m&65535,A=x&65535,G=De(O,A),M=(G>>>16|0)+De(M,O)|0,S=(M&65535)+De(S,A)|0,Gi=(De(u,m)+H|0)+De(x,y)+(M>>>16)+(S>>>16)|0,G&65535|S<<16}function Fa(x,u,m,y){var S=0,M=0,O=0,A=0,G=0,H=0,Y=0;if(y)for(;S=M<<2,O=S+x|0,A=m+S|0,G=t[A>>2],H=u+S|0,Y=t[H>>2],S=t[O>>2]-(G+Y>>2)|0,t[O>>2]=S+G,t[H>>2]=S,t[A>>2]=S+Y,M=M+1|0,(M|0)!=(y|0););}function Nf(x,u){if(x=x|0,u=u|0,u=t[x+28>>2],u>>>0>2])for(;Zt[t[x+36>>2]](t[x+24>>2]+(De(t[x+20>>2],u)<<2)|0,t[x>>2],t[x+16>>2],!t[x+12>>2]),u=u+1|0,u>>>0>2];);Gt(t[x>>2]),Gt(x)}function jl(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0;return t[x+48>>2]=0,t[x+36>>2]=t[x+32>>2],S=Zt[t[x+28>>2]](u,m,t[x>>2])|0,y=t[x+68>>2],S?(t[x+56>>2]=u,t[x+60>>2]=m,t[x+68>>2]=y&-5,1):(t[x+68>>2]=y|4,0)}function gk(x,u){x=x|0,u=u|0;var m=0,y=0,S=0;return m=Nt-16|0,Nt=m,y=t[x>>2],S=m+8|0,x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(y=t[y+t[u>>2]>>2]),Zt[y|0](S,u),x=Ri(8),u=t[m+12>>2],t[x>>2]=t[m+8>>2],t[x+4>>2]=u,Nt=m+16|0,x|0}function y_(x){x=x|0;var u=0,m=0,y=0,S=0,M=0;return u=Nt-16|0,Nt=u,Zt[x|0](u),m=xe[u+11|0],S=m<<24>>24,x=(S|0)<0,m=x?t[u+4>>2]:m,y=S2(m+4|0),t[y>>2]=m,M=t[u>>2],Yr(y+4|0,x?M:u,m),(S|0)<0&&Gt(M),Nt=u+16|0,y|0}function Va(x,u,m){var y=0;if(y=t[x+16>>2],!y){t[x+36>>2]=1,t[x+24>>2]=m,t[x+16>>2]=u;return}e:{if((u|0)==(y|0)){if(t[x+24>>2]!=2)break e;t[x+24>>2]=m;return}dt[x+54|0]=1,t[x+24>>2]=2,t[x+36>>2]=t[x+36>>2]+1}}function B5(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;return y=Nt-16|0,Nt=y,S=t[x>>2],M=y+8|0,x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(S=t[S+t[u>>2]>>2]),Zt[S|0](M,u,m),Nh(t[y+8>>2]),x=t[y+8>>2],Lh(x|0),Nt=y+16|0,x|0}function Xa(x,u,m,y,S){var M=0;if(M=Nt-256|0,Nt=M,!(S&73728|(m|0)<=(y|0))){if(y=m-y|0,m=y>>>0<256,pi(M,u&255,m?y:256),!m)for(;Hs(x,M,256),y=y-256|0,y>>>0>255;);Hs(x,M,y)}Nt=M+256|0}function ku(x,u,m){x=x|0,u=u|0,m=m|0;var y=Ye(0),S=0,M=0;if(m)for(;;){y=Ue[x>>2];e:{if(y=Ye(0)){S=~~y>>>0;break e}S=0}if(lr(u,S,2),u=u+2|0,x=x+4|0,M=M+1|0,(M|0)==(m|0))break}}function pk(x,u,m){x=x|0,u=u|0,m=m|0;var y=Ye(0),S=0,M=0;if(m)for(;;){y=Ue[x>>2];e:{if(y=Ye(0)){S=~~y>>>0;break e}S=0}if(lr(u,S,4),u=u+4|0,x=x+4|0,M=M+1|0,(M|0)==(m|0))break}}function mk(x,u){x=x|0,u=u|0;var m=0;return m=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(m=t[m+t[u>>2]>>2]),x=Zt[m|0](u)|0,u=Ri(8),m=Qn[x+4>>1]|Qn[x+6>>1]<<16,t[u>>2]=Qn[x>>1]|Qn[x+2>>1]<<16,t[u+4>>2]=m,u|0}function _a(x){var u=0,m=0,y=0,S=0,M=0;u=d(8),t[u>>2]=49232,t[u>>2]=49344,m=Nr(x),y=Ri(m+13|0),t[y+8>>2]=0,t[y+4>>2]=m,t[y>>2]=m,S=u,M=Yr(y+12|0,x,m+1|0),t[S+4>>2]=M,t[u>>2]=49392,Fu(u|0,49424,3),Qe()}function G5(x){var u=0;e:{if(u=x,x=Nr(x),(((os(u,1,x,49608)|0)!=(x|0)?-1:0)|0)<0)break e;t:{if(t[12422]==10||(x=t[12407],(x|0)==t[12406]))break t;t[12407]=x+1,dt[x|0]=10;break e}Pr(49608)}}function vk(x,u){x=x|0,u=u|0;var m=0,y=0,S=0;e:{if(t[x+208>>2]||(A4(t[x+212>>2]),t[x+212>>2]=0,(u|0)>=0&&(u=vu(u),t[x+212>>2]=u,m=1,u)))break e;y=x,S=vu(0),t[y+212>>2]=S,m=0}return m|0}function kk(x,u){x=x|0,u=u|0;var m=0,y=0,S=0;return m=Nt-16|0,Nt=m,y=t[x>>2],S=m+8|0,x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(y=t[y+t[u>>2]>>2]),Zt[y|0](S,u),Nh(t[m+8>>2]),x=t[m+8>>2],Lh(x|0),Nt=m+16|0,x|0}function yk(x,u,m){var y=0;return y=Nt-32|0,Nt=y,Gh(x,u,m,y+20|0,y+16|0,y+12|0,y+8|0,y+4|0,y,y+24|0,y+28|0,0),Nt=y+32|0,De(t[y+28>>2],De(t[x+16>>2],De(t[(t[u+76>>2]+De(m,5644)|0)+8>>2],t[y+24>>2])))}function w_(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0;return S=Nt-16|0,Nt=S,x=d4(t[x+60>>2],u|0,m|0,y&255,S+8|0)|0,x?(t[12458]=x,x=-1):x=0,Nt=S+16|0,Gi=x?-1:t[S+12>>2],(x?-1:t[S+8>>2])|0}function W5(x){var u=0;return u=t[x+72>>2],t[x+72>>2]=u-1|u,u=t[x>>2],u&8?(t[x>>2]=u|32,-1):(t[x+4>>2]=0,t[x+8>>2]=0,u=t[x+44>>2],t[x+28>>2]=u,t[x+20>>2]=u,t[x+16>>2]=u+t[x+48>>2],0)}function C_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0,M=0;return y=t[m+4>>2],S=t[m>>2]+t[m+8>>2]|0,(y|0)==(S|0)?-1:(M=x,x=S-y|0,x=x>>>0>>0?x:u,Yr(M,y,x),t[m+4>>2]=x+t[m+4>>2],x|0)}function bf(x,u){var m=0,y=0;m=xe[x|0],y=xe[u|0];e:{if(!m|(m|0)!=(y|0))break e;for(;;){if(y=xe[u+1|0],m=xe[x+1|0],!m)break e;if(u=u+1|0,x=x+1|0,(m|0)!=(y|0))break}}return m-y|0}function __(x,u,m){return x=x|0,u=u|0,m=m|0,u=$5(0),t[x+208>>2]=u,u?(Wr(u,t[x+72>>2],x+80|0,t[x+212>>2])?x=1:(L1(t[x+208>>2]),t[x+208>>2]=0,x=0),x|0):(vt(m,1,8228,0),0)}function wk(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;ue(x,y+12|0,2),Ue[u>>2]=ln[y+12>>2],u=u+4|0,x=x+2|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function x_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;ue(x,y+12|0,2),t[u>>2]=t[y+12>>2],u=u+4|0,x=x+2|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function S_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;ue(x,y+12|0,4),t[u>>2]=t[y+12>>2],u=u+4|0,x=x+4|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function T_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;ue(x,y+12|0,4),Ue[u>>2]=ln[y+12>>2],u=u+4|0,x=x+4|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function E_(x,u,m){return x=x|0,u=u|0,L1(t[x+208>>2]),t[x+208>>2]=0,u=t[x+32>>2],u&&(Gt(u),t[x+32>>2]=0,t[x+36>>2]=0),u=t[x+44>>2],u&&(Gt(u),t[x+44>>2]=0),t[x+48>>2]=0,1}function Ff(x){var u=0,m=0;u=t[12438],m=x+7&-8,x=u+m|0;e:{if(x>>>0<=u>>>0&&m||x>>>0>ur()<<16>>>0&&!(ap(x|0)|0))break e;return t[12438]=x,u}return t[12458]=48,-1}function Ck(x,u){var m=0;e:{if(!u||(u=T2(u,48740),!u|t[u+8>>2]&(t[x+8>>2]^-1))||!Ja(t[x+12>>2],t[u+12>>2],0))break e;m=Ja(t[x+16>>2],t[u+16>>2],0)}return m}function D_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;if(y=Nt-16|0,Nt=y,m)for(;Vf(x,y+8|0),Ue[u>>2]=mr[y+8>>3],u=u+4|0,x=x+8|0,S=S+1|0,(S|0)!=(m|0););Nt=y+16|0}function I_(x,u){if(x=x|0,u=u|0,u=t[x+28>>2],u>>>0>2])for(;I4(x,t[x+24>>2]+(De(t[x+20>>2],u)<<2)|0),u=u+1|0,u>>>0>2];);Gt(t[x>>2]),Gt(x)}function Kp(x){var u=0,m=0;if(u=t[x+4>>2],(u|0)>0)for(m=t[x>>2],x=0;;){if(!t[De(x,12)+m>>2])return t[(De(x,12)+m|0)+4>>2];if(x=x+1|0,(u|0)==(x|0))break}return 0}function oi(x,u){var m=0,y=0;if(!x|!u)x=m;else{e:{if(!x||(m=N0(x,0,u,0),y=Gi,(x|u)>>>0<65536))break e;m=y?-1:m}x=S2(m),!x|!(xe[x-4|0]&3)||pi(x,0,m)}return x}function O_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;return x=t[x+200>>2],x&&(m=t[u+56>>2],y=t[x>>2],u=t[u+60>>2]-(t[x+4>>2]+(m>>>0>>0)|0)|0,t[x+16>>2]=m-y,t[x+20>>2]=u),1}function M_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;return x=Nt-16|0,Nt=x,y=x+4|0,lr(y,12,4),lr(x+8|0,1783636e3,4),lr(x+12|0,218793738,4),u=Go(u,y,12,m),Nt=x+16|0,(u|0)==12|0}function e1(x,u){x=x|0,u=u|0;var m=0,y=0,S=0,M=0;m=Nt-16|0,Nt=m,y=t[u+16>>2],u=t[u+12>>2],t[m+12>>2]=u,t[m+8>>2]=y-u,S=x,M=Ce(29300,m+8|0)|0,t[S>>2]=M,Nt=m+16|0}function Vf(x,u){dt[u+7|0]=xe[x|0],dt[u+6|0]=xe[x+1|0],dt[u+5|0]=xe[x+2|0],dt[u+4|0]=xe[x+3|0],dt[u+3|0]=xe[x+4|0],dt[u+2|0]=xe[x+5|0],dt[u+1|0]=xe[x+6|0],dt[u|0]=xe[x+7|0]}function Ya(x,u){x=x|0,u=u|0;var m=0,y=0;if(y=t[x+100>>2],m=t[x+104>>2]-y>>3,m>>>0>>0){zp(x+100|0,u-m|0);return}u>>>0>>0&&(t[x+104>>2]=(u<<3)+y)}function P_(x,u){x=x|0,u=u|0;var m=0,y=0;return m=t[u+4>>2],y=t[u>>2]+t[u+8>>2]|0,(m|0)==(y|0)?-1:(t[u+4>>2]=x+m,u=y-m|0,(x>>>0>u>>>0?u:x)|0)}function bc(x){var u=Ye(0),m=Ye(0);if(u=Ye(F(x)),m=Ye(x-u),!(mYe(.5))return x;m=x,x=Ye(u*Ye(.5)),u=Ye(x-Ye(F(x)))==Ye(0)?u:m}return u}function Fc(x,u,m,y,S,M){if(x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,Ja(x,t[u+8>>2],M)){N(u,m,y,S);return}x=t[x+8>>2],Zt[t[t[x>>2]+20>>2]](x,u,m,y,S,M)}function Uf(x,u,m){e:{if(x=t[x+12>>2],!x)break e;for(x=x+(u<<4)|0;;){if(t[x+4>>2]<=(m|0))break e;if(t[x+4>>2]=m,x=t[x>>2],!x)break}}}function os(x,u,m,y){var S=0;S=De(u,m);e:{if(t[y+76>>2]<0){x=$4(x,S,y);break e}x=$4(x,S,y)}return(S|0)==(x|0)?u?m:0:(x>>>0)/(u>>>0)|0}function _k(x,u,m,y,S,M,O,A,G,H,Y){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,O=O|0,A=A|0,G=G|0,H=H|0,Y=Y|0,Dc(t[x>>2],u,m,y,S,M,O,A,G,H,Y)|0}function Vc(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;return y=t[u+60>>2],t[x+88>>2]=t[u+56>>2],t[x+92>>2]=y,x=Zt[t[u+40>>2]](u,24,0,m)|0,!Gi&(x|0)==24}function yu(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;return y=t[u+60>>2],t[x+80>>2]=t[u+56>>2],t[x+84>>2]=y,x=Zt[t[u+40>>2]](u,8,0,m)|0,!Gi&(x|0)==8}function xk(x){x=x|0;var u=0;x&&(u=t[x+116>>2],u&&(Gt(u),t[x+116>>2]=0),u=t[x+120>>2],u&&(Gt(u),t[x+120>>2]=0),Gt(t[x+148>>2]),Gt(x))}function $5(x){var u=0;return u=oi(1,72),u?(dt[u+40|0]=xe[u+40|0]&254|(x|0)!=0,x=oi(1,4),t[u+20>>2]=x,x?u:(Gt(u),0)):0}function Sk(x,u,m){x=x|0,u=u|0,m=m|0;var y=0,S=0;return y=m,S=t[m>>2],m=t[m+8>>2],t[y+4>>2]=S+(x>>>0>>0&(u|0)<=0|(u|0)<0?x:m),1}function Tk(x,u,m,y){x=x|0,u=u|0,m=m|0,y=Ye(y);var S=0;S=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(S=t[S+t[u>>2]>>2]),Zt[S|0](u,m,y)}function m0(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0;var S=0;S=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(S=t[S+t[u>>2]>>2]),Zt[S|0](u,m,y)}function R_(x,u,m,y){if(x=x|0,u=u|0,m=m|0,y=y|0,Ja(x,t[u+8>>2],0)){Va(u,m,y);return}x=t[x+8>>2],Zt[t[t[x>>2]+28>>2]](x,u,m,y)}function Ri(x){var u=0;x=x||1;e:{for(;;){if(u=S2(x),u)break e;if(u=t[13050],u){Zt[u|0]();continue}break}fl(),Qe()}return u}function j4(x){for(x=x|0;;){if(x=t[13053],x){t[13053]=t[x+8>>2],Zt[t[x>>2]](t[x+4>>2]),Gt(x);continue}break}dt[52205]=0}function j5(x){x=x|0;var u=0,m=0;return t[x>>2]=49344,u=t[x+4>>2]-12|0,m=t[u+8>>2]-1|0,t[u+8>>2]=m,(m|0)<0&&Gt(u),x|0}function A_(x,u,m){x=x|0,u=u|0,m=m|0;var y=0;y=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(y=t[y+t[u>>2]>>2]),Zt[y|0](u,m)}function Ek(x,u,m,y){return x=x|0,m=m|0,y=y|0,t[t[x+72>>2]+16>>2]<<2!=(m|0)?(vt(y,1,7282,0),x=0):x=1,x|0}function zs(x,u){x=x|0,u=u|0;var m=0;return m=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(m=t[m+t[u>>2]>>2]),Zt[m|0](u)|0}function L_(x){x=x|0;var u=0;x&&(u=t[x+12>>2],u&&(t[x+16>>2]=u,Gt(u)),u=t[x>>2],u&&(t[x+4>>2]=u,Gt(u)),Gt(x))}function Dk(x,u){x=x|0,u=u|0,!x|!u||(t[x+164>>2]=t[u+4>>2],t[x+160>>2]=t[u>>2],t[x+224>>2]=t[u+8248>>2]&2)}function Ja(x,u,m){return m?(x|0)==(u|0)?1:!bf(t[x+4>>2],t[u+4>>2]):t[x+4>>2]==t[u+4>>2]}function Bf(){var x=0,u=0;if(x=oi(1,12),x){if(t[x+4>>2]=10,u=oi(10,4),t[x+8>>2]=u,u)return x;Gt(x)}return 0}function Ik(x,u){x=x|0,u=u|0;var m=0;m=t[x>>2],x=t[x+4>>2],u=(x>>1)+u|0,x&1&&(m=t[m+t[u>>2]>>2]),Zt[m|0](u)}function Gf(x){var u=0;return u=Nt-16|0,Nt=u,x?(x=$u(u+12|0,32,x),x=x?0:t[u+12>>2]):x=0,Nt=u+16|0,x}function Jo(x){var u=0;return u=Nt-16|0,Nt=u,x?(x=$u(u+12|0,16,x),x=x?0:t[u+12>>2]):x=0,Nt=u+16|0,x}function Ok(x,u,m){return x=x|0,u=u|0,m=m|0,m=t[u+60>>2],x=t[x+200>>2],t[x+8>>2]=t[u+56>>2],t[x+12>>2]=m,1}function z5(x){x=x|0;var u=0,m=0;return x=t[x+4>>2],u=Nr(x)+1|0,m=S2(u),m?x=Yr(m,x,u):x=0,x|0}function Zo(x,u,m,y,S,M,O){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,O=O|0,w4(t[x>>2],u,m,y,S,M,O)|0}function N_(x,u,m){x=x|0,u=u|0,m=m|0,x=t[x+100>>2]+(u<<3)|0,u=t[m+4>>2],t[x>>2]=t[m>>2],t[x+4>>2]=u}function b_(x,u,m){x=x|0,u=u|0,m=m|0,x=t[x+56>>2]+(u<<3)|0,u=t[m+4>>2],t[x>>2]=t[m>>2],t[x+4>>2]=u}function z4(x){var u=0;x&&(u=t[x+4>>2],u&&Zt[u|0](t[x>>2]),Gt(t[x+32>>2]),t[x+32>>2]=0,Gt(x))}function F_(){var x=0;if(x=t[12455],x)for(;Zt[t[x>>2]](),x=t[x+4>>2],!!x;);}function V_(x,u,m){return x=x|0,u=u|0,u=t[x+52>>2],u&&(Gt(u),t[x+52>>2]=0),t[x+56>>2]=0,1}function U_(x,u,m,y,S,M){x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,Ja(x,t[u+8>>2],M)&&N(u,m,y,S)}function B_(x,u){x=x|0,u=u|0,t[x+32>>2]=u,u=t[x+100>>2],(u|0)!=t[x+104>>2]&&(t[x+104>>2]=u)}function G_(x,u,m,y,S,M){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,P4(t[x>>2],u,m,y,S,M)|0}function W_(x,u,m,y,S,M){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,M=M|0,hl(t[x>>2],u,m,y,S,M)|0}function H5(){var x=0;x=d(4),t[x>>2]=49232,t[x>>2]=49192,t[x>>2]=49212,Fu(x|0,49324,4),Qe()}function $_(x,u,m){return x=x|0,u=u|0,m=m|0,x=t[x+52>>2],lr(x,65359,2),(Go(u,x,2,m)|0)==2|0}function j_(x,u,m,y){return x=x|0,m=m|0,y=y|0,m?x=1:(vt(y,1,7193,0),x=0),x|0}function z_(x,u,m){return x=x|0,u=u|0,m=m|0,Yr(t[m+4>>2],x,u),t[m+4>>2]=t[m+4>>2]+u,u|0}function qp(x,u){x=x|0,u=u|0,u=Nt-16|0,Nt=u,t[u>>2]=x,to(t[11825],1403,u),Nt=u+16|0}function H_(x,u){x=x|0,u=u|0,u=Nt-16|0,Nt=u,t[u>>2]=x,to(t[11825],1382,u),Nt=u+16|0}function Po(x,u,m){return x=x|0,!t[x+8>>2]&t[x+192>>2]!=0&t[x+196>>2]!=0}function H4(x){x&&(Zt[t[(t[x+76>>2]?20:16)+x>>2]](t[x+48>>2]),t[x+48>>2]=0,Gt(x))}function K_(x,u){x=x|0,u=u|0,Dk(t[x>>2],u),dt[x+124|0]=0,t[x+128>>2]=t[u+8248>>2]&1}function Mk(x,u){x=x|0,u=u|0;var m=0;m=t[u+48>>2],t[x>>2]=t[u+44>>2],t[x+4>>2]=m}function Pk(x,u){x=x|0,u=u|0;var m=0;m=t[u+56>>2],t[x>>2]=t[u+52>>2],t[x+4>>2]=m}function q_(x,u){x=x|0,u=u|0;var m=0;m=t[u+64>>2],t[x>>2]=t[u+60>>2],t[x+4>>2]=m}function Rk(x,u){x=x|0,u=u|0;var m=0;m=t[u+4>>2],t[x+68>>2]=t[u>>2],t[x+72>>2]=m}function X_(x,u){x=x|0,u=u|0;var m=0;m=t[u+4>>2],t[x+76>>2]=t[u>>2],t[x+80>>2]=m}function Y_(x,u){x=x|0,u=u|0;var m=0;m=t[u+4>>2],t[x+84>>2]=t[u>>2],t[x+88>>2]=m}function Ak(x,u){x=x|0,u=u|0;var m=0;m=t[u+4>>2],t[x+92>>2]=t[u>>2],t[x+96>>2]=m}function J_(x,u){x=x|0,u=u|0;var m=0;m=t[u+72>>2],t[x>>2]=t[u+68>>2],t[x+4>>2]=m}function Lk(x,u,m,y,S){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,Zt[x|0](u,m,y,S)|0}function Z_(x,u,m,y,S){return x=x|0,u=u|0,m=m|0,y=y|0,S=S|0,Zt[x|0](u,m,y,S)|0}function Nk(x){for(var u=0;;){if(x){x=x-1&x,u=u+1|0;continue}break}return u}function Q_(x,u,m,y){x=x|0,u=u|0,m=m|0,y=y|0,Ja(x,t[u+8>>2],0)&&Va(u,m,y)}function K5(x,u){var m=0;m=Nt-16|0,Nt=m,t[m+12>>2]=u,fe(49608,x,u),Nt=m+16|0}function D2(x){var u=0;return u=x&31,x=0-x&31,(-1>>>u&-2)<>>x}function bk(x,u){x=x|0,u=u|0,u=Nt-16|0,Nt=u,t[u>>2]=x,K5(1393,u),Nt=u+16|0}function ex(x,u){x=x|0,u=u|0,u=Nt-16|0,Nt=u,t[u>>2]=x,K5(1403,u),Nt=u+16|0}function tx(x,u){x=x|0,u=u|0,u=Nt-16|0,Nt=u,t[u>>2]=x,K5(1382,u),Nt=u+16|0}function to(x,u,m){var y=0;y=Nt-16|0,Nt=y,t[y+12>>2]=m,fe(x,u,m),Nt=y+16|0}function Yh(x){var u=0;x&&(u=t[x+12>>2],u&&(Gt(u),t[x+12>>2]=0),Gt(x))}function nx(x,u,m,y){return x=x|0,u=u|0,m=m|0,y=y|0,Bp(t[x>>2],u,m,y)|0}function q5(x,u){var m=0;return m=oi(1,8),m&&(t[m+4>>2]=u,t[m>>2]=x),m}function rx(x,u,m,y){return x=x|0,u=u|0,m=m|0,y=y|0,Zt[x|0](u,m,y)|0}function ix(x,u,m,y){return x=x|0,u=u|0,m=m|0,y=y|0,Zt[x|0](u,m,y)|0}function ox(x){return x=x|0,x?(T2(x,48628)|0)!=0|0:0}function sx(x,u,m){x=x|0,u=u|0,m=Ye(m),Ue[t[x+40>>2]+(u<<2)>>2]=m}function X5(){var x=0;return x=Ri(8),t[x>>2]=0,t[x+4>>2]=0,x|0}function ax(x,u,m){return x=x|0,u=u|0,m=m|0,Xh(t[x>>2],u,m)|0}function Fk(x,u,m){return x=x|0,u=u|0,m=m|0,O4(t[x>>2],u,m)|0}function lx(x,u,m){return x=x|0,u=u|0,m=m|0,v4(t[x>>2],u,m)|0}function ux(x){return x=x|0,Ye(Ye(De(t[x+5592>>2],14)-14>>>0))}function Hu(x,u){x=x|0,u=u|0,x=t[x>>2],x&&(t[x+184>>2]=u)}function Xp(x){var u=0;x&&(u=t[x+8>>2],u&&Gt(u),Gt(x))}function cx(x,u,m,y){return Gi=0,0}function Jh(x,u,m,y,S,M,O,A){return kp(x,u,m,y,S,M,O,A,0)}function Vk(){var x=0;return x=oi(1,24),x||0}function Uk(x,u,m){x=x|0,u=u|0,m=m|0,t[x+84>>2]=m,vp(x,u)}function Ku(x,u,m){return x=x|0,u=u|0,Ja(x,u,0)|0}function fx(x,u,m){x=x|0,u=u|0,m=m|0,tn[t[x>>2]+u>>1]=m}function Bk(x,u,m){x=x|0,u=u|0,m=m|0,t[t[x>>2]+u>>2]=m}function Uc(x,u,m,y){return 1}function Bc(x,u,m){x=x|0,u=u|0,m=m|0,dt[t[x>>2]+u|0]=m}function Gk(x,u,m){x=x|0,u=u|0,m=m|0,_p(t[x>>2],u,m)}function Wk(x){return x=x|0,Zt[t[x>>2]](t[x+4>>2]),0}function hx(x,u,m){return Gi=-1,-1}function gl(x){return x?31-ri(x-1^x)|0:32}function dx(x,u){return x=x|0,u=u|0,Qn[t[x>>2]+u>>1]}function gx(x,u){return x=x|0,u=u|0,vk(t[x>>2],u)|0}function $k(x,u){return x=x|0,u=u|0,t[t[x>>2]+u>>2]}function F1(x,u,m,y,S,M,O,A){kp(x,u,m,y,S,M,O,A,1)}function jk(x,u){return x=x|0,u=u|0,xe[t[x>>2]+u|0]}function px(x,u){x=x|0,u=u|0,x&&(t[x+184>>2]=u)}function zk(x){return x=x|0,x=Nt-x&-16,Nt=x,x|0}function qu(x,u,m,y){sp(x|0,u|0,8,0,m|0,-1,y|0)}function Zh(x,u,m){return Gu(x,0,u,m),Gi=hu,Vu}function Hs(x,u,m){xe[x|0]&32||$4(u,m,x)}function mx(x,u,m){return 0}function Hk(x,u,m){return-1}function Y5(x,u,m){return 1}function vx(x){return x=x|0,fp(t[x+60>>2])|0}function c0(x,u,m,y){return x=Gu(x,u,m,y),x}function Za(x){t[x+12>>2]&&(t[x+40>>2]=0)}function si(x){return x?S2(x):0}function kx(x){return x=x|0,T4(t[x>>2])|0}function Kk(x){return x=x|0,If(t[x>>2])|0}function yx(x){x=x|0,t[x+84>>2]=0,vp(x,0)}function wx(x,u){x=x|0,u=u|0,t[x+52>>2]=u}function Qh(x){x&&(Gt(t[x+8>>2]),Gt(x))}function Wf(x,u,m){return mp(x,u,1,52,m)}function y0(){bh(1762,1,28980,29056,1,2)}function qk(x){return x=x|0,Zt[x|0]()|0}function Cx(x){return x=x|0,t[x+32>>2]}function V1(x){return x=x|0,t[x+40>>2]}function Ie(x){return x=x|0,t[x+76>>2]}function Xk(x){return x=x|0,t[x+80>>2]}function _x(x){return x=x|0,t[x+4>>2]}function h(x){return x=x|0,xe[x+36|0]}function d(x){return S2(x+80|0)+80|0}function a(x){return Ye(Ye(0))}function p(x){return x=x|0,x+24|0}function C(x){x=x|0,x&&Gt(x)}function D(x){return 29448}function b(x){return 29144}function B(x){return 1747}function q(x){return 2375}function Z(x){return 1832}function ae(x){Lh(t[12440])}function fe(x,u,m){Gp(x,u,m,0,0)}function ve(x){x=x|0,j5(x),Gt(x)}function Se(x){return x=x|0,x|0}function Le(){return oi(1,36)}function We(x){return 0}function lt(x,u){}function mt(x){x=x|0,Gt(x)}function Mt(){_a(1416),Qe()}function Ht(x){j4(0)}function on(){return Nt|0}function an(x){x=x|0,Nt=x}function wn(x){}var Zt=oe([null,y_,Br,j5,Se,X5,C,dx,fx,jk,Bc,jk,Bc,X5,C,$k,Bk,X5,C,$k,Bk,b,L_,qk,$i,Rf,B5,I5,kk,wn,Ik,b1,K0,yx,Uk,m0,p,mk,Cx,zs,h,zs,V1,zs,Mk,gk,Pk,gk,q_,J_,Ie,zs,Xk,zs,ae,bk,ex,tx,C_,P_,Sk,D,so,qk,ta,Q2,B5,e1,kk,Mi,Ik,B_,A_,D0,m0,wx,b_,Vi,Rk,Rs,X_,Rs,Y_,Ak,Ya,N_,Vi,sx,Tk,qp,H_,z_,y0,F4,ei,hi,jh,M4,mx,hx,Hk,Hk,jl,zu,Ip,Pf,lt,E5,Wk,Ec,Ca,E2,Nf,I_,cn,yp,hn,x5,Tp,Y5,Po,wp,v5,zr,Ep,Li,Ct,O_,E_,V_,Y5,o0,D5,Vh,$_,C5,T5,O5,Mp,Mc,Af,U5,M0,be,Oc,Ok,__,g5,ux,a,ku,pk,$0,A5,Ms,S4,b4,b5,L5,qh,Rp,d5,kr,j_,ye,_5,w5,Ek,Uc,Io,R5,Uc,Uc,Sp,fr,wk,T_,ii,D_,x_,S_,Lt,Ci,m5,Ee,Up,M_,V5,Of,Vc,yu,nn,Wp,jn,F5,yn,B4,Mf,Ap,Bu,ie,Rc,P5,Jr,T4,If,_p,Y5,Pc,px,Dk,Df,Ps,vk,Bp,Xh,y4,w4,hl,Dc,kx,Kk,Gk,U4,R4,gx,nx,ax,S5,Zo,Hu,K_,L4,W_,_k,y5,N4,v4,O4,xf,P4,ea,N5,lx,Fk,p5,G_,k5,Sc,xk,Fh,Xt,Wt,Wl,vx,Lp,w_,We,cx,Pi,C4,w,Ht,j4,Se,mt,wn,wn,Ku,mt,J,U_,Mr,Q_,mt,Fc,M5,R_,mt,wa,mt,q,mt,Z,mt,B,ve,_x,ve]);function ur(){return Bn.byteLength/65536|0}function Er(x){x=x|0;var u=ur()|0,m=u+x|0;if(u=ze);)++oe;if(oe-nt>16&&ot.buffer&&Te)return Te.decode(ot.subarray(nt,oe));for(var ke="";nt>10,56320|bt&1023)}}return ke}function Pe(ot,nt){return ot?Ve(qe,ot,nt):""}function je(ot,nt,Fe,ze){if(!(ze>0))return 0;for(var oe=Fe,ke=Fe+ze-1,s=0;s=55296&&de<=57343){var Re=ot.charCodeAt(++s);de=65536+((de&1023)<<10)|Re&1023}if(de<=127){if(Fe>=ke)break;nt[Fe++]=de}else if(de<=2047){if(Fe+1>=ke)break;nt[Fe++]=192|de>>6,nt[Fe++]=128|de&63}else if(de<=65535){if(Fe+2>=ke)break;nt[Fe++]=224|de>>12,nt[Fe++]=128|de>>6&63,nt[Fe++]=128|de&63}else{if(Fe+3>=ke)break;nt[Fe++]=240|de>>18,nt[Fe++]=128|de>>12&63,nt[Fe++]=128|de>>6&63,nt[Fe++]=128|de&63}}return nt[Fe]=0,Fe-oe}function Je(ot,nt,Fe){return je(ot,qe,nt,Fe)}function it(ot){for(var nt=0,Fe=0;Fe=55296&&ze<=57343?(nt+=4,++Fe):nt+=3}return nt}var Ge,Ke,qe,ut,wt,Et,qt,$t,Jt;function Dn(ot){Ge=ot,c.HEAP8=Ke=new Int8Array(ot),c.HEAP16=ut=new Int16Array(ot),c.HEAP32=Et=new Int32Array(ot),c.HEAPU8=qe=new Uint8Array(ot),c.HEAPU16=wt=new Uint16Array(ot),c.HEAPU32=qt=new Uint32Array(ot),c.HEAPF32=$t=new Float32Array(ot),c.HEAPF64=Jt=new Float64Array(ot)}var Nn=c.INITIAL_MEMORY||52428800;c.wasmMemory?ge=c.wasmMemory:ge=new ce.Memory({initial:Nn/65536,maximum:32768}),ge&&(Ge=ge.buffer),Nn=Ge.byteLength,Dn(Ge);var xn,et=[],Me=[],ct=[];function st(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Pt(c.preRun.shift());Cr(et)}function yt(){Cr(Me)}function St(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Pn(c.postRun.shift());Cr(ct)}function Pt(ot){et.unshift(ot)}function mn(ot){Me.unshift(ot)}function Pn(ot){ct.unshift(ot)}var Hn=0,Kn=null;function Dt(ot){Hn++,c.monitorRunDependencies&&c.monitorRunDependencies(Hn)}function Vt(ot){if(Hn--,c.monitorRunDependencies&&c.monitorRunDependencies(Hn),Hn==0&&Kn){var nt=Kn;Kn=null,nt()}}function gn(ot){c.onAbort&&c.onAbort(ot),ot="Aborted("+ot+")",ne(ot),pe=!0,ot+=". Build with -sASSERTIONS for more info.";var nt=new ce.RuntimeError(ot);throw v(nt),nt}var Bt="openjpegjs.js.mem",rn="data:application/octet-stream;base64,";function Zn(ot){return ot.startsWith(rn)}function Ut(ot){return ot.startsWith("file://")}var Ir;Ir="openjpegjs.wasm",Zn(Ir)||(Ir=U(Ir));function br(ot){try{if(ot==Ir&&le)return new Uint8Array(le);if($)return $(ot);throw"both async and sync fetching of the wasm failed"}catch(nt){gn(nt)}}function jr(){if(!le&&(P||I)){if(typeof fetch=="function"&&!Ut(Ir))return fetch(Ir,{credentials:"same-origin"}).then(function(ot){if(!ot.ok)throw"failed to load wasm binary file at '"+Ir+"'";return ot.arrayBuffer()}).catch(function(){return br(Ir)});if(z)return new Promise(function(ot,nt){z(Ir,function(Fe){ot(new Uint8Array(Fe))},nt)})}return Promise.resolve().then(function(){return br(Ir)})}function An(){var ot={a:sn};function nt(s,de){var Re=s.exports;c.asm=Re,kn(),xn=c.asm.I,mn(c.asm.G),Vt()}Dt();function Fe(s){nt(s.instance)}function ze(s){return jr().then(function(de){return ce.instantiate(de,ot)}).then(function(de){return de}).then(s,function(de){ne("failed to asynchronously prepare wasm: "+de),gn(de)})}function oe(){return!le&&typeof ce.instantiateStreaming=="function"&&!Zn(Ir)&&!Ut(Ir)&&!R&&typeof fetch=="function"?fetch(Ir,{credentials:"same-origin"}).then(function(s){var de=ce.instantiateStreaming(s,ot);return de.then(Fe,function(Re){return ne("wasm streaming compile failed: "+Re),ne("falling back to ArrayBuffer instantiation"),ze(Fe)})}):ze(Fe)}if(c.instantiateWasm)try{var ke=c.instantiateWasm(ot,nt);return ke}catch(s){ne("Module.instantiateWasm callback failed with error: "+s),v(s)}return oe().catch(v),{}}function hr(ot){this.name="ExitStatus",this.message="Program terminated with exit("+ot+")",this.status=ot}function Cr(ot){for(;ot.length>0;)ot.shift()(c)}function wr(ot){this.excPtr=ot,this.ptr=ot-24,this.set_type=function(nt){qt[this.ptr+4>>2]=nt},this.get_type=function(){return qt[this.ptr+4>>2]},this.set_destructor=function(nt){qt[this.ptr+8>>2]=nt},this.get_destructor=function(){return qt[this.ptr+8>>2]},this.set_refcount=function(nt){Et[this.ptr>>2]=nt},this.set_caught=function(nt){nt=nt?1:0,Ke[this.ptr+12>>0]=nt},this.get_caught=function(){return Ke[this.ptr+12>>0]!=0},this.set_rethrown=function(nt){nt=nt?1:0,Ke[this.ptr+13>>0]=nt},this.get_rethrown=function(){return Ke[this.ptr+13>>0]!=0},this.init=function(nt,Fe){this.set_adjusted_ptr(0),this.set_type(nt),this.set_destructor(Fe),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var nt=Et[this.ptr>>2];Et[this.ptr>>2]=nt+1},this.release_ref=function(){var nt=Et[this.ptr>>2];return Et[this.ptr>>2]=nt-1,nt===1},this.set_adjusted_ptr=function(nt){qt[this.ptr+16>>2]=nt},this.get_adjusted_ptr=function(){return qt[this.ptr+16>>2]},this.get_exception_ptr=function(){var nt=zt(this.get_type());if(nt)return qt[this.excPtr>>2];var Fe=this.get_adjusted_ptr();return Fe!==0?Fe:this.excPtr}}function Fr(ot,nt,Fe){var ze=new wr(ot);throw ze.init(nt,Fe),ot}var ui={};function Kr(ot){for(;ot.length;){var nt=ot.pop(),Fe=ot.pop();Fe(nt)}}function ai(ot){return this.fromWireType(Et[ot>>2])}var vi={},e0={},p0={},Hi=48,T0=57;function wo(ot){if(ot===void 0)return"_unknown";ot=ot.replace(/[^a-zA-Z0-9_]/g,"$");var nt=ot.charCodeAt(0);return nt>=Hi&&nt<=T0?"_"+ot:ot}function uo(ot,nt){return ot=wo(ot),new Function("body","return function "+ot+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(nt)}function Yn(ot,nt){var Fe=uo(nt,function(ze){this.name=nt,this.message=ze;var oe=new Error(ze).stack;oe!==void 0&&(this.stack=this.toString()+` +`+oe.replace(/^Error(:[^\n]*)?\n/,""))});return Fe.prototype=Object.create(ot.prototype),Fe.prototype.constructor=Fe,Fe.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Fe}var Tr=void 0;function Ai(ot){throw new Tr(ot)}function t0(ot,nt,Fe){ot.forEach(function(de){p0[de]=nt});function ze(de){var Re=Fe(de);Re.length!==ot.length&&Ai("Mismatched type converter count");for(var bt=0;bt{e0.hasOwnProperty(de)?oe[Re]=e0[de]:(ke.push(de),vi.hasOwnProperty(de)||(vi[de]=[]),vi[de].push(()=>{oe[Re]=e0[de],++s,s===ke.length&&ze(oe)}))}),ke.length===0&&ze(oe)}function Mo(ot){var nt=ui[ot];delete ui[ot];var Fe=nt.rawConstructor,ze=nt.rawDestructor,oe=nt.fields,ke=oe.map(s=>s.getterReturnType).concat(oe.map(s=>s.setterArgumentType));t0([ot],ke,s=>{var de={};return oe.forEach((Re,bt)=>{var Qt=Re.fieldName,Ae=s[bt],Qe=Re.getter,tt=Re.getterContext,xt=s[bt+oe.length],Kt=Re.setter,fn=Re.setterContext;de[Qt]={read:Bn=>Ae.fromWireType(Qe(tt,Bn)),write:(Bn,dt)=>{var tn=[];Kt(fn,Bn,xt.toWireType(tn,dt)),Kr(tn)}}}),[{name:nt.name,fromWireType:function(Re){var bt={};for(var Qt in de)bt[Qt]=de[Qt].read(Re);return ze(Re),bt},toWireType:function(Re,bt){for(var Qt in de)if(!(Qt in bt))throw new TypeError('Missing field: "'+Qt+'"');var Ae=Fe();for(Qt in de)de[Qt].write(Ae,bt[Qt]);return Re!==null&&Re.push(ze,Ae),Ae},argPackAdvance:8,readValueFromPointer:ai,destructorFunction:ze}]})}function Fi(ot,nt,Fe,ze,oe){}function x0(ot){switch(ot){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+ot)}}function xi(){for(var ot=new Array(256),nt=0;nt<256;++nt)ot[nt]=String.fromCharCode(nt);Ki=ot}var Ki=void 0;function ki(ot){for(var nt="",Fe=ot;qe[Fe];)nt+=Ki[qe[Fe++]];return nt}var k0=void 0;function r0(ot){throw new k0(ot)}function Yi(ot,nt,Fe={}){if(!("argPackAdvance"in nt))throw new TypeError("registerType registeredInstance requires argPackAdvance");var ze=nt.name;if(ot||r0('type "'+ze+'" must have a positive integer typeid pointer'),e0.hasOwnProperty(ot)){if(Fe.ignoreDuplicateRegistrations)return;r0("Cannot register type '"+ze+"' twice")}if(e0[ot]=nt,delete p0[ot],vi.hasOwnProperty(ot)){var oe=vi[ot];delete vi[ot],oe.forEach(ke=>ke())}}function jo(ot,nt,Fe,ze,oe){var ke=x0(Fe);nt=ki(nt),Yi(ot,{name:nt,fromWireType:function(s){return!!s},toWireType:function(s,de){return de?ze:oe},argPackAdvance:8,readValueFromPointer:function(s){var de;if(Fe===1)de=Ke;else if(Fe===2)de=ut;else if(Fe===4)de=Et;else throw new TypeError("Unknown boolean type size: "+nt);return this.fromWireType(de[s>>ke])},destructorFunction:null})}function ga(ot){if(!(this instanceof Zs)||!(ot instanceof Zs))return!1;for(var nt=this.$$.ptrType.registeredClass,Fe=this.$$.ptr,ze=ot.$$.ptrType.registeredClass,oe=ot.$$.ptr;nt.baseClass;)Fe=nt.upcast(Fe),nt=nt.baseClass;for(;ze.baseClass;)oe=ze.upcast(oe),ze=ze.baseClass;return nt===ze&&Fe===oe}function Ma(ot){return{count:ot.count,deleteScheduled:ot.deleteScheduled,preservePointerOnDelete:ot.preservePointerOnDelete,ptr:ot.ptr,ptrType:ot.ptrType,smartPtr:ot.smartPtr,smartPtrType:ot.smartPtrType}}function Co(ot){function nt(Fe){return Fe.$$.ptrType.registeredClass.name}r0(nt(ot)+" instance already deleted")}var ls=!1;function pn(ot){}function yr(ot){ot.smartPtr?ot.smartPtrType.rawDestructor(ot.smartPtr):ot.ptrType.registeredClass.rawDestructor(ot.ptr)}function Fn(ot){ot.count.value-=1;var nt=ot.count.value===0;nt&&yr(ot)}function Mn(ot,nt,Fe){if(nt===Fe)return ot;if(Fe.baseClass===void 0)return null;var ze=Mn(ot,nt,Fe.baseClass);return ze===null?null:Fe.downcast(ze)}var Sr={};function Ar(){return Object.keys(i0).length}function Lr(){var ot=[];for(var nt in i0)i0.hasOwnProperty(nt)&&ot.push(i0[nt]);return ot}var qr=[];function Vr(){for(;qr.length;){var ot=qr.pop();ot.$$.deleteScheduled=!1,ot.delete()}}var Si=void 0;function Ui(ot){Si=ot,qr.length&&Si&&Si(Vr)}function S0(){c.getInheritedInstanceCount=Ar,c.getLiveInheritedInstances=Lr,c.flushPendingDeletes=Vr,c.setDelayFunction=Ui}var i0={};function yi(ot,nt){for(nt===void 0&&r0("ptr should not be undefined");ot.baseClass;)nt=ot.upcast(nt),ot=ot.baseClass;return nt}function L0(ot,nt){return nt=yi(ot,nt),i0[nt]}function Z0(ot,nt){(!nt.ptrType||!nt.ptr)&&Ai("makeClassHandle requires ptr and ptrType");var Fe=!!nt.smartPtrType,ze=!!nt.smartPtr;return Fe!==ze&&Ai("Both smartPtrType and smartPtr must be specified"),nt.count={value:1},_o(Object.create(ot,{$$:{value:nt}}))}function oo(ot){var nt=this.getPointee(ot);if(!nt)return this.destructor(ot),null;var Fe=L0(this.registeredClass,nt);if(Fe!==void 0){if(Fe.$$.count.value===0)return Fe.$$.ptr=nt,Fe.$$.smartPtr=ot,Fe.clone();var ze=Fe.clone();return this.destructor(ot),ze}function oe(){return this.isSmartPointer?Z0(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:nt,smartPtrType:this,smartPtr:ot}):Z0(this.registeredClass.instancePrototype,{ptrType:this,ptr:ot})}var ke=this.registeredClass.getActualType(nt),s=Sr[ke];if(!s)return oe.call(this);var de;this.isConst?de=s.constPointerType:de=s.pointerType;var Re=Mn(nt,this.registeredClass,de.registeredClass);return Re===null?oe.call(this):this.isSmartPointer?Z0(de.registeredClass.instancePrototype,{ptrType:de,ptr:Re,smartPtrType:this,smartPtr:ot}):Z0(de.registeredClass.instancePrototype,{ptrType:de,ptr:Re})}function _o(ot){return typeof FinalizationRegistry>"u"?(_o=nt=>nt,ot):(ls=new FinalizationRegistry(nt=>{Fn(nt.$$)}),_o=nt=>{var Fe=nt.$$,ze=!!Fe.smartPtr;if(ze){var oe={$$:Fe};ls.register(nt,oe,nt)}return nt},pn=nt=>ls.unregister(nt),_o(ot))}function Bo(){if(this.$$.ptr||Co(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var ot=_o(Object.create(Object.getPrototypeOf(this),{$$:{value:Ma(this.$$)}}));return ot.$$.count.value+=1,ot.$$.deleteScheduled=!1,ot}function xo(){this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&r0("Object already scheduled for deletion"),pn(this),Fn(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Js(){return!this.$$.ptr}function Ts(){return this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&r0("Object already scheduled for deletion"),qr.push(this),qr.length===1&&Si&&Si(Vr),this.$$.deleteScheduled=!0,this}function L2(){Zs.prototype.isAliasOf=ga,Zs.prototype.clone=Bo,Zs.prototype.delete=xo,Zs.prototype.isDeleted=Js,Zs.prototype.deleteLater=Ts}function Zs(){}function us(ot,nt,Fe){if(ot[nt].overloadTable===void 0){var ze=ot[nt];ot[nt]=function(){return ot[nt].overloadTable.hasOwnProperty(arguments.length)||r0("Function '"+Fe+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+ot[nt].overloadTable+")!"),ot[nt].overloadTable[arguments.length].apply(this,arguments)},ot[nt].overloadTable=[],ot[nt].overloadTable[ze.argCount]=ze}}function N2(ot,nt,Fe){c.hasOwnProperty(ot)?((Fe===void 0||c[ot].overloadTable!==void 0&&c[ot].overloadTable[Fe]!==void 0)&&r0("Cannot register public name '"+ot+"' twice"),us(c,ot,ot),c.hasOwnProperty(Fe)&&r0("Cannot register multiple overloads of a function with the same number of arguments ("+Fe+")!"),c[ot].overloadTable[Fe]=nt):(c[ot]=nt,Fe!==void 0&&(c[ot].numArguments=Fe))}function Rl(ot,nt,Fe,ze,oe,ke,s,de){this.name=ot,this.constructor=nt,this.instancePrototype=Fe,this.rawDestructor=ze,this.baseClass=oe,this.getActualType=ke,this.upcast=s,this.downcast=de,this.pureVirtualFunctions=[]}function k1(ot,nt,Fe){for(;nt!==Fe;)nt.upcast||r0("Expected null or instance of "+Fe.name+", got an instance of "+nt.name),ot=nt.upcast(ot),nt=nt.baseClass;return ot}function y1(ot,nt){if(nt===null)return this.isReference&&r0("null is not a valid "+this.name),0;nt.$$||r0('Cannot pass "'+C1(nt)+'" as a '+this.name),nt.$$.ptr||r0("Cannot pass deleted object as a pointer of type "+this.name);var Fe=nt.$$.ptrType.registeredClass,ze=k1(nt.$$.ptr,Fe,this.registeredClass);return ze}function Pa(ot,nt){var Fe;if(nt===null)return this.isReference&&r0("null is not a valid "+this.name),this.isSmartPointer?(Fe=this.rawConstructor(),ot!==null&&ot.push(this.rawDestructor,Fe),Fe):0;nt.$$||r0('Cannot pass "'+C1(nt)+'" as a '+this.name),nt.$$.ptr||r0("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&nt.$$.ptrType.isConst&&r0("Cannot convert argument of type "+(nt.$$.smartPtrType?nt.$$.smartPtrType.name:nt.$$.ptrType.name)+" to parameter type "+this.name);var ze=nt.$$.ptrType.registeredClass;if(Fe=k1(nt.$$.ptr,ze,this.registeredClass),this.isSmartPointer)switch(nt.$$.smartPtr===void 0&&r0("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:nt.$$.smartPtrType===this?Fe=nt.$$.smartPtr:r0("Cannot convert argument of type "+(nt.$$.smartPtrType?nt.$$.smartPtrType.name:nt.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:Fe=nt.$$.smartPtr;break;case 2:if(nt.$$.smartPtrType===this)Fe=nt.$$.smartPtr;else{var oe=nt.clone();Fe=this.rawShare(Fe,bo.toHandle(function(){oe.delete()})),ot!==null&&ot.push(this.rawDestructor,Fe)}break;default:r0("Unsupporting sharing policy")}return Fe}function Ra(ot,nt){if(nt===null)return this.isReference&&r0("null is not a valid "+this.name),0;nt.$$||r0('Cannot pass "'+C1(nt)+'" as a '+this.name),nt.$$.ptr||r0("Cannot pass deleted object as a pointer of type "+this.name),nt.$$.ptrType.isConst&&r0("Cannot convert argument of type "+nt.$$.ptrType.name+" to parameter type "+this.name);var Fe=nt.$$.ptrType.registeredClass,ze=k1(nt.$$.ptr,Fe,this.registeredClass);return ze}function pa(ot){return this.rawGetPointee&&(ot=this.rawGetPointee(ot)),ot}function Es(ot){this.rawDestructor&&this.rawDestructor(ot)}function ma(ot){ot!==null&&ot.delete()}function a2(){Ds.prototype.getPointee=pa,Ds.prototype.destructor=Es,Ds.prototype.argPackAdvance=8,Ds.prototype.readValueFromPointer=ai,Ds.prototype.deleteObject=ma,Ds.prototype.fromWireType=oo}function Ds(ot,nt,Fe,ze,oe,ke,s,de,Re,bt,Qt){this.name=ot,this.registeredClass=nt,this.isReference=Fe,this.isConst=ze,this.isSmartPointer=oe,this.pointeeType=ke,this.sharingPolicy=s,this.rawGetPointee=de,this.rawConstructor=Re,this.rawShare=bt,this.rawDestructor=Qt,!oe&&nt.baseClass===void 0?ze?(this.toWireType=y1,this.destructorFunction=null):(this.toWireType=Ra,this.destructorFunction=null):this.toWireType=Pa}function W0(ot,nt,Fe){c.hasOwnProperty(ot)||Ai("Replacing nonexistant public symbol"),c[ot].overloadTable!==void 0&&Fe!==void 0?c[ot].overloadTable[Fe]=nt:(c[ot]=nt,c[ot].argCount=Fe)}function w1(ot,nt,Fe){var ze=c["dynCall_"+ot];return Fe&&Fe.length?ze.apply(null,[nt].concat(Fe)):ze.call(null,nt)}var gs=[];function zo(ot){var nt=gs[ot];return nt||(ot>=gs.length&&(gs.length=ot+1),gs[ot]=nt=xn.get(ot)),nt}function Eo(ot,nt,Fe){if(ot.includes("j"))return w1(ot,nt,Fe);var ze=zo(nt).apply(null,Fe);return ze}function l2(ot,nt){var Fe=[];return function(){return Fe.length=0,Object.assign(Fe,arguments),Eo(ot,nt,Fe)}}function Do(ot,nt){ot=ki(ot);function Fe(){return ot.includes("j")?l2(ot,nt):zo(nt)}var ze=Fe();return typeof ze!="function"&&r0("unknown function pointer with signature "+ot+": "+nt),ze}var Ho=void 0;function q2(ot){var nt=tr(ot),Fe=ki(nt);return Xn(nt),Fe}function Ka(ot,nt){var Fe=[],ze={};function oe(ke){if(!ze[ke]&&!e0[ke]){if(p0[ke]){p0[ke].forEach(oe);return}Fe.push(ke),ze[ke]=!0}}throw nt.forEach(oe),new Ho(ot+": "+Fe.map(q2).join([", "]))}function w2(ot,nt,Fe,ze,oe,ke,s,de,Re,bt,Qt,Ae,Qe){Qt=ki(Qt),ke=Do(oe,ke),de&&(de=Do(s,de)),bt&&(bt=Do(Re,bt)),Qe=Do(Ae,Qe);var tt=wo(Qt);N2(tt,function(){Ka("Cannot construct "+Qt+" due to unbound types",[ze])}),t0([ot,nt,Fe],ze?[ze]:[],function(xt){xt=xt[0];var Kt,fn;ze?(Kt=xt.registeredClass,fn=Kt.instancePrototype):fn=Zs.prototype;var Bn=uo(tt,function(){if(Object.getPrototypeOf(this)!==dt)throw new k0("Use 'new' to construct "+Qt);if(tn.constructor_body===void 0)throw new k0(Qt+" has no accessible constructor");var ln=tn.constructor_body[arguments.length];if(ln===void 0)throw new k0("Tried to invoke ctor of "+Qt+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(tn.constructor_body).toString()+") parameters instead!");return ln.apply(this,arguments)}),dt=Object.create(fn,{constructor:{value:Bn}});Bn.prototype=dt;var tn=new Rl(Qt,Bn,dt,Qe,Kt,ke,de,bt),t=new Ds(Qt,tn,!0,!1,!1),xe=new Ds(Qt+"*",tn,!1,!1,!1),Qn=new Ds(Qt+" const*",tn,!1,!0,!1);return Sr[ot]={pointerType:xe,constPointerType:Qn},W0(tt,Bn),[t,xe,Qn]})}function co(ot,nt){for(var Fe=[],ze=0;ze>2]);return Fe}function C2(ot,nt){if(!(ot instanceof Function))throw new TypeError("new_ called with constructor type "+typeof ot+" which is not a function");var Fe=uo(ot.name||"unknownFunctionName",function(){});Fe.prototype=ot.prototype;var ze=new Fe,oe=ot.apply(ze,nt);return oe instanceof Object?oe:ze}function rs(ot,nt,Fe,ze,oe){var ke=nt.length;ke<2&&r0("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=nt[1]!==null&&Fe!==null,de=!1,Re=1;Re0?", ":"")+Ae),Qe+=(bt?"var rv = ":"")+"invoker(fn"+(Ae.length>0?", ":"")+Ae+`); +`,de)Qe+=`runDestructors(destructors); +`;else for(var Re=s?1:2;Re0);var s=co(nt,Fe);oe=Do(ze,oe),t0([],[ot],function(de){de=de[0];var Re="constructor "+de.name;if(de.registeredClass.constructor_body===void 0&&(de.registeredClass.constructor_body=[]),de.registeredClass.constructor_body[nt-1]!==void 0)throw new k0("Cannot register multiple constructors with identical number of parameters ("+(nt-1)+") for class '"+de.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return de.registeredClass.constructor_body[nt-1]=()=>{Ka("Cannot construct "+de.name+" due to unbound types",s)},t0([],s,function(bt){return bt.splice(1,0,null),de.registeredClass.constructor_body[nt-1]=rs(Re,bt,null,oe,ke),[]}),[]})}function Gs(ot,nt,Fe,ze,oe,ke,s,de){var Re=co(Fe,ze);nt=ki(nt),ke=Do(oe,ke),t0([],[ot],function(bt){bt=bt[0];var Qt=bt.name+"."+nt;nt.startsWith("@@")&&(nt=Symbol[nt.substring(2)]),de&&bt.registeredClass.pureVirtualFunctions.push(nt);function Ae(){Ka("Cannot call "+Qt+" due to unbound types",Re)}var Qe=bt.registeredClass.instancePrototype,tt=Qe[nt];return tt===void 0||tt.overloadTable===void 0&&tt.className!==bt.name&&tt.argCount===Fe-2?(Ae.argCount=Fe-2,Ae.className=bt.name,Qe[nt]=Ae):(us(Qe,nt,Qt),Qe[nt].overloadTable[Fe-2]=Ae),t0([],Re,function(xt){var Kt=rs(Qt,xt,bt,ke,s);return Qe[nt].overloadTable===void 0?(Kt.argCount=Fe-2,Qe[nt]=Kt):Qe[nt].overloadTable[Fe-2]=Kt,[]}),[]})}var Is=[],Os=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function So(ot){ot>4&&--Os[ot].refcount===0&&(Os[ot]=void 0,Is.push(ot))}function Aa(){for(var ot=0,nt=5;nt(ot||r0("Cannot use deleted val. handle = "+ot),Os[ot].value),toHandle:ot=>{switch(ot){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var nt=Is.length?Is.pop():Os.length;return Os[nt]={refcount:1,value:ot},nt}}}};function La(ot,nt){nt=ki(nt),Yi(ot,{name:nt,fromWireType:function(Fe){var ze=bo.toValue(Fe);return So(Fe),ze},toWireType:function(Fe,ze){return bo.toHandle(ze)},argPackAdvance:8,readValueFromPointer:ai,destructorFunction:null})}function C1(ot){if(ot===null)return"null";var nt=typeof ot;return nt==="object"||nt==="array"||nt==="function"?ot.toString():""+ot}function _1(ot,nt){switch(nt){case 2:return function(Fe){return this.fromWireType($t[Fe>>2])};case 3:return function(Fe){return this.fromWireType(Jt[Fe>>3])};default:throw new TypeError("Unknown float type: "+ot)}}function tl(ot,nt,Fe){var ze=x0(Fe);nt=ki(nt),Yi(ot,{name:nt,fromWireType:function(oe){return oe},toWireType:function(oe,ke){return ke},argPackAdvance:8,readValueFromPointer:_1(nt,ze),destructorFunction:null})}function F2(ot,nt,Fe,ze,oe,ke){var s=co(nt,Fe);ot=ki(ot),oe=Do(ze,oe),N2(ot,function(){Ka("Cannot call "+ot+" due to unbound types",s)},nt-1),t0([],s,function(de){var Re=[de[0],null].concat(de.slice(1));return W0(ot,rs(ot,Re,null,oe,ke),nt-1),[]})}function nl(ot,nt,Fe){switch(nt){case 0:return Fe?function(oe){return Ke[oe]}:function(oe){return qe[oe]};case 1:return Fe?function(oe){return ut[oe>>1]}:function(oe){return wt[oe>>1]};case 2:return Fe?function(oe){return Et[oe>>2]}:function(oe){return qt[oe>>2]};default:throw new TypeError("Unknown integer type: "+ot)}}function x1(ot,nt,Fe,ze,oe){nt=ki(nt);var ke=x0(Fe),s=Ae=>Ae;if(ze===0){var de=32-8*Fe;s=Ae=>Ae<>>de}var Re=nt.includes("unsigned"),bt=(Ae,Qe)=>{},Qt;Re?Qt=function(Ae,Qe){return bt(Qe,this.name),Qe>>>0}:Qt=function(Ae,Qe){return bt(Qe,this.name),Qe},Yi(ot,{name:nt,fromWireType:s,toWireType:Qt,argPackAdvance:8,readValueFromPointer:nl(nt,ke,ze!==0),destructorFunction:null})}function rl(ot,nt,Fe){var ze=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],oe=ze[nt];function ke(s){s=s>>2;var de=qt,Re=de[s],bt=de[s+1];return new oe(Ge,bt,Re)}Fe=ki(Fe),Yi(ot,{name:Fe,fromWireType:ke,argPackAdvance:8,readValueFromPointer:ke},{ignoreDuplicateRegistrations:!0})}function Al(ot,nt){nt=ki(nt);var Fe=nt==="std::string";Yi(ot,{name:nt,fromWireType:function(ze){var oe=qt[ze>>2],ke=ze+4,s;if(Fe)for(var de=ke,Re=0;Re<=oe;++Re){var bt=ke+Re;if(Re==oe||qe[bt]==0){var Qt=bt-de,Ae=Pe(de,Qt);s===void 0?s=Ae:(s+="\0",s+=Ae),de=bt+1}}else{for(var Qe=new Array(oe),Re=0;Re>2]=ke,Fe&&s)Je(oe,Re,ke+1);else if(s)for(var bt=0;bt255&&(Xn(Re),r0("String has UTF-16 code units that do not fit in 8 bits")),qe[Re+bt]=Qt}else for(var bt=0;bt>1,oe=ze+nt/2;!(ze>=oe)&&wt[ze];)++ze;if(Fe=ze<<1,Fe-ot>32&&S1)return S1.decode(qe.subarray(ot,Fe));for(var ke="",s=0;!(s>=nt/2);++s){var de=ut[ot+s*2>>1];if(de==0)break;ke+=String.fromCharCode(de)}return ke}function Nl(ot,nt,Fe){if(Fe===void 0&&(Fe=2147483647),Fe<2)return 0;Fe-=2;for(var ze=nt,oe=Fe>1]=s,nt+=2}return ut[nt>>1]=0,nt-ze}function bl(ot){return ot.length*2}function Fl(ot,nt){for(var Fe=0,ze="";!(Fe>=nt/4);){var oe=Et[ot+Fe*4>>2];if(oe==0)break;if(++Fe,oe>=65536){var ke=oe-65536;ze+=String.fromCharCode(55296|ke>>10,56320|ke&1023)}else ze+=String.fromCharCode(oe)}return ze}function il(ot,nt,Fe){if(Fe===void 0&&(Fe=2147483647),Fe<4)return 0;for(var ze=nt,oe=ze+Fe-4,ke=0;ke=55296&&s<=57343){var de=ot.charCodeAt(++ke);s=65536+((s&1023)<<10)|de&1023}if(Et[nt>>2]=s,nt+=4,nt+4>oe)break}return Et[nt>>2]=0,nt-ze}function Vl(ot){for(var nt=0,Fe=0;Fe=55296&&ze<=57343&&++Fe,nt+=4}return nt}function ol(ot,nt,Fe){Fe=ki(Fe);var ze,oe,ke,s,de;nt===2?(ze=Ll,oe=Nl,s=bl,ke=()=>wt,de=1):nt===4&&(ze=Fl,oe=il,s=Vl,ke=()=>qt,de=2),Yi(ot,{name:Fe,fromWireType:function(Re){for(var bt=qt[Re>>2],Qt=ke(),Ae,Qe=Re+4,tt=0;tt<=bt;++tt){var xt=Re+4+tt*nt;if(tt==bt||Qt[xt>>de]==0){var Kt=xt-Qe,fn=ze(Qe,Kt);Ae===void 0?Ae=fn:(Ae+="\0",Ae+=fn),Qe=xt+nt}}return Xn(Re),Ae},toWireType:function(Re,bt){typeof bt!="string"&&r0("Cannot pass non-string to C++ string type "+Fe);var Qt=s(bt),Ae=Sn(4+Qt+nt);return qt[Ae>>2]=Qt>>de,oe(bt,Ae+4,Qt+nt),Re!==null&&Re.push(Xn,Ae),Ae},argPackAdvance:8,readValueFromPointer:ai,destructorFunction:function(Re){Xn(Re)}})}function sl(ot,nt,Fe,ze,oe,ke){ui[ot]={name:ki(nt),rawConstructor:Do(Fe,ze),rawDestructor:Do(oe,ke),fields:[]}}function Ul(ot,nt,Fe,ze,oe,ke,s,de,Re,bt){ui[ot].fields.push({fieldName:ki(nt),getterReturnType:Fe,getter:Do(ze,oe),getterContext:ke,setterArgumentType:s,setter:Do(de,Re),setterContext:bt})}function T1(ot,nt){nt=ki(nt),Yi(ot,{isVoid:!0,name:nt,argPackAdvance:0,fromWireType:function(){},toWireType:function(Fe,ze){}})}var E1={};function al(ot){var nt=E1[ot];return nt===void 0?ki(ot):nt}function X2(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function D1(ot){return ot===0?bo.toHandle(X2()):(ot=al(ot),bo.toHandle(X2()[ot]))}function ll(ot){ot>4&&(Os[ot].refcount+=1)}function I1(ot,nt){var Fe=e0[ot];return Fe===void 0&&r0(nt+" has unknown type "+q2(ot)),Fe}function O1(ot){for(var nt="",Fe=0;Feqt,oe="return function emval_allocator_"+ot+`(constructor, argTypes, args) { + var HEAPU32 = getMemory(); +`,Fe=0;Fe>2)], 'parameter "+Fe+`'); +var arg`+Fe+" = argType"+Fe+`.readValueFromPointer(args); +args += argType`+Fe+`['argPackAdvance']; +argTypes += 4; +`;return oe+="var obj = new constructor("+nt+`); +return valueToHandle(obj); +} +`,new Function("requireRegisteredType","Module","valueToHandle","getMemory",oe)(I1,c,bo.toHandle,ze)}var ul={};function cl(ot,nt,Fe,ze){ot=bo.toValue(ot);var oe=ul[nt];return oe||(oe=O1(nt),ul[nt]=oe),oe(ot,Fe,ze)}function Bl(ot,nt){ot=I1(ot,"_emval_take_value");var Fe=ot.readValueFromPointer(nt);return bo.toHandle(Fe)}function Gl(){gn("")}function Y2(){return 2147483648}function M1(){return Y2()}function u2(ot,nt,Fe){qe.copyWithin(ot,nt,nt+Fe)}function _2(ot){try{return ge.grow(ot-Ge.byteLength+65535>>>16),Dn(ge.buffer),1}catch{}}function Na(ot){var nt=qe.length;ot=ot>>>0;var Fe=Y2();if(ot>Fe)return!1;let ze=(Re,bt)=>Re+(bt-Re%bt)%bt;for(var oe=1;oe<=4;oe*=2){var ke=nt*(1+.2/oe);ke=Math.min(ke,ot+100663296);var s=Math.min(Fe,ze(Math.max(ot,ke),65536)),de=_2(s);if(de)return!0}return!1}var x2={};function J2(){return T||"./this.program"}function Ws(){if(!Ws.strings){var ot=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",nt={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:ot,_:J2()};for(var Fe in x2)x2[Fe]===void 0?delete nt[Fe]:nt[Fe]=x2[Fe];var ze=[];for(var Fe in nt)ze.push(Fe+"="+nt[Fe]);Ws.strings=ze}return Ws.strings}function ka(ot,nt,Fe){for(var ze=0;ze>0]=ot.charCodeAt(ze);Ke[nt>>0]=0}function V2(ot,nt){var Fe=0;return Ws().forEach(function(ze,oe){var ke=nt+Fe;qt[ot+oe*4>>2]=ke,ka(ze,ke),Fe+=ze.length+1}),0}function P1(ot,nt){var Fe=Ws();qt[ot>>2]=Fe.length;var ze=0;return Fe.forEach(function(oe){ze+=oe.length+1}),qt[nt>>2]=ze,0}function Tt(ot){return 52}function It(ot,nt,Fe,ze,oe){return 70}var dn=[null,[],[]];function qn(ot,nt){var Fe=dn[ot];nt===0||nt===10?((ot===1?ee:ne)(Ve(Fe,0)),Fe.length=0):Fe.push(nt)}function cr(ot,nt,Fe,ze){for(var oe=0,ke=0;ke>2],de=qt[nt+4>>2];nt+=8;for(var Re=0;Re>2]=oe,0}function ft(ot){var nt=c["_"+ot];return nt}function gt(ot,nt){Ke.set(ot,nt)}function Ft(ot,nt,Fe,ze,oe){var ke={string:xt=>{var Kt=0;if(xt!=null&&xt!==0){var fn=(xt.length<<2)+1;Kt=ht(fn),Je(xt,Kt,fn)}return Kt},array:xt=>{var Kt=ht(xt.length);return gt(xt,Kt),Kt}};function s(xt){return nt==="string"?Pe(xt):nt==="boolean"?!!xt:xt}var de=ft(ot),Re=[],bt=0;if(ze)for(var Qt=0;Qt{oe.byteLength&&(oe=new Uint8Array(oe)),qe.set(oe,1024),c.memoryInitializerRequest&&delete c.memoryInitializerRequest.response,Vt()},Fe=()=>{z(Bt,nt,function(){var oe=new Error("could not load memory initializer "+Bt);v(oe)})};if(c.memoryInitializerRequest){var ze=()=>{var oe=c.memoryInitializerRequest,ke=oe.response;if(oe.status!==200&&oe.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+oe.status+", retrying "+Bt),Fe();return}nt(ke)};c.memoryInitializerRequest.response?setTimeout(ze,0):c.memoryInitializerRequest.addEventListener("load",ze)}else Fe()}}var _t;Kn=function ot(){_t||dr(),_t||(Kn=ot)};function dr(ot){if(Hn>0||(st(),Hn>0))return;function nt(){_t||(_t=!0,c.calledRun=!0,!pe&&(yt(),g(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),St()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),nt()},1)):nt()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return dr(),l.ready}})();n.exports=o})(_Ee);function uF(n,e){const o=Hr("imagePlaneModule",n);if(!o)return;const{rowCosines:i,columnCosines:l,imagePositionPatient:c,rowPixelSpacing:g,columnPixelSpacing:v}=o;if(!i||!l||!c)return;const _=v||1,T=g||1,P=i,I=l,R=c;return[R[0]+e.x*I[0]*_+e.y*P[0]*T,R[1]+e.x*I[1]*_+e.y*P[1]*T,R[2]+e.x*I[2]*_+e.y*P[2]*T]}window.cornerstone3dTools=Zxe;const{MouseBindings:O3,KeyboardBindings:cF}=Mz,{IMAGE_RENDERED:fF}=vr,xEe=[{name:"Soft Tissue",center:40,width:400},{name:"Lung",center:-600,width:1500},{name:"Bone",center:300,width:1500},{name:"Brain",center:40,width:80},{name:"Abdomen",center:60,width:400}],M3=[{label:"Window/Level",value:P8.toolName},{label:"Pan",value:M8.toolName},{label:"Zoom",value:A8.toolName},{label:"Stack Scroll",value:Yg.toolName},{label:"Rotate",value:R8.toolName},{label:"Length",value:r4.toolName},{label:"Probe",value:Dh.toolName},{label:"Arrow (No Label)",value:Dv.toolName},{label:"Arrow Annotate",value:Ih.toolName},{label:"Rectangle ROI",value:Eh.toolName},{label:"Ellipse ROI",value:Jg.toolName},{label:"Freehand ROI",value:n4.toolName},{label:"Freehand Contour Segmentation",value:vf.toolName},{label:"Sculptor",value:L8.toolName},{label:"Reference Cursors",value:Yl.toolName}],hF=[{label:"Left",value:"Primary"},{label:"Middle",value:"Auxiliary"},{label:"Right",value:"Secondary"}],v7=[{label:"Left",value:"Primary",mask:1},{label:"Middle",value:"Auxiliary",mask:4},{label:"Right",value:"Secondary",mask:2},{label:"Left + Right",value:"Primary_and_Secondary",mask:3},{label:"Left + Middle",value:"Primary_and_Auxiliary",mask:5},{label:"Right + Middle",value:"Secondary_and_Auxiliary",mask:6},{label:"Left + Right + Middle",value:"Primary_and_Secondary_and_Auxiliary",mask:7},{label:"Fourth Button",value:"Fourth_Button",mask:8},{label:"Fifth Button",value:"Fifth_Button",mask:16},{label:"Mouse Wheel",value:"Wheel",mask:524288},{label:"Mouse Wheel + Left",value:"Wheel_Primary",mask:524289}];function dF({container_id:n,imageStacks:e,autoCacheStack:o,annotationJson:i,viewerState:l,...c}){var Yi,jo,ga,Ma,Co,ls;const g=Xi.useRef(null),v=Xi.useRef(!1),[_,T]=Xi.useState(!1),[P,I]=Xi.useState(!1),[R,L]=Xi.useState(null),[V,U]=Xi.useState(null),j=9,z="renderingEngine_"+n,$="TOOL_GROUP_"+n,K=Xi.useRef(null),X=Xi.useRef(!1),[ee,ne]=Xi.useState([]),[le,ce]=Xi.useState(0),[ge,pe]=Xi.useState(()=>Array(j).fill([])),[we,Te]=Xi.useState(()=>Array(j).fill(0)),[Ve,Pe]=Xi.useState(null);Xi.useEffect(()=>{let pn=!1;if(i||l){Pe(i?"annotations":"viewerState");const yr=setTimeout(()=>{if(pn)return;const Fn=n||"default";if(i)try{const Mn=window[`importAnnotations_${Fn}`]||window.importAnnotations;typeof Mn=="function"&&Mn(i)}catch(Mn){console.error("Failed to import annotations from prop:",Mn)}if(l)try{const Mn=window[`importViewerState_${Fn}`]||window.importViewerState;typeof Mn=="function"&&Mn(l)}catch(Mn){console.error("Failed to import viewer state from prop:",Mn)}Pe(null)},800);return()=>{pn=!0,clearTimeout(yr),Pe(null)}}},[i,l,n]),Xi.useEffect(()=>{e().then(async pn=>{const yr=await Promise.all(pn.map(async Fn=>{let Mn;try{const Sr=Fn[0];if(Sr&&Sr.startsWith("wadouri:")){const Ar=Sr.slice(8),qr=await(await fetch(Ar)).arrayBuffer();Mn=Fs.parseDicom(new Uint8Array(qr)).string("x0020000d")}}catch{}return{imageIds:Fn,studyInstanceUID:Mn}}));ne(yr),await $t(pn[0]),pe(Array(j).fill(pn[0]||[]))})},[]);const je=async(pn,yr)=>{const Fn=ee[yr];if(!Fn)return;const Mn=Fn.imageIds;Dt(Sr=>{const Ar=[...Sr];return Ar[pn]="stack",Ar}),pe(Sr=>{const Ar=[...Sr];return Ar[pn]=Mn,Ar}),Te(Sr=>{const Ar=[...Sr];return Ar[pn]=yr,Ar}),await $t(Mn)},[Je,it]=Xi.useState(!1),[Ge,Ke]=Xi.useState(!0),[qe,ut]=Xi.useState(!1),[wt,Et]=Xi.useState(!1),qt=()=>{console.log("Sorting viewport imageIds by slice location"),pe(pn=>pn.map((Fn,Mn)=>{if(!Fn||Fn.length===0)return Fn;const Lr=[...Fn.map(qr=>{const Vr=Hr("imagePlaneModule",qr);let Si=null;return Vr&&(Vr.sliceLocation!==void 0?Si=Number(Vr.sliceLocation):Vr.imagePositionPatient&&Array.isArray(Vr.imagePositionPatient)&&Vr.imagePositionPatient.length===3&&(Si=Number(Vr.imagePositionPatient[2]))),{imageId:qr,sortKey:Si}})].sort((qr,Vr)=>qr.sortKey!==null&&Vr.sortKey!==null?qr.sortKey-Vr.sortKey:qr.imageId.localeCompare(Vr.imageId)).map(qr=>qr.imageId);return JSON.stringify(Lr)===JSON.stringify(Fn)?Fn:Lr}))},$t=async pn=>{console.log("Setting loaded imageIds:",pn),console.log("autoCacheStack:",o);const yr=[];if(o){for(const Fn of pn)if(Fn.startsWith("wadouri:")){console.log("Caching metadata for imageId:",Fn);try{const Mn=Fn.slice(8);if(lF.wadouri.dataSetCacheManager){const Sr=lF.wadouri.dataSetCacheManager.load(Mn);Sr&&typeof Sr.then=="function"&&yr.push(Sr)}else console.warn("MetaDataManager not found. Unable to cache metadata.")}catch(Mn){console.warn(`Failed to cache metadata for ${Fn}:`,Mn)}}await Promise.all(yr),st&&(console.log("Sorting viewport imageIds by slice location"),qt())}},[Jt,Dn]=Xi.useState({rows:1,cols:1}),[Nn,xn]=Xi.useState(!1),et=Xi.useRef([]),Me=Xi.useRef({}),ct=Xi.useRef({}),[st,yt]=Xi.useState(!0),[St,Pt]=Xi.useState(!0),mn=[];for(let pn=1;pn<=3;pn++)for(let yr=1;yr<=3;yr++)mn.push({rows:pn,cols:yr});const[Pn,Hn]=Xi.useState(()=>Array(Jt.rows*Jt.cols).fill({index:0,total:0,windowCenter:"",windowWidth:""})),[Kn,Dt]=Xi.useState(()=>Array(j).fill("stack")),[Vt,gn]=Xi.useState(()=>Array(Jt.rows*Jt.cols).fill(!1)),[Bt,rn]=Xi.useState({Primary:Yg.toolName,Auxiliary:M8.toolName,Secondary:P8.toolName,Primary_and_Secondary:A8.toolName,Fourth_Button:R8.toolName,Wheel:Yg.toolName}),[Zn,Ut]=Xi.useState({Primary:r4.toolName,Auxiliary:Dh.toolName,Secondary:Ih.toolName}),[Ir,br]=Xi.useState(!1);Xi.useEffect(()=>{const pn=Fn=>{Fn.ctrlKey&&br(!0)},yr=Fn=>{Fn.ctrlKey||br(!1)};return window.addEventListener("keydown",pn),window.addEventListener("keyup",yr),()=>{window.removeEventListener("keydown",pn),window.removeEventListener("keyup",yr)}},[]);const[jr,An]=Xi.useState(!1),[hr,Cr]=Xi.useState(null),wr=(pn,yr)=>{q1&&q1(yr),ki(Fn=>{const Mn=[...Fn];return Mn[pn]=yr,Mn})},Fr=(pn,yr,Fn)=>{const Mn=$a.getAllAnnotations()||[];Mn.forEach(Ar=>{Ar.annotationUID===yr&&(Ar.isSelected=!1)}),$a.removeAnnotation(yr),K.current.render();const Sr=Fn.filter(Ar=>Ar.annotationUID!==yr);ki(Ar=>{const Lr=[...Ar],qr=Sr.length>0?Sr[0].annotationUID:null;return Lr[pn]=qr,Mn.forEach(Vr=>{Vr.isSelected=Vr.annotationUID===qr}),q1(qr),K.current.render(),Lr})},ui=()=>{const pn=ge.findIndex(Sr=>Sr&&Sr.length>0);if(pn===-1){Cr("No images loaded."),An(!0);return}const yr=ge[pn][0],Fn=["imagePlaneModule","generalSeriesModule","generalStudyModule","patientModule","imagePixelModule","voiLutModule","modalityLutModule","sopCommonModule","petIsotopeModule","multiframeModule","cineModule","overlayPlaneModule","generalImageModule","stackModule","voiLutModule","modalityLutModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule"],Mn={};Fn.forEach(Sr=>{const Ar=Hr(Sr,yr);Ar!==void 0&&(Mn[Sr]=Ar)}),Cr(Ur.jsx("pre",{style:{maxHeight:600,overflow:"auto",fontSize:13,color:"#fff"},children:JSON.stringify(Mn,null,2)})),An(!0)};Xi.useEffect(()=>(window.loadDicomStackFromFiles=pn=>{const yr=Array.from(pn);T0({target:{files:yr}})},()=>{window.loadDicomStackFromFiles=void 0}),[]);const[Kr,ai]=Xi.useState(!1);Xi.useEffect(()=>{const pn=la($);pn&&["ArrowAnnotate","NoLabelArrowAnnotate","Length","RectangleROI","EllipticalROI","PlanarFreehandROI","PlanarFreehandContourSegmentation"].forEach(yr=>{pn.setToolConfiguration(yr,{color:"#00e676",selectedColor:"#ffeb3b"})})},[$]),Xi.useEffect(()=>{const pn=Fn=>{Fn.altKey&&ai(!0)},yr=Fn=>{Fn.altKey||ai(!1)};return window.addEventListener("keydown",pn),window.addEventListener("keyup",yr),()=>{window.removeEventListener("keydown",pn),window.removeEventListener("keyup",yr)}},[]),Xi.useEffect(()=>{if(!St)return;const pn=la($);pn&&(Kr?(pn.hasTool(Yl.toolName)||pn.addTool(Yl.toolName),pn.setToolEnabled(Yl.toolName),pn.setToolActive(Yl.toolName)):pn.hasTool(Yl.toolName)&&pn.setToolDisabled(Yl.toolName))},[Kr,St]);const vi=Xi.useCallback(()=>{[la($)].forEach(yr=>{if(yr){M3.forEach(Mn=>{yr.setToolPassive(Mn.value,{removeAllBindings:!0})}),yr.setToolDisabled(Yl.toolName);const Fn={};Object.entries(Bt).forEach(([Mn,Sr])=>{Fn[Sr]||(Fn[Sr]=[]);const Ar=v7.find(Lr=>Lr.value===Mn);Ar?Fn[Sr].push({mouseButton:Ar.mask}):O3[Mn]&&Fn[Sr].push({mouseButton:O3[Mn]})}),Object.entries(Zn).forEach(([Mn,Sr])=>{if(!Sr)return;Fn[Sr]||(Fn[Sr]=[]);const Ar=v7.find(Lr=>Lr.value===Mn);Ar?Fn[Sr].push({mouseButton:Ar.mask,modifierKey:cF.Ctrl}):O3[Mn]&&Fn[Sr].push({mouseButton:O3[Mn],modifierKey:cF.Ctrl})}),Object.entries(Fn).forEach(([Mn,Sr])=>{yr.setToolActive(Mn,{bindings:Sr})})}})},[Bt,Zn]),[e0,p0]=Xi.useState(!1),Hi=Xi.useRef(null),T0=async pn=>{const yr=pn.target.files;if(!yr||yr.length===0)return;yt(!1);const Fn=Array.from(yr).sort((qr,Vr)=>qr.name.localeCompare(Vr.name));let Mn;const Sr=await Fn[0].arrayBuffer();Mn=Fs.parseDicom(new Uint8Array(Sr)).string("x0020000d"),console.log("StudyInstanceUID:",Mn);const Lr=Fn.map(qr=>`wadouri:${URL.createObjectURL(qr)}`);ne(qr=>{const Vr=[...qr,{imageIds:Lr,studyInstanceUID:Mn}];return pe(Si=>{const Ui=[...Si];return Ui[0]=Lr,Ui}),Te(Si=>{const Ui=[...Si];return Ui[0]=Vr.length-1,Ui}),$t(Lr),Vr})},wo=Xi.useCallback((pn,yr)=>{if(!yr)return;const Fn=typeof yr.getCurrentImageIdIndex=="function"?yr.getCurrentImageIdIndex():0,Sr=(typeof yr.getImageIds=="function"?yr.getImageIds():[]).length;let Ar="",Lr="";if(typeof yr.getProperties=="function"){const qr=yr.getProperties();if(qr.voiRange){const{lower:Vr,upper:Si}=qr.voiRange;Ar=((Si+Vr)/2).toFixed(0),Lr=(Si-Vr).toFixed(0)}}Hn(qr=>{const Vr=[...qr];return Vr[pn]={index:Fn+1,total:Sr,windowCenter:Ar,windowWidth:Lr},Vr})},[]),[uo,Yn]=Xi.useState(!1);function Tr(){for(let pn=0;pn{const pn=async()=>{var Ar;console.log("setup"),v.current||(v.current=!0,await m2e(),await Rq(),PJ());let Fn=K.current;Fn||(Fn=new Xj(z),K.current=Fn);let Mn=la($);Mn||(Mn=SEe($)),Kn.slice(0,Jt.rows*Jt.cols).filter(Lr=>Lr==="volume").length,Mo(Mn);for(let Lr=0;Lr{if(Si.offsetWidth>0&&Si.offsetHeight>0){Fn.resize();const L0=Fn.getViewport(Vr);L0&&typeof L0.resize=="function"&&L0.resize(),L0&&typeof L0.render=="function"&&L0.render()}});yi.observe(Si),Si._resizeObserver=yi}if(Kn[Lr]==="stack")qr&&!X.current&&S0.setStack(qr),Je?Mn.removeViewports(z,Vr):Mn.addViewport(Vr,z);else if(Kn[Lr]==="volume"){Mn.addViewport(Vr,z);const yi=`myVolumeId_${Lr}`;(await ZO(yi,{imageIds:qr})).load(),S0.setVolumes([{volumeId:yi}]),S0.render();continue}if(S0.render(),!X.current){ct.current[Lr]!==void 0&&typeof S0.setImageIdIndex=="function"&&Yc(S0.element,{imageIndex:ct.current[Lr]});const yi=Me.current[Lr];if(yi&&typeof S0.setProperties=="function"){const{voiRange:L0,invert:Z0,interpolationType:oo,VOILUTFunction:_o,colormap:Bo}=yi,xo={};L0&&L0.lower!==void 0&&L0.upper!==void 0&&(xo.voiRange=L0),Z0!==void 0&&(xo.invert=Z0),oo!==void 0&&(xo.interpolationType=oo),_o&&(xo.VOILUTFunction=_o),Bo!=null&&(typeof Bo=="string"||typeof Bo=="object"&&!("actor"in Bo))&&(xo.colormap=Bo),setTimeout(()=>{console.log("Restoring properties (timeout) for viewport",Lr,xo),S0.setProperties(xo),S0.render()},100)}}Si._overlayListener&&S0.element.removeEventListener(fF,Si._overlayListener);const i0=()=>wo(Lr,S0);S0.element.addEventListener(fF,i0),Si._overlayListener=i0,wo(Lr,S0)}for(let Lr=0;Lr=2?(Mn.hasTool(Jc.toolName)||Mn.addTool(Jc.toolName),Mn.setToolEnabled(Jc.toolName),Mn.setToolConfiguration(Jc.toolName,{}),Mn.setToolActive(Jc.toolName,{bindings:[{mouseButton:O3.Primary}]})):Mn.hasTool(Jc.toolName)&&Mn.setToolDisabled(Jc.toolName)),vi()},yr=requestAnimationFrame(()=>{pn()});return()=>{et.current.forEach(Fn=>{Fn&&Fn._resizeObserver&&(Fn._resizeObserver.disconnect(),delete Fn._resizeObserver)}),cancelAnimationFrame(yr)}},[g,wo,Jt,Kn,ge]);const Ai=Xi.useCallback(pn=>{const yr=`CT_${pn}`,Mn=K.current.getViewport(yr);Mn&&typeof Mn.resetCamera=="function"&&(Mn.resetCamera(),console.log("Restoring viewport properties for viewport",pn),Mn.resetProperties(),Mn.render())},[]),t0=Xi.useCallback((pn,yr,Fn)=>{const Mn=`CT_${pn}`;try{const Sr=K.current;if(Sr){const Ar=Sr.getViewport(Mn);Ar&&typeof Ar.setProperties=="function"&&(console.log(`Applying preset to viewport ${pn}: center=${yr}, width=${Fn}`),Ar.setProperties({voiRange:{lower:yr-Fn/2,upper:yr+Fn/2}}),Ar.render(),wo(pn,Ar))}}catch{}},[wo]);Xi.useEffect(()=>{Hn(Array(Jt.rows*Jt.cols).fill({index:0,total:0,windowCenter:"",windowWidth:""})),gn(Array(Jt.rows*Jt.cols).fill(!1))},[Jt]),Xi.useEffect(()=>{vi()},[Bt,Zn,Ir,vi]),Xi.useEffect(()=>{if(!_)return;const pn=yr=>{const Fn=document.querySelector(".preset-menu");Fn&&!Fn.contains(yr.target)&&T(!1)};return document.addEventListener("mousedown",pn),()=>document.removeEventListener("mousedown",pn)},[_]),Xi.useEffect(()=>{const pn=yr=>{yr.preventDefault()};return document.addEventListener("contextmenu",pn),()=>{document.removeEventListener("contextmenu",pn)}},[]),Xi.useEffect(()=>{if(!Ge)return;const pn=la($);Mo(pn)},[le,Ge]),Xi.useEffect(()=>{Hi.current&&(Hi.current.setAttribute("webkitdirectory","true"),Hi.current.setAttribute("directory","true"))},[]),Xi.useEffect(()=>(window.loadDicomStackFromWadouriList=async pn=>{if(!pn||pn.length===0)return;let yr;try{const Fn=pn[0];if(Fn&&Fn.startsWith("wadouri:")){const Mn=Fn.slice(8),Ar=await(await fetch(Mn)).arrayBuffer();yr=Fs.parseDicom(new Uint8Array(Ar)).string("x0020000d")}}catch{}ne(Fn=>{const Mn=[...Fn,{imageIds:pn,studyInstanceUID:yr}];return pe(Sr=>{const Ar=[...Sr];return Ar[0]=pn,Ar}),Te(Sr=>{const Ar=[...Sr];return Ar[0]=Mn.length-1,Ar}),$t(pn),Mn})},()=>{window.loadDicomStackFromWadouriList=void 0}),[ne,pe,Te,$t]),Xi.useEffect(()=>{!st||!ge.every(yr=>!yr||yr.length===0||yr.every(Fn=>!!Hr("imagePlaneModule",Fn)))||pe(yr=>yr.map(Mn=>{if(!Mn||Mn.length===0)return Mn;const Lr=[...Mn.map(qr=>({imageId:qr,sliceLoc:(()=>{const Vr=Hr("imagePlaneModule",qr);return Vr&&Vr.sliceLocation!==void 0?Number(Vr.sliceLocation):null})()}))].sort((qr,Vr)=>qr.sliceLoc!==null&&Vr.sliceLoc!==null?qr.sliceLoc-Vr.sliceLoc:qr.imageId.localeCompare(Vr.imageId)).map(qr=>qr.imageId);return JSON.stringify(Lr)===JSON.stringify(Mn)?Mn:Lr}))},[st,ee]);function Mo(pn){if(!pn)return;const yr=`CT_${le}`;Ge?(pn.setToolEnabled(Rg.toolName),pn.setToolConfiguration(Rg.toolName,{sourceViewportId:yr})):pn.setToolDisabled(Rg.toolName)}Xi.useEffect(()=>{const pn=n||"default";function yr(Fn,Mn){const Sr=K.current;if(!Sr)return;const Ar=Sr.getViewport(`CT_${Fn}`);if(!Ar||typeof Ar.getImageIds!="function")return;const qr=Ar.getImageIds().map(Ui=>Ui.replace(/^wadouri:/,"")),Vr=Mn.replace(/^wadouri:/,""),Si=qr.indexOf(Vr);Si!==-1&&typeof Ar.setImageIdIndex=="function"&&(Yc(Ar.element,{imageIndex:Si}),wo(Fn,Ar))}return window[`jumpToSliceByImageId_${pn}`]=yr,window[`exportViewerState_${pn}`]=()=>{const Fn=Jt.rows*Jt.cols,Mn=Kn.slice(0,Fn),Sr=we.slice(0,Fn),Ar=ee.map(S0=>({i:S0.imageIds,u:S0.studyInstanceUID})),Lr=K.current,qr=[],Vr=[],Si=[];for(let S0=0;S0{try{X.current=!0;const Mn=typeof Fn=="string"?JSON.parse(Fn):Fn;if(Mn.grid&&Dn(Mn.grid),Mn.modes&&Dt(Mn.modes),Mn.stacks&&ne(Mn.stacks.map(Sr=>({imageIds:Sr.i,studyInstanceUID:Sr.u}))),Mn.stackIdx&&Mn.stacks){const Sr=Mn.stackIdx.map(Ar=>{var Lr;return((Lr=Mn.stacks[Ar])==null?void 0:Lr.i)||[]});pe(Sr),Te(Mn.stackIdx)}setTimeout(()=>{var Lr,qr;const Sr=K.current;if(!Sr){X.current=!1;return}const Ar=((Lr=Mn.grid)==null?void 0:Lr.rows)*((qr=Mn.grid)==null?void 0:qr.cols)||1;for(let Vr=0;Vr{try{let Fn=$a.getAllAnnotations();if(console.log("Exporting annotations:",Fn),Array.isArray(Fn)){const Mn=[r4.toolName,Dv.toolName,Ih.toolName,Eh.toolName,Jg.toolName,n4.toolName,vf.toolName,Dh.toolName,L8.toolName];Fn=Fn.filter(Sr=>Mn.includes(Sr.metadata.toolName))}else return"{}";return JSON.stringify(Fn,null,2)}catch(Fn){return alert("Failed to export annotations: "+Fn),"{}"}},window[`importAnnotations_${pn}`]=Fn=>{try{const Mn=typeof Fn=="string"?JSON.parse(Fn):Fn;$a.removeAllAnnotations&&$a.removeAllAnnotations(),Array.isArray(Mn)&&Mn.forEach(Sr=>{$a.addAnnotation(Sr,Sr.annotationUID)}),K.current&&K.current.render()}catch(Mn){alert("Failed to import annotations: "+Mn)}},window[`importLegacyAnnotations_${pn}`]=Fn=>{$a.removeAllAnnotations&&$a.removeAllAnnotations();let Mn;try{Mn=typeof Fn=="string"?JSON.parse(Fn):Fn}catch{alert("Invalid legacy annotation JSON");return}const Sr={ArrowAnnotate:"ArrowAnnotate"};Object.entries(Mn).forEach(([Ar,Lr])=>{console.log("Importing legacy annotations for imageId:",Ar),Object.entries(Lr).forEach(([qr,Vr])=>{const Si=Sr[qr]||qr;Vr.data&&Array.isArray(Vr.data)&&Vr.data.forEach(Ui=>{const S0=uF(Ar,{x:Ui.handles.start.y,y:Ui.handles.start.x}),i0=uF(Ar,{x:Ui.handles.end.y,y:Ui.handles.end.x});console.log("Importing legacy annotation:"),console.log(" Image ID:",Ar),console.log(" Start World:",S0),console.log(" End World:",i0);const yi=Hr("imagePlaneModule",Ar);console.log(P$);let L0=Hr("frameOfReferenceUID",Ar);!L0&&yi&&yi.frameOfReferenceUID&&(L0=yi.frameOfReferenceUID);const Z0=yi!=null&&yi.rowCosines&&(yi!=null&&yi.columnCosines)?[yi.rowCosines[1]*yi.columnCosines[2]-yi.rowCosines[2]*yi.columnCosines[1],yi.rowCosines[2]*yi.columnCosines[0]-yi.rowCosines[0]*yi.columnCosines[2],yi.rowCosines[0]*yi.columnCosines[1]-yi.rowCosines[1]*yi.columnCosines[0]]:void 0;Array.isArray(Z0)&&Z0.length,typeof Ui.rotation=="number"&&Ui.rotation;const oo={annotationUID:Ui.uuid,metadata:{toolName:Si,referencedImageId:Ar,FrameOfReferenceUID:L0,viewPlaneNormal:Z0},data:{handles:{points:[S0,i0],textBox:Ui.handles.textBox},text:Ui.text||""},visibility:Ui.visible!==!1,active:Ui.active||!1};$a.addAnnotation(oo,oo.annotationUID)})})}),K.current&&K.current.render()},window[`importLegacyViewport_${pn}`]=Fn=>{let Mn;try{Mn=typeof Fn=="string"?JSON.parse(Fn):Fn}catch{alert("Invalid legacy viewport JSON");return}const Sr=K.current;if(!Sr)return;const Ar=`CT_${le??0}`,Lr=Sr.getViewport(Ar);if(!Lr)return;const qr={};if(Mn.voi&&(qr.voiRange={lower:Mn.voi.windowCenter-Mn.voi.windowWidth/2,upper:Mn.voi.windowCenter+Mn.voi.windowWidth/2}),typeof Mn.invert=="boolean"&&(qr.invert=Mn.invert),typeof Mn.pixelReplication=="boolean"&&(qr.interpolationType=Mn.pixelReplication?0:1),typeof Mn.hflip=="boolean"&&(qr.hflip=Mn.hflip),typeof Mn.vflip=="boolean"&&(qr.vflip=Mn.vflip),typeof Lr.setProperties=="function"&&Lr.setProperties(qr),Mn.translation||Mn.scale){const Vr=Lr.getCamera?Lr.getCamera():{};Mn.translation&&(Vr.translation={...Vr.translation,...Mn.translation}),Mn.scale&&(Vr.parallelScale=200/Mn.scale),console.log("Applying legacy camera properties:",Vr),typeof Lr.setCamera=="function"&&Lr.setCamera(Vr)}typeof Mn.rotation=="number"&&Lr.setRotation(Mn.rotation),Lr.render(),wo(le??0,Lr)},()=>{window[`exportViewerState_${pn}`]=void 0,window[`importViewerState_${pn}`]=void 0,window[`exportAnnotations_${pn}`]=void 0,window[`importAnnotations_${pn}`]=void 0,window[`importLegacyAnnotations_${pn}`]=void 0,window[`importLegacyViewport_${pn}`]=void 0,window[`jumpToSliceByImageId_${pn}`]=void 0}},[Jt,Kn,we,ee,ge,Dn,Dt,Te,ne,pe]);const Fi=le!==null?we[le]:0,x0=ee[Fi],xi=x0==null?void 0:x0.studyInstanceUID,[Ki,ki]=Xi.useState(()=>Array(j).fill(null)),k0=Jt.rows*Jt.cols,r0=[];for(let pn=0;pnet.current[pn]=Fn,style:{flex:1,border:yr?"1px solid #222":"none",background:"#000",minWidth:0,minHeight:0,position:"relative",overflow:"hidden",flexDirection:"column",gridRow:Math.floor(pn/Jt.cols)+1,gridColumn:pn%Jt.cols+1,height:"100%",boxShadow:le===pn?"0 0 0 4px #1976d2, 0 0 16px 4px #1976d2cc":void 0,zIndex:le===pn?10:1},onClick:()=>ce(pn),onDoubleClick:()=>Ai(pn),children:[Ur.jsx("button",{style:{position:"absolute",top:8,left:8,zIndex:20,background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 8px",cursor:"pointer",fontSize:"12px",opacity:.85},onClick:()=>{Dt(Fn=>{const Mn=[...Fn];return Mn[pn]=Fn[pn]==="stack"?"volume":"stack",Mn})},children:Kn[pn]==="stack"?"Volume":"Stack"}),Kn[pn]==="volume"&&Ur.jsxs("div",{style:{position:"absolute",top:8,left:70,zIndex:21,display:"flex",gap:"6px",background:"rgba(34,34,34,0.85)",borderRadius:"4px",padding:"2px 6px",alignItems:"center"},children:[Ur.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const Fn=K.current,Mn=Fn==null?void 0:Fn.getViewport(`CT_${pn}`);Mn&&Mn.setOrientation&&(Mn.setOrientation("axial"),Mn.render())},children:"Axial"}),Ur.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const Fn=K.current,Mn=Fn==null?void 0:Fn.getViewport(`CT_${pn}`);Mn&&Mn.setOrientation&&(Mn.setOrientation("sagittal"),Mn.render())},children:"Sagittal"}),Ur.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px"},onClick:()=>{const Fn=K.current,Mn=Fn==null?void 0:Fn.getViewport(`CT_${pn}`);Mn&&Mn.setOrientation&&(Mn.setOrientation("coronal"),Mn.render())},children:"Coronal"})]}),Ur.jsxs("button",{style:{position:"absolute",top:40,left:8,zIndex:20,background:"#111",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 8px",cursor:"pointer",fontSize:"13px",opacity:.85,marginTop:"4px",display:"flex",alignItems:"center",gap:"6px"},title:"Toggle Fullscreen",onClick:Fn=>{Fn.stopPropagation();const Mn=et.current[pn];document.fullscreenElement===Mn?document.exitFullscreen():Mn!=null&&Mn.requestFullscreen?Mn.requestFullscreen():Mn!=null&&Mn.webkitRequestFullscreen?Mn.webkitRequestFullscreen():Mn!=null&&Mn.msRequestFullscreen&&Mn.msRequestFullscreen()},onMouseEnter:()=>L(pn),onMouseLeave:()=>L(null),children:[Ur.jsx("span",{style:{fontSize:"18px",lineHeight:1},children:"⛶"}),R===pn&&Ur.jsx("span",{style:{marginLeft:6},children:document.fullscreenElement===et.current[pn]?"Exit Fullscreen":"Fullscreen"})]}),"// Annotations buttons",Kn[pn]==="stack"&&(()=>{var S0;const Fn=ge[pn],Sr=($a.getAllAnnotations()||[]).filter(i0=>i0.metadata&&i0.metadata.referencedImageId&&Fn.includes(i0.metadata.referencedImageId)&&i0.metadata.toolName!==Yl.toolName);if(!Sr.length)return null;const Ar=K.current,Lr=Ar==null?void 0:Ar.getViewport(`CT_${pn}`),qr=((S0=Lr==null?void 0:Lr.getCurrentImageIdIndex)==null?void 0:S0.call(Lr))??0,Vr=Fn[qr],Si=Sr.filter(i0=>i0.metadata.referencedImageId===Vr),Ui=Ki[pn];return Ur.jsxs("div",{style:{position:"absolute",left:"50%",bottom:60,transform:"translateX(-50%)",zIndex:30,display:"flex",gap:4,pointerEvents:"auto",alignItems:"center"},children:[Ur.jsx("button",{style:{background:"rgba(30,30,30,0.7)",color:"#fff",border:"none",borderRadius:"50%",width:28,height:28,fontSize:"16px",fontWeight:"bold",cursor:"pointer",opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 1px 4px rgba(0,0,0,0.18)",transition:"opacity 0.2s"},title:"Previous Annotation","aria-label":"Previous Annotation",onClick:()=>{const i0=K.current,yi=i0==null?void 0:i0.getViewport(`CT_${pn}`);if(!yi||typeof yi.getCurrentImageIdIndex!="function")return;const L0=yi.getCurrentImageIdIndex(),Z0=gF(L0,Fn,Sr,-1);if(Z0!==null&&typeof yi.setImageIdIndex=="function"){Yc(yi.element,{imageIndex:Z0}),wo(pn,yi);const oo=Fn[Z0],_o=Sr.filter(Bo=>Bo.metadata.referencedImageId===oo);wr(pn,_o.length>0?_o[0].annotationUID:null)}},children:Ur.jsx("span",{"aria-hidden":"true",children:"◀"})}),Ur.jsx("button",{style:{background:"rgba(30,30,30,0.7)",color:"#fff",border:"none",borderRadius:"50%",width:28,height:28,fontSize:"16px",fontWeight:"bold",cursor:"pointer",opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 1px 4px rgba(0,0,0,0.18)",transition:"opacity 0.2s"},title:"Next Annotation","aria-label":"Next Annotation",onClick:()=>{const i0=K.current,yi=i0==null?void 0:i0.getViewport(`CT_${pn}`);if(!yi||typeof yi.getCurrentImageIdIndex!="function")return;const L0=yi.getCurrentImageIdIndex(),Z0=gF(L0,Fn,Sr,1);if(Z0!==null&&typeof yi.setImageIdIndex=="function"){Yc(yi.element,{imageIndex:Z0}),wo(pn,yi);const oo=Fn[Z0],_o=Sr.filter(Bo=>Bo.metadata.referencedImageId===oo);wr(pn,_o.length>0?_o[0].annotationUID:null)}},children:Ur.jsx("span",{"aria-hidden":"true",children:"▶"})}),Si.length>0&&Ur.jsx("div",{style:{display:"flex",gap:2,alignItems:"center"},children:Si.map(i0=>Ur.jsxs("div",{style:{display:"flex",alignItems:"center",background:Ui===i0.annotationUID?"rgb(4, 225, 0)":"#444",color:Ui===i0.annotationUID?"#222":"#fff",borderRadius:"4px",padding:"2px 6px",marginRight:2,cursor:"pointer",border:Ui===i0.annotationUID?"2px solid #1976d2":"none",fontWeight:Ui===i0.annotationUID?"bold":"normal"},onClick:()=>wr(pn,i0.annotationUID),children:[Ur.jsxs("span",{style:{marginRight:4},children:[Ui===i0.annotationUID?"★ ":"",i0.metadata.toolName||"Annotation"]}),Ur.jsx("button",{style:{background:"#b71c1c",color:"#fff",border:"none",borderRadius:"50%",width:20,height:20,fontSize:"13px",fontWeight:"bold",cursor:"pointer",marginLeft:2,display:"flex",alignItems:"center",justifyContent:"center",opacity:.85},title:"Delete this annotation","aria-label":"Delete annotation",onClick:yi=>{yi.stopPropagation(),Fr(pn,i0.annotationUID,Si)},children:"🗑️"})]},i0.annotationUID))})]})})(),"// ...existing code...",Ur.jsx("div",{style:{position:"absolute",left:8,bottom:8,background:"rgba(0,0,0,0.7)",color:"#fff",padding:"6px 12px",borderRadius:"4px",fontSize:"14px",zIndex:10,pointerEvents:"none",minWidth:"120px",userSelect:"none"},children:Kn[pn]==="stack"?Ur.jsxs(Ur.Fragment,{children:[Ur.jsxs("div",{children:["Image: ",(Yi=Pn[pn])==null?void 0:Yi.index," / ",(jo=Pn[pn])==null?void 0:jo.total]}),Ur.jsxs("div",{children:["WC: ",(ga=Pn[pn])==null?void 0:ga.windowCenter,"   WW: ",(Ma=Pn[pn])==null?void 0:Ma.windowWidth]})]}):Ur.jsxs("div",{children:["WC: ",(Co=Pn[pn])==null?void 0:Co.windowCenter,"   WW: ",(ls=Pn[pn])==null?void 0:ls.windowWidth]})}),Ur.jsx("div",{style:{position:"absolute",right:8,bottom:8,zIndex:10},children:Ur.jsxs("div",{className:"preset-menu",style:{background:"rgba(0,0,0,0.7)",color:"#fff",borderRadius:"4px",fontSize:"14px",minWidth:"120px",overflow:"hidden",cursor:"pointer",position:"relative",boxShadow:Vt[pn]?"0 2px 8px rgba(0,0,0,0.3)":void 0},children:[Ur.jsxs("div",{style:{padding:"6px 12px",fontWeight:"bold",userSelect:"none"},onClick:()=>gn(Fn=>{const Mn=[...Fn];return Mn[pn]=!Mn[pn],Mn}),children:["Presets",Ur.jsx("span",{style:{float:"right",fontWeight:"normal"},children:Vt[pn]?"▲":"▼"})]}),Vt[pn]&&Ur.jsx("div",{className:"preset-menu-content",style:{background:"rgba(0,0,0,0.95)",borderRadius:"0 0 4px 4px",padding:"6px 0 6px 0",display:"flex",flexDirection:"column",zIndex:11},children:xEe.map(Fn=>Ur.jsx("button",{style:{display:"block",width:"100%",margin:"2px 0",background:"#333",color:"#fff",border:"none",borderRadius:"3px",cursor:"pointer",padding:"4px 0",fontSize:"13px",opacity:.9},onClick:()=>{t0(pn,Fn.center,Fn.width),gn(Mn=>{const Sr=[...Mn];return Sr[pn]=!1,Sr})},children:Fn.name},Fn.name))})]})}),Kn[pn]==="stack"&&ge[pn]&&Ur.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"12px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:30,display:ge[pn].length>0?"flex":"none",alignItems:"flex-start",justifyContent:"center",pointerEvents:"none",flexDirection:"column",padding:0},children:Ur.jsx("div",{style:{width:"8px",height:"100%",maxHeight:"100%",minHeight:0,borderRadius:"6px",background:"#222",position:"relative",display:"flex",flexDirection:"column",justifyContent:"flex-start",boxShadow:"0 0 8px #2196f3cc",overflow:"hidden"},children:ge[pn].map((Fn,Mn)=>{const Sr=!!Hr("imagePlaneModule",Fn),Ar=K.current;let Lr=-1;if(Ar&&typeof Ar.getViewport=="function"){const Vr=Ar.getViewport(`CT_${pn}`);Vr&&typeof Vr.getCurrentImageIdIndex=="function"&&(Lr=Vr.getCurrentImageIdIndex())}const qr=Mn===Lr;return Ur.jsx("div",{style:{width:"100%",height:`${100/ge[pn].length}%`,background:qr?"linear-gradient(to right, #ffeb3b 60%, #ff9800 100%)":Sr?"linear-gradient(to right, #4caf50 60%, #2196f3 100%)":"#444",opacity:Sr?.95:.4,transition:"background 0.3s, opacity 0.3s",borderBottom:Mn{const Vr=K.current,Si=Vr==null?void 0:Vr.getViewport(`CT_${pn}`);Si&&typeof Si.setImageIdIndex=="function"&&Kn[pn]==="stack"&&(Yc(Si.element,{imageIndex:Mn}),wo(pn,Si))}},Fn)})})}),yr&&ee.length>1&&Ur.jsx("div",{style:{position:"absolute",left:0,right:0,bottom:8,zIndex:20,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",width:"100%",background:"none",borderRadius:"0",padding:0},children:Ur.jsxs("div",{style:{position:"relative"},children:[Ur.jsxs("button",{style:{background:"#222",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"2px 8px",fontSize:"13px",marginRight:"6px",minWidth:120,textAlign:"left",cursor:"pointer"},onClick:()=>U(V===pn?null:pn),"aria-haspopup":"listbox","aria-expanded":V===pn,children:[(()=>{const Fn=ee[we[pn]||0],Mn=Fn==null?void 0:Fn.studyInstanceUID,Ar=xi&&Mn&&xi===Mn?"#4caf50":"#888";return Ur.jsxs("span",{children:[Ur.jsx("span",{style:{color:Ar,fontWeight:"bold",marginRight:6,fontSize:"16px",verticalAlign:"middle"},children:"●"}),"Stack ",we[pn]+1," (",(Fn==null?void 0:Fn.imageIds.length)||0," images)"]})})(),Ur.jsx("span",{style:{float:"right",fontSize:"12px"},children:"▼"})]}),V===pn&&Ur.jsx("div",{ref:Fn=>{Fn&&Fn.focus()},tabIndex:0,style:{position:"absolute",left:0,bottom:"110%",background:"#222",border:"1px solid #444",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.3)",zIndex:100,minWidth:180,maxHeight:220,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin"},role:"listbox",onMouseDown:Fn=>Fn.stopPropagation(),onWheel:Fn=>{const Mn=Fn.currentTarget,{scrollTop:Sr,scrollHeight:Ar,clientHeight:Lr}=Mn,qr=Sr===0,Vr=Sr+Lr>=Ar-1;Fn.deltaY<0&&qr||Fn.deltaY>0&&Vr||(Fn.stopPropagation(),Fn.preventDefault(),Mn.scrollTop+=Fn.deltaY)},onBlur:Fn=>{const Mn=Fn.relatedTarget,Sr=Fn.currentTarget.parentElement;Sr!=null&&Sr.contains(Mn)||setTimeout(()=>U(null),100)},children:ee.map((Fn,Mn)=>{const Sr=Fn.studyInstanceUID,Lr=xi&&Sr&&xi===Sr?"#4caf50":"#888",qr=Fn.imageIds.length===0;return Ur.jsxs("div",{role:"option","aria-selected":we[pn]===Mn,style:{padding:"6px 12px",background:we[pn]===Mn?"#444":"#222",color:qr?"#aaa":"#fff",cursor:qr?"not-allowed":"pointer",display:"flex",alignItems:"center",fontWeight:we[pn]===Mn?"bold":"normal",borderBottom:"1px solid #333",userSelect:"none",opacity:qr?.6:1},tabIndex:-1,onMouseDown:Vr=>{Vr.preventDefault(),qr||(je(pn,Mn),U(null))},children:[Ur.jsx("span",{style:{color:Lr,fontWeight:"bold",marginRight:8,fontSize:"16px",verticalAlign:"middle"},children:"●"}),"Stack ",Mn+1," (",Fn.imageIds.length," images",qr&&Ur.jsx("span",{style:{color:"#f44336",marginLeft:6},children:"(empty)"}),")"]},Mn)})})]})})]},pn))}return Ur.jsxs("div",{style:{position:"relative",inset:0,width:"100%",height:"100%",boxSizing:"border-box",background:"#222",padding:"12px",overflow:"hidden"},children:[Ve&&Ur.jsx("div",{style:{position:"absolute",zIndex:3e3,top:0,left:0,width:"100%",height:"100%",background:"rgba(0,0,0,0.7)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:28,fontWeight:"bold",letterSpacing:1},children:Ve==="annotations"?"Loading Annotations...":"Loading Viewer State..."}),Ur.jsxs("div",{children:[Ur.jsx("button",{style:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:e0?250:-20,zIndex:200,width:40,height:40,background:"#222",color:"#fff",border:"none",borderRadius:"50%",fontWeight:"bold",cursor:"pointer",fontSize:"22px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",transition:"left 0.25s cubic-bezier(.4,2,.6,1), background 0.2s"},onClick:()=>p0(pn=>!pn),"aria-label":"Open menu",children:"☰"}),e0&&Ur.jsx("div",{style:{position:"absolute",top:0,left:0,width:220,height:"100%",background:"#222",color:"#fff",zIndex:199,boxShadow:"2px 0 12px rgba(0,0,0,0.3)",flexDirection:"column",padding:"24px 16px 16px 16px",display:"flex",overflow:"hidden"},children:Ur.jsxs("div",{style:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column"},children:[Ur.jsxs("div",{style:{fontWeight:"bold",fontSize:18,marginBottom:24},children:["Menu",Ur.jsx("button",{style:{float:"right",background:"transparent",color:"#fff",border:"none",fontSize:"22px",cursor:"pointer"},onClick:()=>p0(!1),"aria-label":"Close menu",children:"×"})]}),Ur.jsx("button",{style:{padding:"10px 18px",background:"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>{var pn;return(pn=Hi.current)==null?void 0:pn.click()},children:"Load DICOM Folder"}),Ur.jsx("input",{ref:Hi,type:"file",style:{display:"none"},multiple:!0,onChange:T0,accept:".dcm,application/dicom"}),Ur.jsxs("div",{style:{marginBottom:"18px",display:"flex",alignItems:"center",gap:"8px"},children:[Ur.jsx("input",{type:"checkbox",id:"orderBySliceLocation",checked:st,onChange:pn=>yt(pn.target.checked),style:{accentColor:"#666"}}),Ur.jsx("label",{htmlFor:"orderBySliceLocation",style:{fontSize:"15px",cursor:"pointer"},children:"Order by Slice Location"})]}),Ur.jsx("button",{style:{padding:"10px 18px",background:"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:ui,children:"Show DICOM Metadata"}),Ur.jsxs("button",{style:{padding:"10px 18px",background:Je?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>it(pn=>!pn),children:[Je?"Disable":"Enable"," Cross Reference Lines"]}),Ur.jsxs("button",{style:{padding:"10px 18px",background:Ge?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>Ke(pn=>!pn),children:[Ge?"Disable":"Enable"," Reference Lines"]}),Ur.jsx("button",{onClick:qt,style:{margin:8,padding:8},children:"Sort All Viewports by Slice Location"}),Ur.jsx("button",{style:{padding:"10px 18px",background:St?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>Pt(pn=>!pn),children:St?"Disable Alt Key for Reference Cursors":"Enable Alt Key for Reference Cursors"})]})})]}),Ur.jsxs("div",{className:"grid-menu-hover-container",style:{position:"absolute",top:0,left:"50%",transform:"translateX(-50%)",zIndex:100,display:"flex",flexDirection:"column",alignItems:"center",width:"auto",height:"48px",pointerEvents:"none"},children:[Ur.jsx("div",{style:{position:"absolute",top:0,left:"50%",transform:"translateX(-50%)",width:80,height:14,zIndex:1,pointerEvents:"auto",background:"transparent"},onMouseEnter:()=>Yn(!0),onFocus:()=>Yn(!0),tabIndex:-1}),Ur.jsxs("button",{className:"grid-menu-btn",style:{position:"relative",top:uo?"0":"-22px",opacity:uo?1:.5,transition:"top 0.25s cubic-bezier(.4,2,.6,1), opacity 0.2s",padding:"6px 16px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginRight:"8px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",pointerEvents:uo?"auto":"none",zIndex:2,display:uo?"block":"none"},onMouseLeave:()=>Yn(!1),onBlur:()=>Yn(!1),onClick:()=>xn(pn=>!pn),tabIndex:0,children:["Grid: ",Jt.rows,"x",Jt.cols," ▼"]}),Nn&&Ur.jsx("div",{style:{position:"absolute",top:"110%",left:"50%",transform:"translateX(-50%)",background:"#222",color:"#fff",borderRadius:"6px",boxShadow:"0 2px 12px rgba(0,0,0,0.4)",padding:"12px",display:"grid",gridTemplateColumns:"repeat(3, 40px)",gap:"8px",zIndex:200,pointerEvents:"auto"},children:mn.map(pn=>Ur.jsxs("button",{style:{width:"40px",height:"40px",background:pn.rows===Jt.rows&&pn.cols===Jt.cols?"#444":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px"},onClick:()=>{Tr(),Dn({rows:pn.rows,cols:pn.cols}),xn(!1)},children:[pn.rows,"x",pn.cols]},`${pn.rows}x${pn.cols}`))})]}),Ur.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"grid",margin:3,gridTemplateRows:`repeat(${Jt.rows}, 1fr)`,gridTemplateColumns:`repeat(${Jt.cols}, 1fr)`,gap:"5px",zIndex:1},children:r0}),Ur.jsx("button",{style:{position:"absolute",top:8,right:8,zIndex:20,padding:"6px 12px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",cursor:"pointer",opacity:.85,userSelect:"none"},onClick:()=>I(!0),children:"Settings"}),P&&Ur.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",background:"rgba(0,0,0,0.4)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>I(!1),children:Ur.jsxs("div",{style:{background:"#222",color:"#fff",borderRadius:"8px",minWidth:"320px",minHeight:"180px",padding:"24px",boxShadow:"0 4px 24px rgba(0,0,0,0.4)",position:"relative"},onClick:pn=>pn.stopPropagation(),children:[Ur.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"Settings"}),Ur.jsxs("div",{style:{marginBottom:"24px"},children:[Ur.jsx("div",{style:{marginBottom:12,fontWeight:"bold"},children:"Mouse Button Tool Bindings"}),hF.map(pn=>Ur.jsxs("div",{style:{marginBottom:10},children:[Ur.jsxs("label",{style:{marginRight:8},children:[pn.label," Button:"]}),Ur.jsx("select",{value:Bt[pn.value],onChange:yr=>rn(Fn=>({...Fn,[pn.value]:yr.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:M3.map(yr=>Ur.jsx("option",{value:yr.value,children:yr.label},yr.value))})]},pn.value)),Ur.jsxs("div",{style:{margin:"12px 0"},children:[Ur.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>ut(pn=>!pn),children:[qe?"Hide":"Show"," Advanced Mouse Bindings"]}),qe&&Ur.jsx("div",{style:{marginTop:8},children:v7.slice(3).map(pn=>Ur.jsxs("div",{style:{marginBottom:10},children:[Ur.jsxs("label",{style:{marginRight:8},children:[pn.label,":"]}),Ur.jsxs("select",{value:Bt[pn.value]||"",onChange:yr=>rn(Fn=>({...Fn,[pn.value]:yr.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ur.jsx("option",{value:"",children:"(None)"}),M3.map(yr=>Ur.jsx("option",{value:yr.value,children:yr.label},yr.value))]})]},pn.value))})]}),Ur.jsx("div",{style:{margin:"18px 0 8px 0",fontWeight:"bold"},children:"Ctrl + Mouse Button Tool Bindings"}),hF.map(pn=>Ur.jsxs("div",{style:{marginBottom:10},children:[Ur.jsxs("label",{style:{marginRight:8},children:[pn.label," + Ctrl:"]}),Ur.jsxs("select",{value:Zn[pn.value]||"",onChange:yr=>Ut(Fn=>({...Fn,[pn.value]:yr.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ur.jsx("option",{value:"",children:"(None)"}),M3.map(yr=>Ur.jsx("option",{value:yr.value,children:yr.label},yr.value))]})]},pn.value+"_ctrl")),Ur.jsxs("div",{style:{margin:"12px 0"},children:[Ur.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>Et(pn=>!pn),children:[wt?"Hide":"Show"," Advanced Ctrl + Mouse Bindings"]}),wt&&Ur.jsx("div",{style:{marginTop:8},children:v7.slice(3).map(pn=>Ur.jsxs("div",{style:{marginBottom:10},children:[Ur.jsxs("label",{style:{marginRight:8},children:[pn.label," + Ctrl:"]}),Ur.jsxs("select",{value:Zn[pn.value]||"",onChange:yr=>Ut(Fn=>({...Fn,[pn.value]:yr.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[Ur.jsx("option",{value:"",children:"(None)"}),M3.map(yr=>Ur.jsx("option",{value:yr.value,children:yr.label},yr.value))]})]},pn.value+"_ctrl"))})]})]}),Ur.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>I(!1),"aria-label":"Close",children:"×"})]})}),jr&&Ur.jsx("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0,0,0,0.5)",zIndex:2e3,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>An(!1),children:Ur.jsxs("div",{style:{background:"#222",color:"#fff",borderRadius:"8px",minWidth:"320px",maxWidth:"80vw",maxHeight:"80vh",padding:"24px",boxShadow:"0 4px 24px rgba(0,0,0,0.4)",position:"relative",overflow:"auto"},onClick:pn=>pn.stopPropagation(),children:[Ur.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"DICOM Metadata"}),hr,Ur.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>An(!1),"aria-label":"Close",children:"×"})]})})]})}function SEe(n){console.log("Setting up tools...",n),t2(M8),t2(P8),t2(Yg),t2(A8),t2(R8),t2(r4),t2(Dh),t2(Ih),t2(Eh),t2(Jg),t2(n4),t2(vf),t2(L8),t2(Yl),t2(Jc),t2(Rg),t2(Dv);let e=la(n);return e||(e=Gz(n),e.addTool(P8.toolName),e.addTool(M8.toolName),e.addTool(A8.toolName),e.addTool(Yg.toolName,{loop:!1}),e.addTool(R8.toolName),e.addTool(r4.toolName),e.addTool(Dv.toolName,{getTextCallback:()=>""}),e.addTool(Ih.toolName),e.addTool(Dh.toolName,{statsCalculator:()=>null}),e.addTool(Eh.toolName,{calculateStats:!1,getTextCallback:()=>""}),e.addTool(Jg.toolName,{getTextCallback:()=>""}),e.addTool(n4.toolName,{calculateStats:!1}),e.addTool(vf.toolName,{}),e.addTool(L8.toolName,{}),e.addTool(Rg.toolName),e.addTool(Yl.toolName)),e}function gF(n,e,o,i){if(!o.length||!e.length)return null;const l=o.map(c=>e.findIndex(g=>g===c.metadata.referencedImageId)).filter(c=>c!==-1).sort((c,g)=>c-g);if(!l.length)return null;if(i===1){for(let c of l)if(c>n)return c;return l[0]}else{for(let c=l.length-1;c>=0;c--)if(l[c]`wadouri:/test_images/stack2/IMG${o+1}.dcm`),Array.from({length:25},(e,o)=>`wadouri:/test_images/stack5/IMG${o+1}.dcm`),Array.from({length:26},(e,o)=>`wadouri:/test_images/stack3/IMG${o+1}.dcm`)]}const pF=n=>n.map(e=>e.startsWith("wadouri:")?e:`wadouri:${e}`);function BJ(){document.querySelectorAll(".dicom-viewer-test-root").forEach(o=>{const i=o.id||"",l=()=>TEe();ZT(o).render(Ur.jsx(dF,{container_id:i,imageStacks:l}))}),document.querySelectorAll(".dicom-viewer-root").forEach(o=>{const i=o.id||"";let l;const c=o.getAttribute("data-images");if(c){let P;try{P=JSON.parse(c)}catch(I){console.error("Invalid data-images JSON:",I),P=[]}Array.isArray(P)&&P.length>0&&typeof P[0]=="string"?l=()=>Promise.resolve([pF(P)]):Array.isArray(P)?l=()=>Promise.resolve(P.map(I=>Array.isArray(I)?pF(I):[])):l=()=>Promise.resolve([[]])}else l=()=>Promise.resolve([[]]);const g=o.getAttribute("data-auto-cache-stack"),v=g==="true"||g==="1",_=o.getAttribute("data-annotationjson"),T=o.getAttribute("data-viewerstate");console.log("Mounting DICOM viewer:"),console.log(T,_,v),ZT(o).render(Ur.jsx(dF,{container_id:i,imageStacks:l,autoCacheStack:v,annotationJson:_||void 0,viewerState:T||void 0}))})}BJ();window.mountDicomViewers=BJ; diff --git a/rad/static/dv3d/index-Drikhvya.js b/rad/static/dv3d/index-Drikhvya.js deleted file mode 100644 index e0517fdc..00000000 --- a/rad/static/dv3d/index-Drikhvya.js +++ /dev/null @@ -1,4006 +0,0 @@ -var eF=Object.defineProperty;var tF=(t,e,r)=>e in t?eF(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n4=(t,e,r)=>tF(t,typeof e!="symbol"?e+"":e,r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();var Dr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function oh(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function nF(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var r=function n(){return this instanceof n?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}),r}var l6={exports:{}},Om={},u6={exports:{}},Lt={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var ah=Symbol.for("react.element"),rF=Symbol.for("react.portal"),iF=Symbol.for("react.fragment"),oF=Symbol.for("react.strict_mode"),aF=Symbol.for("react.profiler"),sF=Symbol.for("react.provider"),cF=Symbol.for("react.context"),lF=Symbol.for("react.forward_ref"),uF=Symbol.for("react.suspense"),fF=Symbol.for("react.memo"),dF=Symbol.for("react.lazy"),r4=Symbol.iterator;function hF(t){return t===null||typeof t!="object"?null:(t=r4&&t[r4]||t["@@iterator"],typeof t=="function"?t:null)}var f6={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d6=Object.assign,h6={};function h0(t,e,r){this.props=t,this.context=e,this.refs=h6,this.updater=r||f6}h0.prototype.isReactComponent={};h0.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};h0.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function g6(){}g6.prototype=h0.prototype;function J3(t,e,r){this.props=t,this.context=e,this.refs=h6,this.updater=r||f6}var Z3=J3.prototype=new g6;Z3.constructor=J3;d6(Z3,h0.prototype);Z3.isPureReactComponent=!0;var i4=Array.isArray,p6=Object.prototype.hasOwnProperty,Q3={current:null},m6={key:!0,ref:!0,__self:!0,__source:!0};function v6(t,e,r){var n,i={},o=null,a=null;if(e!=null)for(n in e.ref!==void 0&&(a=e.ref),e.key!==void 0&&(o=""+e.key),e)p6.call(e,n)&&!m6.hasOwnProperty(n)&&(i[n]=e[n]);var s=arguments.length-2;if(s===1)i.children=r;else if(1>>1,H=P[$];if(0>>1;$i(Q,V))eei(de,Q)?(P[$]=de,P[ee]=V,$=ee):(P[$]=Q,P[ne]=V,$=ne);else if(eei(de,V))P[$]=de,P[ee]=V,$=ee;else break e}}return N}function i(P,N){var V=P.sortIndex-N.sortIndex;return V!==0?V:P.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;t.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();t.unstable_now=function(){return a.now()-s}}var c=[],l=[],f=1,u=null,d=3,h=!1,g=!1,p=!1,v=typeof setTimeout=="function"?setTimeout:null,x=typeof clearTimeout=="function"?clearTimeout:null,m=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function y(P){for(var N=r(l);N!==null;){if(N.callback===null)n(l);else if(N.startTime<=P)n(l),N.sortIndex=N.expirationTime,e(c,N);else break;N=r(l)}}function w(P){if(p=!1,y(P),!g)if(r(c)!==null)g=!0,A(C);else{var N=r(l);N!==null&&G(w,N.startTime-P)}}function C(P,N){g=!1,p&&(p=!1,x(_),_=-1),h=!0;var V=d;try{for(y(N),u=r(c);u!==null&&(!(u.expirationTime>N)||P&&!b());){var $=u.callback;if(typeof $=="function"){u.callback=null,d=u.priorityLevel;var H=$(u.expirationTime<=N);N=t.unstable_now(),typeof H=="function"?u.callback=H:u===r(c)&&n(c),y(N)}else n(c);u=r(c)}if(u!==null)var Y=!0;else{var ne=r(l);ne!==null&&G(w,ne.startTime-N),Y=!1}return Y}finally{u=null,d=V,h=!1}}var S=!1,T=null,_=-1,E=5,D=-1;function b(){return!(t.unstable_now()-DP||125$?(P.sortIndex=V,e(l,P),r(c)===null&&P===r(l)&&(p?(x(_),_=-1):p=!0,G(w,V-$))):(P.sortIndex=H,e(c,P),g||h||(g=!0,A(C))),P},t.unstable_shouldYield=b,t.unstable_wrapCallback=function(P){var N=d;return function(){var V=d;d=N;try{return P.apply(this,arguments)}finally{d=V}}}})(S6);C6.exports=S6;var _F=C6.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var EF=Ze,Ui=_F;function Ne(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Py=Object.prototype.hasOwnProperty,DF=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,a4={},s4={};function bF(t){return Py.call(s4,t)?!0:Py.call(a4,t)?!1:DF.test(t)?s4[t]=!0:(a4[t]=!0,!1)}function IF(t,e,r,n){if(r!==null&&r.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function OF(t,e,r,n){if(e===null||typeof e>"u"||IF(t,e,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function hi(t,e,r,n,i,o,a){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=t,this.type=e,this.sanitizeURL=o,this.removeEmptyString=a}var Fr={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Fr[t]=new hi(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Fr[e]=new hi(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Fr[t]=new hi(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Fr[t]=new hi(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){Fr[t]=new hi(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Fr[t]=new hi(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Fr[t]=new hi(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Fr[t]=new hi(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Fr[t]=new hi(t,5,!1,t.toLowerCase(),null,!1,!1)});var tx=/[\-:]([a-z])/g;function nx(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(tx,nx);Fr[e]=new hi(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(tx,nx);Fr[e]=new hi(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(tx,nx);Fr[e]=new hi(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Fr[t]=new hi(t,1,!1,t.toLowerCase(),null,!1,!1)});Fr.xlinkHref=new hi("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Fr[t]=new hi(t,1,!1,t.toLowerCase(),null,!0,!0)});function rx(t,e,r,n){var i=Fr.hasOwnProperty(e)?Fr[e]:null;(i!==null?i.type!==0:n||!(2s||i[a]!==o[s]){var c=` -`+i[a].replace(" at new "," at ");return t.displayName&&c.includes("")&&(c=c.replace("",t.displayName)),c}while(1<=a&&0<=s);break}}}finally{q2=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?mf(t):""}function MF(t){switch(t.tag){case 5:return mf(t.type);case 16:return mf("Lazy");case 13:return mf("Suspense");case 19:return mf("SuspenseList");case 0:case 2:case 15:return t=X2(t.type,!1),t;case 11:return t=X2(t.type.render,!1),t;case 1:return t=X2(t.type,!0),t;default:return""}}function Fy(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Xl:return"Fragment";case ql:return"Portal";case Ay:return"Profiler";case ix:return"StrictMode";case ky:return"Suspense";case Vy:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case E6:return(t.displayName||"Context")+".Consumer";case _6:return(t._context.displayName||"Context")+".Provider";case ox:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case ax:return e=t.displayName||null,e!==null?e:Fy(t.type)||"Memo";case vs:e=t._payload,t=t._init;try{return Fy(t(e))}catch{}}return null}function RF(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Fy(e);case 8:return e===ix?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function js(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function b6(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function LF(t){var e=b6(t)?"checked":"value",r=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),n=""+t[e];if(!t.hasOwnProperty(e)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,o=r.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(a){n=""+a,o.call(this,a)}}),Object.defineProperty(t,e,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(a){n=""+a},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function zh(t){t._valueTracker||(t._valueTracker=LF(t))}function I6(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var r=e.getValue(),n="";return t&&(n=b6(t)?t.checked?"true":"false":t.value),t=n,t!==r?(e.setValue(t),!0):!1}function qp(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function Uy(t,e){var r=e.checked;return jn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function l4(t,e){var r=e.defaultValue==null?"":e.defaultValue,n=e.checked!=null?e.checked:e.defaultChecked;r=js(e.value!=null?e.value:r),t._wrapperState={initialChecked:n,initialValue:r,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function O6(t,e){e=e.checked,e!=null&&rx(t,"checked",e,!1)}function By(t,e){O6(t,e);var r=js(e.value),n=e.type;if(r!=null)n==="number"?(r===0&&t.value===""||t.value!=r)&&(t.value=""+r):t.value!==""+r&&(t.value=""+r);else if(n==="submit"||n==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?Gy(t,e.type,r):e.hasOwnProperty("defaultValue")&&Gy(t,e.type,js(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function u4(t,e,r){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var n=e.type;if(!(n!=="submit"&&n!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,r||e===t.value||(t.value=e),t.defaultValue=e}r=t.name,r!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,r!==""&&(t.name=r)}function Gy(t,e,r){(e!=="number"||qp(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var vf=Array.isArray;function mu(t,e,r,n){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=$h.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function ud(t,e){if(e){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=e;return}}t.textContent=e}var Pf={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},NF=["Webkit","ms","Moz","O"];Object.keys(Pf).forEach(function(t){NF.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Pf[e]=Pf[t]})});function N6(t,e,r){return e==null||typeof e=="boolean"||e===""?"":r||typeof e!="number"||e===0||Pf.hasOwnProperty(t)&&Pf[t]?(""+e).trim():e+"px"}function P6(t,e){t=t.style;for(var r in e)if(e.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=N6(r,e[r],n);r==="float"&&(r="cssFloat"),n?t.setProperty(r,i):t[r]=i}}var PF=jn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function $y(t,e){if(e){if(PF[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Ne(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Ne(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Ne(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Ne(62))}}function jy(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Hy=null;function sx(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Ky=null,vu=null,yu=null;function h4(t){if(t=lh(t)){if(typeof Ky!="function")throw Error(Ne(280));var e=t.stateNode;e&&(e=Pm(e),Ky(t.stateNode,t.type,e))}}function A6(t){vu?yu?yu.push(t):yu=[t]:vu=t}function k6(){if(vu){var t=vu,e=yu;if(yu=vu=null,h4(t),e)for(t=0;t>>=0,t===0?32:31-(jF(t)/HF|0)|0}var jh=64,Hh=4194304;function yf(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Zp(t,e){var r=t.pendingLanes;if(r===0)return 0;var n=0,i=t.suspendedLanes,o=t.pingedLanes,a=r&268435455;if(a!==0){var s=a&~i;s!==0?n=yf(s):(o&=a,o!==0&&(n=yf(o)))}else a=r&~i,a!==0?n=yf(a):o!==0&&(n=yf(o));if(n===0)return 0;if(e!==0&&e!==n&&!(e&i)&&(i=n&-n,o=e&-e,i>=o||i===16&&(o&4194240)!==0))return e;if(n&4&&(n|=r&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=n;0r;r++)e.push(t);return e}function sh(t,e,r){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-bo(e),t[e]=r}function YF(t,e){var r=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var n=t.eventTimes;for(t=t.expirationTimes;0=kf),S4=" ",T4=!1;function n9(t,e){switch(t){case"keyup":return _U.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function r9(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Yl=!1;function DU(t,e){switch(t){case"compositionend":return r9(e);case"keypress":return e.which!==32?null:(T4=!0,S4);case"textInput":return t=e.data,t===S4&&T4?null:t;default:return null}}function bU(t,e){if(Yl)return t==="compositionend"||!px&&n9(t,e)?(t=e9(),lp=dx=Es=null,Yl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:r,offset:e-t};t=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=b4(r)}}function s9(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?s9(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function c9(){for(var t=window,e=qp();e instanceof t.HTMLIFrameElement;){try{var r=typeof e.contentWindow.location.href=="string"}catch{r=!1}if(r)t=e.contentWindow;else break;e=qp(t.document)}return e}function mx(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function kU(t){var e=c9(),r=t.focusedElem,n=t.selectionRange;if(e!==r&&r&&r.ownerDocument&&s9(r.ownerDocument.documentElement,r)){if(n!==null&&mx(r)){if(e=n.start,t=n.end,t===void 0&&(t=e),"selectionStart"in r)r.selectionStart=e,r.selectionEnd=Math.min(t,r.value.length);else if(t=(e=r.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=r.textContent.length,o=Math.min(n.start,i);n=n.end===void 0?o:Math.min(n.end,i),!t.extend&&o>n&&(i=n,n=o,o=i),i=I4(r,o);var a=I4(r,n);i&&a&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==a.node||t.focusOffset!==a.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),o>n?(t.addRange(e),t.extend(a.node,a.offset)):(e.setEnd(a.node,a.offset),t.addRange(e)))}}for(e=[],t=r;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Jl=null,Qy=null,Ff=null,e5=!1;function O4(t,e,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;e5||Jl==null||Jl!==qp(n)||(n=Jl,"selectionStart"in n&&mx(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Ff&&md(Ff,n)||(Ff=n,n=t1(Qy,"onSelect"),0eu||(t.current=a5[eu],a5[eu]=null,eu--)}function vn(t,e){eu++,a5[eu]=t.current,t.current=e}var Hs={},Yr=ac(Hs),wi=ac(!1),tl=Hs;function Fu(t,e){var r=t.type.contextTypes;if(!r)return Hs;var n=t.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===e)return n.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in r)i[o]=e[o];return n&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function Ci(t){return t=t.childContextTypes,t!=null}function r1(){Dn(wi),Dn(Yr)}function k4(t,e,r){if(Yr.current!==Hs)throw Error(Ne(168));vn(Yr,e),vn(wi,r)}function v9(t,e,r){var n=t.stateNode;if(e=e.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in e))throw Error(Ne(108,RF(t)||"Unknown",i));return jn({},r,n)}function i1(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Hs,tl=Yr.current,vn(Yr,t),vn(wi,wi.current),!0}function V4(t,e,r){var n=t.stateNode;if(!n)throw Error(Ne(169));r?(t=v9(t,e,tl),n.__reactInternalMemoizedMergedChildContext=t,Dn(wi),Dn(Yr),vn(Yr,t)):Dn(wi),vn(wi,r)}var _a=null,Am=!1,lv=!1;function y9(t){_a===null?_a=[t]:_a.push(t)}function qU(t){Am=!0,y9(t)}function sc(){if(!lv&&_a!==null){lv=!0;var t=0,e=rn;try{var r=_a;for(rn=1;t>=a,i-=a,Ma=1<<32-bo(e)+i|r<_?(E=T,T=null):E=T.sibling;var D=d(x,T,y[_],w);if(D===null){T===null&&(T=E);break}t&&T&&D.alternate===null&&e(x,T),m=o(D,m,_),S===null?C=D:S.sibling=D,S=D,T=E}if(_===y.length)return r(x,T),Ln&&_c(x,_),C;if(T===null){for(;__?(E=T,T=null):E=T.sibling;var b=d(x,T,D.value,w);if(b===null){T===null&&(T=E);break}t&&T&&b.alternate===null&&e(x,T),m=o(b,m,_),S===null?C=b:S.sibling=b,S=b,T=E}if(D.done)return r(x,T),Ln&&_c(x,_),C;if(T===null){for(;!D.done;_++,D=y.next())D=u(x,D.value,w),D!==null&&(m=o(D,m,_),S===null?C=D:S.sibling=D,S=D);return Ln&&_c(x,_),C}for(T=n(x,T);!D.done;_++,D=y.next())D=h(T,x,_,D.value,w),D!==null&&(t&&D.alternate!==null&&T.delete(D.key===null?_:D.key),m=o(D,m,_),S===null?C=D:S.sibling=D,S=D);return t&&T.forEach(function(I){return e(x,I)}),Ln&&_c(x,_),C}function v(x,m,y,w){if(typeof y=="object"&&y!==null&&y.type===Xl&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case Wh:e:{for(var C=y.key,S=m;S!==null;){if(S.key===C){if(C=y.type,C===Xl){if(S.tag===7){r(x,S.sibling),m=i(S,y.props.children),m.return=x,x=m;break e}}else if(S.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===vs&&B4(C)===S.type){r(x,S.sibling),m=i(S,y.props),m.ref=K0(x,S,y),m.return=x,x=m;break e}r(x,S);break}else e(x,S);S=S.sibling}y.type===Xl?(m=jc(y.props.children,x.mode,w,y.key),m.return=x,x=m):(w=vp(y.type,y.key,y.props,null,x.mode,w),w.ref=K0(x,m,y),w.return=x,x=w)}return a(x);case ql:e:{for(S=y.key;m!==null;){if(m.key===S)if(m.tag===4&&m.stateNode.containerInfo===y.containerInfo&&m.stateNode.implementation===y.implementation){r(x,m.sibling),m=i(m,y.children||[]),m.return=x,x=m;break e}else{r(x,m);break}else e(x,m);m=m.sibling}m=vv(y,x.mode,w),m.return=x,x=m}return a(x);case vs:return S=y._init,v(x,m,S(y._payload),w)}if(vf(y))return g(x,m,y,w);if(W0(y))return p(x,m,y,w);Qh(x,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,m!==null&&m.tag===6?(r(x,m.sibling),m=i(m,y),m.return=x,x=m):(r(x,m),m=mv(y,x.mode,w),m.return=x,x=m),a(x)):r(x,m)}return v}var Bu=S9(!0),T9=S9(!1),s1=ac(null),c1=null,ru=null,wx=null;function Cx(){wx=ru=c1=null}function Sx(t){var e=s1.current;Dn(s1),t._currentValue=e}function l5(t,e,r){for(;t!==null;){var n=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,n!==null&&(n.childLanes|=e)):n!==null&&(n.childLanes&e)!==e&&(n.childLanes|=e),t===r)break;t=t.return}}function wu(t,e){c1=t,wx=ru=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(yi=!0),t.firstContext=null)}function io(t){var e=t._currentValue;if(wx!==t)if(t={context:t,memoizedValue:e,next:null},ru===null){if(c1===null)throw Error(Ne(308));ru=t,c1.dependencies={lanes:0,firstContext:t}}else ru=ru.next=t;return e}var Vc=null;function Tx(t){Vc===null?Vc=[t]:Vc.push(t)}function _9(t,e,r,n){var i=e.interleaved;return i===null?(r.next=r,Tx(e)):(r.next=i.next,i.next=r),e.interleaved=r,$a(t,n)}function $a(t,e){t.lanes|=e;var r=t.alternate;for(r!==null&&(r.lanes|=e),r=t,t=t.return;t!==null;)t.childLanes|=e,r=t.alternate,r!==null&&(r.childLanes|=e),r=t,t=t.return;return r.tag===3?r.stateNode:null}var ys=!1;function _x(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function E9(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function ka(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function Vs(t,e,r){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,Ht&2){var i=n.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),n.pending=e,$a(t,r)}return i=n.interleaved,i===null?(e.next=e,Tx(n)):(e.next=i.next,i.next=e),n.interleaved=e,$a(t,r)}function fp(t,e,r){if(e=e.updateQueue,e!==null&&(e=e.shared,(r&4194240)!==0)){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,lx(t,r)}}function G4(t,e){var r=t.updateQueue,n=t.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var i=null,o=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};o===null?i=o=a:o=o.next=a,r=r.next}while(r!==null);o===null?i=o=e:o=o.next=e}else i=o=e;r={baseState:n.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:n.shared,effects:n.effects},t.updateQueue=r;return}t=r.lastBaseUpdate,t===null?r.firstBaseUpdate=e:t.next=e,r.lastBaseUpdate=e}function l1(t,e,r,n){var i=t.updateQueue;ys=!1;var o=i.firstBaseUpdate,a=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,a===null?o=l:a.next=l,a=c;var f=t.alternate;f!==null&&(f=f.updateQueue,s=f.lastBaseUpdate,s!==a&&(s===null?f.firstBaseUpdate=l:s.next=l,f.lastBaseUpdate=c))}if(o!==null){var u=i.baseState;a=0,f=l=c=null,s=o;do{var d=s.lane,h=s.eventTime;if((n&d)===d){f!==null&&(f=f.next={eventTime:h,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var g=t,p=s;switch(d=e,h=r,p.tag){case 1:if(g=p.payload,typeof g=="function"){u=g.call(h,u,d);break e}u=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=p.payload,d=typeof g=="function"?g.call(h,u,d):g,d==null)break e;u=jn({},u,d);break e;case 2:ys=!0}}s.callback!==null&&s.lane!==0&&(t.flags|=64,d=i.effects,d===null?i.effects=[s]:d.push(s))}else h={eventTime:h,lane:d,tag:s.tag,payload:s.payload,callback:s.callback,next:null},f===null?(l=f=h,c=u):f=f.next=h,a|=d;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;d=s,s=d.next,d.next=null,i.lastBaseUpdate=d,i.shared.pending=null}}while(!0);if(f===null&&(c=u),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=f,e=i.shared.interleaved,e!==null){i=e;do a|=i.lane,i=i.next;while(i!==e)}else o===null&&(i.shared.lanes=0);il|=a,t.lanes=a,t.memoizedState=u}}function W4(t,e,r){if(t=e.effects,e.effects=null,t!==null)for(e=0;er?r:4,t(!0);var n=fv.transition;fv.transition={};try{t(!1),e()}finally{rn=r,fv.transition=n}}function W9(){return oo().memoizedState}function ZU(t,e,r){var n=Us(t);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},z9(t))$9(e,r);else if(r=_9(t,e,r,n),r!==null){var i=li();Io(r,t,n,i),j9(r,e,n)}}function QU(t,e,r){var n=Us(t),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(z9(t))$9(e,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=e.lastRenderedReducer,o!==null))try{var a=e.lastRenderedState,s=o(a,r);if(i.hasEagerState=!0,i.eagerState=s,Ro(s,a)){var c=e.interleaved;c===null?(i.next=i,Tx(e)):(i.next=c.next,c.next=i),e.interleaved=i;return}}catch{}finally{}r=_9(t,e,i,n),r!==null&&(i=li(),Io(r,t,n,i),j9(r,e,n))}}function z9(t){var e=t.alternate;return t===zn||e!==null&&e===zn}function $9(t,e){Uf=f1=!0;var r=t.pending;r===null?e.next=e:(e.next=r.next,r.next=e),t.pending=e}function j9(t,e,r){if(r&4194240){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,lx(t,r)}}var d1={readContext:io,useCallback:Wr,useContext:Wr,useEffect:Wr,useImperativeHandle:Wr,useInsertionEffect:Wr,useLayoutEffect:Wr,useMemo:Wr,useReducer:Wr,useRef:Wr,useState:Wr,useDebugValue:Wr,useDeferredValue:Wr,useTransition:Wr,useMutableSource:Wr,useSyncExternalStore:Wr,useId:Wr,unstable_isNewReconciler:!1},eB={readContext:io,useCallback:function(t,e){return zo().memoizedState=[t,e===void 0?null:e],t},useContext:io,useEffect:$4,useImperativeHandle:function(t,e,r){return r=r!=null?r.concat([t]):null,hp(4194308,4,V9.bind(null,e,t),r)},useLayoutEffect:function(t,e){return hp(4194308,4,t,e)},useInsertionEffect:function(t,e){return hp(4,2,t,e)},useMemo:function(t,e){var r=zo();return e=e===void 0?null:e,t=t(),r.memoizedState=[t,e],t},useReducer:function(t,e,r){var n=zo();return e=r!==void 0?r(e):e,n.memoizedState=n.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},n.queue=t,t=t.dispatch=ZU.bind(null,zn,t),[n.memoizedState,t]},useRef:function(t){var e=zo();return t={current:t},e.memoizedState=t},useState:z4,useDebugValue:Lx,useDeferredValue:function(t){return zo().memoizedState=t},useTransition:function(){var t=z4(!1),e=t[0];return t=JU.bind(null,t[1]),zo().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,r){var n=zn,i=zo();if(Ln){if(r===void 0)throw Error(Ne(407));r=r()}else{if(r=e(),Ir===null)throw Error(Ne(349));rl&30||O9(n,e,r)}i.memoizedState=r;var o={value:r,getSnapshot:e};return i.queue=o,$4(R9.bind(null,n,o,t),[t]),n.flags|=2048,_d(9,M9.bind(null,n,o,r,e),void 0,null),r},useId:function(){var t=zo(),e=Ir.identifierPrefix;if(Ln){var r=Ra,n=Ma;r=(n&~(1<<32-bo(n)-1)).toString(32)+r,e=":"+e+"R"+r,r=Sd++,0<\/script>",t=t.removeChild(t.firstChild)):typeof n.is=="string"?t=a.createElement(r,{is:n.is}):(t=a.createElement(r),r==="select"&&(a=t,n.multiple?a.multiple=!0:n.size&&(a.size=n.size))):t=a.createElementNS(t,r),t[qo]=e,t[xd]=n,tD(t,e,!1,!1),e.stateNode=t;e:{switch(a=jy(r,n),r){case"dialog":Sn("cancel",t),Sn("close",t),i=n;break;case"iframe":case"object":case"embed":Sn("load",t),i=n;break;case"video":case"audio":for(i=0;izu&&(e.flags|=128,n=!0,q0(o,!1),e.lanes=4194304)}else{if(!n)if(t=u1(a),t!==null){if(e.flags|=128,n=!0,r=t.updateQueue,r!==null&&(e.updateQueue=r,e.flags|=4),q0(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!Ln)return zr(e),null}else 2*nr()-o.renderingStartTime>zu&&r!==1073741824&&(e.flags|=128,n=!0,q0(o,!1),e.lanes=4194304);o.isBackwards?(a.sibling=e.child,e.child=a):(r=o.last,r!==null?r.sibling=a:e.child=a,o.last=a)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=nr(),e.sibling=null,r=Un.current,vn(Un,n?r&1|2:r&1),e):(zr(e),null);case 22:case 23:return Fx(),n=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==n&&(e.flags|=8192),n&&e.mode&1?Mi&1073741824&&(zr(e),e.subtreeFlags&6&&(e.flags|=8192)):zr(e),null;case 24:return null;case 25:return null}throw Error(Ne(156,e.tag))}function cB(t,e){switch(yx(e),e.tag){case 1:return Ci(e.type)&&r1(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Gu(),Dn(wi),Dn(Yr),bx(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Dx(e),null;case 13:if(Dn(Un),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(Ne(340));Uu()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Dn(Un),null;case 4:return Gu(),null;case 10:return Sx(e.type._context),null;case 22:case 23:return Fx(),null;case 24:return null;default:return null}}var tg=!1,Kr=!1,lB=typeof WeakSet=="function"?WeakSet:Set,Xe=null;function iu(t,e){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){qn(t,e,n)}else r.current=null}function y5(t,e,r){try{r()}catch(n){qn(t,e,n)}}var tT=!1;function uB(t,e){if(t5=Qp,t=c9(),mx(t)){if("selectionStart"in t)var r={start:t.selectionStart,end:t.selectionEnd};else e:{r=(r=t.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var i=n.anchorOffset,o=n.focusNode;n=n.focusOffset;try{r.nodeType,o.nodeType}catch{r=null;break e}var a=0,s=-1,c=-1,l=0,f=0,u=t,d=null;t:for(;;){for(var h;u!==r||i!==0&&u.nodeType!==3||(s=a+i),u!==o||n!==0&&u.nodeType!==3||(c=a+n),u.nodeType===3&&(a+=u.nodeValue.length),(h=u.firstChild)!==null;)d=u,u=h;for(;;){if(u===t)break t;if(d===r&&++l===i&&(s=a),d===o&&++f===n&&(c=a),(h=u.nextSibling)!==null)break;u=d,d=u.parentNode}u=h}r=s===-1||c===-1?null:{start:s,end:c}}else r=null}r=r||{start:0,end:0}}else r=null;for(n5={focusedElem:t,selectionRange:r},Qp=!1,Xe=e;Xe!==null;)if(e=Xe,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Xe=t;else for(;Xe!==null;){e=Xe;try{var g=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var p=g.memoizedProps,v=g.memoizedState,x=e.stateNode,m=x.getSnapshotBeforeUpdate(e.elementType===e.type?p:yo(e.type,p),v);x.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var y=e.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Ne(163))}}catch(w){qn(e,e.return,w)}if(t=e.sibling,t!==null){t.return=e.return,Xe=t;break}Xe=e.return}return g=tT,tT=!1,g}function Bf(t,e,r){var n=e.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&t)===t){var o=i.destroy;i.destroy=void 0,o!==void 0&&y5(e,r,o)}i=i.next}while(i!==n)}}function Fm(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var r=e=e.next;do{if((r.tag&t)===t){var n=r.create;r.destroy=n()}r=r.next}while(r!==e)}}function x5(t){var e=t.ref;if(e!==null){var r=t.stateNode;switch(t.tag){case 5:t=r;break;default:t=r}typeof e=="function"?e(t):e.current=t}}function iD(t){var e=t.alternate;e!==null&&(t.alternate=null,iD(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[qo],delete e[xd],delete e[o5],delete e[HU],delete e[KU])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function oD(t){return t.tag===5||t.tag===3||t.tag===4}function nT(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||oD(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function w5(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.nodeType===8?r.parentNode.insertBefore(t,e):r.insertBefore(t,e):(r.nodeType===8?(e=r.parentNode,e.insertBefore(t,r)):(e=r,e.appendChild(t)),r=r._reactRootContainer,r!=null||e.onclick!==null||(e.onclick=n1));else if(n!==4&&(t=t.child,t!==null))for(w5(t,e,r),t=t.sibling;t!==null;)w5(t,e,r),t=t.sibling}function C5(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.insertBefore(t,e):r.appendChild(t);else if(n!==4&&(t=t.child,t!==null))for(C5(t,e,r),t=t.sibling;t!==null;)C5(t,e,r),t=t.sibling}var Nr=null,wo=!1;function as(t,e,r){for(r=r.child;r!==null;)aD(t,e,r),r=r.sibling}function aD(t,e,r){if(Zo&&typeof Zo.onCommitFiberUnmount=="function")try{Zo.onCommitFiberUnmount(Mm,r)}catch{}switch(r.tag){case 5:Kr||iu(r,e);case 6:var n=Nr,i=wo;Nr=null,as(t,e,r),Nr=n,wo=i,Nr!==null&&(wo?(t=Nr,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):Nr.removeChild(r.stateNode));break;case 18:Nr!==null&&(wo?(t=Nr,r=r.stateNode,t.nodeType===8?cv(t.parentNode,r):t.nodeType===1&&cv(t,r),gd(t)):cv(Nr,r.stateNode));break;case 4:n=Nr,i=wo,Nr=r.stateNode.containerInfo,wo=!0,as(t,e,r),Nr=n,wo=i;break;case 0:case 11:case 14:case 15:if(!Kr&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){i=n=n.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&y5(r,e,a),i=i.next}while(i!==n)}as(t,e,r);break;case 1:if(!Kr&&(iu(r,e),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(s){qn(r,e,s)}as(t,e,r);break;case 21:as(t,e,r);break;case 22:r.mode&1?(Kr=(n=Kr)||r.memoizedState!==null,as(t,e,r),Kr=n):as(t,e,r);break;default:as(t,e,r)}}function rT(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new lB),e.forEach(function(n){var i=xB.bind(null,t,n);r.has(n)||(r.add(n),n.then(i,i))})}}function fo(t,e){var r=e.deletions;if(r!==null)for(var n=0;ni&&(i=a),n&=~o}if(n=i,n=nr()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*dB(n/1960))-n,10t?16:t,Ds===null)var n=!1;else{if(t=Ds,Ds=null,p1=0,Ht&6)throw Error(Ne(331));var i=Ht;for(Ht|=4,Xe=t.current;Xe!==null;){var o=Xe,a=o.child;if(Xe.flags&16){var s=o.deletions;if(s!==null){for(var c=0;cnr()-kx?$c(t,0):Ax|=r),Si(t,e)}function gD(t,e){e===0&&(t.mode&1?(e=Hh,Hh<<=1,!(Hh&130023424)&&(Hh=4194304)):e=1);var r=li();t=$a(t,e),t!==null&&(sh(t,e,r),Si(t,r))}function yB(t){var e=t.memoizedState,r=0;e!==null&&(r=e.retryLane),gD(t,r)}function xB(t,e){var r=0;switch(t.tag){case 13:var n=t.stateNode,i=t.memoizedState;i!==null&&(r=i.retryLane);break;case 19:n=t.stateNode;break;default:throw Error(Ne(314))}n!==null&&n.delete(e),gD(t,r)}var pD;pD=function(t,e,r){if(t!==null)if(t.memoizedProps!==e.pendingProps||wi.current)yi=!0;else{if(!(t.lanes&r)&&!(e.flags&128))return yi=!1,aB(t,e,r);yi=!!(t.flags&131072)}else yi=!1,Ln&&e.flags&1048576&&x9(e,a1,e.index);switch(e.lanes=0,e.tag){case 2:var n=e.type;gp(t,e),t=e.pendingProps;var i=Fu(e,Yr.current);wu(e,r),i=Ox(null,e,n,t,i,r);var o=Mx();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ci(n)?(o=!0,i1(e)):o=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,_x(e),i.updater=Vm,e.stateNode=i,i._reactInternals=e,f5(e,n,t,r),e=g5(null,e,n,!0,o,r)):(e.tag=0,Ln&&o&&vx(e),ii(null,e,i,r),e=e.child),e;case 16:n=e.elementType;e:{switch(gp(t,e),t=e.pendingProps,i=n._init,n=i(n._payload),e.type=n,i=e.tag=CB(n),t=yo(n,t),i){case 0:e=h5(null,e,n,t,r);break e;case 1:e=Z4(null,e,n,t,r);break e;case 11:e=Y4(null,e,n,t,r);break e;case 14:e=J4(null,e,n,yo(n.type,t),r);break e}throw Error(Ne(306,n,""))}return e;case 0:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:yo(n,i),h5(t,e,n,i,r);case 1:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:yo(n,i),Z4(t,e,n,i,r);case 3:e:{if(Z9(e),t===null)throw Error(Ne(387));n=e.pendingProps,o=e.memoizedState,i=o.element,E9(t,e),l1(e,n,null,r);var a=e.memoizedState;if(n=a.element,o.isDehydrated)if(o={element:n,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},e.updateQueue.baseState=o,e.memoizedState=o,e.flags&256){i=Wu(Error(Ne(423)),e),e=Q4(t,e,n,r,i);break e}else if(n!==i){i=Wu(Error(Ne(424)),e),e=Q4(t,e,n,r,i);break e}else for(Ni=ks(e.stateNode.containerInfo.firstChild),ki=e,Ln=!0,So=null,r=T9(e,null,n,r),e.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Uu(),n===i){e=ja(t,e,r);break e}ii(t,e,n,r)}e=e.child}return e;case 5:return D9(e),t===null&&c5(e),n=e.type,i=e.pendingProps,o=t!==null?t.memoizedProps:null,a=i.children,r5(n,i)?a=null:o!==null&&r5(n,o)&&(e.flags|=32),J9(t,e),ii(t,e,a,r),e.child;case 6:return t===null&&c5(e),null;case 13:return Q9(t,e,r);case 4:return Ex(e,e.stateNode.containerInfo),n=e.pendingProps,t===null?e.child=Bu(e,null,n,r):ii(t,e,n,r),e.child;case 11:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:yo(n,i),Y4(t,e,n,i,r);case 7:return ii(t,e,e.pendingProps,r),e.child;case 8:return ii(t,e,e.pendingProps.children,r),e.child;case 12:return ii(t,e,e.pendingProps.children,r),e.child;case 10:e:{if(n=e.type._context,i=e.pendingProps,o=e.memoizedProps,a=i.value,vn(s1,n._currentValue),n._currentValue=a,o!==null)if(Ro(o.value,a)){if(o.children===i.children&&!wi.current){e=ja(t,e,r);break e}}else for(o=e.child,o!==null&&(o.return=e);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var c=s.firstContext;c!==null;){if(c.context===n){if(o.tag===1){c=ka(-1,r&-r),c.tag=2;var l=o.updateQueue;if(l!==null){l=l.shared;var f=l.pending;f===null?c.next=c:(c.next=f.next,f.next=c),l.pending=c}}o.lanes|=r,c=o.alternate,c!==null&&(c.lanes|=r),l5(o.return,r,e),s.lanes|=r;break}c=c.next}}else if(o.tag===10)a=o.type===e.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(Ne(341));a.lanes|=r,s=a.alternate,s!==null&&(s.lanes|=r),l5(a,r,e),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===e){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}ii(t,e,i.children,r),e=e.child}return e;case 9:return i=e.type,n=e.pendingProps.children,wu(e,r),i=io(i),n=n(i),e.flags|=1,ii(t,e,n,r),e.child;case 14:return n=e.type,i=yo(n,e.pendingProps),i=yo(n.type,i),J4(t,e,n,i,r);case 15:return X9(t,e,e.type,e.pendingProps,r);case 17:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:yo(n,i),gp(t,e),e.tag=1,Ci(n)?(t=!0,i1(e)):t=!1,wu(e,r),H9(e,n,i),f5(e,n,i,r),g5(null,e,n,!0,t,r);case 19:return eD(t,e,r);case 22:return Y9(t,e,r)}throw Error(Ne(156,e.tag))};function mD(t,e){return z6(t,e)}function wB(t,e,r,n){this.tag=t,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function no(t,e,r,n){return new wB(t,e,r,n)}function Bx(t){return t=t.prototype,!(!t||!t.isReactComponent)}function CB(t){if(typeof t=="function")return Bx(t)?1:0;if(t!=null){if(t=t.$$typeof,t===ox)return 11;if(t===ax)return 14}return 2}function Bs(t,e){var r=t.alternate;return r===null?(r=no(t.tag,e,t.key,t.mode),r.elementType=t.elementType,r.type=t.type,r.stateNode=t.stateNode,r.alternate=t,t.alternate=r):(r.pendingProps=e,r.type=t.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=t.flags&14680064,r.childLanes=t.childLanes,r.lanes=t.lanes,r.child=t.child,r.memoizedProps=t.memoizedProps,r.memoizedState=t.memoizedState,r.updateQueue=t.updateQueue,e=t.dependencies,r.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},r.sibling=t.sibling,r.index=t.index,r.ref=t.ref,r}function vp(t,e,r,n,i,o){var a=2;if(n=t,typeof t=="function")Bx(t)&&(a=1);else if(typeof t=="string")a=5;else e:switch(t){case Xl:return jc(r.children,i,o,e);case ix:a=8,i|=8;break;case Ay:return t=no(12,r,e,i|2),t.elementType=Ay,t.lanes=o,t;case ky:return t=no(13,r,e,i),t.elementType=ky,t.lanes=o,t;case Vy:return t=no(19,r,e,i),t.elementType=Vy,t.lanes=o,t;case D6:return Bm(r,i,o,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case _6:a=10;break e;case E6:a=9;break e;case ox:a=11;break e;case ax:a=14;break e;case vs:a=16,n=null;break e}throw Error(Ne(130,t==null?t:typeof t,""))}return e=no(a,r,e,i),e.elementType=t,e.type=n,e.lanes=o,e}function jc(t,e,r,n){return t=no(7,t,n,e),t.lanes=r,t}function Bm(t,e,r,n){return t=no(22,t,n,e),t.elementType=D6,t.lanes=r,t.stateNode={isHidden:!1},t}function mv(t,e,r){return t=no(6,t,null,e),t.lanes=r,t}function vv(t,e,r){return e=no(4,t.children!==null?t.children:[],t.key,e),e.lanes=r,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function SB(t,e,r,n,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=J2(0),this.expirationTimes=J2(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=J2(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Gx(t,e,r,n,i,o,a,s,c){return t=new SB(t,e,r,s,c),e===1?(e=1,o===!0&&(e|=8)):e=0,o=no(3,null,null,e),t.current=o,o.stateNode=t,o.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},_x(o),t}function TB(t,e,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(wD)}catch(t){console.error(t)}}wD(),w6.exports=Wi;var IB=w6.exports,D5,fT=IB;D5=fT.createRoot,fT.hydrateRoot;var Se;(function(t){t.ERROR_EVENT="CORNERSTONE_ERROR",t.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",t.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",t.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",t.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",t.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",t.PRESET_MODIFIED="CORNERSTONE_VIEWPORT_RENDERING_PRESET_MODIFIED",t.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",t.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",t.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",t.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",t.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",t.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",t.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",t.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",t.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",t.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",t.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",t.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",t.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",t.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",t.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",t.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",t.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",t.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",t.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",t.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",t.VIEWPORT_NEW_IMAGE_SET="CORNERSTONE_VIEWPORT_NEW_IMAGE_SET",t.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",t.STACK_SCROLL_OUT_OF_BOUNDS="STACK_SCROLL_OUT_OF_BOUNDS",t.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",t.GEOMETRY_CACHE_GEOMETRY_REMOVED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_REMOVED",t.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS="VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS",t.VOLUME_VIEWPORT_SCROLL="VOLUME_VIEWPORT_SCROLL",t.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",t.WEB_WORKER_PROGRESS="CORNERSTONE_WEB_WORKER_PROGRESS",t.COLORMAP_MODIFIED="CORNERSTONE_COLORMAP_MODIFIED",t.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED="DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED",t.DYNAMIC_VOLUME_TIME_POINT_LOADED="DYNAMIC_VOLUME_TIME_POINT_LOADED",t.GEOMETRY_LOADED="GEOMETRY_LOADED",t.GEOMETRY_LOADED_FAILED="GEOMETRY_LOADED_FAILED"})(Se||(Se={}));var ht;(function(t){t.Interaction="interaction",t.Thumbnail="thumbnail",t.Prefetch="prefetch",t.Compute="compute"})(ht||(ht={}));var mn;(function(t){t.STACK="stack",t.ORTHOGRAPHIC="orthographic",t.PERSPECTIVE="perspective",t.VOLUME_3D="volume3d",t.VIDEO="video",t.WHOLE_SLIDE="wholeSlide"})(mn||(mn={}));var La;(function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR",t[t.FAST_LINEAR=2]="FAST_LINEAR"})(La||(La={}));const yp={COMPOSITE_BLEND:0,MAXIMUM_INTENSITY_BLEND:1,MINIMUM_INTENSITY_BLEND:2,AVERAGE_INTENSITY_BLEND:3,ADDITIVE_INTENSITY_BLEND:4,RADON_TRANSFORM_BLEND:5,LABELMAP_EDGE_PROJECTION_BLEND:6},OB={OFF:0,NORMALIZED:1,RAW:2};var CD={BlendMode:yp,FilterMode:OB};const{BlendMode:ig}=CD;var $u;(function(t){t[t.COMPOSITE=ig.COMPOSITE_BLEND]="COMPOSITE",t[t.MAXIMUM_INTENSITY_BLEND=ig.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",t[t.MINIMUM_INTENSITY_BLEND=ig.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",t[t.AVERAGE_INTENSITY_BLEND=ig.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND"})($u||($u={}));var ju;(function(t){t.AXIAL="axial",t.CORONAL="coronal",t.SAGITTAL="sagittal",t.ACQUISITION="acquisition"})(ju||(ju={}));var b5;(function(t){t.CONTOUR="CONTOUR",t.SURFACE="SURFACE"})(b5||(b5={}));const al=b5;var I5;(function(t){t.CLOSED_PLANAR="CLOSED_PLANAR",t.OPEN_PLANAR="OPEN_PLANAR"})(I5||(I5={}));const MB=I5;var Va;(function(t){t.LINEAR="LINEAR",t.SAMPLED_SIGMOID="SIGMOID"})(Va||(Va={}));var O5;(function(t){t.SUM="SUM",t.AVERAGE="AVERAGE",t.SUBTRACT="SUBTRACT"})(O5||(O5={}));const RB=O5;var y1;(function(t){t.NOT_APPLICABLE="",t.ERMF="ERMF",t.USER="User",t.PROJECTION="Proj",t.REGION="Region",t.ERROR="Error",t.UNCALIBRATED="Uncalibrated"})(y1||(y1={}));var oi;(function(t){t.NO_DATA="noData",t.LOADING="loading",t.PRE_RENDER="preRender",t.RESIZE="resize",t.RENDERED="rendered"})(oi||(oi={}));var Pi;(function(t){t[t.FAR_REPLICATE=1]="FAR_REPLICATE",t[t.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",t[t.SUBRESOLUTION=6]="SUBRESOLUTION",t[t.LOSSY=7]="LOSSY",t[t.FULL_RESOLUTION=8]="FULL_RESOLUTION"})(Pi||(Pi={}));var Dd;(function(t){t.FRAME="f",t.SECOND="s"})(Dd||(Dd={}));const LB=Object.freeze(Object.defineProperty({__proto__:null,get SpeedUnit(){return Dd}},Symbol.toStringTag,{value:"Module"}));var si;(function(t){t.CALIBRATION="calibrationModule",t.CINE="cineModule",t.GENERAL_IMAGE="generalImageModule",t.GENERAL_SERIES="generalSeriesModule",t.GENERAL_STUDY="generalStudyModule",t.IMAGE_PIXEL="imagePixelModule",t.IMAGE_PLANE="imagePlaneModule",t.IMAGE_URL="imageUrlModule",t.MODALITY_LUT="modalityLutModule",t.MULTIFRAME="multiframeModule",t.NM_MULTIFRAME_GEOMETRY="nmMultiframeGeometryModule",t.OVERLAY_PLANE="overlayPlaneModule",t.PATIENT="patientModule",t.PATIENT_STUDY="patientStudyModule",t.PET_IMAGE="petImageModule",t.PET_ISOTOPE="petIsotopeModule",t.PET_SERIES="petSeriesModule",t.SOP_COMMON="sopCommonModule",t.ULTRASOUND_ENHANCED_REGION="ultrasoundEnhancedRegionModule",t.VOI_LUT="voiLutModule",t.WADO_WEB_CLIENT="wadoWebClient"})(si||(si={}));var Su;(function(t){t.SUM="SUM",t.SUBTRACT="SUBTRACT",t.AVERAGE="AVERAGE"})(Su||(Su={}));const Ao=Object.freeze(Object.defineProperty({__proto__:null,BlendModes:$u,CalibrationTypes:y1,ContourType:MB,DynamicOperatorType:RB,Events:Se,get GenerateImageType(){return Su},GeometryType:al,ImageQualityStatus:Pi,InterpolationType:La,MetadataModules:si,OrientationAxis:ju,RequestType:ht,VOILUTFunctionType:Va,VideoEnums:LB,ViewportStatus:oi,ViewportType:mn},Symbol.toStringTag,{value:"Module"})),M5={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}},er={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(er);const Lo=.001;function SD(t){const e=Object.getOwnPropertyNames(t);for(const r of e){const n=t[r];n&&typeof n=="object"&&SD(n)}return Object.freeze(t)}const NB={axial:{viewPlaneNormal:[0,0,-1],viewUp:[0,-1,0],viewRight:[1,0,0]},sagittal:{viewPlaneNormal:[1,0,0],viewUp:[0,0,1],viewRight:[0,1,0]},coronal:{viewPlaneNormal:[0,-1,0],viewUp:[0,0,1],viewRight:[1,0,0]}},bs=SD(NB),TD=[{name:"CT-AAA",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-AAA2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bones",gradientOpacity:"4 0 1 985.12 1",specularPower:"1",scalarOpacity:"8 -1000 0 152.19 0 278.93 0.190476 952 0.2",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-Cardiac",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Contrast-Enhanced",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Vessels",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-2",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cropped-Volume-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -451 0 -450 1 1050 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Fat",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886",diffuse:"1",interpolation:"1"},{name:"CT-Liver-Vasculature",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Lung",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -637.62 0 700 1 3071 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Muscle",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Pulmonary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Soft-Tissue",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -167.01 0 -160 1 240 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Air",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ",diffuse:"0.9",interpolation:"1"},{name:"MR-Angio",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-Default",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"8 0 0 98.3725 0 416.637 1 2800 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-T2-Brain",gradientOpacity:"4 0 1 160.25 1",specularPower:"40",scalarOpacity:"10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1",diffuse:"0.6",interpolation:"1"},{name:"DTI-FA-Brain",gradientOpacity:"4 0 1 0.9950 1",specularPower:"40",scalarOpacity:"16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0",diffuse:"0.9",interpolation:"1"}],PB={slicer3D:[160/255,164/255,217/255]},Sl=Object.freeze(Object.defineProperty({__proto__:null,BACKGROUND_COLORS:PB,CPU_COLORMAPS:M5,EPSILON:Lo,MPR_CAMERA_VALUES:bs,RENDERING_DEFAULTS:er,VIEWPORT_PRESETS:TD},Symbol.toStringTag,{value:"Module"})),Y0={},bd={get:t=>Y0[t],set:t=>{const e=t.id;Y0[e]=t},delete:t=>delete Y0[t],getAll:()=>{const e=Object.keys(Y0).map(r=>Y0[r]);return e.sort((r,n)=>r.id[0]==="_"&&n.id[0]!=="_"?1:r.id[0]!=="_"&&n.id[0]==="_"?-1:0),e}};class AB{constructor(){this.listeners={},this.debouncedListeners={}}reset(){this.listeners={},this.debouncedListeners={}}addEventListenerOnce(e,r){const n=i=>{this.removeEventListener(e,n),r.call(this,i)};this.addEventListener(e,n)}addEventListener(e,r){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].indexOf(r)===-1&&this.listeners[e].push(r)}addEventListenerDebounced(e,r,n){this.debouncedListeners[e]=this.debouncedListeners[e]||{};const i=this.debouncedListeners[e];if(!i[r]){const o=a=>{i[r]&&clearTimeout(i[r].timeoutId),i[r].timeoutId=setTimeout(()=>{r.call(this,a)},n)};i[r]={original:r,handle:o,timeoutId:null},this.addEventListener(e,o)}}removeEventListenerDebounced(e,r){var n;if((n=this.debouncedListeners[e])!=null&&n[r]){const i=this.debouncedListeners[e][r];this.removeEventListener(e,i.handle),clearTimeout(i.timeoutId),delete this.debouncedListeners[e][r]}}removeEventListener(e,r){if(!this.listeners[e])return;const n=this.listeners[e],i=n.length;for(let o=0;o(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}function De(t=Ce,e,r=null){if(!e)throw new Error("Event type was not defined");const n=new CustomEvent(e,{detail:r,cancelable:!0});return t==null?void 0:t.dispatchEvent(n)}var kB=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!t(e[i],r[i]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(o=Object.keys(e),n=o.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;i--!==0;){var a=o[i];if(!t(e[a],r[a]))return!1}return!0}return e!==e&&r!==r};const _D=oh(kB);var dT=Object.prototype.toString,ED=function(e){var r=dT.call(e),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&dT.call(e.callee)==="[object Function]"),n},yv,hT;function VB(){if(hT)return yv;hT=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=ED,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),a=i.call(function(){},"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(d){var h=d.constructor;return h&&h.prototype===d},l={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if(typeof window>"u")return!1;for(var d in window)try{if(!l["$"+d]&&e.call(window,d)&&window[d]!==null&&typeof window[d]=="object")try{c(window[d])}catch{return!0}}catch{return!0}return!1}(),u=function(d){if(typeof window>"u"||!f)return c(d);try{return c(d)}catch{return!1}};t=function(h){var g=h!==null&&typeof h=="object",p=r.call(h)==="[object Function]",v=n(h),x=g&&r.call(h)==="[object String]",m=[];if(!g&&!p&&!v)throw new TypeError("Object.keys called on a non-object");var y=a&&p;if(x&&h.length>0&&!e.call(h,0))for(var w=0;w0)for(var C=0;C"u"||!_r?Nt:_r(Uint8Array),Kc={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Nt:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Nt:ArrayBuffer,"%ArrayIteratorPrototype%":Nl&&_r?_r([][Symbol.iterator]()):Nt,"%AsyncFromSyncIteratorPrototype%":Nt,"%AsyncFunction%":Hl,"%AsyncGenerator%":Hl,"%AsyncGeneratorFunction%":Hl,"%AsyncIteratorPrototype%":Hl,"%Atomics%":typeof Atomics>"u"?Nt:Atomics,"%BigInt%":typeof BigInt>"u"?Nt:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Nt:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Nt:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Nt:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":lG,"%eval%":eval,"%EvalError%":uG,"%Float32Array%":typeof Float32Array>"u"?Nt:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Nt:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Nt:FinalizationRegistry,"%Function%":OD,"%GeneratorFunction%":Hl,"%Int8Array%":typeof Int8Array>"u"?Nt:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Nt:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Nt:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Nl&&_r?_r(_r([][Symbol.iterator]())):Nt,"%JSON%":typeof JSON=="object"?JSON:Nt,"%Map%":typeof Map>"u"?Nt:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Nl||!_r?Nt:_r(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Nt:Promise,"%Proxy%":typeof Proxy>"u"?Nt:Proxy,"%RangeError%":fG,"%ReferenceError%":dG,"%Reflect%":typeof Reflect>"u"?Nt:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Nt:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Nl||!_r?Nt:_r(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Nt:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Nl&&_r?_r(""[Symbol.iterator]()):Nt,"%Symbol%":Nl?Symbol:Nt,"%SyntaxError%":Hu,"%ThrowTypeError%":gG,"%TypedArray%":mG,"%TypeError%":Tu,"%Uint8Array%":typeof Uint8Array>"u"?Nt:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Nt:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Nt:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Nt:Uint32Array,"%URIError%":hG,"%WeakMap%":typeof WeakMap>"u"?Nt:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Nt:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Nt:WeakSet};if(_r)try{null.error}catch(t){var vG=_r(_r(t));Kc["%Error.prototype%"]=vG}var yG=function t(e){var r;if(e==="%AsyncFunction%")r=wv("async function () {}");else if(e==="%GeneratorFunction%")r=wv("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=wv("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&_r&&(r=_r(i.prototype))}return Kc[e]=r,r},yT={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},fh=ID,x1=cG,xG=fh.call(Function.call,Array.prototype.concat),wG=fh.call(Function.apply,Array.prototype.splice),xT=fh.call(Function.call,String.prototype.replace),w1=fh.call(Function.call,String.prototype.slice),CG=fh.call(Function.call,RegExp.prototype.exec),SG=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,TG=/\\(\\)?/g,_G=function(e){var r=w1(e,0,1),n=w1(e,-1);if(r==="%"&&n!=="%")throw new Hu("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new Hu("invalid intrinsic syntax, expected opening `%`");var i=[];return xT(e,SG,function(o,a,s,c){i[i.length]=s?xT(c,TG,"$1"):a||o}),i},EG=function(e,r){var n=e,i;if(x1(yT,n)&&(i=yT[n],n="%"+i[0]+"%"),x1(Kc,n)){var o=Kc[n];if(o===Hl&&(o=yG(n)),typeof o>"u"&&!r)throw new Tu("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:o}}throw new Hu("intrinsic "+e+" does not exist!")},MD=function(e,r){if(typeof e!="string"||e.length===0)throw new Tu("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Tu('"allowMissing" argument must be a boolean');if(CG(/^%?[^%]*%?$/,e)===null)throw new Hu("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=_G(e),i=n.length>0?n[0]:"",o=EG("%"+i+"%",r),a=o.name,s=o.value,c=!1,l=o.alias;l&&(i=l[0],wG(n,xG([0,1],l)));for(var f=1,u=!0;f=n.length){var p=Hc(s,d);u=!!p,u&&"get"in p&&!("originalValue"in p.get)?s=p.get:s=s[d]}else u=x1(s,d),s=s[d];u&&!c&&(Kc[a]=s)}}return s},DG=MD,wp=DG("%Object.defineProperty%",!0)||!1;if(wp)try{wp({},"a",{value:1})}catch{wp=!1}var RD=wp,bG=MD,Cp=bG("%Object.getOwnPropertyDescriptor%",!0);if(Cp)try{Cp([],"length")}catch{Cp=null}var IG=Cp,wT=RD,OG=DD,Pl=bD,CT=IG,MG=function(e,r,n){if(!e||typeof e!="object"&&typeof e!="function")throw new Pl("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new Pl("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Pl("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Pl("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Pl("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Pl("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,o=arguments.length>4?arguments[4]:null,a=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,c=!!CT&&CT(e,r);if(wT)wT(e,r,{configurable:a===null&&c?c.configurable:!a,enumerable:i===null&&c?c.enumerable:!i,value:n,writable:o===null&&c?c.writable:!o});else if(s||!i&&!o&&!a)e[r]=n;else throw new OG("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},R5=RD,LD=function(){return!!R5};LD.hasArrayLengthDefineBug=function(){if(!R5)return null;try{return R5([],"length",{value:1}).length!==1}catch{return!0}};var RG=LD,LG=BB,NG=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",PG=Object.prototype.toString,AG=Array.prototype.concat,ST=MG,kG=function(t){return typeof t=="function"&&PG.call(t)==="[object Function]"},ND=RG(),VG=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!kG(n)||!n())return}ND?ST(t,e,r,!0):ST(t,e,r)},PD=function(t,e){var r=arguments.length>2?arguments[2]:{},n=LG(e);NG&&(n=AG.call(n,Object.getOwnPropertySymbols(e)));for(var i=0;inull};function Eo(t){if(t==null||t.isA)return t;if(!t.vtkClass)return To.console&&To.console.error&&To.console.error("Invalid VTK object"),null;const e=BD[t.vtkClass];if(!e)return To.console&&To.console.error&&To.console.error(`No vtk class found for Object of type ${t.vtkClass}`),null;const r={...t};Object.keys(r).forEach(i=>{r[i]&&typeof r[i]=="object"&&r[i].vtkClass&&(r[i]=Eo(r[i]))});const n=e(r);return n&&n.modified&&n.modified(),n}function qG(t,e){BD[t]=e}Eo.register=qG;class Sv extends Array{push(){for(let e=0;e{WD[t]=Oc});To.console=console.hasOwnProperty("log")?console:WD;const Ks={debug:Oc,error:To.console.error||Oc,info:To.console.info||Oc,log:To.console.log||Oc,warn:To.console.warn||Oc};function zD(t,e){Ks[t]&&(Ks[t]=e||Oc)}function $D(){Ks.log(...arguments)}function jD(){Ks.info(...arguments)}function C1(){Ks.debug(...arguments)}function Dt(){Ks.error(...arguments)}function jm(){Ks.warn(...arguments)}const TT={};function HD(t){TT[t]||(Ks.error(t),TT[t]=!0)}const Jr=Object.create(null);Jr.Float32Array=Float32Array;Jr.Float64Array=Float64Array;Jr.Uint8Array=Uint8Array;Jr.Int8Array=Int8Array;Jr.Uint16Array=Uint16Array;Jr.Int16Array=Int16Array;Jr.Uint32Array=Uint32Array;Jr.Int32Array=Int32Array;Jr.Uint8ClampedArray=Uint8ClampedArray;try{Jr.BigInt64Array=BigInt64Array,Jr.BigUint64Array=BigUint64Array}catch{}function m0(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n1?e-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:2,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;const n=["TB","GB","MB","KB"];let i=Number(t),o="B";for(;i>r;)i/=r,o=n.pop();return`${i.toFixed(e)} ${o}`}function XD(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:" ";const r=[];let n=t;for(;n>1e3;)r.push(`000${n%1e3}`.slice(-3)),n=Math.floor(n/1e3);return n>0&&r.push(n),r.reverse(),r.join(e)}function YD(t){Object.keys(t).forEach(e=>{Array.isArray(t[e])&&(t[e]=[].concat(t[e]))})}function JG(t){return Object.values(Jr).some(e=>t instanceof e)}function ZG(t,e){if(t===e)return!0;if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let r=0;rt[r]===e)}function JD(t){return t&&t.isA?t.getState():t}function jx(t){setTimeout(t,0)}function ZD(t,e){const r=performance.now();t.finally(()=>{const n=performance.now()-r;e(n)})}function un(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};YD(e);const r=[];if(Number.isInteger(e.mtime)||(e.mtime=++L5),!("classHierarchy"in e))e.classHierarchy=new Sv("vtkObject");else if(!(e.classHierarchy instanceof Sv)){const o=new Sv;for(let a=0;a!!e.deleted,t.modified=o=>{if(e.deleted){Dt("instance deleted - cannot call any method");return}o&&oa&&a(t)))},t.onModified=o=>{if(e.deleted)return Dt("instance deleted - cannot call any method"),null;const a=r.length;return r.push(o),i(a)},t.getMTime=()=>e.mtime,t.isA=o=>{let a=e.classHierarchy.length;for(;a--;)if(e.classHierarchy[a]===o)return!0;return!1},t.getClassName=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.classHierarchy[e.classHierarchy.length-1-o]},t.set=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,c=!1;return Object.keys(o).forEach(l=>{const f=s?null:t[`set${Km(l)}`];f&&Array.isArray(o[l])&&f.length>1?c=f(...o[l])||c:f?c=f(o[l])||c:(["mtime"].indexOf(l)===-1&&!a&&jm(`Warning: Set value to model directly ${l}, ${o[l]}`),c=e[l]!==o[l]||c,e[l]=o[l])}),c},t.get=function(){for(var o=arguments.length,a=new Array(o),s=0;s{c[l]=e[l]}),c},t.getReferenceByName=o=>e[o],t.delete=()=>{Object.keys(e).forEach(o=>delete e[o]),r.forEach((o,a)=>n(a)),e.deleted=!0},t.getState=()=>{if(e.deleted)return null;const o={...e,vtkClass:t.getClassName()};Object.keys(o).forEach(s=>{o[s]===null||o[s]===void 0||s[0]==="_"?delete o[s]:o[s].isA?o[s]=o[s].getState():Array.isArray(o[s])?o[s]=o[s].map(JD):JG(o[s])&&(o[s]=Array.from(o[s]))});const a={};return Object.keys(o).sort().forEach(s=>{a[s]=o[s]}),a.mtime&&delete a.mtime,a},t.shallowCopy=function(o){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(o.getClassName()!==t.getClassName())throw new Error(`Cannot ShallowCopy ${o.getClassName()} into ${t.getClassName()}`);const s=o.get(),c=Object.keys(e).sort();Object.keys(s).sort().forEach(f=>{const u=c.indexOf(f);u===-1?a&&C1(`add ${f} in shallowCopy`):c.splice(u,1),e[f]=s[f]}),c.length&&a&&C1(`Untouched keys: ${c.join(", ")}`),t.modified()},t.toJSON=function(){return t.getState()},t}const eW={object(t,e,r){return function(){return{...e[r.name]}}}};function gi(t,e,r){r.forEach(n=>{if(typeof n=="object"){const i=eW[n.type];i?t[`get${Yn(n.name)}`]=i(t,e,n):t[`get${Yn(n.name)}`]=()=>e[n.name]}else t[`get${Yn(n)}`]=()=>e[n]})}const QD={enum(t,e,r){const n=`_on${Yn(r.name)}Changed`;return i=>{var o;if(typeof i=="string"){if(r.enum[i]!==void 0)return e[r.name]!==r.enum[i]?(e[r.name]=r.enum[i],t.modified(),!0):!1;throw Dt(`Set Enum with invalid argument ${r}, ${i}`),new RangeError("Set Enum with invalid string argument")}if(typeof i=="number"){if(e[r.name]!==i){if(Object.keys(r.enum).map(a=>r.enum[a]).indexOf(i)!==-1){const a=e[r.name];return e[r.name]=i,(o=e[n])==null||o.call(e,t,e,i,a),t.modified(),!0}throw Dt(`Set Enum outside numeric range ${r}, ${i}`),new RangeError("Set Enum outside numeric range")}return!1}throw Dt(`Set Enum with invalid argument (String/Number) ${r}, ${i}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(t,e,r){var i;((i=r.params)==null?void 0:i.length)===1&&jm('Setter of type "object" with a single "param" field is not supported');const n=`_on${Yn(r.name)}Changed`;return function(){var l,f;for(var o=arguments.length,a=new Array(o),s=0;s1&&((l=r.params)!=null&&l.length)?c=r.params.reduce((u,d,h)=>Object.assign(u,{[d]:a[h]}),{}):c=a[0],!_D(e[r.name],c)){const u=e[r.name];return e[r.name]=c,(f=e[n])==null||f.call(e,t,e,c,u),t.modified(),!0}return!1}}};function _T(t){if(typeof t=="object"){const e=QD[t.type];if(e)return(r,n)=>e(r,n,t);throw Dt(`No setter for field ${t}`),new TypeError("No setter for field")}return function(r,n){const i=`_on${Yn(t)}Changed`;return function(a){var s;if(n.deleted)return Dt("instance deleted - cannot call any method"),!1;if(n[t]!==a){const c=n[t.name];return n[t]=a,(s=n[i])==null||s.call(n,r,n,a,c),r.modified(),!0}return!1}}}function dh(t,e,r){r.forEach(n=>{typeof n=="object"?t[`set${Yn(n.name)}`]=_T(n)(t,e):t[`set${Yn(n)}`]=_T(n)(t,e)})}function Jn(t,e,r){gi(t,e,r),dh(t,e,r)}function v0(t,e,r){r.forEach(n=>{t[`get${Yn(n)}`]=()=>e[n]?Array.from(e[n]):e[n],t[`get${Yn(n)}ByReference`]=()=>e[n]})}function Hx(t,e,r,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;r.forEach(o=>{if(e[o]&&n&&e[o].length!==n)throw new RangeError(`Invalid initial number of values for array (${o})`);const a=`_on${Yn(o)}Changed`;t[`set${Yn(o)}`]=function(){var h;if(e.deleted)return Dt("instance deleted - cannot call any method"),!1;for(var s=arguments.length,c=new Array(s),l=0;l=0)&&(f=f[0],d=!0),f==null)u=e[o]!==f;else{if(n&&f.length!==n)if(f.length{const c=e[o];s.forEach((l,f)=>{c[f]=l})}})}function Kx(t,e,r,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;v0(t,e,r),Hx(t,e,r,n,i)}function hh(t,e,r){for(let n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){Dt("instance deleted - cannot call any method");return}if(g>=e.numberOfInputs){Dt(`algorithm ${t.getClassName()} only has ${e.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(e.inputData[g]!==h||e.inputConnection[g])&&(e.inputData[g]=h,e.inputConnection[g]=null,t.modified&&t.modified())}function o(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[h]&&(e.inputData[h]=e.inputConnection[h]()),e.inputData[h]}function a(h){let g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){Dt("instance deleted - cannot call any method");return}if(g>=e.numberOfInputs){let p=`algorithm ${t.getClassName()} only has `;p+=`${e.numberOfInputs}`,p+=" input ports. To add more input ports, use addInputConnection()",Dt(p);return}e.inputData[g]=null,e.inputConnection[g]=h}function s(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[h]}function c(){let h=e.numberOfInputs;for(;h&&!e.inputData[h-1]&&!e.inputConnection[h-1];)h--;return h===e.numberOfInputs&&e.numberOfInputs++,h}function l(h){if(e.deleted){Dt("instance deleted - cannot call any method");return}a(h,c())}function f(h){if(e.deleted){Dt("instance deleted - cannot call any method");return}i(h,c())}function u(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.deleted?(Dt("instance deleted - cannot call any method"),null):(t.shouldUpdate()&&t.update(),e.output[h])}t.shouldUpdate=()=>{var v,x;const h=t.getMTime();let g=1/0,p=n;for(;p--;){if(!e.output[p]||e.output[p].isDeleted())return!0;const m=e.output[p].getMTime();if(mg)return!0;return!1};function d(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const g=()=>u(h);return g.filter=t,g}if(e.numberOfInputs){let h=e.numberOfInputs;for(;h--;)e.inputData.push(null),e.inputConnection.push(null);t.setInputData=i,t.setInputConnection=a,t.addInputData=f,t.addInputConnection=l,t.getInputData=o,t.getInputConnection=s}n&&(t.getOutputData=u,t.getOutputPort=d),t.update=()=>{const h=[];if(e.numberOfInputs){let g=0;for(;ge.numberOfInputs,t.getNumberOfOutputPorts=()=>n||e.output.length,t.getInputArrayToProcess=h=>{const g=e.inputArrayToProcess[h],p=e.inputData[h];return g&&p?p[`get${g.fieldAssociation}`]().getArray(g.arrayName):null},t.setInputArrayToProcess=function(h,g,p){let v=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Scalars";for(;e.inputArrayToProcess.lengthu.apply(t,arguments),1-d);else if(u.apply(t,arguments)===Xx)break}}}t[`invoke${Yn(r)}`]=c,t[`on${Yn(r)}`]=function(l){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!l.apply)return console.error(`Invalid callback for event ${r}`),null;if(e.deleted)return Dt("instance deleted - cannot call any method"),null;const u=o++;return n.push([u,l,f]),n.sort((d,h)=>h[2]-d[2]),s(u)},t.delete=()=>{i(),n.forEach(l=>{let[f]=l;return a(f)})}}function Bt(t,e){const r=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const i={},o={};return t(o,i,n),Object.freeze(o)};return e&&Eo.register(e,r),r}function gh(){for(var t=arguments.length,e=new Array(t),r=0;r!!a).map(a=>a(...i))}}function Yx(t){return t&&t.isA&&t.isA("vtkObject")}function S1(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(Yx(t)){if(n.indexOf(t)>=0)return r;n.push(t);const i=e(t);i!==void 0&&r.push(i);const o=t.get();Object.keys(o).forEach(a=>{const s=o[a];Array.isArray(s)?s.forEach(c=>{S1(c,e,r,n)}):S1(s,e,r,n)})}return r}function t7(t,e,r){var n=this;let i;const o=function(){for(var a=arguments.length,s=new Array(a),c=0;c{i=null,r||t.apply(l,s)},u=r&&!i;clearTimeout(i),i=setTimeout(f,e),u&&t.apply(l,s)};return o.cancel=()=>clearTimeout(i),o}function n7(t,e){let r=!1,n=null;function i(){r=!1,n!==null&&(o(...n),n=null)}function o(){for(var a=arguments.length,s=new Array(a),c=0;c2&&arguments[2]!==void 0?arguments[2]:{};e.keystore=Object.assign(e.keystore||{},r),t.setKey=(n,i)=>{e.keystore[n]=i},t.getKey=n=>e.keystore[n],t.getAllKeys=()=>Object.keys(e.keystore),t.deleteKey=n=>delete e.keystore[n],t.clearKeystore=()=>t.getAllKeys().forEach(n=>delete e.keystore[n])}let tW=1;const og="__root__";function r7(t,e){Jx(t,e);const r=t.delete;e.proxyId=`${tW++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),gi(t,e,["proxyId","proxyGroup","proxyName"]),Jn(t,e,["proxyManager"]);const n={},i={};function o(l,f){i[f]||(i[f]=[]);const u=i[f];for(let d=0;d{e.ui=JSON.parse(JSON.stringify(l||[])),Object.keys(n).forEach(f=>delete n[f]),Object.keys(i).forEach(f=>delete i[f]),o(e.ui,og),t.modified()};function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:og;return i[l]}t.updateProxyProperty=(l,f)=>{const u=n[l];u?Object.assign(u,f):n[l]={...f}},t.activate=()=>{if(e.proxyManager){const l=`setActive${Yn(t.getProxyGroup().slice(0,-1))}`;e.proxyManager[l]&&e.proxyManager[l](t)}},e.propertyLinkSubscribers={},t.registerPropertyLinkForGC=(l,f)=>{f in e.propertyLinkSubscribers||(e.propertyLinkSubscribers[f]=[]),e.propertyLinkSubscribers[f].push(l)},t.gcPropertyLinks=l=>{const f=e.propertyLinkSubscribers[l]||[];for(;f.length;)f.pop().unbind(t)},e.propertyLinkMap={},t.getPropertyLink=function(l){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.propertyLinkMap[l])return e.propertyLinkMap[l];let u=null;const d=[];let h=0,g=!1;function p(w){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(g)return null;const S=[];let T=null;for(h=d.length;h--;){const E=d[h];E.instance===w?T=E:S.push(E)}if(!T)return null;const _=T.instance[`get${Yn(T.propertyName)}`]();if(!ZG(_,u)||C){for(u=_,g=!0;S.length;){const E=S.pop();E.instance.set({[E.propertyName]:u})}g=!1}return e.propertyLinkMap[l].persistent&&(e.propertyLinkMap[l].value=_),_}function v(w,C){const S=[];for(h=d.length;h--;){const T=d[h];T.instance===w&&(T.propertyName===C||C===void 0)&&(T.subscription.unsubscribe(),S.push(h))}for(;S.length;)d.splice(S.pop(),1)}function x(w,C){let S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const T=w.onModified(p),_=d[0];return d.push({instance:w,propertyName:C,subscription:T}),S&&(e.propertyLinkMap[l].persistent&&e.propertyLinkMap[l].value!==void 0?w.set({[C]:e.propertyLinkMap[l].value}):_&&p(_.instance,!0)),{unsubscribe:()=>v(w,C)}}function m(){for(;d.length;)d.pop().subscription.unsubscribe()}const y={bind:x,unbind:v,unsubscribe:m,persistent:f};return e.propertyLinkMap[l]=y,y};function s(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:og;const f=[],u=e.proxyId,d=a(l)||[];for(let h=0;hs().map(l=>l.name),t.getPropertyByName=l=>s().find(f=>f.name===l),t.getPropertyDomainByName=l=>(n[l]||{}).domain,t.getProxySection=()=>({id:e.proxyId,name:e.proxyGroup,ui:e.ui,properties:s()}),t.delete=()=>{const l=Object.keys(e.propertyLinkMap);let f=l.length;for(;f--;)e.propertyLinkMap[l[f]].unsubscribe();Object.keys(e.propertyLinkSubscribers).forEach(t.gcPropertyLinks),r()},t.getState=()=>null;function c(){if(e.links)for(let l=0;l{for(;i.length;)i.pop().unsubscribe();n()}}function o7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};e.this=t;function i(s){const c=Object.keys(s);let l=c.length;for(;l--;){const f=c[l];e[f].set(s[f])}}const o=Object.keys(n);let a=o.length;for(;a--;){const s=o[a];e[s]=n[s];const c=r[s];t[`set${Yn(s)}`]=l=>{if(l!==e[s]){e[s]=l;const f=c[l];i(f),t.modified()}}}o.length&&gi(t,e,o)}const ET=10,DT=40,bT=800;function a7(t){let e=0,r=0,n=0,i=0;return"detail"in t&&(r=t.detail),"wheelDelta"in t&&(r=-t.wheelDelta/120),"wheelDeltaY"in t&&(r=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=r,r=0),n=e*ET,i=r*ET,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=DT,i*=DT):(n*=bT,i*=bT)),n&&!e&&(e=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:e,spinY:r||e,pixelX:n,pixelY:i||n}}var W={algo:qx,capitalize:Km,chain:gh,debounce:t7,enumToString:QG,event:e7,EVENT_ABORT:Xx,formatBytesToProperUnit:qD,formatNumbersWithThousandSeparator:XD,get:gi,getArray:v0,getCurrentGlobalMTime:XG,getStateArrayMapFunc:JD,isVtkObject:Yx,keystore:Jx,measurePromiseExecution:ZD,moveToProtected:hh,newInstance:Bt,newTypedArray:m0,newTypedArrayFrom:Hm,normalizeWheel:a7,obj:un,proxy:r7,proxyPropertyMapping:i7,proxyPropertyState:o7,safeArrays:YD,set:dh,setArray:Hx,setGet:Jn,setGetArray:Kx,setImmediate:jx,setLoggerFunction:zD,throttle:n7,traverseInstanceTree:S1,TYPED_ARRAYS:Jr,uncapitalize:KD,VOID:GD,vtkDebugMacro:C1,vtkErrorMacro:Dt,vtkInfoMacro:jD,vtkLogMacro:$D,vtkOnceErrorMacro:HD,vtkWarningMacro:jm,objectSetterMap:QD},Br=Object.freeze({__proto__:null,VOID:GD,setLoggerFunction:zD,vtkLogMacro:$D,vtkInfoMacro:jD,vtkDebugMacro:C1,vtkErrorMacro:Dt,vtkWarningMacro:jm,vtkOnceErrorMacro:HD,TYPED_ARRAYS:Jr,newTypedArray:m0,newTypedArrayFrom:Hm,capitalize:Km,_capitalize:Yn,uncapitalize:KD,formatBytesToProperUnit:qD,formatNumbersWithThousandSeparator:XD,setImmediateVTK:jx,measurePromiseExecution:ZD,obj:un,get:gi,set:dh,setGet:Jn,getArray:v0,setArray:Hx,setGetArray:Kx,moveToProtected:hh,algo:qx,EVENT_ABORT:Xx,event:e7,newInstance:Bt,chain:gh,isVtkObject:Yx,traverseInstanceTree:S1,debounce:t7,throttle:n7,keystore:Jx,proxy:r7,proxyPropertyMapping:i7,proxyPropertyState:o7,normalizeWheel:a7,default:W});const s7={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},vt={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",UNSIGNED_CHAR_CLAMPED:"Uint8ClampedArray",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},nW=vt.FLOAT;var c7={DefaultDataType:nW,DataTypeByteSize:s7,VtkDataTypes:vt};const rW="WebGL",T1=Object.create(null);function l7(t,e){T1[t]=e}function iW(){return Object.keys(T1)}function u7(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return T1[t]&&T1[t](e)}function oW(t,e){e.classHierarchy.push("vtkRenderWindow"),t.addRenderer=r=>{t.hasRenderer(r)||(r.setRenderWindow(t),e.renderers.push(r),t.modified())},t.removeRenderer=r=>{e.renderers=e.renderers.filter(n=>n!==r),t.modified()},t.hasRenderer=r=>e.renderers.indexOf(r)!==-1,t.newAPISpecificView=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return u7(r||e.defaultViewAPI,n)},t.addView=r=>{t.hasView(r)||(r.setRenderable(t),e._views.push(r),t.modified())},t.removeView=r=>{e._views=e._views.filter(n=>n!==r),t.modified()},t.hasView=r=>e._views.indexOf(r)!==-1,t.preRender=()=>{e.renderers.forEach(r=>{r.isActiveCameraCreated()||r.resetCamera()})},t.render=()=>{t.preRender(),e.interactor?e.interactor.render():e._views.forEach(r=>r.traverseAllPasses())},t.getStatistics=()=>{const r={propCount:0,invisiblePropCount:0,gpuMemoryMB:0};return e._views.forEach(n=>{n.getGraphicsMemoryInfo&&(r.gpuMemoryMB+=n.getGraphicsMemoryInfo()/1e6)}),e.renderers.forEach(n=>{const i=n.getViewProps(),o=e._views[0].getViewNodeFor(n);i.forEach(a=>{if(a.getVisibility()){r.propCount+=1;const s=a.getMapper&&a.getMapper();if(s&&s.getPrimitiveCount){const c=o.getViewNodeFor(s);if(c){c.getAllocatedGPUMemoryInBytes&&(r.gpuMemoryMB+=c.getAllocatedGPUMemoryInBytes()/1e6);const l=s.getPrimitiveCount();Object.keys(l).forEach(f=>{r[f]||(r[f]=0),r[f]+=l[f]})}}}else r.invisiblePropCount+=1})}),r.str=Object.keys(r).map(n=>`${n}: ${r[n]}`).join(` -`),r},t.captureImages=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"image/png",n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return W.setImmediate(t.render),e._views.map(i=>i.captureNextImage?i.captureNextImage(r,n):void 0).filter(i=>!!i)},t.addRenderWindow=r=>e.childRenderWindows.includes(r)?!1:(e.childRenderWindows.push(r),t.modified(),!0),t.removeRenderWindow=r=>{const n=e.childRenderWindows.findIndex(i=>i===r);return n<0?!1:(e.childRenderWindows.splice(n,1),t.modified(),!0)}}const aW={defaultViewAPI:rW,renderers:[],views:[],interactor:null,neverRendered:!0,numberOfLayers:1,childRenderWindows:[]};function f7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aW,r),W.obj(t,e),W.setGet(t,e,["interactor","numberOfLayers","_views","defaultViewAPI"]),W.get(t,e,["neverRendered"]),W.getArray(t,e,["renderers","childRenderWindows"]),W.moveToProtected(t,e,["views"]),W.event(t,e,"completion"),oW(t,e)}const sW=W.newInstance(f7,"vtkRenderWindow");var cW={newInstance:sW,extend:f7,registerViewConstructor:l7,listViewAPIs:iW,newAPISpecificView:u7};const Id={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},Je={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var d7={Wrap:Id,Filter:Je};const h7=new Float32Array(1),lW=new Int32Array(h7.buffer);function uW(t){h7[0]=t;const e=lW[0];let r=e>>16&32768,n=e>>12&2047;const i=e>>23&255;return i<103?r:i>142?(r|=31744,r|=(i===255?0:1)&&e&8388607,r):i<113?(n|=2048,r|=(n>>114-i)+(n>>113-i&1),r):(r|=i-112<<10|n>>1,r+=n&1,r)}function fW(t){const e=(t&32768)>>15,r=(t&31744)>>10,n=t&1023;return r===0?(e?-1:1)*2**-14*(n/2**10):r===31?n?NaN:(e?-1:1)*(1/0):(e?-1:1)*2**(r-15)*(1+n/2**10)}var Mc={fromHalf:fW,toHalf:uW},Zx={exports:{}};Zx.exports;(function(t){(function(e,r,n){function i(c){var l=this,f=s();l.next=function(){var u=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=u-(l.c=u|0)},l.c=1,l.s0=f(" "),l.s1=f(" "),l.s2=f(" "),l.s0-=f(c),l.s0<0&&(l.s0+=1),l.s1-=f(c),l.s1<0&&(l.s1+=1),l.s2-=f(c),l.s2<0&&(l.s2+=1),f=null}function o(c,l){return l.c=c.c,l.s0=c.s0,l.s1=c.s1,l.s2=c.s2,l}function a(c,l){var f=new i(c),u=l&&l.state,d=f.next;return d.int32=function(){return f.next()*4294967296|0},d.double=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.quick=d,u&&(typeof u=="object"&&o(u,f),d.state=function(){return o(f,{})}),d}function s(){var c=4022871197,l=function(f){f=String(f);for(var u=0;u>>0,d-=c,d*=c,c=d>>>0,d-=c,c+=d*4294967296}return(c>>>0)*23283064365386963e-26};return l}r&&r.exports?r.exports=a:this.alea=a})(Dr,t)})(Zx);var dW=Zx.exports,Qx={exports:{}};Qx.exports;(function(t){(function(e,r,n){function i(s){var c=this,l="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var u=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^u^u>>>8},s===(s|0)?c.x=s:l+=s;for(var f=0;f>>0)/4294967296};return u.double=function(){do var d=l.next()>>>11,h=(l.next()>>>0)/4294967296,g=(d+h)/(1<<21);while(g===0);return g},u.int32=l.next,u.quick=u,f&&(typeof f=="object"&&o(f,l),u.state=function(){return o(l,{})}),u}r&&r.exports?r.exports=a:this.xor128=a})(Dr,t)})(Qx);var hW=Qx.exports,ew={exports:{}};ew.exports;(function(t){(function(e,r,n){function i(s){var c=this,l="";c.next=function(){var u=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(u^u<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,s===(s|0)?c.x=s:l+=s;for(var f=0;f>>4),c.next()}function o(s,c){return c.x=s.x,c.y=s.y,c.z=s.z,c.w=s.w,c.v=s.v,c.d=s.d,c}function a(s,c){var l=new i(s),f=c&&c.state,u=function(){return(l.next()>>>0)/4294967296};return u.double=function(){do var d=l.next()>>>11,h=(l.next()>>>0)/4294967296,g=(d+h)/(1<<21);while(g===0);return g},u.int32=l.next,u.quick=u,f&&(typeof f=="object"&&o(f,l),u.state=function(){return o(l,{})}),u}r&&r.exports?r.exports=a:this.xorwow=a})(Dr,t)})(ew);var gW=ew.exports,tw={exports:{}};tw.exports;(function(t){(function(e,r,n){function i(s){var c=this;c.next=function(){var f=c.x,u=c.i,d,h;return d=f[u],d^=d>>>7,h=d^d<<24,d=f[u+1&7],h^=d^d>>>10,d=f[u+3&7],h^=d^d>>>3,d=f[u+4&7],h^=d^d<<7,d=f[u+7&7],d=d^d<<13,h^=d^d<<9,f[u]=h,c.i=u+1&7,h};function l(f,u){var d,h=[];if(u===(u|0))h[0]=u;else for(u=""+u,d=0;d0;--d)f.next()}l(c,s)}function o(s,c){return c.x=s.x.slice(),c.i=s.i,c}function a(s,c){s==null&&(s=+new Date);var l=new i(s),f=c&&c.state,u=function(){return(l.next()>>>0)/4294967296};return u.double=function(){do var d=l.next()>>>11,h=(l.next()>>>0)/4294967296,g=(d+h)/(1<<21);while(g===0);return g},u.int32=l.next,u.quick=u,f&&(f.x&&o(f,l),u.state=function(){return o(l,{})}),u}r&&r.exports?r.exports=a:this.xorshift7=a})(Dr,t)})(tw);var pW=tw.exports,nw={exports:{}};nw.exports;(function(t){(function(e,r,n){function i(s){var c=this;c.next=function(){var f=c.w,u=c.X,d=c.i,h,g;return c.w=f=f+1640531527|0,g=u[d+34&127],h=u[d=d+1&127],g^=g<<13,h^=h<<17,g^=g>>>15,h^=h>>>12,g=u[d]=g^h,c.i=d,g+(f^f>>>16)|0};function l(f,u){var d,h,g,p,v,x=[],m=128;for(u===(u|0)?(h=u,u=null):(u=u+"\0",h=0,m=Math.max(m,u.length)),g=0,p=-32;p>>15,h^=h<<4,h^=h>>>13,p>=0&&(v=v+1640531527|0,d=x[p&127]^=h+v,g=d==0?g+1:0);for(g>=128&&(x[(u&&u.length||0)&127]=-1),g=127,p=4*128;p>0;--p)h=x[g+34&127],d=x[g=g+1&127],h^=h<<13,d^=d<<17,h^=h>>>15,d^=d>>>12,x[g]=h^d;f.w=v,f.X=x,f.i=g}l(c,s)}function o(s,c){return c.i=s.i,c.w=s.w,c.X=s.X.slice(),c}function a(s,c){s==null&&(s=+new Date);var l=new i(s),f=c&&c.state,u=function(){return(l.next()>>>0)/4294967296};return u.double=function(){do var d=l.next()>>>11,h=(l.next()>>>0)/4294967296,g=(d+h)/(1<<21);while(g===0);return g},u.int32=l.next,u.quick=u,f&&(f.X&&o(f,l),u.state=function(){return o(l,{})}),u}r&&r.exports?r.exports=a:this.xor4096=a})(Dr,t)})(nw);var mW=nw.exports,rw={exports:{}};rw.exports;(function(t){(function(e,r,n){function i(s){var c=this,l="";c.next=function(){var u=c.b,d=c.c,h=c.d,g=c.a;return u=u<<25^u>>>7^d,d=d-h|0,h=h<<24^h>>>8^g,g=g-u|0,c.b=u=u<<20^u>>>12^d,c.c=d=d-h|0,c.d=h<<16^d>>>16^g,c.a=g-u|0},c.a=0,c.b=0,c.c=-1640531527,c.d=1367130551,s===Math.floor(s)?(c.a=s/4294967296|0,c.b=s|0):l+=s;for(var f=0;f>>0)/4294967296};return u.double=function(){do var d=l.next()>>>11,h=(l.next()>>>0)/4294967296,g=(d+h)/(1<<21);while(g===0);return g},u.int32=l.next,u.quick=u,f&&(typeof f=="object"&&o(f,l),u.state=function(){return o(l,{})}),u}r&&r.exports?r.exports=a:this.tychei=a})(Dr,t)})(rw);var vW=rw.exports,g7={exports:{}};const yW={},xW=Object.freeze(Object.defineProperty({__proto__:null,default:yW},Symbol.toStringTag,{value:"Module"})),p7=nF(xW);(function(t){(function(e,r,n){var i=256,o=6,a=52,s="random",c=n.pow(i,o),l=n.pow(2,a),f=l*2,u=i-1,d;function h(w,C,S){var T=[];C=C==!0?{entropy:!0}:C||{};var _=x(v(C.entropy?[w,y(r)]:w??m(),3),T),E=new g(T),D=function(){for(var b=E.g(o),I=c,R=0;b=f;)b/=2,I/=2,R>>>=1;return(b+R)/I};return D.int32=function(){return E.g(4)|0},D.quick=function(){return E.g(4)/4294967296},D.double=D,x(y(E.S),r),(C.pass||S||function(b,I,R,M){return M&&(M.S&&p(M,E),b.state=function(){return p(E,{})}),R?(n[s]=b,I):b})(D,_,"global"in C?C.global:this==n,C.state)}function g(w){var C,S=w.length,T=this,_=0,E=T.i=T.j=0,D=T.S=[];for(S||(w=[S++]);_m7(`vtkMath::${t} - NOT IMPLEMENTED`)}function zf(t,e,r,n){let i;for(let o=0;o0&&arguments[0]!==void 0?arguments[0]:3;const e=Array(t);for(let r=0;rMath.PI;function Vn(t){return t/180*Math.PI}function _1(t){return t*180/Math.PI}const{round:Cf,floor:sw,ceil:RW,min:LW,max:NW}=Math;function PW(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=1/0;for(let i=e,o=t.length;i1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=-1/0;for(let i=e,o=t.length;i1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=1/0,i=-1/0;for(let o=e,a=t.length;o=0;--i)if(r[i]0&&arguments[0]!==void 0?arguments[0]:0;const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)-t;return t+r*Math.random()}const jW=ph("gaussian");function E1(t,e,r){return r[0]=t[0]+e[0],r[1]=t[1]+e[1],r[2]=t[2]+e[2],r}function Fa(t,e,r){return r[0]=t[0]-e[0],r[1]=t[1]-e[1],r[2]=t[2]-e[2],r}function y7(t,e){return t[0]*=e,t[1]*=e,t[2]*=e,t}function x7(t,e){return t[0]*=e,t[1]*=e,t}function N5(t,e,r,n){return n[0]=t[0]+e[0]*r,n[1]=t[1]+e[1]*r,n[2]=t[2]+e[2]*r,n}function HW(t,e,r,n){return n[0]=t[0]+e[0]*r,n[1]=t[1]+e[1]*r,n}function wt(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function KW(t,e,r){r[0]=t[0]*e[0],r[1]=t[0]*e[1],r[2]=t[0]*e[2],r[3]=t[1]*e[0],r[4]=t[1]*e[1],r[5]=t[1]*e[2],r[6]=t[2]*e[0],r[7]=t[2]*e[1],r[8]=t[2]*e[2]}function ia(t,e,r){const n=t[1]*e[2]-t[2]*e[1],i=t[2]*e[0]-t[0]*e[2],o=t[0]*e[1]-t[1]*e[0];return r[0]=n,r[1]=i,r[2]=o,r}function Is(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;switch(e){case 1:return Math.abs(t);case 2:return Math.sqrt(t[0]*t[0]+t[1]*t[1]);case 3:return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);default:{let r=0;for(let n=0;no&&i>a?(c=0,l=1,f=2):o>a?(c=1,l=2,f=0):(c=2,l=0,f=1);const u=t[c]/s,d=t[l]/s,h=t[f]/s,g=Math.sqrt(u*u+h*h);if(n!==0){const p=Math.sin(n),v=Math.cos(n);e&&(e[c]=(h*v-u*d*p)/g,e[l]=p*g,e[f]=(-(u*v)-d*h*p)/g),r&&(r[c]=(-(h*p)-u*d*v)/g,r[l]=v*g,r[f]=(u*p-d*h*v)/g)}else e&&(e[c]=h/g,e[l]=0,e[f]=-u/g),r&&(r[c]=-u*d/g,r[l]=g,r[f]=-d*h/g)}function XW(t,e,r){const n=wt(e,e);if(n===0)return r[0]=0,r[1]=0,r[2]=0,!1;const i=wt(t,e)/n;for(let o=0;o<3;o++)r[o]=e[o];return y7(r,i),!0}function P5(t,e){return t[0]*e[0]+t[1]*e[1]}function YW(t,e,r){const n=P5(e,e);if(n===0)return r[0]=0,r[1]=0,!1;const i=P5(t,e)/n;for(let o=0;o<2;o++)r[o]=e[o];return x7(r,i),!0}function jo(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])+(t[2]-e[2])*(t[2]-e[2])}function JW(t,e){const r=[0,0,0];return ia(t,e,r),Math.atan2(Is(r),wt(t,e))}function ZW(t,e,r){const n=Math.abs(t-r);return 1/Math.sqrt(2*Math.PI*e)*Math.exp(-(n**2)/(2*e))}function QW(t,e,r){const n=Math.abs(t-r);return Math.exp(-(n**2)/(2*e))}function ez(t,e,r){r[0]=t[0]*e[0],r[1]=t[0]*e[1],r[2]=t[1]*e[0],r[3]=t[1]*e[1]}function w7(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function C7(t){const e=w7(t);return e!==0&&(t[0]/=e,t[1]/=e),e}function Fn(){for(var t=arguments.length,e=new Array(t),r=0;ri&&(i=n),(n=Math.abs(t[a*3+2]))>i&&(i=n),o[a]=1/i;i=o[0]*Math.abs(t[0]),r=0,(n=o[1]*Math.abs(t[3]))>=i&&(i=n,r=1),(n=o[2]*Math.abs(t[6]))>=i&&(r=2),r!==0&&(zf(t,3,r,0),o[r]=o[0]),e[0]=r,t[3]/=t[0],t[6]/=t[0],t[4]-=t[3]*t[1],t[7]-=t[6]*t[1],i=o[1]*Math.abs(t[4]),r=1,(n=o[2]*Math.abs(t[7]))>=i&&(r=2,zf(t,3,1,2),o[2]=o[1]),e[1]=r,t[7]/=t[4],t[5]-=t[3]*t[2],t[8]-=t[6]*t[2]+t[7]*t[5],e[2]=2}function nz(t,e,r){let n=r[e[0]];r[e[0]]=r[0],r[0]=n,n=r[e[1]],r[e[1]]=r[1],r[1]=n-t[3]*r[0],n=r[e[2]],r[e[2]]=r[2],r[2]=n-t[6]*r[0]-t[7]*r[1],r[2]/=t[8],r[1]=(r[1]-t[5]*r[2])/t[4],r[0]=(r[0]-t[1]*r[1]-t[2]*r[2])/t[0]}function rz(t,e,r){const n=t[0],i=t[1],o=t[2],a=t[3],s=t[4],c=t[5],l=t[6],f=t[7],u=t[8],d=+Fn(s,f,c,u),h=-Fn(a,l,c,u),g=+Fn(a,l,s,f),p=-Fn(i,f,o,u),v=+Fn(n,l,o,u),x=-Fn(n,l,i,f),m=+Fn(i,s,o,c),y=-Fn(n,a,o,c),w=+Fn(n,a,i,s),C=n*d+i*h+o*g,S=d*e[0]+p*e[1]+m*e[2],T=h*e[0]+v*e[1]+y*e[2],_=g*e[0]+x*e[1]+w*e[2];r[0]=S/C,r[1]=T/C,r[2]=_/C}function Tp(t,e,r){const n=t[0]*e[0]+t[1]*e[1]+t[2]*e[2],i=t[3]*e[0]+t[4]*e[1]+t[5]*e[2],o=t[6]*e[0]+t[7]*e[1]+t[8]*e[2];r[0]=n,r[1]=i,r[2]=o}function A5(t,e,r){const n=[...t],i=[...e];for(let o=0;o<3;o++)r[o]=n[0]*i[o]+n[1]*i[o+3]+n[2]*i[o+6],r[o+3]=n[3]*i[o]+n[4]*i[o+3]+n[5]*i[o+6],r[o+6]=n[6]*i[o]+n[7]*i[o+3]+n[8]*i[o+6]}function iz(t,e,r,n,i,o,a){n!==i&&m7("Number of columns of A must match number of rows of B.");const s=[...t],c=[...e];for(let l=0;l2&&arguments[2]!==void 0?arguments[2]:ow;if(t.length!==e.length)return!1;function n(i,o){return Math.abs(i-e[o])<=r}return t.every(n)}const mh=S7;function T7(t){for(let e=0;e<3;e++)t[e*3]=t[e*3+1]=t[e*3+2]=0,t[e*3+e]=1}function _7(t,e){for(let r=0;r1&&arguments[1]!==void 0?arguments[1]:ow;return mh(t,iw,e)}function sz(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ow;return mh(t,OW,e)}function E7(t,e){const r=t[0]*t[0],n=t[0]*t[1],i=t[0]*t[2],o=t[0]*t[3],a=t[1]*t[1],s=t[2]*t[2],c=t[3]*t[3],l=t[1]*t[2],f=t[1]*t[3],u=t[2]*t[3],d=a+s+c;let h=1/(r+d);const g=(r-d)*h;h*=2,e[0]=a*h+g,e[3]=(l+o)*h,e[6]=(f-i)*h,e[1]=(l-o)*h,e[4]=s*h+g,e[7]=(u+n)*h,e[2]=(f+i)*h,e[5]=(u-n)*h,e[8]=c*h+g}function _p(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!`${t}`.includes("e"))return+`${Math.round(`${t}e+${e}`)}e-${e}`;const r=`${t}`.split("e");let n="";return+r[1]+e>0&&(n="+"),+`${Math.round(`${+r[0]}e${n}${+r[1]+e}`)}e-${e}`}function k5(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return e[0]=_p(t[0],r),e[1]=_p(t[1],r),e[2]=_p(t[2],r),e}function vh(t,e,r,n){let i,o,a,s,c,l,f,u,d,h,g,p,v,x,m,y;const w=pn(e),C=pn(e),S=(_,E,D)=>{x=_[E],v=_[D],_[E]=x-p*(v+x*h),_[D]=v+p*(x-v*h)};for(_7(e,n),c=0;c3&&Math.abs(r[c])+x===Math.abs(r[c])&&Math.abs(r[s])+x===Math.abs(r[s]))t[c*e+s]=0;else if(Math.abs(t[c*e+s])>f){for(v=r[s]-r[c],Math.abs(v)+x===Math.abs(v)?d=t[c*e+s]/v:(u=.5*v/t[c*e+s],d=1/(Math.abs(u)+Math.sqrt(1+u*u)),u<0&&(d=-d)),m=1/Math.sqrt(1+d*d),p=d*m,h=p/(1+m),v=d*t[c*e+s],C[c]-=v,C[s]+=v,r[c]-=v,r[s]+=v,t[c*e+s]=0,o=0;o<=c-1;o++)S(t,o*e+c,o*e+s);for(o=c+1;o<=s-1;o++)S(t,c*e+o,o*e+s);for(o=s+1;o=IT)return sl("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(o=0;o=y||Math.abs(r[i]-y)>1)+(e&1);for(l=0,i=0;i=0&&l++;if(lh?g:h,i=p>i?p:i,r[d]=1,i!==0&&(r[d]/=i)}const o=Math.abs(e[0])*r[0],a=Math.abs(e[3])*r[1],s=Math.abs(e[6])*r[2];n[0]=0,i=o,a>=i&&(i=a,n[0]=1),s>=i&&(n[0]=2),n[0]!==0&&(wf(e,3,n[0],0),r[n[0]]=r[0]);const c=Math.abs(e[4])*r[1],l=Math.abs(e[7])*r[2];n[1]=1,i=c,l>=i&&(n[1]=2,wf(e,3,1,2)),n[2]=2;let f=0;if(qm(e)<0){f=1;for(let d=0;d<9;d++)e[d]=-e[d]}const u=pn(4);if(D7(e,u),E7(u,e),f)for(let d=0;d<9;d++)e[d]=-e[d];n[1]!==1&&wf(e,3,n[1],1),n[0]!==0&&wf(e,3,n[0],0)}function I7(t,e,r){let n,i,o,a,s,c;const l=[...t];if(vh(l,3,e,r),e[0]===e[1]&&e[0]===e[2]){T7(r);return}for(_u(r,r),n=0;n<3;n++)if(e[(n+1)%3]===e[(n+2)%3]){for(c=Math.abs(r[n*3]),a=0,i=1;i<3;i++)c<(s=Math.abs(r[n*3+i]))&&(c=s,a=i);a!==n&&(s=e[a],e[a]=e[n],e[n]=s,zf(r,3,n,a)),r[a*3+a]<0&&(r[a*3]=-r[a*3],r[a*3+1]=-r[a*3+1],r[a*3+2]=-r[a*3+2]),i=(a+1)%3,o=(a+2)%3,r[i*3]=0,r[i*3+1]=0,r[i*3+2]=0,r[i*3+i]=1;const f=ia([r[a*3],r[a*3+1],r[a*3+2]],[r[i*3],r[i*3+1],r[i*3+2]],[]);cl(f);const u=ia(f,[r[a*3],r[a*3+1],r[a*3+2]],[]);for(let d=0;d<3;d++)r[o*3+d]=f[d],r[i*3+d]=u[d];_u(r,r);return}for(c=Math.abs(r[0]),a=0,n=1;n<3;n++)c<(s=Math.abs(r[n*3]))&&(c=s,a=n);if(a!==0){const f=e[a];e[a]=e[0],e[0]=f,zf(r,3,a,0)}if(Math.abs(r[4])a&&(a=f);if(a===0)return sl("Unable to factor linear system"),0;u[n]=1/a}for(i=0;i=a&&(a=l,s=n)}if(i!==s){for(o=0;o=0)for(o=a;o<=i-1;o++)c-=t[i*n+o]*r[o];else c!==0&&(a=i);r[i]=c}for(i=n-1;i>=0;i--){for(c=r[i],o=i+1;o3&&arguments[3]!==void 0?arguments[3]:null,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const o=n||pn(r),a=i||pn(r);if(cw(t,o,r)===0)return null;for(let s=0;sn&&(n=Math.abs(t[i*e+o]));for(let i=0;i6&&arguments[6]!==void 0?arguments[6]:!0;if(taw&&(c=0,s[d]=0);if(c&&i===1)return sl("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),V5(t,e,r,o);if(c)g=1;else for(d=0;d1&&arguments[1]!==void 0?arguments[1]:[0,.5,1];switch(t.length){case 3:return e[0]=parseInt(t[0],16)*17/255,e[1]=parseInt(t[1],16)*17/255,e[2]=parseInt(t[2],16)*17/255,e;case 4:return e[0]=parseInt(t[1],16)*17/255,e[1]=parseInt(t[2],16)*17/255,e[2]=parseInt(t[3],16)*17/255,e;case 6:return e[0]=parseInt(t.substr(0,2),16)/255,e[1]=parseInt(t.substr(2,2),16)/255,e[2]=parseInt(t.substr(4,2),16)/255,e;case 7:return e[0]=parseInt(t.substr(1,2),16)/255,e[1]=parseInt(t.substr(3,2),16)/255,e[2]=parseInt(t.substr(5,2),16)/255,e;case 9:return e[0]=parseInt(t.substr(1,2),16)/255,e[1]=parseInt(t.substr(3,2),16)/255,e[2]=parseInt(t.substr(5,2),16)/255,e[3]=parseInt(t.substr(7,2),16)/255,e;default:return e}}function Tf(t,e){let r,n;const[i,o,a]=t,s=1/3,c=1/6,l=2/3;let f=i,u=i;o>f?f=o:of?f=a:a0?n=(f-u)/f:n=0,n>0?(i===f?r=c*(o-a)/(f-u):o===f?r=s+c*(a-i)/(f-u):r=l+c*(i-o)/(f-u),r<0&&(r+=1)):r=0,e[0]=r,e[1]=n,e[2]=d}function Rc(t,e){const[r,n,i]=t,o=1/3,a=1/6,s=2/3,c=5/6;let l,f,u;r>a&&r<=o?(f=1,l=(o-r)/a,u=0):r>o&&r<=.5?(f=1,u=(r-o)/a,l=0):r>.5&&r<=s?(u=1,f=(s-r)/a,l=0):r>s&&r<=c?(u=1,l=(r-s)/a,f=0):r>c&&r<=1?(l=1,u=(1-r)/a,f=0):(l=1,f=r/a,u=0),l=n*l+(1-n),f=n*f+(1-n),u=n*u+(1-n),l*=i,f*=i,u*=i,e[0]=l,e[1]=f,e[2]=u}function R7(t,e){const[r,n,i]=t;let o=(r+16)/116,a=n/500+o,s=o-i/200;o**3>.008856?o**=3:o=(o-16/116)/7.787,a**3>.008856?a**=3:a=(a-16/116)/7.787,s**3>.008856?s**=3:s=(s-16/116)/7.787;const c=.9505,l=1,f=1.089;e[0]=c*a,e[1]=l*o,e[2]=f*s}function L7(t,e){const[r,n,i]=t,o=.9505,a=1,s=1.089;let c=r/o,l=n/a,f=i/s;c>.008856?c**=1/3:c=7.787*c+16/116,l>.008856?l**=1/3:l=7.787*l+16/116,f>.008856?f**=1/3:f=7.787*f+16/116,e[0]=116*l-16,e[1]=500*(c-l),e[2]=200*(l-f)}function N7(t,e){const[r,n,i]=t;let o=r*3.2406+n*-1.5372+i*-.4986,a=r*-.9689+n*1.8758+i*.0415,s=r*.0557+n*-.204+i*1.057;o>.0031308?o=1.055*o**(1/2.4)-.055:o*=12.92,a>.0031308?a=1.055*a**(1/2.4)-.055:a*=12.92,s>.0031308?s=1.055*s**(1/2.4)-.055:s*=12.92;let c=o;c1&&(o/=c,a/=c,s/=c),o<0&&(o=0),a<0&&(a=0),s<0&&(s=0),e[0]=o,e[1]=a,e[2]=s}function P7(t,e){let[r,n,i]=t;r>.04045?r=((r+.055)/1.055)**2.4:r/=12.92,n>.04045?n=((n+.055)/1.055)**2.4:n/=12.92,i>.04045?i=((i+.055)/1.055)**2.4:i/=12.92,e[0]=r*.4124+n*.3576+i*.1805,e[1]=r*.2126+n*.7152+i*.0722,e[2]=r*.0193+n*.1192+i*.9505}function Uc(t,e){const r=[0,0,0];P7(t,r),L7(r,e)}function D1(t,e){const r=[0,0,0];R7(t,r),N7(r,e)}function y0(t){return t[0]=1,t[1]=-1,t[2]=1,t[3]=-1,t[4]=1,t[5]=-1,t}function Ep(t){return!(t[1]-t[0]<0)}function gz(t,e,r){return r[0]=Math.min(t[0],e[0]),r[1]=Math.max(t[0],e[0]),r[2]=Math.min(t[1],e[1]),r[3]=Math.max(t[1],e[1]),r[4]=Math.min(t[2],e[2]),r[5]=Math.max(t[2],e[2]),r}function Do(t,e,r){return tr?r:t}function F5(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return n[0]=Do(t[0],e[0],r[0]),n[1]=Do(t[1],e[1],r[1]),n[2]=Do(t[2],e[2],r[2]),n}function pz(t,e){let r=0;return e[0]!==e[1]&&(te[1]?r=e[1]:r=t,r=(r-e[0])/(e[1]-e[0])),r}const mz=ph("GetScalarTypeFittingRange"),vz=ph("GetAdjustedScalarRange");function yz(t,e){if(!t||!e)return 0;for(let r=0;r<6;r+=2)if(t[r]e[r+1]||t[r+1]e[r+1])return 0;return 1}function xz(t,e,r){if(!t||!e)return 0;for(let n=0;n<6;n+=2)if(t[n]+r[n/2]e[n+1]||t[n+1]+r[n/2]e[n+1])return 0;return 1}function wz(t,e,r){if(!t||!e||!r)return 0;for(let n=0;n<3;n++)if(t[n]+r[n]e[2*n+1])return 0;return 1}function Cz(t,e,r,n){const i=pn(3),o=pn(3),a=pn(3),s=pn(3),c=pn(3),l=pn(3);for(let w=0;w<3;++w)i[w]=t[w]-e[w],o[w]=e[w]-r[w],a[w]=r[w]-t[w],s[w]=-i[w],c[w]=-o[w],l[w]=-a[w];const f=Is(s),u=Is(c),d=Is(a),h=pn(3);ia(i,o,h);const g=Is(h),p=f*u*d/(2*g),v=2*g*g,x=u*u*wt(i,l)/v,m=d*d*wt(s,o)/v,y=f*f*wt(a,c)/v;for(let w=0;w<3;++w)n[w]=x*t[w]+m*e[w]+y*r[w];return p}const Sz=1/0,Tz=-1/0,A7=t=>!Number.isFinite(t),{isFinite:_z,isNaN:U5}=Number,b1=U5;function qs(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function Ez(t){let e=-1,r=-1;for(let n=0;ne&&(r=n,e=i)}return r}function k7(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;const r=new Array(e),n=new Array(e);for(let o=0;o0;o--){let a=-1/0,s=0,c=0;for(let l=0;l<=o;++l){const f=r[l];for(let u=0;u<=o;++u){const d=n[u],h=Math.abs(t[f+e*d]);h>a&&(a=h,s=l,c=u)}}[r[o],r[s]]=[r[s],r[o]],[n[o],n[c]]=[n[c],n[o]]}const i=new Array(e*e).fill(0);for(let o=0;o15?e.toString(16):`0${e.toString(16)}`}function Dz(t){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#"}${t.map(V7).join("")}`}function ag(t){return Math.round(t*255)}function bz(t){return t.length===3?`rgb(${t.map(ag).join(", ")})`:`rgba(${ag(t[0]||0)}, ${ag(t[1]||0)}, ${ag(t[2]||0)}, ${t[3]||0})`}var nt={Pi:MW,radiansFromDegrees:Vn,degreesFromRadians:_1,round:Cf,floor:sw,ceil:RW,ceilLog2:VW,min:LW,max:NW,arrayMin:PW,arrayMax:AW,arrayRange:kW,isPowerOfTwo:Sf,nearestPowerOfTwo:Qi,factorial:FW,binomial:UW,beginCombination:BW,nextCombination:GW,randomSeed:WW,getSeed:zW,random:$W,gaussian:jW,add:E1,subtract:Fa,multiplyScalar:y7,multiplyScalar2D:x7,multiplyAccumulate:N5,multiplyAccumulate2D:HW,dot:wt,outer:KW,cross:ia,norm:Is,normalize:cl,perpendiculars:qW,projectVector:XW,projectVector2D:YW,distance2BetweenPoints:jo,angleBetweenVectors:JW,gaussianAmplitude:ZW,gaussianWeight:QW,dot2D:P5,outer2D:ez,norm2D:w7,normalize2D:C7,determinant2x2:Fn,LUFactor3x3:tz,LUSolve3x3:nz,linearSolve3x3:rz,multiply3x3_vect3:Tp,multiply3x3_mat3:A5,multiplyMatrix:iz,transpose3x3:_u,invert3x3:oz,identity3x3:T7,identity:_7,isIdentity:az,isIdentity3x3:sz,determinant3x3:qm,quaternionToMatrix3x3:E7,areEquals:S7,areMatricesEqual:mh,roundNumber:_p,roundVector:k5,matrix3x3ToQuaternion:D7,multiplyQuaternion:cz,orthogonalize3x3:b7,diagonalize3x3:I7,singularValueDecomposition3x3:lz,solveLinearSystem:O7,invertMatrix:M7,luFactorLinearSystem:cw,luSolveLinearSystem:lw,estimateMatrixCondition:uz,jacobi:fz,jacobiN:vh,solveHomogeneousLeastSquares:V5,solveLeastSquares:dz,hex2float:hz,rgb2hsv:Tf,hsv2rgb:Rc,lab2xyz:R7,xyz2lab:L7,xyz2rgb:N7,rgb2xyz:P7,rgb2lab:Uc,lab2rgb:D1,uninitializeBounds:y0,areBoundsInitialized:Ep,computeBoundsFromPoints:gz,clampValue:Do,clampVector:F5,clampAndNormalizeValue:pz,getScalarTypeFittingRange:mz,getAdjustedScalarRange:vz,extentIsWithinOtherExtent:yz,boundsIsWithinOtherBounds:xz,pointIsWithinBounds:wz,solve3PointCircle:Cz,inf:Sz,negInf:Tz,isInf:A7,isNan:U5,isNaN:U5,isFinite:_z,createUninitializedBounds:qs,getMajorAxisIndex:Ez,getSparseOrthogonalMatrix:k7,floatToHex2:V7,floatRGB2HexCode:Dz,float2CssRGBA:bz};const{vtkErrorMacro:Iz}=Br,{DefaultDataType:Oz}=c7,Mz=1e-6;function B5(t,e,r){const n=t.length;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,a,s;for(s=e;so&&(o=a);return{min:i,max:o}}function Rz(){let t=Number.MAX_VALUE,e=-Number.MAX_VALUE,r=0,n=0;return{add(i){t>i&&(t=i),e1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(e<0&&r>1){const i=t.length/r,o=new Float64Array(i);for(let a=0,s=0;a1&&arguments[1]!==void 0?arguments[1]:0;const r=t||[];for(;r.length<=e;)r.push(null);return r}function uw(t){return Object.prototype.toString.call(t).slice(8,-1)}function Lz(t){const e=t.getNumberOfComponents();let r=0;const n=new Array(e);for(let i=0;ir&&(r=o)}return r}const Nz={computeRange:F7,createRangeHelper:Rz,fastComputeRange:B5,getDataType:uw,getMaxNorm:Lz};function Pz(t,e){e.classHierarchy.push("vtkDataArray");function r(n){if(n<0)return!1;const i=t.getNumberOfComponents(),o=e.values.length/(i>0?i:1);if(n===o)return!0;if(n>o){const a=e.values;return e.values=m0(e.dataType,(n+o)*i),e.values.set(a),!0}return e.size>n*i&&(e.size=n*i,t.dataChange()),!0}t.dataChange=()=>{e.ranges=null,t.modified()},t.resize=n=>{r(n);const i=n*t.getNumberOfComponents();return e.size!==i?(e.size=i,t.dataChange(),!0):!1},t.initialize=()=>{t.resize(0)},t.getElementComponentSize=()=>e.values.BYTES_PER_ELEMENT,t.getComponent=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[n*e.numberOfComponents+i]},t.setComponent=(n,i,o)=>{o!==e.values[n*e.numberOfComponents+i]&&(e.values[n*e.numberOfComponents+i]=o,t.dataChange())},t.getValue=n=>{const i=n/e.numberOfComponents,o=n%e.numberOfComponents;return t.getComponent(i,o)},t.setValue=(n,i)=>{const o=n/e.numberOfComponents,a=n%e.numberOfComponents;t.setComponent(o,a,i)},t.getData=()=>e.size===e.values.length?e.values:e.values.subarray(0,e.size),t.getRange=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1,i=n;i<0&&(i=e.numberOfComponents===1?0:e.numberOfComponents);let o=null;return e.ranges||(e.ranges=OT(e.ranges,e.numberOfComponents)),o=e.ranges[i],o?(e.rangeTuple[0]=o.min,e.rangeTuple[1]=o.max,e.rangeTuple):(o=F7(t.getData(),n,e.numberOfComponents),e.ranges[i]=o,e.rangeTuple[0]=o.min,e.rangeTuple[1]=o.max,e.rangeTuple)},t.setRange=(n,i)=>{e.ranges||(e.ranges=OT(e.ranges,e.numberOfComponents));const o={min:n.min,max:n.max};return e.ranges[i]=o,e.rangeTuple[0]=o.min,e.rangeTuple[1]=o.max,e.rangeTuple},t.setTuple=(n,i)=>{const o=n*e.numberOfComponents;for(let a=0;a{let o=n*e.numberOfComponents;const a=Math.min(i.length,e.size-o);for(let s=0;s(e.size<=n*e.numberOfComponents&&(e.size=(n+1)*e.numberOfComponents,r(n+1)),t.setTuple(n,i),n),t.insertTuples=(n,i)=>{const o=n+i.length/e.numberOfComponents;return e.size{const i=e.size/e.numberOfComponents;return t.insertTuple(i,n)},t.insertNextTuples=n=>{const i=e.size/e.numberOfComponents;return t.insertTuples(i,n)},t.findTuple=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Mz;for(let o=0;oi){a=!1;break}if(a)return o/e.numberOfComponents}return-1},t.getTuple=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const o=e.numberOfComponents||1,a=n*o;switch(o){case 4:i[3]=e.values[a+3];case 3:i[2]=e.values[a+2];case 2:i[1]=e.values[a+1];case 1:i[0]=e.values[a];break;default:for(let s=o-1;s>=0;--s)i[s]=e.values[a+s]}return i},t.getTuples=(n,i)=>{const o=(n??0)*e.numberOfComponents,a=(i??t.getNumberOfTuples())*e.numberOfComponents,s=t.getData().subarray(o,a);return s.length>0?s:null},t.getTupleLocation=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},t.getNumberOfComponents=()=>e.numberOfComponents,t.getNumberOfValues=()=>e.size,t.getNumberOfTuples=()=>e.size/e.numberOfComponents,t.getDataType=()=>e.dataType,t.newClone=()=>B7({empty:!0,name:e.name,dataType:e.dataType,numberOfComponents:e.numberOfComponents}),t.getName=()=>(e.name||(t.modified(),e.name=`vtkDataArray${t.getMTime()}`),e.name),t.setData=(n,i)=>{e.values=n,e.size=n.length,e.dataType=uw(n),i&&(e.numberOfComponents=i),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),t.dataChange()},t.getState=()=>{if(e.deleted)return null;const n={...e,vtkClass:t.getClassName()};n.values=Array.from(n.values),delete n.buffer,Object.keys(n).forEach(o=>{n[o]||delete n[o]});const i={};return Object.keys(n).sort().forEach(o=>{i[o]=n[o]}),i.mtime&&delete i.mtime,i},t.deepCopy=n=>{const i=t.getDataType(),o=e.values;t.shallowCopy(n),(o==null?void 0:o.length)>=n.getNumberOfValues()&&i===n.getDataType()?(o.set(n.getData()),e.values=o,t.dataChange()):t.setData(n.getData().slice())},t.interpolateTuple=(n,i,o,a,s,c)=>{const l=e.numberOfComponents||1;(l!==i.getNumberOfComponents()||l!==a.getNumberOfComponents())&&Iz("numberOfComponents must match");const f=i.getTuple(o),u=a.getTuple(s),d=[];switch(d.length=l,l){case 4:d[3]=f[3]+(u[3]-f[3])*c;case 3:d[2]=f[2]+(u[2]-f[2])*c;case 2:d[1]=f[1]+(u[1]-f[1])*c;case 1:d[0]=f[0]+(u[0]-f[0])*c;break;default:for(let h=0;h2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Az,r),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(e.values?Array.isArray(e.values)&&(e.values=Hm(e.dataType,e.values)):e.values=m0(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=uw(e.values)),un(t,e),dh(t,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");Pz(t,e)}const B7=Bt(U7,"vtkDataArray");var tt={newInstance:B7,extend:U7,...Nz,...c7};const{vtkErrorMacro:kz}=W,Vz=["Build","Render"];function Fz(t,e){e.classHierarchy.push("vtkViewNode"),t.build=n=>{},t.render=n=>{},t.traverse=n=>{const i=n.getTraverseOperation(),o=t[i];if(o){o(n);return}t.apply(n,!0);for(let a=0;a{const o=t[n.getOperation()];o&&o(i,n)},t.getViewNodeFor=n=>{if(e.renderable===n)return t;for(let i=0;ie._parent?e._parent.isA(n)?e._parent:e._parent.getFirstAncestorOfType(n):null,t.getLastAncestorOfType=n=>{if(!e._parent)return null;const i=e._parent.getLastAncestorOfType(n);return i||(e._parent.isA(n)?e._parent:null)},t.addMissingNode=n=>{if(!n)return;const i=e._renderableChildMap.get(n);if(i!==void 0)return i.setVisited(!0),i;const o=t.createViewNode(n);if(o)return o.setParent(t),o.setVisited(!0),e._renderableChildMap.set(n,o),e.children.push(o),o},t.addMissingNodes=n=>{if(!(!n||!n.length))for(let i=0;i{if(!(!n||!n.length))for(let i=0;i{const i=e.children.findIndex(a=>a===n);if(i<0)return!1;const o=n.getRenderable();return o&&e._renderableChildMap.delete(o),n.delete(),e.children.splice(i,1),!0},t.prepareNodes=()=>{for(let n=0;n{e.visited=n},t.removeUnusedNodes=()=>{let n=0;for(let i=0;i{if(!e.myFactory)return kz("Cannot create view nodes without my own factory"),null;const i=e.myFactory.createNode(n);return i&&i.setRenderable(n),i};const r=t.delete;t.delete=()=>{for(let n=0;n2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Uz,r),W.obj(t,e),W.event(t,e,"event"),e._renderableChildMap=new Map,W.get(t,e,["visited"]),W.setGet(t,e,["_parent","renderable","myFactory"]),W.getArray(t,e,["children"]),W.moveToProtected(t,e,["parent"]),Fz(t,e)}const Bz=W.newInstance(G7,"vtkViewNode");var tn={newInstance:Bz,extend:G7,PASS_TYPES:Vz};function Gz(t,e){e.overrides||(e.overrides={}),e.classHierarchy.push("vtkViewNodeFactory"),t.createNode=r=>{if(r.isDeleted())return null;let n=0,i=r.getClassName(n++),o=!1;const a=Object.keys(e.overrides);for(;i&&!o;)a.indexOf(i)!==-1?o=!0:i=r.getClassName(n++);if(!o)return null;const s=e.overrides[i]();return s.setMyFactory(t),s}}const Wz={};function W7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wz,r),W.obj(t,e),Gz(t,e)}const zz=W.newInstance(W7,"vtkViewNodeFactory");var fw={newInstance:zz,extend:W7};const z7=Object.create(null);function ir(t,e){z7[t]=e}function $z(t,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const jz={};function $7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jz,r),e.overrides=z7,fw.extend(t,e,r),$z(t,e)}const Hz=W.newInstance($7,"vtkOpenGLViewNodeFactory");var Kz={newInstance:Hz,extend:$7};const{Wrap:Ea,Filter:Rr}=d7,{VtkDataTypes:Wt}=tt,{vtkDebugMacro:Tv,vtkErrorMacro:Al,vtkWarningMacro:MT}=Br,{toHalf:qz}=Mc;function Xz(t,e){e.classHierarchy.push("vtkOpenGLTexture"),t.render=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(c?e._openGLRenderWindow=c:(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow")),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?t.setMinificationFilter(Rr.LINEAR_MIPMAP_LINEAR):t.setMinificationFilter(Rr.LINEAR),t.setMagnificationFilter(Rr.LINEAR)):(t.setMinificationFilter(Rr.NEAREST),t.setMagnificationFilter(Rr.NEAREST)),e.renderable.getRepeat()&&(t.setWrapR(Ea.REPEAT),t.setWrapS(Ea.REPEAT),t.setWrapT(Ea.REPEAT)),e.renderable.getInputData()&&e.renderable.setImage(null),!e.handle||e.renderable.getMTime()>e.textureBuildTime.getMTime()){if(e.renderable.getImage()!==null&&(e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Rr.LINEAR_MIPMAP_LINEAR)),e.renderable.getImage()&&e.renderable.getImageLoaded()&&(t.create2DFromImage(e.renderable.getImage()),t.activate(),t.sendParameters(),e.textureBuildTime.modified())),e.renderable.getCanvas()!==null){e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Rr.LINEAR_MIPMAP_LINEAR));const f=e.renderable.getCanvas();t.create2DFromRaw(f.width,f.height,4,Wt.UNSIGNED_CHAR,f,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const f=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Rr.LINEAR_MIPMAP_LINEAR)),t.create2DFromRaw(f.width,f.height,4,Wt.UNSIGNED_CHAR,f.data,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}const l=e.renderable.getInputData(0);if(l&&l.getPointData().getScalars()){const f=l.getExtent(),u=l.getPointData().getScalars(),d=[];for(let h=0;h{t.deactivate(),e.context&&e.handle&&e.context.deleteTexture(e.handle),e.handle=0,e.numberOfDimensions=0,e.target=0,e.components=0,e.width=0,e.height=0,e.depth=0,t.resetFormatAndType()},t.createTexture=()=>{e.handle||(e.handle=e.context.createTexture(),e.target&&(e.context.bindTexture(e.target,e.handle),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.bindTexture(e.target,null)))},t.getTextureUnit=()=>e._openGLRenderWindow?e._openGLRenderWindow.getTextureUnitForTexture(t):-1,t.activate=()=>{e._openGLRenderWindow.activateTexture(t),t.bind()},t.deactivate=()=>{e._openGLRenderWindow&&e._openGLRenderWindow.deactivateTexture(t)},t.releaseGraphicsResources=c=>{c&&e.handle&&(c.activateTexture(t),c.deactivateTexture(t),e.context.deleteTexture(e.handle),e.handle=0,e.numberOfDimensions=0,e.target=0,e.internalFormat=0,e.format=0,e.openGLDataType=0,e.components=0,e.width=0,e.height=0,e.depth=0,e.allocatedGPUMemoryInBytes=0),e.shaderProgram&&(e.shaderProgram.releaseGraphicsResources(c),e.shaderProgram=null)},t.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&t.getMTime()>e.sendParametersTime.getMTime()&&t.sendParameters()},t.isBound=()=>{let c=!1;if(e.context&&e.handle){let l=0;switch(e.target){case e.context.TEXTURE_2D:l=e.context.TEXTURE_BINDING_2D;break;default:MT("impossible case");break}c=e.context.getIntegerv(l)===e.handle}return c},t.sendParameters=()=>{e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e._openGLRenderWindow.getWebgl2()&&(e.context.texParameteri(e.target,e.context.TEXTURE_BASE_LEVEL,e.baseLevel),e.context.texParameteri(e.target,e.context.TEXTURE_MAX_LEVEL,e.maxLevel)),e.sendParametersTime.modified()},t.getInternalFormat=(c,l)=>(e._forceInternalFormat||(e.internalFormat=t.getDefaultInternalFormat(c,l)),e.internalFormat||Tv(`Unable to find suitable internal format for T=${c} NC= ${l}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&MT("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),t.getDefaultInternalFormat=(c,l)=>{let f=0;return f=e._openGLRenderWindow.getDefaultTextureInternalFormat(c,l,e.oglNorm16Ext,t.useHalfFloat()),f||(f||(Tv("Unsupported internal texture type!"),Tv(`Unable to find suitable internal format for T=${c} NC= ${l}`)),f)},t.useHalfFloat=()=>e.enableHalfFloat&&e.canUseHalfFloat,t.setInternalFormat=c=>{e._forceInternalFormat=!0,c!==e.internalFormat&&(e.internalFormat=c,t.modified())},t.getFormat=(c,l)=>(e.format=t.getDefaultFormat(c,l),e.format),t.getDefaultFormat=(c,l)=>{if(e._openGLRenderWindow.getWebgl2())switch(l){case 1:return e.context.RED;case 2:return e.context.RG;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}else switch(l){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}},t.resetFormatAndType=()=>{e.format=0,e.internalFormat=0,e._forceInternalFormat=!1,e.openGLDataType=0},t.getDefaultDataType=c=>{const l=t.useHalfFloat();if(e._openGLRenderWindow.getWebgl2())switch(c){case Wt.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(e.oglNorm16Ext&&!l&&Wt.SHORT):return e.context.SHORT;case(e.oglNorm16Ext&&!l&&Wt.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(l&&Wt.SHORT):return e.context.HALF_FLOAT;case(l&&Wt.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case Wt.FLOAT:case Wt.VOID:default:return e.context.FLOAT}switch(c){case Wt.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case Wt.FLOAT:case Wt.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const f=e.context.getExtension("OES_texture_half_float");if(f&&e.context.getExtension("OES_texture_half_float_linear"))return f.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},t.getOpenGLDataType=function(c){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||l)&&(e.openGLDataType=t.getDefaultDataType(c)),e.openGLDataType},t.getShiftAndScale=()=>{let c=0,l=1;switch(e.openGLDataType){case e.context.BYTE:l=127.5,c=l-128;break;case e.context.UNSIGNED_BYTE:l=255,c=0;break;case e.context.SHORT:l=32767.5,c=l-32768;break;case e.context.UNSIGNED_SHORT:l=65536,c=0;break;case e.context.INT:l=21474836475e-1,c=l-2147483648;break;case e.context.UNSIGNED_INT:l=4294967295,c=0;break;case e.context.FLOAT:}return{shift:c,scale:l}},t.getOpenGLFilterMode=c=>{switch(c){case Rr.NEAREST:return e.context.NEAREST;case Rr.LINEAR:return e.context.LINEAR;case Rr.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case Rr.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case Rr.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case Rr.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},t.getOpenGLWrapMode=c=>{switch(c){case Ea.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case Ea.REPEAT:return e.context.REPEAT;case Ea.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}},t.updateArrayDataTypeForGL=function(c,l){let f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const u=[];let d=e.width*e.height*e.components;if(f&&(d*=e.depth),c!==Wt.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let g=0;gd?l[g].subarray(0,d):l[g];u.push(new Float32Array(p))}else u.push(null);if(c!==Wt.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let g=0;gd?l[g].subarray(0,d):l[g];u.push(new Uint8Array(p))}else u.push(null);let h=!1;if(e._openGLRenderWindow.getWebgl2())h=e.openGLDataType===e.context.HALF_FLOAT;else{const g=e.context.getExtension("OES_texture_half_float");h=g&&e.openGLDataType===g.HALF_FLOAT_OES}if(h)for(let g=0;g=u&&(D=u-1);const b=_-E,I=1-b;E=E*f*d,D=D*f*d;for(let R=0;R=f&&(G=f-1);const P=L-A;A*=d,G*=d;for(let N=0;N5&&arguments[5]!==void 0?arguments[5]:!1;if(t.getOpenGLDataType(u,!0),t.getInternalFormat(u,f),t.getFormat(u,f),!e.internalFormat||!e.format||!e.openGLDataType)return Al("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=f,e.width=c,e.height=l,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const g=[d],p=t.updateArrayDataTypeForGL(u,g),v=r(p);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,h),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),n(u)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),v[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,v[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,v[0]),e.generateMipmap&&e.context.generateMipmap(e.target),h&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*f*e._openGLRenderWindow.getDefaultTextureByteSize(u,e.oglNorm16Ext,t.useHalfFloat()),t.deactivate(),!0},t.createCubeFromRaw=(c,l,f,u,d)=>{if(t.getOpenGLDataType(u),t.getInternalFormat(u,f),t.getFormat(u,f),!e.internalFormat||!e.format||!e.openGLDataType)return Al("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=f,e.width=c,e.height=l,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),e.maxLevel=d.length/6-1,t.createTexture(),t.bind();const h=t.updateArrayDataTypeForGL(u,d),g=r(h),p=[];let v=e.width,x=e.height;for(let m=0;m=1&&C>=1;){let S=null;y<=e.maxLevel&&(S=p[6*y+m]),n(u)?S!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+m,y,0,0,w,C,e.format,e.openGLDataType,S):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+m,y,e.internalFormat,w,C,0,e.format,e.openGLDataType,S),y++,w/=2,C/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*f*e._openGLRenderWindow.getDefaultTextureByteSize(u,e.oglNorm16Ext,t.useHalfFloat()),t.deactivate(),!0},t.createDepthFromRaw=(c,l,f,u)=>(t.getOpenGLDataType(f),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?f===Wt.FLOAT?e.internalFormat=e.context.DEPTH_COMPONENT32F:e.internalFormat=e.context.DEPTH_COMPONENT16:e.internalFormat=e.context.DEPTH_COMPONENT,!e.internalFormat||!e.format||!e.openGLDataType?(Al("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=c,e.height=l,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),n(f)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),u!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,u)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,u),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(f,e.oglNorm16Ext,t.useHalfFloat()),t.deactivate(),!0)),t.create2DFromImage=c=>{if(t.getOpenGLDataType(Wt.UNSIGNED_CHAR),t.getInternalFormat(Wt.UNSIGNED_CHAR,4),t.getFormat(Wt.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return Al("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=4,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1);const l=!e._openGLRenderWindow.getWebgl2()&&(!Sf(c.width)||!Sf(c.height)),f=document.createElement("canvas");f.width=l?Qi(c.width):c.width,f.height=l?Qi(c.height):c.height,e.width=f.width,e.height=f.height;const u=f.getContext("2d");u.translate(0,f.height),u.scale(1,-1),u.drawImage(c,0,0,c.width,c.height,0,0,f.width,f.height);const d=f;return n(Wt.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),d!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,d)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,d),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(Wt.UNSIGNED_CHAR,e.oglNorm16Ext,t.useHalfFloat()),t.deactivate(),!0};function i(c,l,f){const u=new Array(f),d=new Array(f);for(let h=0;h2048||d<-2048||d>2048)return!1}return!0}function a(c,l,f,u){t.getOpenGLDataType(c);let d=!1;if(e._openGLRenderWindow.getWebgl2())d=e.openGLDataType===e.context.HALF_FLOAT;else{const g=e.context.getExtension("OES_texture_half_float");d=g&&e.openGLDataType===g.HALF_FLOAT_OES}const h=d&&(o(l,f)||u);e.canUseHalfFloat=h}function s(c,l){const f=c.getNumberOfComponents(),u=c.getDataType(),d=c.getData(),h=new Array(f),g=new Array(f);for(let v=0;v5&&arguments[5]!==void 0?arguments[5]:!1;return t.create2DFilterableFromDataArray(c,l,tt.newInstance({numberOfComponents:f,dataType:u,values:d}),h)},t.create2DFilterableFromDataArray=function(c,l,f){let u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:d,dataType:h,data:g}=s(f,u);t.create2DFromRaw(c,l,d,h,g)},t.updateVolumeInfoForGL=(c,l)=>{var d,h;let f=!1;const u=t.useHalfFloat();(!((d=e.volumeInfo)!=null&&d.scale)||!((h=e.volumeInfo)!=null&&h.offset))&&(e.volumeInfo={scale:new Array(l),offset:new Array(l)});for(let g=0;g{let g=d,p=h;if(!t.updateVolumeInfoForGL(g,u)&&p){const w=c*l*f,C=structuredClone(e.volumeInfo),S=new Float32Array(w*u);e.volumeInfo.offset=C.offset,e.volumeInfo.scale=C.scale;let T=0;const _=C.scale.map(E=>1/E);for(let E=0;E6&&arguments[6]!==void 0?arguments[6]:!1;return t.create3DFilterableFromDataArray(c,l,f,tt.newInstance({numberOfComponents:u,dataType:d,values:h}),g)},t.create3DFilterableFromDataArray=function(c,l,f,u){let d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;const{numComps:h,dataType:g,data:p,scaleOffsets:v}=s(u,d),x=[],m=[];for(let N=0;N{N[V]=$},S=Wt.UNSIGNED_CHAR;if(g===Wt.UNSIGNED_CHAR)for(let N=0;N{N[V]=($-H)/Y}):(S=Wt.UNSIGNED_CHAR,C=(N,V,$,H,Y)=>{N[V]=255*($-H)/Y});if(t.getOpenGLDataType(S),t.getInternalFormat(S,h),t.getFormat(S,h),!e.internalFormat||!e.format||!e.openGLDataType)return Al("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=h,e.depth=1,e.numberOfDimensions=2;let T=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);T>4096&&(S===Wt.FLOAT||h>=3)&&(T=4096);let _=1,E=1;y>T*T&&(_=Math.ceil(Math.sqrt(y/(T*T))),E=_);let D=Math.sqrt(y)/_;D=Qi(D);const b=Math.floor(D*_/c),I=Math.ceil(f/b),R=Qi(l*I/E);e.width=D,e.height=R,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.volumeInfo.xreps=b,e.volumeInfo.yreps=I,e.volumeInfo.xstride=_,e.volumeInfo.ystride=E,e.volumeInfo.offset=w.offset,e.volumeInfo.scale=w.scale;let M;const L=D*R*h;S===Wt.FLOAT?M=new Float32Array(L):M=new Uint8Array(L);let A=0;const G=Math.floor(c/_),P=Math.floor(l/E);for(let N=0;N{e._openGLRenderWindow!==c&&(t.releaseGraphicsResources(),e._openGLRenderWindow=c,e.context=null,c&&(e.context=e._openGLRenderWindow.getContext()))},t.getMaximumTextureSize=c=>c&&c.isCurrent()?c.getIntegerv(c.MAX_TEXTURE_SIZE):-1,t.enableUseHalfFloat=c=>{e.enableUseHalfFloat=c}}const Yz={_openGLRenderWindow:null,_forceInternalFormat:!1,context:null,handle:0,sendParametersTime:null,textureBuildTime:null,numberOfDimensions:0,target:0,format:0,openGLDataType:0,components:0,width:0,height:0,depth:0,autoParameters:!0,wrapS:Ea.CLAMP_TO_EDGE,wrapT:Ea.CLAMP_TO_EDGE,wrapR:Ea.CLAMP_TO_EDGE,minificationFilter:Rr.NEAREST,magnificationFilter:Rr.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0,enableUseHalfFloat:!0,canUseHalfFloat:!1};function j7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Yz,r),tn.extend(t,e,r),e.sendParametersTime={},un(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},un(e.textureBuildTime,{mtime:0}),dh(t,e,["format","openGLDataType"]),Jn(t,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),gi(t,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),hh(t,e,["openGLRenderWindow"]),Xz(t,e)}const H7=Bt(j7,"vtkOpenGLTexture");var yn={newInstance:H7,extend:j7,...d7};ir("vtkTexture",H7);function Jz(t,e){e.classHierarchy.push("vtkFramebuffer"),t.getBothMode=()=>e.context.FRAMEBUFFER,t.saveCurrentBindingsAndBuffers=r=>{const n=typeof r<"u"?r:t.getBothMode();t.saveCurrentBindings(n),t.saveCurrentBuffers(n)},t.saveCurrentBindings=r=>{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling saveCurrentBindings");return}const n=e.context;e.previousDrawBinding=n.getParameter(e.context.FRAMEBUFFER_BINDING),e.previousActiveFramebuffer=e._openGLRenderWindow.getActiveFramebuffer()},t.saveCurrentBuffers=r=>{},t.restorePreviousBindingsAndBuffers=r=>{const n=typeof r<"u"?r:t.getBothMode();t.restorePreviousBindings(n),t.restorePreviousBuffers(n)},t.restorePreviousBindings=r=>{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling restorePreviousBindings");return}const n=e.context;n.bindFramebuffer(n.FRAMEBUFFER,e.previousDrawBinding),e._openGLRenderWindow.setActiveFramebuffer(e.previousActiveFramebuffer)},t.restorePreviousBuffers=r=>{},t.bind=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;n===null&&(n=e.context.FRAMEBUFFER),e.context.bindFramebuffer(n,e.glFramebuffer);for(let i=0;i{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling create");return}e.glFramebuffer=e.context.createFramebuffer(),e.glFramebuffer.width=r,e.glFramebuffer.height=n},t.setColorBuffer=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const i=e.context;if(!i){Dt("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let o=i.COLOR_ATTACHMENT0;if(n>0)if(e._openGLRenderWindow.getWebgl2())o+=n;else{Dt("Using multiple framebuffer attachments requires WebGL 2");return}e.colorBuffers[n]=r,i.framebufferTexture2D(i.FRAMEBUFFER,o,i.TEXTURE_2D,r.getHandle(),0)},t.removeColorBuffer=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const n=e.context;if(!n){Dt("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let i=n.COLOR_ATTACHMENT0;if(r>0)if(e._openGLRenderWindow.getWebgl2())i+=r;else{Dt("Using multiple framebuffer attachments requires WebGL 2");return}n.framebufferTexture2D(n.FRAMEBUFFER,i,n.TEXTURE_2D,null,0),e.colorBuffers=e.colorBuffers.splice(r,1)},t.setDepthBuffer=r=>{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling setDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const n=e.context;n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,r.getHandle(),0)}else Dt("Attaching depth buffer textures to fbo requires WebGL 2")},t.removeDepthBuffer=()=>{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling removeDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const r=e.context;r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,null,0)}else Dt("Attaching depth buffer textures to framebuffers requires WebGL 2")},t.getGLFramebuffer=()=>e.glFramebuffer,t.setOpenGLRenderWindow=r=>{e._openGLRenderWindow!==r&&(t.releaseGraphicsResources(),e._openGLRenderWindow=r,e.context=null,r&&(e.context=e._openGLRenderWindow.getContext()))},t.releaseGraphicsResources=()=>{e.glFramebuffer&&e.context.deleteFramebuffer(e.glFramebuffer)},t.getSize=()=>e.glFramebuffer==null?null:[e.glFramebuffer.width,e.glFramebuffer.height],t.populateFramebuffer=()=>{if(!e.context){Dt("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}t.bind();const r=e.context,n=yn.newInstance();n.setOpenGLRenderWindow(e._openGLRenderWindow),n.setMinificationFilter(Je.LINEAR),n.setMagnificationFilter(Je.LINEAR),n.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,vt.UNSIGNED_CHAR,null),t.setColorBuffer(n),e.depthTexture=r.createRenderbuffer(),r.bindRenderbuffer(r.RENDERBUFFER,e.depthTexture),r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_COMPONENT16,e.glFramebuffer.width,e.glFramebuffer.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,e.depthTexture)},t.getColorTexture=()=>e.colorBuffers[0]}const Zz={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function K7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zz,r),un(t,e),e.colorBuffers&&Dt("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],v0(t,e,["colorBuffers"]),Jz(t,e)}const Qz=Bt(K7,"vtkFramebuffer");var Xm={newInstance:Qz,extend:K7};function e$(t,e){e.classHierarchy.push("vtkRenderPass"),t.getOperation=()=>e.currentOperation,t.setCurrentOperation=r=>{e.currentOperation=r,e.currentTraverseOperation=`traverse${W.capitalize(e.currentOperation)}`},t.getTraverseOperation=()=>e.currentTraverseOperation,t.traverse=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e.deleted||(e._currentParent=n,e.preDelegateOperations.forEach(i=>{t.setCurrentOperation(i),r.traverse(t)}),e.delegates.forEach(i=>{i.traverse(r,t)}),e.postDelegateOperations.forEach(i=>{t.setCurrentOperation(i),r.traverse(t)}))}}const t$={delegates:[],currentOperation:null,preDelegateOperations:[],postDelegateOperations:[],currentParent:null};function q7(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,t$,r),W.obj(t,e),W.get(t,e,["currentOperation"]),W.setGet(t,e,["delegates","_currentParent","preDelegateOperations","postDelegateOperations"]),W.moveToProtected(t,e,["currentParent"]),e$(t,e)}const n$=W.newInstance(q7,"vtkRenderPass");var dw={newInstance:n$,extend:q7},At=1e-6,Hn=typeof Float32Array<"u"?Float32Array:Array,r$=Math.PI/180;function i$(t){return t*r$}function Xs(t,e){return Math.abs(t-e)<=At*Math.max(1,Math.abs(t),Math.abs(e))}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function hw(){var t=new Hn(9);return Hn!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Ym(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function o$(t){var e=new Hn(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function a$(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function _f(t,e,r,n,i,o,a,s,c){var l=new Hn(9);return l[0]=t,l[1]=e,l[2]=r,l[3]=n,l[4]=i,l[5]=o,l[6]=a,l[7]=s,l[8]=c,l}function X7(t,e,r,n,i,o,a,s,c,l){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=o,t[5]=a,t[6]=s,t[7]=c,t[8]=l,t}function ao(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function gw(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function yh(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=e[6],l=e[7],f=e[8],u=f*a-s*l,d=-f*o+s*c,h=l*o-a*c,g=r*u+n*d+i*h;return g?(g=1/g,t[0]=u*g,t[1]=(-f*n+i*l)*g,t[2]=(s*n-i*a)*g,t[3]=d*g,t[4]=(f*r-i*c)*g,t[5]=(-s*r+i*o)*g,t[6]=h*g,t[7]=(-l*r+n*c)*g,t[8]=(a*r-n*o)*g,t):null}function s$(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=e[6],l=e[7],f=e[8];return t[0]=a*f-s*l,t[1]=i*l-n*f,t[2]=n*s-i*a,t[3]=s*c-o*f,t[4]=r*f-i*c,t[5]=i*o-r*s,t[6]=o*l-a*c,t[7]=n*c-r*l,t[8]=r*a-n*o,t}function Dc(t){var e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],s=t[6],c=t[7],l=t[8];return e*(l*o-a*c)+r*(-l*i+a*s)+n*(c*i-o*s)}function Ku(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=e[4],c=e[5],l=e[6],f=e[7],u=e[8],d=r[0],h=r[1],g=r[2],p=r[3],v=r[4],x=r[5],m=r[6],y=r[7],w=r[8];return t[0]=d*n+h*a+g*l,t[1]=d*i+h*s+g*f,t[2]=d*o+h*c+g*u,t[3]=p*n+v*a+x*l,t[4]=p*i+v*s+x*f,t[5]=p*o+v*c+x*u,t[6]=m*n+y*a+w*l,t[7]=m*i+y*s+w*f,t[8]=m*o+y*c+w*u,t}function c$(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=e[4],c=e[5],l=e[6],f=e[7],u=e[8],d=r[0],h=r[1];return t[0]=n,t[1]=i,t[2]=o,t[3]=a,t[4]=s,t[5]=c,t[6]=d*n+h*a+l,t[7]=d*i+h*s+f,t[8]=d*o+h*c+u,t}function l$(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=e[4],c=e[5],l=e[6],f=e[7],u=e[8],d=Math.sin(r),h=Math.cos(r);return t[0]=h*n+d*a,t[1]=h*i+d*s,t[2]=h*o+d*c,t[3]=h*a-d*n,t[4]=h*s-d*i,t[5]=h*c-d*o,t[6]=l,t[7]=f,t[8]=u,t}function u$(t,e,r){var n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function f$(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t}function d$(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function h$(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function g$(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t}function p$(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=r+r,s=n+n,c=i+i,l=r*a,f=n*a,u=n*s,d=i*a,h=i*s,g=i*c,p=o*a,v=o*s,x=o*c;return t[0]=1-u-g,t[3]=f-x,t[6]=d+v,t[1]=f+x,t[4]=1-l-g,t[7]=h-p,t[2]=d-v,t[5]=h+p,t[8]=1-l-u,t}function m$(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=e[6],l=e[7],f=e[8],u=e[9],d=e[10],h=e[11],g=e[12],p=e[13],v=e[14],x=e[15],m=r*s-n*a,y=r*c-i*a,w=r*l-o*a,C=n*c-i*s,S=n*l-o*s,T=i*l-o*c,_=f*p-u*g,E=f*v-d*g,D=f*x-h*g,b=u*v-d*p,I=u*x-h*p,R=d*x-h*v,M=m*R-y*I+w*b+C*D-S*E+T*_;return M?(M=1/M,t[0]=(s*R-c*I+l*b)*M,t[1]=(c*D-a*R-l*E)*M,t[2]=(a*I-s*D+l*_)*M,t[3]=(i*I-n*R-o*b)*M,t[4]=(r*R-i*D+o*E)*M,t[5]=(n*D-r*I-o*_)*M,t[6]=(p*T-v*S+x*C)*M,t[7]=(v*w-g*T-x*y)*M,t[8]=(g*S-p*w+x*m)*M,t):null}function v$(t,e,r){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/r,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}function y$(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function x$(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function w$(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t}function Y7(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t}function C$(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t}function S$(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t}function T$(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]}function _$(t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],c=t[6],l=t[7],f=t[8],u=e[0],d=e[1],h=e[2],g=e[3],p=e[4],v=e[5],x=e[6],m=e[7],y=e[8];return Math.abs(r-u)<=At*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(n-d)<=At*Math.max(1,Math.abs(n),Math.abs(d))&&Math.abs(i-h)<=At*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-g)<=At*Math.max(1,Math.abs(o),Math.abs(g))&&Math.abs(a-p)<=At*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(s-v)<=At*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(c-x)<=At*Math.max(1,Math.abs(c),Math.abs(x))&&Math.abs(l-m)<=At*Math.max(1,Math.abs(l),Math.abs(m))&&Math.abs(f-y)<=At*Math.max(1,Math.abs(f),Math.abs(y))}var E$=Ku,D$=Y7;const b$=Object.freeze(Object.defineProperty({__proto__:null,add:w$,adjoint:s$,clone:o$,copy:a$,create:hw,determinant:Dc,equals:_$,exactEquals:T$,frob:x$,fromMat2d:g$,fromMat4:Ym,fromQuat:p$,fromRotation:d$,fromScaling:h$,fromTranslation:f$,fromValues:_f,identity:ao,invert:yh,mul:E$,multiply:Ku,multiplyScalar:C$,multiplyScalarAndAdd:S$,normalFromMat4:m$,projection:v$,rotate:l$,scale:u$,set:X7,str:y$,sub:D$,subtract:Y7,translate:c$,transpose:gw},Symbol.toStringTag,{value:"Module"}));function lo(){var t=new Hn(16);return Hn!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function I$(t){var e=new Hn(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function _n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function pw(t,e,r,n,i,o,a,s,c,l,f,u,d,h,g,p){var v=new Hn(16);return v[0]=t,v[1]=e,v[2]=r,v[3]=n,v[4]=i,v[5]=o,v[6]=a,v[7]=s,v[8]=c,v[9]=l,v[10]=f,v[11]=u,v[12]=d,v[13]=h,v[14]=g,v[15]=p,v}function O$(t,e,r,n,i,o,a,s,c,l,f,u,d,h,g,p,v){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=o,t[5]=a,t[6]=s,t[7]=c,t[8]=l,t[9]=f,t[10]=u,t[11]=d,t[12]=h,t[13]=g,t[14]=p,t[15]=v,t}function qe(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function St(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],o=e[6],a=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=o,t[11]=e[14],t[12]=i,t[13]=a,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function $n(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=e[6],l=e[7],f=e[8],u=e[9],d=e[10],h=e[11],g=e[12],p=e[13],v=e[14],x=e[15],m=r*s-n*a,y=r*c-i*a,w=r*l-o*a,C=n*c-i*s,S=n*l-o*s,T=i*l-o*c,_=f*p-u*g,E=f*v-d*g,D=f*x-h*g,b=u*v-d*p,I=u*x-h*p,R=d*x-h*v,M=m*R-y*I+w*b+C*D-S*E+T*_;return M?(M=1/M,t[0]=(s*R-c*I+l*b)*M,t[1]=(i*I-n*R-o*b)*M,t[2]=(p*T-v*S+x*C)*M,t[3]=(d*S-u*T-h*C)*M,t[4]=(c*D-a*R-l*E)*M,t[5]=(r*R-i*D+o*E)*M,t[6]=(v*w-g*T-x*y)*M,t[7]=(f*T-d*w+h*y)*M,t[8]=(a*I-s*D+l*_)*M,t[9]=(n*D-r*I-o*_)*M,t[10]=(g*S-p*w+x*m)*M,t[11]=(u*w-f*S-h*m)*M,t[12]=(s*E-a*b-c*_)*M,t[13]=(r*b-n*E+i*_)*M,t[14]=(p*y-g*C-v*m)*M,t[15]=(f*C-u*y+d*m)*M,t):null}function M$(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=e[6],l=e[7],f=e[8],u=e[9],d=e[10],h=e[11],g=e[12],p=e[13],v=e[14],x=e[15];return t[0]=s*(d*x-h*v)-u*(c*x-l*v)+p*(c*h-l*d),t[1]=-(n*(d*x-h*v)-u*(i*x-o*v)+p*(i*h-o*d)),t[2]=n*(c*x-l*v)-s*(i*x-o*v)+p*(i*l-o*c),t[3]=-(n*(c*h-l*d)-s*(i*h-o*d)+u*(i*l-o*c)),t[4]=-(a*(d*x-h*v)-f*(c*x-l*v)+g*(c*h-l*d)),t[5]=r*(d*x-h*v)-f*(i*x-o*v)+g*(i*h-o*d),t[6]=-(r*(c*x-l*v)-a*(i*x-o*v)+g*(i*l-o*c)),t[7]=r*(c*h-l*d)-a*(i*h-o*d)+f*(i*l-o*c),t[8]=a*(u*x-h*p)-f*(s*x-l*p)+g*(s*h-l*u),t[9]=-(r*(u*x-h*p)-f*(n*x-o*p)+g*(n*h-o*u)),t[10]=r*(s*x-l*p)-a*(n*x-o*p)+g*(n*l-o*s),t[11]=-(r*(s*h-l*u)-a*(n*h-o*u)+f*(n*l-o*s)),t[12]=-(a*(u*v-d*p)-f*(s*v-c*p)+g*(s*d-c*u)),t[13]=r*(u*v-d*p)-f*(n*v-i*p)+g*(n*d-i*u),t[14]=-(r*(s*v-c*p)-a*(n*v-i*p)+g*(n*c-i*s)),t[15]=r*(s*d-c*u)-a*(n*d-i*u)+f*(n*c-i*s),t}function R$(t){var e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],s=t[6],c=t[7],l=t[8],f=t[9],u=t[10],d=t[11],h=t[12],g=t[13],p=t[14],v=t[15],x=e*a-r*o,m=e*s-n*o,y=e*c-i*o,w=r*s-n*a,C=r*c-i*a,S=n*c-i*s,T=l*g-f*h,_=l*p-u*h,E=l*v-d*h,D=f*p-u*g,b=f*v-d*g,I=u*v-d*p;return x*I-m*b+y*D+w*E-C*_+S*T}function bt(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=e[4],c=e[5],l=e[6],f=e[7],u=e[8],d=e[9],h=e[10],g=e[11],p=e[12],v=e[13],x=e[14],m=e[15],y=r[0],w=r[1],C=r[2],S=r[3];return t[0]=y*n+w*s+C*u+S*p,t[1]=y*i+w*c+C*d+S*v,t[2]=y*o+w*l+C*h+S*x,t[3]=y*a+w*f+C*g+S*m,y=r[4],w=r[5],C=r[6],S=r[7],t[4]=y*n+w*s+C*u+S*p,t[5]=y*i+w*c+C*d+S*v,t[6]=y*o+w*l+C*h+S*x,t[7]=y*a+w*f+C*g+S*m,y=r[8],w=r[9],C=r[10],S=r[11],t[8]=y*n+w*s+C*u+S*p,t[9]=y*i+w*c+C*d+S*v,t[10]=y*o+w*l+C*h+S*x,t[11]=y*a+w*f+C*g+S*m,y=r[12],w=r[13],C=r[14],S=r[15],t[12]=y*n+w*s+C*u+S*p,t[13]=y*i+w*c+C*d+S*v,t[14]=y*o+w*l+C*h+S*x,t[15]=y*a+w*f+C*g+S*m,t}function nn(t,e,r){var n=r[0],i=r[1],o=r[2],a,s,c,l,f,u,d,h,g,p,v,x;return e===t?(t[12]=e[0]*n+e[4]*i+e[8]*o+e[12],t[13]=e[1]*n+e[5]*i+e[9]*o+e[13],t[14]=e[2]*n+e[6]*i+e[10]*o+e[14],t[15]=e[3]*n+e[7]*i+e[11]*o+e[15]):(a=e[0],s=e[1],c=e[2],l=e[3],f=e[4],u=e[5],d=e[6],h=e[7],g=e[8],p=e[9],v=e[10],x=e[11],t[0]=a,t[1]=s,t[2]=c,t[3]=l,t[4]=f,t[5]=u,t[6]=d,t[7]=h,t[8]=g,t[9]=p,t[10]=v,t[11]=x,t[12]=a*n+f*i+g*o+e[12],t[13]=s*n+u*i+p*o+e[13],t[14]=c*n+d*i+v*o+e[14],t[15]=l*n+h*i+x*o+e[15]),t}function Ha(t,e,r){var n=r[0],i=r[1],o=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Hr(t,e,r,n){var i=n[0],o=n[1],a=n[2],s=Math.hypot(i,o,a),c,l,f,u,d,h,g,p,v,x,m,y,w,C,S,T,_,E,D,b,I,R,M,L;return s0?(r[0]=(s*a+f*n+c*o-l*i)*2/u,r[1]=(c*a+f*i+l*n-s*o)*2/u,r[2]=(l*a+f*o+s*i-c*n)*2/u):(r[0]=(s*a+f*n+c*o-l*i)*2,r[1]=(c*a+f*i+l*n-s*o)*2,r[2]=(l*a+f*o+s*i-c*n)*2),J7(t,e,r),t}function k$(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function Z7(t,e){var r=e[0],n=e[1],i=e[2],o=e[4],a=e[5],s=e[6],c=e[8],l=e[9],f=e[10];return t[0]=Math.hypot(r,n,i),t[1]=Math.hypot(o,a,s),t[2]=Math.hypot(c,l,f),t}function G5(t,e){var r=new Hn(3);Z7(r,e);var n=1/r[0],i=1/r[1],o=1/r[2],a=e[0]*n,s=e[1]*i,c=e[2]*o,l=e[4]*n,f=e[5]*i,u=e[6]*o,d=e[8]*n,h=e[9]*i,g=e[10]*o,p=a+f+g,v=0;return p>0?(v=Math.sqrt(p+1)*2,t[3]=.25*v,t[0]=(u-h)/v,t[1]=(d-c)/v,t[2]=(s-l)/v):a>f&&a>g?(v=Math.sqrt(1+a-f-g)*2,t[3]=(u-h)/v,t[0]=.25*v,t[1]=(s+l)/v,t[2]=(d+c)/v):f>g?(v=Math.sqrt(1+f-a-g)*2,t[3]=(d-c)/v,t[0]=(s+l)/v,t[1]=.25*v,t[2]=(u+h)/v):(v=Math.sqrt(1+g-a-f)*2,t[3]=(s-l)/v,t[0]=(d+c)/v,t[1]=(u+h)/v,t[2]=.25*v),t}function Q7(t,e,r,n){var i=e[0],o=e[1],a=e[2],s=e[3],c=i+i,l=o+o,f=a+a,u=i*c,d=i*l,h=i*f,g=o*l,p=o*f,v=a*f,x=s*c,m=s*l,y=s*f,w=n[0],C=n[1],S=n[2];return t[0]=(1-(g+v))*w,t[1]=(d+y)*w,t[2]=(h-m)*w,t[3]=0,t[4]=(d-y)*C,t[5]=(1-(u+v))*C,t[6]=(p+x)*C,t[7]=0,t[8]=(h+m)*S,t[9]=(p-x)*S,t[10]=(1-(u+g))*S,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function V$(t,e,r,n,i){var o=e[0],a=e[1],s=e[2],c=e[3],l=o+o,f=a+a,u=s+s,d=o*l,h=o*f,g=o*u,p=a*f,v=a*u,x=s*u,m=c*l,y=c*f,w=c*u,C=n[0],S=n[1],T=n[2],_=i[0],E=i[1],D=i[2],b=(1-(p+x))*C,I=(h+w)*C,R=(g-y)*C,M=(h-w)*S,L=(1-(d+x))*S,A=(v+m)*S,G=(g+y)*T,P=(v-m)*T,N=(1-(d+p))*T;return t[0]=b,t[1]=I,t[2]=R,t[3]=0,t[4]=M,t[5]=L,t[6]=A,t[7]=0,t[8]=G,t[9]=P,t[10]=N,t[11]=0,t[12]=r[0]+_-(b*_+M*E+G*D),t[13]=r[1]+E-(I*_+L*E+P*D),t[14]=r[2]+D-(R*_+A*E+N*D),t[15]=1,t}function I1(t,e){var r=e[0],n=e[1],i=e[2],o=e[3],a=r+r,s=n+n,c=i+i,l=r*a,f=n*a,u=n*s,d=i*a,h=i*s,g=i*c,p=o*a,v=o*s,x=o*c;return t[0]=1-u-g,t[1]=f+x,t[2]=d-v,t[3]=0,t[4]=f-x,t[5]=1-l-g,t[6]=h+p,t[7]=0,t[8]=d+v,t[9]=h-p,t[10]=1-l-u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function F$(t,e,r,n,i,o,a){var s=1/(r-e),c=1/(i-n),l=1/(o-a);return t[0]=o*2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*s,t[9]=(i+n)*c,t[10]=(a+o)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=a*o*2*l,t[15]=0,t}function eb(t,e,r,n,i){var o=1/Math.tan(e/2),a;return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0?(a=1/(n-i),t[10]=(i+n)*a,t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t}var U$=eb;function B$(t,e,r,n,i){var o=1/Math.tan(e/2),a;return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0?(a=1/(n-i),t[10]=i*a,t[14]=i*n*a):(t[10]=-1,t[14]=-n),t}function G$(t,e,r,n){var i=Math.tan(e.upDegrees*Math.PI/180),o=Math.tan(e.downDegrees*Math.PI/180),a=Math.tan(e.leftDegrees*Math.PI/180),s=Math.tan(e.rightDegrees*Math.PI/180),c=2/(a+s),l=2/(i+o);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=-((a-s)*c*.5),t[9]=(i-o)*l*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t}function tb(t,e,r,n,i,o,a){var s=1/(e-r),c=1/(n-i),l=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*c,t[14]=(a+o)*l,t[15]=1,t}var Cw=tb;function W$(t,e,r,n,i,o,a){var s=1/(e-r),c=1/(n-i),l=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=l,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*c,t[14]=o*l,t[15]=1,t}function Sw(t,e,r,n){var i,o,a,s,c,l,f,u,d,h,g=e[0],p=e[1],v=e[2],x=n[0],m=n[1],y=n[2],w=r[0],C=r[1],S=r[2];return Math.abs(g-w)0&&(h=1/Math.sqrt(h),f*=h,u*=h,d*=h);var g=c*d-l*u,p=l*f-s*d,v=s*u-c*f;return h=g*g+p*p+v*v,h>0&&(h=1/Math.sqrt(h),g*=h,p*=h,v*=h),t[0]=g,t[1]=p,t[2]=v,t[3]=0,t[4]=u*v-d*p,t[5]=d*g-f*v,t[6]=f*p-u*g,t[7]=0,t[8]=f,t[9]=u,t[10]=d,t[11]=0,t[12]=i,t[13]=o,t[14]=a,t[15]=1,t}function $$(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function j$(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function H$(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function nb(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function rb(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function K$(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t[9]=e[9]+r[9]*n,t[10]=e[10]+r[10]*n,t[11]=e[11]+r[11]*n,t[12]=e[12]+r[12]*n,t[13]=e[13]+r[13]*n,t[14]=e[14]+r[14]*n,t[15]=e[15]+r[15]*n,t}function q$(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function X$(t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],c=t[6],l=t[7],f=t[8],u=t[9],d=t[10],h=t[11],g=t[12],p=t[13],v=t[14],x=t[15],m=e[0],y=e[1],w=e[2],C=e[3],S=e[4],T=e[5],_=e[6],E=e[7],D=e[8],b=e[9],I=e[10],R=e[11],M=e[12],L=e[13],A=e[14],G=e[15];return Math.abs(r-m)<=At*Math.max(1,Math.abs(r),Math.abs(m))&&Math.abs(n-y)<=At*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(i-w)<=At*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(o-C)<=At*Math.max(1,Math.abs(o),Math.abs(C))&&Math.abs(a-S)<=At*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(s-T)<=At*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(c-_)<=At*Math.max(1,Math.abs(c),Math.abs(_))&&Math.abs(l-E)<=At*Math.max(1,Math.abs(l),Math.abs(E))&&Math.abs(f-D)<=At*Math.max(1,Math.abs(f),Math.abs(D))&&Math.abs(u-b)<=At*Math.max(1,Math.abs(u),Math.abs(b))&&Math.abs(d-I)<=At*Math.max(1,Math.abs(d),Math.abs(I))&&Math.abs(h-R)<=At*Math.max(1,Math.abs(h),Math.abs(R))&&Math.abs(g-M)<=At*Math.max(1,Math.abs(g),Math.abs(M))&&Math.abs(p-L)<=At*Math.max(1,Math.abs(p),Math.abs(L))&&Math.abs(v-A)<=At*Math.max(1,Math.abs(v),Math.abs(A))&&Math.abs(x-G)<=At*Math.max(1,Math.abs(x),Math.abs(G))}var O1=bt,Y$=nb;const Od=Object.freeze(Object.defineProperty({__proto__:null,add:H$,adjoint:M$,clone:I$,copy:_n,create:lo,determinant:R$,equals:X$,exactEquals:q$,frob:j$,fromQuat:I1,fromQuat2:A$,fromRotation:ww,fromRotationTranslation:J7,fromRotationTranslationScale:Q7,fromRotationTranslationScaleOrigin:V$,fromScaling:xw,fromTranslation:Jm,fromValues:pw,fromXRotation:L$,fromYRotation:N$,fromZRotation:P$,frustum:F$,getRotation:G5,getScaling:Z7,getTranslation:k$,identity:qe,invert:$n,lookAt:Sw,mul:O1,multiply:bt,multiplyScalar:rb,multiplyScalarAndAdd:K$,ortho:Cw,orthoNO:tb,orthoZO:W$,perspective:U$,perspectiveFromFieldOfView:G$,perspectiveNO:eb,perspectiveZO:B$,rotate:Hr,rotateX:mw,rotateY:vw,rotateZ:yw,scale:Ha,set:O$,str:$$,sub:Y$,subtract:nb,targetTo:z$,translate:nn,transpose:St},Symbol.toStringTag,{value:"Module"}));function we(){var t=new Hn(3);return Hn!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Eu(t){var e=new Hn(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function ui(t){var e=t[0],r=t[1],n=t[2];return Math.hypot(e,r,n)}function Ye(t,e,r){var n=new Hn(3);return n[0]=t,n[1]=e,n[2]=r,n}function Md(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function $t(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function xn(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function kt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function J$(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Z$(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function Q$(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function lr(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function Vt(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function Cr(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.hypot(r,n,i)}function ib(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}function qc(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function ob(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function on(t,e){var r=e[0],n=e[1],i=e[2],o=r*r+n*n+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}function je(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Kt(t,e,r){var n=e[0],i=e[1],o=e[2],a=r[0],s=r[1],c=r[2];return t[0]=i*c-o*s,t[1]=o*a-n*c,t[2]=n*s-i*a,t}function et(t,e,r){var n=e[0],i=e[1],o=e[2],a=r[3]*n+r[7]*i+r[11]*o+r[15];return a=a||1,t[0]=(r[0]*n+r[4]*i+r[8]*o+r[12])/a,t[1]=(r[1]*n+r[5]*i+r[9]*o+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*o+r[14])/a,t}function Dp(t,e,r){var n=e[0],i=e[1],o=e[2];return t[0]=n*r[0]+i*r[3]+o*r[6],t[1]=n*r[1]+i*r[4]+o*r[7],t[2]=n*r[2]+i*r[5]+o*r[8],t}function Tw(t,e){var r=t[0],n=t[1],i=t[2],o=e[0],a=e[1],s=e[2],c=Math.sqrt(r*r+n*n+i*i),l=Math.sqrt(o*o+a*a+s*s),f=c*l,u=f&&je(t,e)/f;return Math.acos(Math.min(Math.max(u,-1),1))}function ej(t){return t[0]=0,t[1]=0,t[2]=0,t}function RT(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function W5(t,e){var r=t[0],n=t[1],i=t[2],o=e[0],a=e[1],s=e[2];return Math.abs(r-o)<=At*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-a)<=At*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=At*Math.max(1,Math.abs(i),Math.abs(s))}var Qt=kt,tj=J$,LT=ib,Rd=ui;(function(){var t=we();return function(e,r,n,i,o,a){var s,c;for(r||(r=3),n||(n=0),i?c=Math.min(i*r+n,e.length):c=e.length,s=n;s0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=o*a,t}function PT(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Os(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*o+r[12]*a,t[1]=r[1]*n+r[5]*i+r[9]*o+r[13]*a,t[2]=r[2]*n+r[6]*i+r[10]*o+r[14]*a,t[3]=r[3]*n+r[7]*i+r[11]*o+r[15]*a,t}(function(){var t=ab();return function(e,r,n,i,o,a){var s,c;for(r||(r=4),n||(n=0),i?c=Math.min(i*r+n,e.length):c=e.length,s=n;sAt?(t[0]=e[0]/n,t[1]=e[1]/n,t[2]=e[2]/n):(t[0]=1,t[1]=0,t[2]=0),r}function AT(t,e,r){var n=e[0],i=e[1],o=e[2],a=e[3],s=r[0],c=r[1],l=r[2],f=r[3];return t[0]=n*f+a*s+i*l-o*c,t[1]=i*f+a*c+o*s-n*l,t[2]=o*f+a*l+n*c-i*s,t[3]=a*f-n*s-i*c-o*l,t}function Ip(t,e,r,n){var i=e[0],o=e[1],a=e[2],s=e[3],c=r[0],l=r[1],f=r[2],u=r[3],d,h,g,p,v;return h=i*c+o*l+a*f+s*u,h<0&&(h=-h,c=-c,l=-l,f=-f,u=-u),1-h>At?(d=Math.acos(h),g=Math.sin(d),p=Math.sin((1-n)*d)/g,v=Math.sin(n*d)/g):(p=1-n,v=n),t[0]=p*i+v*c,t[1]=p*o+v*l,t[2]=p*a+v*f,t[3]=p*s+v*u,t}function ij(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function oj(t,e){var r=e[0]+e[4]+e[8],n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{var i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);var o=(i+1)%3,a=(i+2)%3;n=Math.sqrt(e[i*3+i]-e[o*3+o]-e[a*3+a]+1),t[i]=.5*n,n=.5/n,t[3]=(e[o*3+a]-e[a*3+o])*n,t[o]=(e[o*3+i]+e[i*3+o])*n,t[a]=(e[a*3+i]+e[i*3+a])*n}return t}var kT=bp,sb=nj;(function(){var t=we(),e=Ye(1,0,0),r=Ye(0,1,0);return function(n,i,o){var a=je(i,o);return a<-.999999?(Kt(t,e,i),Rd(t)<1e-6&&Kt(t,r,i),on(t,t),_w(n,t,Math.PI),n):a>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(Kt(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+a,sb(n,n))}})();(function(){var t=ll(),e=ll();return function(r,n,i,o,a,s){return Ip(t,n,a,s),Ip(e,i,o,s),Ip(r,t,e,2*s*(1-s)),r}})();(function(){var t=hw();return function(e,r,n,i){return t[0]=n[0],t[3]=n[1],t[6]=n[2],t[1]=i[0],t[4]=i[1],t[7]=i[2],t[2]=-r[0],t[5]=-r[1],t[8]=-r[2],sb(e,oj(e,t))}})();function ot(){var t=new Hn(2);return Hn!=Float32Array&&(t[0]=0,t[1]=0),t}function sg(t){var e=new Hn(2);return e[0]=t[0],e[1]=t[1],e}function VT(t,e){var r=new Hn(2);return r[0]=t,r[1]=e,r}function eo(t,e,r){return t[0]=e,t[1]=r,t}function Lr(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function kn(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function Da(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function aj(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t}function bn(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.hypot(r,n)}function z5(t){var e=t[0],r=t[1];return Math.hypot(e,r)}function Na(t,e){var r=e[0],n=e[1],i=r*r+n*n;return i>0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t}function Ew(t,e){return t[0]*e[0]+t[1]*e[1]}function sj(t,e){var r=t[0],n=t[1],i=e[0],o=e[1],a=Math.sqrt(r*r+n*n)*Math.sqrt(i*i+o*o),s=a&&(r*i+n*o)/a;return Math.acos(Math.min(Math.max(s,-1),1))}var Oo=kn,Dw=bn;(function(){var t=ot();return function(e,r,n,i,o,a){var s,c;for(r||(r=2),n||(n=0),i?c=Math.min(i*r+n,e.length):c=e.length,s=n;sn,t.setType=s=>{n=s},t.getHandle=()=>i,t.isReady=()=>o===!1,t.generateBuffer=s=>{const c=r(s);return i===null&&(i=e.context.createBuffer(),n=s),r(n)===c},t.upload=(s,c)=>t.generateBuffer(c)?(e.context.bindBuffer(r(n),i),e.context.bufferData(r(n),s,e.context.STATIC_DRAW),e.allocatedGPUMemoryInBytes=s.length*s.BYTES_PER_ELEMENT,o=!1,!0):(a="Trying to upload array buffer to incompatible buffer.",!1),t.bind=()=>i?(e.context.bindBuffer(r(n),i),!0):!1,t.release=()=>i?(e.context.bindBuffer(r(n),null),!0):!1,t.releaseGraphicsResources=()=>{i!==null&&(e.context.bindBuffer(r(n),null),e.context.deleteBuffer(i),i=null,e.allocatedGPUMemoryInBytes=0)},t.setOpenGLRenderWindow=s=>{e._openGLRenderWindow!==s&&(t.releaseGraphicsResources(),e._openGLRenderWindow=s,e.context=null,s&&(e.context=e._openGLRenderWindow.getContext()))},t.getError=()=>a}const uj={objectType:Op.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function lb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,uj,r),W.obj(t,e),W.get(t,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),W.moveToProtected(t,e,["openGLRenderWindow"]),lj(t,e)}const fj=W.newInstance(lb);var Pa={newInstance:fj,extend:lb,...cj,...cb};const ub={FLAT:0,GOURAUD:1,PHONG:2},kr={POINTS:0,WIREFRAME:1,SURFACE:2},dj=ub;var fb={Shading:ub,Representation:kr,Interpolation:dj};const{vtkErrorMacro:FT}=W;function hj(t,e){const r=new Float64Array(3);ob(r,e);const n=new Float64Array(16);return Q7(n,ll(),t,r),n}function gj(t,e){return t===null||e===null?!1:!(RT(t,[0,0,0])&&RT(e,[1,1,1]))}function pj(t,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),t.setType(Ua.ARRAY_BUFFER),t.createVBO=function(r,n,i,o){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;if(!r.getData()||!r.getData().length)return e.elementCount=0,0;e.blockSize=3,e.vertexOffset=0,e.normalOffset=0,e.tCoordOffset=0,e.tCoordComponents=0,e.colorComponents=0,e.colorOffset=0,e.customData=[];const s=o.points.getData();let c=null,l=null,f=null;const u=o.colors?o.colors.getNumberOfComponents():0,d=o.tcoords?o.tcoords.getNumberOfComponents():0;o.normals&&(e.normalOffset=4*e.blockSize,e.blockSize+=3,c=o.normals.getData()),o.customAttributes&&o.customAttributes.forEach(N=>{N&&(e.customData.push({data:N.getData(),offset:4*e.blockSize,components:N.getNumberOfComponents(),name:N.getName()}),e.blockSize+=N.getNumberOfComponents())}),o.tcoords&&(e.tCoordOffset=4*e.blockSize,e.tCoordComponents=d,e.blockSize+=d,l=o.tcoords.getData()),o.colors?(e.colorComponents=o.colors.getNumberOfComponents(),e.colorOffset=0,f=o.colors.getData(),e.colorBO||(e.colorBO=Pa.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let h=0,g=0,p=0,v=0,x=0,m=0,y;const w={anythingToPoints(N,V,$,H){for(let Y=0;Y2)for(let Y=0;Y2){for(let Y=0;Y1?(N-1)*2:0},polysToWireframe(N,V){return N>2?N*2:0},stripsToWireframe(N,V){return N>2?N*4-6:0},polysToSurface(N,V){return N>2?(N-2)*3:0},stripsToSurface(N,V,$){return N>2?(N-2)*3:0}};let S=null,T=null;i===kr.POINTS||n==="verts"?(S=w.anythingToPoints,T=C.anythingToPoints):i===kr.WIREFRAME||n==="lines"?(S=w[`${n}ToWireframe`],T=C[`${n}ToWireframe`]):(S=w[`${n}ToSurface`],T=C[`${n}ToSurface`]);const _=r.getData(),E=_.length;let D=0;for(let N=0;N0&&(Math.abs(A)/L>1e6||Math.abs(Math.log10(L))>3||L===0&&A>1e6)){const N=new Float64Array(3),V=new Float64Array(3);for(let $=0;$<3;++$){const H=o.points.getRange($),Y=H[1]-H[0];N[$]=.5*(H[1]+H[0]),V[$]=Y>0?1/Y:1}t.setCoordShiftAndScale(N,V)}else e.coordShiftAndScaleEnabled===!0&&t.setCoordShiftAndScale(null,null);if(a)if(!a.points&&!a.cells)a.points=new Int32Array(D),a.cells=new Int32Array(D);else{const N=new Int32Array(D+a.points.length);N.set(a.points),a.points=N;const V=new Int32Array(D+a.cells.length);V.set(a.cells),a.cells=V}let P=o.vertexOffset;y=function(V,$){if(a&&(a.points[P]=V,a.cells[P]=m+o.cellOffset),++P,h=V*3,e.coordShiftAndScaleEnabled?(I[R++]=(s[h++]-e.coordShift[0])*e.coordScale[0],I[R++]=(s[h++]-e.coordShift[1])*e.coordScale[1],I[R++]=(s[h++]-e.coordShift[2])*e.coordScale[2]):(I[R++]=s[h++],I[R++]=s[h++],I[R++]=s[h++]),c!==null&&(o.haveCellNormals?g=(m+o.cellOffset)*3:g=V*3,I[R++]=c[g++],I[R++]=c[g++],I[R++]=c[g++]),e.customData.forEach(H=>{x=V*H.components;for(let Y=0;Y{if(r!==null&&(r.constructor!==Float64Array||r.length!==3)){FT("Wrong type for coordShift, expected vec3 or null");return}if(n!==null&&(n.constructor!==Float64Array||n.length!==3)){FT("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||r===null||!W5(r,e.coordShift))&&(e.coordShift=r),(e.coordScale===null||n===null||!W5(n,e.coordScale))&&(e.coordScale=n),e.coordShiftAndScaleEnabled=gj(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=hj(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const mj={elementCount:0,stride:0,colorBOStride:0,vertexOffset:0,normalOffset:0,tCoordOffset:0,tCoordComponents:0,colorOffset:0,colorComponents:0,tcoordBO:null,customData:[],coordShift:null,coordScale:null,coordShiftAndScaleEnabled:!1,inverseShiftAndScaleMatrix:null};function db(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mj,r),Pa.extend(t,e,r),W.setGet(t,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),W.get(t,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),pj(t,e)}const vj=W.newInstance(db);var yj={newInstance:vj,extend:db};const{vtkErrorMacro:xj}=W;function wj(t,e){e.classHierarchy.push("vtkShader"),t.compile=()=>{let r=e.context.VERTEX_SHADER;if(!e.source||!e.source.length||e.shaderType==="Unknown")return!1;switch(e.handle!==0&&(e.context.deleteShader(e.handle),e.handle=0),e.shaderType){case"Fragment":r=e.context.FRAGMENT_SHADER;break;case"Vertex":default:r=e.context.VERTEX_SHADER;break}if(e.handle=e.context.createShader(r),e.context.shaderSource(e.handle,e.source),e.context.compileShader(e.handle),!e.context.getShaderParameter(e.handle,e.context.COMPILE_STATUS)){const i=e.context.getShaderInfoLog(e.handle);return xj(`Error compiling shader '${e.source}': ${i}`),e.context.deleteShader(e.handle),e.handle=0,!1}return!0},t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(e.context.deleteShader(e.handle),e.handle=0,e.dirty=!0)}}const Cj={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function hb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Cj,r),W.obj(t,e),W.setGet(t,e,["shaderType","source","error","handle","context"]),wj(t,e)}const Sj=W.newInstance(hb,"vtkShader");var _v={newInstance:Sj,extend:hb};const{vtkErrorMacro:Uo}=W;function Tj(t,e,r,n){const i=typeof r=="string"?r:r.join(` -`),o=n===!1?e:new RegExp(e,"g"),a=t.replace(o,i);return{replace:a!==i,result:a}}function _j(t,e){e.classHierarchy.push("vtkShaderProgram"),t.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!t.attachShader(e.vertexShader)||!t.attachShader(e.fragmentShader)?(Uo(e.error),0):t.link()?(t.setCompiled(!0),1):(Uo(`Links failed: ${e.error}`),0):(Uo(e.fragmentShader.getSource().split(` -`).map((r,n)=>`${n}: ${r}`).join(` -`)),Uo(e.fragmentShader.getError()),0):(Uo(e.vertexShader.getSource().split(` -`).map((r,n)=>`${n}: ${r}`).join(` -`)),Uo(e.vertexShader.getError()),0),t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(t.release(),e.vertexShaderHandle!==0&&(e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=0),e.fragmentShaderHandle!==0&&(e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=0),e.context.deleteProgram(e.handle),e.handle=0,t.setCompiled(!1))},t.bind=()=>!e.linked&&!t.link()?!1:(e.context.useProgram(e.handle),t.setBound(!0),!0),t.isBound=()=>!!e.bound,t.release=()=>{e.context.useProgram(null),t.setBound(!1)},t.setContext=r=>{e.vertexShader.setContext(r),e.fragmentShader.setContext(r),e.geometryShader.setContext(r)},t.link=()=>{if(e.linked)return!0;if(e.handle===0)return e.error="Program has not been initialized, and/or does not have shaders.",!1;if(e.uniformLocs={},e.context.linkProgram(e.handle),!e.context.getProgramParameter(e.handle,e.context.LINK_STATUS)){const n=e.context.getProgramInfoLog(e.handle);return Uo(`Error linking shader ${n}`),e.handle=0,!1}return t.setLinked(!0),e.attributeLocs={},!0},t.setUniformMatrix=(r,n)=>{const i=t.findUniform(r);if(i===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;const o=new Float32Array(n);return e.context.uniformMatrix4fv(i,!1,o),!0},t.setUniformMatrix3x3=(r,n)=>{const i=t.findUniform(r);if(i===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;const o=new Float32Array(n);return e.context.uniformMatrix3fv(i,!1,o),!0},t.setUniformf=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform1f(i,n),!0)},t.setUniformfv=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform1fv(i,n),!0)},t.setUniformi=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform1i(i,n),!0)},t.setUniformiv=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform1iv(i,n),!0)},t.setUniform2f=(r,n,i)=>{const o=t.findUniform(r);if(o===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;if(i===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2f(o,n,i),!0},t.setUniform2fv=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform2fv(i,n),!0)},t.setUniform2i=(r,n,i)=>{const o=t.findUniform(r);if(o===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;if(i===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2i(o,n,i),!0},t.setUniform2iv=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform2iv(i,n),!0)},t.setUniform3f=(r,n,i,o)=>{const a=t.findUniform(r);if(a===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;if(o===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(a,n,i,o),!0},t.setUniform3fArray=(r,n)=>{const i=t.findUniform(r);if(i===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;if(!Array.isArray(n)||n.length!==3)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(i,n[0],n[1],n[2]),!0},t.setUniform3fv=(r,n)=>{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform3fv(i,n),!0)},t.setUniform3i=function(r){const n=t.findUniform(r);if(n===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;for(var i=arguments.length,o=new Array(i>1?i-1:0),a=1;a{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform3iv(i,n),!0)},t.setUniform4f=function(r){const n=t.findUniform(r);if(n===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;for(var i=arguments.length,o=new Array(i>1?i-1:0),a=1;a{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform4fv(i,n),!0)},t.setUniform4i=function(r){const n=t.findUniform(r);if(n===-1)return e.error=`Could not set uniform ${r} . No such uniform.`,!1;for(var i=arguments.length,o=new Array(i>1?i-1:0),a=1;a{const i=t.findUniform(r);return i===-1?(e.error=`Could not set uniform ${r} . No such uniform.`,!1):(e.context.uniform4iv(i,n),!0)},t.findUniform=r=>{if(!r||!e.linked)return-1;let n=e.uniformLocs[r];return n!==void 0?n:(n=e.context.getUniformLocation(e.handle,r),n===null?(e.error=`Uniform ${r} not found in current shader program.`,e.uniformLocs[r]=-1,-1):(e.uniformLocs[r]=n,n))},t.isUniformUsed=r=>{if(!r)return!1;let n=e.uniformLocs[r];return n!==void 0?n!==null:e.linked?(n=e.context.getUniformLocation(e.handle,r),e.uniformLocs[r]=n,n!==null):(Uo("attempt to find uniform when the shader program is not linked"),!1)},t.isAttributeUsed=r=>{if(!r)return!1;if(r in e.attributeLocs)return!0;if(!e.linked)return Uo("attempt to find uniform when the shader program is not linked"),!1;const n=e.context.getAttribLocation(e.handle,r);return n===-1?!1:(e.attributeLocs[r]=n,!0)},t.attachShader=r=>{if(r.getHandle()===0)return e.error="Shader object was not initialized, cannot attach it.",!1;if(r.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;if(e.handle===0){const n=e.context.createProgram();if(n===0)return e.error="Could not create shader program.",!1;e.handle=n,e.linked=!1}return r.getShaderType()==="Vertex"&&(e.vertexShaderHandle!==0&&e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=r.getHandle()),r.getShaderType()==="Fragment"&&(e.fragmentShaderHandle!==0&&e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=r.getHandle()),e.context.attachShader(e.handle,r.getHandle()),t.setLinked(!1),!0},t.detachShader=r=>{if(r.getHandle()===0)return e.error="shader object was not initialized, cannot attach it.",!1;if(r.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;switch(e.handle===0&&(e.error="This shader program has not been initialized yet."),r.getShaderType()){case"Vertex":return e.vertexShaderHandle!==r.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,r.getHandle()),e.vertexShaderHandle=0,e.linked=!1,!0);case"Fragment":return e.fragmentShaderHandle!==r.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,r.getHandle()),e.fragmentShaderHandle=0,e.linked=!1,!0);default:return!1}},t.setContext=r=>{e.context=r,e.vertexShader.setContext(r),e.fragmentShader.setContext(r),e.geometryShader.setContext(r)},t.setLastCameraMTime=r=>{e.lastCameraMTime=r}}const Ej={vertexShaderHandle:0,fragmentShaderHandle:0,geometryShaderHandle:0,vertexShader:null,fragmentShader:null,geometryShader:null,linked:!1,bound:!1,compiled:!1,error:"",handle:0,numberOfOutputs:0,attributesLocs:null,uniformLocs:null,md5Hash:0,context:null,lastCameraMTime:null};function gb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ej,r),e.attributesLocs={},e.uniformLocs={},e.vertexShader=_v.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=_v.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=_v.newInstance(),e.geometryShader.setShaderType("Geometry"),W.obj(t,e),W.get(t,e,["lastCameraMTime"]),W.setGet(t,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),_j(t,e)}const Dj=W.newInstance(gb,"vtkShaderProgram");var ce={newInstance:Dj,extend:gb,substitute:Tj};function bj(t,e){e.classHierarchy.push("vtkOpenGLVertexArrayObject"),t.exposedMethod=()=>{},t.initialize=()=>{e.instancingExtension=null,e._openGLRenderWindow.getWebgl2()||(e.instancingExtension=e.context.getExtension("ANGLE_instanced_arrays")),!e.forceEmulation&&e._openGLRenderWindow&&e._openGLRenderWindow.getWebgl2()?(e.extension=null,e.supported=!0,e.handleVAO=e.context.createVertexArray()):(e.extension=e.context.getExtension("OES_vertex_array_object"),!e.forceEmulation&&e.extension?(e.supported=!0,e.handleVAO=e.extension.createVertexArrayOES()):e.supported=!1)},t.isReady=()=>e.handleVAO!==0||e.supported===!1,t.bind=()=>{if(t.isReady()||t.initialize(),t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(e.handleVAO):e.context.bindVertexArray(e.handleVAO);else if(t.isReady()){const r=e.context;for(let n=0;n0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(a.index+c,1):r.vertexAttribDivisor(a.index+c,1))}}}},t.release=()=>{if(t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(null):e.context.bindVertexArray(null);else if(t.isReady()){const r=e.context;for(let n=0;n0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(a.index+c,0):r.vertexAttribDivisor(a.index+c,0)),r.disableVertexAttribArray(a.index+c)}}}},t.shaderProgramChanged=()=>{t.release(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.handleProgram=0},t.releaseGraphicsResources=()=>{t.shaderProgramChanged(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.supported=!0,e.handleProgram=0},t.addAttributeArray=(r,n,i,o,a,s,c,l)=>t.addAttributeArrayWithDivisor(r,n,i,o,a,s,c,l,0,!1),t.addAttributeArrayWithDivisor=(r,n,i,o,a,s,c,l,f,u)=>{if(!r||!r.isBound()||n.getHandle()===0||n.getType()!==Ua.ARRAY_BUFFER||(e.handleProgram===0&&(e.handleProgram=r.getHandle()),t.isReady()||t.initialize(),!t.isReady()||e.handleProgram!==r.getHandle()))return!1;const d=e.context,h={};if(h.name=i,h.index=d.getAttribLocation(e.handleProgram,i),h.offset=o,h.stride=a,h.type=s,h.size=c,h.normalize=l,h.isMatrix=u,h.divisor=f,h.Index===-1)return!1;if(n.bind(),d.enableVertexAttribArray(h.index),d.vertexAttribPointer(h.index,h.size,h.type,h.normalize,h.stride,h.offset),f>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(h.index,1):d.vertexAttribDivisor(h.index,1)),h.buffer=n.getHandle(),!e.supported){let g=!1;for(let p=0;p{const u=t.addAttributeArrayWithDivisor(r,n,i,o,a,s,c,l,f,!0);if(!u)return u;const d=e.context,h=d.getAttribLocation(e.handleProgram,i);for(let g=1;g0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(h+g,1):d.vertexAttribDivisor(h+g,1));return!0},t.removeAttributeArray=r=>{if(!t.isReady()||e.handleProgram===0)return!1;if(!e.supported)for(let n=0;n{e._openGLRenderWindow!==r&&(t.releaseGraphicsResources(),e._openGLRenderWindow=r,e.context=null,r&&(e.context=e._openGLRenderWindow.getContext()))}}const Ij={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function pb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ij,r),e.buffers=[],W.obj(t,e),W.get(t,e,["supported"]),W.setGet(t,e,["forceEmulation"]),bj(t,e)}const Oj=W.newInstance(pb,"vtkOpenGLVertexArrayObject");var bw={newInstance:Oj,extend:pb};const gs={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function Mj(t,e){e.classHierarchy.push("vtkOpenGLHelper"),t.setOpenGLRenderWindow=r=>{e.context=r.getContext(),e.program.setContext(e.context),e.VAO.setOpenGLRenderWindow(r),e.CABO.setOpenGLRenderWindow(r)},t.releaseGraphicsResources=r=>{e.VAO.releaseGraphicsResources(),e.CABO.releaseGraphicsResources(),e.CABO.setElementCount(0)},t.drawArrays=(r,n,i,o)=>{if(e.CABO.getElementCount()){const a=t.getOpenGLMode(i),s=t.haveWideLines(r,n),c=e.context,l=c.getParameter(c.DEPTH_WRITEMASK);e.pointPicking&&c.depthMask(!1),a===c.LINES&&s?(t.updateShaders(r,n,o),c.drawArraysInstanced(a,0,e.CABO.getElementCount(),2*Math.ceil(n.getProperty().getLineWidth()))):(c.lineWidth(n.getProperty().getLineWidth()),t.updateShaders(r,n,o),c.drawArrays(a,0,e.CABO.getElementCount()),c.lineWidth(1));const u=(a===c.POINTS?1:0)||(a===c.LINES?2:3);return e.pointPicking&&c.depthMask(l),e.CABO.getElementCount()/u}return 0},t.getOpenGLMode=r=>{if(e.pointPicking)return e.context.POINTS;const n=e.primitiveType;return r===kr.POINTS||n===gs.Points?e.context.POINTS:r===kr.WIREFRAME||n===gs.Lines||n===gs.TrisEdges||n===gs.TriStripsEdges?e.context.LINES:e.context.TRIANGLES},t.haveWideLines=(r,n)=>n.getProperty().getLineWidth()>1?!(e.CABO.getOpenGLRenderWindow()&&e.CABO.getOpenGLRenderWindow().getHardwareMaximumLineWidth()>=n.getProperty().getLineWidth()):!1,t.getNeedToRebuildShaders=(r,n,i)=>!!(i.getNeedToRebuildShaders(t,r,n)||t.getProgram()===0||t.getShaderSourceTime().getMTime(){if(t.getNeedToRebuildShaders(r,n,i)){const o={Vertex:null,Fragment:null,Geometry:null};i.buildShaders(o,r,n);const a=e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgramArray(o.Vertex,o.Fragment,o.Geometry);a!==t.getProgram()&&(t.setProgram(a),t.getVAO().releaseGraphicsResources()),t.getShaderSourceTime().modified()}else e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgram(t.getProgram());t.getVAO().bind(),i.setMapperShaderParameters(t,r,n),i.setPropertyShaderParameters(t,r,n),i.setCameraShaderParameters(t,r,n),i.setLightingShaderParameters(t,r,n),i.invokeShaderCallbacks(t,r,n)},t.setMapperShaderParameters=(r,n,i)=>{if(t.haveWideLines(r,n)){t.getProgram().setUniform2f("viewportSize",i.usize,i.vsize);const o=parseFloat(n.getProperty().getLineWidth()),a=o/2;t.getProgram().setUniformf("lineWidthStepSize",o/Math.ceil(o)),t.getProgram().setUniformf("halfLineWidth",a)}e.primitiveType===gs.Points||n.getProperty().getRepresentation()===kr.POINTS?t.getProgram().setUniformf("pointSize",n.getProperty().getPointSize()):e.pointPicking&&t.getProgram().setUniformf("pointSize",t.getPointPickingPrimitiveSize())},t.replaceShaderPositionVC=(r,n,i)=>{let o=r.Vertex;o=ce.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,o=ce.substitute(o,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," gl_PointSize = pointSize;"],!1).result,t.getOpenGLMode(i.getProperty().getRepresentation())===e.context.LINES&&t.haveWideLines(n,i)&&(o=ce.substitute(o,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,o=ce.substitute(o,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," if (halfLineWidth > 0.0)"," {"," float offset = float(gl_InstanceID / 2) * lineWidthStepSize - halfLineWidth;"," vec4 tmpPos = gl_Position;"," vec3 tmpPos2 = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * mod(float(gl_InstanceID), 2.0) * offset / viewportSize[0];"," tmpPos2.y = tmpPos2.y + 2.0 * mod(float(gl_InstanceID + 1), 2.0) * offset / viewportSize[1];"," gl_Position = vec4(tmpPos2.xyz * tmpPos.w, tmpPos.w);"," }"]).result),r.Vertex=o},t.getPointPickingPrimitiveSize=()=>e.primitiveType===gs.Points?2:e.primitiveType===gs.Lines?4:6,t.getAllocatedGPUMemoryInBytes=()=>t.getCABO().getAllocatedGPUMemoryInBytes()}const Rj={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function mb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Rj,r),W.obj(t,e),e.shaderSourceTime={},W.obj(e.shaderSourceTime),e.attributeUpdateTime={},W.obj(e.attributeUpdateTime),W.setGet(t,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=ce.newInstance(),e.VAO=bw.newInstance(),e.CABO=yj.newInstance(),Mj(t,e)}const Lj=W.newInstance(mb);var fa={newInstance:Lj,extend:mb,primTypes:gs};const{Representation:Ef,Interpolation:Df}=fb;function UT(t){return()=>W.vtkErrorMacro(`vtkProperty::${t} - NOT IMPLEMENTED`)}function Nj(t,e){e.classHierarchy.push("vtkProperty"),t.setColor=(r,n,i)=>{Array.isArray(r)?(e.color[0]!==r[0]||e.color[1]!==r[1]||e.color[2]!==r[2])&&(e.color[0]=r[0],e.color[1]=r[1],e.color[2]=r[2],t.modified()):(e.color[0]!==r||e.color[1]!==n||e.color[2]!==i)&&(e.color[0]=r,e.color[1]=n,e.color[2]=i,t.modified()),t.setDiffuseColor(e.color),t.setAmbientColor(e.color),t.setSpecularColor(e.color)},t.computeCompositeColor=UT("ComputeCompositeColor"),t.getColor=()=>{let r=0;e.ambient+e.diffuse+e.specular>0&&(r=1/(e.ambient+e.diffuse+e.specular));for(let n=0;n<3;n++)e.color[n]=r*(e.ambient*e.ambientColor[n]+e.diffuse*e.diffuseColor[n]+e.specular*e.specularColor[n]);return[].concat(e.color)},t.setSpecularPower=r=>{const n=1/Math.max(1,r);(e.roughness!==n||e.specularPower!==r)&&(e.specularPower=r,e.roughness=n,t.modified())},t.addShaderVariable=UT("AddShaderVariable"),t.setInterpolationToFlat=()=>t.setInterpolation(Df.FLAT),t.setInterpolationToGouraud=()=>t.setInterpolation(Df.GOURAUD),t.setInterpolationToPhong=()=>t.setInterpolation(Df.PHONG),t.getInterpolationAsString=()=>W.enumToString(Df,e.interpolation),t.setRepresentationToWireframe=()=>t.setRepresentation(Ef.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(Ef.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(Ef.POINTS),t.getRepresentationAsString=()=>W.enumToString(Ef,e.representation)}const Pj={color:[1,1,1],ambientColor:[1,1,1],diffuseColor:[1,1,1],specularColor:[1,1,1],edgeColor:[0,0,0],ambient:0,diffuse:1,metallic:0,roughness:.6,normalStrength:1,emission:1,baseIOR:1.45,specular:0,specularPower:1,opacity:1,interpolation:Df.GOURAUD,representation:Ef.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function vb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Pj,r),W.obj(t,e),W.setGet(t,e,["lighting","interpolation","ambient","diffuse","metallic","roughness","normalStrength","emission","baseIOR","specular","specularPower","opacity","edgeVisibility","lineWidth","pointSize","backfaceCulling","frontfaceCulling","representation","diffuseTexture","metallicTexture","roughnessTexture","normalTexture","ambientOcclusionTexture","emissionTexture"]),W.setGetArray(t,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),Nj(t,e)}const Aj=W.newInstance(vb,"vtkProperty");var x0={newInstance:Aj,extend:vb,...fb};const{Representation:kj}=x0,{vtkErrorMacro:BT}=W;function Vj(t){const e=ce.substitute(t.Fragment,"//VTK::RenderPassFragmentShader::Impl",` - float weight = gl_FragData[0].a * pow(max(1.1 - gl_FragCoord.z, 0.0), 2.0); - gl_FragData[0] = vec4(gl_FragData[0].rgb*weight, gl_FragData[0].a); - gl_FragData[1].r = weight; - `,!1);t.Fragment=e.result}const Fj=`//VTK::System::Dec - -in vec2 tcoord; - -uniform sampler2D translucentRTexture; -uniform sampler2D translucentRGBATexture; - -// the output of this shader -//VTK::Output::Dec - -void main() -{ - vec4 t1Color = texture(translucentRGBATexture, tcoord); - float t2Color = texture(translucentRTexture, tcoord).r; - gl_FragData[0] = vec4(t1Color.rgb/max(t2Color,0.01), 1.0 - t1Color.a); -} -`;function Uj(t,e){e.classHierarchy.push("vtkOpenGLOrderIndependentTranslucentPass"),t.createVertexBuffer=()=>{const r=new Float32Array([-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1]),n=new Float32Array([0,0,1,0,0,1,1,1]),i=new Uint16Array([4,0,1,3,2]),o=tt.newInstance({numberOfComponents:3,values:r});o.setName("points");const a=tt.newInstance({numberOfComponents:2,values:n});a.setName("tcoords");const s=tt.newInstance({numberOfComponents:1,values:i});e.tris.getCABO().createVBO(s,"polys",kj.SURFACE,{points:o,tcoords:a,cellOffset:0}),e.VBOBuildTime.modified()},t.createFramebuffer=r=>{const n=r.getSize(),i=r.getContext();e.framebuffer=Xm.newInstance(),e.framebuffer.setOpenGLRenderWindow(r),e.framebuffer.create(...n),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind(),e.translucentRGBATexture=yn.newInstance(),e.translucentRGBATexture.setInternalFormat(i.RGBA16F),e.translucentRGBATexture.setFormat(i.RGBA),e.translucentRGBATexture.setOpenGLDataType(i.HALF_FLOAT),e.translucentRGBATexture.setOpenGLRenderWindow(r),e.translucentRGBATexture.create2DFromRaw(n[0],n[1],4,"Float32Array",null),e.translucentRTexture=yn.newInstance(),e.translucentRTexture.setInternalFormat(i.R16F),e.translucentRTexture.setFormat(i.RED),e.translucentRTexture.setOpenGLDataType(i.HALF_FLOAT),e.translucentRTexture.setOpenGLRenderWindow(r),e.translucentRTexture.create2DFromRaw(n[0],n[1],1,"Float32Array",null),e.translucentZTexture=yn.newInstance(),e.translucentZTexture.setOpenGLRenderWindow(r),e.translucentZTexture.createDepthFromRaw(n[0],n[1],"Float32Array",null),e.framebuffer.setColorBuffer(e.translucentRGBATexture,0),e.framebuffer.setColorBuffer(e.translucentRTexture,1),e.framebuffer.setDepthBuffer(e.translucentZTexture)},t.createCopyShader=r=>{e.copyShader=r.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","attribute vec2 tcoordTC;","varying vec2 tcoord;","void main() { tcoord = tcoordTC; gl_Position = vertexDC; }"].join(` -`),Fj,"")},t.createVBO=r=>{const n=r.getContext();e.tris.setOpenGLRenderWindow(r),t.createVertexBuffer();const i=e.copyShader;e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(i,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),n.FLOAT,3,n.FALSE)||BT("Error setting vertexDC in copy shader VAO."),e.copyVAO.addAttributeArray(i,e.tris.getCABO(),"tcoordTC",e.tris.getCABO().getTCoordOffset(),e.tris.getCABO().getStride(),n.FLOAT,2,n.FALSE)||BT("Error setting vertexDC in copy shader VAO.")},t.traverse=(r,n,i)=>{if(e.deleted)return;const o=r.getSize(),a=r.getContext();if(e._supported=!1,n.getSelector()||!a||!r.getWebgl2()||!a.getExtension("EXT_color_buffer_half_float")&&!a.getExtension("EXT_color_buffer_float")){t.setCurrentOperation("translucentPass"),n.traverse(t);return}if(e._supported=!0,e.framebuffer===null)t.createFramebuffer(r);else{const c=e.framebuffer.getSize();c===null||c[0]!==o[0]||c[1]!==o[1]?(e.framebuffer.releaseGraphicsResources(),e.translucentRGBATexture.releaseGraphicsResources(r),e.translucentRTexture.releaseGraphicsResources(r),e.translucentZTexture.releaseGraphicsResources(r),t.createFramebuffer(r)):(e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind())}a.drawBuffers([a.COLOR_ATTACHMENT0]),a.clearBufferfv(a.COLOR,0,[0,0,0,0]),a.clearBufferfv(a.DEPTH,0,[1]),a.colorMask(!1,!1,!1,!1),i.getOpaqueActorCount()>0&&(i.setCurrentOperation("opaqueZBufferPass"),n.traverse(i)),a.colorMask(!0,!0,!0,!0),a.drawBuffers([a.COLOR_ATTACHMENT0,a.COLOR_ATTACHMENT1]),a.viewport(0,0,o[0],o[1]),a.scissor(0,0,o[0],o[1]),a.clearBufferfv(a.COLOR,0,[0,0,0,1]),a.clearBufferfv(a.COLOR,1,[0,0,0,0]),a.enable(a.DEPTH_TEST),a.enable(a.BLEND),a.blendFuncSeparate(a.ONE,a.ONE,a.ZERO,a.ONE_MINUS_SRC_ALPHA),t.setCurrentOperation("translucentPass"),n.traverse(t),a.drawBuffers([a.NONE]),e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null?t.createCopyShader(r):r.getShaderCache().readyShaderProgram(e.copyShader),e.copyVAO||(e.copyVAO=bw.newInstance(),e.copyVAO.setOpenGLRenderWindow(r)),e.copyVAO.bind(),e.VBOBuildTime.getMTime()e._supported?Vj:null,t.releaseGraphicsResources=r=>{e.framebuffer&&(e.framebuffer.releaseGraphicsResources(r),e.framebuffer=null),e.translucentRGBATexture&&(e.translucentRGBATexture.releaseGraphicsResources(r),e.translucentRGBATexture=null),e.translucentRTexture&&(e.translucentRTexture.releaseGraphicsResources(r),e.translucentRTexture=null),e.translucentZTexture&&(e.translucentZTexture.releaseGraphicsResources(r),e.translucentZTexture=null),e.copyVAO&&(e.copyVAO.releaseGraphicsResources(r),e.copyVAO=null),e.copyShader&&(e.copyShader.releaseGraphicsResources(r),e.copyShader=null),e.tris&&(e.tris.releaseGraphicsResources(r),e.tris=null),t.modified()}}const Bj={framebuffer:null,copyShader:null,tris:null};function yb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bj,r),dw.extend(t,e,r),e.VBOBuildTime={},W.obj(e.VBOBuildTime,{mtime:0}),e.tris=fa.newInstance(),W.get(t,e,["framebuffer"]),Uj(t,e)}const Gj=W.newInstance(yb,"vtkOpenGLOrderIndependentTranslucentPass");var Wj={newInstance:Gj,extend:yb};function zj(t,e){e.classHierarchy.push("vtkForwardPass"),t.traverse=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(e.deleted)return;e._currentParent=n,t.setCurrentOperation("buildPass"),r.traverse(t);const i=r.getRenderable().getNumberOfLayers(),o=r.getRenderable().getRenderersByReference();for(let a=0;a0||e.translucentActorCount>0)&&e.volumeCount>0||e.depthRequested){const f=r.getFramebufferSize();e.framebuffer===null&&(e.framebuffer=Xm.newInstance()),e.framebuffer.setOpenGLRenderWindow(r),e.framebuffer.saveCurrentBindingsAndBuffers();const u=e.framebuffer.getSize();(u===null||u[0]!==f[0]||u[1]!==f[1])&&(e.framebuffer.create(f[0],f[1]),e.framebuffer.populateFramebuffer()),e.framebuffer.bind(),t.setCurrentOperation("zBufferPass"),l.traverse(t),e.framebuffer.restorePreviousBindingsAndBuffers(),e.depthRequested=!1}t.setCurrentOperation("cameraPass"),l.traverse(t),e.opaqueActorCount>0&&(t.setCurrentOperation("opaquePass"),l.traverse(t)),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=Wj.newInstance()),e.translucentPass.traverse(r,l,t)),e.volumeCount>0&&(t.setCurrentOperation("volumePass"),l.traverse(t)),e.overlayActorCount>0&&(t.setCurrentOperation("overlayPass"),l.traverse(t))}}},t.getZBufferTexture=()=>e.framebuffer?e.framebuffer.getColorTexture():null,t.requestDepth=()=>{e.depthRequested=!0},t.incrementOpaqueActorCount=()=>e.opaqueActorCount++,t.incrementTranslucentActorCount=()=>e.translucentActorCount++,t.incrementVolumeCount=()=>e.volumeCount++,t.incrementOverlayActorCount=()=>e.overlayActorCount++}const $j={opaqueActorCount:0,translucentActorCount:0,volumeCount:0,overlayActorCount:0,framebuffer:null,depthRequested:!1};function xb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$j,r),dw.extend(t,e,r),W.get(t,e,["framebuffer","opaqueActorCount","translucentActorCount","volumeCount"]),zj(t,e)}const jj=W.newInstance(xb,"vtkForwardPass");var Hj={newInstance:jj,extend:xb};const ai={MIN_KNOWN_PASS:0,ACTOR_PASS:0,COMPOSITE_INDEX_PASS:1,ID_LOW24:2,ID_HIGH24:3,MAX_KNOWN_PASS:3};var wb={PassTypes:ai};const{vtkErrorMacro:GT,vtkWarningMacro:Kj}=W;function qj(t,e){e.classHierarchy.push("vtkFieldData");const r=t.getState;e.arrays&&(e.arrays=e.arrays.map(n=>({data:Eo(n.data)}))),t.initialize=()=>{t.initializeFields(),t.copyAllOn(),t.clearFieldFlags()},t.initializeFields=()=>{e.arrays=[],e.copyFieldFlags={},t.modified()},t.copyStructure=n=>{t.initializeFields(),e.copyFieldFlags=n.getCopyFieldFlags().map(i=>i),e.arrays=n.arrays().map(i=>({array:i}))},t.getNumberOfArrays=()=>e.arrays.length,t.getNumberOfActiveArrays=()=>e.arrays.length,t.addArray=n=>{const i=n.getName(),{array:o,index:a}=t.getArrayWithIndex(i);return o!=null?(e.arrays[a]={data:n},a):(e.arrays=[].concat(e.arrays,{data:n}),e.arrays.length-1)},t.removeAllArrays=()=>{e.arrays=[]},t.removeArray=n=>{const i=e.arrays.findIndex(o=>o.data.getName()===n);return t.removeArrayByIndex(i)},t.removeArrayByIndex=n=>n!==-1&&ne.arrays.map(n=>n.data),t.getArray=n=>typeof n=="number"?t.getArrayByIndex(n):t.getArrayByName(n),t.getArrayByName=n=>e.arrays.reduce((i,o,a)=>o.data.getName()===n?o.data:i,null),t.getArrayWithIndex=n=>{const i=e.arrays.findIndex(o=>o.data.getName()===n);return{array:i!==-1?e.arrays[i].data:null,index:i}},t.getArrayByIndex=n=>n>=0&&nt.getArrayWithIndex(n).index>=0,t.getArrayName=n=>{const i=e.arrays[n];return i?i.data.getName():""},t.getCopyFieldFlags=()=>e.copyFieldFlags,t.getFlag=n=>e.copyFieldFlags[n],t.passData=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;n.getArrays().forEach(a=>{const s=t.getFlag(a.getName());if(s!==!1&&!(e.doCopyAllOff&&s!==!0)&&a){let c=t.getArrayByName(a.getName());if(c)if(a.getNumberOfComponents()===c.getNumberOfComponents())if(i>-1&&i-1?o:i;c.insertTuple(l,a.getTuple(i))}else c.insertTuples(0,a.getTuples());else GT("Unhandled case in passData");else if(i<0||i>a.getNumberOfTuples())t.addArray(a),n.getAttributes(a).forEach(l=>{t.setAttribute(a,l)});else{const l=a.getNumberOfComponents();let f=a.getNumberOfValues();const u=o>-1?o:i;f<=u*l&&(f=(u+1)*l),c=tt.newInstance({name:a.getName(),dataType:a.getDataType(),numberOfComponents:l,values:W.newTypedArray(a.getDataType(),f),size:0}),c.insertTuple(u,a.getTuple(i)),t.addArray(c),n.getAttributes(a).forEach(d=>{t.setAttribute(c,d)})}}})},t.interpolateData=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5;n.getArrays().forEach(c=>{const l=t.getFlag(c.getName());if(l!==!1&&!(e.doCopyAllOff&&l!==!0)&&c){let f=t.getArrayByName(c.getName());if(f)if(c.getNumberOfComponents()===f.getNumberOfComponents())if(i>-1&&i-1?a:i;f.interpolateTuple(u,c,i,c,o,s),Kj("Unexpected case in interpolateData")}else f.insertTuples(c.getTuples());else GT("Unhandled case in interpolateData");else if(i<0||o<0||i>c.getNumberOfTuples())t.addArray(c),n.getAttributes(c).forEach(u=>{t.setAttribute(c,u)});else{const u=c.getNumberOfComponents();let d=c.getNumberOfValues();const h=a>-1?a:i;d<=h*u&&(d=(h+1)*u),f=tt.newInstance({name:c.getName(),dataType:c.getDataType(),numberOfComponents:u,values:W.newTypedArray(c.getDataType(),d),size:0}),f.interpolateTuple(h,c,i,c,o,s),t.addArray(f),n.getAttributes(c).forEach(g=>{t.setAttribute(f,g)})}}})},t.copyFieldOn=n=>{e.copyFieldFlags[n]=!0},t.copyFieldOff=n=>{e.copyFieldFlags[n]=!1},t.copyAllOn=()=>{(!e.doCopyAllOn||e.doCopyAllOff)&&(e.doCopyAllOn=!0,e.doCopyAllOff=!1,t.modified())},t.copyAllOff=()=>{(e.doCopyAllOn||!e.doCopyAllOff)&&(e.doCopyAllOn=!1,e.doCopyAllOff=!0,t.modified())},t.clearFieldFlags=()=>{e.copyFieldFlags={}},t.deepCopy=n=>{e.arrays=n.getArrays().map(i=>{const o=i.newClone();return o.deepCopy(i),{data:o}})},t.copyFlags=n=>n.getCopyFieldFlags().map(i=>i),t.reset=()=>e.arrays.forEach(n=>n.data.reset()),t.getMTime=()=>e.arrays.reduce((n,i)=>i.data.getMTime()>n?i.data.getMTime():n,e.mtime),t.getNumberOfComponents=()=>e.arrays.reduce((n,i)=>n+i.data.getNumberOfComponents(),0),t.getNumberOfTuples=()=>e.arrays.length>0?e.arrays[0].getNumberOfTuples():0,t.getState=()=>{const n=r();return n&&(n.arrays=e.arrays.map(i=>({data:i.data.getState()}))),n}}const Xj={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function Cb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xj,r),W.obj(t,e),qj(t,e)}const Yj=W.newInstance(Cb,"vtkFieldData");var Jj={newInstance:Yj,extend:Cb};const Zj={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},Qj={MAX:0,EXACT:1,NOLIMIT:2},eH={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},tH={DUPLICATEPOINT:1,HIDDENPOINT:2},nH={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},rH="vtkGhostType",M1={DEFAULT:0,SINGLE:1,DOUBLE:2};var Sb={AttributeCopyOperations:nH,AttributeLimitTypes:Qj,AttributeTypes:Zj,CellGhostTypes:eH,DesiredOutputPrecision:M1,PointGhostTypes:tH,ghostArrayName:rH};const{AttributeTypes:ss,AttributeCopyOperations:fc}=Sb,{vtkWarningMacro:cg}=W;function iH(t,e){const r=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function n(a){let s=r.find(c=>ss[c.toUpperCase()]===a||typeof a!="number"&&c.toLowerCase()===a.toLowerCase());return typeof s>"u"&&(s=null),s}e.classHierarchy.push("vtkDataSetAttributes");const i={...t};t.checkNumberOfComponents=a=>!0,t.setAttribute=(a,s)=>{const c=n(s);if(a&&c.toUpperCase()==="PEDIGREEIDS"&&!a.isA("vtkDataArray"))return cg(`Cannot set attribute ${c}. The attribute must be a vtkDataArray.`),-1;if(a&&!t.checkNumberOfComponents(a,c))return cg(`Cannot set attribute ${c}. Incorrect number of components.`),-1;let l=e[`active${c}`];if(l>=0&&lr.filter(s=>t[`get${s}`]()===a),t.setActiveAttributeByName=(a,s)=>t.setActiveAttributeByIndex(t.getArrayWithIndex(a).index,s),t.setActiveAttributeByIndex=(a,s)=>{const c=n(s);if(a>=0&&a{const s=n(a);return t[`get${s}`]()},t.removeAllArrays=()=>{r.forEach(a=>{e[`active${a}`]=-1}),i.removeAllArrays()},t.removeArrayByIndex=a=>(a!==-1&&r.forEach(s=>{a===e[`active${s}`]?e[`active${s}`]=-1:a{const s=`active${a}`;t[`get${a}`]=()=>t.getArrayByIndex(e[s]),t[`set${a}`]=c=>t.setAttribute(c,a),t[`setActive${a}`]=c=>t.setActiveAttributeByIndex(t.getArrayWithIndex(c).index,a),t[`copy${a}Off`]=()=>{const c=a.toUpperCase();e.copyAttributeFlags[fc.PASSDATA][ss[c]]=!1},t[`copy${a}On`]=()=>{const c=a.toUpperCase();e.copyAttributeFlags[fc.PASSDATA][ss[c]]=!0}}),t.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(fc).filter(a=>a!=="ALLCOPY").forEach(a=>{e.copyAttributeFlags[fc[a]]=Object.keys(ss).filter(s=>s!=="NUM_ATTRIBUTES").reduce((s,c)=>(s[ss[c]]=!0,s),[])}),e.copyAttributeFlags[fc.COPYTUPLE][ss.GLOBALIDS]=!1,e.copyAttributeFlags[fc.INTERPOLATE][ss.GLOBALIDS]=!1,e.copyAttributeFlags[fc.COPYTUPLE][ss.PEDIGREEIDS]=!1},t.initialize=W.chain(t.initialize,t.initializeAttributeCopyFlags),e.dataArrays&&Object.keys(e.dataArrays).length&&Object.keys(e.dataArrays).forEach(a=>{!e.dataArrays[a].ref&&e.dataArrays[a].type==="vtkDataArray"&&t.addArray(tt.newInstance(e.dataArrays[a]))});const o=t.shallowCopy;t.shallowCopy=(a,s)=>{o(a,s),e.arrays=a.getArrays().map(c=>{const l=c.newClone();return l.shallowCopy(c,s),{data:l}})},t.initializeAttributeCopyFlags()}const oH={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function Tb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oH,r),Jj.extend(t,e,r),W.setGet(t,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),iH(t,e)}const aH=W.newInstance(Tb,"vtkDataSetAttributes");var WT={newInstance:aH,extend:Tb,...Sb};const sH={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},cH={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var lH={FieldDataTypes:sH,FieldAssociations:cH};const $5=["pointData","cellData","fieldData"];function uH(t,e){e.classHierarchy.push("vtkDataSet"),$5.forEach(n=>{e[n]?e[n]=Eo(e[n]):e[n]=WT.newInstance()});const r=t.shallowCopy;t.shallowCopy=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(n,i),$5.forEach(o=>{e[o]=WT.newInstance(),e[o].shallowCopy(n.getReferenceByName(o))})}}const fH={};function _b(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fH,r),W.obj(t,e),W.setGet(t,e,$5),uH(t,e)}const dH=W.newInstance(_b,"vtkDataSet");var w0={newInstance:dH,extend:_b,...lH};const{FieldAssociations:hH}=w0;function gH(t,e){e.classHierarchy.push("vtkHardwareSelector"),t.getSourceDataAsync=async(r,n,i,o,a)=>{},t.selectAsync=async(r,n,i,o,a)=>{const s=await t.getSourceDataAsync(r,n,i,o,a);return s?s.generateSelection(n,i,o,a):[]}}const pH={fieldAssociation:hH.FIELD_ASSOCIATION_CELLS,captureZValues:!1};function Eb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pH,r),W.obj(t,e),W.setGet(t,e,["fieldAssociation","captureZValues"]),gH(t,e)}const mH=W.newInstance(Eb,"vtkHardwareSelector");var vH={newInstance:mH,extend:Eb};const yH={GLOBALIDS:0,PEDIGREEIDS:1,VALUES:2,INDICES:3,FRUSTUM:4,LOCATIONS:5,THRESHOLDS:6,BLOCKS:7,QUERY:8},xH={CELL:0,POINT:1,FIELD:2,VERTEX:3,EDGE:4,ROW:5};var wH={SelectionContent:yH,SelectionField:xH};function CH(t,e){e.classHierarchy.push("vtkSelectionNode"),t.getBounds=()=>e.points.getBounds()}const SH={contentType:-1,fieldType:-1,properties:null,selectionList:[]};function Db(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,SH,r),W.obj(t,e),e.properties={},W.setGet(t,e,["contentType","fieldType","properties","selectionList"]),CH(t,e)}const TH=W.newInstance(Db,"vtkSelectionNode");var bb={newInstance:TH,extend:Db,...wH};const{PassTypes:Zn}=wb,{SelectionContent:_H,SelectionField:zT}=bb,{FieldAssociations:$f}=w0,{vtkErrorMacro:Ib}=W,Ts=1;function Ob(t){return`${t.propID} ${t.compositeID}`}function Mb(t,e,r,n){if(!r)return 0;const i=(e*(n[2]-n[0]+1)+t)*4;return r[i+3]}function Ia(t,e,r,n){if(!r)return 0;const i=(e*(n[2]-n[0]+1)+t)*4,o=r[i],a=r[i+1];return(r[i+2]*256+a)*256+o}function Rb(t,e){let r=e;return r<<=24,r|=t,r}function EH(t,e,r,n){{if(n[0]=e[0],n[1]=e[1],e[0]t.area[2]||e[1]t.area[3])return null;const i=[e[0]-t.area[0],e[1]-t.area[1]],o=Ia(i[0],i[1],t.pixBuffer[Zn.ACTOR_PASS],t.area);if(o<=0||o-Ts>=t.props.length)return null;const a={};a.valid=!0,a.propID=o-Ts,a.prop=t.props[a.propID];let s=Ia(i[0],i[1],t.pixBuffer[Zn.COMPOSITE_INDEX_PASS],t.area);if((s<0||s>16777215)&&(s=0),a.compositeID=s-Ts,t.captureZValues){const f=(i[1]*(t.area[2]-t.area[0]+1)+i[0])*4;a.zValue=(256*t.zBuffer[f]+t.zBuffer[f+1])/65535,a.displayPosition=e}if(t.pixBuffer[Zn.ID_LOW24]&&Mb(i[0],i[1],t.pixBuffer[Zn.ID_LOW24],t.area)===0)return a;const c=Ia(i[0],i[1],t.pixBuffer[Zn.ID_LOW24],t.area),l=Ia(i[0],i[1],t.pixBuffer[Zn.ID_HIGH24],t.area);return a.attributeID=Rb(c,l),a}}function Lb(t,e,r,n,i){const o=[];let a=0;return e.forEach((s,c)=>{const l=bb.newInstance();switch(l.setContentType(_H.INDICES),t){case $f.FIELD_ASSOCIATION_CELLS:l.setFieldType(zT.CELL);break;case $f.FIELD_ASSOCIATION_POINTS:l.setFieldType(zT.POINT);break;default:Ib("Unknown field association")}l.getProperties().propID=s.info.propID,l.getProperties().prop=s.info.prop,l.getProperties().compositeID=s.info.compositeID,l.getProperties().attributeID=s.info.attributeID,l.getProperties().pixelCount=s.pixelCount,r&&(l.getProperties().displayPosition=[s.info.displayPosition[0],s.info.displayPosition[1],s.info.zValue],l.getProperties().worldPosition=i.displayToWorld(s.info.displayPosition[0],s.info.displayPosition[1],s.info.zValue,n)),l.setSelectionList(s.attributeIDs),o[a]=l,a++}),o}function DH(t,e,r,n,i){const o=Math.floor(e),a=Math.floor(r),s=Math.floor(n),c=Math.floor(i),l=new Map,f=[0,0];for(let u=a;u<=c;u++)for(let d=o;d<=s;d++){const g=EH(t,[d,u],0,f);if(g&&g.valid){const p=Ob(g);if(!l.has(p))l.set(p,{info:g,pixelCount:1,attributeIDs:[g.attributeID]});else{const v=l.get(p);v.pixelCount++,t.captureZValues&&g.zValue{e.rawPixBuffer=[],e.pixBuffer=[],e.zBuffer=null},t.beginSelection=()=>{e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e.maxAttributeId=0;const n=e._openGLRenderWindow.getSize();if(!e.framebuffer)e.framebuffer=Xm.newInstance(),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.create(n[0],n[1]),e.framebuffer.populateFramebuffer();else{e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers();const i=e.framebuffer.getSize();!i||i[0]!==n[0]||i[1]!==n[1]?(e.framebuffer.create(n[0],n[1]),e.framebuffer.populateFramebuffer()):e.framebuffer.bind()}if(e._openGLRenderer.clear(),e._openGLRenderer.setSelector(t),e.hitProps={},e.propPixels={},e.props=[],t.releasePixBuffers(),e.fieldAssociation===$f.FIELD_ASSOCIATION_POINTS){const i=e._openGLRenderWindow.getContext(),o=i.isEnabled(i.BLEND);i.disable(i.BLEND),e._openGLRenderWindow.traverseAllPasses(),o&&i.enable(i.BLEND)}},t.endSelection=()=>{e.hitProps={},e._openGLRenderer.setSelector(null),e.framebuffer.restorePreviousBindingsAndBuffers()},t.preCapturePass=()=>{const n=e._openGLRenderWindow.getContext();e.originalBlending=n.isEnabled(n.BLEND),n.disable(n.BLEND)},t.postCapturePass=()=>{const n=e._openGLRenderWindow.getContext();e.originalBlending&&n.enable(n.BLEND)},t.select=()=>{let n=null;return t.captureBuffers()&&(n=t.generateSelection(e.area[0],e.area[1],e.area[2],e.area[3]),t.releasePixBuffers()),n},t.getSourceDataAsync=async(n,i,o,a,s)=>{if(e._renderer=n,i===void 0){const l=e._openGLRenderWindow.getSize();t.setArea(0,0,l[0]-1,l[1]-1)}else t.setArea(i,o,a,s);if(!t.captureBuffers())return!1;const c={area:[...e.area],pixBuffer:[...e.pixBuffer],captureZValues:e.captureZValues,zBuffer:e.zBuffer,props:[...e.props],fieldAssociation:e.fieldAssociation,renderer:n,openGLRenderWindow:e._openGLRenderWindow};return c.generateSelection=function(){for(var l=arguments.length,f=new Array(l),u=0;u{if(!e._renderer||!e._openGLRenderWindow)return Ib("Renderer and view must be set before calling Select."),!1;e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e._openGLRenderWindow.getRenderable().preRender(),t.invokeEvent({type:"StartEvent"}),e.originalBackground=e._renderer.getBackgroundByReference(),e._renderer.setBackground(0,0,0,0);const n=e._openGLRenderWindow.getRenderPasses();t.beginSelection();const i=[];for(e.currentPass=Zn.MIN_KNOWN_PASS;e.currentPass<=Zn.MAX_KNOWN_PASS;e.currentPass++)t.passRequired(e.currentPass)&&(t.preCapturePass(e.currentPass),e.captureZValues&&e.currentPass===Zn.ACTOR_PASS&&typeof n[0].requestDepth=="function"&&typeof n[0].getFramebuffer=="function"&&n[0].requestDepth(),e._openGLRenderWindow.traverseAllPasses(),t.postCapturePass(e.currentPass),t.savePixelBuffer(e.currentPass),i.push(e.currentPass));return i.forEach(o=>{e.currentPass=o,t.processPixelBuffers()}),e.currentPass=Zn.MAX_KNOWN_PASS,t.endSelection(),e._renderer.setBackground(e.originalBackground),t.invokeEvent({type:"EndEvent"}),!0},t.processPixelBuffers=()=>{e.props.forEach((n,i)=>{t.isPropHit(i)&&n.processSelectorPixelBuffers(t,e.propPixels[i])})},t.passRequired=n=>{if(n===Zn.ID_HIGH24){if(e.fieldAssociation===$f.FIELD_ASSOCIATION_POINTS)return e.maximumPointId>16777215;if(e.fieldAssociation===$f.FIELD_ASSOCIATION_CELLS)return e.maximumCellId>16777215}return!0},t.savePixelBuffer=n=>{if(e.pixBuffer[n]=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),!e.rawPixBuffer[n]){const i=(e.area[2]-e.area[0]+1)*(e.area[3]-e.area[1]+1)*4;e.rawPixBuffer[n]=new Uint8Array(i),e.rawPixBuffer[n].set(e.pixBuffer[n])}if(n===Zn.ACTOR_PASS){if(e.captureZValues){const i=e._openGLRenderWindow.getRenderPasses();if(typeof i[0].requestDepth=="function"&&typeof i[0].getFramebuffer=="function"){const o=i[0].getFramebuffer();o.saveCurrentBindingsAndBuffers(),o.bind(),e.zBuffer=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),o.restorePreviousBindingsAndBuffers()}}t.buildPropHitList(e.rawPixBuffer[n])}},t.buildPropHitList=n=>{let i=0;for(let o=0;o<=e.area[3]-e.area[1];o++)for(let a=0;a<=e.area[2]-e.area[0];a++){let s=Ia(a,o,n,e.area);s>0&&(s--,s in e.hitProps||(e.hitProps[s]=!0,e.propPixels[s]=[]),e.propPixels[s].push(i*4)),++i}},t.renderProp=n=>{e.currentPass===Zn.ACTOR_PASS&&(t.setPropColorValueFromInt(e.props.length+Ts),e.props.push(n))},t.renderCompositeIndex=n=>{e.currentPass===Zn.COMPOSITE_INDEX_PASS&&t.setPropColorValueFromInt(n+Ts)},t.renderAttributeId=n=>{n<0||(e.maxAttributeId=n>e.maxAttributeId?n:e.maxAttributeId)},t.passTypeToString=n=>W.enumToString(Zn,n),t.isPropHit=n=>!!e.hitProps[n],t.setPropColorValueFromInt=n=>{e.propColorValue[0]=n%256/255,e.propColorValue[1]=Math.floor(n/256)%256/255,e.propColorValue[2]=Math.floor(n/65536)%256/255},t.getPixelInformation=(n,i,o)=>{const a=i<0?0:i;if(a===0){if(o[0]=n[0],o[1]=n[1],n[0]e.area[2]||n[1]e.area[3])return null;const f=[n[0]-e.area[0],n[1]-e.area[1]],u=Ia(f[0],f[1],e.pixBuffer[Zn.ACTOR_PASS],e.area);if(u<=0||u-Ts>=e.props.length)return null;const d={};d.valid=!0,d.propID=u-Ts,d.prop=e.props[d.propID];let h=Ia(f[0],f[1],e.pixBuffer[Zn.COMPOSITE_INDEX_PASS],e.area);if((h<0||h>16777215)&&(h=0),d.compositeID=h-Ts,e.captureZValues){const v=(f[1]*(e.area[2]-e.area[0]+1)+f[0])*4;d.zValue=(256*e.zBuffer[v]+e.zBuffer[v+1])/65535,d.displayPosition=n}if(e.pixBuffer[Zn.ID_LOW24]&&Mb(f[0],f[1],e.pixBuffer[Zn.ID_LOW24],e.area)===0)return d;const g=Ia(f[0],f[1],e.pixBuffer[Zn.ID_LOW24],e.area),p=Ia(f[0],f[1],e.pixBuffer[Zn.ID_HIGH24],e.area);return d.attributeID=Rb(g,p),d}const s=[n[0],n[1]],c=[0,0];let l=t.getPixelInformation(n,0,o);if(l&&l.valid)return l;for(let f=1;ff?s[1]-f:0;u<=s[1]+f;++u)if(c[1]=u,s[0]>=f&&(c[0]=s[0]-f,l=t.getPixelInformation(c,0,o),l&&l.valid)||(c[0]=s[0]+f,l=t.getPixelInformation(c,0,o),l&&l.valid))return l;for(let u=s[0]>=f?s[0]-(f-1):0;u<=s[0]+(f-1);++u)if(c[0]=u,s[1]>=f&&(c[1]=s[1]-f,l=t.getPixelInformation(c,0,o),l&&l.valid)||(c[1]=s[1]+f,l=t.getPixelInformation(c,0,o),l&&l.valid))return l}return o[0]=n[0],o[1]=n[1],null},t.generateSelection=(n,i,o,a)=>{const s=Math.floor(n),c=Math.floor(i),l=Math.floor(o),f=Math.floor(a),u=new Map,d=[0,0];for(let h=c;h<=f;h++)for(let g=s;g<=l;g++){const p=[g,h],v=t.getPixelInformation(p,0,d);if(v&&v.valid){const x=Ob(v);if(!u.has(x))u.set(x,{info:v,pixelCount:1,attributeIDs:[v.attributeID]});else{const m=u.get(x);m.pixelCount++,e.captureZValues&&v.zValuee.rawPixBuffer[n],t.getPixelBuffer=n=>e.pixBuffer[n],t.attach=(n,i)=>{e._openGLRenderWindow=n,e._renderer=i};const r=t.setArea;t.setArea=function(){return r(...arguments)?(e.area[0]=Math.floor(e.area[0]),e.area[1]=Math.floor(e.area[1]),e.area[2]=Math.floor(e.area[2]),e.area[3]=Math.floor(e.area[3]),!0):!1}}const IH={area:void 0,currentPass:-1,propColorValue:null,props:null,maximumPointId:0,maximumCellId:0,idOffset:1};function Nb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IH,r),vH.extend(t,e,r),e.propColorValue=[0,0,0],e.props=[],e.area||(e.area=[0,0,0,0]),W.setGetArray(t,e,["area"],4),W.setGet(t,e,["_renderer","currentPass","_openGLRenderWindow","maximumPointId","maximumCellId"]),W.setGetArray(t,e,["propColorValue"],3),W.moveToProtected(t,e,["renderer","openGLRenderWindow"]),W.event(t,e,"event"),bH(t,e)}const OH=W.newInstance(Nb,"vtkOpenGLHardwareSelector");var Iw={newInstance:OH,extend:Nb,...wb},Pb={exports:{}};(function(t,e){(function(r){t.exports=r()})(function(r){var n=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function i(x,m){var y=x[0],w=x[1],C=x[2],S=x[3];y+=(w&C|~w&S)+m[0]-680876936|0,y=(y<<7|y>>>25)+w|0,S+=(y&w|~y&C)+m[1]-389564586|0,S=(S<<12|S>>>20)+y|0,C+=(S&y|~S&w)+m[2]+606105819|0,C=(C<<17|C>>>15)+S|0,w+=(C&S|~C&y)+m[3]-1044525330|0,w=(w<<22|w>>>10)+C|0,y+=(w&C|~w&S)+m[4]-176418897|0,y=(y<<7|y>>>25)+w|0,S+=(y&w|~y&C)+m[5]+1200080426|0,S=(S<<12|S>>>20)+y|0,C+=(S&y|~S&w)+m[6]-1473231341|0,C=(C<<17|C>>>15)+S|0,w+=(C&S|~C&y)+m[7]-45705983|0,w=(w<<22|w>>>10)+C|0,y+=(w&C|~w&S)+m[8]+1770035416|0,y=(y<<7|y>>>25)+w|0,S+=(y&w|~y&C)+m[9]-1958414417|0,S=(S<<12|S>>>20)+y|0,C+=(S&y|~S&w)+m[10]-42063|0,C=(C<<17|C>>>15)+S|0,w+=(C&S|~C&y)+m[11]-1990404162|0,w=(w<<22|w>>>10)+C|0,y+=(w&C|~w&S)+m[12]+1804603682|0,y=(y<<7|y>>>25)+w|0,S+=(y&w|~y&C)+m[13]-40341101|0,S=(S<<12|S>>>20)+y|0,C+=(S&y|~S&w)+m[14]-1502002290|0,C=(C<<17|C>>>15)+S|0,w+=(C&S|~C&y)+m[15]+1236535329|0,w=(w<<22|w>>>10)+C|0,y+=(w&S|C&~S)+m[1]-165796510|0,y=(y<<5|y>>>27)+w|0,S+=(y&C|w&~C)+m[6]-1069501632|0,S=(S<<9|S>>>23)+y|0,C+=(S&w|y&~w)+m[11]+643717713|0,C=(C<<14|C>>>18)+S|0,w+=(C&y|S&~y)+m[0]-373897302|0,w=(w<<20|w>>>12)+C|0,y+=(w&S|C&~S)+m[5]-701558691|0,y=(y<<5|y>>>27)+w|0,S+=(y&C|w&~C)+m[10]+38016083|0,S=(S<<9|S>>>23)+y|0,C+=(S&w|y&~w)+m[15]-660478335|0,C=(C<<14|C>>>18)+S|0,w+=(C&y|S&~y)+m[4]-405537848|0,w=(w<<20|w>>>12)+C|0,y+=(w&S|C&~S)+m[9]+568446438|0,y=(y<<5|y>>>27)+w|0,S+=(y&C|w&~C)+m[14]-1019803690|0,S=(S<<9|S>>>23)+y|0,C+=(S&w|y&~w)+m[3]-187363961|0,C=(C<<14|C>>>18)+S|0,w+=(C&y|S&~y)+m[8]+1163531501|0,w=(w<<20|w>>>12)+C|0,y+=(w&S|C&~S)+m[13]-1444681467|0,y=(y<<5|y>>>27)+w|0,S+=(y&C|w&~C)+m[2]-51403784|0,S=(S<<9|S>>>23)+y|0,C+=(S&w|y&~w)+m[7]+1735328473|0,C=(C<<14|C>>>18)+S|0,w+=(C&y|S&~y)+m[12]-1926607734|0,w=(w<<20|w>>>12)+C|0,y+=(w^C^S)+m[5]-378558|0,y=(y<<4|y>>>28)+w|0,S+=(y^w^C)+m[8]-2022574463|0,S=(S<<11|S>>>21)+y|0,C+=(S^y^w)+m[11]+1839030562|0,C=(C<<16|C>>>16)+S|0,w+=(C^S^y)+m[14]-35309556|0,w=(w<<23|w>>>9)+C|0,y+=(w^C^S)+m[1]-1530992060|0,y=(y<<4|y>>>28)+w|0,S+=(y^w^C)+m[4]+1272893353|0,S=(S<<11|S>>>21)+y|0,C+=(S^y^w)+m[7]-155497632|0,C=(C<<16|C>>>16)+S|0,w+=(C^S^y)+m[10]-1094730640|0,w=(w<<23|w>>>9)+C|0,y+=(w^C^S)+m[13]+681279174|0,y=(y<<4|y>>>28)+w|0,S+=(y^w^C)+m[0]-358537222|0,S=(S<<11|S>>>21)+y|0,C+=(S^y^w)+m[3]-722521979|0,C=(C<<16|C>>>16)+S|0,w+=(C^S^y)+m[6]+76029189|0,w=(w<<23|w>>>9)+C|0,y+=(w^C^S)+m[9]-640364487|0,y=(y<<4|y>>>28)+w|0,S+=(y^w^C)+m[12]-421815835|0,S=(S<<11|S>>>21)+y|0,C+=(S^y^w)+m[15]+530742520|0,C=(C<<16|C>>>16)+S|0,w+=(C^S^y)+m[2]-995338651|0,w=(w<<23|w>>>9)+C|0,y+=(C^(w|~S))+m[0]-198630844|0,y=(y<<6|y>>>26)+w|0,S+=(w^(y|~C))+m[7]+1126891415|0,S=(S<<10|S>>>22)+y|0,C+=(y^(S|~w))+m[14]-1416354905|0,C=(C<<15|C>>>17)+S|0,w+=(S^(C|~y))+m[5]-57434055|0,w=(w<<21|w>>>11)+C|0,y+=(C^(w|~S))+m[12]+1700485571|0,y=(y<<6|y>>>26)+w|0,S+=(w^(y|~C))+m[3]-1894986606|0,S=(S<<10|S>>>22)+y|0,C+=(y^(S|~w))+m[10]-1051523|0,C=(C<<15|C>>>17)+S|0,w+=(S^(C|~y))+m[1]-2054922799|0,w=(w<<21|w>>>11)+C|0,y+=(C^(w|~S))+m[8]+1873313359|0,y=(y<<6|y>>>26)+w|0,S+=(w^(y|~C))+m[15]-30611744|0,S=(S<<10|S>>>22)+y|0,C+=(y^(S|~w))+m[6]-1560198380|0,C=(C<<15|C>>>17)+S|0,w+=(S^(C|~y))+m[13]+1309151649|0,w=(w<<21|w>>>11)+C|0,y+=(C^(w|~S))+m[4]-145523070|0,y=(y<<6|y>>>26)+w|0,S+=(w^(y|~C))+m[11]-1120210379|0,S=(S<<10|S>>>22)+y|0,C+=(y^(S|~w))+m[2]+718787259|0,C=(C<<15|C>>>17)+S|0,w+=(S^(C|~y))+m[9]-343485551|0,w=(w<<21|w>>>11)+C|0,x[0]=y+x[0]|0,x[1]=w+x[1]|0,x[2]=C+x[2]|0,x[3]=S+x[3]|0}function o(x){var m=[],y;for(y=0;y<64;y+=4)m[y>>2]=x.charCodeAt(y)+(x.charCodeAt(y+1)<<8)+(x.charCodeAt(y+2)<<16)+(x.charCodeAt(y+3)<<24);return m}function a(x){var m=[],y;for(y=0;y<64;y+=4)m[y>>2]=x[y]+(x[y+1]<<8)+(x[y+2]<<16)+(x[y+3]<<24);return m}function s(x){var m=x.length,y=[1732584193,-271733879,-1732584194,271733878],w,C,S,T,_,E;for(w=64;w<=m;w+=64)i(y,o(x.substring(w-64,w)));for(x=x.substring(w-64),C=x.length,S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],w=0;w>2]|=x.charCodeAt(w)<<(w%4<<3);if(S[w>>2]|=128<<(w%4<<3),w>55)for(i(y,S),w=0;w<16;w+=1)S[w]=0;return T=m*8,T=T.toString(16).match(/(.*?)(.{0,8})$/),_=parseInt(T[2],16),E=parseInt(T[1],16)||0,S[14]=_,S[15]=E,i(y,S),y}function c(x){var m=x.length,y=[1732584193,-271733879,-1732584194,271733878],w,C,S,T,_,E;for(w=64;w<=m;w+=64)i(y,a(x.subarray(w-64,w)));for(x=w-64>2]|=x[w]<<(w%4<<3);if(S[w>>2]|=128<<(w%4<<3),w>55)for(i(y,S),w=0;w<16;w+=1)S[w]=0;return T=m*8,T=T.toString(16).match(/(.*?)(.{0,8})$/),_=parseInt(T[2],16),E=parseInt(T[1],16)||0,S[14]=_,S[15]=E,i(y,S),y}function l(x){var m="",y;for(y=0;y<4;y+=1)m+=n[x>>y*8+4&15]+n[x>>y*8&15];return m}function f(x){var m;for(m=0;mS?new ArrayBuffer(0):(T=S-C,_=new ArrayBuffer(T),E=new Uint8Array(_),D=new Uint8Array(this,C,T),E.set(D),_)}}();function u(x){return/[\u0080-\uFFFF]/.test(x)&&(x=unescape(encodeURIComponent(x))),x}function d(x,m){var y=x.length,w=new ArrayBuffer(y),C=new Uint8Array(w),S;for(S=0;S>2]|=m.charCodeAt(w)<<(w%4<<3);return this._finish(C,y),S=f(this._hash),x&&(S=p(S)),this.reset(),S},v.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},v.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},v.prototype.setState=function(x){return this._buff=x.buff,this._length=x.length,this._hash=x.hash,this},v.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},v.prototype._finish=function(x,m){var y=m,w,C,S;if(x[y>>2]|=128<<(y%4<<3),y>55)for(i(this._hash,x),y=0;y<16;y+=1)x[y]=0;w=this._length*8,w=w.toString(16).match(/(.*?)(.{0,8})$/),C=parseInt(w[2],16),S=parseInt(w[1],16)||0,x[14]=C,x[15]=S,i(this._hash,x)},v.hash=function(x,m){return v.hashBinary(u(x),m)},v.hashBinary=function(x,m){var y=s(x),w=f(y);return m?p(w):w},v.ArrayBuffer=function(){this.reset()},v.ArrayBuffer.prototype.append=function(x){var m=g(this._buff.buffer,x),y=m.length,w;for(this._length+=x.byteLength,w=64;w<=y;w+=64)i(this._hash,a(m.subarray(w-64,w)));return this._buff=w-64>2]|=m[C]<<(C%4<<3);return this._finish(w,y),S=f(this._hash),x&&(S=p(S)),this.reset(),S},v.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},v.ArrayBuffer.prototype.getState=function(){var x=v.prototype.getState.call(this);return x.buff=h(x.buff),x},v.ArrayBuffer.prototype.setState=function(x){return x.buff=d(x.buff,!0),v.prototype.setState.call(this,x)},v.ArrayBuffer.prototype.destroy=v.prototype.destroy,v.ArrayBuffer.prototype._finish=v.prototype._finish,v.ArrayBuffer.hash=function(x,m){var y=c(new Uint8Array(x)),w=f(y);return m?p(w):w},v})})(Pb);var MH=Pb.exports;const RH=oh(MH),LH=["lastShaderProgramBound","context","_openGLRenderWindow"];function NH(t,e){e.classHierarchy.push("vtkShaderCache"),t.replaceShaderValues=(r,n,i)=>{let o=n;i.length>0&&(o=ce.substitute(o,"VSOut","GSOut").result);const a=e._openGLRenderWindow.getWebgl2();let s=` -`,c=`#version 100 -`;a?c=`#version 300 es -#define attribute in -#define textureCube texture -#define texture2D texture -#define textureCubeLod textureLod -#define texture2DLod textureLod -`:(e.context.getExtension("OES_standard_derivatives"),e.context.getExtension("EXT_frag_depth")&&(s=`#extension GL_EXT_frag_depth : enable -`),e.context.getExtension("EXT_shader_texture_lod")&&(s+=`#extension GL_EXT_shader_texture_lod : enable -#define textureCubeLod textureCubeLodEXT -#define texture2DLod texture2DLodEXT`)),o=ce.substitute(o,"//VTK::System::Dec",[`${c} -`,a?"":`#extension GL_OES_standard_derivatives : enable -`,s,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;let l=ce.substitute(r,"//VTK::System::Dec",[`${c} -`,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;if(a){l=ce.substitute(l,"varying","out").result,o=ce.substitute(o,"varying","in").result;let u="",d=0;for(;o.includes(`gl_FragData[${d}]`);)o=ce.substitute(o,`gl_FragData\\[${d}\\]`,`fragOutput${d}`).result,u+=`layout(location = ${d}) out vec4 fragOutput${d}; -`,d++;o=ce.substitute(o,"//VTK::Output::Dec",u).result}const f=ce.substitute(i,"//VTK::System::Dec",c).result;return{VSSource:l,FSSource:o,GSSource:f}},t.readyShaderProgramArray=(r,n,i)=>{const o=t.replaceShaderValues(r,n,i),a=t.getShaderProgram(o.VSSource,o.FSSource,o.GSSource);return t.readyShaderProgram(a)},t.readyShaderProgram=r=>!r||!r.getCompiled()&&!r.compileShader()||!t.bindShaderProgram(r)?null:r,t.getShaderProgram=(r,n,i)=>{const o=`${r}${n}${i}`,a=RH.hash(o);if(!(a in e.shaderPrograms)){const s=ce.newInstance();return s.setContext(e.context),s.getVertexShader().setSource(r),s.getFragmentShader().setSource(n),i&&s.getGeometryShader().setSource(i),s.setMd5Hash(a),e.shaderPrograms[a]=s,s}return e.shaderPrograms[a]},t.releaseGraphicsResources=r=>{t.releaseCurrentShaderProgram(),Object.keys(e.shaderPrograms).map(n=>e.shaderPrograms[n]).forEach(n=>n.cleanup()),e.shaderPrograms={}},t.releaseCurrentShaderProgram=()=>{e.lastShaderProgramBound&&(e.lastShaderProgramBound.cleanup(),e.lastShaderProgramBound=null)},t.bindShaderProgram=r=>(e.lastShaderProgramBound===r||(e.lastShaderProgramBound&&e.lastShaderProgramBound.release(),r.bind(),e.lastShaderProgramBound=r),1)}const PH={lastShaderProgramBound:null,shaderPrograms:null,context:null};function Ab(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,PH,r),e.shaderPrograms={},W.obj(t,e),W.setGet(t,e,LH),W.moveToProtected(t,e,["openGLRenderWindow"]),NH(t,e)}const AH=W.newInstance(Ab,"vtkShaderCache");var kH={newInstance:AH,extend:Ab};const{vtkErrorMacro:VH}=W;function FH(t,e){e.classHierarchy.push("vtkOpenGLTextureUnitManager"),t.deleteTable=()=>{for(let r=0;r{if(e.context!==r){if(e.context!==0&&t.deleteTable(),e.context=r,e.context){e.numberOfTextureUnits=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS);for(let n=0;n{for(let r=0;rt.isAllocated(r)?-1:(e.textureUnits[r]=!0,r),t.isAllocated=r=>e.textureUnits[r],t.free=r=>{e.textureUnits[r]=!1},t.freeAll=()=>{for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,UH,r),W.obj(t,e),e.textureUnits=[],W.get(t,e,["numberOfTextureUnits"]),W.setGet(t,e,["context"]),FH(t,e)}const BH=W.newInstance(kb,"vtkOpenGLTextureUnitManager");var GH={newInstance:BH,extend:kb};function WH(t,e){e.classHierarchy.push("vtkRenderWindowViewNode"),t.getViewNodeFactory=()=>null,t.getAspectRatio=()=>e.size[0]/e.size[1],t.getAspectRatioForRenderer=r=>{const n=r.getViewportByReference();return e.size[0]*(n[2]-n[0])/((n[3]-n[1])*e.size[1])},t.isInViewport=(r,n,i)=>{const o=i.getViewportByReference(),a=t.getFramebufferSize();return o[0]*a[0]<=r&&o[2]*a[0]>=r&&o[1]*a[1]<=n&&o[3]*a[1]>=n},t.getViewportSize=r=>{const n=r.getViewportByReference(),i=t.getFramebufferSize();return[(n[2]-n[0])*i[0],(n[3]-n[1])*i[1]]},t.getViewportCenter=r=>{const n=t.getViewportSize(r);return[n[0]*.5,n[1]*.5]},t.displayToNormalizedDisplay=(r,n,i)=>{const o=t.getFramebufferSize();return[r/o[0],n/o[1],i]},t.normalizedDisplayToDisplay=(r,n,i)=>{const o=t.getFramebufferSize();return[r*o[0],n*o[1],i]},t.worldToView=(r,n,i,o)=>o.worldToView(r,n,i),t.viewToWorld=(r,n,i,o)=>o.viewToWorld(r,n,i),t.worldToDisplay=(r,n,i,o)=>{const a=o.worldToView(r,n,i),s=t.getViewportSize(o),c=o.viewToProjection(a[0],a[1],a[2],s[0]/s[1]),l=o.projectionToNormalizedDisplay(c[0],c[1],c[2]);return t.normalizedDisplayToDisplay(l[0],l[1],l[2])},t.displayToWorld=(r,n,i,o)=>{const a=t.displayToNormalizedDisplay(r,n,i),s=o.normalizedDisplayToProjection(a[0],a[1],a[2]),c=t.getViewportSize(o),l=o.projectionToView(s[0],s[1],s[2],c[0]/c[1]);return o.viewToWorld(l[0],l[1],l[2])},t.normalizedDisplayToViewport=(r,n,i,o)=>{let a=o.getViewportByReference();a=t.normalizedDisplayToDisplay(a[0],a[1],0);const s=t.normalizedDisplayToDisplay(r,n,i);return[s[0]-a[0]-.5,s[1]-a[1]-.5,i]},t.viewportToNormalizedViewport=(r,n,i,o)=>{const a=t.getViewportSize(o);return a&&a[0]!==0&&a[1]!==0?[r/(a[0]-1),n/(a[1]-1),i]:[r,n,i]},t.normalizedViewportToViewport=(r,n,i,o)=>{const a=t.getViewportSize(o);return[r*(a[0]-1),n*(a[1]-1),i]},t.displayToLocalDisplay=(r,n,i)=>{const o=t.getFramebufferSize();return[r,o[1]-n-1,i]},t.viewportToNormalizedDisplay=(r,n,i,o)=>{let a=o.getViewportByReference();a=t.normalizedDisplayToDisplay(a[0],a[1],0);const s=r+a[0]+.5,c=n+a[1]+.5;return t.displayToNormalizedDisplay(s,c,i)},t.getComputedDevicePixelRatio=()=>e.size[0]/t.getContainerSize()[0],t.getContainerSize=()=>{W.vtkErrorMacro("not implemented")},t.getPixelData=(r,n,i,o)=>{W.vtkErrorMacro("not implemented")},t.createSelector=()=>{W.vtkErrorMacro("not implemented")}}const zH={size:void 0,selector:void 0};function Vb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zH,r),e.size||(e.size=[300,300]),W.getArray(t,e,["size"],2),W.get(t,e,["selector"]),tn.extend(t,e,r),WH(t,e)}const $H=W.newInstance(Vb,"vtkRenderWindowViewNode");var jH={newInstance:$H,extend:Vb};const HH="__getUnderlyingContext";function KH(){const t=new Map,e={apply(i,o,a){return t.has(a[0])?t.get(a[0]):i.apply(o,a)}};function r(i){return{apply(o,a,s){return t.set(i,s[0]),o.apply(a,s)}}}const n=Object.create(null);return n.getParameter=(i,o,a,s)=>new Proxy(s.bind(i),e),n.depthMask=(i,o,a,s)=>new Proxy(s.bind(i),r(i.DEPTH_WRITEMASK)),{get(i,o,a){if(o===HH)return()=>i;let s=Reflect.get(i,o,i);s instanceof Function&&(s=s.bind(i));const c=n[o];return c?c(i,o,a,s):s}}}const{vtkDebugMacro:$T,vtkErrorMacro:jT}=W,qH={position:"absolute",top:0,left:0,width:"100%",height:"100%"},XH=["activateTexture","deactivateTexture","disableCullFace","enableCullFace","get3DContext","getActiveFramebuffer","getContext","getDefaultTextureByteSize","getDefaultTextureInternalFormat","getDefaultToWebgl2","getGLInformations","getGraphicsMemoryInfo","getGraphicsResourceForObject","getHardwareMaximumLineWidth","getPixelData","getShaderCache","getTextureUnitForTexture","getTextureUnitManager","getWebgl2","makeCurrent","releaseGraphicsResources","registerGraphicsResourceUser","unregisterGraphicsResourceUser","restoreContext","setActiveFramebuffer","setContext","setDefaultToWebgl2","setGraphicsResourceForObject"];function ni(t,e,r){const n=t.createFramebuffer(),i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,e,2,2,0,e,r,null),t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0);const o=t.checkFramebufferStatus(t.FRAMEBUFFER);return t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindTexture(t.TEXTURE_2D,null),o===t.FRAMEBUFFER_COMPLETE}let R1=0;const Zm=[];function YH(){R1++,Zm.forEach(t=>t(R1))}function JH(){R1--,Zm.forEach(t=>t(R1))}function ZH(t){Zm.push(t)}function QH(t){return Zm.pop()}function HT(t){t.preventDefault()}function eK(t,e){e.classHierarchy.push("vtkOpenGLRenderWindow");let r;function n(){return r||(r=KH()),r}t.getViewNodeFactory=()=>e.myFactory,e.canvas.addEventListener("webglcontextlost",HT,!1),e.canvas.addEventListener("webglcontextrestored",t.restoreContext,!1);const i=[0,0];function o(){e.renderable&&(e.size[0]!==i[0]||e.size[1]!==i[1])&&(i[0]=e.size[0],i[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1])),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}t.onModified(o),t.buildPass=u=>{if(u){if(!e.renderable)return;t.prepareNodes(),t.addMissingNodes(e.renderable.getRenderersByReference()),t.addMissingNodes(e.renderable.getChildRenderWindowsByReference()),t.removeUnusedNodes(),t.initialize(),e.children.forEach(d=>{var h;(h=d.setOpenGLRenderWindow)==null||h.call(d,t)})}},t.initialize=()=>{if(!e.initialized){if(e.rootOpenGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e.rootOpenGLRenderWindow)e.context2D=t.get2DContext();else{e.context=t.get3DContext(),t.resizeFromChildRenderWindows(),e.context&&YH(),e.textureUnitManager=GH.newInstance(),e.textureUnitManager.setContext(e.context),e.shaderCache.setContext(e.context);const u=e.context;u.blendFuncSeparate(u.SRC_ALPHA,u.ONE_MINUS_SRC_ALPHA,u.ONE,u.ONE_MINUS_SRC_ALPHA),u.depthFunc(u.LEQUAL),u.enable(u.BLEND)}e.initialized=!0}},t.makeCurrent=()=>{e.context.makeCurrent()},t.setContainer=u=>{e.el&&e.el!==u&&(e.canvas.parentNode!==e.el&&jT("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==u&&(e.el=u,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),t.modified())},t.getContainer=()=>e.el,t.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:u,height:d}=e.el.getBoundingClientRect();e.containerSize=[u,d]}return e.containerSize||e.size},t.getFramebufferSize=()=>{var d;return((d=e.activeFramebuffer)==null?void 0:d.getSize())||e.size},t.getPixelData=(u,d,h,g)=>{const p=new Uint8Array((h-u+1)*(g-d+1)*4);return e.context.readPixels(u,d,h-u+1,g-d+1,e.context.RGBA,e.context.UNSIGNED_BYTE,p),p},t.get3DContext=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{preserveDrawingBuffer:!1,depth:!0,alpha:!0,powerPreference:"high-performance"},d=null;const h=typeof WebGL2RenderingContext<"u";return e.webgl2=!1,e.defaultToWebgl2&&h&&(d=e.canvas.getContext("webgl2",u),d&&(e.webgl2=!0,$T("using webgl2"))),d||($T("using webgl1"),d=e.canvas.getContext("webgl",u)||e.canvas.getContext("experimental-webgl",u)),new Proxy(d,n())},t.get2DContext=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.canvas.getContext("2d",u)},t.restoreContext=()=>{const u=dw.newInstance();u.setCurrentOperation("Release"),u.traverse(t,null)},t.activateTexture=u=>{const d=e._textureResourceIds.get(u);if(d!==void 0){e.context.activeTexture(e.context.TEXTURE0+d);return}const h=t.getTextureUnitManager().allocate();if(h<0){jT("Hardware does not support the number of textures defined.");return}e._textureResourceIds.set(u,h),e.context.activeTexture(e.context.TEXTURE0+h)},t.deactivateTexture=u=>{const d=e._textureResourceIds.get(u);d!==void 0&&(t.getTextureUnitManager().free(d),e._textureResourceIds.delete(u))},t.getTextureUnitForTexture=u=>{const d=e._textureResourceIds.get(u);return d!==void 0?d:-1},t.getDefaultTextureByteSize=function(u){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e.webgl2)switch(u){case vt.CHAR:case vt.SIGNED_CHAR:case vt.UNSIGNED_CHAR:return 1;case d:case h:case vt.UNSIGNED_SHORT:case vt.SHORT:case vt.VOID:return 2;default:return 4}return 1},t.getDefaultTextureInternalFormat=function(u,d){let h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e.webgl2)switch(u){case vt.UNSIGNED_CHAR:switch(d){case 1:return e.context.R8;case 2:return e.context.RG8;case 3:return e.context.RGB8;case 4:default:return e.context.RGBA8}case(h&&!g&&vt.UNSIGNED_SHORT):switch(d){case 1:return h.R16_EXT;case 2:return h.RG16_EXT;case 3:return h.RGB16_EXT;case 4:default:return h.RGBA16_EXT}case(h&&!g&&vt.SHORT):switch(d){case 1:return h.R16_SNORM_EXT;case 2:return h.RG16_SNORM_EXT;case 3:return h.RGB16_SNORM_EXT;case 4:default:return h.RGBA16_SNORM_EXT}case vt.UNSIGNED_SHORT:case vt.SHORT:case vt.FLOAT:default:switch(d){case 1:return g?e.context.R16F:e.context.R32F;case 2:return g?e.context.RG16F:e.context.RG32F;case 3:return g?e.context.RGB16F:e.context.RGB32F;case 4:default:return g?e.context.RGBA16F:e.context.RGBA32F}}switch(d){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:default:return e.context.RGBA}},t.setBackgroundImage=u=>{e.bgImage.src=u.src},t.setUseBackgroundImage=u=>{e.useBackgroundImage=u,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};function a(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.imageFormat;const d=document.createElement("canvas"),h=d.getContext("2d");d.width=e.canvas.width,d.height=e.canvas.height,h.drawImage(e.canvas,0,0);const g=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach(m=>{m.getViewProps().forEach(w=>{if(w.getContainer){const S=w.getContainer().getElementsByTagName("canvas");for(let T=0;T0&&arguments[0]!==void 0?arguments[0]:"image/png",{resetCamera:d=!1,size:h=null,scale:g=1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e.deleted)return null;e.imageFormat=u;const p=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:h||g!==1?h||e.size.map(v=>v*g):null},new Promise((v,x)=>{const m=t.onImageReady(y=>{if(e._screenshot.size===null)e.notifyStartCaptureImage=p,m.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,t.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(w=>{let{restoreParamsFn:C,arg:S}=w;return C(S)}),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),v(y);else{const w=document.createElement("img");if(w.style=qH,w.src=y,e._screenshot.placeHolder=e.el.appendChild(w),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,e._screenshot.size=null,t.modified(),d){const C=d!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(S=>{const T=S.getActiveCamera(),_=T.get("focalPoint","position","parallelScale");return{resetCameraArgs:C?{renderer:S}:void 0,resetCameraFn:C?d:S.resetCamera,restoreParamsFn:T.set,arg:JSON.parse(JSON.stringify(_))}}),e._screenshot.cameras.forEach(S=>{let{resetCameraFn:T,resetCameraArgs:_}=S;return T(_)})}t.traverseAllPasses()}})})};let s;t.getHardwareMaximumLineWidth=()=>{if(s!=null)return s;const u=t.get3DContext(),d=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);return s=d[1],d[1]},t.getGLInformations=()=>{if(e._glInformation)return e._glInformation;const u=t.get3DContext(),d=u.getExtension("OES_texture_float"),h=u.getExtension("OES_texture_half_float"),g=u.getExtension("WEBGL_debug_renderer_info"),p=u.getExtension("WEBGL_draw_buffers"),v=u.getExtension("EXT_texture_filter_anisotropic")||u.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),x=[["Max Vertex Attributes","MAX_VERTEX_ATTRIBS",u.getParameter(u.MAX_VERTEX_ATTRIBS)],["Max Varying Vectors","MAX_VARYING_VECTORS",u.getParameter(u.MAX_VARYING_VECTORS)],["Max Vertex Uniform Vectors","MAX_VERTEX_UNIFORM_VECTORS",u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS)],["Max Fragment Uniform Vectors","MAX_FRAGMENT_UNIFORM_VECTORS",u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS)],["Max Fragment Texture Image Units","MAX_TEXTURE_IMAGE_UNITS",u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS)],["Max Vertex Texture Image Units","MAX_VERTEX_TEXTURE_IMAGE_UNITS",u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS)],["Max Combined Texture Image Units","MAX_COMBINED_TEXTURE_IMAGE_UNITS",u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS)],["Max 2D Texture Size","MAX_TEXTURE_SIZE",u.getParameter(u.MAX_TEXTURE_SIZE)],["Max Cube Texture Size","MAX_CUBE_MAP_TEXTURE_SIZE",u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE)],["Max Texture Anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT",v&&u.getParameter(v.MAX_TEXTURE_MAX_ANISOTROPY_EXT)],["Point Size Range","ALIASED_POINT_SIZE_RANGE",u.getParameter(u.ALIASED_POINT_SIZE_RANGE).join(" - ")],["Line Width Range","ALIASED_LINE_WIDTH_RANGE",u.getParameter(u.ALIASED_LINE_WIDTH_RANGE).join(" - ")],["Max Viewport Dimensions","MAX_VIEWPORT_DIMS",u.getParameter(u.MAX_VIEWPORT_DIMS).join(" - ")],["Max Renderbuffer Size","MAX_RENDERBUFFER_SIZE",u.getParameter(u.MAX_RENDERBUFFER_SIZE)],["Framebuffer Red Bits","RED_BITS",u.getParameter(u.RED_BITS)],["Framebuffer Green Bits","GREEN_BITS",u.getParameter(u.GREEN_BITS)],["Framebuffer Blue Bits","BLUE_BITS",u.getParameter(u.BLUE_BITS)],["Framebuffer Alpha Bits","ALPHA_BITS",u.getParameter(u.ALPHA_BITS)],["Framebuffer Depth Bits","DEPTH_BITS",u.getParameter(u.DEPTH_BITS)],["Framebuffer Stencil Bits","STENCIL_BITS",u.getParameter(u.STENCIL_BITS)],["Framebuffer Subpixel Bits","SUBPIXEL_BITS",u.getParameter(u.SUBPIXEL_BITS)],["MSAA Samples","SAMPLES",u.getParameter(u.SAMPLES)],["MSAA Sample Buffers","SAMPLE_BUFFERS",u.getParameter(u.SAMPLE_BUFFERS)],["Supported Formats for UByte Render Targets ","UNSIGNED_BYTE RENDER TARGET FORMATS",[d&&ni(u,u.RGBA,u.UNSIGNED_BYTE)?"RGBA":"",d&&ni(u,u.RGB,u.UNSIGNED_BYTE)?"RGB":"",d&&ni(u,u.LUMINANCE,u.UNSIGNED_BYTE)?"LUMINANCE":"",d&&ni(u,u.ALPHA,u.UNSIGNED_BYTE)?"ALPHA":"",d&&ni(u,u.LUMINANCE_ALPHA,u.UNSIGNED_BYTE)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Half Float Render Targets","HALF FLOAT RENDER TARGET FORMATS",[h&&ni(u,u.RGBA,h.HALF_FLOAT_OES)?"RGBA":"",h&&ni(u,u.RGB,h.HALF_FLOAT_OES)?"RGB":"",h&&ni(u,u.LUMINANCE,h.HALF_FLOAT_OES)?"LUMINANCE":"",h&&ni(u,u.ALPHA,h.HALF_FLOAT_OES)?"ALPHA":"",h&&ni(u,u.LUMINANCE_ALPHA,h.HALF_FLOAT_OES)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Full Float Render Targets","FLOAT RENDER TARGET FORMATS",[d&&ni(u,u.RGBA,u.FLOAT)?"RGBA":"",d&&ni(u,u.RGB,u.FLOAT)?"RGB":"",d&&ni(u,u.LUMINANCE,u.FLOAT)?"LUMINANCE":"",d&&ni(u,u.ALPHA,u.FLOAT)?"ALPHA":"",d&&ni(u,u.LUMINANCE_ALPHA,u.FLOAT)?"LUMINANCE_ALPHA":""].join(" ")],["Max Multiple Render Targets Buffers","MAX_DRAW_BUFFERS_WEBGL",p?u.getParameter(p.MAX_DRAW_BUFFERS_WEBGL):0],["High Float Precision in Vertex Shader","HIGH_FLOAT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_FLOAT).rangeMax,")"].join("")],["Medium Float Precision in Vertex Shader","MEDIUM_FLOAT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_FLOAT).rangeMax,")"].join("")],["Low Float Precision in Vertex Shader","LOW_FLOAT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_FLOAT).rangeMax,")"].join("")],["High Float Precision in Fragment Shader","HIGH_FLOAT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT).rangeMax,")"].join("")],["Medium Float Precision in Fragment Shader","MEDIUM_FLOAT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_FLOAT).rangeMax,")"].join("")],["Low Float Precision in Fragment Shader","LOW_FLOAT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_FLOAT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_FLOAT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_FLOAT).rangeMax,")"].join("")],["High Int Precision in Vertex Shader","HIGH_INT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_INT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.HIGH_INT).rangeMax,")"].join("")],["Medium Int Precision in Vertex Shader","MEDIUM_INT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_INT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.MEDIUM_INT).rangeMax,")"].join("")],["Low Int Precision in Vertex Shader","LOW_INT VERTEX_SHADER",[u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_INT).precision," (-2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.VERTEX_SHADER,u.LOW_INT).rangeMax,")"].join("")],["High Int Precision in Fragment Shader","HIGH_INT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT).rangeMax,")"].join("")],["Medium Int Precision in Fragment Shader","MEDIUM_INT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_INT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.MEDIUM_INT).rangeMax,")"].join("")],["Low Int Precision in Fragment Shader","LOW_INT FRAGMENT_SHADER",[u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_INT).precision," (-2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_INT).rangeMin," - 2",u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.LOW_INT).rangeMax,")"].join("")],["Supported Extensions","EXTENSIONS",u.getSupportedExtensions().join("
")],["WebGL Renderer","RENDERER",u.getParameter(u.RENDERER)],["WebGL Vendor","VENDOR",u.getParameter(u.VENDOR)],["WebGL Version","VERSION",u.getParameter(u.VERSION)],["Shading Language Version","SHADING_LANGUAGE_VERSION",u.getParameter(u.SHADING_LANGUAGE_VERSION)],["Unmasked Renderer","UNMASKED_RENDERER",g&&u.getParameter(g.UNMASKED_RENDERER_WEBGL)],["Unmasked Vendor","UNMASKED_VENDOR",g&&u.getParameter(g.UNMASKED_VENDOR_WEBGL)],["WebGL Version","WEBGL_VERSION",e.webgl2?2:1]],m={};for(;x.length;){const[y,w,C]=x.pop();w&&(m[w]={label:y,value:C})}return e._glInformation=m,m},t.traverseAllPasses=()=>{var d;if(e.renderPasses)for(let h=0;h{const u=e.rootOpenGLRenderWindow;if(!u||!e.context2D||e.children.some(g=>{var p;return!!((p=g.getSelector)!=null&&p.call(g))}))return;const d=u.getCanvas(),h=e.canvas;e.context2D.drawImage(d,0,d.height-h.height,h.width,h.height,0,0,h.width,h.height)},t.resizeFromChildRenderWindows=()=>{var d;const u=e.renderable.getChildRenderWindowsByReference();if(u.length>0){const h=[0,0];for(let g=0;gh[0]?p[0]:h[0],h[1]=p[1]>h[1]?p[1]:h[1])}t.setSize(...h)}},t.disableCullFace=()=>{e.cullFaceEnabled&&(e.context.disable(e.context.CULL_FACE),e.cullFaceEnabled=!1)},t.enableCullFace=()=>{e.cullFaceEnabled||(e.context.enable(e.context.CULL_FACE),e.cullFaceEnabled=!0)},t.setViewStream=u=>{if(e.viewStream===u)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=u,e.viewStream){const d=e.renderable.getRenderers()[0];d.getBackgroundByReference()[3]=0,t.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(h=>t.setBackgroundImage(h.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),t.modified()}return!0},t.createSelector=()=>{const u=Iw.newInstance();return u.setOpenGLRenderWindow(t),u};function c(){e.canvas.removeEventListener("webglcontextlost",HT),e.canvas.removeEventListener("webglcontextrestored",t.restoreContext)}t.delete=W.chain(()=>{e.context&&JH(),t.setContainer(),t.setViewStream()},c,t.delete),t.setActiveFramebuffer=u=>{e.activeFramebuffer=u};const l=t.setSize;t.setSize=(u,d)=>{const h=l(u,d);return h&&t.invokeWindowResizeEvent({width:u,height:d}),h},t.registerGraphicsResourceUser=(u,d)=>{e._graphicsResources.has(u)||t.setGraphicsResourceForObject(u,null,null);const h=e._graphicsResources.get(u);h==null||h.users.add(d)},t.unregisterGraphicsResourceUser=(u,d)=>{var g;const h=e._graphicsResources.get(u);h&&(h.users.delete(d),h.users.size||((g=h.oglObject)==null||g.releaseGraphicsResources(t),e._graphicsResources.delete(u)))},t.getGraphicsResourceForObject=u=>e._graphicsResources.get(u),t.setGraphicsResourceForObject=(u,d,h)=>{var p;if(!u)return;const g=e._graphicsResources.get(u);(p=g==null?void 0:g.oglObject)==null||p.releaseGraphicsResources(t),e._graphicsResources.set(u,{coreObject:u,oglObject:d,hash:h,users:(g==null?void 0:g.users)??new Set})},t.getGraphicsMemoryInfo=()=>{let u=0;return e._graphicsResources.forEach(d=>{let{oglObject:h}=d;u+=h.getAllocatedGPUMemoryInBytes()}),u},t.releaseGraphicsResources=()=>{e.shaderCache!==null&&e.shaderCache.releaseGraphicsResources(t),e._graphicsResources.forEach(u=>{let{oglObject:d}=u;d.releaseGraphicsResources(t)}),e._graphicsResources.clear(),e.textureUnitManager!==null&&e.textureUnitManager.freeAll(),e.renderable.getRenderersByReference().forEach(u=>{const d=t.getViewNodeFor(u);d==null||d.releaseGraphicsResources()})};const f={...t};XH.forEach(u=>{t[u]=function(){return e.rootOpenGLRenderWindow?e.rootOpenGLRenderWindow[u](...arguments):f[u](...arguments)}})}const tK={cullFaceEnabled:!1,shaderCache:null,initialized:!1,context:null,context2D:null,canvas:null,cursorVisibility:!0,cursor:"pointer",textureUnitManager:null,textureResourceIds:null,containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,webgl2:!1,defaultToWebgl2:!0,activeFramebuffer:null,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1};function Fb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tK,r),jH.extend(t,e,r),e.canvas||(e.canvas=document.createElement("canvas"),e.canvas.style.width="100%"),e.selector||(e.selector=Iw.newInstance(),e.selector.setOpenGLRenderWindow(t)),e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",e._textureResourceIds=new Map,e._graphicsResources=new Map,e._glInformation=null,e.myFactory=Kz.newInstance(),e.shaderCache=kH.newInstance(),e.shaderCache.setOpenGLRenderWindow(t),e.renderPasses[0]=Hj.newInstance(),W.get(t,e,["shaderCache","textureUnitManager","webgl2","useBackgroundImage","activeFramebuffer","rootOpenGLRenderWindow"]),W.setGet(t,e,["initialized","context","context2D","canvas","renderPasses","notifyStartCaptureImage","defaultToWebgl2","cursor","useOffScreen"]),W.setGetArray(t,e,["size"],2),W.event(t,e,"imageReady"),W.event(t,e,"windowResizeEvent"),eK(t,e)}const Ow=W.newInstance(Fb,"vtkOpenGLRenderWindow");l7("WebGL",Ow);var nK={newInstance:Ow,extend:Fb,pushMonitorGLContextCount:ZH,popMonitorGLContextCount:QH};ir("vtkRenderWindow",Ow);function rK(t,e){e.classHierarchy.push("vtkOpenGLActor"),t.buildPass=r=>{if(r){e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNodes(e.renderable.getTextures()),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let n=0;n{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.traverseOpaqueZBufferPass=r=>t.traverseOpaquePass(r),t.traverseOpaquePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let r=0;r{if(r){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?n.incrementOpaqueActorCount():n.incrementTranslucentActorCount()}},t.zBufferPass=(r,n)=>t.opaquePass(r,n),t.opaqueZBufferPass=(r,n)=>t.opaquePass(r,n),t.opaquePass=(r,n)=>{if(r)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let i=0;i{if(r)e.context.depthMask(e._openGLRenderer.getSelector()&&e.renderable.getNestedPickable()),t.activateTextures();else if(e.activeTextures)for(let i=0;i(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),_n(e.keyMatrices.mcwc,e.renderable.getMatrix()),St(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.renderable.getIsIdentity()?ao(e.keyMatrices.normalMatrix):(Ym(e.keyMatrices.normalMatrix,e.keyMatrices.mcwc),yh(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),gw(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),e.keyMatrixTime.modified()),e.keyMatrices)}const iK={context:null,keyMatrixTime:null,keyMatrices:null,activeTextures:null};function Ub(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,iK,r),tn.extend(t,e,r),e.keyMatrixTime={},un(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:ao(new Float64Array(9)),mcwc:qe(new Float64Array(16))},Jn(t,e,["context"]),gi(t,e,["activeTextures"]),rK(t,e)}const Bb=Bt(Ub);var oK={newInstance:Bb,extend:Ub};ir("vtkActor",Bb);function aK(t,e){e.classHierarchy.push("vtkOpenGLActor2D"),t.buildPass=r=>{if(r){if(!e.renderable)return;e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNodes(e.renderable.getTextures()),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let n=0;n{if(r){if(!e.renderable||!e.renderable.getVisibility())return;n.incrementOverlayActorCount()}},t.traverseOpaquePass=r=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.traverseOverlayPass=r=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable||(t.apply(r,!0),e.oglmapper.traverse(r),t.apply(r,!1))},t.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let r=0;r{if(r)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let i=0;i{if(r)e.context.depthMask(!1),t.activateTextures();else if(e.activeTextures)for(let i=0;i{if(r)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sK,r),tn.extend(t,e,r),Jn(t,e,["context"]),gi(t,e,["activeTextures"]),aK(t,e)}const Wb=Bt(Gb);var cK={newInstance:Wb,extend:Gb};ir("vtkActor2D",Wb);function lK(t,e){e.classHierarchy.push("vtkOpenGLCamera"),t.buildPass=r=>{r&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext())},t.opaquePass=r=>{if(r){const n=e._openGLRenderer.getTiledSizeAndOrigin();e.context.viewport(n.lowerLeftU,n.lowerLeftV,n.usize,n.vsize),e.context.scissor(n.lowerLeftU,n.lowerLeftV,n.usize,n.vsize)}},t.translucentPass=t.opaquePass,t.zBufferPass=t.opaquePass,t.opaqueZBufferPass=t.opaquePass,t.volumePass=t.opaquePass,t.getKeyMatrices=r=>{if(r!==e.lastRenderer||e._openGLRenderWindow.getMTime()>e.keyMatrixTime.getMTime()||t.getMTime()>e.keyMatrixTime.getMTime()||r.getMTime()>e.keyMatrixTime.getMTime()||e.renderable.getMTime()>e.keyMatrixTime.getMTime()){_n(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),Ym(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),yh(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),St(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const n=e._openGLRenderer.getAspectRatio();_n(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(n,-1,1)),St(e.keyMatrices.vcpc,e.keyMatrices.vcpc),bt(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=r}return e.keyMatrices}}const uK={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function zb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,uK,r),tn.extend(t,e,r),e.keyMatrixTime={},un(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},Jn(t,e,["context","keyMatrixTime"]),lK(t,e)}const $b=Bt(zb);var fK={newInstance:$b,extend:zb};ir("vtkCamera",$b);function dK(t,e){e.classHierarchy.push("vtkAbstractMapper"),t.update=()=>{t.getInputData()},t.addClippingPlane=r=>r.isA("vtkPlane")?e.clippingPlanes.includes(r)?!1:(e.clippingPlanes.push(r),t.modified(),!0):!1,t.getNumberOfClippingPlanes=()=>e.clippingPlanes.length,t.removeAllClippingPlanes=()=>e.clippingPlanes.length===0?!1:(e.clippingPlanes.length=0,t.modified(),!0),t.removeClippingPlane=r=>{const n=e.clippingPlanes.indexOf(r);return n===-1?!1:(e.clippingPlanes.splice(n,1),t.modified(),!0)},t.getClippingPlanes=()=>e.clippingPlanes,t.setClippingPlanes=r=>{if(r)if(!Array.isArray(r))t.addClippingPlane(r);else{const n=r.length;for(let i=0;i{const o=e.clippingPlanes,a=r;if(o){const s=o.length;if(n>=0&&n2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hK,r),W.obj(t,e),W.algo(t,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),dK(t,e)}var jb={extend:gK};function pK(t,e){e.classHierarchy.push("vtkImplicitFunction"),t.functionValue=r=>{if(!e.transform)return t.evaluateFunction(r);const n=[];return e.transform.transformPoint(r,n),t.evaluateFunction(n)},t.evaluateFunction=r=>{W.vtkErrorMacro("not implemented")}}const mK={};function Hb(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mK,r),W.obj(t,e),W.setGet(t,e,["transform"]),pK(t,e)}const vK=W.newInstance(Hb,"vtkImplicitFunction");var yK={newInstance:vK,extend:Hb};const j5=1e-6,Kb="coincide",qb="disjoint";function xK(t,e,r){return t[0]*(r[0]-e[0])+t[1]*(r[1]-e[1])+t[2]*(r[2]-e[2])}function Xb(t,e,r){const n=r[0]*(t[0]-e[0])+r[1]*(t[1]-e[1])+r[2]*(t[2]-e[2]);return Math.abs(n)}function Yb(t,e,r,n){const i=[];Fa(t,e,i);const o=wt(r,i);n[0]=t[0]-o*r[0],n[1]=t[1]-o*r[1],n[2]=t[2]-o*r[2]}function Jb(t,e,r){const n=wt(t,e);let i=wt(e,e);return i===0&&(i=1),r[0]=t[0]-n*e[0]/i,r[1]=t[1]-n*e[1]/i,r[2]=t[2]-n*e[2]/i,r}function Zb(t,e,r,n){const i=[];Fa(t,e,i);const o=wt(r,i),a=wt(r,r);a!==0?(n[0]=t[0]-o*r[0]/a,n[1]=t[1]-o*r[1]/a,n[2]=t[2]-o*r[2]/a):(n[0]=t[0],n[1]=t[1],n[2]=t[2])}function Qb(t,e,r,n){const i={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},o=[],a=[];Fa(e,t,o),Fa(r,t,a);const s=wt(n,a),c=wt(n,o);let l,f;return c<0?l=-c:l=c,s<0?f=-s*j5:f=s*j5,l<=f||(i.t=s/c,i.x[0]=t[0]+i.t*o[0],i.x[1]=t[1]+i.t*o[1],i.x[2]=t[2]+i.t*o[2],i.intersection=!0,i.betweenPoints=i.t>=0&&i.t<=1),i}function eI(t,e,r,n){const i={intersection:!1,l0:[],l1:[],error:null},o=[];ia(e,n,o);const a=o.map(u=>Math.abs(u));if(a[0]+a[1]+a[2]a[1]&&a[0]>a[2]?s="x":a[1]>a[2]?s="y":s="z";const c=[],l=-wt(e,t),f=-wt(n,r);switch(s){case"x":c[0]=0,c[1]=(f*e[2]-l*n[2])/o[0],c[2]=(l*n[1]-f*e[1])/o[0];break;case"y":c[0]=(l*n[2]-f*e[2])/o[1],c[1]=0,c[2]=(f*e[0]-l*n[0])/o[1];break;case"z":c[0]=(f*e[1]-l*n[1])/o[2],c[1]=(l*n[0]-f*e[0])/o[2],c[2]=0;break}return i.l0=c,E1(c,o,i.l1),i.intersection=!0,i}const wK={evaluate:xK,distanceToPlane:Xb,projectPoint:Yb,projectVector:Jb,generalizedProjectPoint:Zb,intersectWithLine:Qb,intersectWithPlane:eI,DISJOINT:qb,COINCIDE:Kb};function CK(t,e){e.classHierarchy.push("vtkPlane"),t.distanceToPlane=r=>Xb(r,e.origin,e.normal),t.projectPoint=(r,n)=>{Yb(r,e.origin,e.normal,n)},t.projectVector=(r,n)=>Jb(r,e.normal,n),t.push=r=>{if(r!==0)for(let n=0;n<3;n++)e.origin[n]+=r*e.normal[n]},t.generalizedProjectPoint=(r,n)=>{Zb(r,e.origin,e.normal,n)},t.evaluateFunction=(r,n,i)=>Array.isArray(r)?e.normal[0]*(r[0]-e.origin[0])+e.normal[1]*(r[1]-e.origin[1])+e.normal[2]*(r[2]-e.origin[2]):e.normal[0]*(r-e.origin[0])+e.normal[1]*(n-e.origin[1])+e.normal[2]*(i-e.origin[2]),t.evaluateGradient=r=>[e.normal[0],e.normal[1],e.normal[2]],t.intersectWithLine=(r,n)=>Qb(r,n,e.origin,e.normal),t.intersectWithPlane=(r,n)=>eI(r,n,e.origin,e.normal)}const SK={normal:[0,0,1],origin:[0,0,0]};function tI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,SK,r),yK.extend(t,e,r),W.setGetArray(t,e,["normal","origin"],3),CK(t,e)}const TK=W.newInstance(tI,"vtkPlane");var Xr={newInstance:TK,extend:tI,...wK};const Qm=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function nI(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function Ka(t){return(t==null?void 0:t.length)>=6&&t[0]<=t[1]&&t[2]<=t[3]&&t[4]<=t[5]}function Mw(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Rw(t){return Mw(t,Qm)}function L1(t,e,r,n){const[i,o,a,s,c,l]=t;return t[0]=ie?o:e,t[2]=ar?s:r,t[4]=cn?l:n,t}function Lw(t,e){if(e.length===0)return t;if(Array.isArray(e[0]))for(let r=0;ro?e:o,t[2]=r,t[3]=r>s?r:s,t[4]=n,t[5]=n>l?n:l,i!==e||a!==r||c!==n}function oI(t,e,r,n){const[i,o,a,s,c,l]=t;return t[0]=e=0?(t[0]*=e,t[1]*=e):(t[0]=e*t[1],t[1]=e*t[0]),r>=0?(t[2]*=r,t[3]*=r):(t[2]=r*t[3],t[3]=r*t[2]),n>=0?(t[4]*=n,t[5]*=n):(t[4]=n*t[5],t[5]=n*t[4]),!0):!1}function Pw(t){return[.5*(t[0]+t[1]),.5*(t[2]+t[3]),.5*(t[4]+t[5])]}function _K(t,e,r,n){if(!Ka(t))return!1;const i=Pw(t);return t[0]-=i[0],t[1]-=i[0],t[2]-=i[1],t[3]-=i[1],t[4]-=i[2],t[5]-=i[2],Nw(t,e,r,n),t[0]+=i[0],t[1]+=i[0],t[2]+=i[1],t[3]+=i[1],t[4]+=i[2],t[5]+=i[2],!0}function jf(t,e){return t[e*2+1]-t[e*2]}function e2(t){return[jf(t,0),jf(t,1),jf(t,2)]}function sI(t){return t.slice(0,2)}function cI(t){return t.slice(2,4)}function lI(t){return t.slice(4,6)}function uI(t){const e=e2(t);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function fI(t){if(Ka(t)){const e=e2(t);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function Aw(t){return[t[0],t[2],t[4]]}function kw(t){return[t[1],t[3],t[5]]}function lg(t,e){return t<=0&&e>=0||t>=0&&e<=0}function Vw(t,e){let r=0;for(let n=0;n<2;n++)for(let i=2;i<4;i++)for(let o=4;o<6;o++)e[r++]=[t[n],t[i],t[o]];return e}function dI(t,e,r){return e[0]=t[0],e[1]=t[2],e[2]=t[4],r[0]=t[1],r[1]=t[3],r[2]=t[5],e}function hI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const n=Vw(t,[]);for(let i=0;i1&&arguments[1]!==void 0?arguments[1]:[];return e[0]=.5*(t[1]-t[0]),e[1]=.5*(t[3]-t[2]),e[2]=.5*(t[5]-t[4]),e}function pI(t,e,r,n){const i=[].concat(Qm),o=t.getData();for(let a=0;at[2*h+1]?(a[h]=f,l[h]=t[2*h+1],o=!1):a[h]=d;if(o)return n[0]=e[0],n[1]=e[1],n[2]=e[2],i[0]=0,1;for(let h=0;h<3;h++)a[h]!==d&&r[h]!==0?c[h]=(l[h]-e[h])/r[h]:c[h]=-1;for(let h=0;h<3;h++)c[s]1||c[s]<0)return 0;i[0]=c[s];for(let h=0;h<3;h++)if(s!==h){if(n[h]=e[h]+c[s]*r[h],n[h]t[2*h+1])return 0}else n[h]=l[h];return 1}function vI(t,e,r){const n=[];let i=0,o=1,a=1;for(let s=4;s<=5;++s){n[2]=t[s];for(let c=2;c<=3;++c){n[1]=t[c];for(let l=0;l<=1;++l)if(n[0]=t[l],i=Xr.evaluate(r,e,n),a&&(o=i>=0?1:-1,a=0),i===0||o>0&&i<0||o<0&&i>0)return 1}}return 0}function yI(t,e){if(!(Ka(t)&&Ka(e)))return!1;const r=[0,0,0,0,0,0];let n;for(let i=0;i<3;i++)if(n=!1,e[i*2]>=t[i*2]&&e[i*2]<=t[i*2+1]?(n=!0,r[i*2]=e[i*2]):t[i*2]>=e[i*2]&&t[i*2]<=e[i*2+1]&&(n=!0,r[i*2]=t[i*2]),e[i*2+1]>=t[i*2]&&e[i*2+1]<=t[i*2+1]?(n=!0,r[i*2+1]=e[2*i+1]):t[i*2+1]>=e[i*2]&&t[i*2+1]<=e[i*2+1]&&(n=!0,r[i*2+1]=t[i*2+1]),!n)return!1;return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],!0}function N1(t,e){if(!(Ka(t)&&Ka(e)))return!1;for(let r=0;r<3;r++)if(!(e[r*2]>=t[r*2]&&e[r*2]<=t[r*2+1])&&!(t[r*2]>=e[r*2]&&t[r*2]<=e[r*2+1])&&!(e[r*2+1]>=t[r*2]&&e[r*2+1]<=t[r*2+1])&&!(t[r*2+1]>=e[r*2]&&t[r*2+1]<=e[r*2+1]))return!1;return!0}function P1(t,e,r,n){return!(et[1]||rt[3]||nt[5])}function EK(t,e){return!(!N1(t,e)||!P1(t,...Aw(e))||!P1(t,...kw(e)))}function xI(t,e,r){const n=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],i=[0,0,0,0,0,0,0,0];let o=0;for(let u=0;u<2;u++)for(let d=2;d<4;d++)for(let h=4;h<6;h++){const g=[t[u],t[d],t[h]];i[o++]=Xr.evaluate(r,e,g)}let a=2;for(;a--&&!(lg(i[n[a][0]],i[n[a][4]])&&lg(i[n[a][1]],i[n[a][5]])&&lg(i[n[a][2]],i[n[a][6]])&&lg(i[n[a][3]],i[n[a][7]])););if(a<0)return!1;const s=Math.sign(r[a]),c=Math.abs((t[a*2+1]-t[a*2])*r[a]);let l=s>0?1:0;for(let u=0;u<4;u++){if(c===0)continue;const d=Math.abs(i[n[a][u]])/c;s>0&&dl&&(l=d)}const f=(1-l)*t[a*2]+l*t[a*2+1];return s>0?t[a*2]=f:t[a*2+1]=f,!0}class DK{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(Qm))}getBounds(){return this.bounds}equals(e){return nI(this.bounds,e)}isValid(){return Ka(this.bounds)}setBounds(e){return Mw(this.bounds,e)}reset(){return Rw(this.bounds)}addPoint(){for(var e=arguments.length,r=new Array(e),n=0;n1&&arguments[1]!==void 0?arguments[1]:[];return hI(this.bounds,e,r)}computeScale3(e){return gI(this.bounds,e)}cutWithPlane(e,r){return xI(this.bounds,e,r)}intersectBox(e,r,n,i){return mI(this.bounds,e,r,n,i)}intersectPlane(e,r){return vI(this.bounds,e,r)}intersect(e){return yI(this.bounds,e)}intersects(e){return N1(this.bounds,e)}containsPoint(e,r,n){return P1(this.bounds,e,r,n)}contains(e){return N1(this.bounds,e)}}function bK(t){const e=t&&t.bounds;return new DK(e)}const IK={equals:nI,isValid:Ka,setBounds:Mw,reset:Rw,addPoint:L1,addPoints:Lw,addBounds:rI,setMinPoint:iI,setMaxPoint:oI,inflate:aI,scale:Nw,scaleAboutCenter:_K,getCenter:Pw,getLength:jf,getLengths:e2,getMaxLength:uI,getDiagonalLength:fI,getMinPoint:Aw,getMaxPoint:kw,getXRange:sI,getYRange:cI,getZRange:lI,getCorners:Vw,computeCornerPoints:dI,computeLocalBounds:pI,transformBounds:hI,computeScale3:gI,cutWithPlane:xI,intersectBox:mI,intersectPlane:vI,intersect:yI,intersects:N1,containsPoint:P1,contains:EK,INIT_BOUNDS:Qm};var qt={newInstance:bK,...IK};function OK(t,e){t.getBounds=()=>(W.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),qs()),t.getCenter=()=>{var n;const r=t.getBounds();return e.center=qt.isValid(r)?qt.getCenter(r):null,(n=e.center)==null?void 0:n.slice()},t.getLength=()=>{const r=t.getBounds();return qt.getDiagonalLength(r)}}const MK=t=>({bounds:[...qt.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...t});function RK(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,MK(r)),jb.extend(t,e,r),W.setGet(t,e,["viewSpecificProperties"]),OK(t,e)}var Fw={extend:RK};const mo={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var wI={StructuredType:mo};const{StructuredType:ma}=wI;function LK(t){let e=0;for(let r=0;r<3;++r)t[r*2]t[1]||t[2]>t[3]||t[4]>t[5]?ma.EMPTY:e===3?ma.XYZ_GRID:e===2?t[0]===t[1]?ma.YZ_PLANE:t[2]===t[3]?ma.XZ_PLANE:ma.XY_PLANE:e===1?t[0]s!==o[c]);return a&&(e.extent=o.slice(),e.dataDescription=NK.getDataDescriptionFromExtent(e.extent),t.modified()),a},t.setDimensions=function(){let r,n,i;if(e.deleted){dc("instance deleted - cannot call any method");return}if(arguments.length===1){const o=arguments.length<=0?void 0:arguments[0];r=o[0],n=o[1],i=o[2]}else if(arguments.length===3)r=arguments.length<=0?void 0:arguments[0],n=arguments.length<=1?void 0:arguments[1],i=arguments.length<=2?void 0:arguments[2];else{dc("Bad dimension specification");return}t.setExtent(0,r-1,0,n-1,0,i-1)},t.getDimensions=()=>[e.extent[1]-e.extent[0]+1,e.extent[3]-e.extent[2]+1,e.extent[5]-e.extent[4]+1],t.getNumberOfCells=()=>{const r=t.getDimensions();let n=1;for(let i=0;i<3;i++){if(r[i]===0)return 0;r[i]>1&&(n*=r[i]-1)}return n},t.getNumberOfPoints=()=>{const r=t.getDimensions();return r[0]*r[1]*r[2]},t.getPoint=r=>{const n=t.getDimensions();if(n[0]===0||n[1]===0||n[2]===0)return dc("Requesting a point from an empty image."),null;const i=new Float64Array(3);switch(e.dataDescription){case mo.EMPTY:return null;case mo.SINGLE_POINT:break;case mo.X_LINE:i[0]=r;break;case mo.Y_LINE:i[1]=r;break;case mo.Z_LINE:i[2]=r;break;case mo.XY_PLANE:i[0]=r%n[0],i[1]=r/n[0];break;case mo.YZ_PLANE:i[1]=r%n[1],i[2]=r/n[1];break;case mo.XZ_PLANE:i[0]=r%n[0],i[2]=r/n[0];break;case mo.XYZ_GRID:i[0]=r%n[0],i[1]=r/n[0]%n[1],i[2]=r/(n[0]*n[1]);break;default:dc("Invalid dataDescription");break}const o=[0,0,0];return t.indexToWorld(i,o),o},t.getBounds=()=>t.extentToBounds(t.getSpatialExtent()),t.extentToBounds=r=>qt.transformBounds(r,e.indexToWorld),t.getSpatialExtent=()=>qt.inflate([...e.extent],.5),t.computeTransforms=()=>{Jm(e.indexToWorld,e.origin),e.indexToWorld[0]=e.direction[0],e.indexToWorld[1]=e.direction[1],e.indexToWorld[2]=e.direction[2],e.indexToWorld[4]=e.direction[3],e.indexToWorld[5]=e.direction[4],e.indexToWorld[6]=e.direction[5],e.indexToWorld[8]=e.direction[6],e.indexToWorld[9]=e.direction[7],e.indexToWorld[10]=e.direction[8],Ha(e.indexToWorld,e.indexToWorld,e.spacing),$n(e.worldToIndex,e.indexToWorld)},t.indexToWorld=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return et(n,r,e.indexToWorld),n},t.indexToWorldVec3=t.indexToWorld,t.worldToIndex=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return et(n,r,e.worldToIndex),n},t.worldToIndexVec3=t.worldToIndex,t.indexToWorldBounds=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return qt.transformBounds(r,e.indexToWorld,n)},t.worldToIndexBounds=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return qt.transformBounds(r,e.worldToIndex,n)},t.onModified(t.computeTransforms),t.computeTransforms(),t.getCenter=()=>qt.getCenter(t.getBounds()),t.computeHistogram=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const i=[0,0,0,0,0,0];t.worldToIndexBounds(r,i);const o=[0,0,0],a=[0,0,0];qt.computeCornerPoints(i,o,a),k5(o,o),k5(a,a);const s=t.getDimensions();F5(o,[0,0,0],[s[0]-1,s[1]-1,s[2]-1],o),F5(a,[0,0,0],[s[0]-1,s[1]-1,s[2]-1],a);const c=s[0],l=s[0]*s[1],f=t.getPointData().getScalars().getData();let u=-1/0,d=1/0,h=0,g=0,p=0;for(let y=o[2];y<=a[2];y++)for(let w=o[1];w<=a[1];w++){let C=o[0]+w*c+y*l;for(let S=o[0];S<=a[0];S++){if(!n||n([S,w,y],i)){const T=f[C];T>u&&(u=T),T0?g/p:0,x=p?Math.abs(h/p-v*v):0,m=Math.sqrt(x);return{minimum:d,maximum:u,average:v,variance:x,sigma:m,count:p}},t.computeIncrements=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const i=[];let o=n;for(let a=0;a<3;++a)i[a]=o,o*=r[a*2+1]-r[a*2]+1;return i},t.computeOffsetIndex=r=>{let[n,i,o]=r;const a=t.getExtent(),s=t.getPointData().getScalars().getNumberOfComponents(),c=t.computeIncrements(a,s);return Math.floor((Math.round(n)-a[0])*c[0]+(Math.round(i)-a[2])*c[1]+(Math.round(o)-a[4])*c[2])},t.getOffsetIndexFromWorld=r=>{const n=t.getExtent(),i=t.worldToIndex(r);for(let o=0;o<3;++o)if(i[o]n[o*2+1])return dc(`GetScalarPointer: Pixel ${i} is not in memory. Current extent = ${n}`),NaN;return t.computeOffsetIndex(i)},t.getScalarValueFromWorld=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const i=t.getPointData().getScalars().getNumberOfComponents();if(n<0||n>=i)return dc(`GetScalarPointer: Scalar Component ${n} is not within bounds. Current Scalar numberOfComponents: ${i}`),NaN;const o=t.getOffsetIndexFromWorld(r);return Number.isNaN(o)?o:t.getPointData().getScalars().getComponent(o,n)}}const AK={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:mo.EMPTY};function CI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,AK,r),w0.extend(t,e,r),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=ao(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),W.get(t,e,["indexToWorld","worldToIndex"]),W.setGetArray(t,e,["origin","spacing"],3),W.setGetArray(t,e,["direction"],9),W.getArray(t,e,["extent"],6),PK(t,e)}const kK=W.newInstance(CI,"vtkImageData");var C0={newInstance:kK,extend:CI};const VK={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},H5={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var Uw={VectorMode:VK,ScalarMappingTarget:H5};const FK={DEFAULT:0,MAP_SCALARS:1,DIRECT_SCALARS:2},UK={DEFAULT:0,USE_POINT_DATA:1,USE_CELL_DATA:2,USE_POINT_FIELD_DATA:3,USE_CELL_FIELD_DATA:4,USE_FIELD_DATA:5},BK={BY_ID:0,BY_NAME:1};var t2={ColorMode:FK,GetArray:BK,ScalarMode:UK};const{ScalarMappingTarget:KT,VectorMode:Go}=Uw,{VtkDataTypes:cs}=tt,{ColorMode:ug}=t2,{vtkErrorMacro:qT}=W;function GK(t){return t}function XT(t){return Math.floor(t*255+.5)}function WK(t,e){e.classHierarchy.push("vtkScalarsToColors"),t.setVectorModeToMagnitude=()=>t.setVectorMode(Go.MAGNITUDE),t.setVectorModeToComponent=()=>t.setVectorMode(Go.COMPONENT),t.setVectorModeToRGBColors=()=>t.setVectorMode(Go.RGBCOLORS),t.build=()=>{},t.isOpaque=()=>!0,t.setAnnotations=(r,n)=>{if(!(r&&!n||!r&&n)){if(r&&n&&r.length!==n.length){qT("Values and annotations do not have the same number of tuples so ignoring");return}if(e.annotationArray=[],n&&r){const i=n.length;for(let o=0;o{let i=t.checkForAnnotatedValue(r),o=!1;return i>=0?e.annotationArray[i].annotation!==n&&(e.annotationArray[i].annotation=n,o=!0):(e.annotationArray.push({value:r,annotation:n}),i=e.annotationArray.length-1,o=!0),o&&(t.updateAnnotatedValueMap(),t.modified()),i},t.getNumberOfAnnotatedValues=()=>e.annotationArray.length,t.getAnnotatedValue=r=>r<0||r>=e.annotationArray.length?null:e.annotationArray[r].value,t.getAnnotation=r=>e.annotationArray[r]===void 0?null:e.annotationArray[r].annotation,t.getAnnotatedValueIndex=r=>e.annotationArray.length?t.checkForAnnotatedValue(r):-1,t.removeAnnotation=r=>{const n=t.checkForAnnotatedValue(r),i=n>=0;return i&&(e.annotationArray.splice(n,1),t.updateAnnotatedValueMap(),t.modified()),i},t.resetAnnotations=()=>{e.annotationArray=[],e.annotatedValueMap=[],t.modified()},t.getAnnotationColor=(r,n)=>{if(e.indexedLookup){const i=t.getAnnotatedValueIndex(r);t.getIndexedColor(i,n)}else t.getColor(parseFloat(r),n),n[3]=1},t.checkForAnnotatedValue=r=>t.getAnnotatedValueIndexInternal(r),t.getAnnotatedValueIndexInternal=r=>{if(e.annotatedValueMap[r]!==void 0){const n=e.annotationArray.length;return e.annotatedValueMap[r]%n}return-1},t.getIndexedColor=(r,n)=>{n[0]=0,n[1]=0,n[2]=0,n[3]=0},t.updateAnnotatedValueMap=()=>{e.annotatedValueMap=[];const r=e.annotationArray.length;for(let n=0;n{const o=r.getNumberOfComponents();let a=null;if(n===ug.DEFAULT&&(r.getDataType()===cs.UNSIGNED_CHAR||r.getDataType()===cs.UNSIGNED_CHAR_CLAMPED)||n===ug.DIRECT_SCALARS&&r)a=t.convertToRGBA(r,o,r.getNumberOfTuples());else{const s={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:cs.UNSIGNED_CHAR},c=W.newTypedArray(s.dataType,4*r.getNumberOfTuples());s.values=c,s.size=c.length,a=tt.newInstance(s);let l=i;l<0&&o>1?t.mapVectorsThroughTable(r,a,KT.RGBA,-1,-1):(l<0&&(l=0),l>=o&&(l=o-1),t.mapScalarsThroughTable(r,a,KT.RGBA,l))}return a},t.mapVectorsToMagnitude=(r,n,i)=>{const o=r.getNumberOfTuples(),a=r.getNumberOfComponents(),s=n.getData(),c=r.getData();for(let l=0;l{let s=t.getVectorMode(),c=a,l=o;const f=r.getNumberOfComponents();s===Go.COMPONENT?(l===-1&&(l=t.getVectorComponent()),l<0&&(l=0),l>=f&&(l=f-1)):(c===-1&&(c=t.getVectorSize()),c<=0?(l=0,c=f):(l<0&&(l=0),l>=f&&(l=f-1),l+c>f&&(c=f-l)),s===Go.MAGNITUDE&&(f===1||c===1)&&(s=Go.COMPONENT));let u=0;switch(l>0&&(u=l),s){case Go.COMPONENT:{t.mapScalarsThroughTable(r,n,i,u);break}case Go.RGBCOLORS:break;case Go.MAGNITUDE:default:{const d=tt.newInstance({numberOfComponents:1,values:new Float32Array(r.getNumberOfTuples())});t.mapVectorsToMagnitude(r,d,c),t.mapScalarsThroughTable(d,n,i,0);break}}},t.luminanceToRGBA=(r,n,i,o)=>{const a=o(i),s=n.getData(),c=r.getData(),l=s.length,f=0,u=1;let d=0;for(let h=f;h{const a=n.getData(),s=r.getData(),c=a.length,l=0,f=2;let u=0;for(let d=l;d{const a=XT(i),s=n.getData(),c=r.getData(),l=s.length,f=0,u=3;let d=0;for(let h=f;h{const a=n.getData(),s=r.getData(),c=a.length,l=0,f=4;let u=0;for(let d=l;d{let{alpha:o}=e;if(n===4&&o>=1&&r.getDataType()===cs.UNSIGNED_CHAR)return r;const a=tt.newInstance({numberOfComponents:4,empty:!0,size:4*i,dataType:cs.UNSIGNED_CHAR});if(i<=0)return a;o=o>0?o:0,o=o<1?o:1;let s=GK;switch((r.getDataType()===cs.FLOAT||r.getDataType()===cs.DOUBLE)&&(s=XT),n){case 1:t.luminanceToRGBA(a,r,o,s);break;case 2:t.luminanceAlphaToRGBA(a,r,s);break;case 3:t.rGBToRGBA(a,r,o,s);break;case 4:t.rGBAToRGBA(a,r,o,s);break;default:return qT("Cannot convert colors"),null}return a},t.usingLogScale=()=>!1,t.getNumberOfAvailableColors=()=>256*256*256,t.setRange=(r,n)=>t.setMappingRange(r,n),t.getRange=()=>t.getMappingRange(),t.areScalarsOpaque=(r,n,i)=>{if(!r)return t.isOpaque();const o=r.getNumberOfComponents();return n===ug.DEFAULT&&r.getDataType()===cs.UNSIGNED_CHAR||n===ug.DIRECT_SCALARS?o===3||o===1?e.alpha>=1:r.getRange(o-1)[0]===255:!0}}const zK={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:Go.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function SI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zK,r),W.obj(t,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],W.setGet(t,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),W.setArray(t,e,["mappingRange"],2),W.getArray(t,e,["mappingRange"]),WK(t,e)}const $K=W.newInstance(SI,"vtkScalarsToColors");var n2={newInstance:$K,extend:SI,...Uw};const{vtkErrorMacro:YT}=W,JT=0,ZT=1,Ev=2;function jK(t,e){e.classHierarchy.push("vtkLookupTable"),t.isOpaque=()=>{if(e.opaqueFlagBuildTime.getMTime()!1,t.getNumberOfAvailableColors=()=>e.table.length/4-3,t.linearIndexLookup=(r,n)=>{let i=0;const o=Number(r);return on.range[1]?i=n.maxIndex+ZT+1.5:(i=(o+n.shift)*n.scale,i=i{let o=0;b1(r)?o=Math.floor(i.maxIndex+1.5+Ev):o=t.linearIndexLookup(r,i);const a=4*o;return n.slice(a,a+4)},t.indexedLookupFunction=(r,n,i)=>{let o=t.getAnnotatedValueIndexInternal(r);o===-1&&(o=e.numberOfColors+Ev);const a=4*o;return[n[a],n[a+1],n[a+2],n[a+3]]},t.lookupShiftAndScale=(r,n)=>{n.shift=-r[0],n.scale=Number.MAX_VALUE,r[1]>r[0]&&(n.scale=(n.maxIndex+1)/(r[1]-r[0]))},t.mapScalarsThroughTable=(r,n,i,o)=>{let a=t.linearLookup;e.indexedLookup&&(a=t.indexedLookupFunction);const s=t.getMappingRange(),c={maxIndex:t.getNumberOfColors()-1,range:s,shift:0,scale:0};t.lookupShiftAndScale(s,c);const l=t.getAlpha(),f=r.getNumberOfTuples(),u=r.getNumberOfComponents(),d=n.getData(),h=r.getData();if(l>=1){if(i===H5.RGBA)for(let g=0;g{let r=0,n=0,i=0,o=0;const a=e.numberOfColors-1;a&&(r=(e.hueRange[1]-e.hueRange[0])/a,n=(e.saturationRange[1]-e.saturationRange[0])/a,i=(e.valueRange[1]-e.valueRange[0])/a,o=(e.alphaRange[1]-e.alphaRange[0])/a),e.table.length=4*a+16;const s=[],c=[];for(let l=0;l<=a;l++)s[0]=e.hueRange[0]+l*r,s[1]=e.saturationRange[0]+l*n,s[2]=e.valueRange[0]+l*i,Rc(s,c),c[3]=e.alphaRange[0]+l*o,e.table[l*4]=c[0]*255+.5,e.table[l*4+1]=c[1]*255+.5,e.table[l*4+2]=c[2]*255+.5,e.table[l*4+3]=c[3]*255+.5;t.buildSpecialColors(),e.buildTime.modified()},t.setTable=r=>{if(Array.isArray(r)){const i=r[0].length;e.numberOfColors=r.length;const o=4-i;let a=0;for(let s=0;s{const{numberOfColors:r}=e,n=e.table;let i=(r+JT)*4;e.useBelowRangeColor||r===0?(n[i]=e.belowRangeColor[0]*255+.5,n[i+1]=e.belowRangeColor[1]*255+.5,n[i+2]=e.belowRangeColor[2]*255+.5,n[i+3]=e.belowRangeColor[3]*255+.5):(n[i]=n[0],n[i+1]=n[1],n[i+2]=n[2],n[i+3]=n[3]),i=(r+ZT)*4,e.useAboveRangeColor||r===0?(n[i]=e.aboveRangeColor[0]*255+.5,n[i+1]=e.aboveRangeColor[1]*255+.5,n[i+2]=e.aboveRangeColor[2]*255+.5,n[i+3]=e.aboveRangeColor[3]*255+.5):(n[i]=n[4*(r-1)+0],n[i+1]=n[4*(r-1)+1],n[i+2]=n[4*(r-1)+2],n[i+3]=n[4*(r-1)+3]),i=(r+Ev)*4,n[i]=e.nanColor[0]*255+.5,n[i+1]=e.nanColor[1]*255+.5,n[i+2]=e.nanColor[2]*255+.5,n[i+3]=e.nanColor[3]*255+.5},t.build=()=>{(e.table.length<1||t.getMTime()>e.buildTime.getMTime()&&e.insertTime.getMTime()<=e.buildTime.getMTime())&&t.forceBuild()},e.table.length>0&&(t.buildSpecialColors(),e.insertTime.modified())}const HK={numberOfColors:256,hueRange:[0,.66667],saturationRange:[1,1],valueRange:[1,1],alphaRange:[1,1],nanColor:[.5,0,0,1],belowRangeColor:[0,0,0,1],aboveRangeColor:[1,1,1,1],useAboveRangeColor:!1,useBelowRangeColor:!1,alpha:1};function TI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,HK,r),n2.extend(t,e,r),e.table||(e.table=[]),e.buildTime={},W.obj(e.buildTime),e.opaqueFlagBuildTime={},W.obj(e.opaqueFlagBuildTime,{mtime:0}),e.insertTime={},W.obj(e.insertTime,{mtime:0}),W.get(t,e,["buildTime"]),W.setGet(t,e,["numberOfColors","useAboveRangeColor","useBelowRangeColor"]),W.setArray(t,e,["alphaRange","hueRange","saturationRange","valueRange"],2),W.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),W.getArray(t,e,["hueRange","saturationRange","valueRange","alphaRange","nanColor","belowRangeColor","aboveRangeColor"]),jK(t,e)}const KK=W.newInstance(TI,"vtkLookupTable");var A1={newInstance:KK,extend:TI};const ko={Off:0,PolygonOffset:1};let K5=ko.PolygonOffset,k1=ko.Off;const qK=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function XK(){return K5}function YK(t){const e=K5===t;return K5=t,e}function JK(){return k1}function r2(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const e=k1===t;return k1=t,e}function ZK(){return r2(ko.Off)}function QK(){return r2(ko.Off)}function eq(){return r2(ko.PolygonOffset)}function tq(){return qK[k1]}var q5={Resolve:ko,getResolveCoincidentTopologyAsString:tq,getResolveCoincidentTopologyPolygonOffsetFaces:XK,getResolveCoincidentTopology:JK,setResolveCoincidentTopology:r2,setResolveCoincidentTopologyPolygonOffsetFaces:YK,setResolveCoincidentTopologyToDefault:ZK,setResolveCoincidentTopologyToOff:QK,setResolveCoincidentTopologyToPolygonOffset:eq};function _I(t,e,r){r.forEach(n=>{t[`get${n.method}`]=()=>e[n.key],t[`set${n.method}`]=W.objectSetterMap.object(t,e,{name:n.key,params:["factor","offset"]})})}const Bw=["Polygon","Line","Point"],nq={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},Lc={};_I(Lc,nq,Bw.map(t=>({key:t,method:`ResolveCoincidentTopology${t}OffsetParameters`})));function rq(t,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),W.setGet(t,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(q5).forEach(r=>{t[r]=q5[r]}),Object.keys(Lc).forEach(r=>{t[r]=Lc[r]}),_I(t,e.topologyOffset,Bw.map(r=>({key:r,method:`RelativeCoincidentTopology${r}OffsetParameters`}))),t.getCoincidentTopologyPolygonOffsetParameters=()=>{const r=Lc.getResolveCoincidentTopologyPolygonOffsetParameters(),n=t.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyLineOffsetParameters=()=>{const r=Lc.getResolveCoincidentTopologyLineOffsetParameters(),n=t.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}},t.getCoincidentTopologyPointOffsetParameter=()=>{const r=Lc.getResolveCoincidentTopologyPointOffsetParameters(),n=t.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:r.factor+n.factor,offset:r.offset+n.offset}}}var i2={implementCoincidentTopologyMethods:rq,staticOffsetAPI:Lc,otherStaticMethods:q5,CATEGORIES:Bw,Resolve:ko};const{FieldAssociations:QT}=w0,{staticOffsetAPI:iq,otherStaticMethods:oq}=i2,{ColorMode:fg,ScalarMode:hc,GetArray:Dv}=t2,{VectorMode:aq}=Uw,{VtkDataTypes:sq}=tt;function J0(t){return()=>W.vtkErrorMacro(`vtkMapper::${t} - NOT IMPLEMENTED`)}function cq(t,e){const r=t[1]%2===0?1:-1;if(t[0]+=r,t[0]>=e[0]||t[0]<0){const n=t[2]%2===0?1:-1;t[0]-=r,t[1]+=n,(t[1]>=e[1]||t[1]<0)&&(t[1]-=n,t[2]++)}}function lq(t,e){return t[0]+e[0]*(t[1]+e[1]*t[2])}function e8(t,e,r){const n=Math.floor(e),i=n%(2*r[0]);let o,a;i=y,C=i[2]<=1?2:3,S=tt.newInstance({numberOfComponents:C,values:new Float32Array(m*C)}),T=S.getData(),_=[0,0,0];e8(_,n+2,i);let E=0,D=0;const b=[.5,.5,.5];for(let R=0;Rn&&(L=n+1),e8(b,L,i)}else{b[1]=.49;const L=(M-h)*g;L>1e3?b[0]=1e3:L<-1e3?b[0]=-1e3:b[0]=L}for(let L=0;L{const r=t.getInputData();return r?(e.static||t.update(),e.bounds=r.getBounds()):e.bounds=qs(),e.bounds},t.setForceCompileOnly=r=>{e.forceCompileOnly=r},t.setSelectionWebGLIdsToVTKIds=r=>{e.selectionWebGLIdsToVTKIds=r},t.createDefaultLookupTable=()=>{e.lookupTable=A1.newInstance()},t.getColorModeAsString=()=>W.enumToString(fg,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>W.enumToString(hc,e.scalarMode),t.setScalarModeToDefault=()=>t.setScalarMode(0),t.setScalarModeToUsePointData=()=>t.setScalarMode(1),t.setScalarModeToUseCellData=()=>t.setScalarMode(2),t.setScalarModeToUsePointFieldData=()=>t.setScalarMode(3),t.setScalarModeToUseCellFieldData=()=>t.setScalarMode(4),t.setScalarModeToUseFieldData=()=>t.setScalarMode(5),t.getAbstractScalars=(r,n,i,o,a)=>{if(!r||!e.scalarVisibility)return{scalars:null,cellFlag:!1};let s=null,c=!1;if(n===hc.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===hc.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===hc.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===hc.USE_POINT_FIELD_DATA){const l=r.getPointData();i===Dv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===hc.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===Dv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===hc.USE_FIELD_DATA){const l=r.getFieldData();i===Dv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}return{scalars:s,cellFlag:c}},t.mapScalars=(r,n)=>{const{scalars:i,cellFlag:o}=t.getAbstractScalars(r,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName);if(e.areScalarsMappedFromCells=o,!i){e.colorCoordinates=null,e.colorTextureMap=null,e.colorMapColors=null;return}const a=`${t.getMTime()}${i.getMTime()}${n}`;if(e.colorBuildString!==a){if(e.useLookupTableScalarRange||t.getLookupTable().setRange(e.scalarRange[0],e.scalarRange[1]),t.canUseTextureMapForColoring(i,o))e.mapScalarsToTexture(i,o,n);else{e.colorCoordinates=null,e.colorTextureMap=null;const s=t.getLookupTable();s&&(s.build(),e.colorMapColors=s.mapScalars(i,e.colorMode,e.fieldDataTupleId))}e.colorBuildString=`${t.getMTime()}${i.getMTime()}${n}`}},e.mapScalarsToTexture=(r,n,i)=>{const o=e.lookupTable.getRange(),a=e.lookupTable.usingLogScale();a&&A1.getLogRange(o,o);const s=e.lookupTable.getAlpha();if(e.colorMapColors=null,e.colorTextureMap==null||t.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getAlpha()!==i){e.lookupTable.setAlpha(i),e.colorTextureMap=null,e.lookupTable.build();const l=e.lookupTable.getNumberOfAvailableColors(),f=2048,u=f**3-3,h=4096-2,g=2,p=n?u:h;e.numberOfColorsInRange=Math.min(Math.max(l,g),p);const v=e.numberOfColorsInRange+3,x=e.numberOfColorsInRange+2,m=n?[Math.min(Math.ceil(v/f**0),f),Math.min(Math.ceil(v/f**1),f),Math.min(Math.ceil(v/f**2),f)]:[x,2,1],y=m[0]*m[1]*m[2],w=new Float64Array(y);w.fill(NaN);const C=e.numberOfColorsInRange,S=C+2,T=[0,0,0],_=o[0],E=o[1]-o[0];for(let I=0;I1?-1:e.lookupTable.getVectorComponent();e.colorCoordinates=uq(r,c,o,e.numberOfColorsInRange,e.colorTextureMap.getDimensions(),a,n)},t.getIsOpaque=()=>{const r=t.getInputData(),i=t.getAbstractScalars(r,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!e.scalarVisibility||i==null)return!0;const o=t.getLookupTable();return o?(o.build(),o.areScalarsOpaque(i,e.colorMode,-1)):!0},t.canUseTextureMapForColoring=(r,n)=>n&&e.colorMode!==fg.DIRECT_SCALARS?!0:!(!e.interpolateScalarsBeforeMapping||e.lookupTable&&e.lookupTable.getIndexedLookup()||!r||e.colorMode===fg.DEFAULT&&r.getDataType()===sq.UNSIGNED_CHAR||e.colorMode===fg.DIRECT_SCALARS),t.clearColorArrays=()=>{e.colorMapColors=null,e.colorCoordinates=null,e.colorTextureMap=null},t.getLookupTable=()=>(e.lookupTable||t.createDefaultLookupTable(),e.lookupTable),t.getMTime=()=>{let r=e.mtime;if(e.lookupTable!==null){const n=e.lookupTable.getMTime();r=n>r?n:r}return r},t.getPrimitiveCount=()=>{const r=t.getInputData();return{points:r.getPoints().getNumberOfValues()/3,verts:r.getVerts().getNumberOfValues()-r.getVerts().getNumberOfCells(),lines:r.getLines().getNumberOfValues()-2*r.getLines().getNumberOfCells(),triangles:r.getPolys().getNumberOfValues()-3*r.getPolys().getNumberOfCells()}},t.acquireInvertibleLookupTable=J0("AcquireInvertibleLookupTable"),t.valueToColor=J0("ValueToColor"),t.colorToValue=J0("ColorToValue"),t.useInvertibleColorFor=J0("UseInvertibleColorFor"),t.clearInvertibleColor=J0("ClearInvertibleColor"),t.processSelectorPixelBuffers=(r,n)=>{if(!r||!e.selectionWebGLIdsToVTKIds||!e.populateSelectionSettings)return;const i=r.getRawPixelBuffer(ai.ID_LOW24),o=r.getRawPixelBuffer(ai.ID_HIGH24),a=r.getCurrentPass(),s=r.getFieldAssociation();let c=null;s===QT.FIELD_ASSOCIATION_POINTS?c=e.selectionWebGLIdsToVTKIds.points:s===QT.FIELD_ASSOCIATION_CELLS&&(c=e.selectionWebGLIdsToVTKIds.cells),c&&n.forEach(l=>{if(a===ai.ID_LOW24){let f=0;o&&(f+=o[l],f*=256),f+=i[l+2],f*=256,f+=i[l+1],f*=256,f+=i[l];const u=c[f],d=r.getPixelBuffer(ai.ID_LOW24);d[l]=u&255,d[l+1]=(u&65280)>>8,d[l+2]=(u&16711680)>>16}else if(a===ai.ID_HIGH24&&o){let f=0;f+=o[l],f*=256,f+=i[l+2],f*=256,f+=i[l+1],f*=256,f+=i[l];const u=c[f],d=r.getPixelBuffer(ai.ID_HIGH24);d[l]=(u&4278190080)>>24}})}}const dq={colorMapColors:null,areScalarsMappedFromCells:!1,static:!1,lookupTable:null,scalarVisibility:!0,scalarRange:[0,1],useLookupTableScalarRange:!1,colorMode:0,scalarMode:0,arrayAccessMode:1,renderTime:0,colorByArrayName:null,fieldDataTupleId:-1,populateSelectionSettings:!0,selectionWebGLIdsToVTKIds:null,interpolateScalarsBeforeMapping:!1,colorCoordinates:null,colorTextureMap:null,numberOfColorsInRange:0,forceCompileOnly:0,useInvertibleColors:!1,invertibleScalars:null,customShaderAttributes:[]};function EI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dq,r),Fw.extend(t,e,r),W.get(t,e,["areScalarsMappedFromCells","colorCoordinates","colorMapColors","colorTextureMap","numberOfColorsInRange","selectionWebGLIdsToVTKIds"]),W.setGet(t,e,["colorByArrayName","arrayAccessMode","colorMode","fieldDataTupleId","interpolateScalarsBeforeMapping","lookupTable","populateSelectionSettings","renderTime","scalarMode","scalarVisibility","static","useLookupTableScalarRange","customShaderAttributes"]),W.setGetArray(t,e,["scalarRange"],2),i2.implementCoincidentTopologyMethods(t,e),fq(t,e)}const hq=W.newInstance(EI,"vtkMapper");var oa={newInstance:hq,extend:EI,...iq,...oq,...t2};const gq={DISPLAY:0,WORLD:1};var DI={CoordinateSystem:gq};const{CoordinateSystem:X5}=DI;function n8(t){return()=>W.vtkErrorMacro(`vtkProp::${t} - NOT IMPLEMENTED`)}function pq(t,e){e.classHierarchy.push("vtkProp"),t.getMTime=()=>{let r=e.mtime;for(let n=0;nr&&(r=i)}return r},t.processSelectorPixelBuffers=(r,n)=>{},t.getNestedProps=()=>null,t.getActors=()=>[],t.getActors2D=()=>[],t.getVolumes=()=>[],t.pick=n8("pick"),t.hasKey=n8("hasKey"),t.getNestedVisibility=()=>e.visibility&&(!e._parentProp||e._parentProp.getNestedVisibility()),t.getNestedPickable=()=>e.pickable&&(!e._parentProp||e._parentProp.getNestedPickable()),t.getNestedDragable=()=>e.dragable&&(!e._parentProp||e._parentProp.getNestedDragable()),t.getRedrawMTime=()=>e.mtime,t.setEstimatedRenderTime=r=>{e.estimatedRenderTime=r,e.savedEstimatedRenderTime=r},t.restoreEstimatedRenderTime=()=>{e.estimatedRenderTime=e.savedEstimatedRenderTime},t.addEstimatedRenderTime=r=>{e.estimatedRenderTime+=r},t.setAllocatedRenderTime=r=>{e.allocatedRenderTime=r,e.savedEstimatedRenderTime=e.estimatedRenderTime,e.estimatedRenderTime=0},t.getSupportsSelection=()=>!1,t.getTextures=()=>e.textures,t.hasTexture=r=>e.textures.indexOf(r)!==-1,t.addTexture=r=>{r&&!t.hasTexture(r)&&(e.textures=e.textures.concat(r),t.modified())},t.removeTexture=r=>{const n=e.textures.filter(i=>i!==r);e.textures.length!==n.length&&(e.textures=n,t.modified())},t.removeAllTextures=()=>{e.textures=[],t.modified()},t.setCoordinateSystemToWorld=()=>t.setCoordinateSystem(X5.WORLD),t.setCoordinateSystemToDisplay=()=>t.setCoordinateSystem(X5.DISPLAY)}const mq={allocatedRenderTime:10,coordinateSystem:X5.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function bI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mq,r),W.obj(t,e),W.get(t,e,["estimatedRenderTime","allocatedRenderTime"]),W.setGet(t,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),W.moveToProtected(t,e,["parentProp"]),pq(t,e)}const vq=W.newInstance(bI,"vtkProp");var xh={newInstance:vq,extend:bI,...DI},Gw=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkPolyDataVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ - -attribute vec4 vertexMC; - -// frag position in VC -//VTK::PositionVC::Dec - -// optional normal declaration -//VTK::Normal::Dec - -// extra lighting parameters -//VTK::Light::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -// material property values -//VTK::Color::Dec - -// clipping plane vars -//VTK::Clip::Dec - -// camera and actor matrix values -//VTK::Camera::Dec - -// Apple Bug -//VTK::PrimID::Dec - -// picking support -//VTK::Picking::Dec - -void main() -{ - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Clip::Impl - - //VTK::PrimID::Impl - - //VTK::PositionVC::Impl - - //VTK::Light::Impl - - //VTK::Picking::Impl -} -`,wh=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkPolyDataFS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// Template for the polydata mappers fragment shader - -uniform int PrimitiveIDOffset; - -// VC position of this fragment -//VTK::PositionVC::Dec - -// optional color passed in from the vertex shader, vertexColor -//VTK::Color::Dec - -// optional surface normal declaration -//VTK::Normal::Dec - -// extra lighting parameters -//VTK::Light::Dec - -// define vtkImageLabelOutlineOn -//VTK::ImageLabelOutlineOn - -// Texture coordinates -//VTK::TCoord::Dec - -// picking support -//VTK::Picking::Dec - -// Depth Peeling Support -//VTK::DepthPeeling::Dec - -// clipping plane vars -//VTK::Clip::Dec - -// label outline -//VTK::LabelOutline::Dec - -// the output of this shader -//VTK::Output::Dec - -// Apple Bug -//VTK::PrimID::Dec - -// handle coincident offsets -//VTK::Coincident::Dec - -//VTK::ZBuffer::Dec - -//VTK::LabelOutlineHelperFunction - -void main() -{ - // VC position of this fragment. This should not branch/return/discard. - //VTK::PositionVC::Impl - - // Place any calls that require uniform flow (e.g. dFdx) here. - //VTK::UniformFlow::Impl - - // Set gl_FragDepth here (gl_FragCoord.z by default) - //VTK::Depth::Impl - - // Early depth peeling abort: - //VTK::DepthPeeling::PreColor - - // Apple Bug - //VTK::PrimID::Impl - - //VTK::Clip::Impl - - //VTK::Color::Impl - - // Generate the normal if we are not passed in one - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Light::Impl - - if (gl_FragData[0].a <= 0.0) - { - discard; - } - - //VTK::DepthPeeling::Impl - - //VTK::Picking::Impl - - // handle coincident offsets - //VTK::Coincident::Impl - - //VTK::ZBuffer::Impl - - //VTK::RenderPassFragmentShader::Impl -} -`;function yq(t,e){t.replaceShaderCoincidentOffset=(r,n,i)=>{const o=t.getCoincidentParameters(n,i);if(o&&(o.factor!==0||o.offset!==0)){let a=r.Fragment;a=ce.substitute(a,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(o.factor!==0?(a=ce.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=ce.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=ce.substitute(a,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(o.factor!==0?(a=ce.substitute(a,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,a=ce.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):a=ce.substitute(a,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),r.Fragment=a}}}function xq(t,e){t.applyShaderReplacements=(r,n,i)=>{let o=null;if(n&&(o=n.ShaderReplacements),o)for(let a=0;a{t.getReplacedShaderTemplate(r,n,i),e.lastRenderPassShaderReplacement=e.currentRenderPass?e.currentRenderPass.getShaderReplacement():null,e.lastRenderPassShaderReplacement&&e.lastRenderPassShaderReplacement(r);const o=e.renderable.getViewSpecificProperties().OpenGL;t.applyShaderReplacements(r,o,!0),t.replaceShaderValues(r,n,i),t.applyShaderReplacements(r,o)},t.getReplacedShaderTemplate=(r,n,i)=>{const o=e.renderable.getViewSpecificProperties().OpenGL;t.getShaderTemplate(r,n,i);let a=r.Vertex;if(o){const l=o.VertexShaderCode;l!==void 0&&l!==""&&(a=l)}r.Vertex=a;let s=r.Fragment;if(o){const l=o.FragmentShaderCode;l!==void 0&&l!==""&&(s=l)}r.Fragment=s;let c=r.Geometry;if(o){const l=o.GeometryShaderCode;l!==void 0&&(c=l)}r.Geometry=c}}var aa={implementReplaceShaderCoincidentOffset:yq,implementBuildShadersWithReplacements:xq};const{FieldAssociations:bv}=w0,{primTypes:mr}=fa,{Representation:kl,Shading:r8}=x0,{ScalarMode:dg}=oa,{Filter:i8,Wrap:o8}=yn,{vtkErrorMacro:gc}=Br,wq={type:"StartEvent"},Cq={type:"EndEvent"},{CoordinateSystem:Sq}=xh;function Tq(t){const e=t.getSelector();return e?e.getCurrentPass():ai.MIN_KNOWN_PASS-1}function _q(t,e){e.classHierarchy.push("vtkOpenGLPolyDataMapper"),t.buildPass=n=>{n&&(e.currentRenderPass=null,e.openGLActor=t.getFirstAncestorOfType("vtkOpenGLActor"),e._openGLRenderer=e.openGLActor.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()))},t.translucentPass=(n,i)=>{n&&(e.currentRenderPass=i,t.render())},t.zBufferPass=n=>{n&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=n=>t.zBufferPass(n),t.opaquePass=n=>{n&&t.render()},t.render=()=>{const n=e._openGLRenderWindow.getContext();if(e.context!==n){e.context=n;for(let a=mr.Start;a{n.Vertex=Gw,n.Fragment=wh,n.Geometry=""},t.replaceShaderColor=(n,i,o)=>{let a=n.Vertex,s=n.Geometry,c=n.Fragment;const l=e.lastBoundBO.getReferenceByName("lastLightComplexity");let f=["uniform float ambient;","uniform float diffuse;","uniform float specular;","uniform float opacityUniform; // the fragment opacity","uniform vec3 ambientColorUniform;","uniform vec3 diffuseColorUniform;"];l&&(f=f.concat(["uniform vec3 specularColorUniform;","uniform float specularPowerUniform;"]));let u=["vec3 ambientColor;"," vec3 diffuseColor;"," float opacity;"];l&&(u=u.concat([" vec3 specularColor;"," float specularPower;"])),u=u.concat([" ambientColor = ambientColorUniform;"," diffuseColor = diffuseColorUniform;"," opacity = opacityUniform;"]),l&&(u=u.concat([" specularColor = specularColorUniform;"," specularPower = specularPowerUniform;"])),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges&&(f=f.concat(["varying vec4 vertexColorVSOutput;"]),a=ce.substitute(a,"//VTK::Color::Dec",["attribute vec4 scalarColor;","varying vec4 vertexColorVSOutput;"]).result,a=ce.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = scalarColor;"]).result,s=ce.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=ce.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges?c=ce.substitute(c,"//VTK::Color::Impl",u.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])).result:(e.renderable.getAreScalarsMappedFromCells()||e.renderable.getInterpolateScalarsBeforeMapping())&&e.renderable.getColorCoordinates()&&!e.drawingEdges?c=ce.substitute(c,"//VTK::Color::Impl",u.concat([" vec4 texColor = texture2D(texture1, tcoordVCVSOutput.st);"," diffuseColor = texColor.rgb;"," ambientColor = texColor.rgb;"," opacity = opacity*texColor.a;"])).result:(o.getBackfaceProperty()&&!e.drawingEdges&&(f=f.concat(["uniform float opacityUniformBF; // the fragment opacity","uniform float ambientIntensityBF; // the material ambient","uniform float diffuseIntensityBF; // the material diffuse","uniform vec3 ambientColorUniformBF; // ambient material color","uniform vec3 diffuseColorUniformBF; // diffuse material color"]),l?(f=f.concat(["uniform float specularIntensityBF; // the material specular intensity","uniform vec3 specularColorUniformBF; // intensity weighted color","uniform float specularPowerUniformBF;"]),u=u.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," specularColor = specularIntensityBF * specularColorUniformBF;"," specularPower = specularPowerUniformBF;"," opacity = opacityUniformBF; }"])):u=u.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," opacity = opacityUniformBF; }"])),e.haveCellScalars&&!e.drawingEdges&&(f=f.concat(["uniform samplerBuffer texture1;"])),c=ce.substitute(c,"//VTK::Color::Impl",u).result),c=ce.substitute(c,"//VTK::Color::Dec",f).result,n.Vertex=a,n.Geometry=s,n.Fragment=c},t.replaceShaderLight=(n,i,o)=>{let a=n.Fragment;const s="",c=e.lastBoundBO.getReferenceByName("lastLightComplexity"),l=e.lastBoundBO.getReferenceByName("lastLightCount");let f=[];switch(c){case 0:a=ce.substitute(a,"//VTK::Light::Impl",[" gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);"," //VTK::Light::Impl"],!1).result;break;case 1:a=ce.substitute(a,"//VTK::Light::Impl",[" float df = max(0.0, normalVCVSOutput.z);"," float sf = pow(df, specularPower);"," vec3 diffuseL = df * diffuseColor;"," vec3 specularL = sf * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"],!1).result;break;case 2:for(let u=0;u= cos(radians(lightConeAngle${u})))`," {",` attenuation = attenuation * pow(coneDot, lightExponent${u});`," }"," else"," {"," attenuation = 0.0;"," }"," }"," }"," df = max(0.0, attenuation*dot(normalVCVSOutput, -vertLightDirectionVC));",` diffuseL += ((df${s}) * lightColor${u});`," if (dot(normalVCVSOutput, vertLightDirectionVC) < 0.0)"," {",` float sf = sign(df)*attenuation*pow(max(1e-5, - dot(reflect(lightDirectionVC${u}, - normalVCVSOutput), - normalize(-vertexVC.xyz))), - specularPower);`,` specularL += ((sf${s}) * lightColor${u});`," }"]);f=f.concat([" diffuseL = diffuseL * diffuseColor;"," specularL = specularL * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"]),a=ce.substitute(a,"//VTK::Light::Impl",f,!1).result;break;default:gc("bad light complexity")}n.Fragment=a},t.replaceShaderNormal=(n,i,o)=>{if(e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let s=n.Vertex,c=n.Geometry,l=n.Fragment;e.lastBoundBO.getCABO().getNormalOffset()?(s=ce.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=ce.substitute(s,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * normalMC;"]).result,c=ce.substitute(c,"//VTK::Normal::Dec",["in vec3 normalVCVSOutput[];","out vec3 normalVCGSOutput;"]).result,c=ce.substitute(c,"//VTK::Normal::Impl",["normalVCGSOutput = normalVCVSOutput[i];"]).result,l=ce.substitute(l,"//VTK::Normal::Dec",["varying vec3 normalVCVSOutput;"]).result,l=ce.substitute(l,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalVCVSOutput);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.haveCellNormals?(l=ce.substitute(l,"//VTK::Normal::Dec",["uniform mat3 normalMatrix;","uniform samplerBuffer textureN;"]).result,l=ce.substitute(l,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalMatrix *"," texelFetchBuffer(textureN, gl_PrimitiveID + PrimitiveIDOffset).xyz);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.lastBoundBO.getOpenGLMode(o.getProperty().getRepresentation())===e.context.LINES?(l=ce.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=ce.substitute(l,"//VTK::Normal::Impl",["vec3 normalVCVSOutput;"," if (abs(fdx.x) > 0.0)"," { fdx = normalize(fdx); normalVCVSOutput = normalize(cross(vec3(fdx.y, -fdx.x, 0.0), fdx)); }"," else { fdy = normalize(fdy); normalVCVSOutput = normalize(cross(vec3(fdy.y, -fdy.x, 0.0), fdy));}"]).result):(l=ce.substitute(l,"//VTK::Normal::Dec",["uniform int cameraParallel;"]).result,l=ce.substitute(l,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,l=ce.substitute(l,"//VTK::Normal::Impl",[" fdx = normalize(fdx);"," fdy = normalize(fdy);"," vec3 normalVCVSOutput = normalize(cross(fdx,fdy));"," if (cameraParallel == 1 && normalVCVSOutput.z < 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"," if (cameraParallel == 0 && dot(normalVCVSOutput,vertexVC.xyz) > 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"]).result),n.Vertex=s,n.Geometry=c,n.Fragment=l}},t.replaceShaderPositionVC=(n,i,o)=>{e.lastBoundBO.replaceShaderPositionVC(n,i,o);let a=n.Vertex,s=n.Geometry,c=n.Fragment;e.lastBoundBO.getReferenceByName("lastLightComplexity")>0?(a=ce.substitute(a,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,a=ce.substitute(a,"//VTK::PositionVC::Impl",["vertexVCVSOutput = MCVCMatrix * vertexMC;"," gl_Position = MCPCMatrix * vertexMC;"]).result,a=ce.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result,s=ce.substitute(s,"//VTK::PositionVC::Dec",["in vec4 vertexVCVSOutput[];","out vec4 vertexVCGSOutput;"]).result,s=ce.substitute(s,"//VTK::PositionVC::Impl",["vertexVCGSOutput = vertexVCVSOutput[i];"]).result,c=ce.substitute(c,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,c=ce.substitute(c,"//VTK::PositionVC::Impl",["vec4 vertexVC = vertexVCVSOutput;"]).result):(a=ce.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=ce.substitute(a,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result),n.Vertex=a,n.Geometry=s,n.Fragment=c},t.replaceShaderTCoord=(n,i,o)=>{if(e.lastBoundBO.getCABO().getTCoordOffset()){let a=n.Vertex,s=n.Geometry,c=n.Fragment;if(e.drawingEdges)return;a=ce.substitute(a,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result;const l=e.openGLActor.getActiveTextures();let f=2,u=2;if(l&&l.length>0&&(f=l[0].getComponents(),l[0].getTarget()===e.context.TEXTURE_CUBE_MAP&&(u=3)),e.renderable.getColorTextureMap()&&(f=e.renderable.getColorTextureMap().getPointData().getScalars().getNumberOfComponents(),u=2),u===2){if(a=ce.substitute(a,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result,s=ce.substitute(s,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput[];","out vec2 tcoordVCGSOutput;"]).result,s=ce.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=ce.substitute(c,"//VTK::TCoord::Dec",["varying vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,l&&l.length>=1)switch(f){case 1:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}}else switch(a=ce.substitute(a,"//VTK::TCoord::Dec","attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;").result,s=ce.substitute(s,"//VTK::TCoord::Dec",["in vec3 tcoordVCVSOutput[];","out vec3 tcoordVCGSOutput;"]).result,s=ce.substitute(s,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,c=ce.substitute(c,"//VTK::TCoord::Dec",["varying vec3 tcoordVCVSOutput;","uniform samplerCube texture1;"]).result,f){case 1:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:c=ce.substitute(c,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}n.Vertex=a,n.Geometry=s,n.Fragment=c}},t.replaceShaderClip=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){const c=e.renderable.getNumberOfClippingPlanes();a=ce.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`uniform vec4 clipPlanes[${c}];`,`varying float clipDistancesVSOutput[${c}];`]).result,a=ce.substitute(a,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${c}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=ce.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`varying float clipDistancesVSOutput[${c}];`]).result,s=ce.substitute(s,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${c}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}n.Vertex=a,n.Fragment=s},t.getCoincidentParameters=(n,i)=>{let o={factor:0,offset:0};const a=i.getProperty();if(e.renderable.getResolveCoincidentTopology()==ko.PolygonOffset||a.getEdgeVisibility()&&a.getRepresentation()===kl.SURFACE){const c=e.lastBoundBO.getPrimitiveType();c===mr.Points||a.getRepresentation()===kl.POINTS?o=e.renderable.getCoincidentTopologyPointOffsetParameter():c===mr.Lines||a.getRepresentation()===kl.WIREFRAME?o=e.renderable.getCoincidentTopologyLineOffsetParameters():(c===mr.Tris||c===mr.TriStrips)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters()),(c===mr.TrisEdges||c===mr.TriStripsEdges)&&(o=e.renderable.getCoincidentTopologyPolygonOffsetParameters(),o.factor/=2,o.offset/=2)}const s=e._openGLRenderer.getSelector();return s&&s.getFieldAssociation()===bv.FIELD_ASSOCIATION_POINTS&&(o.offset-=2),o},t.replaceShaderPicking=(n,i,o)=>{let a=n.Fragment,s=n.Vertex;if(a=ce.substitute(a,"//VTK::Picking::Dec",["uniform int picking;","//VTK::Picking::Dec"]).result,!!e._openGLRenderer.getSelector()){switch((e.lastSelectionState===ai.ID_LOW24||e.lastSelectionState===ai.ID_HIGH24)&&(s=ce.substitute(s,"//VTK::Picking::Dec",[`flat out int vertexIDVSOutput; -`,`uniform int VertexIDOffset; -`]).result,s=ce.substitute(s,"//VTK::Picking::Impl",` vertexIDVSOutput = gl_VertexID + VertexIDOffset; -`).result,a=ce.substitute(a,"//VTK::Picking::Dec",`flat in int vertexIDVSOutput; -`).result,a=ce.substitute(a,"//VTK::Picking::Impl",[" int idx = vertexIDVSOutput;","//VTK::Picking::Impl"]).result),e.lastSelectionState){case ai.ID_LOW24:a=ce.substitute(a,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float(idx%256)/255.0, float((idx/256)%256)/255.0, float((idx/65536)%256)/255.0, 1.0);").result;break;case ai.ID_HIGH24:a=ce.substitute(a,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float((idx/16777216)%256)/255.0, 0.0, 0.0, 1.0);").result;break;default:a=ce.substitute(a,"//VTK::Picking::Dec","uniform vec3 mapperIndex;").result,a=ce.substitute(a,"//VTK::Picking::Impl"," gl_FragData[0] = picking != 0 ? vec4(mapperIndex,1.0) : gl_FragData[0];").result}n.Fragment=a,n.Vertex=s}},t.replaceShaderValues=(n,i,o)=>{if(t.replaceShaderColor(n,i,o),t.replaceShaderNormal(n,i,o),t.replaceShaderLight(n,i,o),t.replaceShaderTCoord(n,i,o),t.replaceShaderPicking(n,i,o),t.replaceShaderClip(n,i,o),t.replaceShaderCoincidentOffset(n,i,o),t.replaceShaderPositionVC(n,i,o),e.haveSeenDepthRequest){let a=n.Fragment;a=ce.substitute(a,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,a=ce.substitute(a,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,n.Fragment=a}},t.getNeedToRebuildShaders=(n,i,o)=>{let a=0,s=0;const c=n.getPrimitiveType(),l=e.currentInput;let f=!1;const u=l.getPointData().getNormals(),d=l.getCellData().getNormals(),h=o.getProperty().getInterpolation()===r8.FLAT,g=o.getProperty().getRepresentation(),p=n.getOpenGLMode(g,c);if((p===e.context.TRIANGLES||d&&!u||!h&&u||!h&&p===e.context.LINES)&&(f=!0),o.getProperty().getLighting()&&f){a=0;const y=i.getLightsByReference();for(let w=0;w0&&(s++,a===0&&(a=1)),a===1&&(s>1||C.getIntensity()!==1||!C.lightTypeIsHeadLight())&&(a=2),a<3&&C.getPositional()&&(a=3)}}let v=!1;const x=e.lastBoundBO.getReferenceByName("lastLightComplexity"),m=e.lastBoundBO.getReferenceByName("lastLightCount");return(x!==a||m!==s)&&(e.lastBoundBO.set({lastLightComplexity:a},!0),e.lastBoundBO.set({lastLightCount:s},!0),v=!0),(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(v=!0),e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||n.getShaderSourceTime().getMTime(){const a=e.renderable.getViewSpecificProperties().ShadersCallbacks;a&&a.forEach(s=>{s.callback(s.userData,n,i,o)})},t.setMapperShaderParameters=(n,i,o)=>{if(n.getProgram().isUniformUsed("PrimitiveIDOffset")&&n.getProgram().setUniformi("PrimitiveIDOffset",e.primitiveIDOffset),n.getProgram().isUniformUsed("VertexIDOffset")&&n.getProgram().setUniformi("VertexIDOffset",e.vertexIDOffset),n.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())){const c=e.lastBoundBO.getReferenceByName("lastLightComplexity");n.getProgram().isAttributeUsed("vertexMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"vertexMC",n.getCABO().getVertexOffset(),n.getCABO().getStride(),e.context.FLOAT,3,!1)||gc("Error setting vertexMC in shader VAO.")),n.getProgram().isAttributeUsed("normalMC")&&n.getCABO().getNormalOffset()&&c>0?n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"normalMC",n.getCABO().getNormalOffset(),n.getCABO().getStride(),e.context.FLOAT,3,!1)||gc("Error setting normalMC in shader VAO."):n.getVAO().removeAttributeArray("normalMC"),e.renderable.getCustomShaderAttributes().forEach((l,f)=>{n.getProgram().isAttributeUsed(`${l}MC`)&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),`${l}MC`,n.getCABO().getCustomData()[f].offset,n.getCABO().getStride(),e.context.FLOAT,n.getCABO().getCustomData()[f].components,!1)||gc(`Error setting ${l}MC in shader VAO.`))}),n.getProgram().isAttributeUsed("tcoordMC")&&n.getCABO().getTCoordOffset()?n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"tcoordMC",n.getCABO().getTCoordOffset(),n.getCABO().getStride(),e.context.FLOAT,n.getCABO().getTCoordComponents(),!1)||gc("Error setting tcoordMC in shader VAO."):n.getVAO().removeAttributeArray("tcoordMC"),n.getProgram().isAttributeUsed("scalarColor")&&n.getCABO().getColorComponents()?n.getVAO().addAttributeArray(n.getProgram(),n.getCABO().getColorBO(),"scalarColor",n.getCABO().getColorOffset(),n.getCABO().getColorBOStride(),e.context.UNSIGNED_BYTE,4,!0)||gc("Error setting scalarColor in shader VAO."):n.getVAO().removeAttributeArray("scalarColor"),n.getAttributeUpdateTime().modified()}if(e.renderable.getNumberOfClippingPlanes()){const c=e.renderable.getNumberOfClippingPlanes(),l=[],u=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,d=u?_n(e.tmpMat4,o.getMatrix()):o.getMatrix();u&&(St(d,d),bt(d,d,u),St(d,d));for(let h=0;h{const a=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(a<2)return;const s=n.getProgram();let c=0;const l=i.getLightsByReference();for(let d=0;d0){const p=h.getColorByReference(),v=h.getIntensity();e.lightColor[0]=p[0]*v,e.lightColor[1]=p[1]*v,e.lightColor[2]=p[2]*v;const x=h.getDirection(),m=i.getActiveCamera().getViewMatrix(),y=[...x];h.lightTypeIsSceneLight()&&(y[0]=m[0]*x[0]+m[1]*x[1]+m[2]*x[2],y[1]=m[4]*x[0]+m[5]*x[1]+m[6]*x[2],y[2]=m[8]*x[0]+m[9]*x[1]+m[10]*x[2],cl(y)),e.lightDirection[0]=y[0],e.lightDirection[1]=y[1],e.lightDirection[2]=y[2],cl(e.lightDirection),s.setUniform3fArray(`lightColor${c}`,e.lightColor),s.setUniform3fArray(`lightDirectionVC${c}`,e.lightDirection),c++}}if(a<3)return;const u=i.getActiveCamera().getViewMatrix();St(u,u),c=0;for(let d=0;d0){const p=h.getTransformedPosition(),v=new Float64Array(3);et(v,p,u),s.setUniform3fArray(`lightAttenuation${c}`,h.getAttenuationValuesByReference()),s.setUniformi(`lightPositional${c}`,h.getPositional()),s.setUniformf(`lightExponent${c}`,h.getExponent()),s.setUniformf(`lightConeAngle${c}`,h.getConeAngle()),s.setUniform3fArray(`lightPositionVC${c}`,[v[0],v[1],v[2]]),c++}}};function r(n,i,o){return i.identity(o),n.reduce((a,s,c)=>c===0?s?i.copy(a,s):i.identity(a):s?i.multiply(a,a,s):a,o)}t.setCameraShaderParameters=(n,i,o)=>{const a=n.getProgram(),s=e.openGLCamera.getKeyMatrices(i),c=i.getActiveCamera(),l=e.openGLCamera.getKeyMatrixTime().getMTime(),f=a.getLastCameraMTime(),d=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,h=o.getIsIdentity(),g=h?{mcwc:null,normalMatrix:null}:e.openGLActor.getKeyMatrices();if(o.getCoordinateSystem()===Sq.DISPLAY){const p=e._openGLRenderer.getTiledSizeAndOrigin();qe(e.tmpMat4),e.tmpMat4[0]=2/p.usize,e.tmpMat4[12]=-1,e.tmpMat4[5]=2/p.vsize,e.tmpMat4[13]=-1,bt(e.tmpMat4,e.tmpMat4,d),a.setUniformMatrix("MCPCMatrix",e.tmpMat4)}else a.setUniformMatrix("MCPCMatrix",r([s.wcpc,g.mcwc,d],Od,e.tmpMat4));a.isUniformUsed("MCVCMatrix")&&a.setUniformMatrix("MCVCMatrix",r([s.wcvc,g.mcwc,d],Od,e.tmpMat4)),a.isUniformUsed("normalMatrix")&&a.setUniformMatrix3x3("normalMatrix",r([s.normalMatrix,g.normalMatrix],b$,e.tmpMat3)),f!==l&&(a.isUniformUsed("cameraParallel")&&a.setUniformi("cameraParallel",c.getParallelProjection()),a.setLastCameraMTime(l)),h||a.setLastCameraMTime(0)},t.setPropertyShaderParameters=(n,i,o)=>{const a=n.getProgram();let s=o.getProperty(),c=s.getOpacity(),l=e.drawingEdges?s.getEdgeColorByReference():s.getAmbientColorByReference(),f=e.drawingEdges?s.getEdgeColorByReference():s.getDiffuseColorByReference(),u=e.drawingEdges?1:s.getAmbient(),d=e.drawingEdges?0:s.getDiffuse(),h=e.drawingEdges?0:s.getSpecular();const g=s.getSpecularPower();a.setUniformf("opacityUniform",c),a.setUniform3fArray("ambientColorUniform",l),a.setUniform3fArray("diffuseColorUniform",f),a.setUniformf("ambient",u),a.setUniformf("diffuse",d);const p=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(p<1)return;let v=s.getSpecularColorByReference();if(a.setUniform3fArray("specularColorUniform",v),a.setUniformf("specularPowerUniform",g),a.setUniformf("specular",h),a.isUniformUsed("ambientIntensityBF")){if(s=o.getBackfaceProperty(),c=s.getOpacity(),l=s.getAmbientColor(),u=s.getAmbient(),f=s.getDiffuseColor(),d=s.getDiffuse(),v=s.getSpecularColor(),h=s.getSpecular(),a.setUniformf("ambientIntensityBF",u),a.setUniformf("diffuseIntensityBF",d),a.setUniformf("opacityUniformBF",c),a.setUniform3fArray("ambientColorUniformBF",l),a.setUniform3fArray("diffuseColorUniformBF",f),p<1)return;a.setUniformf("specularIntensityBF",h),a.setUniform3fArray("specularColorUniformBF",v),a.setUniformf("specularPowerUniformBF",g)}},t.updateMaximumPointCellIds=(n,i)=>{var s,c,l,f;const o=e._openGLRenderer.getSelector();if(!o)return;if((c=(s=e.selectionWebGLIdsToVTKIds)==null?void 0:s.points)!=null&&c.length){const u=e.selectionWebGLIdsToVTKIds.points.length;o.setMaximumPointId(u-1)}if((f=(l=e.selectionWebGLIdsToVTKIds)==null?void 0:l.cells)!=null&&f.length){const u=e.selectionWebGLIdsToVTKIds.cells.length;o.setMaximumCellId(u-1)}o.getFieldAssociation()===bv.FIELD_ASSOCIATION_POINTS&&(e.pointPicking=!0)},t.renderPieceStart=(n,i)=>{e.primitiveIDOffset=0,e.vertexIDOffset=0;const o=Tq(e._openGLRenderer);if(e.lastSelectionState!==o&&(e.selectionStateChanged.modified(),e.lastSelectionState=o),e._openGLRenderer.getSelector())switch(o){default:e._openGLRenderer.getSelector().renderProp(i)}t.updateBufferObjects(n,i),e.renderable.getColorTextureMap()&&e.internalColorTexture.activate(),e.lastBoundBO=null},t.renderPieceDraw=(n,i)=>{const o=i.getProperty().getRepresentation(),a=i.getProperty().getEdgeVisibility()&&o===kl.SURFACE,s=e._openGLRenderer.getSelector(),c=s&&s.getFieldAssociation()===bv.FIELD_ASSOCIATION_POINTS&&(e.lastSelectionState===ai.ID_LOW24||e.lastSelectionState===ai.ID_HIGH24);for(let l=mr.Start;l=0))&&(e.lastBoundBO=e.primitives[l],e.primitiveIDOffset+=e.primitives[l].drawArrays(n,i,o,t),e.vertexIDOffset+=e.primitives[l].getCABO().getElementCount()))},t.renderPieceFinish=(n,i)=>{e.LastBoundBO&&e.LastBoundBO.getVAO().release(),e.renderable.getColorTextureMap()&&e.internalColorTexture.deactivate()},t.renderPiece=(n,i)=>{if(t.invokeEvent(wq),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(Cq),!e.currentInput){gc("No input!");return}if(!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues())return;const o=e.context,a=i.getProperty().getBackfaceCulling(),s=i.getProperty().getFrontfaceCulling();!a&&!s?e._openGLRenderWindow.disableCullFace():s?(e._openGLRenderWindow.enableCullFace(),o.cullFace(o.FRONT)):(e._openGLRenderWindow.enableCullFace(),o.cullFace(o.BACK)),t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i)},t.computeBounds=(n,i)=>{if(!t.getInput()){y0(e.bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(n,i)=>{t.getNeedToRebuildBufferObjects(n,i)&&t.buildBufferObjects(n,i),t.updateMaximumPointCellIds()},t.getNeedToRebuildBufferObjects=(n,i)=>{const o=e.VBOBuildTime.getMTime();return o{const o=e.currentInput;if(o===null)return;e.renderable.mapScalars(o,1);const a=e.renderable.getColorMapColors();e.haveCellScalars=!1;const s=e.renderable.getScalarMode();e.renderable.getScalarVisibility()&&(s===dg.USE_CELL_DATA||s===dg.USE_CELL_FIELD_DATA||s===dg.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==dg.USE_POINT_FIELD_DATA&&a&&(e.haveCellScalars=!0);let c=i.getProperty().getInterpolation()!==r8.FLAT?o.getPointData().getNormals():null;c===null&&o.getCellData().getNormals()&&(e.haveCellNormals=!0,c=o.getCellData().getNormals());const l=i.getProperty().getRepresentation();let f=o.getPointData().getTCoords();e.openGLActor.getActiveTextures()||(f=null);let u=!1;if(e.renderable.getColorCoordinates()){f=e.renderable.getColorCoordinates(),u=e.renderable.getAreScalarsMappedFromCells(),e.internalColorTexture||(e.internalColorTexture=yn.newInstance({resizable:!0}));const h=e.internalColorTexture;h.setMinificationFilter(i8.NEAREST),h.setMagnificationFilter(i8.NEAREST),h.setWrapS(o8.CLAMP_TO_EDGE),h.setWrapT(o8.CLAMP_TO_EDGE),h.setOpenGLRenderWindow(e._openGLRenderWindow);const g=e.renderable.getColorTextureMap(),p=g.getExtent(),v=g.getPointData().getScalars();h.create2DFromRaw(p[1]-p[0]+1,p[3]-p[2]+1,v.getNumberOfComponents(),v.getDataType(),v.getData()),h.activate(),h.sendParameters(),h.deactivate()}const d=`${o.getMTime()}A${l}B${o.getMTime()}C${c?c.getMTime():1}D${a?a.getMTime():1}E${i.getProperty().getEdgeVisibility()}F${f?f.getMTime():1}`;if(e.VBOBuildString!==d){const g={points:o.getPoints(),normals:c,tcoords:f,colors:a,cellOffset:0,vertexOffset:0,useTCoordsPerCell:u,haveCellScalars:e.haveCellScalars,haveCellNormals:e.haveCellNormals,customAttributes:e.renderable.getCustomShaderAttributes().map(x=>o.getPointData().getArrayByName(x))};e.renderable.getPopulateSelectionSettings()&&(e.selectionWebGLIdsToVTKIds={points:null,cells:null});const p=[{inRep:"verts",cells:o.getVerts()},{inRep:"lines",cells:o.getLines()},{inRep:"polys",cells:o.getPolys()},{inRep:"strips",cells:o.getStrips()},{inRep:"polys",cells:o.getPolys()},{inRep:"strips",cells:o.getStrips()}],v=i.getProperty().getEdgeVisibility()&&l===kl.SURFACE;for(let x=mr.Start;x{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const Eq={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null,tmpMat4:null,ambientColor:[],diffuseColor:[],specularColor:[],lightColor:[],lightDirection:[],lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastSelectionState:ai.MIN_KNOWN_PASS-1,selectionStateChanged:null,selectionWebGLIdsToVTKIds:null,pointPicking:!1};function II(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Eq,r),tn.extend(t,e,r),aa.implementReplaceShaderCoincidentOffset(t,e,r),aa.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=mr,e.tmpMat3=ao(new Float64Array(9)),e.tmpMat4=qe(new Float64Array(16));for(let n=mr.Start;n{if(t.invokeEvent(Iq),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(1),t.invokeEvent(Oq),!e.currentInput){Z0("No input!");return}if(!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues())return;const o=e.context;e._openGLRenderWindow.getWebgl2()?(e.hardwareSupport=!0,e.extension=null):e.extension||(e.extension=e.context.getExtension("ANGLE_instanced_arrays"),e.hardwareSupport=!!e.extension);const a=i.getProperty().getBackfaceCulling(),s=i.getProperty().getFrontfaceCulling();!a&&!s?e._openGLRenderWindow.disableCullFace():s?(e._openGLRenderWindow.enableCullFace(),o.cullFace(o.FRONT)):(e._openGLRenderWindow.enableCullFace(),o.cullFace(o.BACK)),t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i)},t.multiply4x4WithOffset=(n,i,o,a)=>{const s=i[0],c=i[1],l=i[2],f=i[3],u=i[4],d=i[5],h=i[6],g=i[7],p=i[8],v=i[9],x=i[10],m=i[11],y=i[12],w=i[13],C=i[14],S=i[15];let T=o[a],_=o[a+1],E=o[a+2],D=o[a+3];n[0]=T*s+_*u+E*p+D*y,n[1]=T*c+_*d+E*v+D*w,n[2]=T*l+_*h+E*x+D*C,n[3]=T*f+_*g+E*m+D*S,T=o[a+4],_=o[a+5],E=o[a+6],D=o[a+7],n[4]=T*s+_*u+E*p+D*y,n[5]=T*c+_*d+E*v+D*w,n[6]=T*l+_*h+E*x+D*C,n[7]=T*f+_*g+E*m+D*S,T=o[a+8],_=o[a+9],E=o[a+10],D=o[a+11],n[8]=T*s+_*u+E*p+D*y,n[9]=T*c+_*d+E*v+D*w,n[10]=T*l+_*h+E*x+D*C,n[11]=T*f+_*g+E*m+D*S,T=o[a+12],_=o[a+13],E=o[a+14],D=o[a+15],n[12]=T*s+_*u+E*p+D*y,n[13]=T*c+_*d+E*v+D*w,n[14]=T*l+_*h+E*x+D*C,n[15]=T*f+_*g+E*m+D*S},t.replaceShaderNormal=(n,i,o)=>{if(e.hardwareSupport&&e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let s=n.Vertex;e.lastBoundBO.getCABO().getNormalOffset()&&(s=ce.substitute(s,"//VTK::Normal::Dec",["attribute vec3 normalMC;","attribute mat3 gNormal;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,s=ce.substitute(s,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * gNormal * normalMC;"]).result),n.Vertex=s}r.replaceShaderNormal(n,i,o)},t.replaceShaderColor=(n,i,o)=>{if(e.hardwareSupport&&e.renderable.getColorArray()){let a=n.Vertex,s=n.Geometry,c=n.Fragment;const l=e.lastBoundBO.getReferenceByName("lastLightComplexity");let f=["uniform float ambient;","uniform float diffuse;","uniform float specular;","uniform float opacityUniform; // the fragment opacity"];l&&(f=f.concat(["uniform vec3 specularColorUniform;","uniform float specularPowerUniform;"]));let u=["vec3 ambientColor;"," vec3 diffuseColor;"," float opacity;"];l&&(u=u.concat([" vec3 specularColor;"," float specularPower;"])),u=u.concat([" opacity = opacityUniform;"]),l&&(u=u.concat([" specularColor = specularColorUniform;"," specularPower = specularPowerUniform;"])),e.drawingEdges||(f=f.concat(["varying vec4 vertexColorVSOutput;"]),a=ce.substitute(a,"//VTK::Color::Dec",["attribute vec4 gColor;","varying vec4 vertexColorVSOutput;"]).result,a=ce.substitute(a,"//VTK::Color::Impl",["vertexColorVSOutput = gColor;"]).result,s=ce.substitute(s,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,s=ce.substitute(s,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result,u=u.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])),c=ce.substitute(c,"//VTK::Color::Impl",u).result,c=ce.substitute(c,"//VTK::Color::Dec",f).result,n.Vertex=a,n.Geometry=s,n.Fragment=c}r.replaceShaderColor(n,i,o)},t.replaceShaderPositionVC=(n,i,o)=>{if(e.hardwareSupport){let a=n.Vertex;e.lastBoundBO.getReferenceByName("lastLightComplexity")>0?(a=ce.substitute(a,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;","vertexVCVSOutput = MCVCMatrix * gVertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result,a=ce.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result):(a=ce.substitute(a,"//VTK::Camera::Dec",["attribute mat4 gMatrix;","uniform mat4 MCPCMatrix;"]).result,a=ce.substitute(a,"//VTK::PositionVC::Impl",["vec4 gVertexMC = gMatrix * vertexMC;"," gl_Position = MCPCMatrix * gVertexMC;"]).result),n.Vertex=a}r.replaceShaderPositionVC(n,i,o)},t.replaceShaderPicking=(n,i,o)=>{if(e.hardwareSupport){let a=n.Fragment,s=n.Vertex;s=ce.substitute(s,"//VTK::Picking::Dec",["attribute vec3 mapperIndexVS;","varying vec3 mapperIndexVSOutput;"]).result,s=ce.substitute(s,"//VTK::Picking::Impl"," mapperIndexVSOutput = mapperIndexVS;").result,n.Vertex=s,a=ce.substitute(a,"//VTK::Picking::Dec",["varying vec3 mapperIndexVSOutput;","uniform vec3 mapperIndex;","uniform int picking;"]).result,a=ce.substitute(a,"//VTK::Picking::Impl",[" vec4 pickColor = picking == 2 ? vec4(mapperIndexVSOutput,1.0) : vec4(mapperIndex,1.0);"," gl_FragData[0] = picking != 0 ? pickColor : gl_FragData[0];"]).result,n.Fragment=a}else r.replaceShaderPicking(n,i,o)},t.updateGlyphShaderParameters=(n,i,o,a,s,c,l,f)=>{const u=o.getProgram();if(n){const d=e.normalMatrix,h=c,g=l*9,p=e.tmpMat3,v=d[0],x=d[1],m=d[2],y=d[3],w=d[4],C=d[5],S=d[6],T=d[7],_=d[8],E=h[g],D=h[g+1],b=h[g+2],I=h[g+3],R=h[g+4],M=h[g+5],L=h[g+6],A=h[g+7],G=h[g+8];p[0]=E*v+D*y+b*S,p[1]=E*x+D*w+b*T,p[2]=E*m+D*C+b*_,p[3]=I*v+R*y+M*S,p[4]=I*x+R*w+M*T,p[5]=I*m+R*C+M*_,p[6]=L*v+A*y+G*S,p[7]=L*x+A*w+G*T,p[8]=L*m+A*C+G*_,u.setUniformMatrix3x3("normalMatrix",e.tmpMat3)}if(t.multiply4x4WithOffset(e.tmpMat4,e.mcpcMatrix,s,l*16),u.setUniformMatrix("MCPCMatrix",e.tmpMat4),i&&(t.multiply4x4WithOffset(e.tmpMat4,e.mcvcMatrix,s,l*16),u.setUniformMatrix("MCVCMatrix",e.tmpMat4)),a){const d=a.getData();e.tmpColor[0]=d[l*4]/255,e.tmpColor[1]=d[l*4+1]/255,e.tmpColor[2]=d[l*4+2]/255,u.setUniform3fArray("ambientColorUniform",e.tmpColor),u.setUniform3fArray("diffuseColorUniform",e.tmpColor)}f&&u.setUniform3fArray("mapperIndex",f.getPropColorValue())},t.renderPieceDraw=(n,i)=>{const o=i.getProperty().getRepresentation(),a=e.context,s=i.getProperty().getEdgeVisibility()&&o===Dq.SURFACE,c=e.openGLCamera.getKeyMatrices(n),l=e.openGLActor.getKeyMatrices();Ku(e.normalMatrix,c.normalMatrix,l.normalMatrix),bt(e.mcpcMatrix,c.wcpc,l.mcwc),bt(e.mcvcMatrix,c.wcvc,l.mcwc);const f=e.renderable.getMatrixArray(),u=e.renderable.getNormalArray(),d=e.renderable.getColorArray(),h=f.length/16;let g=!1;e._openGLRenderer.getSelector()&&e._openGLRenderer.getSelector().getCurrentPass()===bq.COMPOSITE_INDEX_PASS&&(g=!0);for(let p=e.primTypes.Start;p{if(n.getCABO().getElementCount()&&(e.glyphBOBuildTime.getMTime()>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())){n.getProgram().isAttributeUsed("gMatrix")?n.getVAO().addAttributeMatrixWithDivisor(n.getProgram(),e.matrixBuffer,"gMatrix",0,64,e.context.FLOAT,4,!1,1)||Z0("Error setting gMatrix in shader VAO."):n.getVAO().removeAttributeArray("gMatrix"),n.getProgram().isAttributeUsed("gNormal")?n.getVAO().addAttributeMatrixWithDivisor(n.getProgram(),e.normalBuffer,"gNormal",0,36,e.context.FLOAT,3,!1,1)||Z0("Error setting gNormal in shader VAO."):n.getVAO().removeAttributeArray("gNormal"),n.getProgram().isAttributeUsed("gColor")?n.getVAO().addAttributeArrayWithDivisor(n.getProgram(),e.colorBuffer,"gColor",0,4,e.context.UNSIGNED_BYTE,4,!0,1,!1)||Z0("Error setting gColor in shader VAO."):n.getVAO().removeAttributeArray("gColor"),n.getProgram().isAttributeUsed("mapperIndexVS")?n.getVAO().addAttributeArrayWithDivisor(n.getProgram(),e.pickBuffer,"mapperIndexVS",0,4,e.context.UNSIGNED_BYTE,4,!0,1,!1)||Z0("Error setting mapperIndexVS in shader VAO."):n.getVAO().removeAttributeArray("mapperIndexVS"),r.setMapperShaderParameters(n,i,o),n.getAttributeUpdateTime().modified();return}r.setMapperShaderParameters(n,i,o)},t.getNeedToRebuildBufferObjects=(n,i)=>(e.renderable.buildArrays(),e.VBOBuildTime.getMTime()!!(r.getNeedToRebuildShaders(n,i,o)||n.getShaderSourceTime().getMTime(){if(e.hardwareSupport){const o=e.renderable.getMatrixArray(),a=e.renderable.getNormalArray(),s=e.renderable.getColorArray();if(e.matrixBuffer||(e.matrixBuffer=Pa.newInstance(),e.matrixBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.normalBuffer=Pa.newInstance(),e.normalBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.colorBuffer=Pa.newInstance(),e.colorBuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.pickBuffer=Pa.newInstance(),e.pickBuffer.setOpenGLRenderWindow(e._openGLRenderWindow)),e.renderable.getBuildTime().getMTime()>e.glyphBOBuildTime.getMTime()){e.matrixBuffer.upload(o,hg.ARRAY_BUFFER),e.normalBuffer.upload(a,hg.ARRAY_BUFFER),s?e.colorBuffer.upload(s.getData(),hg.ARRAY_BUFFER):e.colorBuffer.releaseGraphicsResources();const c=o.length/16,l=new Uint8Array(4*c);for(let f=0;f2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Rq,r),o2.extend(t,e,r),e.tmpMat3=ao(new Float64Array(9)),e.normalMatrix=ao(new Float64Array(9)),e.mcpcMatrix=qe(new Float64Array(16)),e.mcvcMatrix=qe(new Float64Array(16)),e.tmpColor=[],e.glyphBOBuildTime={},un(e.glyphBOBuildTime,{mtime:0}),Mq(t,e)}const RI=Bt(MI,"vtkOpenGLGlyph3DMapper");var Lq={newInstance:RI,extend:MI};ir("vtkGlyph3DMapper",RI);const Nq={NONE:-1,I:0,J:1,K:2,X:3,Y:4,Z:5};var a2={SlicingMode:Nq};const Xc={NEAREST:0,LINEAR:1};var Pq={InterpolationType:Xc};function sa(t,e,r){return t?`${t.getMTime()}-${e}-${r}`:"0"}function Ww(t,e){return`${t.getMTime()}A${e.getMTime()}`}const{vtkErrorMacro:Vl}=Br,{SlicingMode:ho}=a2;function Aq(t){const e=t.split(` -`),r=[];for(let n=0;n0&&r.push(i)}return r}function kq(t,e){e.classHierarchy.push("vtkOpenGLImageMapper");function r(n){e.openGLTexture.releaseGraphicsResources(n),[e._colorTransferFunc,e._pwFunc,e._labelOutlineThicknessArray].forEach(i=>n.unregisterGraphicsResourceUser(i,t))}t.buildPass=n=>{if(n){e.currentRenderPass=null,e.openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const i=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),i&&!i.isDeleted()&&i!==e._openGLRenderWindow&&r(i),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow);const o=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(o.getActiveCamera()),e.renderable.isA("vtkImageMapper")&&e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(o.getActiveCamera())}},t.translucentPass=(n,i)=>{n&&(e.currentRenderPass=i,t.render())},t.zBufferPass=n=>{n&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=n=>t.zBufferPass(n),t.opaquePass=n=>{n&&t.render()},t.getCoincidentParameters=(n,i)=>e.renderable.getResolveCoincidentTopology()==ko.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const n=e.openGLImageSlice.getRenderable(),i=e._openGLRenderer.getRenderable();t.renderPiece(i,n)},t.getShaderTemplate=(n,i,o)=>{n.Vertex=Gw,n.Fragment=wh,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=ce.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=ce.substitute(a,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result,a=ce.substitute(a,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result,a=ce.substitute(a,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result;const c=e.openGLTexture.getComponents(),l=o.getProperty().getIndependentComponents();let f=["varying vec2 tcoordVCVSOutput;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D texture1;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform sampler2D labelOutlineTexture1;","uniform float opacity;","uniform float outlineOpacity;"];if(l){for(let d=1;d{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(Dt("OpenGL has a limit of 6 clipping planes"),c=6),a=ce.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=ce.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=ce.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=ce.substitute(s,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}n.Vertex=a,n.Fragment=s},t.getNeedToRebuildShaders=(n,i,o)=>{var l;const a=e.openGLTexture.getComponents(),s=o.getProperty().getIndependentComponents();let c=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(c=!0),c||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((l=n.getProgram())==null?void 0:l.getHandle())===0||e.lastTextureComponents!==a||e.lastIndependentComponents!==s?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=a,e.lastIndependentComponents=s,!0):!1},t.updateShaders=(n,i,o)=>{if(e.lastBoundBO=n,t.getNeedToRebuildShaders(n,i,o)){const a={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(a,i,o);const s=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(a.Vertex,a.Fragment,a.Geometry);s!==n.getProgram()&&(n.setProgram(s),n.getVAO().releaseGraphicsResources()),n.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(n.getProgram());n.getVAO().bind(),t.setMapperShaderParameters(n,i,o),t.setCameraShaderParameters(n,i,o),t.setPropertyShaderParameters(n,i,o)},t.setMapperShaderParameters=(n,i,o)=>{n.getCABO().getElementCount()&&(e.VBOBuildTime>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())&&(n.getProgram().isAttributeUsed("vertexMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"vertexMC",n.getCABO().getVertexOffset(),n.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||Vl("Error setting vertexMC in shader VAO.")),n.getProgram().isAttributeUsed("tcoordMC")&&n.getCABO().getTCoordOffset()&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"tcoordMC",n.getCABO().getTCoordOffset(),n.getCABO().getStride(),e.context.FLOAT,n.getCABO().getTCoordComponents(),e.context.FALSE)||Vl("Error setting tcoordMC in shader VAO.")),n.getAttributeUpdateTime().modified());const a=e.openGLTexture.getTextureUnit();n.getProgram().setUniformi("texture1",a);const s=e.openGLTexture.getComponents(),c=o.getProperty().getIndependentComponents();if(c)for(let g=0;g6&&(Dt("OpenGL has a limit of 6 clipping planes"),g=6);const v=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,x=v?_n(e.imagematinv,o.getMatrix()):o.getMatrix();v&&(St(x,x),bt(x,x,v),St(x,x)),St(e.imagemat,e.currentInput.getIndexToWorld()),bt(e.imagematinv,x,e.imagemat);const m=[];for(let y=0;y{const a=n.getProgram(),s=e.openGLImageSlice.getKeyMatrices(),c=e.currentInput,l=c.getIndexToWorld();bt(e.imagemat,s.mcwc,l);const f=e.openGLCamera.getKeyMatrices(i);if(bt(e.imagemat,f.wcpc,e.imagemat),n.getCABO().getCoordShiftAndScaleEnabled()){const d=n.getCABO().getInverseShiftAndScaleMatrix();bt(e.imagemat,e.imagemat,d)}if(a.setUniformMatrix("MCPCMatrix",e.imagemat),o.getProperty().getUseLabelOutline()===!0){const d=c.getWorldToIndex(),h=c.getDimensions();a.setUniform3i("imageDimensions",h[0],h[1],1),a.setUniformMatrix("vWCtoIDX",d);const g=e.openGLCamera.getKeyMatrices(i);$n(e.projectionToWorld,g.wcpc),e.openGLCamera.getKeyMatrices(i),a.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const p=t.getRenderTargetSize();a.setUniformf("vpWidth",p[0]),a.setUniformf("vpHeight",p[1]);const v=t.getRenderTargetOffset();a.setUniformf("vpOffsetX",v[0]/p[0]),a.setUniformf("vpOffsetY",v[1]/p[1])}},t.setPropertyShaderParameters=(n,i,o)=>{const a=n.getProgram(),c=o.getProperty().getOpacity();a.setUniformf("opacity",c)},t.renderPieceStart=(n,i)=>{t.updateBufferObjects(n,i),e.lastBoundBO=null},t.renderPieceDraw=(n,i)=>{const o=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(t.updateShaders(e.tris,n,i),o.drawArrays(o.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(n,i)=>{},t.renderPiece=(n,i)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getCurrentImage(),t.invokeEvent({type:"EndEvent"}),!e.currentInput){Vl("No input!");return}t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i)},t.computeBounds=(n,i)=>{if(!t.getInput()){y0(e.bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(n,i)=>{t.getNeedToRebuildBufferObjects(n,i)&&t.buildBufferObjects(n,i)},t.getNeedToRebuildBufferObjects=(n,i)=>{var o,a,s,c;return e.VBOBuildTime.getMTime(){var I,R,M,L;const o=e.currentInput;if(!o)return;const a=o.getPointData()&&o.getPointData().getScalars();if(!a)return;const s=a.getDataType(),c=a.getNumberOfComponents(),l=i.getProperty(),f=l.getInterpolationType(),u=l.getIndependentComponents(),d=u?c:1,h=u?2*d:1,g=l.getRGBTransferFunction(),p=sa(g,u,d),v=e._openGLRenderWindow.getGraphicsResourceForObject(g);if(!((I=v==null?void 0:v.oglObject)!=null&&I.getHandle())||(v==null?void 0:v.hash)!==p){e.colorTexture=yn.newInstance({resizable:!0}),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const A=1024,G=A*h*3,P=new Uint8ClampedArray(G);if(f===Xc.NEAREST?(e.colorTexture.setMinificationFilter(Je.NEAREST),e.colorTexture.setMagnificationFilter(Je.NEAREST)):(e.colorTexture.setMinificationFilter(Je.LINEAR),e.colorTexture.setMagnificationFilter(Je.LINEAR)),g){const N=new Float32Array(A*3);for(let V=0;V1?1:0;const V=[ho.X,ho.Y,ho.Z].includes(e.renderable.getSlicingMode())?T:_,$=o.getSpatialExtent(),H=a.getData();let Y=null;if(S===ho.I){Y=new H.constructor(A[2]*A[1]*c);let fe=0;for(let le=0;le{var c;const i=n.getProperty().getLabelOutlineThickness(),o=e._openGLRenderWindow.getGraphicsResourceForObject(i),a=`${i.join("-")}`;if(!((c=o==null?void 0:o.oglObject)!=null&&c.getHandle())||(o==null?void 0:o.hash)!==a){const d=new Uint8Array(1024);for(let h=0;h<1024;++h){const g=typeof i[h]<"u"?i[h]:i[0];d[h]=g}e.labelOutlineThicknessTexture=yn.newInstance({resizable:!1}),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.labelOutlineThicknessTexture.resetFormatAndType(),e.labelOutlineThicknessTexture.setMinificationFilter(Je.NEAREST),e.labelOutlineThicknessTexture.setMagnificationFilter(Je.NEAREST),e.labelOutlineThicknessTexture.create2DFromRaw(1024,1,1,vt.UNSIGNED_CHAR,d),i&&(e._openGLRenderWindow.setGraphicsResourceForObject(i,e.labelOutlineThicknessTexture,a),i!==e._labelOutlineThicknessArray&&(e._openGLRenderWindow.registerGraphicsResourceUser(i,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._labelOutlineThicknessArray,t)),e._labelOutlineThicknessArray=i)}else e.labelOutlineThicknessTexture=o.oglObject},t.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:n,vsize:i}=e._openGLRenderer.getTiledSizeAndOrigin();return[n,i]},t.getRenderTargetOffset=()=>{const{lowerLeftU:n,lowerLeftV:i}=e._openGLRenderer.getTiledSizeAndOrigin();return[n,i]},t.delete=gh(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const Vq={VBOBuildTime:0,VBOBuildString:null,openGLTexture:null,tris:null,imagemat:null,imagematinv:null,colorTexture:null,pwfTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0};function LI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vq,r),tn.extend(t,e,r),aa.implementReplaceShaderCoincidentOffset(t,e,r),aa.implementBuildShadersWithReplacements(t,e,r),e.tris=fa.newInstance(),e.imagemat=qe(new Float64Array(16)),e.imagematinv=qe(new Float64Array(16)),e.projectionToWorld=qe(new Float64Array(16)),e.idxToView=qe(new Float64Array(16)),e.idxNormalMatrix=ao(new Float64Array(9)),e.modelToView=qe(new Float64Array(16)),e.projectionToView=qe(new Float64Array(16)),Jn(t,e,[]),e.VBOBuildTime={},un(e.VBOBuildTime),kq(t,e)}const NI=Bt(LI,"vtkOpenGLImageMapper");var Fq={newInstance:NI,extend:LI};ir("vtkAbstractImageMapper",NI);function Uq(t,e){e.classHierarchy.push("vtkOpenGLImageSlice"),t.buildPass=r=>{if(!(!e.renderable||!e.renderable.getVisibility())&&r){if(!e.renderable)return;e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes()}},t.traverseZBufferPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children.forEach(n=>{n.traverse(r)}),t.apply(r,!1))},t.traverseOpaqueZBufferPass=r=>t.traverseOpaquePass(r),t.traverseOpaquePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children.forEach(n=>{n.traverse(r)}),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children.forEach(n=>{n.traverse(r)}),t.apply(r,!1))},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?n.incrementOpaqueActorCount():n.incrementTranslucentActorCount()}},t.zBufferPass=(r,n)=>t.opaquePass(r,n),t.opaqueZBufferPass=(r,n)=>t.opaquePass(r,n),t.opaquePass=(r,n)=>{r&&e.context.depthMask(!0)},t.translucentPass=(r,n)=>{e.context.depthMask(!r)},t.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(_n(e.keyMatrices.mcwc,e.renderable.getMatrix()),St(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.keyMatrixTime.modified()),e.keyMatrices)}const Bq={context:null,keyMatrixTime:null,keyMatrices:null};function PI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bq,r),tn.extend(t,e,r),e.keyMatrixTime={},un(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:qe(new Float64Array(16))},Jn(t,e,["context"]),Uq(t,e)}const AI=Bt(PI,"vtkOpenGLImageSlice");var Gq={newInstance:AI,extend:PI};ir("vtkImageSlice",AI);const{vtkDebugMacro:Wq}=Br;function zq(t,e){e.classHierarchy.push("vtkOpenGLPixelSpaceCallbackMapper"),t.opaquePass=(r,n)=>{e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow");const i=e._openGLRenderer.getAspectRatio(),o=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,a=e._openGLRenderer.getTiledSizeAndOrigin();let s=null;if(e.renderable.getUseZValues()){const c=n.getZBufferTexture(),l=Math.floor(c.getWidth()),f=Math.floor(c.getHeight()),u=e._openGLRenderWindow.getContext();c.bind();const d=n.getFramebuffer();d?d.saveCurrentBindingsAndBuffers():Wq("No framebuffer to save/restore");const h=u.createFramebuffer();u.bindFramebuffer(u.FRAMEBUFFER,h),u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,c.getHandle(),0),u.checkFramebufferStatus(u.FRAMEBUFFER)===u.FRAMEBUFFER_COMPLETE&&(s=new Uint8Array(l*f*4),u.viewport(0,0,l,f),u.readPixels(0,0,l,f,u.RGBA,u.UNSIGNED_BYTE,s)),d&&d.restorePreviousBindingsAndBuffers(),u.deleteFramebuffer(h)}e.renderable.invokeCallback(e.renderable.getInputData(),o,i,a,s)},t.queryPass=(r,n)=>{r&&e.renderable.getUseZValues()&&n.requestDepth()}}const $q={};function kI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$q,r),tn.extend(t,e,r),zq(t,e)}const VI=Bt(kI,"vtkOpenGLPixelSpaceCallbackMapper");var jq={newInstance:VI,extend:kI};ir("vtkPixelSpaceCallbackMapper",VI);const{vtkDebugMacro:Hq}=Br;function Kq(t,e){e.classHierarchy.push("vtkOpenGLRenderer"),t.buildPass=r=>{if(r){if(!e.renderable)return;t.updateLights(),t.prepareNodes(),t.addMissingNode(e.renderable.getActiveCamera()),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes()}},t.updateLights=()=>{let r=0;const n=e.renderable.getLightsByReference();for(let i=0;i0&&r++;return r||(Hq("No lights are on, creating one."),e.renderable.createLight()),r},t.zBufferPass=r=>{if(r){let n=0;const i=e.context;e.renderable.getTransparent()||(e.context.clearColor(1,0,0,1),n|=i.COLOR_BUFFER_BIT),e.renderable.getPreserveDepthBuffer()||(i.clearDepth(1),n|=i.DEPTH_BUFFER_BIT,e.context.depthMask(!0));const o=t.getTiledSizeAndOrigin();i.enable(i.SCISSOR_TEST),i.scissor(o.lowerLeftU,o.lowerLeftV,o.usize,o.vsize),i.viewport(o.lowerLeftU,o.lowerLeftV,o.usize,o.vsize),i.colorMask(!0,!0,!0,!0),n&&i.clear(n),i.enable(i.DEPTH_TEST)}},t.opaqueZBufferPass=r=>t.zBufferPass(r),t.cameraPass=r=>{r&&t.clear()},t.getAspectRatio=()=>{const r=e._parent.getSizeByReference(),n=e.renderable.getViewportByReference();return r[0]*(n[2]-n[0])/((n[3]-n[1])*r[1])},t.getTiledSizeAndOrigin=()=>{const r=e.renderable.getViewportByReference(),n=[0,0,1,1],i=r[0]-n[0],o=r[1]-n[1],a=e._parent.normalizedDisplayToDisplay(i,o),s=Math.round(a[0]),c=Math.round(a[1]),l=r[2]-n[0],f=r[3]-n[1],u=e._parent.normalizedDisplayToDisplay(l,f);let d=Math.round(u[0])-s,h=Math.round(u[1])-c;return d<0&&(d=0),h<0&&(h=0),{usize:d,vsize:h,lowerLeftU:s,lowerLeftV:c}},t.clear=()=>{let r=0;const n=e.context;if(!e.renderable.getTransparent()){const o=e.renderable.getBackgroundByReference();n.clearColor(o[0],o[1],o[2],o[3]),r|=n.COLOR_BUFFER_BIT}e.renderable.getPreserveDepthBuffer()||(n.clearDepth(1),r|=n.DEPTH_BUFFER_BIT,n.depthMask(!0)),n.colorMask(!0,!0,!0,!0);const i=t.getTiledSizeAndOrigin();n.enable(n.SCISSOR_TEST),n.scissor(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize),n.viewport(i.lowerLeftU,i.lowerLeftV,i.usize,i.vsize),r&&n.clear(r),n.enable(n.DEPTH_TEST)},t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources(),e.renderable&&e.renderable.getViewProps().forEach(r=>{r.modified()})},t.setOpenGLRenderWindow=r=>{e._openGLRenderWindow!==r&&(t.releaseGraphicsResources(),e._openGLRenderWindow=r,e.context=null,r&&(e.context=e._openGLRenderWindow.getContext()))}}const qq={context:null,_openGLRenderWindow:null,selector:null};function FI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,qq,r),tn.extend(t,e,r),gi(t,e,["shaderCache"]),Jn(t,e,["selector"]),hh(t,e,["openGLRenderWindow"]),Kq(t,e)}const UI=Bt(FI,"vtkOpenGLRenderer");var Xq={newInstance:UI,extend:FI};ir("vtkRenderer",UI);const{vtkErrorMacro:a8}=Br;function Yq(t,e){e.classHierarchy.push("vtkOpenGLSkybox"),t.buildPass=r=>{if(r){e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const n=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(n.getActiveCamera())}},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;n.incrementOpaqueActorCount()}},t.opaquePass=(r,n)=>{if(r&&!e._openGLRenderer.getSelector()){t.updateBufferObjects(),e.context.depthMask(!0),e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.tris.getProgram()),e.openGLTexture.render(e._openGLRenderWindow);const i=e.openGLTexture.getTextureUnit();e.tris.getProgram().setUniformi("sbtexture",i);const o=e._openGLRenderer.getRenderable(),a=e.openGLCamera.getKeyMatrices(o),s=new Float64Array(16);if($n(s,a.wcpc),e.tris.getProgram().setUniformMatrix("IMCPCMatrix",s),e.lastFormat==="box"){const c=o.getActiveCamera().getPosition();e.tris.getProgram().setUniform3f("camPos",c[0],c[1],c[2])}e.tris.getVAO().bind(),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate()}},t.updateBufferObjects=()=>{if(!e.tris.getCABO().getElementCount()){const n=new Float32Array(12);for(let s=0;s<4;s++)n[s*3]=s%2*2-1,n[s*3+1]=s>1?1:-1,n[s*3+2]=1;const i=tt.newInstance({numberOfComponents:3,values:n});i.setName("points");const o=new Uint16Array(8);o[0]=3,o[1]=0,o[2]=1,o[3]=3,o[4]=3,o[5]=0,o[6]=3,o[7]=2;const a=tt.newInstance({numberOfComponents:1,values:o});e.tris.getCABO().createVBO(a,"polys",kr.SURFACE,{points:i,cellOffset:0})}e.renderable.getFormat()!==e.lastFormat&&(e.lastFormat=e.renderable.getFormat(),e.lastFormat==="box"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec - attribute vec3 vertexMC; - uniform mat4 IMCPCMatrix; - varying vec3 TexCoords; - void main () { - gl_Position = vec4(vertexMC.xyz, 1.0); - vec4 wpos = IMCPCMatrix * gl_Position; - TexCoords = wpos.xyz/wpos.w; - }`,`//VTK::System::Dec - //VTK::Output::Dec - varying vec3 TexCoords; - uniform samplerCube sbtexture; - uniform vec3 camPos; - void main () { - // skybox looks from inside out - // which means we have to adjust - // our tcoords. Otherwise text would - // be flipped - vec3 tc = normalize(TexCoords - camPos); - if (abs(tc.z) < max(abs(tc.x),abs(tc.y))) - { - tc = vec3(1.0, 1.0, -1.0) * tc; - } - else - { - tc = vec3(-1.0, 1.0, 1.0) * tc; - } - gl_FragData[0] = textureCube(sbtexture, tc); - }`,"")),e.lastFormat==="background"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec - attribute vec3 vertexMC; - uniform mat4 IMCPCMatrix; - varying vec2 TexCoords; - void main () { - gl_Position = vec4(vertexMC.xyz, 1.0); - vec4 wpos = IMCPCMatrix * gl_Position; - TexCoords = vec2(vertexMC.x, vertexMC.y)*0.5 + 0.5; - }`,`//VTK::System::Dec - //VTK::Output::Dec - varying vec2 TexCoords; - uniform sampler2D sbtexture; - void main () { - gl_FragData[0] = texture2D(sbtexture, TexCoords); - }`,"")),e.tris.getShaderSourceTime().modified(),e.tris.getVAO().bind(),e.tris.getVAO().addAttributeArray(e.tris.getProgram(),e.tris.getCABO(),"vertexMC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||a8("Error setting vertexMC in shader VAO."));const r=e.renderable.getTextures();r.length||a8("vtkSkybox requires a texture map"),e.openGLTexture.getRenderable()!==r[0]&&(e.openGLTexture.releaseGraphicsResources(e._openGLRenderWindow),e.openGLTexture.setRenderable(r[0]))}}const Jq={context:null};function BI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jq,r),tn.extend(t,e,r),e.openGLTexture=yn.newInstance(),e.tris=fa.newInstance(),e.keyMatrixTime={},un(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:ao(new Float64Array(9)),mcwc:qe(new Float64Array(16))},Jn(t,e,["context"]),gi(t,e,["activeTextures"]),Yq(t,e)}const GI=Bt(BI);var Zq={newInstance:GI,extend:BI};ir("vtkSkybox",GI);var Qq=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkSphereMapperVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// this shader implements imposters in OpenGL for Spheres - -attribute vec4 vertexMC; -attribute vec2 offsetMC; - -// optional normal declaration -//VTK::Normal::Dec - -//VTK::Picking::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -uniform mat3 normalMatrix; // transform model coordinate directions to view coordinates - -// material property values -//VTK::Color::Dec - -// clipping plane vars -//VTK::Clip::Dec - -// camera and actor matrix values -//VTK::Camera::Dec - -varying vec4 vertexVCVSOutput; -varying float radiusVCVSOutput; -varying vec3 centerVCVSOutput; - -uniform int cameraParallel; -uniform float scaleFactor; - -void main() -{ - //VTK::Picking::Impl - - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Clip::Impl - - // compute the projected vertex position - vec2 scaledOffsetMC = scaleFactor * offsetMC; - vertexVCVSOutput = MCVCMatrix * vertexMC; - centerVCVSOutput = vertexVCVSOutput.xyz; - radiusVCVSOutput = length(scaledOffsetMC)*0.5; - - // make the triangle face the camera - if (cameraParallel == 0) - { - vec3 dir = normalize(-vertexVCVSOutput.xyz); - vec3 base2 = normalize(cross(dir,vec3(1.0,0.0,0.0))); - vec3 base1 = cross(base2,dir); - vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + scaledOffsetMC.x*base1 + scaledOffsetMC.y*base2; - } - else - { - // add in the offset - vertexVCVSOutput.xy = vertexVCVSOutput.xy + scaledOffsetMC; - } - - gl_Position = VCPCMatrix * vertexVCVSOutput; -} -`;const{vtkErrorMacro:eX}=Br;function tX(t,e){e.classHierarchy.push("vtkOpenGLSphereMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=Qq,n.Fragment=wh,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=ce.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; -`,"uniform mat4 MCVCMatrix;"]).result,s=ce.substitute(s,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,s=ce.substitute(s,"//VTK::PositionVC::Impl",[`vec4 vertexVC = vertexVCVSOutput; -`]).result;const c=[`uniform float invertedDepth; -`,`uniform int cameraParallel; -`,`varying float radiusVCVSOutput; -`,`varying vec3 centerVCVSOutput; -`,`uniform mat4 VCPCMatrix; -`];s=ce.substitute(s,"//VTK::Normal::Dec",c).result;let l="";e.context.getExtension("EXT_frag_depth")&&(l=`gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0; -`),e._openGLRenderWindow.getWebgl2()&&(l=`gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0; -`),s=ce.substitute(s,"//VTK::Depth::Impl",[` vec3 EyePos; -`,` vec3 EyeDir; -`,` if (cameraParallel != 0) { -`,` EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput); -`,` EyeDir = vec3(0.0,0.0,-1.0); } -`,` else { -`,` EyeDir = vertexVC.xyz; -`,` EyePos = vec3(0.0,0.0,0.0); -`,` float lengthED = length(EyeDir); -`,` EyeDir = normalize(EyeDir); -`,` if (lengthED > radiusVCVSOutput*3.0) { -`,` EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; } -`,` } -`,` EyePos = EyePos - centerVCVSOutput; -`,` EyePos = EyePos/radiusVCVSOutput; -`,` float b = 2.0*dot(EyePos,EyeDir); -`,` float c = dot(EyePos,EyePos) - 1.0; -`,` float d = b*b - 4.0*c; -`,` vec3 normalVCVSOutput = vec3(0.0,0.0,1.0); -`,` if (d < 0.0) { discard; } -`,` else { -`,` float t = (-b - invertedDepth*sqrt(d))*0.5; -`,` normalVCVSOutput = invertedDepth*normalize(EyePos + t*EyeDir); -`,` vertexVC.xyz = normalVCVSOutput*radiusVCVSOutput + centerVCVSOutput; -`,` } -`,` vec4 pos = VCPCMatrix * vertexVC; -`,l]).result,s=ce.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=ce.substitute(s,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float computedZ = (pos.z / pos.w + 1.0) / 2.0;","float iz = floor(computedZ * 65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result),n.Vertex=a,n.Fragment=s,r.replaceShaderValues(n,i,o)},t.setMapperShaderParameters=(n,i,o)=>{if(n.getCABO().getElementCount()&&(e.VBOBuildTime>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())&&n.getProgram().isAttributeUsed("offsetMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"offsetMC",12,n.getCABO().getStride(),e.context.FLOAT,2,!1)||eX("Error setting 'offsetMC' in shader VAO.")),n.getProgram().isUniformUsed("invertedDepth")&&n.getProgram().setUniformf("invertedDepth",e.invert?-1:1),n.getProgram().isUniformUsed("scaleFactor")){const s=e.currentInput.getPointData();e.renderable.getScaleArray()!=null&&s.hasArray(e.renderable.getScaleArray())?n.getProgram().setUniformf("scaleFactor",e.renderable.getScaleFactor()):n.getProgram().setUniformf("scaleFactor",1)}r.setMapperShaderParameters(n,i,o)},t.setCameraShaderParameters=(n,i,o)=>{const a=n.getProgram(),s=i.getActiveCamera(),c=e.openGLCamera.getKeyMatrices(i);if(a.isUniformUsed("VCPCMatrix")&&a.setUniformMatrix("VCPCMatrix",c.vcpc),a.isUniformUsed("MCVCMatrix"))if(o.getIsIdentity())a.setUniformMatrix("MCVCMatrix",c.wcvc);else{const l=e.openGLActor.getKeyMatrices(),f=new Float64Array(16);bt(f,c.wcvc,l.mcwc),a.setUniformMatrix("MCVCMatrix",f)}a.isUniformUsed("cameraParallel")&&n.getProgram().setUniformi("cameraParallel",s.getParallelProjection())},t.getOpenGLMode=(n,i)=>e.context.TRIANGLES,t.buildBufferObjects=(n,i)=>{const o=e.currentInput;if(o===null)return;e.renderable.mapScalars(o,1);const a=e.renderable.getColorMapColors(),s=e.primitives[e.primTypes.Tris].getCABO(),c=o.getPointData(),l=o.getPoints(),f=l.getNumberOfPoints(),u=l.getData(),d=5;let h=null;e.renderable.getScaleArray()!=null&&c.hasArray(e.renderable.getScaleArray())&&(h=c.getArray(e.renderable.getScaleArray()).getData());let g=null,p=0,v=null;a?(p=a.getNumberOfComponents(),s.setColorOffset(0),s.setColorBOStride(4),g=a.getData(),v=new Uint8Array(3*f*4),s.getColorBO()||s.setColorBO(Pa.newInstance()),s.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow)):s.getColorBO()&&s.setColorBO(null),s.setColorComponents(p);const x=new Float32Array(d*f*3);s.setStride(d*4);const m=Math.cos(Vn(30));let y=0,w=0,C=0,S=0;for(let T=0;T2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nX,r),o2.extend(t,e,r),tX(t,e)}const zI=Bt(WI,"vtkOpenGLSphereMapper");var rX={newInstance:zI,extend:WI};ir("vtkSphereMapper",zI);var iX=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkStickMapperVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// this shader implements imposters in OpenGL for Sticks - -attribute vec4 vertexMC; -attribute vec3 orientMC; -attribute vec4 offsetMC; -attribute float radiusMC; - -// optional normal declaration -//VTK::Normal::Dec - -//VTK::Picking::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -uniform mat3 normalMatrix; // transform model coordinate directions to view coordinates - -// material property values -//VTK::Color::Dec - -// clipping plane vars -//VTK::Clip::Dec - -// camera and actor matrix values -//VTK::Camera::Dec - -varying vec4 vertexVCVSOutput; -varying float radiusVCVSOutput; -varying float lengthVCVSOutput; -varying vec3 centerVCVSOutput; -varying vec3 orientVCVSOutput; - -uniform int cameraParallel; - -void main() -{ - //VTK::Picking::Impl - - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Clip::Impl - - vertexVCVSOutput = MCVCMatrix * vertexMC; - centerVCVSOutput = vertexVCVSOutput.xyz; - radiusVCVSOutput = radiusMC; - lengthVCVSOutput = length(orientMC); - orientVCVSOutput = normalMatrix * normalize(orientMC); - - // make sure it is pointing out of the screen - if (orientVCVSOutput.z < 0.0) - { - orientVCVSOutput = -orientVCVSOutput; - } - - // make the basis - vec3 xbase; - vec3 ybase; - vec3 dir = vec3(0.0,0.0,1.0); - if (cameraParallel == 0) - { - dir = normalize(-vertexVCVSOutput.xyz); - } - if (abs(dot(dir,orientVCVSOutput)) == 1.0) - { - xbase = normalize(cross(vec3(0.0,1.0,0.0),orientVCVSOutput)); - ybase = cross(xbase,orientVCVSOutput); - } - else - { - xbase = normalize(cross(orientVCVSOutput,dir)); - ybase = cross(orientVCVSOutput,xbase); - } - - vec3 offsets = offsetMC.xyz*2.0-1.0; - vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + - radiusVCVSOutput*offsets.x*xbase + - radiusVCVSOutput*offsets.y*ybase + - 0.5*lengthVCVSOutput*offsets.z*orientVCVSOutput; - - gl_Position = VCPCMatrix * vertexVCVSOutput; -} -`;const{vtkErrorMacro:gg}=Br;function oX(t,e){e.classHierarchy.push("vtkOpenGLStickMapper");const r={...t};t.getShaderTemplate=(n,i,o)=>{n.Vertex=iX,n.Fragment=wh,n.Geometry=""},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;a=ce.substitute(a,"//VTK::Camera::Dec",[`uniform mat4 VCPCMatrix; -`,"uniform mat4 MCVCMatrix;"]).result,s=ce.substitute(s,"//VTK::PositionVC::Dec","varying vec4 vertexVCVSOutput;").result,s=ce.substitute(s,"//VTK::PositionVC::Impl",` vec4 vertexVC = vertexVCVSOutput; -`).result;const c=[`uniform int cameraParallel; -`,`varying float radiusVCVSOutput; -`,`varying vec3 orientVCVSOutput; -`,`varying float lengthVCVSOutput; -`,`varying vec3 centerVCVSOutput; -`,`uniform mat4 VCPCMatrix; -`];s=ce.substitute(s,"//VTK::Normal::Dec",c).result;let l="";e.context.getExtension("EXT_frag_depth")&&(l=` gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0; -`),e._openGLRenderWindow.getWebgl2()&&(l=`gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0; -`),s=ce.substitute(s,"//VTK::Depth::Impl",[` vec3 EyePos; -`,` vec3 EyeDir; -`,` if (cameraParallel != 0) { -`,` EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput); -`,` EyeDir = vec3(0.0,0.0,-1.0); } -`,` else { -`,` EyeDir = vertexVC.xyz; -`,` EyePos = vec3(0.0,0.0,0.0); -`,` float lengthED = length(EyeDir); -`,` EyeDir = normalize(EyeDir); -`,` if (lengthED > radiusVCVSOutput*3.0) { -`,` EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; } -`,` } -`,` EyePos = EyePos - centerVCVSOutput; -`,` vec3 base1; -`,` if (abs(orientVCVSOutput.z) < 0.99) { -`,` base1 = normalize(cross(orientVCVSOutput,vec3(0.0,0.0,1.0))); } -`,` else { -`,` base1 = normalize(cross(orientVCVSOutput,vec3(0.0,1.0,0.0))); } -`,` vec3 base2 = cross(orientVCVSOutput,base1); -`,` EyePos = vec3(dot(EyePos,base1),dot(EyePos,base2),dot(EyePos,orientVCVSOutput)); -`,` EyeDir = vec3(dot(EyeDir,base1),dot(EyeDir,base2),dot(EyeDir,orientVCVSOutput)); -`,` EyePos = EyePos/radiusVCVSOutput; -`,` float a = EyeDir.x*EyeDir.x + EyeDir.y*EyeDir.y; -`,` float b = 2.0*(EyePos.x*EyeDir.x + EyePos.y*EyeDir.y); -`,` float c = EyePos.x*EyePos.x + EyePos.y*EyePos.y - 1.0; -`,` float d = b*b - 4.0*a*c; -`,` vec3 normalVCVSOutput = vec3(0.0,0.0,1.0); -`,` if (d < 0.0) { discard; } -`,` else { -`,` float t = (-b - sqrt(d))/(2.0*a); -`,` float tz = EyePos.z + t*EyeDir.z; -`,` vec3 iPoint = EyePos + t*EyeDir; -`,` if (abs(iPoint.z)*radiusVCVSOutput > lengthVCVSOutput*0.5) { -`,` float t2 = (-b + sqrt(d))/(2.0*a); -`,` float tz2 = EyePos.z + t2*EyeDir.z; -`,` if (tz2*radiusVCVSOutput > lengthVCVSOutput*0.5 || tz*radiusVCVSOutput < -0.5*lengthVCVSOutput) { discard; } -`,` else { -`,` normalVCVSOutput = orientVCVSOutput; -`,` float t3 = (lengthVCVSOutput*0.5/radiusVCVSOutput - EyePos.z)/EyeDir.z; -`,` iPoint = EyePos + t3*EyeDir; -`,` vertexVC.xyz = radiusVCVSOutput*(iPoint.x*base1 + iPoint.y*base2 + iPoint.z*orientVCVSOutput) + centerVCVSOutput; -`,` } -`,` } -`,` else { -`,` normalVCVSOutput = iPoint.x*base1 + iPoint.y*base2; -`,` vertexVC.xyz = radiusVCVSOutput*(normalVCVSOutput + iPoint.z*orientVCVSOutput) + centerVCVSOutput; -`,` } -`,` } -`,` vec4 pos = VCPCMatrix * vertexVC; -`,l]).result,s=ce.substitute(s,"//VTK::Normal::Impl","").result,e.haveSeenDepthRequest&&(s=ce.substitute(s,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float computedZ = (pos.z / pos.w + 1.0) / 2.0;","float iz = floor(computedZ * 65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result),n.Vertex=a,n.Fragment=s,r.replaceShaderValues(n,i,o)},t.setMapperShaderParameters=(n,i,o)=>{n.getCABO().getElementCount()&&(e.VBOBuildTime>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())&&(n.getProgram().isAttributeUsed("orientMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"orientMC",12,n.getCABO().getStride(),e.context.FLOAT,3,!1)||gg("Error setting 'orientMC' in shader VAO.")),n.getProgram().isAttributeUsed("offsetMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO().getColorBO(),"offsetMC",0,n.getCABO().getColorBOStride(),e.context.UNSIGNED_BYTE,3,!0)||gg("Error setting 'offsetMC' in shader VAO.")),n.getProgram().isAttributeUsed("radiusMC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"radiusMC",24,n.getCABO().getStride(),e.context.FLOAT,1,!1)||gg("Error setting 'radiusMC' in shader VAO."))),r.setMapperShaderParameters(n,i,o)},t.setCameraShaderParameters=(n,i,o)=>{const a=n.getProgram(),s=i.getActiveCamera(),c=e.openGLCamera.getKeyMatrices(i);if(a.isUniformUsed("VCPCMatrix")&&a.setUniformMatrix("VCPCMatrix",c.vcpc),o.getIsIdentity())a.isUniformUsed("MCVCMatrix")&&a.setUniformMatrix("MCVCMatrix",c.wcvc),a.isUniformUsed("normalMatrix")&&a.setUniformMatrix3x3("normalMatrix",c.normalMatrix);else{const l=e.openGLActor.getKeyMatrices();if(a.isUniformUsed("MCVCMatrix")){const f=new Float64Array(16);bt(f,c.wcvc,l.mcwc),a.setUniformMatrix("MCVCMatrix",f)}if(a.isUniformUsed("normalMatrix")){const f=new Float64Array(9);Ku(f,c.normalMatrix,l.normalMatrix),a.setUniformMatrix3x3("normalMatrix",f)}}a.isUniformUsed("cameraParallel")&&n.getProgram().setUniformi("cameraParallel",s.getParallelProjection())},t.getOpenGLMode=(n,i)=>e.context.TRIANGLES,t.buildBufferObjects=(n,i)=>{const o=e.currentInput;if(o===null)return;e.renderable.mapScalars(o,1);const a=e.renderable.getColorMapColors(),s=e.primitives[e.primTypes.Tris].getCABO(),c=o.getPointData(),l=o.getPoints(),f=l.getNumberOfPoints(),u=l.getData();let d=3;d+=4;let h=null,g=0;s.setColorBOStride(4),s.getColorBO()||s.setColorBO(Pa.newInstance()),s.getColorBO().setOpenGLRenderWindow(e._openGLRenderWindow),a&&(g=a.getNumberOfComponents(),s.setColorOffset(4),h=a.getData(),s.setColorBOStride(8)),s.setColorComponents(g),s.setStride(d*4);const p=new Float32Array(d*f*12),v=new Uint8Array(12*f*(h?8:4));let x=null,m=null;e.renderable.getScaleArray()!=null&&c.hasArray(e.renderable.getScaleArray())&&(x=c.getArray(e.renderable.getScaleArray()).getData()),e.renderable.getOrientationArray()!=null&&c.hasArray(e.renderable.getOrientationArray())?m=c.getArray(e.renderable.getOrientationArray()).getData():gg([`Error setting orientationArray. -`,"You have to specify the stick orientation"]);const y=[0,1,3,0,3,2,2,3,5,2,5,4];let w=0,C=0,S=0,T=0;for(let _=0;_=4?255:0,v[T++]=y[b]>=2?255:0,v[T++]=255,C=_*g,h&&(v[T++]=h[C],v[T++]=h[C+1],v[T++]=h[C+2],v[T++]=h[C+3])}s.setElementCount(S/d),s.upload(p,Ua.ARRAY_BUFFER),s.getColorBO().upload(v,Ua.ARRAY_BUFFER),e.VBOBuildTime.modified()}}const aX={};function $I(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aX,r),o2.extend(t,e,r),oX(t,e)}const jI=Bt($I,"vtkOpenGLStickMapper");var sX={newInstance:jI,extend:$I};ir("vtkStickMapper",jI);function cX(t,e){e.classHierarchy.push("vtkOpenGLVolume"),t.buildPass=r=>{!e.renderable||!e.renderable.getVisibility()||r&&(e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;n.incrementVolumeCount()}},t.traverseVolumePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children[0].traverse(r),t.apply(r,!1))},t.volumePass=r=>{!e.renderable||!e.renderable.getVisibility()||e.context.depthMask(!r)},t.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),_n(e.MCWCMatrix,e.renderable.getMatrix()),St(e.MCWCMatrix,e.MCWCMatrix),e.renderable.getIsIdentity()?ao(e.normalMatrix):(Ym(e.normalMatrix,e.MCWCMatrix),yh(e.normalMatrix,e.normalMatrix),gw(e.normalMatrix,e.normalMatrix)),e.keyMatrixTime.modified()),{mcwc:e.MCWCMatrix,normalMatrix:e.normalMatrix})}const lX={};function HI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,lX,r),tn.extend(t,e,r),e.keyMatrixTime={},un(e.keyMatrixTime,{mtime:0}),e.normalMatrix=new Float64Array(9),e.MCWCMatrix=new Float64Array(16),Jn(t,e,["context"]),cX(t,e)}const KI=Bt(HI,"vtkOpenGLVolume");var uX={newInstance:KI,extend:HI};ir("vtkVolume",KI);const Y5={NEAREST:0,LINEAR:1,FAST_LINEAR:2},qI={FRACTIONAL:0,PROPORTIONAL:1},Mp={CUSTOM:0,ADDITIVE:1,COLORIZE:2};var XI={InterpolationType:Y5,OpacityMode:qI,ColorMixPreset:Mp},fX=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkPolyDataVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ - -attribute vec4 vertexDC; - -varying vec3 vertexVCVSOutput; -uniform mat4 PCVCMatrix; - -uniform float dcxmin; -uniform float dcxmax; -uniform float dcymin; -uniform float dcymax; - -void main() -{ - // dcsmall is the device coords reduced to the - // x y area covered by the volume - vec4 dcsmall = vec4( - dcxmin + 0.5 * (vertexDC.x + 1.0) * (dcxmax - dcxmin), - dcymin + 0.5 * (vertexDC.y + 1.0) * (dcymax - dcymin), - vertexDC.z, - vertexDC.w); - vec4 vcpos = PCVCMatrix * dcsmall; - vertexVCVSOutput = vcpos.xyz/vcpos.w; - gl_Position = dcsmall; -} -`,dX=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkVolumeFS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// Template for the volume mappers fragment shader - -// the output of this shader -//VTK::Output::Dec - -varying vec3 vertexVCVSOutput; - -// first declare the settings from the mapper -// that impact the code paths in here - -// always set vtkNumComponents 1,2,3,4 -//VTK::NumComponents - -// possibly define vtkTrilinearOn -//VTK::TrilinearOn - -// possibly define UseIndependentComponents -//VTK::IndependentComponentsOn - -// possibly define vtkCustomComponentsColorMix -//VTK::CustomComponentsColorMixOn - -// possibly define any "proportional" components -//VTK::vtkProportionalComponents - -// possibly define any components that are forced to nearest interpolation -//VTK::vtkForceNearestComponents - -// Define the blend mode to use -#define vtkBlendMode //VTK::BlendMode - -// Possibly define vtkImageLabelOutlineOn -//VTK::ImageLabelOutlineOn - -// Possibly define vtkLabelEdgeProjectionOn -//VTK::LabelEdgeProjectionOn - - -#ifdef vtkImageLabelOutlineOn - uniform float outlineOpacity; - uniform float vpWidth; - uniform float vpHeight; - uniform float vpOffsetX; - uniform float vpOffsetY; - uniform mat4 PCWCMatrix; - uniform mat4 vWCtoIDX; - - const int MAX_SEGMENT_INDEX = 256; // Define as per expected maximum - // bool seenSegmentsByOriginalPos[MAX_SEGMENT_INDEX]; - #define MAX_SEGMENTS 256 - #define UINT_SIZE 32 - #define BITMASK_SIZE ((MAX_SEGMENTS + UINT_SIZE - 1) / UINT_SIZE) - - uint bitmask[BITMASK_SIZE]; - - // Set the corresponding bit in the bitmask - void setBit(int segmentIndex) { - int index = segmentIndex / UINT_SIZE; - int bitIndex = segmentIndex % UINT_SIZE; - bitmask[index] |= 1u << bitIndex; - } - - // Check if a bit is set in the bitmask - bool isBitSet(int segmentIndex) { - int index = segmentIndex / UINT_SIZE; - int bitIndex = segmentIndex % UINT_SIZE; - return ((bitmask[index] & (1u << bitIndex)) != 0u); - } -#endif - -// define vtkLightComplexity -//VTK::LightComplexity -#if vtkLightComplexity > 0 -uniform float vSpecularPower; -uniform float vAmbient; -uniform float vDiffuse; -uniform float vSpecular; -//VTK::Light::Dec -#endif - -//VTK::VolumeShadowOn -//VTK::SurfaceShadowOn -//VTK::localAmbientOcclusionOn -//VTK::LAO::Dec -//VTK::VolumeShadow::Dec - -// define vtkComputeNormalFromOpacity -//VTK::vtkComputeNormalFromOpacity - -// possibly define vtkGradientOpacityOn -//VTK::GradientOpacityOn -#ifdef vtkGradientOpacityOn -uniform float goscale0; -uniform float goshift0; -uniform float gomin0; -uniform float gomax0; -#ifdef UseIndependentComponents -#if vtkNumComponents > 1 -uniform float goscale1; -uniform float goshift1; -uniform float gomin1; -uniform float gomax1; -#if vtkNumComponents > 2 -uniform float goscale2; -uniform float goshift2; -uniform float gomin2; -uniform float gomax2; -#if vtkNumComponents > 3 -uniform float goscale3; -uniform float goshift3; -uniform float gomin3; -uniform float gomax3; -#endif -#endif -#endif -#endif -#endif - -// if you want to see the raw tiled -// data in webgl1 uncomment the following line -// #define debugtile - -// camera values -uniform float camThick; -uniform float camNear; -uniform float camFar; -uniform int cameraParallel; - -// values describing the volume geometry -uniform vec3 vOriginVC; -uniform vec3 vSpacing; -uniform ivec3 volumeDimensions; // 3d texture dimensions -uniform vec3 vPlaneNormal0; -uniform float vPlaneDistance0; -uniform vec3 vPlaneNormal1; -uniform float vPlaneDistance1; -uniform vec3 vPlaneNormal2; -uniform float vPlaneDistance2; -uniform vec3 vPlaneNormal3; -uniform float vPlaneDistance3; -uniform vec3 vPlaneNormal4; -uniform float vPlaneDistance4; -uniform vec3 vPlaneNormal5; -uniform float vPlaneDistance5; - -//VTK::ClipPlane::Dec - -// opacity and color textures -uniform sampler2D otexture; -uniform float oshift0; -uniform float oscale0; -uniform sampler2D ctexture; -uniform float cshift0; -uniform float cscale0; - -#if vtkNumComponents >= 2 -uniform float oshift1; -uniform float oscale1; -uniform float cshift1; -uniform float cscale1; -#endif -#if vtkNumComponents >= 3 -uniform float oshift2; -uniform float oscale2; -uniform float cshift2; -uniform float cscale2; -#endif -#if vtkNumComponents >= 4 -uniform float oshift3; -uniform float oscale3; -uniform float cshift3; -uniform float cscale3; -#endif - -// jitter texture -uniform sampler2D jtexture; -uniform sampler2D ttexture; - - -// some 3D texture values -uniform float sampleDistance; -uniform vec3 vVCToIJK; -uniform vec3 volumeSpacings; // spacing in the world coorindates - - -// the heights defined below are the locations -// for the up to four components of the tfuns -// the tfuns have a height of 2XnumComps pixels so the -// values are computed to hit the middle of the two rows -// for that component -#ifdef UseIndependentComponents -#if vtkNumComponents == 1 -uniform float mix0; -#define height0 0.5 -#endif -#if vtkNumComponents == 2 -uniform float mix0; -uniform float mix1; -#define height0 0.25 -#define height1 0.75 -#endif -#if vtkNumComponents == 3 -uniform float mix0; -uniform float mix1; -uniform float mix2; -#define height0 0.17 -#define height1 0.5 -#define height2 0.83 -#endif -#if vtkNumComponents == 4 -uniform float mix0; -uniform float mix1; -uniform float mix2; -uniform float mix3; -#define height0 0.125 -#define height1 0.375 -#define height2 0.625 -#define height3 0.875 -#endif -#endif - -uniform vec4 ipScalarRangeMin; -uniform vec4 ipScalarRangeMax; - -// declaration for intermixed geometry -//VTK::ZBuffer::Dec - -//======================================================================= -// global and custom variables (a temporary section before photorealistics rendering module is complete) -vec3 rayDirVC; -float sampleDistanceISVS; -float sampleDistanceIS; - -#define SQRT3 1.7321 -#define INV4PI 0.0796 -#define EPSILON 0.001 -#define PI 3.1415 -#define PI2 9.8696 - -//======================================================================= -// Webgl2 specific version of functions -#if __VERSION__ == 300 - -uniform highp sampler3D texture1; - -vec4 getTextureValue(vec3 pos) -{ - vec4 tmp = texture(texture1, pos); - - #if defined(vtkComponent0ForceNearest) || \\ - defined(vtkComponent1ForceNearest) || \\ - defined(vtkComponent2ForceNearest) || \\ - defined(vtkComponent3ForceNearest) - vec3 nearestPos = (floor(pos * vec3(volumeDimensions)) + 0.5) / vec3(volumeDimensions); - vec4 nearestValue = texture(texture1, nearestPos); - #ifdef vtkComponent0ForceNearest - tmp[0] = nearestValue[0]; - #endif - #ifdef vtkComponent1ForceNearest - tmp[1] = nearestValue[1]; - #endif - #ifdef vtkComponent2ForceNearest - tmp[2] = nearestValue[2]; - #endif - #ifdef vtkComponent3ForceNearest - tmp[3] = nearestValue[3]; - #endif - #endif - - #ifndef UseIndependentComponents - #if vtkNumComponents == 1 - tmp.a = tmp.r; - #endif - #if vtkNumComponents == 2 - tmp.a = tmp.g; - #endif - #if vtkNumComponents == 3 - tmp.a = length(tmp.rgb); - #endif - #endif - - return tmp; -} - -//======================================================================= -// WebGL1 specific version of functions -#else - -uniform sampler2D texture1; - -uniform float texWidth; -uniform float texHeight; -uniform int xreps; -uniform int xstride; -uniform int ystride; - -// if computing trilinear values from multiple z slices -#ifdef vtkTrilinearOn -vec4 getTextureValue(vec3 ijk) -{ - float zoff = 1.0/float(volumeDimensions.z); - vec4 val1 = getOneTextureValue(ijk); - vec4 val2 = getOneTextureValue(vec3(ijk.xy, ijk.z + zoff)); - - float indexZ = float(volumeDimensions)*ijk.z; - float zmix = indexZ - floor(indexZ); - - return mix(val1, val2, zmix); -} - -vec4 getOneTextureValue(vec3 ijk) -#else // nearest or fast linear -vec4 getTextureValue(vec3 ijk) -#endif -{ - vec3 tdims = vec3(volumeDimensions); - -#ifdef debugtile - vec2 tpos = vec2(ijk.x, ijk.y); - vec4 tmp = texture2D(texture1, tpos); - tmp.a = 1.0; - -#else - int z = int(ijk.z * tdims.z); - int yz = z / xreps; - int xz = z - yz*xreps; - - int tileWidth = volumeDimensions.x/xstride; - int tileHeight = volumeDimensions.y/ystride; - - xz *= tileWidth; - yz *= tileHeight; - - float ni = float(xz) + (ijk.x*float(tileWidth)); - float nj = float(yz) + (ijk.y*float(tileHeight)); - - vec2 tpos = vec2(ni/texWidth, nj/texHeight); - - vec4 tmp = texture2D(texture1, tpos); - -#if vtkNumComponents == 1 - tmp.a = tmp.r; -#endif -#if vtkNumComponents == 2 - tmp.g = tmp.a; -#endif -#if vtkNumComponents == 3 - tmp.a = length(tmp.rgb); -#endif -#endif - - return tmp; -} - -// End of Webgl1 specific code -//======================================================================= -#endif - -//======================================================================= -// transformation between VC and IS space - -// convert vector position from idx to vc -#if (vtkLightComplexity > 0) || (defined vtkClippingPlanesOn) -vec3 IStoVC(vec3 posIS){ - vec3 posVC = posIS / vVCToIJK; - return posVC.x * vPlaneNormal0 + - posVC.y * vPlaneNormal2 + - posVC.z * vPlaneNormal4 + - vOriginVC; -} - -// convert vector position from vc to idx -vec3 VCtoIS(vec3 posVC){ - posVC = posVC - vOriginVC; - posVC = vec3( - dot(posVC, vPlaneNormal0), - dot(posVC, vPlaneNormal2), - dot(posVC, vPlaneNormal4)); - return posVC * vVCToIJK; -} -#endif - -//Rotate vector to view coordinate -#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) -void rotateToViewCoord(inout vec3 dirIS){ - dirIS.xyz = - dirIS.x * vPlaneNormal0 + - dirIS.y * vPlaneNormal2 + - dirIS.z * vPlaneNormal4; -} - -//Rotate vector to idx coordinate -vec3 rotateToIDX(vec3 dirVC){ - vec3 dirIS; - dirIS.xyz = vec3( - dot(dirVC, vPlaneNormal0), - dot(dirVC, vPlaneNormal2), - dot(dirVC, vPlaneNormal4)); - return dirIS; -} -#endif - -//======================================================================= -// Given a normal compute the gradient opacity factors -float computeGradientOpacityFactor( - float normalMag, float goscale, float goshift, float gomin, float gomax) -{ - return clamp(normalMag * goscale + goshift, gomin, gomax); -} - -//======================================================================= -// compute the normal and gradient magnitude for a position, uses forward difference -#if (vtkLightComplexity > 0) || (defined vtkGradientOpacityOn) - #ifdef vtkClippingPlanesOn - void adjustClippedVoxelValues(vec3 pos, vec3 texPos[3], inout vec3 g1) - { - vec3 g1VC[3]; - for (int i = 0; i < 3; ++i) - { - g1VC[i] = IStoVC(texPos[i]); - } - vec3 posVC = IStoVC(pos); - for (int i = 0; i < clip_numPlanes; ++i) - { - for (int j = 0; j < 3; ++j) - { - if(dot(vec3(vClipPlaneOrigins[i] - g1VC[j].xyz), vClipPlaneNormals[i]) > 0.0) - { - g1[j] = 0.0; - } - } - } - } - #endif - - #ifdef vtkComputeNormalFromOpacity - vec4 computeDensityNormal(vec3 opacityUCoords[2], float opactityTextureHeight, float gradientOpacity) { - vec3 opacityG1, opacityG2; - opacityG1.x = texture2D(otexture, vec2(opacityUCoords[0].x, opactityTextureHeight)).r; - opacityG1.y = texture2D(otexture, vec2(opacityUCoords[0].y, opactityTextureHeight)).r; - opacityG1.z = texture2D(otexture, vec2(opacityUCoords[0].z, opactityTextureHeight)).r; - opacityG2.x = texture2D(otexture, vec2(opacityUCoords[1].x, opactityTextureHeight)).r; - opacityG2.y = texture2D(otexture, vec2(opacityUCoords[1].y, opactityTextureHeight)).r; - opacityG2.z = texture2D(otexture, vec2(opacityUCoords[1].z, opactityTextureHeight)).r; - opacityG1.xyz *= gradientOpacity; - opacityG2.xyz *= gradientOpacity; - - vec4 opacityG = vec4(opacityG1 - opacityG2, 1.0f); - // divide by spacing - opacityG.xyz /= vSpacing; - opacityG.w = length(opacityG.xyz); - // rotate to View Coords - rotateToViewCoord(opacityG.xyz); - if (!all(equal(opacityG.xyz, vec3(0.0)))) { - return vec4(normalize(opacityG.xyz),opacityG.w); - } else { - return vec4(0.0); - } - } - - vec4 computeNormalForDensity(vec3 pos, vec3 tstep, out vec3 scalarInterp[2], const int opacityComponent) - { - vec3 xvec = vec3(tstep.x, 0.0, 0.0); - vec3 yvec = vec3(0.0, tstep.y, 0.0); - vec3 zvec = vec3(0.0, 0.0, tstep.z); - vec3 texPosPVec[3]; - texPosPVec[0] = pos + xvec; - texPosPVec[1] = pos + yvec; - texPosPVec[2] = pos + zvec; - vec3 texPosNVec[3]; - texPosNVec[0] = pos - xvec; - texPosNVec[1] = pos - yvec; - texPosNVec[2] = pos - zvec; - vec3 g1, g2; - - scalarInterp[0].x = getTextureValue(texPosPVec[0])[opacityComponent]; - scalarInterp[0].y = getTextureValue(texPosPVec[1])[opacityComponent]; - scalarInterp[0].z = getTextureValue(texPosPVec[2])[opacityComponent]; - scalarInterp[1].x = getTextureValue(texPosNVec[0])[opacityComponent]; - scalarInterp[1].y = getTextureValue(texPosNVec[1])[opacityComponent]; - scalarInterp[1].z = getTextureValue(texPosNVec[2])[opacityComponent]; - - #ifdef vtkClippingPlanesOn - adjustClippedVoxelValues(pos, texPosPVec, scalarInterp[0]); - adjustClippedVoxelValues(pos, texPosNVec, scalarInterp[1]); - #endif - vec4 result; - result.x = scalarInterp[0].x - scalarInterp[1].x; - result.y = scalarInterp[0].y - scalarInterp[1].y; - result.z = scalarInterp[0].z - scalarInterp[1].z; - // divide by spacing - result.xyz /= vSpacing; - result.w = length(result.xyz); - // rotate to View Coords - rotateToViewCoord(result.xyz); - if (length(result.xyz) > 0.0) { - return vec4(normalize(result.xyz),result.w); - } else { - return vec4(0.0); - } - } - #endif - - // only works with dependent components - vec4 computeNormal(vec3 pos, vec3 tstep) - { - vec3 xvec = vec3(tstep.x, 0.0, 0.0); - vec3 yvec = vec3(0.0, tstep.y, 0.0); - vec3 zvec = vec3(0.0, 0.0, tstep.z); - vec3 texPosPVec[3]; - texPosPVec[0] = pos + xvec; - texPosPVec[1] = pos + yvec; - texPosPVec[2] = pos + zvec; - vec3 texPosNVec[3]; - texPosNVec[0] = pos - xvec; - texPosNVec[1] = pos - yvec; - texPosNVec[2] = pos - zvec; - vec3 g1, g2; - g1.x = getTextureValue(texPosPVec[0]).a; - g1.y = getTextureValue(texPosPVec[1]).a; - g1.z = getTextureValue(texPosPVec[2]).a; - g2.x = getTextureValue(texPosNVec[0]).a; - g2.y = getTextureValue(texPosNVec[1]).a; - g2.z = getTextureValue(texPosNVec[2]).a; - #ifdef vtkClippingPlanesOn - adjustClippedVoxelValues(pos, texPosPVec, g1); - adjustClippedVoxelValues(pos, texPosNVec, g2); - #endif - vec4 result; - result = vec4(g1 - g2, -1.0); - // divide by spacing - result.xyz /= vSpacing; - result.w = length(result.xyz); - if (result.w > 0.0){ - // rotate to View Coords - rotateToViewCoord(result.xyz); - return vec4(normalize(result.xyz),result.w); - } else { - return vec4(0.0); - } - } -#endif - - -#ifdef vtkImageLabelOutlineOn - vec4 fragCoordToPCPos(vec4 fragCoord) { - return vec4( - (fragCoord.x / vpWidth - vpOffsetX - 0.5) * 2.0, - (fragCoord.y / vpHeight - vpOffsetY - 0.5) * 2.0, - (fragCoord.z - 0.5) * 2.0, - 1.0); - } - - vec4 pcPosToWorldCoord(vec4 pcPos) { - return PCWCMatrix * pcPos; - } - - vec3 fragCoordToIndexSpace(vec4 fragCoord) { - vec4 pcPos = fragCoordToPCPos(fragCoord); - vec4 worldCoord = pcPosToWorldCoord(pcPos); - vec4 vertex = (worldCoord / worldCoord.w); - - vec3 index = (vWCtoIDX * vertex).xyz; - - // half voxel fix for labelmapOutline - return (index + vec3(0.5)) / vec3(volumeDimensions); - } - - vec3 fragCoordToWorld(vec4 fragCoord) { - vec4 pcPos = fragCoordToPCPos(fragCoord); - vec4 worldCoord = pcPosToWorldCoord(pcPos); - return worldCoord.xyz; - } -#endif - -//======================================================================= -// compute the normals and gradient magnitudes for a position -// for independent components -mat4 computeMat4Normal(vec3 pos, vec4 tValue, vec3 tstep) -{ - mat4 result; - vec4 distX = getTextureValue(pos + vec3(tstep.x, 0.0, 0.0)) - tValue; - vec4 distY = getTextureValue(pos + vec3(0.0, tstep.y, 0.0)) - tValue; - vec4 distZ = getTextureValue(pos + vec3(0.0, 0.0, tstep.z)) - tValue; - - // divide by spacing - distX /= vSpacing.x; - distY /= vSpacing.y; - distZ /= vSpacing.z; - - mat3 rot; - rot[0] = vPlaneNormal0; - rot[1] = vPlaneNormal2; - rot[2] = vPlaneNormal4; - -#if !defined(vtkComponent0Proportional) - result[0].xyz = vec3(distX.r, distY.r, distZ.r); - result[0].a = length(result[0].xyz); - result[0].xyz *= rot; - if (result[0].w > 0.0) - { - result[0].xyz /= result[0].w; - } -#endif - -// optionally compute the 2nd component -#if vtkNumComponents >= 2 && !defined(vtkComponent1Proportional) - result[1].xyz = vec3(distX.g, distY.g, distZ.g); - result[1].a = length(result[1].xyz); - result[1].xyz *= rot; - if (result[1].w > 0.0) - { - result[1].xyz /= result[1].w; - } -#endif - -// optionally compute the 3rd component -#if vtkNumComponents >= 3 && !defined(vtkComponent2Proportional) - result[2].xyz = vec3(distX.b, distY.b, distZ.b); - result[2].a = length(result[2].xyz); - result[2].xyz *= rot; - if (result[2].w > 0.0) - { - result[2].xyz /= result[2].w; - } -#endif - -// optionally compute the 4th component -#if vtkNumComponents >= 4 && !defined(vtkComponent3Proportional) - result[3].xyz = vec3(distX.a, distY.a, distZ.a); - result[3].a = length(result[3].xyz); - result[3].xyz *= rot; - if (result[3].w > 0.0) - { - result[3].xyz /= result[3].w; - } -#endif - - return result; -} - -//======================================================================= -// global shadow - secondary ray -#if defined(VolumeShadowOn) || defined(localAmbientOcclusionOn) -float random() -{ - float rand = fract(sin(dot(gl_FragCoord.xy,vec2(12.9898,78.233)))*43758.5453123); - float jitter=texture2D(jtexture,gl_FragCoord.xy/32.).r; - uint pcg_state = floatBitsToUint(jitter); - uint state = pcg_state; - pcg_state = pcg_state * uint(747796405) + uint(2891336453); - uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737); - return (float((((word >> uint(22)) ^ word) >> 1 ))/float(2147483647) + rand)/2.0; -} -#endif - -#ifdef VolumeShadowOn -// henyey greenstein phase function -float phase_function(float cos_angle) -{ - // divide by 2.0 instead of 4pi to increase intensity - return ((1.0-anisotropy2)/pow(1.0+anisotropy2-2.0*anisotropy*cos_angle, 1.5))/2.0; -} - -// Computes the intersection between a ray and a box -struct Hit -{ - float tmin; - float tmax; -}; - -struct Ray -{ - vec3 origin; - vec3 dir; - vec3 invDir; -}; - -bool BBoxIntersect(vec3 boundMin, vec3 boundMax, const Ray r, out Hit hit) -{ - vec3 tbot = r.invDir * (boundMin - r.origin); - vec3 ttop = r.invDir * (boundMax - r.origin); - vec3 tmin = min(ttop, tbot); - vec3 tmax = max(ttop, tbot); - vec2 t = max(tmin.xx, tmin.yz); - float t0 = max(t.x, t.y); - t = min(tmax.xx, tmax.yz); - float t1 = min(t.x, t.y); - hit.tmin = t0; - hit.tmax = t1; - return t1 > max(t0,0.0); -} - -// As BBoxIntersect requires the inverse of the ray coords, -// this function is used to avoid numerical issues -void safe_0_vector(inout Ray ray) -{ - if(abs(ray.dir.x) < EPSILON) ray.dir.x = sign(ray.dir.x) * EPSILON; - if(abs(ray.dir.y) < EPSILON) ray.dir.y = sign(ray.dir.y) * EPSILON; - if(abs(ray.dir.z) < EPSILON) ray.dir.z = sign(ray.dir.z) * EPSILON; -} - -float volume_shadow(vec3 posIS, vec3 lightDirNormIS) -{ - float shadow = 1.0; - float opacity = 0.0; - - // modify sample distance with a random number between 1.5 and 3.0 - float sampleDistanceISVS_jitter = sampleDistanceISVS * mix(1.5, 3.0, random()); - float opacityPrev = texture2D(otexture, vec2(getTextureValue(posIS).r * oscale0 + oshift0, 0.5)).r; - - // in case the first sample near surface has a very tiled light ray, we need to offset start position - posIS += sampleDistanceISVS_jitter * lightDirNormIS; - - // compute the start and end points for the ray - Ray ray; - Hit hit; - ray.origin = posIS; - ray.dir = lightDirNormIS; - safe_0_vector(ray); - ray.invDir = 1.0/ray.dir; - - if(!BBoxIntersect(vec3(0.0),vec3(1.0), ray, hit)) - { - return 1.0; - } - float maxdist = hit.tmax; - - // interpolate shadow ray length between: 1 unit of sample distance in IS to SQRT3, based on globalIlluminationReach - float maxgi = mix(sampleDistanceISVS_jitter,SQRT3,giReach); - maxdist = min(maxdist,maxgi); - if(maxdist < EPSILON) { - return 1.0; - } - - float current_dist = 0.0; - float current_step = length(sampleDistanceISVS_jitter * lightDirNormIS); - float clamped_step = 0.0; - - vec4 scalar = vec4(0.0); - while(current_dist < maxdist) - { -#ifdef vtkClippingPlanesOn - vec3 posVC = IStoVC(posIS); - for (int i = 0; i < clip_numPlanes; ++i) - { - if (dot(vec3(vClipPlaneOrigins[i] - posVC), vClipPlaneNormals[i]) > 0.0) - { - current_dist = maxdist; - } - } -#endif - scalar = getTextureValue(posIS); - opacity = texture2D(otexture, vec2(scalar.r * oscale0 + oshift0, 0.5)).r; - #if defined(vtkGradientOpacityOn) && !defined(UseIndependentComponents) - vec4 normal = computeNormal(posIS, vec3(1.0/vec3(volumeDimensions))); - opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); - #endif - shadow *= 1.0 - opacity; - - // optimization: early termination - if (shadow < EPSILON){ - return 0.0; - } - - clamped_step = min(maxdist - current_dist, current_step); - posIS += clamped_step * lightDirNormIS; - current_dist += current_step; - } - - return shadow; -} - -vec3 applyShadowRay(vec3 tColor, vec3 posIS, vec3 viewDirectionVC) -{ - vec3 vertLight = vec3(0.0); - vec3 secondary_contrib = vec3(0.0); - // here we assume only positional light, no effect of cones - for (int i = 0; i < lightNum; i++) - { - #if(vtkLightComplexity==3) - if (lightPositional[i] == 1){ - vertLight = lightPositionVC[i] - IStoVC(posIS); - }else{ - vertLight = - lightDirectionVC[i]; - } - #else - vertLight = - lightDirectionVC[i]; - #endif - // here we assume achromatic light, only intensity - float dDotL = dot(viewDirectionVC, normalize(vertLight)); - // isotropic scatter returns 0.5 instead of 1/4pi to increase intensity - float phase_attenuation = 0.5; - if (abs(anisotropy) > EPSILON){ - phase_attenuation = phase_function(dDotL); - } - float vol_shadow = volume_shadow(posIS, normalize(rotateToIDX(vertLight))); - secondary_contrib += tColor * vDiffuse * lightColor[i] * vol_shadow * phase_attenuation; - secondary_contrib += tColor * vAmbient; - } - return secondary_contrib; -} -#endif - -//======================================================================= -// local ambient occlusion -#ifdef localAmbientOcclusionOn -vec3 sample_direction_uniform(int i) -{ - float rand = random() * 0.5; - float theta = PI2 * (kernelSample[i][0] + rand); - float phi = acos(2.0 * (kernelSample[i][1] + rand) -1.0) / 2.5; - return normalize(vec3(cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi))); -} - -// return a matrix that transform startDir into z axis; startDir should be normalized -mat3 zBaseRotationalMatrix(vec3 startDir){ - vec3 axis = cross(startDir, vec3(0.0,0.0,1.0)); - float cosA = startDir.z; - float k = 1.0 / (1.0 + cosA); - mat3 matrix = mat3((axis.x * axis.x * k) + cosA, (axis.y * axis.x * k) - axis.z, (axis.z * axis.x * k) + axis.y, - (axis.x * axis.y * k) + axis.z, (axis.y * axis.y * k) + cosA, (axis.z * axis.y * k) - axis.x, - (axis.x * axis.z * k) - axis.y, (axis.y * axis.z * k) + axis.x, (axis.z * axis.z * k) + cosA); - return matrix; -} - -float computeLAO(vec3 posIS, float op, vec3 lightDir, vec4 normal){ - // apply LAO only at selected locations, otherwise return full brightness - if (normal.w > 0.0 && op > 0.05){ - float total_transmittance = 0.0; - mat3 inverseRotateBasis = inverse(zBaseRotationalMatrix(normalize(-normal.xyz))); - vec3 currPos, randomDirStep; - float weight, transmittance, opacity; - for (int i = 0; i < kernelSize; i++) - { - randomDirStep = inverseRotateBasis * sample_direction_uniform(i) * sampleDistanceIS; - weight = 1.0 - dot(normalize(lightDir), normalize(randomDirStep)); - currPos = posIS; - transmittance = 1.0; - for (int j = 0; j < kernelRadius ; j++){ - currPos += randomDirStep; - // check if it's at clipping plane, if so return full brightness - if (all(greaterThan(currPos, vec3(EPSILON))) && all(lessThan(currPos,vec3(1.0-EPSILON)))){ - opacity = texture2D(otexture, vec2(getTextureValue(currPos).r * oscale0 + oshift0, 0.5)).r; - #ifdef vtkGradientOpacityOn - opacity *= computeGradientOpacityFactor(normal.w, goscale0, goshift0, gomin0, gomax0); - #endif - transmittance *= 1.0 - opacity; - } - else{ - break; - } - } - total_transmittance += transmittance / float(kernelRadius) * weight; - - // early termination if fully translucent - if (total_transmittance > 1.0 - EPSILON){ - return 1.0; - } - } - // average transmittance and reduce variance - return clamp(total_transmittance / float(kernelSize), 0.3, 1.0); - } else { - return 1.0; - } -} -#endif - -//======================================================================= -// surface light contribution -#if vtkLightComplexity > 0 - void applyLighting(inout vec3 tColor, vec4 normal) - { - vec3 diffuse = vec3(0.0, 0.0, 0.0); - vec3 specular = vec3(0.0, 0.0, 0.0); - float df, sf = 0.0; - for (int i = 0; i < lightNum; i++){ - df = abs(dot(normal.rgb, -lightDirectionVC[i])); - diffuse += df * lightColor[i]; - sf = pow( abs(dot(lightHalfAngleVC[i],normal.rgb)), vSpecularPower); - specular += sf * lightColor[i]; - } - tColor.rgb = tColor.rgb*(diffuse*vDiffuse + vAmbient) + specular*vSpecular; - } - #ifdef SurfaceShadowOn - #if vtkLightComplexity < 3 - vec3 applyLightingDirectional(vec3 posIS, vec4 tColor, vec4 normal) - { - // everything in VC - vec3 diffuse = vec3(0.0); - vec3 specular = vec3(0.0); - #ifdef localAmbientOcclusionOn - vec3 ambient = vec3(0.0); - #endif - vec3 vertLightDirection; - for (int i = 0; i < lightNum; i++){ - float ndotL,vdotR; - vertLightDirection = lightDirectionVC[i]; - ndotL = dot(normal.xyz, vertLightDirection); - if (ndotL < 0.0 && twoSidedLighting) - { - ndotL = -ndotL; - } - if (ndotL > 0.0) - { - diffuse += ndotL * lightColor[i]; - //specular - vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); - if (vdotR > 0.0) - { - specular += pow(vdotR, vSpecularPower) * lightColor[i]; - } - } - #ifdef localAmbientOcclusionOn - ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); - #endif - } - #ifdef localAmbientOcclusionOn - return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; - #else - return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; - #endif - } - #else - vec3 applyLightingPositional(vec3 posIS, vec4 tColor, vec4 normal, vec3 posVC) - { - // everything in VC - vec3 diffuse = vec3(0.0); - vec3 specular = vec3(0.0); - #ifdef localAmbientOcclusionOn - vec3 ambient = vec3(0.0); - #endif - vec3 vertLightDirection; - for (int i = 0; i < lightNum; i++){ - float distance,attenuation,ndotL,vdotR; - vec3 lightDir; - if (lightPositional[i] == 1){ - lightDir = lightDirectionVC[i]; - vertLightDirection = posVC - lightPositionVC[i]; - distance = length(vertLightDirection); - vertLightDirection = normalize(vertLightDirection); - attenuation = 1.0 / (lightAttenuation[i].x - + lightAttenuation[i].y * distance - + lightAttenuation[i].z * distance * distance); - // per OpenGL standard cone angle is 90 or less for a spot light - if (lightConeAngle[i] <= 90.0){ - float coneDot = dot(vertLightDirection, lightDir); - if (coneDot >= cos(radians(lightConeAngle[i]))){ // if inside cone - attenuation = attenuation * pow(coneDot, lightExponent[i]); - } - else { - attenuation = 0.0; - } - } - ndotL = dot(normal.xyz, vertLightDirection); - if (ndotL < 0.0 && twoSidedLighting) - { - ndotL = -ndotL; - } - if (ndotL > 0.0) - { - diffuse += ndotL * attenuation * lightColor[i]; - //specular - vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); - if (vdotR > 0.0) - { - specular += pow(vdotR, vSpecularPower) * attenuation * lightColor[i]; - } - } - #ifdef localAmbientOcclusionOn - ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); - #endif - } else { - vertLightDirection = lightDirectionVC[i]; - ndotL = dot(normal.xyz, vertLightDirection); - if (ndotL < 0.0 && twoSidedLighting) - { - ndotL = -ndotL; - } - if (ndotL > 0.0) - { - diffuse += ndotL * lightColor[i]; - //specular - vdotR = dot(-rayDirVC, normalize(2.0 * ndotL * -normal.xyz + vertLightDirection)); - if (vdotR > 0.0) - { - specular += pow(vdotR, vSpecularPower) * lightColor[i]; - } - } - #ifdef localAmbientOcclusionOn - ambient += computeLAO(posIS, tColor.a, vertLightDirection, normal); - #endif - } - } - #ifdef localAmbientOcclusionOn - return tColor.rgb * (diffuse * vDiffuse + vAmbient * ambient) + specular*vSpecular; - #else - return tColor.rgb * (diffuse * vDiffuse + vAmbient) + specular*vSpecular; - #endif - } - #endif - #endif -#endif - -// LAO of surface shadows and volume shadows only work with dependent components -vec3 applyAllLightning(vec3 tColor, float alpha, vec3 posIS, vec4 normalLight) { - #if vtkLightComplexity > 0 - // surface shadows if needed - #ifdef SurfaceShadowOn - #if vtkLightComplexity < 3 - vec3 tColorS = applyLightingDirectional(posIS, vec4(tColor, alpha), normalLight); - #else - vec3 tColorS = applyLightingPositional(posIS, vec4(tColor, alpha), normalLight, IStoVC(posIS)); - #endif - #endif - - // volume shadows if needed - #ifdef VolumeShadowOn - vec3 tColorVS = applyShadowRay(tColor, posIS, rayDirVC); - #endif - - // merge - #ifdef VolumeShadowOn - #ifdef SurfaceShadowOn - // surface shadows + volumetric shadows - float vol_coef = volumetricScatteringBlending * (1.0 - alpha / 2.0) * (1.0 - atan(normalLight.w) * INV4PI); - tColor = (1.0-vol_coef) * tColorS + vol_coef * tColorVS; - #else - // volumetric shadows only - tColor = tColorVS; - #endif - #else - #ifdef SurfaceShadowOn - // surface shadows only - tColor = tColorS; - #else - // no shadows - applyLighting(tColor, normal3); - #endif - #endif - #endif - return tColor; -} - - -vec4 getColorForValue(vec4 tValue, vec3 posIS, vec3 tstep) -{ - -// If labeloutline and not the edge labelmap, since in the edge labelmap blend -// we need the underlying data to sample through -#if defined(vtkImageLabelOutlineOn) && !defined(vtkLabelEdgeProjectionOn) - vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord); // pos in texture space - vec4 centerValue = getTextureValue(centerPosIS); - bool pixelOnBorder = false; - vec4 tColor = texture2D(ctexture, vec2(centerValue.r * cscale0 + cshift0, 0.5)); - - // Get alpha of segment from opacity function. - tColor.a = texture2D(otexture, vec2(centerValue.r * oscale0 + oshift0, 0.5)).r; - - int segmentIndex = int(centerValue.r * 255.0); - - // Use texture sampling for outlineThickness - float textureCoordinate = float(segmentIndex - 1) / 1024.0; - float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; - - int actualThickness = int(textureValue * 255.0); - - - // If it is the background (segment index 0), we should quickly bail out. - // Previously, this was determined by tColor.a, which was incorrect as it - // prevented the outline from appearing when the fill is 0. - if (segmentIndex == 0){ - return vec4(0, 0, 0, 0); - } - - // Only perform outline check on fragments rendering voxels that aren't invisible. - // Saves a bunch of needless checks on the background. - // TODO define epsilon when building shader? - for (int i = -actualThickness; i <= actualThickness; i++) { - for (int j = -actualThickness; j <= actualThickness; j++) { - if (i == 0 || j == 0) { - continue; - } - - vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), - gl_FragCoord.y + float(j), - gl_FragCoord.z, gl_FragCoord.w); - - vec3 neighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); - vec4 value = getTextureValue(neighborPosIS); - - // If any of my neighbours are not the same value as I - // am, this means I am on the border of the segment. - // We can break the loops - if (any(notEqual(value, centerValue))) { - pixelOnBorder = true; - break; - } - } - - if (pixelOnBorder == true) { - break; - } - } - - // If I am on the border, I am displayed at full opacity - if (pixelOnBorder == true) { - tColor.a = outlineOpacity; - } - - return tColor; - -#else - // compute the normal and gradient magnitude if needed - // We compute it as a vec4 if possible otherwise a mat4 - - #ifdef UseIndependentComponents - - // sample textures - vec3 tColor0 = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, height0)).rgb; - float pwfValue0 = texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, height0)).r; - - #if vtkNumComponents > 1 - vec3 tColor1 = texture2D(ctexture, vec2(tValue.g * cscale1 + cshift1, height1)).rgb; - float pwfValue1 = texture2D(otexture, vec2(tValue.g * oscale1 + oshift1, height1)).r; - - #if vtkNumComponents > 2 - vec3 tColor2 = texture2D(ctexture, vec2(tValue.b * cscale2 + cshift2, height2)).rgb; - float pwfValue2 = texture2D(otexture, vec2(tValue.b * oscale2 + oshift2, height2)).r; - - #if vtkNumComponents > 3 - vec3 tColor3 = texture2D(ctexture, vec2(tValue.a * cscale3 + cshift3, height3)).rgb; - float pwfValue3 = texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, height3)).r; - #endif - #endif - #endif - - #if !defined(vtkCustomComponentsColorMix) - // default path for component color mix - - // compute the normal vectors as needed - #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) - mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); - #endif - - // compute gradient opacity factors as needed - vec4 goFactor = vec4(1.0, 1.0 ,1.0 ,1.0); - #if defined(vtkGradientOpacityOn) - #if !defined(vtkComponent0Proportional) - goFactor.x = - computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); - #endif - #if vtkNumComponents > 1 - #if !defined(vtkComponent1Proportional) - goFactor.y = - computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); - #endif - #if vtkNumComponents > 2 - #if !defined(vtkComponent2Proportional) - goFactor.z = - computeGradientOpacityFactor(normalMat[2].a, goscale2, goshift2, gomin2, gomax2); - #endif - #if vtkNumComponents > 3 - #if !defined(vtkComponent3Proportional) - goFactor.w = - computeGradientOpacityFactor(normalMat[3].a, goscale3, goshift3, gomin3, gomax3); - #endif - #endif - #endif - #endif - #endif - - // process color and opacity for each component - #if !defined(vtkComponent0Proportional) - float alpha = goFactor.x*mix0*pwfValue0; - #if vtkLightComplexity > 0 - applyLighting(tColor0, normalMat[0]); - #endif - #else - tColor0 *= pwfValue0; - float alpha = mix(pwfValue0, 1.0, (1.0 - mix0)); - #endif - - #if vtkNumComponents > 1 - #if !defined(vtkComponent1Proportional) - alpha += goFactor.y*mix1*pwfValue1; - #if vtkLightComplexity > 0 - applyLighting(tColor1, normalMat[1]); - #endif - #else - tColor1 *= pwfValue1; - alpha *= mix(pwfValue1, 1.0, (1.0 - mix1)); - #endif - - #if vtkNumComponents > 2 - #if !defined(vtkComponent2Proportional) - alpha += goFactor.z*mix2*pwfValue2; - #if vtkLightComplexity > 0 - applyLighting(tColor2, normalMat[2]); - #endif - #else - tColor2 *= pwfValue2; - alpha *= mix(pwfValue2, 1.0, (1.0 - mix2)); - #endif - #endif - - #if vtkNumComponents > 3 - #if !defined(vtkComponent3Proportional) - alpha += goFactor.w*mix3*pwfValue3; - #if vtkLightComplexity > 0 - applyLighting(tColor3, normalMat[3]); - #endif - #else - tColor3 *= pwfValue3; - alpha *= mix(pwfValue3, 1.0, (1.0 - mix3)); - #endif - #endif - #endif - - // perform final independent blend - vec3 tColor = mix0 * tColor0; - #if vtkNumComponents > 1 - tColor += mix1 * tColor1; - #if vtkNumComponents > 2 - tColor += mix2 * tColor2; - #if vtkNumComponents > 3 - tColor += mix3 * tColor3; - #endif - #endif - #endif - - return vec4(tColor, alpha); - #else - /* - * Mix the color information from all the independent components to get a single rgba output - * Gradient opactity factors and normals are not computed - * - * You can compute these using: - * - computeMat4Normal: always available, compute normal only for non proportional components, used by default independent component mix - * - computeDensityNormal & computeNormalForDensity: available if ((LightComplexity > 0) || GradientOpacityOn) && ComputeNormalFromOpacity), - * used by dependent component color mix, see code for Additive preset in OpenGl/VolumeMapper - * - computeGradientOpacityFactor: always available, used in a lot of places - * - * Using applyAllLightning() is advised for shading but some features don't work well with it (volume shadows, LAO) - * mix0, mix1, ... are defined for each component that is used and correspond to the componentWeight - */ - //VTK::CustomComponentsColorMix::Impl - #endif - #else - // dependent components - - // compute normal if needed - #if (vtkLightComplexity > 0) || defined(vtkGradientOpacityOn) - // use component 3 of the opacity texture as getTextureValue() sets alpha to the opacity value - #ifdef vtkComputeNormalFromOpacity - vec3 scalarInterp[2]; - vec4 normal0 = computeNormalForDensity(posIS, tstep, scalarInterp, 3); - #else - vec4 normal0 = computeNormal(posIS, tstep); - #endif - #endif - - // compute gradient opacity factor enabled - #if defined(vtkGradientOpacityOn) - float gradientOpacity = computeGradientOpacityFactor(normal0.a, goscale0, goshift0, gomin0, gomax0); - #else - const float gradientOpacity = 1.0; - #endif - - // get color and opacity - #if vtkNumComponents == 1 - vec3 tColor = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, 0.5)).rgb; - float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; - if (alpha < EPSILON){ - return vec4(0.0); - } - #endif - #if vtkNumComponents == 2 - vec3 tColor = vec3(tValue.r * cscale0 + cshift0); - float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale1 + oshift1, 0.5)).r; - #endif - #if vtkNumComponents == 3 - vec3 tColor; - tColor.r = tValue.r * cscale0 + cshift0; - tColor.g = tValue.g * cscale1 + cshift1; - tColor.b = tValue.b * cscale2 + cshift2; - float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale0 + oshift0, 0.5)).r; - #endif - #if vtkNumComponents == 4 - vec3 tColor; - tColor.r = tValue.r * cscale0 + cshift0; - tColor.g = tValue.g * cscale1 + cshift1; - tColor.b = tValue.b * cscale2 + cshift2; - float alpha = gradientOpacity*texture2D(otexture, vec2(tValue.a * oscale3 + oshift3, 0.5)).r; - #endif - - // lighting - #if (vtkLightComplexity > 0) - #ifdef vtkComputeNormalFromOpacity - vec4 normalLight; - if (!all(equal(normal0, vec4(0.0)))) { - scalarInterp[0] = scalarInterp[0] * oscale0 + oshift0; - scalarInterp[1] = scalarInterp[1] * oscale0 + oshift0; - normalLight = computeDensityNormal(scalarInterp, 0.5, gradientOpacity); - if (all(equal(normalLight, vec4(0.0)))) { - normalLight = normal0; - } - } - #else - vec4 normalLight = normal0; - #endif - tColor = applyAllLightning(tColor, alpha, posIS, normalLight); - #endif - - return vec4(tColor, alpha); - #endif // dependent -#endif -} - -bool valueWithinScalarRange(vec4 val, vec4 min, vec4 max) { - bool withinRange = false; - #if vtkNumComponents == 1 - if (val.r >= min.r && val.r <= max.r) { - withinRange = true; - } - #else - #ifdef UseIndependentComponents - #if vtkNumComponents == 2 - if (val.r >= min.r && val.r <= max.r && - val.g >= min.g && val.g <= max.g) { - withinRange = true; - } - #else - if (all(greaterThanEqual(val, ipScalarRangeMin)) && - all(lessThanEqual(val, ipScalarRangeMax))) { - withinRange = true; - } - #endif - #endif - #endif - return withinRange; -} - -#if vtkBlendMode == 6 -bool checkOnEdgeForNeighbor(int i, int j, int s, vec3 stepIS) { - vec4 neighborPixelCoord = vec4(gl_FragCoord.x + float(i), gl_FragCoord.y + float(j), gl_FragCoord.z, gl_FragCoord.w); - vec3 originalNeighborPosIS = fragCoordToIndexSpace(neighborPixelCoord); - - bool justSawIt = false; - - vec3 neighborPosIS = originalNeighborPosIS; - - float stepsTraveled = 0.0; - - - // float neighborValue; - for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { - ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); - vec4 texValue = texelFetch(texture1, texCoord, 0); - - if (int(texValue.g) == s) { - justSawIt = true; - break; - } - neighborPosIS += stepIS; - } - - if (justSawIt){ - return false; - } - - - neighborPosIS = originalNeighborPosIS; - for (int k = 0; k < //VTK::MaximumSamplesValue /2 ; ++k) { - ivec3 texCoord = ivec3(neighborPosIS * vec3(volumeDimensions)); - vec4 texValue = texelFetch(texture1, texCoord, 0); - - if (int(texValue.g) == s) { - justSawIt = true; - break; - } - neighborPosIS -= stepIS; - } - - - if (!justSawIt) { - // onedge - vec3 tColorSegment = texture2D(ctexture, vec2(float(s) * cscale1 + cshift1, height1)).rgb; - float pwfValueSegment = texture2D(otexture, vec2(float(s) * oscale1 + oshift1, height1)).r; - gl_FragData[0] = vec4(tColorSegment, pwfValueSegment); - return true; - } - - // not on edge - return false; -} - -#endif - - -//======================================================================= -// Apply the specified blend mode operation along the ray's path. -// -void applyBlend(vec3 posIS, vec3 endIS, vec3 tdims) -{ - vec3 tstep = 1.0/tdims; - - // start slightly inside and apply some jitter - vec3 delta = endIS - posIS; - vec3 stepIS = normalize(delta)*sampleDistanceIS; - float raySteps = length(delta)/sampleDistanceIS; - - // Initialize arrays to false - // avoid 0.0 jitter - float jitter = 0.01 + 0.99*texture2D(jtexture, gl_FragCoord.xy/32.0).r; - float stepsTraveled = jitter; - - // local vars for the loop - vec4 color = vec4(0.0, 0.0, 0.0, 0.0); - vec4 tValue; - vec4 tColor; - - // if we have less than one step then pick the middle point - // as our value - // if (raySteps <= 1.0) - // { - // posIS = (posIS + endIS)*0.5; - // } - - // Perform initial step at the volume boundary - // compute the scalar - tValue = getTextureValue(posIS); - - #if vtkBlendMode == 6 - if (raySteps <= 1.0) - { - gl_FragData[0] = getColorForValue(tValue, posIS, tstep); - return; - } - - vec4 value = tValue; - posIS += (jitter*stepIS); - vec3 maxPosIS = posIS; // Store the position of the max value - int segmentIndex = int(value.g); - bool originalPosHasSeenNonZero = false; - - uint bitmask = 0u; - - if (segmentIndex != 0) { - // Tried using the segment index in an boolean array but reading - // from the array by dynamic indexing was horrondously slow - // so use bit masking instead and assign 1 to the bit corresponding to the segment index - // and later check if the bit is set via bit operations - setBit(segmentIndex); - } - - // Sample along the ray until MaximumSamplesValue, - // ending slightly inside the total distance - for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) - { - // If we have reached the last step, break - if (stepsTraveled + 1.0 >= raySteps) { break; } - - // compute the scalar - tValue = getTextureValue(posIS); - segmentIndex = int(tValue.g); - - if (segmentIndex != 0) { - originalPosHasSeenNonZero = true; - setBit(segmentIndex); - } - - if (tValue.r > value.r) { - value = tValue; // Update the max value - maxPosIS = posIS; // Update the position where max occurred - } - - // Otherwise, continue along the ray - stepsTraveled++; - posIS += stepIS; - } - - // Perform the last step along the ray using the - // residual distance - posIS = endIS; - tValue = getTextureValue(posIS); - - if (tValue.r > value.r) { - value = tValue; // Update the max value - maxPosIS = posIS; // Update the position where max occurred - } - - // If we have not seen any non-zero segments, we can return early - // and grab color from the actual center value first component (image) - if (!originalPosHasSeenNonZero) { - gl_FragData[0] = getColorForValue(value, maxPosIS, tstep); - return; - } - - // probably we can make this configurable but for now we will use the same - // sample distance as the original sample distance - float neighborSampleDistanceIS = sampleDistanceIS; - - vec3 neighborRayStepsIS = stepIS; - float neighborRaySteps = raySteps; - bool shouldLookInAllNeighbors = false; - - float minVoxelSpacing = min(volumeSpacings[0], min(volumeSpacings[1], volumeSpacings[2])); - vec4 base = vec4(gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); - - vec4 baseXPlus = vec4(gl_FragCoord.x + 1.0, gl_FragCoord.y, gl_FragCoord.z, gl_FragCoord.w); - vec4 baseYPlus = vec4(gl_FragCoord.x, gl_FragCoord.y + 1.0, gl_FragCoord.z, gl_FragCoord.w); - - vec3 baseWorld = fragCoordToWorld(base); - vec3 baseXPlusWorld = fragCoordToWorld(baseXPlus); - vec3 baseYPlusWorld = fragCoordToWorld(baseYPlus); - - float XPlusDiff = length(baseXPlusWorld - baseWorld); - float YPlusDiff = length(baseYPlusWorld - baseWorld); - - float minFragSpacingWorld = min(XPlusDiff, YPlusDiff); - - for (int s = 1; s < MAX_SEGMENT_INDEX; s++) { - // bail out quickly if the segment index has not - // been seen by the center segment - if (!isBitSet(s)) { - continue; - } - - // Use texture sampling for outlineThickness so that we can have - // per segment thickness - float textureCoordinate = float(s - 1) / 1024.0; - float textureValue = texture2D(ttexture, vec2(textureCoordinate, 0.5)).r; - - int actualThickness = int(textureValue * 255.0); - - // check the extreme points in the neighborhood since there is a better - // chance of finding the edge there, so that we can bail out - // faster if we find the edge - bool onEdge = - checkOnEdgeForNeighbor(-actualThickness, -actualThickness, s, stepIS) || - checkOnEdgeForNeighbor(actualThickness, actualThickness, s, stepIS) || - checkOnEdgeForNeighbor(actualThickness, -actualThickness, s, stepIS) || - checkOnEdgeForNeighbor(-actualThickness, +actualThickness, s, stepIS); - - if (onEdge) { - return; - } - - // since the next step is computationally expensive, we need to perform - // some optimizations to avoid it if possible. One of the optimizations - // is to check the whether the minimum of the voxel spacing is greater than - // the 2 * the thickness of the outline segment. If that is the case - // then we can safely skip the next step since we can be sure that the - // the previous 4 checks on the extreme points would caught the entirety - // of the all the fragments inside. i.e., this happens when we zoom out, - if (minVoxelSpacing > (2.0 * float(actualThickness) - 1.0) * minFragSpacingWorld) { - continue; - } - - // Loop through the rest, skipping the processed extremes and the center - for (int i = -actualThickness; i <= actualThickness; i++) { - for (int j = -actualThickness; j <= actualThickness; j++) { - if (i == 0 && j == 0) continue; // Skip the center - if (abs(i) == actualThickness && abs(j) == actualThickness) continue; // Skip corners - if (checkOnEdgeForNeighbor(i, j, s, stepIS )) { - return; - } - } - } - } - - vec3 tColor0 = texture2D(ctexture, vec2(value.r * cscale0 + cshift0, height0)).rgb; - float pwfValue0 = texture2D(otexture, vec2(value.r * oscale0 + oshift0, height0)).r; - gl_FragData[0] = vec4(tColor0, pwfValue0); - #endif - #if vtkBlendMode == 0 // COMPOSITE_BLEND - // now map through opacity and color - tColor = getColorForValue(tValue, posIS, tstep); - - // handle very thin volumes - if (raySteps <= 1.0) - { - tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps); - gl_FragData[0] = tColor; - return; - } - - tColor.a = 1.0 - pow(1.0 - tColor.a, jitter); - color = vec4(tColor.rgb*tColor.a, tColor.a); - posIS += (jitter*stepIS); - - for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) - { - if (stepsTraveled + 1.0 >= raySteps) { break; } - - // compute the scalar - tValue = getTextureValue(posIS); - - // now map through opacity and color - tColor = getColorForValue(tValue, posIS, tstep); - - float mix = (1.0 - color.a); - - // this line should not be needed but nvidia seems to not handle - // the break correctly on windows/chrome 58 angle - //mix = mix * sign(max(raySteps - stepsTraveled - 1.0, 0.0)); - - color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; - stepsTraveled++; - posIS += stepIS; - if (color.a > 0.99) { color.a = 1.0; break; } - } - - if (color.a < 0.99 && (raySteps - stepsTraveled) > 0.0) - { - posIS = endIS; - - // compute the scalar - tValue = getTextureValue(posIS); - - // now map through opacity and color - tColor = getColorForValue(tValue, posIS, tstep); - tColor.a = 1.0 - pow(1.0 - tColor.a, raySteps - stepsTraveled); - - float mix = (1.0 - color.a); - color = color + vec4(tColor.rgb*tColor.a, tColor.a)*mix; - } - - gl_FragData[0] = vec4(color.rgb/color.a, color.a); - #endif - #if vtkBlendMode == 1 || vtkBlendMode == 2 - // MAXIMUM_INTENSITY_BLEND || MINIMUM_INTENSITY_BLEND - // Find maximum/minimum intensity along the ray. - - // Define the operation we will use (min or max) - #if vtkBlendMode == 1 - #define OP max - #else - #define OP min - #endif - - // If the clipping range is shorter than the sample distance - // we can skip the sampling loop along the ray. - if (raySteps <= 1.0) - { - gl_FragData[0] = getColorForValue(tValue, posIS, tstep); - return; - } - - vec4 value = tValue; - posIS += (jitter*stepIS); - - // Sample along the ray until MaximumSamplesValue, - // ending slightly inside the total distance - for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) - { - // If we have reached the last step, break - if (stepsTraveled + 1.0 >= raySteps) { break; } - - // compute the scalar - tValue = getTextureValue(posIS); - - // Update the maximum value if necessary - value = OP(tValue, value); - - // Otherwise, continue along the ray - stepsTraveled++; - posIS += stepIS; - } - - // Perform the last step along the ray using the - // residual distance - posIS = endIS; - tValue = getTextureValue(posIS); - value = OP(tValue, value); - - // Now map through opacity and color - gl_FragData[0] = getColorForValue(value, posIS, tstep); - #endif - #if vtkBlendMode == 3 || vtkBlendMode == 4 //AVERAGE_INTENSITY_BLEND || ADDITIVE_BLEND - vec4 sum = vec4(0.); - - if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { - sum += tValue; - } - - if (raySteps <= 1.0) { - gl_FragData[0] = getColorForValue(sum, posIS, tstep); - return; - } - - posIS += (jitter*stepIS); - - // Sample along the ray until MaximumSamplesValue, - // ending slightly inside the total distance - for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) - { - // If we have reached the last step, break - if (stepsTraveled + 1.0 >= raySteps) { break; } - - // compute the scalar - tValue = getTextureValue(posIS); - - // One can control the scalar range by setting the AverageIPScalarRange to disregard scalar values, not in the range of interest, from the average computation. - // Notes: - // - We are comparing all values in the texture to see if any of them - // are outside of the scalar range. In the future we might want to allow - // scalar ranges for each component. - if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { - // Sum the values across each step in the path - sum += tValue; - } - stepsTraveled++; - posIS += stepIS; - } - - // Perform the last step along the ray using the - // residual distance - posIS = endIS; - - // compute the scalar - tValue = getTextureValue(posIS); - - // One can control the scalar range by setting the IPScalarRange to disregard scalar values, not in the range of interest, from the average computation - if (valueWithinScalarRange(tValue, ipScalarRangeMin, ipScalarRangeMax)) { - sum += tValue; - - stepsTraveled++; - } - - #if vtkBlendMode == 3 // Average - sum /= vec4(stepsTraveled, stepsTraveled, stepsTraveled, 1.0); - #endif - - gl_FragData[0] = getColorForValue(sum, posIS, tstep); - #endif - #if vtkBlendMode == 5 // RADON - float normalizedRayIntensity = 1.0; - - // handle very thin volumes - if (raySteps <= 1.0) - { - tValue = getTextureValue(posIS); - normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; - gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity, 0.5)); - return; - } - - posIS += (jitter*stepIS); - - for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i) - { - if (stepsTraveled + 1.0 >= raySteps) { break; } - - // compute the scalar value - tValue = getTextureValue(posIS); - - // Convert scalar value to normalizedRayIntensity coefficient and accumulate normalizedRayIntensity - normalizedRayIntensity = normalizedRayIntensity - sampleDistance*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r; - - posIS += stepIS; - stepsTraveled++; - } - - // map normalizedRayIntensity to color - gl_FragData[0] = texture2D(ctexture, vec2(normalizedRayIntensity , 0.5)); - - #endif -} - -//======================================================================= -// Compute a new start and end point for a given ray based -// on the provided bounded clipping plane (aka a rectangle) -void getRayPointIntersectionBounds( - vec3 rayPos, vec3 rayDir, - vec3 planeDir, float planeDist, - inout vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY, - float vSize1, float vSize2) -{ - float result = dot(rayDir, planeDir); - if (abs(result) < 1e-6) - { - return; - } - result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result; - vec3 xposVC = rayPos + rayDir*result; - vec3 vxpos = xposVC - vOriginVC; - vec2 vpos = vec2( - dot(vxpos, vPlaneX), - dot(vxpos, vPlaneY)); - - // on some apple nvidia systems this does not work - // if (vpos.x < 0.0 || vpos.x > vSize1 || - // vpos.y < 0.0 || vpos.y > vSize2) - // even just - // if (vpos.x < 0.0 || vpos.y < 0.0) - // fails - // so instead we compute a value that represents in and out - //and then compute the return using this value - float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds - float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out - - tbounds = mix( - vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value - tbounds, // out value - check); // 0 in 1 out -} - -//======================================================================= -// given a -// - ray direction (rayDir) -// - starting point (vertexVCVSOutput) -// - bounding planes of the volume -// - optionally depth buffer values -// - far clipping plane -// compute the start/end distances of the ray we need to cast -vec2 computeRayDistances(vec3 rayDir, vec3 tdims) -{ - vec2 dists = vec2(100.0*camFar, -1.0); - - vec3 vSize = vSpacing*tdims; - - // all this is in View Coordinates - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal0, vPlaneDistance0, dists, vPlaneNormal2, vPlaneNormal4, - vSize.y, vSize.z); - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal1, vPlaneDistance1, dists, vPlaneNormal2, vPlaneNormal4, - vSize.y, vSize.z); - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal2, vPlaneDistance2, dists, vPlaneNormal0, vPlaneNormal4, - vSize.x, vSize.z); - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal3, vPlaneDistance3, dists, vPlaneNormal0, vPlaneNormal4, - vSize.x, vSize.z); - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal4, vPlaneDistance4, dists, vPlaneNormal0, vPlaneNormal2, - vSize.x, vSize.y); - getRayPointIntersectionBounds(vertexVCVSOutput, rayDir, - vPlaneNormal5, vPlaneDistance5, dists, vPlaneNormal0, vPlaneNormal2, - vSize.x, vSize.y); - - //VTK::ClipPlane::Impl - - // do not go behind front clipping plane - dists.x = max(0.0,dists.x); - - // do not go PAST far clipping plane - float farDist = -camThick/rayDir.z; - dists.y = min(farDist,dists.y); - - // Do not go past the zbuffer value if set - // This is used for intermixing opaque geometry - //VTK::ZBuffer::Impl - - return dists; -} - -//======================================================================= -// Compute the index space starting position (pos) and end -// position -// -void computeIndexSpaceValues(out vec3 pos, out vec3 endPos, vec3 rayDir, vec2 dists) -{ - // compute starting and ending values in volume space - pos = vertexVCVSOutput + dists.x*rayDir; - pos = pos - vOriginVC; - // convert to volume basis and origin - pos = vec3( - dot(pos, vPlaneNormal0), - dot(pos, vPlaneNormal2), - dot(pos, vPlaneNormal4)); - - endPos = vertexVCVSOutput + dists.y*rayDir; - endPos = endPos - vOriginVC; - endPos = vec3( - dot(endPos, vPlaneNormal0), - dot(endPos, vPlaneNormal2), - dot(endPos, vPlaneNormal4)); - - float delta = length(endPos - pos); - - pos *= vVCToIJK; - endPos *= vVCToIJK; - - float delta2 = length(endPos - pos); - sampleDistanceIS = sampleDistance*delta2/delta; - #ifdef VolumeShadowOn - sampleDistanceISVS = sampleDistanceIS * volumeShadowSamplingDistFactor; - #endif -} - -void main() -{ - - if (cameraParallel == 1) - { - // Camera is parallel, so the rayDir is just the direction of the camera. - rayDirVC = vec3(0.0, 0.0, -1.0); - } else { - // camera is at 0,0,0 so rayDir for perspective is just the vc coord - rayDirVC = normalize(vertexVCVSOutput); - } - - vec3 tdims = vec3(volumeDimensions); - - // compute the start and end points for the ray - vec2 rayStartEndDistancesVC = computeRayDistances(rayDirVC, tdims); - - // do we need to composite? aka does the ray have any length - // If not, bail out early - if (rayStartEndDistancesVC.y <= rayStartEndDistancesVC.x) - { - discard; - } - - // IS = Index Space - vec3 posIS; - vec3 endIS; - computeIndexSpaceValues(posIS, endIS, rayDirVC, rayStartEndDistancesVC); - - // Perform the blending operation along the ray - applyBlend(posIS, endIS, tdims); -} -`;const{vtkWarningMacro:hX,vtkErrorMacro:Iv}=Br;function gX(t){switch(t){case Mp.CUSTOM:return"//VTK::CustomColorMix";case Mp.ADDITIVE:return` - // compute normals - mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); - #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) - vec3 scalarInterp0[2]; - vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); - scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; - scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; - normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); - - vec3 scalarInterp1[2]; - vec4 normalLight1 = computeNormalForDensity(posIS, tstep, scalarInterp1, 1); - scalarInterp1[0] = scalarInterp1[0] * oscale1 + oshift1; - scalarInterp1[1] = scalarInterp1[1] * oscale1 + oshift1; - normalLight1 = computeDensityNormal(scalarInterp1, height1, 1.0); - #else - vec4 normalLight0 = normalMat[0]; - vec4 normalLight1 = normalMat[1]; - #endif - - // compute opacities - float opacity0 = pwfValue0; - float opacity1 = pwfValue1; - #ifdef vtkGradientOpacityOn - float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); - opacity0 *= gof0; - float gof1 = computeGradientOpacityFactor(normalMat[1].a, goscale1, goshift1, gomin1, gomax1); - opacity1 *= gof1; - #endif - float opacitySum = opacity0 + opacity1; - if (opacitySum <= 0.0) { - return vec4(0.0); - } - - // mix the colors and opacities - tColor0 = applyAllLightning(tColor0, opacity0, posIS, normalLight0); - tColor1 = applyAllLightning(tColor1, opacity1, posIS, normalLight1); - vec3 mixedColor = (opacity0 * tColor0 + opacity1 * tColor1) / opacitySum; - return vec4(mixedColor, min(1.0, opacitySum)); -`;case Mp.COLORIZE:return` - // compute normals - mat4 normalMat = computeMat4Normal(posIS, tValue, tstep); - #if (vtkLightComplexity > 0) && defined(vtkComputeNormalFromOpacity) - vec3 scalarInterp0[2]; - vec4 normalLight0 = computeNormalForDensity(posIS, tstep, scalarInterp0, 0); - scalarInterp0[0] = scalarInterp0[0] * oscale0 + oshift0; - scalarInterp0[1] = scalarInterp0[1] * oscale0 + oshift0; - normalLight0 = computeDensityNormal(scalarInterp0, height0, 1.0); - #else - vec4 normalLight0 = normalMat[0]; - #endif - - // compute opacities - float opacity0 = pwfValue0; - #ifdef vtkGradientOpacityOn - float gof0 = computeGradientOpacityFactor(normalMat[0].a, goscale0, goshift0, gomin0, gomax0); - opacity0 *= gof0; - #endif - - // mix the colors and opacities - vec3 color = tColor0 * mix(vec3(1.0), tColor1, pwfValue1); - color = applyAllLightning(color, opacity0, posIS, normalLight0); - return vec4(color, opacity0); -`;default:return null}}function pX(t,e){e.classHierarchy.push("vtkOpenGLVolumeMapper");function r(i){[e._scalars,e._scalarOpacityFunc,e._colorTransferFunc,e._labelOutlineThicknessArray].forEach(o=>i.unregisterGraphicsResourceUser(o,t))}t.buildPass=()=>{e.zBufferTexture=null},t.zBufferPass=(i,o)=>{if(i){const a=o.getZBufferTexture();a!==e.zBufferTexture&&(e.zBufferTexture=a)}},t.opaqueZBufferPass=(i,o)=>t.zBufferPass(i,o),t.volumePass=(i,o)=>{if(i){const a=e._openGLRenderWindow;e._openGLRenderWindow=t.getLastAncestorOfType("vtkOpenGLRenderWindow"),a&&!a.isDeleted()&&a!==e._openGLRenderWindow&&r(a),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.jitterTexture.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLVolume=t.getFirstAncestorOfType("vtkOpenGLVolume");const s=e.openGLVolume.getRenderable();e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const c=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(c.getActiveCamera()),t.renderPiece(c,s)}},t.getShaderTemplate=(i,o,a)=>{i.Vertex=fX,i.Fragment=dX,i.Geometry=""},t.useIndependentComponents=i=>{var l,f;const o=i.getIndependentComponents(),a=e.currentInput,s=(f=(l=a==null?void 0:a.getPointData())==null?void 0:l.getScalars())==null?void 0:f.getNumberOfComponents(),c=i.getColorMixPreset();return o&&s>=2||!!c},t.replaceShaderValues=(i,o,a)=>{const s=a.getProperty();let c=i.Fragment;s.getInterpolationType()===Y5.LINEAR&&(c=ce.substitute(c,"//VTK::TrilinearOn","#define vtkTrilinearOn").result),t.isLabelmapOutlineRequired(a)===!0&&(c=ce.substitute(c,"//VTK::ImageLabelOutlineOn","#define vtkImageLabelOutlineOn").result),e.renderable.getBlendMode()===yp.LABELMAP_EDGE_PROJECTION_BLEND&&(c=ce.substitute(c,"//VTK::LabelEdgeProjectionOn","#define vtkLabelEdgeProjectionOn").result);const d=e.scalarTexture.getComponents();c=ce.substitute(c,"//VTK::NumComponents",`#define vtkNumComponents ${d}`).result;const h=t.useIndependentComponents(s);h&&(c=ce.substitute(c,"//VTK::IndependentComponentsOn","#define UseIndependentComponents").result);const g=[],p=[];for(let T=0;T0&&(e.renderable.getVolumetricScatteringBlending()>0&&(c=ce.substitute(c,"//VTK::VolumeShadowOn","#define VolumeShadowOn").result),e.renderable.getVolumetricScatteringBlending()<1&&(c=ce.substitute(c,"//VTK::SurfaceShadowOn","#define SurfaceShadowOn").result),e.renderable.getLocalAmbientOcclusion()&&s.getAmbient()>0&&(c=ce.substitute(c,"//VTK::localAmbientOcclusionOn","#define localAmbientOcclusionOn").result));const S=h?d:1;e.gopacity=!1;for(let T=0;!e.gopacity&&T{if(e.lightComplexity===0)return;let s=i.Fragment,c=0;o.getLights().forEach(l=>{l.getSwitch()&&(c+=1)}),s=ce.substitute(s,"//VTK::Light::Dec",["uniform int lightNum;","uniform bool twoSidedLighting;",`uniform vec3 lightColor[${c}];`,`uniform vec3 lightDirectionVC[${c}]; // normalized`,`uniform vec3 lightHalfAngleVC[${c}];`,"//VTK::Light::Dec"],!1).result,e.lightComplexity===3&&(s=ce.substitute(s,"//VTK::Light::Dec",[`uniform vec3 lightPositionVC[${c}];`,`uniform vec3 lightAttenuation[${c}];`,`uniform float lightConeAngle[${c}];`,`uniform float lightExponent[${c}];`,`uniform int lightPositional[${c}];`],!1).result),e.renderable.getVolumetricScatteringBlending()>0&&(s=ce.substitute(s,"//VTK::VolumeShadow::Dec",["uniform float volumetricScatteringBlending;","uniform float giReach;","uniform float volumeShadowSamplingDistFactor;","uniform float anisotropy;","uniform float anisotropy2;"],!1).result),e.renderable.getLocalAmbientOcclusion()&&a.getProperty().getAmbient()>0&&(s=ce.substitute(s,"//VTK::LAO::Dec",["uniform int kernelRadius;",`uniform vec2 kernelSample[${e.renderable.getLAOKernelRadius()}];`,"uniform int kernelSize;"],!1).result),i.Fragment=s},t.replaceShaderClippingPlane=(i,o,a)=>{let s=i.Fragment;if(e.renderable.getClippingPlanes().length>0){const c=e.renderable.getClippingPlanes().length;s=ce.substitute(s,"//VTK::ClipPlane::Dec",["uniform vec3 vClipPlaneNormals[6];","uniform float vClipPlaneDistances[6];","uniform vec3 vClipPlaneOrigins[6];","uniform int clip_numPlanes;","//VTK::ClipPlane::Dec","#define vtkClippingPlanesOn"],!1).result,s=ce.substitute(s,"//VTK::ClipPlane::Impl",[`for(int i = 0; i < ${c}; i++) {`," float rayDirRatio = dot(rayDir, vClipPlaneNormals[i]);"," float equationResult = dot(vertexVCVSOutput, vClipPlaneNormals[i]) + vClipPlaneDistances[i];"," if (rayDirRatio == 0.0)"," {"," if (equationResult < 0.0) dists.x = dists.y;"," continue;"," }"," float result = -1.0 * equationResult / rayDirRatio;"," if (rayDirRatio < 0.0) dists.y = min(dists.y, result);"," else dists.x = max(dists.x, result);","}","//VTK::ClipPlane::Impl"],!1).result}i.Fragment=s};const n=(i,o)=>{let a=0;i.getProperty().getShade()&&e.renderable.getBlendMode()===yp.COMPOSITE_BLEND&&(a=0,e.numberOfLights=0,o.forEach(s=>{s.getSwitch()>0&&(e.numberOfLights++,a===0&&(a=1)),a===1&&(e.numberOfLights>1||s.getIntensity()!==1||!s.lightTypeIsHeadLight())&&(a=2),a<3&&s.getPositional()&&(a=3)})),a!==e.lightComplexity&&(e.lightComplexity=a,t.modified())};t.getNeedToRebuildShaders=(i,o,a)=>{var x;const s=a.getProperty();n(a,o.getLights());const c=e.scalarTexture.getComponents(),l=[],f=[];for(let m=0;m{if(t.getNeedToRebuildShaders(i,o,a)){const s={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(s,o,a);const c=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(s.Vertex,s.Fragment,s.Geometry);c!==i.getProgram()&&(i.setProgram(c),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),t.setMapperShaderParameters(i,o,a),t.setCameraShaderParameters(i,o,a),t.setPropertyShaderParameters(i,o,a),t.getClippingPlaneShaderParameters(i,o,a)},t.setMapperShaderParameters=(i,o,a)=>{var f;const s=i.getProgram();i.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())&&(s.isAttributeUsed("vertexDC")&&(i.getVAO().addAttributeArray(s,i.getCABO(),"vertexDC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||Iv("Error setting vertexDC in shader VAO.")),i.getAttributeUpdateTime().modified()),s.setUniformi("texture1",e.scalarTexture.getTextureUnit()),s.setUniformf("sampleDistance",t.getCurrentSampleDistance(o));const c=e.scalarTexture.getVolumeInfo(),l=e.renderable.getIpScalarRange();if((f=c==null?void 0:c.dataComputedScale)!=null&&f.length){const u=[],d=[];for(let h=0;h<4;h++)u[h]=l[0]*c.dataComputedScale[h]+c.dataComputedOffset[h],d[h]=l[1]*c.dataComputedScale[h]+c.dataComputedOffset[h],u[h]=(u[h]-c.offset[h])/c.scale[h],d[h]=(d[h]-c.offset[h])/c.scale[h];s.setUniform4f("ipScalarRangeMin",u[0],u[1],u[2],u[3]),s.setUniform4f("ipScalarRangeMax",d[0],d[1],d[2],d[3])}if(e.zBufferTexture!==null){s.setUniformi("zBufferTexture",e.zBufferTexture.getTextureUnit());const u=e._useSmallViewport?[e._smallViewportWidth,e._smallViewportHeight]:e._openGLRenderWindow.getFramebufferSize();s.setUniformf("vpZWidth",u[0]),s.setUniformf("vpZHeight",u[1])}},t.setCameraShaderParameters=(i,o,a)=>{const s=e.openGLCamera.getKeyMatrices(o),c=e.openGLVolume.getKeyMatrices();bt(e.modelToView,s.wcvc,c.mcwc);const l=i.getProgram(),f=e.openGLCamera.getRenderable(),u=f.getClippingRange();l.setUniformf("camThick",u[1]-u[0]),l.setUniformf("camNear",u[0]),l.setUniformf("camFar",u[1]);const d=e.currentInput.getBounds(),h=e.currentInput.getDimensions(),g=new Float64Array(3),p=new Float64Array(3);let v=1,x=-1,m=1,y=-1;for(let A=0;A<8;++A){if($t(g,d[A%2],d[2+Math.floor(A/2)%2],d[4+Math.floor(A/4)]),et(g,g,e.modelToView),!f.getParallelProjection()){on(p,g);const G=-u[0]/g[2];lr(g,p,G)}et(g,g,s.vcpc),v=Math.min(g[0],v),x=Math.max(g[0],x),m=Math.min(g[1],m),y=Math.max(g[1],y)}l.setUniformf("dcxmin",v),l.setUniformf("dcxmax",x),l.setUniformf("dcymin",m),l.setUniformf("dcymax",y),l.isUniformUsed("cameraParallel")&&l.setUniformi("cameraParallel",f.getParallelProjection());const w=e.currentInput.getSpatialExtent(),C=e.currentInput.getSpacing(),S=new Float64Array(3);$t(S,(w[1]-w[0])*C[0],(w[3]-w[2])*C[1],(w[5]-w[4])*C[2]),l.setUniform3f("vSpacing",C[0],C[1],C[2]),$t(g,w[0],w[2],w[4]),e.currentInput.indexToWorldVec3(g,g),et(g,g,e.modelToView),l.setUniform3f("vOriginVC",g[0],g[1],g[2]);const T=e.currentInput.getIndexToWorld();bt(e.idxToView,e.modelToView,T),Ku(e.idxNormalMatrix,s.normalMatrix,c.normalMatrix),Ku(e.idxNormalMatrix,e.idxNormalMatrix,e.currentInput.getDirectionByReference());const _=ui(S)/t.getCurrentSampleDistance(o);_>e.renderable.getMaximumSamplesPerRay()&&hX(`The number of steps required ${Math.ceil(_)} is larger than the - specified maximum number of steps ${e.renderable.getMaximumSamplesPerRay()}. - Please either change the - volumeMapper sampleDistance or its maximum number of samples.`);const E=new Float64Array(3);if($t(E,1,1,1),Z$(E,E,S),l.setUniform3f("vVCToIJK",E[0],E[1],E[2]),l.setUniform3i("volumeDimensions",h[0],h[1],h[2]),l.setUniform3f("volumeSpacings",C[0],C[1],C[2]),!e._openGLRenderWindow.getWebgl2()){const A=e.scalarTexture.getVolumeInfo();l.setUniformf("texWidth",e.scalarTexture.getWidth()),l.setUniformf("texHeight",e.scalarTexture.getHeight()),l.setUniformi("xreps",A.xreps),l.setUniformi("xstride",A.xstride),l.setUniformi("ystride",A.ystride)}const D=new Float64Array(3),b=new Float64Array(3);for(let A=0;A<6;++A){switch(A){case 1:$t(D,-1,0,0),$t(b,w[0],w[2],w[4]);break;case 2:$t(D,0,1,0),$t(b,w[1],w[3],w[5]);break;case 3:$t(D,0,-1,0),$t(b,w[0],w[2],w[4]);break;case 4:$t(D,0,0,1),$t(b,w[1],w[3],w[5]);break;case 5:$t(D,0,0,-1),$t(b,w[0],w[2],w[4]);break;case 0:default:$t(D,1,0,0),$t(b,w[1],w[3],w[5]);break}Dp(D,D,e.idxNormalMatrix),et(b,b,e.idxToView);const G=-1*je(b,D);l.setUniform3f(`vPlaneNormal${A}`,D[0],D[1],D[2]),l.setUniformf(`vPlaneDistance${A}`,G)}if(t.isLabelmapOutlineRequired(a)){const G=e.currentInput.getWorldToIndex();l.setUniformMatrix("vWCtoIDX",G);const P=o.getActiveCamera(),[N,V]=P.getClippingRange(),$=P.getDistance();P.setClippingRange($,$+.1);const H=e.openGLCamera.getKeyMatrices(o);$n(e.projectionToWorld,H.wcpc),P.setClippingRange(N,V),e.openGLCamera.getKeyMatrices(o),l.setUniformMatrix("PCWCMatrix",e.projectionToWorld);const Y=t.getRenderTargetSize();l.setUniformf("vpWidth",Y[0]),l.setUniformf("vpHeight",Y[1]);const ne=t.getRenderTargetOffset();l.setUniformf("vpOffsetX",ne[0]/Y[0]),l.setUniformf("vpOffsetY",ne[1]/Y[1])}if($n(e.projectionToView,s.vcpc),l.setUniformMatrix("PCVCMatrix",e.projectionToView),e.lightComplexity===0)return;let I=0;const R=[],M=[],L=[];if(o.getLights().forEach(A=>{if(A.getSwitch()>0){const P=A.getColor(),N=A.getIntensity();R[0+I*3]=P[0]*N,R[1+I*3]=P[1]*N,R[2+I*3]=P[2]*N;const V=A.getDirection();$t(D,V[0],V[1],V[2]),Dp(D,D,s.normalMatrix),on(D,D),M[0+I*3]=D[0],M[1+I*3]=D[1],M[2+I*3]=D[2],L[0+I*3]=-.5*D[0],L[1+I*3]=-.5*D[1],L[2+I*3]=-.5*(D[2]-1),I++}}),l.setUniformi("twoSidedLighting",o.getTwoSidedLighting()),l.setUniformi("lightNum",I),l.setUniform3fv("lightColor",R),l.setUniform3fv("lightDirectionVC",M),l.setUniform3fv("lightHalfAngleVC",L),e.lightComplexity===3){I=0;const A=[],G=[],P=[],N=[],V=[];o.getLights().forEach($=>{if($.getSwitch()>0){const Y=$.getAttenuationValues();G[0+I*3]=Y[0],G[1+I*3]=Y[1],G[2+I*3]=Y[2],N[I]=$.getExponent(),P[I]=$.getConeAngle(),V[I]=$.getPositional();const ne=$.getTransformedPosition();et(ne,ne,e.modelToView),A[0+I*3]=ne[0],A[1+I*3]=ne[1],A[2+I*3]=ne[2],I+=1}}),l.setUniform3fv("lightPositionVC",A),l.setUniform3fv("lightAttenuation",G),l.setUniformfv("lightConeAngle",P),l.setUniformfv("lightExponent",N),l.setUniformiv("lightPositional",V)}if(e.renderable.getVolumetricScatteringBlending()>0&&(l.setUniformf("giReach",e.renderable.getGlobalIlluminationReach()),l.setUniformf("volumetricScatteringBlending",e.renderable.getVolumetricScatteringBlending()),l.setUniformf("volumeShadowSamplingDistFactor",e.renderable.getVolumeShadowSamplingDistFactor()),l.setUniformf("anisotropy",e.renderable.getAnisotropy()),l.setUniformf("anisotropy2",e.renderable.getAnisotropy()**2)),e.renderable.getLocalAmbientOcclusion()&&a.getProperty().getAmbient()>0){const A=e.renderable.getLAOKernelSize();l.setUniformi("kernelSize",A);const G=[];for(let P=0;P{const s=i.getProgram();s.setUniformi("ctexture",e.colorTexture.getTextureUnit()),s.setUniformi("otexture",e.opacityTexture.getTextureUnit()),s.setUniformi("jtexture",e.jitterTexture.getTextureUnit()),s.setUniformi("ttexture",e.labelOutlineThicknessTexture.getTextureUnit());const c=e.scalarTexture.getVolumeInfo(),l=a.getProperty(),f=e.scalarTexture.getComponents(),u=t.useIndependentComponents(l);if(u)for(let h=0;h0&&(s.setUniformf("vAmbient",l.getAmbient()),s.setUniformf("vDiffuse",l.getDiffuse()),s.setUniformf("vSpecular",l.getSpecular()),s.setUniformf("vSpecularPower",l.getSpecularPower()))},t.getClippingPlaneShaderParameters=(i,o,a)=>{if(e.renderable.getClippingPlanes().length>0){const s=e.openGLCamera.getKeyMatrices(o),c=[],l=[],f=[],u=e.renderable.getClippingPlanes(),d=u.length;for(let g=0;g{e._animationRateSubscription&&(e._animationRateSubscription.unsubscribe(),e._animationRateSubscription=null)},()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete),t.getRenderTargetSize=()=>{if(e._useSmallViewport)return[e._smallViewportWidth,e._smallViewportHeight];const{usize:i,vsize:o}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,o]},t.getRenderTargetOffset=()=>{const{lowerLeftU:i,lowerLeftV:o}=e._openGLRenderer.getTiledSizeAndOrigin();return[i,o]},t.getCurrentSampleDistance=i=>{const o=i.getVTKWindow().getInteractor(),a=e.renderable.getSampleDistance();if(o.isAnimating()){const s=e.renderable.getInteractionSampleDistanceFactor();return a*s}return a},t.renderPieceStart=(i,o)=>{const a=i.getVTKWindow().getInteractor();if(e._lastScale||(e._lastScale=e.renderable.getInitialInteractionScale()),e._useSmallViewport=!1,a.isAnimating()&&e._lastScale>1.5&&(e._useSmallViewport=!0),e._animationRateSubscription||(e._animationRateSubscription=a.onAnimationFrameRateUpdate(()=>{if(e.renderable.getAutoAdjustSampleDistances()){const c=a.getRecentAnimationFrameRate(),l=a.getDesiredUpdateRate()/c;(l>1.15||l<.85)&&(e._lastScale*=l),e._lastScale>400&&(e._lastScale=400),e._lastScale<1.5&&(e._lastScale=1.5)}else e._lastScale=e.renderable.getImageSampleDistance()*e.renderable.getImageSampleDistance()})),e._useSmallViewport){const c=e._openGLRenderWindow.getFramebufferSize(),l=1/Math.sqrt(e._lastScale);if(e._smallViewportWidth=Math.ceil(l*c[0]),e._smallViewportHeight=Math.ceil(l*c[1]),e._smallViewportHeight>c[1]&&(e._smallViewportHeight=c[1]),e._smallViewportWidth>c[0]&&(e._smallViewportWidth=c[0]),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.getGLFramebuffer()===null)e.framebuffer.create(c[0],c[1]),e.framebuffer.populateFramebuffer();else{const u=e.framebuffer.getSize();(!u||u[0]!==c[0]||u[1]!==c[1])&&(e.framebuffer.create(c[0],c[1]),e.framebuffer.populateFramebuffer())}e.framebuffer.bind();const f=e.context;f.clearColor(0,0,0,0),f.colorMask(!0,!0,!0,!0),f.clear(f.COLOR_BUFFER_BIT),f.viewport(0,0,e._smallViewportWidth,e._smallViewportHeight),e.fvp=[e._smallViewportWidth/c[0],e._smallViewportHeight/c[1]]}e.context.disable(e.context.DEPTH_TEST),t.updateBufferObjects(i,o),o.getProperty().getInterpolationType()===Y5.NEAREST?(e.scalarTexture.setMinificationFilter(Je.NEAREST),e.scalarTexture.setMagnificationFilter(Je.NEAREST)):(e.scalarTexture.setMinificationFilter(Je.LINEAR),e.scalarTexture.setMagnificationFilter(Je.LINEAR)),e.zBufferTexture!==null&&e.zBufferTexture.activate()},t.renderPieceDraw=(i,o)=>{const a=e.context;e.scalarTexture.activate(),e.opacityTexture.activate(),e.labelOutlineThicknessTexture.activate(),e.colorTexture.activate(),e.jitterTexture.activate(),t.updateShaders(e.tris,i,o),a.drawArrays(a.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.scalarTexture.deactivate(),e.colorTexture.deactivate(),e.opacityTexture.deactivate(),e.labelOutlineThicknessTexture.deactivate(),e.jitterTexture.deactivate()},t.renderPieceFinish=(i,o)=>{if(e.zBufferTexture!==null&&e.zBufferTexture.deactivate(),e._useSmallViewport){if(e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null){e.copyShader=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","uniform vec2 tfactor;","varying vec2 tcoord;","void main() { tcoord = vec2(vertexDC.x*0.5 + 0.5, vertexDC.y*0.5 + 0.5) * tfactor; gl_Position = vertexDC; }"].join(` -`),["//VTK::System::Dec","//VTK::Output::Dec","uniform sampler2D texture1;","varying vec2 tcoord;","void main() { gl_FragData[0] = texture2D(texture1,tcoord); }"].join(` -`),"");const l=e.copyShader;e.copyVAO=bw.newInstance(),e.copyVAO.setOpenGLRenderWindow(e._openGLRenderWindow),e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(l,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||Iv("Error setting vertexDC in copy shader VAO.")}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.copyShader);const a=e._openGLRenderWindow.getFramebufferSize();e.context.viewport(0,0,a[0],a[1]);const s=e.framebuffer.getColorTexture();s.activate(),e.copyShader.setUniformi("texture",s.getTextureUnit()),e.copyShader.setUniform2f("tfactor",e.fvp[0],e.fvp[1]);const c=e.context;c.blendFuncSeparate(c.ONE,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),s.deactivate(),c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA)}},t.renderPiece=(i,o)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent({type:"EndEvent"}),!e.currentInput){Iv("No input!");return}t.renderPieceStart(i,o),t.renderPieceDraw(i,o),t.renderPieceFinish(i,o)},t.computeBounds=(i,o)=>{if(!t.getInput()){y0(e.Bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(i,o)=>{t.getNeedToRebuildBufferObjects(i,o)&&t.buildBufferObjects(i,o)},t.getNeedToRebuildBufferObjects=(i,o)=>{var a,s,c;return e.VBOBuildTime.getMTime(){var C,S;const a=e.currentInput;if(!a)return;const s=a.getPointData()&&a.getPointData().getScalars();if(!s)return;const c=o.getProperty();if(!e.jitterTexture.getHandle()){const T=new Uint8Array(1024);for(let _=0;_<32*32;++_)T[_]=255*Math.random();e.jitterTexture.setMinificationFilter(Je.LINEAR),e.jitterTexture.setMagnificationFilter(Je.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,vt.UNSIGNED_CHAR,T)}const l=s.getNumberOfComponents(),f=t.useIndependentComponents(c),u=f?l:1,d=c.getScalarOpacity(),h=e._openGLRenderWindow.getGraphicsResourceForObject(d);let g=sa(d,f,u);if(!(h!=null&&h.oglObject)||h.hash!==g){e.opacityTexture=yn.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const T=1024,_=T*2*u,E=new Float32Array(_),D=new Float32Array(T);for(let b=0;b1?1:-1,T[b*3+2]=-1;const _=new Uint16Array(8);_[0]=3,_[1]=0,_[2]=1,_[3]=3,_[4]=3,_[5]=0,_[6]=3,_[7]=2;const E=tt.newInstance({numberOfComponents:3,values:T});E.setName("points");const D=tt.newInstance({numberOfComponents:1,values:_});e.tris.getCABO().createVBO(D,"polys",kr.SURFACE,{points:E,cellOffset:0})}e.VBOBuildTime.modified()},t.updateLabelOutlineThicknessTexture=i=>{var l;const o=i.getProperty().getLabelOutlineThickness(),a=e._openGLRenderWindow.getGraphicsResourceForObject(o),s=`${o.join("-")}`;if(!((l=a==null?void 0:a.oglObject)!=null&&l.getHandle())||(a==null?void 0:a.hash)!==s){e.labelOutlineThicknessTexture=yn.newInstance(),e.labelOutlineThicknessTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const f=1024,u=1,d=f*u,h=new Uint8Array(d);for(let g=0;g{const o=i.getProperty(),a=e.renderable;return o.getUseLabelOutline()||a.getBlendMode()===yp.LABELMAP_EDGE_PROJECTION_BLEND}}const mX={context:null,VBOBuildTime:null,scalarTexture:null,opacityTexture:null,opacityTextureString:null,colorTexture:null,colorTextureString:null,jitterTexture:null,labelOutlineThicknessTexture:null,labelOutlineThicknessTextureString:null,tris:null,framebuffer:null,copyShader:null,copyVAO:null,lastXYF:1,targetXYF:1,zBufferTexture:null,lastZBufferTexture:null,lightComplexity:0,fullViewportTime:1,idxToView:null,idxNormalMatrix:null,modelToView:null,projectionToView:null,avgWindowArea:0,avgFrameTime:0};function YI(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mX,r),tn.extend(t,e,r),aa.implementBuildShadersWithReplacements(t,e,r),e.VBOBuildTime={},un(e.VBOBuildTime,{mtime:0}),e.tris=fa.newInstance(),e.jitterTexture=yn.newInstance(),e.jitterTexture.setWrapS(Id.REPEAT),e.jitterTexture.setWrapT(Id.REPEAT),e.framebuffer=Xm.newInstance(),e.idxToView=qe(new Float64Array(16)),e.idxNormalMatrix=ao(new Float64Array(9)),e.modelToView=qe(new Float64Array(16)),e.projectionToView=qe(new Float64Array(16)),e.projectionToWorld=qe(new Float64Array(16)),Jn(t,e,["context"]),pX(t,e)}const JI=Bt(YI,"vtkOpenGLVolumeMapper");var ZI={newInstance:JI,extend:YI};ir("vtkVolumeMapper",JI);function QI(t,e){switch(t){case"Float32Array":return Float32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":case"Int16Array":return e?(console.debug(`${t} is not supported for volume rendering, switching back to Float32Array`),Float32Array):t==="Uint16Array"?Uint16Array:Int16Array;default:if(t)throw new Error("TargetBuffer should be Float32Array, Uint8Array, Uint16Array, or Int16Array");return Float32Array}}function zw(t,e,r={}){const{isVolumeBuffer:n=!1}=r,i=QI(t,n),o=i.BYTES_PER_ELEMENT;return{numBytes:e*o,TypedArrayConstructor:i}}function vX(t,e){e.classHierarchy.push("vtkStreamingOpenGLVolumeMapper"),t.buildBufferObjects=(r,n)=>{var p;const i=e.currentInput;if(!i)return;const o=n.getProperty();if(!e.jitterTexture.getHandle()){const v=new Uint8Array(1024);for(let x=0;x<32*32;++x)v[x]=255*Math.random();e.jitterTexture.setMinificationFilter(Je.LINEAR),e.jitterTexture.setMagnificationFilter(Je.LINEAR),e.jitterTexture.create2DFromRaw(32,32,1,vt.UNSIGNED_CHAR,v)}const{numberOfComponents:a}=i.get("numberOfComponents"),s=t.useIndependentComponents(o),c=o.getScalarOpacity(),l=e._openGLRenderWindow.getGraphicsResourceForObject(c);let f=sa(c,s,a);if(!(l!=null&&l.oglObject)||l.hash!==f){e.opacityTexture=yn.newInstance(),e.opacityTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const v=1024,x=v*2*a,m=new Float32Array(x),y=new Float32Array(v);for(let w=0;w1?1:-1,v[w*3+2]=-1;const x=new Uint16Array(8);x[0]=3,x[1]=0,x[2]=1,x[3]=3,x[4]=3,x[5]=0,x[6]=3,x[7]=2;const m=tt.newInstance({numberOfComponents:3,values:v});m.setName("points");const y=tt.newInstance({numberOfComponents:1,values:x});e.tris.getCABO().createVBO(y,"polys",kr.SURFACE,{points:m,cellOffset:0})}e.VBOBuildTime.modified()},t.getNeedToRebuildBufferObjects=(r,n)=>{var i,o,a,s,c,l;return e.VBOBuildTime.getMTime(){if(r.isDeleted())return null;let n=0,i=r.getClassName(n++),o=!1;const a=Object.keys(e.overrides);for(;i&&!o;)a.includes(i)?o=!0:i=r.getClassName(n++);if(!o)return null;const s=e.getModelInitialValues(r),c=e.overrides[i](s);return c.setMyFactory(t),c},e.overrides=tO,e.getModelInitialValues=r=>{const n={};return r.getClassName()==="vtkSharedVolumeMapper"&&(n.scalarTexture=r.getScalarTexture()),n}}const SX={};function nO(t,e,r={}){Object.assign(e,SX,r),fw.extend(t,e,r),CX(t,e),Mr("vtkActor",oK.newInstance),Mr("vtkActor2D",cK.newInstance),Mr("vtkCamera",fK.newInstance),Mr("vtkGlyph3DMapper",Lq.newInstance),Mr("vtkImageMapper",Fq.newInstance),Mr("vtkImageSlice",Gq.newInstance),Mr("vtkMapper",o2.newInstance),Mr("vtkPixelSpaceCallbackMapper",jq.newInstance),Mr("vtkRenderer",Xq.newInstance),Mr("vtkSkybox",Zq.newInstance),Mr("vtkSphereMapper",rX.newInstance),Mr("vtkStickMapper",sX.newInstance),Mr("vtkTexture",yn.newInstance),Mr("vtkVolume",uX.newInstance),Mr("vtkVolumeMapper",ZI.newInstance),Mr("vtkSharedVolumeMapper",wX.newInstance)}const TX=W.newInstance(nO,"vtkStreamingOpenGLViewNodeFactory"),_X={newInstance:TX,extend:nO};function EX(t,e){e.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}function rO(t,e,r={}){Object.assign(e,r),nK.extend(t,e,r),e.myFactory=_X.newInstance(),Mr("vtkRenderWindow",iO),EX(t,e)}const iO=W.newInstance(rO,"vtkStreamingOpenGLRenderWindow"),DX={newInstance:iO,extend:rO},{vtkDebugMacro:pg}=W;function bX(t,e){e.classHierarchy.push("vtkCamera");const r=new Float64Array(3),n=new Float64Array([0,0,-1]),i=new Float64Array([0,1,0]),o=qe(new Float64Array(16)),a=qe(new Float64Array(16)),s=new Float64Array(3),c=new Float64Array(3),l=new Float64Array(3),f=qe(new Float64Array(16)),u=qe(new Float64Array(16)),d=new Float64Array(3),h=new Float64Array(3);function g(){e.viewPlaneNormal[0]=-e.directionOfProjection[0],e.viewPlaneNormal[1]=-e.directionOfProjection[1],e.viewPlaneNormal[2]=-e.directionOfProjection[2]}t.orthogonalizeViewUp=()=>{const p=t.getViewMatrix();e.viewUp[0]=p[4],e.viewUp[1]=p[5],e.viewUp[2]=p[6],t.modified()},t.setPosition=(p,v,x)=>{p===e.position[0]&&v===e.position[1]&&x===e.position[2]||(e.position[0]=p,e.position[1]=v,e.position[2]=x,t.computeDistance(),t.modified())},t.setFocalPoint=(p,v,x)=>{p===e.focalPoint[0]&&v===e.focalPoint[1]&&x===e.focalPoint[2]||(e.focalPoint[0]=p,e.focalPoint[1]=v,e.focalPoint[2]=x,t.computeDistance(),t.modified())},t.setDistance=p=>{if(e.distance===p)return;e.distance=p,e.distance<1e-20&&(e.distance=1e-20,pg("Distance is set to minimum."));const v=e.directionOfProjection;e.focalPoint[0]=e.position[0]+v[0]*e.distance,e.focalPoint[1]=e.position[1]+v[1]*e.distance,e.focalPoint[2]=e.position[2]+v[2]*e.distance,t.modified()},t.computeDistance=()=>{const p=e.focalPoint[0]-e.position[0],v=e.focalPoint[1]-e.position[1],x=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(p*p+v*v+x*x),e.distance<1e-20){e.distance=1e-20,pg("Distance is set to minimum.");const m=e.directionOfProjection;e.focalPoint[0]=e.position[0]+m[0]*e.distance,e.focalPoint[1]=e.position[1]+m[1]*e.distance,e.focalPoint[2]=e.position[2]+m[2]*e.distance}e.directionOfProjection[0]=p/e.distance,e.directionOfProjection[1]=v/e.distance,e.directionOfProjection[2]=x/e.distance,g()},t.dolly=p=>{if(p<=0)return;const v=e.distance/p;t.setPosition(e.focalPoint[0]-v*e.directionOfProjection[0],e.focalPoint[1]-v*e.directionOfProjection[1],e.focalPoint[2]-v*e.directionOfProjection[2])},t.roll=p=>{const v=e.position,x=e.focalPoint,m=e.viewUp,y=new Float64Array([m[0],m[1],m[2],0]);qe(f);const w=new Float64Array([x[0]-v[0],x[1]-v[1],x[2]-v[2]]);Hr(f,f,Vn(p),w),Os(y,y,f),e.viewUp[0]=y[0],e.viewUp[1]=y[1],e.viewUp[2]=y[2],t.modified()},t.azimuth=p=>{const v=e.focalPoint;qe(u),nn(u,u,v),Hr(u,u,Vn(p),e.viewUp),nn(u,u,[-v[0],-v[1],-v[2]]),et(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.yaw=p=>{const v=e.position;qe(u),nn(u,u,v),Hr(u,u,Vn(p),e.viewUp),nn(u,u,[-v[0],-v[1],-v[2]]),et(h,e.focalPoint,u),t.setFocalPoint(h[0],h[1],h[2])},t.elevation=p=>{const v=e.focalPoint,x=t.getViewMatrix(),m=[-x[0],-x[1],-x[2]];qe(u),nn(u,u,v),Hr(u,u,Vn(p),m),nn(u,u,[-v[0],-v[1],-v[2]]),et(d,e.position,u),t.setPosition(d[0],d[1],d[2])},t.pitch=p=>{const v=e.position,x=t.getViewMatrix(),m=[x[0],x[1],x[2]];qe(u),nn(u,u,v),Hr(u,u,Vn(p),m),nn(u,u,[-v[0],-v[1],-v[2]]),et(h,e.focalPoint,u),t.setFocalPoint(...h)},t.zoom=p=>{p<=0||(e.parallelProjection?e.parallelScale/=p:e.viewAngle/=p,t.modified())},t.translate=(p,v,x)=>{const m=[p,v,x];E1(e.position,m,e.position),E1(e.focalPoint,m,e.focalPoint),t.computeDistance(),t.modified()},t.applyTransform=p=>{const v=[...e.viewUp,1],x=[],m=[],y=[];v[0]+=e.position[0],v[1]+=e.position[1],v[2]+=e.position[2],Os(x,[...e.position,1],p),Os(m,[...e.focalPoint,1],p),Os(y,v,p),y[0]-=x[0],y[1]-=x[1],y[2]-=x[2],t.setPosition(...x.slice(0,3)),t.setFocalPoint(...m.slice(0,3)),t.setViewUp(...y.slice(0,3))},t.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],t.setThickness=p=>{let v=p;v<1e-20&&(v=1e-20,pg("Thickness is set to minimum.")),t.setClippingRange(e.clippingRange[0],e.clippingRange[0]+v)},t.setThicknessFromFocalPoint=p=>{let v=p;v<1e-20&&(v=1e-20,pg("Thickness is set to minimum.")),t.setClippingRange(e.distance-v/2,e.distance+v/2)},t.setRoll=p=>{},t.getRoll=()=>{},t.setObliqueAngles=(p,v)=>{},t.getOrientation=()=>{},t.getOrientationWXYZ=()=>{},t.getFrustumPlanes=p=>{},t.getCameraLightTransformMatrix=p=>(_n(p,e.cameraLightTransform),p),t.computeCameraLightTransform=()=>{_n(o,t.getViewMatrix()),$n(o,o),xw(a,[e.distance,e.distance,e.distance]),bt(o,o,a),qe(e.cameraLightTransform),nn(e.cameraLightTransform,o,[0,0,-1])},t.deepCopy=p=>{},t.physicalOrientationToWorldDirection=p=>{const v=kT(p[0],p[1],p[2],p[3]),x=ll(),m=kT(0,0,1,0);return ij(x,v),AT(m,v,m),AT(m,m,x),[m[0],m[1],m[2]]},t.getPhysicalToWorldMatrix=p=>{t.getWorldToPhysicalMatrix(p),$n(p,p)},t.getWorldToPhysicalMatrix=p=>{qe(p);const v=[3];ia(e.physicalViewNorth,e.physicalViewUp,v),p[0]=v[0],p[1]=v[1],p[2]=v[2],p[4]=e.physicalViewUp[0],p[5]=e.physicalViewUp[1],p[6]=e.physicalViewUp[2],p[8]=-e.physicalViewNorth[0],p[9]=-e.physicalViewNorth[1],p[10]=-e.physicalViewNorth[2],St(p,p),$t(s,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),Ha(p,p,s),nn(p,p,e.physicalTranslation)},t.computeViewParametersFromViewMatrix=p=>{$n(o,p),et(s,r,o),t.computeDistance();const v=e.distance;t.setPosition(s[0],s[1],s[2]),et(c,n,o),kt(c,c,s),on(c,c),t.setDirectionOfProjection(c[0],c[1],c[2]),et(l,i,o),kt(l,l,s),on(l,l),t.setViewUp(l[0],l[1],l[2]),t.setDistance(v)},t.computeViewParametersFromPhysicalMatrix=p=>{t.getWorldToPhysicalMatrix(o),bt(o,p,o),t.computeViewParametersFromViewMatrix(o)},t.setViewMatrix=p=>{e.viewMatrix=p,e.viewMatrix&&(_n(o,e.viewMatrix),t.computeViewParametersFromViewMatrix(o),St(e.viewMatrix,e.viewMatrix))},t.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;Sw(o,e.position,e.focalPoint,e.viewUp),St(o,o);const p=new Float64Array(16);return _n(p,o),p},t.setProjectionMatrix=p=>{e.projectionMatrix=p},t.getProjectionMatrix=(p,v,x)=>{const m=new Float64Array(16);if(qe(m),e.projectionMatrix){const C=1/e.physicalScale;return $t(s,C,C,C),_n(m,e.projectionMatrix),Ha(m,m,s),St(m,m),m}qe(o);const y=e.clippingRange[1]-e.clippingRange[0],w=[e.clippingRange[0]+(v+1)*y/2,e.clippingRange[0]+(x+1)*y/2];if(e.parallelProjection){const C=e.parallelScale*p,S=e.parallelScale,T=(e.windowCenter[0]-1)*C,_=(e.windowCenter[0]+1)*C,E=(e.windowCenter[1]-1)*S,D=(e.windowCenter[1]+1)*S;Cw(o,T,_,E,D,w[0],w[1]),St(o,o)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const C=Math.tan(Vn(e.viewAngle)/2);let S,T;e.useHorizontalViewAngle===!0?(S=e.clippingRange[0]*C,T=e.clippingRange[0]*C/p):(S=e.clippingRange[0]*C*p,T=e.clippingRange[0]*C);const _=(e.windowCenter[0]-1)*S,E=(e.windowCenter[0]+1)*S,D=(e.windowCenter[1]-1)*T,b=(e.windowCenter[1]+1)*T,I=w[0],R=w[1];o[0]=2*I/(E-_),o[5]=2*I/(b-D),o[2]=(_+E)/(E-_),o[6]=(D+b)/(b-D),o[10]=-(I+R)/(R-I),o[14]=-1,o[11]=-2*I*R/(R-I),o[15]=0}}return _n(m,o),m},t.getCompositeProjectionMatrix=(p,v,x)=>{const m=t.getViewMatrix(),y=t.getProjectionMatrix(p,v,x);return bt(y,m,y),y},t.setDirectionOfProjection=(p,v,x)=>{if(e.directionOfProjection[0]===p&&e.directionOfProjection[1]===v&&e.directionOfProjection[2]===x)return;e.directionOfProjection[0]=p,e.directionOfProjection[1]=v,e.directionOfProjection[2]=x;const m=e.directionOfProjection;e.focalPoint[0]=e.position[0]+m[0]*e.distance,e.focalPoint[1]=e.position[1]+m[1]*e.distance,e.focalPoint[2]=e.position[2]+m[2]*e.distance,g()},t.setDeviceAngles=(p,v,x,m)=>{const y=[3];ia(e.physicalViewNorth,e.physicalViewUp,y);const w=qe(new Float64Array(16));Hr(w,w,Vn(p),e.physicalViewUp),Hr(w,w,Vn(v),y),Hr(w,w,Vn(x),e.physicalViewNorth),Hr(w,w,Vn(-m),e.physicalViewUp);const C=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),S=new Float64Array(e.physicalViewNorth);et(C,C,w),et(S,S,w),t.setDirectionOfProjection(C[0],C[1],C[2]),t.setViewUp(S[0],S[1],S[2]),t.modified()},t.setOrientationWXYZ=(p,v,x,m)=>{const y=qe(new Float64Array(16));if(p!==0&&(v!==0||x!==0||m!==0)){const S=Vn(p),T=ll();_w(T,[v,x,m],S),I1(y,T)}const w=new Float64Array(3);et(w,[0,0,-1],y);const C=new Float64Array(3);et(C,[0,1,0],y),t.setDirectionOfProjection(...w),t.setViewUp(...C),t.modified()},t.computeClippingRange=p=>{let v=null,x=null;v=e.viewPlaneNormal,x=e.position;const m=-v[0],y=-v[1],w=-v[2],C=-(m*x[0]+y*x[1]+w*x[2]),S=[m*p[0]+y*p[2]+w*p[4]+C,1e-18];for(let T=0;T<2;T++)for(let _=0;_<2;_++)for(let E=0;E<2;E++){const D=m*p[E]+y*p[2+_]+w*p[4+T]+C;S[0]=DS[1]?D:S[1]}return S}}const IX={position:[0,0,1],focalPoint:[0,0,0],viewUp:[0,1,0],directionOfProjection:[0,0,-1],parallelProjection:!1,useHorizontalViewAngle:!1,viewAngle:30,parallelScale:1,clippingRange:[.01,1000.01],windowCenter:[0,0],viewPlaneNormal:[0,0,1],useOffAxisProjection:!1,screenBottomLeft:[-.5,-.5,-.5],screenBottomRight:[.5,-.5,-.5],screenTopRight:[.5,.5,-.5],freezeFocalPoint:!1,projectionMatrix:null,viewMatrix:null,cameraLightTransform:lo(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function oO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IX,r),W.obj(t,e),W.get(t,e,["distance"]),W.setGet(t,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),W.getArray(t,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),W.setGetArray(t,e,["clippingRange","windowCenter"],2),W.setGetArray(t,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),bX(t,e)}const OX=W.newInstance(oO,"vtkCamera");var $w={newInstance:OX,extend:oO};const MX=["HeadLight","CameraLight","SceneLight"];function RX(t,e){e.classHierarchy.push("vtkLight");const r=new Float64Array(3);t.getTransformedPosition=()=>(e.transformMatrix?et(r,e.position,e.transformMatrix):$t(r,e.position[0],e.position[1],e.position[2]),r),t.getTransformedFocalPoint=()=>(e.transformMatrix?et(r,e.focalPoint,e.transformMatrix):$t(r,e.focalPoint[0],e.focalPoint[1],e.focalPoint[2]),r),t.getDirection=()=>(e.directionMTime{const i=new Float64Array(3);Qt(i,e.position,n),e.focalPoint=i},t.setDirectionAngle=(n,i)=>{const o=Vn(n),a=Vn(i);t.setPosition(Math.cos(o)*Math.sin(a),Math.sin(o),Math.cos(o)*Math.cos(a)),t.setFocalPoint(0,0,0),t.setPositional(0)},t.setLightTypeToHeadLight=()=>{t.setLightType("HeadLight")},t.setLightTypeToCameraLight=()=>{t.setLightType("CameraLight")},t.setLightTypeToSceneLight=()=>{t.setTransformMatrix(null),t.setLightType("SceneLight")},t.lightTypeIsHeadLight=()=>e.lightType==="HeadLight",t.lightTypeIsSceneLight=()=>e.lightType==="SceneLight",t.lightTypeIsCameraLight=()=>e.lightType==="CameraLight"}const LX={switch:!0,intensity:1,color:[1,1,1],position:[0,0,1],focalPoint:[0,0,0],positional:!1,exponent:1,coneAngle:30,coneFalloff:5,attenuationValues:[1,0,0],transformMatrix:null,lightType:"SceneLight",shadowAttenuation:1,direction:[0,0,0],directionMTime:0};function aO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,LX,r),W.obj(t,e),W.setGet(t,e,["intensity","switch","positional","exponent","coneAngle","coneFalloff","transformMatrix","lightType","shadowAttenuation","attenuationValues"]),W.setGetArray(t,e,["color","position","focalPoint","attenuationValues"],3),RX(t,e)}const NX=W.newInstance(aO,"vtkLight");var PX={newInstance:NX,extend:aO,LIGHT_TYPES:MX};const{vtkErrorMacro:Rp}=W;function AX(t){return()=>Rp(`vtkViewport::${t} - NOT IMPLEMENTED`)}function kX(t,e){e.classHierarchy.push("vtkViewport"),t.getViewProps=()=>e.props,t.hasViewProp=n=>e.props.includes(n),t.addViewProp=n=>{n&&!t.hasViewProp(n)&&e.props.push(n)},t.removeViewProp=n=>{const i=e.props.filter(o=>o!==n);e.props.length!==i.length&&(e.props=i)},t.removeAllViewProps=()=>{e.props=[]};function r(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];i.push(n);const o=n.getNestedProps();if(o&&o.length)for(let a=0;a{const n=[];for(let i=0;i{t.removeViewProp(n)},t.getActors2D=()=>(e.actors2D=[],e.props.forEach(n=>{e.actors2D=e.actors2D.concat(n.getActors2D())}),e.actors2D),t.displayToView=()=>Rp("call displayToView on your view instead"),t.viewToDisplay=()=>Rp("callviewtodisplay on your view instead"),t.getSize=()=>Rp("call getSize on your View instead"),t.normalizedDisplayToProjection=(n,i,o)=>{const a=t.normalizedDisplayToNormalizedViewport(n,i,o);return t.normalizedViewportToProjection(a[0],a[1],a[2])},t.normalizedDisplayToNormalizedViewport=(n,i,o)=>{const a=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[(n-e.viewport[0])/a[0],(i-e.viewport[1])/a[1],o]},t.normalizedViewportToProjection=(n,i,o)=>[n*2-1,i*2-1,o*2-1],t.projectionToNormalizedDisplay=(n,i,o)=>{const a=t.projectionToNormalizedViewport(n,i,o);return t.normalizedViewportToNormalizedDisplay(a[0],a[1],a[2])},t.normalizedViewportToNormalizedDisplay=(n,i,o)=>{const a=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[n*a[0]+e.viewport[0],i*a[1]+e.viewport[1],o]},t.projectionToNormalizedViewport=(n,i,o)=>[(n+1)*.5,(i+1)*.5,(o+1)*.5],t.PickPropFrom=AX("PickPropFrom")}const VX={background:[0,0,0],background2:[.2,.2,.2],gradientBackground:!1,viewport:[0,0,1,1],aspect:[1,1],pixelAspect:[1,1],props:[],actors2D:[]};function sO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,VX,r),W.obj(t,e),W.event(t,e,"event"),W.setGetArray(t,e,["viewport"],4),W.setGetArray(t,e,["background","background2"],3),kX(t,e)}const FX=W.newInstance(sO,"vtkViewport");var UX={newInstance:FX,extend:sO};const{vtkDebugMacro:Q0,vtkErrorMacro:ps,vtkWarningMacro:BX}=Br;function s8(t){return()=>ps(`vtkRenderer::${t} - NOT IMPLEMENTED`)}function GX(t,e){e.classHierarchy.push("vtkRenderer");const r={type:"ComputeVisiblePropBoundsEvent",renderer:t},n={type:"ResetCameraClippingRangeEvent",renderer:t},i={type:"ResetCameraEvent",renderer:t};t.updateCamera=()=>(e.activeCamera||(Q0("No cameras are on, creating one."),t.getActiveCameraAndResetIfCreated()),e.activeCamera.render(t),!0),t.updateLightsGeometryToFollowCamera=()=>{const o=t.getActiveCameraAndResetIfCreated();e.lights.forEach(a=>{a.lightTypeIsSceneLight()||(a.lightTypeIsHeadLight()?(a.setPositionFrom(o.getPositionByReference()),a.setFocalPointFrom(o.getFocalPointByReference()),a.modified(o.getMTime())):a.lightTypeIsCameraLight()?a.setTransformMatrix(o.getCameraLightTransformMatrix(lo())):ps("light has unknown light type",a.get()))})},t.updateLightGeometry=()=>e.lightFollowCamera?t.updateLightsGeometryToFollowCamera():!0,t.allocateTime=s8("allocateTime"),t.updateGeometry=s8("updateGeometry"),t.getVTKWindow=()=>e._renderWindow,t.setLayer=o=>{Q0(t.getClassName(),t,"setting Layer to ",o),e.layer!==o&&(e.layer=o,t.modified()),t.setPreserveColorBuffer(!!o)},t.setActiveCamera=o=>e.activeCamera===o?!1:(e.activeCamera=o,t.modified(),t.invokeEvent({type:"ActiveCameraEvent",camera:o}),!0),t.makeCamera=()=>{const o=$w.newInstance();return t.invokeEvent({type:"CreateCameraEvent",camera:o}),o},t.getActiveCamera=()=>(e.activeCamera||(e.activeCamera=t.makeCamera()),e.activeCamera),t.getActiveCameraAndResetIfCreated=()=>(e.activeCamera||(t.getActiveCamera(),t.resetCamera()),e.activeCamera),t.getActors=()=>(e.actors=[],e.props.forEach(o=>{e.actors=e.actors.concat(o.getActors())}),e.actors),t.addActor=t.addViewProp,t.removeActor=o=>{e.actors=e.actors.filter(a=>a!==o),t.removeViewProp(o),t.modified()},t.removeAllActors=()=>{t.getActors().forEach(a=>{t.removeViewProp(a)}),e.actors=[],t.modified()},t.getVolumes=()=>(e.volumes=[],e.props.forEach(o=>{e.volumes=e.volumes.concat(o.getVolumes())}),e.volumes),t.addVolume=t.addViewProp,t.removeVolume=o=>{e.volumes=e.volumes.filter(a=>a!==o),t.removeViewProp(o),t.modified()},t.removeAllVolumes=()=>{t.getVolumes().forEach(a=>{t.removeViewProp(a)}),e.volumes=[],t.modified()},t.hasLight=o=>e.lights.includes(o),t.addLight=o=>{o&&!t.hasLight(o)&&(e.lights.push(o),t.modified())},t.removeLight=o=>{e.lights=e.lights.filter(a=>a!==o),t.modified()},t.removeAllLights=()=>{e.lights=[],t.modified()},t.setLightCollection=o=>{e.lights=o,t.modified()},t.makeLight=PX.newInstance,t.createLight=()=>{e.automaticLightCreation&&(e._createdLight&&(t.removeLight(e._createdLight),e._createdLight.delete(),e._createdLight=null),e._createdLight=t.makeLight(),t.addLight(e._createdLight),e._createdLight.setLightTypeToHeadLight(),e._createdLight.setPosition(t.getActiveCamera().getPosition()),e._createdLight.setFocalPoint(t.getActiveCamera().getFocalPoint()))},t.normalizedDisplayToWorld=(o,a,s,c)=>{let l=t.normalizedDisplayToProjection(o,a,s);return l=t.projectionToView(l[0],l[1],l[2],c),t.viewToWorld(l[0],l[1],l[2])},t.worldToNormalizedDisplay=(o,a,s,c)=>{let l=t.worldToView(o,a,s);return l=t.viewToProjection(l[0],l[1],l[2],c),t.projectionToNormalizedDisplay(l[0],l[1],l[2])},t.viewToWorld=(o,a,s)=>{if(e.activeCamera===null)return ps("ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();$n(c,c),St(c,c);const l=new Float64Array([o,a,s]);return et(l,l,c),l},t.projectionToView=(o,a,s,c)=>{if(e.activeCamera===null)return ps("ProjectionToView: no active camera, cannot compute projection to view, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);$n(l,l),St(l,l);const f=new Float64Array([o,a,s]);return et(f,f,l),f},t.worldToView=(o,a,s)=>{if(e.activeCamera===null)return ps("WorldToView: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getViewMatrix();St(c,c);const l=new Float64Array([o,a,s]);return et(l,l,c),l},t.viewToProjection=(o,a,s,c)=>{if(e.activeCamera===null)return ps("ViewToProjection: no active camera, cannot compute view to projection, returning 0,0,0"),[0,0,0];const l=e.activeCamera.getProjectionMatrix(c,-1,1);St(l,l);const f=new Float64Array([o,a,s]);return et(f,f,l),f},t.computeVisiblePropBounds=()=>{e.allBounds[0]=qt.INIT_BOUNDS[0],e.allBounds[1]=qt.INIT_BOUNDS[1],e.allBounds[2]=qt.INIT_BOUNDS[2],e.allBounds[3]=qt.INIT_BOUNDS[3],e.allBounds[4]=qt.INIT_BOUNDS[4],e.allBounds[5]=qt.INIT_BOUNDS[5];let o=!0;t.invokeEvent(r);for(let a=0;ae.allBounds[1]&&(e.allBounds[1]=c[1]),c[2]e.allBounds[3]&&(e.allBounds[3]=c[3]),c[4]e.allBounds[5]&&(e.allBounds[5]=c[5]))}}return o&&(y0(e.allBounds),Q0("Can't compute bounds, no 3D props are visible")),e.allBounds},t.resetCamera=function(){const a=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||t.computeVisiblePropBounds(),s=[0,0,0];if(!Ep(a))return Q0("Cannot reset camera!"),!1;let c=null;if(t.getActiveCamera())c=e.activeCamera.getViewPlaneNormal();else return ps("Trying to reset non-existent camera"),!1;e.activeCamera.setViewAngle(30),s[0]=(a[0]+a[1])/2,s[1]=(a[2]+a[3])/2,s[2]=(a[4]+a[5])/2;let l=a[1]-a[0],f=a[3]-a[2],u=a[5]-a[4];l*=l,f*=f,u*=u;let d=l+f+u;d=d===0?1:d,d=Math.sqrt(d)*.5;const h=Vn(e.activeCamera.getViewAngle()),g=d,p=d/Math.sin(h*.5),v=e.activeCamera.getViewUp();return Math.abs(wt(v,c))>.999&&(BX("Resetting view-up since view plane normal is parallel"),e.activeCamera.setViewUp(-v[2],v[0],v[1])),e.activeCamera.setFocalPoint(s[0],s[1],s[2]),e.activeCamera.setPosition(s[0]+p*c[0],s[1]+p*c[1],s[2]+p*c[2]),t.resetCameraClippingRange(a),e.activeCamera.setParallelScale(g),e.activeCamera.setPhysicalScale(d),e.activeCamera.setPhysicalTranslation(-s[0],-s[1],-s[2]),t.invokeEvent(i),!0},t.resetCameraClippingRange=function(){const a=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||t.computeVisiblePropBounds();if(!Ep(a))return Q0("Cannot reset camera clipping range!"),!1;if(t.getActiveCameraAndResetIfCreated(),!e.activeCamera)return ps("Trying to reset clipping range of non-existent camera"),!1;const s=e.activeCamera.computeClippingRange(a);let c=0;if(e.activeCamera.getParallelProjection())c=.2*e.activeCamera.getParallelScale();else{const l=Vn(e.activeCamera.getViewAngle());c=.2*Math.tan(l/2)*s[1]}return s[1]-s[0]=s[1]?.01*s[1]:s[0],e.nearClippingPlaneTolerance||(e.nearClippingPlaneTolerance=.01),s[0]{o!==e._renderWindow&&(e._vtkWindow=o,e._renderWindow=o)},t.visibleActorCount=()=>e.props.filter(o=>o.getVisibility()).length,t.visibleVolumeCount=t.visibleActorCount,t.getMTime=()=>{let o=e.mtime;const a=e.activeCamera?e.activeCamera.getMTime():0;a>o&&(o=a);const s=e._createdLight?e._createdLight.getMTime():0;return s>o&&(o=s),o},t.getTransparent=()=>!!e.preserveColorBuffer,t.isActiveCameraCreated=()=>!!e.activeCamera}const WX={pickedProp:null,activeCamera:null,allBounds:[],ambient:[1,1,1],allocatedRenderTime:100,timeFactor:1,automaticLightCreation:!0,twoSidedLighting:!0,lastRenderTimeInSeconds:-1,renderWindow:null,lights:[],actors:[],volumes:[],lightFollowCamera:!0,numberOfPropsRendered:0,propArray:null,pathArray:null,layer:0,preserveColorBuffer:!1,preserveDepthBuffer:!1,computeVisiblePropBounds:qs(),interactive:!0,nearClippingPlaneTolerance:0,clippingRangeExpansion:.05,erase:!0,draw:!0,useShadows:!1,useDepthPeeling:!1,occlusionRatio:0,maximumNumberOfPeels:4,selector:null,delegate:null,texturedBackground:!1,backgroundTexture:null,environmentTexture:null,environmentTextureDiffuseStrength:1,environmentTextureSpecularStrength:1,useEnvironmentTextureAsBackground:!1,pass:0};function cO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(Object.assign(e,WX,r),UX.extend(t,e,r),e.background||(e.background=[0,0,0,1]);e.background.length<3;)e.background.push(0);e.background.length===3&&e.background.push(1),gi(t,e,["_renderWindow","allocatedRenderTime","timeFactor","lastRenderTimeInSeconds","numberOfPropsRendered","lastRenderingUsedDepthPeeling","selector"]),Jn(t,e,["twoSidedLighting","lightFollowCamera","automaticLightCreation","erase","draw","nearClippingPlaneTolerance","clippingRangeExpansion","backingStore","interactive","layer","preserveColorBuffer","preserveDepthBuffer","useDepthPeeling","occlusionRatio","maximumNumberOfPeels","delegate","backgroundTexture","texturedBackground","environmentTexture","environmentTextureDiffuseStrength","environmentTextureSpecularStrength","useEnvironmentTextureAsBackground","useShadows","pass"]),v0(t,e,["actors","volumes","lights"]),Kx(t,e,["background"],4,1),hh(t,e,["renderWindow"]),GX(t,e)}const zX=Bt(cO,"vtkRenderer");var lO={newInstance:zX,extend:cO};const $X={Unknown:0,LeftController:1,RightController:2},jX={Unknown:0,Trigger:1,TrackPad:2,Grip:3,Thumbstick:4,A:5,B:6,ApplicationMenu:7},HX={Unknown:0,TouchpadX:1,TouchpadY:2,ThumbstickX:3,ThumbstickY:4};var uO={Device:$X,Input:jX,Axis:HX};const{Device:mg,Input:bc}=uO,{vtkWarningMacro:vg,vtkErrorMacro:yg,normalizeWheel:KX,vtkOnceErrorMacro:qX}=W,Fl={ctrlKey:!1,altKey:!1,shiftKey:!1},Ov={"xr-standard":[bc.Trigger,bc.Grip,bc.TrackPad,bc.Thumbstick,bc.A,bc.B]},jw=["StartAnimation","Animation","EndAnimation","PointerEnter","PointerLeave","MouseEnter","MouseLeave","StartMouseMove","MouseMove","EndMouseMove","LeftButtonPress","LeftButtonRelease","MiddleButtonPress","MiddleButtonRelease","RightButtonPress","RightButtonRelease","KeyPress","KeyDown","KeyUp","StartMouseWheel","MouseWheel","EndMouseWheel","StartPinch","Pinch","EndPinch","StartPan","Pan","EndPan","StartRotate","Rotate","EndRotate","Button3D","Move3D","StartPointerLock","EndPointerLock","StartInteraction","Interaction","EndInteraction","AnimationFrameRateUpdate"];function ef(t){t.cancelable&&t.preventDefault()}function xg(t){const e=Object.create(null);return t.forEach(r=>{let{pointerId:n,position:i}=r;e[n]=i}),e}function XX(t,e){e.classHierarchy.push("vtkRenderWindowInteractor");const r={...t},n=new Set,i=new Map;let o=1;t.start=()=>{!e.initialized&&(t.initialize(),!e.initialized)||t.startEventLoop()},t.setRenderWindow=p=>{yg("you want to call setView(view) instead of setRenderWindow on a vtk.js interactor")},t.setInteractorStyle=p=>{e.interactorStyle!==p&&(e.interactorStyle!=null&&e.interactorStyle.setInteractor(null),e.interactorStyle=p,e.interactorStyle!=null&&e.interactorStyle.getInteractor()!==t&&e.interactorStyle.setInteractor(t))},t.initialize=()=>{e.initialized=!0,t.enable(),t.render()},t.enable=()=>t.setEnabled(!0),t.disable=()=>t.setEnabled(!1),t.startEventLoop=()=>vg("empty event loop");function a(p,v){e._forcedRenderer||(e.currentRenderer=t.findPokedRenderer(p,v))}t.getCurrentRenderer=()=>(e.currentRenderer||a(0,0),e.currentRenderer);function s(p){const v=e._view.getCanvas(),x=v.getBoundingClientRect(),m=v.width/x.width,y=v.height/x.height,w={x:m*(p.clientX-x.left),y:y*(x.height-p.clientY+x.top),z:0};return(i.size<=1||!e.currentRenderer)&&a(w.x,w.y),w}const c=e._getScreenEventPositionFor||s;function l(p){return{controlKey:p.ctrlKey,altKey:p.altKey,shiftKey:p.shiftKey}}function f(p){const v=l(p);return{key:p.key,keyCode:p.charCode,...v}}function u(p){return p.pointerType||""}const d=()=>{if(e.container===null)return;const{container:p}=e;p.addEventListener("contextmenu",ef),p.addEventListener("wheel",t.handleWheel),p.addEventListener("DOMMouseScroll",t.handleWheel),p.addEventListener("pointerenter",t.handlePointerEnter),p.addEventListener("pointerleave",t.handlePointerLeave),p.addEventListener("pointermove",t.handlePointerMove,{passive:!1}),p.addEventListener("pointerdown",t.handlePointerDown,{passive:!1}),p.addEventListener("pointerup",t.handlePointerUp),p.addEventListener("pointercancel",t.handlePointerCancel),document.addEventListener("keypress",t.handleKeyPress),document.addEventListener("keydown",t.handleKeyDown),document.addEventListener("keyup",t.handleKeyUp),document.addEventListener("pointerlockchange",t.handlePointerLockChange),p.style.touchAction="none",p.style.userSelect="none",p.style.webkitTapHighlightColor="rgba(0,0,0,0)"};t.bindEvents=p=>{if(p===null)return;r.setContainer(p)&&d()};const h=()=>{clearTimeout(e.moveTimeoutID),clearTimeout(e.wheelTimeoutID),e.moveTimeoutID=0,e.wheelTimeoutID=0,o=1;const{container:p}=e;p&&(p.removeEventListener("contextmenu",ef),p.removeEventListener("wheel",t.handleWheel),p.removeEventListener("DOMMouseScroll",t.handleWheel),p.removeEventListener("pointerenter",t.handlePointerEnter),p.removeEventListener("pointerleave",t.handlePointerLeave),p.removeEventListener("pointermove",t.handlePointerMove,{passive:!1}),p.removeEventListener("pointerdown",t.handlePointerDown,{passive:!1}),p.removeEventListener("pointerup",t.handlePointerUp),p.removeEventListener("pointercancel",t.handlePointerCancel)),document.removeEventListener("keypress",t.handleKeyPress),document.removeEventListener("keydown",t.handleKeyDown),document.removeEventListener("keyup",t.handleKeyUp),document.removeEventListener("pointerlockchange",t.handlePointerLockChange),i.clear()};t.unbindEvents=()=>{h(),r.setContainer(null)},t.handleKeyPress=p=>{const v=f(p);t.keyPressEvent(v)},t.handleKeyDown=p=>{const v=f(p);t.keyDownEvent(v)},t.handleKeyUp=p=>{const v=f(p);t.keyUpEvent(v)},t.handlePointerEnter=p=>{const v={...l(p),position:c(p),deviceType:u(p)};t.pointerEnterEvent(v),v.deviceType==="mouse"&&t.mouseEnterEvent(v)},t.handlePointerLeave=p=>{const v={...l(p),position:c(p),deviceType:u(p)};t.pointerLeaveEvent(v),v.deviceType==="mouse"&&t.mouseLeaveEvent(v)},t.handlePointerDown=p=>{if(!(p.button>2||t.isPointerLocked()))switch(e.preventDefaultOnPointerDown&&ef(p),p.target.hasPointerCapture(p.pointerId)&&p.target.releasePointerCapture(p.pointerId),e.container.setPointerCapture(p.pointerId),i.has(p.pointerId)&&vg("[RenderWindowInteractor] duplicate pointerId detected"),i.set(p.pointerId,{pointerId:p.pointerId,position:c(p)}),p.pointerType){case"pen":case"touch":t.handleTouchStart(p);break;case"mouse":default:t.handleMouseDown(p);break}},t.handlePointerUp=p=>{if(i.has(p.pointerId))switch(e.preventDefaultOnPointerUp&&ef(p),i.delete(p.pointerId),e.container.releasePointerCapture(p.pointerId),p.pointerType){case"pen":case"touch":t.handleTouchEnd(p);break;case"mouse":default:t.handleMouseUp(p);break}},t.handlePointerCancel=p=>{if(i.has(p.pointerId))switch(i.delete(p.pointerId),p.pointerType){case"pen":case"touch":t.handleTouchEnd(p);break;case"mouse":default:t.handleMouseUp(p);break}},t.handlePointerMove=p=>{if(i.has(p.pointerId)){const v=i.get(p.pointerId);v.position=c(p)}switch(p.pointerType){case"pen":case"touch":t.handleTouchMove(p);break;case"mouse":default:t.handleMouseMove(p);break}},t.handleMouseDown=p=>{const v={...l(p),position:c(p),deviceType:u(p)};switch(p.button){case 0:t.leftButtonPressEvent(v);break;case 1:t.middleButtonPressEvent(v);break;case 2:t.rightButtonPressEvent(v);break;default:yg(`Unknown mouse button pressed: ${p.button}`);break}},t.requestPointerLock=()=>{e.container&&e.container.requestPointerLock()},t.exitPointerLock=()=>{var p;return(p=document.exitPointerLock)==null?void 0:p.call(document)},t.isPointerLocked=()=>!!e.container&&document.pointerLockElement===e.container,t.handlePointerLockChange=()=>{t.isPointerLocked()?t.startPointerLockEvent():t.endPointerLockEvent()};function g(){e._view&&e.enabled&&e.enableRender&&(e.inRender=!0,e._view.traverseAllPasses(),e.inRender=!1),t.invokeRenderEvent()}t.requestAnimation=p=>{if(p===void 0){yg("undefined requester, can not start animating");return}if(n.has(p)){vg("requester is already registered for animating");return}n.add(p),!e.animationRequest&&n.size===1&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(t.handleAnimation),t.startAnimationEvent())},t.extendAnimation=p=>{const v=Date.now()+p;e._animationExtendedEnd=Math.max(e._animationExtendedEnd,v),!e.animationRequest&&n.size===0&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(t.handleAnimation),t.startAnimationEvent())},t.isAnimating=()=>e.xrAnimation||e.animationRequest!==null,t.cancelAnimation=function(p){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!n.has(p)){if(!v){const x=p&&p.getClassName?p.getClassName():p;vg(`${x} did not request an animation`)}return}n.delete(p),e.animationRequest&&n.size===0&&Date.now()>e._animationExtendedEnd&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null,t.endAnimationEvent(),t.render())},t.switchToXRAnimation=()=>{e.animationRequest&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null),e.xrAnimation=!0},t.returnFromXRAnimation=()=>{e.xrAnimation=!1,n.size!==0&&(e.recentAnimationFrameRate=10,e.animationRequest=requestAnimationFrame(t.handleAnimation))},t.updateXRGamepads=(p,v,x)=>{p.inputSources.forEach(m=>{const y=m.gripSpace==null?null:v.getPose(m.gripSpace,x),w=m.gripSpace==null?null:v.getPose(m.targetRaySpace,x),C=m.gamepad,S=m.handedness;if(C){C.index in e.lastGamepadValues||(e.lastGamepadValues[C.index]={left:{buttons:{}},right:{buttons:{}},none:{buttons:{}}});for(let T=0;T{const v={...l(p),position:c(p),deviceType:u(p)};e.moveTimeoutID===0?t.startMouseMoveEvent(v):(t.mouseMoveEvent(v),clearTimeout(e.moveTimeoutID)),e.moveTimeoutID=setTimeout(()=>{t.endMouseMoveEvent(),e.moveTimeoutID=0},200)},t.handleAnimation=()=>{const p=Date.now();e._animationFrameCount++,p-e._animationStartTime>1e3&&e._animationFrameCount>1&&(e.recentAnimationFrameRate=1e3*(e._animationFrameCount-1)/(p-e._animationStartTime),e.lastFrameTime=1/e.recentAnimationFrameRate,t.animationFrameRateUpdateEvent(),e._animationStartTime=p,e._animationFrameCount=1),t.animationEvent(),g(),n.size>0||Date.now(){ef(p);const v={...KX(p),...l(p),position:c(p),deviceType:u(p)};e.wheelTimeoutID===0&&(Math.abs(v.spinY)>=.3?o=Math.abs(v.spinY):o=1),v.spinY/=o,e.wheelTimeoutID===0?(t.startMouseWheelEvent(v),t.mouseWheelEvent(v)):(t.mouseWheelEvent(v),clearTimeout(e.wheelTimeoutID)),e.mouseScrollDebounceByPass?(t.extendAnimation(600),t.endMouseWheelEvent(),e.wheelTimeoutID=0):e.wheelTimeoutID=setTimeout(()=>{t.extendAnimation(600),t.endMouseWheelEvent(),e.wheelTimeoutID=0},200)},t.handleMouseUp=p=>{const v={...l(p),position:c(p),deviceType:u(p)};switch(p.button){case 0:t.leftButtonReleaseEvent(v);break;case 1:t.middleButtonReleaseEvent(v);break;case 2:t.rightButtonReleaseEvent(v);break;default:yg(`Unknown mouse button released: ${p.button}`);break}},t.handleTouchStart=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const x=xg(i);if(v.length===2){const m={...l(Fl),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(m)}t.recognizeGesture("TouchStart",x)}else if(v.length===1){const x={...l(Fl),position:c(p),deviceType:u(p)};t.leftButtonPressEvent(x)}},t.handleTouchMove=p=>{const v=[...i.values()];if(e.recognizeGestures&&v.length>1){const x=xg(i);t.recognizeGesture("TouchMove",x)}else if(v.length===1){const x={...l(Fl),position:v[0].position,deviceType:u(p)};t.mouseMoveEvent(x)}},t.handleTouchEnd=p=>{const v=[...i.values()];if(e.recognizeGestures)if(v.length===0){const x={...l(Fl),position:c(p),deviceType:u(p)};t.leftButtonReleaseEvent(x)}else if(v.length===1){const x=xg(i);t.recognizeGesture("TouchEnd",x);const m={...l(Fl),position:v[0].position,deviceType:u(p)};t.leftButtonPressEvent(m)}else{const x=xg(i);t.recognizeGesture("TouchMove",x)}else if(v.length===1){const x={...l(Fl),position:v[0].position,deviceType:u(p)};t.leftButtonReleaseEvent(x)}},t.setView=p=>{e._view!==p&&(e._view=p,e._view.getRenderable().setInteractor(t),t.modified())},t.getFirstRenderer=()=>{var p,v,x;return(x=(v=(p=e._view)==null?void 0:p.getRenderable())==null?void 0:v.getRenderersByReference())==null?void 0:x[0]},t.findPokedRenderer=function(){var S,T;let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e._view)return null;const x=(T=(S=e._view)==null?void 0:S.getRenderable())==null?void 0:T.getRenderers();if(!x||x.length===0)return null;x.sort((_,E)=>_.getLayer()-E.getLayer());let m=null,y=null,w=null,C=x.length;for(;C--;){const _=x[C];if(e._view.isInViewport(p,v,_)&&_.getInteractive()){w=_;break}m===null&&_.getInteractive()&&(m=_),y===null&&e._view.isInViewport(p,v,_)&&(y=_)}return w===null&&(w=m),w===null&&(w=y),w==null&&(w=x[0]),w},t.render=()=>{!t.isAnimating()&&!e.inRender&&g()},jw.forEach(p=>{const v=p.charAt(0).toLowerCase()+p.slice(1);t[`${v}Event`]=x=>{if(!e.enabled)return;if(!t.getCurrentRenderer()){qX(` - Can not forward events without a current renderer on the interactor. - `);return}const y={type:p,pokedRenderer:e.currentRenderer,firstRenderer:t.getFirstRenderer(),...x};t[`invoke${p}`](y)}}),t.recognizeGesture=(p,v)=>{if(Object.keys(v).length>2)return;if(e.startingEventPositions||(e.startingEventPositions={}),p==="TouchStart"){Object.keys(v).forEach(D=>{e.startingEventPositions[D]=v[D]}),e.currentGesture="Start";return}if(p==="TouchEnd"){e.currentGesture==="Pinch"&&(t.render(),t.endPinchEvent()),e.currentGesture==="Rotate"&&(t.render(),t.endRotateEvent()),e.currentGesture==="Pan"&&(t.render(),t.endPanEvent()),e.currentGesture="Start",e.startingEventPositions={};return}let x=0;const m=[],y=[];Object.keys(v).forEach(D=>{m[x]=v[D],y[x]=e.startingEventPositions[D],x++});const w=Math.sqrt((y[0].x-y[1].x)*(y[0].x-y[1].x)+(y[0].y-y[1].y)*(y[0].y-y[1].y)),C=Math.sqrt((m[0].x-m[1].x)*(m[0].x-m[1].x)+(m[0].y-m[1].y)*(m[0].y-m[1].y));let S=_1(Math.atan2(y[1].y-y[0].y,y[1].x-y[0].x)),T=_1(Math.atan2(m[1].y-m[0].y,m[1].x-m[0].x)),_=T-S;T=T+180>=360?T-180:T+180,S=S+180>=360?S-180:S+180,Math.abs(T-S)D&&b>I&&b>R){e.currentGesture="Pinch";const M={scale:1,touches:v};t.startPinchEvent(M)}else if(I>D&&I>R){e.currentGesture="Rotate";const M={rotation:0,touches:v};t.startRotateEvent(M)}else if(R>D){e.currentGesture="Pan";const M={translation:[0,0],touches:v};t.startPanEvent(M)}}else{if(e.currentGesture==="Rotate"){const D={rotation:_,touches:v};t.rotateEvent(D)}if(e.currentGesture==="Pinch"){const D={scale:C/w,touches:v};t.pinchEvent(D)}if(e.currentGesture==="Pan"){const D={translation:E,touches:v};t.panEvent(D)}}},t.handleVisibilityChange=()=>{e._animationStartTime=Date.now(),e._animationFrameCount=0},t.setCurrentRenderer=p=>{e._forcedRenderer=!!p,e.currentRenderer=p},t.setContainer=p=>{h();const v=r.setContainer(p??null);return v&&d(),v},t.delete=()=>{for(;n.size;)t.cancelAnimation(n.values().next().value);typeof document.hidden<"u"&&document.removeEventListener("visibilitychange",t.handleVisibilityChange),e.container&&t.setContainer(null),r.delete()},typeof document.hidden<"u"&&document.addEventListener("visibilitychange",t.handleVisibilityChange,!1)}const YX={renderWindow:null,interactorStyle:null,picker:null,pickingManager:null,initialized:!1,enabled:!1,enableRender:!0,currentRenderer:null,lightFollowCamera:!0,desiredUpdateRate:30,stillUpdateRate:2,container:null,recognizeGestures:!0,currentGesture:"Start",animationRequest:null,lastFrameTime:.1,recentAnimationFrameRate:10,wheelTimeoutID:0,moveTimeoutID:0,lastGamepadValues:{},preventDefaultOnPointerDown:!1,preventDefaultOnPointerUp:!1,mouseScrollDebounceByPass:!1};function fO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,YX,r),W.obj(t,e),e._animationExtendedEnd=0,W.event(t,e,"RenderEvent"),jw.forEach(n=>W.event(t,e,n)),W.get(t,e,["initialized","interactorStyle","lastFrameTime","recentAnimationFrameRate","_view"]),W.setGet(t,e,["container","lightFollowCamera","enabled","enableRender","recognizeGestures","desiredUpdateRate","stillUpdateRate","picker","preventDefaultOnPointerDown","preventDefaultOnPointerUp","mouseScrollDebounceByPass"]),W.moveToProtected(t,e,["view"]),XX(t,e)}const JX=W.newInstance(fO,"vtkRenderWindowInteractor");var ZX={newInstance:JX,extend:fO,handledEvents:jw,...uO};const{vtkErrorMacro:QX}=W,eY=[1,-1,1,-1,1,-1];function tY(t,e){e.classHierarchy.push("vtkPoints"),t.getNumberOfPoints=t.getNumberOfTuples,t.setNumberOfPoints=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;t.getNumberOfPoints()!==r&&(e.size=r*n,e.values=W.newTypedArray(e.dataType,e.size),t.setNumberOfComponents(n),t.modified())},t.setPoint=function(r){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;ot.insertNextTuple([r,n,i]),t.getBounds=()=>{if(t.getNumberOfComponents()===3){const i=t.getRange(0);e.bounds[0]=i[0],e.bounds[1]=i[1];const o=t.getRange(1);e.bounds[2]=o[0],e.bounds[3]=o[1];const a=t.getRange(2);return e.bounds[4]=a[0],e.bounds[5]=a[1],e.bounds}if(t.getNumberOfComponents()!==2)return QX(`getBounds called on an array with components of - ${t.getNumberOfComponents()}`),eY;const r=t.getRange(0);e.bounds[0]=r[0],e.bounds[1]=r[1];const n=t.getRange(1);return e.bounds[2]=n[0],e.bounds[3]=n[1],e.bounds[4]=0,e.bounds[5]=0,e.bounds},t.computeBounds=t.getBounds,t.setNumberOfComponents(e.numberOfComponents<2?3:e.numberOfComponents)}const nY={empty:!0,numberOfComponents:3,dataType:vt.FLOAT,bounds:[1,-1,1,-1,1,-1]};function dO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nY,r),tt.extend(t,e,r),tY(t,e)}const rY=W.newInstance(dO,"vtkPoints");var Ld={newInstance:rY,extend:dO};function hO(t){let e=0;return t.filter((r,n)=>n===e?(e+=r+1,!0):!1)}function gO(t){let e=0;for(let r=0;r(e.numberOfCells!==void 0&&!n||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=gO(t.getData())),e.numberOfCells),t.getCellSizes=n=>(e.cellSizes!==void 0&&!n||(e.cellSizes=hO(t.getData())),e.cellSizes),t.resize=n=>{const i=t.getNumberOfTuples();r.resize(n);const o=t.getNumberOfTuples();o{r.setData(n,1),e.numberOfCells=void 0,e.cellSizes=void 0},t.getCell=n=>{let i=n;const o=e.values[i++];return e.values.subarray(i,i+o)},t.insertNextCell=n=>{const i=t.getNumberOfCells();return t.insertNextTuples([n.length,...n]),++e.numberOfCells,e.cellSizes!=null&&e.cellSizes.push(n.length),i}}function aY(t){return{empty:!0,numberOfComponents:1,dataType:vt.UNSIGNED_INT,...t}}function pO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};tt.extend(t,e,aY(r)),oY(t,e)}const sY=W.newInstance(pO,"vtkCellArray");var ul={newInstance:sY,extend:pO,...iY};function cY(t,e){e.classHierarchy.push("vtkCell"),t.initialize=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(n){e.pointsIds=n;let i=e.points.getData();i.length!==3*e.pointsIds.length&&(i=W.newTypedArray(r.getDataType(),3*e.pointsIds.length));const o=r.getData();e.pointsIds.forEach((a,s)=>{let c=3*a,l=3*s;i[l]=o[c],i[++l]=o[++c],i[++l]=o[++c]}),e.points.setData(i)}else{e.points=r,e.pointsIds=new Array(r.getNumberOfPoints());for(let i=r.getNumberOfPoints()-1;i>=0;--i)e.pointsIds[i]=i}},t.getBounds=()=>{const r=e.points.getNumberOfPoints(),n=[];if(r){e.points.getPoint(0,n),e.bounds[0]=n[0],e.bounds[1]=n[0],e.bounds[2]=n[1],e.bounds[3]=n[1],e.bounds[4]=n[2],e.bounds[5]=n[2];for(let i=1;ie.bounds[1]?n[0]:e.bounds[1],e.bounds[2]=n[1]e.bounds[3]?n[1]:e.bounds[3],e.bounds[4]=n[2]e.bounds[5]?n[2]:e.bounds[5]}else y0(e.bounds);return e.bounds},t.getLength2=()=>{t.getBounds();let r=0,n=0;for(let i=0;i<3;i++)n=e.bounds[2*i+1]-e.bounds[2*i],r+=n*n;return r},t.getParametricDistance=r=>{let n,i=0;for(let o=0;o<3;o++)r[o]<0?n=-r[o]:r[o]>1?n=r[o]-1:n=0,n>i&&(i=n);return i},t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.deepCopy=r=>{r.initialize(e.points,e.pointsIds)},t.getCellDimension=()=>{},t.intersectWithLine=(r,n,i,o,a,s,c)=>{},t.evaluatePosition=(r,n,i,o,a,s)=>{W.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const lY={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function mO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,lY,r),W.obj(t,e),e.points||(e.points=Ld.newInstance()),W.get(t,e,["points","pointsIds"]),cY(t,e)}const uY=W.newInstance(mO,"vtkCell");var V1={newInstance:uY,extend:mO};function fY(t,e){let r=e;for(e>=t.array.length&&(r+=t.array.length);r>t.array.length;)t.array.push({ncells:0,cells:null});t.array.length=r}function dY(t,e){e.classHierarchy.push("vtkCellLinks"),t.buildLinks=r=>{const n=r.getPoints().getNumberOfPoints(),i=r.getNumberOfCells(),o=new Uint32Array(n);if(r.isA("vtkPolyData")){for(let a=0;a{t.incrementLinkCount(c)})}t.allocateLinks(n),e.maxId=n-1;for(let a=0;a{t.insertCellReference(c,o[c]++,a)})}}else{for(let a=0;a{t.incrementLinkCount(c)});t.allocateLinks(n),e.maxId=n-1;for(let a=0;a{t.insertCellReference(c,o[c]++,a)})}},t.allocate=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.array=Array(r).fill().map(()=>({ncells:0,cells:null})),e.extend=n,e.maxId=-1},t.initialize=()=>{e.array=null},t.getLink=r=>e.array[r],t.getNcells=r=>e.array[r].ncells,t.getCells=r=>e.array[r].cells,t.insertNextPoint=r=>{e.array.push({ncells:r,cells:Array(r)}),++e.maxId},t.insertNextCellReference=(r,n)=>{e.array[r].cells[e.array[r].ncells++]=n},t.deletePoint=r=>{e.array[r].ncells=0,e.array[r].cells=null},t.removeCellReference=(r,n)=>{e.array[n].cells=e.array[n].cells.filter(i=>i!==r),e.array[n].ncells=e.array[n].cells.length},t.addCellReference=(r,n)=>{e.array[n].cells[e.array[n].ncells++]=r},t.resizeCellList=(r,n)=>{e.array[r].cells.length=n},t.squeeze=()=>{fY(e,e.maxId+1)},t.reset=()=>{e.maxId=-1},t.deepCopy=r=>{e.array=[...r.array],e.extend=r.extend,e.maxId=r.maxId},t.incrementLinkCount=r=>{++e.array[r].ncells},t.allocateLinks=r=>{for(let n=0;n{e.array[r].cells[n]=i}}const hY={array:null,maxId:0,extend:0};function vO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hY,r),W.obj(t,e),dY(t,e)}const gY=W.newInstance(vO,"vtkCellLinks");var pY={newInstance:gY,extend:vO};const gn={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_PIXEL:8,VTK_QUAD:9,VTK_TETRA:10,VTK_VOXEL:11,VTK_HEXAHEDRON:12,VTK_WEDGE:13,VTK_PYRAMID:14,VTK_PENTAGONAL_PRISM:15,VTK_HEXAGONAL_PRISM:16,VTK_QUADRATIC_EDGE:21,VTK_QUADRATIC_TRIANGLE:22,VTK_QUADRATIC_QUAD:23,VTK_QUADRATIC_POLYGON:36,VTK_QUADRATIC_TETRA:24,VTK_QUADRATIC_HEXAHEDRON:25,VTK_QUADRATIC_WEDGE:26,VTK_QUADRATIC_PYRAMID:27,VTK_BIQUADRATIC_QUAD:28,VTK_TRIQUADRATIC_HEXAHEDRON:29,VTK_QUADRATIC_LINEAR_QUAD:30,VTK_QUADRATIC_LINEAR_WEDGE:31,VTK_BIQUADRATIC_QUADRATIC_WEDGE:32,VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON:33,VTK_BIQUADRATIC_TRIANGLE:34,VTK_CUBIC_LINE:35,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42,VTK_PARAMETRIC_CURVE:51,VTK_PARAMETRIC_SURFACE:52,VTK_PARAMETRIC_TRI_SURFACE:53,VTK_PARAMETRIC_QUAD_SURFACE:54,VTK_PARAMETRIC_TETRA_REGION:55,VTK_PARAMETRIC_HEX_REGION:56,VTK_HIGHER_ORDER_EDGE:60,VTK_HIGHER_ORDER_TRIANGLE:61,VTK_HIGHER_ORDER_QUAD:62,VTK_HIGHER_ORDER_POLYGON:63,VTK_HIGHER_ORDER_TETRAHEDRON:64,VTK_HIGHER_ORDER_WEDGE:65,VTK_HIGHER_ORDER_PYRAMID:66,VTK_HIGHER_ORDER_HEXAHEDRON:67,VTK_LAGRANGE_CURVE:68,VTK_LAGRANGE_TRIANGLE:69,VTK_LAGRANGE_QUADRILATERAL:70,VTK_LAGRANGE_TETRAHEDRON:71,VTK_LAGRANGE_HEXAHEDRON:72,VTK_LAGRANGE_WEDGE:73,VTK_LAGRANGE_PYRAMID:74,VTK_NUMBER_OF_CELL_TYPES:75},J5=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function mY(t){return t0&&arguments[0]!==void 0?arguments[0]:512,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.size=r>0?r:1,e.extend=n>0?n:1,e.maxId=-1,e.typeArray=new Uint8Array(r),e.locationArray=new Uint32Array(r)},t.insertCell=(r,n,i)=>{e.typeArray[r]=n,e.locationArray[r]=i,r>e.maxId&&(e.maxId=r)},t.insertNextCell=(r,n)=>(t.insertCell(++e.maxId,r,n),e.maxId),t.setCellTypes=(r,n,i)=>{e.size=r,e.typeArray=n,e.locationArray=i,e.maxId=r-1},t.getCellLocation=r=>e.locationArray[r],t.deleteCell=r=>{e.typeArray[r]=gn.VTK_EMPTY_CELL},t.getNumberOfTypes=()=>e.maxId+1,t.isType=r=>{const n=t.getNumberOfTypes();for(let i=0;it.insertNextCell(r,-1),t.getCellType=r=>e.typeArray[r],t.reset=()=>{e.maxId=-1},t.deepCopy=r=>{t.allocate(r.getSize(),r.getExtend()),e.typeArray.set(r.getTypeArray()),e.locationArray.set(r.getLocationArray()),e.maxId=r.getMaxId()}}const SY={size:0,maxId:-1,extend:1e3};function yO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,SY,r),W.obj(t,e),W.get(t,e,["size","maxId","extend"]),W.getArray(t,e,["typeArray","locationArray"]),CY(t,e)}const TY=W.newInstance(yO,"vtkCellTypes");var _Y={newInstance:TY,extend:yO,...wY};const EY={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var xO={IntersectionState:EY};const{IntersectionState:Lp}=xO;function au(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;const i={t:Number.MIN_VALUE,distance:0},o=[];let a;o[0]=r[0]-e[0],o[1]=r[1]-e[1],o[2]=r[2]-e[2];const s=o[0]*(t[0]-e[0])+o[1]*(t[1]-e[1])+o[2]*(t[2]-e[2]),c=wt(o,o);let l=1e-5*s;return c!==0&&(i.t=s/c),l<0&&(l=-l),-l1?a=r:(a=o,o[0]=e[0]+i.t*o[0],o[1]=e[1]+i.t*o[1],o[2]=e[2]+i.t*o[2]),n&&(n[0]=a[0],n[1]=a[1],n[2]=a[2]),i.distance=jo(a,t),i}function wO(t,e,r,n,i,o){const a=[],s=[],c=[];i[0]=0,o[0]=0,Fa(e,t,a),Fa(n,r,s),Fa(r,t,c);const l=[wt(a,a),-wt(a,s),-wt(a,s),wt(s,s)],f=[];if(f[0]=wt(a,c),f[1]=-wt(s,c),O7(l,f,2)===0){let u=Number.MAX_VALUE;const d=[t,e,r,n],h=[r,r,t,t],g=[n,n,e,e];o[0],o[0],i[0],i[0],i[0],i[0],o[0],o[0];let p;for(let v=0;v<4;v++)p=au(d[v],h[v],g[v]),p.distance=0&&i[0]<=1&&o[0]>=0&&o[0]<=1?Lp.YES_INTERSECTION:Lp.NO_INTERSECTION}const DY={distanceToLine:au,intersection:wO};function bY(t,e){e.classHierarchy.push("vtkLine");function r(n){return n>=0&&n<=1}t.getCellDimension=()=>1,t.intersectWithLine=(n,i,o,a,s)=>{const c={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};s[1]=0,s[2]=0;const l=[],f=[],u=[];e.points.getPoint(0,f),e.points.getPoint(1,u);const d=[],h=[],g=wO(n,i,f,u,d,h);if(c.t=d[0],c.betweenPoints=r(c.t),s[0]=h[0],g===Lp.YES_INTERSECTION){for(let p=0;p<3;p++)a[p]=f[p]+s[0]*(u[p]-f[p]),l[p]=n[p]+c.t*(i[p]-n[p]);if(jo(a,l)<=o*o)return c.intersect=1,c}else{let p;if(c.t<0)return p=au(n,f,u,a),p.distance<=o*o&&(c.t=0,c.intersect=1,c.betweenPoints=!0),c;if(c.t>1)return p=au(i,f,u,a),p.distance<=o*o&&(c.t=1,c.intersect=1,c.betweenPoints=!0),c;if(s[0]<0)return s[0]=0,p=au(f,n,i,a),c.t=p.t,p.distance<=o*o&&(c.intersect=1),c;if(s[0]>1)return s[0]=1,p=au(u,n,i,a),c.t=p.t,p.distance<=o*o&&(c.intersect=1),c}return c},t.evaluateLocation=(n,i,o)=>{const a=[],s=[];e.points.getPoint(0,a),e.points.getPoint(1,s);for(let c=0;c<3;c++)i[c]=a[c]+n[0]*(s[c]-a[c]);o[0]=1-n[0],o[1]=n[0]},t.evaluateOrientation=(n,i,o)=>e.orientations?(Ip(i,e.orientations[0],e.orientations[1],n[0]),o[0]=1-n[0],o[1]=n[0],!0):!1}const IY={orientations:null};function CO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IY,r),V1.extend(t,e,r),W.setGet(t,e,["orientations"]),bY(t,e)}const OY=W.newInstance(CO,"vtkLine");var qi={newInstance:OY,extend:CO,...DY,...xO};function MY(t,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=Eo(e.points):e.points=Ld.newInstance(),t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.getBounds=()=>e.points.getBounds(),t.computeBounds=()=>{t.getBounds()};const r=t.shallowCopy;t.shallowCopy=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(n,i),e.points=Ld.newInstance(),e.points.shallowCopy(n.getPoints())}}const RY={};function SO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,RY,r),w0.extend(t,e,r),W.setGet(t,e,["points"]),MY(t,e)}const LY=W.newInstance(SO,"vtkPointSet");var NY={newInstance:LY,extend:SO};function Hw(t,e,r,n){const i=r[0]-e[0],o=r[1]-e[1],a=r[2]-e[2],s=t[0]-e[0],c=t[1]-e[1],l=t[2]-e[2];n[0]=o*l-a*c,n[1]=a*s-i*l,n[2]=i*c-o*s}function F1(t,e,r,n){Hw(t,e,r,n);const i=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);i!==0&&(n[0]/=i,n[1]/=i,n[2]/=i)}function PY(t,e,r,n,i,o){let a=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1e-6,s=!1;const c=[],l=[],f=[],u=[],d=[];F1(t,e,r,u),F1(n,i,o,d);const h=-wt(u,t),g=-wt(d,n),p=[wt(d,t)+g,wt(d,e)+g,wt(d,r)+g];if(p[0]*p[1]>a&&p[0]*p[2]>a)return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};const v=[wt(u,n)+h,wt(u,i)+h,wt(u,o)+h];if(v[0]*v[1]>a&&v[0]*v[2]>a)return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(Math.abs(u[0]-d[0])<1e-9&&Math.abs(u[1]-d[1])<1e-9&&Math.abs(u[2]-d[2])<1e-9&&Math.abs(h-g)<1e-9)return s=!0,{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};const x=[t,e,r],m=[n,i,o],y=wt(u,d),w=(h-g*y)/(y*y-1),C=(g-h*y)/(y*y-1),S=[w*u[0]+C*d[0],w*u[1]+C*d[1],w*u[2]+C*d[2]],T=ia(u,d,[]);cl(T);let _=0,E=0;const D=[],b=[];let I=50,R=50;for(let A=0;A<3;A++){const G=A,P=(A+1)%3,N=Xr.intersectWithLine(x[G],x[P],n,d);N.intersection&&N.t>0-a&&N.t<1+a&&(N.t<1+a&&N.t>1-a&&(I=_),D[_++]=wt(N.x,T)-wt(S,T));const V=Xr.intersectWithLine(m[G],m[P],t,u);V.intersection&&V.t>0-a&&V.t<1+a&&(V.t<1+a&&V.t>1-a&&(R=E),b[E++]=wt(V.x,T)-wt(S,T))}if(_>2){_--;const A=D[2];D[2]=D[I],D[I]=A}if(E>2){E--;const A=b[2];b[2]=b[R],b[R]=A}if(_!==2||E!==2)return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(Number.isNaN(D[0])||Number.isNaN(D[1])||Number.isNaN(b[0])||Number.isNaN(b[1]))return{intersect:!1,coplanar:s,pt1:c,pt2:l,surfaceId:f};if(D[0]>D[1]){const A=D[1];D[1]=D[0],D[0]=A}if(b[0]>b[1]){const A=b[1];b[1]=b[0],b[0]=A}let M,L;return D[1]2,t.intersectWithLine=(r,n,i,o,a)=>{const s={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};a[2]=0;const c=[],l=i*i,f=[],u=[],d=[];e.points.getPoint(0,f),e.points.getPoint(1,u),e.points.getPoint(2,d);const h=[],g=[];if(F1(f,u,d,h),h[0]!==0||h[1]!==0||h[2]!==0){const y=Xr.intersectWithLine(r,n,f,h);if(s.betweenPoints=y.betweenPoints,s.t=y.t,o[0]=y.x[0],o[1]=y.x[1],o[2]=y.x[2],!y.intersection)return a[0]=0,a[1]=0,s.intersect=0,s;const w=t.evaluatePosition(o,c,a,g);if(w.evaluation>=0)return w.dist2<=l?(s.intersect=1,s):(s.intersect=w.evaluation,s)}const p=jo(f,u),v=jo(u,d),x=jo(d,f);e.line||(e.line=qi.newInstance()),p>v&&p>x?(e.line.getPoints().setPoint(0,f),e.line.getPoints().setPoint(1,u)):v>x&&v>p?(e.line.getPoints().setPoint(0,u),e.line.getPoints().setPoint(1,d)):(e.line.getPoints().setPoint(0,d),e.line.getPoints().setPoint(1,f));const m=e.line.intersectWithLine(r,n,i,o,a);if(s.betweenPoints=m.betweenPoints,s.t=m.t,m.intersect){const y=[],w=[],C=[];for(let S=0;S<3;S++)y[S]=f[S]-d[S],w[S]=u[S]-d[S],C[S]=o[S]-d[S];return a[0]=wt(C,y)/x,a[1]=wt(C,w)/v,s.intersect=1,s}return a[0]=0,a[1]=0,s.intersect=0,s},t.evaluatePosition=(r,n,i,o)=>{const a={subId:0,dist2:0,evaluation:-1};let s,c;const l=[],f=[],u=[],d=[];let h;const g=[],p=[],v=[];let x=0,m=0;const y=[];let w,C,S,T=[];const _=[],E=[],D=[];a.subId=0,i[2]=0,e.points.getPoint(1,l),e.points.getPoint(2,f),e.points.getPoint(0,u),Hw(l,f,u,d),Xr.generalizedProjectPoint(r,l,d,D);let b=0;for(s=0;s<3;s++)d[s]<0?h=-d[s]:h=d[s],h>b&&(b=h,m=s);for(c=0,s=0;s<3;s++)s!==m&&(y[c++]=s);for(s=0;s<2;s++)g[s]=D[y[s]]-u[y[s]],p[s]=l[y[s]]-u[y[s]],v[s]=f[y[s]]-u[y[s]];if(x=Fn(p,v),x===0)return i[0]=0,i[1]=0,a.evaluation=-1,a;if(i[0]=Fn(g,v)/x,i[1]=Fn(p,g)/x,o[0]=1-(i[0]+i[1]),o[1]=i[0],o[2]=i[1],o[0]>=0&&o[0]<=1&&o[1]>=0&&o[1]<=1&&o[2]>=0&&o[2]<=1)n&&(a.dist2=jo(D,r),n[0]=D[0],n[1]=D[1],n[2]=D[2]),a.evaluation=1;else{let I;if(n){if(o[1]<0&&o[2]<0)for(w=jo(r,u),C=qi.distanceToLine(r,l,u,I,_),S=qi.distanceToLine(r,u,f,I,E),w{const o=[],a=[],s=[];e.points.getPoint(0,o),e.points.getPoint(1,a),e.points.getPoint(2,s);const c=1-r[0]-r[1];for(let l=0;l<3;l++)n[l]=o[l]*c+a[l]*r[0]+s[l]*r[1];i[0]=c,i[1]=r[0],i[2]=r[1]},t.getParametricDistance=r=>{let n,i=0;const o=[];o[0]=r[0],o[1]=r[1],o[2]=1-r[0]-r[1];for(let a=0;a<3;a++)o[a]<0?n=-o[a]:o[a]>1?n=o[a]-1:n=0,n>i&&(i=n);return i}}const VY={};function TO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,VY,r),V1.extend(t,e,r),kY(t,e)}const FY=W.newInstance(TO,"vtkTriangle");var UY={newInstance:FY,extend:TO,...AY};const Mv=["verts","lines","polys","strips"],{vtkWarningMacro:c8}=W,BY={[gn.VTK_LINE]:qi,[gn.VTK_POLY_LINE]:qi,[gn.VTK_TRIANGLE]:UY};function GY(t,e){e.classHierarchy.push("vtkPolyData");function r(i){return i.replace(/(?:^\w|[A-Z]|\b\w)/g,o=>o.toUpperCase()).replace(/\s+/g,"")}Mv.forEach(i=>{t[`getNumberOf${r(i)}`]=()=>e[i].getNumberOfCells(),e[i]?e[i]=Eo(e[i]):e[i]=ul.newInstance()}),t.getNumberOfCells=()=>Mv.reduce((i,o)=>i+e[o].getNumberOfCells(),0);const n=t.shallowCopy;t.shallowCopy=function(i){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(i,o),Mv.forEach(a=>{e[a]=ul.newInstance(),e[a].shallowCopy(i.getReferenceByName(a))})},t.buildCells=()=>{const i=t.getNumberOfVerts(),o=t.getNumberOfLines(),a=t.getNumberOfPolys(),s=t.getNumberOfStrips(),c=i+o+a+s,l=new Uint8Array(c);let f=l;const u=new Uint32Array(c);let d=u;if(i){let h=0;e.verts.getCellSizes().forEach((g,p)=>{d[p]=h,f[p]=g>1?gn.VTK_POLY_VERTEX:gn.VTK_VERTEX,h+=g+1}),d=d.subarray(i),f=f.subarray(i)}if(o){let h=0;e.lines.getCellSizes().forEach((g,p)=>{d[p]=h,f[p]=g>2?gn.VTK_POLY_LINE:gn.VTK_LINE,g===1&&c8("Building VTK_LINE ",p," with only one point, but VTK_LINE needs at least two points. Check the input."),h+=g+1}),d=d.subarray(o),f=f.subarray(o)}if(a){let h=0;e.polys.getCellSizes().forEach((g,p)=>{switch(d[p]=h,g){case 3:f[p]=gn.VTK_TRIANGLE;break;case 4:f[p]=gn.VTK_QUAD;break;default:f[p]=gn.VTK_POLYGON;break}g<3&&c8("Building VTK_TRIANGLE ",p," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),h+=g+1}),d+=d.subarray(a),f+=f.subarray(a)}if(s){let h=0;f.fill(gn.VTK_TRIANGLE_STRIP,0,s),e.strips.getCellSizes().forEach((g,p)=>{d[p]=h,h+=g+1})}e.cells=_Y.newInstance(),e.cells.setCellTypes(c,l,u)},t.buildLinks=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;e.cells===void 0&&t.buildCells(),e.links=pY.newInstance(),i>0?e.links.allocate(i):e.links.allocate(t.getPoints().getNumberOfPoints()),e.links.buildLinks(t)},t.getCellType=i=>e.cells.getCellType(i),t.getCellPoints=i=>{const o=t.getCellType(i);let a=null;switch(o){case gn.VTK_VERTEX:case gn.VTK_POLY_VERTEX:a=e.verts;break;case gn.VTK_LINE:case gn.VTK_POLY_LINE:a=e.lines;break;case gn.VTK_TRIANGLE:case gn.VTK_QUAD:case gn.VTK_POLYGON:a=e.polys;break;case gn.VTK_TRIANGLE_STRIP:a=e.strips;break;default:return a=null,{type:0,cellPointIds:null}}const s=e.cells.getCellLocation(i),c=a.getCell(s);return{cellType:o,cellPointIds:c}},t.getPointCells=i=>e.links.getCells(i),t.getCellEdgeNeighbors=(i,o,a)=>{const s=e.links.getLink(o),c=e.links.getLink(a);return s.cells.filter(l=>l!==i&&c.cells.indexOf(l)!==-1)},t.getCell=function(i){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const a=t.getCellPoints(i),s=o||BY[a.cellType].newInstance();return s.initialize(t.getPoints(),a.cellPointIds),s}}const WY={};function _O(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,WY,r),NY.extend(t,e,r),W.get(t,e,["cells","links"]),W.setGet(t,e,["verts","lines","polys","strips"]),GY(t,e)}const zY=W.newInstance(_O,"vtkPolyData");var hr={newInstance:zY,extend:_O};const $Y=1e-6;function jY(t,e){e.classHierarchy.push("vtkProp3D"),t.addPosition=n=>{e.position=e.position.map((i,o)=>i+n[o]),t.modified()},t.getOrientationWXYZ=()=>{const n=ll();G5(n,e.rotation);const i=new Float64Array(3),o=rj(i,n);return[_1(o),i[0],i[1],i[2]]},t.getOrientationQuaternion=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return G5(n,e.rotation)},t.rotateX=n=>{n!==0&&(mw(e.rotation,e.rotation,Vn(n)),t.modified())},t.rotateY=n=>{n!==0&&(vw(e.rotation,e.rotation,Vn(n)),t.modified())},t.rotateZ=n=>{n!==0&&(yw(e.rotation,e.rotation,Vn(n)),t.modified())},t.rotateWXYZ=(n,i,o,a)=>{if(n===0||i===0&&o===0&&a===0)return;const s=Vn(n),c=ll();_w(c,[i,o,a],s);const l=new Float64Array(16);I1(l,c),bt(e.rotation,e.rotation,l),t.modified()},t.rotateQuaternion=n=>{if(Math.abs(n[3])>=1-$Y)return;const i=I1(new Float64Array(16),n);bt(e.rotation,e.rotation,i),t.modified()},t.setOrientation=(n,i,o)=>n===e.orientation[0]&&i===e.orientation[1]&&o===e.orientation[2]?!1:(e.orientation=[n,i,o],qe(e.rotation),t.rotateZ(o),t.rotateX(n),t.rotateY(i),t.modified(),!0),t.setUserMatrix=n=>mh(e.userMatrix,n)?!1:(_n(e.userMatrix,n),t.modified(),!0),t.getMatrix=()=>(t.computeMatrix(),e.matrix),t.computeMatrix=()=>{if(t.getMTime()>e.matrixMTime.getMTime()){qe(e.matrix),e.userMatrix&&bt(e.matrix,e.matrix,e.userMatrix),nn(e.matrix,e.matrix,e.origin),nn(e.matrix,e.matrix,e.position),bt(e.matrix,e.matrix,e.rotation),Ha(e.matrix,e.matrix,e.scale),nn(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),St(e.matrix,e.matrix),e.isIdentity=!0;for(let n=0;n<4;++n)for(let i=0;i<4;++i)(n===i?1:0)!==e.matrix[n+i*4]&&(e.isIdentity=!1);e.matrixMTime.modified()}},t.getCenter=()=>qt.getCenter(e.bounds),t.getLength=()=>qt.getLength(e.bounds),t.getXRange=()=>qt.getXRange(e.bounds),t.getYRange=()=>qt.getYRange(e.bounds),t.getZRange=()=>qt.getZRange(e.bounds),t.getUserMatrix=()=>e.userMatrix;function r(){t.computeMatrix()}t.onModified(r)}const HY={origin:[0,0,0],position:[0,0,0],orientation:[0,0,0],rotation:null,scale:[1,1,1],bounds:[1,-1,1,-1,1,-1],userMatrix:null,userMatrixMTime:null,cachedProp3D:null,isIdentity:!0,matrixMTime:null};function EO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,HY,r),xh.extend(t,e,r),e.matrixMTime={},W.obj(e.matrixMTime),W.get(t,e,["bounds","isIdentity"]),W.getArray(t,e,["orientation"]),W.setGetArray(t,e,["origin","position","scale"],3),e.matrix=qe(new Float64Array(16)),e.rotation=qe(new Float64Array(16)),e.userMatrix=qe(new Float64Array(16)),e.transform=null,jY(t,e)}const KY=W.newInstance(EO,"vtkProp3D");var Kw={newInstance:KY,extend:EO};const{vtkDebugMacro:qY}=W;function XY(t,e){e.classHierarchy.push("vtkActor");const r={...t};t.getActors=()=>[t],t.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||t.getProperty();let n=e.property.getOpacity()>=1;return n=n&&(!e.texture||!e.texture.isTranslucent()),n=n&&(!e.mapper||e.mapper.getIsOpaque()),n},t.hasTranslucentPolygonalGeometry=()=>e.mapper===null?!1:(e.property===null&&t.setProperty(t.makeProperty()),!t.getIsOpaque()),t.makeProperty=x0.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const n=e.mapper.getBounds();if(!n||n.length!==6)return n;if(n[0]>n[1])return e.mapperBounds=n.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),n;if(!e.mapperBounds||n[0]!==e.mapperBounds[0]||n[1]!==e.mapperBounds[1]||n[2]!==e.mapperBounds[2]||n[3]!==e.mapperBounds[3]||n[4]!==e.mapperBounds[4]||n[5]!==e.mapperBounds[5]||t.getMTime()>e.boundsMTime.getMTime()){qY("Recomputing bounds..."),e.mapperBounds=n.concat();const i=[];qt.getCorners(n,i),t.computeMatrix();const o=new Float64Array(16);St(o,e.matrix),i.forEach(a=>et(a,a,o)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((a,s)=>s%2===0?i.reduce((c,l)=>c>l[s/2]?l[s/2]:c,a):i.reduce((c,l)=>c{let n=r.getMTime();if(e.property!==null){const i=e.property.getMTime();n=i>n?i:n}if(e.backfaceProperty!==null){const i=e.backfaceProperty.getMTime();n=i>n?i:n}return n},t.getRedrawMTime=()=>{let n=e.mtime;if(e.mapper!==null){let i=e.mapper.getMTime();n=i>n?i:n,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),i=e.mapper.getInput().getMTime(),n=i>n?i:n)}return n},t.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1,t.processSelectorPixelBuffers=(n,i)=>{e.mapper&&e.mapper.processSelectorPixelBuffers&&e.mapper.processSelectorPixelBuffers(n,i)}}const YY={mapper:null,property:null,backfaceProperty:null,forceOpaque:!1,forceTranslucent:!1,bounds:[1,-1,1,-1,1,-1]};function DO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,YY,r),Kw.extend(t,e,r),e.boundsMTime={},W.obj(e.boundsMTime),W.set(t,e,["property"]),W.setGet(t,e,["backfaceProperty","forceOpaque","forceTranslucent","mapper"]),XY(t,e)}const JY=W.newInstance(DO,"vtkActor");var ca={newInstance:JY,extend:DO};function ZY(t,e){const r=t.invokeResize;delete t.invokeResize,e.renderWindow=cW.newInstance(),e.rendererMap={},e.openGLRenderWindow=DX.newInstance(),e.renderWindow.addView(e.openGLRenderWindow),e.interactor=ZX.newInstance(),e.interactor.setView(e.openGLRenderWindow),e.interactor.initialize(),t.addRenderer=({viewport:n,id:i,background:o})=>{const a=lO.newInstance({viewport:n,background:o||e.background});e.renderWindow.addRenderer(a),e.rendererMap[i]=a},t.destroy=()=>{e.renderWindow.getInteractor().delete()},t.removeRenderer=n=>{const i=t.getRenderer(n);e.renderWindow.removeRenderer(i),i.delete(),delete e.rendererMap[n]},t.getRenderer=n=>e.rendererMap[n],t.getRenderers=()=>{const{rendererMap:n}=e;return Object.keys(n).map(o=>({id:o,renderer:n[o]}))},t.resize=()=>{if(e.container){const{width:n,height:i}=e.container;e.openGLRenderWindow.setSize(Math.floor(n),Math.floor(i)),r(),e.renderWindow.render()}},t.setContainer=n=>{e.container=n,e.openGLRenderWindow.setContainer(e.container)},t.delete=W.chain(t.setContainer,t.destroy,e.openGLRenderWindow.delete,t.delete),t.resize()}const QY={background:[0,0,0],container:null};function bO(t,e,r={}){Object.assign(e,QY,r),W.obj(t,e),W.get(t,e,["renderWindow","openGLRenderWindow","interactor","container"]),W.event(t,e,"resize"),ZY(t,e)}const eJ=W.newInstance(bO),tJ={newInstance:eJ,extend:bO},{vtkErrorMacro:wg}=W;function nJ(t,e){e.classHierarchy.push("vtkPiecewiseFunction"),t.getSize=()=>e.nodes.length,t.getType=()=>{let r,n=0,i=0;e.nodes.length>0&&(n=e.nodes[0].y);for(let o=1;on)switch(i){case 0:case 1:i=1;break;case 2:default:i=3;break}else switch(i){case 0:case 2:i=2;break;case 1:default:i=3;break}if(n=r,i===3)break}switch(i){case 0:return"Constant";case 1:return"NonDecreasing";case 2:return"NonIncreasing";case 3:default:return"Varied"}},t.getDataPointer=()=>{const r=e.nodes.length;if(e.function=null,r>0){e.function=[];for(let n=0;n{if(e.nodes.length===0)return 0;let r=1,n=0,i=0;for(;i0?n=e.nodes[i-1].x:e.clamping?n=-Number.MAX_VALUE:n=e.nodes[0].x,n},t.getNodeValue=(r,n)=>{const i=e.nodes.length;return r<0||r>=i?(wg("Index out of range!"),-1):(n[0]=e.nodes[r].x,n[1]=e.nodes[r].y,n[2]=e.nodes[r].midpoint,n[3]=e.nodes[r].sharpness,1)},t.setNodeValue=(r,n)=>{const i=e.nodes.length;if(r<0||r>=i)return wg("Index out of range!"),-1;const o=e.nodes[r].x;return e.nodes[r].x=n[0],e.nodes[r].y=n[1],e.nodes[r].midpoint=n[2],e.nodes[r].sharpness=n[3],o!==n[0]?t.sortAndUpdateRange():t.modified(),1},t.addPoint=(r,n)=>t.addPointLong(r,n,.5,0),t.addPointLong=(r,n,i,o)=>{if(i<0||i>1)return wg("Midpoint outside range [0.0, 1.0]"),-1;if(o<0||o>1)return wg("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||t.removePoint(r);const a={x:r,y:n,midpoint:i,sharpness:o};e.nodes.push(a),t.sortAndUpdateRange();let s;for(s=0;s{e.nodes!==r&&(e.nodes=r,t.sortAndUpdateRange())},t.sortAndUpdateRange=()=>{e.nodes.sort((n,i)=>n.x-i.x),t.updateRange()||t.modified()},t.updateRange=()=>{const r=e.range.slice(),n=e.nodes.length;return n?(e.range[0]=e.nodes[0].x,e.range[1]=e.nodes[n-1].x):(e.range[0]=0,e.range[1]=0),r[0]===e.range[0]&&r[1]===e.range[1]?!1:(t.modified(),!0)},t.removePoint=r=>{let n;for(n=0;n=e.nodes.length)return-1;const i=n;let o=!1;return e.nodes.splice(n,1),(n===0||n===e.nodes.length)&&(o=t.updateRange()),o||t.modified(),i},t.removeAllPoints=()=>{e.nodes=[],t.sortAndUpdateRange()},t.addSegment=(r,n,i,o)=>{t.sortAndUpdateRange();for(let a=0;a=r&&e.nodes[a].x<=i?e.nodes.splice(a,1):a++;t.addPoint(r,n,.5,0),t.addPoint(i,o,.5,0)},t.getValue=r=>{const n=[];return t.getTable(r,r,1,n),n[0]},t.adjustRange=r=>{if(r.length<2)return 0;const n=t.getRange();n[0]r[1]?t.addPoint(r[1],t.getValue(r[1])):t.addPoint(r[1],t.getValue(n[1])),t.sortAndUpdateRange();for(let i=0;i=r[0]&&e.nodes[i].x<=r[1]?e.nodes.splice(i,1):++i;return t.sortAndUpdateRange(),1},t.estimateMinNumberOfSamples=(r,n)=>{const i=t.findMinimumXDistance();return Math.ceil((n-r)/i)},t.findMinimumXDistance=()=>{const r=e.nodes.length;if(r<2)return-1;let n=e.nodes[1].x-e.nodes[0].x;for(let i=0;i4&&arguments[4]!==void 0?arguments[4]:1,s,c=0;const l=e.nodes.length;let f=0;l!==0&&(f=e.nodes[l-1].y);let u=0,d=0,h=0,g=0,p=0,v=0,x=0;for(s=0;s1?u=r+s/(i-1)*(n-r):u=.5*(r+n);ce.nodes[c].x;)c++,c.99999&&(v=.99999));if(c>=l)o[m]=e.clamping?f:0;else if(c===0)o[m]=e.clamping?e.nodes[0].y:0;else{let y=(u-d)/(h-d);if(y.99)if(y<.5){o[m]=g;continue}else{o[m]=p;continue}if(x<.01){o[m]=(1-y)*g+y*p;continue}y<.5?y=.5*(y*2)**(1+10*x):y>.5&&(y=1-.5*((1-y)*2)**(1+10*x));const w=y*y,C=w*y,S=2*C-3*w+1,T=-2*C+3*w,_=C-2*w+y,E=C-w,D=p-g,b=(1-x)*D;o[m]=S*g+T*p+_*b+E*b;const I=gp?g:p;o[m]=o[m]R?R:o[m]}}}}const rJ={range:[0,0],clamping:!0,allowDuplicateScalars:!1};function IO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,rJ,r),W.obj(t,e),e.nodes=[],W.setGet(t,e,["allowDuplicateScalars","clamping"]),W.setArray(t,e,["range"],2),W.getArray(t,e,["range"]),nJ(t,e)}const iJ=W.newInstance(IO,"vtkPiecewiseFunction");var qu={newInstance:iJ,extend:IO};const{BlendMode:ms,FilterMode:bf}=CD;function oJ(t,e,r,n,i){let o=null;return i?(o=i,o.removeAllPoints()):o=qu.newInstance(),o.addPointLong(-1024,0,1,1),o.addPoint(t,e),o.addPoint(r,n),o}const aJ={createRadonTransferFunction:oJ};function sJ(t,e){e.classHierarchy.push("vtkVolumeMapper");const r={...t};t.getBounds=()=>{const n=t.getInputData();return n?(e.static||t.update(),e.bounds=n.getBounds()):e.bounds=qs(),e.bounds},t.update=()=>{t.getInputData()},t.setBlendModeToComposite=()=>{t.setBlendMode(ms.COMPOSITE_BLEND)},t.setBlendModeToMaximumIntensity=()=>{t.setBlendMode(ms.MAXIMUM_INTENSITY_BLEND)},t.setBlendModeToMinimumIntensity=()=>{t.setBlendMode(ms.MINIMUM_INTENSITY_BLEND)},t.setBlendModeToAverageIntensity=()=>{t.setBlendMode(ms.AVERAGE_INTENSITY_BLEND)},t.setBlendModeToAdditiveIntensity=()=>{t.setBlendMode(ms.ADDITIVE_INTENSITY_BLEND)},t.setBlendModeToRadonTransform=()=>{t.setBlendMode(ms.RADON_TRANSFORM_BLEND)},t.getBlendModeAsString=()=>W.enumToString(ms,e.blendMode),t.setAverageIPScalarRange=(n,i)=>{console.warn("setAverageIPScalarRange is deprecated use setIpScalarRange"),t.setIpScalarRange(n,i)},t.getFilterModeAsString=()=>W.enumToString(bf,e.filterMode),t.setFilterModeToOff=()=>{t.setFilterMode(bf.OFF)},t.setFilterModeToNormalized=()=>{t.setFilterMode(bf.NORMALIZED)},t.setFilterModeToRaw=()=>{t.setFilterMode(bf.RAW)},t.setGlobalIlluminationReach=n=>r.setGlobalIlluminationReach(Do(n,0,1)),t.setVolumetricScatteringBlending=n=>r.setVolumetricScatteringBlending(Do(n,0,1)),t.setVolumeShadowSamplingDistFactor=n=>r.setVolumeShadowSamplingDistFactor(n>=1?n:1),t.setAnisotropy=n=>r.setAnisotropy(Do(n,-.99,.99)),t.setLAOKernelSize=n=>r.setLAOKernelSize(sw(Do(n,1,32))),t.setLAOKernelRadius=n=>r.setLAOKernelRadius(n>=1?n:1)}const cJ={bounds:[1,-1,1,-1,1,-1],sampleDistance:1,imageSampleDistance:1,maximumSamplesPerRay:1e3,autoAdjustSampleDistances:!0,initialInteractionScale:1,interactionSampleDistanceFactor:1,blendMode:ms.COMPOSITE_BLEND,ipScalarRange:[-1e6,1e6],filterMode:bf.OFF,preferSizeOverAccuracy:!1,computeNormalFromOpacity:!1,volumetricScatteringBlending:0,globalIlluminationReach:0,volumeShadowSamplingDistFactor:5,anisotropy:0,localAmbientOcclusion:!1,LAOKernelSize:15,LAOKernelRadius:7};function OO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cJ,r),Fw.extend(t,e,r),W.setGet(t,e,["sampleDistance","imageSampleDistance","maximumSamplesPerRay","autoAdjustSampleDistances","initialInteractionScale","interactionSampleDistanceFactor","blendMode","filterMode","preferSizeOverAccuracy","computeNormalFromOpacity","volumetricScatteringBlending","globalIlluminationReach","volumeShadowSamplingDistFactor","anisotropy","localAmbientOcclusion","LAOKernelSize","LAOKernelRadius"]),W.setGetArray(t,e,["ipScalarRange"],2),W.event(t,e,"lightingActivated"),sJ(t,e)}const lJ=W.newInstance(OO,"vtkVolumeMapper");var uJ={newInstance:lJ,extend:OO,...aJ};function fJ(t,e){e.classHierarchy.push("vtkSharedVolumeMapper");const r=t.delete;t.delete=()=>{e.scalarTexture=null,r()}}const dJ={scalarTexture:null};function MO(t,e,r={}){Object.assign(e,dJ,r),uJ.extend(t,e,r),W.setGet(t,e,["scalarTexture"]),fJ(t,e)}const hJ=W.newInstance(MO,"vtkSharedVolumeMapper"),gJ={newInstance:hJ,extend:MO};function Nn(t){const e=t.indexOf(":");return t.substring(e+1)}const pJ=1073741824;class mJ{constructor(){this._imageCache=new Map,this._volumeCache=new Map,this._geometryCache=new Map,this._imageCacheSize=0,this._maxCacheSize=3*pJ,this._geometryCacheSize=0,this.setMaxCacheSize=e=>{if(!e||typeof e!="number"){const r=`New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;throw new Error(r)}this._maxCacheSize=e},this.isCacheable=e=>{const r=this.getBytesAvailable(),n=Array.from(this._imageCache.values()).reduce((o,a)=>a.sharedCacheKey?o:o+a.sizeInBytes,0);return r+n>=e},this.getMaxCacheSize=()=>this._maxCacheSize,this.getCacheSize=()=>this._imageCacheSize,this._decacheImage=(e,r=!1)=>{const n=this._imageCache.get(e);if(!n)return;if(n.sharedCacheKey&&!r)throw new Error("Cannot decache an image with a shared cache key. You need to manually decache the volume first.");const{imageLoadObject:i}=n;i!=null&&i.cancelFn&&i.cancelFn(),i!=null&&i.decache&&i.decache(),this._imageCache.delete(e)},this._decacheVolume=e=>{const r=this._volumeCache.get(e);if(!r)return;const{volumeLoadObject:n,volume:i}=r;i&&(i.cancelLoading&&i.cancelLoading(),i.imageData&&i.imageData.delete(),n.cancelFn&&n.cancelFn(),i.imageIds&&i.imageIds.forEach(o=>{const a=this._imageCache.get(o);a&&a.sharedCacheKey===e&&(a.sharedCacheKey=void 0)}),this._volumeCache.delete(e))},this.purgeCache=()=>{const e=this._imageCache.keys();for(this.purgeVolumeCache();;){const{value:r,done:n}=e.next();if(n)break;this.removeImageLoadObject(r,{force:!0}),De(Ce,Se.IMAGE_CACHE_IMAGE_REMOVED,{imageId:r})}},this.purgeVolumeCache=()=>{const e=this._volumeCache.keys();for(;;){const{value:r,done:n}=e.next();if(n)break;this.removeVolumeLoadObject(r),De(Ce,Se.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:r})}},this.getVolumeLoadObject=e=>{if(e===void 0)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const r=this._volumeCache.get(e);if(r)return r.timeStamp=Date.now(),r.volumeLoadObject},this.putGeometryLoadObject=(e,r)=>{if(e===void 0)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(r.promise===void 0)throw new Error("putGeometryLoadObject: geometryLoadObject.promise must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");if(r.cancelFn&&typeof r.cancelFn!="function")throw new Error("putGeometryLoadObject: geometryLoadObject.cancel must be a function");const n={loaded:!1,geometryId:e,geometryLoadObject:r,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(e,n),r.promise.then(i=>{try{this._putGeometryCommon(e,i,n)}catch(o){throw console.debug(`Error in _putGeometryCommon for geometry ${e}:`,o),o}}).catch(i=>{throw console.debug(`Error caching geometry ${e}:`,i),this._geometryCache.delete(e),i})},this.getGeometry=e=>{if(e===void 0)throw new Error("getGeometry: geometryId must not be undefined");const r=this._geometryCache.get(e);if(r)return r.timeStamp=Date.now(),r.geometry},this.removeGeometryLoadObject=e=>{if(e===void 0)throw new Error("removeGeometryLoadObject: geometryId must not be undefined");const r=this._geometryCache.get(e);if(!r)throw new Error("removeGeometryLoadObject: geometryId was not present in geometryCache");this.decrementGeometryCacheSize(r.sizeInBytes);const n={geometry:r,geometryId:e};De(Ce,Se.GEOMETRY_CACHE_GEOMETRY_REMOVED,n),this._decacheGeometry(e)},this._decacheGeometry=e=>{const r=this._geometryCache.get(e);if(!r)return;const{geometryLoadObject:n}=r;n.cancelFn&&n.cancelFn(),n.decache&&n.decache(),this._geometryCache.delete(e)},this.incrementGeometryCacheSize=e=>{this._geometryCacheSize+=e},this.decrementGeometryCacheSize=e=>{this._geometryCacheSize-=e},this.getImage=(e,r=Pi.FAR_REPLICATE)=>{var i;if(e===void 0)throw new Error("getImage: imageId must not be undefined");const n=this._imageCache.get(e);if(n&&(n.timeStamp=Date.now(),!(((i=n.image)==null?void 0:i.imageQualityStatus){var i;if(e===void 0)throw new Error("getVolume: volumeId must not be undefined");const n=this._volumeCache.get(e);return n?(n.timeStamp=Date.now(),n.volume):r?(i=[...this._volumeCache.values()].find(o=>o.volumeId.includes(e)))==null?void 0:i.volume:void 0},this.getVolumes=()=>Array.from(this._volumeCache.values()).map(r=>r.volume),this.filterVolumesByReferenceId=e=>this.getVolumes().filter(n=>n.referencedVolumeId===e),this.removeImageLoadObject=(e,{force:r=!1}={})=>{if(e===void 0)throw new Error("removeImageLoadObject: imageId must not be undefined");const n=this._imageCache.get(e);if(!n)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._decacheImage(e,r),this.incrementImageCacheSize(-n.sizeInBytes);const i={image:n,imageId:e};De(Ce,Se.IMAGE_CACHE_IMAGE_REMOVED,i)},this.removeVolumeLoadObject=e=>{if(e===void 0)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const r=this._volumeCache.get(e);if(!r)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");const n={volume:r,volumeId:e};De(Ce,Se.VOLUME_CACHE_VOLUME_REMOVED,n),this._decacheVolume(e)},this.incrementImageCacheSize=e=>{this._imageCacheSize+=e},this.decrementImageCacheSize=e=>{this._imageCacheSize-=e},this.getGeometryLoadObject=e=>{if(e===void 0)throw new Error("getGeometryLoadObject: geometryId must not be undefined");const r=this._geometryCache.get(e);if(r)return r.timeStamp=Date.now(),r.geometryLoadObject}}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(e,r){let n=this.getBytesAvailable();if(n>=e)return n;const i=Array.from(this._imageCache.values()).filter(c=>!c.sharedCacheKey);function o(c,l){return c.timeStamp>l.timeStamp?1:c.timeStampc.imageId);let s=a;r&&(s=a.filter(c=>!r.includes(c)));for(const c of s)if(this.removeImageLoadObject(c),De(Ce,Se.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),n=this.getBytesAvailable(),n>=e)return n;for(const c of a)if(this.removeImageLoadObject(c),De(Ce,Se.IMAGE_CACHE_IMAGE_REMOVED,{imageId:c}),n=this.getBytesAvailable(),n>=e)return n}_putImageCommon(e,r,n){if(!this._imageCache.has(e)){console.warn("The image was purged from the cache before it completed loading.");return}if(!r){console.warn("Image is undefined");return}if(r.sizeInBytes===void 0||Number.isNaN(r.sizeInBytes))throw new Error("_putImageCommon: image.sizeInBytes must not be undefined");if(r.sizeInBytes.toFixed===void 0)throw new Error("_putImageCommon: image.sizeInBytes is not a number");if(!this.isCacheable(r.sizeInBytes))throw new Error(Se.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(r.sizeInBytes),n.loaded=!0,n.image=r,n.sizeInBytes=r.sizeInBytes,this.incrementImageCacheSize(n.sizeInBytes);const i={image:n};De(Ce,Se.IMAGE_CACHE_IMAGE_ADDED,i),n.sharedCacheKey=r.sharedCacheKey}async putImageLoadObject(e,r){if(e===void 0)throw console.error("putImageLoadObject: imageId must not be undefined"),new Error("putImageLoadObject: imageId must not be undefined");if(r.promise===void 0)throw console.error("putImageLoadObject: imageLoadObject.promise must not be undefined"),new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");const n=this._imageCache.get(e);if(n!=null&&n.imageLoadObject)throw console.warn(`putImageLoadObject: imageId ${e} already in cache`),new Error("putImageLoadObject: imageId already in cache");if(r.cancelFn&&typeof r.cancelFn!="function")throw console.error("putImageLoadObject: imageLoadObject.cancel must be a function"),new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const i={...n,loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:r,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(e,i),this._imageCache.set(e,i),r.promise.then(o=>{try{this._putImageCommon(e,o,i)}catch(a){throw console.debug(`Error in _putImageCommon for image ${e}:`,a),a}}).catch(o=>{throw console.debug(`Error caching image ${e}:`,o),this._imageCache.delete(e),o})}putImageSync(e,r){if(e===void 0)throw new Error("putImageSync: imageId must not be undefined");if(this._imageCache.has(e))throw new Error("putImageSync: imageId already in cache");const n={loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:{promise:Promise.resolve(r)},timeStamp:Date.now(),sizeInBytes:0};this._imageCache.set(e,n);try{this._putImageCommon(e,r,n)}catch(i){throw this._imageCache.delete(e),i}}getImageLoadObject(e){if(e===void 0)throw new Error("getImageLoadObject: imageId must not be undefined");const r=this._imageCache.get(e);if(r)return r.timeStamp=Date.now(),r.imageLoadObject}isLoaded(e){const r=this._imageCache.get(e);return r?r.loaded:!1}getVolumeContainingImageId(e){const r=Array.from(this._volumeCache.keys()),n=Nn(e);for(const i of r){const o=this._volumeCache.get(i);if(!o)return;const{volume:a}=o;if(!a.imageIds.length)return;const s=a.getImageURIIndex(n);if(s>-1)return{volume:a,imageIdIndex:s}}}getCachedImageBasedOnImageURI(e){const r=Nn(e),i=Array.from(this._imageCache.keys()).find(o=>Nn(o)===r);if(i)return this._imageCache.get(i)}_putVolumeCommon(e,r,n){var o;if(!this._volumeCache.get(e)){console.warn("The volume was purged from the cache before it completed loading.");return}n.loaded=!0,n.volume=r,(o=r.imageIds)==null||o.forEach(a=>{const s=this._imageCache.get(a);s&&(s.sharedCacheKey=e)});const i={volume:n};De(Ce,Se.VOLUME_CACHE_VOLUME_ADDED,i)}putVolumeSync(e,r){if(e===void 0)throw new Error("putVolumeSync: volumeId must not be undefined");if(this._volumeCache.has(e))throw new Error("putVolumeSync: volumeId already in cache");const n={loaded:!1,volumeId:e,volumeLoadObject:{promise:Promise.resolve(r)},timeStamp:Date.now(),sizeInBytes:0};this._volumeCache.set(e,n);try{this._putVolumeCommon(e,r,n)}catch(i){throw this._volumeCache.delete(e),i}}async putVolumeLoadObject(e,r){if(e===void 0)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(r.promise===void 0)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(e))throw new Error(`putVolumeLoadObject: volumeId:${e} already in cache`);if(r.cancelFn&&typeof r.cancelFn!="function")throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const n={loaded:!1,volumeId:e,volumeLoadObject:r,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(e,n),r.promise.then(i=>{try{this._putVolumeCommon(e,i,n)}catch(o){throw console.error(`Error in _putVolumeCommon for volume ${e}:`,o),this._volumeCache.delete(e),o}}).catch(i=>{throw this._volumeCache.delete(e),i})}_putGeometryCommon(e,r,n){if(!this._geometryCache.get(e)){console.warn("The geometry was purged from the cache before it completed loading.");return}if(!r){console.warn("Geometry is undefined");return}if(r.sizeInBytes===void 0||Number.isNaN(r.sizeInBytes))throw new Error("_putGeometryCommon: geometry.sizeInBytes must not be undefined");if(r.sizeInBytes.toFixed===void 0)throw new Error("_putGeometryCommon: geometry.sizeInBytes is not a number");if(!this.isCacheable(r.sizeInBytes))throw new Error(Se.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(r.sizeInBytes),n.loaded=!0,n.geometry=r,n.sizeInBytes=r.sizeInBytes,this.incrementGeometryCacheSize(n.sizeInBytes);const i={geometry:n};De(Ce,Se.GEOMETRY_CACHE_GEOMETRY_ADDED,i)}putGeometrySync(e,r){if(e===void 0)throw new Error("putGeometrySync: geometryId must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometrySync: geometryId already in cache");const n={loaded:!1,geometryId:e,geometryLoadObject:{promise:Promise.resolve(r)},timeStamp:Date.now(),sizeInBytes:0};this._geometryCache.set(e,n);try{this._putGeometryCommon(e,r,n)}catch(i){throw this._geometryCache.delete(e),i}}setPartialImage(e,r){const n=this._imageCache.get(e);if(!n){r&&this._imageCache.set(e,{image:r,imageId:e,loaded:!1,timeStamp:Date.now(),sizeInBytes:0});return}n.loaded&&(n.loaded=!1,n.imageLoadObject=null,this.incrementImageCacheSize(-n.sizeInBytes),n.sizeInBytes=0),n.image=r||n.image}getImageQuality(e){var n;const r=(n=this._imageCache.get(e))==null?void 0:n.image;return r?r.imageQualityStatus||Pi.FULL_RESOLUTION:void 0}}const _e=new mJ;function vJ(t,e){e.classHierarchy.push("vtkStreamingOpenGLTexture"),e.updatedFrames=[],e.volumeId=null;const r=t.create3DFilterableFromRaw;t.create3DFilterableFromRaw=(a,s,c,l,f,u,d)=>{e.inputDataType=f,e.inputNumComps=l,r(a,s,c,l,f,u,d)},t.update3DFromRaw=()=>{const{volumeId:a}=e;if(!a)return;const s=_e.getVolume(a);if(e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),s.isDynamicVolume()){o();return}return t.hasUpdatedFrames()&&i()};const n=t.modified;t.setUpdatedFrame=a=>{e.updatedFrames[a]=!0,n()},t.modified=()=>{n();const a=_e.getVolume(e.volumeId);if(!a)return;const s=a.imageIds;for(let c=0;c!e.updatedFrames.length||e.updatedFrames.some(a=>a),t.getUpdatedFrames=()=>e.updatedFrames,t.setVolumeId=a=>{e.volumeId=a},t.getVolumeId=()=>e.volumeId,t.setTextureParameters=({width:a,height:s,depth:c,numberOfComponents:l,dataType:f})=>{e.width??(e.width=a),e.height??(e.height=s),e.depth??(e.depth=c),e.inputNumComps??(e.inputNumComps=l),e.inputDataType??(e.inputDataType=f)},t.getTextureParameters=()=>({width:e.width,height:e.height,depth:e.depth,numberOfComponents:e.inputNumComps,dataType:e.inputDataType})}const yJ={updatedFrames:[]};function RO(t,e,r={}){Object.assign(e,yJ,r),yn.extend(t,e,r),vJ(t,e)}const xJ=W.newInstance(RO,"vtkStreamingOpenGLTexture"),wJ={newInstance:xJ,extend:RO},CJ={isPerformingCoordinateTransformation:!1};function LO(t,e,r={}){Object.assign(e,CJ,r),$w.extend(t,e,r),W.setGet(t,e,["isPerformingCoordinateTransformation"]),TJ(t,e)}const SJ=W.newInstance(LO,"vtkSlabCamera");function TJ(t,e){e.classHierarchy.push("vtkSlabCamera");const r=qe(new Float64Array(16)),n=new Float64Array(3);t.getProjectionMatrix=(i,o,a)=>{const s=lo();if(e.projectionMatrix){const d=1/e.physicalScale;return $t(n,d,d,d),_n(s,e.projectionMatrix),Ha(s,s,n),St(s,s),s}qe(r);let c=e.clippingRange[0],l=e.clippingRange[1];e.isPerformingCoordinateTransformation&&(c=e.distance,l=e.distance+.1);const f=l-c,u=[c+(o+1)*f/2,c+(a+1)*f/2];if(e.parallelProjection){const d=e.parallelScale*i,h=e.parallelScale,g=(e.windowCenter[0]-1)*d,p=(e.windowCenter[0]+1)*d,v=(e.windowCenter[1]-1)*h,x=(e.windowCenter[1]+1)*h;Cw(r,g,p,v,x,u[0],u[1]),St(r,r)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const d=Math.tan(nt.radiansFromDegrees(e.viewAngle)/2);let h,g;e.useHorizontalViewAngle===!0?(h=c*d,g=c*d/i):(h=c*d*i,g=c*d);const p=(e.windowCenter[0]-1)*h,v=(e.windowCenter[0]+1)*h,x=(e.windowCenter[1]-1)*g,m=(e.windowCenter[1]+1)*g,y=u[0],w=u[1];r[0]=2*y/(v-p),r[5]=2*y/(m-x),r[2]=(p+v)/(v-p),r[6]=(x+m)/(m-x),r[10]=-(y+w)/(w-y),r[14]=-1,r[11]=-2*y*w/(w-y),r[15]=0}}return _n(s,r),s}}const _J={newInstance:SJ,extend:LO};function Xo(t){return ci(t,"vtkVolume")||ci(t,"vtkImageSlice")}function ci(t,e){return!!("isA"in t?t:t.actor).isA(e)}const ea=[];function S0(t,e=0){let r;for(r=0;r0;)ea.pop()}function Pe(t,...e){for(let r=0;rt,l8=1e-6;let PO=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.matrix=qe(new Float64Array(16)),this.tmp=new Float64Array(3),this.angleConv=e?i$:bJ}rotateFromDirections(e,r){const n=new Float64Array(3),i=new Float64Array(3),o=new Float64Array(16);$t(n,e[0],e[1],e[2]),$t(i,r[0],r[1],r[2]),on(n,n),on(i,i);const a=je(n,i);return a>=1?this:(Kt(this.tmp,n,i),ui(this.tmp)1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;if(mh(iw,this.matrix))return this;const i=n===-1?e.length:r+n*3;for(let o=r;oMath.abs(Math.abs(t)-1)Rv(t[e])||Rv(t[e+1])||Rv(t[e+2]),RJ=t=>Lv(t,0)&&Lv(t,3)&&Lv(t,6);function s2(t,e,r){const n=t.getMapper().getInputData();let i;const o=n.getDirection();if(RJ(o))i=AO(t);else{const[u,d,h]=n.getDimensions();i=[[0,0,0],[u-1,0,0],[0,d-1,0],[u-1,d-1,0],[0,0,h-1],[u-1,0,h-1],[0,d-1,h-1],[u-1,d-1,h-1]].map(p=>n.indexToWorld(p))}const a=br.buildFromDegree().identity().rotateFromDirections(e,[1,0,0]);i.forEach(u=>a.apply(u));const s=[...r];a.apply(s);const c=s[0];let l=1/0,f=-1/0;for(let u=0;u<8;u++){const d=i[u][0];d>f&&(f=d),df?h=f:h<0&&(h=0);const p=h*i;g=[g[0]+n[0]*p,g[1]+n[1]*p,g[2]+n[2]*p];const v=[g[0]+l[0],g[1]+l[1],g[2]+l[2]];return{newFocalPoint:g,newPosition:v}}const LJ={RGB:0,HSV:1,LAB:2,DIVERGING:3},NJ={LINEAR:0,LOG10:1};var kO={ColorSpace:LJ,Scale:NJ};const{ColorSpace:Xi,Scale:qw}=kO,{ScalarMappingTarget:Cg}=n2,{vtkDebugMacro:PJ,vtkErrorMacro:va,vtkWarningMacro:AJ}=W;function u8(t,e){const r=t[0],n=t[1],i=t[2],o=Math.sqrt(r*r+n*n+i*i),a=o>.001?Math.acos(r/o):0,s=a>.001?Math.atan2(i,n):0;e[0]=o,e[1]=a,e[2]=s}function kJ(t,e){const r=t[0],n=t[1],i=t[2];e[0]=r*Math.cos(n),e[1]=r*Math.sin(n)*Math.cos(i),e[2]=r*Math.sin(n)*Math.sin(i)}function f8(t,e){if(t[0]>=e-.1)return t[2];const r=t[1]*Math.sqrt(e*e-t[0]*t[0])/(t[0]*Math.sin(t[1]));return t[2]>-.3*Math.PI?t[2]+r:t[2]-r}function VJ(t,e){let r=t-e;for(r<0&&(r=-r);r>=2*Math.PI;)r-=2*Math.PI;return r>Math.PI&&(r=2*Math.PI-r),r}function d8(t,e,r,n){const i=[],o=[];Uc(e,i),Uc(r,o);const a=[],s=[];u8(i,a),u8(o,s);let c=t;if(a[1]>.05&&s[1]>.05&&VJ(a[2],s[2])>.33*Math.PI){let u=Math.max(a[0],s[0]);u=Math.max(88,u),t<.5?(s[0]=u,s[1]=0,s[2]=0,c*=2):(a[0]=u,a[1]=0,a[2]=0,c=2*c-1)}a[1]<.05&&s[1]>.05?a[2]=f8(s,a[0]):s[1]<.05&&a[1]>.05&&(s[2]=f8(a,s[0]));const l=[];l[0]=(1-c)*a[0]+c*s[0],l[1]=(1-c)*a[1]+c*s[1],l[2]=(1-c)*a[2]+c*s[2];const f=[];kJ(l,f),D1(f,n)}function FJ(t,e){e.classHierarchy.push("vtkColorTransferFunction"),t.getSize=()=>e.nodes.length,t.addRGBPoint=(r,n,i,o)=>t.addRGBPointLong(r,n,i,o,.5,0),t.addRGBPointLong=function(r,n,i,o){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(a<0||a>1)return va("Midpoint outside range [0.0, 1.0]"),-1;if(s<0||s>1)return va("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||t.removePoint(r);const c={x:r,r:n,g:i,b:o,midpoint:a,sharpness:s};e.nodes.push(c),t.sortAndUpdateRange();let l=0;for(;lt.addHSVPointLong(r,n,i,o,.5,0),t.addHSVPointLong=function(r,n,i,o){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;const c=[];return Rc([n,i,o],c),t.addRGBPoint(r,c[0],c[1],c[2],a,s)},t.setNodes=r=>{if(e.nodes!==r){const n=JSON.stringify(e.nodes);e.nodes=r;const i=JSON.stringify(e.nodes);if(t.sortAndUpdateRange()||n!==i)return t.modified(),!0}return!1},t.sortAndUpdateRange=()=>{const r=JSON.stringify(e.nodes);e.nodes.sort((o,a)=>o.x-a.x);const n=JSON.stringify(e.nodes),i=t.updateRange();return!i&&r!==n?(t.modified(),!0):i},t.updateRange=()=>{const r=[2];r[0]=e.mappingRange[0],r[1]=e.mappingRange[1];const n=e.nodes.length;return n?(e.mappingRange[0]=e.nodes[0].x,e.mappingRange[1]=e.nodes[n-1].x):(e.mappingRange[0]=0,e.mappingRange[1]=0),r[0]===e.mappingRange[0]&&r[1]===e.mappingRange[1]?!1:(t.modified(),!0)},t.removePoint=r=>{let n=0;for(;n=e.nodes.length)return-1;let o=!1;return e.nodes.splice(n,1),(n===0||n===e.nodes.length)&&(o=t.updateRange()),o||t.modified(),i},t.movePoint=(r,n)=>{if(r!==n){t.removePoint(n);for(let i=0;i{e.nodes=[],t.sortAndUpdateRange()},t.addRGBSegment=(r,n,i,o,a,s,c,l)=>{t.sortAndUpdateRange();for(let f=0;f=r&&e.nodes[f].x<=a?e.nodes.splice(f,1):f++;t.addRGBPointLong(r,n,i,o,.5,0),t.addRGBPointLong(a,s,c,l,.5,0),t.modified()},t.addHSVSegment=(r,n,i,o,a,s,c,l)=>{const f=[n,i,o],u=[s,c,l],d=[],h=[];Rc(f,d),Rc(u,h),t.addRGBSegment(r,d[0],d[1],d[2],a,h[0],h[1],h[2])},t.mapValue=r=>{const n=[];return t.getColor(r,n),[Math.floor(255*n[0]+.5),Math.floor(255*n[1]+.5),Math.floor(255*n[2]+.5),255]},t.getColor=(r,n)=>{if(e.indexedLookup){const i=t.getSize(),o=t.getAnnotatedValueIndexInternal(r);if(o<0||i===0){const a=t.getNanColorByReference();n[0]=a[0],n[1]=a[1],n[2]=a[2]}else{const a=[];t.getNodeValue(o%i,a),n[0]=a[1],n[1]=a[2],n[2]=a[3]}return}t.getTable(r,r,1,n)},t.getRedValue=r=>{const n=[];return t.getColor(r,n),n[0]},t.getGreenValue=r=>{const n=[];return t.getColor(r,n),n[1]},t.getBlueValue=r=>{const n=[];return t.getColor(r,n),n[2]},t.getTable=(r,n,i,o)=>{const a=Number(r),s=Number(n);if(b1(a)||b1(s)){for(let E=0;E0);let S=0,T=0,_=0;C&&(S=Math.log10(a),T=Math.log10(s));for(let E=0;E1?C?(_=S+E/(i-1)*(T-S),h=10**_):h=a+E/(i-1)*(s-a):C?(_=.5*(S+T),h=10**_):h=.5*(a+s),e.discretize){const b=e.mappingRange;if(h>=b[0]&&h<=b[1]){const I=e.numberOfValues,R=b[1]-b[0];if(I<=1)h=b[0]+R/2;else{const M=(h-b[0])/R,L=sw(I*M);h=b[0]+L/(I-1)*R}}}for(;ce.nodes[c].x;)c++,c.99999&&(m=.99999));if(h>e.mappingRange[1])o[D]=0,o[D+1]=0,o[D+2]=0,e.clamping&&(t.getUseAboveRangeColor()?(o[D]=e.aboveRangeColor[0],o[D+1]=e.aboveRangeColor[1],o[D+2]=e.aboveRangeColor[2]):(o[D]=f,o[D+1]=u,o[D+2]=d));else if(h0&&(o[D]=e.nodes[0].r,o[D+1]=e.nodes[0].g,o[D+2]=e.nodes[0].b));else if(c===0&&(Math.abs(h-a)<1e-6||e.discretize))l>0?(o[D]=e.nodes[0].r,o[D+1]=e.nodes[0].g,o[D+2]=e.nodes[0].b):(o[D]=0,o[D+1]=0,o[D+2]=0);else{let b=0;if(C?b=(_-g)/(p-g):b=(h-g)/(p-g),b.99)if(b<.5){o[D]=v[0],o[D+1]=v[1],o[D+2]=v[2];continue}else{o[D]=x[0],o[D+1]=x[1],o[D+2]=x[2];continue}if(y<.01){if(e.colorSpace===Xi.RGB)o[D]=(1-b)*v[0]+b*x[0],o[D+1]=(1-b)*v[1]+b*x[1],o[D+2]=(1-b)*v[2]+b*x[2];else if(e.colorSpace===Xi.HSV){const V=[],$=[];Tf(v,V),Tf(x,$),e.hSVWrap&&(V[0]-$[0]>.5||$[0]-V[0]>.5)&&(V[0]>$[0]?V[0]-=1:$[0]-=1);const H=[];H[0]=(1-b)*V[0]+b*$[0],H[0]<0&&(H[0]+=1),H[1]=(1-b)*V[1]+b*$[1],H[2]=(1-b)*V[2]+b*$[2],Rc(H,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]}else if(e.colorSpace===Xi.LAB){const V=[],$=[];Uc(v,V),Uc(x,$);const H=[];H[0]=(1-b)*V[0]+b*$[0],H[1]=(1-b)*V[1]+b*$[1],H[2]=(1-b)*V[2]+b*$[2],D1(H,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]}else e.colorSpace===Xi.DIVERGING?(d8(b,v,x,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]):va("ColorSpace set to invalid value.",e.colorSpace);continue}b<.5?b=.5*(b*2)**(1+10*y):b>.5&&(b=1-.5*((1-b)*2)**(1+10*y));const I=b*b,R=I*b,M=2*R-3*I+1,L=-2*R+3*I,A=R-2*I+b,G=R-I;let P,N;if(e.colorSpace===Xi.RGB)for(let V=0;V<3;V++)P=x[V]-v[V],N=(1-y)*P,o[D+V]=M*v[V]+L*x[V]+A*N+G*N;else if(e.colorSpace===Xi.HSV){const V=[],$=[];Tf(v,V),Tf(x,$),e.hSVWrap&&(V[0]-$[0]>.5||$[0]-V[0]>.5)&&(V[0]>$[0]?V[0]-=1:$[0]-=1);const H=[];for(let Y=0;Y<3;Y++)P=$[Y]-V[Y],N=(1-y)*P,H[Y]=M*V[Y]+L*$[Y]+A*N+G*N,Y===0&&H[Y]<0&&(H[Y]+=1);Rc(H,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]}else if(e.colorSpace===Xi.LAB){const V=[],$=[];Uc(v,V),Uc(x,$);const H=[];for(let Y=0;Y<3;Y++)P=$[Y]-V[Y],N=(1-y)*P,H[Y]=M*V[Y]+L*$[Y]+A*N+G*N;D1(H,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]}else e.colorSpace===Xi.DIVERGING?(d8(b,v,x,w),o[D]=w[0],o[D+1]=w[1],o[D+2]=w[2]):va("ColorSpace set to invalid value.");for(let V=0;V<3;V++)o[D+V]=o[D+V]<0?0:o[D+V],o[D+V]=o[D+V]>1?1:o[D+V]}}},t.getUint8Table=function(r,n,i){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t.getMTime()<=e.buildTime&&e.tableSize===i&&e.tableWithAlpha!==o)return e.table;if(e.nodes.length===0)return va("Attempting to lookup a value with no points in the function"),e.table;const a=o?4:3;(e.tableSize!==i||e.tableWithAlpha!==o)&&(e.table=new Uint8Array(i*a),e.tableSize=i,e.tableWithAlpha=o);const s=[];t.getTable(r,n,i,s);for(let c=0;c{t.removeAllPoints();const n=r.getNumberOfComponents();for(let i=0;i{let a=0;t.removeAllPoints(),i>1&&(a=(n-r)/(i-1));for(let s=0;sr<0||r>=e.nodes.length?(va("Index out of range!"),-1):(n[0]=e.nodes[r].x,n[1]=e.nodes[r].r,n[2]=e.nodes[r].g,n[3]=e.nodes[r].b,n[4]=e.nodes[r].midpoint,n[5]=e.nodes[r].sharpness,1),t.setNodeValue=(r,n)=>{if(r<0||r>=e.nodes.length)return va("Index out of range!"),-1;const i=e.nodes[r].x;return e.nodes[r].x=n[0],e.nodes[r].r=n[1],e.nodes[r].g=n[2],e.nodes[r].b=n[3],e.nodes[r].midpoint=n[4],e.nodes[r].sharpness=n[5],i!==n[0]?t.sortAndUpdateRange():t.modified(),1},t.getNumberOfAvailableColors=()=>{var n;if(e.indexedLookup&&t.getSize())return t.getSize();if(e.tableSize)return e.tableSize;const r=((n=e.nodes)==null?void 0:n.length)??0;return Math.max(4094,r)},t.getIndexedColor=(r,n)=>{const i=t.getSize();if(i>0&&r>=0){const a=[];t.getNodeValue(r%i,a);for(let s=0;s<3;++s)n[s]=a[s+1];n[3]=1;return}const o=t.getNanColorByReference();n[0]=o[0],n[1]=o[1],n[2]=o[2],n[3]=1},t.fillFromDataPointer=(r,n)=>{if(!(r<=0||!n)){t.removeAllPoints();for(let i=0;i{const i=[r,n],o=t.getRange();if(o[1]===i[1]&&o[0]===i[0])return;if(i[1]===i[0]){va("attempt to set zero width color range");return}const a=(i[1]-i[0])/(o[1]-o[0]),s=i[0]-o[0]*a;for(let c=0;c{const n=t.getRange(),i=[];n[0]r[1]?(t.getColor(r[1],i),t.addRGBPoint(r[1],i[0],i[1],i[2])):(t.getColor(n[1],i),t.addRGBPoint(r[1],i[0],i[1],i[2])),t.sortAndUpdateRange();for(let o=0;o=r[0]&&e.nodes[o].x<=r[1]?e.nodes.splice(o,1):++o;return 1},t.estimateMinNumberOfSamples=(r,n)=>{const i=t.findMinimumXDistance();return Math.ceil((n-r)/i)},t.findMinimumXDistance=()=>{if(e.nodes.length<2)return-1;let r=Number.MAX_VALUE;for(let n=0;n{if(t.getSize()===0){PJ("Transfer Function Has No Points!");return}e.indexedLookup?t.mapDataIndexed(r,n,i,o):t.mapData(r,n,i,o)},t.mapData=(r,n,i,o)=>{if(t.getSize()===0){AJ("Transfer Function Has No Points!");return}const a=Math.floor(t.getAlpha()*255+.5),s=r.getNumberOfTuples(),c=r.getNumberOfComponents(),l=n.getData(),f=r.getData(),u=[];if(i===Cg.RGBA)for(let d=0;d{const n=JSON.stringify(e.colorSpace);r.ColorSpace&&(e.colorSpace=Xi[r.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(va(`ColorSpace ${r.ColorSpace} not supported, using RGB instead`),e.colorSpace=Xi.RGB));let i=n!==JSON.stringify(e.colorSpace);const o=i||JSON.stringify(e.nanColor);if(r.NanColor)for(e.nanColor=[].concat(r.NanColor);e.nanColor.length<4;)e.nanColor.push(1);i=i||o!==JSON.stringify(e.nanColor);const a=i||JSON.stringify(e.nodes);if(r.RGBPoints){const l=r.RGBPoints.length;e.nodes=[];const f=.5,u=0;for(let d=0;d2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,UJ,r),n2.extend(t,e,r),e.table=[],e.nodes=[],e.nanColor=[.5,0,0,1],e.belowRangeColor=[0,0,0,1],e.aboveRangeColor=[1,1,1,1],e.buildTime={},W.obj(e.buildTime),W.get(t,e,["buildTime","mappingRange"]),W.setGet(t,e,["useAboveRangeColor","useBelowRangeColor","discretize","numberOfValues",{type:"enum",name:"colorSpace",enum:Xi},{type:"enum",name:"scale",enum:qw}]),W.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),W.getArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"]),FJ(t,e)}const BJ=W.newInstance(VO,"vtkColorTransferFunction");var Ys={newInstance:BJ,extend:VO,...kO},GJ=[{Name:"KAAMS",IndexedColors:[1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,0,1,0,1,1,.63,.63,1,.67,.5,.33,1,.5,.75,.53,.35,.7,1,.75,.5],Annotations:[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11]},{ColorSpace:"Diverging",Name:"Cool to Warm",NanColor:[1,1,0],RGBPoints:[0,.23137254902,.298039215686,.752941176471,.5,.865,.865,.865,1,.705882352941,.0156862745098,.149019607843]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Cool to Warm (Extended)",NanColor:[.25,0,0],RGBPoints:[0,0,0,.34902,.03125,.039216,.062745,.380392,.0625,.062745,.117647,.411765,.09375,.090196,.184314,.45098,.125,.12549,.262745,.501961,.15625,.160784,.337255,.541176,.1875,.2,.396078,.568627,.21875,.239216,.454902,.6,.25,.286275,.521569,.65098,.28125,.337255,.592157,.701961,.3125,.388235,.654902,.74902,.34375,.466667,.737255,.819608,.375,.572549,.819608,.878431,.40625,.654902,.866667,.909804,.4375,.752941,.917647,.941176,.46875,.823529,.956863,.968627,.5,.988235,.960784,.901961,.5,.941176,.984314,.988235,.52,.988235,.945098,.85098,.54,.980392,.898039,.784314,.5625,.968627,.835294,.698039,.59375,.94902,.733333,.588235,.625,.929412,.65098,.509804,.65625,.909804,.564706,.435294,.6875,.878431,.458824,.352941,.71875,.839216,.388235,.286275,.75,.760784,.294118,.211765,.78125,.701961,.211765,.168627,.8125,.65098,.156863,.129412,.84375,.6,.094118,.094118,.875,.54902,.066667,.098039,.90625,.501961,.05098,.12549,.9375,.45098,.054902,.172549,.96875,.4,.054902,.192157,1,.34902,.070588,.211765]},{ColorSpace:"Diverging",Name:"Warm to Cool",NanColor:[1,1,0],RGBPoints:[0,.705882352941,.0156862745098,.149019607843,.5,.865,.865,.865,1,.23137254902,.298039215686,.752941176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Warm to Cool (Extended)",NanColor:[.250004,0,0],RGBPoints:[0,.34902,0,.129412,.025,.4,.00392157,.101961,.05,.470588,.0156863,.0901961,.075,.54902,.027451,.0705882,.1,.619608,.0627451,.0431373,.125,.690196,.12549,.0627451,.15,.741176,.184314,.0745098,.175,.788235,.266667,.0941176,.2,.811765,.345098,.113725,.225,.831373,.411765,.133333,.25,.85098,.47451,.145098,.275,.870588,.54902,.156863,.3,.878431,.619608,.168627,.325,.890196,.658824,.196078,.35,.909804,.717647,.235294,.375,.929412,.776471,.278431,.395522,.94902,.823529,.321569,.418905,.968627,.87451,.407843,.444278,.980392,.917647,.509804,.470149,.988235,.956863,.643137,.483582,.992157,.964706,.713725,.499,.988235,.980392,.870588,.5,1,1,1,.501,.913725,.988235,.937255,.516418,.827451,.980392,.886275,.531343,.764706,.980392,.866667,.546766,.658824,.980392,.843137,.564179,.572549,.964706,.835294,.587562,.423529,.941176,.87451,.60597,.262745,.901961,.862745,.629851,.0705882,.854902,.870588,.651741,.0509804,.8,.85098,.681592,.0235294,.709804,.831373,.712935,.0313725,.615686,.811765,.75,.0313725,.537255,.788235,.775,.0392157,.466667,.768627,.8,.0509804,.396078,.741176,.825,.054902,.317647,.709804,.85,.054902,.243137,.678431,.875,.0431373,.164706,.639216,.9,.0313725,.0980392,.6,.925,.0392157,.0392157,.560784,.95,.105882,.0509804,.509804,.975,.113725,.0235294,.45098,1,.12549,0,.380392]},{ColorSpace:"RGB",Name:"Rainbow Desaturated",NanColor:[1,1,0],RGBPoints:[0,.278431372549,.278431372549,.858823529412,.143,0,0,.360784313725,.285,0,1,1,.429,0,.501960784314,0,.571,1,1,0,.714,1,.380392156863,0,.857,.419607843137,0,0,1,.878431372549,.301960784314,.301960784314]},{ColorSpace:"RGB",Name:"Cold and Hot",NanColor:[1,1,0],RGBPoints:[0,0,1,1,.45,0,0,1,.5,0,0,.501960784314,.55,1,0,0,1,1,1,0]},{ColorSpace:"RGB",Name:"Black-Body Radiation",NanColor:[0,.498039215686,1],RGBPoints:[0,0,0,0,.4,.901960784314,0,0,.8,.901960784314,.901960784314,0,1,1,1,1]},{ColorSpace:"RGB",Name:"X Ray",NanColor:[1,0,0],RGBPoints:[0,1,1,1,1,0,0,0]},{ColorSpace:"RGB",Name:"Grayscale",NanColor:[1,0,0],RGBPoints:[0,0,0,0,1,1,1,1]},{ColorSpace:"RGB",Name:"BkRd",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,1,0,0]},{ColorSpace:"RGB",Name:"BkGn",NanColor:[1,0,1],RGBPoints:[0,0,0,0,1,0,1,0]},{ColorSpace:"RGB",Name:"BkBu",NanColor:[1,1,0],RGBPoints:[0,0,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"BkMa",NanColor:[0,1,0],RGBPoints:[0,0,0,0,1,1,0,1]},{ColorSpace:"RGB",Name:"BkCy",NanColor:[0,1,1],RGBPoints:[0,0,0,0,1,0,1,1]},{ColorSpace:"RGB",Name:"Black, Blue and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,0,0,.501960784314,.666,0,.501960784314,1,1,1,1,1]},{ColorSpace:"RGB",Name:"Black, Orange and White",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.333,.501960784314,0,0,.666,1,.501960784314,0,1,1,1,1]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear YGB 1211g",NanColor:[.25,0,0],RGBPoints:[0,1,.988235,.968627,.02,1,.952941,.878431,.05,.968627,.905882,.776471,.1,.94902,.898039,.647059,.15,.901961,.878431,.556863,.2,.847059,.858824,.482353,.25,.690196,.819608,.435294,.3,.513725,.768627,.384314,.35,.337255,.721569,.337255,.4,.278431,.658824,.392157,.45,.231373,.639216,.435294,.5,.203922,.6,.486275,.55,.172549,.568627,.537255,.6,.141176,.517647,.54902,.65,.133333,.458824,.541176,.7,.12549,.396078,.529412,.75,.117647,.321569,.521569,.8,.121569,.258824,.509804,.85,.133333,.227451,.501961,.9,.145098,.192157,.490196,.95,.188235,.164706,.470588,1,.258824,.196078,.439216]},{ColorSpace:"CIELAB",Creator:"Francesca Samsel",Name:"Linear Green (Gr4L)",NanColor:[.25,0,0],RGBPoints:[0,.054902,.109804,.121569,.05,.07451,.172549,.180392,.1,.086275,.231373,.219608,.15,.094118,.278431,.25098,.2,.109804,.34902,.278431,.25,.113725,.4,.278431,.3,.117647,.45098,.270588,.35,.117647,.490196,.243137,.4,.113725,.521569,.203922,.45,.109804,.54902,.152941,.5,.082353,.588235,.082353,.55,.109804,.631373,.05098,.6,.211765,.678431,.082353,.65,.317647,.721569,.113725,.7,.431373,.760784,.160784,.75,.556863,.8,.239216,.8,.666667,.839216,.294118,.85,.784314,.878431,.396078,.9,.886275,.921569,.533333,.95,.960784,.94902,.670588,1,1,.984314,.901961]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Linear Blue (8_31f)",NanColor:[.25,0,0],RGBPoints:[0,.960784,1,.980392,.05,.815686,.960784,.913725,.1,.670588,.929412,.870588,.15,.556863,.901961,.843137,.2,.478431,.870588,.823529,.25,.439216,.831373,.803922,.3,.4,.8,.788235,.35,.376471,.768627,.768627,.4,.34902,.709804,.729412,.45,.32549,.654902,.690196,.5,.301961,.607843,.658824,.55,.247059,.545098,.619608,.6,.239216,.494118,.580392,.65,.227451,.439216,.541176,.7,.227451,.403922,.521569,.75,.231373,.368627,.501961,.8,.227451,.321569,.470588,.85,.219608,.282353,.439216,.9,.192157,.235294,.4,.95,.160784,.184314,.34902,1,.133333,.12549,.301961]},{ColorSpace:"HSV",Name:"Blue to Red Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,0,0,1,1,1,0,0]},{ColorSpace:"HSV",Name:"Red to Blue Rainbow",NanColor:[.498039215686,.498039215686,.498039215686],RGBPoints:[0,1,0,0,1,0,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended White",NanColor:[1,1,0],RGBPoints:[0,1,1,1,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Grey",NanColor:[1,1,0],RGBPoints:[0,.317647058824,.341176470588,.43137254902,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Rainbow Blended Black",NanColor:[1,1,0],RGBPoints:[0,0,0,0,.17,0,0,1,.34,0,1,1,.5,0,1,0,.67,1,1,0,.84,1,0,0,1,.878431372549,0,1]},{ColorSpace:"RGB",Name:"Blue to Yellow",NanColor:[1,0,0],RGBPoints:[0,.0392156862745,.0392156862745,.949019607843,1,.949019607843,.949019607843,.0392156862745]},{ColorSpace:"HSV",Name:"blot",RGBPoints:[0,0,0,1,.166,0,0,1,.167,1,0,1,.332,1,0,1,.333,0,1,1,.5,0,1,1,.501,0,1,0,.666,0,1,0,.667,1,1,0,.832,1,1,0,.833,1,0,0,1,1,0,0]},{ColorSpace:"Lab",Name:"CIELab Blue to Red",NanColor:[1,1,0],RGBPoints:[0,0,.6,.749019607843,1,.76862745098,.466666666667,.341176470588]},{ColorSpace:"RGB",Name:"jet",RGBPoints:[-1,0,0,.5625,-.777778,0,0,1,-.269841,0,1,1,-.015873,.5,1,.5,.238095,1,1,0,.746032,1,0,0,1,.5,0,0]},{ColorSpace:"RGB",Name:"rainbow",RGBPoints:[-1,0,0,1,-.5,0,1,1,0,0,1,0,.5,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"erdc_rainbow_bright",RGBPoints:[-1,.32549,.14902,.960784,-.866221,.297047,.375586,.963836,-.732441,.180302,.536818,.964627,-.598662,.1302,.649207,.929647,-.464883,.0445143,.749654,.855998,-.331104,.0271325,.830713,.721527,-.197324,.259504,.866145,.543555,-.0635452,.428364,.890725,.329819,.0702341,.568503,.898508,.187623,.204013,.738259,.890317,.0825461,.337793,.84546,.86136,.0147555,.471572,.912191,.808018,0,.605351,.962848,.710445,0,.73913,.999469,.600258,.0176284,.87291,.994156,.445975,.193912,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"erdc_rainbow_dark",RGBPoints:[-1,0,0,.423499,-.866221,0,.119346,.529237,-.732441,0,.238691,.634976,-.598662,0,.346852,.68788,-.464883,0,.45022,.718141,-.331104,0,.553554,.664839,-.197324,0,.651082,.519303,-.0635452,.115841,.72479,.352857,.0702341,.326771,.781195,.140187,.204013,.522765,.798524,.0284624,.337793,.703162,.788685,.00885756,.471572,.845118,.751133,0,.605351,.955734,.690825,0,.73913,.995402,.567916,.0618524,.87291,.987712,.403398,.164851,1,.980407,.247105,.262699]},{ColorSpace:"Lab",Name:"nic_CubicL",RGBPoints:[-1,.479965,.0118108,.5307,-.87451,.522213,.0551282,.706919,-.74902,.50839,.237278,.867764,-.623529,.451617,.373834,.987255,-.498039,.39365,.497255,.97506,-.372549,.328631,.599639,.891843,-.247059,.250043,.690286,.778553,-.121569,.249656,.764905,.645857,.00392157,.297954,.821466,.50449,.129412,.337509,.872595,.358447,.254902,.430011,.913789,.297079,.380392,.587191,.931381,.333353,.505882,.727937,.93591,.353742,.631373,.826403,.921081,.365066,.756863,.893201,.846317,.372662,.882353,.965347,.73884,.378506,1,.983235,.597451,.366856]},{ColorSpace:"Lab",Name:"nic_CubicYF",RGBPoints:[-1,.5151,.0482,.6697,-.87451,.520711,.168955,.800574,-.74902,.493694,.278596,.911824,-.623529,.440026,.369475,.984978,-.498039,.398932,.457593,.987053,-.372549,.350651,.540644,.929608,-.247059,.298827,.615625,.857729,-.121569,.239928,.685061,.769531,.00392157,.228832,.739349,.673287,.129412,.263297,.78608,.569988,.254902,.298107,.828337,.460214,.380392,.33092,.864071,.352674,.505882,.38306,.898169,.287309,.631373,.49023,.917481,.307961,.756863,.62372,.926026,.332309,.882353,.717458,.92527,.342476,1,.8,.9255,.3529]},{ColorSpace:"Lab",Name:"gist_earth",RGBPoints:[-1,0,0,0,-.87451,.239216,.027451,.415686,-.74902,.0901961,.254902,.556863,-.623529,.0941176,.352941,.54902,-.498039,.105882,.435294,.533333,-.372549,.12549,.52549,.501961,-.247059,.156863,.596078,.443137,-.121569,.196078,.65098,.380392,.00392157,.282353,.717647,.301961,.129412,.466667,.772549,.27451,.254902,.678431,.784314,.309804,.380392,.901961,.756863,.376471,.505882,.992157,.705882,.521569,.631373,1,.721569,.701961,.756863,1,.784314,.784314,.882353,1,.866667,.866667,1,1,1,1]},{ColorSpace:"Lab",Name:"2hot",RGBPoints:[-1,.0416667,0,0,-.873016,.208333,0,0,-.746032,.375,0,0,-.619048,.541667,0,0,-.492063,.708333,0,0,-.365079,.854137,0,0,-.238095,.937488,.039062,0,-.111111,1,.208333,0,.015873,1,.375,0,.142857,1,.541667,0,.269841,1,.708333,0,.396825,1,.858805,.03125,.52381,1,.947392,.15625,.650794,1,1,.3125,.777778,1,1,.5625,.904762,1,1,.8125,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_red2yellow_BW",RGBPoints:[-1,754296e-12,0,109827e-10,-.87451,.18285,.0264094,0,-.74902,.3066,0,0,-.623529,.422841,0,0,-.498039,.522945,0,0,-.372549,.605721,0,0,-.247059,.672502,.14168,0,-.121569,.728167,.244025,0,.00392157,.781215,.333454,0,.129412,.825,.423586,0,.254902,.855893,.516793,0,.380392,.880491,.608846,0,.505882,.910305,.695505,0,.631373,.94109,.779067,.223528,.756863,.967873,.858572,.473521,.882353,.986815,.933211,.751583,1,1,1,.999997]},{ColorSpace:"Lab",Name:"erdc_marine2gold_BW",RGBPoints:[-1,111641e-12,0,162551e-11,-.87451,.0413146,.0619808,.209857,-.74902,.0185557,.101341,.350684,-.623529,.00486405,.149847,.461054,-.498039,.0836345,.210845,.517906,-.372549,.173222,.276134,.541793,-.247059,.259857,.343877,.535869,-.121569,.362299,.408124,.504293,.00392157,.468266,.468276,.468257,.129412,.582781,.527545,.374914,.254902,.691591,.585251,.274266,.380392,.784454,.645091,.247332,.505882,.862299,.710383,.27518,.631373,.920863,.782923,.351563,.756863,.955792,.859699,.533541,.882353,.976162,.93433,.780671,1,1,1,.999983]},{ColorSpace:"Lab",Name:"erdc_blue2gold_BW",RGBPoints:[-1,0,0,0,-.87451,.0742735,.0440331,.230013,-.74902,.125276,.0258685,.415826,-.623529,.143879,.0163031,.591346,-.498039,.212261,.0627855,.705239,-.372549,.306048,.141178,.763636,-.247059,.391537,.232286,.773263,-.121569,.461734,.336633,.708321,.00392157,.54209,.427581,.590007,.129412,.61704,.508623,.460978,.254902,.702703,.579586,.309117,.380392,.790336,.644811,.170397,.505882,.870173,.710733,.117134,.631373,.93656,.781991,.157144,.756863,.965672,.862068,.409836,.882353,.985751,.936296,.714162,1,1,1,.999999]},{ColorSpace:"Lab",Name:"erdc_sapphire2gold_BW",RGBPoints:[-1,.107704,.107708,.107694,-.87451,.1851,.112354,.308554,-.74902,.236782,.114233,.48788,-.623529,.28296,.126187,.639464,-.498039,.344787,.171643,.739713,-.372549,.413325,.242371,.76913,-.247059,.481863,.3131,.719841,-.121569,.550402,.383829,.612222,.00392157,.61894,.454558,.51126,.129412,.687478,.525287,.39993,.254902,.756017,.596016,.289923,.380392,.824555,.666745,.255498,.505882,.892979,.736822,.27696,.631373,.938851,.804966,.351734,.756863,.966491,.874853,.53572,.882353,.982105,.94153,.782579,1,1,1,.999986]},{ColorSpace:"Lab",Name:"erdc_red2purple_BW",RGBPoints:[-1,0,0,0,-.87451,.167793,.0166271,.0431278,-.74902,.262608,.0107595,.0791181,-.623529,.351902,.0101858,.100926,-.498039,.441257,.0160835,.131919,-.372549,.5221,.0555972,.195625,-.247059,.593852,.104294,.310234,-.121569,.654628,.158115,.448486,.00392157,.707443,.220914,.570253,.129412,.749504,.293268,.67897,.254902,.781587,.370517,.779269,.380392,.809951,.451099,.855831,.505882,.84424,.531462,.900451,.631373,.865174,.620901,.91606,.756863,.875041,.714054,.910284,.882353,.880764,.80554,.896276,1,.887572,.887591,.887556]},{ColorSpace:"Lab",Name:"erdc_purple2pink_BW",RGBPoints:[-1,0,0,0,-.87451,.117562,.0291202,.175876,-.74902,.178368,.0458476,.285454,-.623529,.237731,.0680173,.387717,-.498039,.300877,.0956291,.484802,-.372549,.370929,.136858,.554985,-.247059,.449033,.189273,.58863,-.121569,.529971,.245796,.598587,.00392157,.609914,.300643,.610244,.129412,.697079,.351286,.616371,.254902,.785858,.401991,.617376,.380392,.862517,.45745,.64463,.505882,.91359,.525462,.705336,.631373,.932583,.61064,.767412,.756863,.922478,.706966,.817522,.882353,.901302,.803071,.856311,1,.887571,.887591,.887549]},{ColorSpace:"Lab",Name:"erdc_pbj_lin",RGBPoints:[-1,0,0,0,-.87451,.091821,.0611476,.10617,-.74902,.160311,.0900022,.192713,-.623529,.22484,.12126,.272128,-.498039,.291263,.157469,.340828,-.372549,.360015,.200388,.388903,-.247059,.437497,.250058,.387201,-.121569,.512636,.304969,.355955,.00392157,.582603,.360874,.33488,.129412,.655126,.416374,.306351,.254902,.725889,.473329,.279051,.380392,.778125,.537928,.302697,.505882,.815894,.606931,.382431,.631373,.839159,.679308,.497608,.756863,.854748,.751666,.631792,.882353,.869483,.822508,.768592,1,.887572,.887589,.887565]},{ColorSpace:"Lab",Name:"erdc_blue2green_muted",RGBPoints:[-1,.107704,.107708,.107695,-.87451,.141522,.13066,.270741,-.74902,.180123,.146119,.42308,-.623529,.210161,.169674,.551795,-.498039,.239701,.212939,.634969,-.372549,.253916,.282947,.653641,-.247059,.242791,.366933,.608521,-.121569,.226302,.446776,.52693,.00392157,.236237,.514689,.458798,.129412,.274641,.577589,.376069,.254902,.349625,.633993,.288131,.380392,.4437,.683677,.260497,.505882,.536247,.731214,.285424,.631373,.628472,.777128,.349151,.756863,.718259,.819287,.496825,.882353,.804768,.856164,.703299,1,.887571,.887591,.887548]},{ColorSpace:"Lab",Name:"erdc_blue2green_BW",RGBPoints:[-1,363578e-12,0,529374e-11,-.87451,.0539915,.0577948,.212806,-.74902,.0620393,.0758942,.388959,-.623529,.0697499,.102032,.54177,-.498039,.113295,.156156,.64334,-.372549,.152047,.243196,.670283,-.247059,.158096,.344084,.622864,-.121569,.151142,.43922,.532767,.00392157,.17155,.521588,.457719,.129412,.225861,.599141,.363997,.254902,.32328,.67007,.259083,.380392,.442344,.733697,.223754,.505882,.558409,.794941,.257411,.631373,.673875,.854344,.340822,.756863,.787244,.909326,.524717,.882353,.896483,.958063,.775914,1,1,1,.999982]},{ColorSpace:"Lab",Name:"GREEN-WHITE_LINEAR",RGBPoints:[-1,0,0,0,-.87451,0,.062745,0,-.74902,0,.12549,0,-.623529,0,.188235,0,-.498039,0,.25098,0,-.372549,0,.313725,0,-.247059,0,.376471,0,-.121569,.094118,.439216,0,.00392157,.196078,.501961,0,.129412,.294118,.564706,0,.254902,.396078,.627451,0,.380392,.498039,.690196,0,.505882,.6,.752941,.145098,.631373,.701961,.815686,.364706,.756863,.8,.878431,.580392,.882353,.901961,.941176,.796078,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_green2yellow_BW",RGBPoints:[-1,0,0,0,-.87451,0,.105542,.0603919,-.74902,0,.159454,.104148,-.623529,0,.219502,.15542,-.498039,0,.282276,.203811,-.372549,0,.346331,.235652,-.247059,0,.411765,.235428,-.121569,0,.477177,.217977,.00392157,.0593644,.541635,.21361,.129412,.233081,.604722,.210591,.254902,.369803,.664942,.226536,.380392,.498446,.722367,.288237,.505882,.601929,.782244,.380815,.631373,.703207,.840497,.512134,.756863,.803186,.896433,.674462,.882353,.903834,.950266,.846715,1,1,1,.999981]},{ColorSpace:"Lab",Name:"blue2cyan",RGBPoints:[-1,0,0,0,-.87451,0,.152941,.364706,-.74902,0,.254902,.470588,-.623529,0,.34902,.572549,-.498039,0,.443137,.670588,-.372549,0,.537255,.772549,-.247059,0,.627451,.870588,-.121569,0,.717647,.964706,.00392157,.0784314,.772549,1,.129412,.207843,.858824,1,.254902,.32549,.941176,1,.380392,.45098,1,1,.505882,.560784,1,1,.631373,.662745,1,1,.756863,.760784,1,1,.882353,.870588,1,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_blue2cyan_BW",RGBPoints:[-1,405298e-12,0,59012e-10,-.87451,.0207526,.0740933,.18093,-.74902,0,.121033,.30343,-.623529,0,.166892,.416095,-.498039,0,.216768,.524796,-.372549,.0164769,.275471,.608585,-.247059,.0544527,.344824,.659267,-.121569,.0880643,.419118,.688675,.00392157,.127938,.492556,.720256,.129412,.149476,.566946,.756918,.254902,.188961,.641333,.792122,.380392,.245482,.715336,.827609,.505882,.329216,.786235,.874761,.631373,.453558,.852803,.918466,.756863,.626281,.910493,.954,.882353,.82257,.958709,.980146,1,1,1,.999989]},{ColorSpace:"Lab",Name:"erdc_blue_BW",RGBPoints:[-1,0,0,0,-.87451,.0425591,.0763529,.150682,-.74902,.0569472,.119154,.275403,-.623529,.0635978,.164772,.395427,-.498039,.0774342,.213851,.510014,-.372549,.106815,.267034,.615102,-.247059,.122093,.324649,.720068,-.121569,.160851,.387068,.806956,.00392157,.213754,.453516,.878012,.129412,.26722,.524656,.932436,.254902,.326844,.599279,.968038,.380392,.403403,.674712,.984784,.505882,.499703,.745519,1,.631373,.615055,.813983,1,.756863,.74405,.879228,1,.882353,.877909,.941913,1,1,1,1,.999996]},{ColorSpace:"Lab",Name:"BLUE-WHITE",RGBPoints:[-1,0,0,0,-.87451,0,0,.082353,-.74902,0,0,.168627,-.623529,0,0,.254902,-.498039,0,0,.337255,-.372549,0,0,.423529,-.247059,0,0,.509804,-.121569,0,.101961,.592157,.00392157,0,.203922,.678431,.129412,0,.301961,.764706,.254902,0,.403922,.85098,.380392,0,.505882,.933333,.505882,0,.603922,1,.631373,.254902,.705882,1,.756863,.509804,.807843,1,.882353,.764706,.905882,1,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_purple_BW",RGBPoints:[-1,4264e-11,0,620844e-12,-.87451,.100579,.0593111,.145666,-.74902,.167794,.0889224,.254953,-.623529,.231446,.123339,.360511,-.498039,.296699,.163027,.461278,-.372549,.363211,.209286,.55306,-.247059,.431136,.260776,.637195,-.121569,.498202,.320012,.705799,.00392157,.567456,.380459,.778091,.129412,.629381,.445284,.8448,.254902,.688373,.517374,.895694,.380392,.74891,.590906,.93976,.505882,.805017,.667956,.977626,.631373,.850914,.752618,.992396,.756863,.89724,.838454,.994093,.882353,.948461,.922603,.994449,1,1,1,.999967]},{ColorSpace:"Lab",Name:"erdc_magenta_BW",RGBPoints:[-1,0,0,254023e-10,-.87451,.128696,.0456782,.11635,-.74902,.228133,.0476299,.201452,-.623529,.327273,.0374065,.282107,-.498039,.420953,.0408166,.35709,-.372549,.511562,.0642203,.430511,-.247059,.599552,.102686,.504257,-.121569,.684646,.150536,.579429,.00392157,.765817,.205978,.656062,.129412,.839176,.27229,.731807,.254902,.89536,.357594,.797309,.380392,.930238,.457825,.846984,.505882,.945921,.564536,.880571,.631373,.948995,.670753,.902279,.756863,.947124,.772819,.918171,.882353,.947265,.869424,.934352,1,.954719,.95475,.954726]},{ColorSpace:"Lab",Name:"magenta",RGBPoints:[-1,0,0,0,-.87451,.364706,0,.152941,-.74902,.470588,0,.254902,-.623529,.572549,0,.34902,-.498039,.670588,0,.443137,-.372549,.772549,0,.537255,-.247059,.870588,0,.627451,-.121569,.964706,0,.717647,.00392157,1,.0784314,.772549,.129412,1,.207843,.858824,.254902,1,.32549,.941176,.380392,1,.45098,1,.505882,1,.560784,1,.631373,1,.662745,1,.756863,1,.760784,1,.882353,1,.870588,1,1,1,1,1]},{ColorSpace:"Lab",Name:"RED-PURPLE",RGBPoints:[-1,0,0,0,-.87451,.188235,0,.007843,-.74902,.345098,0,.035294,-.623529,.439216,0,.098039,-.498039,.533333,0,.152941,-.372549,.627451,.015686,.211765,-.247059,.721569,.031373,.266667,-.121569,.8,.047059,.329412,.00392157,.862745,.047059,.403922,.129412,.941176,.062745,.466667,.254902,.988235,.078431,.54902,.380392,.988235,.141176,.643137,.505882,.988235,.25098,.729412,.631373,.988235,.376471,.811765,.756863,.988235,.54902,.886275,.882353,.988235,.752941,.952941,1,.996078,.996078,.996078]},{ColorSpace:"Lab",Name:"erdc_red_BW",RGBPoints:[-1,0,0,0,-.87451,.147204,.0480135,.0401815,-.74902,.253411,.0617478,.0301333,-.623529,.356059,.0746331,.0446897,-.498039,.457731,.0934935,.0636931,-.372549,.557199,.122714,.0860013,-.247059,.665179,.144238,.105585,-.121569,.763833,.187056,.138326,.00392157,.847035,.254558,.189407,.129412,.905663,.345937,.258215,.254902,.941431,.447111,.346277,.380392,.962608,.546927,.457571,.505882,.987833,.637276,.569944,.631373,.994202,.732176,.687958,.756863,.993304,.826268,.800567,.882353,.994413,.917205,.906393,1,1,1,.999979]},{ColorSpace:"Lab",Name:"RED_TEMPERATURE",RGBPoints:[-1,0,0,0,-.87451,.090196,0,0,-.74902,.180392,0,0,-.623529,.270588,0,0,-.498039,.360784,0,0,-.372549,.45098,0,0,-.247059,.545098,0,0,-.121569,.635294,0,0,.00392157,.72549,.058824,0,.129412,.815686,.176471,0,.254902,.905882,.294118,0,.380392,1,.411765,0,.505882,1,.533333,.027451,.631373,1,.65098,.27451,.756863,1,.768627,.521569,.882353,1,.886275,.768627,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_orange_BW",RGBPoints:[-1,0,0,253806e-10,-.87451,.135871,.0593824,0,-.74902,.224328,.0907216,0,-.623529,.318083,.119647,0,-.498039,.414443,.150246,0,-.372549,.511077,.184884,0,-.247059,.605501,.226033,0,-.121569,.695274,.275491,0,.00392157,.777826,.334445,0,.129412,.851498,.402441,0,.254902,.915899,.47759,602975e-9,.380392,.971984,.557882,.0361443,.505882,1,.641287,.135967,.631373,1,.725198,.27997,.756863,1,.808205,.438135,.882353,1,.89306,.587036,1,1,.977928,.721599]},{ColorSpace:"Lab",Name:"heated_object",RGBPoints:[-1,0,0,0,-.87451,.34902,.0862745,0,-.74902,.45098,.172549,0,-.623529,.52549,.231373,0,-.498039,.580392,.278431,0,-.372549,.623529,.313725,0,-.247059,.670588,.352941,0,-.121569,.717647,.392157,0,.00392157,.772549,.439216,0,.129412,.839216,.494118,0,.254902,.901961,.541176,0,.380392,.968627,.6,0,.505882,1,.658824,0,.631373,1,.721569,0,.756863,1,.827451,.298039,.882353,1,.976471,.72549,1,1,1,1]},{ColorSpace:"Lab",Name:"erdc_gold_BW",RGBPoints:[-1,0,0,190933e-10,-.87451,.128363,.0636265,0,-.74902,.193795,.111057,0,-.623529,.25976,.15987,0,-.498039,.328546,.210589,0,-.372549,.399726,.26332,0,-.247059,.472969,.318261,0,-.121569,.546245,.375827,0,.00392157,.61745,.436719,0,.129412,.685545,.501113,0,.254902,.749578,.568799,0,.380392,.80962,.6394,0,.505882,.865572,.712699,.10257,.631373,.917709,.787569,.233665,.756863,.966914,.863138,.369608,.882353,1,.939405,.496104,1,.999225,1,.612275]},{ColorSpace:"Lab",Name:"erdc_brown_BW",RGBPoints:[-1,33216e-11,0,483629e-11,-.87451,.14693,.0518172,0,-.74902,.225806,.0814996,0,-.623529,.301681,.111452,0,-.498039,.370487,.150664,0,-.372549,.43108,.199477,0,-.247059,.4849,.255107,0,-.121569,.536798,.313486,0,.00392157,.59286,.371167,0,.129412,.653119,.428135,0,.254902,.714589,.485917,.0379541,.380392,.774667,.54565,.116634,.505882,.831222,.608047,.183895,.631373,.880305,.674199,.260298,.756863,.922314,.742472,.367086,.882353,.959408,.811222,.497258,1,.993548,.875183,.622093]},{ColorSpace:"Lab",Name:"copper_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0784314,.0501961,.0313725,-.74902,.156863,.100392,.0627451,-.623529,.235294,.150588,.0941176,-.498039,.313725,.200784,.12549,-.372549,.392157,.25098,.156863,-.247059,.470588,.301176,.188235,-.121569,.54902,.351373,.219608,.00392157,.627451,.401569,.25098,.129412,.705882,.451765,.282353,.254902,.784314,.501961,.313725,.380392,.862745,.552157,.345098,.505882,.941176,.602353,.376471,.631373,1,.652549,.407843,.756863,1,.702745,.439216,.882353,1,.752941,.470588,1,1,.8,.5]},{ColorSpace:"Lab",Name:"pink_Matlab",RGBPoints:[-1,0,0,0,-.87451,.312416,.204524,.204524,-.74902,.441822,.289241,.289241,-.623529,.54112,.354246,.354246,-.498039,.624831,.409048,.409048,-.372549,.698582,.45733,.45733,-.247059,.764404,.502282,.500979,-.121569,.791292,.591516,.54112,.00392157,.817297,.66895,.578481,.129412,.842499,.738308,.613572,.254902,.866968,.801687,.646762,.380392,.890766,.86041,.678329,.505882,.913944,.913944,.711254,.631373,.936549,.936549,.79459,.756863,.958621,.958621,.869979,.882353,.980196,.980196,.939336,1,1,1,1]},{ColorSpace:"Lab",Name:"bone_Matlab",RGBPoints:[-1,0,0,0,-.87451,.054902,.054902,.075817,-.74902,.109804,.109804,.151634,-.623529,.164706,.164706,.227451,-.498039,.219608,.219608,.303268,-.372549,.27451,.27451,.379085,-.247059,.329412,.329902,.454412,-.121569,.384314,.405719,.509314,.00392157,.439216,.481536,.564216,.129412,.494118,.557353,.619118,.254902,.54902,.63317,.67402,.380392,.603922,.708987,.728922,.505882,.660294,.783824,.783824,.631373,.746569,.838725,.838725,.756863,.832843,.893627,.893627,.882353,.919118,.948529,.948529,1,1,1,1]},{ColorSpace:"Lab",Name:"gray_Matlab",RGBPoints:[-1,0,0,0,-.87451,.0627451,.0627451,.0627451,-.74902,.12549,.12549,.12549,-.623529,.188235,.188235,.188235,-.498039,.25098,.25098,.25098,-.372549,.313725,.313725,.313725,-.247059,.376471,.376471,.376471,-.121569,.439216,.439216,.439216,.00392157,.501961,.501961,.501961,.129412,.564706,.564706,.564706,.254902,.627451,.627451,.627451,.380392,.690196,.690196,.690196,.505882,.752941,.752941,.752941,.631373,.815686,.815686,.815686,.756863,.878431,.878431,.878431,.882353,.941176,.941176,.941176,1,1,1,1]},{ColorSpace:"Lab",Name:"Purples",RGBPoints:[-1,.247059,0,.490196,-.87451,.288397,.07677,.525629,-.74902,.32975,.153587,.561092,-.623529,.373057,.236263,.600461,-.498039,.416363,.319,.639923,-.372549,.459669,.405613,.685198,-.247059,.503345,.491534,.730058,-.121569,.562399,.54862,.757616,.00392157,.621453,.606075,.785544,.129412,.680508,.674971,.824914,.254902,.739562,.743406,.863899,.380392,.798616,.800492,.893426,.505882,.85684,.856655,.922491,.631373,.898178,.894056,.942176,.756863,.938654,.930919,.961646,.882353,.964245,.958478,.977393,1,.988235,.984314,.992157]},{ColorSpace:"Lab",Name:"Blues",RGBPoints:[-1,.031373,.188235,.419608,-.87451,.031373,.253195,.516063,-.74902,.031757,.318139,.612149,-.623529,.080969,.38113,.661361,-.498039,.130427,.444152,.710327,-.372549,.195386,.509112,.743791,-.247059,.260715,.573841,.777209,-.121569,.341423,.628958,.808704,.00392157,.422745,.684075,.839892,.129412,.523137,.739193,.861546,.254902,.622684,.793464,.883429,.380392,.701423,.826928,.910988,.505882,.778685,.8603,.937993,.631373,.825928,.891795,.953741,.756863,.87328,.923291,.969489,.882353,.922491,.954787,.985236,1,.968627,.984314,1]},{ColorSpace:"Lab",Name:"Greens",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546082,.271326,-.372549,.197232,.609073,.31857,-.247059,.257255,.671742,.365859,-.121569,.357647,.720953,.415071,.00392157,.45767,.769919,.465021,.129412,.546251,.811257,.537855,.254902,.634295,.852211,.610688,.380392,.709097,.883706,.683522,.505882,.78316,.914833,.755894,.631373,.842215,.938454,.818885,.756863,.899977,.961538,.880692,.882353,.935409,.975317,.92203,1,.968627,.988235,.960784]},{ColorSpace:"Lab",Name:"PuBu",RGBPoints:[-1,.301961,0,.294118,-.87451,.404321,.029527,.390573,-.74902,.50599,.059592,.486782,-.623529,.519769,.158016,.551742,-.498039,.533456,.256194,.616301,-.372549,.54133,.33887,.655671,-.247059,.54902,.421592,.695087,-.121569,.54902,.506236,.736424,.00392157,.550127,.590573,.777701,.129412,.585559,.665375,.81707,.254902,.622145,.739023,.855825,.380392,.687105,.784298,.879446,.505882,.752065,.829758,.903253,.631373,.817024,.87897,.930811,.756863,.880907,.927213,.957832,.882353,.926182,.958708,.975548,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"BuPu",RGBPoints:[-1,.007843,.219608,.345098,-.87451,.01178,.286536,.449427,-.74902,.015702,.35328,.553479,-.623529,.01767,.396586,.622376,-.498039,.021115,.4402,.690688,-.372549,.11757,.503191,.722184,-.247059,.214625,.565859,.753633,-.121569,.336671,.615071,.78316,.00392157,.457978,.663975,.812503,.129412,.556401,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821638,.903068,.631373,.873387,.864944,.92669,.756863,.927536,.907605,.949988,.882353,.964937,.9391,.967705,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGn",RGBPoints:[-1,.031373,.25098,.505882,-.87451,.031373,.329719,.590527,-.74902,.031911,.408397,.674787,-.623529,.100807,.479262,.710219,-.498039,.169704,.550219,.745744,-.372549,.238601,.62699,.787082,-.247059,.307958,.703114,.826759,-.121569,.39654,.752326,.797232,.00392157,.485121,.801046,.767705,.129412,.573702,.83451,.738178,.254902,.661592,.867743,.711034,.380392,.732457,.895302,.74253,.505882,.801845,.922307,.774579,.631373,.841215,.938055,.817885,.756863,.880907,.95391,.861084,.882353,.926182,.971626,.902422,1,.968627,.988235,.941176]},{ColorSpace:"Lab",Name:"GnBu",RGBPoints:[-1,0,.266667,.105882,-.87451,0,.347374,.139346,-.74902,538e-6,.427912,.172933,-.623529,.069435,.486967,.222145,-.498039,.138178,.546175,.272095,-.372549,.197232,.615071,.368551,-.247059,.256609,.683276,.464867,-.121569,.329443,.722645,.555417,.00392157,.403137,.762138,.645413,.129412,.503529,.805444,.718247,.254902,.603922,.848597,.790465,.380392,.704314,.887966,.847551,.505882,.802307,.926321,.903714,.631373,.851519,.944037,.941115,.756863,.899977,.961538,.976901,.882353,.935409,.975317,.984775,1,.968627,.988235,.992157]},{ColorSpace:"Lab",Name:"GnBuPu",RGBPoints:[-1,.003922,.27451,.211765,-.87451,.003922,.349312,.280661,-.74902,.003937,.423852,.349773,-.623529,.005905,.46519,.446228,-.498039,.009443,.506344,.542837,-.372549,.111803,.535871,.649135,-.247059,.214025,.565859,.753633,-.121569,.310481,.615071,.78316,.00392157,.407797,.663975,.812503,.129412,.531811,.703345,.836125,.254902,.65421,.742714,.859669,.380392,.736886,.782084,.881323,.505882,.81827,.821176,.902884,.631373,.873387,.854641,.922568,.756863,.927536,.888535,.942361,.882353,.964937,.929873,.964014,1,1,.968627,.984314]},{ColorSpace:"Lab",Name:"BuGnYl",RGBPoints:[-1,.031373,.113725,.345098,-.87451,.088458,.159,.463206,-.74902,.145052,.204567,.5807,-.623529,.139146,.287243,.620069,-.498039,.13318,.370196,.659562,-.372549,.123337,.470588,.706805,-.247059,.115386,.570335,.753126,-.121569,.186251,.643168,.761,.00392157,.258716,.71514,.768074,.129412,.380761,.760415,.750358,.254902,.503576,.806075,.732795,.380392,.645306,.861192,.719016,.505882,.783899,.91511,.705606,.631373,.858701,.944637,.6997,.756863,.931349,.973303,.698424,.882353,.966782,.987082,.777163,1,1,1,.85098]},{ColorSpace:"Lab",Name:"PuRd",RGBPoints:[-1,.286275,0,.415686,-.87451,.38273,.001968,.441276,-.74902,.479231,.003922,.466774,-.623529,.581592,.003922,.480554,-.498039,.683799,.00549,.494887,-.372549,.776317,.105882,.544098,-.247059,.867866,.206321,.592618,-.121569,.919047,.308681,.612303,.00392157,.968812,.411226,.632603,.129412,.974717,.519493,.671972,.254902,.980546,.626451,.71065,.380392,.984483,.701253,.732303,.505882,.988328,.77504,.755617,.631373,.990296,.828189,.812703,.756863,.992372,.880907,.869035,.882353,.996309,.926182,.912341,1,1,.968627,.952941]},{ColorSpace:"Lab",Name:"RdPu",RGBPoints:[-1,.403922,0,.121569,-.87451,.500377,0,.192434,-.74902,.596909,277e-6,.263037,-.623529,.703206,.035709,.300438,-.498039,.808612,.071296,.338854,-.372549,.857824,.116571,.441215,-.247059,.905513,.163552,.54293,-.121569,.889765,.281661,.617732,.00392157,.873156,.39897,.691611,.129412,.82985,.491488,.736886,.254902,.789081,.583237,.781853,.380392,.810734,.656071,.819254,.505882,.833126,.729181,.85684,.631373,.870527,.80792,.898178,.756863,.907605,.884398,.938331,.882353,.9391,.921799,.958016,1,.968627,.956863,.976471]},{ColorSpace:"Lab",Name:"Oranges",RGBPoints:[-1,.498039,.152941,.015686,-.87451,.57481,.182468,.013718,-.74902,.651765,.212042,.011734,-.623529,.752157,.247474,.007797,-.498039,.851719,.283368,.004475,-.372549,.898962,.348328,.039908,-.247059,.945652,.413426,.076401,-.121569,.969273,.484291,.157109,.00392157,.992157,.554971,.238185,.129412,.992157,.619931,.330704,.254902,.992157,.684967,.423837,.380392,.992157,.751895,.532103,.505882,.992249,.817716,.639354,.631373,.994218,.861023,.725967,.756863,.996186,.903576,.810965,.882353,.998155,.933103,.868051,1,1,.960784,.921569]},{ColorSpace:"Lab",Name:"Reds",RGBPoints:[-1,.403922,0,.05098,-.87451,.525967,.029527,.066728,-.74902,.647643,.058962,.082476,-.623529,.722445,.076678,.098224,-.498039,.797186,.095194,.114187,-.372549,.868051,.164091,.143714,-.247059,.937809,.233541,.173933,-.121569,.96143,.326059,.232987,.00392157,.984375,.418147,.292657,.129412,.986344,.496886,.371396,.254902,.988235,.575702,.450673,.380392,.988235,.656409,.543191,.505882,.98842,.736747,.635894,.631373,.992357,.809581,.732349,.756863,.996186,.880692,.826759,.882353,.998155,.92203,.885813,1,1,.960784,.941176]},{ColorSpace:"Lab",Name:"RdOr",RGBPoints:[-1,.498039,0,0,-.87451,.6004,0,0,-.74902,.702514,738e-6,477e-6,-.623529,.773379,.095225,.061499,-.498039,.843875,.189865,.12283,-.372549,.891119,.294195,.203537,-.247059,.937855,.397924,.283137,-.121569,.963445,.476663,.316601,.00392157,.988297,.555771,.351665,.129412,.990265,.646321,.436309,.254902,.992157,.735256,.519646,.380392,.992157,.784468,.570827,.505882,.992249,.833218,.623483,.631373,.994218,.872587,.706159,.756863,.996186,.911419,.788189,.882353,.998155,.940946,.859054,1,1,.968627,.92549]},{ColorSpace:"Lab",Name:"BrOrYl",RGBPoints:[-1,.4,.145098,.023529,-.87451,.500392,.174625,.019592,-.74902,.600784,.204291,.015656,-.623529,.701176,.251534,.011719,-.498039,.800984,.299146,.008397,-.372549,.863975,.370012,.043829,-.247059,.926321,.441107,.0794,-.121569,.961753,.521815,.120738,.00392157,.996078,.602645,.163122,.129412,.996078,.68729,.237924,.254902,.996078,.771011,.314879,.380392,.996078,.832034,.444798,.505882,.996171,.892042,.572595,.631373,.998139,.931411,.65724,.756863,1,.969489,.741669,.882353,1,.985236,.822376,1,1,1,.898039]},{ColorSpace:"Lab",Name:"RdOrYl",RGBPoints:[-1,.501961,0,.14902,-.87451,.622038,0,.14902,-.74902,.741761,4e-4,.148866,-.623529,.816563,.05158,.129181,-.498039,.890965,.10356,.110235,-.372549,.940177,.205921,.137793,-.247059,.988281,.308789,.165536,-.121569,.99025,.432803,.200969,.00392157,.992218,.555217,.236278,.129412,.994187,.628051,.267774,.254902,.996078,.701038,.301269,.380392,.996078,.777809,.383945,.505882,.996171,.852826,.466621,.631373,.998139,.892195,.549296,.756863,1,.931349,.632188,.882353,1,.966782,.7188,1,1,1,.8]},{ColorSpace:"Lab",Name:"CIELab_blue2red",RGBPoints:[-1,0,.6,.74902,1,.76863,.46667,.34118]},{ColorSpace:"Lab",Name:"blue2yellow",RGBPoints:[-1,0,0,1,0,.5,.5,.5,1,1,1,0]},{ColorSpace:"Lab",Name:"erdc_blue2gold",RGBPoints:[-1,.175119,.0438468,1,-.874016,.22383,.159771,.94557,-.748031,.27254,.233611,.891216,-.622047,.321251,.296526,.836857,-.496063,.369962,.354296,.782359,-.370079,.418672,.409139,.72754,-.244094,.467383,.462152,.672148,-.11811,.51609,.51396,.615825,.00787402,.572863,.55452,.559172,.133858,.630269,.593822,.517729,.259843,.689588,.624668,.47446,.385827,.745394,.656113,.428638,.511811,.798624,.688104,.379105,.637795,.849926,.720593,.323834,.76378,.899765,.753543,.258657,.889764,.948487,.78692,.171778,1,.990413,.816451,.00729848]},{ColorSpace:"Lab",Name:"erdc_blue2yellow",RGBPoints:[-1,.0830122,0,.495617,-.87451,.141973,.0551288,.57363,-.74902,.193048,.110258,.604561,-.623529,.234231,.165386,.57643,-.498039,.275413,.220515,.548299,-.372549,.316596,.275644,.520169,-.247059,.357778,.330773,.492038,-.121569,.398961,.385901,.463908,.00392157,.449929,.438487,.426815,.129412,.511572,.488299,.379944,.254902,.581222,.53603,.325741,.380392,.650871,.583761,.271538,.505882,.720521,.631493,.217335,.631373,.79017,.679224,.163132,.756863,.85982,.726955,.108929,.882353,.910254,.774159,.14112,1,.927513,.81759,.306289]},{ColorSpace:"Lab",Name:"erdc_cyan2orange",RGBPoints:[-1,.0471513,.213874,.414329,-.87451,.0674702,.256648,.439027,-.74902,.0959957,.299331,.462089,-.623529,.132428,.341872,.483212,-.498039,.188743,.38277,.500597,-.372549,.268511,.420229,.512179,-.247059,.352945,.455602,.519101,-.121569,.43893,.489368,.521538,.00392157,.522445,.522495,.522436,.129412,.600089,.555682,.53205,.254902,.67988,.587981,.539163,.380392,.761011,.619586,.544439,.505882,.84278,.650741,.548567,.631373,.910713,.687347,.557822,.756863,.952232,.734972,.577775,.882353,.975642,.789858,.604868,1,.990752,.843643,.632857]},{ColorSpace:"Lab",Name:"erdc_purple2green",RGBPoints:[-1,.235006,.0483128,.530899,-.87451,.302968,.108419,.552391,-.74902,.360241,.166059,.569502,-.623529,.406746,.226782,.579373,-.498039,.444073,.28964,.582094,-.372549,.473648,.353774,.577947,-.247059,.497636,.418154,.567911,-.121569,.519086,.481741,.553968,.00392157,.542884,.542914,.542875,.129412,.566303,.603989,.527499,.254902,.595218,.662965,.516857,.380392,.628641,.720701,.510673,.505882,.665373,.777849,.508165,.631373,.704182,.834921,.508303,.756863,.743846,.892328,.50999,.882353,.783158,.950422,.512181,1,.818617,1,.513888]},{ColorSpace:"Lab",Name:"erdc_purple2green_dark",RGBPoints:[-1,.107656,0,.428682,-.87451,.1924,0,.449799,-.74902,.255118,.0648939,.466726,-.623529,.304256,.133066,.476703,-.498039,.343202,.19716,.479793,-.372549,.373876,.260353,.476241,-.247059,.398497,.322872,.466953,-.121569,.420016,.384252,.453785,.00392157,.44319,.443216,.443186,.129412,.465553,.502139,.428233,.254902,.492959,.559151,.417591,.380392,.524654,.615092,.411016,.505882,.55959,.670583,.40779,.631373,.596614,.726102,.406948,.756863,.634544,.782032,.407439,.882353,.672183,.838703,.408237,1,.706131,.892759,.408452]},{ColorSpace:"Lab",Name:"coolwarm",RGBPoints:[-1,.229806,.298718,.753683,-.875,.303869,.406535,.844959,-.75,.383013,.509419,.917388,-.625,.466667,.604563,.968155,-.5,.552953,.688929,.995376,-.375,.639176,.7596,.998151,-.25,.722193,.813953,.976575,-.125,.798692,.849786,.931689,0,.865395,.86541,.865396,.125,.924128,.827385,.774508,.25,.958853,.769768,.678008,.375,.969954,.694267,.579375,.5,.958003,.602842,.481776,.625,.923945,.497309,.38797,.75,.869187,.378313,.300267,.875,.795632,.241284,.220526,1,.705673,.0155562,.150233]},{ColorSpace:"Lab",Name:"BuRd",RGBPoints:[-1,.019608,.188235,.380392,-.87451,.088504,.321107,.564937,-.74902,.163399,.444983,.697501,-.623529,.247059,.555709,.754095,-.498039,.420684,.676432,.818685,-.372549,.606459,.789773,.880277,-.247059,.761476,.868512,.924567,-.121569,.878047,.925721,.951942,.00392157,.969089,.966474,.964937,.129412,.983852,.897578,.846828,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"Spectral_lowBlue",RGBPoints:[-1,.368627,.309804,.635294,-.87451,.260361,.450058,.70173,-.74902,.248058,.591311,.717186,-.623529,.376009,.734025,.658132,-.498039,.537947,.814764,.64506,-.372549,.702345,.879585,.636678,-.247059,.84752,.938639,.607151,-.121569,.940408,.976163,.656055,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.937793,.398539,.270127,.756863,.861515,.282891,.299654,.882353,.746482,.144637,.288812,1,.619608,.003922,.258824]},{ColorSpace:"Lab",Name:"GnRP",RGBPoints:[-1,0,.266667,.105882,-.87451,.066436,.394617,.174779,-.74902,.168858,.524567,.25767,-.623529,.323875,.657439,.361015,-.498039,.504883,.772318,.506344,-.372549,.678431,.870127,.654902,-.247059,.803922,.921799,.780392,-.121569,.897116,.951942,.882814,.00392157,.967397,.965936,.967474,.129412,.928028,.879815,.930565,.254902,.866052,.780777,.882891,.380392,.77501,.665129,.821376,.505882,.675663,.537024,.737024,.631373,.57847,.396155,.645982,.756863,.492349,.223914,.547559,.882353,.375548,.096886,.423299,1,.25098,0,.294118]},{ColorSpace:"Lab",Name:"GYPi",RGBPoints:[-1,.152941,.392157,.098039,-.87451,.246444,.505344,.117724,-.74902,.351942,.614533,.161399,-.623529,.474971,.717878,.240138,-.498039,.611995,.811226,.392849,-.372549,.746328,.893118,.565321,-.247059,.859516,.94233,.747405,-.121569,.928105,.96386,.875663,.00392157,.969089,.966859,.968012,.129412,.983852,.910265,.948328,.254902,.979239,.833218,.914648,.380392,.949712,.729873,.862976,.505882,.905652,.58293,.763552,.631373,.85521,.410073,.652211,.756863,.793695,.183699,.531642,.882353,.683737,.063899,.420761,1,.556863,.003922,.321569]},{ColorSpace:"Lab",Name:"GnYlRd",RGBPoints:[-1,0,.407843,.215686,-.87451,.063975,.525952,.277201,-.74902,.177932,.633064,.332718,-.623529,.364937,.724106,.379469,-.498039,.527951,.797155,.40223,-.372549,.678431,.862822,.433449,-.247059,.803922,.916955,.514648,-.121569,.909419,.961861,.625067,.00392157,.999923,.997616,.745021,.129412,.997463,.921338,.61707,.254902,.995002,.824606,.499885,.380392,.992541,.701576,.39654,.505882,.973472,.547405,.318108,.631373,.939023,.389927,.245521,.756863,.867666,.239831,.176624,.882353,.762399,.110727,.151326,1,.647059,0,.14902]},{ColorSpace:"Lab",Name:"GBBr",RGBPoints:[-1,0,.235294,.188235,-.87451,.002461,.338639,.301423,-.74902,.055902,.448981,.417609,-.623529,.183852,.56955,.538178,-.498039,.357785,.700115,.660746,-.372549,.540177,.819531,.77624,-.247059,.714879,.890888,.864821,-.121569,.851134,.934564,.922645,.00392157,.960861,.959785,.95694,.129412,.963322,.927797,.83391,.254902,.939946,.868897,.68935,.380392,.883353,.775394,.517109,.505882,.808074,.625836,.324106,.631373,.717647,.476355,.15494,.756863,.592157,.358247,.06882,.882353,.458593,.26436,.031142,1,.329412,.188235,.019608]},{ColorSpace:"Lab",Name:"PuOr",RGBPoints:[-1,.498039,.231373,.031373,-.87451,.62599,.30273,.026451,-.74902,.746943,.387082,.037524,-.623529,.85767,.490427,.071972,-.498039,.936409,.617762,.236371,-.372549,.992695,.743099,.43291,-.247059,.995156,.841523,.63714,-.121569,.985313,.913802,.813687,.00392157,.966244,.966398,.967705,.129412,.889965,.89504,.938178,.254902,.806151,.804306,.894656,.380392,.712649,.688658,.833141,.505882,.594233,.554325,.744637,.631373,.474894,.404229,.652364,.756863,.366628,.217224,.563783,.882353,.266436,.089965,.434833,1,.176471,0,.294118]},{ColorSpace:"Lab",Name:"PRGn",RGBPoints:[-1,.25098,0,.294118,-.87451,.383852,.103345,.431911,-.74902,.497732,.234679,.55371,-.623529,.583852,.40692,.652134,-.498039,.681968,.545175,.742561,-.372549,.7807,.672357,.825221,-.247059,.871742,.788005,.886736,-.121569,.930488,.885198,.932872,.00392157,.966321,.968089,.965859,.129412,.892503,.950865,.877278,.254902,.796078,.91857,.772549,.380392,.670588,.866897,.647059,.505882,.493195,.765398,.496655,.631373,.314187,.649135,.354556,.756863,.15917,.516263,.251211,.882353,.062284,.386621,.170473,1,0,.266667,.105882]},{ColorSpace:"Lab",Name:"PiYG",RGBPoints:[-1,.556863,.003922,.321569,-.87451,.692195,.067897,.427374,-.74902,.797539,.197847,.539177,-.623529,.859054,.424221,.659746,-.498039,.908574,.592618,.770319,-.372549,.951557,.736332,.866205,-.247059,.981084,.839677,.917878,-.121569,.98293,.913802,.949558,.00392157,.96732,.968474,.965629,.129412,.92549,.963552,.869666,.254902,.852441,.939254,.736025,.380392,.739254,.890042,.553941,.505882,.60323,.805536,.382238,.631373,.467282,.711419,.235217,.756863,.344252,.608074,.156478,.882353,.2406,.49827,.116494,1,.152941,.392157,.098039]},{ColorSpace:"Lab",Name:"OrPu",RGBPoints:[-1,.176471,0,.294118,-.87451,.272434,.095963,.444214,-.74902,.373395,.228912,.56932,-.623529,.481661,.415917,.657901,-.498039,.601922,.562937,.750481,-.372549,.718493,.695886,.836986,-.247059,.811995,.811534,.898501,-.121569,.894733,.8995,.940023,.00392157,.969166,.966859,.963629,.129412,.98639,.910265,.803691,.254902,.995002,.835371,.624375,.380392,.992541,.736947,.420146,.505882,.931949,.609458,.224221,.631373,.85075,.483968,.069819,.756863,.740023,.380623,.035371,.882353,.617993,.29827,.026759,1,.498039,.231373,.031373]},{ColorSpace:"Lab",Name:"BrBG",RGBPoints:[-1,.329412,.188235,.019608,-.87451,.467205,.269435,.031911,-.74902,.6,.365629,.074202,-.623529,.72549,.483737,.160323,-.498039,.812995,.635832,.336409,-.372549,.88689,.781238,.527874,-.247059,.943483,.87474,.700115,-.121569,.963168,.929796,.841599,.00392157,.957247,.959938,.959554,.129412,.84406,.932872,.920185,.254902,.70396,.886428,.859285,.380392,.529258,.815071,.770704,.505882,.346251,.691811,.653057,.631373,.175855,.562015,.530642,.756863,.047905,.441446,.410073,.882353,.002307,.33218,.294348,1,0,.235294,.188235]},{ColorSpace:"Lab",Name:"GyRd",RGBPoints:[-1,.101961,.101961,.101961,-.87451,.227451,.227451,.227451,-.74902,.359939,.359939,.359939,-.623529,.502653,.502653,.502653,-.498039,.631373,.631373,.631373,-.372549,.749865,.749865,.749865,-.247059,.843368,.843368,.843368,-.121569,.926105,.926105,.926105,.00392157,.999846,.997232,.995694,.129412,.994925,.908651,.857901,.254902,.982468,.800692,.706113,.380392,.960323,.66782,.536332,.505882,.894579,.503806,.399769,.631373,.81707,.33218,.281046,.756863,.728489,.155017,.197386,.882353,.576932,.055363,.14925,1,.403922,0,.121569]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen",RGBPoints:[-1,.297553,0,.489074,-.87451,.40259,.151146,.567754,-.74902,.516038,.284843,.658231,-.623529,.629783,.423646,.750938,-.498039,.735198,.563697,.835956,-.372549,.82408,.695541,.903582,-.247059,.889091,.807454,.944862,-.121569,.92334,.886917,.951839,.00392157,.921045,.921084,.921003,.129412,.877324,.907455,.845381,.254902,.797649,.849713,.734695,.380392,.691646,.75964,.600532,.505882,.568981,.649159,.453807,.631373,.438945,.529756,.304259,.756863,.30973,.412001,.158303,.882353,.187078,.305111,.00251458,1,.101655,.220836,0]},{ColorSpace:"Lab",Name:"erdc_divHi_purpleGreen_dim",RGBPoints:[-1,.404088,.131038,.592767,-.87451,.486469,.230957,.651243,-.74902,.575165,.339335,.717723,-.623529,.662741,.454332,.784263,-.498039,.742071,.570213,.842918,-.372549,.806935,.678992,.886227,-.247059,.852219,.771315,.90763,-.121569,.873345,.837327,.901572,.00392157,.866783,.86682,.866745,.129412,.82839,.858225,.796812,.254902,.762578,.814287,.700202,.380392,.676429,.744229,.585735,.505882,.577033,.65732,.461526,.631373,.47128,.562476,.33476,.756863,.365461,.467957,.21076,.882353,.264758,.381138,.0878313,1,.182591,.312249,0]},{ColorSpace:"Lab",Name:"erdc_divLow_icePeach",RGBPoints:[-1,.480048,.817441,.998056,-.87451,.425898,.726921,.883187,-.74902,.366682,.629445,.761936,-.623529,.308756,.531002,.640217,-.498039,.258021,.43705,.523433,-.372549,.219244,.352381,.416348,-.247059,.195127,.281032,.322979,-.121569,.186286,.22627,.246525,.00392157,.192352,.19236,.192364,.129412,.255927,.214469,.191756,.254902,.340459,.254426,.206666,.380392,.444655,.309315,.234029,.505882,.565353,.376004,.270969,.631373,.697917,.450748,.314293,.756863,.836657,.529064,.360227,.882353,.972695,.614884,.413123,1,1,.705904,.472699]},{ColorSpace:"Lab",Name:"erdc_divLow_purpleGreen",RGBPoints:[-1,.956034,.666487,.952663,-.87451,.874457,.572698,.936352,-.74902,.753465,.488253,.909063,-.623529,.63309,.413507,.763833,-.498039,.514491,.345878,.620015,-.372549,.405008,.288141,.484376,-.247059,.311388,.241986,.363556,-.121569,.238722,.209044,.263449,.00392157,.192352,.192366,.192362,.129412,.200379,.233201,.168618,.254902,.230151,.291737,.165227,.380392,.279481,.366076,.178607,.505882,.344927,.453267,.205703,.631373,.421554,.549449,.242643,.756863,.503334,.649999,.284377,.882353,.583497,.749672,.324969,1,.650705,.837228,.356264]},{ColorSpace:"Lab",Name:"Haze_green",RGBPoints:[-1,1,.835294,.886275,-.87451,.937255,.756863,.870443,-.74902,.875817,.666376,.857807,-.623529,.778359,.583007,.808134,-.498039,.676253,.494118,.745098,-.372549,.561365,.390123,.682353,-.247059,.438344,.262745,.621496,-.121569,.321133,.141031,.558751,.00392157,.203922,.0217865,.495861,.129412,.265505,.129412,.433261,.254902,.311692,.255338,.37008,.380392,.356282,.377342,.310821,.505882,.39971,.488889,.258243,.631373,.442556,.604357,.205519,.756863,.48671,.71968,.152941,.882353,.529847,.830356,.100944,1,.572549,.933333,.054902]},{ColorSpace:"Lab",Name:"Haze_lime",RGBPoints:[-1,.704034,.784196,1,-.87451,.633111,.691418,.956078,-.74902,.564021,.600606,.912157,-.623529,.496827,.51189,.868235,-.498039,.43157,.425416,.824314,-.372549,.368248,.341347,.780392,-.247059,.306767,.259855,.736471,-.121569,.246862,.181069,.692549,.00392157,.191619,.109542,.648627,.129412,.257404,.194031,.604706,.254902,.321794,.278775,.560784,.380392,.387909,.364617,.516863,.505882,.456569,.451881,.472941,.631373,.527424,.540773,.42902,.756863,.599759,.631427,.385098,.882353,.673065,.723898,.341176,1,.742751,.812252,.3]},{ColorSpace:"RGB",Name:"Haze",RGBPoints:[-1,1,.835294,.996078,-.00392157,.023529,.141176,.498039,.00392157,.015686,.137255,.494118,1,.984314,.764706,0]},{ColorSpace:"Lab",Name:"Haze_cyan",RGBPoints:[-1,.956863,1,.835294,-.87451,.933188,.921714,.760784,-.74902,.870588,.803486,.671605,-.623529,.807843,.684096,.583297,-.498039,.745098,.569208,.494118,-.372549,.682353,.437763,.390123,-.247059,.621496,.288163,.262745,-.121569,.558751,.144517,.141031,.00392157,.495861,.0217865,.0413943,.129412,.433261,.137255,.129412,.254902,.37008,.263181,.255338,.380392,.306318,.381845,.372694,.505882,.243137,.503994,.494263,.631373,.180392,.629484,.619753,.756863,.117647,.754975,.747131,.882353,.054902,.876398,.866812,1,0,.988235,.976471]},{ColorSpace:"Lab",Name:"nic_Edge",RGBPoints:[-1,.191208,.191208,.191208,-.87451,.239484,.00545035,.614821,-.74902,.220593,.0617459,.863547,-.623529,.17509,.278988,.97794,-.498039,.143526,.576069,.998553,-.372549,.166456,.871883,.96594,-.247059,.376202,.993555,.981833,-.121569,.681996,.991297,.999239,.00392157,.954172,.952734,.94374,.129412,.999735,.99301,.662896,.254902,.979399,.991466,.357973,.380392,.968771,.854967,.162659,.505882,.999245,.556697,.144323,.631373,.973959,.26223,.177946,.756863,.852358,.0526707,.222974,.882353,.593889,.00912724,.238855,1,.191208,.191208,.191208]},{ColorSpace:"Lab",Name:"erdc_iceFire_H",RGBPoints:[-1,405432e-12,0,590122e-11,-.87451,0,.120401,.302675,-.74902,0,.216583,.524574,-.623529,.0552475,.345025,.6595,-.498039,.128047,.492588,.720288,-.372549,.188955,.641309,.792092,-.247059,.327673,.784935,.873434,-.121569,.60824,.892164,.935547,.00392157,.881371,.912178,.818099,.129412,.951407,.835621,.449279,.254902,.904481,.690489,0,.380392,.85407,.510864,0,.505882,.777093,.33018,88199e-8,.631373,.672862,.139087,.00269398,.756863,.508815,0,0,.882353,.299417,366289e-9,547829e-9,1,.0157519,.00332021,455569e-13]},{ColorSpace:"Lab",Name:"erdc_iceFire_L",RGBPoints:[-1,.870485,.913768,.832905,-.87451,.586919,.887865,.934003,-.74902,.31583,.776442,.867858,-.623529,.18302,.632034,.787722,-.498039,.117909,.484134,.713825,-.372549,.0507239,.335979,.654741,-.247059,0,.209874,.511832,-.121569,0,.114689,.28935,.00392157,.0157519,.00332021,455569e-13,.129412,.312914,0,0,.254902,.520865,0,0,.380392,.680105,.15255,.0025996,.505882,.785109,.339479,797922e-9,.631373,.857354,.522494,0,.756863,.910974,.699774,0,.882353,.951921,.842817,.478545,1,.881371,.912178,.818099]},{ColorSpace:"RGB",Name:"hsv",RGBPoints:[-1,1,0,0,-.666666,1,0,1,-.333333,0,0,1,0,0,1,1,.33333,0,1,0,.66666,1,1,0,1,1,0,0]},{ColorSpace:"Lab",Name:"hue_L60",RGBPoints:[-1,.964784,.400592,.349549,-.87451,.964915,.372498,.53785,-.74902,.892353,.401039,.759569,-.623529,.79263,.446956,.903017,-.498039,.682208,.49954,.966673,-.372549,.56392,.553082,.968836,-.247059,.442031,.606396,.901601,-.121569,.305499,.65701,.765784,.00392157,.197251,.687914,.620914,.129412,.193882,.701887,.472654,.254902,.249866,.706123,.320005,.380392,.35132,.697417,.202919,.505882,.498097,.669467,.125232,.631373,.637477,.626239,.107431,.756863,.762115,.56872,.155812,.882353,.889434,.481116,.240445,1,.964784,.400592,.349549]},{IndexedColors:[0,0,0,.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,.6509803921568628,.3372549019607843,.1568627450980392],Name:"Spectrum",NanColor:[.6509803921568628,.3372549019607843,.1568627450980392]},{IndexedColors:[.4745098039215686,.09019607843137255,.09019607843137255,.7098039215686275,.00392156862745098,.00392156862745098,.9372549019607843,.2784313725490196,.09803921568627451,.9764705882352941,.5137254901960784,.1411764705882353,1,.7058823529411765,0,1,.8980392156862745,.02352941176470588],Name:"Warm",NanColor:[1,.8980392156862745,.02352941176470588]},{IndexedColors:[.4588235294117647,.6941176470588235,.00392156862745098,.3450980392156863,.5019607843137255,.1607843137254902,.3137254901960784,.8431372549019608,.7490196078431373,.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.6039215686274509,.407843137254902,1,.3725490196078431,.2,.5019607843137255],Name:"Cool",NanColor:[.3725490196078431,.2,.5019607843137255]},{IndexedColors:[.2313725490196079,.407843137254902,.6705882352941176,.1098039215686274,.5843137254901961,.803921568627451,.3058823529411765,.8509803921568627,.9176470588235294,.4509803921568628,.6039215686274509,.8352941176470589,.2588235294117647,.2392156862745098,.6627450980392157,.3137254901960784,.3294117647058823,.5294117647058824,.06274509803921569,.1647058823529412,.3215686274509804],Name:"Blues",NanColor:[.06274509803921569,.1647058823529412,.3215686274509804]},{IndexedColors:[.1098039215686274,.5843137254901961,.803921568627451,.2313725490196079,.407843137254902,.6705882352941176,.4,.2431372549019608,.7176470588235294,.6352941176470588,.3294117647058823,.8117647058823529,.8705882352941177,.3803921568627451,.807843137254902,.8627450980392157,.3803921568627451,.5843137254901961,.2392156862745098,.06274509803921569,.3215686274509804],Name:"Wild Flower",NanColor:[.2392156862745098,.06274509803921569,.3215686274509804]},{IndexedColors:[.396078431372549,.4862745098039216,.2156862745098039,.4588235294117647,.6941176470588235,.00392156862745098,.6980392156862745,.7294117647058823,.1882352941176471,1,.8980392156862745,.02352941176470588,1,.7058823529411765,0,.9764705882352941,.5137254901960784,.1411764705882353],Name:"Citrus",NanColor:[.9764705882352941,.5137254901960784,.1411764705882353]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (11)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.4980392156862745,.2313725490196079,.03137254901960784,.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333,.1764705882352941,0,.2941176470588235],Name:"Brewer Diverging Purple-Orange (10)",NanColor:[.1764705882352941,0,.2941176470588235]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (9)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.8784313725490196,.5098039215686274,.0784313725490196,.9921568627450981,.7215686274509804,.3882352941176471,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6980392156862745,.6705882352941176,.8235294117647058,.5019607843137255,.4509803921568628,.6745098039215687,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (8)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.9686274509803922,.9686274509803922,.9686274509803922,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (7)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.7019607843137254,.3450980392156863,.02352941176470588,.9450980392156862,.6392156862745098,.2509803921568627,.996078431372549,.8784313725490196,.7137254901960784,.8470588235294118,.8549019607843137,.9215686274509803,.6,.5568627450980392,.7647058823529411,.3294117647058823,.1529411764705882,.5333333333333333],Name:"Brewer Diverging Purple-Orange (6)",NanColor:[.3294117647058823,.1529411764705882,.5333333333333333]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.9686274509803922,.9686274509803922,.9686274509803922,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (5)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9019607843137255,.3803921568627451,.00392156862745098,.9921568627450981,.7215686274509804,.3882352941176471,.6980392156862745,.6705882352941176,.8235294117647058,.3686274509803922,.2352941176470588,.6],Name:"Brewer Diverging Purple-Orange (4)",NanColor:[.3686274509803922,.2352941176470588,.6]},{IndexedColors:[.9450980392156862,.6392156862745098,.2509803921568627,.9686274509803922,.9686274509803922,.9686274509803922,.6,.5568627450980392,.7647058823529411],Name:"Brewer Diverging Purple-Orange (3)",NanColor:[.6,.5568627450980392,.7647058823529411]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (11)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.6196078431372549,.00392156862745098,.2588235294117647,.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353,.3686274509803922,.3098039215686275,.6352941176470588],Name:"Brewer Diverging Spectral (10)",NanColor:[.3686274509803922,.3098039215686275,.6352941176470588]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (9)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9568627450980393,.4274509803921568,.2627450980392157,.9921568627450981,.6823529411764706,.3803921568627451,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6705882352941176,.8666666666666667,.6431372549019608,.4,.7607843137254902,.6470588235294118,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (8)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,1,1,.7490196078431373,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (7)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8352941176470589,.2431372549019608,.3098039215686275,.9882352941176471,.5529411764705883,.3490196078431372,.996078431372549,.8784313725490196,.5450980392156862,.9019607843137255,.9607843137254902,.596078431372549,.6,.8352941176470589,.5803921568627451,.196078431372549,.5333333333333333,.7411764705882353],Name:"Brewer Diverging Spectral (6)",NanColor:[.196078431372549,.5333333333333333,.7411764705882353]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,1,1,.7490196078431373,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (5)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.8431372549019608,.09803921568627451,.1098039215686274,.9921568627450981,.6823529411764706,.3803921568627451,.6705882352941176,.8666666666666667,.6431372549019608,.1686274509803922,.5137254901960784,.7294117647058823],Name:"Brewer Diverging Spectral (4)",NanColor:[.1686274509803922,.5137254901960784,.7294117647058823]},{IndexedColors:[.9882352941176471,.5529411764705883,.3490196078431372,1,1,.7490196078431373,.6,.8352941176470589,.5803921568627451],Name:"Brewer Diverging Spectral (3)",NanColor:[.6,.8352941176470589,.5803921568627451]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (11)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.3294117647058823,.1882352941176471,.0196078431372549,.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922,0,.2352941176470588,.1882352941176471],Name:"Brewer Diverging Brown-Blue-Green (10)",NanColor:[0,.2352941176470588,.1882352941176471]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (9)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.7490196078431373,.5058823529411764,.1764705882352941,.8745098039215686,.7607843137254902,.4901960784313725,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.5019607843137255,.803921568627451,.7568627450980392,.207843137254902,.592156862745098,.5607843137254902,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (8)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.9607843137254902,.9607843137254902,.9607843137254902,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (7)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.5490196078431373,.3176470588235294,.0392156862745098,.8470588235294118,.7019607843137254,.396078431372549,.9647058823529412,.9098039215686274,.7647058823529411,.7803921568627451,.9176470588235294,.8980392156862745,.3529411764705883,.7058823529411765,.6745098039215687,.00392156862745098,.4,.3686274509803922],Name:"Brewer Diverging Brown-Blue-Green (6)",NanColor:[.00392156862745098,.4,.3686274509803922]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.9607843137254902,.9607843137254902,.9607843137254902,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (5)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.6509803921568628,.3803921568627451,.1019607843137255,.8745098039215686,.7607843137254902,.4901960784313725,.5019607843137255,.803921568627451,.7568627450980392,.00392156862745098,.5215686274509804,.4431372549019608],Name:"Brewer Diverging Brown-Blue-Green (4)",NanColor:[.00392156862745098,.5215686274509804,.4431372549019608]},{IndexedColors:[.8470588235294118,.7019607843137254,.396078431372549,.9607843137254902,.9607843137254902,.9607843137254902,.3529411764705883,.7058823529411765,.6745098039215687],Name:"Brewer Diverging Brown-Blue-Green (3)",NanColor:[.3529411764705883,.7058823529411765,.6745098039215687]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.4274509803921568,.1725490196078431,0,.2666666666666667,.1058823529411765],Name:"Brewer Sequential Blue-Green (9)",NanColor:[0,.2666666666666667,.1058823529411765]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8980392156862745,.9607843137254902,.9764705882352941,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (8)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.8,.9254901960784314,.9019607843137255,.4,.7607843137254902,.6431372549019608,.2549019607843137,.6823529411764706,.4627450980392157,.1372549019607843,.5450980392156862,.2705882352941176,0,.3450980392156863,.1411764705882353],Name:"Brewer Sequential Blue-Green (7)",NanColor:[0,.3450980392156863,.1411764705882353]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.8,.9254901960784314,.9019607843137255,.6,.8470588235294118,.788235294117647,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (6)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1725490196078431,.6352941176470588,.3725490196078431,0,.4274509803921568,.1725490196078431],Name:"Brewer Sequential Blue-Green (5)",NanColor:[0,.4274509803921568,.1725490196078431]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.6980392156862745,.8862745098039215,.8862745098039215,.4,.7607843137254902,.6431372549019608,.1372549019607843,.5450980392156862,.2705882352941176],Name:"Brewer Sequential Blue-Green (4)",NanColor:[.1372549019607843,.5450980392156862,.2705882352941176]},{IndexedColors:[.8980392156862745,.9607843137254902,.9764705882352941,.6,.8470588235294118,.788235294117647,.1725490196078431,.6352941176470588,.3725490196078431],Name:"Brewer Sequential Blue-Green (3)",NanColor:[.1725490196078431,.6352941176470588,.3725490196078431]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.6,.203921568627451,.01568627450980392,.4,.1450980392156863,.02352941176470588],Name:"Brewer Sequential Yellow-Orange-Brown (9)",NanColor:[.4,.1450980392156863,.02352941176470588]},{IndexedColors:[1,1,.8980392156862745,1,.9686274509803922,.7372549019607844,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (8)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.9254901960784314,.4392156862745098,.0784313725490196,.8,.2980392156862745,.00784313725490196,.5490196078431373,.1764705882352941,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (7)",NanColor:[.5490196078431373,.1764705882352941,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8901960784313725,.5686274509803921,.996078431372549,.7686274509803922,.3098039215686275,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (6)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8509803921568627,.3725490196078431,.05490196078431372,.6,.203921568627451,.01568627450980392],Name:"Brewer Sequential Yellow-Orange-Brown (5)",NanColor:[.6,.203921568627451,.01568627450980392]},{IndexedColors:[1,1,.8313725490196079,.996078431372549,.8509803921568627,.5568627450980392,.996078431372549,.6,.1607843137254902,.8,.2980392156862745,.00784313725490196],Name:"Brewer Sequential Yellow-Orange-Brown (4)",NanColor:[.8,.2980392156862745,.00784313725490196]},{IndexedColors:[1,.9686274509803922,.7372549019607844,.996078431372549,.7686274509803922,.3098039215686275,.8509803921568627,.3725490196078431,.05490196078431372],Name:"Brewer Sequential Yellow-Orange-Brown (3)",NanColor:[.8509803921568627,.3725490196078431,.05490196078431372]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.5058823529411764,.05882352941176471,.4862745098039216,.3019607843137255,0,.2941176470588235],Name:"Brewer Sequential Blue-Purple (9)",NanColor:[.3019607843137255,0,.2941176470588235]},{IndexedColors:[.9686274509803922,.9882352941176471,.9921568627450981,.8784313725490196,.9254901960784314,.9568627450980393,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (8)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5490196078431373,.4196078431372549,.6941176470588235,.5333333333333333,.2549019607843137,.615686274509804,.4313725490196079,.00392156862745098,.4196078431372549],Name:"Brewer Sequential Blue-Purple (7)",NanColor:[.4313725490196079,.00392156862745098,.4196078431372549]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7490196078431373,.8274509803921568,.9019607843137255,.6196078431372549,.7372549019607844,.8549019607843137,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (6)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.3372549019607843,.6549019607843137,.5058823529411764,.05882352941176471,.4862745098039216],Name:"Brewer Sequential Blue-Purple (5)",NanColor:[.5058823529411764,.05882352941176471,.4862745098039216]},{IndexedColors:[.9294117647058824,.9725490196078431,.984313725490196,.7019607843137254,.803921568627451,.8901960784313725,.5490196078431373,.5882352941176471,.7764705882352941,.5333333333333333,.2549019607843137,.615686274509804],Name:"Brewer Sequential Blue-Purple (4)",NanColor:[.5333333333333333,.2549019607843137,.615686274509804]},{IndexedColors:[.8784313725490196,.9254901960784314,.9568627450980393,.6196078431372549,.7372549019607844,.8549019607843137,.5333333333333333,.3372549019607843,.6549019607843137],Name:"Brewer Sequential Blue-Purple (3)",NanColor:[.5333333333333333,.3372549019607843,.6549019607843137]},{IndexedColors:[.4980392156862745,.788235294117647,.4980392156862745,.7450980392156863,.6823529411764706,.8313725490196079,.9921568627450981,.7529411764705882,.5254901960784314,1,1,.6,.2196078431372549,.4235294117647059,.6901960784313725,.9411764705882353,.00784313725490196,.4980392156862745,.7490196078431373,.3568627450980392,.09019607843137255,.4,.4,.4],Name:"Brewer Qualitative Accent",NanColor:[.4,.4,.4]},{IndexedColors:[.1058823529411765,.6196078431372549,.4666666666666667,.8509803921568627,.3725490196078431,.00784313725490196,.4588235294117647,.4392156862745098,.7019607843137254,.9058823529411765,.1607843137254902,.5411764705882353,.4,.6509803921568628,.1176470588235294,.9019607843137255,.6705882352941176,.00784313725490196,.6509803921568628,.4627450980392157,.1137254901960784,.4,.4,.4],Name:"Brewer Qualitative Dark2",NanColor:[.4,.4,.4]},{IndexedColors:[.4,.7607843137254902,.6470588235294118,.9882352941176471,.5529411764705883,.3843137254901961,.5529411764705883,.6274509803921569,.796078431372549,.9058823529411765,.5411764705882353,.7647058823529411,.6509803921568628,.8470588235294118,.3294117647058823,1,.8509803921568627,.1843137254901961,.8980392156862745,.7686274509803922,.5803921568627451,.7019607843137254,.7019607843137254,.7019607843137254],Name:"Brewer Qualitative Set2",NanColor:[.7019607843137254,.7019607843137254,.7019607843137254]},{IndexedColors:[.7019607843137254,.8862745098039215,.803921568627451,.9921568627450981,.803921568627451,.6745098039215687,.796078431372549,.8352941176470589,.9098039215686274,.9568627450980393,.792156862745098,.8941176470588236,.9019607843137255,.9607843137254902,.788235294117647,1,.9490196078431372,.6823529411764706,.9450980392156862,.8862745098039215,.8,.8,.8,.8],Name:"Brewer Qualitative Pastel2",NanColor:[.8,.8,.8]},{IndexedColors:[.984313725490196,.7058823529411765,.6823529411764706,.7019607843137254,.803921568627451,.8901960784313725,.8,.9215686274509803,.7725490196078432,.8705882352941177,.796078431372549,.8941176470588236,.996078431372549,.8509803921568627,.6509803921568628,1,1,.8,.8980392156862745,.8470588235294118,.7411764705882353,.9921568627450981,.8549019607843137,.9254901960784314,.9490196078431372,.9490196078431372,.9490196078431372],Name:"Brewer Qualitative Pastel1",NanColor:[.9490196078431372,.9490196078431372,.9490196078431372]},{IndexedColors:[.8941176470588236,.1019607843137255,.1098039215686274,.2156862745098039,.4941176470588236,.7215686274509804,.3019607843137255,.6862745098039216,.2901960784313726,.596078431372549,.3058823529411765,.6392156862745098,1,.4980392156862745,0,1,1,.2,.6509803921568628,.3372549019607843,.1568627450980392,.9686274509803922,.5058823529411764,.7490196078431373,.6,.6,.6],Name:"Brewer Qualitative Set1",NanColor:[.6,.6,.6]},{IndexedColors:[.6509803921568628,.807843137254902,.8901960784313725,.1215686274509804,.4705882352941176,.7058823529411765,.6980392156862745,.8745098039215686,.5411764705882353,.2,.6274509803921569,.1725490196078431,.984313725490196,.6039215686274509,.6,.8901960784313725,.1019607843137255,.1098039215686274,.9921568627450981,.7490196078431373,.4352941176470588,1,.4980392156862745,0,.792156862745098,.6980392156862745,.8392156862745098,.4156862745098039,.2392156862745098,.6039215686274509,1,1,.6],Name:"Brewer Qualitative Paired",NanColor:[1,1,.6]},{IndexedColors:[.5529411764705883,.8274509803921568,.7803921568627451,1,1,.7019607843137254,.7450980392156863,.7294117647058823,.8549019607843137,.984313725490196,.5019607843137255,.4470588235294118,.5019607843137255,.6941176470588235,.8274509803921568,.9921568627450981,.7058823529411765,.3843137254901961,.7019607843137254,.8705882352941177,.4117647058823529,.9882352941176471,.803921568627451,.8980392156862745,.8509803921568627,.8509803921568627,.8509803921568627,.7372549019607844,.5019607843137255,.7411764705882353,.8,.9215686274509803,.7725490196078432,1,.9294117647058824,.4352941176470588],Name:"Brewer Qualitative Set3",NanColor:[1,.9294117647058824,.4352941176470588]},{IndexedColors:[1,0,0,1,.862745,0,0,.695201,0],Name:"Traffic Lights",NanColor:[.803922,0,.803922]},{IndexedColors:[.908659,.604013,.581857,1,.862745,0,0,.695201,0],Name:"Traffic Lights For Deuteranopes",NanColor:[.803922,0,.803922]},{IndexedColors:[.4196078431372549,0,.07058823529411765,.9019607843137255,.9411764705882353,.0196078431372549,.01568627450980392,.6196078431372549,.00784313725490196],Name:"Traffic Lights For Deuteranopes 2",NanColor:[.803922,0,.803922]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Muted Blue-Green",NanColor:[.25,0,0],RGBPoints:[0,.109804,.27451,.301961,.02,.129412,.309804,.341176,.05,.14902,.341176,.380392,.1,.188235,.403922,.458824,.15,.227451,.447059,.521569,.2,.290196,.494118,.588235,.25,.368627,.552941,.670588,.3,.458824,.619608,.74902,.35,.588235,.713725,.85098,.4,.72549,.815686,.941176,.45,.831373,.882353,.980392,.475,.909804,.933333,1,.5,.980392,.984314,1,.5,.996078,1,.94902,.5,1,1,.980392,.5,.980392,.984314,1,.525,.972549,.988235,.890196,.55,.917647,.960784,.835294,.6,.835294,.921569,.772549,.65,.768627,.901961,.737255,.7,.670588,.831373,.654902,.75,.576471,.760784,.584314,.8,.498039,.678431,.521569,.85,.392157,.560784,.427451,.9,.294118,.45098,.333333,.95,.211765,.34902,.254902,1,.152941,.278431,.196078]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Green-Blue Asymmetric Divergent (62Blbc)",NanColor:[.25,0,0],RGBPoints:[0,.121569,.2,.145098,.05,.196078,.301961,.223529,.1,.258824,.4,.278431,.2,.341176,.54902,.341176,.25,.419608,.619608,.376471,.3,.545098,.701961,.392157,.35,.643137,.780392,.403922,.4,.729412,.819608,.45098,.45,.811765,.870588,.521569,.5,.898039,.909804,.564706,.55,.941176,.92549,.686275,.6,.960784,.94902,.776471,.64,1,1,1,.65,.890196,.988235,.972549,.7,.721569,.894118,.901961,.75,.631373,.823529,.839216,.8,.517647,.662745,.701961,.85,.384314,.494118,.54902,.9,.298039,.360784,.45098,.95,.223529,.25098,.34902,.99,.156863,.172549,.25098,1,.137255,.137255,.188235]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Asymmtrical Earth Tones (6_21b)",NanColor:[.25,0,0],RGBPoints:[0,.141176,.14902,.2,.05,.215686,.258824,.321569,.1,.243137,.368627,.380392,.15,.27451,.439216,.4,.2,.32549,.501961,.384314,.25,.403922,.6,.419608,.3,.486275,.701961,.454902,.35,.556863,.74902,.494118,.4,.670588,.8,.545098,.5,.854902,.901961,.631373,.55,.92549,.941176,.694118,.6,.960784,.94902,.776471,.65,.988235,.968627,.909804,.7,.839216,.815686,.772549,.75,.701961,.662745,.615686,.8,.6,.529412,.478431,.85,.501961,.403922,.360784,.9,.439216,.313725,.290196,1,.301961,.164706,.176471]},{ColorSpace:"Lab",Creator:"Francesca Samsel",Name:"Yellow 15",NanColor:[.25,0,0],RGBPoints:[0,1,1,.988235,.002,1,1,.988235,.05,.984314,.988235,.843137,.1,.988235,.988235,.741176,.15,.980392,.968627,.654902,.2,.980392,.945098,.576471,.25,.968627,.905882,.486275,.3,.968627,.862745,.388235,.35,.960784,.803922,.286275,.4,.94902,.741176,.219608,.45,.941176,.678431,.14902,.5,.929412,.607843,.094118,.55,.921569,.545098,.054902,.6,.909804,.486275,.035294,.65,.890196,.411765,.019608,.7,.8,.305882,0,.75,.760784,.239216,0,.8,.678431,.180392,.011765,.85,.6,.121569,.023529,.9,.501961,.054902,.031373,.95,.4,.039216,.058824,1,.301961,.047059,.090196]},{ColorSpace:"Diverging",Name:"Magma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002258,.001295,.018331,.007843,.003279,.002305,.023708,.011765,.004512,.00349,.029965,.015686,.00595,.004843,.03713,.019608,.007588,.006356,.044973,.023529,.009426,.008022,.052844,.027451,.011465,.009828,.06075,.031373,.013708,.011771,.068667,.035294,.016156,.01384,.076603,.039216,.018815,.016026,.084584,.043137,.021692,.01832,.09261,.047059,.024792,.020715,.100676,.05098,.028123,.023201,.108787,.054902,.031696,.025765,.116965,.058824,.03552,.028397,.125209,.062745,.039608,.03109,.133515,.066667,.04383,.03383,.141886,.070588,.048062,.036607,.150327,.07451,.05232,.039407,.158841,.078431,.056615,.04216,.167446,.082353,.060949,.044794,.176129,.086275,.06533,.047318,.184892,.090196,.069764,.049726,.193735,.094118,.074257,.052017,.20266,.098039,.078815,.054184,.211667,.101961,.083446,.056225,.220755,.105882,.088155,.058133,.229922,.109804,.092949,.059904,.239164,.113725,.097833,.061531,.248477,.117647,.102815,.06301,.257854,.121569,.107899,.064335,.267289,.12549,.113094,.065492,.276784,.129412,.118405,.066479,.286321,.133333,.123833,.067295,.295879,.137255,.12938,.067935,.305443,.141176,.135053,.068391,.315,.145098,.140858,.068654,.324538,.14902,.146785,.068738,.334011,.152941,.152839,.068637,.343404,.156863,.159018,.068354,.352688,.160784,.165308,.067911,.361816,.164706,.171713,.067305,.370771,.168627,.178212,.066576,.379497,.172549,.184801,.065732,.387973,.176471,.19146,.064818,.396152,.180392,.198177,.063862,.404009,.184314,.204935,.062907,.411514,.188235,.211718,.061992,.418647,.192157,.218512,.061158,.425392,.196078,.225302,.060445,.431742,.2,.232077,.059889,.437695,.203922,.238826,.059517,.443256,.207843,.245543,.059352,.448436,.211765,.25222,.059415,.453248,.215686,.258857,.059706,.45771,.219608,.265447,.060237,.46184,.223529,.271994,.060994,.46566,.227451,.278493,.061978,.46919,.231373,.284951,.063168,.472451,.235294,.291366,.064553,.475462,.239216,.29774,.066117,.478243,.243137,.304081,.067835,.480812,.247059,.310382,.069702,.483186,.25098,.316654,.07169,.48538,.254902,.322899,.073782,.487408,.258824,.329114,.075972,.489287,.262745,.335308,.078236,.491024,.266667,.341482,.080564,.492631,.270588,.347636,.082946,.494121,.27451,.353773,.085373,.495501,.278431,.359898,.087831,.496778,.282353,.366012,.090314,.49796,.286275,.372116,.092816,.499053,.290196,.378211,.095332,.500067,.294118,.384299,.097855,.501002,.298039,.390384,.100379,.501864,.301961,.396467,.102902,.502658,.305882,.402548,.10542,.503386,.309804,.408629,.10793,.504052,.313725,.414709,.110431,.504662,.317647,.420791,.11292,.505215,.321569,.426877,.115395,.505714,.32549,.432967,.117855,.50616,.329412,.439062,.120298,.506555,.333333,.445163,.122724,.506901,.337255,.451271,.125132,.507198,.341176,.457386,.127522,.507448,.345098,.463508,.129893,.507652,.34902,.46964,.132245,.507809,.352941,.47578,.134577,.507921,.356863,.481929,.136891,.507989,.360784,.488088,.139186,.508011,.364706,.494258,.141462,.507988,.368627,.500438,.143719,.50792,.372549,.506629,.145958,.507806,.376471,.512831,.148179,.507648,.380392,.519045,.150383,.507443,.384314,.52527,.152569,.507192,.388235,.531507,.154739,.506895,.392157,.537755,.156894,.506551,.396078,.544015,.159033,.506159,.4,.550287,.161158,.505719,.403922,.556571,.163269,.50523,.407843,.562866,.165368,.504692,.411765,.569172,.167454,.504105,.415686,.57549,.16953,.503466,.419608,.581819,.171596,.502777,.423529,.588158,.173652,.502035,.427451,.594508,.175701,.501241,.431373,.600868,.177743,.500394,.435294,.607238,.179779,.499492,.439216,.613617,.181811,.498536,.443137,.620005,.18384,.497524,.447059,.626401,.185867,.496456,.45098,.632805,.187893,.495332,.454902,.639216,.189921,.49415,.458824,.645633,.191952,.49291,.462745,.652056,.193986,.491611,.466667,.658483,.196027,.490253,.470588,.664915,.198075,.488836,.47451,.671349,.200133,.487358,.478431,.677786,.202203,.485819,.482353,.684224,.204286,.484219,.486275,.690661,.206384,.482558,.490196,.697098,.208501,.480835,.494118,.703532,.210638,.479049,.498039,.709962,.212797,.477201,.501961,.716387,.214982,.47529,.505882,.722805,.217194,.473316,.509804,.729216,.219437,.471279,.513725,.735616,.221713,.46918,.517647,.742004,.224025,.467018,.521569,.748378,.226377,.464794,.52549,.754737,.228772,.462509,.529412,.761077,.231214,.460162,.533333,.767398,.233705,.457755,.537255,.773695,.236249,.455289,.541176,.779968,.238851,.452765,.545098,.786212,.241514,.450184,.54902,.792427,.244242,.447543,.552941,.798608,.24704,.444848,.556863,.804752,.249911,.442102,.560784,.810855,.252861,.439305,.564706,.816914,.255895,.436461,.568627,.822926,.259016,.433573,.572549,.828886,.262229,.430644,.576471,.834791,.26554,.427671,.580392,.840636,.268953,.424666,.584314,.846416,.272473,.421631,.588235,.852126,.276106,.418573,.592157,.857763,.279857,.415496,.596078,.86332,.283729,.412403,.6,.868793,.287728,.409303,.603922,.874176,.291859,.406205,.607843,.879464,.296125,.403118,.611765,.884651,.30053,.400047,.615686,.889731,.305079,.397002,.619608,.8947,.309773,.393995,.623529,.899552,.314616,.391037,.627451,.904281,.31961,.388137,.631373,.908884,.324755,.385308,.635294,.913354,.330052,.382563,.639216,.917689,.3355,.379915,.643137,.921884,.341098,.377376,.647059,.925937,.346844,.374959,.65098,.929845,.352734,.372677,.654902,.933606,.358764,.370541,.658824,.937221,.364929,.368567,.662745,.940687,.371224,.366762,.666667,.944006,.377643,.365136,.670588,.94718,.384178,.363701,.67451,.95021,.39082,.362468,.678431,.953099,.397563,.361438,.682353,.955849,.4044,.360619,.686275,.958464,.411324,.360014,.690196,.960949,.418323,.35963,.694118,.96331,.42539,.359469,.698039,.965549,.432519,.359529,.701961,.967671,.439703,.35981,.705882,.96968,.446936,.360311,.709804,.971582,.45421,.36103,.713725,.973381,.46152,.361965,.717647,.975082,.468861,.363111,.721569,.97669,.476226,.364466,.72549,.97821,.483612,.366025,.729412,.979645,.491014,.367783,.733333,.981,.498428,.369734,.737255,.982279,.505851,.371874,.741176,.983485,.51328,.374198,.745098,.984622,.520713,.376698,.74902,.985693,.528148,.379371,.752941,.9867,.535582,.38221,.756863,.987646,.543015,.38521,.760784,.988533,.550446,.388365,.764706,.989363,.557873,.391671,.768627,.990138,.565296,.395122,.772549,.990871,.572706,.398714,.776471,.991558,.580107,.402441,.780392,.992196,.587502,.406299,.784314,.992785,.594891,.410283,.788235,.993326,.602275,.41439,.792157,.993834,.609644,.418613,.796078,.994309,.616999,.42295,.8,.994738,.62435,.427397,.803922,.995122,.631696,.431951,.807843,.99548,.639027,.436607,.811765,.99581,.646344,.441361,.815686,.996096,.653659,.446213,.819608,.996341,.660969,.45116,.823529,.99658,.668256,.456192,.827451,.996775,.675541,.461314,.831373,.996925,.682828,.466526,.835294,.997077,.690088,.471811,.839216,.997186,.697349,.477182,.843137,.997254,.704611,.482635,.847059,.997325,.711848,.488154,.85098,.997351,.719089,.493755,.854902,.997351,.726324,.499428,.858824,.997341,.733545,.505167,.862745,.997285,.740772,.510983,.866667,.997228,.747981,.516859,.870588,.997138,.75519,.522806,.87451,.997019,.762398,.528821,.878431,.996898,.769591,.534892,.882353,.996727,.776795,.541039,.886275,.996571,.783977,.547233,.890196,.996369,.791167,.553499,.894118,.996162,.798348,.55982,.898039,.995932,.805527,.566202,.901961,.99568,.812706,.572645,.905882,.995424,.819875,.57914,.909804,.995131,.827052,.585701,.913725,.994851,.834213,.592307,.917647,.994524,.841387,.598983,.921569,.994222,.84854,.605696,.92549,.993866,.855711,.612482,.929412,.993545,.862859,.619299,.933333,.99317,.870024,.626189,.937255,.992831,.877168,.633109,.941176,.99244,.88433,.640099,.945098,.992089,.89147,.647116,.94902,.991688,.898627,.654202,.952941,.991332,.905763,.661309,.956863,.99093,.912915,.668481,.960784,.99057,.920049,.675675,.964706,.990175,.927196,.682926,.968627,.989815,.934329,.690198,.972549,.989434,.94147,.697519,.976471,.989077,.948604,.704863,.980392,.988717,.955742,.712242,.984314,.988367,.962878,.719649,.988235,.988033,.970012,.727077,.992157,.987691,.977154,.734536,.996078,.987387,.984288,.742002,1,.987053,.991438,.749504]},{ColorSpace:"Diverging",Name:"Inferno (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.001462,466e-6,.013866,.003922,.002267,.00127,.01857,.007843,.003299,.002249,.024239,.011765,.004547,.003392,.030909,.015686,.006006,.004692,.038558,.019608,.007676,.006136,.046836,.023529,.009561,.007713,.055143,.027451,.011663,.009417,.06346,.031373,.013995,.011225,.071862,.035294,.016561,.013136,.080282,.039216,.019373,.015133,.088767,.043137,.022447,.017199,.097327,.047059,.025793,.019331,.10593,.05098,.029432,.021503,.114621,.054902,.033385,.023702,.123397,.058824,.037668,.025921,.132232,.062745,.042253,.028139,.141141,.066667,.046915,.030324,.150164,.070588,.051644,.032474,.159254,.07451,.056449,.034569,.168414,.078431,.06134,.03659,.177642,.082353,.066331,.038504,.186962,.086275,.071429,.040294,.196354,.090196,.076637,.041905,.205799,.094118,.081962,.043328,.215289,.098039,.087411,.044556,.224813,.101961,.09299,.045583,.234358,.105882,.098702,.046402,.243904,.109804,.104551,.047008,.25343,.113725,.110536,.047399,.262912,.117647,.116656,.047574,.272321,.121569,.122908,.047536,.281624,.12549,.129285,.047293,.290788,.129412,.135778,.046856,.299776,.133333,.142378,.046242,.308553,.137255,.149073,.045468,.317085,.141176,.15585,.044559,.325338,.145098,.162689,.043554,.333277,.14902,.169575,.042489,.340874,.152941,.176493,.041402,.348111,.156863,.183429,.040329,.354971,.160784,.190367,.039309,.361447,.164706,.197297,.0384,.367535,.168627,.204209,.037632,.373238,.172549,.211095,.03703,.378563,.176471,.217949,.036615,.383522,.180392,.224763,.036405,.388129,.184314,.231538,.036405,.3924,.188235,.238273,.036621,.396353,.192157,.244967,.037055,.400007,.196078,.25162,.037705,.403378,.2,.258234,.038571,.406485,.203922,.26481,.039647,.409345,.207843,.271347,.040922,.411976,.211765,.27785,.042353,.414392,.215686,.284321,.043933,.416608,.219608,.290763,.045644,.418637,.223529,.297178,.04747,.420491,.227451,.303568,.049396,.422182,.231373,.309935,.051407,.423721,.235294,.316282,.05349,.425116,.239216,.32261,.055634,.426377,.243137,.328921,.057827,.427511,.247059,.335217,.06006,.428524,.25098,.3415,.062325,.429425,.254902,.347771,.064616,.430217,.258824,.354032,.066925,.430906,.262745,.360284,.069247,.431497,.266667,.366529,.071579,.431994,.270588,.372768,.073915,.4324,.27451,.379001,.076253,.432719,.278431,.385228,.078591,.432955,.282353,.391453,.080927,.433109,.286275,.397674,.083257,.433183,.290196,.403894,.08558,.433179,.294118,.410113,.087896,.433098,.298039,.416331,.090203,.432943,.301961,.422549,.092501,.432714,.305882,.428768,.09479,.432412,.309804,.434987,.097069,.432039,.313725,.441207,.099338,.431594,.317647,.447428,.101597,.43108,.321569,.453651,.103848,.430498,.32549,.459875,.106089,.429846,.329412,.4661,.108322,.429125,.333333,.472328,.110547,.428334,.337255,.478558,.112764,.427475,.341176,.484789,.114974,.426548,.345098,.491022,.117179,.425552,.34902,.497257,.119379,.424488,.352941,.503493,.121575,.423356,.356863,.50973,.123769,.422156,.360784,.515967,.12596,.420887,.364706,.522206,.12815,.419549,.368627,.528444,.130341,.418142,.372549,.534683,.132534,.416667,.376471,.54092,.134729,.415123,.380392,.547157,.136929,.413511,.384314,.553392,.139134,.411829,.388235,.559624,.141346,.410078,.392157,.565854,.143567,.408258,.396078,.572081,.145797,.406369,.4,.578304,.148039,.404411,.403922,.584521,.150294,.402385,.407843,.590734,.152563,.40029,.411765,.59694,.154848,.398125,.415686,.603139,.157151,.395891,.419608,.60933,.159474,.393589,.423529,.615513,.161817,.391219,.427451,.621685,.164184,.388781,.431373,.627847,.166575,.386276,.435294,.633998,.168992,.383704,.439216,.640135,.171438,.381065,.443137,.64626,.173914,.378359,.447059,.652369,.176421,.375586,.45098,.658463,.178962,.372748,.454902,.66454,.181539,.369846,.458824,.670599,.184153,.366879,.462745,.676638,.186807,.363849,.466667,.682656,.189501,.360757,.470588,.688653,.192239,.357603,.47451,.694627,.195021,.354388,.478431,.700576,.197851,.351113,.482353,.7065,.200728,.347777,.486275,.712396,.203656,.344383,.490196,.718264,.206636,.340931,.494118,.724103,.20967,.337424,.498039,.729909,.212759,.333861,.501961,.735683,.215906,.330245,.505882,.741423,.219112,.326576,.509804,.747127,.222378,.322856,.513725,.752794,.225706,.319085,.517647,.758422,.229097,.315266,.521569,.76401,.232554,.311399,.52549,.769556,.236077,.307485,.529412,.775059,.239667,.303526,.533333,.780517,.243327,.299523,.537255,.785929,.247056,.295477,.541176,.791293,.250856,.29139,.545098,.796607,.254728,.287264,.54902,.801871,.258674,.283099,.552941,.807082,.262692,.278898,.556863,.812239,.266786,.274661,.560784,.817341,.270954,.27039,.564706,.822386,.275197,.266085,.568627,.827372,.279517,.26175,.572549,.832299,.283913,.257383,.576471,.837165,.288385,.252988,.580392,.841969,.292933,.248564,.584314,.846709,.297559,.244113,.588235,.851384,.30226,.239636,.592157,.855992,.307038,.235133,.596078,.860533,.311892,.230606,.6,.865006,.316822,.226055,.603922,.869409,.321827,.221482,.607843,.873741,.326906,.216886,.611765,.878001,.33206,.212268,.615686,.882188,.337287,.207628,.619608,.886302,.342586,.202968,.623529,.890341,.347957,.198286,.627451,.894305,.353399,.193584,.631373,.898192,.358911,.18886,.635294,.902003,.364492,.184116,.639216,.905735,.37014,.17935,.643137,.90939,.375856,.174563,.647059,.912966,.381636,.169755,.65098,.916462,.387481,.164924,.654902,.919879,.393389,.16007,.658824,.923215,.399359,.155193,.662745,.92647,.405389,.150292,.666667,.929644,.411479,.145367,.670588,.932737,.417627,.140417,.67451,.935747,.423831,.13544,.678431,.938675,.430091,.130438,.682353,.941521,.436405,.125409,.686275,.944285,.442772,.120354,.690196,.946965,.449191,.115272,.694118,.949562,.45566,.110164,.698039,.952075,.462178,.105031,.701961,.954506,.468744,.099874,.705882,.956852,.475356,.094695,.709804,.959114,.482014,.089499,.713725,.961293,.488716,.084289,.717647,.963387,.495462,.079073,.721569,.965397,.502249,.073859,.72549,.967322,.509078,.068659,.729412,.969163,.515946,.063488,.733333,.970919,.522853,.058367,.737255,.97259,.529798,.053324,.741176,.974176,.53678,.048392,.745098,.975677,.543798,.043618,.74902,.977092,.55085,.03905,.752941,.978422,.557937,.034931,.756863,.979666,.565057,.031409,.760784,.980824,.572209,.028508,.764706,.981895,.579392,.02625,.768627,.982881,.586606,.024661,.772549,.983779,.593849,.02377,.776471,.984591,.601122,.023606,.780392,.985315,.608422,.024202,.784314,.985952,.61575,.025592,.788235,.986502,.623105,.027814,.792157,.986964,.630485,.030908,.796078,.987337,.63789,.034916,.8,.987622,.64532,.039886,.803922,.987819,.652773,.045581,.807843,.987926,.66025,.05175,.811765,.987945,.667748,.058329,.815686,.987874,.675267,.065257,.819608,.987714,.682807,.072489,.823529,.987464,.690366,.07999,.827451,.987124,.697944,.087731,.831373,.986694,.70554,.095694,.835294,.986175,.713153,.103863,.839216,.985566,.720782,.112229,.843137,.984865,.728427,.120785,.847059,.984075,.736087,.129527,.85098,.983196,.743758,.138453,.854902,.982228,.751442,.147565,.858824,.981173,.759135,.156863,.862745,.980032,.766837,.166353,.866667,.978806,.774545,.176037,.870588,.977497,.782258,.185923,.87451,.976108,.789974,.196018,.878431,.974638,.797692,.206332,.882353,.973088,.805409,.216877,.886275,.971468,.813122,.227658,.890196,.969783,.820825,.238686,.894118,.968041,.828515,.249972,.898039,.966243,.836191,.261534,.901961,.964394,.843848,.273391,.905882,.962517,.851476,.285546,.909804,.960626,.859069,.29801,.913725,.95872,.866624,.31082,.917647,.956834,.874129,.323974,.921569,.954997,.881569,.337475,.92549,.953215,.888942,.351369,.929412,.951546,.896226,.365627,.933333,.950018,.903409,.380271,.937255,.948683,.910473,.395289,.941176,.947594,.917399,.410665,.945098,.946809,.924168,.426373,.94902,.946392,.930761,.442367,.952941,.946403,.937159,.458592,.956863,.946903,.943348,.47497,.960784,.947937,.949318,.491426,.964706,.949545,.955063,.50786,.968627,.95174,.960587,.524203,.972549,.954529,.965896,.540361,.976471,.957896,.971003,.556275,.980392,.961812,.975924,.571925,.984314,.966249,.980678,.587206,.988235,.971162,.985282,.602154,.992157,.976511,.989753,.61676,.996078,.982257,.994109,.631017,1,.988362,.998364,.644924]},{ColorSpace:"Diverging",Name:"Plasma (matplotlib)",NanColor:[0,1,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Nathaniel J. Smith & Stefan van der Walt",RGBPoints:[0,.050383,.029803,.527975,.003922,.063536,.028426,.533124,.007843,.075353,.027206,.538007,.011765,.086222,.026125,.542658,.015686,.096379,.025165,.547103,.019608,.10598,.024309,.551368,.023529,.115124,.023556,.555468,.027451,.123903,.022878,.559423,.031373,.132381,.022258,.56325,.035294,.140603,.021687,.566959,.039216,.148607,.021154,.570562,.043137,.156421,.020651,.574065,.047059,.16407,.020171,.577478,.05098,.171574,.019706,.580806,.054902,.17895,.019252,.584054,.058824,.186213,.018803,.587228,.062745,.193374,.018354,.59033,.066667,.200445,.017902,.593364,.070588,.207435,.017442,.596333,.07451,.21435,.016973,.599239,.078431,.221197,.016497,.602083,.082353,.227983,.016007,.604867,.086275,.234715,.015502,.607592,.090196,.241396,.014979,.610259,.094118,.248032,.014439,.612868,.098039,.254627,.013882,.615419,.101961,.261183,.013308,.617911,.105882,.267703,.012716,.620346,.109804,.274191,.012109,.622722,.113725,.280648,.011488,.625038,.117647,.287076,.010855,.627295,.121569,.293478,.010213,.62949,.12549,.299855,.009561,.631624,.129412,.30621,.008902,.633694,.133333,.312543,.008239,.6357,.137255,.318856,.007576,.63764,.141176,.32515,.006915,.639512,.145098,.331426,.006261,.641316,.14902,.337683,.005618,.643049,.152941,.343925,.004991,.64471,.156863,.35015,.004382,.646298,.160784,.356359,.003798,.64781,.164706,.362553,.003243,.649245,.168627,.368733,.002724,.650601,.172549,.374897,.002245,.651876,.176471,.381047,.001814,.653068,.180392,.387183,.001434,.654177,.184314,.393304,.001114,.655199,.188235,.399411,859e-6,.656133,.192157,.405503,678e-6,.656977,.196078,.41158,577e-6,.65773,.2,.417642,564e-6,.65839,.203922,.423689,646e-6,.658956,.207843,.429719,831e-6,.659425,.211765,.435734,.001127,.659797,.215686,.441732,.00154,.660069,.219608,.447714,.00208,.66024,.223529,.453677,.002755,.66031,.227451,.459623,.003574,.660277,.231373,.46555,.004545,.660139,.235294,.471457,.005678,.659897,.239216,.477344,.00698,.659549,.243137,.48321,.00846,.659095,.247059,.489055,.010127,.658534,.25098,.494877,.01199,.657865,.254902,.500678,.014055,.657088,.258824,.506454,.016333,.656202,.262745,.512206,.018833,.655209,.266667,.517933,.021563,.654109,.270588,.523633,.024532,.652901,.27451,.529306,.027747,.651586,.278431,.534952,.031217,.650165,.282353,.54057,.03495,.64864,.286275,.546157,.038954,.64701,.290196,.551715,.043136,.645277,.294118,.557243,.047331,.643443,.298039,.562738,.051545,.641509,.301961,.568201,.055778,.639477,.305882,.573632,.060028,.637349,.309804,.579029,.064296,.635126,.313725,.584391,.068579,.632812,.317647,.589719,.072878,.630408,.321569,.595011,.07719,.627917,.32549,.600266,.081516,.625342,.329412,.605485,.085854,.622686,.333333,.610667,.090204,.619951,.337255,.615812,.094564,.61714,.341176,.620919,.098934,.614257,.345098,.625987,.103312,.611305,.34902,.631017,.107699,.608287,.352941,.636008,.112092,.605205,.356863,.640959,.116492,.602065,.360784,.645872,.120898,.598867,.364706,.650746,.125309,.595617,.368627,.65558,.129725,.592317,.372549,.660374,.134144,.588971,.376471,.665129,.138566,.585582,.380392,.669845,.142992,.582154,.384314,.674522,.147419,.578688,.388235,.67916,.151848,.575189,.392157,.683758,.156278,.57166,.396078,.688318,.160709,.568103,.4,.69284,.165141,.564522,.403922,.697324,.169573,.560919,.407843,.701769,.174005,.557296,.411765,.706178,.178437,.553657,.415686,.710549,.182868,.550004,.419608,.714883,.187299,.546338,.423529,.719181,.191729,.542663,.427451,.723444,.196158,.538981,.431373,.72767,.200586,.535293,.435294,.731862,.205013,.531601,.439216,.736019,.209439,.527908,.443137,.740143,.213864,.524216,.447059,.744232,.218288,.520524,.45098,.748289,.222711,.516834,.454902,.752312,.227133,.513149,.458824,.756304,.231555,.509468,.462745,.760264,.235976,.505794,.466667,.764193,.240396,.502126,.470588,.76809,.244817,.498465,.47451,.771958,.249237,.494813,.478431,.775796,.253658,.491171,.482353,.779604,.258078,.487539,.486275,.783383,.2625,.483918,.490196,.787133,.266922,.480307,.494118,.790855,.271345,.476706,.498039,.794549,.27577,.473117,.501961,.798216,.280197,.469538,.505882,.801855,.284626,.465971,.509804,.805467,.289057,.462415,.513725,.809052,.293491,.45887,.517647,.812612,.297928,.455338,.521569,.816144,.302368,.451816,.52549,.819651,.306812,.448306,.529412,.823132,.311261,.444806,.533333,.826588,.315714,.441316,.537255,.830018,.320172,.437836,.541176,.833422,.324635,.434366,.545098,.836801,.329105,.430905,.54902,.840155,.33358,.427455,.552941,.843484,.338062,.424013,.556863,.846788,.342551,.420579,.560784,.850066,.347048,.417153,.564706,.853319,.351553,.413734,.568627,.856547,.356066,.410322,.572549,.85975,.360588,.406917,.576471,.862927,.365119,.403519,.580392,.866078,.36966,.400126,.584314,.869203,.374212,.396738,.588235,.872303,.378774,.393355,.592157,.875376,.383347,.389976,.596078,.878423,.387932,.3866,.6,.881443,.392529,.383229,.603922,.884436,.397139,.37986,.607843,.887402,.401762,.376494,.611765,.89034,.406398,.37313,.615686,.89325,.411048,.369768,.619608,.896131,.415712,.366407,.623529,.898984,.420392,.363047,.627451,.901807,.425087,.359688,.631373,.904601,.429797,.356329,.635294,.907365,.434524,.35297,.639216,.910098,.439268,.34961,.643137,.9128,.444029,.346251,.647059,.915471,.448807,.34289,.65098,.918109,.453603,.339529,.654902,.920714,.458417,.336166,.658824,.923287,.463251,.332801,.662745,.925825,.468103,.329435,.666667,.928329,.472975,.326067,.670588,.930798,.477867,.322697,.67451,.933232,.48278,.319325,.678431,.93563,.487712,.315952,.682353,.93799,.492667,.312575,.686275,.940313,.497642,.309197,.690196,.942598,.502639,.305816,.694118,.944844,.507658,.302433,.698039,.947051,.512699,.299049,.701961,.949217,.517763,.295662,.705882,.951344,.52285,.292275,.709804,.953428,.52796,.288883,.713725,.95547,.533093,.28549,.717647,.957469,.53825,.282096,.721569,.959424,.543431,.278701,.72549,.961336,.548636,.275305,.729412,.963203,.553865,.271909,.733333,.965024,.559118,.268513,.737255,.966798,.564396,.265118,.741176,.968526,.5697,.261721,.745098,.970205,.575028,.258325,.74902,.971835,.580382,.254931,.752941,.973416,.585761,.25154,.756863,.974947,.591165,.248151,.760784,.976428,.596595,.244767,.764706,.977856,.602051,.241387,.768627,.979233,.607532,.238013,.772549,.980556,.613039,.234646,.776471,.981826,.618572,.231287,.780392,.983041,.624131,.227937,.784314,.984199,.629718,.224595,.788235,.985301,.63533,.221265,.792157,.986345,.640969,.217948,.796078,.987332,.646633,.214648,.8,.98826,.652325,.211364,.803922,.989128,.658043,.2081,.807843,.989935,.663787,.204859,.811765,.990681,.669558,.201642,.815686,.991365,.675355,.198453,.819608,.991985,.681179,.195295,.823529,.992541,.68703,.19217,.827451,.993032,.692907,.189084,.831373,.993456,.69881,.186041,.835294,.993814,.704741,.183043,.839216,.994103,.710698,.180097,.843137,.994324,.716681,.177208,.847059,.994474,.722691,.174381,.85098,.994553,.728728,.171622,.854902,.994561,.734791,.168938,.858824,.994495,.74088,.166335,.862745,.994355,.746995,.163821,.866667,.994141,.753137,.161404,.870588,.993851,.759304,.159092,.87451,.993482,.765499,.156891,.878431,.993033,.77172,.154808,.882353,.992505,.777967,.152855,.886275,.991897,.784239,.151042,.890196,.991209,.790537,.149377,.894118,.990439,.796859,.14787,.898039,.989587,.803205,.146529,.901961,.988648,.809579,.145357,.905882,.987621,.815978,.144363,.909804,.986509,.822401,.143557,.913725,.985314,.828846,.142945,.917647,.984031,.835315,.142528,.921569,.982653,.841812,.142303,.92549,.98119,.848329,.142279,.929412,.979644,.854866,.142453,.933333,.977995,.861432,.142808,.937255,.976265,.868016,.143351,.941176,.974443,.874622,.144061,.945098,.97253,.88125,.144923,.94902,.970533,.887896,.145919,.952941,.968443,.894564,.147014,.956863,.966271,.901249,.14818,.960784,.964021,.90795,.14937,.964706,.961681,.914672,.15052,.968627,.959276,.921407,.151566,.972549,.956808,.928152,.152409,.976471,.954287,.934908,.152921,.980392,.951726,.941671,.152925,.984314,.949151,.948435,.152178,.988235,.946602,.95519,.150328,.992157,.944152,.961916,.146861,.996078,.941896,.96859,.140956,1,.940015,.975158,.131326]},{ColorSpace:"Diverging",Name:"Viridis (matplotlib)",NanColor:[1,0,0],Source:"https://github.com/BIDS/colormap/blob/master/colormaps.py",License:"CC0",Creator:"Eric Firing",RGBPoints:[0,.267004,.004874,.329415,.003922,.26851,.009605,.335427,.007843,.269944,.014625,.341379,.011765,.271305,.019942,.347269,.015686,.272594,.025563,.353093,.019608,.273809,.031497,.358853,.023529,.274952,.037752,.364543,.027451,.276022,.044167,.370164,.031373,.277018,.050344,.375715,.035294,.277941,.056324,.381191,.039216,.278791,.062145,.386592,.043137,.279566,.067836,.391917,.047059,.280267,.073417,.397163,.05098,.280894,.078907,.402329,.054902,.281446,.08432,.407414,.058824,.281924,.089666,.412415,.062745,.282327,.094955,.417331,.066667,.282656,.100196,.42216,.070588,.28291,.105393,.426902,.07451,.283091,.110553,.431554,.078431,.283197,.11568,.436115,.082353,.283229,.120777,.440584,.086275,.283187,.125848,.44496,.090196,.283072,.130895,.449241,.094118,.282884,.13592,.453427,.098039,.282623,.140926,.457517,.101961,.28229,.145912,.46151,.105882,.281887,.150881,.465405,.109804,.281412,.155834,.469201,.113725,.280868,.160771,.472899,.117647,.280255,.165693,.476498,.121569,.279574,.170599,.479997,.12549,.278826,.17549,.483397,.129412,.278012,.180367,.486697,.133333,.277134,.185228,.489898,.137255,.276194,.190074,.493001,.141176,.275191,.194905,.496005,.145098,.274128,.199721,.498911,.14902,.273006,.20452,.501721,.152941,.271828,.209303,.504434,.156863,.270595,.214069,.507052,.160784,.269308,.218818,.509577,.164706,.267968,.223549,.512008,.168627,.26658,.228262,.514349,.172549,.265145,.232956,.516599,.176471,.263663,.237631,.518762,.180392,.262138,.242286,.520837,.184314,.260571,.246922,.522828,.188235,.258965,.251537,.524736,.192157,.257322,.25613,.526563,.196078,.255645,.260703,.528312,.2,.253935,.265254,.529983,.203922,.252194,.269783,.531579,.207843,.250425,.27429,.533103,.211765,.248629,.278775,.534556,.215686,.246811,.283237,.535941,.219608,.244972,.287675,.53726,.223529,.243113,.292092,.538516,.227451,.241237,.296485,.539709,.231373,.239346,.300855,.540844,.235294,.237441,.305202,.541921,.239216,.235526,.309527,.542944,.243137,.233603,.313828,.543914,.247059,.231674,.318106,.544834,.25098,.229739,.322361,.545706,.254902,.227802,.326594,.546532,.258824,.225863,.330805,.547314,.262745,.223925,.334994,.548053,.266667,.221989,.339161,.548752,.270588,.220057,.343307,.549413,.27451,.21813,.347432,.550038,.278431,.21621,.351535,.550627,.282353,.214298,.355619,.551184,.286275,.212395,.359683,.55171,.290196,.210503,.363727,.552206,.294118,.208623,.367752,.552675,.298039,.206756,.371758,.553117,.301961,.204903,.375746,.553533,.305882,.203063,.379716,.553925,.309804,.201239,.38367,.554294,.313725,.19943,.387607,.554642,.317647,.197636,.391528,.554969,.321569,.19586,.395433,.555276,.32549,.1941,.399323,.555565,.329412,.192357,.403199,.555836,.333333,.190631,.407061,.556089,.337255,.188923,.41091,.556326,.341176,.187231,.414746,.556547,.345098,.185556,.41857,.556753,.34902,.183898,.422383,.556944,.352941,.182256,.426184,.55712,.356863,.180629,.429975,.557282,.360784,.179019,.433756,.55743,.364706,.177423,.437527,.557565,.368627,.175841,.44129,.557685,.372549,.174274,.445044,.557792,.376471,.172719,.448791,.557885,.380392,.171176,.45253,.557965,.384314,.169646,.456262,.55803,.388235,.168126,.459988,.558082,.392157,.166617,.463708,.558119,.396078,.165117,.467423,.558141,.4,.163625,.471133,.558148,.403922,.162142,.474838,.55814,.407843,.160665,.47854,.558115,.411765,.159194,.482237,.558073,.415686,.157729,.485932,.558013,.419608,.15627,.489624,.557936,.423529,.154815,.493313,.55784,.427451,.153364,.497,.557724,.431373,.151918,.500685,.557587,.435294,.150476,.504369,.55743,.439216,.149039,.508051,.55725,.443137,.147607,.511733,.557049,.447059,.14618,.515413,.556823,.45098,.144759,.519093,.556572,.454902,.143343,.522773,.556295,.458824,.141935,.526453,.555991,.462745,.140536,.530132,.555659,.466667,.139147,.533812,.555298,.470588,.13777,.537492,.554906,.47451,.136408,.541173,.554483,.478431,.135066,.544853,.554029,.482353,.133743,.548535,.553541,.486275,.132444,.552216,.553018,.490196,.131172,.555899,.552459,.494118,.129933,.559582,.551864,.498039,.128729,.563265,.551229,.501961,.127568,.566949,.550556,.505882,.126453,.570633,.549841,.509804,.125394,.574318,.549086,.513725,.124395,.578002,.548287,.517647,.123463,.581687,.547445,.521569,.122606,.585371,.546557,.52549,.121831,.589055,.545623,.529412,.121148,.592739,.544641,.533333,.120565,.596422,.543611,.537255,.120092,.600104,.54253,.541176,.119738,.603785,.5414,.545098,.119512,.607464,.540218,.54902,.119423,.611141,.538982,.552941,.119483,.614817,.537692,.556863,.119699,.61849,.536347,.560784,.120081,.622161,.534946,.564706,.120638,.625828,.533488,.568627,.12138,.629492,.531973,.572549,.122312,.633153,.530398,.576471,.123444,.636809,.528763,.580392,.12478,.640461,.527068,.584314,.126326,.644107,.525311,.588235,.128087,.647749,.523491,.592157,.130067,.651384,.521608,.596078,.132268,.655014,.519661,.6,.134692,.658636,.517649,.603922,.137339,.662252,.515571,.607843,.14021,.665859,.513427,.611765,.143303,.669459,.511215,.615686,.146616,.67305,.508936,.619608,.150148,.676631,.506589,.623529,.153894,.680203,.504172,.627451,.157851,.683765,.501686,.631373,.162016,.687316,.499129,.635294,.166383,.690856,.496502,.639216,.170948,.694384,.493803,.643137,.175707,.6979,.491033,.647059,.180653,.701402,.488189,.65098,.185783,.704891,.485273,.654902,.19109,.708366,.482284,.658824,.196571,.711827,.479221,.662745,.202219,.715272,.476084,.666667,.20803,.718701,.472873,.670588,.214,.722114,.469588,.67451,.220124,.725509,.466226,.678431,.226397,.728888,.462789,.682353,.232815,.732247,.459277,.686275,.239374,.735588,.455688,.690196,.24607,.73891,.452024,.694118,.252899,.742211,.448284,.698039,.259857,.745492,.444467,.701961,.266941,.748751,.440573,.705882,.274149,.751988,.436601,.709804,.281477,.755203,.432552,.713725,.288921,.758394,.428426,.717647,.296479,.761561,.424223,.721569,.304148,.764704,.419943,.72549,.311925,.767822,.415586,.729412,.319809,.770914,.411152,.733333,.327796,.77398,.40664,.737255,.335885,.777018,.402049,.741176,.344074,.780029,.397381,.745098,.35236,.783011,.392636,.74902,.360741,.785964,.387814,.752941,.369214,.788888,.382914,.756863,.377779,.791781,.377939,.760784,.386433,.794644,.372886,.764706,.395174,.797475,.367757,.768627,.404001,.800275,.362552,.772549,.412913,.803041,.357269,.776471,.421908,.805774,.35191,.780392,.430983,.808473,.346476,.784314,.440137,.811138,.340967,.788235,.449368,.813768,.335384,.792157,.458674,.816363,.329727,.796078,.468053,.818921,.323998,.8,.477504,.821444,.318195,.803922,.487026,.823929,.312321,.807843,.496615,.826376,.306377,.811765,.506271,.828786,.300362,.815686,.515992,.831158,.294279,.819608,.525776,.833491,.288127,.823529,.535621,.835785,.281908,.827451,.545524,.838039,.275626,.831373,.555484,.840254,.269281,.835294,.565498,.84243,.262877,.839216,.575563,.844566,.256415,.843137,.585678,.846661,.249897,.847059,.595839,.848717,.243329,.85098,.606045,.850733,.236712,.854902,.616293,.852709,.230052,.858824,.626579,.854645,.223353,.862745,.636902,.856542,.21662,.866667,.647257,.8584,.209861,.870588,.657642,.860219,.203082,.87451,.668054,.861999,.196293,.878431,.678489,.863742,.189503,.882353,.688944,.865448,.182725,.886275,.699415,.867117,.175971,.890196,.709898,.868751,.169257,.894118,.720391,.87035,.162603,.898039,.730889,.871916,.156029,.901961,.741388,.873449,.149561,.905882,.751884,.874951,.143228,.909804,.762373,.876424,.137064,.913725,.772852,.877868,.131109,.917647,.783315,.879285,.125405,.921569,.79376,.880678,.120005,.92549,.804182,.882046,.114965,.929412,.814576,.883393,.110347,.933333,.82494,.88472,.106217,.937255,.83527,.886029,.102646,.941176,.845561,.887322,.099702,.945098,.85581,.888601,.097452,.94902,.866013,.889868,.095953,.952941,.876168,.891125,.09525,.956863,.886271,.892374,.095374,.960784,.89632,.893616,.096335,.964706,.906311,.894855,.098125,.968627,.916242,.896091,.100717,.972549,.926106,.89733,.104071,.976471,.935904,.89857,.108131,.980392,.945636,.899815,.112838,.984314,.9553,.901065,.118128,.988235,.964894,.902323,.123941,.992157,.974417,.90359,.130215,.996078,.983868,.904867,.136897,1,.993248,.906157,.143936]},{ShowIndexedColorActiveValues:1,IndexedColors:[.07,.5,.7,1,1,1,.85,1,1,.8,.5,1,.76,1,0,1,.71,.71,.5,.5,.5,.05,.05,1,1,.05,.05,.7,1,1,.7,.89,.96,.67,.36,.95,.54,1,0,.75,.65,.65,.5,.6,.6,1,.5,0,1,1,.19,.12,.94,.12,.5,.82,.89,.56,.25,.83,.24,1,0,.9,.9,.9,.75,.76,.78,.65,.65,.67,.54,.6,.78,.61,.48,.78,.5,.48,.78,.44,.48,.78,.36,.48,.76,1,.48,.38,.49,.5,.69,.76,.56,.56,.4,.56,.56,.74,.5,.89,1,.63,0,.65,.16,.16,.36,.72,.82,.44,.18,.69,0,1,0,.58,1,1,.58,.88,.88,.45,.76,.79,.33,.71,.71,.23,.62,.62,.14,.56,.56,.04,.49,.55,0,.41,.52,.88,.88,1,1,.85,.56,.65,.46,.45,.4,.5,.5,.62,.39,.71,.83,.48,0,.58,0,.58,.26,.62,.69,.34,.09,.56,0,.79,0,.44,.83,1,1,1,.78,.85,1,.78,.78,1,.78,.64,1,.78,.56,1,.78,.38,1,.78,.27,1,.78,.19,1,.78,.12,1,.78,0,1,.61,0,.9,.46,0,.83,.32,0,.75,.22,0,.67,.14,.3,.76,1,.3,.65,1,.13,.58,.84,.15,.49,.67,.15,.4,.59,.09,.33,.53,.96,.93,.82,.8,.82,.12,.71,.71,.76,.65,.33,.3,.34,.35,.38,.62,.31,.71,.67,.36,0,.46,.31,.27,.26,.51,.59,.26,0,.4,0,.49,0,.44,.67,.98,0,.73,1,0,.63,1,0,.56,1,0,.5,1,0,.42,1,.33,.36,.95,.47,.36,.89,.54,.31,.89,.63,.21,.83,.7,.12,.83,.7,.12,.73,.7,.05,.65,.74,.05,.53,.78,0,.4,.8,0,.35,.82,0,.31,.85,0,.27,.88,0,.22,.9,0,.18,.91,0,.15,.92,0,.14,.93,0,.13,.94,0,.12,.95,0,.11,.96,0,.1,.97,0,.09,.98,0,.08,.99,0,.07,1,0,.06],Annotations:[0,"Xx",1,"H",2,"He",3,"Li",4,"Be",5,"B",6,"C",7,"N",8,"O",9,"F",10,"Ne",11,"Na",12,"Mg",13,"Al",14,"Si",15,"P",16,"S",17,"Cl",18,"Ar",19,"K",20,"Ca",21,"Sc",22,"Ti",23,"V",24,"Cr",25,"Mn",26,"Fe",27,"Co",28,"Ni",29,"Cu",30,"Zn",31,"Ga",32,"Ge",33,"As",34,"Se",35,"Br",36,"Kr",37,"Rb",38,"Sr",39,"Y",40,"Zr",41,"Nb",42,"Mo",43,"Tc",44,"Ru",45,"Rh",46,"Pd",47,"Ag",48,"Cd",49,"In",50,"Sn",51,"Sb",52,"Te",53,"I",54,"Xe",55,"Cs",56,"Ba",57,"La",58,"Ce",59,"Pr",60,"Nd",61,"Pm",62,"Sm",63,"Eu",64,"Gd",65,"Tb",66,"Dy",67,"Ho",68,"Er",69,"Tm",70,"Yb",71,"Lu",72,"Hf",73,"Ta",74,"W",75,"Re",76,"Os",77,"Ir",78,"Pt",79,"Au",80,"Hg",81,"Tl",82,"Pb",83,"Bi",84,"Po",85,"At",86,"Rn",87,"Fr",88,"Ra",89,"Ac",90,"Th",91,"Pa",92,"U",93,"Np",94,"Pu",95,"Am",96,"Cm",97,"Bk",98,"Cf",99,"Es",100,"Fm",101,"Md",102,"No",103,"Lr",104,"Rf",105,"Db",106,"Sg",107,"Bh",108,"Hs",109,"Mt",110,"Ds",111,"Rg",112,"Cn",113,"Uut",114,"Uuq",115,"Uup",116,"Uuh",117,"Uus",118,"Uuo"],Name:"BlueObeliskElements"}];const Xu=Object.create(null);GJ.filter(t=>t.RGBPoints).filter(t=>t.ColorSpace!=="CIELAB").forEach(t=>{Xu[t.Name]=t});const Yu=Object.keys(Xu);Yu.sort();function WJ(t){return Xu[t]}function zJ(t){!t.RGBPoints||t.ColorSpace==="CIELAB"||(Xu[t.Name]||(Yu.push(t.Name),Yu.sort()),Xu[t.Name]=t)}function $J(t){const e=Yu.indexOf(t);e>-1&&Yu.splice(e,1),delete Xu[t]}var U1={addPreset:zJ,removePresetByName:$J,getPresetByName:WJ,rgbPresetNames:Yu};function gr(t){return bd.get(t)}function _i(){return bd.getAll()}const B1=t=>t&&typeof t=="object"&&Object.prototype.toString.call(t)!=="[object RegExp]"&&Object.prototype.toString.call(t)!=="[object Date]",jJ=t=>Array.isArray(t)?[]:{},Nd=(t,e)=>e&&e.clone===!0&&B1(t)?Zr(jJ(t),t,e):t,h8=(t,e,r)=>{const n=t.slice();return e.forEach(function(i,o){typeof n[o]>"u"?n[o]=Nd(i,r):B1(i)?n[o]=Zr(t[o],i,r):t.indexOf(i)===-1&&(n[o]=Nd(i,r))}),n},HJ=(t,e,r)=>{const n={};return B1(t)&&Object.keys(t).forEach(function(i){n[i]=Nd(t[i],r)}),Object.keys(e).forEach(function(i){!B1(e[i])||!t[i]?n[i]=Nd(e[i],r):n[i]=Zr(t[i],e[i],r)}),n},Zr=(t={},e={},r=void 0)=>{const n=Array.isArray(e),o=(r||{arrayMerge:h8}).arrayMerge||h8;return n?Array.isArray(t)?o(t,e,r):Nd(e,r):HJ(t,e,r)};/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */const FO=Symbol("Comlink.proxy"),KJ=Symbol("Comlink.endpoint"),UO=Symbol("Comlink.releaseProxy"),Nv=Symbol("Comlink.finalizer"),Np=Symbol("Comlink.thrown"),BO=t=>typeof t=="object"&&t!==null||typeof t=="function",qJ={canHandle:t=>BO(t)&&t[FO],serialize(t){const{port1:e,port2:r}=new MessageChannel;return WO(t,e),[r,[r]]},deserialize(t){return t.start(),Z5(t)}},XJ={canHandle:t=>BO(t)&&Np in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},GO=new Map([["proxy",qJ],["throw",XJ]]);function YJ(t,e){for(const r of t)if(e===r||r==="*"||r instanceof RegExp&&r.test(e))return!0;return!1}function WO(t,e=globalThis,r=["*"]){e.addEventListener("message",function n(i){if(!i||!i.data)return;if(!YJ(r,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}const{id:o,type:a,path:s}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Nc);let l;try{const f=s.slice(0,-1).reduce((d,h)=>d[h],t),u=s.reduce((d,h)=>d[h],t);switch(a){case"GET":l=u;break;case"SET":f[s.slice(-1)[0]]=Nc(i.data.value),l=!0;break;case"APPLY":l=u.apply(f,c);break;case"CONSTRUCT":{const d=new u(...c);l=HO(d)}break;case"ENDPOINT":{const{port1:d,port2:h}=new MessageChannel;WO(t,h),l=tZ(d,[d])}break;case"RELEASE":l=void 0;break;default:return}}catch(f){l={value:f,[Np]:0}}Promise.resolve(l).catch(f=>({value:f,[Np]:0})).then(f=>{const[u,d]=z1(f);e.postMessage(Object.assign(Object.assign({},u),{id:o}),d),a==="RELEASE"&&(e.removeEventListener("message",n),zO(e),Nv in t&&typeof t[Nv]=="function"&&t[Nv]())}).catch(f=>{const[u,d]=z1({value:new TypeError("Unserializable return value"),[Np]:0});e.postMessage(Object.assign(Object.assign({},u),{id:o}),d)})}),e.start&&e.start()}function JJ(t){return t.constructor.name==="MessagePort"}function zO(t){JJ(t)&&t.close()}function Z5(t,e){return Q5(t,[],e)}function Sg(t){if(t)throw new Error("Proxy has been released and is not useable")}function $O(t){return Kl(t,{type:"RELEASE"}).then(()=>{zO(t)})}const G1=new WeakMap,W1="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(G1.get(t)||0)-1;G1.set(t,e),e===0&&$O(t)});function ZJ(t,e){const r=(G1.get(e)||0)+1;G1.set(e,r),W1&&W1.register(t,e,t)}function QJ(t){W1&&W1.unregister(t)}function Q5(t,e=[],r=function(){}){let n=!1;const i=new Proxy(r,{get(o,a){if(Sg(n),a===UO)return()=>{QJ(i),$O(t),n=!0};if(a==="then"){if(e.length===0)return{then:()=>i};const s=Kl(t,{type:"GET",path:e.map(c=>c.toString())}).then(Nc);return s.then.bind(s)}return Q5(t,[...e,a])},set(o,a,s){Sg(n);const[c,l]=z1(s);return Kl(t,{type:"SET",path:[...e,a].map(f=>f.toString()),value:c},l).then(Nc)},apply(o,a,s){Sg(n);const c=e[e.length-1];if(c===KJ)return Kl(t,{type:"ENDPOINT"}).then(Nc);if(c==="bind")return Q5(t,e.slice(0,-1));const[l,f]=g8(s);return Kl(t,{type:"APPLY",path:e.map(u=>u.toString()),argumentList:l},f).then(Nc)},construct(o,a){Sg(n);const[s,c]=g8(a);return Kl(t,{type:"CONSTRUCT",path:e.map(l=>l.toString()),argumentList:s},c).then(Nc)}});return ZJ(i,t),i}function eZ(t){return Array.prototype.concat.apply([],t)}function g8(t){const e=t.map(z1);return[e.map(r=>r[0]),eZ(e.map(r=>r[1]))]}const jO=new WeakMap;function tZ(t,e){return jO.set(t,e),t}function HO(t){return Object.assign(t,{[FO]:!0})}function z1(t){for(const[e,r]of GO)if(r.canHandle(t)){const[n,i]=r.serialize(t);return[{type:"HANDLER",name:e,value:n},i]}return[{type:"RAW",value:t},jO.get(t)||[]]}function Nc(t){switch(t.type){case"HANDLER":return GO.get(t.name).deserialize(t.value);case"RAW":return t.value}}function Kl(t,e,r){return new Promise(n=>{const i=nZ();t.addEventListener("message",function o(a){!a.data||!a.data.id||a.data.id!==i||(t.removeEventListener("message",o),n(a.data))}),t.start&&t.start(),t.postMessage(Object.assign({id:i},e),r)})}function nZ(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}class Xw{constructor(e){this.numRequests={[ht.Interaction]:0,[ht.Thumbnail]:0,[ht.Prefetch]:0,[ht.Compute]:0},this.id=e||wn(),this.requestPool={[ht.Interaction]:{0:[]},[ht.Thumbnail]:{0:[]},[ht.Prefetch]:{0:[]},[ht.Compute]:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={[ht.Interaction]:0,[ht.Thumbnail]:0,[ht.Prefetch]:0,[ht.Compute]:0},this.maxNumRequests={[ht.Interaction]:6,[ht.Thumbnail]:6,[ht.Prefetch]:5,[ht.Compute]:1e3}}setMaxSimultaneousRequests(e,r){this.maxNumRequests[e]=r}getMaxSimultaneousRequests(e){return this.maxNumRequests[e]}destroy(){this.timeoutHandle&&window.clearTimeout(this.timeoutHandle)}addRequest(e,r,n,i=0){const o={requestFn:e,type:r,additionalDetails:n};this.requestPool[r][i]===void 0&&(this.requestPool[r][i]=[]),this.requestPool[r][i].push(o),this.startGrabbing()}filterRequests(e){Object.keys(this.requestPool).forEach(r=>{const n=this.requestPool[r];Object.keys(n).forEach(i=>{n[i]=n[i].filter(o=>e(o))})})}clearRequestStack(e){if(!this.requestPool[e])throw new Error(`No category for the type ${e} found`);this.requestPool[e]={0:[]}}sendRequests(e){const r=this.maxNumRequests[e]-this.numRequests[e];let n=0;for(let i=0;i{this.numRequests[e]--,this.startAgain()}):(this.numRequests[e]--,n++)}}return n&&this.startAgain(),!0}getNextRequest(e){const r=this.getSortedPriorityGroups(e);for(const n of r)if(this.requestPool[e][n].length)return this.requestPool[e][n].shift();return null}startGrabbing(){const e=this.sendRequests(ht.Interaction),r=this.sendRequests(ht.Thumbnail),n=this.sendRequests(ht.Prefetch),i=this.sendRequests(ht.Compute);!e&&!r&&!n&&!i&&(this.awake=!1)}startAgain(){this.awake&&(this.grabDelay!==void 0?this.timeoutHandle||(this.timeoutHandle=window.setTimeout(()=>{this.timeoutHandle=null,this.startGrabbing()},this.grabDelay)):this.startGrabbing())}getSortedPriorityGroups(e){return Object.keys(this.requestPool[e]).map(Number).filter(n=>this.requestPool[e][n].length).sort((n,i)=>n-i)}getRequestPool(){return this.requestPool}}class KO{constructor(){this.workerRegistry={},this.workerPoolManager=new Xw("webworker")}registerWorker(e,r,n={}){var c;const{maxWorkerInstances:i=1,overwrite:o=!1,autoTerminateOnIdle:a={enabled:!1,idleTimeThreshold:3e3}}=n;if(this.workerRegistry[e]&&!o){console.warn(`Worker type '${e}' is already registered...`);return}o&&((c=this.workerRegistry[e])!=null&&c.idleCheckIntervalId)&&clearInterval(this.workerRegistry[e].idleCheckIntervalId);const s={workerFn:null,instances:[],loadCounters:[],lastActiveTime:[],nativeWorkers:[],autoTerminateOnIdle:a.enabled,idleCheckIntervalId:null,idleTimeThreshold:a.idleTimeThreshold};s.loadCounters=Array(i).fill(0),s.lastActiveTime=Array(i).fill(null);for(let l=0;la!==null);let i=0,o=r.loadCounters[0]||0;for(let a=1;a{const f=async()=>{const{api:u,index:d}=this.getNextWorkerAPI(e);if(!u){const h=new Error(`No available worker instance for '${e}'`);console.error(h),l(h);return}try{let h=[];s.length&&(h=s.map(v=>HO(v)));const g=this.workerRegistry[e];g.processing=!0;const p=await u[r](n,...h);g.processing=!1,g.lastActiveTime[d]=Date.now(),g.autoTerminateOnIdle&&!g.idleCheckIntervalId&&g.idleTimeThreshold&&(g.idleCheckIntervalId=setInterval(()=>{this.terminateIdleWorkers(e,g.idleTimeThreshold)},g.idleTimeThreshold)),c(p)}catch(h){console.error(`Error executing method '${r}' on worker '${e}':`,h),l(h)}finally{this.workerRegistry[e].loadCounters[d]--}};this.workerPoolManager.addRequest(f,i,a,o)})}terminateIdleWorkers(e,r){const n=this.workerRegistry[e];if(n.processing)return;const i=Date.now();n.instances.forEach((o,a)=>{const s=n.lastActiveTime[a],c=s!==null&&n.loadCounters[a]>0,l=i-s;!c&&l>r&&this.terminateWorkerInstance(e,a)})}terminate(e){const r=this.workerRegistry[e];if(!r){console.error(`Worker type '${e}' is not registered.`);return}r.instances.forEach((n,i)=>{this.terminateWorkerInstance(e,i)})}terminateWorkerInstance(e,r){const n=this.workerRegistry[e],i=n.instances[r];i!==null&&(i[UO](),n.nativeWorkers[r].terminate(),n.instances[r]=null,n.lastActiveTime[r]=null)}}let If=!1;const e3={gpuTier:{tier:2},isMobile:!1,rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,strictZSpacingForVolumeViewport:!0},peerImport:t=>null};let Bc={...e3,rendering:{...e3.rendering}},Hf=null;function rZ(){const t=document.createElement("canvas");return t.getContext("webgl2")||t.getContext("webgl")||t.getContext("experimental-webgl")}function iZ(){const t=rZ();return t instanceof WebGLRenderingContext||t instanceof WebGL2RenderingContext}function qO(){return/iPad|iPhone|iPod/.test(navigator.platform)?!0:navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&navigator.platform.includes("MacIntel")}function oZ(t=Bc){var r;return If||(Bc=Zr(e3,t),qO()&&((r=t.rendering)!=null&&r.preferSizeOverAccuracy?Bc.rendering.preferSizeOverAccuracy=!0:console.log("norm16 texture not supported, you can turn on the preferSizeOverAccuracy flag to use native data type, but be aware of the inaccuracy of the rendering in high bits")),iZ()?console.log("CornerstoneRender: using GPU rendering"):(console.log("CornerstoneRender: GPU not detected, using CPU rendering"),Bc.rendering.useCPURendering=!0),If=!0,Hf||(Hf=new KO),If)}function Yw(){return!qO()}function Kf(){return Bc.rendering.useCPURendering}function aZ(){return If}function Jw(){return Bc}function cc(){return Hf||(Hf=new KO),Hf}function sZ(t){return Bc.peerImport(t)}function XO(t,e,r){return Math.abs(t-e)<=r}function cZ(t,e,r=1e-5){if(t.length!==e.length)return!1;for(let n=0;n0&&typeof t[0]=="number"}function pt(t,e,r=1e-5){return typeof t!=typeof e||t===null||e===null?!1:p8(t)&&p8(e)?XO(t,e,r):m8(t)&&m8(e)?cZ(t,e,r):!1}const YO=t=>typeof t=="number"?-t:t!=null&&t.map?t.map(YO):!t,t3=t=>typeof t=="number"?Math.abs(t):t!=null&&t.map?t.map(t3):t,JO=(t,e,r=void 0)=>pt(t,YO(e),r),lZ=(t,e,r=void 0)=>pt(t3(t),t3(e),r),Zw=new Map;function uZ(t){Zw.set(t.Name,t)}function Pd(t){return Zw.get(t)}function ZO(){return Array.from(Zw.keys())}function Qw(t,e){const r=U1.rgbPresetNames.map(s=>U1.getPresetByName(s)),n=ZO().map(s=>Pd(s)),o=r.concat(n).find(s=>{const{RGBPoints:c}=s;if(c.length!==t.length)return!1;for(let l=0;ll-f/4*Math.log((1-c)/c),a=Array.from({length:e},(c,l)=>(l+1)/(e+2)).flatMap(c=>[i(c,n,r),c,c,c,.5,0]),s=Ys.newInstance();return s.buildFunctionFromArray(tt.newInstance({values:a,numberOfComponents:6})),s}function Gn(t,e){return t.worldToIndex(e).map(Math.round)}function $1(t){const e=t.getSize(),r=[];for(let n=0;n{t.addRGBPoint(...r)}))}const hZ=Object.freeze(Object.defineProperty({__proto__:null,getTransferFunctionNodes:$1,setTransferFunctionNodes:c2},Symbol.toStringTag,{value:"Module"})),{InterpolationType:Of,OpacityMode:gZ}=XI,{vtkErrorMacro:Pv}=W,Pp=4;function pZ(t,e){e.classHierarchy.push("vtkVolumeProperty"),t.getMTime=()=>{let i=e.mtime,o;for(let a=0;ao?i:o):e.componentData[a].colorChannels===3&&e.componentData[a].rGBTransferFunction&&(o=e.componentData[a].rGBTransferFunction.getMTime(),i=i>o?i:o),e.componentData[a].scalarOpacity&&(o=e.componentData[a].scalarOpacity.getMTime(),i=i>o?i:o),e.componentData[a].gradientOpacity&&(e.componentData[a].disableGradientOpacity||(o=e.componentData[a].gradientOpacity.getMTime(),i=i>o?i:o));return i},t.getColorChannels=i=>i<0||i>3?(Pv("Bad index - must be between 0 and 3"),0):e.componentData[i].colorChannels,t.setGrayTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=!1;return e.componentData[i].grayTransferFunction!==o&&(e.componentData[i].grayTransferFunction=o,a=!0),e.componentData[i].colorChannels!==1&&(e.componentData[i].colorChannels=1,a=!0),a&&t.modified(),a},t.getGrayTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].grayTransferFunction===null&&(e.componentData[i].grayTransferFunction=qu.newInstance(),e.componentData[i].grayTransferFunction.addPoint(0,0),e.componentData[i].grayTransferFunction.addPoint(1024,1),e.componentData[i].colorChannels!==1&&(e.componentData[i].colorChannels=1),t.modified()),e.componentData[i].grayTransferFunction},t.setRGBTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=!1;return e.componentData[i].rGBTransferFunction!==o&&(e.componentData[i].rGBTransferFunction=o,a=!0),e.componentData[i].colorChannels!==3&&(e.componentData[i].colorChannels=3,a=!0),a&&t.modified(),a},t.getRGBTransferFunction=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].rGBTransferFunction===null&&(e.componentData[i].rGBTransferFunction=Ys.newInstance(),e.componentData[i].rGBTransferFunction.addRGBPoint(0,0,0,0),e.componentData[i].rGBTransferFunction.addRGBPoint(1024,1,1,1),e.componentData[i].colorChannels!==3&&(e.componentData[i].colorChannels=3),t.modified()),e.componentData[i].rGBTransferFunction},t.setScalarOpacity=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return e.componentData[i].scalarOpacity!==o?(e.componentData[i].scalarOpacity=o,t.modified(),!0):!1},t.getScalarOpacity=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[i].scalarOpacity===null&&(e.componentData[i].scalarOpacity=qu.newInstance(),e.componentData[i].scalarOpacity.addPoint(0,1),e.componentData[i].scalarOpacity.addPoint(1024,1),t.modified()),e.componentData[i].scalarOpacity},t.setComponentWeight=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(i<0||i>=Pp)return Pv("Invalid index"),!1;const a=Math.min(1,Math.max(0,o));return e.componentData[i].componentWeight!==a?(e.componentData[i].componentWeight=a,t.modified(),!0):!1},t.getComponentWeight=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return i<0||i>=Pp?(Pv("Invalid index"),0):e.componentData[i].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Of.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Of.LINEAR),t.setInterpolationTypeToFastLinear=()=>t.setInterpolationType(Of.FAST_LINEAR),t.getInterpolationTypeAsString=()=>W.enumToString(Of,e.interpolationType),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const o=W.capitalize(i);t[`set${o}`]=(a,s)=>e.componentData[a][`${i}`]!==s?(e.componentData[a][`${i}`]=s,t.modified(),!0):!1}),["useGradientOpacity","scalarOpacityUnitDistance","gradientOpacityMinimumValue","gradientOpacityMinimumOpacity","gradientOpacityMaximumValue","gradientOpacityMaximumOpacity","opacityMode","forceNearestInterpolation"].forEach(i=>{const o=W.capitalize(i);t[`get${o}`]=a=>e.componentData[a][`${i}`]})}const mZ={colorMixPreset:null,independentComponents:!0,interpolationType:Of.FAST_LINEAR,shade:!1,ambient:.1,diffuse:.7,specular:.2,specularPower:10,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function QO(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,mZ,r),W.obj(t,e),!e.componentData){e.componentData=[];for(let n=0;nt,t.makeProperty=yZ.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const r=e.mapper.getBounds();if(!r||r.length!==6)return r;if(r[0]>r[1])return e.mapperBounds=r.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),r;const n=i=>i[0].map((o,a)=>i.map(s=>s[a]));if(!e.mapperBounds||!n([r,e.mapperBounds]).reduce((i,o)=>i&&o[0]===o[1],!0)||t.getMTime()>e.boundsMTime.getMTime()){xZ("Recomputing bounds..."),e.mapperBounds=r.map(a=>a);const i=[];qt.getCorners(r,i),t.computeMatrix();const o=new Float64Array(16);St(o,e.matrix),i.forEach(a=>et(a,a,o)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((a,s)=>s%2===0?i.reduce((c,l)=>c>l[s/2]?l[s/2]:c,a):i.reduce((c,l)=>c{let r=e.mtime;if(e.property!==null){const n=e.property.getMTime();r=n>r?n:r}return r},t.getRedrawMTime=()=>{let r=e.mtime;if(e.mapper!==null){let n=e.mapper.getMTime();r=n>r?n:r,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),n=e.mapper.getInput().getMTime(),r=n>r?n:r)}return r}}const CZ={mapper:null,property:null,bounds:[1,-1,1,-1,1,-1]};function eM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,CZ,r),Kw.extend(t,e,r),e.boundsMTime={},W.obj(e.boundsMTime),W.set(t,e,["property"]),W.setGet(t,e,["mapper"]),W.getArray(t,e,["bounds"],6),wZ(t,e)}const SZ=W.newInstance(eM,"vtkVolume");var TZ={newInstance:SZ,extend:eM};const{vtkErrorMacro:_Z}=W;class EZ{constructor(){this.segmentMapping={},this.segments=[null],this.faces=[]}addSegment(e){const r=e[0],n=e[e.length-1];if(r===n||e.length<2)return;const i=this.segmentMapping[r],o=this.segmentMapping[n];if(i!==void 0&&o!==void 0)if(Math.abs(i)===Math.abs(o)){const a=i0)for(let c=1;c0){const a=this.segments[i];for(let s=1;s0){const a=this.segments[o];for(let s=1;s{const i=r[0];if(!i){_Z("Invalid or missing input");return}const o=hr.newInstance();o.shallowCopy(i);const a=new EZ,s=i.getLines().getData();let c=0;for(;c2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,bZ,r),W.obj(t,e),W.algo(t,e,1,1),DZ(t,e)}const IZ=W.newInstance(tM,"vtkClosedPolyLineToSurfaceFilter");var OZ={newInstance:IZ,extend:tM};const{vtkErrorMacro:v8}=Br;function MZ(t){const e=t.getPolys().getData(),r=t.getStrips().getData(),n={cellSize:0,cell:[],done:!1,polyIdx:0,stripIdx:0,remainingStripLength:0,next(){if(n.polyIdx{let i=r.getMTime();return e.cutFunction&&(i=Math.max(i,e.cutFunction.getMTime())),i};function n(i,o){const a=i.getPoints(),s=a.getData(),c=a.getNumberOfPoints(),l=[],f=[],u=[];(!e.cutScalars||e.cutScalars.length0;let C=!0;for(let _=1;_0!==w){C=!1;break}if(C)continue;const S=[];for(let _=0;_0;if(x[E]>0===D)continue;let I=_,R=E,M=x[R]-x[I];M<=0&&(I=E,R=_,M*=-1);let L=0;M!==0&&(L=(e.cutValue-x[I])/M);const A=y.cell[I],G=y.cell[R];p[0]=s[A*3],p[1]=s[A*3+1],p[2]=s[A*3+2],v[0]=s[G*3],v[1]=s[G*3+1],v[2]=s[G*3+2];const P=[p[0]+L*(v[0]-p[0]),p[1]+L*(v[1]-p[1]),p[2]+L*(v[2]-p[2])];S.push({pointEdge1:A,pointEdge2:G,intersectedPoint:P,newPointID:-1})}for(let _=0;_2&&(u.push(T),S.forEach(_=>{u.push(_.newPointID)}))}o.getPoints().setData(Hm(a.getDataType(),l),3),f.length!==0&&o.getLines().setData(Uint16Array.from(f)),u.length!==0&&o.getPolys().setData(Uint16Array.from(u))}t.requestData=(i,o)=>{const a=i[0];if(!a){v8("Invalid or missing input");return}if(!e.cutFunction){v8("Missing cut function");return}const s=hr.newInstance();n(a,s),o[0]=s}}const LZ={cutFunction:null,cutScalars:null,cutValue:0};function nM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,LZ,r),un(t,e),qx(t,e,1,1),Jn(t,e,["cutFunction","cutValue"]),RZ(t,e)}const NZ=Bt(nM,"vtkCutter");var PZ={newInstance:NZ,extend:nM};const AZ=[2,0,1,2,2,3,2,4,5,2,6,7,2,0,2,2,1,3,2,4,6,2,5,7,2,0,4,2,1,5,2,2,6,2,3,7],kZ=[4,0,1,3,2,4,4,6,7,5,4,8,10,11,9,4,12,13,15,14,4,16,18,19,17,4,20,21,23,22];function VZ(t,e){e.classHierarchy.push("vtkCubeSource");function r(n,i){if(e.deleted)return;const o=hr.newInstance();i[0]=o;const a=24,s=W.newTypedArray(e.pointType,a*3);o.getPoints().setData(s,3);const c=W.newTypedArray(e.pointType,a*3),l=tt.newInstance({name:"Normals",values:c,numberOfComponents:3});o.getPointData().setNormals(l);let f=2;e.generate3DTextureCoordinates===!0&&(f=3);const u=W.newTypedArray(e.pointType,a*f),d=tt.newInstance({name:"TextureCoordinates",values:u,numberOfComponents:f});o.getPointData().setTCoords(d);const h=[0,0,0],g=[0,0,0],p=[0,0];let v=0;h[0]=-e.xLength/2,g[0]=-1,g[1]=0,g[2]=0;for(let x=0;x<2;x++){h[1]=-e.yLength/2;for(let m=0;m<2;m++){p[1]=h[1]+.5,h[2]=-e.zLength/2;for(let y=0;y<2;y++)p[0]=(h[2]+.5)*(1-2*x),s[v*3]=h[0],s[v*3+1]=h[1],s[v*3+2]=h[2],c[v*3]=g[0],c[v*3+1]=g[1],c[v*3+2]=g[2],f===2?(u[v*f]=p[0],u[v*f+1]=p[1]):(u[v*f]=2*x-1,u[v*f+1]=2*m-1,u[v*f+2]=2*y-1),v++,h[2]+=e.zLength;h[1]+=e.yLength}h[0]+=e.xLength,g[0]+=2}h[1]=-e.yLength/2,g[1]=-1,g[0]=0,g[2]=0;for(let x=0;x<2;x++){h[0]=-e.xLength/2;for(let m=0;m<2;m++){p[0]=(h[0]+.5)*(2*x-1),h[2]=-e.zLength/2;for(let y=0;y<2;y++)p[1]=(h[2]+.5)*-1,s[v*3]=h[0],s[v*3+1]=h[1],s[v*3+2]=h[2],c[v*3]=g[0],c[v*3+1]=g[1],c[v*3+2]=g[2],f===2?(u[v*f]=p[0],u[v*f+1]=p[1]):(u[v*f]=2*m-1,u[v*f+1]=2*x-1,u[v*f+2]=2*y-1),v++,h[2]+=e.zLength;h[0]+=e.xLength}h[1]+=e.yLength,g[1]+=2}h[2]=-e.zLength/2,g[2]=-1,g[0]=0,g[1]=0;for(let x=0;x<2;x++){h[1]=-e.yLength/2;for(let m=0;m<2;m++){p[1]=h[1]+.5,h[0]=-e.xLength/2;for(let y=0;y<2;y++)p[0]=(h[0]+.5)*(2*x-1),s[v*3]=h[0],s[v*3+1]=h[1],s[v*3+2]=h[2],c[v*3]=g[0],c[v*3+1]=g[1],c[v*3+2]=g[2],f===2?(u[v*f]=p[0],u[v*f+1]=p[1]):(u[v*f]=2*y-1,u[v*f+1]=2*m-1,u[v*f+2]=2*x-1),v++,h[0]+=e.xLength;h[1]+=e.yLength}h[2]+=e.zLength,g[2]+=2}if(e.rotations&&br.buildFromDegree().rotateX(e.rotations[0]).rotateY(e.rotations[1]).rotateZ(e.rotations[2]).apply(s).apply(c),e.center&&br.buildFromRadian().translate(...e.center).apply(s),e.matrix){br.buildFromRadian().setMatrix(e.matrix).apply(s);const x=[e.matrix[0],e.matrix[1],e.matrix[2],0,e.matrix[4],e.matrix[5],e.matrix[6],0,e.matrix[8],e.matrix[9],e.matrix[10],0,0,0,0,1];br.buildFromRadian().setMatrix(x).apply(c)}e.generateFaces?o.getPolys().deepCopy(e._polys):o.getPolys().initialize(),e.generateLines?(o.getLines().deepCopy(e._lineCells),o.getPointData().setNormals(null)):o.getLines().initialize(),o.modified()}t.setBounds=function(){let n=[];if(Array.isArray(arguments.length<=0?void 0:arguments[0]))n=arguments.length<=0?void 0:arguments[0];else for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,FZ,r),W.obj(t,e),W.setGet(t,e,["xLength","yLength","zLength","generate3DTextureCoordinates","generateFaces","generateLines"]),W.setGetArray(t,e,["center","rotations"],3),W.setGetArray(t,e,["matrix"],16),e._polys=ul.newInstance({values:Uint16Array.from(kZ)}),e._lineCells=ul.newInstance({values:Uint16Array.from(AZ)}),W.moveToProtected(t,e,["polys","lineCells"]),W.algo(t,e,0,1),VZ(t,e)}const UZ=W.newInstance(rM,"vtkCubeSource");var iM={newInstance:UZ,extend:rM};const{vtkErrorMacro:y8}=W;function BZ(t,e){e.classHierarchy.push("vtkImageDataOutlineFilter");const r={...t};t.requestData=(n,i)=>{const o=n[0];if(!o||!o.isA("vtkImageData")){y8("Invalid or missing input");return}const a=o.getSpatialExtent();if(!a){y8("Unable to fetch spatial extents of input image.");return}e._cubeSource.setBounds(a),e._cubeSource.setMatrix(o.getIndexToWorld()),i[0]=e._cubeSource.getOutputData()},t.getMTime=()=>Math.max(r.getMTime(),e._cubeSource.getMTime()),t.setGenerateFaces=e._cubeSource.setGenerateFaces,t.setGenerateLines=e._cubeSource.setGenerateLines,t.getGenerateFaces=e._cubeSource.getGenerateFaces,t.getGenerateLines=e._cubeSource.getGenerateLines}const GZ={};function oM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,GZ,r),W.obj(t,e),W.algo(t,e,1,1),e._cubeSource=iM.newInstance(),W.moveToProtected(t,e,["cubeSource","tmpOut"]),BZ(t,e)}const WZ=W.newInstance(oM,"vtkImageDataOutlineFilter");var zZ={newInstance:WZ,extend:oM};let tC;function $Z(t,e){e.classHierarchy.push("vtkAbstractTransform","vtkHomogeneousTransform","vtkTransform"),t.transformPoint=(r,n)=>(et(n,r,e.matrix),n),t.transformPoints=(r,n)=>{const i=new Float64Array(3),o=new Float64Array(3);for(let a=0;a{t.setPreMultiplyFlag(!0)},t.postMultiply=()=>{t.setPreMultiplyFlag(!1)},t.transformMatrix=(r,n)=>(e.preMultiplyFlag?bt(n,e.matrix,r):bt(n,r,e.matrix),n),t.transformMatrices=(r,n)=>{const i=new Float64Array(16),o=new Float64Array(16),a=e.preMultiplyFlag?()=>bt(o,e.matrix,i):()=>bt(o,i,e.matrix);for(let s=0;stC({matrix:nt.invertMatrix(Array.from(e.matrix),[],4),preMultiplyFlag:e.preMultiplyFlag})}const jZ={preMultiplyFlag:!1,matrix:[...iw]};function aM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jZ,r),W.obj(t,e),W.setGet(t,e,["preMultiplyFlag"]),W.setGetArray(t,e,["matrix"],16),$Z(t,e)}tC=W.newInstance(aM,"vtkTransform");var HZ={newInstance:tC,extend:aM},KZ=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkImageResliceMapperVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ - -// all variables that represent positions or directions have a suffix -// indicating the coordinate system they are in. The possible values are -// MC - Model coordinates -// WC - World coordinates -// VC - View coordinates -// DC - Display coordinates -// TC - Texture coordinates - -// frag position in VC -//VTK::PositionVC::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -// picking support -//VTK::Picking::Dec - -// camera and actor matrix values -//VTK::Camera::Dec - -void main() -{ - //VTK::PositionVC::Impl - - //VTK::TCoord::Impl - - //VTK::Picking::Impl -} -`,qZ=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkImageResliceMapperFS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ -// Template for the gpu image mapper fragment shader - -// VC position of this fragment -//VTK::PositionVC::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -// picking support -//VTK::Picking::Dec - -// handle coincident offsets -//VTK::Coincident::Dec - -//VTK::ZBuffer::Dec - -// the output of this shader -//VTK::Output::Dec - -void main() -{ - // VC position of this fragment. This should not branch/return/discard. - //VTK::PositionVC::Impl - - // Place any calls that require uniform flow (e.g. dFdx) here. - //VTK::UniformFlow::Impl - - // Set gl_FragDepth here (gl_FragCoord.z by default) - //VTK::Depth::Impl - - // Early depth peeling abort: - //VTK::DepthPeeling::PreColor - - //VTK::TCoord::Impl - - if (gl_FragData[0].a <= 0.0) - { - discard; - } - - //VTK::DepthPeeling::Impl - - //VTK::Picking::Impl - - // handle coincident offsets - //VTK::Coincident::Impl - - //VTK::ZBuffer::Impl - - //VTK::RenderPassFragmentShader::Impl -} -`;const{vtkErrorMacro:pc}=Br;function x8(t,e,r){return e.identity(r),t.reduce((n,i,o)=>o===0?i?e.copy(n,i):e.identity(n):i?e.multiply(n,n,i):n,r)}function XZ(t,e){e.classHierarchy.push("vtkOpenGLImageResliceMapper");function r(i){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(o=>i.unregisterGraphicsResourceUser(o,t))}t.buildPass=i=>{if(i){e.currentRenderPass=null,e._openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const o=e._openGLRenderer.getRenderable();e._openGLCamera=e._openGLRenderer.getViewNodeFor(o.getActiveCamera());const a=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),a&&!a.isDeleted()&&a!==e._openGLRenderWindow&&r(a),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},t.translucentPass=(i,o)=>{i&&(e.currentRenderPass=o,t.render())},t.zBufferPass=i=>{i&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=i=>t.zBufferPass(i),t.opaquePass=i=>{i&&t.render()},t.getCoincidentParameters=(i,o)=>e.renderable.getResolveCoincidentTopology()==ko.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const i=e._openGLImageSlice.getRenderable(),o=e._openGLRenderer.getRenderable();t.renderPiece(o,i)},t.renderPiece=(i,o)=>{if(t.invokeEvent({type:"StartEvent"}),e.renderable.update(),e.currentInput=e.renderable.getInputData(),!e.currentInput){pc("No input!");return}t.updateResliceGeometry(),t.renderPieceStart(i,o),t.renderPieceDraw(i,o),t.renderPieceFinish(i,o),t.invokeEvent({type:"EndEvent"})},t.renderPieceStart=(i,o)=>{t.updateBufferObjects(i,o),o.getProperty().getInterpolationType()===Xc.NEAREST?(e.openGLTexture.setMinificationFilter(Je.NEAREST),e.openGLTexture.setMagnificationFilter(Je.NEAREST),e.colorTexture.setMinificationFilter(Je.NEAREST),e.colorTexture.setMagnificationFilter(Je.NEAREST),e.pwfTexture.setMinificationFilter(Je.NEAREST),e.pwfTexture.setMagnificationFilter(Je.NEAREST)):(e.openGLTexture.setMinificationFilter(Je.LINEAR),e.openGLTexture.setMagnificationFilter(Je.LINEAR),e.colorTexture.setMinificationFilter(Je.LINEAR),e.colorTexture.setMagnificationFilter(Je.LINEAR),e.pwfTexture.setMinificationFilter(Je.LINEAR),e.pwfTexture.setMagnificationFilter(Je.LINEAR)),e.lastBoundBO=null},t.renderPieceDraw=(i,o)=>{const a=e.context;e.openGLTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),t.updateShaders(e.tris,i,o),a.drawArrays(a.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(i,o)=>{},t.updateBufferObjects=(i,o)=>{t.getNeedToRebuildBufferObjects(i,o)&&t.buildBufferObjects(i,o)},t.getNeedToRebuildBufferObjects=(i,o)=>{var a,s,c;return e.VBOBuildTime.getMTime(){var T,_,E,D;const a=e.currentInput;if(!a)return;const s=(T=a.getPointData())==null?void 0:T.getScalars();if(!s)return;const c=s.getNumberOfComponents();let l=Ww(a,s);const f=e._openGLRenderWindow.getGraphicsResourceForObject(s);if(!((_=f==null?void 0:f.oglObject)!=null&&_.getHandle())||(f==null?void 0:f.hash)!==l){e.openGLTexture=yn.newInstance(),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const b=a.getDimensions();e.openGLTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.openGLTexture.resetFormatAndType(),e.openGLTexture.create3DFilterableFromDataArray(b[0],b[1],b[2],s),e._openGLRenderWindow.setGraphicsResourceForObject(s,e.openGLTexture,l),s!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(s,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,t)),e._scalars=s}else e.openGLTexture=f.oglObject;const d=o.getProperty(),h=d.getIndependentComponents(),g=h?c:1,p=h?2*g:1,v=d.getRGBTransferFunction();l=sa(v,h,g);const x=e._openGLRenderWindow.getGraphicsResourceForObject(v);if(!((E=x==null?void 0:x.oglObject)!=null&&E.getHandle())||(x==null?void 0:x.hash)!==l){const I=1024*p*3,R=new Uint8ClampedArray(I);if(e.colorTexture=yn.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),v){const M=new Float32Array(3072);for(let L=0;L0){const M=e.resliceGeom.getPointData().getNormals();M?R.normals=M:pc("Slab mode requested without normals")}e.tris.getCABO().createVBO(I,"polys",kr.SURFACE,R)}e.VBOBuildString=S,e.VBOBuildTime.modified()},t.updateShaders=(i,o,a)=>{if(e.lastBoundBO=i,t.getNeedToRebuildShaders(i,o,a)){const s={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(s,o,a);const c=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(s.Vertex,s.Fragment,s.Geometry);c!==i.getProgram()&&(i.setProgram(c),i.getVAO().releaseGraphicsResources()),i.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(i.getProgram());i.getVAO().bind(),t.setMapperShaderParameters(i,o,a),t.setCameraShaderParameters(i,o,a),t.setPropertyShaderParameters(i,o,a)},t.setMapperShaderParameters=(i,o,a)=>{const s=i.getProgram();if(i.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>i.getAttributeUpdateTime().getMTime()||i.getShaderSourceTime().getMTime()>i.getAttributeUpdateTime().getMTime())){s.isUniformUsed("texture1")&&s.setUniformi("texture1",e.openGLTexture.getTextureUnit()),s.isAttributeUsed("vertexWC")&&(i.getVAO().addAttributeArray(s,i.getCABO(),"vertexWC",i.getCABO().getVertexOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||pc("Error setting vertexWC in shader VAO.")),s.isAttributeUsed("normalWC")&&(i.getVAO().addAttributeArray(s,i.getCABO(),"normalWC",i.getCABO().getNormalOffset(),i.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||pc("Error setting normalWC in shader VAO.")),s.isUniformUsed("slabThickness")&&s.setUniformf("slabThickness",e.renderable.getSlabThickness()),s.isUniformUsed("spacing")&&s.setUniform3fv("spacing",e.currentInput.getSpacing()),s.isUniformUsed("slabType")&&s.setUniformi("slabType",e.renderable.getSlabType()),s.isUniformUsed("slabType")&&s.setUniformi("slabType",e.renderable.getSlabType()),s.isUniformUsed("slabTrapezoid")&&s.setUniformi("slabTrapezoid",e.renderable.getSlabTrapezoidIntegration());const l=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null;if(s.isUniformUsed("WCTCMatrix")){const f=e.currentInput,u=f.getDimensions();_n(e.tmpMat4,f.getIndexToWorld()),nn(e.tmpMat4,e.tmpMat4,[-.5,-.5,-.5]),Ha(e.tmpMat4,e.tmpMat4,u),$n(e.tmpMat4,e.tmpMat4),l&&bt(e.tmpMat4,e.tmpMat4,l),s.setUniformMatrix("WCTCMatrix",e.tmpMat4)}s.isUniformUsed("vboScaling")&&s.setUniform3fv("vboScaling",i.getCABO().getCoordScale()??[1,1,1]),i.getAttributeUpdateTime().modified()}if(e.haveSeenDepthRequest&&i.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),i.getProgram().isUniformUsed("coffset")){const c=t.getCoincidentParameters(o,a);i.getProgram().setUniformf("coffset",c.offset),i.getProgram().isUniformUsed("cfactor")&&i.getProgram().setUniformf("cfactor",c.factor)}},t.setCameraShaderParameters=(i,o,a)=>{const s=e._openGLCamera.getKeyMatrices(o),c=e._openGLImageSlice.getKeyMatrices(),f=i.getCABO().getCoordShiftAndScaleEnabled()?i.getCABO().getInverseShiftAndScaleMatrix():null,u=i.getProgram();u.isUniformUsed("MCPCMatrix")&&(qe(e.tmpMat4),u.setUniformMatrix("MCPCMatrix",x8([s.wcpc,c.mcwc,f],Od,e.tmpMat4))),u.isUniformUsed("MCVCMatrix")&&(qe(e.tmpMat4),u.setUniformMatrix("MCVCMatrix",x8([s.wcvc,c.mcwc,f],Od,e.tmpMat4)))},t.setPropertyShaderParameters=(i,o,a)=>{const s=i.getProgram(),c=a.getProperty(),l=c.getOpacity();s.setUniformf("opacity",l);const f=e.openGLTexture.getComponents(),u=c.getIndependentComponents();if(u)for(let p=0;p{var h;const s=e.openGLTexture.getComponents(),c=a.getProperty().getIndependentComponents(),l=e.renderable.getSlabThickness(),f=e.renderable.getSlabType(),u=e.renderable.getSlabTrapezoidIntegration();let d=!1;return(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(d=!0),d||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||((h=i.getProgram())==null?void 0:h.getHandle())===0||e.lastTextureComponents!==s||e.lastIndependentComponents!==c||e.lastSlabThickness!==l||e.lastSlabType!==f||e.lastSlabTrapezoidIntegration!==u?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=s,e.lastIndependentComponents=c,e.lastSlabThickness=l,e.lastSlabType=f,e.lastSlabTrapezoidIntegration=u,!0):!1},t.getShaderTemplate=(i,o,a)=>{i.Vertex=KZ,i.Fragment=qZ,i.Geometry=""},t.replaceShaderValues=(i,o,a)=>{if(t.replaceShaderTCoord(i,o,a),t.replaceShaderPositionVC(i,o,a),e.haveSeenDepthRequest){let s=i.Fragment;s=ce.substitute(s,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,s=ce.substitute(s,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,i.Fragment=s}t.replaceShaderCoincidentOffset(i,o,a)},t.replaceShaderTCoord=(i,o,a)=>{let s=i.Vertex;const c=i.Geometry;let l=i.Fragment;const f=["uniform mat4 WCTCMatrix;","out vec3 fragTexCoord;"],u=e.renderable.getSlabThickness();s=ce.substitute(s,"//VTK::TCoord::Dec",f).result;const d=["fragTexCoord = (WCTCMatrix * vertexWC).xyz;"];s=ce.substitute(s,"//VTK::TCoord::Impl",d).result;const h=e.openGLTexture.getComponents(),g=a.getProperty().getIndependentComponents();let p=["in vec3 fragTexCoord;","uniform highp sampler3D texture1;","uniform mat4 WCTCMatrix;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;"];if(g){for(let x=1;x0&&(p=p.concat(["uniform vec3 spacing;","uniform float slabThickness;","uniform int slabType;","uniform int slabTrapezoid;","uniform vec3 vboScaling;"]),p=p.concat(["vec4 compositeValue(vec4 currVal, vec4 valToComp, int trapezoid)","{"," vec4 retVal = vec4(1.0);"," if (slabType == 0) // min"," {"," retVal = min(currVal, valToComp);"," }"," else if (slabType == 1) // max"," {"," retVal = max(currVal, valToComp);"," }"," else if (slabType == 3) // sum"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," else // mean"," {"," retVal = currVal + (trapezoid > 0 ? 0.5 * valToComp : valToComp); "," }"," return retVal;","}"])),l=ce.substitute(l,"//VTK::TCoord::Dec",p).result;let v=["if (any(greaterThan(fragTexCoord, vec3(1.0))) || any(lessThan(fragTexCoord, vec3(0.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}","vec4 tvalue = texture(texture1, fragTexCoord);"];if(u>0&&(v=v.concat(["// Get the first and last samples","int numSlices = 1;","float scaling = min(min(spacing.x, spacing.y), spacing.z) * 0.5;","vec3 normalxspacing = scaling * normalWCVSOutput;","float distTraveled = length(normalxspacing);","int trapezoid = 0;","while (distTraveled < slabThickness * 0.5)","{"," distTraveled += length(normalxspacing);"," float fnumSlices = float(numSlices);"," if (distTraveled > slabThickness * 0.5)"," {"," // Before stepping outside the slab, sample at the boundaries"," normalxspacing = normalWCVSOutput * slabThickness * 0.5 / fnumSlices;"," trapezoid = slabTrapezoid;"," }"," vec3 fragTCoordNeg = (WCTCMatrix * vec4(vertexWCVSOutput.xyz - fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordNeg);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }"," vec3 fragTCoordPos = (WCTCMatrix * vec4(vertexWCVSOutput.xyz + fnumSlices * normalxspacing * vboScaling, 1.0)).xyz;"," if (!any(greaterThan(fragTCoordNeg, vec3(1.0))) && !any(lessThan(fragTCoordNeg, vec3(0.0))))"," {"," vec4 newVal = texture(texture1, fragTCoordPos);"," tvalue = compositeValue(tvalue, newVal, trapezoid);"," numSlices += 1;"," }","}","// Finally, if slab type is *mean*, divide the sum by the numSlices","if (slabType == 2)","{"," tvalue = tvalue / float(numSlices);","}"])),g){const x=["r","g","b","a"];for(let m=0;m{let s=i.Vertex;const c=i.Geometry;let l=i.Fragment;const f=e.renderable.getSlabThickness();let u=["attribute vec4 vertexWC;"];u=u.concat([`//${t.getMTime()}${e.resliceGeomUpdateString}`]),f>0&&(u=u.concat(["attribute vec3 normalWC;","varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),s=ce.substitute(s,"//VTK::PositionVC::Dec",u).result;let d=["gl_Position = MCPCMatrix * vertexWC;"];f>0&&(d=d.concat(["normalWCVSOutput = normalWC;","vertexWCVSOutput = vertexWC;"])),s=ce.substitute(s,"//VTK::PositionVC::Impl",d).result,s=ce.substitute(s,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result;let h=[];f>0&&(h=h.concat(["varying vec3 normalWCVSOutput;","varying vec4 vertexWCVSOutput;"])),l=ce.substitute(l,"//VTK::PositionVC::Dec",h).result,i.Vertex=s,i.Geometry=c,i.Fragment=l};function n(i){nt.normalize(i);const o=[0,0,0];for(let a=0;a<3;++a){ej(o),o[a]=1;const s=nt.dot(i,o);if(s<-.999||s>.999)return[!0,a]}return[!1,2]}t.updateResliceGeometry=()=>{var u;let i="";const o=e.currentInput,a=o==null?void 0:o.getBounds();let s=!0,c=2;const l=e.renderable.getSlicePolyData(),f=e.renderable.getSlicePlane();if(l)i=i.concat(`PolyData${l.getMTime()}`);else if(f){i=i.concat(`Plane${f.getMTime()}`);const d=hw();o&&(i=i.concat(`Image${o.getMTime()}`),X7(d,...o.getDirection()),yh(d,d));const h=[...f.getNormal()];Dp(h,h,d),[s,c]=n(h)}else{const d=Xr.newInstance();d.setNormal(0,0,1);let h=[0,1,0,1,0,1];o&&(h=a),d.setOrigin(h[0],h[2],.5*(h[5]+h[4])),e.renderable.setSlicePlane(d),i=i.concat(`Plane${f==null?void 0:f.getMTime()}`),o&&(i=i.concat(`Image${o.getMTime()}`))}if(!e.resliceGeom||e.resliceGeomUpdateString!==i){if(l)e.resliceGeom||(e.resliceGeom=hr.newInstance()),e.resliceGeom.getPoints().setData(l.getPoints().getData(),3),e.resliceGeom.getPolys().setData(l.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(l.getPointData().getNormals());else if(f)if(s){const d=new Float32Array(12),h=o.worldToIndex(f.getOrigin(),[0,0,0]),g=[(c+1)%3,(c+2)%3].sort(),p=o.getSpatialExtent();let v=0;for(let C=0;C<2;++C)for(let S=0;S<2;++S)d[v+c]=h[c],d[v+g[0]]=p[2*g[0]+S],d[v+g[1]]=p[2*g[1]+C],v+=3;e.transform.setMatrix(o.getIndexToWorld()),e.transform.transformPoints(d,d);const x=new Uint16Array(8);x[0]=3,x[1]=0,x[2]=1,x[3]=3,x[4]=3,x[5]=0,x[6]=3,x[7]=2;const m=f.getNormal();nt.normalize(m);const y=new Float32Array(12);for(let C=0;C<4;++C)y[3*C]=m[0],y[3*C+1]=m[1],y[3*C+2]=m[2];e.resliceGeom||(e.resliceGeom=hr.newInstance()),e.resliceGeom.getPoints().setData(d,3),e.resliceGeom.getPolys().setData(x,1);const w=tt.newInstance({numberOfComponents:3,values:y,name:"Normals"});e.resliceGeom.getPointData().setNormals(w)}else{e.outlineFilter.setInputData(o),e.cutter.setInputConnection(e.outlineFilter.getOutputPort()),e.cutter.setCutFunction(f),e.lineToSurfaceFilter.setInputConnection(e.cutter.getOutputPort()),e.lineToSurfaceFilter.update(),e.resliceGeom||(e.resliceGeom=hr.newInstance());const d=e.lineToSurfaceFilter.getOutputData();e.resliceGeom.getPoints().setData(d.getPoints().getData(),3),e.resliceGeom.getPolys().setData(d.getPolys().getData(),1),e.resliceGeom.getPointData().setNormals(d.getPointData().getNormals());const h=f.getNormal(),g=e.resliceGeom.getNumberOfPoints();nt.normalize(h);const p=new Float32Array(g*3);for(let x=0;x{i&&(e.openGLTexture=i,e._externalOpenGLTexture=!0)},t.delete=gh(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const YZ={VBOBuildTime:{},VBOBuildString:null,haveSeenDepthRequest:!1,lastHaveSeenDepthRequest:!1,lastIndependentComponents:!1,lastTextureComponents:0,lastSlabThickness:0,lastSlabTrapezoidIntegration:0,lastSlabType:-1,openGLTexture:null,colorTextureString:null,pwfTextureString:null,resliceGeom:null,resliceGeomUpdateString:null,tris:null,colorTexture:null,pwfTexture:null,_externalOpenGLTexture:!1};function JZ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,YZ,r),tn.extend(t,e,r),aa.implementReplaceShaderCoincidentOffset(t,e,r),aa.implementBuildShadersWithReplacements(t,e,r),e.tris=fa.newInstance(),e.openGLTexture=null,e.colorTexture=null,e.pwfTexture=null,e.VBOBuildTime={},un(e.VBOBuildTime),e.tmpMat4=qe(new Float64Array(16)),e.outlineFilter=zZ.newInstance(),e.outlineFilter.setGenerateFaces(!0),e.outlineFilter.setGenerateLines(!1),e.cubePolyData=hr.newInstance(),e.cutter=PZ.newInstance(),e.lineToSurfaceFilter=OZ.newInstance(),e.transform=HZ.newInstance(),gi(t,e,["openGLTexture"]),XZ(t,e)}const ZZ=Bt(JZ,"vtkOpenGLImageResliceMapper");ir("vtkImageResliceMapper",ZZ);const mc={MAX:0,MIN:1,AVERAGE:2},{vtkErrorMacro:Tg}=W;function QZ(t,e){e.classHierarchy.push("vtkOpenGLImageCPRMapper");function r(n){[e._scalars,e._colorTransferFunc,e._pwFunc].forEach(i=>n.unregisterGraphicsResourceUser(i,t))}t.buildPass=n=>{if(n){e.currentRenderPass=null,e.openGLImageSlice=t.getFirstAncestorOfType("vtkOpenGLImageSlice"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer");const i=e._openGLRenderWindow;e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),i&&!i.isDeleted()&&i!==e._openGLRenderWindow&&r(i),e.context=e._openGLRenderWindow.getContext(),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow)}},t.opaquePass=(n,i)=>{n&&(e.currentRenderPass=i,t.render())},t.opaqueZBufferPass=n=>{n&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.getCoincidentParameters=(n,i)=>e.renderable.getResolveCoincidentTopology()===ko.PolygonOffset?e.renderable.getCoincidentTopologyPolygonOffsetParameters():null,t.render=()=>{const n=e.openGLImageSlice.getRenderable(),i=e._openGLRenderer.getRenderable();t.renderPiece(i,n)},t.renderPiece=(n,i)=>{t.invokeEvent({type:"StartEvent"}),e.renderable.update(),t.invokeEvent({type:"EndEvent"}),e.renderable.preRenderCheck()&&(e.currentImageDataInput=e.renderable.getInputData(0),e.currentCenterlineInput=e.renderable.getOrientedCenterline(),t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i))},t.renderPieceStart=(n,i)=>{t.updateBufferObjects(n,i)},t.renderPieceDraw=(n,i)=>{const o=e.context;e.volumeTexture.activate(),e.colorTexture.activate(),e.pwfTexture.activate(),e.tris.getCABO().getElementCount()&&(t.updateShaders(e.tris,n,i),o.drawArrays(o.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release()),e.volumeTexture.deactivate(),e.colorTexture.deactivate(),e.pwfTexture.deactivate()},t.renderPieceFinish=(n,i)=>{},t.updateBufferObjects=(n,i)=>{t.getNeedToRebuildBufferObjects(n,i)&&t.buildBufferObjects(n,i),i.getProperty().getInterpolationType()===Xc.NEAREST?(e.volumeTexture.setMinificationFilter(Je.NEAREST),e.volumeTexture.setMagnificationFilter(Je.NEAREST),e.colorTexture.setMinificationFilter(Je.NEAREST),e.colorTexture.setMagnificationFilter(Je.NEAREST),e.pwfTexture.setMinificationFilter(Je.NEAREST),e.pwfTexture.setMagnificationFilter(Je.NEAREST)):(e.volumeTexture.setMinificationFilter(Je.LINEAR),e.volumeTexture.setMagnificationFilter(Je.LINEAR),e.colorTexture.setMinificationFilter(Je.LINEAR),e.colorTexture.setMagnificationFilter(Je.LINEAR),e.pwfTexture.setMinificationFilter(Je.LINEAR),e.pwfTexture.setMagnificationFilter(Je.LINEAR))},t.getNeedToRebuildBufferObjects=(n,i)=>{var a;const o=e.VBOBuildTime.getMTime();return o{var _,E,D,b;const o=e.currentImageDataInput,a=e.currentCenterlineInput,s=(_=o==null?void 0:o.getPointData())==null?void 0:_.getScalars();if(!s)return;const c=e._openGLRenderWindow.getGraphicsResourceForObject(s),l=Ww(o,s);if(!((E=c==null?void 0:c.oglObject)!=null&&E.getHandle())||(c==null?void 0:c.hash)!==l){e.volumeTexture=yn.newInstance(),e.volumeTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const I=o.getDimensions();e.volumeTexture.setOglNorm16Ext(e.context.getExtension("EXT_texture_norm16")),e.volumeTexture.resetFormatAndType(),e.volumeTexture.create3DFilterableFromDataArray(I[0],I[1],I[2],s,e.renderable.getPreferSizeOverAccuracy()),e._openGLRenderWindow.setGraphicsResourceForObject(s,e.volumeTexture,l),s!==e._scalars&&(e._openGLRenderWindow.registerGraphicsResourceUser(s,t),e._openGLRenderWindow.unregisterGraphicsResourceUser(e._scalars,t)),e._scalars=s}else e.volumeTexture=c.oglObject;const u=s.getNumberOfComponents(),d=i.getProperty(),h=d.getIndependentComponents(),g=h?u:1,p=h?2*g:1,v=d.getRGBTransferFunction(),x=sa(v,h,g),m=e._openGLRenderWindow.getGraphicsResourceForObject(v);if(!((D=m==null?void 0:m.oglObject)!=null&&D.getHandle())||(m==null?void 0:m.hash)!==x){const R=1024*p*3,M=new Uint8ClampedArray(R);if(e.colorTexture=yn.newInstance(),e.colorTexture.setOpenGLRenderWindow(e._openGLRenderWindow),v){const L=new Float32Array(3072);for(let A=0;A{const a=e.volumeTexture.getComponents(),s=o.getProperty().getIndependentComponents(),c=!!e.renderable.getCenterPoint(),l=e.renderable.getUseUniformOrientation(),f=e.renderable.isProjectionEnabled()&&e.renderable.getProjectionMode();return n.getProgram()===0||e.lastUseCenterPoint!==c||e.lastUseUniformOrientation!==l||e.lastProjectionMode!==f||e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||e.lastTextureComponents!==a||e.lastIndependentComponents!==s?(e.lastUseCenterPoint=c,e.lastUseUniformOrientation=l,e.lastProjectionMode=f,e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,e.lastTextureComponents=a,e.lastIndependentComponents=s,!0):!1},t.buildShaders=(n,i,o)=>{t.getShaderTemplate(n,i,o),t.replaceShaderValues(n,i,o)},t.replaceShaderValues=(n,i,o)=>{let a=n.Vertex,s=n.Fragment;const c=["vec3 applyQuaternionToVec(vec4 q, vec3 v) {"," float uvx = q.y * v.z - q.z * v.y;"," float uvy = q.z * v.x - q.x * v.z;"," float uvz = q.x * v.y - q.y * v.x;"," float uuvx = q.y * uvz - q.z * uvy;"," float uuvy = q.z * uvx - q.x * uvz;"," float uuvz = q.x * uvy - q.y * uvx;"," float w2 = q.w * 2.0;"," uvx *= w2;"," uvy *= w2;"," uvz *= w2;"," uuvx *= 2.0;"," uuvy *= 2.0;"," uuvz *= 2.0;"," return vec3(v.x + uvx + uuvx, v.y + uvy + uuvy, v.z + uvz + uuvz);","}"];a=ce.substitute(a,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,a=ce.substitute(a,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result;const l=["attribute vec3 centerlinePosition;","attribute float quadIndex;","uniform float width;","out vec2 quadOffsetVSOutput;","out vec3 centerlinePosVSOutput;"],f=e.renderable.isProjectionEnabled(),u=e.renderable.getUseUniformOrientation();u?(l.push("out vec3 samplingDirVSOutput;","uniform vec4 centerlineOrientation;","uniform vec3 tangentDirection;",...c),f&&l.push("out vec3 projectionDirVSOutput;","uniform vec3 bitangentDirection;")):l.push("out vec4 centerlineTopOrientationVSOutput;","out vec4 centerlineBotOrientationVSOutput;","attribute vec4 centerlineTopOrientation;","attribute vec4 centerlineBotOrientation;"),a=ce.substitute(a,"//VTK::Color::Dec",l).result;const d=["quadOffsetVSOutput = vec2(width * (mod(quadIndex, 2.0) == 0.0 ? -0.5 : 0.5), quadIndex > 1.0 ? 0.0 : 1.0);","centerlinePosVSOutput = centerlinePosition;"];u?(d.push("samplingDirVSOutput = applyQuaternionToVec(centerlineOrientation, tangentDirection);"),f&&d.push("projectionDirVSOutput = applyQuaternionToVec(centerlineOrientation, bitangentDirection);")):d.push("centerlineTopOrientationVSOutput = centerlineTopOrientation;","centerlineBotOrientationVSOutput = centerlineBotOrientation;"),a=ce.substitute(a,"//VTK::Color::Impl",d).result;const h=e.volumeTexture.getComponents(),g=o.getProperty().getIndependentComponents();let p=["uniform mat4 MCTCMatrix; // Model coordinates to texture coordinates","in vec2 quadOffsetVSOutput;","in vec3 centerlinePosVSOutput;","uniform highp sampler3D volumeTexture;","uniform sampler2D colorTexture1;","uniform sampler2D pwfTexture1;","uniform float opacity;","uniform vec4 backgroundColor;","uniform float cshift0;","uniform float cscale0;","uniform float pwfshift0;","uniform float pwfscale0;"];f&&p.push("uniform vec3 volumeSizeMC;","uniform int projectionSlabNumberOfSamples;","uniform float projectionConstantOffset;","uniform float projectionStepLength;"),u?(p.push("in vec3 samplingDirVSOutput;"),f&&p.push("in vec3 projectionDirVSOutput;")):(p.push("uniform vec3 tangentDirection;","in vec4 centerlineTopOrientationVSOutput;","in vec4 centerlineBotOrientationVSOutput;",...c),f&&p.push("uniform vec3 bitangentDirection;"));const v=e.renderable.getCenterPoint();if(v&&p.push("uniform vec3 globalCenterPoint;"),g){for(let m=1;m 0.999 || qCosAngle < -0.999) {"," // Use LERP instead of SLERP when the two quaternions are close or opposite"," interpolatedOrientation = normalize(mix(q0, q1, quadOffsetVSOutput.y));","} else {"," float omega = acos(qCosAngle);"," interpolatedOrientation = normalize(sin((1.0 - quadOffsetVSOutput.y) * omega) * q0 + sin(quadOffsetVSOutput.y * omega) * q1);","}","vec3 samplingDirection = applyQuaternionToVec(interpolatedOrientation, tangentDirection);"),f&&x.push("vec3 projectionDirection = applyQuaternionToVec(interpolatedOrientation, bitangentDirection);")),v?x.push("float baseOffset = dot(samplingDirection, globalCenterPoint - centerlinePosVSOutput);","float horizontalOffset = quadOffsetVSOutput.x + baseOffset;"):x.push("float horizontalOffset = quadOffsetVSOutput.x;"),x.push("vec3 volumePosMC = centerlinePosVSOutput + horizontalOffset * samplingDirection;","vec3 volumePosTC = (MCTCMatrix * vec4(volumePosMC, 1.0)).xyz;","if (any(lessThan(volumePosTC, vec3(0.0))) || any(greaterThan(volumePosTC, vec3(1.0))))","{"," // set the background color and exit"," gl_FragData[0] = backgroundColor;"," return;","}"),f){const m=e.renderable.getProjectionMode();switch(m){case mc.MIN:x.push("const vec4 initialProjectionTextureValue = vec4(1.0);");break;case mc.MAX:case mc.AVERAGE:default:x.push("const vec4 initialProjectionTextureValue = vec4(0.0);");break}switch(x.push("vec3 projectionScaledDirection = projectionDirection / volumeSizeMC;","vec3 projectionStep = projectionStepLength * projectionScaledDirection;","vec3 projectionStartPosition = volumePosTC + projectionConstantOffset * projectionScaledDirection;","vec4 tvalue = initialProjectionTextureValue;","for (int projectionSampleIdx = 0; projectionSampleIdx < projectionSlabNumberOfSamples; ++projectionSampleIdx) {"," vec3 projectionSamplePosition = projectionStartPosition + float(projectionSampleIdx) * projectionStep;"," vec4 sampledTextureValue = texture(volumeTexture, projectionSamplePosition);"),m){case mc.MAX:x.push(" tvalue = max(tvalue, sampledTextureValue);");break;case mc.MIN:x.push(" tvalue = min(tvalue, sampledTextureValue);");break;case mc.AVERAGE:default:x.push(" tvalue = tvalue + sampledTextureValue;");break}x.push("}"),m===mc.AVERAGE&&x.push("tvalue = tvalue / float(projectionSlabNumberOfSamples);")}else x.push("vec4 tvalue = texture(volumeTexture, volumePosTC);");if(g){const m=["r","g","b","a"];for(let y=0;y{let a=n.Vertex,s=n.Fragment;if(e.renderable.getNumberOfClippingPlanes()){let c=e.renderable.getNumberOfClippingPlanes();c>6&&(W.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),c=6),a=ce.substitute(a,"//VTK::Clip::Dec",["uniform int numClipPlanes;","uniform vec4 clipPlanes[6];","varying float clipDistancesVSOutput[6];"]).result,a=ce.substitute(a,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,s=ce.substitute(s,"//VTK::Clip::Dec",["uniform int numClipPlanes;","varying float clipDistancesVSOutput[6];"]).result,s=ce.substitute(s,"//VTK::Clip::Impl",["for (int planeNum = 0; planeNum < 6; planeNum++)"," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}n.Vertex=a,n.Fragment=s},t.getShaderTemplate=(n,i,o)=>{n.Vertex=Gw,n.Fragment=wh,n.Geometry=""},t.setMapperShaderParameters=(n,i,o)=>{const a=n.getProgram(),s=n.getCABO();s.getElementCount()&&(e.VBOBuildTime.getMTime()>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())&&(a.isAttributeUsed("vertexMC")&&(n.getVAO().addAttributeArray(a,s,"vertexMC",s.getVertexOffset(),s.getStride(),e.context.FLOAT,3,e.context.FALSE)||Tg("Error setting vertexMC in shader VAO.")),n.getCABO().getCustomData().forEach(h=>{h&&a.isAttributeUsed(h.name)&&!n.getVAO().addAttributeArray(a,s,h.name,h.offset,s.getStride(),e.context.FLOAT,h.components,e.context.FALSE)&&Tg(`Error setting ${h.name} in shader VAO.`)}),n.getAttributeUpdateTime().modified());const c=e.volumeTexture.getTextureUnit();if(a.setUniformi("volumeTexture",c),a.setUniformf("width",e.renderable.getWidth()),n.getProgram().setUniform4fv("backgroundColor",e.renderable.getBackgroundColor()),a.isUniformUsed("tangentDirection")){const h=e.renderable.getTangentDirection();n.getProgram().setUniform3fArray("tangentDirection",h)}if(a.isUniformUsed("bitangentDirection")){const h=e.renderable.getBitangentDirection();n.getProgram().setUniform3fArray("bitangentDirection",h)}if(a.isUniformUsed("centerlineOrientation")){const h=e.renderable.getUniformOrientation();n.getProgram().setUniform4fv("centerlineOrientation",h)}if(a.isUniformUsed("globalCenterPoint")){const h=e.renderable.getCenterPoint();a.setUniform3fArray("globalCenterPoint",h)}if(e.renderable.isProjectionEnabled()){const h=e.currentImageDataInput,g=h.getSpacing(),p=h.getDimensions(),v=e.renderable.getProjectionSlabThickness(),x=e.renderable.getProjectionSlabNumberOfSamples(),m=tj([],g,p);a.setUniform3fArray("volumeSizeMC",m),a.setUniformi("projectionSlabNumberOfSamples",x);const y=-.5*v;a.setUniformf("projectionConstantOffset",y);const w=v/(x-1);a.setUniformf("projectionStepLength",w)}const l=e.currentImageDataInput,f=l.getWorldToIndex(),u=xw(new Float32Array(16),ob([],l.getDimensions())),d=O1(u,u,f);if(a.setUniformMatrix("MCTCMatrix",d),e.haveSeenDepthRequest&&n.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),e.renderable.getNumberOfClippingPlanes()){let h=e.renderable.getNumberOfClippingPlanes();h>6&&(W.vtkErrorMacro("OpenGL has a limit of 6 clipping planes"),h=6);const p=s.getCoordShiftAndScaleEnabled()?s.getInverseShiftAndScaleMatrix():null,v=p?_n(e.imagematinv,o.getMatrix()):o.getMatrix();p&&(St(v,v),bt(v,v,p),St(v,v)),St(e.imagemat,e.currentImageDataInput.getIndexToWorld()),bt(e.imagematinv,v,e.imagemat);const x=[];for(let m=0;m{const a=e.openGLImageSlice.getKeyMatrices().mcwc,s=e.openGLCamera.getKeyMatrices(i).wcpc;if(bt(e.imagemat,s,a),n.getCABO().getCoordShiftAndScaleEnabled()){const c=n.getCABO().getInverseShiftAndScaleMatrix();bt(e.imagemat,e.imagemat,c)}n.getProgram().setUniformMatrix("MCPCMatrix",e.imagemat)},t.setPropertyShaderParameters=(n,i,o)=>{const a=n.getProgram(),s=o.getProperty(),c=s.getOpacity();a.setUniformf("opacity",c);const l=e.volumeTexture.getComponents(),f=s.getIndependentComponents();if(f)for(let g=0;g{if(t.getNeedToRebuildShaders(n,i,o)){const a={Vertex:null,Fragment:null,Geometry:null};t.buildShaders(a,i,o);const s=e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(a.Vertex,a.Fragment,a.Geometry);s!==n.getProgram()&&(n.setProgram(s),n.getVAO().releaseGraphicsResources()),n.getShaderSourceTime().modified()}else e._openGLRenderWindow.getShaderCache().readyShaderProgram(n.getProgram());n.getVAO().bind(),t.setMapperShaderParameters(n,i,o),t.setCameraShaderParameters(n,i,o),t.setPropertyShaderParameters(n,i,o)},t.delete=W.chain(()=>{e._openGLRenderWindow&&r(e._openGLRenderWindow)},t.delete)}const eQ={currentRenderPass:null,volumeTexture:null,colorTexture:null,pwfTexture:null,tris:null,lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastTextureComponents:0,lastIndependentComponents:0,imagemat:null,imagematinv:null};function tQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,eQ,r),tn.extend(t,e,r),aa.implementReplaceShaderCoincidentOffset(t,e,r),W.algo(t,e,2,0),e.tris=fa.newInstance(),e.volumeTexture=null,e.colorTexture=null,e.pwfTexture=null,e.imagemat=qe(new Float64Array(16)),e.imagematinv=qe(new Float64Array(16)),e.VBOBuildTime={},W.obj(e.VBOBuildTime,{mtime:0}),QZ(t,e)}const nQ=W.newInstance(tQ,"vtkOpenGLImageCPRMapper");ir("vtkImageCPRMapper",nQ);const sM=Object.create(null);function uo(t,e){sM[t]=e}function rQ(t,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const iQ={};function oQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,iQ,r),e.overrides=sM,fw.extend(t,e,r),rQ(t,e)}W.newInstance(oQ,"vtkWebGPUViewNodeFactory");function aQ(t,e){e.classHierarchy.push("vtkWebGPUCamera"),t.getProjectionMatrix=(r,n,i,o)=>{if(qe(r),e.renderable.getParallelProjection()){const a=e.renderable.getParallelScale(),s=a*n,c=a,l=(o[0]-1)*s,f=(o[0]+1)*s,u=(o[1]-1)*c,d=(o[1]+1)*c,h=1/(f-l),g=1/(d-u);r[0]=2*h,r[5]=2*g,r[10]=1/(i[1]-i[0]),r[12]=(f+l)*h,r[13]=(d+u)*g,r[14]=i[1]/(i[1]-i[0])}else{const a=Math.tan(Math.PI*e.renderable.getViewAngle()/360);let s,c;e.renderable.getUseHorizontalViewAngle()===!0?(s=i[0]*a,c=i[0]*a/n):(s=i[0]*a*n,c=i[0]*a);const l=(o[0]-1)*s,f=(o[0]+1)*s,u=(o[1]-1)*c,d=(o[1]+1)*c;r[0]=2*i[0]/(f-l),r[5]=2*i[0]/(d-u),r[12]=(l+f)/(f-l),r[13]=(u+d)/(d-u),r[10]=0,r[14]=i[0],r[11]=-1,r[15]=0}},t.convertToOpenGLDepth=r=>{if(e.renderable.getParallelProjection())return 1-r;const n=e.renderable.getClippingRangeByReference();let i=-n[0]/r;return i=(n[0]+n[1])/(n[1]-n[0])+2*n[0]*n[1]/(i*(n[1]-n[0])),.5*i+.5},t.getKeyMatrices=r=>{const n=r.getRenderable(),i=r.getParent();if(Math.max(i.getMTime(),t.getMTime(),n.getMTime(),e.renderable.getMTime(),r.getStabilizedTime())>e.keyMatrixTime.getMTime()){const o=e.renderable.getViewMatrix();_n(e.keyMatrices.normalMatrix,o),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$n(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),St(e.keyMatrices.wcvc,o);const a=r.getStabilizedCenterByReference();nn(e.keyMatrices.scvc,e.keyMatrices.wcvc,a);const s=r.getAspectRatio(),c=e.renderable.getClippingRangeByReference();t.getProjectionMatrix(e.keyMatrices.vcpc,s,c,e.renderable.getWindowCenterByReference()),bt(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),$n(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const sQ={keyMatrixTime:null,keyMatrices:null};function cQ(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sQ,r),tn.extend(t,e,r),e.keyMatrixTime={},W.obj(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(16),vcpc:new Float64Array(16),pcsc:new Float64Array(16),wcvc:new Float64Array(16),scpc:new Float64Array(16),scvc:new Float64Array(16)},W.setGet(t,e,["keyMatrixTime"]),aQ(t,e)}const lQ=W.newInstance(cQ);uo("vtkCamera",lQ);function uQ(t,e){e.classHierarchy.push("vtkWebGPUBindGroup"),t.setBindables=r=>{if(e.bindables.length===r.length){let n=!0;for(let i=0;i{const n=[];for(let i=0;i{let n=t.getMTime();for(let o=0;on?a:n}if(n{const n=[],i=r.getBindGroupLayoutCount(e.label);for(let o=0;o2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fQ,r),W.obj(t,e),e.bindables=[],e.bindGroupTime={},W.obj(e.bindGroupTime,{mtime:0}),W.get(t,e,["bindGroupTime","handle","sizeInBytes","usage"]),W.setGet(t,e,["label","device","arrayInformation"]),uQ(t,e)}const dQ=W.newInstance(cM);var lM={newInstance:dQ,extend:cM};function hQ(t,e){e.classHierarchy.push("vtkWebGPUShaderModule"),t.initialize=(r,n)=>{e.device=r,e.handle=e.device.getHandle().createShaderModule({code:n.getCode()})}}const gQ={device:null,handle:null};function uM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gQ,r),W.obj(t,e),W.get(t,e,["lastCameraMTime"]),W.setGet(t,e,["device","handle"]),hQ(t,e)}const pQ=W.newInstance(uM,"vtkWebGPUShaderModule");var mQ={newInstance:pQ,extend:uM};function vQ(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const i=Array.isArray(r)?r.join(` -`):r;let o=!1;t.search(e)!==-1&&(o=!0);let a="";n&&(a="g");const s=new RegExp(e,a),c=t.replace(s,i);return{replace:o,result:c}}function yQ(t,e){e.classHierarchy.push("vtkWebGPUShaderCache"),t.getShaderModule=r=>{const n=r.getType(),i=r.getHash(),o=e._shaderModules.keys();for(let s=0;s2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xQ,r),e._shaderModules=new Map,W.obj(t,e),W.setGet(t,e,["device","window"]),yQ(t,e)}const wQ=W.newInstance(fM,"vtkWebGPUShaderCache");var Zt={newInstance:wQ,extend:fM,substitute:vQ};function CQ(t,e){e.classHierarchy.push("vtkWebGPUPipeline"),t.getShaderDescriptions=()=>e.shaderDescriptions,t.initialize=(r,n)=>{e.pipelineDescription=e.renderEncoder.getPipelineSettings(),e.pipelineDescription.primitive.topology=e.topology,e.pipelineDescription.vertex=e.vertexState,e.pipelineDescription.label=n;const i=[];for(let o=0;o{for(let n=0;n{r&&e.layouts.push({layout:r.getBindGroupLayout(e.device),label:r.getLabel()})},t.getBindGroupLayout=r=>e.layouts[r].layout,t.getBindGroupLayoutCount=r=>{for(let n=0;n{n.bindBuffers(r)}}const SQ={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function dM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,SQ,r),un(t,e),e.layouts=[],e.shaderDescriptions=[],gi(t,e,["handle","pipelineDescription"]),Jn(t,e,["device","renderEncoder","topology","vertexState"]),CQ(t,e)}const TQ=Bt(dM,"vtkWebGPUPipeline");var _Q={newInstance:TQ,extend:dM};function EQ(t,e){e.classHierarchy.push("vtkWebGPUShaderDescription"),t.hasOutput=r=>e.outputNames.includes(r),t.addOutput=function(r,n){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;e.outputTypes.push(r),e.outputNames.push(n),e.outputInterpolations.push(i)},t.addBuiltinOutput=(r,n)=>{e.builtinOutputTypes.push(r),e.builtinOutputNames.push(n)},t.addBuiltinInput=(r,n)=>{e.builtinInputTypes.push(r),e.builtinInputNames.push(n)},t.replaceShaderCode=(r,n)=>{const i=[];let o=[];if(n&&i.push(n.getShaderCode()),r||e.builtinInputNames.length){const a=[];if(a.push(`struct ${e.type}Input -{`),r){const s=r.getOutputNamesByReference(),c=r.getOutputTypesByReference(),l=r.getOutputInterpolationsByReference();for(let f=0;f1&&(a.push("};"),o=a,i[i.length-1]+=",",i.push(`input: ${e.type}Input`))}if(i.length&&(e.code=Zt.substitute(e.code,"//VTK::IOStructs::Input",i).result),e.outputNames.length+e.builtinOutputNames.length){const a=[`struct ${e.type}Output -{`];for(let s=0;s ${e.type}Output`]).result}e.code=Zt.substitute(e.code,"//VTK::IOStructs::Dec",o).result}}const DQ={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function hM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,DQ,r),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],W.obj(t,e),W.setGet(t,e,["type","hash","code"]),W.getArray(t,e,["outputTypes","outputNames","outputInterpolations"]),EQ(t,e)}const bQ=W.newInstance(hM,"vtkWebGPUShaderDescription");var w8={newInstance:bQ,extend:hM};const C8={r8unorm:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"float"},r8snorm:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"float"},r8uint:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},r8sint:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"sint"},r16uint:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"uint"},r16sint:{numComponents:1,nativeType:Int16Array,stride:2,elementSize:2,sampleType:"sint"},r16float:{numComponents:1,nativeType:Float32Array,stride:2,elementSize:2,sampleType:"float"},rg8unorm:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"float"},rg8snorm:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"float"},rg8uint:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"uint"},rg8sint:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"sint"},r32uint:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:4,sampleType:"uint"},r32sint:{numComponents:1,nativeType:Int32Array,stride:4,elementSize:4,sampleType:"sint"},r32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"unfilterable-float"},rg16uint:{numComponents:2,nativeType:Uint16Array,stride:4,elementSize:2,sampleType:"uint"},rg16sint:{numComponents:2,nativeType:Int16Array,stride:4,elementSize:2,sampleType:"sint"},rg16float:{numComponents:2,nativeType:Float32Array,stride:4,elementSize:2,sampleType:"float"},rgba8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"rgba8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgba8snorm:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"float"},rgba8uint:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"uint"},rgba8sint:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"sint"},bgra8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"bgra8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgb9e5ufloat:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rgb10a2unorm:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rg11b10ufloat:{numComponents:4,nativeType:Float32Array,stride:4,sampleType:"float"},rg32uint:{numComponents:2,nativeType:Uint32Array,stride:8,elementSize:4,sampleType:"uint"},rg32sint:{numComponents:2,nativeType:Int32Array,stride:8,elementSize:4,sampleType:"sint"},rg32float:{numComponents:2,nativeType:Float32Array,stride:8,elementSize:4,sampleType:"unfilterable-float"},rgba16uint:{numComponents:4,nativeType:Uint16Array,stride:8,elementSize:2,sampleType:"uint"},rgba16sint:{numComponents:4,nativeType:Int16Array,stride:8,elementSize:2,sampleType:"sint"},rgba16float:{numComponents:4,nativeType:Float32Array,stride:8,elementSize:2,sampleType:"float"},rgba32uint:{numComponents:4,nativeType:Uint32Array,stride:16,elementSize:4,sampleType:"uint"},rgba32sint:{numComponents:4,nativeType:Int32Array,stride:16,elementSize:4,sampleType:"sint"},rgba32float:{numComponents:4,nativeType:Float32Array,stride:16,elementSize:4,sampleType:"unfilterable-float"},stencil8:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},depth16unorm:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"depth"},depth24plus:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:3,sampleType:"depth"},"depth24plus-stencil8":{numComponents:2,nativeType:Uint32Array,stride:4,sampleType:"mixed"},depth32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"depth"}};function IQ(t){return!t||t.length<6?0:t in C8?C8[t]:(Dt(`unknown format ${t}`),null)}function OQ(t){if(!t||t.length<5)return 0;let e=1;t[t.length-2]==="x"&&(e=Number(t[t.length-1]));const r=e===1?t.length-1:t.length-3,n=Number(t[r]);if(Number.isNaN(n))return Dt(`unknown format ${t}`),0;const i=5-n/2;return e*i}function MQ(t){if(!t||t.length<5)return 0;let e=1;return t[t.length-2]==="x"&&(e=Number(t[t.length-1])),e}function RQ(t){if(!t||t.length<5)return 0;let e;if(t[0]==="f")e="Float";else if(t[0]==="s")e="Int";else if(t[0]==="u")e="Uint";else{Dt(`unknown format ${t}`);return}const r=t.split("x")[0],n=Number(r[r.length-1]);if(Number.isNaN(n)){Dt(`unknown format ${t}`);return}return e+=8*(5-n/2),e+="Array",e}function LQ(t){let e;if(t[0]==="f"||t[1]==="n")e="f32";else if(t[0]==="s"&&t[1]==="i")e="i32";else if(t[0]==="u"&&t[1]==="i")e="u32";else{Dt(`unknown format ${t}`);return}let r=1;return t[t.length-2]==="x"&&(r=Number(t[t.length-1])),r===4?`vec4<${e}>`:r===3?`vec3<${e}>`:r===2?`vec2<${e}>`:e}function NQ(t){if(!t)return 0;let e=1;return t.substring(0,3)==="vec"?e=Number(t[3]):t.substring(0,3)==="mat"&&(e=t[3]*t[5]),e*4}function PQ(t){if(t){if(t.includes("f32"))return"Float32Array";if(t.includes("i32"))return"Int32Array";if(t.includes("u32"))return"Uint32Array";Dt(`unknown format ${t}`)}}var Ar={getDetailsFromTextureFormat:IQ,getByteStrideFromBufferFormat:OQ,getNumberOfComponentsFromBufferFormat:MQ,getNativeTypeFromBufferFormat:RQ,getShaderTypeFromBufferFormat:LQ,getByteStrideFromShaderFormat:NQ,getNativeTypeFromShaderFormat:PQ};function AQ(t,e){if(t===e)return!0;if(t==null||e==null||t.length!==e.length)return!1;for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:"vertex",o=n;Array.isArray(o)||(o=[o]);for(let a=0;aa.names[0]s.names[0]?1:0)},t.removeBufferIfPresent=r=>{for(let n=0;n{for(let n=0;n{for(let n=0;n{for(let n=0;n{let r="",n=0;for(let i=0;i0&&(r+=`, -`),r=`${r} @location(${n}) ${e.inputs[i].names[o]} : ${s}`,n++}return r},t.getVertexInputInformation=()=>{const r={};if(e.inputs.length){const n=[];let i=0;for(let o=0;o{for(let n=0;n{},t.releaseGraphicsResources=()=>{e.created&&(e.inputs=[],e.bindingDescriptions=[],e.attributeDescriptions=[])}}const VQ={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function gM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,VQ,r),un(t,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],Jn(t,e,["created","device","handle","indexBuffer"]),kQ(t,e)}const FQ=Bt(gM,"vtkWebGPUVertexInput");var UQ={newInstance:FQ,extend:gM};const BQ=` -//VTK::Renderer::Dec - -//VTK::Color::Dec - -//VTK::Normal::Dec - -//VTK::TCoord::Dec - -//VTK::Select::Dec - -//VTK::Mapper::Dec - -//VTK::IOStructs::Dec - -@vertex -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output : vertexOutput; - - // var vertex: vec4 = vertexBC; - - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Select::Impl - - //VTK::Position::Impl - - return output; -} -`,GQ=` -//VTK::Renderer::Dec - -//VTK::Color::Dec - -//VTK::Normal::Dec - -//VTK::TCoord::Dec - -//VTK::Select::Dec - -//VTK::RenderEncoder::Dec - -//VTK::Mapper::Dec - -//VTK::IOStructs::Dec - -@fragment -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output : fragmentOutput; - - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::Light::Impl - - //VTK::TCoord::Impl - - //VTK::Select::Impl - - // var computedColor:vec4 = vec4(1.0,0.5,0.5,1.0); - - //VTK::RenderEncoder::Impl - return output; -} -`;function WQ(t,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),t.generateShaderDescriptions=(r,n,i)=>{const o=w8.newInstance({type:"vertex",hash:r,code:e.vertexShaderTemplate}),a=w8.newInstance({type:"fragment",hash:r,code:e.fragmentShaderTemplate}),s=n.getShaderDescriptions();s.push(o),s.push(a);const c=e.vertexShaderTemplate+e.fragmentShaderTemplate,l=new RegExp("//VTK::[^:]*::","g"),u=c.match(l).filter((d,h,g)=>g.indexOf(d)===h).map(d=>`replaceShader${d.substring(7,d.length-2)}`);for(let d=0;d{const o=n.getShaderDescription("vertex");o.replaceShaderCode(null,i),n.getShaderDescription("fragment").replaceShaderCode(o)},t.replaceShaderRenderEncoder=(r,n,i)=>{e.renderEncoder.replaceShaderCode(n)},e.shaderReplacements.set("replaceShaderRenderEncoder",t.replaceShaderRenderEncoder),t.replaceShaderRenderer=(r,n,i)=>{if(!e.WebGPURenderer)return;const o=e.WebGPURenderer.getBindGroup().getShaderCode(n),a=n.getShaderDescription("vertex");let s=a.getCode();s=Zt.substitute(s,"//VTK::Renderer::Dec",[o]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=Zt.substitute(s,"//VTK::Renderer::Dec",[o]).result,c.setCode(s)},e.shaderReplacements.set("replaceShaderRenderer",t.replaceShaderRenderer),t.replaceShaderMapper=(r,n,i)=>{const o=e.bindGroup.getShaderCode(n),a=n.getShaderDescription("vertex");let s=a.getCode();s=Zt.substitute(s,"//VTK::Mapper::Dec",[o]).result,a.setCode(s);const c=n.getShaderDescription("fragment");c.addBuiltinInput("bool","@builtin(front_facing) frontFacing"),s=c.getCode(),s=Zt.substitute(s,"//VTK::Mapper::Dec",[o]).result,c.setCode(s)},e.shaderReplacements.set("replaceShaderMapper",t.replaceShaderMapper),t.replaceShaderPosition=(r,n,i)=>{const o=n.getShaderDescription("vertex");o.addBuiltinOutput("vec4","@builtin(position) Position");let a=o.getCode();a=Zt.substitute(a,"//VTK::Position::Impl",[" output.Position = rendererUBO.SCPCMatrix*vertexBC;"]).result,o.setCode(a)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderTCoord=(r,n,i)=>{n.getShaderDescription("vertex").addOutput("vec2","tcoordVS")},e.shaderReplacements.set("replaceShaderTCoord",t.replaceShaderTCoord),t.addTextureView=r=>{e.textureViews.includes(r)||e.textureViews.push(r)},t.prepareToDraw=r=>{e.renderEncoder=r,t.updateInput(),t.updateBuffers(),t.updateBindings(),t.updatePipeline()},t.updateInput=()=>{},t.updateBuffers=()=>{},t.updateBindings=()=>{e.bindGroup.setBindables(t.getBindables())},t.computePipelineHash=()=>{},t.registerDrawCallback=r=>{r.registerDrawCallback(e.pipeline,t.draw)},t.prepareAndDraw=r=>{t.prepareToDraw(r),r.setPipeline(e.pipeline),t.draw(r)},t.draw=r=>{const n=r.getBoundPipeline();r.activateBindGroup(e.bindGroup),e.WebGPURenderer&&e.WebGPURenderer.bindUBO(r),n.bindVertexInput(r,e.vertexInput);const i=e.vertexInput.getIndexBuffer();i?r.drawIndexed(i.getIndexCount(),e.numberOfInstances,0,0,0):r.draw(e.numberOfVertices,e.numberOfInstances,0,0)},t.getBindables=()=>{const r=[...e.additionalBindables];e.UBO&&r.push(e.UBO),e.SSBO&&r.push(e.SSBO);for(let n=0;n{t.computePipelineHash(),e.pipeline=e.device.getPipeline(e.pipelineHash),e.pipeline||(e.pipeline=_Q.newInstance(),e.pipeline.setDevice(e.device),e.WebGPURenderer&&e.pipeline.addBindGroupLayout(e.WebGPURenderer.getBindGroup()),e.pipeline.addBindGroupLayout(e.bindGroup),t.generateShaderDescriptions(e.pipelineHash,e.pipeline,e.vertexInput),e.pipeline.setTopology(e.topology),e.pipeline.setRenderEncoder(e.renderEncoder),e.pipeline.setVertexState(e.vertexInput.getVertexInputInformation()),e.device.createPipeline(e.pipelineHash,e.pipeline))}}const zQ={additionalBindables:void 0,bindGroup:null,device:null,fragmentShaderTemplate:null,numberOfInstances:1,numberOfVertices:0,pipelineHash:null,shaderReplacements:null,SSBO:null,textureViews:null,topology:"triangle-list",UBO:null,vertexShaderTemplate:null,WebGPURenderer:null};function pM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zQ,r),tn.extend(t,e,r),e.textureViews=[],e.vertexInput=UQ.newInstance(),e.bindGroup=lM.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||GQ,e.vertexShaderTemplate=e.vertexShaderTemplate||BQ,e.shaderReplacements=new Map,W.get(t,e,["pipeline","vertexInput"]),W.setGet(t,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),WQ(t,e)}const $Q=W.newInstance(pM,"vtkWebGPUSimpleMapper");var mM={newInstance:$Q,extend:pM};function jQ(t,e){e.classHierarchy.push("vtkWebGPUFullScreenQuad"),t.replaceShaderPosition=(r,n,i)=>{const o=n.getShaderDescription("vertex");o.addBuiltinOutput("vec4","@builtin(position) Position"),o.addOutput("vec4","vertexVC");let a=o.getCode();a=Zt.substitute(a,"//VTK::Position::Impl",["output.tcoordVS = vec2(vertexBC.x * 0.5 + 0.5, 1.0 - vertexBC.y * 0.5 - 0.5);","output.Position = vec4(vertexBC, 1.0);","output.vertexVC = vec4(vertexBC, 1);"]).result,o.setCode(a)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.updateBuffers=()=>{const r=e.device.getBufferManager().getFullScreenQuadBuffer();e.vertexInput.addBuffer(r,["vertexBC"]),e.numberOfVertices=6}}const HQ={};function vM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,HQ,r),mM.extend(t,e,r),jQ(t,e)}const KQ=W.newInstance(vM,"vtkWebGPUFullScreenQuad");var n3={newInstance:KQ,extend:vM};const qQ={Verts:0,Lines:1,Triangles:2,Strips:3,LinesFromStrips:4,LinesFromTriangles:5,Points:6,UniformArray:7,PointArray:8,NormalsFromPoints:9,Texture:10,RawVertex:11,Storage:12,Index:13},XQ={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var Ch={BufferUsage:qQ,PrimitiveTypes:XQ};const Av=["getMappedRange","mapAsync","unmap"];function YQ(t,e,r,n){const i=n.byteLength,o=t.createBuffer({size:i,usage:GPUBufferUsage.COPY_SRC,mappedAtCreation:!0}),a=o.getMappedRange(0,i);new Uint8Array(a).set(new Uint8Array(n)),o.unmap();const s=t.createCommandEncoder();s.copyBufferToBuffer(o,0,e,r,i);const c=s.finish();t.queue.submit([c]),o.destroy()}function JQ(t,e){e.classHierarchy.push("vtkWebGPUBuffer"),t.create=(r,n)=>{e.handle=e.device.getHandle().createBuffer({size:r,usage:n,label:e.label}),e.sizeInBytes=r,e.usage=n},t.write=r=>{YQ(e.device.getHandle(),e.handle,0,r.buffer)},t.createAndWrite=(r,n)=>{e.handle=e.device.getHandle().createBuffer({size:r.byteLength,usage:n,mappedAtCreation:!0,label:e.label}),e.sizeInBytes=r.byteLength,e.usage=n,new Uint8Array(e.handle.getMappedRange()).set(new Uint8Array(r.buffer)),e.handle.unmap()};for(let r=0;r2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZQ,r),W.obj(t,e),W.get(t,e,["handle","sizeInBytes","usage"]),W.setGet(t,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),JQ(t,e)}const QQ=W.newInstance(yM);var r3={newInstance:QQ,extend:yM,...Ch};const{Representation:S8}=x0,{PrimitiveTypes:xs}=Ch;class eee{constructor(){this.keys=new Uint32Array(10),this.values=new Uint32Array(10),this.count=0}clear(){this.count=0}has(e){for(let r=0;r2)for(let o=0;o2){for(let o=0;o{const n=r.cells,i=r.primitiveType,o=r.representation,a=r.cellOffset,s=n.getData(),c=s.length,l=tee(i),f=r.numberOfPoints,u={provokedPointIds:new Uint8Array(f),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new eee};let d=null;o===S8.POINTS||i===xs.Points?d=kv.anythingToPoints:o===S8.WIREFRAME||i===xs.Lines?d=kv[`${l}ToWireframe`]:d=kv[`${l}ToSurface`],Ta=ree;let h=a||0;for(let g=0;g2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oee,r),r3.extend(t,e,r),W.setGet(t,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),iee(t,e)}const aee=W.newInstance(xM);var see={newInstance:aee,extend:xM,...Ch};const{BufferUsage:us}=Ch,{vtkErrorMacro:cee}=Br,{VtkDataTypes:vc}=tt,lee={};function uee(t){let e;switch(t.getDataType()){case vc.UNSIGNED_CHAR:e="uint8";break;case vc.FLOAT:e="float32";break;case vc.UNSIGNED_INT:e="uint32";break;case vc.INT:e="sint32";break;case vc.DOUBLE:e="float32";break;case vc.UNSIGNED_SHORT:e="uint16";break;case vc.SHORT:e="sin16";break;default:e="float32";break}switch(t.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||cee(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function _8(t,e,r,n,i){const o={},a=t.getFlatSize();if(!a)return o;let s=[0,0,0,0];i.shift&&(i.shift.length?s=i.shift:s.fill(i.shift));let c=[1,1,1,1];i.scale&&(i.scale.length?c=i.scale:c.fill(i.scale));const l=Object.prototype.hasOwnProperty.call(i,"packExtra")?i.packExtra:!1;let f,u=0;const d=r+(l?1:0),h=m0(n,a*d);let g=t.getFlatIdToPointId();i.cellData&&(g=t.getFlatIdToCellId()),r===1?f=function(v){h[u++]=c[0]*e[v]+s[0]}:r===2?f=function(v){h[u++]=c[0]*e[v]+s[0],h[u++]=c[1]*e[v+1]+s[1]}:r===3&&!l?f=function(v){h[u++]=c[0]*e[v]+s[0],h[u++]=c[1]*e[v+1]+s[1],h[u++]=c[2]*e[v+2]+s[2]}:r===3&&l?f=function(v){h[u++]=c[0]*e[v]+s[0],h[u++]=c[1]*e[v+1]+s[1],h[u++]=c[2]*e[v+2]+s[2],h[u++]=c[3]*1+s[3]}:r===4&&(f=function(v){h[u++]=c[0]*e[v]+s[0],h[u++]=c[1]*e[v+1]+s[1],h[u++]=c[2]*e[v+2]+s[2],h[u++]=c[3]*e[v+3]+s[3]});for(let p=0;pe.device.hasCachedObject(n),t.getBuffer=n=>n.hash?e.device.getCachedObject(n.hash,r,n):r(n),t.getBufferForPointArray=(n,i)=>{const o=uee(n),a={hash:`${n.getMTime()}I${i.getMTime()}${o}`,usage:us.PointArray,format:o,dataArray:n,indexBuffer:i};return t.getBuffer(a)},t.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=r3.newInstance(),e.fullScreenQuadBuffer.setDevice(e.device);const n=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0]);return e.fullScreenQuadBuffer.createAndWrite(n,GPUBufferUsage.VERTEX),e.fullScreenQuadBuffer.setStrideInBytes(12),e.fullScreenQuadBuffer.setArrayInformation([{offset:0,format:"float32x3"}]),e.fullScreenQuadBuffer}}const gee={device:null,fullScreenQuadBuffer:null};function wM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gee,r),un(t,e),Jn(t,e,["device"]),hee(t,e)}const pee=Bt(wM);var _0={newInstance:pee,extend:wM,...lee,...Ch};const{BufferUsage:mee}=_0,{vtkErrorMacro:Ul}=W;function vee(t,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){Ul(`entry named ${r} already exists`);return}e._bufferEntryNames.set(r,e.bufferEntries.length);const i=Ar.getByteStrideFromShaderFormat(n);e.bufferEntries.push({name:r,type:n,sizeInBytes:i,offset:e.sizeInBytes,nativeType:Ar.getNativeTypeFromShaderFormat(n)}),e.sizeInBytes+=i},t.send=r=>{if(!e._buffer){const n={nativeArray:e.Float32Array,usage:mee.Storage,label:e.label};e._buffer=r.getBufferManager().getBuffer(n),e.bindGroupTime.modified(),e._sendTime.modified();return}r.getHandle().queue.writeBuffer(e._buffer.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes*e.numberOfInstances),e._sendTime.modified()},t.createView=r=>{r in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes*e.numberOfInstances)),e[r]=W.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n,i)=>{const o=e._bufferEntryNames.get(r);if(o===void 0){Ul(`entry named ${r} not found in UBO`);return}const a=e.bufferEntries[o];t.createView(a.nativeType);const s=e[a.nativeType];s[(a.offset+n*e.sizeInBytes)/s.BYTES_PER_ELEMENT]=i},t.setArray=(r,n,i)=>{const o=e._bufferEntryNames.get(r);if(o===void 0){Ul(`entry named ${r} not found in UBO`);return}const a=e.bufferEntries[o];t.createView(a.nativeType);const s=e[a.nativeType],c=(a.offset+n*e.sizeInBytes)/s.BYTES_PER_ELEMENT;for(let l=0;l{const i=e._bufferEntryNames.get(r);if(i===void 0){Ul(`entry named ${r} not found in UBO`);return}const o=e.bufferEntries[i];t.createView(o.nativeType);const a=e[o.nativeType],s=n.length/e.numberOfInstances;for(let c=0;c{const i=e._bufferEntryNames.get(r);if(i===void 0){Ul(`entry named ${r} not found in UBO`);return}const o=e.bufferEntries[i];t.createView(o.nativeType);const a=e[o.nativeType],s=n.length/e.numberOfInstances;for(let c=0;c{const i=e._bufferEntryNames.get(r);if(i===void 0){Ul(`entry named ${r} not found in UBO`);return}const o=e.bufferEntries[i];t.createView(o.nativeType);const a=e[o.nativeType],s=9;for(let c=0;ce._sendTime.getMTime(),t.getShaderCode=(r,n)=>{const i=[`struct ${e.label}StructEntry -{`];for(let o=0;o, -}; -@binding(${r}) @group(${n}) var ${e.label}: ${e.label}Struct; -`),i.join(` -`)},t.getBindGroupEntry=()=>({resource:{buffer:e._buffer.getHandle()}}),t.clearData=()=>{e.numberOfInstances=0,e.sizeInBytes=0,e.bufferEntries=[],e._bufferEntryNames=new Map,e._buffer=null,delete e.arrayBuffer,delete e.Float32Array}}const yee={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function CM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,yee,r),W.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},W.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},W.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},W.get(t,e,["bindGroupTime"]),W.setGet(t,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),vee(t,e)}const xee=W.newInstance(CM,"vtkWebGPUStorageBuffer");var wee={newInstance:xee,extend:CM};const{BufferUsage:Cee}=_0,{vtkErrorMacro:Vv}=W;function See(t,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),t.addEntry=(r,n)=>{if(e._bufferEntryNames.has(r)){Vv(`entry named ${r} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(r,e.bufferEntries.length),e.bufferEntries.push({name:r,type:n,sizeInBytes:Ar.getByteStrideFromShaderFormat(n),offset:-1,nativeType:Ar.getNativeTypeFromShaderFormat(n),packed:!1})},t.sortBufferEntries=()=>{if(!e.sortDirty)return;let r=0;const n=[];let i=4;for(let o=0;o4&&(a.packed=!0,a.offset=r,n.push(a),r+=a.sizeInBytes)}for(let o=0;o{if(!e.UBO){const n={nativeArray:e.Float32Array,usage:Cee.UniformArray,label:e.label};e.UBO=r.getBufferManager().getBuffer(n),e.bindGroupTime.modified(),e.sendDirty=!1}e.sendDirty&&(r.getHandle().queue.writeBuffer(e.UBO.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes),e.sendDirty=!1),e.sendTime.modified()},t.createView=r=>{r in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes)),e[r]=W.newTypedArray(r,e.arrayBuffer))},t.setValue=(r,n)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(r);if(i===void 0){Vv(`entry named ${r} not found in UBO`);return}const o=e.bufferEntries[i];t.createView(o.nativeType);const a=e[o.nativeType];o.lastValue!==n&&(a[o.offset/a.BYTES_PER_ELEMENT]=n,e.sendDirty=!0),o.lastValue=n},t.setArray=(r,n)=>{t.sortBufferEntries();const i=e._bufferEntryNames.get(r);if(i===void 0){Vv(`entry named ${r} not found in UBO`);return}const o=e.bufferEntries[i];t.createView(o.nativeType);const a=e[o.nativeType];let s=!1;for(let c=0;c({resource:{buffer:e.UBO.getHandle()}}),t.getSendTime=()=>e.sendTime.getMTime(),t.getShaderCode=(r,n)=>{t.sortBufferEntries();const i=[`struct ${e.label}Struct -{`];for(let o=0;o ${e.label}: ${e.label}Struct;`),i.join(` -`)}}const Tee={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function SM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Tee,r),W.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},W.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},W.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,W.get(t,e,["binding","bindGroupTime"]),W.setGet(t,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),See(t,e)}const _ee=W.newInstance(SM,"vtkWebGPUUniformBuffer");var bu={newInstance:_ee,extend:SM};const{vtkDebugMacro:Eee}=Br,E8=` -//VTK::Renderer::Dec - -//VTK::Mapper::Dec - -//VTK::TCoord::Dec - -//VTK::RenderEncoder::Dec - -//VTK::IOStructs::Dec - -@fragment -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output: fragmentOutput; - - var computedColor: vec4 = mapperUBO.BackgroundColor; - - //VTK::RenderEncoder::Impl - return output; -} -`,Dee=` -fn vecToRectCoord(dir: vec3) -> vec2 { - var tau: f32 = 6.28318530718; - var pi: f32 = 3.14159265359; - var out: vec2 = vec2(0.0); - - out.x = atan2(dir.z, dir.x) / tau; - out.x += 0.5; - - var phix: f32 = length(vec2(dir.x, dir.z)); - out.y = atan2(dir.y, phix) / pi + 0.5; - - return out; -} - -//VTK::Renderer::Dec - -//VTK::Mapper::Dec - -//VTK::TCoord::Dec - -//VTK::RenderEncoder::Dec - -//VTK::IOStructs::Dec - -@fragment -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output: fragmentOutput; - - var tcoord: vec4 = vec4(input.vertexVC.xy, -1, 1); - var V: vec4 = normalize(mapperUBO.FSQMatrix * tcoord); // vec2((input.tcoordVS.x - 0.5) * 2, -(input.tcoordVS.y - 0.5) * 2); - // textureSampleLevel gets rid of some ugly artifacts - var background = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, vecToRectCoord(V.xyz), 0.0); - var computedColor: vec4 = vec4(background.rgb, 1); - - //VTK::RenderEncoder::Impl - return output; -} -`,Eg=new Float64Array(16),D8=new Float64Array(16);function bee(t){return t.getPositional()?t.getConeAngle()>=90?0:2:1}function Iee(t,e){e.classHierarchy.push("vtkWebGPURenderer"),t.buildPass=r=>{if(r){if(!e.renderable)return;e.camera=e.renderable.getActiveCamera(),t.updateLights(),t.prepareNodes(),t.addMissingNode(e.camera),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes(),e.webgpuCamera=t.getViewNodeFor(e.camera),t.updateStabilizedMatrix()}},t.updateStabilizedMatrix=()=>{const r=e.camera.getClippingRange(),n=e.camera.getPositionByReference(),i=e.camera.getDirectionOfProjectionByReference(),o=[],a=[];lr(a,i,.5*(r[0]+r[1])),xn(o,n,a),Qt(a,o,e.stabilizedCenter),Rd(a)/(r[1]-r[0])>e.recenterThreshold&&(e.stabilizedCenter=o,e.stabilizedTime.modified())},t.updateLights=()=>{let r=0;const n=e.renderable.getLightsByReference();for(let i=0;i0&&r++;return r||(Eee("No lights are on, creating one."),e.renderable.createLight()),r},t.updateUBO=()=>{var n;const r=e.UBO.getSendTime();if(e._parent.getMTime()>r||t.getMTime()>r||e.camera.getMTime()>r||e.renderable.getMTime()>r){const i=e.webgpuCamera.getKeyMatrices(t);e.UBO.setArray("WCVCMatrix",i.wcvc),e.UBO.setArray("SCPCMatrix",i.scpc),e.UBO.setArray("PCSCMatrix",i.pcsc),e.UBO.setArray("SCVCMatrix",i.scvc),e.UBO.setArray("VCPCMatrix",i.vcpc),e.UBO.setArray("WCVCNormals",i.normalMatrix),e.UBO.setValue("LightCount",e.renderable.getLights().length),e.UBO.setValue("MaxEnvironmentMipLevel",(n=e.renderable.getEnvironmentTexture())==null?void 0:n.getMipLevel()),e.UBO.setValue("BackgroundDiffuseStrength",e.renderable.getEnvironmentTextureDiffuseStrength()),e.UBO.setValue("BackgroundSpecularStrength",e.renderable.getEnvironmentTextureSpecularStrength());const o=t.getYInvertedTiledSizeAndOrigin();e.UBO.setArray("viewportSize",[o.usize,o.vsize]),e.UBO.setValue("cameraParallel",e.camera.getParallelProjection());const a=e._parent.getDevice();e.UBO.sendIfNeeded(a)}},t.updateSSBO=()=>{const r=e.renderable.getLights(),n=e.webgpuCamera.getKeyMatrices(t);let i=`${e.renderable.getMTime()}`;for(let o=0;o"),e.SSBO.addEntry("LightDir","vec4"),e.SSBO.addEntry("LightColor","vec4"),e.SSBO.addEntry("LightData","vec4"),e.SSBO.setAllInstancesFromArray("LightPos",o),e.SSBO.setAllInstancesFromArray("LightDir",a),e.SSBO.setAllInstancesFromArray("LightColor",s),e.SSBO.setAllInstancesFromArray("LightData",c);const l=e._parent.getDevice();e.SSBO.send(l)}e.lightTimeString=i},t.scissorAndViewport=r=>{const n=t.getYInvertedTiledSizeAndOrigin();r.getHandle().setViewport(n.lowerLeftU,n.lowerLeftV,n.usize,n.vsize,0,1),r.getHandle().setScissorRect(n.lowerLeftU,n.lowerLeftV,n.usize,n.vsize)},t.bindUBO=r=>{r.activateBindGroup(e.bindGroup)},t.opaquePass=r=>{r?(e.renderEncoder.begin(e._parent.getCommandEncoder()),t.updateUBO(),t.updateSSBO()):(t.scissorAndViewport(e.renderEncoder),t.clear(),e.renderEncoder.end())},t.clear=()=>{var o;if(e.renderable.getTransparent()||e.suppressClear)return;const r=e._parent.getDevice();if(!e.clearFSQ){e.clearFSQ=n3.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(E8);const a=bu.newInstance({label:"mapperUBO"});a.addEntry("FSQMatrix","mat4x4"),a.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(a),e.backgroundTex=e.renderable.getEnvironmentTexture()}if(e.clearFSQ.getPipelineHash()!=="clearfsqwithtexture"&&e.renderable.getUseEnvironmentTextureAsBackground()&&((o=e.backgroundTex)!=null&&o.getImageLoaded())){e.clearFSQ.setFragmentShaderTemplate(Dee);const a=bu.newInstance({label:"mapperUBO"});a.addEntry("FSQMatrix","mat4x4"),a.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(a);const s=r.getTextureManager().getTextureForVTKTexture(e.backgroundTex);if(s.getReady()){const c=s.createView("EnvironmentTexture");e.clearFSQ.setTextureViews([c]),e.backgroundTexLoaded=!0;const l=e.backgroundTex.getInterpolate()?"linear":"nearest";c.addSampler(r,{addressModeU:"repeat",addressModeV:"clamp-to-edge",addressModeW:"repeat",minFilter:l,magFilter:l,mipmapFilter:"linear"})}e.clearFSQ.setPipelineHash("clearfsqwithtexture")}else if(e.clearFSQ.getPipelineHash()==="clearfsqwithtexture"&&!e.renderable.getUseEnvironmentTextureAsBackground()){e.clearFSQ=n3.newInstance(),e.clearFSQ.setDevice(r),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(E8);const a=bu.newInstance({label:"mapperUBO"});a.addEntry("FSQMatrix","mat4x4"),a.addEntry("BackgroundColor","vec4"),e.clearFSQ.setUBO(a)}const n=e.webgpuCamera.getKeyMatrices(t),i=e.renderable.getBackgroundByReference();e.clearFSQ.getUBO().setArray("BackgroundColor",i),St(D8,n.normalMatrix),O1(Eg,n.scvc,n.pcsc),O1(Eg,D8,Eg),e.clearFSQ.getUBO().setArray("FSQMatrix",Eg),e.clearFSQ.getUBO().sendIfNeeded(r),e.clearFSQ.prepareAndDraw(e.renderEncoder)},t.translucentPass=r=>{r?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.volumeDepthRangePass=r=>{r?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.getAspectRatio=()=>{const r=e._parent.getSizeByReference(),n=e.renderable.getViewportByReference();return r[0]*(n[2]-n[0])/((n[3]-n[1])*r[1])},t.convertToOpenGLDepth=r=>e.webgpuCamera.convertToOpenGLDepth(r),t.getYInvertedTiledSizeAndOrigin=()=>{const r=t.getTiledSizeAndOrigin(),n=e._parent.getSizeByReference();return r.lowerLeftV=n[1]-r.vsize-r.lowerLeftV,r},t.getTiledSizeAndOrigin=()=>{const r=e.renderable.getViewportByReference(),n=[0,0,1,1],i=r[0]-n[0],o=r[1]-n[1],a=e._parent.normalizedDisplayToDisplay(i,o),s=Math.round(a[0]),c=Math.round(a[1]),l=r[2]-n[0],f=r[3]-n[1],u=e._parent.normalizedDisplayToDisplay(l,f);let d=Math.round(u[0])-s,h=Math.round(u[1])-c;return d<0&&(d=0),h<0&&(h=0),{usize:d,vsize:h,lowerLeftU:s,lowerLeftV:c}},t.getPropFromID=r=>{for(let n=0;ne.stabilizedTime.getMTime(),t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources()}}const Oee={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function Mee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Oee,r),tn.extend(t,e,r),e.UBO=bu.newInstance({label:"rendererUBO"}),e.UBO.addEntry("WCVCMatrix","mat4x4"),e.UBO.addEntry("SCPCMatrix","mat4x4"),e.UBO.addEntry("PCSCMatrix","mat4x4"),e.UBO.addEntry("SCVCMatrix","mat4x4"),e.UBO.addEntry("VCPCMatrix","mat4x4"),e.UBO.addEntry("WCVCNormals","mat4x4"),e.UBO.addEntry("viewportSize","vec2"),e.UBO.addEntry("LightCount","i32"),e.UBO.addEntry("MaxEnvironmentMipLevel","f32"),e.UBO.addEntry("BackgroundDiffuseStrength","f32"),e.UBO.addEntry("BackgroundSpecularStrength","f32"),e.UBO.addEntry("cameraParallel","u32"),e.SSBO=wee.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=lM.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=qe(new Float64Array(16)),e.stabilizedTime={},un(e.stabilizedTime,{mtime:0}),gi(t,e,["bindGroup","stabilizedTime"]),v0(t,e,["stabilizedCenter"]),Jn(t,e,["renderEncoder","selector","suppressClear","UBO"]),Iee(t,e)}const Ree=Bt(Mee,"vtkWebGPURenderer");uo("vtkRenderer",Ree);function Lee(t,e){e.classHierarchy.push("vtkWebGPUSampler"),t.create=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.device=r,e.options.addressModeU=n.addressModeU?n.addressModeU:"clamp-to-edge",e.options.addressModeV=n.addressModeV?n.addressModeV:"clamp-to-edge",e.options.addressModeW=n.addressModeW?n.addressModeW:"clamp-to-edge",e.options.magFilter=n.magFilter?n.magFilter:"nearest",e.options.minFilter=n.minFilter?n.minFilter:"nearest",e.options.mipmapFilter=n.mipmapFilter?n.mipmapFilter:"nearest",e.options.label=e.label,e.handle=e.device.getHandle().createSampler(e.options),e.bindGroupTime.modified()},t.getShaderCode=(r,n)=>`@binding(${r}) @group(${n}) var ${e.label}: sampler;`,t.getBindGroupEntry=()=>({resource:e.handle})}const Nee={device:null,handle:null,label:null,options:null};function TM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nee,r),W.obj(t,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},W.obj(e.bindGroupTime,{mtime:0}),W.get(t,e,["bindGroupTime","handle","options"]),W.setGet(t,e,["bindGroupLayoutEntry","device","label"]),Lee(t,e)}const Pee=W.newInstance(TM);var _M={newInstance:Pee,extend:TM};const{SlicingMode:b8}=a2,Aee=` -//VTK::Renderer::Dec - -//VTK::Mapper::Dec - -//VTK::TCoord::Dec - -//VTK::Image::Dec - -//VTK::RenderEncoder::Dec - -//VTK::IOStructs::Dec - -@fragment -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output: fragmentOutput; - - //VTK::Image::Sample - - // var computedColor: vec4 = vec4(1.0,0.7, 0.5, 1.0); - -//VTK::RenderEncoder::Impl - - return output; -} -`;function kee(t,e,r){if(e.apply(t)){const i=t.getIndependentComponents();return`${t.getMTime()}-${i}-${r}`}return"0"}const Ii=new Float64Array(16),Bo=new Float64Array(16),Dg=new Float64Array(16),ya=new Float64Array(4),cr=new Float64Array(4);function Vee(t,e){e.classHierarchy.push("vtkWebGPUImageMapper"),t.buildPass=i=>{if(i){e.WebGPUImageSlice=t.getFirstAncestorOfType("vtkWebGPUImageSlice"),e.WebGPURenderer=e.WebGPUImageSlice.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.device=e.WebGPURenderWindow.getDevice();const o=e.WebGPURenderer.getRenderable();e.renderable.getSliceAtFocalPoint()&&e.renderable.setSliceFromCamera(o.getActiveCamera())}},t.translucentPass=i=>{i&&t.render()},t.opaquePass=i=>{i&&t.render()},t.render=()=>{e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw)},t.computePipelineHash=()=>{const i=e.currentInput.getExtent();i[0]===i[1]||i[2]===i[3]||i[4]===i[5]?(e.dimensions=2,e.pipelineHash="img2"):(e.dimensions=3,e.pipelineHash="img3")},t.updateUBO=()=>{const i=e.UBO.getSendTime(),o=e.WebGPUImageSlice.getRenderable(),a=o.getMapper();if(t.getMTime()>i||e.renderable.getMTime()>i||o.getProperty().getMTime()>i){const s=a.getInputData(),c=e.WebGPURenderer.getStabilizedCenterByReference();qe(Ii),nn(Ii,Ii,c);const l=o.getMatrix();St(Bo,l),$n(Bo,Bo),bt(Ii,Bo,Ii);const f=s.getWorldToIndex();bt(Ii,f,Ii),$n(Dg,Ii),Jm(Bo,[.5,.5,.5]),bt(Ii,Bo,Ii);const u=s.getDimensions();qe(Bo),Ha(Bo,Bo,[1/u[0],1/u[1],1/u[2]]),bt(Ii,Bo,Ii),e.UBO.setArray("SCTCMatrix",Ii);const d=e.currentInput.getExtent(),{ijkMode:h}=e.renderable.getClosestIJKAxis();let g=e.renderable.getSlice();h!==e.renderable.getSlicingMode()&&(g=e.renderable.getSliceAtPosition(g));let p=2,v=0,x=1;h===b8.I?(p=0,v=1,x=2):h===b8.J&&(p=1,v=2,x=0),ya[p]=g,ya[v]=d[v*2]-.5,ya[x]=d[x*2]-.5,ya[3]=1,Os(ya,ya,Dg),e.UBO.setArray("Origin",ya),cr[p]=g,cr[v]=d[v*2+1]+.5,cr[x]=d[x*2]-.5,cr[3]=1,Os(cr,cr,Dg),NT(cr,cr,ya),cr[3]=1,e.UBO.setArray("Axis1",cr),cr[p]=g,cr[v]=d[v*2]-.5,cr[x]=d[x*2+1]+.5,cr[3]=1,Os(cr,cr,Dg),NT(cr,cr,ya),cr[3]=1,e.UBO.setArray("Axis2",cr);const m=[1,1,1,1],y=[0,0,0,0],w=e.textureViews[0],C=w.getTexture().getScale(),S=w.getTexture().getNumberOfComponents();for(let T=0;T{const i=e.WebGPUImageSlice.getRenderable().getProperty();t.getTextureViews()[0].getTexture().getNumberOfComponents();const a=1,s=kee(i,i.getRGBTransferFunction,a);if(e.colorTextureString!==s){e.numRows=a;const c=new Uint8ClampedArray(e.numRows*2*e.rowLength*4);let l=i.getRGBTransferFunction();if(l){const f=new Float32Array(e.rowLength*3);for(let u=0;u{r();const i=e.device.getTextureManager().getTextureForImageData(e.currentInput),o=e.textureViews;if(!o[0]||o[0].getTexture()!==i){const c=i.createView("imgTexture");o[0]=c}t.updateLUTImage(),t.updateUBO();const s=e.WebGPUImageSlice.getRenderable().getProperty().getInterpolationType()===Xc.NEAREST?"nearest":"linear";(!e.clampSampler||s!==e.clampSampler.getOptions().minFilter)&&(e.clampSampler=_M.newInstance({label:"clampSampler"}),e.clampSampler.create(e.device,{minFilter:s,magFilter:s}),e.additionalBindables=[e.clampSampler])};const n=t.getShaderReplacements();t.replaceShaderPosition=(i,o,a)=>{const s=o.getShaderDescription("vertex");s.addBuiltinOutput("vec4","@builtin(position) Position");let c=s.getCode();const l=["var pos: vec4 = mapperUBO.Origin +"," (vertexBC.x * 0.5 + 0.5) * mapperUBO.Axis1 + (vertexBC.y * 0.5 + 0.5) * mapperUBO.Axis2;","pos.w = 1.0;"];e.dimensions===2?l.push("var tcoord : vec2 = (mapperUBO.SCTCMatrix * pos).xy;"):l.push("var tcoord : vec3 = (mapperUBO.SCTCMatrix * pos).xyz;"),l.push("output.tcoordVS = tcoord;","output.Position = rendererUBO.SCPCMatrix * pos;"),c=Zt.substitute(c,"//VTK::Position::Impl",l).result,s.setCode(c)},n.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderTCoord=(i,o,a)=>{const s=o.getShaderDescription("vertex");e.dimensions===2?s.addOutput("vec2","tcoordVS"):s.addOutput("vec3","tcoordVS")},n.set("replaceShaderTCoord",t.replaceShaderTCoord),t.replaceShaderImage=(i,o,a)=>{const s=o.getShaderDescription("fragment");let c=s.getCode();e.dimensions===3?c=Zt.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result:c=Zt.substitute(c,"//VTK::Image::Sample",[" var computedColor: vec4 ="," textureSampleLevel(imgTexture, clampSampler, input.tcoordVS, 0.0);","//VTK::Image::Sample"]).result,c=Zt.substitute(c,"//VTK::Image::Sample",[" var coord: vec2 ="," vec2(computedColor.r * mapperUBO.cScale.r + mapperUBO.cShift.r, 0.5);"," computedColor = textureSampleLevel(tfunTexture, clampSampler, coord, 0.0);"]).result,s.setCode(c)},n.set("replaceShaderImage",t.replaceShaderImage)}const Fee={rowLength:1024};function Uee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Fee,r),n3.extend(t,e,r),t.setFragmentShaderTemplate(Aee),e.UBO=bu.newInstance({label:"mapperUBO"}),e.UBO.addEntry("SCTCMatrix","mat4x4"),e.UBO.addEntry("Origin","vec4"),e.UBO.addEntry("Axis2","vec4"),e.UBO.addEntry("Axis1","vec4"),e.UBO.addEntry("cScale","vec4"),e.UBO.addEntry("cShift","vec4"),e.lutBuildTime={},un(e.lutBuildTime,{mtime:0}),e.imagemat=qe(new Float64Array(16)),e.imagematinv=qe(new Float64Array(16)),e.VBOBuildTime={},un(e.VBOBuildTime),Vee(t,e)}const Bee=Bt(Uee,"vtkWebGPUImageMapper");uo("vtkImageMapper",Bee);function Gee(t,e){e.classHierarchy.push("vtkWebGPUImageSlice"),t.buildPass=r=>{if(!(!e.renderable||!e.renderable.getVisibility())&&r){if(!e.renderable)return;e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes()}},t.traverseOpaquePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children.forEach(n=>{n.traverse(r)}),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children.forEach(n=>{n.traverse(r)}),t.apply(r,!1))},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?n.incrementOpaqueActorCount():n.incrementTranslucentActorCount()}},t.getBufferShift=r=>(t.getKeyMatrices(r),e.bufferShift),t.getKeyMatrices=r=>{if(Math.max(e.renderable.getMTime(),r.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const n=e.renderable.getMatrix(),i=r.getStabilizedCenterByReference();e.bufferShift[0]=n[3]-i[0],e.bufferShift[1]=n[7]-i[1],e.bufferShift[2]=n[11]-i[2],St(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?qe(e.keyMatrices.normalMatrix):(_n(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$n(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),St(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),nn(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),nn(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const Wee={bufferShift:void 0,keyMatrixTime:null,keyMatrices:null,propID:void 0};function zee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wee,r),tn.extend(t,e,r),e.keyMatricesTime={},un(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},e.keyMatrixTime={},un(e.keyMatrixTime,{mtime:0}),e.keyMatrices={mcwc:qe(new Float64Array(16))},e.bufferShift=[0,0,0,0],gi(t,e,["propID","keyMatricesTime"]),Gee(t,e)}const $ee=Bt(zee,"vtkWebGPUImageSlice");uo("vtkImageSlice",$ee);function jee(t,e){e.classHierarchy.push("vtkWebGPUVolume"),t.buildPass=i=>{!e.renderable||!e.renderable.getVisibility()||i&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),e.renderable.getMapper().update())},t.queryPass=(i,o)=>{if(i){if(!e.renderable||!e.renderable.getVisibility())return;const a=e.renderable.getMapper().getBounds();if(!a||a.length!==6||a[0]>a[1])return;o.addVolume(t)}};const r=new Float64Array(3),n=new Float64Array(3);t.getBoundingCubePoints=(i,o)=>{const a=e.renderable.getMapper().getInputData();if(!a)return;const s=a.getExtent(),c=e.renderable.getMatrix();let l=0;for(let f=4;f<6;f++){r[2]=s[f];for(let u=2;u<4;u++){r[1]=s[u];for(let d=0;d<2;d++){r[0]=s[d],a.indexToWorld(r,n);let h=o+l*3;i[h++]=c[0]*n[0]+c[1]*n[1]+c[2]*n[2]+c[3],i[h++]=c[4]*n[0]+c[5]*n[1]+c[6]*n[2]+c[7],i[h++]=c[8]*n[0]+c[9]*n[1]+c[10]*n[2]+c[11],l++}}}},t.getKeyMatrices=i=>{if(Math.max(e.renderable.getMTime(),i.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const o=e.renderable.getMatrix(),a=i.getStabilizedCenterByReference();St(e.keyMatrices.bcwc,o),nn(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-a[0],-a[1],-a[2]]),e.keyMatricesTime.modified()}return e.keyMatrices}}const Hee={propID:void 0,keyMatricesTime:null};function Kee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hee,r),tn.extend(t,e,r),e.keyMatricesTime={},W.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={bcwc:new Float64Array(16),bcsc:new Float64Array(16)},W.get(t,e,["propID","keyMatricesTime"]),jee(t,e)}const qee=W.newInstance(Kee,"vtkWebGPUVolume");uo("vtkVolume",qee);function Xee(t,e){e.classHierarchy.push("vtkWebGPUPixelSpaceCallbackMapper"),t.opaquePass=(r,n)=>{e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent();const i=e.WebGPURenderer.getAspectRatio(),o=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,a=e.WebGPURenderer.getTiledSizeAndOrigin(),s=null;e.renderable.getUseZValues(),e.renderable.invokeCallback(e.renderable.getInputData(),o,i,a,s)}}const Yee={};function Jee(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Yee,r),tn.extend(t,e,r),Xee(t,e)}const Zee=W.newInstance(Jee,"vtkWebGPUPixelSpaceCallbackMapper");uo("vtkPixelSpaceCallbackMapper",Zee);class EM{constructor(e,r,n=1){this.rows=new Map,this.height=1,this.width=1,this.depth=1,this.jMultiple=1,this.kMultiple=1,this.numberOfComponents=1,this.defaultValue=0,this.pixelDataConstructor=Uint8Array,this.get=i=>{const o=i%this.jMultiple,a=(i-o)/this.jMultiple,s=this.getRLE(o,a);return(s==null?void 0:s.value)||this.defaultValue},this.getRun=(i,o)=>{const a=i+o*this.height;return this.rows.get(a)},this.set=(i,o)=>{if(o===void 0)throw new Error(`Can't set undefined at ${i%this.width}`);const a=i%this.width,s=(i-a)/this.width,c=this.rows.get(s);if(!c){this.rows.set(s,[{start:a,end:a+1,value:o}]);return}const l=this.findIndex(c,a),f=c[l],u=c[l-1];if(!f){if(!u||u.value!==o||u.end!==a){c[l]={start:a,end:a+1,value:o};return}u.end++;return}const{start:d,end:h,value:g}=f;if(o===g&&a>=d)return;const p={start:a,end:a+1,value:o},v=a>d,x=v?l+1:l,m=v?f:u;let y=v?c[l+1]:f;if((m==null?void 0:m.value)===o&&m.end===a){m.end++,(y==null?void 0:y.value)===o&&y.start===a+1?(m.end=y.end,c.splice(l,1)):(y==null?void 0:y.start)===a&&(y.start++,y.start===y.end&&(c.splice(l,1),y=c[l],(y==null?void 0:y.start)===a+1&&y.value===o&&(m.end=y.end,c.splice(l,1))));return}if((y==null?void 0:y.value)===o&&y.start===a+1){y.start--,(m==null?void 0:m.end)>a&&(m.end=a,m.end===m.start&&c.splice(l,1));return}if((y==null?void 0:y.start)===a&&y.end===a+1){y.value=o;const w=c[l+1];(w==null?void 0:w.start)==a+1&&(w==null?void 0:w.value)===o&&(c.splice(l+1,1),y.end=w.end);return}a===(y==null?void 0:y.start)&&y.start++,v&&h>a+1?c.splice(x,0,p,{start:a+1,end:m.end,value:m.value}):c.splice(x,0,p),(m==null?void 0:m.end)>a&&(m.end=a)},this.width=e,this.height=r,this.depth=n,this.jMultiple=e,this.kMultiple=this.jMultiple*r}getRLE(e,r,n=0){const i=this.rows.get(r+n*this.height);if(!i)return;const o=this.findIndex(i,e),a=i[o];return e>=(a==null?void 0:a.start)?a:void 0}findIndex(e,r){for(let n=0;n{const s=this.toIndex([i,o,a]);return this._get(s)},this.setAtIJK=(i,o,a,s)=>{const c=this.toIndex([i,o,a]),l=this._set(c,s);return l!==!1&&(this.modifiedSlices.add(a),Tr.addBounds(this.boundsIJK,[i,o,a])),l},this.getAtIJKPoint=([i,o,a])=>this.getAtIJK(i,o,a),this.setAtIJKPoint=([i,o,a],s)=>{this.setAtIJK(i,o,a,s)},this.getAtIndex=i=>this._get(i),this.setAtIndex=(i,o)=>{const a=this._set(i,o);if(a!==!1){const s=this.toIJK(i);this.modifiedSlices.add(s[2]),Tr.addBounds(this.boundsIJK,s)}return a},this.getMiddleSliceData=()=>{const i=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:i,slicePlane:2})},this.forEach=(i,o={})=>{const a=o.boundsIJK||this.getBoundsIJK(),s=o.isInObject||this.isInObject||(()=>!0),c=o.returnPoints||!1,l=o.imageData,f=Math.min(a[0][0],a[0][1]),u=Math.max(a[0][0],a[0][1]),d=Math.min(a[1][0],a[1][1]),h=Math.max(a[1][0],a[1][1]),g=Math.min(a[2][0],a[2][1]),p=Math.max(a[2][0],a[2][1]),v=[];if(l){const{imageData:x}=o,m=x.getDirection(),y=m.slice(0,3),w=m.slice(3,6),C=m.slice(6,9),S=x.getSpacing(),[T,_,E]=S,D=Ye(f,d,g),b=x.indexToWorld(D),I=Ye(y[0]*T,y[1]*T,y[2]*T),R=Ye(w[0]*_,w[1]*_,w[2]*_),M=Ye(C[0]*E,C[1]*E,C[2]*E),L=Eu(b);for(let A=g;A<=p;A++){const G=Eu(L);for(let P=d;P<=h;P++){const N=Eu(L);for(let V=f;V<=u;V++){const $=[V,P,A];if(s(L,$)){const H=this.toIndex($),Y=this._get(H);c&&v.push({value:Y,index:H,pointIJK:$,pointLPS:L.slice()}),i&&i({value:Y,index:H,pointIJK:$,pointLPS:L})}xn(L,L,I)}Md(L,N),xn(L,L,R)}Md(L,G),xn(L,L,M)}return v}if(this.map){for(const x of this.map.keys()){const m=this.toIJK(x);if(!s(null,m))continue;const y=this._get(x);c&&v.push({value:y,index:x,pointIJK:m,pointLPS:null}),i({value:y,index:x,pointIJK:m,pointLPS:null})}return v}else{for(let x=g;x<=p;x++){const m=x*this.frameSize;for(let y=d;y<=h;y++){const w=m+y*this.width;for(let C=f,S=w+C;C<=u;C++,S++){const T=this.getAtIndex(S),_=[C,y,x];s(null,_)&&(c&&v.push({value:T,index:S,pointIJK:_,pointLPS:null}),i({value:T,index:S,pointIJK:[C,y,x],pointLPS:null}))}}}return v}},this.getSliceData=({sliceIndex:i,slicePlane:o})=>{const[a,s,c]=this.dimensions,l=a*s,f=i*l;let u;const d=this.getConstructor();function h(p){return typeof p=="function"}if(!h(d))return new Uint8Array(0);let g;switch(o){case 0:u=s*c,g=new d(u);for(let p=0;p[0,e-1])}getBoundsIJK(){return this.boundsIJK[0][0]{r[0]=1/0,r[1]=-1/0}),this.modifiedSlices.clear(),(e=this.points)==null||e.clear()}getConstructor(){return this.scalarData?this.scalarData.constructor:this._getConstructor?this._getConstructor():(console.warn("No scalar data available or can be used to get the constructor"),Float32Array)}getArrayOfModifiedSlices(){return Array.from(this.modifiedSlices)}resetModifiedSlices(){this.modifiedSlices.clear()}static addBounds(e,r){e||(e=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]]),e[0][0]=Math.min(r[0],e[0][0]),e[0][1]=Math.max(r[0],e[0][1]),e[1][0]=Math.min(r[1],e[1][0]),e[1][1]=Math.max(r[1],e[1][1]),e[2][0]=Math.min(r[2],e[2][0]),e[2][1]=Math.max(r[2],e[2][1])}addPoint(e){const r=Array.isArray(e)?e[0]+this.width*e[1]+this.frameSize*e[2]:e;this.points||(this.points=new Set),this.points.add(r)}getPoints(){return this.points?[...this.points].map(e=>this.toIJK(e)):[]}setSliceDataValue(e,r,n){if(Array.isArray(n))for(let i=0;i(o*=n,[r[o++],r[o++],r[o++]]),(o,a)=>{o*=3;const s=!pt(r[o],a);return r[o++]=a[0],r[o++]=a[1],r[o++]=a[2],s});return i.numberOfComponents=n,i.scalarData=r,i}static createImageVolumeVoxelManager({dimensions:e,imageIds:r,numberOfComponents:n=1}){const i=e[0]*e[1];function o(l){const f=Math.floor(l/i),u=r[f];if(!u)return console.warn(`ImageId not found for sliceIndex: ${f}`),{pixelData:null,pixelIndex:null};const d=_e.getImage(u);if(!d)return console.warn(`Image not found for imageId: ${u}`),{pixelData:null,pixelIndex:null};const h=d.voxelManager.getScalarData(),g=l%i*n;return{pixelData:h,pixelIndex:g}}function a(l){const{pixelData:f,pixelIndex:u}=o(l);return!f||u===null?null:n===1?f[u]:[f[u],f[u+1],f[u+2]]}function s(l,f){const{pixelData:u,pixelIndex:d}=o(l);if(!u||d===null)return!1;let h=!1;if(n===1)u[d]!==f&&(u[d]=f,h=!0);else{const g=f;for(let p=0;pa(l),(l,f)=>s(l,f));return c.numberOfComponents=n,c._getConstructor=()=>{const l=o(0);return l.pixelData?l.pixelData.constructor:null},c.getMiddleSliceData=()=>{const l=Math.floor(e[2]/2);return c.getSliceData({sliceIndex:l,slicePlane:2})},c.getRange=()=>{let l=1/0,f=-1/0;for(const u of r){const d=_e.getImage(u);d.minPixelValuef&&(f=d.maxPixelValue)}return[l,f]},c._getScalarDataLength=()=>{const{pixelData:l}=o(0);return l.length*e[2]},c.getCompleteScalarDataArray=()=>{const l=c._getConstructor();if(!l)return new Uint8Array(0);const f=c.getScalarDataLength(),u=new l(f),d=e[0]*e[1]*n;for(let h=0;h{const f=e[0]*e[1]*n,u=c._getConstructor();let d=1/0,h=-1/0;for(let g=0;g4||n<1||n===2))throw new Error(`Number of components ${n} must be 1, 3 or 4`);return n>1?Tr._createRGBScalarVolumeVoxelManager({dimensions:e,scalarData:r,numberOfComponents:n}):Tr._createNumberVolumeVoxelManager({dimensions:e,scalarData:r})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:e,dimensions:r,timePoint:n=0,numberOfComponents:i=1}){if(!i){const s=_e.getImage(e[0][0]);if(!s)throw new Error("Unable to determine number of components: No image found");if(i=s.getPixelData().length/(r[0]*r[1]),i>4||i<1||i===2)throw new Error(`Number of components ${i} must be 1, 3 or 4`)}const o=e.map(s=>Tr.createImageVolumeVoxelManager({dimensions:r,imageIds:s,numberOfComponents:i})),a=new Tr(r,s=>o[n]._get(s),(s,c)=>o[n]._set(s,c));return a.numberOfComponents=i,a.getScalarDataLength=()=>o[n].getScalarDataLength(),a.getConstructor=()=>o[n].getConstructor(),a.getRange=()=>o[n].getRange(),a.getMiddleSliceData=()=>o[n].getMiddleSliceData(),a.setTimePoint=s=>{n=s,a._get=c=>o[n]._get(c),a._set=(c,l)=>o[n]._set(c,l)},a.getAtIndexAndTimePoint=(s,c)=>o[c]._get(s),a.getTimePointScalarData=s=>o[s].getCompleteScalarDataArray(),a.getTimePointScalarData=s=>o[s].getCompleteScalarDataArray(),a.getCurrentTimePointScalarData=()=>o[n].getCompleteScalarDataArray(),a}static createImageVoxelManager({width:e,height:r,scalarData:n,numberOfComponents:i=1}){const o=[e,r,1];if(!i&&(i=n.length/e/r,i>4||i<1||i===2))throw new Error(`Number of components ${i} must be 1, 3 or 4`);return i>1?Tr._createRGBScalarVolumeVoxelManager({dimensions:o,scalarData:n,numberOfComponents:i}):Tr._createNumberVolumeVoxelManager({dimensions:o,scalarData:n})}static _createNumberVolumeVoxelManager({dimensions:e,scalarData:r}){const n=new Tr(e,i=>r[i],(i,o)=>{const a=r[i]!==o;return r[i]=o,a});return n.scalarData=r,n.getMiddleSliceData=()=>{const i=Math.floor(e[2]/2);return n.getSliceData({sliceIndex:i,slicePlane:2})},n}static createMapVoxelManager({dimension:e}){const r=new Map,n=new Tr(e,r.get.bind(r),(i,o)=>r.set(i,o)&&!0);return n.map=r,n}static createHistoryVoxelManager({sourceVoxelManager:e}){const r=new Map,{dimensions:n}=e,i=new Tr(n,o=>r.get(o),function(o,a){if(r.has(o))a===r.get(o)&&r.delete(o);else{const s=this.sourceVoxelManager.getAtIndex(o);if(s===a)return!1;r.set(o,s)}this.sourceVoxelManager.setAtIndex(o,a)});return i.map=r,i.scalarData=e.scalarData,i.sourceVoxelManager=e,i}static createLazyVoxelManager({dimensions:e,planeFactory:r}){const n=new Map,[i,o]=e,a=i*o,s=new Tr(e,c=>n.get(Math.floor(c/a))[c%a],(c,l)=>{const f=Math.floor(c/a);let u=n.get(f);return u||(u=r(i,o),n.set(f,u)),u[c%a]=l,!0});return s.map=n,s}static createRLEVoxelManager({dimensions:e}){const[r,n,i]=e,o=new EM(r,n,i),a=new Tr(e,s=>o.get(s),(s,c)=>(o.set(s,c),!0));return a.map=o,a.getPixelData=o.getPixelData.bind(o),a}static addInstanceToImage(e){const{width:r,height:n}=e,i=e.voxelManager.getScalarData();if(i.length>=r*n){e.voxelManager=Tr.createScalarVolumeVoxelManager({dimensions:[r,n,1],scalarData:i});return}e.voxelManager=Tr.createRLEVoxelManager({dimensions:[r,n,1]}),e.getPixelData=e.voxelManager.getPixelData,e.sizeInBytes=Qee}};class Sh{constructor(e){this._imageIdsIndexMap=new Map,this._imageURIsIndexMap=new Map,this.cornerstoneImageMetaData=null,this.isPreScaled=!1,this.numTimePoints=null;const{imageIds:r,scaling:n,dimensions:i,spacing:o,origin:a,direction:s,dataType:c,volumeId:l,referencedVolumeId:f,metadata:u,referencedImageIds:d,additionalDetails:h,voxelManager:g,numberOfComponents:p}=e;if(!c)throw new Error('Data type is required, please provide a data type as string such as "Uint8Array", "Float32Array", etc.');let{imageData:v}=e;this.imageIds=r,this.volumeId=l,this.metadata=u,this.dimensions=i,this.spacing=o,this.origin=a,this.direction=s,this.dataType=c,this.vtkOpenGLTexture=wJ.newInstance(),this.vtkOpenGLTexture.setVolumeId(l),this.voxelManager=g??es.createImageVolumeVoxelManager({dimensions:i,imageIds:r,numberOfComponents:p}),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],v||(v=C0.newInstance(),v.setDimensions(i),v.setSpacing(o),v.setDirection(s),v.setOrigin(a)),v.set({dataType:c,voxelManager:this.voxelManager,id:l,numberOfComponents:p||1}),v.set({hasScalarVolume:!1}),this.imageData=v,this.numFrames=this._getNumFrames(),this._reprocessImageIds(),n&&(this.scaling=n),f&&(this.referencedVolumeId=f),d&&(this.referencedImageIds=d),h&&(this.additionalDetails=h)}get sizeInBytes(){return this.voxelManager.sizeInBytes}get imageIds(){return this._imageIds}set imageIds(e){this._imageIds=e,this._reprocessImageIds()}_reprocessImageIds(){this._imageIdsIndexMap.clear(),this._imageURIsIndexMap.clear(),this._imageIds.forEach((e,r)=>{const n=Nn(e);this._imageIdsIndexMap.set(e,r),this._imageURIsIndexMap.set(n,r)})}isDynamicVolume(){return this.numTimePoints>1}getImageIdIndex(e){return this._imageIdsIndexMap.get(e)}getImageIdByIndex(e){return this._imageIds[e]}getImageURIIndex(e){return this._imageURIsIndexMap.get(e)}load(e){}destroy(){this.imageData.delete(),this.imageData=null,this.voxelManager.clear(),this.vtkOpenGLTexture.releaseGraphicsResources(),this.vtkOpenGLTexture.delete()}invalidate(){for(let e=0;e_e.getImage(r))}}let tf={};const Ms={add:(t,e)=>{Ms.addRaw(t,{...e,metadata:structuredClone(e.metadata)})},addRaw:(t,e)=>{const r=e.type;tf[t]||(tf[t]={}),tf[t][r]=e.metadata},get:(t,e)=>{var r;return(r=tf[e])==null?void 0:r[t]},clear:()=>{tf={}}};S0(Ms.get);const fi=new Xw("imageLoadPool");fi.grabDelay=0;fi.setMaxSimultaneousRequests(ht.Interaction,1e3);fi.setMaxSimultaneousRequests(ht.Thumbnail,1e3);fi.setMaxSimultaneousRequests(ht.Prefetch,1e3);const DM={};let ete;function bM(t,e){const r=_e.getImageLoadObject(t);if(r)return I8(r.promise,t),r;const n=t.split(":")[0],i=DM[n]||ete;if(!i)throw new Error(`loadImageFromImageLoader: No image loader found for scheme '${n}'`);const o=i(t,e);return I8(o.promise,t),o}function I8(t,e){Promise.resolve(t).then(r=>{tte(r),De(Ce,Se.IMAGE_LOADED,{image:r})}).catch(r=>{const n={imageId:e,error:r};De(Ce,Se.IMAGE_LOAD_FAILED,n)})}function tte(t){if(!t.voxelManager){const{width:e,height:r,numberOfComponents:n}=t,i=es.createImageVoxelManager({scalarData:t.getPixelData(),width:e,height:r,numberOfComponents:n});t.voxelManager=i,t.getPixelData=()=>i.getScalarData(),delete t.imageFrame.pixelData}}function nte(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadImage: parameter imageId must not be undefined");return bM(t,e).promise}function Js(t,e={priority:0,requestType:"prefetch"}){if(t===void 0)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const r=bM(t,e);return _e.getImageLoadObject(t)||_e.putImageLoadObject(t,r),r.promise}function rte(t,e={}){var g;if(t===void 0)throw new Error("createAndCacheDerivedImage: parameter imageId must not be undefined");e.imageId===void 0&&(e.imageId=`derived:${wn()}`);const{imageId:r,skipCreateBuffer:n,onCacheAdd:i}=e,o=Pe("imagePlaneModule",t),a=o.rows*o.columns,{TypedArrayConstructor:s}=zw((g=e.targetBuffer)==null?void 0:g.type,a),c=new s(n?1:a),l=r,f=Pe("imagePlaneModule",t);Ms.add(l,{type:"imagePlaneModule",metadata:f});const u=Pe("generalSeriesModule",t);Ms.add(l,{type:"generalSeriesModule",metadata:u}),Ms.add(l,{type:"generalImageModule",metadata:{instanceNumber:e.instanceNumber}});const d=Pe("imagePixelModule",t);Ms.add(l,{type:"imagePixelModule",metadata:{...d,bitsAllocated:8,bitsStored:8,highBit:7,samplesPerPixel:1,pixelRepresentation:0}});const h=OM(r,{scalarData:c,onCacheAdd:i,skipCreateBuffer:n,targetBuffer:{type:c.constructor.name},dimensions:[o.columns,o.rows],spacing:[o.columnPixelSpacing,o.rowPixelSpacing],origin:o.imagePositionPatient,direction:o.imageOrientationPatient,frameOfReferenceUID:o.frameOfReferenceUID});return h.referencedImageId=t,_e.getImageLoadObject(r)||_e.putImageSync(r,h),h}function IM(t,e={}){if(t.length===0)throw new Error("createAndCacheDerivedImages: parameter imageIds must be list of image Ids");return t.map((n,i)=>{var a;const o={imageId:((a=e==null?void 0:e.getDerivedImageId)==null?void 0:a.call(e,n))||`derived:${wn()}`,...e};return rte(n,{...o,instanceNumber:i+1})})}function OM(t,e){const{scalarData:r,origin:n,direction:i,targetBuffer:o,skipCreateBuffer:a,onCacheAdd:s,frameOfReferenceUID:c}=e,l=e.dimensions,f=e.spacing;if(!l||!f)throw new Error("createAndCacheLocalImage: dimensions and spacing are required");const u=l[0],d=l[1],h=f[0],g=f[1],p={frameOfReferenceUID:c,rows:d,columns:u,imageOrientationPatient:i??[1,0,0,0,1,0],rowCosines:i?i.slice(0,3):[1,0,0],columnCosines:i?i.slice(3,6):[0,1,0],imagePositionPatient:n??[0,0,0],pixelSpacing:[g,h],rowPixelSpacing:g,columnPixelSpacing:h},v=u*d,x=r.length/v;let m;if(r){if(!(r instanceof Uint8Array||r instanceof Float32Array||r instanceof Uint16Array||r instanceof Int16Array))throw new Error("createAndCacheLocalImage: scalarData must be of type Uint8Array, Uint16Array, Int16Array or Float32Array");m=r}else if(!a){const{numBytes:I,TypedArrayConstructor:R}=zw(o==null?void 0:o.type,v);m=new R(v)}let y,w,C;if(m instanceof Uint8Array)y=8,w=8,C=7;else if(m instanceof Uint16Array)y=16,w=16,C=15;else if(m instanceof Int16Array)y=16,w=16,C=15;else if(m instanceof Float32Array)y=32,w=32,C=31;else throw new Error("Unsupported scalarData type");const S={samplesPerPixel:1,photometricInterpretation:m.length>l[0]*l[1]?"RGB":"MONOCHROME2",rows:d,columns:u,bitsAllocated:y,bitsStored:w,highBit:C},T={imagePlaneModule:p,imagePixelModule:S};["imagePlaneModule","imagePixelModule"].forEach(I=>{Ms.add(t,{type:I,metadata:T[I]||{}})});const _=es.createImageVoxelManager({height:d,width:u,numberOfComponents:x,scalarData:m});let E=m[0],D=m[0];for(let I=1;ID&&(D=m[I]);const b={imageId:t,intercept:0,windowCenter:0,windowWidth:0,color:S.photometricInterpretation==="RGB",numberOfComponents:S.samplesPerPixel,dataType:o==null?void 0:o.type,slope:1,minPixelValue:E,maxPixelValue:D,rows:S.rows,columns:S.columns,getCanvas:void 0,height:S.rows,width:S.columns,rgba:void 0,columnPixelSpacing:p.columnPixelSpacing,rowPixelSpacing:p.rowPixelSpacing,FrameOfReferenceUID:p.frameOfReferenceUID,invert:!1,getPixelData:()=>_.getScalarData(),voxelManager:_,sizeInBytes:r.byteLength};return s==null||s(b),_e.putImageSync(b.imageId,b),b}function Ap(t,e){DM[t]=e}function MM(t,e={}){return IM(t,{...e,targetBuffer:{type:"Uint8Array"}})}function RM(t){const e=t[0],{pixelRepresentation:r,bitsAllocated:n,bitsStored:i,highBit:o,photometricInterpretation:a,samplesPerPixel:s}=Pe("imagePixelModule",e),c=[],l=Pe("voiLutModule",e);let f;if(l){const{windowWidth:m,windowCenter:y}=l;if(f=l==null?void 0:l.voiLUTFunction,Array.isArray(m))for(let w=0;w({distance:c(v),imageId:v}));g.sort((v,x)=>x.distance-v.distance),a=g.map(v=>v.imageId);const p=g.length;s=Math.abs(g[p-1].distance-g[0].distance)/(p-1)}const{imagePositionPatient:l,sliceThickness:f,spacingBetweenSlices:u}=Pe("imagePlaneModule",a[0]),{strictZSpacingForVolumeViewport:d}=Jw().rendering;return s===0&&!d&&(f&&u?(console.log("Could not calculate zSpacing. Using spacingBetweenSlices"),s=u):f?(console.log("Could not calculate zSpacing and no spacingBetweenSlices. Using sliceThickness"),s=f):(console.log("Could not calculate zSpacing. The VolumeViewport visualization is compromised. Setting zSpacing to 1 to render"),s=1)),{zSpacing:s,origin:l,sortedImageIds:a}}function NM(t){const e=Pe("modalityLutModule",t)||{},r=Pe("generalSeriesModule",t)||{},{modality:n}=r,i={rescaleSlope:e.rescaleSlope||1,rescaleIntercept:e.rescaleIntercept??0,modality:n},o=Pe("scalingModule",t)||{};return{...i,...n==="PT"&&{suvbw:o.suvbw,suvbsa:o.suvbsa,suvlbm:o.suvlbm}}}const nC=t=>Object.values(t).some(r=>typeof r=="number"&&!Number.isInteger(r));function rC(t,e){const r=RM(t),{ImageOrientationPatient:n,PixelSpacing:i,Columns:o,Rows:a}=r,s=Ye(n[0],n[1],n[2]),c=Ye(n[3],n[4],n[5]),l=we();Kt(l,s,c);const{zSpacing:f,origin:u,sortedImageIds:d}=LM(t,l),h=t.length,g=[i[1],i[0],f],p=[o,a,h].map(x=>Math.floor(x)),v=[...s,...c,...l];return{dimensions:p,spacing:g,origin:u,dataType:ite(d,r),direction:v,metadata:r,imageIds:d,volumeId:e,voxelManager:null,numberOfComponents:r.PhotometricInterpretation==="RGB"?3:1}}function ite(t,e){const{BitsAllocated:r,PixelRepresentation:n,x:i}=e,o=n===1,a=Math.floor(t.length/2),s=t[a],c=NM(s),l=c.rescaleIntercept<0||c.rescaleSlope<0,f=nC(c),u=Yw();switch(r){case 8:if(o)throw new Error("8 Bit signed images are not yet supported by this plugin.");return"Uint8Array";case 16:return u&&f?"Float32Array":o||l?"Int16Array":!o&&!l?"Uint16Array":"Float32Array";case 24:return"Uint8Array";case 32:return"Float32Array";default:throw new Error(`Bits allocated of ${r} is not defined to generate scalarData for the volume.`)}}let j1=class PM{constructor(e){this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const r=new PM("as iterator");return e.then(n=>{try{r.add(n,!0)}catch(i){r.reject(i)}},n=>{r.reject(n)}),r}add(e,r=!1){this.nextValue=e,this.done||(this.done=r),this.waiting&&(this.waiting.resolve(e),this.waiting=void 0)}resolve(){this.done=!0,this.waiting&&(this.waiting.resolve(this.nextValue),this.waiting=void 0)}reject(e){var r;this.rejectReason=e,(r=this.waiting)==null||r.reject(e)}getRecent(){if(this.rejectReason)throw this.rejectReason;return this.nextValue}async*[Symbol.asyncIterator](){for(;!this.done;){if(this.rejectReason)throw this.rejectReason;if(this.nextValue!==void 0&&(yield this.nextValue,this.done))break;this.waiting||(this.waiting={},this.waiting.promise=new Promise((e,r)=>{this.waiting.resolve=e,this.waiting.reject=r})),await this.waiting.promise}yield this.nextValue}async forEach(e,r){let n=0;try{for await(const i of this){const{done:o}=this;try{await e(i,o,n),n++}catch(a){if(!o){console.warn("Caught exception in intermediate value",a);continue}if(r)r(a,o);else throw a}}}catch(i){if(r)r(i,!0);else throw i}}generate(e,r){return e(this,this.reject.bind(this)).then(()=>{this.done||this.resolve()},n=>{this.reject(n),r?r(n):console.warn("Couldn't process because",n)})}async nextPromise(){for await(const e of this)if(e)return e;return this.nextValue}async donePromise(){for await(const e of this);return this.nextValue}getNextPromise(){const e=this.nextPromise();return e.iterator=this,e}getDonePromise(){const e=this.donePromise();return e.iterator=this,e}};const Fv=new Map,O8="imageRetrieveConfiguration",Ad={IMAGE_RETRIEVE_CONFIGURATION:O8,clear:()=>{Fv.clear()},add:(t,e)=>{Fv.set(t,e)},get:(t,...e)=>{if(t===O8)return e.map(r=>Fv.get(r)).find(r=>r!==void 0)}};S0(Ad.get.bind(Ad));function Th(t){const e=_i(),r=[];return e.forEach(n=>{const o=n.getVolumeViewports().filter(a=>a.hasVolumeId(t));r.push(...o)}),r}const i3=t=>{const e=ote(t);e!=null&&e.length&&e.forEach(({renderingEngine:r,viewportIds:n})=>{r.hasBeenDestroyed||r.renderViewports(n)})};function ote(t){const e=_i(),r=[];return e.forEach(n=>{const i=Th(t);i.length&&r.push({renderingEngine:n,viewportIds:i.map(o=>o.id)})}),r}const M8=[{id:"initialImages",retrieveType:"single"}],ate=[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}],Uv=[{offset:-1,imageQualityStatus:Pi.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:Pi.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:Pi.FAR_REPLICATE}],ste=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:ht.Thumbnail,priority:5,nearbyFrames:Uv},{id:"quarterThumb",decimate:4,offset:3,requestType:ht.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:Uv},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:ht.Thumbnail,retrieveType:"multipleFast",nearbyFrames:Uv},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:ht.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:ht.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:ht.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:ht.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function AM(t,e,r=0){const n=[];for(let i=r;i=a)continue;const c={...r,imageId:o,imageQualityStatus:a};_e.setPartialImage(o,c),t.successCallback(o,c)}catch(o){console.warn("Couldn't fill nearby item ",i.itemId,o)}}const gu=class gu{constructor(e){this.stages=e.stages||M8,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,r){return new lte(this,e,r).loadImages()}};gu.createProgressive=kM,gu.interleavedRetrieveStages={stages:ste},gu.singleRetrieveStages={stages:M8},gu.sequentialRetrieveStages={stages:ate};let H1=gu;class lte{constructor(e,r,n){this.outstandingRequests=0,this.stageStatusMap=new Map,this.displayedIterator=new j1("displayed"),this.stages=e.stages,this.retrieveOptions=e.retrieveOptions,this.imageIds=r,this.listener=n}async loadImages(){const e=this.createStageRequests();this.outstandingRequests=e.length;for(const r of e)this.addRequest(r);return this.outstandingRequests===0?Promise.resolve(null):this.displayedIterator.getDonePromise()}sendRequest(e,r){const{imageId:n,next:i}=e,o=(f,u)=>{this.listener.errorCallback(n,c||!i,f),u&&this.updateStageStatus(e.stage,f)},a=(r.loader||Js)(n,r),s=j1.as(a);let c=!1;return s.forEach(async(f,u)=>{const d=_e.getImageQuality(n);if(!f){console.warn("No image retrieved",n);return}const{imageQualityStatus:h}=f;if(c||(c=h===Pi.FULL_RESOLUTION),d!==void 0&&d>h){this.updateStageStatus(e.stage,null,!0);return}this.listener.successCallback(n,f),this.displayedIterator.add(f),u&&this.updateStageStatus(e.stage),cte(this.listener,e,f)},o).finally(()=>{if(!c&&i)_e.setPartialImage(n),this.addRequest(i,r.streamingData);else{c||this.listener.errorCallback(n,!0,"Couldn't decode"),this.outstandingRequests--;for(let f=i;f;f=f.next)this.updateStageStatus(f.stage,null,!0)}this.outstandingRequests<=0&&this.displayedIterator.resolve()}),s.getDonePromise().catch(f=>null)}addRequest(e,r={}){const{imageId:n,stage:i}=e,o=this.listener.getLoaderImageOptions(n);if(!o)return;const{retrieveType:a="default"}=i,{retrieveOptions:s}=this,c=s[a]||s.default,l={...o,retrieveType:a,retrieveOptions:c,streamingData:r},f=i.priority??-5,u=i.requestType||ht.Interaction,d={imageId:n};fi.addRequest(this.sendRequest.bind(this,e,l),u,d,f)}updateStageStatus(e,r,n=!1){const{id:i}=e,o=this.stageStatusMap.get(i);if(o&&(o.imageLoadPendingCount--,r?o.imageLoadFailedCount++:n||o.totalImageCount++,!n&&!o.stageStartTime&&(o.stageStartTime=Date.now()),!o.imageLoadPendingCount)){const{imageLoadFailedCount:a,totalImageCount:s,stageStartTime:c=Date.now(),startTime:l}=o,f={stageId:i,numberOfFailures:a,numberOfImages:s,stageDurationInMS:c?Date.now()-c:null,startDurationInMS:Date.now()-l};De(Ce,Se.IMAGE_RETRIEVAL_STAGE,f),this.stageStatusMap.delete(i)}}createStageRequests(){const e=new Array,r=new Map,n=(i,o)=>{const a=o<0?this.imageIds.length+o:o<1?Math.floor((this.imageIds.length-1)*o):o,s=this.imageIds[a];if(!s)throw new Error(`No value found to add to requests at ${o}`);const c={imageId:s,stage:i,index:a,nearbyRequests:this.findNearbyRequests(a,i)};this.addStageStatus(i);const l=r.get(s);l?l.next=c:e.push(c),r.set(s,c)};for(const i of this.stages)(i.positions||AM(this.imageIds,i.decimate||1,i.offset??0)).forEach(a=>{n(i,a)});return e}findNearbyRequests(e,r){const n=new Array;if(!r.nearbyFrames)return n;for(const i of r.nearbyFrames){const o=e+i.offset;o<0||o>=this.imageIds.length||n.push({itemId:this.imageIds[o],imageQualityStatus:i.imageQualityStatus,index:o})}return n}addStageStatus(e){const{id:r}=e,n=this.stageStatusMap.get(r)||{stageId:r,startTime:Date.now(),stageStartTime:null,totalImageCount:0,imageLoadFailedCount:0,imageLoadPendingCount:0};return n.imageLoadPendingCount++,this.stageStatusMap.set(r,n),n}}function kM(t){return new H1(t)}const R8=ht.Prefetch;class ute extends Sh{constructor(e,r){super(e),this.framesLoaded=0,this.framesProcessed=0,this.framesUpdated=0,this.autoRenderOnLoad=!0,this.cachedFrames=[],this.reRenderTarget=0,this.reRenderFraction=2,this.imagesLoader=this,this.cancelLoading=()=>{const{loadStatus:n}=this;if(!n||!n.loading)return;n.loading=!1,n.cancelled=!0,this.clearLoadCallbacks();const i=({additionalDetails:o})=>o.volumeId!==this.volumeId;fi.filterRequests(i)},this.loadStatus=r.loadStatus}invalidateVolume(e){const{vtkOpenGLTexture:r}=this,{numFrames:n}=this;for(let i=0;ithis.reRenderTarget||n===i)&&(this.reRenderTarget+=a,i3(o)),n===i){s.callbacks.forEach(u=>u(e));const f={FrameOfReferenceUID:l,volumeId:o};De(Ce,Se.IMAGE_VOLUME_LOADING_COMPLETED,f)}}updateTextureAndTriggerEvents(e,r,n=Pi.FULL_RESOLUTION){const i=this.imageIdIndexToFrameIndex(e),{cachedFrames:o,numFrames:a,totalNumFrames:s}=this,{FrameOfReferenceUID:c}=this.metadata;if(o[i]>n||o[i]===Pi.FULL_RESOLUTION)return;const f=n===Pi.FULL_RESOLUTION;o[e]=n,this.framesUpdated++,f&&(this.framesLoaded++,this.framesProcessed++);const u={FrameOfReferenceUID:c,volumeId:this.volumeId,numberOfFrames:a,framesProcessed:this.framesProcessed};De(Ce,Se.IMAGE_VOLUME_MODIFIED,u),f&&this.framesProcessed===this.totalNumFrames&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!0,imageIdIndex:e,imageId:r,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:a,totalNumFrames:s,complete:f,imageQualityStatus:n}),this.vtkOpenGLTexture.setUpdatedFrame(i),this.loadStatus.loaded&&(this.loadStatus.callbacks=[])}successCallback(e,r){const n=this.getImageIdIndex(e),{imageQualityStatus:i}=r;if(this.loadStatus.cancelled){console.warn("volume load cancelled, returning for imageIdIndex: ",n);return}this.updateTextureAndTriggerEvents(n,e,i),this.isDynamicVolume()&&this.checkTimePointCompletion(n)}errorCallback(e,r,n){if(!r)return;const{totalNumFrames:i,numFrames:o}=this,a=this.getImageIdIndex(e);this.framesProcessed++,this.framesProcessed===i&&(this.loadStatus.loaded=!0,this.loadStatus.loading=!1),this.callLoadStatusCallback({success:!1,imageId:e,imageIdIndex:a,error:n,framesLoaded:this.framesLoaded,framesProcessed:this.framesProcessed,framesUpdated:this.framesUpdated,numFrames:o,totalNumFrames:i}),this.loadStatus.loaded&&(this.loadStatus.callbacks=[]);const s={error:n,imageIdIndex:a,imageId:e};De(Ce,Se.IMAGE_LOAD_ERROR,s)}load(e){const{imageIds:r,loadStatus:n,numFrames:i}=this,{transferSyntaxUID:o}=Pe("transferSyntax",r[0])||{},a=Pe(Ad.IMAGE_RETRIEVE_CONFIGURATION,this.volumeId,o,"volume");if(this.imagesLoader=this.isDynamicVolume()?this:a?(a.create||H1.createProgressive)(a):this,n.loading===!0)return;const{loaded:s}=this.loadStatus,c=r.length;if(s){e&&e({success:!0,framesLoaded:c,framesProcessed:c,numFrames:i,totalNumFrames:c});return}e&&this.loadStatus.callbacks.push(e),this._prefetchImageIds()}getLoaderImageOptions(e){const{transferSyntaxUID:r}=Pe("transferSyntax",e)||{},n=Pe("imagePlaneModule",e)||{},{rows:i,columns:o}=n,a=this.getImageIdIndex(e),s=Pe("modalityLutModule",e)||{},c=Pe("generalSeriesModule",e)||{},l={rescaleSlope:s.rescaleSlope,rescaleIntercept:s.rescaleIntercept,modality:c.modality};if(l.modality==="PT"){const h=Pe("scalingModule",e);h&&(this._addScalingToVolume(h),l.suvbw=h.suvbw)}const f=nC(l),u=Yw();if(this.isPreScaled=!0,l&&l.rescaleSlope!==void 0&&l.rescaleIntercept!==void 0){const{rescaleSlope:h,rescaleIntercept:g}=l;this.isPreScaled=typeof h=="number"&&typeof g=="number"}return!u&&f&&(this.isPreScaled=!1),{targetBuffer:{type:this.dataType,rows:i,columns:o},allowFloatRendering:u,preScale:{enabled:this.isPreScaled,scalingParameters:l},transferPixelData:!0,requestType:R8,transferSyntaxUID:r,additionalDetails:{imageId:e,imageIdIndex:a,volumeId:this.volumeId}}}callLoadImage(e,r,n){const{cachedFrames:i}=this;if(i[r]===Pi.FULL_RESOLUTION)return;const o=s=>{const{image:c}=s.detail;c.imageId===e&&(this.vtkOpenGLTexture.setUpdatedFrame(r),Ce.removeEventListener(Se.IMAGE_CACHE_IMAGE_ADDED,o))};return Ce.addEventListener(Se.IMAGE_CACHE_IMAGE_ADDED,o),j1.as(Js(e,n)).forEach(s=>{this.successCallback(e,s)},this.errorCallback.bind(this,r,e))}getImageIdsRequests(e,r){this.totalNumFrames=this.imageIds.length;const n=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(n/100),this.reRenderTarget=this.reRenderFraction),e.map(o=>{const a=this.getImageIdIndex(o),s=R8,c=r,l=this.getLoaderImageOptions(o);return{callLoadImage:this.callLoadImage.bind(this),imageId:o,imageIdIndex:a,options:l,priority:c,requestType:s,additionalDetails:{volumeId:this.volumeId}}})}getImageLoadRequests(e){throw new Error("Abstract method")}getImageIdsToLoad(){throw new Error("Abstract method")}loadImages(){return this.loadStatus.loading=!0,this.getImageLoadRequests(5).reverse().forEach(r=>{if(!r)return;const{callLoadImage:n,imageId:i,imageIdIndex:o,options:a,priority:s,requestType:c,additionalDetails:l}=r;fi.addRequest(n.bind(this,i,o,a),c,l,s)}),Promise.resolve(!0)}_prefetchImageIds(){this.loadStatus.loading=!0;const e=[...this.getImageIdsToLoad()];this.totalNumFrames=this.imageIds.length;const r=2;return this.autoRenderOnLoad&&(this.reRenderFraction=this.totalNumFrames*(r/100),this.reRenderTarget=this.reRenderFraction),this.imagesLoader.loadImages(e,this).catch(n=>{console.debug("progressive loading failed to complete",n)})}_addScalingToVolume(e){if(this.scaling)return;const{suvbw:r,suvlbm:n,suvbsa:i}=e,o={};n&&(o.suvbwToSuvlbm=n/r),i&&(o.suvbwToSuvbsa=i/r),r&&(o.suvbw=r),this.scaling={PT:o}}checkTimePointCompletion(e){}}class fte extends ute{constructor(e,r){e.imageIds||(e.imageIds=r.imageIds),super(e,r),this.getImageIdsToLoad=()=>{const{imageIds:n}=this;return this.numFrames=n.length,n}}getScalarData(){return this.voxelManager.getScalarData()}getImageLoadRequests(e){const{imageIds:r}=this;return this.getImageIdsRequests(r,e)}}function dte(t,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a streaming image volume");async function r(){if(e.imageIds[0].split(":")[0]==="wadouri"){const[g,p]=[Math.floor(e.imageIds.length/2),e.imageIds.length-1],v=[0,g,p];await Promise.all(v.map(x=>new Promise((m,y)=>{const w=e.imageIds[x];fi.addRequest(async()=>{nte(w).then(()=>{console.log(`Prefetched imageId: ${w}`),m(!0)}).catch(C=>{y(C)})},ht.Prefetch,{volumeId:t},1)}))).catch(console.error)}const i=rC(e.imageIds,t),{dimensions:o,spacing:a,origin:s,direction:c,metadata:l,imageIds:f,dataType:u,numberOfComponents:d}=i;return new fte({volumeId:t,metadata:l,dimensions:o,spacing:a,origin:s,direction:c,imageIds:f,dataType:u,numberOfComponents:d},{imageIds:f,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}})}const n=r();return{promise:n,decache:()=>{n.then(i=>{i.destroy(),i=null})},cancel:()=>{n.then(i=>{i.cancelLoading()})}}}const VM={};let kp=dte;function FM(t,e){const r=t.indexOf(":"),n=t.substring(0,r);let i=VM[n];if(i==null){if(kp==null||typeof kp!="function")throw new Error(`No volume loader for scheme ${n} has been registered`);i=kp}const o=i(t,e);return o.promise.then(function(a){De(Ce,Se.VOLUME_LOADED,{volume:a})},function(a){const s={volumeId:t,error:a};De(Ce,Se.VOLUME_LOADED_FAILED,s)}),o}function hte(t,e={imageIds:[]}){if(t===void 0)throw new Error("loadVolume: parameter volumeId must not be undefined");let r=_e.getVolumeLoadObject(t);return r!==void 0?r.promise:(r=FM(t,e),r.promise.then(n=>n))}async function iC(t,e){if(t===void 0)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let r=_e.getVolumeLoadObject(t);return r!==void 0||(r=FM(t,e),_e.putVolumeLoadObject(t,r)),r.promise}function gte(t,e){const r=_e.getVolume(t);if(!r)throw new Error(`Cannot created derived volume: Referenced volume with id ${t} does not exist.`);let{volumeId:n}=e;n===void 0&&(n=wn());const{metadata:i,dimensions:o,spacing:a,origin:s,direction:c}=r,l=r.isDynamicVolume()?r.getCurrentTimePointImageIds():r.imageIds??[],f=IM(l,{targetBuffer:e.targetBuffer}),u=f[0].dataType,d=f.map(g=>g.imageId),h=new Sh({volumeId:n,dataType:u,metadata:structuredClone(i),dimensions:[o[0],o[1],o[2]],spacing:a,origin:s,direction:c,referencedVolumeId:t,imageIds:d,referencedImageIds:r.imageIds??[]});return _e.putVolumeSync(n,h),h}async function oC(t,e){if(e===void 0)throw new Error("createAndCacheVolumeFromImages: parameter imageIds must not be undefined");if(t===void 0)throw new Error("createAndCacheVolumeFromImages: parameter volumeId must not be undefined");const r=_e.getVolume(t);return r||(e.filter(o=>!_e.getImage(o)).length===0?UM(t,e):await iC(t,{imageIds:e}))}function UM(t,e){if(e===void 0)throw new Error("createAndCacheVolumeFromImagesSync: parameter imageIds must not be undefined");if(t===void 0)throw new Error("createAndCacheVolumeFromImagesSync: parameter volumeId must not be undefined");const r=_e.getVolume(t);if(r)return r;const n=rC(e,t),i=new Sh({volumeId:t,dataType:n.dataType,metadata:structuredClone(n.metadata),dimensions:n.dimensions,spacing:n.spacing,origin:n.origin,direction:n.direction,referencedVolumeId:n.referencedVolumeId,imageIds:n.imageIds,referencedImageIds:n.referencedImageIds});return _e.putVolumeSync(t,i),i}function BM(t,e={}){const{metadata:r,dimensions:n,spacing:i,origin:o,direction:a,scalarData:s,targetBuffer:c,preventCache:l=!1}=e,f=_e.getVolume(t);if(f)return f;const u=n[0]*n[1],d=s?s.constructor.name:(c==null?void 0:c.type)??"Float32Array",h=u*n[2];let g;switch(d){case"Uint8Array":case"Int8Array":g=h;break;case"Uint16Array":case"Int16Array":g=h*2;break;case"Float32Array":g=h*4;break}if(!_e.isCacheable(g))throw new Error(`Cannot created derived volume: Volume with id ${t} is not cacheable.`);const v=[];for(let y=0;y{const e="volumeId:",r=t.includes(e)?t.substring(e.length):t,n=r.indexOf("sliceIndex=");return n===-1?r:r.substring(0,n-1)},Ete=1+Lo,Dte=(t,e)=>e===t.substring(0,Math.min(t.length,e.length)),N8=t=>!!pte().find(e=>Dte(t.volumeId,e));function E0(t,e,r,n=!1){const{viewPlaneNormal:i}=e,o=t.getActors();if(!o.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const a=o.map(l=>{const f=l.referencedId??l.uid;return _e.getVolume(f)}).filter(l=>!!l);if(r){const l=da(r),f=a.findIndex(g=>l.includes(g.volumeId)),u=a[f],{uid:d}=o[f],h=P8(u,i,t,n);return{imageVolume:u,spacingInNormalDirection:h,actorUID:d}}if(!a.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const s={spacingInNormalDirection:1/0,imageVolume:null,actorUID:null},c=a.find(N8);for(let l=0;lg.referencedId===n.volumeId||g.uid===n.volumeId);a||console.warn("No actor found for with actorUID of",n.volumeId);const s=a.actor,c=s2(s,i,o),{min:l,max:f,current:u}=c,d=Math.round((f-l)/r)+1;let h=(u-l)/(f-l)*d;return h=Math.floor(h),h>d-1?h=d-1:h<0&&(h=0),{numberOfSlices:d,imageIndex:h}}const su={};function bte(t){su[t]!==void 0&&delete su[t]}function Ite(t){const{renderingEngineId:e,viewportId:r}=t.detail,i=gr(e).getViewport(r);if(!("setVolumes"in i))throw new Error("volumeNewImageEventDispatcher: viewport does not have setVolumes method");su[i.id]===void 0&&(su[i.id]=0);const o=K1(i);if(!o){console.warn(`volumeNewImageEventDispatcher: sliceData is undefined for viewport ${i.id}`);return}const{numberOfSlices:a,imageIndex:s}=o;if(su[i.id]===s)return;su[i.id]=s;const c={imageIndex:s,viewportId:r,renderingEngineId:e,numberOfSlices:a};De(i.element,Se.VOLUME_NEW_IMAGE,c)}function Ju(t,e,r){const[n,i,o]=t,[a,s,c]=e,[l,f,u,d]=r,h=a-n,g=s-i,p=c-o,v=-1*(l*n+f*i+u*o-d)/(l*h+f*g+u*p),x=h*v+n,m=g*v+i,y=p*v+o;return[x,m,y]}function Ba(t,e,r=!1){const[n,i,o]=t,a=n*e[0]+i*e[1]+o*e[2];if(r){const s=Math.sqrt(n*n+i*i+o*o);return[n/s,i/s,o/s,a/s]}return[n,i,o,a]}function GM(t,e,r){const[n,i,o,a]=t,[s,c,l,f]=e,[u,d,h,g]=r,p=_f(n,s,u,i,c,d,o,l,h),v=_f(a,f,g,i,c,d,o,l,h),x=_f(n,s,u,a,f,g,o,l,h),m=_f(n,s,u,i,c,d,a,f,g),y=Dc(v)/Dc(p),w=Dc(x)/Dc(p),C=Dc(m)/Dc(p);return[y,w,C]}function q1(t,e,r=!1){const[n,i,o,a]=t,[s,c,l]=e,f=n*s+i*c+o*l-a,u=Math.abs(f)/Math.sqrt(n*n+i*i+o*o);return(r?Math.sign(f):1)*u}const Ote=Object.freeze(Object.defineProperty({__proto__:null,linePlaneIntersection:Ju,planeDistanceToPoint:q1,planeEquation:Ba,threePlaneIntersection:GM},Symbol.toStringTag,{value:"Module"}));function o3(t){return Array.isArray(t)?t.some(e=>Number.isNaN(e)):Number.isNaN(t)}function to(t){if(t===null||typeof t!="object"||typeof t=="function"||typeof structuredClone=="function")return t;if(Array.isArray(t))return t.map(to);{const e={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=to(t[r]));return e}}const od=class od{constructor(e){this.insetImageMultiplier=1.1,this.flipHorizontal=!1,this.flipVertical=!1,this.viewportStatus=oi.NO_DATA,this._suppressCameraModifiedEvents=!1,this.hasPixelSpacing=!0,this.getProperties=()=>({}),this.setRotation=r=>{},this.viewportWidgets=new Map,this.addWidget=(r,n)=>{this.viewportWidgets.set(r,n)},this.getWidget=r=>this.viewportWidgets.get(r),this.getWidgets=()=>Array.from(this.viewportWidgets.values()),this.removeWidgets=()=>{this.getWidgets().forEach(n=>{if(n.getEnabled()&&n.setEnabled(!1),n.getActor&&n.getRenderer){const i=n.getActor(),o=n.getRenderer();o&&i&&o.removeActor(i)}})},this.id=e.id,this.renderingEngineId=e.renderingEngineId,this.type=e.type,this.element=e.element,this.canvas=e.canvas,this.sx=e.sx,this.sy=e.sy,this.sWidth=e.sWidth,this.sHeight=e.sHeight,this._actors=new Map,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.defaultOptions=to(e.defaultOptions),this.suppressEvents=e.defaultOptions.suppressEvents?e.defaultOptions.suppressEvents:!1,this.options=to(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus===oi.NO_DATA||this.viewportStatus===oi.LOADING||(this.viewportStatus=oi.RENDERED)}getRenderingEngine(){return bd.get(this.renderingEngineId)}getRenderer(){var r;const e=this.getRenderingEngine();if(!e||e.hasBeenDestroyed)throw new Error("Rendering engine has been destroyed");return(r=e.offscreenMultiRenderWindow)==null?void 0:r.getRenderer(this.id)}render(){this.getRenderingEngine().renderViewport(this.id)}setOptions(e,r=!1){var n,i;this.options=structuredClone(e),(n=this.options)!=null&&n.displayArea&&this.setDisplayArea((i=this.options)==null?void 0:i.displayArea),r&&this.render()}reset(e=!1){this.options=structuredClone(this.defaultOptions),e&&this.render()}getSliceViewInfo(){throw new Error("Method not implemented.")}flip({flipHorizontal:e,flipVertical:r}){const n=this.getDefaultImageData();if(!n)return;const i=this.getCamera(),{viewPlaneNormal:o,viewUp:a,focalPoint:s,position:c}=i,l=Kt(we(),o,a);let f=Md(we(),a);const u=qc(we(),o),d=Cr(c,s),g=n.getDimensions().map(C=>Math.floor(C/2)),p=[g[0],g[1],g[2]],v=n.indexToWorld(p,we()),x=this._getFocalPointForResetCamera(v,i,{resetPan:!0,resetToCenter:!1}),m=kt(we(),s,x),y=ui(m),w=C=>{const S=lr(we(),C,2*je(m,C));return kt(S,S,m),on(S,S),S};if(e){const C=w(f),S=Vt(we(),x,C,y),T=Vt(we(),S,u,d);this.setCamera({viewPlaneNormal:u,position:T,focalPoint:S}),this.flipHorizontal=!this.flipHorizontal}if(r){f=qc(f,a);const C=w(l),S=Vt(we(),x,C,y),T=Vt(we(),S,u,d);this.setCamera({focalPoint:S,viewPlaneNormal:u,viewUp:f,position:T}),this.flipVertical=!this.flipVertical}this.render()}getDefaultImageData(){const e=this.getDefaultActor();if(e&&Xo(e))return e.actor.getMapper().getInputData()}getDefaultActor(){return this.getActors()[0]}getActors(){return Array.from(this._actors.values())}getActorUIDs(){return Array.from(this._actors.keys())}getActor(e){return this._actors.get(e)}getImageActor(e){const r=this.getActors();let n=r[0];return e&&(n=r.find(o=>o.referencedId===e)),!n||!Xo(n)?null:n.actor}getActorUIDByIndex(e){const r=this.getActors()[e];if(r)return r.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){this.removeAllActors(),this.addActors(e,{resetCamera:!0})}_removeActor(e){const r=this.getActor(e);if(!r){console.warn(`Actor ${e} does not exist for this viewport`);return}this.getRenderer().removeViewProp(r.actor),this._actors.delete(e)}removeActors(e){e.forEach(r=>{this._removeActor(r)})}addActors(e,r={}){const{resetCamera:n=!1}=r,i=this.getRenderingEngine();if(!i||i.hasBeenDestroyed){console.warn("Viewport::addActors::Rendering engine has not been initialized or has been destroyed");return}e.forEach(s=>{this.addActor(s)});const o=this.getViewPresentation(),a=this.getViewReference();this.resetCamera(),n||(this.setViewReference(a),this.setViewPresentation(o))}addActor(e){const{uid:r,actor:n}=e,i=this.getRenderingEngine();if(!i||i.hasBeenDestroyed){console.warn(`Cannot add actor UID of ${r} Rendering Engine has been destroyed`);return}if(!r||!n)throw new Error("Actors should have uid and vtk Actor properties");if(this.getActor(r)){console.warn(`Actor ${r} already exists for this viewport`);return}const o=this.getRenderer();o==null||o.addActor(n),this._actors.set(r,Object.assign({},e)),this.updateCameraClippingPlanesAndRange()}removeAllActors(){var e;(e=this.getRenderer())==null||e.removeAllViewProps(),this._actors=new Map}resetCameraNoEvent(){this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=!1}setCameraNoEvent(e){this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=!1}_getViewImageDataIntersections(e,r,n){const i=n[0],o=n[1],a=n[2],s=i*r[0]+o*r[1]+a*r[2],c=e.getBounds(),l=this._getEdges(c),f=[];for(const u of l){const[[d,h,g],[p,v,x]]=u;if(i*(p-d)+o*(v-h)+a*(x-g)===0)continue;const m=Ju([d,h,g],[p,v,x],[i,o,a,s]);this._isInBounds(m,c)&&f.push(m)}return f}setInterpolationType(e,r){}setDisplayArea(e,r=!1){var a;if(!e)return;const{storeAsInitialCamera:n,type:i}=e;n&&(this.options.displayArea=e);const{_suppressCameraModifiedEvents:o}=this;if(this._suppressCameraModifiedEvents=!0,this.setCamera(this.fitToCanvasCamera),i==="SCALE"?this.setDisplayAreaScale(e):(this.setInterpolationType(((a=this.getProperties())==null?void 0:a.interpolationType)||La.LINEAR),this.setDisplayAreaFit(e)),n&&(this.initialCamera=this.getCamera()),this._suppressCameraModifiedEvents=o,!r&&!o){const s={viewportId:this.id,displayArea:e,storeAsInitialCamera:n};De(this.element,Se.DISPLAY_AREA_MODIFIED,s),this.setCamera(this.getCamera())}}setDisplayAreaScale(e){const{scale:r=1}=e,n=this.canvas,i=n.height,o=n.width;if(i<8||o<8)return;const c=this.getDefaultImageData().getSpacing()[1];this.setInterpolationType(La.NEAREST),this.setCamera({parallelScale:i*c/(2*r)}),delete e.imageArea,this.setDisplayAreaFit(e);const{focalPoint:l,position:f,viewUp:u,viewPlaneNormal:d}=this.getCamera(),h=we();if(n.height%2&&Vt(h,h,u,r*.5*c),n.width%2){const g=Kt(we(),u,d);Vt(h,h,g,r*.5*c)}!h[0]&&!h[1]&&!h[2]||this.setCamera({focalPoint:xn(we(),l,h),position:xn(we(),f,h)})}setDisplayAreaFit(e){const{imageArea:r,imageCanvasPoint:n}=e,i=(window==null?void 0:window.devicePixelRatio)||1,o=this.getDefaultImageData();if(!o)return;const a=this.sWidth/i,s=this.sHeight/i,c=o.getDimensions(),l=this.worldToCanvas(o.indexToWorld([0,0,0])),f=this.worldToCanvas(o.indexToWorld([c[0]-1,c[1]-1,c[2]])),u=[Math.abs(f[0]-l[0]),Math.abs(f[1]-l[1])],[d,h]=u;if(r){const[g,p]=r,v=Math.abs(g*d/a),x=Math.abs(p*h/s),m=this.getZoom(),y=this.getZoom(this.fitToCanvasCamera),C=Math.min(1/v,1/x)*m/y;this.setZoom(C,!1)}if(n){const{imagePoint:g,canvasPoint:p=g||[.5,.5]}=n,[v,x]=p,m=a*(v-.5),y=s*(x-.5),[w,C]=g||p,S=1,T=S*d*(.5-w),_=S*h*(.5-C),E=T+m,D=_+y,b=[E,D];Lr(b,b,this.getPan()),this.setPan(b,!1)}}getDisplayArea(){var e;return(e=this.options)==null?void 0:e.displayArea}resetCamera(e){const{resetPan:r=!0,resetZoom:n=!0,resetToCenter:i=!0,storeAsInitialCamera:o=!0}=e||{},a=this.getRenderer();this.setCameraNoEvent({flipHorizontal:!1,flipVertical:!1});const s=this.getCamera(),c=a.computeVisiblePropBounds(),l=[0,0,0],f=this.getDefaultImageData();if(f){const R=f.getSpacing();c[0]=c[0]+R[0]/2,c[1]=c[1]-R[0]/2,c[2]=c[2]+R[1]/2,c[3]=c[3]-R[1]/2,c[4]=c[4]+R[2]/2,c[5]=c[5]-R[2]/2}const u=this.getVtkActiveCamera(),d=u.getViewPlaneNormal(),h=u.getViewUp();if(l[0]=(c[0]+c[1])/2,l[1]=(c[2]+c[3])/2,l[2]=(c[4]+c[5])/2,f){const M=f.getDimensions().map(A=>Math.floor(A/2)),L=[M[0],M[1],M[2]];f.indexToWorld(L,l)}const{widthWorld:g,heightWorld:p}=this._getWorldDistanceViewUpAndViewRight(c,h,d),v=[this.sWidth,this.sHeight],x=g/p,m=v[0]/v[1],y=x/m,w=y<1?this.insetImageMultiplier*p/2:this.insetImageMultiplier*p*y/2,C=od.boundsRadius(c)*(this.type===mn.VOLUME_3D?10:1),S=this.insetImageMultiplier*C,T=Math.abs(nt.dot(h,d))>.999?[-h[2],h[0],h[1]]:h,_=this._getFocalPointForResetCamera(l,s,{resetPan:r,resetToCenter:i}),E=[_[0]+S*d[0],_[1]+S*d[1],_[2]+S*d[2]];a.resetCameraClippingRange(c);const D=[-er.MAXIMUM_RAY_DISTANCE,er.MAXIMUM_RAY_DISTANCE];u.setPhysicalScale(C),u.setPhysicalTranslation(-_[0],-_[1],-_[2]),this.setCamera({parallelScale:n?w:s.parallelScale,focalPoint:_,position:E,viewAngle:90,viewUp:T,clippingRange:D});const b=this.getCamera();this.setFitToCanvasCamera(this.getCamera()),o&&this.setInitialCamera(b),n&&this.setZoom(1,o);const I={type:"ResetCameraEvent",renderer:a};return a.invokeEvent(I),this.triggerCameraModifiedEventIfNecessary(s,b),f&&this.options.displayArea&&n&&r&&i&&this.setDisplayArea(this.options.displayArea),!0}setInitialCamera(e){this.initialCamera=e}setFitToCanvasCamera(e){this.fitToCanvasCamera=e}getPan(e=this.initialCamera){if(!e)return[0,0];const n=this.getVtkActiveCamera().getFocalPoint(),i=this.canvasToWorld([0,0]),o=this.worldToCanvas(kt([0,0,0],e.focalPoint,i)),a=this.worldToCanvas(kt([0,0,0],n,i));return kn([0,0],o,a)}getCurrentImageIdIndex(){throw new Error("Not implemented")}getSliceIndex(){throw new Error("Not implemented")}getImageData(){throw new Error("Not implemented")}getViewReferenceId(e){return null}setPan(e,r=!1){const n=this.getCamera(),{focalPoint:i,position:o}=n,a=this.canvasToWorld([0,0]),s=kn([0,0],e,this.getPan());if(Math.abs(s[0])<1&&Math.abs(s[1])<1&&!r)return;const c=kt(we(),this.canvasToWorld(s),a),l=kt(we(),i,c),f=kt(we(),o,c);this.setCamera({...n,focalPoint:l,position:f},r)}getZoom(e=this.initialCamera){if(!e)return 1;const r=this.getVtkActiveCamera(),{parallelScale:n}=e;return n/r.getParallelScale()}setZoom(e,r=!1){const n=this.getCamera(),{parallelScale:i}=this.initialCamera,o=i/e;n.parallelScale===o&&!r||this.setCamera({...n,parallelScale:o},r)}_getFocalPointForViewPlaneReset(e){const{focalPoint:r,viewPlaneNormal:n}=this.getCamera(),i=this._getViewImageDataIntersections(e,r,n);let o=0,a=0,s=0;return i.forEach(([l,f,u])=>{o+=l,a+=f,s+=u}),[o/i.length,a/i.length,s/i.length]}getCanvas(){return this.canvas}getVtkActiveCamera(){return this.getRenderer().getActiveCamera()}getCameraNoRotation(){const e=this.getVtkActiveCamera(),r=(s,c)=>s.some(l=>isNaN(l))?c:s,n=r([...e.getViewUp()],[0,1,0]),i=r([...e.getViewPlaneNormal()],[0,0,-1]),o=r([...e.getPosition()],[0,0,1]),a=r([...e.getFocalPoint()],[0,0,0]);return{viewUp:n,viewPlaneNormal:i,position:o,focalPoint:a,parallelProjection:e.getParallelProjection(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle(),flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}getCamera(){return{...this.getCameraNoRotation(),rotation:this.getRotation()}}setCamera(e,r=!1){const n=this.getVtkActiveCamera(),i=this.getCamera(),o=Object.assign({},i,e),{viewUp:a,viewPlaneNormal:s,position:c,focalPoint:l,parallelScale:f,viewAngle:u,flipHorizontal:d,flipVertical:h,clippingRange:g}=e;if(d!==void 0){const x=d&&!this.flipHorizontal||!d&&this.flipHorizontal;x&&this.flip({flipHorizontal:x})}if(h!==void 0){const x=h&&!this.flipVertical||!h&&this.flipVertical;x&&this.flip({flipVertical:x})}a!==void 0&&n.setViewUp(a),s!==void 0&&n.setDirectionOfProjection(-s[0],-s[1],-s[2]),c!==void 0&&n.setPosition(...c),l!==void 0&&n.setFocalPoint(...l),f!==void 0&&n.setParallelScale(f),u!==void 0&&n.setViewAngle(u),g!==void 0&&n.setClippingRange(g);const p=i.focalPoint,v=i.viewUp;if(p&&l||v&&a){const x=n.getViewPlaneNormal(),m=n.getViewUp();let y=!1,w=!1;if(l){const C=[l[0]-p[0],l[1]-p[1],l[2]-p[2]];y=Math.abs(nt.dot(C,x))>0}if(a&&(w=!pt(m,v)),y||w){const C=this.getDefaultActor();if(!(C!=null&&C.actor))return;ci(C,"vtkActor")||this.updateClippingPlanesForActors(o),(ci(C,"vtkImageSlice")||this.type===mn.VOLUME_3D)&&this.getRenderer().resetCameraClippingRange()}}r&&this.setInitialCamera(o),this.triggerCameraModifiedEventIfNecessary(i,this.getCamera())}triggerCameraModifiedEventIfNecessary(e,r){if(!this._suppressCameraModifiedEvents&&!this.suppressEvents){const n={previousCamera:e,camera:r,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.CAMERA_MODIFIED,n)}}updateCameraClippingPlanesAndRange(){const e=this.getCamera();this.updateClippingPlanesForActors(e),this.getRenderer().resetCameraClippingRange()}async updateClippingPlanesForActors(e){this.getActors().map(n=>{if(!n.actor)return;const i=n.actor.getMapper();let o=n!=null&&n.clippingFilter?n==null?void 0:n.clippingFilter.getClippingPlanes():i.getClippingPlanes();o.length===0&&(n!=null&&n.clippingFilter)&&(o=[Xr.newInstance(),Xr.newInstance()]);let a=er.MINIMUM_SLAB_THICKNESS;n.slabThickness&&(a=n.slabThickness);const{viewPlaneNormal:s,focalPoint:c}=e;this.setOrientationOfClippingPlanes(o,a,s,c),De(this.element,Se.CLIPPING_PLANES_UPDATED,{actorEntry:n,focalPoint:c,vtkPlanes:o,viewport:this})})}setOrientationOfClippingPlanes(e,r,n,i){if(e.length<2)return;const o=[n[0],n[1],n[2]];nt.multiplyScalar(o,r),e[0].setNormal(n);const a=[0,0,0];nt.subtract(i,o,a),e[0].setOrigin(a),e[1].setNormal(-n[0],-n[1],-n[2]);const s=[0,0,0];nt.add(i,o,s),e[1].setOrigin(s)}getClippingPlanesForActor(e){if(e||(e=this.getDefaultActor()),!e.actor)throw new Error("Invalid actor entry: Actor is undefined");const r=e.actor.getMapper();let n=e!=null&&e.clippingFilter?e==null?void 0:e.clippingFilter.getClippingPlanes():r.getClippingPlanes();return n.length===0&&(e!=null&&e.clippingFilter)&&(n=[Xr.newInstance(),Xr.newInstance()]),n}_getWorldDistanceViewUpAndViewRight(e,r,n){const i=this._getCorners(e),o=this._getCorners(e),a=Kt(we(),r,n);let s=br.buildFromDegree().identity().rotateFromDirections(r,[1,0,0]);i.forEach(d=>s.apply(d));let c=1/0,l=-1/0;for(let d=0;d<8;d++){const h=i[d][0];h>l&&(l=h),hs.apply(d));let f=1/0,u=-1/0;for(let d=0;d<8;d++){const h=o[d][0];h>u&&(u=h),h=0&&this.setRotation(o)}_getCorners(e){return[[e[0],e[2],e[4]],[e[0],e[2],e[5]],[e[0],e[3],e[4]],[e[0],e[3],e[5]],[e[1],e[2],e[4]],[e[1],e[2],e[5]],[e[1],e[3],e[4]],[e[1],e[3],e[5]]]}_getFocalPointForResetCamera(e,r,{resetPan:n=!0,resetToCenter:i=!0}){if(i&&n)return e;if(i&&!n)return o3(r.focalPoint)?e:r.focalPoint;if(!i&&n){const o=r,a=o.focalPoint,s=o.viewPlaneNormal,c=kt(we(),e,a),l=je(c,s),f=Vt(we(),e,s,-1*l);return[f[0],f[1],f[2]]}if(!n&&!i)return o3(r.focalPoint)?e:r.focalPoint}_isInBounds(e,r){const[n,i,o,a,s,c]=r,[l,f,u]=e;return!(li||fa||uc)}_getEdges(e){const[r,n,i,o,a,s,c,l]=this._getCorners(e);return[[r,n],[r,a],[r,i],[n,o],[n,s],[i,o],[i,c],[o,l],[a,c],[a,s],[s,l],[c,l]]}static boundsRadius(e){const r=(e[1]-e[0])**2,n=(e[3]-e[2])**2,i=(e[5]-e[4])**2;return Math.sqrt(r+n+i||1)*.5}setDataIds(e,r){throw new Error("Unsupported operatoin setDataIds")}};od.CameraViewPresentation={rotation:!0,pan:!0,zoom:!0,displayArea:!0},od.TransferViewPresentation={windowLevel:!0,paletteLut:!0};let Zu=od;function WM(t,e,r=!1){const n=t.getCamera(),{focalPoint:i,viewPlaneNormal:o}=n,{spacingInNormalDirection:a,actorUID:s}=E0(t,n,e,r);if(!s)throw new Error(`Could not find image volume with id ${e} in the viewport`);const c=t.getActor(s);if(!c)return console.warn("No actor found for with actorUID of",s),null;const l=c.actor;return{sliceRange:s2(l,o,i),spacingInNormalDirection:a,camera:n}}function Iu(t,e,r=!1){const{sliceRange:n,spacingInNormalDirection:i,camera:o}=WM(t,e,r),{min:a,max:s,current:c}=n,l=Math.round((s-a)/i),u=(c-a)/(s-a)*l,d=Math.round(u);return{numScrollSteps:l,currentStepIndex:d,sliceRangeInfo:{sliceRange:n,spacingInNormalDirection:i,camera:o}}}function zM(t){let e=[];const[r,n]=t.getRange();t.getTable(r,n,1024,e),e=e.filter((h,g)=>g%3===0);const i=[...Array(1024).keys()].map((h,g)=>r+(n-r)/1023*g),o=e[256],a=Math.log((1-o)/o),s=i[256],c=e[256*3],l=Math.log((1-c)/c),f=i[256*3],u=Math.round(4*(f-s)/(a-l)),d=Math.round(s+u*a/4);return[Math.round(d-u/2),Math.round(d+u/2)]}function $M(t,e){const r=e.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:n}=Mte(r),i=n[0],o=n[1]-n[0],a=Ys.newInstance(),s=[];for(let w=0;w[o*n+e[0],a,s,c]);return r.removeAllPoints(),i.forEach(([o,a,s,c])=>r.addRGBPoint(o,a,s,c)),i}function Lte(t,e,r){const n=e[1]-e[0],i=t.map(([o,a])=>[o*n+e[0],a]);return r.removeAllPoints(),i.forEach(([o,a])=>r.addPoint(o,a)),i}class Mn extends Zu{constructor(e){if(super(e),this.useCPURendering=!1,this.perVolumeIdDefaultProperties=new Map,this.viewportProperties={},this.volumeIds=new Set,this.setRotation=i=>{const o=this.getPan(this.fitToCanvasCamera),a=this.getPan(),s=this.getCamera(),c=Oo([0,0],o,a);this.setPan(c,!1);const{flipVertical:l}=this.getCamera(),f=l?qc([0,0,0],this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:f}),this.rotateCamera(i);const u=this.getPan(),d=this.getPan(this.fitToCanvasCamera),h=Oo([0,0],u,d),g=Lr([0,0],o,h);if(this.setPan(g,!1),this._suppressCameraModifiedEvents)return;const p=this.getCamera(),v={previousCamera:s,camera:p,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.CAMERA_MODIFIED,v)},this.getDefaultProperties=i=>{let o;return i!==void 0&&(o=this.perVolumeIdDefaultProperties.get(i)),o!==void 0?o:{...this.globalDefaultProperties}},this.getProperties=i=>{var x,m;if(!this._getApplicableVolumeActor(i))return;const{colormap:a,VOILUTFunction:s,interpolationType:c,invert:l,slabThickness:f,preset:u}=this.viewportProperties;if(!_e.getVolume(this.getVolumeId()))return null;const h=this.getActors().map(y=>{var _;const w=y.actor;if(!ci(y,"vtkVolume"))return null;const C=w.getProperty().getRGBTransferFunction(0),[S,T]=((_=this.viewportProperties)==null?void 0:_.VOILUTFunction)==="SIGMOID"?zM(C):C.getRange();return{volumeId:i,voiRange:{lower:S,upper:T}}}).filter(Boolean),g=i?(x=h.find(y=>y.volumeId===i))==null?void 0:x.voiRange:(m=h[0])==null?void 0:m.voiRange,p=this.getColormap(i);return{colormap:i&&p?p:a,voiRange:g,VOILUTFunction:s,interpolationType:c,invert:l,slabThickness:f,preset:u}},this.getColormap=i=>{const o=this._getApplicableVolumeActor(i);if(!o)return;const{volumeActor:a}=o,s=this._getOrCreateColorTransferFunction(i),{nodes:c}=s.getState(),l=c.reduce((u,d)=>(u.push(d.x,d.r,d.g,d.b),u),[]);return Qw(l,a)},this.getRotation=()=>{const{viewUp:i,viewPlaneNormal:o,flipVertical:a}=this.getCameraNoRotation(),s=a?qc([0,0,0],this.initialViewUp):this.initialViewUp;if(!s)return 0;const c=Tw(s,i)*180/Math.PI,l=Kt([0,0,0],s,i);return je(l,o)>=0?c:(360-c)%360},this.getFrameOfReferenceUID=()=>this._FrameOfReferenceUID,this.canvasToWorld=i=>{var g,p;const o=this.getVtkActiveCamera();(g=o.setIsPerformingCoordinateTransformation)==null||g.call(o,!0);const a=this.getRenderer(),c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),f=window.devicePixelRatio||1,u=[i[0]*f,i[1]*f],d=[u[0]+this.sx,u[1]+this.sy];d[1]=l[1]-d[1];const h=c.displayToWorld(d[0],d[1],0,a);return(p=o.setIsPerformingCoordinateTransformation)==null||p.call(o,!1),[h[0],h[1],h[2]]},this.worldToCanvas=i=>{var g;const o=this.getVtkActiveCamera();(g=o.setIsPerformingCoordinateTransformation)==null||g.call(o,!0);const a=this.getRenderer(),c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),f=c.worldToDisplay(...i,a);f[1]=l[1]-f[1];const u=[f[0]-this.sx,f[1]-this.sy],d=window.devicePixelRatio||1,h=[u[0]/d,u[1]/d];return o.setIsPerformingCoordinateTransformation(!1),h},this.hasImageURI=i=>this.getActors().filter(a=>ci(a,"vtkVolume")).some(({uid:a,referencedId:s})=>{const c=_e.getVolume(s||a);return c!=null&&c.imageIds?c.imageIds.map(Nn).includes(i):!1}),this.getImageIds=i=>{const o=this._getApplicableVolumeActor(i);if(!o)throw new Error(`No actor found for the given volumeId: ${i}`);const a=o.volumeId,s=_e.getVolume(a);if(!s)throw new Error(`imageVolume with id: ${a} does not exist in cache`);return s.imageIds},this.useCPURendering=Kf(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");const r=this.getRenderer(),n=_J.newInstance();switch(r.setActiveCamera(n),this.type){case mn.ORTHOGRAPHIC:n.setParallelProjection(!0);break;case mn.VOLUME_3D:n.setParallelProjection(!0);break;case mn.PERSPECTIVE:n.setParallelProjection(!1);break;default:throw new Error(`Unrecognized viewport type: ${this.type}`)}this.initializeVolumeNewImageEventDispatcher()}static get useCustomRenderingPipeline(){return!1}getSliceViewInfo(){throw new Error("Method not implemented.")}applyViewOrientation(e,r=!0){const{viewPlaneNormal:n,viewUp:i}=this._getOrientationVectors(e),o=this.getVtkActiveCamera();o.setDirectionOfProjection(-n[0],-n[1],-n[2]),o.setViewUpFrom(i),this.initialViewUp=i,r&&this.resetCamera()}initializeVolumeNewImageEventDispatcher(){const e=n.bind(this),r=i.bind(this);function n(o){const{viewportId:a}=o.detail;a!==this.id||this.isDisabled||!this.getImageData()||Ite(o)}function i(o){const{viewportId:a}=o.detail;a===this.id&&(this.element.removeEventListener(Se.CAMERA_MODIFIED,e),Ce.removeEventListener(Se.ELEMENT_DISABLED,r),bte(a))}this.element.removeEventListener(Se.CAMERA_MODIFIED,e),this.element.addEventListener(Se.CAMERA_MODIFIED,e),Ce.addEventListener(Se.ELEMENT_DISABLED,r)}setVOILUTFunction(e,r,n){Object.values(Va).includes(e)||(e=Va.LINEAR);const{voiRange:i}=this.getProperties();this.setVOI(i,r,n),this.viewportProperties.VOILUTFunction=e}setColormap(e,r,n){const i=this._getApplicableVolumeActor(r);if(!i)return;const{volumeActor:o}=i,a=Ys.newInstance();let s=Pd(e.name);const{name:c}=e;if(s||(s=U1.getPresetByName(c)),!s)throw new Error(`Colormap ${e} not found`);const l=o.getProperty().getRGBTransferFunction(0).getRange();if(a.applyColorMap(s),a.setMappingRange(l[0],l[1]),o.getProperty().setRGBTransferFunction(0,a),this.viewportProperties.colormap=e,!n){const f={viewportId:this.id,colormap:e,volumeId:r};De(this.element,Se.VOI_MODIFIED,f),De(this.element,Se.COLORMAP_MODIFIED,f)}}setOpacity(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n,o=qu.newInstance();if(typeof e.opacity=="number"){const a=i.getProperty().getRGBTransferFunction(0).getRange();o.addPoint(a[0],e.opacity),o.addPoint(a[1],e.opacity)}else e.opacity.forEach(({opacity:a,value:s})=>{o.addPoint(s,a)});i.getProperty().setScalarOpacity(0,o),this.viewportProperties.colormap||(this.viewportProperties.colormap={}),this.viewportProperties.colormap.opacity=e.opacity}setInvert(e,r,n){const i=this._getApplicableVolumeActor(r);if(!i)return;const o=i.volumeId,a=this._getOrCreateColorTransferFunction(o);if(qf(a),this.viewportProperties.invert=e,!n){const s={...this.getVOIModifiedEventDetail(o),invertStateChanged:!0};De(this.element,Se.VOI_MODIFIED,s)}}getVOIModifiedEventDetail(e){const r=this._getApplicableVolumeActor(e);if(!r)throw new Error(`No actor found for the given volumeId: ${e}`);const o=r.volumeActor.getProperty().getRGBTransferFunction(0).getMappingRange(),a=this.getColormap(e),{VOILUTFunction:s,invert:c}=this.getProperties(e);return{viewportId:this.id,range:{lower:o[0],upper:o[1]},volumeId:r.volumeId,VOILUTFunction:s,colormap:a,invert:c}}_getOrCreateColorTransferFunction(e){const r=this._getApplicableVolumeActor(e);if(!r)return null;const{volumeActor:n}=r,i=n.getProperty().getRGBTransferFunction(0);if(i)return i;const o=Ys.newInstance();return n.getProperty().setRGBTransferFunction(0,o),o}setInterpolationType(e,r){const n=this._getApplicableVolumeActor(r);if(!n)return;const{volumeActor:i}=n;i.getProperty().setInterpolationType(e),this.viewportProperties.interpolationType=e}setVOI(e,r,n=!1){const i=this._getApplicableVolumeActor(r);if(!i)return;const{volumeActor:o}=i,a=i.volumeId,s=e;if(typeof s>"u")throw new Error("voiRangeToUse is undefined, need to implement this in the new volume model");const{VOILUTFunction:c}=this.getProperties(a);if(c===Va.SAMPLED_SIGMOID){const l=eC(s);o.getProperty().setRGBTransferFunction(0,l)}else{const{lower:l,upper:f}=s;o.getProperty().getRGBTransferFunction(0).setRange(l,f)}if(!n){const l={...this.getVOIModifiedEventDetail(a)};De(this.element,Se.VOI_MODIFIED,l)}this.viewportProperties.voiRange=s}rotateCamera(e){const r=e-this.getRotation();this.getVtkActiveCamera().roll(-r)}setDefaultProperties(e,r){r==null?this.globalDefaultProperties=e:this.perVolumeIdDefaultProperties.set(r,e)}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perVolumeIdDefaultProperties.delete(e),this.resetToDefaultProperties(e))}getViewReference(e={}){const r=super.getViewReference(e),n=this.getVolumeId(e);if((e==null?void 0:e.forFrameOfReference)!==!1&&(r.volumeId=n),typeof(e==null?void 0:e.sliceIndex)!="number")return r;const{viewPlaneNormal:i}=r,o=(e==null?void 0:e.sliceIndex)-this.getSliceIndex(),{sliceRangeInfo:a}=Iu(this,n,!0),{sliceRange:s,spacingInNormalDirection:c,camera:l}=a,{focalPoint:f,position:u}=l,{newFocalPoint:d}=Du(f,u,s,i,c,o);return r.cameraFocalPoint=d,r}isReferenceViewable(e,r){if(!e.FrameOfReferenceUID||!super.isReferenceViewable(e,r))return!1;if(r!=null&&r.withNavigation)return!0;const n=this.getSliceIndex(),{sliceIndex:i}=e;return Array.isArray(i)?i[0]<=n&&n<=i[1]:i===void 0||i===n}scroll(e=1){const r=this.getVolumeId(),{sliceRangeInfo:n}=Iu(this,r,!0);if(!n)return;const{sliceRange:i,spacingInNormalDirection:o,camera:a}=n,{focalPoint:s,viewPlaneNormal:c,position:l}=a,{newFocalPoint:f,newPosition:u}=Du(s,l,i,c,o,e);this.setCamera({focalPoint:f,position:u})}setViewReference(e){if(!e)return;const r=this.getVolumeId(),{viewPlaneNormal:n,FrameOfReferenceUID:i,cameraFocalPoint:o,viewUp:a}=e;let{sliceIndex:s}=e;const{focalPoint:c,viewPlaneNormal:l,position:f}=this.getCamera(),u=JO(l,n),d=pt(l,n);if(typeof s=="number"&&e.volumeId===r&&(u||d)){const{currentStepIndex:h,sliceRangeInfo:g,numScrollSteps:p}=Iu(this,r,!0),{sliceRange:v,spacingInNormalDirection:x}=g;u&&(s=p-s-1);const m=s-h,{newFocalPoint:y,newPosition:w}=Du(c,f,v,l,x,m);this.setCamera({focalPoint:y,position:w})}else if(i===this.getFrameOfReferenceUID()){if(n&&!u&&!d){this.setOrientation({viewPlaneNormal:n,viewUp:a}),this.setViewReference(e);return}if(o){const h=kt([0,0,0],o,c),g=n??l,p=je(h,g);pt(p,0)||lr(h,g,p);const v=xn([0,0,0],c,h),x=xn([0,0,0],f,h);this.setCamera({focalPoint:v,position:x})}}else throw new Error(`Incompatible view refs: ${i}!==${this.getFrameOfReferenceUID()}`)}setProperties({voiRange:e,VOILUTFunction:r,invert:n,colormap:i,preset:o,interpolationType:a,slabThickness:s}={},c,l=!1){this.globalDefaultProperties==null&&this.setDefaultProperties({voiRange:e,VOILUTFunction:r,invert:n,colormap:i,preset:o,slabThickness:s}),n!==void 0&&this.viewportProperties.invert!==n&&this.setInvert(n,c,l),i!=null&&i.name&&this.setColormap(i,c,l),(i==null?void 0:i.opacity)!=null&&this.setOpacity(i,c),e!==void 0&&this.setVOI(e,c,l),typeof a<"u"&&this.setInterpolationType(a),r!==void 0&&this.setVOILUTFunction(r,c,l),o!==void 0&&this.setPreset(o,c,l),s!==void 0&&(this.setSlabThickness(s),this.viewportProperties.slabThickness=s)}resetToDefaultProperties(e){var n,i;const r=this.globalDefaultProperties;(n=r.colormap)!=null&&n.name&&this.setColormap(r.colormap,e),((i=r.colormap)==null?void 0:i.opacity)!=null&&this.setOpacity(r.colormap,e),r.voiRange!==void 0&&this.setVOI(r.voiRange,e),r.VOILUTFunction!==void 0&&this.setVOILUTFunction(r.VOILUTFunction,e),r.invert!==void 0&&this.setInvert(r.invert,e),r.slabThickness!==void 0&&(this.setSlabThickness(r.slabThickness),this.viewportProperties.slabThickness=r.slabThickness),r.preset!==void 0&&this.setPreset(r.preset,e,!1),r.preset!==void 0&&this.setPreset(r.preset,e,!1),this.render()}setPreset(e,r,n){const i=this._getApplicableVolumeActor(r);if(!i)return;const{volumeActor:o}=i;let a=e;typeof a=="string"&&(a=TD.find(s=>s.name===e)),a&&($M(o,a),this.viewportProperties.preset=a,this.render(),n||De(this.element,Se.PRESET_MODIFIED,{viewportId:this.id,volumeId:i.volumeId,actor:o,presetName:a.name}))}async setVolumes(e,r=!1,n=!1){const i=_e.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist, you need to create/allocate the volume first`);const o=i.metadata.FrameOfReferenceUID;this._isValidVolumeInputArray(e,o),this._FrameOfReferenceUID=o,e.forEach(s=>{this._addVolumeId(s.volumeId)});const a=[];for(let s=0;s{this._addVolumeId(a.volumeId)});for(let a=0;ao.referencedId===e);return i?{volumeActor:i.actor,volumeId:e,actorUID:i.uid}:void 0}const n=r[0];return{volumeActor:n.actor,volumeId:n.referencedId,actorUID:n.uid}}async _isValidVolumeInputArray(e,r){const n=e.length;for(let i=1;if.referencedId===e);if(!ci(n,"vtkVolume"))return;const i=n.actor,o=_e.getVolume(e),a=i.getMapper().getInputData();return{dimensions:a.getDimensions(),spacing:a.getSpacing(),origin:a.getOrigin(),direction:a.getDirection(),imageData:i.getMapper().getInputData(),metadata:{Modality:(c=o==null?void 0:o.metadata)==null?void 0:c.Modality,FrameOfReferenceUID:(l=o==null?void 0:o.metadata)==null?void 0:l.FrameOfReferenceUID},get scalarData(){var f;return(f=o==null?void 0:o.voxelManager)==null?void 0:f.getScalarData()},scaling:o==null?void 0:o.scaling,hasPixelSpacing:!0,voxelManager:o==null?void 0:o.voxelManager}}setCameraClippingRange(){throw new Error("Method not implemented.")}getSliceIndex(){throw new Error("Method not implemented.")}setCamera(e,r){super.setCamera(e,r),this.setCameraClippingRange()}_setVolumeActors(e){for(let r=0;r{n.slabThickness>r&&(r=n.slabThickness)}),r}getIntensityFromWorld(e){const r=this.getDefaultActor();if(!ci(r,"vtkVolume"))return;const{actor:n}=r,i=n.getMapper().getInputData(),o=_e.getVolume(this.getVolumeId()),a=Gn(i,e);return o.voxelManager.getAtIJKPoint(a)}getVolumeId(e){const r=this.getActors();if(!r)return;if(!(e!=null&&e.volumeId)){const i=r.find(o=>o.actor.getClassName()==="vtkVolume");return(i==null?void 0:i.referencedId)||(i==null?void 0:i.uid)}const n=r.find(i=>i.actor.getClassName()==="vtkVolume"&&i.referencedId===(e==null?void 0:e.volumeId));return(n==null?void 0:n.referencedId)||(n==null?void 0:n.uid)}getViewReferenceId(e={}){var c;let{volumeId:r,sliceIndex:n}=e;if(!r){const l=this.getActors();if(!l)return;r=(c=l.find(f=>f.actor.getClassName()==="vtkVolume"))==null?void 0:c.referencedId}const i=this.getSliceIndex();n??(n=i);const{viewPlaneNormal:o,focalPoint:a}=this.getCamera(),s=r.includes("?")?"&":"?";return`volumeId:${r}${s}sliceIndex=${n}&viewPlaneNormal=${o.join(",")}&focalPoint=${a.join(",")}`}_addVolumeId(e){this.volumeIds.add(e)}getAllVolumeIds(){return Array.from(this.volumeIds)}}function _s(t,e){const{imageData:r}=t.getImageData(),n=t.canvasToWorld(e);return Gn(r,n)}function X1(t,e){return t.indexToWorld(e)}function Nte(t,e){const{imageData:r}=t.getImageData(),n=X1(r,e);return t.worldToCanvas(n)}class an extends Mn{constructor(e){super(e),this._useAcquisitionPlaneForViewPlane=!1,this.getNumberOfSlices=()=>{const{numberOfSlices:n}=K1(this)||{};return n},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!1,suppressEvents:!0}),this.getCurrentImageIdIndex=n=>{const{viewPlaneNormal:i,focalPoint:o}=this.getCamera(),a=this.getImageData(n);if(!a)return;const{origin:s,direction:c,spacing:l}=a,f=qa({direction:c,spacing:l},i),u=we();Qt(u,o,s);const d=je(u,i);return Math.round(Math.abs(d)/f)},this.getSliceIndex=()=>{const{imageIndex:n}=K1(this)||{};return n},this.getCurrentImageId=()=>{const n=this.getDefaultActor();if(!n||!ci(n,"vtkVolume"))return;const i=_e.getVolume(this.getVolumeId());if(!i)return;const{viewPlaneNormal:o,focalPoint:a}=this.getCamera();return Xa(i,a,o)},this.getSlicePlaneCoordinates=()=>{const n=this.getDefaultActor();if(!(n!=null&&n.actor))return console.warn("No image data found for calculating vtkPlanes."),[];const i=this.getVolumeId(),o=_e.getVolume(i),a=this.getCamera(),{focalPoint:s,position:c,viewPlaneNormal:l}=a,f=qa(o,l),u=s2(n.actor,l,s),d=Math.round((u.current-u.min)/f),h=Math.round((u.max-u.current)/f),g=this.getSliceIndex(),p=[];for(let v=-d;v<=h;v++){const{newFocalPoint:x}=Du(s,c,u,l,f,v);p.push({sliceIndex:g+v,point:x})}return p};const{orientation:r}=this.options;if(r&&r!==ju.ACQUISITION){this.applyViewOrientation(r);return}this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e,r=!1,n=!1){const i=_e.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),super.setVolumes(e,r,n)}async addVolumes(e,r=!1,n=!1){const i=_e.getVolume(e[0].volumeId);if(!i)throw new Error(`imageVolume with id: ${i.volumeId} does not exist`);return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),super.addVolumes(e,r,n)}jumpToWorld(e){const{focalPoint:r}=this.getCamera(),n=[0,0,0];Qt(n,e,r);const i=this.getCamera(),o=i.viewPlaneNormal,a=je(n,o),s=Ye(o[0],o[1],o[2]);if(lr(s,s,a),Math.abs(s[0])>.001||Math.abs(s[1])>.001||Math.abs(s[2])>.001){const c=[0,0,0],l=[0,0,0];xn(c,i.focalPoint,s),xn(l,i.position,s),this.setCamera({focalPoint:c,position:l}),this.render()}return!0}setOrientation(e,r=!0){let n,i;if(typeof e=="string"){if(bs[e])({viewPlaneNormal:n,viewUp:i}=bs[e]);else if(e==="acquisition")({viewPlaneNormal:n,viewUp:i}=this._getAcquisitionPlaneOrientation());else throw new Error(`Invalid orientation: ${e}. Use Enums.OrientationAxis instead.`);this.setCamera({viewPlaneNormal:n,viewUp:i}),this.viewportProperties.orientation=e,this.resetCamera()}else({viewPlaneNormal:n,viewUp:i}=e),this.applyViewOrientation(e);r&&this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(e.getDistance()-this.getSlabThickness(),e.getDistance()+this.getSlabThickness()):e.setClippingRange(er.MINIMUM_SLAB_THICKNESS,er.MAXIMUM_RAY_DISTANCE)}_getAcquisitionPlaneOrientation(){if(!this.getDefaultActor())return;const r=this.getVolumeId(),n=_e.getVolume(r);if(!n)throw new Error(`imageVolume with id: ${r} does not exist in cache`);const{direction:i}=n,o=i.slice(6,9).map(s=>-s),a=i.slice(3,6).map(s=>-s);return{viewPlaneNormal:o,viewUp:a}}_setViewPlaneToAcquisitionPlane(e){let r,n;if(e){const{direction:i}=e;r=i.slice(6,9).map(o=>-o),n=i.slice(3,6).map(o=>-o)}else({viewPlaneNormal:r,viewUp:n}=this._getAcquisitionPlaneOrientation());this.setCamera({viewPlaneNormal:r,viewUp:n}),this.initialViewUp=n,this.resetCamera()}setBlendMode(e,r=[],n=!1){let i=this.getActors();r&&r.length>0&&(i=i.filter(o=>r.includes(o.uid))),i.forEach(o=>{var c;const{actor:a}=o,s=a.getMapper();(c=s.setBlendMode)==null||c.call(s,e)}),n&&this.render()}resetCamera(e){const{resetPan:r=!0,resetZoom:n=!0,resetRotation:i=!0,resetToCenter:o=!0,suppressEvents:a=!1,resetOrientation:s=!0}=e||{},{orientation:c}=this.viewportProperties;c&&s&&this.applyViewOrientation(c,!1),super.resetCamera({resetPan:r,resetZoom:n,resetToCenter:o});const l=this.getVtkActiveCamera(),f=l.getViewPlaneNormal(),u=l.getFocalPoint();if(this.getActors().forEach(h=>{if(!h.actor)return;const g=h.actor.getMapper();if(g.getClippingPlanes().length===0&&!(h!=null&&h.clippingFilter)){const v=Xr.newInstance(),x=Xr.newInstance(),m=[v,x];let y=er.MINIMUM_SLAB_THICKNESS;h.slabThickness&&(y=h.slabThickness),this.setOrientationOfClippingPlanes(m,y,f,u),g.addClippingPlane(v),g.addClippingPlane(x)}}),i&&bs[this.viewportProperties.orientation]!==void 0){const h=bs[this.viewportProperties.orientation];this.setCameraNoEvent({viewUp:h.viewUp,viewPlaneNormal:h.viewPlaneNormal})}if(!a){const h={viewportId:this.id,camera:this.getCamera(),renderingEngineId:this.renderingEngineId,element:this.element};De(this.element,Se.CAMERA_RESET,h)}return!0}setSlabThickness(e,r=[]){e<.1&&(e=.1);let n=this.getActors();r&&r.length>0&&(n=n.filter(o=>r.includes(o.uid))),n.forEach(o=>{ci(o,"vtkVolume")&&(o.slabThickness=e)});const i=this.getCamera();this.updateClippingPlanesForActors(i),this.triggerCameraModifiedEventIfNecessary(i,i),this.viewportProperties.slabThickness=e}resetSlabThickness(){this.getActors().forEach(n=>{ci(n,"vtkVolume")&&(n.slabThickness=er.MINIMUM_SLAB_THICKNESS)});const r=this.getCamera();this.updateClippingPlanesForActors(r),this.triggerCameraModifiedEventIfNecessary(r,r),this.viewportProperties.slabThickness=void 0}getSliceViewInfo(){const{width:e,height:r}=this.getCanvas(),n=_s(this,[0,0]),i=_s(this,[e-1,0]),o=_s(this,[0,r-1]),a=Qt(we(),i,n),s=Qt(we(),o,n),c=Kt(we(),a,s);on(a,a),on(s,s),on(c,c);const{dimensions:l}=this.getImageData(),[f,u,d]=l,p=[[0,0,0],[f-1,0,0],[0,u-1,0],[f-1,u-1,0],[0,0,d-1],[f-1,0,d-1],[0,u-1,d-1],[f-1,u-1,d-1]].map(D=>Nte(this,D)).reduce((D,b)=>(D.minX=Math.min(D.minX,b[0]),D.minY=Math.min(D.minY,b[1]),D.maxX=Math.max(D.maxX,b[0]),D.maxY=Math.max(D.maxY,b[1]),D),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),v=_s(this,[p.minX,p.minY]),x=pw(a[0],a[1],a[2],0,s[0],s[1],s[2],0,c[0],c[1],c[2],0,v[0],v[1],v[2],1),m=_s(this,[p.maxX,p.maxY]),y=Qt(we(),m,v),w=$n(lo(),x),{viewPlaneNormal:C}=this.getCamera();if(C.filter(D=>Math.abs(D)>Lo).length>1)throw new Error("getSliceInfo is not supported for oblique views");const T=C.findIndex(D=>Math.abs(D)>1-Lo);if(T===-1)throw new Error("Unable to determine slice axis");const _=je(a,y)+1,E=je(s,y)+1;return{sliceIndex:this.getSliceIndex(),width:_,height:E,slicePlane:T,sliceToIndexMatrix:x,indexToSliceMatrix:w}}getCurrentSlicePixelData(){const{voxelManager:e}=this.getImageData();return e.getSliceData(this.getSliceViewInfo())}getViewReference(e={}){const r=super.getViewReference(e);if(!(r!=null&&r.volumeId))return;const n=_e.getVolume(r.volumeId);return r.referencedImageId=Xa(n,r.cameraFocalPoint,r.viewPlaneNormal),r}resetProperties(e){this._resetProperties(e)}_resetProperties(e){const r=e?this.getActor(e):this.getDefaultActor();if(!r)throw new Error(`No actor found for the given volumeId: ${e}`);r.slabThickness&&(r.slabThickness=er.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=_e.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(sC(r.actor,n),Xo(r)){const l=r.actor.getProperty().getRGBTransferFunction(0);c2(l,this.initialTransferFunctionNodes)}const i={...super.getVOIModifiedEventDetail(e)};this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetCameraRotation:!0}),De(this.element,Se.VOI_MODIFIED,i)}getSlicesClippingPlanes(){const e=this.getSlicePlaneCoordinates(),{viewPlaneNormal:r}=this.getCamera(),n=er.MINIMUM_SLAB_THICKNESS;return e.map(({point:i,sliceIndex:o})=>{const a=[Xr.newInstance(),Xr.newInstance()];return this.setOrientationOfClippingPlanes(a,n,r,i),{sliceIndex:o,planes:a.map(s=>({normal:s.getNormal(),origin:s.getOrigin()}))}})}}function Pte(t,e){e.classHierarchy.push("vtkAbstractImageMapper"),t.getIsOpaque=()=>!0,t.getCurrentImage=()=>null,t.getBoundsForSlice=()=>(W.vtkErrorMacro("vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED"),qs())}const Ate={slice:0,customDisplayExtent:[0,0,0,0,0,0],useCustomExtents:!1,backgroundColor:[0,0,0,1]};function kte(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ate,r),Fw.extend(t,e,r),W.setGet(t,e,["slice","useCustomExtents"]),W.setGetArray(t,e,["customDisplayExtent"],6),W.setGetArray(t,e,["backgroundColor"],4),Pte(t,e)}var Vte={extend:kte};function jM(t,e,r){const n=r.getCurrentImage(),i=n.getExtent(),o=[i[0],i[2],i[4]],{ijkMode:a}=r.getClosestIJKAxis();let s=r.isA("vtkImageArrayMapper")?r.getSubSlice():r.getSlice();a!==r.getSlicingMode()&&(s=r.getSliceAtPosition(s)),o[a]+=s;const c=[0,0,0];n.indexToWorld(o,c),o[a]+=1;const l=[0,0,0];n.indexToWorld(o,l),l[0]-=c[0],l[1]-=c[1],l[2]-=c[2],on(l,l);const f=Xr.intersectWithLine(t,e,c,l);if(f.intersection){const u=f.x,d=[0,0,0];return n.worldToIndex(u,d),{t:f.t,absoluteIJK:d}}return null}function Fte(t,e,r){const n=jM(t,e,r);if(n){const o=r.getCurrentImage().getExtent(),a=[Math.round(n.absoluteIJK[0]),Math.round(n.absoluteIJK[1]),Math.round(n.absoluteIJK[2])];return a[0]o[1]||a[1]o[3]||a[2]o[5]?null:{t:n.t,ijk:a}}return null}function Ute(t,e,r){const n=jM(t,e,r);if(n){const o=r.getCurrentImage().getExtent(),a=n.absoluteIJK,s=[Math.floor(a[0]),Math.floor(a[1]),Math.floor(a[2])];if(s[0]o[1]-1||s[1]o[3]-1||s[2](o[5]?o[5]-1:o[5]))return null;const c=[a[0]-s[0],a[1]-s[1],a[2]-s[2]];return{t:n.t,ijk:s,pCoords:c}}return null}const{staticOffsetAPI:Bte,otherStaticMethods:Gte}=i2,{SlicingMode:Pt}=a2;function Wte(t,e){e.classHierarchy.push("vtkImageMapper"),t.getSliceAtPosition=n=>{const i=t.getCurrentImage();let o;if(n.length===3)o=n;else if(Number.isFinite(n)){const f=i.getBounds();switch(e.slicingMode){case Pt.X:o=[n,(f[3]+f[2])/2,(f[5]+f[4])/2];break;case Pt.Y:o=[(f[1]+f[0])/2,n,(f[5]+f[4])/2];break;case Pt.Z:o=[(f[1]+f[0])/2,(f[3]+f[2])/2,n];break}}const a=[0,0,0];i.worldToIndex(o,a);const s=i.getExtent(),{ijkMode:c}=t.getClosestIJKAxis();let l=0;switch(c){case Pt.I:l=Do(a[0],s[0],s[1]);break;case Pt.J:l=Do(a[1],s[2],s[3]);break;case Pt.K:l=Do(a[2],s[4],s[5]);break;default:return 0}return l},t.setSliceFromCamera=n=>{const i=n.getFocalPoint();switch(e.slicingMode){case Pt.I:case Pt.J:case Pt.K:{const o=t.getSliceAtPosition(i);t.setSlice(o)}break;case Pt.X:t.setSlice(i[0]);break;case Pt.Y:t.setSlice(i[1]);break;case Pt.Z:t.setSlice(i[2]);break}},t.setXSlice=n=>{t.setSlicingMode(Pt.X),t.setSlice(n)},t.setYSlice=n=>{t.setSlicingMode(Pt.Y),t.setSlice(n)},t.setZSlice=n=>{t.setSlicingMode(Pt.Z),t.setSlice(n)},t.setISlice=n=>{t.setSlicingMode(Pt.I),t.setSlice(n)},t.setJSlice=n=>{t.setSlicingMode(Pt.J),t.setSlice(n)},t.setKSlice=n=>{t.setSlicingMode(Pt.K),t.setSlice(n)},t.getSlicingModeNormal=()=>{const n=[0,0,0],i=t.getCurrentImage().getDirection();switch(e.slicingMode){case Pt.X:n[0]=1;break;case Pt.Y:n[1]=1;break;case Pt.Z:n[2]=1;break;case Pt.I:Tp(i,[1,0,0],n);break;case Pt.J:Tp(i,[0,1,0],n);break;case Pt.K:Tp(i,[0,0,1],n);break}return n};function r(){let n;switch(e.slicingMode){case Pt.X:n=0;break;case Pt.Y:n=1;break;case Pt.Z:n=2;break;default:e.closestIJKAxis={ijkMode:e.slicingMode,flip:!1};return}const i=t.getCurrentImage().getDirection(),o=k7(i);let a=0;for(;a<3&&o[n+3*a]===0;++a);const s=o[n+3*a]<0;e.closestIJKAxis={ijkMode:a,flip:s}}t.setSlicingMode=n=>{e.slicingMode!==n&&(e.slicingMode=n,t.getCurrentImage()&&r(),t.modified())},t.getClosestIJKAxis=()=>((e.closestIJKAxis===void 0||e.closestIJKAxis.ijkMode===Pt.NONE)&&t.getCurrentImage()&&r(),e.closestIJKAxis),t.getBounds=()=>{const n=t.getCurrentImage();if(!n)return qs();if(!e.useCustomExtents)return n.getBounds();const i=e.customDisplayExtent.slice(),{ijkMode:o}=t.getClosestIJKAxis();let a=e.slice;switch(o!==e.slicingMode&&(a=t.getSliceAtPosition(e.slice)),o){case Pt.I:i[0]=a,i[1]=a;break;case Pt.J:i[2]=a,i[3]=a;break;case Pt.K:i[4]=a,i[5]=a;break}return n.extentToBounds(i)},t.getBoundsForSlice=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.slice,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const o=t.getCurrentImage();if(!o)return qs();const a=o.getSpatialExtent(),{ijkMode:s}=t.getClosestIJKAxis();let c=n;switch(s!==e.slicingMode&&(c=t.getSliceAtPosition(n)),s){case Pt.I:a[0]=c-i,a[1]=c+i;break;case Pt.J:a[2]=c-i,a[3]=c+i;break;case Pt.K:a[4]=c-i,a[5]=c+i;break}return o.extentToBounds(a)},t.intersectWithLineForPointPicking=(n,i)=>Fte(n,i,t),t.intersectWithLineForCellPicking=(n,i)=>Ute(n,i,t),t.getCurrentImage=()=>t.getInputData()}const zte={slicingMode:Pt.NONE,closestIJKAxis:{ijkMode:Pt.NONE,flip:!1},renderToRectangle:!1,sliceAtFocalPoint:!1,preferSizeOverAccuracy:!1};function HM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zte,r),Vte.extend(t,e,r),W.get(t,e,["slicingMode"]),W.setGet(t,e,["closestIJKAxis","renderToRectangle","sliceAtFocalPoint","preferSizeOverAccuracy"]),i2.implementCoincidentTopologyMethods(t,e),Wte(t,e)}const $te=W.newInstance(HM,"vtkImageMapper");var jte={newInstance:$te,extend:HM,...Bte,...Gte,...a2};const{InterpolationType:Vp}=Pq,{vtkErrorMacro:A8}=W,Fp=4;function Hte(t,e){e.classHierarchy.push("vtkImageProperty"),t.getMTime=()=>{let r=e.mtime,n;for(let i=0;in?r:n),e.componentData[i].piecewiseFunction&&(n=e.componentData[i].piecewiseFunction.getMTime(),r=r>n?r:n);return r},t.setRGBTransferFunction=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=r,o=n;return Number.isInteger(r)||(o=r,i=0),e.componentData[i].rGBTransferFunction!==o?(e.componentData[i].rGBTransferFunction=o,t.modified(),!0):!1},t.getRGBTransferFunction=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[r].rGBTransferFunction},t.setPiecewiseFunction=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=r,o=n;return Number.isInteger(r)||(o=r,i=0),e.componentData[i].piecewiseFunction!==o?(e.componentData[i].piecewiseFunction=o,t.modified(),!0):!1},t.getPiecewiseFunction=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.componentData[r].piecewiseFunction},t.setScalarOpacity=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=r,o=n;return Number.isInteger(r)||(o=r,i=0),t.setPiecewiseFunction(i,o)},t.getScalarOpacity=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return t.getPiecewiseFunction(r)},t.setComponentWeight=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(r<0||r>=Fp)return A8("Invalid index"),!1;const i=Math.min(1,Math.max(0,n));return e.componentData[r].componentWeight!==i?(e.componentData[r].componentWeight=i,t.modified(),!0):!1},t.getComponentWeight=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return r<0||r>=Fp?(A8("Invalid index"),0):e.componentData[r].componentWeight},t.setInterpolationTypeToNearest=()=>t.setInterpolationType(Vp.NEAREST),t.setInterpolationTypeToLinear=()=>t.setInterpolationType(Vp.LINEAR),t.getInterpolationTypeAsString=()=>W.enumToString(Vp,e.interpolationType)}const Kte={independentComponents:!1,interpolationType:Vp.LINEAR,colorWindow:255,colorLevel:127.5,ambient:1,diffuse:0,opacity:1,useLookupTableScalarRange:!1,useLabelOutline:!1,labelOutlineThickness:[1],labelOutlineOpacity:1};function KM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Kte,r),W.obj(t,e),!e.componentData){e.componentData=[];for(let n=0;nt,t.getImages=()=>t,t.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||t.getProperty();let r=e.property.getOpacity()>=1;return r=r&&(!e.mapper||e.mapper.getIsOpaque()),r},t.hasTranslucentPolygonalGeometry=()=>!1,t.makeProperty=Xte.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const r=e.mapper.getBounds();if(!r||r.length!==6)return r;if(r[0]>r[1])return e.mapperBounds=r.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),r;const n=i=>i[0].map((o,a)=>i.map(s=>s[a]));if(!e.mapperBounds||!n([r,e.mapperBounds]).reduce((i,o)=>i&&o[0]===o[1],!0)||t.getMTime()>e.boundsMTime.getMTime()){Yte("Recomputing bounds..."),e.mapperBounds=r.map(o=>o),t.computeMatrix();const i=new Float64Array(16);St(i,e.matrix),qt.transformBounds(r,i,e.bounds),e.boundsMTime.modified()}return e.bounds},t.getBoundsForSlice=(r,n)=>{const i=e.mapper.getBoundsForSlice(r,n);if(!qt.isValid(i))return i;t.computeMatrix();const o=new Float64Array(16);return St(o,e.matrix),qt.transformBounds(i,o)},t.getMinXBound=()=>t.getBounds()[0],t.getMaxXBound=()=>t.getBounds()[1],t.getMinYBound=()=>t.getBounds()[2],t.getMaxYBound=()=>t.getBounds()[3],t.getMinZBound=()=>t.getBounds()[4],t.getMaxZBound=()=>t.getBounds()[5],t.getMTime=()=>{let r=e.mtime;if(e.property!==null){const n=e.property.getMTime();r=n>r?n:r}return r},t.getRedrawMTime=()=>{let r=e.mtime;if(e.mapper!==null){let n=e.mapper.getMTime();r=n>r?n:r,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),n=e.mapper.getInput().getMTime(),r=n>r?n:r)}if(e.property!==null){let n=e.property.getMTime();r=n>r?n:r,e.property.getRGBTransferFunction()!==null&&(n=e.property.getRGBTransferFunction().getMTime(),r=n>r?n:r)}return r},t.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1}const Zte={mapper:null,property:null,bounds:[...qt.INIT_BOUNDS]};function qM(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zte,r),Kw.extend(t,e,r),e.boundsMTime={},W.obj(e.boundsMTime),W.set(t,e,["property"]),W.setGet(t,e,["mapper"]),W.getArray(t,e,["bounds"],6),Jte(t,e)}const Qte=W.newInstance(qM,"vtkImageSlice");var ene={newInstance:Qte,extend:qM};function XM(t){const e=Ys.newInstance();let r=0,n=1024;return t.lower!==void 0&&t.upper!==void 0&&(r=t.lower,n=t.upper),e.addRGBPoint(r,0,0,0),e.addRGBPoint(n,1,1,1),e}function u2(t,e){const r=e.voxelManager.getScalarData();if(!t.getPointData)return;const n=t.getPointData().getScalars().getData();if(e.color&&e.rgba){const i=new Uint8Array(e.columns*e.rows*3);for(let o=0;oi,n.set(i)}else n.set(r);t.modified()}function Tt(){return window.performance?performance.now():Date.now()}function tne(t,e){return function(r){const n=((r-(e-.5))/(t-1)+.5)*255;return Math.min(Math.max(n,0),255)}}function nne(t){const r=Math.max(...t.lut).toString(2).length-8,n=t.lut[0]>>r,i=t.lut[t.lut.length-1]>>r,o=t.firstValueMapped+t.lut.length-1;return function(a){return a=o?i:t.lut[a-t.firstValueMapped]>>r}}function YM(t,e,r){return r?nne(r):tne(t,e)}function rne(t,e,r,n,i){const o=t.maxPixelValue,a=t.minPixelValue,s=Math.min(a,0);if(t.cachedLut===void 0){const f=o-s+1;t.cachedLut={},t.cachedLut.lutArray=new Uint8ClampedArray(f)}const c=t.cachedLut.lutArray,l=YM(Array.isArray(e)?e[0]:e,Array.isArray(r)?r[0]:r,i);if(n)for(let f=a;f<=o;f++)c[f+-s]=255-l(f);else for(let f=a;f<=o;f++)c[f+-s]=l(f);return c}function ine(t,e,r){let n=Tt();const i=t.voxelManager.getScalarData();t.stats.lastGetPixelDataTime=Tt()-n;const o=t.minPixelValue;let a=0,s=0;const c=i.length;if(n=Tt(),o<0)for(;s0||t.voi.windowWidth!==void 0&&t.voi.windowCenter!==void 0}function k8(t,e){return!t&&!e?!0:!t||!e?!1:t.id===e.id}function gne(t,e){return r=>r*t+e}function pne(t){const e=t.lut[0],r=t.lut[t.lut.length-1],n=t.firstValueMapped+t.lut.length;return i=>i=n?r:t.lut[i]}function mne(t,e,r){return r?pne(r):gne(t,e)}function vne(t,e,r,n,i,o){const a=t.maxPixelValue,s=t.minPixelValue,c=Math.min(s,0);if(t.cachedLut===void 0){const d=a-c+1;t.cachedLut={},t.cachedLut.lutArray=new Uint8ClampedArray(d)}const l=t.cachedLut.lutArray,f=mne(t.slope,t.intercept,i),u=YM(e,r,o);if(t.isPreScaled)if(n)for(let d=s;d<=a;d++)l[d+-c]=255-u(d);else for(let d=s;d<=a;d++)l[d+-c]=u(d);else if(n)for(let d=s;d<=a;d++)l[d+-c]=255-u(f(d));else for(let d=s;d<=a;d++)l[d+-c]=u(f(d));return l}function JM(t,e,r){return t.cachedLut!==void 0&&t.cachedLut.windowCenter===e.voi.windowCenter&&t.cachedLut.windowWidth===e.voi.windowWidth&&k8(t.cachedLut.modalityLUT,e.modalityLUT)&&k8(t.cachedLut.voiLUT,e.voiLUT)&&t.cachedLut.invert===e.invert&&!r||(dne(e,t),vne(t,e.voi.windowWidth,e.voi.windowCenter,e.invert,e.modalityLUT,e.voiLUT),t.cachedLut.windowWidth=e.voi.windowWidth,t.cachedLut.windowCenter=e.voi.windowCenter,t.cachedLut.invert=e.invert,t.cachedLut.voiLUT=e.voiLUT,t.cachedLut.modalityLUT=e.modalityLUT),t.cachedLut.lutArray}function yne(t,e,r,n=!0){const i=t.renderingTools.lastRenderedIsColor;(!t.renderingTools.renderCanvas||i)&&(t.renderingTools.renderCanvas=document.createElement("canvas"),Y1(t,e));const o=t.renderingTools.renderCanvas;if(!lC(t,e)&&!r)return o;(o.width!==e.width||o.height!==e.height)&&Y1(t,e),e.stats=e.stats||{};const a=t.renderingTools.renderCanvasData,s=t.renderingTools.renderCanvasContext;let c=Tt();e.stats.lastLutGenerateTime=Tt()-c;const{viewport:l}=t;if(l.modality==="PT"&&e.isPreScaled){const{windowWidth:f,windowCenter:u}=l.voi,d=u-f/2,p=255/(u+f/2-d);let v;l.invert?v=x=>255-(x-d)*p:v=x=>(x-d)*p,une(e,v,a.data)}else{const f=JM(e,l,r);n?lne(e,f,a.data):fne(e,f,a.data)}return c=Tt(),s.putImageData(a,0,0),e.stats.lastPutImageDataTime=Tt()-c,o}function xne(t,e){if(t===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const r=t.image;if(r===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const n=t.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,t.canvas.width,t.canvas.height),n.imageSmoothingEnabled=!t.viewport.pixelReplication,cC(t,n);const i=yne(t,r,e),o=t.viewport.displayedArea.tlhc.x-1,a=t.viewport.displayedArea.tlhc.y-1,s=t.viewport.displayedArea.brhc.x-o,c=t.viewport.displayedArea.brhc.y-a;n.drawImage(i,o,a,s,c,0,0,s,c),t.renderingTools=uC(t)}const a3=0,s3=1,wne=2;function Cne(t,e,r){if(t>1)throw new Error("HSVToRGB expects hue < 1");const n=[];if(e===0)return n[0]=r,n[1]=r,n[2]=r,n;const i=Math.floor(t*6),o=6*t-i,a=r*(1-e),s=r*(1-e*o),c=r*(1-e*(1-o));switch(i){case 0:case 6:n[0]=r,n[1]=c,n[2]=a;break;case 1:n[0]=s,n[1]=r,n[2]=a;break;case 2:n[0]=a,n[1]=r,n[2]=c;break;case 3:n[0]=a,n[1]=s,n[2]=r;break;case 4:n[0]=c,n[1]=a,n[2]=r;break;case 5:n[0]=r,n[1]=a,n[2]=s;break}return n}function Sne(t,e){let r;return te.Range[1]?r=e.MaxIndex+s3+1.5:r=(t+e.Shift)*e.Scale,Math.floor(r)}class fC{constructor(){this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}setNumberOfTableValues(e){this.NumberOfColors=e}setRamp(e){this.Ramp=e}setTableRange(e,r){this.TableRange[0]=e,this.TableRange[1]=r}setHueRange(e,r){this.HueRange[0]=e,this.HueRange[1]=r}setSaturationRange(e,r){this.SaturationRange[0]=e,this.SaturationRange[1]=r}setValueRange(e,r){this.ValueRange[0]=e,this.ValueRange[1]=r}setRange(e,r){this.InputRange[0]=e,this.InputRange[1]=r}setAlphaRange(e,r){this.AlphaRange[0]=e,this.AlphaRange[1]=r}getColor(e){return this.mapValue(e)}build(e){if(this.Table.length>1&&!e)return;this.Table=[];const r=this.NumberOfColors-1;let n,i,o,a;r?(n=(this.HueRange[1]-this.HueRange[0])/r,i=(this.SaturationRange[1]-this.SaturationRange[0])/r,o=(this.ValueRange[1]-this.ValueRange[0])/r,a=(this.AlphaRange[1]-this.AlphaRange[0])/r):n=i=o=a=0;for(let s=0;s<=r;s++){const c=this.HueRange[0]+s*n,l=this.SaturationRange[0]+s*i,f=this.ValueRange[0]+s*o,u=this.AlphaRange[0]+s*a,d=Cne(c,l,f),h=[0,0,0,0];switch(this.Ramp){case"scurve":h[0]=Math.floor(127.5*(1+Math.cos((1-d[0])*Math.PI))),h[1]=Math.floor(127.5*(1+Math.cos((1-d[1])*Math.PI))),h[2]=Math.floor(127.5*(1+Math.cos((1-d[2])*Math.PI))),h[3]=Math.floor(u*255);break;case"linear":h[0]=Math.floor(d[0]*255+.5),h[1]=Math.floor(d[1]*255+.5),h[2]=Math.floor(d[2]*255+.5),h[3]=Math.floor(u*255+.5);break;case"sqrt":h[0]=Math.floor(Math.sqrt(d[0])*255+.5),h[1]=Math.floor(Math.sqrt(d[1])*255+.5),h[2]=Math.floor(Math.sqrt(d[2])*255+.5),h[3]=Math.floor(Math.sqrt(u)*255+.5);break;default:throw new Error(`Invalid Ramp value (${this.Ramp})`)}this.Table.push(h)}this.buildSpecialColors()}buildSpecialColors(){const e=this.NumberOfColors,r=e+a3,n=e+s3,i=e+wne;this.UseBelowRangeColor||e===0?this.Table[r]=this.BelowRangeColor:this.Table[r]=this.Table[0],this.UseAboveRangeColor||e===0?this.Table[n]=this.AboveRangeColor:this.Table[n]=this.Table[e-1],this.Table[i]=this.NaNColor}mapValue(e){const r=this.getIndex(e);if(r<0)return this.NaNColor;if(r===0){if(this.UseBelowRangeColor&&ethis.TableRange[1])return this.AboveRangeColor;return this.Table[r]}getIndex(e){const r={Range:[],MaxIndex:this.NumberOfColors-1,Shift:-this.TableRange[0],Scale:1};if(this.TableRange[1]<=this.TableRange[0]?r.Scale=Number.MAX_VALUE:r.Scale=r.MaxIndex/(this.TableRange[1]-this.TableRange[0]),r.Range[0]=this.TableRange[0],r.Range[1]=this.TableRange[1],isNaN(e))return-1;let n=Sne(e,r);return n===this.NumberOfColors+a3?n=0:n===this.NumberOfColors+s3&&(n=this.NumberOfColors-1),n}setTableValue(e,r,n,i,o){let a;if(typeof r=="number"&&n!==void 0&&i!==void 0&&o!==void 0)a=[r,n,i,o];else if(Array.isArray(r))a=r;else throw new Error("Invalid arguments for setTableValue");if(e<0)throw new Error(`Can't set the table value for negative index (${e})`);if(e>=this.NumberOfColors)throw new Error(`Index ${e} is greater than the number of colors ${this.NumberOfColors}`);this.Table[e]=a,(e===0||e===this.NumberOfColors-1)&&this.buildSpecialColors()}}const V8=[0,0,0,0];function Tne(t,e,r){r=r===null?100:r;const n=(e-t)/(r-1),i=[];for(;r-- >0;)i.push(t),t+=n;return i[i.length-1]=e,i}function _ne(t,e){let r=0,n=t.length-1;for(;r<=n;){const i=r+Math.floor((n-r)/2),o=t[i];if(o===e)return i;e=0&&ic3(Math.floor(255-(m-h)*v),0,255):x=m=>c3(Math.floor((m-h)*v),0,255),One(e,x,f,s.data)}else{const u=JM(e,t.viewport,r);e.stats=e.stats||{},e.stats.lastLutGenerateTime=Tt()-a,Ine(e,u,f,s.data)}return a=Tt(),c.putImageData(s,0,0),e.stats.lastPutImageDataTime=Tt()-a,n}function Rne(t,e){if(t===void 0)throw new Error("drawImage: enabledElement parameter must not be undefined");const r=t.image;if(r===void 0)throw new Error("drawImage: image must be loaded before it can be drawn");const n=t.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,t.canvas.width,t.canvas.height),n.imageSmoothingEnabled=!t.viewport.pixelReplication,cC(t,n);const i=Mne(t,r,e),o=t.viewport.displayedArea.tlhc.x-1,a=t.viewport.displayedArea.tlhc.y-1,s=t.viewport.displayedArea.brhc.x-o,c=t.viewport.displayedArea.brhc.y-a;n.drawImage(i,o,a,s,c,0,0,s,c),t.renderingTools=uC(t)}function ZM(t,e){const r=t.image;if(!t.canvas||!t.image)return;const n=Tt();if(r.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},r){let o=r.render;o||(t.viewport.colormap?o=Rne:r.color?o=cne:o=xne),o(t,e)}const i=Tt()-n;r.stats.lastRenderTime=i,t.invalid=!1,t.needsRedraw=!1}function QM(t){return kd(t)}function bg(t,e){const r=QM(t);return r.invert(),r.transformPoint(e)}const Lne={viewport:{}};function Nne(){return{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}}function Pne(){const t=Nne();return Object.assign({},{scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:t},Lne.viewport)}function Xf(t,e){if(t==null)throw new Error(e)}function Ane(t){return!(t==null||t===0||t===180)}function eR(t,e=null){return Xf(t,"getImageSize: parameter image must not be undefined"),Xf(t.width,"getImageSize: parameter image must have width"),Xf(t.height,"getImageSize: parameter image must have height"),Ane(e)?{height:t.width,width:t.height}:{width:t.width,height:t.height}}function dC(t,e,r=null){Xf(t,"getImageScale: parameter canvas must not be undefined"),Xf(e,"getImageScale: parameter image must not be undefined");const n=eR(e,r),i=e.rowPixelSpacing||1,o=e.columnPixelSpacing||1;let a=1,s=1;i{this._configureRenderingPipeline()},this.resize=()=>{this.useCPURendering&&this._resizeCPU()},this._resizeCPU=()=>{this._cpuFallbackEnabledElement.viewport&&Bne(this._cpuFallbackEnabledElement)},this.getFrameOfReferenceUID=r=>{var n;return(n=this.getImagePlaneReferenceData(r))==null?void 0:n.FrameOfReferenceUID},this.getCornerstoneImage=()=>this.csImage,this.createActorMapper=r=>{const n=jte.newInstance();n.setInputData(r);const i=ene.newInstance();i.setMapper(n);const{preferSizeOverAccuracy:o}=Jw().rendering;return o&&n.setPreferSizeOverAccuracy(!0),r.getPointData().getScalars().getNumberOfComponents()>1&&i.getProperty().setIndependentComponents(!1),i},this.getNumberOfSlices=()=>this.imageIds.length,this.getDefaultProperties=r=>{let n;return r!==void 0&&(n=this.perImageIdDefaultProperties.get(r)),n!==void 0?n:{...this.globalDefaultProperties}},this.getProperties=()=>{const{colormap:r,voiRange:n,VOILUTFunction:i,interpolationType:o,invert:a,voiUpdatedWithSetProperties:s}=this;return{colormap:r,voiRange:n,VOILUTFunction:i,interpolationType:o,invert:a,isComputedVOI:!s}},this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,suppressEvents:!0}),this.getRotationCPU=()=>{const{viewport:r}=this._cpuFallbackEnabledElement;return r.rotation},this.getRotationGPU=()=>{const{viewUp:r,viewPlaneNormal:n,flipVertical:i}=this.getCameraNoRotation(),o=i?qc(we(),this.initialViewUp):this.initialViewUp,a=Tw(o,r)*180/Math.PI,s=Kt(we(),o,r);return je(s,n)>=0?a:(360-a)%360},this.setRotation=r=>{const n=this.getCamera();if(this.useCPURendering?this.setRotationCPU(r):this.setRotationGPU(r),this._suppressCameraModifiedEvents)return;const i=this.getCamera(),o={previousCamera:n,camera:i,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.CAMERA_MODIFIED,o)},this.renderImageObject=r=>{this._setCSImage(r),(this.useCPURendering?this._updateToDisplayImageCPU:this._updateActorToDisplayImageId).call(this,r)},this._setCSImage=r=>{var n;r.isPreScaled=(n=r.preScale)==null?void 0:n.scaled,this.csImage=r},this.canvasToWorldCPU=(r,n=[0,0,0])=>{if(!this._cpuFallbackEnabledElement.image)return;const[i,o]=bg(this._cpuFallbackEnabledElement,r),{origin:a,spacing:s,direction:c}=this.getImageData(),l=c.slice(0,3),f=c.slice(3,6);return Vt(n,a,l,i*s[0]),Vt(n,n,f,o*s[1]),n},this.worldToCanvasCPU=r=>{const{spacing:n,direction:i,origin:o}=this.getImageData(),a=i.slice(0,3),s=i.slice(3,6),c=kt(we(),r,o),l=[je(c,a)/n[0],je(c,s)/n[1]];return F8(this._cpuFallbackEnabledElement,l)},this.canvasToWorldGPU=r=>{const n=this.getRenderer(),i=this.getVtkActiveCamera(),o=i.getClippingRange(),a=i.getDistance();i.setClippingRange(a,a+.1);const c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),f=window.devicePixelRatio||1,u=[r[0]*f,r[1]*f],d=[u[0]+this.sx,u[1]+this.sy];d[1]=l[1]-d[1];const h=c.displayToWorld(d[0],d[1],0,n);return i.setClippingRange(o[0],o[1]),[h[0],h[1],h[2]]},this.worldToCanvasGPU=r=>{const n=this.getRenderer(),i=this.getVtkActiveCamera(),o=i.getClippingRange(),a=i.getDistance();i.setClippingRange(a,a+.1);const c=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),l=c.getSize(),f=c.worldToDisplay(...r,n);f[1]=l[1]-f[1];const u=[f[0]-this.sx,f[1]-this.sy];i.setClippingRange(o[0],o[1]);const d=window.devicePixelRatio||1;return[u[0]/d,u[1]/d]},this.getCurrentImageIdIndex=()=>this.currentImageIdIndex,this.getSliceIndex=()=>this.currentImageIdIndex,this.getTargetImageIdIndex=()=>this.targetImageIdIndex,this.getImageIds=()=>this.imageIds,this.getCurrentImageId=()=>this.imageIds[this.currentImageIdIndex],this.hasImageId=r=>this.imageIds.includes(r),this.hasImageURI=r=>{const n=this.imageIds;for(let i=0;i{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?(ZM(this._cpuFallbackEnabledElement,this.cpuRenderingInvalidated),this.cpuRenderingInvalidated=!1):this.fillWithBackgroundColor(),{canvas:this.canvas,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,viewportStatus:this.viewportStatus}},this.renderingPipelineFunctions={getImageData:{cpu:this.getImageDataCPU,gpu:this.getImageDataGPU},setColormap:{cpu:this.setColormapCPU,gpu:this.setColormapGPU},getCamera:{cpu:this.getCameraCPU,gpu:super.getCamera},setCamera:{cpu:this.setCameraCPU,gpu:super.setCamera},getPan:{cpu:this.getPanCPU,gpu:super.getPan},setPan:{cpu:this.setPanCPU,gpu:super.setPan},getZoom:{cpu:this.getZoomCPU,gpu:super.getZoom},setZoom:{cpu:this.setZoomCPU,gpu:super.setZoom},setVOI:{cpu:this.setVOICPU,gpu:this.setVOIGPU},getRotation:{cpu:this.getRotationCPU,gpu:this.getRotationGPU},setInterpolationType:{cpu:this.setInterpolationTypeCPU,gpu:this.setInterpolationTypeGPU},setInvertColor:{cpu:this.setInvertColorCPU,gpu:this.setInvertColorGPU},resetCamera:{cpu:(r={})=>{const{resetPan:n=!0,resetZoom:i=!0}=r;return this.resetCameraCPU({resetPan:n,resetZoom:i}),!0},gpu:(r={})=>{const{resetPan:n=!0,resetZoom:i=!0}=r;return this.resetCameraGPU({resetPan:n,resetZoom:i}),!0}},canvasToWorld:{cpu:this.canvasToWorldCPU,gpu:this.canvasToWorldGPU},worldToCanvas:{cpu:this.worldToCanvasCPU,gpu:this.worldToCanvasGPU},getRenderer:{cpu:()=>this.getCPUFallbackError("getRenderer"),gpu:super.getRenderer},getDefaultActor:{cpu:()=>this.getCPUFallbackError("getDefaultActor"),gpu:super.getDefaultActor},getActors:{cpu:()=>this.getCPUFallbackError("getActors"),gpu:super.getActors},getActor:{cpu:()=>this.getCPUFallbackError("getActor"),gpu:super.getActor},setActors:{cpu:()=>this.getCPUFallbackError("setActors"),gpu:super.setActors},addActors:{cpu:()=>this.getCPUFallbackError("addActors"),gpu:super.addActors},addActor:{cpu:()=>this.getCPUFallbackError("addActor"),gpu:super.addActor},removeAllActors:{cpu:()=>this.getCPUFallbackError("removeAllActors"),gpu:super.removeAllActors},unsetColormap:{cpu:this.unsetColormapCPU,gpu:this.unsetColormapGPU}},this.scaling={},this.modality=null,this.useCPURendering=Kf(),this._configureRenderingPipeline(),this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport(),this.imageIds=[],this.currentImageIdIndex=0,this.targetImageIdIndex=0,this.resetCamera(),this.initializeElementDisabledHandler()}setUseCPURendering(e){this.useCPURendering=e,this._configureRenderingPipeline(e)}static get useCustomRenderingPipeline(){return Kf()}_configureRenderingPipeline(e){this.useCPURendering=e??Kf();for(const r in this.renderingPipelineFunctions)if(Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions,r)){const n=this.renderingPipelineFunctions[r];this[r]=this.useCPURendering?n.cpu:n.gpu}this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}_resetCPUFallbackElement(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new D0,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),r=$w.newInstance();e.setActiveCamera(r);const n=[0,0,-1];this.initialViewUp=[0,-1,0],r.setDirectionOfProjection(-n[0],-n[1],-n[2]),r.setViewUp(...this.initialViewUp),r.setParallelProjection(!0),r.setThicknessFromFocalPoint(.1),r.setFreezeFocalPoint(!0)}initializeElementDisabledHandler(){Ce.addEventListener(Se.ELEMENT_DISABLED,function e(){clearTimeout(this.debouncedTimeout),Ce.removeEventListener(Se.ELEMENT_DISABLED,e)})}getImageDataGPU(){const e=this.getDefaultActor();if(!e||!Xo(e))return;const{actor:r}=e,n=r.getMapper().getInputData(),i=this.csImage;return{dimensions:n.getDimensions(),spacing:n.getSpacing(),origin:n.getOrigin(),direction:n.getDirection(),get scalarData(){return i==null?void 0:i.voxelManager.getScalarData()},imageData:r.getMapper().getInputData(),metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,hasPixelSpacing:this.hasPixelSpacing,calibration:{...i==null?void 0:i.calibration,...this.calibration},preScale:{...i==null?void 0:i.preScale},voxelManager:i==null?void 0:i.voxelManager}}getImageDataCPU(){const{metadata:e}=this._cpuFallbackEnabledElement,r=e.spacing,n=this.csImage;return{dimensions:e.dimensions,spacing:r,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.getFrameOfReferenceUID()},scaling:this.scaling,imageData:{getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getScalarData:()=>this.cpuImagePixelData,getSpacing:()=>r,worldToIndex:i=>{const o=this.worldToCanvasCPU(i),a=bg(this._cpuFallbackEnabledElement,o);return[a[0],a[1],0]},indexToWorld:(i,o)=>{const a=F8(this._cpuFallbackEnabledElement,[i[0],i[1]]);return this.canvasToWorldCPU(a,o)}},scalarData:this.cpuImagePixelData,hasPixelSpacing:this.hasPixelSpacing,calibration:{...n==null?void 0:n.calibration,...this.calibration},preScale:{...n==null?void 0:n.preScale},voxelManager:n==null?void 0:n.voxelManager}}buildMetadata(e){const r=e.imageId,{pixelRepresentation:n,bitsAllocated:i,bitsStored:o,highBit:a,photometricInterpretation:s,samplesPerPixel:c}=Pe("imagePixelModule",r),{windowWidth:l,windowCenter:f,voiLUTFunction:u}=e,{modality:d}=Pe("generalSeriesModule",r),h=Pe("scalingModule",r),g=Pe(si.CALIBRATION,r);d==="PT"&&h&&this._addScalingToViewport(h),this.modality=d;const p=this._getValidVOILUTFunction(u);this.VOILUTFunction=p,this.calibration=g;let v=this._getImagePlaneModule(r);return this.useCPURendering||(v=this.calibrateIfNecessary(r,v)),{imagePlaneModule:v,imagePixelModule:{bitsAllocated:i,bitsStored:o,samplesPerPixel:c,highBit:a,photometricInterpretation:s,pixelRepresentation:n,windowWidth:l,windowCenter:f,modality:d,voiLUTFunction:p}}}calibrateIfNecessary(e,r){const n=Pe("calibratedPixelSpacing",e),i=this.calibration!==n,{scale:o}=n||{};return this.hasPixelSpacing=o>0||r.rowPixelSpacing>0,r.calibration=n,i&&(this.calibration=n,this._publishCalibratedEvent=!0,this._calibrationEvent={scale:o,calibration:n}),r}setDefaultProperties(e,r){r==null?this.globalDefaultProperties=e:(this.perImageIdDefaultProperties.set(r,e),this.getCurrentImageId()===r&&this.setProperties(e))}clearDefaultProperties(e){e==null?(this.globalDefaultProperties={},this.resetProperties()):(this.perImageIdDefaultProperties.delete(e),this.resetToDefaultProperties())}setProperties({colormap:e,voiRange:r,VOILUTFunction:n,invert:i,interpolationType:o}={},a=!1){this.viewportStatus=this.csImage?oi.PRE_RENDER:oi.LOADING,this.globalDefaultProperties={colormap:this.globalDefaultProperties.colormap??e,voiRange:this.globalDefaultProperties.voiRange??r,VOILUTFunction:this.globalDefaultProperties.VOILUTFunction??n,invert:this.globalDefaultProperties.invert??i,interpolationType:this.globalDefaultProperties.interpolationType??o},typeof e<"u"&&this.setColormap(e),typeof r<"u"&&this.setVOI(r,{suppressEvents:a,voiUpdatedWithSetProperties:!0}),typeof n<"u"&&this.setVOILUTFunction(n,a),typeof i<"u"&&this.setInvertColor(i),typeof o<"u"&&this.setInterpolationType(o)}resetProperties(){this.cpuRenderingInvalidated=!0,this.voiUpdatedWithSetProperties=!1,this.viewportStatus=oi.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={}),this._resetProperties(),this.render()}_resetProperties(){let e;this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage(),this.setVOI(e),this.setInvertColor(this.initialInvert),this.setInterpolationType(La.LINEAR);const r=this.getTransferFunction();c2(r,this.initialTransferFunctionNodes);const i=$1(r).reduce((s,c)=>(s.push(c[0],c[1],c[2],c[3]),s),[]),o=this.getDefaultActor(),a=Qw(i,o.actor);this.setColormap(a)}resetToDefaultProperties(){var i;this.cpuRenderingInvalidated=!0,this.viewportStatus=oi.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={});const e=this.getCurrentImageId(),r=this.perImageIdDefaultProperties.get(e)||this.globalDefaultProperties;(i=r.colormap)!=null&&i.name&&this.setColormap(r.colormap);let n;r.voiRange==null?n=this._getVOIRangeForCurrentImage():n=r.voiRange,this.setVOI(n),this.setInterpolationType(La.LINEAR),this.setInvertColor(!1),this.render()}_getVOIFromCache(){let e;return this.voiUpdatedWithSetProperties?e=this.voiRange:this._isCurrentImagePTPrescaled()?e=this._getDefaultPTPrescaledVOIRange():e=this._getVOIRangeForCurrentImage()??this.voiRange,e}_setPropertiesFromCache(){const e=this._getVOIFromCache(),{interpolationType:r,invert:n}=this;this.setVOI(e),this.setInterpolationType(r),this.setInvertColor(n)}getCameraCPU(){const{metadata:e,viewport:r}=this._cpuFallbackEnabledElement,{direction:n}=e,i=n.slice(6,9).map(u=>-u);let o=n.slice(3,6).map(u=>-u);if(r.rotation){const u=ww(lo(),r.rotation*Math.PI/180,i);o=et(we(),o,u)}const a=[this.element.clientWidth/2,this.element.clientHeight/2],s=this.canvasToWorld(a),c=this.canvasToWorld([0,0]),l=this.canvasToWorld([0,this.element.clientHeight]),f=Cr(c,l)/2;return{parallelProjection:!0,focalPoint:s,position:[0,0,0],parallelScale:f,scale:r.scale,viewPlaneNormal:[i[0],i[1],i[2]],viewUp:[o[0],o[1],o[2]],flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}setCameraCPU(e){const{viewport:r,image:n}=this._cpuFallbackEnabledElement,i=this.getCameraCPU(),{focalPoint:o,parallelScale:a,scale:s,flipHorizontal:c,flipVertical:l}=e,{clientHeight:f}=this.element;if(o){const d=this.worldToCanvasCPU(o),h=bg(this._cpuFallbackEnabledElement,d),g=this.worldToCanvasCPU(i.focalPoint),p=bg(this._cpuFallbackEnabledElement,g),v=ot();kn(v,VT(h[0],h[1]),VT(p[0],p[1]));const x=Gne({x:v[0],y:v[1]},r);r.translation.x-=x.x,r.translation.y-=x.y}if(a){const{rowPixelSpacing:d}=n,h=f*d*.5/a;r.scale=h,r.parallelScale=a}if(s){const{rowPixelSpacing:d}=n;r.scale=s,r.parallelScale=f*d*.5/s}(c!==void 0||l!==void 0)&&this.setFlipCPU({flipHorizontal:c,flipVertical:l}),this._cpuFallbackEnabledElement.transform=kd(this._cpuFallbackEnabledElement);const u={previousCamera:i,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.CAMERA_MODIFIED,u)}getPanCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return[e.translation.x,e.translation.y]}setPanCPU(e){const r=this.getCameraCPU();this.setCameraCPU({...r,focalPoint:[...e.map(n=>-n),0]})}getZoomCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return e.scale}setZoomCPU(e){const r=this.getCameraCPU();this.setCameraCPU({...r,scale:e})}setFlipCPU({flipHorizontal:e,flipVertical:r}){const{viewport:n}=this._cpuFallbackEnabledElement;e!==void 0&&(n.hflip=e,this.flipHorizontal=n.hflip),r!==void 0&&(n.vflip=r,this.flipVertical=n.vflip)}setVOILUTFunction(e,r){if(this.useCPURendering)throw new Error("VOI LUT function is not supported in CPU rendering");const n=this._getValidVOILUTFunction(e);let i=!1;this.VOILUTFunction!==n&&(i=!0),this.VOILUTFunction=n;const{voiRange:o}=this.getProperties();this.setVOI(o,{suppressEvents:r,forceRecreateLUTFunction:i})}setRotationCPU(e){const{viewport:r}=this._cpuFallbackEnabledElement;r.rotation=e}setRotationGPU(e){const r=this.getPan(this.fitToCanvasCamera),n=this.getPan(),i=Oo([0,0],r,n);this.setPan(i,!1);const{flipVertical:o}=this.getCamera(),a=o?qc(we(),this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:a}),this.getVtkActiveCamera().roll(-e);const s=this.getPan(),c=this.getPan(this.fitToCanvasCamera),l=Oo([0,0],s,c),f=Lr([0,0],r,l);this.setPan(f,!1)}setInterpolationTypeGPU(e){const r=this.getDefaultActor();if(!r||!Xo(r))return;const{actor:n}=r;n.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:r}=this._cpuFallbackEnabledElement;r.pixelReplication=e!==La.LINEAR,this.interpolationType=e}setInvertColorCPU(e){const{viewport:r}=this._cpuFallbackEnabledElement;r&&(r.invert=e,this.invert=e)}setInvertColorGPU(e){const r=this.getDefaultActor();if(r&&Xo(r)){if(ci(r,"vtkVolume")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&qf(i),this.invert=e}else if(ci(r,"vtkImageSlice")){const i=r.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&qf(i),this.invert=e}}}setVOICPU(e,r={}){const{suppressEvents:n=!1}=r,{viewport:i,image:o}=this._cpuFallbackEnabledElement;if(!i||!o)return;if(typeof e>"u"){const{windowWidth:s,windowCenter:c}=o,l=Array.isArray(s)?s[0]:s,f=Array.isArray(c)?c[0]:c;i.voi={windowWidth:l,windowCenter:f};const{lower:u,upper:d}=Gs(l,f);e={lower:u,upper:d}}else{const{lower:s,upper:c}=e,{windowCenter:l,windowWidth:f}=T0(s,c);i.voi||(i.voi={windowWidth:0,windowCenter:0}),i.voi.windowWidth=f,i.voi.windowCenter=l}this.voiRange=e;const a={viewportId:this.id,range:e};n||De(this.element,Se.VOI_MODIFIED,a)}getTransferFunction(){const e=this.getDefaultActor();return!e||!Xo(e)?void 0:e.actor.getProperty().getRGBTransferFunction(0)}setVOIGPU(e,r={}){const{suppressEvents:n=!1,forceRecreateLUTFunction:i=!1,voiUpdatedWithSetProperties:o=!1}=r;if(e&&this.voiRange&&this.voiRange.lower===e.lower&&this.voiRange.upper===e.upper&&!i&&!this.stackInvalidated)return;const a=this.getDefaultActor();if(!a||!Xo(a))return;const s=a.actor;let c=e;if(typeof c>"u"){const h=s.getMapper().getInputData().getPointData().getScalars().getRange();c={lower:h[0],upper:h[1]}}s.getProperty().setUseLookupTableScalarRange(!0);let l=s.getProperty().getRGBTransferFunction(0);const f=this.VOILUTFunction===Va.SAMPLED_SIGMOID;if((f||!l||i)&&(l=(f?eC:XM)(c),this.invert&&qf(l),s.getProperty().setRGBTransferFunction(0,l),this.initialTransferFunctionNodes=$1(l)),f||l.setRange(c.lower,c.upper),this.voiRange=c,this.voiUpdatedWithSetProperties||(this.voiUpdatedWithSetProperties=o),n)return;const u={viewportId:this.id,range:c,VOILUTFunction:this.VOILUTFunction};De(this.element,Se.VOI_MODIFIED,u)}_addScalingToViewport(e){if(this.scaling.PT)return;const{suvbw:r,suvlbm:n,suvbsa:i}=e,o={};n&&(o.suvbwToSuvlbm=n/r),i&&(o.suvbwToSuvbsa=i/r),this.scaling.PT=o}_getNumCompsFromPhotometricInterpretation(e){let r=1;return(e==="RGB"||e.includes("YBR")||e==="PALETTE COLOR")&&(r=3),r}getImageDataMetadata(e){const{imagePlaneModule:r,imagePixelModule:n}=this.buildMetadata(e);let i,o;i=r.rowCosines,o=r.columnCosines,(i==null||o==null)&&(i=[1,0,0],o=[0,1,0]);const a=Ye(i[0],i[1],i[2]),s=Ye(o[0],o[1],o[2]),c=we();Kt(c,a,s);let l=r.imagePositionPatient;l==null&&(l=[0,0,0]);const f=r.columnPixelSpacing||e.columnPixelSpacing,u=r.rowPixelSpacing||e.rowPixelSpacing,d=e.columns,h=e.rows,g=zne,p=1,v=e.numberOfComponents||this._getNumCompsFromPhotometricInterpretation(n.photometricInterpretation);return{bitsAllocated:n.bitsAllocated,numberOfComponents:v,origin:l,direction:[...a,...s,...c],dimensions:[d,h,p],spacing:[f,u,g],numVoxels:d*h*p,imagePlaneModule:r,imagePixelModule:n}}matchImagesForOverlay(e,r){return(i=>{const o=Pe(si.IMAGE_PLANE,r),a=Pe(si.IMAGE_PLANE,i),s=o.imageOrientationPatient,c=a.imageOrientationPatient;if(s&&c){if(pt(o.imageOrientationPatient,a.imageOrientationPatient)){const f=o.imagePositionPatient,u=a.imagePositionPatient;if(f&&u&&pt(f,u)){const h=o.rows,g=o.columns,p=a.rows,v=a.columns;if(h===p&&g===v)return i}}}else{const l=o.rows,f=o.columns,u=a.rows,d=a.columns;if(l===u&&f===d)return i}})(e)}getImagePlaneReferenceData(e=this.getCurrentImageIdIndex()){const r=this.imageIds[e];if(!r)return;const n=Pe(si.IMAGE_PLANE,r);if(!n)return;const{imagePositionPatient:i,frameOfReferenceUID:o}=n;let{rowCosines:a,columnCosines:s}=n;a||(a=[1,0,0]),s||(s=[0,1,0]);const c=Kt([0,0,0],s,a);return{FrameOfReferenceUID:o,viewPlaneNormal:c,cameraFocalPoint:i,referencedImageId:r,sliceIndex:e}}_getCameraOrientation(e){const r=e.slice(6,9).map(i=>-i),n=e.slice(3,6).map(i=>-i);return{viewPlaneNormal:[r[0],r[1],r[2]],viewUp:[n[0],n[1],n[2]]}}createVTKImageData({origin:e,direction:r,dimensions:n,spacing:i,numberOfComponents:o,pixelArray:a}){const s=new a.constructor(a.length),c=tt.newInstance({name:"Pixels",numberOfComponents:o,values:s}),l=C0.newInstance();return l.setDimensions(n),l.setSpacing(i),l.setDirection(r),l.setOrigin(e),l.getPointData().setScalars(c),l}_createVTKImageData({origin:e,direction:r,dimensions:n,spacing:i,numberOfComponents:o,pixelArray:a}){try{this._imageData=this.createVTKImageData({origin:e,direction:r,dimensions:n,spacing:i,numberOfComponents:o,pixelArray:a})}catch(s){console.error(s)}}async setStack(e,r=0){this._throwIfDestroyed(),this.imageIds=e,this.currentImageIdIndex=r,this.targetImageIdIndex=r;const n=Pe(Ad.IMAGE_RETRIEVE_CONFIGURATION,e[r],"stack");this.imagesLoader=n?(n.create||kM)(n):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=La.LINEAR,this.invert=!1,this.viewportStatus=oi.LOADING,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={},delete this._cpuFallbackEnabledElement.viewport.colormap);const i=await this._setImageIdIndex(r),o={imageIds:e,viewportId:this.id,element:this.element,currentImageIdIndex:r};return De(this.element,Se.VIEWPORT_NEW_IMAGE_SET,o),i}_throwIfDestroyed(){if(this.isDisabled)throw new Error("The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you are using the same viewportId and have re-enabled the viewport, you need to grab the new viewport instance using renderingEngine.getViewport(viewportId), instead of using your lexical scoped reference to the viewport instance.")}_checkVTKImageDataMatchesCornerstoneImage(e,r){if(!r)return!1;const[n,i]=r.getSpacing(),[o,a]=r.getDimensions(),s=this._getImagePlaneModule(e.imageId),c=r.getDirection(),l=c.slice(0,3),f=c.slice(3,6),u=r.getPointData().getScalars().getDataType(),d=pt(n,e.columnPixelSpacing),h=pt(i,e.rowPixelSpacing),g=d||e.columnPixelSpacing===null&&n===1,p=h||e.rowPixelSpacing===null&&i===1,v=o===e.columns,x=a===e.rows,m=pt(s.rowCosines,l),y=pt(s.columnCosines,f),w=u===e.voxelManager.getScalarData().constructor.name;return g&&p&&v&&x&&m&&y&&w}_updateVTKImageDataFromCornerstoneImage(e){let n=this._getImagePlaneModule(e.imageId).imagePositionPatient;n==null&&(n=[0,0,0]),this._imageData.setOrigin(n),u2(this._imageData,e)}_loadAndDisplayImage(e,r){return this.useCPURendering?this._loadAndDisplayImageCPU(e,r):this._loadAndDisplayImageGPU(e,r)}_loadAndDisplayImageCPU(e,r){return new Promise((n,i)=>{function o(h,g,p){if(this.currentImageIdIndex!==g)return;const v=h.voxelManager.getScalarData(),x=h.preScale,m=x==null?void 0:x.scalingParameters,y=(x==null?void 0:x.scaled)&&(m==null?void 0:m.rescaleIntercept)%1!==0||(m==null?void 0:m.rescaleSlope)%1!==0;if(v instanceof Float32Array&&y){const C={min:h.maxPixelValue,max:h.minPixelValue},_=Math.abs(C.max-C.min)/65535,E=C.min,D=v.length,b=new Uint16Array(D);let I=65535,R=0;for(let M=0;Mb,h.preScale={...h.preScale,scaled:!1}}this._setCSImage(h),this.viewportStatus=oi.PRE_RENDER;const w={image:h,imageId:p,imageIdIndex:g,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.STACK_NEW_IMAGE,w),this._updateToDisplayImageCPU(h),this.render(),this.currentImageIdIndex=g,n(p)}function a(h,g,p){const v={error:h,imageIdIndex:g,imageId:p};this.suppressEvents||De(Ce,Se.IMAGE_LOAD_ERROR,v),i(h)}function s(h,g,p){return Js(h,p).then(v=>{o.call(this,v,g,h)},v=>{a.call(this,v,g,h)})}const c=-5,l=ht.Interaction,f={imageId:e,imageIdIndex:r},u={useRGBA:!0,requestType:l},d={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};De(this.element,Se.PRE_STACK_NEW_IMAGE,d),fi.addRequest(s.bind(this,e,r,u),l,f,c)})}successCallback(e,r){var l,f;const n=this.imageIds.indexOf(e);if(this.currentImageIdIndex!==n)return;const i=(l=this.csImage)==null?void 0:l.imageFrame,o=r==null?void 0:r.imageFrame,a=(i==null?void 0:i.photometricInterpretation)||((f=this.csImage)==null?void 0:f.photometricInterpretation),s=(o==null?void 0:o.photometricInterpretation)||(r==null?void 0:r.photometricInterpretation);a!==s&&(this.stackInvalidated=!0),this._setCSImage(r);const c={image:r,imageId:e,imageIdIndex:n,viewportId:this.id,renderingEngineId:this.renderingEngineId};this._updateActorToDisplayImageId(r),De(this.element,Se.STACK_NEW_IMAGE,c),this.render(),this.currentImageIdIndex=n}errorCallback(e,r,n){if(!r)return;const i=this.imageIds.indexOf(e),o={error:n,imageIdIndex:i,imageId:e};De(Ce,Se.IMAGE_LOAD_ERROR,o)}getLoaderImageOptions(e){const r=this.imageIds.indexOf(e),{transferSyntaxUID:n}=Pe("transferSyntax",e)||{};return{useRGBA:!1,transferSyntaxUID:n,priority:5,requestType:ht.Interaction,additionalDetails:{imageId:e,imageIdIndex:r}}}async loadImages(e,r){const n=await Promise.allSettled(e.map(o=>{const a=this.getLoaderImageOptions(o);return Js(o,a).then(s=>(r.successCallback(o,s),o),s=>(r.errorCallback(o,!0,s),o))})),i=n.filter(o=>o.status==="rejected");if(i&&i.length){const o=new CustomEvent(Se.IMAGE_LOAD_ERROR,{detail:i,cancelable:!0});Ce.dispatchEvent(o)}return n}_loadAndDisplayImageGPU(e,r){const n={imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};return De(this.element,Se.PRE_STACK_NEW_IMAGE,n),this.imagesLoader.loadImages([e],this).then(i=>e)}_updateToDisplayImageCPU(e){const r=this.getImageDataMetadata(e),n=tR(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:i,windowWidth:o}=n.voi;this.voiRange=Gs(o,i),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...r},this.cpuImagePixelData=e.voxelManager.getScalarData();const a=Object.assign({},n,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?n:a,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=kd(this._cpuFallbackEnabledElement)}getSliceViewInfo(){throw new Error("Method not implemented.")}addImages(e){const r=[];e.forEach(n=>{const{imageId:i,...o}=n,a=_e.getImage(i),{origin:s,dimensions:c,direction:l,spacing:f,numberOfComponents:u}=this.getImageDataMetadata(a),d=this.createVTKImageData({origin:s,dimensions:c,direction:l,spacing:f,numberOfComponents:u,pixelArray:a.voxelManager.getScalarData()}),h=this.createActorMapper(d);h&&(r.push({uid:n.actorUID??wn(),actor:h,referencedId:i,...o}),n.callback&&n.callback({imageActor:h,imageId:n.imageId}))}),this.addActors(r)}_updateActorToDisplayImageId(e){const r=this._checkVTKImageDataMatchesCornerstoneImage(e,this._imageData),n=this.getViewPresentation();if(r&&!this.stackInvalidated){this._updateVTKImageDataFromCornerstoneImage(e),this.resetCameraNoEvent(),this.setViewPresentation(n),this._setPropertiesFromCache(),this.stackActorReInitialized=!1;return}const{origin:i,direction:o,dimensions:a,spacing:s,numberOfComponents:c,imagePixelModule:l}=this.getImageDataMetadata(e),f=e.voxelManager.getScalarData();this._createVTKImageData({origin:i,direction:o,dimensions:a,spacing:s,numberOfComponents:c,pixelArray:f}),this._updateVTKImageDataFromCornerstoneImage(e);const u=this.createActorMapper(this._imageData),d=this.getActors();d.length&&d[0].uid===this.id?d[0].actor=u:d.unshift({uid:this.id,actor:u}),this.setActors(d);const{viewPlaneNormal:h,viewUp:g}=this._getCameraOrientation(o),p=this.getCamera();this.setCameraNoEvent({viewUp:g,viewPlaneNormal:h}),this.initialViewUp=g,this.resetCameraNoEvent(),this.setViewPresentation(n),this.triggerCameraEvent(this.getCamera(),p);const v=l.photometricInterpretation==="MONOCHROME1";this.stackInvalidated=!0;const x=this._getInitialVOIRange(e);this.setVOI(x,{forceRecreateLUTFunction:!!v}),this.initialInvert=!!v,this.setInvertColor(this.invert||this.initialInvert),this.stackInvalidated=!1,this.stackActorReInitialized=!0,this._publishCalibratedEvent&&this.triggerCalibrationEvent()}_getInitialVOIRange(e){if(this.voiRange&&this.voiUpdatedWithSetProperties)return this.globalDefaultProperties.voiRange;const{windowCenter:r,windowWidth:n}=e;let i=this._getVOIRangeFromWindowLevel(n,r);return i=this._getPTPreScaledRange()||i,i}_getPTPreScaledRange(){if(this._isCurrentImagePTPrescaled())return this._getDefaultPTPrescaledVOIRange()}_isCurrentImagePTPrescaled(){var e;return!(this.modality!=="PT"||!this.csImage.isPreScaled||!((e=this.csImage.preScale)!=null&&e.scalingParameters.suvbw))}_getDefaultPTPrescaledVOIRange(){return{lower:0,upper:5}}_getVOIRangeFromWindowLevel(e,r){let n,i;if(typeof r=="number"&&typeof e=="number"?(n=r,i=e):Array.isArray(r)&&Array.isArray(e)&&(n=r[0],i=e[0]),n!==void 0&&i!==void 0)return Gs(i,n)}async _setImageIdIndex(e){if(e>=this.imageIds.length)throw new Error(`ImageIdIndex provided ${e} is invalid, the stack only has ${this.imageIds.length} elements`);this.currentImageIdIndex=e,this.hasPixelSpacing=!0,this.viewportStatus=oi.PRE_RENDER;const r=await this._loadAndDisplayImage(this.imageIds[e],e);if(this.perImageIdDefaultProperties.size>=1){const n=this.perImageIdDefaultProperties.get(r);n!==void 0?this.setProperties(n):this.globalDefaultProperties!==void 0&&this.setProperties(this.globalDefaultProperties)}return r}resetCameraCPU({resetPan:e=!0,resetZoom:r=!0}){const{image:n}=this._cpuFallbackEnabledElement;if(!n)return;Wne(this._cpuFallbackEnabledElement,e,r);const{scale:i}=this._cpuFallbackEnabledElement.viewport,{clientWidth:o,clientHeight:a}=this.element,s=[o/2,a/2],c=this.canvasToWorldCPU(s);this.setCameraCPU({focalPoint:c,scale:i})}resetCameraGPU({resetPan:e,resetZoom:r}){return this.setCamera({flipHorizontal:!1,flipVertical:!1,viewUp:this.initialViewUp}),super.resetCamera({resetPan:e,resetZoom:r,resetToCenter:!0})}scroll(e,r=!0,n=!1){const i=this.imageIds,o=this.targetImageIdIndex,a=i.length;let s=o+e;s=Math.max(0,s),n?s=s%a:s=Math.min(a-1,s),this.targetImageIdIndex=s;const c=i[s];_e.isLoaded(c)||!r?this.setImageIdIndex(s):(clearTimeout(this.debouncedTimeout),this.debouncedTimeout=window.setTimeout(()=>{this.setImageIdIndex(s)},40));const f={newImageIdIndex:s,imageId:c,direction:e};s!==o&&De(this.element,Se.STACK_VIEWPORT_SCROLL,f)}setImageIdIndex(e){return this._throwIfDestroyed(),this.currentImageIdIndex===e?Promise.resolve(this.getCurrentImageId()):this._setImageIdIndex(e)}calibrateSpacing(e){const r=this.getImageIds().indexOf(e);this.stackInvalidated=!0,this._loadAndDisplayImage(e,r)}triggerCameraEvent(e,r){const n={previousCamera:r,camera:e,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};this.suppressEvents||De(this.element,Se.CAMERA_MODIFIED,n)}triggerCalibrationEvent(){const{imageData:e}=this.getImageData(),r={element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,imageId:this.getCurrentImageId(),imageData:e,worldToIndex:e.getWorldToIndex(),...this._calibrationEvent};this.suppressEvents||De(this.element,Se.IMAGE_SPACING_CALIBRATED,r),this._publishCalibratedEvent=!1}jumpToWorld(e){const r=this.getImageIds(),n=this.getImageData(),{direction:i,spacing:o}=n,a=Xa({direction:i,spacing:o,imageIds:r},e,this.getCamera().viewPlaneNormal),s=r.indexOf(a);return s===-1?!1:(this.setImageIdIndex(s),this.render(),!0)}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:r}=this.csImage;return this._getVOIRangeFromWindowLevel(r,e)}_getValidVOILUTFunction(e){return Object.values(Va).includes(e)?e:Va.LINEAR}getSliceInfo(){const e=this.getSliceIndex(),{dimensions:r}=this.getImageData();return{width:r[0],height:r[1],sliceIndex:e,slicePlane:2}}isReferenceViewable(e,r={}){if(!super.isReferenceViewable(e,r))return!1;const{referencedImageId:n,sliceIndex:i}=e;if(e.volumeId&&!n)return r.asVolume;let o=this.getCurrentImageIdIndex(),a=this.imageIds[o];if(r.withNavigation&&typeof i=="number"&&(o=i,a=this.imageIds[o]),!a)return!1;if(r.asOverlay&&n&&this.matchImagesForOverlay(a,n))return!0;let{imageURI:s}=r;s||(s=Nn(a));const l=Nn(n)===s;if(l)return l;const{cameraFocalPoint:f}=e;if(r.asNearbyProjection&&f){const{spacing:u,direction:d,origin:h}=this.getImageData(),g=d.slice(6,9),p=qa({direction:d,spacing:u},g),v=kt(we(),f,h),x=je(v,g),m=p/2;if(Math.abs(x)<=m)return!0}return!1}getViewReference(e={}){const{sliceIndex:r=this.getCurrentImageIdIndex()}=e,n=super.getViewReference(e),i=this.imageIds[r];if(i){if(n.referencedImageId=i,this.getCurrentImageIdIndex()!==r){const o=this.getImagePlaneReferenceData(r);if(!o)return;Object.assign(n,o)}return n}}setViewReference(e){if(!e)return;const{referencedImageId:r,sliceIndex:n}=e;if(typeof n=="number"&&r&&r===this.imageIds[n])this.scroll(n-this.targetImageIdIndex);else{const i=this.imageIds.indexOf(r);if(i!==-1)this.scroll(i-this.targetImageIdIndex);else throw new Error("Unsupported - referenced image id not found")}}getViewReferenceId(e={}){const{sliceIndex:r=this.currentImageIdIndex}=e;if(Array.isArray(r))throw new Error("Use of slice ranges for stacks not supported");return`imageId:${this.imageIds[r]}`}getCPUFallbackError(e){return new Error(`method ${e} cannot be used during CPU Fallback mode`)}fillWithBackgroundColor(){const e=this.getRenderingEngine();e&&e.fillCanvasWithBackgroundColor(this.canvas,this.options.background)}unsetColormapCPU(){delete this._cpuFallbackEnabledElement.viewport.colormap,this._cpuFallbackEnabledElement.renderingTools={},this.cpuRenderingInvalidated=!0,this.fillWithBackgroundColor(),this.render()}setColormapCPU(e){this.colormap=e;const r=Pd(e.name);this._cpuFallbackEnabledElement.viewport.colormap=r,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render();const n={viewportId:this.id,colormap:e};De(this.element,Se.COLORMAP_MODIFIED,n)}setColormapGPU(e){const i=this.getDefaultActor().actor.getProperty(),o=i.getRGBTransferFunction(),a=Pd(e.name)||U1.getPresetByName(e.name);if(o)o.applyColorMap(a),o.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,o);else{const c=Ys.newInstance();c.applyColorMap(a),c.setMappingRange(this.voiRange.lower,this.voiRange.upper),i.setRGBTransferFunction(0,c)}this.colormap=e,this.render();const s={viewportId:this.id,colormap:e};De(this.element,Se.COLORMAP_MODIFIED,s)}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){var i;const r=Pe(si.IMAGE_PLANE,e);this.hasPixelSpacing=!r.usingDefaultValues||((i=this.calibration)==null?void 0:i.scale)>0,this.calibration||(this.calibration=r.calibration);const n={...r};return n.columnPixelSpacing||(n.columnPixelSpacing=1),n.rowPixelSpacing||(n.rowPixelSpacing=1),n.columnCosines||(n.columnCosines=[0,1,0]),n.rowCosines||(n.rowCosines=[1,0,0]),n.imagePositionPatient||(n.imagePositionPatient=[0,0,0]),n.imageOrientationPatient||(n.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),n}}class nR extends Mn{constructor(e){super(e),this.getNumberOfSlices=()=>1,this.getRotation=()=>0,this.getCurrentImageIdIndex=()=>0,this.getCurrentImageId=()=>null,this.resetCameraForResize=()=>this.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0});const{parallelProjection:r,orientation:n}=this.options,i=this.getVtkActiveCamera();r!=null&&i.setParallelProjection(r),n&&n!==ju.ACQUISITION&&this.applyViewOrientation(n)}resetCamera({resetPan:e=!0,resetZoom:r=!0,resetToCenter:n=!0}={}){super.resetCamera({resetPan:e,resetZoom:r,resetToCenter:n});const i=this.getVtkActiveCamera();return i.getParallelProjection()?i.setClippingRange(-er.MAXIMUM_RAY_DISTANCE,er.MAXIMUM_RAY_DISTANCE):i.setClippingRange(er.MINIMUM_SLAB_THICKNESS,er.MAXIMUM_RAY_DISTANCE),this.getRenderer().resetCameraClippingRange(),!0}setSlabThickness(e,r){return null}setBlendMode(e,r,n){return null}resetProperties(e){const r=e?this.getActor(e):this.getDefaultActor();if(!r)throw new Error(`No actor found for the given volumeId: ${e}`);r.slabThickness&&(r.slabThickness=er.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera())),e||(e=this.getVolumeId());const n=_e.getVolume(e);if(!n)throw new Error(`imageVolume with id: ${e} does not exist in cache`);if(sC(r.actor,n),Xo(r)){const i=r.actor.getProperty().getRGBTransferFunction(0);c2(i,this.initialTransferFunctionNodes)}this.setCamera(this.initialCamera),De(this.element,Se.VOI_MODIFIED,super.getVOIModifiedEventDetail(e))}getSliceIndex(){return null}setCamera(e){super.setCamera(e),this.getRenderer().resetCameraClippingRange(),this.render()}setCameraClippingRange(){const e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(-er.MAXIMUM_RAY_DISTANCE,er.MAXIMUM_RAY_DISTANCE):e.setClippingRange(er.MINIMUM_SLAB_THICKNESS,er.MAXIMUM_RAY_DISTANCE)}resetSlabThickness(){return null}}const rR="viewport-element",iR="cornerstone-canvas",U8=1e-4;function $ne(t){const e=document.createElement("canvas");return e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.imageRendering="pixelated",e.classList.add(iR),t.appendChild(e),e}function jne(t){const e=document.createElement("div");return e.style.position="relative",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden",e.classList.add(rR),t.appendChild(e),e}function ba(t){const e=`canvas.${iR}`,r=`div.${rR}`,n=t.querySelector(r)||jne(t),i=n.querySelector(e);if(i)return i;const o=$ne(n),a=n.getBoundingClientRect(),s=window.devicePixelRatio||1,c=Math.ceil(a.width*s),l=Math.ceil(a.height*s);return o.width=c,o.height=l,o}async function Hne(t,e,r,n=!1,i=!1){r.forEach(a=>{const s=t.getViewport(a);if(!s)throw new Error(`Viewport with Id ${a} does not exist`);if(!(s instanceof Mn))throw new Error("setVolumesForViewports only supports VolumeViewport and VolumeViewport3D")});const o=r.map(async a=>{await t.getViewport(a).setVolumes(e,n,i)});await Promise.all(o)}async function Kne(t,e,r,n=!1,i=!1){for(const a of r){const s=t.getViewport(a);if(!s)throw new Error(`Viewport with Id ${a} does not exist`);if(!(s instanceof Mn)){console.warn(`Viewport with Id ${a} is not a BaseVolumeViewport. Cannot add volume to this viewport.`);return}}const o=r.map(async a=>{await t.getViewport(a).addVolumes(e,n,i)});await Promise.all(o)}async function qne(t,e,r){for(const i of r){const o=t.getStackViewport(i);if(!o)throw new Error(`Viewport with Id ${i} does not exist`);if(!o.addImages){console.warn(`Viewport with Id ${i} does not have addImages. Cannot add image segmentation to this viewport.`);return}}const n=r.map(async i=>{t.getStackViewport(i).addImages(e)});await Promise.all(n)}class Xne{constructor(e){this.opacity=.4,this.outlineOpacity=.4,this.transferFunction=[],this.actor=e}setRGBTransferFunction(e,r){this.transferFunction[e]=r}setScalarOpacity(e){}setInterpolationTypeToNearest(){}setUseLabelOutline(){}setLabelOutlineOpacity(e){this.outlineOpacity=e}setLabelOutlineThickness(){}getColor(e){const r=this.transferFunction[0],n=r.getRedValue(e),i=r.getGreenValue(e),o=r.getBlueValue(e);return[n,i,o,this.opacity]}}class Yne{constructor(e){this.actor=e}getInputData(){return this.actor.getImage()}}class Jne{constructor(e,r){this.canvasProperties=new Xne(this),this.visibility=!1,this.mapper=new Yne(this),this.className="CanvasActor",this.derivedImage=r,this.viewport=e}renderRLE(e,r,n){const{width:i,height:o}=this.image;let{canvas:a}=this;(!a||a.width!==i||a.height!==o)&&(this.canvas=a=new window.OffscreenCanvas(i,o));const s=a.getContext("2d"),c=s.createImageData(i,o),{data:l}=c;l.fill(0);const{map:f}=n;let u=1/0,d=1/0,h=-1/0,g=-1/0;for(let x=0;xb*255);let D=y+(S<<2);for(let b=S;bi)return;const p=h-u,v=g-d;s.putImageData(c,0,0,u-1,d-1,p+2,v+2),r.drawImage(a,u,d,p,v,u,d,p,v)}render(e,r){if(!this.visibility)return;const n=this.image||this.getImage(),{width:i,height:o}=n,a=n.getScalarData();if(!a)return;const{voxelManager:s}=n;if(s&&s.map.getRun){this.renderRLE(e,r,s);return}let{canvas:c}=this;(!c||c.width!==i||c.height!==o)&&(this.canvas=c=new window.OffscreenCanvas(i,o));const l=c.getContext("2d"),f=l.createImageData(i,o),{data:u}=f;let d=0,h=0,g=1/0,p=1/0,v=-1/0,x=-1/0;for(let w=0;wi)return;const m=v-g+1,y=x-p+1;l.putImageData(f,0,0,g,p,m,y),r.drawImage(c,g,p,m,y,g,p,m,y)}getClassName(){return this.className}getProperty(){return this.canvasProperties}setVisibility(e){this.visibility=e}getMapper(){return this.mapper}isA(e){return e===this.className}getImage(){if(this.image)return this.image;this.image={...this.derivedImage};const e=this.viewport.getImageData();return Object.assign(this.image,{worldToIndex:r=>e.imageData.worldToIndex(r),indexToWorld:(r,n)=>e.imageData.indexToWorld(r,n),getDimensions:()=>e.dimensions,getScalarData:()=>{var r;return(r=this.derivedImage)==null?void 0:r.getPixelData()},getDirection:()=>e.direction,getSpacing:()=>e.spacing,setOrigin:()=>null,setDerivedImage:r=>{this.derivedImage=r,this.image=null},modified:()=>null}),this.image}}function hC(t,e){const{pointInShapeFn:r,callback:n,boundsIJK:i,returnPoints:o=!1}=e;let a,s,c,l,f,u,d;const{numComps:h}=t;if(t.getScalarData?d=t.getScalarData():d=t.getPointData().getScalars().getData(),!d){console.warn("No scalar data found for imageData",t);return}const g=t.getDimensions();i?[[a,s],[c,l],[f,u]]=i:(a=0,s=g[0],c=0,l=g[1],f=0,u=g[2]);const p=Ye(a,c,f),v=t.getDirection(),x=v.slice(0,3),m=v.slice(3,6),y=v.slice(6,9),w=t.getSpacing(),[C,S,T]=w,_=t.indexToWorld(p),E=Ye(x[0]*C,x[1]*C,x[2]*C),D=Ye(m[0]*S,m[1]*S,m[2]*S),b=Ye(y[0]*T,y[1]*T,y[2]*T),I=h||d.length/g[2]/g[1]/g[0],R=g[0]*I,M=g[1]*R,L=[],A=Eu(_);for(let G=f;G<=u;G++){const P=Eu(A);for(let N=c;N<=l;N++){const V=Eu(A);for(let $=a;$<=s;$++){const H=[$,N,G];if(r(A,H)){const Y=G*M+N*R+$*I;let ne;I>2?ne=[d[Y],d[Y+1],d[Y+2]]:ne=d[Y],L.push({value:ne,index:Y,pointIJK:H,pointLPS:A.slice()}),n&&n({value:ne,index:Y,pointIJK:H,pointLPS:A})}xn(A,A,E)}Md(A,V),xn(A,A,D)}Md(A,P),xn(A,A,b)}return o?L:void 0}const ad=class ad extends Zu{constructor(e){super({...e,canvas:e.canvas||ba(e.element)}),this.videoWidth=0,this.videoHeight=0,this.loop=!0,this.mute=!0,this.isPlaying=!1,this.scrollSpeed=1,this.playbackRate=1,this.frameRange=[0,0],this.fps=30,this.videoCamera={panWorld:[0,0],parallelScale:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({loop:this.videoElement.loop,muted:this.videoElement.muted,playbackRate:this.playbackRate,scrollSpeed:this.scrollSpeed,voiRange:{...this.voiRange}}),this.getMiddleSliceData=()=>{throw new Error("Method not implemented.")},this.useCustomRenderingPipeline=!0,this.resetCamera=()=>(this.refreshRenderValues(),this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame(),!0),this.getNumberOfSlices=()=>{const r=Math.round(this.videoElement.duration*this.fps/this.scrollSpeed);return isNaN(r)?this.numberOfFrames:r},this.getFrameOfReferenceUID=()=>this.videoElement.src,this.resize=()=>{const r=this.canvas,{clientWidth:n,clientHeight:i}=r;(r.width!==n||r.height!==i)&&(r.width=n,r.height=i),this.refreshRenderValues(),this.isPlaying||this.renderFrame()},this.canvasToWorld=(r,n=[0,0,0])=>{const i=this.videoCamera.panWorld,o=this.getWorldToCanvasRatio(),a=[i[0]*o,i[1]*o],s=[r[0]-a[0],r[1]-a[1]];return n.splice(0,2,s[0]/o,s[1]/o),n},this.worldToCanvas=r=>{const n=this.videoCamera.panWorld,i=this.getWorldToCanvasRatio();return[(r[0]+n[0])*i,(r[1]+n[1])*i]},this.getRotation=()=>0,this.canvasToIndex=r=>{const n=this.getTransform();return n.invert(),n.transformPoint(r.map(i=>i*devicePixelRatio))},this.indexToCanvas=r=>this.getTransform().transformPoint(r).map(i=>i/devicePixelRatio),this.customRenderViewportToCanvas=()=>{this.renderFrame()},this.renderFrame=()=>{var s;const r=window.devicePixelRatio||1,i=this.getTransform().getMatrix(),o=this.canvasContext;o.resetTransform(),o.clearRect(0,0,this.canvas.width,this.canvas.height),o.transform(i[0]/r,i[1]/r,i[2]/r,i[3]/r,i[4]/r,i[5]/r),o.drawImage(this.videoElement,0,0,this.videoWidth,this.videoHeight);for(const c of this.getActors())c.actor.render(this,this.canvasContext);this.canvasContext.resetTransform(),De(this.element,Se.STACK_NEW_IMAGE,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),De(this.element,Se.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,imageIndex:this.getCurrentImageIdIndex(),numberOfSlices:this.numberOfFrames,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration}),(s=this.initialRender)==null||s.call(this);const a=this.getFrameNumber();this.isPlaying&&(athis.frameRange[1]&&(this.loop?this.setFrameNumber(this.frameRange[0]):this.pause()))},this.renderWhilstPlaying=()=>{this.renderFrame(),this.isPlaying&&requestAnimationFrame(this.renderWhilstPlaying)},this.canvasContext=this.canvas.getContext("2d"),this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.videoElement=document.createElement("video"),this.videoElement.muted=this.mute,this.videoElement.loop=this.loop,this.videoElement.autoplay=!0,this.videoElement.crossOrigin="anonymous",this.addEventListeners(),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(Se.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(Se.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}getImageDataMetadata(e){const r=typeof e=="string"?e:e.imageId,n=Pe(si.IMAGE_PLANE,r);let i=n.rowCosines,o=n.columnCosines;(i==null||o==null)&&(i=[1,0,0],o=[0,1,0]);const a=Ye(i[0],i[1],i[2]),s=Ye(o[0],o[1],o[2]),{rows:c,columns:l}=n,f=we();Kt(f,a,s);let u=n.imagePositionPatient;u==null&&(u=[0,0,0]);const d=n.columnPixelSpacing||1,h=n.rowPixelSpacing||1,g=n.columns,p=n.rows,v=1,x=1;return this.hasPixelSpacing=!!n.columnPixelSpacing,{bitsAllocated:8,numberOfComponents:3,origin:u,rows:c,columns:l,direction:[...a,...s,...f],dimensions:[g,p,x],spacing:[d,h,v],hasPixelSpacing:this.hasPixelSpacing,numVoxels:g*p*x,imagePlaneModule:n}}setDataIds(e,r){var n;this.setVideo(e[0],(((n=r.viewReference)==null?void 0:n.sliceIndex)||0)+1)}setVideo(e,r){this.imageId=Array.isArray(e)?e[0]:e;const n=Pe(si.IMAGE_URL,e);if(!(n!=null&&n.rendered))throw new Error(`Video Image ID ${e} does not have a rendered video view`);const{rendered:i}=n,o=Pe(si.GENERAL_SERIES,e);this.modality=o==null?void 0:o.Modality,this.metadata=this.getImageDataMetadata(e);let{cineRate:a,numberOfFrames:s}=Pe(si.CINE,e);return this.numberOfFrames=s,this.setVideoURL(i).then(()=>((!s||s===1)&&(s=Math.round(this.videoElement.duration*(a||30))),a||(a=Math.round(s/this.videoElement.duration)),this.fps=a,this.numberOfFrames=s,this.setFrameRange([1,s]),this.initialRender=()=>{this.initialRender=null,this.pause(),this.setFrameNumber(r||1)},new Promise(c=>{window.setTimeout(()=>{this.setFrameNumber(r||1),c(this)},25)})))}async setVideoURL(e){return new Promise(r=>{this.videoElement.src=e,this.videoElement.preload="auto";const n=()=>{this.videoWidth=this.videoElement.videoWidth,this.videoHeight=this.videoElement.videoHeight,this.videoElement.removeEventListener("loadedmetadata",n),this.refreshRenderValues(),r(!0)};this.videoElement.addEventListener("loadedmetadata",n)})}getImageIds(){const e=new Array(this.numberOfFrames),r=this.imageId.replace(/[0-9]+$/,"");for(let n=0;n{n(),r.removeEventListener("seeked",a)};r.addEventListener("seeked",a)}async start(){const e=this.videoElement,r=this.renderFrame;if(e.currentTime=0,e.paused){const n=i=>{r(),e.removeEventListener("seeked",n)};e.addEventListener("seeked",n)}}async end(){const e=this.videoElement,r=this.renderFrame;if(e.currentTime=e.duration,e.paused){const n=i=>{r(),e.removeEventListener("seeked",n)};e.addEventListener("seeked",n)}}async setTime(e){const r=this.videoElement,n=this.renderFrame;if(r.currentTime=e,r.paused){const i=o=>{n(),r.removeEventListener("seeked",i)};r.addEventListener("seeked",i)}}getSliceViewInfo(){throw new Error("Method not implemented.")}async setFrameNumber(e){this.setTime((e-1)/this.fps)}setFrameRange(e){if(!e){this.frameRange=[1,this.numberOfFrames];return}e.length!==2||e[0]===e[1]||(this.frameRange=[e[0],e[1]])}getFrameRange(){return this.frameRange}setProperties(e){e.loop!==void 0&&(this.videoElement.loop=e.loop),e.muted!==void 0&&(this.videoElement.muted=e.muted),e.playbackRate!==void 0&&this.setPlaybackRate(e.playbackRate),e.scrollSpeed!==void 0&&this.setScrollSpeed(e.scrollSpeed),e.voiRange&&this.setVOI(e.voiRange)}setPlaybackRate(e=1){if(this.playbackRate=e,e<.0625){this.pause();return}this.videoElement&&(this.videoElement.playbackRate=e,this.play())}setScrollSpeed(e=1,r=Dd.FRAME){this.scrollSpeed=r===Dd.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0})}getScalarData(){var o;if(((o=this.scalarData)==null?void 0:o.frameNumber)===this.getFrameNumber())return this.scalarData;if(!this.videoElement||!this.videoElement.videoWidth||!this.videoElement.videoHeight){console.debug("Video not ready yet, returning empty scalar data");const a=new Uint8ClampedArray;return a.getRange=()=>[0,255],a.frameNumber=-1,a}const e=document.createElement("canvas");e.width=this.videoElement.videoWidth,e.height=this.videoElement.videoHeight;const r=e.getContext("2d");r.drawImage(this.videoElement,0,0);const i=r.getImageData(0,0,e.width,e.height).data;return i.getRange=()=>[0,255],i.frameNumber=this.getFrameNumber(),this.scalarData=i,i}getImageData(){const{metadata:e}=this,r=e.spacing,n={getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:o=>{const a=this.worldToCanvas(o),s=this.canvasToIndex(a);return[s[0],s[1],0]},indexToWorld:(o,a)=>{const s=this.indexToCanvas([o[0],o[1]]);return this.canvasToWorld(s,a)}},i={dimensions:e.dimensions,spacing:r,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:e.FrameOfReferenceUID},getScalarData:()=>this.getScalarData(),scalarData:this.getScalarData(),imageData:n,voxelManager:{forEach:(o,a)=>hC(a.imageData,{pointInShapeFn:a.isInObject??(()=>!0),callback:o,boundsIJK:a.boundsIJK,returnPoints:a.returnPoints??!1})},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1}};return Object.defineProperty(n,"scalarData",{get:()=>this.getScalarData(),enumerable:!0}),i}hasImageURI(e){const r=e.match(ad.frameRangeExtractor),n=r?e.substring(0,r.index):e;return this.imageId.includes(n)}setVOI(e){this.voiRange=e,this.setColorTransform()}setWindowLevel(e=256,r=128){const n=r-e/2,i=r+e/2-1;this.setVOI({lower:n,upper:i}),this.setColorTransform()}setAverageWhite(e){this.averageWhite=e,this.setColorTransform()}setColorTransform(){if(!this.voiRange&&!this.averageWhite){this.feFilter=null;return}const e=this.averageWhite||[255,255,255],r=Math.max(...e),n=e.map(c=>r/c),{lower:i=0,upper:o=255}=this.voiRange||{},a=(o-i+1)/255,s=i/255;this.feFilter=`url('data:image/svg+xml, #colour')`,this.canvas.style.filter=this.feFilter}setCamera(e){const{parallelScale:r,focalPoint:n}=e;if(r&&(this.videoCamera.parallelScale=this.element.clientHeight/2/r),n!==void 0){const i=this.worldToCanvas(n),o=[this.element.clientWidth/2,this.element.clientHeight/2],a=[(i[0]-o[0])/this.videoCamera.parallelScale,(i[1]-o[1])/this.videoCamera.parallelScale];this.videoCamera.panWorld=[this.videoCamera.panWorld[0]-a[0],this.videoCamera.panWorld[1]-a[1]]}this.canvasContext.fillStyle="rgba(0,0,0,1)",this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),this.isPlaying||this.renderFrame()}getCurrentImageId(){return this.imageId.replace("/frames/1",this.isPlaying?`/frames/${this.frameRange[0]}-${this.frameRange[1]}`:`/frames/${this.getFrameNumber()}`)}getViewReferenceId(e={}){const{sliceIndex:r}=e;return r===void 0?`videoId:${this.getCurrentImageId()}`:Array.isArray(r)?`videoId:${this.imageId.substring(0,this.imageId.length-1)}${r[0]+1}-${r[1]+1}`:`videoId:${this.imageId.replace("/frames/1",`/frames/${1+r}`)}`}isReferenceViewable(e,r={}){let{imageURI:n}=r;const{referencedImageId:i,sliceIndex:o}=e;if(!super.isReferenceViewable(e))return!1;const a=this.getCurrentImageId();if(!n){const u=a.indexOf(":");n=a.substring(u+1,a.length-1)}if(r.withNavigation)return!0;const s=this.getSliceIndex();if(Array.isArray(o))return s>=o[0]&&s<=o[1];if(o!==void 0)return s===o;if(!i)return!1;const c=i.match(ad.frameRangeExtractor);if(!c[2])return!0;const l=c[2].split("-").map(u=>Number(u)),f=s+1;return l[0]<=f&&f<=(l[1]??l[0])}setViewReference(e){typeof e.sliceIndex=="number"?this.setFrameNumber(e.sliceIndex+1):Array.isArray(e.sliceIndex)&&this.setFrameRange(e.sliceIndex)}getViewReference(e){let r=(e==null?void 0:e.sliceIndex)??this.getSliceIndex();return r||(r=this.isPlaying?[this.frameRange[0]-1,this.frameRange[1]-1]:this.getCurrentImageIdIndex()),{...super.getViewReference(e),referencedImageId:this.getViewReferenceId(e),sliceIndex:r}}getFrameNumber(){return 1+this.getCurrentImageIdIndex()}getCurrentImageIdIndex(){return Math.round(this.videoElement.currentTime*this.fps)}getSliceIndex(){return this.getCurrentImageIdIndex()/this.scrollSpeed}getCamera(){const{parallelScale:e}=this.videoCamera,r=[this.element.clientWidth/2,this.element.clientHeight/2];return{parallelProjection:!0,focalPoint:this.canvasToWorld(r),position:[0,0,0],viewUp:[0,-1,0],parallelScale:this.element.clientHeight/2/e,viewPlaneNormal:[0,0,1]}}getFrameRate(){return this.fps}getPan(){const e=this.videoCamera.panWorld;return[e[0],e[1]]}refreshRenderValues(){let e=this.canvas.offsetWidth/this.videoWidth;this.videoHeight*e>this.canvas.height&&(e=this.canvas.offsetHeight/this.videoHeight);const r=Math.floor(this.videoWidth*e),n=Math.floor(this.videoHeight*e),i=(this.canvas.offsetWidth-r)/2,o=(this.canvas.offsetHeight-n)/2,a=i/e,s=o/e;this.videoCamera.panWorld=[a,s],this.videoCamera.parallelScale=e}getWorldToCanvasRatio(){return this.videoCamera.parallelScale}getCanvasToWorldRatio(){return 1/this.videoCamera.parallelScale}getTransform(){const e=this.videoCamera.panWorld,r=window.devicePixelRatio||1,n=this.getWorldToCanvasRatio(),i=this.getCanvasToWorldRatio(),o=[this.canvas.offsetWidth/2,this.canvas.offsetHeight/2],a=[o[0]*i,o[1]*i],s=new D0;return s.scale(r,r),s.translate(o[0],o[1]),s.scale(n,n),s.translate(e[0],e[1]),s.translate(-a[0],-a[1]),s}updateCameraClippingPlanesAndRange(){}addImages(e){const r=this.getActors();e.forEach(n=>{const i=_e.getImage(n.imageId),o=this.createActorMapper(i),a=n.actorUID??wn();o&&(r.push({uid:a,actor:o}),n.callback&&n.callback({imageActor:o,imageId:n.imageId}))}),this.setActors(r)}createActorMapper(e){return new Jne(this,e)}};ad.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let Vd=ad;const Zne=` -.DicomMicroscopyViewer { - --ol-partial-background-color: rgba(127, 127, 127, 0.7); - --ol-foreground-color: #000000; - --ol-subtle-foreground-color: #000; - --ol-subtle-background-color: rgba(78, 78, 78, 0.5); -} - -.DicomMicroscopyViewer .ol-box { - box-sizing: border-box; - border-radius: 2px; - border: 1.5px solid var(--ol-background-color); - background-color: var(--ol-partial-background-color); -} - -.DicomMicroscopyViewer .ol-mouse-position { - top: 8px; - right: 8px; - position: absolute; -} - -.DicomMicroscopyViewer .ol-scale-line { - background: var(--ol-partial-background-color); - border-radius: 4px; - bottom: 8px; - left: 8px; - padding: 2px; - position: absolute; -} - -.DicomMicroscopyViewer .ol-scale-line-inner { - border: 1px solid var(--ol-subtle-foreground-color); - border-top: none; - color: var(--ol-foreground-color); - font-size: 10px; - text-align: center; - margin: 1px; - will-change: contents, width; - transition: all 0.25s; -} - -.DicomMicroscopyViewer .ol-scale-bar { - position: absolute; - bottom: 8px; - left: 8px; -} - -.DicomMicroscopyViewer .ol-scale-bar-inner { - display: flex; -} - -.DicomMicroscopyViewer .ol-scale-step-marker { - width: 1px; - height: 15px; - background-color: var(--ol-foreground-color); - float: right; - z-index: 10; -} - -.DicomMicroscopyViewer .ol-scale-step-text { - position: absolute; - bottom: -5px; - font-size: 10px; - z-index: 11; - color: var(--ol-foreground-color); - text-shadow: - -1.5px 0 var(--ol-partial-background-color), - 0 1.5px var(--ol-partial-background-color), - 1.5px 0 var(--ol-partial-background-color), - 0 -1.5px var(--ol-partial-background-color); -} - -.DicomMicroscopyViewer .ol-scale-text { - position: absolute; - font-size: 12px; - text-align: center; - bottom: 25px; - color: var(--ol-foreground-color); - text-shadow: - -1.5px 0 var(--ol-partial-background-color), - 0 1.5px var(--ol-partial-background-color), - 1.5px 0 var(--ol-partial-background-color), - 0 -1.5px var(--ol-partial-background-color); -} - -.DicomMicroscopyViewer .ol-scale-singlebar { - position: relative; - height: 10px; - z-index: 9; - box-sizing: border-box; - border: 1px solid var(--ol-foreground-color); -} - -.DicomMicroscopyViewer .ol-scale-singlebar-even { - background-color: var(--ol-subtle-foreground-color); -} - -.DicomMicroscopyViewer .ol-scale-singlebar-odd { - background-color: var(--ol-background-color); -} - -.DicomMicroscopyViewer .ol-unsupported { - display: none; -} - -.DicomMicroscopyViewer .ol-viewport, -.DicomMicroscopyViewer .ol-unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; -} - -.DicomMicroscopyViewer .ol-viewport canvas { - all: unset; -} - -.DicomMicroscopyViewer .ol-selectable { - -webkit-touch-callout: default; - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; -} - -.DicomMicroscopyViewer .ol-grabbing { - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: grabbing; -} - -.DicomMicroscopyViewer .ol-grab { - cursor: move; - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: grab; -} - -.DicomMicroscopyViewer .ol-control { - position: absolute; - background-color: var(--ol-subtle-background-color); - border-radius: 4px; -} - -.DicomMicroscopyViewer .ol-zoom { - top: 0.5em; - left: 0.5em; -} - -.DicomMicroscopyViewer .ol-rotate { - top: 0.5em; - right: 0.5em; - transition: - opacity 0.25s linear, - visibility 0s linear; -} - -.DicomMicroscopyViewer .ol-rotate.ol-hidden { - opacity: 0; - visibility: hidden; - transition: - opacity 0.25s linear, - visibility 0s linear 0.25s; -} - -.DicomMicroscopyViewer .ol-zoom-extent { - top: 4.643em; - left: 0.5em; -} - -.DicomMicroscopyViewer .ol-full-screen { - right: 0.5em; - top: 0.5em; -} - -.DicomMicroscopyViewer .ol-control button { - display: block; - margin: 1px; - padding: 0; - color: var(--ol-subtle-foreground-color); - font-weight: bold; - text-decoration: none; - font-size: inherit; - text-align: center; - height: 1.375em; - width: 1.375em; - line-height: 0.4em; - background-color: var(--ol-background-color); - border: none; - border-radius: 2px; -} - -.DicomMicroscopyViewer .ol-control button::-moz-focus-inner { - border: none; - padding: 0; -} - -.DicomMicroscopyViewer .ol-zoom-extent button { - line-height: 1.4em; -} - -.DicomMicroscopyViewer .ol-compass { - display: block; - font-weight: normal; - will-change: transform; -} - -.DicomMicroscopyViewer .ol-touch .ol-control button { - font-size: 1.5em; -} - -.DicomMicroscopyViewer .ol-touch .ol-zoom-extent { - top: 5.5em; -} - -.DicomMicroscopyViewer .ol-control button:hover, -.DicomMicroscopyViewer .ol-control button:focus { - text-decoration: none; - outline: 1px solid var(--ol-subtle-foreground-color); - color: var(--ol-foreground-color); -} - -.DicomMicroscopyViewer .ol-zoom .ol-zoom-in { - border-radius: 2px 2px 0 0; -} - -.DicomMicroscopyViewer .ol-zoom .ol-zoom-out { - border-radius: 0 0 2px 2px; -} - -.DicomMicroscopyViewer .ol-attribution { - text-align: right; - bottom: 0.5em; - right: 0.5em; - max-width: calc(100% - 1.3em); - display: flex; - flex-flow: row-reverse; - align-items: center; -} - -.DicomMicroscopyViewer .ol-attribution a { - color: var(--ol-subtle-foreground-color); - text-decoration: none; -} - -.DicomMicroscopyViewer .ol-attribution ul { - margin: 0; - padding: 1px 0.5em; - color: var(--ol-foreground-color); - text-shadow: 0 0 2px var(--ol-background-color); - font-size: 12px; -} - -.DicomMicroscopyViewer .ol-attribution li { - display: inline; - list-style: none; -} - -.DicomMicroscopyViewer .ol-attribution li:not(:last-child):after { - content: ' '; -} - -.DicomMicroscopyViewer .ol-attribution img { - max-height: 2em; - max-width: inherit; - vertical-align: middle; -} - -.DicomMicroscopyViewer .ol-attribution button { - flex-shrink: 0; -} - -.DicomMicroscopyViewer .ol-attribution.ol-collapsed ul { - display: none; -} - -.DicomMicroscopyViewer .ol-attribution:not(.ol-collapsed) { - background: var(--ol-partial-background-color); -} - -.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible { - bottom: 0; - right: 0; - border-radius: 4px 0 0; -} - -.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible img { - margin-top: -0.2em; - max-height: 1.6em; -} - -.DicomMicroscopyViewer .ol-attribution.ol-uncollapsible button { - display: none; -} - -.DicomMicroscopyViewer .ol-zoomslider { - top: 4.5em; - left: 0.5em; - height: 200px; -} - -.DicomMicroscopyViewer .ol-zoomslider button { - position: relative; - height: 10px; -} - -.DicomMicroscopyViewer .ol-touch .ol-zoomslider { - top: 5.5em; -} - -.DicomMicroscopyViewer .ol-overviewmap { - left: 0.5em; - bottom: 0.5em; -} - -.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible { - bottom: 0; - left: 0; - border-radius: 0 4px 0 0; -} - -.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map, -.DicomMicroscopyViewer .ol-overviewmap button { - display: block; -} - -.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-map { - border: 1px solid var(--ol-subtle-foreground-color); - height: 150px; - width: 150px; -} - -.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) button { - bottom: 0; - left: 0; - position: absolute; -} - -.DicomMicroscopyViewer .ol-overviewmap.ol-collapsed .ol-overviewmap-map, -.DicomMicroscopyViewer .ol-overviewmap.ol-uncollapsible button { - display: none; -} - -.DicomMicroscopyViewer .ol-overviewmap:not(.ol-collapsed) { - background: var(--ol-subtle-background-color); -} - -.DicomMicroscopyViewer .ol-overviewmap-box { - border: 0.5px dotted var(--ol-subtle-foreground-color); -} - -.DicomMicroscopyViewer .ol-overviewmap .ol-overviewmap-box:hover { - cursor: move; -} - -@layout-header-background: #007ea3; -@primary-color: #007ea3; -@processing-color: #8cb8c6; -@success-color: #3f9c35; -@warning-color: #eeaf30; -@error-color: #96172e; -@font-size-base: 14px; - -.DicomMicroscopyViewer .ol-tooltip { - font-size: 16px !important; -} -`,B8=Symbol.for("map"),Qne="postrender",pu=class pu extends Zu{constructor(e){super({...e,canvas:e.canvas||ba(e.element)}),this.internalCamera={rotation:0,centerIndex:[0,0],extent:[0,-2,1,-1],xSpacing:1,ySpacing:1,resolution:1,zoom:1},this.voiRange={lower:0,upper:255},this.getProperties=()=>({}),this.resetCamera=()=>!0,this.getNumberOfSlices=()=>1,this.getFrameOfReferenceUID=()=>this.frameOfReferenceUID,this.resize=()=>{const n=this.canvas,{clientWidth:i,clientHeight:o}=n;(n.width!==i||n.height!==o)&&(n.width=i,n.height=o),this.refreshRenderValues()},this.canvasToWorld=n=>{if(!this.metadata)return;const[i,o]=this.canvasToIndex(n),{origin:a,spacing:s,direction:c}=this.getImageData(),l=Ye(0,0,0),f=c.slice(0,3),u=c.slice(3,6);return Vt(l,a,f,i*s[0]),Vt(l,l,u,o*s[1]),[l[0],l[1],l[2]]},this.worldToCanvas=n=>{if(!this.metadata)return;const{spacing:i,direction:o,origin:a}=this.metadata,s=o.slice(0,3),c=o.slice(3,6),l=kt([0,0,0],n,a),f=[je(l,s)/i[0],je(l,c)/i[1]];return this.indexToCanvas(f)},this.postrender=()=>{this.refreshRenderValues(),De(this.element,Se.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId})},this.getRotation=()=>0,this.canvasToIndex=n=>{const i=this.getTransform();return i.invert(),i.transformPoint(n)},this.indexToCanvas=n=>this.getTransform().transformPoint(n),this.customRenderViewportToCanvas=()=>{},this.getImageIds=()=>[this.imageIds[0]],this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.element.style.position="relative",this.microscopyElement=document.createElement("div"),this.microscopyElement.setAttribute("class","DicomMicroscopyViewer"),this.microscopyElement.id=wn(),this.microscopyElement.innerText="Initial",this.microscopyElement.style.background="grey",this.microscopyElement.style.width="100%",this.microscopyElement.style.height="100%",this.microscopyElement.style.position="absolute",this.microscopyElement.style.left="0",this.microscopyElement.style.top="0";const r=this.element.firstElementChild;r.insertBefore(this.microscopyElement,r.childNodes[1]),this.addEventListeners(),this.addWidget("DicomMicroscopyViewer",{getEnabled:()=>!!this.viewer,setEnabled:()=>{this.elementDisabledHandler()}}),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(Se.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(Se.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){var r;this.removeEventListeners(),(r=this.viewer)==null||r.cleanup(),this.viewer=null,this.element.firstElementChild.removeChild(this.microscopyElement),this.microscopyElement=null}getImageDataMetadata(e=0){var E;const r=this.metadataDicomweb.reduce((D,b)=>(D==null?void 0:D.NumberOfFrames)e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:o=>{const a=this.worldToCanvas(o),s=this.canvasToIndex(a);return[s[0],s[1],0]},indexToWorld:o=>{const a=this.indexToCanvas([o[0],o[1]]);return this.canvasToWorld(a)}};return{dimensions:e.dimensions,spacing:r,numberOfComponents:3,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality,FrameOfReferenceUID:this.frameOfReferenceUID},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1},scalarData:this.getScalarData(),imageData:n,voxelManager:{forEach:(o,a)=>hC(a.imageData,{pointInShapeFn:a.isInObject??(()=>!0),callback:o,boundsIJK:a.boundsIJK,returnPoints:a.returnPoints??!1})}}}hasImageURI(e){return!0}setCamera(e){const r=this.getCamera(),{parallelScale:n,focalPoint:i}=e,o=this.getView(),{xSpacing:a}=this.internalCamera;if(n){const c=this.element.clientHeight/n,l=1/a/c;o.setResolution(l)}if(i){const c=this.worldToCanvas(i),l=this.canvasToIndex(c);o.setCenter(l)}const s=this.getCamera();this.triggerCameraModifiedEventIfNecessary(r,s)}getCurrentImageId(){return this.imageIds[0]}getFrameNumber(){return 1}getCamera(){this.refreshRenderValues();const{resolution:e,xSpacing:r}=this.internalCamera,n=e*r,i=[this.element.clientWidth/2,this.element.clientHeight/2],o=this.canvasToWorld(i);return{parallelProjection:!0,focalPoint:o,position:o,viewUp:[0,-1,0],parallelScale:this.element.clientHeight*n,viewPlaneNormal:[0,0,1]}}setDataIds(e,r){(r==null?void 0:r.miniNavigationOverlay)!==!1&&pu.addMiniNavigationOverlayCss();const n=(r==null?void 0:r.webClient)||Pe(si.WADO_WEB_CLIENT,e[0]);if(!n)throw new Error(`To use setDataIds on WSI data, you must provide metaData.webClient for ${e[0]}`);return this.setWSI(e,n)}async setWSI(e,r){this.microscopyElement.style.background="black",this.microscopyElement.innerText="Loading",this.imageIds=e;const n=await pu.getDicomMicroscopyViewer();this.frameOfReferenceUID=null;const i=this.imageIds.map(s=>{var u,d,h;const c=r.getDICOMwebMetadata(s);Object.defineProperty(c,"isMultiframe",{value:c.isMultiframe,enumerable:!1}),Object.defineProperty(c,"frameNumber",{value:void 0,enumerable:!1});const l=(u=c["00080008"])==null?void 0:u.Value;(l==null?void 0:l.length)===1&&(c["00080008"].Value=l[0].split("\\"));const f=(h=(d=c["00200052"])==null?void 0:d.Value)==null?void 0:h[0];return this.frameOfReferenceUID?f!==this.frameOfReferenceUID&&(c["00200052"].Value=[this.frameOfReferenceUID]):this.frameOfReferenceUID=f,c}),o=[];i.forEach(s=>{const c=new n.metadata.VLWholeSlideMicroscopyImage({metadata:s}),l=c.ImageType[2];l==="VOLUME"||l==="THUMBNAIL"?o.push(c):console.log("Unknown image type",c.ImageType)}),this.metadataDicomweb=o;const a=new n.viewer.VolumeImageViewer({client:r,metadata:o,controls:["overview","position"],retrieveRendered:!1,bindings:{}});a.render({container:this.microscopyElement}),this.metadata=this.getImageDataMetadata(),a.deactivateDragPanInteraction(),this.viewer=a,this.map=a[B8],this.map.on(Qne,this.postrender),this.resize(),this.microscopyElement.innerText="",Object.assign(this.microscopyElement.style,{"--ol-partial-background-color":"rgba(127, 127, 127, 0.7)","--ol-foreground-color":"#000000","--ol-subtle-foreground-color":"#000","--ol-subtle-background-color":"rgba(78, 78, 78, 0.5)",background:"none"})}scroll(e){const r=this.getCamera();this.setCamera({parallelScale:r.parallelScale*(1+.1*e)})}getSliceIndex(){return 0}getView(){if(!this.viewer)return;const e=this.viewer[B8],r=window;return r.map=e,r.viewer=this.viewer,r.view=e==null?void 0:e.getView(),r.wsi=this,e==null?void 0:e.getView()}refreshRenderValues(){const e=this.getView();if(!e)return;const r=e.getResolution();if(!r||rsZ("dicom-microscopy-viewer"),pu.overlayCssId="overlayCss";let l3=pu;const oR={[mn.ORTHOGRAPHIC]:an,[mn.PERSPECTIVE]:an,[mn.STACK]:ln,[mn.VOLUME_3D]:nR,[mn.VIDEO]:Vd,[mn.WHOLE_SLIDE]:l3};function Bl(t){return oR[t].useCustomRenderingPipeline}const G8=2;class aR{constructor(e){if(this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this.renderFrameOfReference=r=>{const i=this._getViewportsAsArray().map(o=>{if(o.getFrameOfReferenceUID()===r)return o.id});this.renderViewports(i)},this._renderFlaggedViewports=()=>{this._throwIfDestroyed(),this.useCPURendering||this.performVtkDrawCall();const r=this._getViewportsAsArray(),n=[];for(let i=0;i{i!=null&&i.element&&De(i.element,Se.IMAGE_RENDERED,i)})},this.id=e||wn(),this.useCPURendering=Kf(),bd.set(this),!aZ())throw new Error("@cornerstonejs/core is not initialized, run init() first");this.useCPURendering||(this.offscreenMultiRenderWindow=tJ.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer)),this._viewports=new Map,this.hasBeenDestroyed=!1}enableElement(e){const r=this._normalizeViewportInputEntry(e);this._throwIfDestroyed();const{element:n,viewportId:i}=r;if(!n)throw new Error("No element provided");this.getViewport(i)&&this.disableElement(i);const{type:a}=r,s=Bl(a);!this.useCPURendering&&!s?this.enableVTKjsDrivenViewport(r):this.addCustomViewport(r);const c=ba(n),{background:l}=r.defaultOptions;this.fillCanvasWithBackgroundColor(c,l)}disableElement(e){this._throwIfDestroyed();const r=this.getViewport(e);if(!r){console.warn(`viewport ${e} does not exist`);return}this._resetViewport(r),!Bl(r.type)&&!this.useCPURendering&&this.offscreenMultiRenderWindow.removeRenderer(e),this._removeViewport(e),r.isDisabled=!0,this._needsRender.delete(e),this.getViewports().length||this._clearAnimationFrame()}setViewports(e){const r=this._normalizeViewportInputEntries(e);this._throwIfDestroyed(),this._reset();const n=[],i=[];r.forEach(o=>{!this.useCPURendering&&!Bl(o.type)?n.push(o):i.push(o)}),this.setVtkjsDrivenViewports(n),this.setCustomViewports(i),r.forEach(o=>{const a=ba(o.element),{background:s}=o.defaultOptions;this.fillCanvasWithBackgroundColor(a,s)})}resize(e=!0,r=!0){this._throwIfDestroyed();const n=this._getViewportsAsArray(),i=[],o=[];n.forEach(a=>{Bl(a.type)?o.push(a):i.push(a)}),i.length&&this._resizeVTKViewports(i,r,e),o.length&&this._resizeUsingCustomResizeHandler(o,r,e)}getViewport(e){return this._viewports.get(e)}getViewports(){return this._throwIfDestroyed(),this._getViewportsAsArray()}getStackViewport(e){this._throwIfDestroyed();const r=this.getViewport(e);if(!r)throw new Error(`Viewport with Id ${e} does not exist`);if(!(r instanceof ln))throw new Error(`Viewport with Id ${e} is not a StackViewport.`);return r}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter(r=>r instanceof ln)}getVolumeViewports(){this._throwIfDestroyed();const e=this.getViewports(),r=n=>n instanceof Mn;return e.filter(r)}render(){const r=this.getViewports().map(n=>n.id);this._setViewportsToBeRenderedNextFrame(r)}renderViewports(e){this._setViewportsToBeRenderedNextFrame(e)}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}destroy(){this.hasBeenDestroyed||(this.useCPURendering||(this._getViewportsAsArray().forEach(r=>{this.offscreenMultiRenderWindow.removeRenderer(r.id)}),this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),bd.delete(this.id),this.hasBeenDestroyed=!0)}fillCanvasWithBackgroundColor(e,r){const n=e.getContext("2d");let i;if(r){const o=r.map(a=>Math.floor(255*a));i=`rgb(${o[0]}, ${o[1]}, ${o[2]})`}else i="black";n.fillStyle=i,n.fillRect(0,0,e.width,e.height)}_normalizeViewportInputEntry(e){const{type:r,defaultOptions:n}=e;let i=n;return(!i||Object.keys(i).length===0)&&(i={background:[0,0,0],orientation:null,displayArea:null},r===mn.ORTHOGRAPHIC&&(i={...i,orientation:ju.AXIAL})),{...e,defaultOptions:i}}_normalizeViewportInputEntries(e){const r=[];return e.forEach(n=>{r.push(this._normalizeViewportInputEntry(n))}),r}_resizeUsingCustomResizeHandler(e,r=!0,n=!0){e.forEach(i=>{typeof i.resize=="function"&&i.resize()}),e.forEach(i=>{const o=i.getCamera();i.resetCamera(),r&&i.setCamera(o)}),n&&this.render()}_resizeVTKViewports(e,r=!0,n=!0){const i=e.map(o=>ba(o.element));if(i.forEach(o=>{const a=window.devicePixelRatio||1;o.width=o.clientWidth*a,o.height=o.clientHeight*a}),i.length){const{offScreenCanvasWidth:o,offScreenCanvasHeight:a}=this._resizeOffScreenCanvas(i);this._resize(e,o,a)}e.forEach(o=>{const a=o.getCamera(),s=o.getRotation(),{flipHorizontal:c}=a;o.resetCameraForResize();const l=o.getDisplayArea();r&&(l?(c&&o.setCamera({flipHorizontal:c}),s&&o.setViewPresentation({rotation:s})):o.setCamera(a))}),n&&this.render()}enableVTKjsDrivenViewport(e){const n=this._getViewportsAsArray().filter(f=>Bl(f.type)===!1),i=n.map(f=>f.canvas),o=ba(e.element);i.push(o);const{offScreenCanvasWidth:a,offScreenCanvasHeight:s}=this._resizeOffScreenCanvas(i),c=this._resize(n,a,s),l={...e,canvas:o};this.addVtkjsDrivenViewport(l,{offScreenCanvasWidth:a,offScreenCanvasHeight:s,xOffset:c})}_removeViewport(e){if(!this.getViewport(e)){console.warn(`viewport ${e} does not exist`);return}this._viewports.delete(e)}addVtkjsDrivenViewport(e,r){const{element:n,canvas:i,viewportId:o,type:a,defaultOptions:s}=e;n.tabIndex=-1;const{offScreenCanvasWidth:c,offScreenCanvasHeight:l,xOffset:f}=r,{sxStartDisplayCoords:u,syStartDisplayCoords:d,sxEndDisplayCoords:h,syEndDisplayCoords:g,sx:p,sy:v,sWidth:x,sHeight:m}=this._getViewportCoordsOnOffScreenCanvas(e,c,l,f);this.offscreenMultiRenderWindow.addRenderer({viewport:[u,d,h,g],id:o,background:s.background?s.background:[0,0,0]});const y={id:o,element:n,renderingEngineId:this.id,type:a,canvas:i,sx:p,sy:v,sWidth:x,sHeight:m,defaultOptions:s||{}};let w;if(a===mn.STACK)w=new ln(y);else if(a===mn.ORTHOGRAPHIC||a===mn.PERSPECTIVE)w=new an(y);else if(a===mn.VOLUME_3D)w=new nR(y);else throw new Error(`Viewport Type ${a} is not supported`);this._viewports.set(o,w);const C={element:n,viewportId:o,renderingEngineId:this.id};w.suppressEvents||De(Ce,Se.ELEMENT_ENABLED,C)}addCustomViewport(e){const{element:r,viewportId:n,type:i,defaultOptions:o}=e;r.tabIndex=-1;const a=ba(r),{clientWidth:s,clientHeight:c}=a;(a.width!==s||a.height!==c)&&(a.width=s,a.height=c);const l={id:n,renderingEngineId:this.id,element:r,type:i,canvas:a,sx:0,sy:0,sWidth:s,sHeight:c,defaultOptions:o||{}},f=oR[i],u=new f(l);this._viewports.set(n,u);const d={element:r,viewportId:n,renderingEngineId:this.id};De(Ce,Se.ELEMENT_ENABLED,d)}setCustomViewports(e){e.forEach(r=>{this.addCustomViewport(r)})}setVtkjsDrivenViewports(e){if(e.length){const r=e.map(a=>ba(a.element));r.forEach(a=>{const s=window.devicePixelRatio||1,c=a.getBoundingClientRect();a.width=c.width*s,a.height=c.height*s});const{offScreenCanvasWidth:n,offScreenCanvasHeight:i}=this._resizeOffScreenCanvas(r);let o=0;for(let a=0;aa.height));let o=0;return e.forEach(a=>{o+=a.width}),r.width=o,r.height=i,n.resize(),{offScreenCanvasWidth:o,offScreenCanvasHeight:i}}_resize(e,r,n){let i=0;for(let o=0;o{this._needsRender.add(r)}),this._render()}_render(){this._needsRender.size>0&&!this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}performVtkDrawCall(){const{offscreenMultiRenderWindow:e}=this,r=e.getRenderWindow(),n=e.getRenderers();if(n.length){for(let i=0;i{this._resetViewport(r)}),this._clearAnimationFrame(),this._viewports=new Map}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_downloadOffScreenCanvas(){const e=this._debugRender();ere(e)}_debugRender(){const{offscreenMultiRenderWindow:e}=this,r=e.getRenderWindow(),n=e.getRenderers();for(let c=0;c{const{sx:l,sy:f,sWidth:u,sHeight:d}=c,h=c.canvas,{width:g,height:p}=h;h.getContext("2d").drawImage(a,l,f,u,d,0,0,g,p)}),s}}function ere(t){const e=document.createElement("a");e.download="viewport.png",e.href=t,document.body.appendChild(e),e.click(),document.body.removeChild(e)}class tre{constructor(e){this._color=[200,0,0],this.id=e.id,this._points=e.points,this._polys=e.polys,this._color=e.color??this._color,this.frameOfReferenceUID=e.frameOfReferenceUID,this._segmentIndex=e.segmentIndex,this.sizeInBytes=this._getSizeInBytes(),this._updateCentroid()}_getSizeInBytes(){return this._points.length*4+this._polys.length*4}_updateCentroid(){const e=this._points.length/3;let r=0,n=0,i=0;for(let o=0;o{if(r.reset(),r.isEmpty)this._children.delete(e);else throw new Error("Child is not empty and cannot be removed")}),this._unregisterAllEvents()}_addEventListener(e,r,n){let i=this._eventListeners.get(e);i||(i=new Map,this._eventListeners.set(e,i));const a=(n==null?void 0:n.capture)??!1?vo.Capture:vo.Bubble,s=i.get(r)??vo.None;if(s&a){console.warn("A listener is already registered for this phase");return}i.set(r,s|a),this._target.addEventListener(e,r,n)}_removeEventListener(e,r,n){const o=(n==null?void 0:n.capture)??!1?vo.Capture:vo.Bubble,a=this._eventListeners.get(e);if(!a)return;(r?[r]:Array.from(a.keys())).forEach(c=>{const l=a.get(c)??vo.None;if(!!!(l&o))return;this._target.removeEventListener(e,c,n);const u=l^o;u===vo.None?a.delete(c):a.set(c,u)}),a.size||this._eventListeners.delete(e)}_unregisterAllListeners(e,r){Array.from(r.entries()).forEach(([n,i])=>{const o=vo.Capture;for(let a=o;i;a<<=1){if(!(i&a))continue;const s=a===vo.Capture;this.removeEventListener(e,n,{capture:s}),i^=a}})}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach(([e,r])=>{this._unregisterAllListeners(e,r)})}}class sR{constructor(){this._targetsEventListeners=new Map}addEventListener(e,r,n,i){let o=this._targetsEventListeners.get(e);o||(o=new f2(e),this._targetsEventListeners.set(e,o)),o.addEventListener(r,n,i)}removeEventListener(e,r,n,i){const o=this._targetsEventListeners.get(e);o&&(o.removeEventListener(r,n,i),o.isEmpty&&this._targetsEventListeners.delete(e))}reset(){Array.from(this._targetsEventListeners.entries()).forEach(([e,r])=>{r.reset(),this._targetsEventListeners.delete(e)})}}const nre=Object.freeze(Object.defineProperty({__proto__:null,MultiTargetEventListenerManager:sR,TargetEventListeners:f2},Symbol.toStringTag,{value:"Module"}));function rre(t,e){const r=t.getSize();for(let n=0;n0?r:are)>>>0).join(typeof e=="string"?e:sre)}function cre(t,e,r){let n=t[e];n instanceof Array||(n=[0],Object.defineProperty(t,e,{value:n}));for(let i=!0,o=0;i&&o{const r=Nn(t);W8[r]=e},get:(t,e)=>{if(t==="calibratedPixelSpacing"){const r=Nn(e);return W8[r]}}};function Mf(t,e,r=1e-5){return Math.abs(t[0]+e[0])=e[0]||t[1]<0||t[1]>=e[1]||t[2]<0||t[2]>=e[2])}function ure(t,e){let r;e?r=[gr(e)]:r=_i();const n=[];return r.forEach(i=>{const o=t.getActors(),a=i.getVolumeViewports();for(const s of a){const c=s.getActors();if(c.length!==o.length)continue;o.every(({uid:f})=>c.find(u=>f===u.uid))&&n.push(s)}}),n}const lR=t=>t.preScale.scaled&&t.preScale.scalingParameters.suvbw;function uR(t,e,r=void 0,n="_thumbnails",i={displayArea:{imageArea:[1,1]}}){if(!t||!(t instanceof HTMLCanvasElement))throw new Error("canvas element is required");const o=!e.imageId,a=!o&&e,s=o&&e,l=`renderGPUViewport-${a.imageId||s.volumeId}`,f=document.createElement("div"),u=window.devicePixelRatio||1;i.displayArea||(i.displayArea={imageArea:[1,1]});const d=t.width,h=t.height;f.style.width=`${d/u+U8}px`,f.style.height=`${h/u+U8}px`,f.style.visibility="hidden",f.style.position="absolute",document.body.appendChild(f);const g=l.split(":").join("-");f.setAttribute("viewport-id-for-remove",g);const p=ba(f),v=gr(n)||new aR(n);let x=v.getViewport(l);if(!x){const m={viewportId:l,type:o?mn.ORTHOGRAPHIC:mn.STACK,element:f,defaultOptions:{...i,suppressEvents:!0}};v.enableElement(m),x=v.getViewport(l)}return new Promise(m=>{let y=!1,{viewReference:w}=i;const C=S=>{if(y)return;if(w){const I=w;w=null,x.setViewReference(I),x.render();return}t.getContext("2d").drawImage(p,0,0,p.width,p.height,0,0,t.width,t.height);const _=x.canvasToWorld([0,0]),E=x.canvasToWorld([p.width/u,0]),D=x.canvasToWorld([0,p.height/u]),b=1;y=!0,f.removeEventListener(Se.IMAGE_RENDERED,C),setTimeout(()=>{v.disableElement(l),document.querySelectorAll(`[viewport-id-for-remove="${g}"]`).forEach(R=>{R.remove()})},0),m({origin:_,bottomLeft:D,topRight:E,thicknessMm:b})};f.addEventListener(Se.IMAGE_RENDERED,C),o?x.setVolumes([s],!1,!0):x.renderImageObject(e),x.resetCamera(),r==="PT"&&!lR(a)&&x.setProperties({voiRange:{lower:a.minPixelValue,upper:a.maxPixelValue}}),x.render()})}function fR(t,e,r,n,i){if(e.volumeId)throw new Error("Unsupported volume rendering for CPU");const a=e,s=tR(t,a,r),c={canvas:t,viewport:s,image:a,renderingTools:{}};c.transform=kd(c);const l=!0;return new Promise((f,u)=>{ZM(c,l),f(null)})}function fre(t){const{canvas:e,imageId:r,viewReference:n,requestType:i=ht.Thumbnail,priority:o=-5,renderingEngineId:a="_thumbnails",useCPURendering:s=!1,thumbnail:c=!1,imageAspect:l=!1,viewportOptions:f}=t,u=n==null?void 0:n.volumeId,d=u&&!r,h=n&&f?{...f,viewReference:n}:f,g=s?fR:uR;return new Promise((p,v)=>{function x(C,S){var D;const{modality:T}=Pe("generalSeriesModule",S)||{},_=!d&&C,E=d&&C;_&&(_.isPreScaled=_.isPreScaled||((D=_.preScale)==null?void 0:D.scaled)),c&&(e.height=256,e.width=256),l&&_&&(e.width=_&&e.height*_.width/_.height),e.style.width=`${e.width/devicePixelRatio}px`,e.style.height=`${e.height/devicePixelRatio}px`,E&&s&&v(new Error("CPU rendering of volume not supported")),g(e,C,T,a,h).then(p)}function m(C,S){console.error(C,S),v(C)}function y(C,S,T){return Js(C,T).then(_=>{x.call(this,_,C)},_=>{m.call(this,_,C)})}const w={useRGBA:!!s,requestType:i};if(u){const C=_e.getVolume(u);C||v(new Error(`Volume id ${u} not found in cache`));const S=C.imageIds[0];x(C,S)}else fi.addRequest(y.bind(null,r,null,w),i,{imageId:r},o)})}function u3(t,e){const r=Pe("imagePlaneModule",t);if(!r)throw new Error(`No imagePlaneModule found for imageId: ${t}`);const{columnCosines:n,rowCosines:i,imagePositionPatient:o}=r;let{columnPixelSpacing:a,rowPixelSpacing:s}=r;a||(a=1),s||(s=1);const c=we();Vt(c,o,n,-a/2),Vt(c,c,i,-s/2);const l=we();Qt(l,e,c);const f=je(l,i),u=je(l,n);return[f/s,u/a]}function dR(t,e){const r=Pe("imagePlaneModule",t);if(!r)throw new Error(`No imagePlaneModule found for imageId: ${t}`);const{columnCosines:n,rowCosines:i,imagePositionPatient:o}=r;let{columnPixelSpacing:a,rowPixelSpacing:s}=r;a||(a=1),s||(s=1);const c=we();return Vt(c,o,i,s*(e[0]-.5)),Vt(c,c,n,a*(e[1]-.5)),Array.from(c)}function J1(t){const e=_i(),r=[];return e.forEach(n=>{n.getViewports().forEach(o=>{o.hasImageURI(t)&&r.push(o)})}),r}function hR(t,e){const r=dre(t,e);return r?r.index:null}function dre(t,e){const r=e.getImageIds(),n=e.getCurrentImageIdIndex();if(r.length===0)return null;const i=c=>{const l=hre(c);if(!l)return null;const f=Ba(l.planeNormal,l.imagePositionPatient);return q1(f,t)},o={distance:i(r[n])??1/0,index:n},a=r.slice(n+1);for(let c=0;c=0;c--){const l=s[c],f=i(l);if(!(f===null||f===o.distance))if(f{const[r,n]=t,i=`${r}_${n}`;yc[i]||(yc[i]={}),yc[i]=e},get:(t,e,r)=>{if(t!=="spatialRegistrationModule")return;const n=`${e}_${r}`;if(yc[n])return yc[n];const i=`${r}_${e}`;if(yc[i])return $n(lo(),yc[i])}};S0(Fd.get.bind(Fd));const gre=.05;function gR(t,e){const r=t.getSliceIndex(),n=e.getSliceIndex(),i=Pe("imagePlaneModule",r.toString()),o=Pe("imagePlaneModule",n.toString());if(!i||!o){console.log("Viewport spatial registration requires image plane module");return}const{imageOrientationPatient:a}=o;if(!i.imageOrientationPatient.every((d,h)=>Math.abs(d-a[h])0||t[0]0||t[1]0||t[2]=this._length)return;const r=this._dimensions*e;return this.data.subarray(r,r+this._dimensions)}getPointArray(e){const r=[];if(e<0&&(e+=this._length),e<0||e>=this._length)return;const n=this._dimensions*e;for(let i=0;ie)}toXYZ(){const e={x:[],y:[]};this._dimensions>=3&&(e.z=[]);const{x:r,y:n,z:i}=e;return this.forEach(o=>{r.push(o[0]),n.push(o[1]),i&&i.push(o[2])}),e}static fromXYZ({x:e,y:r,z:n}){const i=Rf.create3(e.length);let o=0;for(let a=0;a{r.getViewports().forEach(({element:i})=>{t.push(re(i))})}),t}function yre(t){const e=re(t);if(!e)return;const{viewport:r}=e;if(!(r instanceof ln))throw new Error(`An image can only be fetched for a stack viewport and not for a viewport of type: ${r.type}`);return r.getCornerstoneImage()}function pR(t){const e=t[0],{modality:r,seriesInstanceUID:n}=Pe("generalSeriesModule",e),{imageOrientationPatient:i,pixelSpacing:o,frameOfReferenceUID:a,columns:s,rows:c}=Pe("imagePlaneModule",e),l={modality:r,imageOrientationPatient:i,pixelSpacing:o,frameOfReferenceUID:a,columns:s,rows:c,seriesInstanceUID:n};return t.every(u=>{const{modality:d,seriesInstanceUID:h}=Pe("generalSeriesModule",u),{imageOrientationPatient:g,pixelSpacing:p,columns:v,rows:x}=Pe("imagePlaneModule",u);return h===l.seriesInstanceUID&&d===l.modality&&v===l.columns&&x===l.rows&&pt(g,l.imageOrientationPatient)&&pt(p,l.pixelSpacing)})}const xre=new Set(["1.2.840.10008.1.2.4.100","1.2.840.10008.1.2.4.100.1","1.2.840.10008.1.2.4.101","1.2.840.10008.1.2.4.101.1","1.2.840.10008.1.2.4.102","1.2.840.10008.1.2.4.102.1","1.2.840.10008.1.2.4.103","1.2.840.10008.1.2.4.103.1","1.2.840.10008.1.2.4.104","1.2.840.10008.1.2.4.104.1","1.2.840.10008.1.2.4.105","1.2.840.10008.1.2.4.105.1","1.2.840.10008.1.2.4.106","1.2.840.10008.1.2.4.106.1","1.2.840.10008.1.2.4.107","1.2.840.10008.1.2.4.108"]);function mR(t){return t?(Array.isArray(t)?t:[t]).find(r=>xre.has(r)):!1}async function wre({viewport:t,options:e={}}){const r=t.getRenderingEngine();let n=e.volumeId||`${wn()}`;n.split(":").length===0&&(n=`${mte()}:${n}`);const{id:i,element:o}=t,a=e.viewportId||i,s=t.getImageIds(),c=t.getViewPresentation(),l=t.getViewReference();r.enableElement({viewportId:a,type:mn.ORTHOGRAPHIC,element:o,defaultOptions:{background:e.background,orientation:e.orientation}}),(await iC(n,{imageIds:s})).load();const u=r.getViewport(a);await Hne(r,[{volumeId:n}],[a]);const d=()=>{u.render(),o.removeEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,d)};return(()=>{o.addEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,d)})(),u.setViewPresentation(c),u.setViewReference(l),u.render(),u}async function Cre({viewport:t,options:e}){const r=t,{id:n,element:i}=r,o=t.getRenderingEngine(),{background:a}=e,s=e.viewportId||n,c=_e.getVolume(r.getVolumeId());if(!(c instanceof Sh))throw new Error("Currently, you cannot decache a volume that is not an ImageVolume. So, unfortunately, volumes such as nifti (which are basic Volume, without imageIds) cannot be decached.");const l={viewportId:s,type:mn.STACK,element:i,defaultOptions:{background:a}},f=r.getViewReference();o.enableElement(l);const u=o.getViewport(s);return await u.setStack(c.imageIds),u.setViewReference(f),u.render(),u}function yt(t,e=2){if(Array.isArray(t))return t.map(i=>yt(i,e)).join(", ");if(t==null||t==="")return"NaN";t=Number(t);const r=Math.abs(t);if(r<1e-4)return`${t}`;const n=r>=100?e-2:r>=10?e-1:r>=1?e:r>=.1?e+1:r>=.01?e+2:r>=.001?e+3:e+4;return t.toFixed(n)}function Rs(t){return Math.round(t/Lo)*Lo}function vR(t,e,r){const n=t.length===e*r*4,i=t.length===e*r*3;if(n||i){const o=new Float32Array(e*r);let a=0,s=0;const c=n?4:3;for(let l=0;l=r.length?(z8(r),r):(z8(r),r.slice(0,e))}function z8(t){for(let e=t.length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1));[t[e],t[r]]=[t[r],t[e]]}}function Gv(t){const e=t.toString(16);return e.length==1?"0"+e:e}function Sre(t,e,r){return"#"+Gv(t)+Gv(e)+Gv(r)}function Tre(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}const _re=Object.freeze(Object.defineProperty({__proto__:null,hexToRgb:Tre,rgbToHex:Sre},Symbol.toStringTag,{value:"Module"}));function wR(t,e){if(t===e)return!0;if(t==null||e==null)return!1;try{return JSON.stringify(t)===JSON.stringify(e)}catch(r){return console.debug("Error in JSON.stringify during deep comparison:",r),t===e}}function Ere(t,e,r){if(!r)throw new Error("getVolume is required, use the utilities export instead ");if(t.modality)return t.modality;if(t.setVolumes)return e=e??t.getVolumeId(),!e||!r?void 0:r(e).metadata.Modality;throw new Error("Invalid viewport type")}const Dre=(t,e)=>t.reduce((r,n)=>((r[n[e]]=r[n[e]]||[]).push(n),r),{});function bre(t){const e=t.map(a=>{const{imagePositionPatient:s}=Pe("imagePlaneModule",a)||{};return{imageId:a,imagePositionPatient:s}});if(!e.every(a=>a.imagePositionPatient))return null;const r=Dre(e,"imagePositionPatient"),n=Object.keys(r),i=r[n[0]].length;return i===1||!n.every(a=>r[a].length===i)?null:r}function Ire(t,e){const r={};let n=[];const i=Object.keys(t);for(let o=0;onf(i,r[0]),i=>nf(i,r[1]),i=>nf(i,r[2]),i=>nf(i,r[3]),i=>nf(i,r[4]),Ore,Mre,Rre,Nre];for(let i=0;ic-l).map(c=>o[c].map(l=>l.imageId)),splittingTag:r[i]}}return{imageIdGroups:[t],splittingTag:null}}function Pre(t){const{imageIdGroups:e,splittingTag:r}=CR(t);return{isDynamicVolume:e.length>1,timePoints:e,splittingTag:r}}function Are(t,e){const r=t.length,{rescaleSlope:n,rescaleIntercept:i,suvbw:o}=e;if(e.modality==="PT"&&typeof o=="number")for(let a=0;at.getImageIds().length-1||a+i<0){const s={imageIdIndex:a,direction:i};De(Ce,Se.STACK_SCROLL_OUT_OF_BOUNDS,s)}t.scroll(i,e.debounceLoading,e.loop)}}function kre(t,e,r,n=!1){const i=n,{numScrollSteps:o,currentStepIndex:a,sliceRangeInfo:s}=Iu(t,e,i);if(!s)return;const{sliceRange:c,spacingInNormalDirection:l,camera:f}=s,{focalPoint:u,viewPlaneNormal:d,position:h}=f,{newFocalPoint:g,newPosition:p}=Du(u,h,c,d,l,r);t.setCamera({focalPoint:g,position:p}),t.render();const v=a+r,x={volumeId:e,viewport:t,delta:r,desiredStepIndex:v,currentStepIndex:a,numScrollSteps:o,currentImageId:t.getCurrentImageId()};(v>o||v<0)&&t.getCurrentImageId()?De(Ce,Se.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,x):De(Ce,Se.VOLUME_VIEWPORT_SCROLL,x)}async function Ho(t,e={}){const{imageIndex:r,debounceLoading:n,volumeId:i}=e,o=re(t);if(!o)throw new Error("Element has been disabled");const{viewport:a}=o,{imageIndex:s,numberOfSlices:c}=Vre(a,n),f=Fre(c,r)-s;fl(a,{delta:f,debounceLoading:n,volumeId:i})}function Vre(t,e){return t instanceof ln?{numberOfSlices:t.getImageIds().length,imageIndex:e?t.getTargetImageIdIndex():t.getCurrentImageIdIndex()}:{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getSliceIndex()}}function Fre(t,e){const r=t-1;return Q1(e,0,r)}const SR=(t,e)=>Ere(t,e,_e.getVolume),Yt=Object.freeze(Object.defineProperty({__proto__:null,PointsManager:mre,ProgressiveIterator:j1,RLEVoxelMap:EM,VoxelManager:es,actorIsA:ci,applyPreset:$M,autoLoad:i3,calculateViewportsSpatialRegistration:gR,calibratedPixelSpacingMetadataProvider:lre,clamp:c3,clip:Q1,color:_re,colormap:fZ,convertStackToVolumeViewport:wre,convertToGrayscale:vR,convertVolumeToStackViewport:Cre,createLinearRGBTransferFunction:XM,createSigmoidRGBTransferFunction:eC,decimate:AM,deepClone:to,deepEqual:wR,deepMerge:Zr,eventListener:nre,generateVolumePropsFromImageIds:rC,genericMetadataProvider:Ms,getBufferConfiguration:zw,getClosestImageId:Xa,getClosestStackImageIndexForPoint:hR,getCurrentVolumeViewportSlice:gC,getDynamicVolumeInfo:Pre,getImageLegacy:yre,getImageSliceDataForVolumeViewport:K1,getMinMax:l2,getRandomSampleFromArray:xR,getRuntimeId:cR,getScalingParameters:NM,getSliceRange:s2,getSpacingInNormalDirection:qa,getTargetVolumeAndSpacingInNormalDir:E0,getViewportImageCornersInWorld:Z1,getViewportImageIds:yR,getViewportModality:SR,getViewportsWithImageURI:J1,getViewportsWithVolumeId:Th,getVoiFromSigmoidRGBTransferFunction:zM,getVolumeActorCorners:AO,getVolumeId:da,getVolumeSliceRangeInfo:WM,getVolumeViewportScrollInfo:Iu,getVolumeViewportsContainingSameVolumes:ure,hasFloatScalingParameters:nC,hasNaNValues:o3,imageIdToURI:Nn,imageRetrieveMetadataProvider:Ad,imageToWorldCoords:dR,indexWithinDimensions:In,invertRgbTransferFunction:qf,isEqual:pt,isEqualAbs:lZ,isEqualNegative:JO,isImageActor:Xo,isOpposite:Mf,isPTPrescaledWithSUV:lR,isValidVolume:pR,isVideoTransferSyntax:mR,jumpToSlice:Ho,loadImageToCanvas:fre,makeVolumeMetadata:RM,planar:Ote,pointInShapeCallback:hC,renderToCanvasCPU:fR,renderToCanvasGPU:uR,roundNumber:yt,roundToPrecision:Rs,scaleArray:Are,scaleRgbTransferFunction:rre,scroll:fl,snapFocalPointToSlice:Du,sortImageIdsAndGetSpacing:LM,spatialRegistrationMetadataProvider:Fd,splitImageIdsBy4DTags:CR,transferFunctionUtils:hZ,transformIndexToWorld:X1,transformWorldToIndex:Gn,triggerEvent:De,updateVTKImageDataWithCornerstoneImage:u2,uuidv4:wn,windowLevel:dZ,worldToImageCoords:u3},Symbol.toStringTag,{value:"Module"})),_h=new Xw("imageRetrievalPool");_h.setMaxSimultaneousRequests(ht.Interaction,200);_h.setMaxSimultaneousRequests(ht.Thumbnail,200);_h.setMaxSimultaneousRequests(ht.Prefetch,200);_h.grabDelay=0;const $8=Symbol("DefaultSettings"),j8=Symbol("RuntimeSettings"),H8=Symbol("ObjectSettingsMap"),xa=Symbol("Dictionary");class hn{constructor(e){const r=Object.create(e instanceof hn&&xa in e?e[xa]:null);Object.seal(Object.defineProperty(this,xa,{value:r}))}set(e,r){return em(this[xa],e,r,null)}get(e){return Gre(this[xa],e)}unset(e){return Ure(this[xa],e+"")}forEach(e){K8(this[xa],e)}extend(){return new hn(this)}import(e){TR(e)&&Object.keys(e).forEach(r=>{em(this[xa],r,e[r],null)})}dump(){const e={};return K8(this[xa],(r,n)=>{typeof n<"u"&&_R(e,r,n)}),e}static assert(e){return e instanceof hn?e:hn.getRuntimeSettings()}static getDefaultSettings(e=null){let r=hn[$8];if(r instanceof hn||(r=new hn,hn[$8]=r),e){const n={};return r.forEach(i=>{if(i.startsWith(e)){const o=i.split(`${e}.`)[1];n[o]=r.get(i)}}),n}return r}static getRuntimeSettings(){let e=hn[j8];return e instanceof hn||(e=new hn(hn.getDefaultSettings()),hn[j8]=e),e}static getObjectSettings(e,r){let n=null;if(e instanceof hn)n=e;else if(typeof e=="object"&&e!==null){let i=hn[H8];i instanceof WeakMap||(i=new WeakMap,hn[H8]=i),n=i.get(e),n instanceof hn||(n=new hn(hn.assert(hn.getObjectSettings(r))),i.set(e,n))}return n}static extendRuntimeSettings(){return hn.getRuntimeSettings().extend()}}function Ure(t,e){if(e.endsWith(".")){let r=0;const n=e,i=n.slice(0,-1),o=i.length===0;for(const a in t)Object.prototype.hasOwnProperty.call(t,a)&&(o||a.startsWith(n)||a===i)&&(delete t[a],++r);return r>0}return delete t[e]}function K8(t,e){for(const r in t)e(r,t[r])}function Bre(t,e,r,n){let i;if(n.has(r))return em(t,e,null,n);n.add(r),i=0;for(const o in r)if(Object.prototype.hasOwnProperty.call(r,o)){const a=o.length===0?e:`${e}.${o}`;em(t,a,r[o],n)||++i}return n.delete(r),i===0}function em(t,e,r,n){return Wre(e)?TR(r)?Bre(t,e,r,n instanceof WeakSet?n:new WeakSet):(t[e]=r,!0):!1}function Gre(t,e){return t[e]}function Wre(t){let e,r,n;if(typeof t!="string"||(e=t.length-1)<0)return!1;for(n=-1;(r=t.indexOf(".",n+1))>=0;){if(r-n<2||r===e)return!1;n=r}return!0}function TR(t){if(typeof t=="object"&&t!==null){const e=Object.getPrototypeOf(t);if(e===Object.prototype||e===null)return!0}return!1}function _R(t,e,r){const n=e.indexOf(".");if(n>=0){const i=e.slice(0,n);let o=t[i];if(typeof o!="object"||o===null){const a=o;o={},typeof a<"u"&&(o[""]=a),t[i]=o}_R(o,e.slice(n+1,e.length),r)}else t[e]=r}hn.getDefaultSettings().set("useCursors",!0);function Up(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function zre(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function ER(t){let e,r,n;t.length!==2?(e=Up,r=(s,c)=>Up(t(s),c),n=(s,c)=>t(s)-c):(e=t===Up||t===zre?t:$re,r=t,n=t);function i(s,c,l=0,f=s.length){if(l>>1;r(s[u],c)<0?l=u+1:f=u}while(l>>1;r(s[u],c)<=0?l=u+1:f=u}while(ll&&n(s[u-1],c)>-n(s[u],c)?u-1:u}return{left:i,center:a,right:o}}function $re(){return 0}function jre(t){return t===null?NaN:+t}const Hre=ER(Up),Kre=Hre.right;ER(jre).center;const qre=Math.sqrt(50),Xre=Math.sqrt(10),Yre=Math.sqrt(2);function tm(t,e,r){const n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),a=o>=qre?10:o>=Xre?5:o>=Yre?2:1;let s,c,l;return i<0?(l=Math.pow(10,-i)/a,s=Math.round(t*l),c=Math.round(e*l),s/le&&--c,l=-l):(l=Math.pow(10,i)*a,s=Math.round(t/l),c=Math.round(e/l),s*le&&--c),c0))return[];if(t===e)return[t];const n=e=i))return[];const s=o-i+1,c=new Array(s);if(n)if(a<0)for(let l=0;ln||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}function eie(t){if(!(o=t.length))return[];for(var e=-1,r=Qre(t,tie),n=new Array(r);++e>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Og(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Og(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=iie.exec(t))?new xi(e[1],e[2],e[3],1):(e=oie.exec(t))?new xi(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=aie.exec(t))?Og(e[1],e[2],e[3],e[4]):(e=sie.exec(t))?Og(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=cie.exec(t))?t_(e[1],e[2]/100,e[3]/100,1):(e=lie.exec(t))?t_(e[1],e[2]/100,e[3]/100,e[4]):X8.hasOwnProperty(t)?Z8(X8[t]):t==="transparent"?new xi(NaN,NaN,NaN,0):null}function Z8(t){return new xi(t>>16&255,t>>8&255,t&255,1)}function Og(t,e,r,n){return n<=0&&(t=e=r=NaN),new xi(t,e,r,n)}function die(t){return t instanceof Eh||(t=Gd(t)),t?(t=t.rgb(),new xi(t.r,t.g,t.b,t.opacity)):new xi}function d3(t,e,r,n){return arguments.length===1?die(t):new xi(t,e,r,n??1)}function xi(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}pC(xi,d3,DR(Eh,{brighter(t){return t=t==null?nm:Math.pow(nm,t),new xi(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ud:Math.pow(Ud,t),new xi(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new xi(Yc(this.r),Yc(this.g),Yc(this.b),rm(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Q8,formatHex:Q8,formatHex8:hie,formatRgb:e_,toString:e_}));function Q8(){return`#${Gc(this.r)}${Gc(this.g)}${Gc(this.b)}`}function hie(){return`#${Gc(this.r)}${Gc(this.g)}${Gc(this.b)}${Gc((isNaN(this.opacity)?1:this.opacity)*255)}`}function e_(){const t=rm(this.opacity);return`${t===1?"rgb(":"rgba("}${Yc(this.r)}, ${Yc(this.g)}, ${Yc(this.b)}${t===1?")":`, ${t})`}`}function rm(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Yc(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Gc(t){return t=Yc(t),(t<16?"0":"")+t.toString(16)}function t_(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new _o(t,e,r,n)}function bR(t){if(t instanceof _o)return new _o(t.h,t.s,t.l,t.opacity);if(t instanceof Eh||(t=Gd(t)),!t)return new _o;if(t instanceof _o)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),o=Math.max(e,r,n),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(r-n)/s+(r0&&c<1?0:a,new _o(a,s,c,t.opacity)}function gie(t,e,r,n){return arguments.length===1?bR(t):new _o(t,e,r,n??1)}function _o(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}pC(_o,gie,DR(Eh,{brighter(t){return t=t==null?nm:Math.pow(nm,t),new _o(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ud:Math.pow(Ud,t),new _o(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new xi(Wv(t>=240?t-240:t+120,i,n),Wv(t,i,n),Wv(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new _o(n_(this.h),Mg(this.s),Mg(this.l),rm(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=rm(this.opacity);return`${t===1?"hsl(":"hsla("}${n_(this.h)}, ${Mg(this.s)*100}%, ${Mg(this.l)*100}%${t===1?")":`, ${t})`}`}}));function n_(t){return t=(t||0)%360,t<0?t+360:t}function Mg(t){return Math.max(0,Math.min(1,t||0))}function Wv(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}function pie(t,e,r,n,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*r+(1+3*t+3*o-3*a)*n+a*i)/6}function zv(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],o=t[n+1],a=n>0?t[n-1]:2*i-o,s=n()=>t;function mie(t,e){return function(r){return t+r*e}}function vie(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function yie(t){return(t=+t)==1?IR:function(e,r){return r-e?vie(e,r,t):mC(isNaN(e)?r:e)}}function IR(t,e){var r=e-t;return r?mie(t,r):mC(isNaN(t)?e:t)}const r_=function t(e){var r=yie(e);function n(i,o){var a=r((i=d3(i)).r,(o=d3(o)).r),s=r(i.g,o.g),c=r(i.b,o.b),l=IR(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=l(f),i+""}}return n.gamma=t,n}(1);function xie(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(o){for(i=0;ir&&(o=e.slice(r,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:im(n,i)})),r=$v.lastIndex;return re&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Rie(t,e,r){var n=t[0],i=t[1],o=e[0],a=e[1];return i2?Lie:Rie,c=l=null,u}function u(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(n),e,r)))(n(a(d)))}return u.invert=function(d){return a(i((l||(l=s(e,t.map(n),im)))(d)))},u.domain=function(d){return arguments.length?(t=Array.from(d,Oie),f()):t.slice()},u.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},u.rangeRound=function(d){return e=Array.from(d),r=bie,f()},u.clamp=function(d){return arguments.length?(a=d?!0:cu,f()):a!==cu},u.interpolate=function(d){return arguments.length?(r=d,f()):r},u.unknown=function(d){return arguments.length?(o=d,u):o},function(d,h){return n=d,i=h,f()}}function Aie(){return Pie()(cu,cu)}function kie(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function om(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Qu(t){return t=om(Math.abs(t)),t?t[1]:NaN}function Vie(t,e){return function(r,n){for(var i=r.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>n&&(s=Math.max(1,n-c)),o.push(r.substring(i-=s,i+s)),!((c+=s+1)>n));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function Fie(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var Uie=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function am(t){if(!(e=Uie.exec(t)))throw new Error("invalid format: "+t);var e;return new yC({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}am.prototype=yC.prototype;function yC(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}yC.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Bie(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var OR;function Gie(t,e){var r=om(t,e);if(!r)return t+"";var n=r[0],i=r[1],o=i-(OR=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=n.length;return o===a?n:o>a?n+new Array(o-a+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+om(t,Math.max(0,e+o-1))[0]}function o_(t,e){var r=om(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}const a_={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:kie,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>o_(t*100,e),r:o_,s:Gie,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function s_(t){return t}var c_=Array.prototype.map,l_=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Wie(t){var e=t.grouping===void 0||t.thousands===void 0?s_:Vie(c_.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?s_:Fie(c_.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"−":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function l(u){u=am(u);var d=u.fill,h=u.align,g=u.sign,p=u.symbol,v=u.zero,x=u.width,m=u.comma,y=u.precision,w=u.trim,C=u.type;C==="n"?(m=!0,C="g"):a_[C]||(y===void 0&&(y=12),w=!0,C="g"),(v||d==="0"&&h==="=")&&(v=!0,d="0",h="=");var S=p==="$"?r:p==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",T=p==="$"?n:/[%p]/.test(C)?a:"",_=a_[C],E=/[defgprs%]/.test(C);y=y===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function D(b){var I=S,R=T,M,L,A;if(C==="c")R=_(b)+R,b="";else{b=+b;var G=b<0||1/b<0;if(b=isNaN(b)?c:_(Math.abs(b),y),w&&(b=Bie(b)),G&&+b==0&&g!=="+"&&(G=!1),I=(G?g==="("?g:s:g==="-"||g==="("?"":g)+I,R=(C==="s"?l_[8+OR/3]:"")+R+(G&&g==="("?")":""),E){for(M=-1,L=b.length;++MA||A>57){R=(A===46?i+b.slice(M+1):b.slice(M))+R,b=b.slice(0,M);break}}}m&&!v&&(b=e(b,1/0));var P=I.length+b.length+R.length,N=P>1)+I+b+R+N.slice(P);break;default:b=N+I+b+R;break}return o(b)}return D.toString=function(){return u+""},D}function f(u,d){var h=l((u=am(u),u.type="f",u)),g=Math.max(-8,Math.min(8,Math.floor(Qu(d)/3)))*3,p=Math.pow(10,-g),v=l_[8+g/3];return function(x){return h(p*x)+v}}return{format:l,formatPrefix:f}}var Rg,MR,RR;zie({thousands:",",grouping:[3],currency:["$",""]});function zie(t){return Rg=Wie(t),MR=Rg.format,RR=Rg.formatPrefix,Rg}function $ie(t){return Math.max(0,-Qu(Math.abs(t)))}function jie(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Qu(e)/3)))*3-Qu(Math.abs(t)))}function Hie(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Qu(e)-Qu(t))+1}function Kie(t,e,r,n){var i=Zre(t,e,r),o;switch(n=am(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(o=jie(i,a))&&(n.precision=o),RR(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=Hie(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=$ie(i))&&(n.precision=o-(n.type==="%")*2);break}}return MR(n)}function qie(t){var e=t.domain;return t.ticks=function(r){var n=e();return Jre(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return Kie(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,o=n.length-1,a=n[i],s=n[o],c,l,f=10;for(s0;){if(l=f3(a,s,r),l===c)return n[i]=a,n[o]=s,e(n);if(l>0)a=Math.floor(a/l)*l,s=Math.ceil(s/l)*l;else if(l<0)a=Math.ceil(a*l)/l,s=Math.floor(s*l)/l;else break;c=l}return t},t}function xC(){var t=Aie();return t.copy=function(){return Nie(t,xC())},nie.apply(t,arguments),qie(t)}function Xie(t,e){e.classHierarchy.push("vtkTexture"),t.imageLoaded=()=>{e.image.removeEventListener("load",t.imageLoaded),e.imageLoaded=!0,t.modified()},t.setJsImageData=r=>{e.jsImageData!==r&&(r!==null&&(t.setInputData(null),t.setInputConnection(null),e.image=null,e.canvas=null),e.jsImageData=r,e.imageLoaded=!0,t.modified())},t.setCanvas=r=>{e.canvas!==r&&(r!==null&&(t.setInputData(null),t.setInputConnection(null),e.image=null,e.jsImageData=null),e.canvas=r,t.modified())},t.setImage=r=>{e.image!==r&&(r!==null&&(t.setInputData(null),t.setInputConnection(null),e.canvas=null,e.jsImageData=null),e.image=r,e.imageLoaded=!1,r.complete?t.imageLoaded():r.addEventListener("load",t.imageLoaded),t.modified())},t.getDimensionality=()=>{let r=0,n=0,i=1;if(t.getInputData()){const a=t.getInputData();r=a.getDimensions()[0],n=a.getDimensions()[1],i=a.getDimensions()[2]}return e.jsImageData&&(r=e.jsImageData.width,n=e.jsImageData.height),e.canvas&&(r=e.canvas.width,n=e.canvas.height),e.image&&(r=e.image.width,n=e.image.height),(r>1)+(n>1)+(i>1)},t.getInputAsJsImageData=()=>{if(!e.imageLoaded||t.getInputData())return null;if(e.jsImageData)return e.jsImageData();if(e.canvas)return e.canvas.getContext("2d").getImageData(0,0,e.canvas.width,e.canvas.height);if(e.image){const r=document.createElement("canvas");r.width=e.image.width,r.height=e.image.height;const n=r.getContext("2d");return n.translate(0,r.height),n.scale(1,-1),n.drawImage(e.image,0,0,e.image.width,e.image.height),n.getImageData(0,0,r.width,r.height)}return null}}const Yie=(t,e,r,n)=>{const i=[1,2,1],o=4,a=i,s=o,c=t.length/(e*r);let l=e,f=r,u=t;const d=[u];for(let h=0;hc&&(_+=p),E<-c&&(_-=p),x[_]?S+=x[_]*a[T]:C-=a[T],w+=1}u[m+y]=S/C}x=[...u];for(let m=0;m2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jie,r),W.obj(t,e),W.algo(t,e,6,0),W.get(t,e,["canvas","image","jsImageData","imageLoaded","resizable"]),W.setGet(t,e,["repeat","edgeClamp","interpolate","mipLevel"]),Xie(t,e)}const Zie=W.newInstance(LR,"vtkTexture"),Qie={generateMipmaps:Yie};var Dh={newInstance:Zie,extend:LR,...Qie};const eoe=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],u_=[[8,7,11,3],[9,1,10,5],[4,9,0,8],[2,11,6,10],[0,3,2,1],[4,5,6,7]],Lg=[[0,1],[1,3],[2,3],[0,2],[4,5],[5,7],[6,7],[4,6],[0,4],[1,5],[3,7],[2,6]],f_=[0,1,0,1,0,1,0,1,2,2,2,2],Rn=[[1,2],[1,2],[0,2],[0,2],[0,1],[0,1]],gt=new Float64Array(3),Ng=new Float64Array(3),Jt=new Float64Array(3),Pc=new Float64Array(3),xc=new Float64Array(3),Pg=new Float64Array(3),jv=new Float64Array(16);function Hv(t,e){t.strokeStyle=e.strokeColor,t.lineWidth=e.strokeSize,t.fillStyle=e.fontColor,t.font=`${e.fontStyle} ${e.fontSize}px ${e.fontFamily}`}function NR(t){const e=[],r=[];for(let n=0;n<3;n++){const i=xC().domain([t[n*2],t[n*2+1]]);e[n]=i.ticks(5);const o=i.tickFormat(5);r[n]=e[n].map(o)}return{ticks:e,tickStrings:r}}function toe(t,e){e.classHierarchy.push("vtkCubeAxesActorHelper"),t.setRenderable=r=>{e.renderable!==r&&(e.renderable=r,e.tmActor.addTexture(e.renderable.getTmTexture()),e.tmActor.setProperty(r.getProperty()),e.tmActor.setParentProp(r),t.modified())},t.createPolyDataForOneLabel=(r,n,i,o,a,s,c)=>{const l=e.renderable.get_tmAtlas().get(r);if(!l)return;const f=e.renderable.getTextPolyData().getPoints().getData(),u=e.lastSize;gt[0]=f[n*3],gt[1]=f[n*3+1],gt[2]=f[n*3+2],et(Jt,gt,i),Jt[0]+=.1,et(Ng,Jt,o),kt(xc,Ng,gt),Jt[0]-=.1,Jt[1]+=.1,et(Ng,Jt,o),kt(Pg,Ng,gt);for(let g=0;g<3;g++)xc[g]/=.5*.1*u[0],Pg[g]/=.5*.1*u[1];let d=c.ptIdx,h=c.cellIdx;gt[0]=f[n*3],gt[1]=f[n*3+1],gt[2]=f[n*3+2],a[0]<-.5?lr(Jt,xc,a[0]*s-l.width):a[0]>.5?lr(Jt,xc,a[0]*s):lr(Jt,xc,a[0]*s-l.width/2),xn(gt,gt,Jt),lr(Jt,Pg,a[1]*s-l.height/2),xn(gt,gt,Jt),c.points[d*3]=gt[0],c.points[d*3+1]=gt[1],c.points[d*3+2]=gt[2],c.tcoords[d*2]=l.tcoords[0],c.tcoords[d*2+1]=l.tcoords[1],d++,lr(Jt,xc,l.width),xn(gt,gt,Jt),c.points[d*3]=gt[0],c.points[d*3+1]=gt[1],c.points[d*3+2]=gt[2],c.tcoords[d*2]=l.tcoords[2],c.tcoords[d*2+1]=l.tcoords[3],d++,lr(Jt,Pg,l.height),xn(gt,gt,Jt),c.points[d*3]=gt[0],c.points[d*3+1]=gt[1],c.points[d*3+2]=gt[2],c.tcoords[d*2]=l.tcoords[4],c.tcoords[d*2+1]=l.tcoords[5],d++,lr(Jt,xc,l.width),kt(gt,gt,Jt),c.points[d*3]=gt[0],c.points[d*3+1]=gt[1],c.points[d*3+2]=gt[2],c.tcoords[d*2]=l.tcoords[6],c.tcoords[d*2+1]=l.tcoords[7],d++,c.polys[h*4]=3,c.polys[h*4+1]=d-4,c.polys[h*4+2]=d-3,c.polys[h*4+3]=d-2,h++,c.polys[h*4]=3,c.polys[h*4+1]=d-4,c.polys[h*4+2]=d-2,c.polys[h*4+3]=d-1,c.ptIdx+=4,c.cellIdx+=2},t.updateTexturePolyData=()=>{const r=e.camera.getCompositeProjectionMatrix(e.lastAspectRatio,-1,1);St(r,r);const n=e.renderable.getTextValues().length,i=n*4,o=n*2,a=new Float64Array(i*3),s=new Uint16Array(o*4),c=new Float32Array(i*2);$n(jv,r);const l={ptIdx:0,cellIdx:0,polys:s,points:a,tcoords:c};let f=0,u=0,d=0;const h=e.renderable.getTextPolyData().getPoints().getData(),g=e.renderable.getTextValues();for(;f{(e.lastSize[0]!==r[0]||e.lastSize[1]!==r[1])&&(e.lastSize[0]=r[0],e.lastSize[1]=r[1],e.lastAspectRatio=r[0]/r[1],e.forceUpdate=!0),e.camera=n,t.updateTexturePolyData()}}const noe=W.newInstance(function(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),W.obj(t,e),e.tmPolyData=hr.newInstance(),e.tmMapper=oa.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmActor=ca.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),W.setGet(t,e,["renderable"]),W.get(t,e,["lastSize","lastAspectRatio","axisTextStyle","tickTextStyle","tmActor","ticks"]),e.forceUpdate=!1,e.lastRedrawTime={},W.obj(e.lastRedrawTime,{mtime:0}),e.lastRebuildTime={},W.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.lastTickBounds=[],toe(t,e)},"vtkCubeAxesActorHelper");function roe(t,e){e.classHierarchy.push("vtkCubeAxesActor"),t.setCamera=n=>{e.camera!==n&&(e.cameraModifiedSub&&(e.cameraModifiedSub.unsubscribe(),e.cameraModifiedSub=null),e.camera=n,n&&(e.cameraModifiedSub=n.onModified(t.update)),t.update(),t.modified())},t.computeFacesToDraw=()=>{const n=e.camera.getViewMatrix();St(n,n);let i=!1;const o=qt.getDiagonalLength(e.dataBounds),a=Math.sin(e.faceVisibilityAngle*Math.PI/180);for(let s=0;s<6;s++){let c=!1;const l=Math.floor(s/2),f=(l+1)%3,u=(l+2)%3;e.dataBounds[f*2]!==e.dataBounds[f*2+1]&&e.dataBounds[u*2]!==e.dataBounds[u*2+1]&&(gt[l]=e.dataBounds[s]-.1*o*eoe[s][l],gt[f]=.5*(e.dataBounds[f*2]+e.dataBounds[f*2+1]),gt[u]=.5*(e.dataBounds[u*2]+e.dataBounds[u*2+1]),et(Jt,gt,n),gt[l]=e.dataBounds[s],et(Pc,gt,n),kt(Jt,Pc,Jt),on(Jt,Jt),c=Jt[2]>a,e.camera.getParallelProjection()||(on(Pc,Pc),c=je(Pc,Jt)>a)),c!==e.lastFacesToDraw[s]&&(e.lastFacesToDraw[s]=c,i=!0)}return i},t.updatePolyData=(n,i,o)=>{let a=0,s=0;a+=8;let c=0;for(let h=0;h<12;h++)i[h]>0&&c++;if(s+=c,e.gridLines)for(let h=0;h<6;h++)n[h]&&(a+=o[Rn[h][0]].length*2+o[Rn[h][1]].length*2,s+=o[Rn[h][0]].length+o[Rn[h][1]].length);const l=new Float64Array(a*3),f=new Uint32Array(s*3);let u=0,d=0;for(let h=0;h<2;h++)for(let g=0;g<2;g++)for(let p=0;p<2;p++)l[u*3]=e.dataBounds[p],l[u*3+1]=e.dataBounds[2+g],l[u*3+2]=e.dataBounds[4+h],u++;for(let h=0;h<12;h++)i[h]>0&&(f[d*3]=2,f[d*3+1]=Lg[h][0],f[d*3+2]=Lg[h][1],d++);if(e.gridLines){for(let h=0;h<6;h++)if(n[h]){const g=Math.floor(h/2);let p=o[Rn[h][0]];for(let v=0;v{let s=0;for(let h=0;h<12;h++)i[h]===1&&(s+=2,s+=o[f_[h]].length);const c=e.polyData.getPoints().getData(),l=new Float64Array(s*3);let f=0,u=0,d=0;for(let h=0;h<6;h++)if(n[h])for(let g=0;g<4;g++){const p=u_[h][g];if(i[p]===1){const v=f_[p],x=Lg[p][0]*3,m=Lg[p][1]*3;l[f*3]=.5*(c[x]+c[m]),l[f*3+1]=.5*(c[x+1]+c[m+1]),l[f*3+2]=.5*(c[x+2]+c[m+2]),f++;const y=Math.floor(h/2);l[f*3+y]=e.dataBounds[h],l[f*3+Rn[h][0]]=.5*(e.dataBounds[Rn[h][0]*2]+e.dataBounds[Rn[h][0]*2+1]),l[f*3+Rn[h][1]]=.5*(e.dataBounds[Rn[h][1]*2]+e.dataBounds[Rn[h][1]*2+1]),f++,e.textValues[u]=e.axisLabels[v],u++;const w=(v+1)%3,C=(v+2)%3,S=o[v],T=a[v];e.tickCounts[d]=S.length;for(let _=0;_{if(!e.camera)return;const n=t.computeFacesToDraw(),i=e.lastFacesToDraw;let o=!1;for(let a=0;a<6;a++)e.dataBounds[a]!==e.lastTickBounds[a]&&(o=!0,e.lastTickBounds[a]=e.dataBounds[a]);if(n||o||e.forceUpdate){const a=new Array(12).fill(0);for(let c=0;c<6;c++)if(i[c])for(let l=0;l<4;l++)a[u_[c][l]]++;const s=e.generateTicks(e.dataBounds);t.updatePolyData(i,a,s.ticks),t.updateTextData(i,a,s.ticks,s.tickStrings),(o||e.forceUpdate)&&t.updateTextureAtlas(s.tickStrings)}e.forceUpdate=!1},t.updateTextureAtlas=n=>{e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e._tmAtlas.clear();let i=0,o=1;for(let a=0;a<3;a++){if(!e._tmAtlas.has(e.axisLabels[a])){Hv(e.tmContext,e.axisTextStyle);const s=e.tmContext.measureText(e.axisLabels[a]),c={height:s.actualBoundingBoxAscent+2,startingHeight:o,width:s.width+2,textStyle:e.axisTextStyle};e._tmAtlas.set(e.axisLabels[a],c),o+=c.height,i{a.tcoords=[0,(o-a.startingHeight-a.height)/o,a.width/i,(o-a.startingHeight-a.height)/o,a.width/i,(o-a.startingHeight)/o,0,(o-a.startingHeight)/o]}),e.tmCanvas.width=i,e.tmCanvas.height=o,e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e.tmContext.clearRect(0,0,i,o),e._tmAtlas.forEach((a,s)=>{Hv(e.tmContext,a.textStyle),e.tmContext.fillText(s,1,a.startingHeight+a.height-1)}),e.tmTexture.setCanvas(e.tmCanvas),e.tmTexture.modified()},t.onModified(()=>{e.forceUpdate=!0,t.update()}),t.setTickTextStyle=n=>{e.tickTextStyle={...e.tickTextStyle,...n},t.modified()},t.setAxisTextStyle=n=>{e.axisTextStyle={...e.axisTextStyle,...n},t.modified()},t.get_tmAtlas=()=>e._tmAtlas,t.getBounds=()=>(t.update(),qt.setBounds(e.bounds,e.gridActor.getBounds()),qt.scaleAboutCenter(e.bounds,e.boundsScaleFactor,e.boundsScaleFactor,e.boundsScaleFactor),e.bounds);const r=W.chain(t.setProperty,e.gridActor.setProperty);t.setProperty=n=>r(n)[0]}function ioe(t,e,r){return{boundsScaleFactor:1.3,camera:null,dataBounds:[...qt.INIT_BOUNDS],faceVisibilityAngle:8,gridLines:!0,axisLabels:null,axisTitlePixelOffset:35,tickLabelPixelOffset:12,generateTicks:NR,...r,axisTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:18,fontFamily:"serif",...r==null?void 0:r.axisTextStyle},tickTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:14,fontFamily:"serif",...r==null?void 0:r.tickTextStyle}}}function PR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};ca.extend(t,e,ioe(t,e,r)),e.lastFacesToDraw=[!1,!1,!1,!1,!1,!1],e.axisLabels=["X-Axis","Y-Axis","Z-Axis"],e.tickCounts=[],e.textValues=[],e.lastTickBounds=[],e.tmCanvas=document.createElement("canvas"),e.tmContext=e.tmCanvas.getContext("2d"),e._tmAtlas=new Map,e.tmTexture=Dh.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),e.gridMapper=oa.newInstance(),e.polyData=hr.newInstance(),e.gridMapper.setInputData(e.polyData),e.gridActor=ca.newInstance(),e.gridActor.setMapper(e.gridMapper),e.gridActor.setProperty(t.getProperty()),e.gridActor.setParentProp(t),e.textPolyData=hr.newInstance(),W.setGet(t,e,["axisTitlePixelOffset","boundsScaleFactor","faceVisibilityAngle","gridLines","tickLabelPixelOffset","generateTicks"]),W.setGetArray(t,e,["dataBounds"],6),W.setGetArray(t,e,["axisLabels"],3),W.get(t,e,["axisTextStyle","tickTextStyle","camera","tmTexture","textValues","textPolyData","tickCounts","gridActor"]),roe(t,e)}const ooe=W.newInstance(PR,"vtkCubeAxesActor");var AR={newInstance:ooe,extend:PR,newCubeAxesActorHelper:noe,defaultGenerateTicks:NR};function aoe(t,e){e.classHierarchy.push("vtkOpenGLCubeAxesActor"),t.buildPass=r=>{r&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.CubeAxesActorHelper.getRenderable()||e.CubeAxesActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.CubeAxesActorHelper.getTmActor()),t.addMissingNode(e.renderable.getGridActor()),t.removeUnusedNodes())},t.opaquePass=(r,n)=>{if(r){const i=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,o=e._openGLRenderer.getTiledSizeAndOrigin();e.CubeAxesActorHelper.updateAPISpecificData([o.usize,o.vsize],i,e._openGLRenderWindow.getRenderable())}}}const soe={};function coe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,soe,r),tn.extend(t,e,r),e.CubeAxesActorHelper=AR.newCubeAxesActorHelper(),aoe(t,e)}const loe=Bt(coe,"vtkOpenGLCubeAxesActor");ir("vtkCubeAxesActor",loe);const{ColorMode:uoe,ScalarMode:wc,GetArray:Kv}=t2;function foe(t,e){e.classHierarchy.push("vtkMapper2D"),t.createDefaultLookupTable=()=>{e.lookupTable=A1.newInstance()},t.getColorModeAsString=()=>W.enumToString(uoe,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>W.enumToString(wc,e.scalarMode),t.setScalarModeToDefault=()=>t.setScalarMode(0),t.setScalarModeToUsePointData=()=>t.setScalarMode(1),t.setScalarModeToUseCellData=()=>t.setScalarMode(2),t.setScalarModeToUsePointFieldData=()=>t.setScalarMode(3),t.setScalarModeToUseCellFieldData=()=>t.setScalarMode(4),t.setScalarModeToUseFieldData=()=>t.setScalarMode(5),t.getAbstractScalars=(r,n,i,o,a)=>{if(!r||!e.scalarVisibility)return{scalars:null,cellFLag:!1};let s=null,c=!1;if(n===wc.DEFAULT)s=r.getPointData().getScalars(),s||(s=r.getCellData().getScalars(),c=!0);else if(n===wc.USE_POINT_DATA)s=r.getPointData().getScalars();else if(n===wc.USE_CELL_DATA)s=r.getCellData().getScalars(),c=!0;else if(n===wc.USE_POINT_FIELD_DATA){const l=r.getPointData();i===Kv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===wc.USE_CELL_FIELD_DATA){const l=r.getCellData();c=!0,i===Kv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}else if(n===wc.USE_FIELD_DATA){const l=r.getFieldData();i===Kv.BY_ID?s=l.getArrayByIndex(o):s=l.getArrayByName(a)}return{scalars:s,cellFlag:c}},t.getLookupTable=()=>(e.lookupTable||t.createDefaultLookupTable(),e.lookupTable),t.getMTime=()=>{let r=e.mtime;if(e.lookupTable!==null){const n=e.lookupTable.getMTime();r=n>r?n:r}return r},t.mapScalars=(r,n)=>{const i=t.getAbstractScalars(r,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!i){e.colorMapColors=null;return}const o=`${t.getMTime()}${i.getMTime()}${n}`;if(e.colorBuildString===o)return;e.useLookupTableScalarRange||t.getLookupTable().setRange(e.scalarRange[0],e.scalarRange[1]);const a=t.getLookupTable();a&&(a.build(),e.colorMapColors=a.mapScalars(i,e.colorMode,e.fieldDataTupleId)),e.colorBuildString=`${t.getMTime()}${i.getMTime()}${n}`},t.getPrimitiveCount=()=>{const r=t.getInputData();return{points:r.getPoints().getNumberOfValues()/3,verts:r.getVerts().getNumberOfValues()-r.getVerts().getNumberOfCells(),lines:r.getLines().getNumberOfValues()-2*r.getLines().getNumberOfCells(),triangles:r.getPolys().getNumberOfValues()-3*r.getPolys().getNumberOfCells()}}}const doe={static:!1,lookupTable:null,scalarVisibility:!1,scalarRange:[0,1],useLookupTableScalarRange:!1,colorMode:0,scalarMode:0,arrayAccessMode:1,renderTime:0,colorByArrayName:null,transformCoordinate:null,viewSpecificProperties:null,customShaderAttributes:[]};function kR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,doe,r),jb.extend(t,e,r),W.get(t,e,["colorMapColors"]),W.setGet(t,e,["arrayAccessMode","colorByArrayName","colorMode","lookupTable","renderTime","scalarMode","scalarVisibility","static","transformCoordinate","useLookupTableScalarRange","viewSpecificProperties","customShaderAttributes"]),W.setGetArray(t,e,["scalarRange"],2),e.viewSpecificProperties||(e.viewSpecificProperties={}),foe(t,e)}const hoe=W.newInstance(kR,"vtkMapper2D");var goe={newInstance:hoe,extend:kR},poe=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkPolyData2DFS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ - -uniform int PrimitiveIDOffset; - -// Texture coordinates -//VTK::TCoord::Dec - -// Scalar coloring -//VTK::Color::Dec - -// Depth Peeling -//VTK::DepthPeeling::Dec - -// picking support -//VTK::Picking::Dec - -// the output of this shader -//VTK::Output::Dec - -// Apple Bug -//VTK::PrimID::Dec - -void main() -{ - // Apple Bug - //VTK::PrimID::Impl - - //VTK::Color::Impl - //VTK::TCoord::Impl - - //VTK::DepthPeeling::Impl - //VTK::Picking::Impl - - if (gl_FragData[0].a <= 0.0) - { - discard; - } -} -`,moe=`//VTK::System::Dec - -/*========================================================================= - - Program: Visualization Toolkit - Module: vtkPolyData2DVS.glsl - - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen - All rights reserved. - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notice for more information. - -=========================================================================*/ - -// all variables that represent positions or directions have a suffix -// indicating the coordinate system they are in. The possible values are -// MC - Model Coordinates -// WC - WC world coordinates -// VC - View Coordinates -// DC - Display Coordinates - -in vec4 vertexWC; - -// frag position in VC -//VTK::PositionVC::Dec - -// material property values -//VTK::Color::Dec - -// Texture coordinates -//VTK::TCoord::Dec - -// Apple Bug -//VTK::PrimID::Dec - -uniform mat4 WCVCMatrix; // World to view matrix - -void main() -{ - // Apple Bug - //VTK::PrimID::Impl - - gl_Position = WCVCMatrix*vertexWC; - - //VTK::TCoord::Impl - - //VTK::Color::Impl - - //VTK::PositionVC::Impl -} -`;const VR={BACKGROUND:0,FOREGROUND:1};var FR={DisplayLocation:VR};const{primTypes:xo}=fa,{ScalarMode:Ag}=goe,{vtkErrorMacro:kg}=Br,voe={type:"StartEvent"},yoe={type:"EndEvent"};function xoe(t,e){e.classHierarchy.push("vtkOpenGLPolyDataMapper2D"),t.buildPass=n=>{n&&(e.openGLActor2D=t.getFirstAncestorOfType("vtkOpenGLActor2D"),e._openGLRenderer=e.openGLActor2D.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getLastAncestorOfType("vtkOpenGLRenderWindow"),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()))},t.overlayPass=n=>{n&&t.render()},t.getShaderTemplate=(n,i,o)=>{n.Vertex=moe,n.Fragment=poe,n.Geometry=""},t.render=()=>{const n=e._openGLRenderWindow.getContext();if(e.context!==n){e.context=n;for(let a=xo.Start;a{if(t.invokeEvent(voe),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(yoe),!e.currentInput){kg("No input!");return}!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues()||(t.renderPieceStart(n,i),t.renderPieceDraw(n,i),t.renderPieceFinish(n,i))},t.renderPieceStart=(n,i)=>{if(e.primitiveIDOffset=0,e._openGLRenderer.getSelector())switch(e._openGLRenderer.getSelector().getCurrentPass()){default:e._openGLRenderer.getSelector().renderProp(i)}t.updateBufferObjects(n,i),e.lastBoundBO=null},t.getNeedToRebuildShaders=(n,i,o)=>n.getShaderSourceTime().getMTime(){t.getNeedToRebuildBufferObjects(n,i)&&t.buildBufferObjects(n,i)},t.getNeedToRebuildBufferObjects=(n,i)=>{const o=e.VBOBuildTime.getMTime();return!!(o{const o=e.currentInput;if(o===null)return;e.renderable.mapScalars(o,i.getProperty().getOpacity());const a=e.renderable.getColorMapColors();e.haveCellScalars=!1;const s=e.renderable.getScalarMode();e.renderable.getScalarVisibility()&&(s===Ag.USE_CELL_DATA||s===Ag.USE_CELL_FIELD_DATA||s===Ag.USE_FIELD_DATA||!o.getPointData().getScalars())&&s!==Ag.USE_POINT_FIELD_DATA&&a&&(e.haveCellScalars=!0);const c=i.getProperty().getRepresentation();let l=o.getPointData().getTCoords();e.openGLActor2D.getActiveTextures()||(l=null);const f=e.renderable.getTransformCoordinate(),d=n.getRenderWindow().getViews()[0].getViewportSize(n),h=`${o.getMTime()}A${c}B${o.getMTime()}C${a?a.getMTime():1}D${l?l.getMTime():1}E${f?n.getMTime():1}F${d}`;if(e.VBOBuildString!==h){let g=o.getPoints();if(f){const v=Ld.newInstance(),x=g.getNumberOfPoints();v.setNumberOfPoints(x);const m=[];for(let y=0;yo.getPointData().getArrayByName(v))};p.cellOffset+=e.primitives[xo.Points].getCABO().createVBO(o.getVerts(),"verts",c,p),p.cellOffset+=e.primitives[xo.Lines].getCABO().createVBO(o.getLines(),"lines",c,p),p.cellOffset+=e.primitives[xo.Tris].getCABO().createVBO(o.getPolys(),"polys",c,p),p.cellOffset+=e.primitives[xo.TriStrips].getCABO().createVBO(o.getStrips(),"strips",c,p),e.VBOBuildTime.modified(),e.VBOBuildString=h}},t.renderPieceDraw=(n,i)=>{const o=i.getProperty().getRepresentation();e.context.depthMask(!0);for(let s=xo.Start;s{e.lastBoundBO&&e.lastBoundBO.getVAO().release()},t.replaceShaderValues=(n,i,o)=>{t.replaceShaderColor(n,i,o),t.replaceShaderTCoord(n,i,o),t.replaceShaderPicking(n,i,o),t.replaceShaderPositionVC(n,i,o)},t.replaceShaderColor=(n,i,o)=>{let a=n.Vertex,s=n.Geometry,c=n.Fragment;e.haveCellScalars&&(c=ce.substitute(c,"//VTK::Color::Dec",["uniform samplerBuffer texture1;"]).result,c=ce.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = texelFetchBuffer(texture1, gl_PrimitiveID + PrimitiveIDOffset);"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0?(a=ce.substitute(a,"//VTK::Color::Dec",["in vec4 diffuseColor;","out vec4 fcolorVSOutput;"]).result,a=ce.substitute(a,"//VTK::Color::Impl",["fcolorVSOutput = diffuseColor;"]).result,s=ce.substitute(s,"//VTK::Color::Dec",[`in vec4 fcolorVSOutput[]; -`,"out vec4 fcolorGSOutput;"]).result,s=ce.substitute(s,"//VTK::Color::Impl",["fcolorGSOutput = fcolorVSOutput[i];"]).result,c=ce.substitute(c,"//VTK::Color::Dec",["in vec4 fcolorVSOutput;"]).result,c=ce.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = fcolorVSOutput;"]).result):(c=ce.substitute(c,"//VTK::Color::Dec",["uniform vec4 diffuseColor;"]).result,c=ce.substitute(c,"//VTK::Color::Impl",["gl_FragData[0] = diffuseColor;"]).result),n.Vertex=a,n.Geometry=s,n.Fragment=c},t.replaceShaderTCoord=(n,i,o)=>{if(e.lastBoundBO.getCABO().getTCoordOffset()){let a=n.Vertex,s=n.Geometry,c=n.Fragment;const l=e.lastBoundBO.getCABO().getTCoordComponents();l===1?(a=ce.substitute(a,"//VTK::TCoord::Dec",["in float tcoordMC;","out float tcoordVCVSOutput;"]).result,a=ce.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=ce.substitute(s,"//VTK::TCoord::Dec",[`in float tcoordVCVSOutput[]; -`,"out float tcoordVCGSOutput;"]).result,s=ce.substitute(s,["//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=ce.substitute(c,"//VTK::TCoord::Dec",["in float tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=ce.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, vec2(tcoordVCVSOutput,0));"]).result):l===2&&(a=ce.substitute(a,"//VTK::TCoord::Dec",["in vec2 tcoordMC;","out vec2 tcoordVCVSOutput;"]).result,a=ce.substitute(a,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,s=ce.substitute(s,"//VTK::TCoord::Dec",[`in vec2 tcoordVCVSOutput[]; -`,"out vec2 tcoordVCGSOutput;"]).result,s=ce.substitute(s,"//VTK::TCoord::Impl",["tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,c=ce.substitute(c,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c=ce.substitute(c,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, tcoordVCVSOutput.st);"]).result),e.haveCellScalars&&(s=ce.substitute(s,"//VTK::PrimID::Impl",["gl_PrimitiveID = gl_PrimitiveIDIn;"]).result),n.Vertex=a,n.Geometry=s,n.Fragment=c}},t.replaceShaderPicking=(n,i,o)=>{let a=n.Fragment;a=ce.substitute(a,"//VTK::Picking::Dec",["uniform vec3 mapperIndex;","uniform int picking;"]).result,a=ce.substitute(a,"//VTK::Picking::Impl"," gl_FragData[0] = picking != 0 ? vec4(mapperIndex,1.0) : gl_FragData[0];").result,n.Fragment=a},t.replaceShaderPositionVC=(n,i,o)=>{e.lastBoundBO.replaceShaderPositionVC(n,i,o)},t.invokeShaderCallbacks=(n,i,o)=>{const a=e.renderable.getViewSpecificProperties().ShadersCallbacks;a&&a.forEach(s=>{s.callback(s.userData,n,i,o)})},t.setMapperShaderParameters=(n,i,o)=>{if(n.getProgram().isUniformUsed("PrimitiveIDOffset")&&n.getProgram().setUniformi("PrimitiveIDOffset",e.primitiveIDOffset),n.getProgram().isAttributeUsed("vertexWC")&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"vertexWC",n.getCABO().getVertexOffset(),n.getCABO().getStride(),e.context.FLOAT,3,!1)||kg("Error setting vertexWC in shader VAO.")),n.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>n.getAttributeUpdateTime().getMTime()||n.getShaderSourceTime().getMTime()>n.getAttributeUpdateTime().getMTime())){e.renderable.getCustomShaderAttributes().forEach((c,l)=>{n.getProgram().isAttributeUsed(`${c}MC`)&&(n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),`${c}MC`,n.getCABO().getCustomData()[l].offset,n.getCABO().getStride(),e.context.FLOAT,n.getCABO().getCustomData()[l].components,!1)||kg(`Error setting ${c}MC in shader VAO.`))}),n.getProgram().isAttributeUsed("tcoordMC")&&n.getCABO().getTCoordOffset()?n.getVAO().addAttributeArray(n.getProgram(),n.getCABO(),"tcoordMC",n.getCABO().getTCoordOffset(),n.getCABO().getStride(),e.context.FLOAT,n.getCABO().getTCoordComponents(),!1)||kg("Error setting tcoordMC in shader VAO."):n.getVAO().removeAttributeArray("tcoordMC"),e.internalColorTexture&&n.getProgram().isUniformUsed("texture1")&&n.getProgram().setUniformi("texture1",e.internalColorTexture.getTextureUnit());const a=e.openGLActor2D.getActiveTextures();if(a)for(let c=0;c{const a=e.renderable.getColorMapColors();if(!a||a.getNumberOfComponents()===0){const s=n.getProgram(),c=o.getProperty(),l=c.getOpacity(),f=c.getColor(),u=[f[0],f[1],f[2],l];s.setUniform4f("diffuseColor",u)}},t.setLightingShaderParameters=(n,i,o)=>{};function r(n,i,o){return i.identity(o),n.reduce((a,s,c)=>c===0?s?i.copy(a,s):i.identity(a):s?i.multiply(a,a,s):a,o)}t.setCameraShaderParameters=(n,i,o)=>{const a=n.getProgram(),c=n.getCABO().getCoordShiftAndScaleEnabled()?n.getCABO().getInverseShiftAndScaleMatrix():null,f=i.getRenderWindow().getViews()[0].getViewportSize(i),u=i.getViewport(),d=o.getActualPositionCoordinate().getComputedDoubleViewportValue(i),h=[0,0,1,1],g=[0,0,1,1];if(g[0]=u[0]>=h[0]?u[0]:h[0],g[1]=u[1]>=h[1]?u[1]:h[1],g[2]=u[2]<=h[2]?u[2]:h[2],g[3]=u[3]<=h[3]?u[3]:h[3],g[0]>=g[2]||g[1]>=g[3])return;f[0]=Cf(f[0]*(g[2]-g[0])/(u[2]-u[0])),f[1]=Cf(f[1]*(g[3]-g[1])/(u[3]-u[1]));const p=e._openGLRenderer.getParent().getSize(),v=Cf(d[0]-(g[0]-u[0])*p[0]),x=Cf(d[1]-(g[1]-u[1])*p[1]),m=-v;let y=-v+f[0];const w=-x;let C=-x+f[1];m===y&&(y=m+1),w===C&&(C=w+1);const S=qe(new Float64Array(16));S[0]=2/(y-m),S[1*4+1]=2/(C-w),S[0*4+3]=-1*(y+m)/(y-m),S[1*4+3]=-1*(C+w)/(C-w),S[2*4+2]=0,S[2*4+3]=o.getProperty().getDisplayLocation()===VR.FOREGROUND?-1:1,S[3*4+3]=1,St(S,S),a.setUniformMatrix("WCVCMatrix",r([S,c],Od,e.tmpMat4))},t.getAllocatedGPUMemoryInBytes=()=>{let n=0;return e.primitives.forEach(i=>{n+=i.getAllocatedGPUMemoryInBytes()}),n}}const woe={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null};function Coe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,woe,r),tn.extend(t,e,r),aa.implementReplaceShaderCoincidentOffset(t,e,r),aa.implementBuildShadersWithReplacements(t,e,r),e.primitives=[],e.primTypes=xo,e.tmpMat4=qe(new Float64Array(16));for(let n=xo.Start;n{const n=r.getLastSize(),i=(n[0]/700)**.8,o=(n[1]/700)**.8,a=Math.min(i,o),s=r.getAxisTextStyle(),c=r.getTickTextStyle();Object.assign(s,e.axisTextStyle),Object.assign(c,e.tickTextStyle),s.fontSize=Math.max(24*a,12),r.getLastAspectRatio()>1?c.fontSize=Math.max(20*a,10):c.fontSize=Math.max(16*a,10);const l=r.updateTextureAtlas();r.setTopTitle(!1);const f=r.getBoxSizeByReference();if(r.getLastAspectRatio()>1)r.setTickLabelPixelOffset(.3*c.fontSize),l.titleWidth<=l.tickWidth+r.getTickLabelPixelOffset()+.8*c.fontSize?(r.setTopTitle(!0),r.setAxisTitlePixelOffset(.2*c.fontSize),f[0]=2*(l.tickWidth+r.getTickLabelPixelOffset()+.8*c.fontSize)/n[0],r.setBoxPosition([.98-f[0],-.92])):(r.setAxisTitlePixelOffset(.2*c.fontSize),f[0]=2*(l.titleHeight+r.getAxisTitlePixelOffset()+l.tickWidth+r.getTickLabelPixelOffset()+.8*c.fontSize)/n[0],r.setBoxPosition([.99-f[0],-.92])),f[1]=Math.max(1.2,Math.min(1.84/o,1.84));else{r.setAxisTitlePixelOffset(1.2*c.fontSize),r.setTickLabelPixelOffset(.1*c.fontSize);const u=2*(.8*c.fontSize+l.titleHeight+r.getAxisTitlePixelOffset())/n[1],d=2*l.tickWidth/n[0];f[0]=Math.min(1.9,Math.max(1.4,1.4*d*(r.getTicks().length+3))),f[1]=u,r.setBoxPosition([-.5*f[0],-.97])}r.recomputeBarSegments(l)}}function BR(t,e){return r=>{const n=r.getLastTickBounds(),i=xC().domain([n[0],n[1]]),o=i.ticks(5),a=i.tickFormat(5);r.setTicks(o),r.setTickStrings(o.map(a))}}function _oe(t,e){e.classHierarchy.push("vtkScalarBarActorHelper"),t.setRenderable=i=>{e.renderable!==i&&(e.renderable=i,e.barActor.setProperty(i.getProperty()),e.barActor.setParentProp(i),e.barActor.setCoordinateSystemToDisplay(),e.tmActor.setProperty(i.getProperty()),e.tmActor.setParentProp(i),e.tmActor.setCoordinateSystemToDisplay(),e.generateTicks=i.generateTicks,e.axisTextStyle={...i.getAxisTextStyle()},e.tickTextStyle={...i.getTickTextStyle()},t.modified())},t.updateAPISpecificData=(i,o,a)=>{(e.lastSize[0]!==i[0]||e.lastSize[1]!==i[1])&&(e.lastSize[0]=i[0],e.lastSize[1]=i[1],e.lastAspectRatio=i[0]/i[1],e.forceUpdate=!0);const s=e.renderable.getScalarsToColors();if(!(!s||!e.renderable.getVisibility())&&(e.barMapper.setLookupTable(s),e.camera=o,e.renderWindow=a,e.forceUpdate||Math.max(s.getMTime(),t.getMTime(),e.renderable.getMTime())>e.lastRebuildTime.getMTime())){const c=s.getMappingRange();if(e.lastTickBounds=[...c],e.renderable.getGenerateTicks()(t),e.renderable.getAutomated())e.renderable.getAutoLayout()(t);else{e.axisTextStyle={...e.renderable.getAxisTextStyle()},e.tickTextStyle={...e.renderable.getTickTextStyle()},e.barPosition=[...e.renderable.getBarPosition()],e.barSize=[...e.renderable.getBarSize()],e.boxPosition=[...e.renderable.getBoxPosition()],e.boxSize=[...e.renderable.getBoxSize()],e.axisTitlePixelOffset=e.renderable.getAxisTitlePixelOffset(),e.tickLabelPixelOffset=e.renderable.getTickLabelPixelOffset();const l=t.updateTextureAtlas();t.recomputeBarSegments(l)}t.updatePolyDataForLabels(),t.updatePolyDataForBarSegments(),e.lastRebuildTime.modified(),e.forceUpdate=!1}},t.updateTextureAtlas=()=>{e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left";const i={},o=new Map;let a=0,s=1;qv(e.tmContext,e.axisTextStyle);let c=e.tmContext.measureText(e.renderable.getAxisLabel()),l={height:c.actualBoundingBoxAscent+2,startingHeight:s,width:c.width+2,textStyle:e.axisTextStyle};o.set(e.renderable.getAxisLabel(),l),s+=l.height,a=l.width,i.titleWidth=l.width,i.titleHeight=l.height,i.tickWidth=0,i.tickHeight=0,qv(e.tmContext,e.tickTextStyle);const f=[...t.getTickStrings(),"NaN","Below","Above"];for(let u=0;u{u.tcoords=[0,(s-u.startingHeight-u.height)/s,u.width/a,(s-u.startingHeight-u.height)/s,u.width/a,(s-u.startingHeight)/s,0,(s-u.startingHeight)/s]}),e.tmCanvas.width=a,e.tmCanvas.height=s,e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e.tmContext.clearRect(0,0,a,s),o.forEach((u,d)=>{qv(e.tmContext,u.textStyle),e.tmContext.fillText(d,1,u.startingHeight+u.height-1)}),e.tmTexture.setCanvas(e.tmCanvas),e.tmTexture.modified(),e._tmAtlas=o,i},t.computeBarSize=i=>{e.vertical=e.boxSize[1]>e.boxSize[0];const o=2*i.tickHeight/e.lastSize[1],a=[1,1];if(e.vertical){const s=2*(i.tickWidth+e.tickLabelPixelOffset)/e.lastSize[0];if(e.topTitle){const c=2*(i.titleHeight+e.axisTitlePixelOffset)/e.lastSize[1];e.barSize[0]=e.boxSize[0]-s,e.barSize[1]=e.boxSize[1]-c}else{const c=2*(i.titleHeight+e.axisTitlePixelOffset)/e.lastSize[0];e.barSize[0]=e.boxSize[0]-c-s,e.barSize[1]=e.boxSize[1]}e.barPosition[0]=e.boxPosition[0]+s,e.barPosition[1]=e.boxPosition[1],a[1]=o}else{const s=(2*i.tickWidth-8)/e.lastSize[0],c=2*(i.titleHeight+e.axisTitlePixelOffset)/e.lastSize[1];e.barSize[0]=e.boxSize[0],e.barPosition[0]=e.boxPosition[0],e.barSize[1]=e.boxSize[1]-c,e.barPosition[1]=e.boxPosition[1],a[0]=s}return a},t.recomputeBarSegments=i=>{var d,h,g,p;const o=t.computeBarSize(i);e.barSegments=[];const a=[0,0],s=e.vertical?1:0,c=e.vertical?.01:.02;function l(v,x){e.barSegments.push({corners:[[...a],[a[0]+o[0],a[1]],[a[0]+o[0],a[1]+o[1]],[a[0],a[1]+o[1]]],scalars:x,title:v}),a[s]+=o[s]+c}e.renderable.getDrawNanAnnotation()&&e.renderable.getScalarsToColors().getNanColor()&&l("NaN",[NaN,NaN,NaN,NaN]),e.renderable.getDrawBelowRangeSwatch()&&((h=(d=e.renderable.getScalarsToColors()).getUseBelowRangeColor)!=null&&h.call(d))&&l("Below",[-.1,-.1,-.1,-.1]);const f=(p=(g=e.renderable.getScalarsToColors()).getUseAboveRangeColor)==null?void 0:p.call(g);a[s]+=c;const u=o[s];o[s]=f?1-2*c-o[s]-a[s]:1-c-a[s],l("ticks",e.vertical?[0,0,.995,.995]:[0,.995,.995,0]),e.renderable.getDrawAboveRangeSwatch()&&f&&(o[s]=u,a[s]+=c,l("Above",[1.1,1.1,1.1,1.1]))};const r=new Float64Array(3);t.createPolyDataForOneLabel=(i,o,a,s,c,l)=>{const f=e._tmAtlas.get(i);if(!f)return;let u=l.ptIdx,d=l.cellIdx;r[0]=(.5*o[0]+.5)*e.lastSize[0],r[1]=(.5*o[1]+.5)*e.lastSize[1],r[2]=o[2],r[0]+=c[0],r[1]+=c[1];const h=[],g=s==="vertical"?[1,0]:[0,1];s==="vertical"?(h[0]=f.width,h[1]=-f.height,a[0]==="middle"?r[1]-=f.width/2:a[0]==="right"&&(r[1]-=f.width),a[1]==="middle"?r[0]+=f.height/2:a[1]==="top"&&(r[0]+=f.height)):(h[0]=f.width,h[1]=f.height,a[0]==="middle"?r[0]-=f.width/2:a[0]==="right"&&(r[0]-=f.width),a[1]==="middle"?r[1]-=f.height/2:a[1]==="top"&&(r[1]-=f.height)),l.points[u*3]=r[0],l.points[u*3+1]=r[1],l.points[u*3+2]=r[2],l.tcoords[u*2]=f.tcoords[0],l.tcoords[u*2+1]=f.tcoords[1],u++,r[g[0]]+=h[0],l.points[u*3]=r[0],l.points[u*3+1]=r[1],l.points[u*3+2]=r[2],l.tcoords[u*2]=f.tcoords[2],l.tcoords[u*2+1]=f.tcoords[3],u++,r[g[1]]+=h[1],l.points[u*3]=r[0],l.points[u*3+1]=r[1],l.points[u*3+2]=r[2],l.tcoords[u*2]=f.tcoords[4],l.tcoords[u*2+1]=f.tcoords[5],u++,r[g[0]]-=h[0],l.points[u*3]=r[0],l.points[u*3+1]=r[1],l.points[u*3+2]=r[2],l.tcoords[u*2]=f.tcoords[6],l.tcoords[u*2+1]=f.tcoords[7],u++,l.polys[d*4]=3,l.polys[d*4+1]=u-4,l.polys[d*4+2]=u-3,l.polys[d*4+3]=u-2,d++,l.polys[d*4]=3,l.polys[d*4+1]=u-4,l.polys[d*4+2]=u-2,l.polys[d*4+3]=u-1,l.ptIdx+=4,l.cellIdx+=2};const n=new Float64Array(3);t.updatePolyDataForLabels=()=>{const i=t.getTickStrings().length+e.barSegments.length,o=i*4,a=i*2,s=new Float64Array(o*3),c=new Uint16Array(a*4),l=new Float32Array(o*2),f={ptIdx:0,cellIdx:0,polys:c,points:s,tcoords:l},u=e.vertical?0:1,d=e.vertical?1:0;n[2]=-.99;const h=e.vertical?["right","middle"]:["middle","bottom"];let g=[0,1];const p=[0,0];e.vertical?(p[0]=-e.tickLabelPixelOffset,e.topTitle?(n[0]=e.boxPosition[0]+.5*e.boxSize[0],n[1]=e.barPosition[1]+e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),n,["middle","bottom"],"horizontal",[0,e.axisTitlePixelOffset],f)):(n[0]=e.barPosition[0]+e.barSize[0],n[1]=e.barPosition[1]+.5*e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),n,["middle","top"],"vertical",[e.axisTitlePixelOffset,0],f)),g=[-1,0]):(p[1]=e.tickLabelPixelOffset,n[0]=e.barPosition[0]+.5*e.barSize[0],n[1]=e.barPosition[1]+e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),n,["middle","bottom"],"horizontal",[0,e.axisTitlePixelOffset],f)),n[u]=e.barPosition[u]+(.5*g[u]+.5)*e.barSize[u],n[d]=e.barPosition[d]+e.barSize[d]*.5;let v=null;for(let S=0;S{var p,v;const i=e.renderable.getScalarsToColors();let o=0;e.renderable.getDrawNanAnnotation()&&i.getNanColor()&&(o+=1),e.renderable.getDrawBelowRangeSwatch()&&((p=i.getUseBelowRangeColor)!=null&&p.call(i))&&(o+=1),e.renderable.getDrawAboveRangeSwatch()&&((v=i.getUseAboveRangeColor)!=null&&v.call(i))&&(o+=1);const a=4*(1+o),s=a;let c=1;i.getVectorMode()===Toe.COMPONENT&&(c=i.getVectorComponent()+1);const l=new Float64Array(a*3),f=new Uint16Array(s*5),u=new Float32Array(a*c);let d=0,h=0;for(let x=0;x2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},r),W.obj(t,e),W.setGet(t,e,["axisTitlePixelOffset","tickLabelPixelOffset","renderable","topTitle","ticks","tickStrings"]),W.get(t,e,["lastSize","lastAspectRatio","lastTickBounds","axisTextStyle","tickTextStyle","barActor","tmActor"]),W.getArray(t,e,["boxPosition","boxSize"]),W.setArray(t,e,["boxPosition","boxSize"],2),e.forceUpdate=!1,e.lastRebuildTime={},W.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.tmCanvas=document.createElement("canvas"),e.tmContext=e.tmCanvas.getContext("2d"),e._tmAtlas=new Map,e.barMapper=oa.newInstance(),e.barMapper.setInterpolateScalarsBeforeMapping(!0),e.barMapper.setUseLookupTableScalarRange(!0),e.polyData=hr.newInstance(),e.barMapper.setInputData(e.polyData),e.barActor=ca.newInstance(),e.barActor.setMapper(e.barMapper),e.tmPolyData=hr.newInstance(),e.tmMapper=oa.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmTexture=Dh.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),e.tmActor=ca.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),e.tmActor.addTexture(e.tmTexture),e.barPosition=[0,0],e.barSize=[0,0],e.boxPosition=[.88,-.92],e.boxSize=[.1,1.1],e.lastTickBounds=[],_oe(t,e)},"vtkScalarBarActorHelper");function Doe(t,e){e.classHierarchy.push("vtkScalarBarActor"),t.setTickTextStyle=r=>{e.tickTextStyle={...e.tickTextStyle,...r},t.modified()},t.setAxisTextStyle=r=>{e.axisTextStyle={...e.axisTextStyle,...r},t.modified()},t.resetAutoLayoutToDefault=()=>{t.setAutoLayout(UR(t,e))},t.resetGenerateTicksToDefault=()=>{t.setGenerateTicks(BR())}}function boe(t){return{automated:!0,autoLayout:null,axisLabel:"Scalar Value",barPosition:[0,0],barSize:[0,0],boxPosition:[.88,-.92],boxSize:[.1,1.1],scalarToColors:null,axisTitlePixelOffset:36,axisTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:18,fontFamily:"serif"},tickLabelPixelOffset:14,tickTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:14,fontFamily:"serif"},generateTicks:null,drawNanAnnotation:!0,drawBelowRangeSwatch:!0,drawAboveRangeSwatch:!0,...t}}function GR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,boe(r)),e.autoLayout||(e.autoLayout=UR(t,e)),e.generateTicks||(e.generateTicks=BR()),ca.extend(t,e,r),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),W.setGet(t,e,["automated","autoLayout","axisTitlePixelOffset","axisLabel","scalarsToColors","tickLabelPixelOffset","generateTicks","drawNanAnnotation","drawBelowRangeSwatch","drawAboveRangeSwatch"]),W.get(t,e,["axisTextStyle","tickTextStyle"]),W.getArray(t,e,["barPosition","barSize","boxPosition","boxSize"]),W.setArray(t,e,["barPosition","barSize","boxPosition","boxSize"],2),Doe(t,e)}const Ioe=W.newInstance(GR,"vtkScalarBarActor");var WR={newInstance:Ioe,extend:GR,newScalarBarActorHelper:Eoe};function Ooe(t,e){e.classHierarchy.push("vtkOpenGLScalarBarActor"),t.buildPass=r=>{r&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.scalarBarActorHelper.getRenderable()||e.scalarBarActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.scalarBarActorHelper.getBarActor()),t.addMissingNode(e.scalarBarActorHelper.getTmActor()),t.removeUnusedNodes())},t.opaquePass=(r,n)=>{if(r){const i=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,o=e._openGLRenderer.getTiledSizeAndOrigin();e.scalarBarActorHelper.updateAPISpecificData([o.usize,o.vsize],i,e._openGLRenderWindow.getRenderable())}}}const Moe={};function Roe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Moe,r),tn.extend(t,e,r),e.scalarBarActorHelper=WR.newScalarBarActorHelper(),Ooe(t,e)}const Loe=Bt(Roe,"vtkOpenGLScalarBarActor");ir("vtkScalarBarActor",Loe);const{CoordinateSystem:d_}=xh;function Noe(t,e){e.classHierarchy.push("vtkWebGPUActor"),t.buildPass=r=>{r&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.traverseOpaquePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children[0]&&e.children[0].traverse(r),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children[0]&&e.children[0].traverse(r),t.apply(r,!1))},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?n.incrementOpaqueActorCount():n.incrementTranslucentActorCount()}},t.getBufferShift=r=>(t.getKeyMatrices(r),e.bufferShift),t.getKeyMatrices=r=>{if(Math.max(e.renderable.getMTime(),r.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const n=e.renderable.getMatrix();e.bufferShift[0]=n[3],e.bufferShift[1]=n[7],e.bufferShift[2]=n[11];const i=r.getStabilizedCenterByReference();e.renderable.getCoordinateSystem()===d_.WORLD&&(e.bufferShift[0]-=i[0],e.bufferShift[1]-=i[1],e.bufferShift[2]-=i[2]),St(e.keyMatrices.bcwc,n),e.renderable.getIsIdentity()?qe(e.keyMatrices.normalMatrix):(_n(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,$n(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),St(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),nn(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===d_.WORLD?nn(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-i[0],-i[1],-i[2]]):_n(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const Poe={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function Aoe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Poe,r),tn.extend(t,e,r),e.keyMatricesTime={},W.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},W.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],Noe(t,e)}const koe=W.newInstance(Aoe);uo("vtkActor",koe);const{CoordinateSystem:h_}=xh;function Voe(t,e){e.classHierarchy.push("vtkWebGPUActor2D"),t.buildPass=r=>{r&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.traverseOpaquePass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children[0]&&e.children[0].traverse(r),t.apply(r,!1))},t.traverseTranslucentPass=r=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(r,!0),e.children[0]&&e.children[0].traverse(r),t.apply(r,!1))},t.queryPass=(r,n)=>{if(r){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?n.incrementOpaqueActorCount():n.incrementTranslucentActorCount()}},t.getBufferShift=r=>(t.getKeyMatrices(r),e.bufferShift),t.getKeyMatrices=r=>{if(Math.max(e.renderable.getMTime(),r.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.bufferShift[0]=0,e.bufferShift[1]=0,e.bufferShift[2]=0;const n=r.getStabilizedCenterByReference();e.renderable.getCoordinateSystem()===h_.WORLD&&(e.bufferShift[0]-=n[0],e.bufferShift[1]-=n[1],e.bufferShift[2]-=n[2]),qe(e.keyMatrices.bcwc),qe(e.keyMatrices.normalMatrix),nn(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===h_.WORLD?nn(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-n[0],-n[1],-n[2]]):_n(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const Foe={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function Uoe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Foe,r),tn.extend(t,e,r),e.keyMatricesTime={},W.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},W.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],Voe(t,e)}const Boe=W.newInstance(Uoe);uo("vtkActor2D",Boe);function Goe(t,e){e.classHierarchy.push("vtkWebGPUCubeAxesActor"),t.buildPass=r=>{r&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.CubeAxesActorHelper.getRenderable()||e.CubeAxesActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.CubeAxesActorHelper.getTmActor()),t.addMissingNode(e.renderable.getGridActor()),t.removeUnusedNodes())},t.opaquePass=(r,n)=>{if(r){const i=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,o=e.WebGPURenderer.getTiledSizeAndOrigin();e.CubeAxesActorHelper.updateAPISpecificData([o.usize,o.vsize],i,e.WebGPURenderWindow.getRenderable())}}}const Woe={};function zoe(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Woe,r),tn.extend(t,e,r),e.CubeAxesActorHelper=AR.newCubeAxesActorHelper(),Goe(t,e)}const $oe=Bt(zoe,"vtkWebGPUCubeAxesActor");uo("vtkCubeAxesActor",$oe);const{DisplayLocation:p3}=FR;function joe(t,e){e.classHierarchy.push("vtkProperty2D"),t.setDisplayLocationToBackground=()=>t.setDisplayLocation(p3.BACKGROUND),t.setDisplayLocationToForeground=()=>t.setDisplayLocation(p3.FOREGROUND),t.setRepresentationToWireframe=()=>t.setRepresentation(kr.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(kr.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(kr.POINTS),t.getRepresentationAsString=()=>W.enumToString(kr,e.representation)}const Hoe={color:[1,1,1],opacity:1,pointSize:1,lineWidth:1,representation:kr.SURFACE,displayLocation:p3.FOREGROUND};function zR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hoe,r),W.obj(t,e),W.setGet(t,e,["opacity","lineWidth","pointSize","displayLocation","representation"]),W.setGetArray(t,e,["color"],3),joe(t,e)}const Koe=W.newInstance(zR,"vtkProperty2D");var qoe={newInstance:Koe,extend:zR,...FR};const{BufferUsage:Sr,PrimitiveTypes:ri}=_0,{Representation:Vg}=x0,{ScalarMode:Fg}=oa,{CoordinateSystem:Xoe}=xh,{DisplayLocation:Yoe}=qoe,Joe=` -//VTK::Renderer::Dec - -//VTK::Color::Dec - -//VTK::Normal::Dec - -//VTK::TCoord::Dec - -//VTK::Select::Dec - -//VTK::Mapper::Dec - -//VTK::IOStructs::Dec - -@vertex -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output : vertexOutput; - - var vertex: vec4 = vertexBC; - - //VTK::Color::Impl - - //VTK::Normal::Impl - - //VTK::TCoord::Impl - - //VTK::Select::Impl - - //VTK::Position::Impl - - return output; -} -`,Zoe=` -struct PBRData { - diffuse: vec3, - specular: vec3, -} - -// Dot product with the max already in it -fn mdot(a: vec3, b: vec3) -> f32 { - return max(0.0, dot(a, b)); -} -// Dot product with a max in it that does not allow for negative values -// Physically based rendering is accurate as long as normals are accurate, -// however this is pretty often not the case. In order to prevent negative -// values from ruining light calculations and creating zones of zero light, -// this remapping is used, which smoothly clamps the dot product between -// zero and one while still maintaining a good amount of accuracy. -fn cdot(a: vec3, b: vec3) -> f32 { - var d: f32 = max(0.0, dot(a, b)); - d = pow((d + 1.0) / 2.0, 2.6); - return d; -} - -// Lambertian diffuse model -fn lambertDiffuse(base: vec3, N: vec3, L: vec3) -> vec3 { - var pi: f32 = 3.14159265359; - var NdotL: f32 = mdot(N, L); - NdotL = pow(NdotL, 1.5); - return (base/pi)*NdotL; -} - -// Yasuhiro Fujii improvement on the Oren-Nayar model -// https://mimosa-pudica.net/improved-oren-nayar.html -// p is surface color, o is roughness -fn fujiiOrenNayar(p: vec3, o: f32, N: vec3, L: vec3, V: vec3) -> vec3 { - var invpi: f32 = 0.31830988618; // 1/pi - - var o2 = o*o; - var NdotL: f32 = mdot(N, L); - NdotL = pow(NdotL, 1.5); // Less physically accurate, but hides the "seams" between lights better - - var NdotV: f32 = mdot(N, V); - var LdotV: f32 = mdot(L, V); - - var s: f32 = LdotV - NdotL*NdotV; - var t: f32 = mix(1.0, max(NdotL, NdotV), step(0.0, s)); // Mix with step is the equivalent of an if statement - var A: vec3 = 0.5*(o2 / (o2 + 0.33)) + 0.17*p*(o2 / (o2 + 0.13)); - A = invpi*(1 - A); - var B: f32 = 0.45*(o2 / (o2 + 0.09)); - B = invpi*B; - - return p*NdotL*(A + B*(s/t)); -} - -// Fresnel portion of BRDF (IOR only, simplified) -fn schlickFresnelIOR(V: vec3, N: vec3, ior: f32, k: f32) -> f32 { - var NdotV: f32 = mdot(V, N); - var F0: f32 = (pow((ior - 1.0), 2.0) + k*k) / (pow((ior + 1.0), 2.0) + k*k); // This takes into account the roughness, which the other one does not - return F0 + (1.0 - F0) * pow((1.0-NdotV), 5.0); -} - -// Fresnel portion of BRDF (Color ior, better) -fn schlickFresnelRGB(V: vec3, N: vec3, F0: vec3) -> vec3 { - var NdotV: f32 = mdot(V, N); - return F0 + (1.0 - F0) * pow((1-NdotV), 5.0); -} - -// Normal portion of BRDF -// https://learnopengl.com/PBR/Theory -// Trowbridge-Reitz GGX functions: normal, halfway, roughness^2 -fn trGGX(N: vec3, H: vec3, a: f32) -> f32 { - var pi: f32 = 3.14159265359; - - var a2: f32 = a*a; - var NdotH = mdot(N, H); - var NdotH2 = NdotH*NdotH; - - var denom: f32 = NdotH2 * (a2 - 1.0) + 1.0; - - return a2 / max((pi*denom*denom), 0.000001); -} - -// A VERY bad approximation of anisotropy. Real anisotropic calculations require tangent and bitangent -fn anisotrophicTrGGX(N: vec3, H: vec3, O: vec3, s: f32, a: f32) -> f32 { - var Op: vec3 = (rendererUBO.WCVCNormals * vec4(normalize(O) * s, 0.)).xyz; - - var ggx1: f32 = trGGX(N + Op*s, H, a); - var ggx2: f32 = trGGX(N - Op*s, H, a); - return (0.5 * ggx1 + 0.5 * ggx2); -} - -// Geometry portion of BRDF -fn schlickGGX(N: vec3, X: vec3, k: f32) -> f32 { - var NdotX = cdot(N, X); - return NdotX / max(0.000001, (NdotX*(1.0-k) + k)); -} - -fn smithSurfaceRoughness(N: vec3, V: vec3, L: vec3, k: f32) -> f32 { - var ggx1: f32 = min(1.0, schlickGGX(N, V, k)); - var ggx2: f32 = min(1.0, schlickGGX(N, L, k)); - return ggx1*ggx2; -} - -// BRDF Combination -fn cookTorrance(D: f32, F: f32, G: f32, N: vec3, V: vec3, L: vec3) -> f32 { - var num: f32 = D*F*G; - var denom: f32 = 4*cdot(V, N)*cdot(L, N); - - return num / max(denom, 0.000001); -} - -// Different lighting calculations for different light sources -fn calcDirectionalLight(N: vec3, V: vec3, ior: f32, roughness: f32, metallic: f32, direction: vec3, color: vec3, base: vec3) -> PBRData { - var L: vec3 = normalize(direction); // Light Vector - var H: vec3 = normalize(L + V); // Halfway Vector - - var alpha = roughness*roughness; - var k: f32 = alpha*alpha / 2; - - var D: f32 = trGGX(N, H, alpha); // Distribution - // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel - var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry - - var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L); // Fresnel term is replaced with 1 because it is added later - var incoming: vec3 = color; - var angle: f32 = mdot(L, N); - angle = pow(angle, 1.5); - - var specular: vec3 = brdf*incoming*angle; - // Oren-Nayar gives a clay-like effect when fully rough which some people may not want, so it might be better to give a separate - // control property for the diffuse vs specular roughness - var diffuse: vec3 = incoming*fujiiOrenNayar(base, roughness, N, L, V); - // Stores the specular and diffuse separately to allow for finer post processing - var out = PBRData(diffuse, specular); - - return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas) -} - -// TODO: find some way to reduce the number of arguments going in here -fn calcPointLight(N: vec3, V: vec3, fragPos: vec3, ior: f32, roughness: f32, metallic: f32, position: vec3, color: vec3, base: vec3) -> PBRData { - var L: vec3 = normalize(position - fragPos); // Light Vector - var H: vec3 = normalize(L + V); // Halfway Vector - var dist = distance(position, fragPos); - - var alpha = roughness*roughness; - var k: f32 = alpha*alpha / 2.0; // could also be pow(alpha + 1.0, 2) / 8 - - var D: f32 = trGGX(N, H, alpha); // Distribution - // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel - var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry - - var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L); - var incoming: vec3 = color * (1.0 / (dist*dist)); - var angle: f32 = mdot(L, N); - angle = pow(angle, 1.5); // Smoothing factor makes it less accurate, but reduces ugly "seams" bewteen light sources - - var specular: vec3 = brdf*incoming*angle; - var diffuse: vec3 = incoming*fujiiOrenNayar(base, roughness, N, L, V); - - // Stores the specular and diffuse separately to allow for finer post processing - // Could also be done (propably more properly) with a struct - var out = PBRData(diffuse, specular); - - return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas) -} - -// For a reason unknown to me, spheres dont seem to behave propperly with head-on spot lights -fn calcSpotLight(N: vec3, V: vec3, fragPos: vec3, ior: f32, roughness: f32, metallic: f32, position: vec3, direction: vec3, cones: vec2, color: vec3, base: vec3) -> PBRData { - var L: vec3 = normalize(position - fragPos); - var H: vec3 = normalize(L + V); // Halfway Vector - var dist = distance(position, fragPos); - - var alpha = roughness*roughness; - var k: f32 = alpha*alpha / 2.0; // could also be pow(alpha + 1.0, 2) / 8 - - var D: f32 = trGGX(N, H, alpha); // Distribution - // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel - var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry - - var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L); - - // Cones.x is the inner phi and cones.y is the outer phi - var theta: f32 = mdot(normalize(direction), L); - var epsilon: f32 = cones.x - cones.y; - var intensity: f32 = (theta - cones.y) / epsilon; - intensity = clamp(intensity, 0.0, 1.0); - intensity /= dist*dist; - - var incoming: vec3 = color * intensity; - - var angle: f32 = mdot(L, N); - angle = pow(angle, 1.5); // Smoothing factor makes it less accurate, but reduces ugly "seams" bewteen light sources - - var specular: vec3 = brdf*incoming*angle; - var diffuse: vec3 = incoming*fujiiOrenNayar(base, roughness, N, L, V); - - // Stores the specular and diffuse separately to allow for finer post processing - // Could also be done (propably more properly) with a struct - var out = PBRData(diffuse, specular); - - return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas) -} - -// Environment mapping stuff -// Takes in a vector and converts it to an equivalent coordinate in a rectilinear texture. Should be replaced with cubemaps at some point -fn vecToRectCoord(dir: vec3) -> vec2 { - var tau: f32 = 6.28318530718; - var pi: f32 = 3.14159265359; - var out: vec2 = vec2(0.0); - - out.x = atan2(dir.z, dir.x) / tau; - out.x += 0.5; - - var phix: f32 = length(vec2(dir.x, dir.z)); - out.y = atan2(dir.y, phix) / pi + 0.5; - - return out; -} - -//VTK::Renderer::Dec - -//VTK::Color::Dec - -//VTK::TCoord::Dec - -// optional surface normal declaration -//VTK::Normal::Dec - -//VTK::Select::Dec - -//VTK::RenderEncoder::Dec - -//VTK::Mapper::Dec - -//VTK::IOStructs::Dec - -@fragment -fn main( -//VTK::IOStructs::Input -) -//VTK::IOStructs::Output -{ - var output : fragmentOutput; - - // Temporary ambient, diffuse, and opacity - var ambientColor: vec4 = mapperUBO.AmbientColor; - var diffuseColor: vec4 = mapperUBO.DiffuseColor; - var opacity: f32 = mapperUBO.Opacity; - - // This should be declared somewhere else - var _diffuseMap: vec4 = vec4(1.0); - var _roughnessMap: vec4 = vec4(1.0); - var _metallicMap: vec4 = vec4(1.0); - var _normalMap: vec4 = vec4(0.0, 0.0, 1.0, 0.0); // normal map was setting off the normal vector detection in fragment - var _ambientOcclusionMap: vec4 = vec4(1.); - var _emissionMap: vec4 = vec4(0.); - - //VTK::Color::Impl - - //VTK::TCoord::Impl - - //VTK::Normal::Impl - - var computedColor: vec4 = vec4(diffuseColor.rgb, 1.0); - - //VTK::Light::Impl - - //VTK::Select::Impl - - if (computedColor.a == 0.0) { discard; }; - - //VTK::Position::Impl - - //VTK::RenderEncoder::Impl - - return output; -} -`;function g_(t){return t.indexOf("edge")>=0}function Qoe(t,e){e.classHierarchy.push("vtkWebGPUCellArrayMapper"),t.buildPass=r=>{r&&(e.is2D?(e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor2D"),e.forceZValue=!0):(e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor"),e.forceZValue=!1),e.coordinateSystem=e.WebGPUActor.getRenderable().getCoordinateSystem(),e.useRendererMatrix=e.coordinateSystem!==Xoe.DISPLAY,e.WebGPURenderer=e.WebGPUActor.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.device=e.WebGPURenderWindow.getDevice())},t.translucentPass=r=>{r&&(t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw))},t.opaquePass=r=>{r&&(t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw))},t.updateUBO=()=>{var o;const n=e.WebGPUActor.getRenderable().getProperty(),i=e.UBO.getSendTime();if(t.getMTime()>i||n.getMTime()>i||e.renderable.getMTime()>i){const a=e.WebGPUActor.getKeyMatrices(e.WebGPURenderer);if(e.UBO.setArray("BCWCMatrix",a.bcwc),e.UBO.setArray("BCSCMatrix",a.bcsc),e.UBO.setArray("MCWCNormals",a.normalMatrix),e.is2D){e.UBO.setValue("ZValue",e.WebGPUActor.getRenderable().getProperty().getDisplayLocation()===Yoe.FOREGROUND?1:0);const l=n.getColorByReference();e.UBO.setValue("AmbientIntensity",1),e.UBO.setArray("DiffuseColor",[l[0],l[1],l[2],1]),e.UBO.setValue("DiffuseIntensity",0),e.UBO.setValue("SpecularIntensity",0)}else{let l=n.getAmbientColorByReference();e.UBO.setValue("AmbientIntensity",n.getAmbient()),e.UBO.setArray("AmbientColor",[l[0],l[1],l[2],1]),e.UBO.setValue("DiffuseIntensity",n.getDiffuse()),l=n.getDiffuseColorByReference(),e.UBO.setArray("DiffuseColor",[l[0],l[1],l[2],1]),e.UBO.setValue("Roughness",n.getRoughness()),e.UBO.setValue("BaseIOR",n.getBaseIOR()),e.UBO.setValue("Metallic",n.getMetallic()),e.UBO.setValue("NormalStrength",n.getNormalStrength()),e.UBO.setValue("Emission",n.getEmission()),e.UBO.setValue("SpecularIntensity",n.getSpecular()),l=n.getSpecularColorByReference(),e.UBO.setArray("SpecularColor",[l[0],l[1],l[2],1])}const s=(o=n.getEdgeColorByReference)==null?void 0:o.call(n);s&&e.UBO.setArray("EdgeColor",[s[0],s[1],s[2],1]),e.UBO.setValue("LineWidth",n.getLineWidth()),e.UBO.setValue("Opacity",n.getOpacity()),e.UBO.setValue("PropID",e.WebGPUActor.getPropID());const c=e.WebGPURenderWindow.getDevice();e.UBO.sendIfNeeded(c)}},t.haveWideLines=()=>{const r=e.WebGPUActor.getRenderable(),n=r.getProperty().getRepresentation();return r.getProperty().getLineWidth()<=1||e.primitiveType===ri.Verts?!1:e.primitiveType===ri.Triangles||e.primitiveType===ri.TriangleStrips?n===Vg.WIREFRAME:!0},t.replaceShaderPosition=(r,n,i)=>{const o=n.getShaderDescription("vertex");o.addBuiltinOutput("vec4","@builtin(position) Position"),o.hasOutput("vertexVC")||o.addOutput("vec4","vertexVC");let a=o.getCode();e.useRendererMatrix?(a=Zt.substitute(a,"//VTK::Position::Impl",[" var pCoord: vec4 = rendererUBO.SCPCMatrix*mapperUBO.BCSCMatrix*vertexBC;"," output.vertexVC = rendererUBO.SCVCMatrix * mapperUBO.BCSCMatrix * vec4(vertexBC.xyz, 1.0);","//VTK::Position::Impl"]).result,e.forceZValue&&(a=Zt.substitute(a,"//VTK::Position::Impl",["pCoord = vec4(pCoord.xyz/pCoord.w, 1.0);","pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)):(a=Zt.substitute(a,"//VTK::Position::Impl",[" var pCoord: vec4 = mapperUBO.BCSCMatrix*vertexBC;"," pCoord.x = 2.0* pCoord.x / rendererUBO.viewportSize.x - 1.0;"," pCoord.y = 2.0* pCoord.y / rendererUBO.viewportSize.y - 1.0;"," pCoord.z = 0.5 - 0.5 * pCoord.z;","//VTK::Position::Impl"]).result,e.forceZValue&&(a=Zt.substitute(a,"//VTK::Position::Impl",[" pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)),t.haveWideLines()&&(o.addBuiltinInput("u32","@builtin(instance_index) instanceIndex"),a=Zt.substitute(a,"//VTK::Position::Impl",[" var tmpPos: vec4 = pCoord;"," var numSteps: f32 = ceil(mapperUBO.LineWidth - 1.0);"," var offset: f32 = (mapperUBO.LineWidth - 1.0) * (f32(input.instanceIndex / 2u) - numSteps/2.0) / numSteps;"," var tmpPos2: vec3 = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * (f32(input.instanceIndex) % 2.0) * offset / rendererUBO.viewportSize.x;"," tmpPos2.y = tmpPos2.y + 2.0 * (f32(input.instanceIndex + 1u) % 2.0) * offset / rendererUBO.viewportSize.y;"," tmpPos2.z = min(1.0, tmpPos2.z + 0.00001);"," pCoord = vec4(tmpPos2.xyz * tmpPos.w, tmpPos.w);","//VTK::Position::Impl"]).result),a=Zt.substitute(a,"//VTK::Position::Impl",[" output.Position = pCoord;"]).result,o.setCode(a)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderNormal=(r,n,i)=>{const o=i.getBuffer("normalMC"),a=e.WebGPUActor.getRenderable();if(o){const s=n.getShaderDescription("vertex");s.hasOutput("normalVC")||s.addOutput("vec3","normalVC",o.getArrayInformation()[0].interpolation),s.hasOutput("tangentVC")||s.addOutput("vec3","tangentVC",o.getArrayInformation()[0].interpolation),s.hasOutput("bitangentVC")||s.addOutput("vec3","bitangentVC",o.getArrayInformation()[0].interpolation);let c=s.getCode();c=Zt.substitute(c,"//VTK::Normal::Impl",[" output.normalVC = normalize((rendererUBO.WCVCNormals * mapperUBO.MCWCNormals * normalMC).xyz);"," var c1: vec3 = cross(output.normalVC, vec3(0, 0, 1));"," var c2: vec3 = cross(output.normalVC, vec3(0, 1, 0));"," var tangent: vec3 = mix(c1, c2, distance(c1, c2));"," output.tangentVC = normalize(tangent);"," output.bitangentVC = normalize(cross(output.normalVC, tangent));"]).result,s.setCode(c);const l=n.getShaderDescription("fragment");c=l.getCode(),a.getProperty().getNormalTexture()?c=Zt.substitute(c,"//VTK::Normal::Impl",[" var normal: vec3 = input.normalVC;"," if (!input.frontFacing) { normal = -normal; }"," var tangent: vec3 = input.tangentVC;"," var bitangent: vec3 = input.bitangentVC;"," var TCVCMatrix: mat3x3 = mat3x3("," tangent.x, bitangent.x, normal.x,"," tangent.y, bitangent.y, normal.y,"," tangent.z, bitangent.z, normal.z,"," );"," var mappedNormal: vec3 = TCVCMatrix * (_normalMap.xyz * 2 - 1);"," normal = mix(normal, mappedNormal, mapperUBO.NormalStrength);"," normal = normalize(normal);"]).result:c=Zt.substitute(c,"//VTK::Normal::Impl",[" var normal: vec3 = input.normalVC;"," if (!input.frontFacing) { normal = -normal; }"," normal = normalize(normal);"]).result,l.setCode(c)}},e.shaderReplacements.set("replaceShaderNormal",t.replaceShaderNormal),t.replaceShaderLight=(r,n,i)=>{var l;if(r.includes("sel"))return;const o=n.getShaderDescription("vertex");o.hasOutput("vertexVC")||o.addOutput("vec4","vertexVC");const a=e.WebGPURenderer.getRenderable(),s=n.getShaderDescription("fragment");let c=s.getCode();if(c.includes("var normal:")&&e.useRendererMatrix&&!g_(r)&&!e.is2D&&!r.includes("sel")){const f=[" var pi: f32 = 3.14159265359;"," var fragPos: vec3 = vec3(input.vertexVC.xyz);"," var V: vec3 = mix(normalize(-fragPos), vec3(0, 0, 1), f32(rendererUBO.cameraParallel)); // View Vector"," var baseColor: vec3 = _diffuseMap.rgb * diffuseColor.rgb;"," var roughness: f32 = max(0.000001, mapperUBO.Roughness * _roughnessMap.r);"," var metallic: f32 = mapperUBO.Metallic * _metallicMap.r;"," var alpha: f32 = roughness*roughness;"," var ior: f32 = mapperUBO.BaseIOR;"," var k: f32 = alpha*alpha / 2;"," var diffuse: vec3 = vec3(0.);"," var specular: vec3 = vec3(0.);"," var emission: vec3 = _emissionMap.rgb * mapperUBO.Emission;"," {"," var i: i32 = 0;"," loop {"," if !(i < rendererUBO.LightCount) { break; }"," switch (i32(rendererLightSSBO.values[i].LightData.x)) {"," // Point Light"," case 0 {"," var color: vec3 = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var pos: vec3 = (rendererLightSSBO.values[i].LightPos).xyz;"," var calculated: PBRData = calcPointLight(normal, V, fragPos, ior, roughness, metallic, pos, color, baseColor);"," diffuse += max(vec3(0), calculated.diffuse);"," specular += max(vec3(0), calculated.specular);"," }"," // Directional light"," case 1 {"," var dir: vec3 = (rendererUBO.WCVCNormals * vec4(normalize(rendererLightSSBO.values[i].LightDir.xyz), 0.)).xyz;"," dir = normalize(dir);"," var color: vec3 = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var calculated: PBRData = calcDirectionalLight(normal, V, ior, roughness, metallic, dir, color, baseColor); // diffuseColor.rgb needs to be fixed with a more dynamic diffuse color"," diffuse += max(vec3(0), calculated.diffuse);"," specular += max(vec3(0), calculated.specular);"," }"," // Spot Light"," case 2 {"," var color: vec3 = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var pos: vec3 = (rendererLightSSBO.values[i].LightPos).xyz;"," var dir: vec3 = (rendererUBO.WCVCNormals * vec4(normalize(rendererLightSSBO.values[i].LightDir.xyz), 0.)).xyz;"," dir = normalize(dir);"," var cones: vec2 = vec2(rendererLightSSBO.values[i].LightData.y, rendererLightSSBO.values[i].LightData.z);"," var calculated: PBRData = calcSpotLight(normal, V, fragPos, ior, roughness, metallic, pos, dir, cones, color, baseColor);"," diffuse += max(vec3(0), calculated.diffuse);"," specular += max(vec3(0), calculated.specular);"," }"," default { continue; }"," }"," continuing { i++; }"," }"," }"," var fresnel: f32 = schlickFresnelIOR(V, normal, ior, k); // Fresnel"," fresnel = min(1.0, fresnel);"," // This could be controlled with its own variable (that isnt base color) for better artistic control"," var fresnelMetallic: vec3 = schlickFresnelRGB(V, normal, baseColor); // Fresnel for metal, takes color into account"," var kS: vec3 = mix(vec3(fresnel), fresnelMetallic, metallic);"," kS = min(vec3(1.0), kS);"," var kD: vec3 = (1.0 - kS) * (1.0 - metallic);"," var PBR: vec3 = mapperUBO.DiffuseIntensity*kD*diffuse + kS*specular;"," PBR += emission;"," computedColor = vec4(PBR, mapperUBO.Opacity);"];(l=a.getEnvironmentTexture())!=null&&l.getImageLoaded()&&f.push(" // To get diffuse IBL, the texture is sampled with normals in worldspace"," var diffuseIBLCoords: vec3 = (transpose(rendererUBO.WCVCNormals) * vec4(normal, 1.)).xyz;"," var diffuseCoords: vec2 = vecToRectCoord(diffuseIBLCoords);"," // To get specular IBL, the texture is sampled as the worldspace reflection between the normal and view vectors"," // Reflections are first calculated in viewspace, then converted to worldspace to sample the environment"," var VreflN: vec3 = normalize(reflect(-V, normal));"," var reflectionIBLCoords = (transpose(rendererUBO.WCVCNormals) * vec4(VreflN, 1.)).xyz;"," var specularCoords: vec2 = vecToRectCoord(reflectionIBLCoords);"," var diffuseIBL = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, diffuseCoords, rendererUBO.MaxEnvironmentMipLevel);"," var level = roughness * rendererUBO.MaxEnvironmentMipLevel;"," var specularIBL = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, specularCoords, level);"," var specularIBLContribution: vec3 = specularIBL.rgb*rendererUBO.BackgroundSpecularStrength;"," computedColor += vec4(specularIBLContribution*kS, 0);"," var diffuseIBLContribution: vec3 = diffuseIBL.rgb*rendererUBO.BackgroundDiffuseStrength;"," diffuseIBLContribution *= baseColor * _ambientOcclusionMap.rgb;"," computedColor += vec4(diffuseIBLContribution*kD, 0);"),c=Zt.substitute(c,"//VTK::Light::Impl",f).result,s.setCode(c)}else c=Zt.substitute(c,"//VTK::Light::Impl",[" var diffuse: vec3 = diffuseColor.rgb;"," var specular: vec3 = mapperUBO.SpecularColor.rgb * mapperUBO.SpecularColor.a;"," computedColor = vec4(diffuse * _diffuseMap.rgb, mapperUBO.Opacity);"]).result,s.setCode(c)},e.shaderReplacements.set("replaceShaderLight",t.replaceShaderLight),t.replaceShaderColor=(r,n,i)=>{if(g_(r)){const l=n.getShaderDescription("fragment");let f=l.getCode();f=Zt.substitute(f,"//VTK::Color::Impl",["ambientColor = mapperUBO.EdgeColor;","diffuseColor = mapperUBO.EdgeColor;"]).result,l.setCode(f);return}const o=i.getBuffer("colorVI");if(!o)return;const a=n.getShaderDescription("vertex");a.addOutput("vec4","color",o.getArrayInformation()[0].interpolation);let s=a.getCode();s=Zt.substitute(s,"//VTK::Color::Impl",[" output.color = colorVI;"]).result,a.setCode(s);const c=n.getShaderDescription("fragment");s=c.getCode(),s=Zt.substitute(s,"//VTK::Color::Impl",["ambientColor = input.color;","diffuseColor = input.color;","opacity = mapperUBO.Opacity * input.color.a;"]).result,c.setCode(s)},e.shaderReplacements.set("replaceShaderColor",t.replaceShaderColor),t.replaceShaderTCoord=(r,n,i)=>{var h,g,p,v,x,m,y,w,C,S,T,_,E,D,b,I,R,M,L,A;if(!i.hasAttribute("tcoord"))return;const o=n.getShaderDescription("vertex"),a=i.getBuffer("tcoord"),s=Ar.getNumberOfComponentsFromBufferFormat(a.getArrayInformation()[0].format);let c=o.getCode();o.addOutput(`vec${s}`,"tcoordVS"),c=Zt.substitute(c,"//VTK::TCoord::Impl",[" output.tcoordVS = tcoord;"]).result,o.setCode(c);const l=n.getShaderDescription("fragment");c=l.getCode();const f=e.WebGPUActor.getRenderable(),u=G=>G?G.getDimensionality()===s:!1,d=[];((p=(g=(h=f.getProperty()).getDiffuseTexture)==null?void 0:g.call(h))!=null&&p.getImageLoaded()||f.getTextures()[0]||e.colorTexture)&&(u((x=(v=f.getProperty()).getDiffuseTexture)==null?void 0:x.call(v))||u(f.getTextures()[0])||u(e.colorTexture))&&d.push("_diffuseMap = textureSample(DiffuseTexture, DiffuseTextureSampler, input.tcoordVS);"),(w=(y=(m=f.getProperty()).getRoughnessTexture)==null?void 0:y.call(m))!=null&&w.getImageLoaded()&&u(f.getProperty().getRoughnessTexture())&&d.push("_roughnessMap = textureSample(RoughnessTexture, RoughnessTextureSampler, input.tcoordVS);"),(T=(S=(C=f.getProperty()).getMetallicTexture)==null?void 0:S.call(C))!=null&&T.getImageLoaded()&&u(f.getProperty().getMetallicTexture())&&d.push("_metallicMap = textureSample(MetallicTexture, MetallicTextureSampler, input.tcoordVS);"),(D=(E=(_=f.getProperty()).getNormalTexture)==null?void 0:E.call(_))!=null&&D.getImageLoaded()&&u(f.getProperty().getNormalTexture())&&d.push("_normalMap = textureSample(NormalTexture, NormalTextureSampler, input.tcoordVS);"),(R=(I=(b=f.getProperty()).getAmbientOcclusionTexture)==null?void 0:I.call(b))!=null&&R.getImageLoaded()&&u(f.getProperty().getAmbientOcclusionTexture())&&d.push("_ambientOcclusionMap = textureSample(AmbientOcclusionTexture, AmbientOcclusionTextureSampler, input.tcoordVS);"),(A=(L=(M=f.getProperty()).getEmissionTexture)==null?void 0:L.call(M))!=null&&A.getImageLoaded()&&u(f.getProperty().getEmissionTexture())&&d.push("_emissionMap = textureSample(EmissionTexture, EmissionTextureSampler, input.tcoordVS);"),c=Zt.substitute(c,"//VTK::TCoord::Impl",d).result,l.setCode(c)},e.shaderReplacements.set("replaceShaderTCoord",t.replaceShaderTCoord),t.replaceShaderSelect=(r,n,i)=>{if(r.includes("sel")){const o=n.getShaderDescription("fragment");let a=o.getCode();a=Zt.substitute(a,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"]).result,o.setCode(a)}},e.shaderReplacements.set("replaceShaderSelect",t.replaceShaderSelect),t.getUsage=(r,n)=>r===Vg.POINTS||n===ri.Points?Sr.Verts:n===ri.Lines?Sr.Lines:r===Vg.WIREFRAME?n===ri.Triangles?Sr.LinesFromTriangles:Sr.LinesFromStrips:n===ri.Triangles?Sr.Triangles:n===ri.TriangleStrips?Sr.Strips:n===ri.TriangleEdges?Sr.LinesFromTriangles:Sr.LinesFromStrips,t.getHashFromUsage=r=>`pt${r}`,t.getTopologyFromUsage=r=>{switch(r){case Sr.Triangles:return"triangle-list";case Sr.Verts:return"point-list";case Sr.Lines:default:return"line-list"}},t.buildVertexInput=()=>{var p,v;const r=e.currentInput,n=e.cellArray,i=e.primitiveType;let a=e.WebGPUActor.getRenderable().getProperty().getRepresentation();const s=e.WebGPURenderWindow.getDevice();let c=!1;i===ri.TriangleEdges&&(c=!0,a=Vg.WIREFRAME);const l=e.vertexInput,f=r.getPoints();let u;if(n){const x={hash:`R${a}P${i}${n.getMTime()}`,usage:Sr.Index,cells:n,numberOfPoints:f.getNumberOfPoints(),primitiveType:i,representation:a};u=s.getBufferManager().getBuffer(x),l.setIndexBuffer(u)}else l.setIndexBuffer(null);if(f){const x=e.WebGPUActor.getBufferShift(e.WebGPURenderer),m={hash:`${f.getMTime()}I${u.getMTime()}${x.join()}float32x4`,usage:Sr.PointArray,format:"float32x4",dataArray:f,indexBuffer:u,shift:x,packExtra:!0},y=s.getBufferManager().getBuffer(m);l.addBuffer(y,["vertexBC"])}else l.removeBufferIfPresent("vertexBC");const d=t.getUsage(a,i);if(e._usesCellNormals=!1,!e.is2D&&(d===Sr.Triangles||d===Sr.Strips)){const x=r.getPointData().getNormals(),m={format:"snorm8x4",indexBuffer:u,packExtra:!0,shift:0,scale:127};if(x){m.hash=`${x.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=x,m.usage=Sr.PointArray;const y=s.getBufferManager().getBuffer(m);l.addBuffer(y,["normalMC"])}else if(i===ri.Triangles){e._usesCellNormals=!0,m.hash=`PFN${f.getMTime()}I${u.getMTime()}snorm8x4`,m.dataArray=f,m.cells=n,m.usage=Sr.NormalsFromPoints;const y=s.getBufferManager().getBuffer(m);l.addBuffer(y,["normalMC"])}else l.removeBufferIfPresent("normalMC")}else l.removeBufferIfPresent("normalMC");let h=!1;if(e.renderable.getScalarVisibility()){const x=e.renderable.getColorMapColors();if(x&&!c){const m=e.renderable.getScalarMode();let y=!1;(m===Fg.USE_CELL_DATA||m===Fg.USE_CELL_FIELD_DATA||m===Fg.USE_FIELD_DATA||!r.getPointData().getScalars())&&m!==Fg.USE_POINT_FIELD_DATA&&x&&(y=!0);const w={usage:Sr.PointArray,format:"unorm8x4",hash:`${y}${x.getMTime()}I${u.getMTime()}unorm8x4`,dataArray:x,indexBuffer:u,cellData:y,cellOffset:0},C=s.getBufferManager().getBuffer(w);l.addBuffer(C,["colorVI"]),h=!0}}h||l.removeBufferIfPresent("colorVI");let g=null;if((v=(p=e.renderable).getInterpolateScalarsBeforeMapping)!=null&&v.call(p)&&e.renderable.getColorCoordinates()?g=e.renderable.getColorCoordinates():g=r.getPointData().getTCoords(),g&&!c){const x=s.getBufferManager().getBufferForPointArray(g,l.getIndexBuffer());l.addBuffer(x,["tcoord"])}else l.removeBufferIfPresent("tcoord")},t.updateTextures=()=>{var c,l,f,u,d,h,g,p,v,x,m,y,w,C,S;const r=[],n=[],i=(l=(c=e.renderable).getColorTextureMap)==null?void 0:l.call(c);i&&(e.colorTexture||(e.colorTexture=Dh.newInstance({label:"polyDataColor"})),e.colorTexture.setInputData(i),n.push(["Diffuse",e.colorTexture]));const o=e.WebGPUActor.getRenderable(),a=e.WebGPURenderer.getRenderable(),s=[];if((u=(f=o.getProperty()).getDiffuseTexture)!=null&&u.call(f)){const T=["Diffuse",o.getProperty().getDiffuseTexture()];s.push(T)}if(o.getTextures()[0]){const T=["Diffuse",o.getTextures()[0]];s.push(T)}if(e.colorTexture){const T=["Diffuse",e.colorTexture];s.push(T)}if((h=(d=o.getProperty()).getRoughnessTexture)!=null&&h.call(d)){const T=["Roughness",o.getProperty().getRoughnessTexture()];s.push(T)}if((p=(g=o.getProperty()).getMetallicTexture)!=null&&p.call(g)){const T=["Metallic",o.getProperty().getMetallicTexture()];s.push(T)}if((x=(v=o.getProperty()).getNormalTexture)!=null&&x.call(v)){const T=["Normal",o.getProperty().getNormalTexture()];s.push(T)}if((y=(m=o.getProperty()).getAmbientOcclusionTexture)!=null&&y.call(m)){const T=["AmbientOcclusion",o.getProperty().getAmbientOcclusionTexture()];s.push(T)}if((C=(w=o.getProperty()).getEmissionTexture)!=null&&C.call(w)){const T=["Emission",o.getProperty().getEmissionTexture()];s.push(T)}if((S=a.getEnvironmentTexture)!=null&&S.call(a)){const T=["Environment",a.getEnvironmentTexture()];s.push(T)}for(let T=0;T=0;T--)r[T]||(e.textures.splice(T,1),e.textureViews.splice(T,1))},t.computePipelineHash=()=>{let r=`pd${e.useRendererMatrix?"r":""}${e.forceZValue?"z":""}`;if(e.primitiveType===ri.TriangleEdges||e.primitiveType===ri.TriangleStripEdges)r+="edge";else{if(e.vertexInput.hasAttribute("normalMC")&&(r+="n"),e.vertexInput.hasAttribute("colorVI")&&(r+="c"),e.vertexInput.hasAttribute("tcoord")){const i=e.vertexInput.getBuffer("tcoord"),o=Ar.getNumberOfComponentsFromBufferFormat(i.getArrayInformation()[0].format);r+=`t${o}`}e.textures.length&&(r+=`tx${e.textures.length}`)}e._usesCellNormals&&(r+="cn"),e.SSBO&&(r+="ssbo");const n=t.getHashFromUsage(e.usage);r+=n,r+=e.renderEncoder.getPipelineHash(),e.pipelineHash=r},t.updateBuffers=()=>{e.primitiveType!==ri.TriangleEdges&&e.primitiveType!==ri.TriangleStripEdges&&t.updateTextures();const r=e.WebGPUActor.getRenderable(),n=r.getProperty().getRepresentation();e.usage=t.getUsage(n,e.primitiveType),t.buildVertexInput();const i=e.vertexInput.getBuffer("vertexBC");if(t.setNumberOfVertices(i.getSizeInBytes()/i.getStrideInBytes()),t.setTopology(t.getTopologyFromUsage(e.usage)),t.updateUBO(),t.haveWideLines()){const o=r.getProperty();t.setNumberOfInstances(Math.ceil(o.getLineWidth()*2))}else t.setNumberOfInstances(1)}}const eae={is2D:!1,cellArray:null,currentInput:null,cellOffset:0,primitiveType:0,colorTexture:null,renderEncoder:null,textures:null};function $R(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,eae,r),mM.extend(t,e,r),e.fragmentShaderTemplate=Zoe,e.vertexShaderTemplate=Joe,e._tmpMat3=ao(new Float64Array(9)),e._tmpMat4=qe(new Float64Array(16)),e.UBO=bu.newInstance({label:"mapperUBO"}),e.UBO.addEntry("BCWCMatrix","mat4x4"),e.UBO.addEntry("BCSCMatrix","mat4x4"),e.UBO.addEntry("MCWCNormals","mat4x4"),e.UBO.addEntry("AmbientColor","vec4"),e.UBO.addEntry("DiffuseColor","vec4"),e.UBO.addEntry("EdgeColor","vec4"),e.UBO.addEntry("SpecularColor","vec4"),e.UBO.addEntry("AmbientIntensity","f32"),e.UBO.addEntry("DiffuseIntensity","f32"),e.UBO.addEntry("Roughness","f32"),e.UBO.addEntry("Metallic","f32"),e.UBO.addEntry("Ambient","f32"),e.UBO.addEntry("Normal","f32"),e.UBO.addEntry("Emission","f32"),e.UBO.addEntry("NormalStrength","f32"),e.UBO.addEntry("BaseIOR","f32"),e.UBO.addEntry("SpecularIntensity","f32"),e.UBO.addEntry("LineWidth","f32"),e.UBO.addEntry("Opacity","f32"),e.UBO.addEntry("ZValue","f32"),e.UBO.addEntry("PropID","u32"),e.UBO.addEntry("ClipNear","f32"),e.UBO.addEntry("ClipFar","f32"),e.UBO.addEntry("Time","u32"),Jn(t,e,["cellArray","currentInput","cellOffset","is2D","primitiveType","renderEncoder"]),e.textures=[],Qoe(t,e)}const tae=Bt($R,"vtkWebGPUCellArrayMapper");var jR={newInstance:tae,extend:$R};const{PrimitiveTypes:Ug}=_0;function nae(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper"),t.createCellArrayMapper=()=>jR.newInstance(),t.buildPass=r=>{if(r){e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor"),e.renderable.getStatic()||e.renderable.update();const n=e.renderable.getInputData();e.renderable.mapScalars(n,1),t.updateCellArrayMappers(n)}},t.updateCellArrayMappers=r=>{const n=[r.getVerts(),r.getLines(),r.getPolys(),r.getStrips()],i=[];let o=0;for(let a=Ug.Points;a<=Ug.Triangles;a++)if(n[a].getNumberOfValues()>0){e.primitives[a]||(e.primitives[a]=t.createCellArrayMapper());const s=e.primitives[a];s.setCellArray(n[a]),s.setCurrentInput(r),s.setCellOffset(o),s.setPrimitiveType(a),s.setRenderable(e.renderable),o+=n[a].getNumberOfCells(),i.push(s)}else e.primitives[a]=null;if(e.WebGPUActor.getRenderable().getProperty().getEdgeVisibility())for(let a=Ug.TriangleEdges;a<=Ug.TriangleStripEdges;a++)if(n[a-2].getNumberOfValues()>0){e.primitives[a]||(e.primitives[a]=t.createCellArrayMapper());const s=e.primitives[a];s.setCellArray(n[a-2]),s.setCurrentInput(r),s.setCellOffset(e.primitives[a-2].getCellOffset()),s.setPrimitiveType(a),s.setRenderable(e.renderable),i.push(s)}else e.primitives[a]=null;t.prepareNodes(),t.addMissingChildren(i),t.removeUnusedNodes()}}const rae={primitives:null};function iae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,rae,r),tn.extend(t,e,r),e.primitives=[],nae(t,e)}const oae=Bt(iae,"vtkWebGPUPolyDataMapper");uo("vtkMapper",oae);const{PrimitiveTypes:p_}=_0;function aae(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper2D"),t.createCellArrayMapper=()=>jR.newInstance(),t.buildPass=r=>{if(r){e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor2D"),e.renderable.getStatic()||e.renderable.update();const n=e.renderable.getInputData();e.renderable.mapScalars(n,1),t.updateCellArrayMappers(n)}},t.updateCellArrayMappers=r=>{const n=[r.getVerts(),r.getLines(),r.getPolys(),r.getStrips()],i=[];let o=0;for(let a=p_.Points;a<=p_.Triangles;a++)if(n[a].getNumberOfValues()>0){e.primitives[a]||(e.primitives[a]=t.createCellArrayMapper());const s=e.primitives[a];s.setCellArray(n[a]),s.setCurrentInput(r),s.setCellOffset(o),s.setPrimitiveType(a),s.setRenderable(e.renderable),s.setIs2D(!0),o+=n[a].getNumberOfCells(),i.push(s)}else e.primitives[a]=null;t.prepareNodes(),t.addMissingChildren(i),t.removeUnusedNodes()}}function sae(t){return{primitives:[],...t}}function cae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sae(r)),tn.extend(t,e,r),e.primitives=[],aae(t,e)}const lae=Bt(cae,"vtkWebGPUPolyDataMapper2D");uo("vtkMapper2D",lae);function uae(t,e){e.classHierarchy.push("vtkWebGPUScalarBarActor"),t.buildPass=r=>{r&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.scalarBarActorHelper.getRenderable()||e.scalarBarActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.scalarBarActorHelper.getBarActor()),t.addMissingNode(e.scalarBarActorHelper.getTmActor()),t.removeUnusedNodes())},t.opaquePass=(r,n)=>{if(r){const i=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,o=e.WebGPURenderer.getTiledSizeAndOrigin();e.scalarBarActorHelper.updateAPISpecificData([o.usize,o.vsize],i,e.WebGPURenderWindow.getRenderable())}}}const fae={};function dae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,fae,r),tn.extend(t,e,r),e.scalarBarActorHelper=WR.newScalarBarActorHelper(),uae(t,e)}const hae=Bt(dae,"vtkWebGPUScalarBarActor");uo("vtkScalarBarActor",hae);function gae(t,e){e.classHierarchy.push("vtkWebGPUTextureView"),t.create=(r,n)=>{e.texture=r,e.options=n,e.options.dimension=e.options.dimension||"2d",e.options.label=e.label,e.textureHandle=r.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupLayoutEntry.texture.viewDimension=e.options.dimension;const i=Ar.getDetailsFromTextureFormat(e.texture.getFormat());e.bindGroupLayoutEntry.texture.sampleType=i.sampleType},t.createFromTextureHandle=(r,n)=>{e.texture=null,e.options=n,e.options.dimension=e.options.dimension||"2d",e.options.label=e.label,e.textureHandle=r,e.handle=e.textureHandle.createView(e.options),e.bindGroupLayoutEntry.texture.viewDimension=e.options.dimension;const i=Ar.getDetailsFromTextureFormat(n.format);e.bindGroupLayoutEntry.texture.sampleType=i.sampleType,e.bindGroupTime.modified()},t.getBindGroupEntry=()=>({resource:t.getHandle()}),t.getShaderCode=(r,n)=>{let i="f32";e.bindGroupLayoutEntry.texture.sampleType==="sint"?i="i32":e.bindGroupLayoutEntry.texture.sampleType==="uint"&&(i="u32");let o=`@binding(${r}) @group(${n}) var ${e.label}: texture_${e.options.dimension}<${i}>;`;return e.bindGroupLayoutEntry.texture.sampleType==="depth"&&(o=`@binding(${r}) @group(${n}) var ${e.label}: texture_depth_${e.options.dimension};`),o},t.addSampler=(r,n)=>{const i=_M.newInstance({label:`${e.label}Sampler`});i.create(r,n),t.setSampler(i)},t.getBindGroupTime=()=>(e.texture&&e.texture.getHandle()!==e.textureHandle&&(e.textureHandle=e.texture.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupTime.modified()),e.bindGroupTime),t.getHandle=()=>(e.texture&&e.texture.getHandle()!==e.textureHandle&&(e.textureHandle=e.texture.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupTime.modified()),e.handle)}const pae={texture:null,handle:null,sampler:null,label:null};function HR(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pae,r),W.obj(t,e),e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d"}},e.bindGroupTime={},W.obj(e.bindGroupTime,{mtime:0}),W.get(t,e,["bindGroupTime","texture"]),W.setGet(t,e,["bindGroupLayoutEntry","label","sampler"]),gae(t,e)}const mae=W.newInstance(HR);var vae={newInstance:mae,extend:HR};const{BufferUsage:m_}=_0;function yae(t,e){e.classHierarchy.push("vtkWebGPUTexture"),t.create=(r,n)=>{e.device=r,e.width=n.width,e.height=n.height,e.depth=n.depth?n.depth:1;const i=e.depth===1?"2d":"3d";e.format=n.format?n.format:"rgba8unorm",e.mipLevel=n.mipLevel?n.mipLevel:0,e.usage=n.usage?n.usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label,dimension:i,mipLevelCount:e.mipLevel+1})},t.assignFromHandle=(r,n,i)=>{e.device=r,e.handle=n,e.width=i.width,e.height=i.height,e.depth=i.depth?i.depth:1,e.format=i.format?i.format:"rgba8unorm",e.usage=i.usage?i.usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST},t.writeImageData=r=>{let n=[];if(r.canvas){e.device.getHandle().queue.copyExternalImageToTexture({source:r.canvas,flipY:r.flip},{texture:e.handle,premultipliedAlpha:!0},[e.width,e.height,e.depth]),e.ready=!0;return}r.jsImageData&&!r.nativeArray&&(r.width=r.jsImageData.width,r.height=r.jsImageData.height,r.depth=1,r.format="rgba8unorm",r.flip=!0,r.nativeArray=r.jsImageData.data);const i=Ar.getDetailsFromTextureFormat(e.format);let o=e.width*i.stride;const a=(c,l,f)=>{const u=c.length/(l*f)*c.BYTES_PER_ELEMENT,d=i.elementSize===2&&i.sampleType==="float";if(d||u%256){const h=c,g=u/h.BYTES_PER_ELEMENT,p=i.elementSize,v=256*Math.floor((g*p+255)/256),x=v/p,m=W.newTypedArray(d?"Uint16Array":h.constructor.name,x*l*f);for(let y=0;y{const r=Ar.getDetailsFromTextureFormat(e.format);return r.elementSize===2&&r.sampleType==="float"?1:255},t.getNumberOfComponents=()=>Ar.getDetailsFromTextureFormat(e.format).numComponents,t.getDimensionality=()=>{let r=0;return e.width>1&&r++,e.height>1&&r++,e.depth>1&&r++,r},t.resizeToMatch=r=>{(r.getWidth()!==e.width||r.getHeight()!==e.height||r.getDepth()!==e.depth)&&(e.width=r.getWidth(),e.height=r.getHeight(),e.depth=r.getDepth(),e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label}))},t.resize=function(r,n){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;(r!==e.width||n!==e.height||i!==e.depth)&&(e.width=r,e.height=n,e.depth=i,e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label}))},t.createView=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.dimension||(n.dimension=e.depth===1?"2d":"3d");const i=vae.newInstance({label:r});return i.create(t,n),i}}const xae={device:null,handle:null,buffer:null,ready:!1,label:null};function wae(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xae,r),W.obj(t,e),W.get(t,e,["handle","ready","width","height","depth","format","usage"]),W.setGet(t,e,["device","label"]),yae(t,e)}W.newInstance(wae);function Cae(t){if(!t||t.data.length===0)throw new Error("Invalid contour set data, see publicContourSetData type for more info");if(!t.id)throw new Error("Invalid contour set data, each contour set must have an id");if(!t.data||!Array.isArray(t.data))throw new Error("Invalid contour set data, each contour set must have an array of contours");t.data.forEach(e=>{if(!e.points||!Array.isArray(e.points))throw new Error("Invalid contour set data, each contour must have an array of points");e.points.forEach(r=>{if(!r||!Array.isArray(r)||r.length!==3)throw new Error("Invalid contour set data, each point must be an array of length 3")})})}class v_{constructor(e){const{points:r,type:n}=e.data;this.id=e.id,this._points=r,this._type=n,this._color=e.color,this._segmentIndex=e.segmentIndex,this.sizeInBytes=this._getSizeInBytes()}_getSizeInBytes(){return this._points.length*3}get points(){return this._points}set points(e){this._points=e}get color(){return this._color}set color(e){this._color=e}get type(){return this._type}set type(e){this._type=e}get segmentIndex(){return this._segmentIndex}set segmentIndex(e){this._segmentIndex=e}get flatPointsArray(){return this._points.map(e=>[...e]).flat()}}class Sae{constructor(e){this._color=[200,0,0],this.id=e.id,this._contours=[],this._color=e.color??this._color,this.frameOfReferenceUID=e.frameOfReferenceUID,this._segmentIndex=e.segmentIndex,this._createEachContour(e.data),this.sizeInBytes=this._getSizeInBytes()}_createEachContour(e){e.forEach(r=>{const{points:n,type:i,color:o}=r,a=new v_({id:`${this.id}-segment-${this._segmentIndex}`,data:{points:n,type:i,segmentIndex:this._segmentIndex,color:o??this._color},segmentIndex:this._segmentIndex,color:o??this._color});this._contours.push(a)}),this._updateContourSetCentroid()}_updateContourSetCentroid(){const e=this.totalNumberOfPoints,r=this.flatPointsArray,n=r.reduce((a,s)=>[a[0]+s[0],a[1]+s[1],a[2]+s[2]],[0,0,0]),i=[n[0]/e,n[1]/e,n[2]/e],o=r.reduce((a,s)=>{const c=this._getDistance(i,s),l=this._getDistance(i,a);return ce+r.sizeInBytes,0)}_getDistance(e,r){return Math.sqrt((e[0]-r[0])**2+(e[1]-r[1])**2+(e[2]-r[2])**2)}get centroid(){return this._centroid}get segmentIndex(){return this._segmentIndex}get color(){return this._color}set color(e){this._color=e,this._contours.forEach(r=>{r instanceof v_&&(r.color=e)})}get contours(){return this._contours}get flatPointsArray(){return this._contours.flatMap(e=>e.points)}get numberOfContours(){return this._contours.length}get totalNumberOfPoints(){return this._contours.reduce((e,r)=>e+r.points.length,0)}get numberOfPointsArray(){return this._contours.map(e=>e.points.length)}getPointsInContour(e){return this._contours[e].points}getNumberOfPointsInAContour(e){return this.getPointsInContour(e).length}}function Tae(t,e){Cae(e);const r=new Sae({id:e.id,data:e.data,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:al.CONTOUR,data:r,sizeInBytes:r.sizeInBytes}}function _ae(t){var e,r;if(!t.id)throw new Error("Surface must have an id");if(((e=t.points)==null?void 0:e.length)===0)throw new Error("Surface must have non-empty points array");if(((r=t.polys)==null?void 0:r.length)===0)throw new Error("Surface must have non-empty polys array");if(!t.frameOfReferenceUID)throw new Error("Surface must have a frameOfReferenceUID")}function Eae(t,e){_ae(e);const r=new tre({id:e.id,points:e.points,polys:e.polys,color:e.color,frameOfReferenceUID:e.frameOfReferenceUID,segmentIndex:e.segmentIndex??1});return{id:t,type:al.SURFACE,data:r,sizeInBytes:r.sizeInBytes}}function Dae(t,e){if(t===void 0)throw new Error("createAndCacheGeometry: parameter geometryId must not be undefined");let r=_e.getGeometry(t);if(r)return r;if(e.type===al.CONTOUR)r=Tae(t,e.geometryData);else if(e.type===al.SURFACE)r=Eae(t,e.geometryData);else throw new Error("Unknown geometry type");return _e.putGeometrySync(t,r),r}class KR{constructor(e){this.getGroupKey=r=>{if(typeof r=="string")return r;const i=re(r);if(!i)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return i.FrameOfReferenceUID},this._imageVolumeModifiedHandler=r=>{const n=r.detail,{FrameOfReferenceUID:i}=n,a=this.annotations[i];a&&Object.keys(a).forEach(s=>{a[s].forEach(l=>{l.invalidated!==void 0&&(l.invalidated=!0)})})},this.getFramesOfReference=()=>Object.keys(this.annotations),this.getAnnotations=(r,n)=>{const i=this.annotations;return i[r]?n?i[r][n]?i[r][n]:[]:i[r]:[]},this.getAnnotation=r=>{const n=this.annotations;for(const i in n){const o=n[i];for(const a in o){const s=o[a];for(const c of s)if(r===c.annotationUID)return c}}},this.getNumberOfAnnotations=(r,n)=>{const i=this.getAnnotations(r,n);if(!i.length)return 0;if(n)return i.length;let o=0;for(const a in i)o+=i[a].length;return o},this.addAnnotation=(r,n)=>{const{metadata:i}=r,{FrameOfReferenceUID:o,toolName:a}=i;n=n||o;const s=this.annotations;let c=s[n];c||(s[n]={},c=s[n]);let l=c[a];l||(c[a]=[],l=c[a]),this.preprocessingFn&&(r=this.preprocessingFn(r)),l.push(r)},this.removeAnnotation=r=>{const{annotations:n}=this;for(const i in n){const o=n[i];for(const a in o){const s=o[a],c=s.findIndex(l=>l.annotationUID===r);c!==-1&&(s.splice(c,1),s.length===0&&delete o[a])}Object.keys(o).length===0&&delete n[i]}},this.removeAnnotations=(r,n)=>{const i=this.annotations,o=[];if(!i[r])return o;if(n){const a=i[r][n];for(const s of a)this.removeAnnotation(s.annotationUID),o.push(s)}else for(const a in i[r]){const s=i[r][a];for(const c of s)this.removeAnnotation(c.annotationUID),o.push(c)}return o},this.saveAnnotations=(r,n)=>{const i=this.annotations;if(r&&n){const o=i[r];if(!o)return;const a=o[n];return structuredClone(a)}else if(r){const o=i[r];return structuredClone(o)}return structuredClone(i)},this.restoreAnnotations=(r,n,i)=>{const o=this.annotations;if(n&&i){let a=o[n];a||(o[n]={},a=o[n]),a[i]=r}else n?o[n]=r:this.annotations=structuredClone(r)},this.getAllAnnotations=()=>Object.values(this.annotations).map(r=>Object.values(r)).flat(2),this.getNumberOfAllAnnotations=()=>{let r=0;const n=this.annotations;for(const i in n){const o=n[i];for(const a in o){const s=o[a];r+=s.length}}return r},this.removeAllAnnotations=()=>{const r=[];for(const n of this.getAllAnnotations())this.removeAnnotation(n.annotationUID),r.push(n);return r},e||(e=wn()),this.annotations={},this.uid=e,Ce.addEventListener(Se.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}setPreprocessingFn(e){this.preprocessingFn=e}}const wC=new KR("DEFAULT");function On(t){return wC.getAnnotation(t)}var la;(function(t){t[t.Primary=1]="Primary",t[t.Secondary=2]="Secondary",t[t.Primary_And_Secondary=3]="Primary_And_Secondary",t[t.Auxiliary=4]="Auxiliary",t[t.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",t[t.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",t[t.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",t[t.Fourth_Button=8]="Fourth_Button",t[t.Fifth_Button=16]="Fifth_Button",t[t.Wheel=524288]="Wheel",t[t.Wheel_Primary=524289]="Wheel_Primary"})(la||(la={}));var vr;(function(t){t[t.Shift=16]="Shift",t[t.Ctrl=17]="Ctrl",t[t.Alt=18]="Alt",t[t.Meta=91]="Meta",t[t.ShiftCtrl=1617]="ShiftCtrl",t[t.ShiftAlt=1618]="ShiftAlt",t[t.ShiftMeta=1691]="ShiftMeta",t[t.CtrlAlt=1718]="CtrlAlt",t[t.CtrlMeta=1791]="CtrlMeta",t[t.AltMeta=1891]="AltMeta"})(vr||(vr={}));var Ft;(function(t){t.Active="Active",t.Passive="Passive",t.Enabled="Enabled",t.Disabled="Disabled"})(Ft||(Ft={}));var m3;(function(t){t.Default="",t.Highlighted="Highlighted",t.Selected="Selected",t.Locked="Locked",t.AutoGenerated="AutoGenerated"})(m3||(m3={}));const Oa=m3;var F;(function(t){t.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",t.TOOLGROUP_VIEWPORT_ADDED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_ADDED",t.TOOLGROUP_VIEWPORT_REMOVED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED",t.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",t.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",t.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",t.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",t.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",t.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",t.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",t.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",t.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",t.ANNOTATION_INTERPOLATION_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_INTERPOLATION_PROCESS_COMPLETED",t.INTERPOLATED_ANNOTATIONS_REMOVED="CORNERSTONE_TOOLS_INTERPOLATED_ANNOTATIONS_REMOVED",t.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",t.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",t.SEGMENTATION_REPRESENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_ADDED",t.SEGMENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_ADDED",t.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",t.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",t.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",t.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",t.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",t.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",t.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",t.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",t.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",t.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",t.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",t.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",t.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",t.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",t.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",t.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",t.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",t.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",t.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",t.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",t.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE"})(F||(F={}));var v3;(function(t){t.Labelmap="Labelmap",t.Contour="Contour",t.Surface="Surface"})(v3||(v3={}));const Ge=v3;var Wc;(function(t){t.UP="UP",t.DOWN="DOWN",t.LEFT="LEFT",t.RIGHT="RIGHT"})(Wc||(Wc={}));var y3;(function(t){t.OnInteractionStart="onInteractionStart",t.OnInteractionEnd="onInteractionEnd",t.Preview="preview",t.RejectPreview="rejectPreview",t.AcceptPreview="acceptPreview",t.Fill="fill",t.StrategyFunction="strategyFunction",t.CreateIsInThreshold="createIsInThreshold",t.Initialize="initialize",t.INTERNAL_setValue="setValue",t.ComputeInnerCircleRadius="computeInnerCircleRadius"})(y3||(y3={}));const it=y3;var Bn;(function(t){t.Interaction="Interaction",t.HandlesUpdated="HandlesUpdated",t.StatsUpdated="StatsUpdated",t.InitialSetup="InitialSetup",t.Completed="Completed",t.InterpolationUpdated="InterpolationUpdated"})(Bn||(Bn={}));var x3;(function(t){t.POLYSEG_CONTOUR_TO_LABELMAP="Converting Contour to Labelmap",t.POLYSEG_SURFACE_TO_LABELMAP="Converting Surfaces to Labelmap",t.POLYSEG_CONTOUR_TO_SURFACE="Converting Contour to Surface",t.POLYSEG_LABELMAP_TO_SURFACE="Converting Labelmap to Surface",t.SURFACE_CLIPPING="Clipping Surfaces"})(x3||(x3={}));const b0=x3,qR=Object.freeze(Object.defineProperty({__proto__:null,AnnotationStyleStates:Oa,ChangeTypes:Bn,Events:F,get KeyboardBindings(){return vr},get MouseBindings(){return la},SegmentationRepresentations:Ge,StrategyCallbacks:it,get Swipe(){return Wc},ToolModes:Ft,WorkerTypes:b0},Symbol.toStringTag,{value:"Module"}));let CC={};function bae(){CC={}}const y_={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:CC,enabledElements:[],handleRadius:6};let ve={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:CC,enabledElements:[],handleRadius:6};function Iae(){bae(),ve={...structuredClone({...y_,svgNodeCache:{}}),svgNodeCache:{...y_.svgNodeCache}}}var Oae="Expected a function",XR="__lodash_hash_undefined__",YR=1/0,Mae="[object Function]",Rae="[object GeneratorFunction]",Lae="[object Symbol]",Nae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Pae=/^\w*$/,Aae=/^\./,kae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vae=/[\\^$.*+?()[\]{}|]/g,Fae=/\\(\\)?/g,Uae=/^\[object .+?Constructor\]$/,Bae=typeof Dr=="object"&&Dr&&Dr.Object===Object&&Dr,Gae=typeof self=="object"&&self&&self.Object===Object&&self,SC=Bae||Gae||Function("return this")();function Wae(t,e){return t==null?void 0:t[e]}function zae(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch{}return e}var $ae=Array.prototype,jae=Function.prototype,JR=Object.prototype,Xv=SC["__core-js_shared__"],x_=function(){var t=/[^.]+$/.exec(Xv&&Xv.keys&&Xv.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),ZR=jae.toString,TC=JR.hasOwnProperty,QR=JR.toString,Hae=RegExp("^"+ZR.call(TC).replace(Vae,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),w_=SC.Symbol,Kae=$ae.splice,qae=eL(SC,"Map"),Wd=eL(Object,"create"),C_=w_?w_.prototype:void 0,S_=C_?C_.toString:void 0;function dl(t){var e=-1,r=t?t.length:0;for(this.clear();++e-1}function ise(t,e){var r=this.__data__,n=d2(r,t);return n<0?r.push([t,e]):r[n][1]=e,this}I0.prototype.clear=ese;I0.prototype.delete=tse;I0.prototype.get=nse;I0.prototype.has=rse;I0.prototype.set=ise;function _l(t){var e=-1,r=t?t.length:0;for(this.clear();++e=0&&n>=0&&(r>0||n>0)&&(i+=` ${r} ${n}`),this.addFallbackStyleProperty(i)}static getUniqueInstanceName(e){return`${e}-${cR(zd)}`}}const Mt={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:` - - - `},pi={x:127,y:60},Gl=` - -`,fs=` - - -`,Bg='',Wl='',Gg='',g2={Angle:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),ArrowAnnotate:Rt(Mt,{iconContent:` - - `,viewBox:{x:24,y:24}}),Bidirectional:Rt(Mt,{iconContent:` - - - - - - - `,viewBox:{x:48,y:48}}),CobbAngle:Rt(Mt,{iconContent:` - - - - - `,viewBox:{x:32,y:32}}),CircleROI:Rt(Mt,{iconContent:'',viewBox:{x:32,y:32}}),EllipticalROI:Rt(Mt,{iconContent:``,viewBox:{x:32,y:32}}),FreehandROI:Rt(Mt,{iconContent:` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `,viewBox:{x:18,y:18}}),FreehandROISculptor:Rt(Mt,{iconContent:` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `,viewBox:{x:18,y:18}}),Length:Rt(Mt,{iconContent:` - - `,viewBox:{x:24,y:24}}),Height:Rt(Mt,{iconContent:'',viewBox:{x:24,y:24}}),Probe:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),RectangleROI:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),TextMarker:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),Crosshairs:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),Eraser:Rt(Mt,{iconContent:``,viewBox:{x:2048,y:1792}}),Magnify:Rt(Mt,{iconContent:``,viewBox:{x:512,y:512}}),Pan:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),Rotate:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),StackScroll:Rt(Mt,{iconContent:``,viewBox:{x:24,y:28}}),WindowLevelRegion:Rt(Mt,{iconContent:``,viewBox:{x:1792,y:1792}}),WindowLevel:Rt(Mt,{iconContent:` - - `,viewBox:{x:18,y:18}}),Zoom:Rt(Mt,{iconContent:` - - `,viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Rt(Mt,{iconContent:`${Bg} ${Gl}`,viewBox:pi}),SegmentationFreeHandFillInside:Rt(Mt,{iconContent:`${Bg} ${fs}`,viewBox:pi}),SegmentationFreeHandEraseOutside:Rt(Mt,{iconContent:`${Bg} ${Gl}`,viewBox:pi}),SegmentationFreeHandFillOutside:Rt(Mt,{iconContent:`${Bg} ${fs}`,viewBox:pi}),SegmentationRectangleEraseInside:Rt(Mt,{iconContent:`${Wl} ${Gl}`,viewBox:pi}),RectangleScissor:Rt(Mt,{iconContent:`${Wl} ${fs}`,viewBox:pi}),"RectangleScissor.FILL_INSIDE":Rt(Mt,{iconContent:`${Wl} ${fs}`,viewBox:pi}),"RectangleScissor.FILL_OUTSIDE":Rt(Mt,{iconContent:`${Wl} ${fs}`,viewBox:pi}),"RectangleScissor.ERASE_OUTSIDE":Rt(Mt,{iconContent:`${Wl} ${Gl}`,viewBox:pi}),"RectangleScissor.ERASE_INSIDE":Rt(Mt,{iconContent:`${Wl} ${Gl}`,viewBox:pi}),CircleScissor:Rt(Mt,{iconContent:`${Gg} ${fs}`,viewBox:pi}),"CircleScissor.FILL_INSIDE":Rt(Mt,{iconContent:`${Gg} ${fs}`,viewBox:pi}),"CircleScissor.ERASE_OUTSIDE":Rt(Mt,{iconContent:`${Gg} ${Gl}`,viewBox:pi}),"CircleScissor.FILL_OUTSIDE":Rt(Mt,{iconContent:`${Gg} ${fs}`,viewBox:pi})};function Rt(t,e){return Object.assign(Object.create(t),e)}function Ose(t,e,r){g2[t]=Rt(Mt,{iconContent:e,viewBox:r})}function Mse(t){return g2[t]}const Rse=Object.keys(g2);class Lse{constructor(){const e={color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(209, 193, 90)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(209, 193, 90)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0};this._initializeConfig(e)}getAnnotationToolStyles(e){return this.config.annotations&&this.config.annotations[e]}getViewportToolStyles(e){return this.config.viewports&&this.config.viewports[e]}getToolGroupToolStyles(e){return this.config.toolGroups&&this.config.toolGroups[e]}getDefaultToolStyles(){return this.config.default}setAnnotationStyles(e,r){let n=this.config.annotations;n||(this.config={...this.config,annotations:{}},n=this.config.annotations),n[e]=r}setViewportToolStyles(e,r){let n=this.config.viewports;n||(this.config={...this.config,viewports:{}},n=this.config.viewports),n[e]=r}setToolGroupToolStyles(e,r){let n=this.config.toolGroups;n||(this.config={...this.config,toolGroups:{}},n=this.config.toolGroups),n[e]=r}setDefaultToolStyles(e){this.config.default=e}getStyleProperty(e,r){const{annotationUID:n,viewportId:i,toolGroupId:o,toolName:a}=r;return this._getToolStyle(e,n,i,o,a)}_getToolStyle(e,r,n,i,o){if(r){const s=this.getAnnotationToolStyles(r);if(s&&s[e]!==void 0)return s[e]}if(n){const s=this.getViewportToolStyles(n);if(s){if(s[o]&&s[o][e]!==void 0)return s[o][e];if(s.global&&s.global[e]!==void 0)return s.global[e]}}if(i){const s=this.getToolGroupToolStyles(i);if(s){if(s[o]&&s[o][e]!==void 0)return s[o][e];if(s.global&&s.global[e]!==void 0)return s.global[e]}}const a=this.getDefaultToolStyles();if(a[o]&&a[o][e]!==void 0)return a[o][e];if(a.global&&a.global[e]!==void 0)return a.global[e]}_initializeConfig(e){const r={};for(const n in e)r[n]=e[n];this.config={default:{global:r}}}}const DC=new Lse;function Nse(t,e,r){const n=[`${t}`];return e&&n.push(`${n[0]}${e}`),r&&n.push(`${n[n.length-1]}${r}`),n}function e0(t,e,r,n){const i=Nse(t,r,n);for(let o=i.length-1;o>=0;--o){const a=DC.getStyleProperty(i[o],e);if(a!==void 0)return a}}const Pse="color",Ase=Oa.Highlighted,kse=Ft.Active;class Mu extends zd{constructor(e,r,n,i,o){super(e,r,n,i,o)}static getDefinedCursor(e,r=!1,n){n||(n=e0(Pse,{},Ase,kse));const i=Vse(e,r,n);let o=super.getDefinedCursor(i);if(!o){const a=Mse(e);a&&(o=Fse(a,i,r,n,super.getDefinedCursor("default")),super.setDefinedCursor(i,o))}return o}}function iL(t,e){const r=Object(e),n=Object.prototype.hasOwnProperty.bind(r);return(t+"").replace(/\{\{(\w+)\}\}/g,(i,o)=>n(o)?r[o]+"":"")}function Vse(t,e,r){return`${e?"pointer":"cursor"}:${t}/${r}`}function Fse(t,e,r,n,i){const{x:o,y:a}=t.mousePoint;return new Mu(Use(t,r,{color:n}),o,a,e,i)}function Use(t,e,r){return URL.createObjectURL(Bse(t,e,r))}function Bse(t,e,r){const n=(e?Wse:Gse)(t,r);return new Blob([n],{type:"image/svg+xml"})}function Gse(t,e){const{iconContent:r,iconSize:n,viewBox:i}=t,o=` - - ${r} - `;return iL(o,e)}function Wse(t,e){const{iconContent:r,iconSize:n,viewBox:i,mousePointerGroupString:o}=t,a=n/Math.max(i.x,i.y,1),s=16+n,c=` - - ${o} - ${r} - `;return iL(c,e)}const E_=Symbol("ElementCursorsMap");function bC(t,e){$d(t)[0]=e,bh(t,e)}function bh(t,e){const r=$d(t);r[1]=r[0],r[0]=e,t.style.cursor=(e instanceof qr?e:qr.getDefinedCursor("auto")).getStyleProperty()}function ct(t){bh(t,$d(t)[1])}function Qe(t){bh(t,qr.getDefinedCursor("none"))}function $d(t){let e=$d[E_];e instanceof WeakMap||(e=new WeakMap,Object.defineProperty($d,E_,{value:e}));let r=e.get(t);return r||(r=[null,null],e.set(t,r)),r}const zse=Object.freeze(Object.defineProperty({__proto__:null,hideElementCursor:Qe,initElementCursor:bC,resetElementCursor:ct,setElementCursor:bh},Symbol.toStringTag,{value:"Module"}));function $se(t,e){let r=Mu.getDefinedCursor(e,!0);r||(r=qr.getDefinedCursor(e)),r||(console.log(`Cursor ${e} is not defined either as SVG or as a standard cursor.`),r=qr.getDefinedCursor(e)),bh(t,r)}const jse=[...Rse,...bse],Hse=Object.freeze(Object.defineProperty({__proto__:null,CursorNames:jse,CursorSVG:g2,ImageMouseCursor:zd,MouseCursor:qr,SVGMouseCursor:Mu,elementCursor:zse,registerCursor:Ose,setCursorForElement:$se},Symbol.toStringTag,{value:"Module"}));function Wn(t){return ve.toolGroups.find(e=>e.id===t)}const{Active:of,Passive:Yv,Enabled:Jv,Disabled:Zv}=Ft,Kse=[{mouseButton:la.Primary}];class IC{constructor(e){this.viewportsInfo=[],this.toolOptions={},this.currentActivePrimaryToolName=null,this.prevActivePrimaryToolName=null,this.restoreToolOptions={},this._toolInstances={},this.id=e}getViewportIds(){return this.viewportsInfo.map(({viewportId:e})=>e)}getViewportsInfo(){return this.viewportsInfo.slice()}getToolInstance(e){const r=this._toolInstances[e];if(!r){console.warn(`'${e}' is not registered with this toolGroup (${this.id}).`);return}return r}getToolInstances(){return this._toolInstances}hasTool(e){return!!this._toolInstances[e]}addTool(e,r={}){const n=ve.tools[e],i=typeof e<"u"&&e!=="",o=this.toolOptions[e];if(!i){console.warn("Tool with configuration did not produce a toolName: ",r);return}if(!n){console.warn(`'${e}' is not registered with the library. You need to use cornerstoneTools.addTool to register it.`);return}if(o){console.warn(`'${e}' is already registered for ToolGroup ${this.id}.`);return}const{toolClass:a}=n,s={name:e,toolGroupId:this.id,configuration:r},c=new a(s);this._toolInstances[e]=c}addToolInstance(e,r,n={}){var o;let i=(o=ve.tools[e])==null?void 0:o.toolClass;if(!i){const a=ve.tools[r].toolClass;class s extends a{}s.toolName=e,i=s,ve.tools[e]={toolClass:s}}this.addTool(i.toolName,n)}addViewport(e,r){if(typeof e!="string")throw new Error("viewportId must be defined and be a string");const n=this._findRenderingEngine(e,r);this.viewportsInfo.some(({viewportId:s})=>s===e)||this.viewportsInfo.push({viewportId:e,renderingEngineId:n});const i=this.getActivePrimaryMouseButtonTool();hn.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(i);const a={toolGroupId:this.id,viewportId:e,renderingEngineId:n};De(Ce,F.TOOLGROUP_VIEWPORT_ADDED,a)}removeViewports(e,r){const n=[];if(this.viewportsInfo.forEach((o,a)=>{let s=!1;o.renderingEngineId===e&&(s=!0,r&&o.viewportId!==r&&(s=!1)),s&&n.push(a)}),n.length)for(let o=n.length-1;o>=0;o--)this.viewportsInfo.splice(n[o],1);const i={toolGroupId:this.id,viewportId:r,renderingEngineId:e};De(Ce,F.TOOLGROUP_VIEWPORT_REMOVED,i)}setActiveStrategy(e,r){const n=this._toolInstances[e];if(n===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool configuration.`);return}n.setActiveStrategy(r)}setToolMode(e,r,n={}){if(!e){console.warn("setToolMode: toolName must be defined");return}if(r===Ft.Active){this.setToolActive(e,n||this.restoreToolOptions[e]);return}if(r===Ft.Passive){this.setToolPassive(e);return}if(r===Ft.Enabled){this.setToolEnabled(e);return}if(r===Ft.Disabled){this.setToolDisabled(e);return}console.warn("setToolMode: mode must be defined")}setToolActive(e,r={}){const n=this._toolInstances[e];if(n===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}if(!n){console.warn(`'${e}' instance ${n} is not registered with this toolGroup, can't set tool mode.`);return}const i=this.toolOptions[e]?this.toolOptions[e].bindings:[],o=r.bindings?r.bindings:[],s={bindings:[...i,...o].reduce((u,d)=>{const h=d.numTouchPoints!==void 0,g=d.mouseButton!==void 0;return!u.some(p=>Qv(p,d))&&(h||g)&&u.push(d),u},[]),mode:of};this.toolOptions[e]=s,this._toolInstances[e].mode=of;const l=hn.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(r)&&l)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&l){const d=qr.getDefinedCursor("default");this._setCursorForViewports(d)}this._hasMousePrimaryButtonBinding(r)&&(this.prevActivePrimaryToolName===null?this.prevActivePrimaryToolName=e:this.prevActivePrimaryToolName=this.currentActivePrimaryToolName,this.currentActivePrimaryToolName=e),typeof n.onSetToolActive=="function"&&n.onSetToolActive(),this._renderViewports();const f={toolGroupId:this.id,toolName:e,toolBindingsOptions:r};De(Ce,F.TOOL_ACTIVATED,f),this._triggerToolModeChangedEvent(e,of,r)}setToolPassive(e,r){const n=this._toolInstances[e];if(n===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const i=this.getToolOptions(e),o=Object.assign({bindings:i?i.bindings:[]},i,{mode:Yv}),a=Array.isArray(r==null?void 0:r.removeAllBindings)?r.removeAllBindings:this.getDefaultPrimaryBindings();o.bindings=o.bindings.filter(c=>(r==null?void 0:r.removeAllBindings)!==!0&&!a.some(l=>Qv(c,l)));let s=Yv;o.bindings.length!==0&&(s=of,o.mode=s),this.toolOptions[e]=o,n.mode=s,typeof n.onSetToolPassive=="function"&&n.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Yv)}setToolEnabled(e){const r=this._toolInstances[e];if(r===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const n={bindings:[],mode:Jv};this.toolOptions[e]=n,r.mode=Jv,typeof r.onSetToolEnabled=="function"&&r.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Jv)}setToolDisabled(e){const r=this._toolInstances[e];if(r===void 0){console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);return}const n={bindings:[],mode:Zv};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=n,r.mode=Zv,typeof r.onSetToolDisabled=="function"&&r.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Zv)}getToolOptions(e){const r=this.toolOptions[e];if(r!==void 0)return r}getActivePrimaryMouseButtonTool(){return Object.keys(this.toolOptions).find(e=>{const r=this.toolOptions[e];return r.mode===of&&this._hasMousePrimaryButtonBinding(r)})}setViewportsCursorByToolName(e,r){const n=this._getCursor(e,r);this._setCursorForViewports(n)}_getCursor(e,r){let n,i;return r&&(n=`${e}.${r}`,i=Mu.getDefinedCursor(n,!0),i)||(n=`${e}`,i=Mu.getDefinedCursor(n,!0),i)||(n=e,i=Mu.getDefinedCursor(n,!0),i)?i:qr.getDefinedCursor("default")}_setCursorForViewports(e){this.viewportsInfo.forEach(({renderingEngineId:r,viewportId:n})=>{const i=dr(n,r);if(!i)return;const{viewport:o}=i;bC(o.element,e)})}setToolConfiguration(e,r,n){const i=this._toolInstances[e];if(i===void 0)return console.warn(`Tool ${e} not present, can't set tool configuration.`),!1;let o;return n?o=r:o=Object.assign(i.configuration,r),i.configuration=o,typeof i.onSetToolConfiguration=="function"&&i.onSetToolConfiguration(),this._renderViewports(),!0}getDefaultMousePrimary(){return la.Primary}getDefaultPrimaryBindings(){return Kse}getToolConfiguration(e,r){if(this._toolInstances[e]===void 0){console.warn(`Tool ${e} not present, can't set tool configuration.`);return}const n=Dse(this._toolInstances[e].configuration,r)||this._toolInstances[e].configuration;return to(n)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const r=this.getCurrentActivePrimaryToolName();this.setToolDisabled(r),this.setToolActive(e,{bindings:[{mouseButton:la.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e,r=null){let n=Wn(e);return n?(console.debug(`ToolGroup ${e} already exists`),n):(n=new IC(e),ve.toolGroups.push(n),r=r??(()=>!0),Object.keys(this._toolInstances).filter(r).forEach(i=>{const o=this._toolInstances[i],a=this.toolOptions[i],s=o.mode;n.addTool(i),n.setToolMode(i,s,{bindings:a.bindings??[]})}),n)}_hasMousePrimaryButtonBinding(e){var n;const r=this.getDefaultPrimaryBindings();return(n=e==null?void 0:e.bindings)==null?void 0:n.some(i=>r.some(o=>Qv(i,o)))}_renderViewports(){this.viewportsInfo.forEach(({renderingEngineId:e,viewportId:r})=>{gr(e).renderViewport(r)})}_triggerToolModeChangedEvent(e,r,n){const i={toolGroupId:this.id,toolName:e,mode:r,toolBindingsOptions:n};De(Ce,F.TOOL_MODE_CHANGED,i)}_findRenderingEngine(e,r){const n=_i();if((n==null?void 0:n.length)===0)throw new Error("No rendering engines found.");if(r)return r;const i=n.filter(o=>o.getViewport(e));if(i.length===0){if(n.length===1)return n[0].id;throw new Error("No rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.")}if(i.length>1)throw new Error("Multiple rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.");return i[0].id}}function Qv(t,e){return t.mouseButton!==e.mouseButton||t.numTouchPoints!==e.numTouchPoints?!1:t.modifierKey===e.modifierKey}function oL(t){if(ve.toolGroups.some(n=>n.id===t)){console.warn(`'${t}' already exists.`);return}const r=new IC(t);return ve.toolGroups.push(r),r}function aL(t){const e=ve.toolGroups.findIndex(r=>r.id===t);e>-1&&ve.toolGroups.splice(e,1)}function sL(){const t=[...ve.toolGroups];for(const e of t)aL(e.id);ve.toolGroups=[]}function Cn(t,e){var n;e||(e=(n=_i().find(i=>i.getViewports().find(o=>o.id===t)))==null?void 0:n.id);const r=ve.toolGroups.filter(i=>i.viewportsInfo.some(o=>o.renderingEngineId===e&&(!o.viewportId||o.viewportId===t)));if(r.length){if(r.length>1)throw new Error(`Multiple tool groups found for renderingEngineId: ${e} and viewportId: ${t}. You should only - have one tool group per viewport in a renderingEngine.`);return r[0]}}function qse(){return ve.toolGroups}const Xse=[Ft.Active,Ft.Passive,Ft.Enabled];function cL(t){return ve.toolGroups.filter(({toolOptions:e})=>{const r=Object.keys(e);for(let n=0;n{a.viewportsInfo.forEach(s=>{const{renderingEngineId:c,viewportId:l}=s,{FrameOfReferenceUID:f}=dr(l,c);t.metadata.FrameOfReferenceUID===f&&n.push(s)})});const i=F.ANNOTATION_ADDED,o={annotation:t};if(!n.length){De(Ce,i,o);return}n.forEach(({renderingEngineId:a,viewportId:s})=>{o.viewportId=s,o.renderingEngineId=a,De(Ce,i,o)})}function OC(t){const e=F.ANNOTATION_REMOVED;De(Ce,e,t)}function fn(t,e,r=Bn.HandlesUpdated){const n=re(e),{viewportId:i,renderingEngineId:o}=n,a=F.ANNOTATION_MODIFIED;De(Ce,a,{annotation:t,viewportId:i,renderingEngineId:o,changeType:r})}function en(t){lL({annotation:t})}function MC(t,e=!1){lL({annotation:t,contourHoleProcessingEnabled:e})}function lL(t){const e=F.ANNOTATION_COMPLETED;De(Ce,e,t)}const Ws=new Set;function uL(t,e=!0){const r=dL();t&&(e?nce(t,Ws,r):hL(t,Ws,r)),gL(r,Ws)}function Qse(){const t=dL();rce(Ws,t),gL(t,Ws)}function ece(){return Array.from(Ws)}function rr(t){return Ws.has(t)}function tce(){return Ws.size}function fL(t){const e=rr(t);return uL(t,e),e}function dL(){return Object.freeze({added:[],removed:[],locked:[]})}function nce(t,e,r){if(!e.has(t)){e.add(t),r.added.push(t);const n=On(t);n&&(n.isLocked=!0)}}function hL(t,e,r){if(e.delete(t)){r.removed.push(t);const n=On(t);n&&(n.isLocked=!1)}}function rce(t,e){t.forEach(r=>{hL(r,t,e)})}function gL(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.locked.push(r)),De(Ce,F.ANNOTATION_LOCK_CHANGE,t))}const ice=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationLocked:fL,getAnnotationsLocked:ece,getAnnotationsLockedCount:tce,isAnnotationLocked:rr,setAnnotationLocked:uL,unlockAllAnnotations:Qse},Symbol.toStringTag,{value:"Module"})),oce=t=>(t.data||(t.data={}),t.data.handles||(t.data.handles={}),t.data.handles.textBox||(t.data.handles.textBox={}),t),ace=t=>(t.data||(t.data={}),t.data.cachedStats||(t.data.cachedStats={}),t),Yo=new Set;function Vi(t,e=!0,r=!1){e?sce(t,r):RC(t)}function sce(t,e=!1){const r=mL();if(!e){vL(Yo,r);const n=On(t);n&&(n.isSelected=!0)}if(t&&!Yo.has(t)){Yo.add(t),r.added.push(t);const n=On(t);n&&(n.isSelected=!0)}yL(r,Yo)}function RC(t){const e=mL();if(t){if(Yo.delete(t)){e.removed.push(t);const r=On(t);r.isSelected=!1}}else vL(Yo,e);yL(e,Yo)}function pL(){return Array.from(Yo)}function cce(t){return pL().filter(e=>{var n;const r=On(e);return((n=r==null?void 0:r.metadata)==null?void 0:n.toolName)===t})}function Ih(t){return Yo.has(t)}function lce(){return Yo.size}function mL(){return Object.freeze({added:[],removed:[],selection:[]})}function vL(t,e){t.forEach(r=>{if(t.delete(r)){e.removed.push(r);const n=On(r);n&&(n.isSelected=!1)}})}function yL(t,e){(t.added.length>0||t.removed.length>0)&&(e.forEach(r=>void t.selection.push(r)),De(Ce,F.ANNOTATION_SELECTION_CHANGE,t))}const uce=Object.freeze(Object.defineProperty({__proto__:null,deselectAnnotation:RC,getAnnotationsSelected:pL,getAnnotationsSelectedByToolName:cce,getAnnotationsSelectedCount:lce,isAnnotationSelected:Ih,setAnnotationSelected:Vi},Symbol.toStringTag,{value:"Module"})),hl=new Set;function xL(t,e=!0){const r=wL();t&&(e?CL(t,hl,r):dce(t,hl,r)),SL(r)}function fce(){const t=wL();hl.forEach(e=>{CL(e,hl,t)}),SL(t)}function Ur(t){if(On(t))return!hl.has(t)}function wL(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function CL(t,e,r){if(e.delete(t)){r.lastVisible.push(t);const n=On(t);n.isVisible=!0}}function dce(t,e,r){e.has(t)||(e.add(t),Ih(t)&&RC(t),r.lastHidden.push(t))}function SL(t){(t.lastHidden.length>0||t.lastVisible.length>0)&&(hl.forEach(e=>void t.hidden.push(e)),De(Ce,F.ANNOTATION_VISIBILITY_CHANGE,t))}function TL(t){const e=!hl.has(t);return xL(t,e),e}const hce=Object.freeze(Object.defineProperty({__proto__:null,checkAndSetAnnotationVisibility:TL,isAnnotationVisible:Ur,setAnnotationVisibility:xL,showAllAnnotations:fce},Symbol.toStringTag,{value:"Module"}));let p2=wC;const gce=t=>{t=oce(t),t=ace(t);const e=t.annotationUID,r=fL(e);t.isLocked=r;const n=TL(e);return t.isVisible=n,t};p2.setPreprocessingFn(gce);function ha(){return p2}function pce(t){p2=t}function mce(){p2=wC}function _t(t,e){const r=ha(),n=r.getGroupKey(e);return r.getAnnotations(n,t)}function Ru(){return ha().getAllAnnotations()}function LC(t){const{annotationUID:e,parentAnnotationUID:r}=t;if(!r)return;const n=On(r),i=n.childAnnotationUIDs.indexOf(e);n.childAnnotationUIDs.splice(i,1),t.parentAnnotationUID=void 0}function NC(t,e){const{annotationUID:r}=t,{annotationUID:n}=e;LC(e),t.childAnnotationUIDs||(t.childAnnotationUIDs=[]),!t.childAnnotationUIDs.includes(n)&&(t.childAnnotationUIDs.push(n),e.parentAnnotationUID=r)}function _L(t){return t.parentAnnotationUID?On(t.parentAnnotationUID):void 0}function m2(t){var e;return((e=t.childAnnotationUIDs)==null?void 0:e.map(r=>On(r)))??[]}function Ut(t,e){t.annotationUID||(t.annotationUID=wn());const r=ha();if(e instanceof HTMLDivElement){const n=r.getGroupKey(e);r.addAnnotation(t,n),Jse(t,e)}else r.addAnnotation(t,void 0),Zse(t);return t.annotationUID}function vce(t,e){const r=ha(),n=r.getGroupKey(e);return r.getNumberOfAnnotations(n,t)}function Ot(t){var n;if(!t)return;const e=ha(),r=e.getAnnotation(t);r&&((n=r.childAnnotationUIDs)==null||n.forEach(i=>Ot(i)),e.removeAnnotation(t),OC({annotation:r,annotationManagerUID:e.uid}))}function Lf(){const t=ha(),e=t.removeAllAnnotations();for(const r of e)OC({annotation:r,annotationManagerUID:t.uid})}function yce(t,e){const r=ha(),n=r.getGroupKey(e),i=r.removeAnnotations(n,t);for(const o of i)OC({annotation:o,annotationManagerUID:r.uid})}function EL(t){let e=t;for(;e;)e.invalidated=!0,e=e.parentAnnotationUID?On(e.parentAnnotationUID):void 0}const xce=Object.freeze(Object.defineProperty({__proto__:null,addAnnotation:Ut,addChildAnnotation:NC,clearParentAnnotation:LC,getAllAnnotations:Ru,getAnnotation:On,getAnnotationManager:ha,getAnnotations:_t,getChildAnnotations:m2,getNumberOfAnnotations:vce,getParentAnnotation:_L,invalidateAnnotation:EL,removeAllAnnotations:Lf,removeAnnotation:Ot,removeAnnotations:yce,resetAnnotationManager:mce,setAnnotationManager:pce},Symbol.toStringTag,{value:"Module"}));function pr(t){const e=t.toolName;if(ve.tools[e],!e)throw new Error(`No Tool Found for the ToolClass ${t.name}`);ve.tools[e]={toolClass:t}}function wce(t){return!!ve.tools[t]}function Cce(t){const e=t.toolName;if(!e)throw new Error(`No tool found for: ${t.name}`);if(!ve.tools[e]!==void 0)delete ve.tools[e];else throw new Error(`${e} cannot be removed because it has not been added`)}function El(t,e){const r=e||t.currentTarget,{viewport:n}=re(r)||{};if(!n)return;const i=_ce(t),o=Tce(t),a=Sce(r,o),s=n.canvasToWorld(a);return{page:o,client:i,canvas:a,world:s}}function Sce(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function Tce(t){return[t.pageX,t.pageY]}function _ce(t){return[t.clientX,t.clientY]}function DL(t){const e=t.currentTarget,{viewportId:r,renderingEngineId:n}=re(e),i=El(t,e),o={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},a={event:t,eventName:F.MOUSE_DOUBLE_CLICK,viewportId:r,renderingEngineId:n,camera:{},element:e,startPoints:i,lastPoints:i,currentPoints:i,deltaPoints:o};!De(e,F.MOUSE_DOUBLE_CLICK,a)&&(t.stopImmediatePropagation(),t.preventDefault())}const D_=F.MOUSE_MOVE;function Oh(t){const e=t.currentTarget,r=re(e),{renderingEngineId:n,viewportId:i}=r,o=El(t);!De(e,D_,{renderingEngineId:n,viewportId:i,camera:{},element:e,currentPoints:o,eventName:D_,event:t})&&(t.stopImmediatePropagation(),t.preventDefault())}const{MOUSE_DOWN:b_,MOUSE_DOWN_ACTIVATE:Ece,MOUSE_CLICK:Dce,MOUSE_UP:bce,MOUSE_DRAG:I_}=F,Ice=400,Oce=150,Mce=3,Rce={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};let at={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};const ur={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function bL(t){if(ur.doubleClickTimeout){if(t.buttons===ur.mouseDownEvent.buttons)return;ur.mouseDownEvent=t,sm();return}ur.doubleClickTimeout=setTimeout(sm,t.buttons===1?Ice:Oce),ur.mouseDownEvent=t,ur.ignoreDoubleClick=!1,at.element=t.currentTarget,at.mouseButton=t.buttons;const e=re(at.element),{renderingEngineId:r,viewportId:n}=e;at.renderingEngineId=r,at.viewportId=n,at.preventClickTimeout=setTimeout(Nce,at.clickDelay),at.element.removeEventListener("mousemove",Oh);const i=El(t,at.element);at.startPoints=zs(i),at.lastPoints=zs(i),document.addEventListener("mouseup",PC),document.addEventListener("mousemove",IL)}function Lce(t){const e=v2(at.startPoints,at.startPoints),r={event:t,eventName:b_,element:at.element,mouseButton:at.mouseButton,renderingEngineId:at.renderingEngineId,viewportId:at.viewportId,camera:{},startPoints:at.startPoints,lastPoints:at.startPoints,currentPoints:at.startPoints,deltaPoints:e};at.lastPoints=zs(r.lastPoints),De(r.element,b_,r)&&De(r.element,Ece,r)}function IL(t){const e=re(at.element);if(!(e!=null&&e.viewport))return;const r=El(t,at.element),n=LL(at.element,at.lastPoints),i=v2(r,n);if(ur.doubleClickTimeout)if(ML(i.canvas))sm();else return;const o={event:t,eventName:I_,mouseButton:at.mouseButton,renderingEngineId:at.renderingEngineId,viewportId:at.viewportId,camera:{},element:at.element,startPoints:zs(at.startPoints),lastPoints:zs(n),currentPoints:r,deltaPoints:i};!De(at.element,I_,o)&&(t.stopImmediatePropagation(),t.preventDefault()),at.lastPoints=zs(r)}function PC(t){if(clearTimeout(at.preventClickTimeout),ur.doubleClickTimeout)ur.mouseUpEvent?w3():(ur.mouseUpEvent=t,at.element.addEventListener("mousemove",OL));else{const e=at.isClickEvent?Dce:bce,r=El(t,at.element),n=v2(r,at.lastPoints),i={event:t,eventName:e,mouseButton:at.mouseButton,element:at.element,renderingEngineId:at.renderingEngineId,viewportId:at.viewportId,camera:{},startPoints:zs(at.startPoints),lastPoints:zs(at.lastPoints),currentPoints:r,deltaPoints:n};De(i.element,e,i),w3()}document.removeEventListener("mousemove",IL)}function OL(t){const e=El(t,at.element),r=LL(at.element,at.lastPoints),n=v2(e,r);ML(n.canvas)&&(sm(),Oh(t))}function ML(t){return Math.abs(t[0])+Math.abs(t[1])>Mce}function Nce(){at.isClickEvent=!1}function sm(){ur.ignoreDoubleClick=!0;const t=ur.mouseDownEvent,e=ur.mouseUpEvent;RL(),Lce(t),e&&PC(e)}function RL(){ur.doubleClickTimeout&&(clearTimeout(ur.doubleClickTimeout),ur.doubleClickTimeout=null),ur.mouseDownEvent=null,ur.mouseUpEvent=null}function w3(){var t,e;document.removeEventListener("mouseup",PC),(t=at.element)==null||t.removeEventListener("mousemove",OL),(e=at.element)==null||e.addEventListener("mousemove",Oh),RL(),at=JSON.parse(JSON.stringify(Rce))}function zs(t){return JSON.parse(JSON.stringify(t))}function LL(t,e){const{viewport:r}=re(t)||{};if(!r)return e;const n=r.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:n}}function v2(t,e){return!t||!e?{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}:{page:ey(t.page,e.page),client:ey(t.client,e.client),canvas:ey(t.canvas,e.canvas),world:Pce(t.world,e.world)}}function ey(t,e){return[t[0]-e[0],t[1]-e[1]]}function Pce(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function Ace(){return at.mouseButton}function NL(t){ur.ignoreDoubleClick?(ur.ignoreDoubleClick=!1,t.stopImmediatePropagation(),t.preventDefault()):w3()}function PL(t){t.removeEventListener("dblclick",DL),t.removeEventListener("mousedown",bL),t.removeEventListener("mousemove",Oh),t.removeEventListener("dblclick",NL,{capture:!0})}function kce(t){PL(t),t.addEventListener("dblclick",DL),t.addEventListener("mousedown",bL),t.addEventListener("mousemove",Oh),t.addEventListener("dblclick",NL,{capture:!0})}const AL={enable:kce,disable:PL},Vce=2e3,t0={mouse:0,touch:1};let O_,M_;function kL(t,e){const r=Date.now();if(t!==O_){if(r-M_<=Vce)return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1;O_=t}M_=r}const VL=kL.bind(null,t0.mouse),FL=kL.bind(null,t0.touch);function R_(t,e,r){const n=r?VL:FL;e.forEach(function(i){t.addEventListener(i,n,{passive:!1})})}function L_(t,e,r){const n=r?VL:FL;e.forEach(function(i){t.removeEventListener(i,n)})}const UL=["mousedown","mouseup","mousemove"],BL=["touchstart","touchend"];function GL(t){L_(t,UL,t0.mouse),L_(t,BL,t0.touch)}function Fce(t){GL(t),R_(t,UL,t0.mouse),R_(t,BL,t0.touch)}const WL={enable:Fce,disable:GL};function y2(t,e){const r=e||t.currentTarget,n=t.type==="touchend"?t.changedTouches:t.touches;return Object.keys(n).map(i=>{const o=Gce(n[i]),a=Bce(n[i]),s=Uce(r,a),{viewport:c}=re(r),l=c.canvasToWorld(s);return{page:a,client:o,canvas:s,world:l,touch:{identifier:i,radiusX:n[i].radiusX,radiusY:n[i].radiusY,force:n[i].force,rotationAngle:n[i].rotationAngle}}})}function Uce(t,e){const r=t.getBoundingClientRect();return[e[0]-r.left-window.pageXOffset,e[1]-r.top-window.pageYOffset]}function Bce(t){return[t.pageX,t.pageY]}function Gce(t){return[t.clientX,t.clientY]}function cm(t,e){const r=jd(t),n=jd(e);return{page:ty(r.page,n.page),client:ty(r.client,n.client),canvas:ty(r.canvas,n.canvas),world:zce(r.world,n.world)}}function AC(t,e){const r=jd(t),n=jd(e);return{page:Lu(r.page,n.page),client:Lu(r.client,n.client),canvas:Lu(r.canvas,n.canvas),world:zL(r.world,n.world)}}function Wce(t,e){}function lm(t,e){const r=N_(t),n=N_(e);return{page:r.page-n.page,client:r.client-n.client,canvas:r.canvas-n.canvas,world:r.world-n.world}}function na(t){return JSON.parse(JSON.stringify(t))}function C3(t){return JSON.parse(JSON.stringify(t))}function jd(t){return t.reduce((e,r)=>({page:[e.page[0]+r.page[0]/t.length,e.page[1]+r.page[1]/t.length],client:[e.client[0]+r.client[0]/t.length,e.client[1]+r.client[1]/t.length],canvas:[e.canvas[0]+r.canvas[0]/t.length,e.canvas[1]+r.canvas[1]/t.length],world:[e.world[0]+r.world[0]/t.length,e.world[1]+r.world[1]/t.length,e.world[2]+r.world[2]/t.length]}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function Mo(t){return t.reduce((e,r)=>({page:[e.page[0]+r.page[0]/t.length,e.page[1]+r.page[1]/t.length],client:[e.client[0]+r.client[0]/t.length,e.client[1]+r.client[1]/t.length],canvas:[e.canvas[0]+r.canvas[0]/t.length,e.canvas[1]+r.canvas[1]/t.length],world:[e.world[0]+r.world[0]/t.length,e.world[1]+r.world[1]/t.length,e.world[2]+r.world[2]/t.length],touch:{identifier:null,radiusX:e.touch.radiusX+r.touch.radiusX/t.length,radiusY:e.touch.radiusY+r.touch.radiusY/t.length,force:e.touch.force+r.touch.force/t.length,rotationAngle:e.touch.rotationAngle+r.touch.rotationAngle/t.length}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function ty(t,e){return[t[0]-e[0],t[1]-e[1]]}function zce(t,e){return[t[0]-e[0],t[1]-e[1],t[2]-e[2]]}function N_(t){const e=[];for(let r=0;r({page:r.page+n.page/e.length,client:r.client+n.client/e.length,canvas:r.canvas+n.canvas/e.length,world:r.world+n.world/e.length}),{page:0,client:0,canvas:0,world:0})}function Lu(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2))}function zL(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2))}const $ce=Object.freeze(Object.defineProperty({__proto__:null,copyPoints:C3,copyPointsList:na,getDeltaDistance:AC,getDeltaDistanceBetweenIPoints:lm,getDeltaPoints:cm,getDeltaRotation:Wce,getMeanPoints:jd,getMeanTouchPoints:Mo},Symbol.toStringTag,{value:"Module"}));hn.getRuntimeSettings();const{TOUCH_START:P_,TOUCH_START_ACTIVATE:jce,TOUCH_PRESS:A_,TOUCH_DRAG:k_,TOUCH_END:V_,TOUCH_TAP:F_,TOUCH_SWIPE:ny}=F,Hd={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},um={page:0,client:0,canvas:0,world:0},$L={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Hd,touch:null}],lastPointsList:[{...Hd,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:um,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},jL={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Hd,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let Ke=JSON.parse(JSON.stringify($L)),Kn=JSON.parse(JSON.stringify(jL));function Zs(t,e,r){return De(t,e,r)}function HL(t){Ke.element=t.currentTarget;const e=re(Ke.element),{renderingEngineId:r,viewportId:n}=e;Ke.renderingEngineId=r,Ke.viewportId=n,!Ke.isTouchStart&&(clearTimeout(Ke.pressTimeout),Ke.pressTimeout=setTimeout(()=>Hce(t),Ke.pressDelay),Kce(t),document.addEventListener("touchmove",KL),document.addEventListener("touchend",qL))}function Hce(t){if(Ke.accumulatedDistance.canvas>Ke.pressMaxDistance)return;const r={event:t,eventName:A_,renderingEngineId:Ke.renderingEngineId,viewportId:Ke.viewportId,camera:{},element:Ke.element,startPointsList:na(Ke.startPointsList),lastPointsList:na(Ke.lastPointsList),startPoints:C3(Mo(Ke.startPointsList)),lastPoints:C3(Mo(Ke.lastPointsList))};Zs(r.element,A_,r)}function Kce(t){Ke.isTouchStart=!0,Ke.startTime=new Date;const e=y2(t,Ke.element),r=Mo(e),n=Hd,i=um,o={event:t,eventName:P_,element:Ke.element,renderingEngineId:Ke.renderingEngineId,viewportId:Ke.viewportId,camera:{},startPointsList:e,lastPointsList:e,currentPointsList:e,startPoints:r,lastPoints:r,currentPoints:r,deltaPoints:n,deltaDistance:i};Ke.startPointsList=na(o.startPointsList),Ke.lastPointsList=na(o.lastPointsList),Zs(o.element,P_,o)&&Zs(o.element,jce,o)}function KL(t){const e=y2(t,Ke.element),r=XL(Ke.element,Ke.lastPointsList),n=e.length===r.length?cm(e,r):Hd,i=e.length===r.length?lm(e,r):um,o=e.length===r.length?AC(e,Ke.lastPointsList):um;Ke.accumulatedDistance={page:Ke.accumulatedDistance.page+o.page,client:Ke.accumulatedDistance.client+o.client,canvas:Ke.accumulatedDistance.canvas+o.canvas,world:Ke.accumulatedDistance.world+o.world};const a={event:t,eventName:k_,renderingEngineId:Ke.renderingEngineId,viewportId:Ke.viewportId,camera:{},element:Ke.element,startPoints:Mo(Ke.startPointsList),lastPoints:Mo(r),currentPoints:Mo(e),startPointsList:na(Ke.startPointsList),lastPointsList:na(r),currentPointsList:e,deltaPoints:n,deltaDistance:i};Zs(Ke.element,k_,a),Xce(t,n),Ke.lastPointsList=na(e)}function qL(t){clearTimeout(Ke.pressTimeout);const e=y2(t,Ke.element),r=XL(Ke.element,Ke.lastPointsList),n=e.length===r.length?cm(e,r):cm(e,e),i=e.length===r.length?lm(e,r):lm(e,e),o={event:t,eventName:V_,element:Ke.element,renderingEngineId:Ke.renderingEngineId,viewportId:Ke.viewportId,camera:{},startPointsList:na(Ke.startPointsList),lastPointsList:na(r),currentPointsList:e,startPoints:Mo(Ke.startPointsList),lastPoints:Mo(r),currentPoints:Mo(e),deltaPoints:n,deltaDistance:i};Zs(o.element,V_,o),qce(t),Ke=JSON.parse(JSON.stringify($L)),document.removeEventListener("touchmove",KL),document.removeEventListener("touchend",qL)}function qce(t){const e=new Date().getTime(),r=Ke.startTime.getTime();if(e-r>Kn.tapToleranceMs||(Kn.taps===0&&(Kn.element=Ke.element,Kn.renderingEngineId=Ke.renderingEngineId,Kn.viewportId=Ke.viewportId,Kn.startPointsList=Ke.startPointsList),Kn.taps>0&&!(Kn.element==Ke.element&&Kn.renderingEngineId==Ke.renderingEngineId&&Kn.viewportId==Ke.viewportId)))return;const n=y2(t,Kn.element);AC(n,Kn.startPointsList).canvas>Kn.tapMaxDistance||(clearTimeout(Kn.tapTimeout),Kn.taps+=1,Kn.tapTimeout=setTimeout(()=>{const o={event:t,eventName:F_,element:Kn.element,renderingEngineId:Kn.renderingEngineId,viewportId:Kn.viewportId,camera:{},currentPointsList:n,currentPoints:Mo(n),taps:Kn.taps};Zs(o.element,F_,o),Kn=JSON.parse(JSON.stringify(jL))},Kn.tapToleranceMs))}function Xce(t,e){const r=new Date().getTime(),n=Ke.startTime.getTime();if(Ke.swiped||r-n>Ke.swipeToleranceMs)return;const[i,o]=e.canvas,a={event:t,eventName:ny,renderingEngineId:Ke.renderingEngineId,viewportId:Ke.viewportId,camera:{},element:Ke.element,swipe:null};Math.abs(i)>Ke.swipeDistanceThreshold&&(a.swipe=i>0?Wc.RIGHT:Wc.LEFT,Zs(a.element,ny,a),Ke.swiped=!0),Math.abs(o)>Ke.swipeDistanceThreshold&&(a.swipe=o>0?Wc.DOWN:Wc.UP,Zs(a.element,ny,a),Ke.swiped=!0)}function XL(t,e){const{viewport:r}=re(t);return e.map(n=>{const i=r.canvasToWorld(n.canvas);return{page:n.page,client:n.client,canvas:n.canvas,world:i,touch:n.touch}})}function YL(t){WL.disable(t),t.removeEventListener("touchstart",HL)}function Yce(t){YL(t),WL.enable(t),t.addEventListener("touchstart",HL,{passive:!1})}const JL={enable:Yce,disable:YL},U_=10,B_=40,G_=800;function Jce(t){let e=0,r=0,n=0,i=0;return"detail"in t&&(r=t.detail),"wheelDelta"in t&&(r=-t.wheelDelta/120),"wheelDeltaY"in t&&(r=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),n=e*U_,i=r*U_,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(n=t.deltaX),(n||i)&&t.deltaMode&&(t.deltaMode===1?(n*=B_,i*=B_):(n*=G_,i*=G_)),n&&!e&&(e=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:e,spinY:r,pixelX:n,pixelY:i}}function ZL(t){const e=t.currentTarget,r=re(e),{renderingEngineId:n,viewportId:i}=r;if(t.deltaY>-1&&t.deltaY<1)return;t.preventDefault();const{spinX:o,spinY:a,pixelX:s,pixelY:c}=Jce(t),l=a<0?-1:1,f={event:t,eventName:F.MOUSE_WHEEL,renderingEngineId:n,viewportId:i,element:e,camera:{},detail:t,wheel:{spinX:o,spinY:a,pixelX:s,pixelY:c,direction:l},points:El(t)};De(e,F.MOUSE_WHEEL,f)}function Zce(t){QL(t),t.addEventListener("wheel",ZL,{passive:!1})}function QL(t){t.removeEventListener("wheel",ZL)}const eN={enable:Zce,disable:QL},Qce={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let Qn={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function x2(t){Qn.element=t.currentTarget;const e=re(Qn.element),{renderingEngineId:r,viewportId:n}=e;Qn.renderingEngineId=r,Qn.viewportId=n,Qn.key=t.key,Qn.keyCode=t.keyCode,t.preventDefault();const i={renderingEngineId:Qn.renderingEngineId,viewportId:Qn.viewportId,element:Qn.element,key:Qn.key,keyCode:Qn.keyCode};De(i.element,F.KEY_DOWN,i),document.addEventListener("keyup",tN),document.addEventListener("visibilitychange",kC),Qn.element.removeEventListener("keydown",x2)}function kC(){document.removeEventListener("visibilitychange",kC),document.visibilityState==="hidden"&&nN()}function tN(t){const e={renderingEngineId:Qn.renderingEngineId,viewportId:Qn.viewportId,element:Qn.element,key:Qn.key,keyCode:Qn.keyCode};document.removeEventListener("keyup",tN),document.removeEventListener("visibilitychange",kC),Qn.element.addEventListener("keydown",x2),Qn=structuredClone(Qce),De(e.element,F.KEY_UP,e)}function ele(){return Qn.keyCode}function nN(){Qn.keyCode=void 0}function tle(t){rN(t),t.addEventListener("keydown",x2)}function rN(t){t.removeEventListener("keydown",x2)}const O0={enable:tle,disable:rN,getModifierKey:ele},{EPSILON:zl}=Sl;function iN(t,e,r=!1){var f;let n=1/0,i=r?-1/0:0,o=1/0,a=r?-1/0:0,s=1/0,c=r?-1/0:0;const l=((f=t[0])==null?void 0:f.length)===3;for(let u=0;uJSON.stringify(t)===JSON.stringify(e);function VC(t,e,r,n){const i=r[0]/2,o=r[1]/2,a=r[2]/2,s=new Array(8);s[0]=Gn(t,[n[0]-i,n[1]-o,n[2]-a]);const c=[[1,-1,-1],[-1,1,-1],[1,1,-1],[-1,-1,1],[1,-1,1],[-1,1,1],[1,1,1]];for(let l=0;l<7;l++){const[f,u,d]=c[l];s[l+1]=Gn(t,[n[0]+f*i,n[1]+u*o,n[2]+d*a])}return Qs(s,e)}function aN(t,e){const{spacing:r}=t,n=t.voxelManager.getScalarDataLength(),i=[];let o=0;for(let a=0;a{const e=FC.get(t);e&&(e.isDirty=!0)},ile=t=>{const e=FC.get(t);return e&&!e.isDirty?e.indices:null},ole=(t,e)=>{FC.set(t,{indices:e,isDirty:!1})};function Ei(t,e){const r={segmentationId:t,modifiedSlicesToUse:e};rle(t),De(Ce,F.SEGMENTATION_DATA_MODIFIED,r)}function Di(t){const e={segmentationId:t};De(Ce,F.SEGMENTATION_MODIFIED,e)}function UC(t){const e={segmentationId:t};De(Ce,F.SEGMENTATION_REMOVED,e)}function Jo(t,e,r){const n={segmentationId:e,type:r,viewportId:t};De(Ce,F.SEGMENTATION_REPRESENTATION_ADDED,n)}function S3(t,e,r){const n={viewportId:t,segmentationId:e,type:r};De(Ce,F.SEGMENTATION_REPRESENTATION_REMOVED,n)}const ale=Object.freeze(Object.defineProperty({__proto__:null,triggerSegmentationDataModified:Ei,triggerSegmentationModified:Di,triggerSegmentationRemoved:UC,triggerSegmentationRepresentationModified:Jo,triggerSegmentationRepresentationRemoved:S3},Symbol.toStringTag,{value:"Module"})),sle={renderOutline:!0,outlineWidthAutoGenerated:3,outlineWidth:1,outlineWidthInactive:1,outlineOpacity:1,outlineOpacityInactive:.85,outlineDash:void 0,outlineDashInactive:void 0,outlineDashAutoGenerated:"5,3",activeSegmentOutlineWidthDelta:0,renderFill:!0,fillAlpha:.5,fillAlphaInactive:.3,fillAlphaAutoGenerated:.3};function cle(){return sle}const lle={renderOutline:!0,renderOutlineInactive:!0,outlineWidth:3,outlineWidthInactive:2,activeSegmentOutlineWidthDelta:0,renderFill:!0,renderFillInactive:!0,fillAlpha:.5,fillAlphaInactive:.4,outlineOpacity:1,outlineOpacityInactive:.85};function ule(){return lle}class fle{constructor(){this.config={global:{},segmentations:{},viewportsStyle:{}}}setStyle(e,r){const{viewportId:n,segmentationId:i,type:o,segmentIndex:a}=e,s=this.getStyle(e);let c;if(!n&&!i?c={...s,...r}:c=this.copyActiveToInactiveIfNotProvided({...s,...r},o),!o)throw new Error("Type is required to set a style");if(n){this.config.viewportsStyle[n]||(this.config.viewportsStyle[n]={renderInactiveSegmentations:!1,representations:{}});const l=this.config.viewportsStyle[n].representations;if(i){l[i]||(l[i]={}),l[i][o]||(l[i][o]={});const f=l[i][o];a!==void 0?(f.perSegment||(f.perSegment={}),f.perSegment[a]=c):f.allSegments=c}else{const f="__allSegmentations__";l[f]||(l[f]={}),l[f][o]||(l[f][o]={}),l[f][o].allSegments=c}}else if(i){this.config.segmentations[i]||(this.config.segmentations[i]={}),this.config.segmentations[i][o]||(this.config.segmentations[i][o]={});const l=this.config.segmentations[i][o];a!==void 0?(l.perSegment||(l.perSegment={}),l.perSegment[a]=c):l.allSegments=c}else this.config.global[o]=c}copyActiveToInactiveIfNotProvided(e,r){const n={...e};if(r===Ge.Labelmap){const i=n;i.renderOutlineInactive=i.renderOutline,i.outlineWidthInactive=i.outlineWidth,i.renderFillInactive=i.renderFill,i.fillAlphaInactive=i.fillAlpha,i.outlineOpacityInactive=i.outlineOpacity}else if(r===Ge.Contour){const i=n;i.outlineWidthInactive=i.outlineWidth,i.outlineOpacityInactive=i.outlineOpacity,i.outlineDashInactive=i.outlineDash,i.renderOutlineInactive=i.renderOutline,i.renderFillInactive=i.renderFill,i.fillAlphaInactive=i.fillAlpha}return n}getStyle(e){var s,c,l,f,u;const{viewportId:r,segmentationId:n,type:i,segmentIndex:o}=e;let a=this.getDefaultStyle(i);if(this.config.global[i]&&(a={...a,...this.config.global[i]}),(s=this.config.segmentations[n])!=null&&s[i]&&(a={...a,...this.config.segmentations[n][i].allSegments},o!==void 0&&((c=this.config.segmentations[n][i].perSegment)!=null&&c[o])&&(a={...a,...this.config.segmentations[n][i].perSegment[o]})),r&&this.config.viewportsStyle[r]){this.config.viewportsStyle[r].renderInactiveSegmentations;const d="__allSegmentations__";(l=this.config.viewportsStyle[r].representations[d])!=null&&l[i]&&(a={...a,...this.config.viewportsStyle[r].representations[d][i].allSegments}),n&&((f=this.config.viewportsStyle[r].representations[n])!=null&&f[i])&&(a={...a,...this.config.viewportsStyle[r].representations[n][i].allSegments},o!==void 0&&((u=this.config.viewportsStyle[r].representations[n][i].perSegment)!=null&&u[o])&&(a={...a,...this.config.viewportsStyle[r].representations[n][i].perSegment[o]}))}return a}getRenderInactiveSegmentations(e){var r;return(r=this.config.viewportsStyle[e])==null?void 0:r.renderInactiveSegmentations}setRenderInactiveSegmentations(e,r){this.config.viewportsStyle[e]||(this.config.viewportsStyle[e]={renderInactiveSegmentations:!1,representations:{}}),this.config.viewportsStyle[e].renderInactiveSegmentations=r}getDefaultStyle(e){switch(e){case Ge.Labelmap:return ule();case Ge.Contour:return cle();case Ge.Surface:return{};default:throw new Error(`Unknown representation type: ${e}`)}}clearSegmentationStyle(e){this.config.segmentations[e]&&delete this.config.segmentations[e]}clearAllSegmentationStyles(){this.config.segmentations={}}clearViewportStyle(e){this.config.viewportsStyle[e]&&delete this.config.viewportsStyle[e]}clearAllViewportStyles(){for(const e in this.config.viewportsStyle){const n=this.config.viewportsStyle[e].renderInactiveSegmentations;this.config.viewportsStyle[e]={renderInactiveSegmentations:n,representations:{}}}}resetToGlobalStyle(){this.clearAllSegmentationStyles(),this.clearAllViewportStyles()}hasCustomStyle(e){const{type:r}=e,n=this.getStyle(e),i=this.getDefaultStyle(r);return!wR(n,i)}}const Fi=new fle;function dle(t){const e={segmentationId:t};De(Ce,F.SEGMENTATION_ADDED,e)}const W_={colorLUT:[],segmentations:[],viewportSegRepresentations:{}};class hle{constructor(e){this._stackLabelmapImageIdReferenceMap=new Map,e||(e=wn()),this.state=Object.freeze(to(W_)),this.uid=e}getState(){return this.state}updateState(e){const r=to(this.state);e(r),this.state=Object.freeze(r)}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this.state=Object.freeze(to(W_))}getSegmentation(e){return this.state.segmentations.find(r=>r.segmentationId===e)}updateSegmentation(e,r){this.updateState(n=>{const i=n.segmentations.find(o=>o.segmentationId===e);if(!i){console.warn(`Segmentation with id ${e} not found. Update aborted.`);return}Object.assign(i,r)}),Di(e)}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error(`Segmentation with id ${e.segmentationId} already exists`);this.updateState(r=>{const n=to(e);if(n.representationData.Labelmap&&"volumeId"in n.representationData.Labelmap&&!("imageIds"in n.representationData.Labelmap)){const i=this.getLabelmapImageIds(n.representationData);n.representationData.Labelmap.imageIds=i}r.segmentations.push(n)}),dle(e.segmentationId)}removeSegmentation(e){this.updateState(r=>{const n=r.segmentations.filter(i=>i.segmentationId!==e);r.segmentations.splice(0,r.segmentations.length,...n)}),UC(e)}addSegmentationRepresentation(e,r,n,i){if(!Xn(e))return;if(this.getSegmentationRepresentations(e,{type:n,segmentationId:r}).length>0){console.debug("A segmentation representation of type",n,"already exists in viewport",e,"for segmentation",r);return}this.updateState(s=>{s.viewportSegRepresentations[e]||(s.viewportSegRepresentations[e]=[],Fi.setRenderInactiveSegmentations(e,!0)),n!==Ge.Labelmap?this.addDefaultSegmentationRepresentation(s,e,r,n,i):this.addLabelmapRepresentation(s,e,r,i)}),Jo(e,r,n)}addDefaultSegmentationRepresentation(e,r,n,i,o){const a=e.segmentations.find(c=>c.segmentationId===n);if(!a)return;const s={};Object.keys(a.segments).forEach(c=>{s[Number(c)]={visible:!0}}),e.viewportSegRepresentations[r].push({segmentationId:n,type:i,active:!0,visible:!0,colorLUTIndex:0,segments:s,config:{...z_(i),...o}}),this._setActiveSegmentation(e,r,n)}addLabelmapRepresentation(e,r,n,i=z_(Ge.Labelmap)){if(!Xn(r))return;const a=this.getSegmentation(n);if(!a)return;const{representationData:s}=a;if(!s.Labelmap)return this.addDefaultSegmentationRepresentation(e,r,n,Ge.Labelmap,i);this.processLabelmapRepresentationAddition(r,n),this.addDefaultSegmentationRepresentation(e,r,n,Ge.Labelmap,i)}async processLabelmapRepresentationAddition(e,r){const n=Xn(e);if(!n)return;const i=this.getSegmentation(r);if(!i)return;const o=n.viewport instanceof Mn,{representationData:a}=i,s="volumeId"in a.Labelmap;n.viewport,!o&&!s&&this.updateLabelmapSegmentationImageReferences(e,i.segmentationId)}_updateLabelmapSegmentationReferences(e,r,n,i){const o=r.getCurrentImageId();let a=!1;for(const s of n)r.isReferenceViewable({referencedImageId:s},{asOverlay:!0})&&(a=!0,this._stackLabelmapImageIdReferenceMap.get(e).set(o,s));return i&&i(r,e,n),a?this._stackLabelmapImageIdReferenceMap.get(e).get(o):void 0}updateLabelmapSegmentationImageReferences(e,r){const n=this.getSegmentation(r);if(!n)return;this._stackLabelmapImageIdReferenceMap.has(r)||this._stackLabelmapImageIdReferenceMap.set(r,new Map);const{representationData:i}=n;if(!i.Labelmap)return;const o=this.getLabelmapImageIds(i),s=Xn(e).viewport;return this._updateLabelmapSegmentationReferences(r,s,o,null)}_updateAllLabelmapSegmentationImageReferences(e,r){const n=this.getSegmentation(r);if(!n)return;this._stackLabelmapImageIdReferenceMap.has(r)||this._stackLabelmapImageIdReferenceMap.set(r,new Map);const{representationData:i}=n;if(!i.Labelmap)return;const o=this.getLabelmapImageIds(i),s=Xn(e).viewport;this._updateLabelmapSegmentationReferences(r,s,o,(c,l,f)=>{c.getImageIds().forEach((d,h)=>{for(const g of f)c.isReferenceViewable({referencedImageId:g,sliceIndex:h},{asOverlay:!0,withNavigation:!0})&&this._stackLabelmapImageIdReferenceMap.get(l).set(d,g)})})}getLabelmapImageIds(e){const r=e.Labelmap;let n;if(r.imageIds)n=r.imageIds;else if(!n&&r.volumeId){const i=r.volumeId;n=_e.getVolume(i).imageIds}return n}getCurrentLabelmapImageIdForViewport(e,r){const n=Xn(e);if(!n||!this._stackLabelmapImageIdReferenceMap.has(r))return;const o=n.viewport.getCurrentImageId();return this._stackLabelmapImageIdReferenceMap.get(r).get(o)}getStackSegmentationImageIdsForViewport(e,r){if(!this.getSegmentation(r))return[];this._updateAllLabelmapSegmentationImageReferences(e,r);const{viewport:i}=Xn(e),o=i.getImageIds(),a=this._stackLabelmapImageIdReferenceMap.get(r);return o.map(s=>a.get(s))}removeSegmentationRepresentationsInternal(e,r){const n=[];return this.updateState(i=>{if(!i.viewportSegRepresentations[e])return;const o=i.viewportSegRepresentations[e];let a=!1;if(!r||Object.values(r).every(s=>s===void 0))n.push(...o),delete i.viewportSegRepresentations[e];else{const{segmentationId:s,type:c}=r;i.viewportSegRepresentations[e]=o.filter(l=>{const f=s&&c&&l.segmentationId===s&&l.type===c||s&&!c&&l.segmentationId===s||!s&&c&&l.type===c;return f&&(n.push(l),l.active&&(a=!0)),!f}),i.viewportSegRepresentations[e].length===0?delete i.viewportSegRepresentations[e]:a&&(i.viewportSegRepresentations[e][0].active=!0)}}),n}removeSegmentationRepresentations(e,r){const n=this.removeSegmentationRepresentationsInternal(e,r);n.forEach(o=>{S3(e,o.segmentationId,o.type)});const i=this.getSegmentationRepresentations(e);return i.length>0&&i[0].active&&Jo(e,i[0].segmentationId,i[0].type),n}removeSegmentationRepresentation(e,r,n){const i=this.removeSegmentationRepresentationsInternal(e,r);return n||i.forEach(({segmentationId:o,type:a})=>{S3(e,o,a)}),i}_setActiveSegmentation(e,r,n){const i=e.viewportSegRepresentations[r];i&&i.forEach(o=>{o.active=o.segmentationId===n})}setActiveSegmentation(e,r){this.updateState(n=>{const i=n.viewportSegRepresentations[e];i&&i.forEach(o=>{o.active=o.segmentationId===r})}),Jo(e,r)}getActiveSegmentation(e){if(!this.state.viewportSegRepresentations[e])return;const r=this.state.viewportSegRepresentations[e].find(n=>n.active);if(r)return this.getSegmentation(r.segmentationId)}getSegmentationRepresentations(e,r={}){const n=this.state.viewportSegRepresentations[e];return n?!r.type&&!r.segmentationId?n:n.filter(i=>{const o=r.type?i.type===r.type:!0,a=r.segmentationId?i.segmentationId===r.segmentationId:!0;return o&&a}):[]}getSegmentationRepresentation(e,r){return this.getSegmentationRepresentations(e,r)[0]}getSegmentationRepresentationVisibility(e,r){const n=this.getSegmentationRepresentation(e,r);return n==null?void 0:n.visible}setSegmentationRepresentationVisibility(e,r,n){this.updateState(i=>{const o=this.getSegmentationRepresentations(e,r);o&&o.forEach(a=>{a.visible=n,Object.entries(a.segments).forEach(([s,c])=>{c.visible=n})})}),Jo(e,r.segmentationId,r.type)}addColorLUT(e,r){this.updateState(n=>{n.colorLUT[r]&&console.warn("Color LUT table already exists, overwriting"),n.colorLUT[r]=to(e)})}removeColorLUT(e){this.updateState(r=>{delete r.colorLUT[e]})}_getStackIdForImageIds(e){return e.map(r=>r.slice(-Math.round(r.length*.15))).join("_")}getAllViewportSegmentationRepresentations(){return Object.entries(this.state.viewportSegRepresentations).map(([e,r])=>({viewportId:e,representations:r}))}getSegmentationRepresentationsBySegmentationId(e){const r=[];return Object.entries(this.state.viewportSegRepresentations).forEach(([n,i])=>{const o=i.filter(a=>a.segmentationId===e);o.length>0&&r.push({viewportId:n,representations:o})}),r}}async function sN({imageIds:t,options:e}){const r=t,n=(e==null?void 0:e.volumeId)||wn();return await oC(n,r),{volumeId:n}}async function gle({segmentationId:t,options:e}){const r=Xt.getSegmentation(t),n=r.representationData.Labelmap,{volumeId:i}=await sN({imageIds:n.imageIds,options:e});r.representationData.Labelmap.volumeId=i}function z_(t){const e=Ys.newInstance(),r=qu.newInstance();return r.addPoint(0,0),t===Ge.Labelmap?{cfun:e,ofun:r}:{}}const Xt=new hle("DEFAULT");function Ti(t,e={}){return Xt.getSegmentationRepresentations(t,e)}function w2(t,e){const r=Xt;if(!e.segmentationId||!e.type)throw new Error("getSegmentationRepresentation: No segmentationId or type provided, you need to provide at least one of them");const n=r.getSegmentationRepresentations(t,e);return n==null?void 0:n[0]}function ple(t){return Xt.getSegmentationRepresentationsBySegmentationId(t)}function cN(t,e,r){const n=Xn(t);if(!n)return;const{renderingEngine:i,viewport:o}=n;if(!i||!o)return;const s=o.getActors().filter(r);return s.length>0?s[0]:void 0}function mle(t,e){const r=Ga(t,e);return r==null?void 0:r.uid}function Ga(t,e){return cN(t,e,r=>{var n;return(n=r.representationUID)==null?void 0:n.startsWith(`${e}-${Ge.Labelmap}`)})}function lN(t,e,r){return cN(t,e,n=>{var i;return(i=n.representationUID)==null?void 0:i.startsWith(`${e}-${Ge.Surface}-${r}`)})}function uN(t,e,r){const n=r?r.toString():"",i=lN(t,e,n);return i==null?void 0:i.uid}function vle(t,e){const r=re(t),{viewport:n}=r,o=n.getActors().filter(a=>a.uid.startsWith(uN(n.id,e,"")));n.removeActors(o.map(a=>a.uid))}function yle(t,e,r){const n=re(t),{viewport:i}=n,o=uN(i.id,r,e.segmentIndex),a=lN(i.id,r,e.segmentIndex),s=a==null?void 0:a.actor;if(s){const v=s.getMapper(),x=v.getInputData(),m=e.points,y=e.polys,w=x.getPoints().getData(),C=x.getPolys().getData();if(m.length===w.length&&y.length===C.length)return;const S=hr.newInstance();S.getPoints().setData(m,3);const T=ul.newInstance({values:Float32Array.from(y)});S.setPolys(T),v.setInputData(S),v.modified(),i.getRenderer().resetCameraClippingRange();return}const c=e.points,l=e.polys,f=e.color,u=hr.newInstance();u.getPoints().setData(c,3);const d=ul.newInstance({values:Float32Array.from(l)});u.setPolys(d);const h=oa.newInstance({});let g;h.setInputData(u);const p=ca.newInstance();p.setMapper(h),p.getProperty().setColor(f[0]/255,f[1]/255,f[2]/255),p.getProperty().setLineWidth(2),i.addActor({uid:wn(),actor:p,clippingFilter:g,representationUID:o}),i.resetCamera(),i.getRenderer().resetCameraClippingRange(),i.render()}function Ct(t){return Xt.getSegmentation(t)}function M0(t){return Xt.getColorLUT(t)}function xle(t){if("volumeId"in t){if(t=t,!_e.getVolume(t.volumeId))throw new Error(`volumeId of ${t.volumeId} not found in cache, you should load and cache volume before adding segmentation`)}else if("imageIds"in t){if(t=t,!t.imageIds)throw new Error("The segmentationInput.representationData.imageIds is undefined, please provide a valid representationData.imageIds for stack data")}else throw new Error("The segmentationInput.representationData is undefined, please provide a valid representationData")}function wle(t){xle(t)}const Cle=new Map([[Ge.Labelmap,new Set([Ge.Surface,Ge.Contour])],[Ge.Contour,new Set([Ge.Labelmap,Ge.Surface])],[Ge.Surface,new Set([Ge.Labelmap])]]);function C2(t,e){const{representationData:r}=Ct(t);return Sle(r).some(i=>Tle(i,e))}function Sle(t){const e=[];return Object.keys(t).forEach(r=>{const n=t[r];let i;switch(r){case Ge.Labelmap:i=wle;break}if(i)try{i(n),e.push(r)}catch{console.warn(`Validation failed for labelmap of type ${r}`)}else e.push(r)}),e}async function Tle(t,e){var r;return((r=Cle.get(t))==null?void 0:r.has(e))||!1}function _le({segmentationId:t,type:e,data:r}){const n=Ct(t);if(!n)throw new Error(`Segmentation ${t} not found`);switch(n.representationData[e]&&console.warn(`Representation data of type ${e} already exists for segmentation ${t}, overwriting it.`),e){case Ge.Labelmap:r&&(n.representationData[e]=r);break;case Ge.Contour:r&&(n.representationData[e]=r);break;case Ge.Surface:r&&(n.representationData[e]=r);break;default:throw new Error(`Invalid representation type ${e}`)}}function BC(t){const e=typeof t;return t!==null&&(e==="object"||e==="function")}function S2(t,e,r){let n,i,o,a,s,c,l=0,f=!1,u=!1,d=!0;const h=!e&&e!==0&&typeof window.requestAnimationFrame=="function";if(typeof t!="function")throw new TypeError("Expected a function");e=Number(e)||0,BC(r)&&(f=!!r.leading,u="maxWait"in r,o=u?Math.max(Number(r.maxWait)||0,e):o,d="trailing"in r?!!r.trailing:d);function g(D){const b=n,I=i;return n=i=void 0,l=D,a=t.apply(I,b),a}function p(D,b){return h?window.requestAnimationFrame(D):setTimeout(D,b)}function v(D){if(h)return window.cancelAnimationFrame(D);clearTimeout(D)}function x(D){return l=D,s=p(w,e),f?g(D):a}function m(D){const b=D-c,I=D-l,R=e-b;return u?Math.min(R,o-I):R}function y(D){const b=D-c,I=D-l;return c===void 0||b>=e||b<0||u&&I>=o}function w(){const D=Date.now();if(y(D))return C(D);s=p(w,m(D))}function C(D){return s=void 0,d&&n?g(D):(n=i=void 0,a)}function S(){s!==void 0&&v(s),l=0,n=c=i=s=void 0}function T(){return s===void 0?a:C(Date.now())}function _(){return s!==void 0}function E(...D){const b=Date.now(),I=y(b);if(n=D,i=this,c=b,I){if(s===void 0)return x(c);if(u)return s=p(w,e),g(c)}return s===void 0&&(s=p(w,e)),a}return E.cancel=S,E.flush=T,E.pending=_,E}let $_=!1;function fN(){if($_)return;$_=!0;const t=()=>new Worker(new URL("/static/dv3d/assets/polySegConverters-Bo1kNbAR.js",import.meta.url),{name:"polySeg",type:"module"}),e=cc(),r={maxWorkerInstances:1,autoTerminateOnIdle:{enabled:!0,idleTimeThreshold:2e3}};e.registerWorker("polySeg",t,r)}const Bp=new Map;async function GC(t,e,r,n,i){fN();const o=await r();_le({segmentationId:t,type:e,data:o}),i==null||i(),Bp.has(t)||Bp.set(t,[]);const a=Bp.get(t);return a.includes(e)||a.push(e),Ele(n),Di(t),o}function Ele(t){const e=r=>{Dle(r,t)};t._debouncedUpdateFunction=e,Ce.removeEventListener(F.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction),Ce.addEventListener(F.SEGMENTATION_DATA_MODIFIED,t._debouncedUpdateFunction)}const Dle=S2((t,e)=>{const r=t.detail.segmentationId,n=Bp.get(r);!n||!n.length||(e(r),n.length&&Di(r))},300);function ga(t){const e=ile(t);if(e)return e;const r=Ct(t);if(!r)throw new Error(`No segmentation found for segmentationId ${t}`);let n;if(r.representationData.Labelmap)n=ble(r,t);else if(r.representationData.Contour)n=Mle(r);else if(r.representationData.Surface)n=Rle(r);else throw new Error(`Unsupported segmentation type: ${r.representationData}`);return ole(t,n),n}function ble(t,e){const r=t.representationData[Ge.Labelmap],n=new Set;return r.imageIds?Ole(n,r.imageIds):Ile(n,e),Array.from(n).map(Number).sort((i,o)=>i-o)}function Ile(t,e){_e.getVolume(e).voxelManager.forEach(({value:n})=>{n!==0&&t.add(n)})}function Ole(t,e){e.forEach(r=>{_e.getImage(r).voxelManager.getScalarData().forEach(o=>{o!==0&&t.add(o)})})}function Mle(t){const{annotationUIDsMap:e,geometryIds:r}=t.representationData.Contour||{};if(!r)throw new Error(`No geometryIds found for segmentationId ${t.segmentationId}`);const n=new Set([...e.keys()]);return r.forEach(i=>{const o=_e.getGeometry(i);n.add(o.data.segmentIndex)}),Array.from(n).sort((i,o)=>i-o)}function Rle(t){var r;const e=((r=t.representationData.Surface)==null?void 0:r.geometryIds)??[];return Array.from(e.keys()).map(Number).sort((n,i)=>n-i)}const Lle=cc(),ry=(t,e,r)=>{De(t,Se.WEB_WORKER_PROGRESS,{progress:e,type:b0.POLYSEG_CONTOUR_TO_SURFACE,id:r})};async function Nle(t,e){const{annotationUIDsMap:r}=t,n=[],i=[],o=r.get(e);for(const s of o){const c=On(s),{polyline:l}=c.data.contour;i.push(l.length),l.forEach(f=>n.push(...f))}ry(Ce,0,e);const a=await Lle.executeTask("polySeg","convertContourToSurface",{polylines:n,numPointsArray:i},{callbacks:[s=>{ry(Ce,s,e)}]});return ry(Ce,100,e),a}function WC(){return Xt.getNextColorLUTIndex()}const zC=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]];function $C(t,e){const r=Xt,n=e??WC();let i=[...t];if(pt(i[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),i=[[0,0,0,0],...i]),i=i.map(o=>o.length===3?[o[0],o[1],o[2],255]:o),i.length<255){const o=zC.slice(i.length);i=[...i,...o]}return r.addColorLUT(i,n),n}function Ple(t,e){if(!t)throw new Error("addColorLUT: colorLUT is required");return $C(t,e)}function Ale(t,e,r){if(!M0(r))throw new Error(`setColorLUT: could not find colorLUT with index ${r}`);const n=Ti(t,{segmentationId:e});if(!n)throw new Error(`viewport specific state for viewport ${t} does not exist`);n.forEach(i=>{i.colorLUTIndex=r}),Jo(t,e)}function ts(t,e,r){const n=Ti(t,{segmentationId:e});if(!n||n.length===0)return null;const i=n[0],{colorLUTIndex:o}=i,a=M0(o);let s=a[r];if(!s){if(typeof r!="number")throw new Error(`Can't create colour for LUT index ${r}`);s=a[r]=[0,0,0,0]}return s}function dN(t,e,r,n){const i=ts(t,e,r);for(let o=0;o{const s=e[a],c=s.segmentIndex,l=ts(r.viewport.id,n.segmentationId,c).slice(0,3);if(!l)throw new Error("No color found for segment index, unable to create surface");const f={id:`segmentation_${n.segmentationId}_surface_${c}`,color:l,frameOfReferenceUID:"test-frameOfReferenceUID",points:s.data.points,polys:s.data.polys,segmentIndex:c},u=f.id;return i.set(c,u),Dae(u,{type:al.SURFACE,geometryData:f})});return await Promise.all(o),{geometryIds:i}}async function gN(t){return sN(t)}const Vle=cc(),iy=(t,e,r)=>{De(t,Se.WEB_WORKER_PROGRESS,{progress:e,type:b0.POLYSEG_LABELMAP_TO_SURFACE,id:r})};async function Fle(t,e){let r;if(t.volumeId)r=t.volumeId;else{const{imageIds:f}=t;({volumeId:r}=await gN({imageIds:f}))}const n=_e.getVolume(r),i=n.voxelManager.getCompleteScalarDataArray(),{dimensions:o,spacing:a,origin:s,direction:c}=n;iy(Ce,0,e);const l=await Vle.executeTask("polySeg","convertLabelmapToSurface",{scalarData:i,dimensions:o,spacing:a,origin:s,direction:c,segmentIndex:e},{callbacks:[f=>{iy(Ce,f,e)}]});return iy(Ce,100,e),l}async function Ule(t,e={}){var s;const r=(s=e.segmentIndices)!=null&&s.length?e.segmentIndices:ga(t);let n;const i=Ct(t),o=i.representationData;try{o.Contour?n=await Ble(t,{segmentIndices:r,...e}):o.Labelmap&&(n=await jC(i.segmentationId,{segmentIndices:r,...e}))}catch(c){throw console.error(c),c}if(!n)throw new Error("Not enough data to convert to surface, currently only support converting volume labelmap to surface if available");return await hN(t,n,e)}async function jC(t,e={}){var l;const r=Ct(t);if(!((l=r==null?void 0:r.representationData)!=null&&l.Labelmap)){console.warn("Only support surface update from labelmaps");return}const n=r.representationData.Labelmap,i=e.segmentIndices||ga(t),o=i.map(f=>Fle(n,f)),a=await Promise.allSettled(o),s=a.filter(f=>f.status==="rejected");if(s.length>0)throw console.error(s),new Error("Failed to convert labelmap to surface");return a.map((f,u)=>{if(f.status==="fulfilled")return{segmentIndex:i[u],data:f.value}}).filter(Boolean)}async function Ble(t,e={}){const n=Ct(t).representationData.Contour,o=(e.segmentIndices||ga(t)).map(async s=>{const c=await Nle(n,s);return{segmentIndex:s,data:c}});return await Promise.all(o)}function R0(t){const n=Xt.getState().viewportSegRepresentations;return Object.entries(n).filter(([,o])=>o.some(a=>a.segmentationId===t)).map(([o])=>o)}async function Gle(t){const e=await jC(t);if(!e)return;const r=Ct(t),n=ga(t);if(!n.length){r.representationData.Surface.geometryIds.forEach(a=>{const c=_e.getGeometry(a).data;c.points=[],c.polys=[]}),Di(t);return}const i=e.map(({data:o,segmentIndex:a})=>{const s=`segmentation_${t}_surface_${a}`,c=_e.getGeometry(s);if(c)if(n.includes(a)){const l=c.data;l.points=o.points,l.polys=o.polys}else{const l=c.data;l.points=[],l.polys=[]}else return R0(t).map(f=>[w2(f,{segmentationId:t,type:Ge.Surface})].map(d=>(r.representationData.Surface.geometryIds.set(a,s),hN(t,[{segmentIndex:a,data:o}],{segmentationId:d.segmentationId}))))});await Promise.all(i),Di(t)}function pN(t,e={}){return GC(t,Ge.Surface,()=>Ule(t,e),()=>Gle(t))}function Wle(t,e,r=!1){const n=Xn(t);if(!n)return;const{viewport:i}=n;vle(i.element,e),r&&i.render()}async function zle(t,e){const{segmentationId:r}=e,n=Ct(r);if(!n)return;let i=n.representationData[Ge.Surface];if(!i&&C2(r,Ge.Surface)&&(i=await pN(r,{viewport:t}),!i))throw new Error(`No Surface data found for segmentationId ${r}.`);const{geometryIds:o}=i;o!=null&&o.size||console.warn(`No Surfaces found for segmentationId ${r}. Skipping render.`);const{colorLUTIndex:a}=e,s=M0(a);o.forEach(c=>{const l=_e.getGeometry(c);if(!(l!=null&&l.data)){console.warn(`No Surfaces found for geometryId ${c}. Skipping render.`);return}const f=l.data.segmentIndex,u=l.data,d=s[f];u.color=d.slice(0,3),yle(t.element,u,r)}),t.render()}const mN={render:zle,removeRepresentation:Wle};function $le(t,e,r,n){const i=t.getViewReference(),{viewPlaneNormal:o,FrameOfReferenceUID:a}=i,s={annotationUID:(n==null?void 0:n.annotationUID)||wn(),data:{handles:{points:r}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:e,viewPlaneNormal:o,FrameOfReferenceUID:a,referencedImageId:jle(t,r[0],o),...n}};return Ut(s,t.element),s}function jle(t,e,r){let n;if(t instanceof ln)n=HC(t,e,r);else if(t instanceof Mn){const i=Hle(t),o=da(i),a=_e.getVolume(o);n=Xa(a,e,r)}else throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");return n}function Hle(t){var r;const e=(r=t.getViewReferenceId)==null?void 0:r.call(t);if(e)return e;if(t instanceof Mn)return`volumeId:${Kle(t)}`;throw new Error("getTargetId: viewport must have a getTargetId method")}function Kle(t){var r;const e=t.getActors();if(e)return(r=e.find(n=>n.actor.getClassName()==="vtkVolume"))==null?void 0:r.uid}function HC(t,e,r){const n=t.getImageIds();if(!n||!n.length)return;const i=n.map(o=>{const{imagePositionPatient:a}=Pe("imagePlaneModule",o),s=qle(e,a,r);return{imageId:o,distance:s}});return i.sort((o,a)=>o.distance-a.distance),i[0].imageId}function qle(t,e,r){const n=we();Qt(n,t,e);const i=je(n,r);return Math.abs(i)}function vN(t,e){const{segmentation:r}=t.data,{segmentation:n}=e.data;return r.segmentationId===n.segmentationId&&r.segmentIndex===n.segmentIndex}function Mh(t){var e;return!!((e=t.data)!=null&&e.segmentation)}function n0(t){if(t.parentAnnotationUID)return;if(!t.data.segmentation)throw new Error("addContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:e,segmentIndex:r}=t.data.segmentation,n=Ct(e);n.representationData.Contour||(n.representationData.Contour={annotationUIDsMap:new Map});const{annotationUIDsMap:i}=n.representationData.Contour;let o=i.get(r);o||(o=new Set,i.set(r,o)),i.set(r,o.add(t.annotationUID))}function T2(t){if(!t.data.segmentation)throw new Error("removeContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:e,segmentIndex:r}=t.data.segmentation,n=Ct(e),{annotationUIDsMap:i}=(n==null?void 0:n.representationData.Contour)||{},o=i==null?void 0:i.get(r);o&&(o.delete(t.annotationUID),o.size||i.delete(r))}const Xle=Object.freeze(Object.defineProperty({__proto__:null,addContourSegmentationAnnotation:n0,areSameSegment:vN,isContourSegmentationAnnotation:Mh,removeContourSegmentationAnnotation:T2},Symbol.toStringTag,{value:"Module"}));function Yle(t){if(!t)throw new Error(`No contours found for geometryId ${t.id}`);const e=t.id;if(t.type!==al.CONTOUR)throw new Error(`Geometry type ${t.type} not supported for rendering.`);if(!t.data){console.warn(`No contours found for geometryId ${e}. Skipping render.`);return}}function Jle(t,e,r,n){r.size?t.render():Zle(t,e,n)}function Zle(t,e,r){const{segmentationId:n}=r,i=new Map;e.forEach(o=>{const a=_e.getGeometry(o);if(!a){console.warn(`No geometry found for geometryId ${o}. Skipping render.`);return}const s=a.data.segmentIndex;Yle(a);const c=Fi.getStyle({viewportId:t.id,segmentationId:n,type:Ge.Contour,segmentIndex:s}),l=a.data,f=t.getCamera().viewPlaneNormal;l.contours.forEach(u=>{const{points:d,color:h,id:g}=u,p=HC(t,d[0],f),v={annotationUID:wn(),data:{contour:{closed:!0,polyline:d},segmentation:{segmentationId:n,segmentIndex:s,color:h,id:g},handles:{}},handles:{},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!0,isVisible:!0,metadata:{referencedImageId:p,toolName:"PlanarFreehandContourSegmentationTool",FrameOfReferenceUID:t.getFrameOfReferenceUID(),viewPlaneNormal:t.getCamera().viewPlaneNormal}},x=t.element;Ut(v,x),n0(v)}),c&&i.set(s,c)}),t.resetCamera(),t.render()}function KC(t,e=5){return parseFloat(t[0]).toFixed(e)+","+parseFloat(t[1]).toFixed(e)+","+parseFloat(t[2]).toFixed(e)+","}const yN=cc(),T3=new Map,_3=new Map,Gp=(t,e)=>{De(t,Se.WEB_WORKER_PROGRESS,{progress:e,type:b0.SURFACE_CLIPPING})};async function xN(t,e){var a;fN();const r=(a=e.getSlicesClippingPlanes)==null?void 0:a.call(e);if(!r)return;const n=e.getSliceIndex();r.sort((s,c)=>{const l=Math.abs(s.sliceIndex-n),f=Math.abs(c.sliceIndex-n);return l-f}),Gp(Ce,0),await Qle(t);const i=new Map;t.forEach(s=>{i.set(s.id,_3.get(s.id))});const o=e.getCamera();return await yN.executeTask("polySeg","cutSurfacesIntoPlanes",{surfacesInfo:t,planesInfo:r,surfacesAABB:i},{callbacks:[({progress:s})=>{Gp(Ce,s)},({sliceIndex:s,polyDataResults:c})=>{c.forEach((l,f)=>{const u=Number(f),d=eue(e,o.viewPlaneNormal,s);tue(u,d,l)})}]}).catch(s=>{console.error(s)}),Gp(Ce,100),T3}async function Qle(t){const e=t.filter(n=>!_3.has(n.id));if(!e.length)return;(await yN.executeTask("polySeg","getSurfacesAABBs",{surfacesInfo:e},{callbacks:[({progress:n})=>{Gp(Ce,n)}]})).forEach((n,i)=>{_3.set(i,n)})}function eue(t,e,r){return`${t.id}-${KC(e)}-${r}`}function tue(t,e,r){const{points:n,lines:i,numberOfCells:o}=r;let a=T3.get(t);a||(a=new Map,T3.set(t,a)),a.set(e,{points:n,lines:i,numberOfCells:o})}function wN(t){const e=new Map;for(const[r,n]of t){const i=Number(r);for(const[o,a]of n)a&&(e.has(i)||e.set(i,[]),e.get(i).push(a))}return e}const{CalibrationTypes:af}=Ao,Cc="px",CN=[1],nue=["3,3"],rue=["4,3"],E3={0:"px",1:"percent",2:"dB",3:"cm",4:"seconds",5:"hertz",6:"dB/seconds",7:"cm/sec",8:"cm²",9:"cm²/s",12:"degrees"},iue=.001,sf="²",Bi=(t,e)=>{const{calibration:r,hasPixelSpacing:n}=t;let i=n?"mm":Cc,o=i+sf,a=1,s="";if(!r||!r.type&&!r.sequenceOfUltrasoundRegions)return{unit:i,areaUnit:o,scale:a};if(r.type===af.UNCALIBRATED)return{unit:Cc,areaUnit:Cc+sf,scale:a};if(r.sequenceOfUltrasoundRegions){let l,f;if(Array.isArray(e)&&e.length===2)[l,f]=e;else if(typeof e=="function"){const v=e();l=v[0],f=v[1]}let u=r.sequenceOfUltrasoundRegions.filter(v=>l[0]>=v.regionLocationMinX0&&l[0]<=v.regionLocationMaxX1&&l[1]>=v.regionLocationMinY0&&l[1]<=v.regionLocationMaxY1&&f[0]>=v.regionLocationMinX0&&f[0]<=v.regionLocationMaxX1&&f[1]>=v.regionLocationMinY0&&f[1]<=v.regionLocationMaxY1);if(!(u!=null&&u.length))return{unit:i,areaUnit:o,scale:a};if(u=u.filter(v=>CN.includes(v.regionDataType)&&nue.includes(`${v.physicalUnitsXDirection},${v.physicalUnitsYDirection}`)),!u.length)return{unit:Cc,areaUnit:Cc+sf,scale:a};const d=u[0],h=Math.abs(d.physicalDeltaX),g=Math.abs(d.physicalDeltaY);if(pt(h,g,iue))a=1/h,s="US Region",i=E3[d.physicalUnitsXDirection]||"unknown",o=i+sf;else return{unit:Cc,areaUnit:Cc+sf,scale:a}}else r.scale&&(a=r.scale);return[af.ERMF,af.USER,af.ERROR,af.PROJECTION].includes(r==null?void 0:r.type)&&(s=r.type),{unit:i+(s?` ${s}`:""),areaUnit:o+(s?` ${s}`:""),scale:a}},fm=(t,e)=>{const[r]=e,{calibration:n}=t;let i=["raw"],o=[null],a="";if(!n||!n.type&&!n.sequenceOfUltrasoundRegions)return{units:i,values:o};if(n.sequenceOfUltrasoundRegions){const s=n.sequenceOfUltrasoundRegions.filter(p=>CN.includes(p.regionDataType)&&rue.includes(`${p.physicalUnitsXDirection},${p.physicalUnitsYDirection}`));if(!(s!=null&&s.length))return{units:i,values:o};const c=s.find(p=>r[0]>=p.regionLocationMinX0&&r[0]<=p.regionLocationMaxX1&&r[1]>=p.regionLocationMinY0&&r[1]<=p.regionLocationMaxY1);if(!c)return{units:i,values:o};const{referencePixelX0:l=0,referencePixelY0:f=0}=c,{physicalDeltaX:u,physicalDeltaY:d}=c,h=(r[1]-c.regionLocationMinY0-f)*d,g=(r[0]-c.regionLocationMinX0-l)*u;a="US Region",o=[g,h],i=[E3[c.physicalUnitsXDirection],E3[c.physicalUnitsYDirection]]}return{units:i,values:o,calibrationType:a}},qC=t=>{var e;return((e=t.calibration)==null?void 0:e.aspect)||1};function SN(t,e){return t.minX<=e.maxX&&t.maxX>=e.minX&&t.minY<=e.maxY&&t.maxY>=e.minY}function dm(t,e){const r=t.maxX-t.minX,n=t.maxY-t.minY,i=[r,n],o=[t.minX+r/2,t.minY+n/2],a=[Math.abs(e[0]-o[0]),Math.abs(e[1]-o[1])],s=a[0]-i[0]*.5,c=a[1]-i[1]*.5;if(s>0&&c>0)return s*s+c*c;const l=Math.max(s,0)+Math.max(c,0);return l*l}function oue(t,e){return Math.sqrt(dm(t,e))}const aue=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:oue,distanceToPointSquared:dm,intersectAABB:SN},Symbol.toStringTag,{value:"Module"}));class TN{}const{PointsManager:j_}=Yt,rt=class rt extends TN{static statsInit(e){e.storePointData||(rt.pointsInShape=null)}};rt.max=[-1/0],rt.min=[1/0],rt.sum=[0],rt.count=0,rt.runMean=[0],rt.m2=[0],rt.pointsInShape=j_.create3(1024),rt.statsCallback=({value:e,pointLPS:r=null})=>{var i;Array.isArray(e)&&e.length>1&&rt.max.length===1&&(rt.max.push(rt.max[0],rt.max[0]),rt.min.push(rt.min[0],rt.min[0]),rt.sum.push(rt.sum[0],rt.sum[0]),rt.runMean.push(0,0),rt.m2.push(rt.m2[0],rt.m2[0])),(i=rt.pointsInShape)==null||i.push(r);const n=Array.isArray(e)?e:[e];rt.count+=1,rt.max.map((o,a)=>{const s=n[a],c=s-rt.runMean[a];rt.sum[a]+=s,rt.runMean[a]+=c/rt.count;const l=s-rt.runMean[a];rt.m2[a]+=c*l,rt.min[a]=Math.min(rt.min[a],s),rt.max[a]=Math.max(o,s)})},rt.getStatistics=e=>{const r=rt.sum.map(a=>a/rt.count),n=rt.m2.map(a=>Math.sqrt(a/rt.count)),i=(e==null?void 0:e.unit)||null,o={max:{name:"max",label:"Max Pixel",value:Wg(rt.max),unit:i},min:{name:"min",label:"Min Pixel",value:Wg(rt.min),unit:i},mean:{name:"mean",label:"Mean Pixel",value:Wg(r),unit:i},stdDev:{name:"stdDev",label:"Standard Deviation",value:Wg(n),unit:i},count:{name:"count",label:"Pixel Count",value:rt.count,unit:null},pointsInShape:rt.pointsInShape,array:[]};return o.array.push(o.max,o.mean,o.stdDev,o.stdDev,o.count),rt.max=[-1/0],rt.min=[1/0],rt.sum=[0],rt.m2=[0],rt.runMean=[0],rt.count=0,rt.pointsInShape=j_.create3(1024),o};let Ya=rt;function Wg(t){return t.length===1?t[0]:t}const sue=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:Ya,Calculator:TN},Symbol.toStringTag,{value:"Module"}));function _2(t,e,r={}){return r.precalculated||XC(t,r),r.precalculated(e)}const XC=(t,e={})=>{const{xRadius:r,yRadius:n,zRadius:i}=t;(e.invXRadiusSq===void 0||e.invYRadiusSq===void 0||e.invZRadiusSq===void 0)&&(e.invXRadiusSq=r!==0?1/r**2:0,e.invYRadiusSq=n!==0?1/n**2:0,e.invZRadiusSq=i!==0?1/i**2:0);const{invXRadiusSq:o,invYRadiusSq:a,invZRadiusSq:s}=e,{center:c}=t,[l,f,u]=c;return e.precalculated=d=>{const h=d[0]-l;let g=h*h*o;if(g>1)return!1;const p=d[1]-f;if(g+=p*p*a,g>1)return!1;const v=d[2]-u;return g+=v*v*s,g<=1},e};function Yf(t){const[e,r,n,i]=t,o=[n[0],r[1]],a=[i[0],e[1]];return[o,a]}const cue=Object.freeze(Object.defineProperty({__proto__:null,getCanvasEllipseCorners:Yf,pointInEllipse:_2,precalculatePointInEllipse:XC},Symbol.toStringTag,{value:"Module"}));function Ja(t,e){if(t.length!==e.length)throw Error("Both points should have the same dimensionality");const[r,n,i=0]=t,[o,a,s=0]=e,c=o-r,l=a-n,f=s-i;return c*c+l*l+f*f}function so(t,e){return Math.sqrt(Ja(t,e))}function D3(t,e){const[r,n]=t,[i,o]=e,a=2*i-r,s=2*o-n;return[a,s]}const lue=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:so,distanceToPointSquared:Ja,mirror:D3},Symbol.toStringTag,{value:"Module"}));function hm(t,e,r){let n;const i=Ja(t,e);if(t[0]===e[0]&&t[1]===e[1]&&(n=t),!n){const o=((r[0]-t[0])*(e[0]-t[0])+(r[1]-t[1])*(e[1]-t[1]))/i;o<0?n=t:o>1?n=e:n=[t[0]+o*(e[0]-t[0]),t[1]+o*(e[1]-t[1])]}return{point:[...n],distanceSquared:Ja(r,n)}}function Rh(t,e,r){return hm(t,e,r).distanceSquared}function Pr(t,e,r){if(t.length!==2||e.length!==2||r.length!==2)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(Rh(t,e,r))}function zg(t){return typeof t=="number"?t?t<0?-1:1:t===t?0:NaN:NaN}function b3(t,e,r,n){const[i,o]=t,[a,s]=e,[c,l]=r,[f,u]=n,d=s-o,h=i-a,g=a*o-i*s,p=d*c+h*l+g,v=d*f+h*u+g;if(p!==0&&v!==0&&zg(p)===zg(v))return;const x=u-l,m=c-f,y=f*l-c*u,w=x*i+m*o+y,C=x*a+m*s+y;if(w!==0&&C!==0&&zg(w)===zg(C))return;const S=d*m-x*h;let T;T=h*y-m*g;const _=T/S;T=x*g-d*y;const E=T/S;return[_,E]}const cf=.01;function Wp(t,e,r){const n=t[0]<=e[0]?t[0]:e[0],i=t[0]>=e[0]?t[0]:e[0],o=t[1]<=e[1]?t[1]:e[1],a=t[1]>=e[1]?t[1]:e[1];if(!(r[0]>=n-cf&&r[0]<=i+cf&&r[1]>=o-cf&&r[1]<=a+cf))return!1;const c=(e[1]-t[1])*(r[0]-e[0])-(e[0]-t[0])*(r[1]-e[1]);return(c>=0?c:-c)<=cf}const uue=Object.freeze(Object.defineProperty({__proto__:null,distanceToPoint:Pr,distanceToPointSquared:Rh,distanceToPointSquaredInfo:hm,intersectLine:b3,isPointOnLineSegment:Wp},Symbol.toStringTag,{value:"Module"}));function _N(t){if(t.length<3)return!1;const e=t.length,r=t[0],n=t[e-1],i=Ja(r,n);return Xs(0,i)}function gl(t,e,r={closed:void 0}){if(t.length<3)return!1;const n=t.length;let i=0;const{closed:o,holes:a}=r;if(a!=null&&a.length){for(const l of a)if(gl(l,e))return!1}const s=!(o===void 0?_N(t):o),c=t.length-(s?1:2);for(let l=0;l<=c;l++){const f=t[l],u=l===n-1?0:l+1,d=t[u],h=f[0]>=d[0]?f[0]:d[0],g=f[1]>=d[1]?f[1]:d[1],p=f[1]<=d[1]?f[1]:d[1];if(e[0]<=h&&e[1]>=p&&e[1]h?s:h,c=c>g?c:g,i&&(l=lp?f:p)}return i?{minX:o,maxX:s,minY:a,maxY:c,minZ:l,maxZ:f}:{minX:o,maxX:s,minY:a,maxY:c}}function Lh(t){const e=t.length;let r=0,n=e-1;for(let i=0;i=0?1:-1}function fue(t){const e=we(),r=t[0];for(let n=0,i=t.length;ne[0]?t[0]:e[0],c=t[1]>e[1]?t[1]:e[1],l=r[0]n[0]?r[0]:n[0],d=r[1]>n[1]?r[1]:n[1];if(o>u||sd||c0?1:2}function jg(t,e,r){return e[0]<=Math.max(t[0],r[0])&&e[0]>=Math.min(t[0],r[0])&&e[1]<=Math.max(t[1],r[1])&&e[1]>=Math.min(t[1],r[1])}function QC(t,e,r,n=!0){const i=[],o=t.length,a=o-(n?1:2);for(let s=0;s<=a;s++){const c=t[s],l=s===o-1?0:s+1,f=t[l];ZC(e,r,c,f)&&i.push([s,l])}return i}const hue=.01;function EN(t,e,r,n){const i=[e[0]-t[0],e[1]-t[1]],o=[n[0]-r[0],n[1]-r[1]],a=o[1]*i[0]-o[0]*i[1];if((a>=0?a:-a)e[0]?t[0]:e[0],t[1]e[1]?t[1]:e[1]],p=[r[0]n[0]?r[0]:n[0],r[1]n[1]?r[1]:n[1]];if(!(g[0]<=p[1]&&g[1]>=p[0]&&g[2]<=p[3]&&g[3]>=p[2])||!(Wp(t,e,r)||Wp(t,e,n)||Wp(r,n,t)))return;const m=g[0]>p[0]?g[0]:p[0],y=g[1]p[2]?g[2]:p[2],C=g[3]{const p=g[0],v=e[g[0]],x=e[g[1]],m=EN(l,d,v,x),y=Ja(l,m);return{sourceLineSegmentId:p,coordinate:m,targetStartPointDistSquared:y}});h.sort((g,p)=>g.targetStartPointDistSquared-p.targetStartPointDistSquared),h.forEach(g=>{const{sourceLineSegmentId:p,coordinate:v}=g,x={type:Jc.Intersection,coordinates:v,position:Nu.Edge,direction:a,visited:!1,next:null},m={...x,direction:lu.Unknown,cloned:!0};a===lu.Entering?x.next=m:m.next=x;let y=i.get(p);y||(y=[],i.set(p,y)),r.push(x),y.push(m),a*=-1})}for(let s=0,c=e.length;s({intersectionPoint:h,lineSegStartDistSquared:Ja(f,h.coordinates)})).sort((h,g)=>h.lineSegStartDistSquared-g.lineSegStartDistSquared).map(({intersectionPoint:h})=>h).forEach(h=>n.push(h))}return H_(r),H_(n),{targetPolylinePoints:r,sourcePolylinePoints:n}}function bN(t){for(let e=0,r=t.length;ed&&(d=v,h=g)}d{const u=[t[f[0]],t[f[1]]],d=[(u[0][0]+u[1][0])/2,(u[0][1]+u[1][1])/2];s.push(bn(d,e))});const c=Math.min(...s),l=s.indexOf(c);return{segment:a[l],distance:c}}const $l=.001,mue=(t,e)=>{let r,n,i;if(t instanceof ln){const a=t.getImageData();n=a.direction.slice(0,3),i=a.direction.slice(3,6),r=a.spacing}else{const a=t.getImageData(),{direction:s,spacing:c}=a,{viewPlaneNormal:l,viewUp:f}=t.getCamera(),u=s.slice(0,3),d=s.slice(3,6),h=s.slice(6,9),g=we();Kt(g,f,l);const p=Math.abs(je(g,u)),v=Math.abs(je(g,d)),x=Math.abs(je(g,h));let m;if(Math.abs(1-p)<$l)m=c[0],n=u;else if(Math.abs(1-v)<$l)m=c[1],n=d;else if(Math.abs(1-x)<$l)m=c[2],n=h;else throw new Error("No support yet for oblique plane planar contours");const y=Math.abs(je(f,u)),w=Math.abs(je(f,d)),C=Math.abs(je(f,h));let S;if(Math.abs(1-y)<$l)S=c[0],i=u;else if(Math.abs(1-w)<$l)S=c[1],i=d;else if(Math.abs(1-C)<$l)S=c[2],i=h;else throw new Error("No support yet for oblique plane planar contours");r=[m,S]}return{spacing:[r[0]/e,r[1]/e],xDir:n,yDir:i}},vue=(t,e,r)=>Dw(t,e){const{xDir:i,yDir:o,spacing:a}=n,s=re(t),{viewport:c}=s;if(!e.length)return e.push(r),console.log(">>>>> !canvasPoints. :: RETURN"),1;const l=c.canvasToWorld(e[e.length-1]),f=c.canvasToWorld(r),u=we();kt(u,f,l);const d=Math.abs(je(u,i)),h=Math.abs(je(u,o)),g=Math.max(Math.floor(d/a[0]),Math.floor(h/a[0]));if(g>1){const p=e[e.length-1],v=Dw(p,r),x=ot();kn(x,r,p),eo(x,x[0]/v,x[1]/v);const m=v/g;for(let y=1;y<=g;y++)e.push([p[0]+m*x[0]*y,p[1]+m*x[1]*y])}else e.push(r);return g},xue=(t,e,r,n)=>{const i=[t[0]-e[0],t[1]-e[1]],o=[r[0]-e[0],r[1]-e[1]],a=i[0]*o[0]+i[1]*o[1];if(a<0)return!1;const s=Math.sqrt(o[0]*o[0]+o[1]*o[1]);if(s===0)return!1;const c=a/s,l=[o[0]/s,o[1]/s],f=[l[0]*c,l[1]*c],u=[e[0]+f[0],e[1]+f[1]];return!(bn(t,u)>n||bn(e,u)>bn(e,r))},wue=1e-6;function PN(t){let e;const r=xR(t,50);for(let a=0;a<3;a++)if(r.every((s,c,l)=>Math.abs(s[a]-l[0][a]){const[l,f]=s[c],u=Pr(l,f,e);u0){if(o>i)return 0;o>n&&(r[0]=o)}else{if(o=r[0]&&o<=r[2]&&a>=r[1]&&a<=r[3])return K_;const u=[0,1];if(Hg(r[0]-o,l,u)&&Hg(o-r[2],-l,u)&&Hg(r[1]-a,f,u)&&Hg(a-r[3],-f,u)){const[d,h]=u;return h<1&&(i[0]=o+h*l,i[1]=a+h*f),d>0&&(n[0]+=d*l,n[1]+=d*f),K_}return _ue}const Eue=Object.freeze(Object.defineProperty({__proto__:null,findClosestPoint:I3,liangBarksyClip:Nf},Symbol.toStringTag,{value:"Module"})),Due=Object.freeze(Object.defineProperty({__proto__:null,BasicStatsCalculator:sue,aabb:aue,ellipse:cue,lineSegment:uue,point:lue,polyline:lc,rectangle:Sue,vec2:Eue},Symbol.toStringTag,{value:"Module"})),{EPSILON:bue}=Sl,Iue=1-bue;function tS(t,e,r){const{viewPlaneNormal:n}=e,i=t.filter(c=>{let l=c.metadata.viewPlaneNormal;if(!l){const{referencedImageId:u}=c.metadata,{imageOrientationPatient:d}=Pe("imagePlaneModule",u),h=Ye(d[0],d[1],d[2]),g=Ye(d[3],d[4],d[5]);l=we(),Kt(l,h,g),c.metadata.viewPlaneNormal=l}const f=Math.abs(je(n,l))>Iue;return l&&f});if(!i.length)return[];const o=r/2,{focalPoint:a}=e,s=[];for(const c of i){const f=c.data.handles.points[0];if(!c.isVisible)continue;const u=we();Qt(u,a,f);const d=je(u,n);Math.abs(d)n.isVisible?n.data.isCanvasAnnotation?!0:t.isReferenceViewable(n.metadata,r):!1)}function nS(t,e,r,n,i=.25){const o=t.getCamera(),{position:a}=o,{spacingInNormalDirection:s}=E0(t,o,r),c=s*i,l=t.getBounds(),f=l[0],u=l[1],d=[0,0,0];let h=[0,0,0];nt.subtract(e,a,d);let g;for(let p=f;p<=u;p=p+c){h=[p,0,0];const v=(p-a[0])/d[0];if(h[1]=v*d[1]+a[1],h[2]=v*d[2]+a[2],Oue(h,l)){const x=t.getIntensityFromWorld(h),m=n(x,h);m&&(g=m)}}return g}const Oue=function(t,e){const[r,n,i,o,a,s]=e;return t[0]>r&&t[0]i&&t[1]a&&t[2]{const c=[Ye(r,n,i),Ye(o,n,i),Ye(r,a,i),Ye(o,a,i),Ye(r,n,s),Ye(o,n,s),Ye(r,a,s),Ye(o,a,s)],l=Ye(e[0],e[1],e[2]),f=Ye(t[0],t[1],t[2]),u=-je(l,f);let d=null;for(const h of c){const g=je(l,h)+u;if(d===null)d=Math.sign(g);else if(Math.sign(g)!==d)return!0}return!1},{EPSILON:Mue}=Sl,Rue=1-Mue;function b2(t,e){const{viewPlaneNormal:r}=e,n=t.filter(i=>{let o=i.metadata.viewPlaneNormal;if(!o){const{referencedImageId:s}=i.metadata,{imageOrientationPatient:c}=Pe("imagePlaneModule",s),l=Ye(c[0],c[1],c[2]),f=Ye(c[3],c[4],c[5]);o=we(),Kt(o,l,f),i.metadata.viewPlaneNormal=o}const a=Math.abs(je(r,o))>Rue;return o&&a});return n.length?n:[]}const Lue={filterAnnotationsWithinSlice:tS,getWorldWidthAndHeightFromCorners:E2,filterAnnotationsForDisplay:D2,getPointInLineOfSightWithCriteria:nS,isPlaneIntersectingAABB:kN,filterAnnotationsWithinSamePlane:b2},Nue=Object.freeze(Object.defineProperty({__proto__:null,default:Lue,filterAnnotationsForDisplay:D2,filterAnnotationsWithinSamePlane:b2,filterAnnotationsWithinSlice:tS,getPointInLineOfSightWithCriteria:nS,getWorldWidthAndHeightFromCorners:E2,isPlaneIntersectingAABB:kN},Symbol.toStringTag,{value:"Module"}));function Qr(t,e,r){let n=!0,i=!0;if(typeof t!="function")throw new TypeError("Expected a function");return BC(r)&&(n="leading"in r?!!r.leading:n,i="trailing"in r?!!r.trailing:i),S2(t,e,{leading:n,trailing:i,maxWait:e})}function VN(t,e){const r=t.length,n=[];for(let i=0;i{const i=n.getCamera();return Math.abs(je(i.viewPlaneNormal,e.viewPlaneNormal))>r})}function He(t,e,r=!0){const n=re(t),{renderingEngine:i,FrameOfReferenceUID:o}=n;let a=i.getViewports();a=VN(a,o),a=I2(a,e);const s=i.getViewport(n.viewportId);return r&&(a=FN(a,s.getCamera())),a.map(l=>l.id)}const Fue=Object.freeze(Object.defineProperty({__proto__:null,filterViewportsWithFrameOfReferenceUID:VN,filterViewportsWithParallelNormals:FN,filterViewportsWithToolEnabled:I2,getViewportIdsWithToolToRender:He},Symbol.toStringTag,{value:"Module"})),Uue="viewport-element";function Bue(t){const e=re(t),{viewportId:r,renderingEngineId:n}=e,i=`${r}:${n}`,o=Gue(t);return Object.keys(ve.svgNodeCache[i]).forEach(a=>{ve.svgNodeCache[i][a].touched=!1}),{svgLayerElement:o,svgNodeCacheForCanvas:ve.svgNodeCache,getSvgNode:Wue.bind(this,i),appendNode:zue.bind(this,o,i),setNodeTouched:$ue.bind(this,i),clearUntouched:jue.bind(this,o,i)}}function Gue(t){const e=`.${Uue}`,r=t.querySelector(e);return r==null?void 0:r.querySelector(":scope > .svg-layer")}function Wue(t,e){if(ve.svgNodeCache[t]&&ve.svgNodeCache[t][e])return ve.svgNodeCache[t][e].domRef}function zue(t,e,r,n){if(!ve.svgNodeCache[e])return null;ve.svgNodeCache[e][n]={touched:!0,domRef:r},t.appendChild(r)}function $ue(t,e){ve.svgNodeCache[t]&&ve.svgNodeCache[t][e]&&(ve.svgNodeCache[t][e].touched=!0)}function jue(t,e){ve.svgNodeCache[e]&&Object.keys(ve.svgNodeCache[e]).forEach(r=>{const n=ve.svgNodeCache[e][r];!n.touched&&n.domRef&&(t.removeChild(n.domRef),delete ve.svgNodeCache[e][r])})}function UN(t,e){const r=Bue(t);e(r),r.clearUntouched()}function ns(t,e,r){return`${t}::${e}::${r}`}function co(t,e){Object.keys(t).forEach(r=>{const n=e.getAttribute(r),i=t[r];i===void 0||i===""?e.removeAttribute(r):n!==i&&e.setAttribute(r,i)})}function rs(t,e){Object.keys(t).forEach(r=>{const n=t[r];n!==void 0&&n!==""&&e.setAttribute(r,n)})}function bi(t,e,r,n,i,o={},a=""){const{color:s,fill:c,width:l,lineWidth:f,lineDash:u,fillOpacity:d,strokeOpacity:h}=Object.assign({color:"rgb(0, 255, 0)",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},o),g=f||l,p="http://www.w3.org/2000/svg",v=ns(e,"circle",r),x=t.getSvgNode(v),m={cx:`${n[0]}`,cy:`${n[1]}`,r:`${i}`,stroke:s,fill:c,"stroke-width":g,"stroke-dasharray":u,"fill-opacity":d,"stroke-opacity":h};if(x)co(m,x),t.setNodeTouched(v);else{const y=document.createElementNS(p,"circle");a!==""&&y.setAttribute("data-id",a),rs(m,y),t.appendNode(y,v)}}function rS(t,e,r,n,i={},o=""){const{color:a,width:s,lineWidth:c,lineDash:l}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},i),f=c||s,u="http://www.w3.org/2000/svg",d=ns(e,"ellipse",r),h=t.getSvgNode(d),[g,p,v,x]=n,m=Math.hypot(v[0]-x[0],v[1]-x[1]),y=Math.hypot(p[0]-g[0],p[1]-g[1]),w=Math.atan2(v[1]-x[1],v[0]-x[0])*180/Math.PI,C=[(v[0]+x[0])/2,(p[1]+g[1])/2],S=m/2,T=y/2,_={cx:`${C[0]}`,cy:`${C[1]}`,rx:`${S}`,ry:`${T}`,stroke:a,fill:"transparent",transform:`rotate(${w} ${C[0]} ${C[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)co(_,h),t.setNodeTouched(d);else{const E=document.createElementNS(u,"ellipse");o!==""&&E.setAttribute("data-id",o),rs(_,E),t.appendNode(E,d)}}function Hue(t,e,r,n,i,o={},a=""){const s=[(n[0]+i[0])/2,n[1]],c=[(n[0]+i[0])/2,i[1]],l=[n[0],(n[1]+i[1])/2],f=[i[0],(n[1]+i[1])/2];rS(t,e,r,[c,s,l,f],o={},a="")}function gm(t,e,r,n,i={},o){const{color:a,handleRadius:s,width:c,lineWidth:l,fill:f,type:u,opacity:d}=Object.assign({color:"rgb(0, 255, 0)",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},i),h=l||c,g="http://www.w3.org/2000/svg",p=ns(e,"handle",`hg-${r}-index-${o}`);let v;if(u==="circle")v={cx:`${n[0]}`,cy:`${n[1]}`,r:s,stroke:a,fill:f,"stroke-width":h,opacity:d};else if(u==="rect"){const y=parseFloat(s)*1.5,w=n[0]-y*.5,C=n[1]-y*.5;v={x:`${w}`,y:`${C}`,width:`${y}`,height:`${y}`,stroke:a,fill:f,"stroke-width":h,rx:`${y*.1}`,opacity:d}}else throw new Error(`Unsupported handle type: ${u}`);const x=t.getSvgNode(p);if(x)co(v,x),t.setNodeTouched(p);else{const m=document.createElementNS(g,u);rs(v,m),t.appendNode(m,p)}}function sn(t,e,r,n,i={}){n.forEach((o,a)=>{gm(t,e,r,o,i,a)})}function It(t,e,r,n,i,o={},a=""){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:s,width:c,lineWidth:l,lineDash:f,shadow:u}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0,shadow:void 0},o),d=l||c,h="http://www.w3.org/2000/svg",g=ns(e,"line",r),p=t.getSvgNode(g),v=u?`filter:url(#shadow-${t.svgLayerElement.id});`:"",x={x1:`${n[0]}`,y1:`${n[1]}`,x2:`${i[0]}`,y2:`${i[1]}`,stroke:s,style:v,"stroke-width":d,"stroke-dasharray":f};if(p)co(x,p),t.setNodeTouched(g);else{const m=document.createElementNS(h,"line");a!==""&&m.setAttribute("data-id",a),rs(x,m),t.appendNode(m,g)}}function BN(t,e,r,n,i,o={}){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:a,width:s,lineWidth:c,lineDash:l}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},o),f=i[0]+(n[0]-i[0])/2,u=[f,n[1]],d=[f,i[1]],h={start:n,end:u},g={start:u,end:d},p={start:d,end:i};It(t,e,"1",h.start,h.end,{color:a,width:s,lineWidth:c}),It(t,e,"2",g.start,g.end,{color:a,width:s,lineWidth:c}),It(t,e,"3",p.start,p.end,{color:a,width:s,lineWidth:c})}function ua(t,e,r,n,i){if(n.length<2)return;const{color:o="rgb(0, 255, 0)",width:a=10,fillColor:s="none",fillOpacity:c=0,lineWidth:l,lineDash:f,closePath:u=!1}=i,d=l||a,h="http://www.w3.org/2000/svg",g=ns(e,"polyline",r),p=t.getSvgNode(g);let v="";for(const m of n)v+=`${m[0].toFixed(1)}, ${m[1].toFixed(1)} `;if(u){const m=n[0];v+=`${m[0]}, ${m[1]}`}const x={points:v,stroke:o,fill:s,"fill-opacity":c,"stroke-width":d,"stroke-dasharray":f};if(p)co(x,p),t.setNodeTouched(g);else{const m=document.createElementNS(h,"polyline");rs(x,m),t.appendNode(m,g)}}function $s(t,e,r,n,i){const a=n.length&&n[0].length&&Array.isArray(n[0][0])?n:[n],{color:s="rgb(0, 255, 0)",width:c=10,fillColor:l="none",fillOpacity:f=0,lineWidth:u,lineDash:d,closePath:h=!1}=i,g=u||c,p="http://www.w3.org/2000/svg",v=ns(e,"path",r),x=t.getSvgNode(v);let m="";for(let w=0,C=a.length;wm.length){for(let C=0;C0?I3(n,i):i,c=Yue(o),l=I3(c,s),f=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},a);It(t,e,`link-${r}`,s,l,f)}function Yue(t){const{x:e,y:r,height:n,width:i}=t,o=i/2,a=n/2,s=[e+o,r],c=[e,r+a],l=[e+o,r+n],f=[e+i,r+a];return[s,c,l,f]}function ei(t,e,r,n,i,o,a,s={}){const c=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},s),l=pl(t,e,r,n,i,c);return Xue(t,e,r,o,i,l,c),l}function iS(t,e,r,n,i={},o=""){const{color:a,width:s,lineWidth:c,lineDash:l}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},i),f=c||s,u="http://www.w3.org/2000/svg",d=ns(e,"rect",r),h=t.getSvgNode(d),[g,p,v,x]=n,m=Math.hypot(g[0]-p[0],g[1]-p[1]),y=Math.hypot(g[0]-v[0],g[1]-v[1]),w=[(x[0]+g[0])/2,(x[1]+g[1])/2],C=[(v[0]+g[0])/2,(v[1]+g[1])/2],S=Math.atan2(w[1]-C[1],w[0]-C[0])*180/Math.PI,T={x:`${w[0]-m/2}`,y:`${w[1]-y/2}`,width:`${m}`,height:`${y}`,stroke:a,fill:"transparent",transform:`rotate(${S} ${w[0]} ${w[1]})`,"stroke-width":f,"stroke-dasharray":l};if(h)co(T,h),t.setNodeTouched(d);else{const _=document.createElementNS(u,"rect");o!==""&&_.setAttribute("data-id",o),rs(T,_),t.appendNode(_,d)}}function Nh(t,e,r,n,i,o={},a=""){const s=[n[0],n[1]],c=[i[0],n[1]],l=[n[0],i[1]],f=[i[0],i[1]];iS(t,e,r,[s,c,l,f],o,a)}function pm(t,e,r,n,i,o={}){if(isNaN(n[0])||isNaN(n[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:a,width:s,lineWidth:c,lineDash:l}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},o);It(t,e,r,n,i,{color:a,width:s,lineWidth:c,lineDash:l});const f=10,u=Math.atan2(i[1]-n[1],i[0]-n[0]),d={start:[i[0]-f*Math.cos(u-Math.PI/7),i[1]-f*Math.sin(u-Math.PI/7)],end:i},h={start:[i[0]-f*Math.cos(u+Math.PI/7),i[1]-f*Math.sin(u+Math.PI/7)],end:i};It(t,e,"2",d.start,d.end,{color:a,width:s,lineWidth:c}),It(t,e,"3",h.start,h.end,{color:a,width:s,lineWidth:c})}function GN(t,e,r,n,i,o={}){const{color:a,width:s,lineWidth:c,lineDash:l}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},o),f=c||s,u="http://www.w3.org/2000/svg",d=ns(e,"rect",r),h=t.getSvgNode(d),g=[Math.min(n[0],i[0]),Math.min(n[1],i[1])],p=Math.abs(n[0]-i[0]),v=Math.abs(n[1]-i[1]),x={x:`${g[0]}`,y:`${g[1]}`,width:`${p}`,height:`${v}`,stroke:a,fill:"black","stroke-width":f,"stroke-dasharray":l};if(h)co(x,h),t.setNodeTouched(d);else{const m=document.createElementNS(u,"rect");rs(x,m),t.appendNode(m,d)}}const Jue=Object.freeze(Object.defineProperty({__proto__:null,draw:UN,drawArrow:pm,drawCircle:bi,drawEllipse:Hue,drawEllipseByCoordinates:rS,drawHandle:gm,drawHandles:sn,drawHeight:BN,drawLine:It,drawLinkedTextBox:ei,drawPath:$s,drawPolyline:ua,drawRect:Nh,drawRectByCoordinates:iS,drawRedactionRect:GN,drawTextBox:pl,setAttributesIfNecessary:co,setNewAttributesIfValid:rs},Symbol.toStringTag,{value:"Module"}));function WN(t,e){const r=re(t),{renderingEngineId:n,viewportId:i}=r,o=Cn(i,n);if(!o)return[];const a=[],s=Object.keys(o.toolOptions);for(let c=0;c{this._throwIfDestroyed();const e=Array.from(this._viewportElements.values());for(let r=0;r{this._needsRender.add(r)}),this._renderFlaggedViewports()}_setViewportsToBeRenderedNextFrame(e){const r=[...this._viewportElements.values()];e.forEach(n=>{r.indexOf(n)!==-1&&this._needsRender.add(n)}),this._render()}_render(){this._needsRender.size>0&&this._animationFrameSet===!1&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_triggerRender(e){const r=re(e);if(!r)return;if(!gr(r.renderingEngineId)){console.warn("rendering Engine has been destroyed");return}const i=WN(e,[Zue,Que,e0e]),{renderingEngineId:o,viewportId:a}=r,s={element:e,renderingEngineId:o,viewportId:a};UN(e,c=>{let l=!1;const f=u=>{if(u.renderAnnotation){const d=u.renderAnnotation(r,c);l=l||d}};i.forEach(f),l&&De(e,F.ANNOTATION_RENDERED,{...s})})}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}const oS=new t0e;function L0(t){oS.renderViewport(t)}function pe(t){t.length&&t.forEach(e=>{const r=Xn(e);if(!r){console.warn(`Viewport not available for ${e}`);return}const{viewport:n}=r;if(!n){console.warn(`Viewport not available for ${e}`);return}const i=n.element;L0(i)})}function n0e(t){var e;return((e=t[0])==null?void 0:e.length)===3}function r0e(t,e){if(!e||e.length===0||e.length===t.length)return t;const r=e[e.length-1]-e[0]+1,n=zv(e.map(o=>t[o][0])),i=zv(e.map(o=>t[o][1]));if(n0e(t)){const o=zv(e.map(a=>t[a][2]));return q8(rf(n,r),rf(i,r),rf(o,r))}else return q8(rf(n,r),rf(i,r))}function i0e(t,e){const r=[],[n,i]=e,o=i-n+1,a=Math.floor(o/t);let s=0,c=Math.round((o-1)/(a-1)*s)+n;for(;c<=i;)r.push(c),s++,c=Math.round((o-1)/(a-1)*s)+n;return r}function M3(t,e,r,n){const i=r-e+1,o=Math.floor(n/100*i)??1,a=Math.floor(i/o)??1;if(isNaN(i)||!i||!a||i/a<2)return t;const s=Math.max(0,e),c=Math.min(t.length-1,r),l=t.slice(0,s),f=t.slice(c+1,t.length),u=i0e(a,[s,c]),d=r0e(t,u);return[...l,...d,...f]}function O2(t,e){var n,i;return e!=null&&e.autoGenerated?!1:((n=t==null?void 0:t.smoothing)==null?void 0:n.smoothOnAdd)===!0||((i=t==null?void 0:t.smoothing)==null?void 0:i.smoothOnEdit)===!0}function o0e(t,e){return so(t,e)<.001}function a0e(t,e){return so(t,e)===0}function s0e(t,e){for(let r=0;ro0e(c,l)===!1,[o,a]=Y_([uu(r,t.length,1),r,t],[uu(n,e.length,1),n,e],i,1),[s]=Y_([uu(o,t.length,-1),o,t],[uu(a,e.length,-1),a,e],i,-1);return[o,s]}function M2(t,e,r){const{interpolation:n,smoothing:i}=t,o=e;if(n){const{knotsRatioPercentageOnAdd:a,knotsRatioPercentageOnEdit:s,smoothOnAdd:c=!1,smoothOnEdit:l=!1}=i,f=r?s:a;if(r?l:c){const[d,h]=r?c0e(e,r):[0,e.length-1];return!e[d]||!e[h]?e:M3(e,d,h,f)}}return o}const N0=t=>{if(t.shiftKey)return t.ctrlKey?vr.ShiftCtrl:t.altKey?vr.ShiftAlt:t.metaKey?vr.ShiftMeta:vr.Shift;if(t.ctrlKey)return t.altKey?vr.CtrlAlt:t.metaKey?vr.CtrlMeta:vr.Ctrl;if(t.altKey)return t.metaKey&&vr.AltMeta||vr.Alt;if(t.metaKey)return vr.Meta};function aS(t,e){const r=t[0],n=t[t.length-1],i=ot();eo(i,n[0]-r[0],n[1]-r[1]),Na(i,i);const o=ot(),a=ot();eo(o,-i[1],i[0]),eo(a,i[1],-i[0]);const s=[(r[0]+n[0])/2,(r[1]+n[1])/2],c={dist:0,index:null};for(let u=0;uc.dist&&(c.dist=h,c.index=u)}return[t[c.index],s].map(e.canvasToWorld)}function l0e(t,e){const{viewport:r}=t,n=e.data.contour.polyline.map(r.worldToCanvas);return aS(n,r)}var ec;(function(t){t[t.CounterClockwise=-1]="CounterClockwise",t[t.Unknown=0]="Unknown",t[t.Clockwise=1]="Clockwise"})(ec||(ec={}));const{addCanvasPointsToArray:sS,pointsAreWithinCloseContourProximity:zN,getFirstLineSegmentIntersectionIndexes:$N,getSubPixelSpacingAndXYDirections:u0e}=lc;function f0e(t,e,r){this.isDrawing=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=re(o),{viewport:c}=s,l=N0(t.detail.event)===this.configuration.contourHoleAdditionModifierKey,{spacing:f,xDir:u,yDir:d}=u0e(c,this.configuration.subPixelResolution);this.drawData={canvasPoints:[a],polylineIndex:0,contourHoleProcessingEnabled:l},this.commonData={annotation:e,viewportIdsToRender:r,spacing:f,xDir:u,yDir:d,movingTextBox:!1},ve.isInteractingWithTool=!0,o.addEventListener(F.MOUSE_UP,this.mouseUpDrawCallback),o.addEventListener(F.MOUSE_DRAG,this.mouseDragDrawCallback),o.addEventListener(F.MOUSE_CLICK,this.mouseUpDrawCallback),o.addEventListener(F.TOUCH_END,this.mouseUpDrawCallback),o.addEventListener(F.TOUCH_DRAG,this.mouseDragDrawCallback),o.addEventListener(F.TOUCH_TAP,this.mouseUpDrawCallback),Qe(o)}function d0e(t){ve.isInteractingWithTool=!1,t.removeEventListener(F.MOUSE_UP,this.mouseUpDrawCallback),t.removeEventListener(F.MOUSE_DRAG,this.mouseDragDrawCallback),t.removeEventListener(F.MOUSE_CLICK,this.mouseUpDrawCallback),t.removeEventListener(F.TOUCH_END,this.mouseUpDrawCallback),t.removeEventListener(F.TOUCH_DRAG,this.mouseDragDrawCallback),t.removeEventListener(F.TOUCH_TAP,this.mouseUpDrawCallback),ct(t)}function h0e(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=re(n),{renderingEngine:s,viewport:c}=a,{annotation:l,viewportIdsToRender:f,xDir:u,yDir:d,spacing:h,movingTextBox:g}=this.commonData,{polylineIndex:p,canvasPoints:v}=this.drawData,x=v[v.length-1],m=c.canvasToWorld(x),y=we();kt(y,i,m);const w=Math.abs(je(y,u)),C=Math.abs(je(y,d));if(!(w<=h[0]&&C<=h[1])){if(g){this.isDrawing=!1;const{deltaPoints:S}=e,T=S.world,{textBox:_}=l.data.handles,{worldPosition:E}=_;E[0]+=T[0],E[1]+=T[1],E[2]+=T[2],_.hasMoved=!0}else{const S=this.findCrossingIndexDuringCreate(t);if(S!==void 0)this.applyCreateOnCross(t,S);else{const T=sS(n,v,o,this.commonData);this.drawData.polylineIndex=p+T}}pe(f)}}function g0e(t){const{allowOpenContours:e}=this.configuration,{canvasPoints:r,contourHoleProcessingEnabled:n}=this.drawData,i=r[0],o=r[r.length-1],a=t.detail,{element:s}=a;e&&!zN(i,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(s,{contourHoleProcessingEnabled:n}):this.completeDrawClosedContour(s,{contourHoleProcessingEnabled:n})}function p0e(t,e){this.removeCrossedLinesOnCompleteDraw();const{canvasPoints:r}=this.drawData,{contourHoleProcessingEnabled:n,minPointsToSave:i}=e??{};if(i&&r.length=2)if(c.length>this.configuration.checkCanvasEditFallbackProximity){const u=c[0],d=[];for(let p=0;pp.distance-v.distance);const h=[d[0],d[1]],g=Math.min(h[0].index,h[1].index);this.editData.startCrossingIndex=g}else{const u=ot();kn(u,c[1],c[0]),Na(u,u);const d=6,h=[c[0][0]-u[0]*d,c[0][1]-u[1]*d],g=ml(l,h,c[0],e);if(g){const p=[h];_0e(n,p,c[0],this.commonData),c.unshift(...p),this.removePointsUpUntilFirstCrossing(e),this.editData.editIndex=c.length-1,this.editData.startCrossingIndex=g[0]}}}function D0e(t){const{editCanvasPoints:e,prevCanvasPoints:r}=this.editData;let n=0;for(let i=0;i0;n--){const i=[r[n],r[n-1]],o=!!ml(e,i[0],i[1],t);if(r.pop(),o)break}}function O0e(){const{editCanvasPoints:t,prevCanvasPoints:e,startCrossingIndex:r}=this.editData;if(r===void 0)return;const n=t[t.length-1],i=[];for(let a=0;aa.distance-s.distance);const o=t.slice(0,-1);for(let a=0;a3){const x=Ja(c[0],c[u-1]);v=pt(0,x)}f=v}if((n==null?void 0:n.updateWindingDirection)!==!1){let v=h?h.data.contour.windingDirection*-1:s;v===void 0&&(v=l),v!==l&&c.reverse();const x=a.handles.points.map(m=>o(m));x.length>2&&zp(x)!==v&&a.handles.points.reverse(),l=v}for(let v=0;v1&&this.checkForFirstCrossing(t,!0),this.editData.snapIndex=this.findSnapIndex(),this.editData.snapIndex===-1){this.finishEditAndStartNewEdit(t);return}this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(t),p!==void 0&&this.checkForSecondCrossing(t,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(t)),pe(l)}function k0e(t){const e=t.detail,{element:r}=e,n=re(r),{viewport:i,renderingEngine:o}=n,{annotation:a,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:c,editCanvasPoints:l}=this.editData;is(a,{points:c,closed:!0,targetWindingDirection:ec.Clockwise},i),a.autoGenerated&&(a.autoGenerated=!1),fn(a,r);const f=l.pop();this.editData={prevCanvasPoints:c,editCanvasPoints:[f],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0},pe(s)}function V0e(t){const{prevCanvasPoints:e,editCanvasPoints:r,startCrossingIndex:n,snapIndex:i}=this.editData;if(n===void 0||i===void 0)return;const o=t.detail,{element:a}=o,s=[...r];jN(a,s,e[i],this.commonData),s.length>r.length&&s.pop();let c,l;n>i?(c=i,l=n):(c=n,l=i);const f=bn(e[c],s[0]),u=bn(e[c],s[s.length-1]),d=bn(e[l],s[0]),h=bn(e[l],s[s.length-1]),g=[];for(let C=0;C=0;C--){const S=s[C];g.push([S[0],S[1]])}for(let C=l;C=0;C--){const S=s[C];x.push([S[0],S[1]])}const m=J_(g),y=J_(x);return m>y?g:x}function F0e(t){const e=t.detail,{element:r}=e;this.completeClosedContourEdit(r)}function U0e(t){var c;const e=re(t),{viewport:r,renderingEngine:n}=e,{annotation:i,viewportIdsToRender:o}=this.commonData,{fusedCanvasPoints:a,prevCanvasPoints:s}=this.editData;if(a){const l=O2(this.configuration,i)?M2(this.configuration,a,s):a,f=((c=this.configuration)==null?void 0:c.decimate)||{};is(i,{points:l,closed:!0,targetWindingDirection:ec.Clockwise},r,{decimate:{enabled:!!f.enabled,epsilon:f.epsilon}}),i.autoGenerated&&(i.autoGenerated=!1),fn(i,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,pe(o),this.deactivateClosedContourEdit(t)}function B0e(t){this.completeClosedContourEdit(t)}function G0e(t){t.activateClosedContourEdit=N0e.bind(t),t.deactivateClosedContourEdit=P0e.bind(t),t.mouseDragClosedContourEditCallback=A0e.bind(t),t.mouseUpClosedContourEditCallback=F0e.bind(t),t.finishEditAndStartNewEdit=k0e.bind(t),t.fuseEditPointsWithClosedContour=V0e.bind(t),t.cancelClosedContourEdit=B0e.bind(t),t.completeClosedContourEdit=U0e.bind(t)}const{addCanvasPointsToArray:HN,getSubPixelSpacingAndXYDirections:W0e}=lc;function z0e(t,e,r){this.isEditingOpen=!0;const n=t.detail,{currentPoints:i,element:o}=n,a=i.canvas,s=re(o),{viewport:c}=s,l=e.data.contour.polyline.map(c.worldToCanvas),{spacing:f,xDir:u,yDir:d}=W0e(c,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:l,editCanvasPoints:[a],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:e,viewportIdsToRender:r,spacing:f,xDir:u,yDir:d,movingTextBox:!1},ve.isInteractingWithTool=!0,o.addEventListener(F.MOUSE_UP,this.mouseUpOpenContourEditCallback),o.addEventListener(F.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(F.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),o.addEventListener(F.TOUCH_END,this.mouseUpOpenContourEditCallback),o.addEventListener(F.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),o.addEventListener(F.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Qe(o)}function $0e(t){ve.isInteractingWithTool=!1,t.removeEventListener(F.MOUSE_UP,this.mouseUpOpenContourEditCallback),t.removeEventListener(F.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(F.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),t.removeEventListener(F.TOUCH_END,this.mouseUpOpenContourEditCallback),t.removeEventListener(F.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),t.removeEventListener(F.TOUCH_TAP,this.mouseUpOpenContourEditCallback),ct(t)}function j0e(t){const e=t.detail,{currentPoints:r,element:n}=e,i=r.world,o=r.canvas,a=re(n),{renderingEngine:s,viewport:c}=a,{viewportIdsToRender:l,xDir:f,yDir:u,spacing:d}=this.commonData,{editIndex:h,editCanvasPoints:g,startCrossingIndex:p}=this.editData,v=g[g.length-1],x=c.canvasToWorld(v),m=we();kt(m,i,x);const y=Math.abs(je(m,f)),w=Math.abs(je(m,u));if(y<=d[0]&&w<=d[1])return;p!==void 0&&this.checkAndRemoveCrossesOnEditLine(t);const C=HN(n,g,o,this.commonData),S=h+C;this.editData.editIndex=S,p===void 0&&g.length>1&&this.checkForFirstCrossing(t,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(t),p!==void 0&&this.checkForSecondCrossing(t,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(t)):this.checkIfShouldOverwriteAnEnd(t)&&this.openContourEditOverwriteEnd(t),pe(l)}function H0e(t){const e=t.detail,{element:r}=e,n=re(r),{viewport:i}=n,{annotation:o,viewportIdsToRender:a}=this.commonData,s=this.fuseEditPointsForOpenContourEndEdit();is(o,{points:s,closed:!1},i);const c=o.data.contour.polyline;o.data.handles.points=[c[0],c[c.length-1]],o.data.handles.activeHandleIndex=1,fn(o,r),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.deactivateOpenContourEdit(r),this.activateOpenContourEndEdit(t,o,a,null)}function K0e(t){const e=t.detail,{currentPoints:r,lastPoints:n}=e,i=r.canvas,o=n.canvas,{snapIndex:a,prevCanvasPoints:s,startCrossingIndex:c}=this.editData;if(c===void 0||a===void 0)return!1;if(a===-1)return!0;if(a!==0&&a!==s.length-1)return!1;const l=i,f=o,u=s[a],d=ot(),h=ot();eo(d,l[0]-f[0],l[1]-f[1]),eo(h,l[0]-u[0],l[1]-u[1]);const g=Ew(d,h),p=Math.sqrt(d[0]*d[0]+d[1]*d[1]),v=Math.sqrt(h[0]*h[0]+h[1]*h[1]);return Math.acos(g/(p*v))=n;s--){const c=e[s];i.push([c[0],c[1]])}else for(let s=0;s=0;s--){const c=r[s];i.push([c[0],c[1]])}return i}function X0e(t){const{prevCanvasPoints:e,editCanvasPoints:r,startCrossingIndex:n,snapIndex:i}=this.editData;if(n===void 0||i===void 0)return;const o=t.detail,{element:a}=o,s=[...r];HN(a,s,e[i],this.commonData),s.length>r.length&&s.pop();let c,l;n>i?(c=i,l=n):(c=n,l=i);const f=bn(e[c],s[0]),u=bn(e[c],s[s.length-1]),d=bn(e[l],s[0]),h=bn(e[l],s[s.length-1]),g=[];for(let x=0;x=0;x--){const m=s[x];g.push([m[0],m[1]])}for(let x=l;xOn(r).data.contour.polyline)}function Ph(t,e){const r=KN(t),n=[];return r.forEach(i=>{const o=i.length,a=new Array(o);for(let s=0;sn.worldToCanvas(l)),a=Ph(r,n),s=[o,...a];$s(e,r.annotationUID,"1",s,i)}function lfe(t,e,r){var c;const{viewport:n}=t,i=this._getRenderingOptions(t,r),o=r.data.contour.polyline.map(l=>n.worldToCanvas(l));ua(e,r.annotationUID,"1",o,i);const s=r.data.handles.activeHandleIndex;if(((c=this.configuration.alwaysRenderOpenContourHandles)==null?void 0:c.enabled)===!0){const l=this.configuration.alwaysRenderOpenContourHandles.radius,f="0",u=[o[0],o[o.length-1]];s===0?u.shift():s===1&&u.pop(),sn(e,r.annotationUID,f,u,{color:i.color,handleRadius:l})}if(s!==null){const l="1",f=s===0?0:o.length-1,u=o[f];sn(e,r.annotationUID,l,[u],{color:i.color})}}function ufe(t,e,r){const{viewport:n}=t,{openUShapeContourVectorToPeak:i}=r.data,{polyline:o}=r.data.contour;if(this.renderOpenContour(t,e,r),!i)return;const a=n.worldToCanvas(o[0]),s=n.worldToCanvas(o[o.length-1]),c=[n.worldToCanvas(i[0]),n.worldToCanvas(i[1])],l=this._getRenderingOptions(t,r);ua(e,r.annotationUID,"first-to-last",[a,s],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"}),ua(e,r.annotationUID,"midpoint-to-open-contour",[c[0],c[1]],{color:l.color,width:l.width,closePath:!1,lineDash:"2,2"})}function ffe(t,e,r){const n=this._getRenderingOptions(t,r),{allowOpenContours:i}=this.configuration,{canvasPoints:o}=this.drawData;if(n.closePath=!1,ua(e,r.annotationUID,"1",o,n),i){const a=o[0],s=o[o.length-1];ife(a,s,this.configuration.closeContourProximity)?ua(e,r.annotationUID,"2",[s,a],n):sn(e,r.annotationUID,"0",[a],{color:n.color,handleRadius:2})}}function dfe(t,e,r){const{viewport:n}=t,{fusedCanvasPoints:i}=this.editData;if(i===void 0){this.renderClosedContour(t,e,r);return}const o=Ph(r,n),a=[i,...o],s=this._getRenderingOptions(t,r),c="preview-1";r.parentAnnotationUID&&s.fillOpacity&&(s.fillOpacity=0),$s(e,r.annotationUID,c,a,s)}function hfe(t,e,r){const{fusedCanvasPoints:n}=this.editData;if(n===void 0){this.renderOpenContour(t,e,r);return}const i=this._getRenderingOptions(t,r);ua(e,r.annotationUID,"preview-1",n,i)}function gfe(t,e,r){if(r.parentAnnotationUID)return;const{viewport:n}=t,i=this._getRenderingOptions(t,r),o=r.data.contour.polyline.map(g=>n.worldToCanvas(g)),a=Ph(r,n),s="1",c=o[0],l=6,f=100,u=[];for(let g=0;g0}else if(t instanceof ln){const{preScale:r}=t.getImageData()||{};return!!(r!=null&&r.scaled)}else return!1}function R3(t,e){let r=0;for(let n=0;no.getCurrentImageId()===r),!i||!i.length)?void 0:i[0].getImageData()}else if(e.startsWith("volumeId:")){const r=da(e),n=Th(r);return!n||!n.length?void 0:n[0].getImageData()}else if(e.startsWith("videoId:")){const r=Nn(e),n=J1(r);return!n||!n.length?void 0:n[0].getImageData()}else throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}getTargetId(e){var n;const r=(n=e.getViewReferenceId)==null?void 0:n.call(e);if(r)return r;throw new Error("getTargetId: viewport must have a getViewReferenceId method")}}or.toolName="BaseTool";function qN(t){if(t){if(t.data&&t.highlighted)return Oa.Highlighted;if(Ih(t.annotationUID))return Oa.Selected;if(rr(t.annotationUID))return Oa.Locked;if(t.data&&t.autoGenerated)return Oa.AutoGenerated}return Oa.Default}function yfe(t,e,r){const n=e0("textBoxFontSize",t,e,r),i=e0("textBoxFontFamily",t,e,r);return`${n}px ${i}`}const xfe=Object.freeze(Object.defineProperty({__proto__:null,getFont:yfe,getState:qN,style:DC},Symbol.toStringTag,{value:"Module"}));class uc extends or{constructor(){super(...arguments),this.onImageSpacingCalibrated=e=>{const{element:r,imageId:n}=e.detail,i=Nn(n),o=ha();o.getFramesOfReference().forEach(s=>{const l=o.getAnnotations(s)[this.getToolName()];!l||!l.length||(l.forEach(f=>{var d;if(!((d=f.metadata)!=null&&d.referencedImageId))return;Nn(f.metadata.referencedImageId)===i&&(f.invalidated=!0,f.data.cachedStats={})}),L0(r))})}}filterInteractableAnnotationsForElement(e,r){if(!r||!r.length)return;const n=re(e),{viewport:i}=n;return D2(i,r)}getReferencedImageId(e,r,n,i){const o=this.getTargetId(e);let a=o.split(/^[a-zA-Z]+:/)[1];if(e instanceof Mn){const s=da(o),c=_e.getVolume(s);a=Xa(c,r,n)}return a}getStyle(e,r,n){return e0(e,r,qN(n),this.mode)}}uc.toolName="AnnotationDisplayTool";class ar extends uc{static createAnnotation(...e){let r={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.toolName},data:{text:"",handles:{points:new Array,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};for(const n of e)r=Zr(r,n);return r}static createAnnotationForViewport(e,...r){return this.createAnnotation({metadata:e.getViewReference()},...r)}static createAndAddAnnotation(e,...r){const n=this.createAnnotationForViewport(e,...r);Ut(n,e.element),fn(n,e.element)}constructor(e,r){var n,i;super(e,r),this.mouseMoveCallback=(o,a)=>{if(!a)return!1;const{element:s,currentPoints:c}=o.detail,l=c.canvas;let f=!1;for(const u of a){if(rr(u.annotationUID)||!Ur(u.annotationUID))continue;const{data:d}=u,h=d.handles?d.handles.activeHandleIndex:void 0,g=this._imagePointNearToolOrHandle(s,u,l,6),p=g&&!u.highlighted,v=!g&&u.highlighted;p||v?(u.highlighted=!u.highlighted,f=!0):d.handles&&d.handles.activeHandleIndex!==h&&(f=!0)}return f},(n=e.configuration)!=null&&n.getTextLines&&(this.configuration.getTextLines=e.configuration.getTextLines),(i=e.configuration)!=null&&i.statsCalculator&&(this.configuration.statsCalculator=e.configuration.statsCalculator)}getHandleNearImagePoint(e,r,n,i){const o=re(e),{viewport:a}=o,{data:s}=r,{isCanvasAnnotation:c}=s,{points:l,textBox:f}=s.handles;if(f){const{worldBoundingBox:u}=f;if(u){const d={topLeft:a.worldToCanvas(u.topLeft),topRight:a.worldToCanvas(u.topRight),bottomLeft:a.worldToCanvas(u.bottomLeft),bottomRight:a.worldToCanvas(u.bottomRight)};if(n[0]>=d.topLeft[0]&&n[0]<=d.bottomRight[0]&&n[1]>=d.topLeft[1]&&n[1]<=d.bottomRight[1])return s.handles.activeHandleIndex=null,f}}for(let u=0;u<(l==null?void 0:l.length);u++){const d=l[u],h=c?d.slice(0,2):a.worldToCanvas(d);if(bn(n,h)this.getStyle(h,n,r),{annotationUID:o}=r,a=Ur(o),s=rr(o),c=i("lineWidth"),l=i("lineDash"),f=i("color"),u=i("shadow"),d=this.getLinkedTextBoxStyle(n,r);return{visibility:a,locked:s,color:f,lineWidth:c,lineDash:l,lineOpacity:1,fillColor:f,fillOpacity:0,shadow:u,textbox:d}}_imagePointNearToolOrHandle(e,r,n,i){if(this.getHandleNearImagePoint(e,r,n,i)||this.isPointNearTool(e,r,n,i,"mouse"))return!0}}ar.toolName="AnnotationTool";class wfe extends ar{constructor(e,r){super(e,r)}renderAnnotation(e,r){let n=!1;const{viewport:i}=e,{element:o}=i;if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let a=_t(this.getToolName(),o);if(!(a!=null&&a.length)||(a=this.filterInteractableAnnotationsForElement(o,a),!(a!=null&&a.length)))return n;const s=this.getTargetId(i),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let l=0;lthis.moveAnnotation(i,r))}updateContourPolyline(e,r,n,i){var a;const o=((a=this.configuration)==null?void 0:a.decimate)||{};is(e,r,n,{decimate:{enabled:!!o.enabled,epsilon:o.epsilon},updateWindingDirection:i==null?void 0:i.updateWindingDirection})}getPolylinePoints(e){var r;return((r=e.data.contour)==null?void 0:r.polyline)??e.data.polyline}renderAnnotationInstance(e){const{enabledElement:r,annotationStyle:n,svgDrawingHelper:i}=e,o=e.annotation;if(o.parentAnnotationUID)return;const{annotationUID:a}=o,{viewport:s}=r,{worldToCanvas:c}=s,l=this.getPolylinePoints(o).map(x=>c(x)),{lineWidth:f,lineDash:u,color:d,fillColor:h,fillOpacity:g}=n,p=Ph(o,s),v=[l,...p];return $s(i,a,"contourPolyline",v,{color:d,lineDash:u,lineWidth:Math.max(.1,f),fillColor:h,fillOpacity:g}),!0}}class Cfe{constructor(){this.annotationUIDs=new Set,this._isVisible=!0,this.visibleFilter=this.unboundVisibleFilter.bind(this)}unboundVisibleFilter(e){return!this._isVisible||!this.annotationUIDs.has(e)}has(e){return this.annotationUIDs.has(e)}setVisible(e=!0,r,n){this._isVisible!==e&&(this._isVisible=e,this.annotationUIDs.forEach(i=>{const o=On(i);if(!o){this.annotationUIDs.delete(i);return}if(o.isVisible===e||!e&&(n==null?void 0:n(i))===!1)return;o.isVisible=e;const a={...r,annotation:o};De(Ce,F.ANNOTATION_MODIFIED,a)}))}get isVisible(){return this._isVisible}findNearby(e,r){const n=[...this.annotationUIDs];if(n.length===0)return null;if(!e)return n[r===1?0:n.length-1];const i=n.indexOf(e);return i===-1||i+r<0||i+r>=n.length?null:n[i+r]}add(...e){e.forEach(r=>this.annotationUIDs.add(r))}remove(...e){e.forEach(r=>this.annotationUIDs.delete(r))}clear(){this.annotationUIDs.clear()}}const Sfe=Object.freeze(Object.defineProperty({__proto__:null,AnnotationGroup:Cfe,FrameOfReferenceSpecificAnnotationManager:KR,config:xfe,locking:ice,selection:uce,state:xce,visibility:hce},Symbol.toStringTag,{value:"Module"})),Z_="PlanarFreehandContourSegmentationTool";function cS(t,e=[]){const{viewport:r,sliceData:n,annotation:i}=t,o=new Map,{toolName:a,originalToolName:s}=i.metadata,c=s||a,l=(_t(c,r.element)||[]).filter(f=>!f.metadata.originalToolName||f.metadata.originalToolName===c);if(c!==Z_){const f=_t(Z_,r.element);f!=null&&f.length&&f.forEach(u=>{const{metadata:d}=u;d.originalToolName===c&&d.originalToolName!==d.toolName&&l.push(u)})}if(!(l!=null&&l.length))return o;for(let f=0;fh.metadata.sliceIndex===f);if(!(u!=null&&u.length))continue;const d=u.filter(h=>e.every(g=>{const p=g.parentKey?g.parentKey(h):h,v=p==null?void 0:p[g.key];return Array.isArray(v)?v.every((x,m)=>x===g.value[m]):v===g.value}));d.length&&o.set(f,d)}return o}function Tfe(t,e){const r=cS(t,e),n=[];if(!(r!=null&&r.size))return n;for(const i of r.values())i.forEach(o=>{n.push(o)});return n}function XN(t,e,r){const n=Zr({data:{},metadata:{}},r);return Object.assign(n,{highlighted:!1,invalidated:!0,autoGenerated:!0,annotationUID:void 0,cachedStats:{},childAnnotationUIDs:[],parentAnnotationUID:void 0}),Object.assign(n.data,{handles:{points:e.points||e||[],interpolationSources:e.sources,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},contour:{...r.data.contour,polyline:t}}),n}function _fe(t,e){const r=cS(e,[{key:"interpolationUID",value:e.interpolationUID}]),n=Efe(r);if(!n){console.warn("No annotations found to interpolate",r);return}const i=Dfe(r,t.annotationUID),o=[];for(let a=n[0]+1;a=e[0];o--){const a=r.get(o);if(a!=null&&a.length){if(a[0].autoGenerated)continue;a.length>1&&(i=!1),n.push(o);break}}if(!(!i||!n.length)){for(let o=t+1;o<=e[1];o++){const a=r.get(o);if(a!=null&&a.length){if(a[0].autoGenerated)continue;a.length>1&&(i=!1),n.push(o);break}}if(!(!i||n.length<2))return n}}const{PointsManager:Q_}=Yt;function Mfe(t,e=12){const r=Q_.create3(e);r.sources=[];const{sources:n}=r,{length:i,sources:o=[]}=t,a=5;if(in.push(Q_.create3(e)));const c=Rfe(t,a),l=Lfe(c,e),f=[];if((l==null?void 0:l.length)>2){let u=-1;const d=s/3;l.forEach(p=>{const[v,,x]=p,m=Math.ceil((v+x)/2);x-u2*d?(jl(f,u,v,s,i),u=jl(f,v,m,s,i)):u=jl(f,u,m,s,i),x-u>d&&(u=jl(f,u,x,s,i)))});const h=f[0];L3(h+i-u,i)>2*d&&jl(f,u,h-d,s,i)}else{const u=Math.floor(i/e);jl(f,-1,i-u,u,i)}return f.forEach(u=>{const d=t.getPointArray(u);r.push(d),o.forEach((h,g)=>n[g].push(h.getPoint(u)))}),r}function Rfe(t,e=6){const{length:r}=t,n=we(),i=we(),o=new Float32Array(r);for(let a=0;a{if(r.FrameOfReferenceUID===e.FrameOfReferenceUID){const n=r.viewport,{viewPlaneNormal:i,viewUp:o}=n.getCamera();return eE(i,e.viewPlaneNormal)&&(!e.viewUp||eE(o,e.viewUp))}}).map(r=>r.viewport)}const Jf="PlanarFreehandContourSegmentationTool";async function Afe(t){const e=t.detail.annotation;if(!Mh(e))return;const r=kfe(e),n=Vfe(r,e);if(!n.length)return;const i=R2(e.data.contour.polyline,r),o=Ffe(r,i,n);if(!o)return;const{targetAnnotation:a,targetPolyline:s,isContourHole:c}=o;if(c){const{contourHoleProcessingEnabled:l=!1}=t.detail;if(!l)return;ZN(r,a,e)}else Bfe(r,a,s,e,i)}function JN(t,e=!1){const r="PlanarFreehandContourSegmentationTool",n=Cn(t.id,t.renderingEngineId);let i;return n.hasTool(r)?n.getToolOptions(r)||(i=`Tool ${r} must be in active/passive state`):i=`Tool ${r} not added to ${n.id} toolGroup`,i&&!e&&console.warn(i),!i}function kfe(t){const e=YN(t);return e.find(n=>JN(n,!0))??e[0]}function R2(t,e){const r=t.length,n=new Array(r);for(let i=0;ii.annotationUID&&i.annotationUID!==r&&Mh(i)&&vN(i,e)&&t.isReferenceViewable(i.metadata))}function Ffe(t,e,r){const n=r0(e);for(let i=0;i{const n=R2(r.data.contour.polyline,t);return{annotation:r,polyline:n}})}function Bfe(t,e,r,n,i){var y;if(!wce(Jf)){console.warn(`${Jf} is not registered in cornerstone`);return}if(!JN(t))return;const o=i[0],a=gl(r,o),s=Ufe(t,e),c=new Set(s),l=new Map,f=(w,C)=>{let S=l.get(w);S||(S=[],l.set(w,S)),S.push(C),c.delete(C)},u=[];if(a){const w=IN(r,i);u.push(w),Array.from(c.keys()).forEach(C=>f(w,C))}else ON(r,i).forEach(C=>{u.push(C),Array.from(c.keys()).forEach(S=>{YC(C,S.polyline)&&(f(C,S),c.delete(S))})});Array.from(l.values()).forEach(w=>w.forEach(C=>LC(C.annotation)));const{element:d}=t,h=re(d),{metadata:g,data:p}=e,{handles:v,segmentation:x}=p,{textBox:m}=v;Ot(n.annotationUID),Ot(e.annotationUID);for(let w=0;wNC(_,E.annotation))}Gfe(h,e,n)}function Gfe(t,e,r){const{viewport:n}=t,{element:i}=n,o=new Set([Jf,e.metadata.toolName,r.metadata.toolName]);for(const a of o.values()){const s=He(i,a);pe(s)}return new Promise(a=>window.requestAnimationFrame(a))}const{PointsManager:lf}=Yt,tE=.2;function $p(t){if(!t.annotation)return;const{isInterpolationUpdate:e,annotation:r}=t;queueMicrotask(()=>{try{e&&(r.isInterpolationUpdate=!0,r.autoGenerated=!1),Wfe(t)}finally{e&&(r.autoGenerated=!0)}})}function Wfe(t){const{annotation:e}=t;Pfe(e);const{interpolationData:r,interpolationList:n}=_fe(e,t)||{};if(!r||!n)return;const i={toolName:e.metadata.toolName,toolType:e.metadata.toolName,viewport:t.viewport};for(let l=0;ls.x.length,n)})}function $fe(t,e,r,n,i,o,a){const[s,c]=n,l=(r-s)/(c-s),f=i.get(s)[0],u=i.get(c)[0],d=Kfe(t,e,l,o),h=l>.5?u:f,g=Mfe(d);i.has(r)?Hfe(d,g,r,h,a):jfe(d,g,r,h,a)}function jfe(t,e,r,n,i){var f;const o=t.points,{viewport:a}=i,s=XN(o,e,n),c=a.getViewReference({sliceIndex:r});if(!c)throw new Error(`Can't find slice ${r}`);Object.assign(s.metadata,c),Ut(s,a.element),(f=n.onInterpolationComplete)==null||f.call(n,s,n);const{parentAnnotationUID:l}=n;if(l){const u=On(l),d=QN(u,r,i);ZN(a,d,s)}}function QN(t,e,r){const{viewport:n}=r,i=_t(t.metadata.toolName,n.element);for(let o=0;o!f.autoGenerated)||(s=o||s===n||c.forEach(l=>{l.autoGenerated&&(Ot(l.annotationUID),a.push(l))});if(a.length){const s={annotations:a,element:t.viewport.element,viewportId:t.viewport.id,renderingEngineId:t.viewport.getRenderingEngine().id};De(t.viewport.element,F.INTERPOLATED_ANNOTATIONS_REMOVED,s)}if(i>=0&&o{var h;const r=e.detail.annotation;if(!(r!=null&&r.metadata))return;const{toolName:n,originalToolName:i}=r.metadata;if(!Yi.toolNames.includes(n)&&!Yi.toolNames.includes(i))return;const o=jp(r);if(!o){console.warn("Unable to find viewport for",r);return}const a=oy(o),s={viewport:o,sliceData:a,annotation:r,interpolationUID:r.interpolationUID},c=!!r.interpolationUID;if(r.autoGenerated=!1,c){lE(s),$p(s);return}const l=[{key:"segmentIndex",value:r.data.segmentation.segmentIndex,parentKey:g=>g.data.segmentation},{key:"viewPlaneNormal",value:r.metadata.viewPlaneNormal,parentKey:g=>g.metadata},{key:"viewUp",value:r.metadata.viewUp,parentKey:g=>g.metadata}];let f=Tfe(s,l);const{sliceIndex:u}=r.metadata,d=new Set;f.forEach(g=>{if(g.interpolationCompleted||g.metadata.sliceIndex===u){const{interpolationUID:p}=g;d.add(p)}}),f=f.filter(g=>!d.has(g.interpolationUID)),r.interpolationUID=((h=f[0])==null?void 0:h.interpolationUID)||Jfe(),s.interpolationUID=r.interpolationUID,$p(s)},Yi.handleAnnotationUpdate=e=>{const r=e.detail.annotation,{changeType:n=Bn.HandlesUpdated}=e.detail;if(!(r!=null&&r.metadata))return;const{toolName:i,originalToolName:o}=r.metadata;if(!Yi.toolNames.includes(i)&&!Yi.toolNames.includes(o)||!Zfe.includes(n))return;const a=jp(r);if(!a){console.warn("Unable to find matching viewport for annotation interpolation",r);return}r.autoGenerated&&(n0(r),r.autoGenerated=!1);const s=oy(a),c={viewport:a,sliceData:s,annotation:r,interpolationUID:r.interpolationUID,isInterpolationUpdate:n===Bn.InterpolationUpdated};$p(c)},Yi.handleAnnotationDelete=e=>{const r=e.detail.annotation;if(!(r!=null&&r.metadata))return;const{toolName:n}=r.metadata;if(!Yi.toolNames.includes(n)||r.autoGenerated)return;const i=jp(r);if(!i){console.warn("No viewport, can't delete interpolated results",r);return}const o=oy(i),a={viewport:i,sliceData:o,annotation:r,interpolationUID:r.interpolationUID};r.autoGenerated=!1,lE(a)};let ra=Yi;function oy(t){return{numberOfSlices:t.getNumberOfSlices(),imageIndex:t.getCurrentImageIdIndex()}}function eP(t){t.forEach(e=>{const r=Wn(e);if(!r){console.warn(`ToolGroup not available for ${e}`);return}r.getViewportsInfo().forEach(i=>{const{renderingEngineId:o,viewportId:a}=i,s=gr(o);if(!s){console.warn(`RenderingEngine not available for ${o}`);return}const c=s.getViewport(a);L0(c.element)})})}function qd(t){return Xt.getActiveSegmentation(t)}function tP(t,e){return Xt.getSegmentationRepresentationVisibility(t,e)}function No(t){const e=Ct(t);if(e){const r=Object.keys(e.segments).find(n=>e.segments[n].active);return r?Number(r):void 0}}function Qfe(t,e){const r=Ct(t);if(!r)throw new Error(`No segmentation state found for ${t}`);const{segments:n}=r;return n[e].locked}function ede(t,e,r=!0){const n=Ct(t);if(!n)throw new Error(`No segmentation state found for ${t}`);const{segments:i}=n;i[e].locked=r,Di(t)}function Dl(t){const e=Ct(t);if(!e)throw new Error(`No segmentation state found for ${t}`);const{segments:r}=e;return Object.keys(r).filter(i=>r[i].locked).map(i=>parseInt(i))}const tde=Object.freeze(Object.defineProperty({__proto__:null,getLockedSegmentIndices:Dl,isSegmentIndexLocked:Qfe,setSegmentIndexLocked:ede},Symbol.toStringTag,{value:"Module"}));function nP(t,e){const r=w2(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}class lS extends wfe{constructor(e,r){var n;super(e,r),(n=this.configuration.interpolation)!=null&&n.enabled&&ra.addTool(this.getToolName())}isContourSegmentationTool(){return!0}createAnnotation(e){const r=e.detail,{element:n}=r,i=re(n);if(!i)return;const{viewport:o}=i,a=super.createAnnotation(e);if(!this.isContourSegmentationTool())return a;const s=qd(o.id);if(!s)throw new Error("No active segmentation detected, create one before using scissors tool");if(!s.representationData.Contour)throw new Error("A contour segmentation must be active");const{segmentationId:c}=s,l=No(c);return Zr(a,{data:{segmentation:{segmentationId:c,segmentIndex:l}}})}addAnnotation(e,r){const n=super.addAnnotation(e,r);return this.isContourSegmentationTool()&&n0(e),n}cancelAnnotation(e){this.isContourSegmentationTool()&&T2(e),super.cancelAnnotation(e)}getAnnotationStyle(e){const r=super.getAnnotationStyle(e);if(!this.isContourSegmentationTool())return r;const n=this._getContourSegmentationStyle(e);return Zr(r,n)}renderAnnotationInstance(e){const{annotation:r}=e,{invalidated:n}=r,i=super.renderAnnotationInstance(e);if(n&&this.isContourSegmentationTool()){const{segmentationId:o}=r.data.segmentation;Ei(o);const s=R0(o).map(c=>Cn(c).id);eP(s)}return i}_getContourSegmentationStyle(e){const r=e.annotation,{segmentationId:n,segmentIndex:i}=r.data.segmentation,{viewportId:o}=e.styleSpecifier,a=Ti(o,{segmentationId:n});if(!(a!=null&&a.length))return{};a.length>1?a.find(_=>_.segmentationId===n&&_.type===Ge.Contour):a[0];const{autoGenerated:s}=r,l=Dl(n).includes(i),f=ts(e.styleSpecifier.viewportId,n,i),u=tP(o,{segmentationId:n,type:Ge.Contour}),d=qd(o),h=(d==null?void 0:d.segmentationId)===n,p=Fi.getStyle({viewportId:o,segmentationId:n,type:Ge.Contour,segmentIndex:i});let v=1,x,m=1,y=0;s?(v=p.outlineWidthAutoGenerated??v,x=p.outlineDashAutoGenerated??x,m=p.outlineOpacity??m,y=p.fillAlphaAutoGenerated??y):h?(v=p.outlineWidth??v,x=p.outlineDash??x,m=p.outlineOpacity??m,y=p.fillAlpha??y):(v=p.outlineWidthInactive??v,x=p.outlineDashInactive??x,m=p.outlineOpacityInactive??m,y=p.fillAlphaInactive??y),No(n)===i&&(v+=p.activeSegmentOutlineWidthDelta),v=p.renderOutline?v:0,y=p.renderFill?y:0;const w=`rgba(${f[0]}, ${f[1]}, ${f[2]}, ${m})`,C=`rgb(${f[0]}, ${f[1]}, ${f[2]})`,T=!nP(o,{segmentationId:n,type:Ge.Contour}).has(i);return{color:w,fillColor:C,lineWidth:v,fillOpacity:y,lineDash:x,textbox:{color:w},visibility:u&&T,locked:l}}}function bl(t,e,r){return t==="CT"?"HU":t==="PT"?nde(e,r):""}function nde(t,e){if(!e.isPreScaled)return"raw";if(e.isSuvScaled)return"SUV";const r=Pe("generalSeriesModule",t);if((r==null?void 0:r.modality)==="PT"){const n=Pe("petSeriesModule",t);return(n==null?void 0:n.units)||"unitless"}return"unknown"}const{pointCanProjectOnLine:uE}=lc,{EPSILON:rde}=Sl,ide=1-rde;class vl extends lS{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,shadow:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:vr.Shift,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,makeClockWise:!0,subPixelResolution:4,smoothing:{smoothOnAdd:!1,smoothOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},interpolation:{enabled:!1,onInterpolationComplete:null},decimate:{enabled:!1,epsilon:.1},displayOnePointAsCrosshairs:!1,calculateStats:!0,getTextLines:ode,statsCalculator:Ya}}){super(e,r),this.isDrawing=!1,this.isEditingClosed=!1,this.isEditingOpen=!1,this.addNewAnnotation=n=>{const i=n.detail,{element:o}=i,a=this.createAnnotation(n);this.addAnnotation(a,o);const s=He(o,this.getToolName());return this.activateDraw(n,a,s),n.preventDefault(),pe(s),a},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,c=He(s,this.getToolName());this.activateOpenContourEndEdit(n,i,c,o)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o,s=He(a,this.getToolName());i.data.contour.closed?this.activateClosedContourEdit(n,i,s):this.activateOpenContourEdit(n,i,s),n.preventDefault()},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{polyline:l}=i.data.contour;let f=c.worldToCanvas(l[0]);for(let h=1;h{const i=this.isDrawing,o=this.isEditingOpen,a=this.isEditingClosed;i?this.cancelDrawing(n):o?this.cancelOpenContourEdit(n):a&&this.cancelClosedContourEdit(n)},this._calculateCachedStats=(n,i,o,a)=>{const{data:s}=n,{cachedStats:c}=s,{polyline:l,closed:f}=s.contour,u=Object.keys(c);for(let d=0;di.worldToCanvas(C)),m={isPreScaled:os(i,h),isSuvScaled:this.isSuvScaled(i,h,n.metadata.referencedImageId)},y=bl(v.Modality,n.metadata.referencedImageId,m),w=Bi(g,()=>{const C=s.contour.polyline,S=C.length,T=new Array(S);for(let A=0;A{const{data:s}=n,c=this.getTargetId(i),l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:o.viewport.id},f=this.getLinkedTextBoxStyle(l,n);if(!f.visibility)return;const u=this.configuration.getTextLines(s,c);if(!u||u.length===0)return;const d=s.contour.polyline.map(w=>i.worldToCanvas(w));if(!s.handles.textBox.hasMoved){const w=$i(d);s.handles.textBox.worldPosition=i.canvasToWorld(w)}const h=i.worldToCanvas(s.handles.textBox.worldPosition),p=ei(a,n.annotationUID??"","1",u,h,d,{},f),{x:v,y:x,width:m,height:y}=p;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([v,x]),topRight:i.canvasToWorld([v+m,x]),bottomLeft:i.canvasToWorld([v,x+y]),bottomRight:i.canvasToWorld([v+m,x+y])}},T0e(this),R0e(this),G0e(this),efe(this),rfe(this),pfe(this),this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,r){if(!r||!r.length)return;const n=re(e),{viewport:i}=n;let o;if(i instanceof an){const a=i.getCamera(),{spacingInNormalDirection:s}=E0(i,a);o=this.filterAnnotationsWithinSlice(r,a,s)}else o=D2(i,r);return o}filterAnnotationsWithinSlice(e,r,n){const{viewPlaneNormal:i}=r,o=e.filter(l=>{const f=l.metadata.viewPlaneNormal,u=Math.abs(je(i,f))>ide;return f&&u});if(!o.length)return[];const a=n/2,{focalPoint:s}=r,c=[];for(const l of o){const u=l.data.contour.polyline[0];if(!l.isVisible)continue;const d=we();Qt(d,s,u);const h=je(d,i);Math.abs(h){a.data.handles.points.length=0};return Zr(n,{data:{contour:{polyline:[[...r]]},label:"",cachedStats:{}},onInterpolationComplete:i})}getAnnotationStyle(e){return super.getAnnotationStyle(e)}renderAnnotationInstance(e){const{enabledElement:r,targetId:n,svgDrawingHelper:i}=e,o=e.annotation;let a=!1;const{viewport:s,renderingEngine:c}=r,l=this.isDrawing,f=this.isEditingOpen,u=this.isEditingClosed;if(!(l||f||u))this.configuration.displayOnePointAsCrosshairs&&o.data.contour.polyline.length===1?this.renderPointContourWithMarker(r,i,o):this.renderContour(r,i,o);else{const d=this.commonData.annotation.annotationUID;if(o.annotationUID===d)if(l)this.renderContourBeingDrawn(r,i,o);else if(u)this.renderClosedContourBeingEdited(r,i,o);else if(f)this.renderOpenContourBeingEdited(r,i,o);else throw new Error(`Unknown ${this.getToolName()} annotation rendering state`);else this.configuration.displayOnePointAsCrosshairs&&o.data.contour.polyline.length===1?this.renderPointContourWithMarker(r,i,o):this.renderContour(r,i,o);a=!0}if(this.configuration.calculateStats)return this._calculateStatsIfActive(o,n,s,c,r),this._renderStats(o,s,r,i),a}_calculateStatsIfActive(e,r,n,i,o){var s,c,l;const a=(s=this.commonData)==null?void 0:s.annotation.annotationUID;if(!(e.annotationUID===a&&!((c=this.commonData)!=null&&c.movingTextBox))&&!((l=this.commonData)!=null&&l.movingTextBox)){const{data:f}=e;!f.cachedStats[r]||f.cachedStats[r].areaUnit==null?(f.cachedStats[r]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(e,n,i,o)):e.invalidated&&this._throttledCalculateCachedStats(e,n,i,o)}}updateClosedCachedStats({viewport:e,points:r,imageData:n,metadata:i,cachedStats:o,targetId:a,modalityUnit:s,canvasCoordinates:c,calibratedScale:l}){var ne,Q,ee;const{scale:f,areaUnit:u,units:d}=l,{voxelManager:h}=e.getImageData(),g=c[0],p=e.canvasToWorld(g),v=e.canvasToWorld([g[0]+1,g[1]]),x=e.canvasToWorld([g[0],g[1]+1]),m=Cr(p,v),y=Cr(p,x),w=Gn(n,r[0]);w[0]=Math.floor(w[0]),w[1]=Math.floor(w[1]),w[2]=Math.floor(w[2]);let C=w[0],S=w[0],T=w[1],_=w[1],E=w[2],D=w[2];for(let de=1;de{let le=!0;const k=e.worldToCanvas(de);return k[1]!=N&&($=0,N=k[1],V=NN(c,k,[P[0],k[1]]),V.sort(function(O){return function(B,U){return B[O]===U[O]?0:B[O]V[0][0]&&(V.shift(),$++),$%2===0&&(le=!1),le},boundsIJK:A,returnPoints:this.configuration.storePointData}),Y=this.configuration.statsCalculator.getStatistics();o[a]={Modality:i.Modality,area:I,perimeter:R3(c,closed)/f,mean:(ne=Y.mean)==null?void 0:ne.value,max:(Q=Y.max)==null?void 0:Q.value,stdDev:(ee=Y.stdDev)==null?void 0:ee.value,statsArray:Y.array,pointsInShape:H,areaUnit:u,modalityUnit:s,unit:d}}updateOpenCachedStats({targetId:e,metadata:r,canvasCoordinates:n,cachedStats:i,modalityUnit:o,calibratedScale:a}){const{scale:s,units:c}=a;i[e]={Modality:r.Modality,length:R3(n,!1)/s,modalityUnit:o,getPixelValueUnitunit:c}}}function ode(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,length:a,perimeter:s,max:c,isEmptyArea:l,unit:f,areaUnit:u,modalityUnit:d}=r||{},h=[];if(n){const g=l?"Area: Oblique not supported":`Area: ${yt(n)} ${u}`;h.push(g)}return i&&h.push(`Mean: ${yt(i)} ${d}`),Number.isFinite(c)&&h.push(`Max: ${yt(c)} ${d}`),o&&h.push(`Std Dev: ${yt(o)} ${d}`),s&&h.push(`Perimeter: ${yt(s)} ${f}`),a&&h.push(`${yt(a)} ${f}`),h}vl.toolName="PlanarFreehandROI";class Za extends vl{constructor(e){const r=Zr({configuration:{calculateStats:!1,allowOpenContours:!1}},e);super(r)}isContourSegmentationTool(){return!0}renderAnnotationInstance(e){const r=e.annotation,{invalidated:n}=r,i=super.renderAnnotationInstance(e);if(n){const{segmentationId:o}=r.data.segmentation;Ei(o)}return i}}Za.toolName="PlanarFreehandContourSegmentationTool";function ade(t,e,r){const n=new Map;for(const[i,o]of t)for(const a of o){const{points:s}=a,{lineSegments:c,linesNumberOfPoints:l}=sde(a);for(let f=0;f{const{numberOfCells:e,lines:r}=t,n=[],i=[];for(let o=0;o({id:s.segmentIndex.toString(),points:s.data.points,polys:s.data.polys,segmentIndex:s.segmentIndex})),o=await xN(i,n);return wN(o)}async function ude(t,e={}){var u;if(!e.viewport)throw new Error("Viewport is required to compute contour from surface");const{viewport:r}=e,n=(u=e.segmentIndices)!=null&&u.length?e.segmentIndices:ga(t),i=new Map,o=new Map,s=Ct(t).representationData.Surface,c=[];s.geometryIds.forEach((d,h)=>{var g;if(n.includes(h)){i.set(h,d);const p=(g=_e.getGeometry(d))==null?void 0:g.data;p&&c.push({id:d,points:p.points,polys:p.polys,segmentIndex:h})}}),i.forEach((d,h)=>{o.set(d,h)});const l=await xN(c,r);return wN(l)}function rP(t,e={}){return GC(t,Ge.Contour,()=>cde(t,e),()=>{})}function fde(t,e,r=!1){const n=Ct(e),{annotationUIDsMap:i}=n.representationData.Contour;i.forEach(o=>{o.forEach(a=>{Ot(a)})})}let ay=!1;function dde(t,e,r=!1){const n=Xn(t);if(!n)return;const{viewport:i}=n;r&&(fde(t,e),i.render())}async function hde(t,e){var o;const{segmentationId:r}=e,n=Ct(r);if(!n)return;let i=n.representationData[Ge.Contour];!i&&C2(r,Ge.Contour)&&!ay&&(ay=!0,i=await rP(r,{viewport:t}),ay=!1),i&&(o=i.geometryIds)!=null&&o.length&&Jle(t,i.geometryIds,i.annotationUIDsMap,e)}const iP={render:hde,removeRepresentation:dde};function Gi(t,e){return Xt.getCurrentLabelmapImageIdForViewport(t,e)}const{uuidv4:oP}=Yt;async function gde(t,e,r){const n=re(t),{renderingEngine:i,viewport:o}=n,{id:a}=o,s=!0,c=!1,l=!0;if(o instanceof Mn){const u=pde(e,r);_e.getVolume(u)||await mde(e);const d=[{volumeId:u,visibility:s,blendMode:$u.MAXIMUM_INTENSITY_BLEND,representationUID:`${r}-${Ge.Labelmap}`}];await Kne(i,d,[a],c,l)}else{const u=[{imageId:Gi(o.id,r),representationUID:`${r}-${Ge.Labelmap}`}];await qne(i,u,[a])}}function pde(t,e){let{volumeId:r}=t;if(!r){r=oP();const n=Ct(e);n.representationData.Labelmap={...n.representationData.Labelmap,volumeId:r},t.volumeId=r,Di(e)}return r}async function mde(t){const e=t;if(!(e.imageIds.length>0))throw new Error("cannot create labelmap, no imageIds found for the volume labelmap");return await oC(t.volumeId||oP(),e.imageIds)}function vde(t,e){const r=re(t),{viewport:n}=r;n.removeActors([mle(n.id,e)])}function yde(t,e){Xt.setActiveSegmentation(t,e)}function Il(t){return qd(t)}function xde(t,e,r=!1){yde(t,e)}const wde=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentation:Il,setActiveSegmentation:xde},Symbol.toStringTag,{value:"Module"})),aP=cc(),Pu=(t,e)=>{De(t,Se.WEB_WORKER_PROGRESS,{progress:e,type:b0.POLYSEG_CONTOUR_TO_LABELMAP})};async function Cde(t,e={}){var p;const r=e.viewport,n=r.getVolumeId();if(!yR(r))throw new Error("No imageIds found, labelmap computation from contour requires viewports with imageIds");const o=wn(),a=aC(n,{volumeId:o}),{dimensions:s,origin:c,direction:l,spacing:f,voxelManager:u}=a,{segmentIndices:d,annotationUIDsInSegmentMap:h}=sP(t,e);Pu(Ce,0);const g=await aP.executeTask("polySeg","convertContourToVolumeLabelmap",{segmentIndices:d,dimensions:s,scalarData:(p=u.getCompleteScalarDataArray)==null?void 0:p.call(u),origin:c,direction:l,spacing:f,annotationUIDsInSegmentMap:h},{callbacks:[v=>{Pu(Ce,v)}]});return Pu(Ce,100),u.setCompleteScalarDataArray(g),a.modified(),{volumeId:a.volumeId}}async function Sde(t,e={}){if(!e.viewport)throw new Error("No viewport provided, labelmap computation from contour requires viewports");const n=e.viewport.getImageIds();if(!n)throw new Error("No imageIds found, labelmap computation from contour requires viewports with imageIds");n.forEach(u=>{if(!_e.getImageLoadObject(u))throw new Error("ImageIds must be cached before converting contour to labelmap")});const o=(await MM(n)).map(u=>u.imageId),{segmentIndices:a,annotationUIDsInSegmentMap:s}=sP(t,e),c=new Map;o.forEach((u,d)=>{const h=_e.getImage(u),g=Pe(si.IMAGE_PLANE,u);let{columnCosines:p,rowCosines:v,rowPixelSpacing:x,columnPixelSpacing:m,imagePositionPatient:y}=g;p=p??[0,1,0],v=v??[1,0,0],x=x??1,m=m??1,y=y??[0,0,0];const w=Ye(v[0],v[1],v[2]),C=Ye(p[0],p[1],p[2]),S=we();Kt(S,w,C);const T=[...w,...C,...S],_=[x,m,1],E=y;c.set(n[d],{direction:T,spacing:_,origin:E,scalarData:h.voxelManager.getScalarData(),imageId:u,dimensions:[h.width,h.height,1]})}),Pu(Ce,0);const l=await aP.executeTask("polySeg","convertContourToStackLabelmap",{segmentationsInfo:c,annotationUIDsInSegmentMap:s,segmentIndices:a},{callbacks:[u=>{Pu(Ce,u)}]});Pu(Ce,100);const f=[];return l.forEach(({scalarData:u},d)=>{var v,x;const h=c.get(d),{imageId:g}=h,p=_e.getImage(g);p.voxelManager.getScalarData().set(u),(x=(v=p.imageFrame)==null?void 0:v.pixelData)==null||x.set(u),f.push(g)}),{imageIds:f}}function sP(t,e={}){var o;const r=t.annotationUIDsMap,n=(o=e.segmentIndices)!=null&&o.length?e.segmentIndices:Array.from(r.keys()),i=new Map;return n.forEach(a=>{const s=r.get(a);let c=Array.from(s);c=c.filter(f=>!On(f).parentAnnotationUID);const l=c.map(f=>{var h;const u=On(f),d=(h=u.childAnnotationUIDs)==null?void 0:h.length;return{polyline:u.data.contour.polyline,referencedImageId:u.metadata.referencedImageId,holesPolyline:d&&u.childAnnotationUIDs.map(g=>On(g).data.contour.polyline)}});i.set(a,l)}),{segmentIndices:n,annotationUIDsInSegmentMap:i}}const Tde=cc(),sy=(t,e)=>{De(t,Se.WEB_WORKER_PROGRESS,{progress:e,type:b0.POLYSEG_SURFACE_TO_LABELMAP})};async function _de(t,e){const{geometryIds:r}=t;if(!(r!=null&&r.size))throw new Error("No geometry IDs found for surface representation");const n=new Map;r.forEach((f,u)=>{const h=_e.getGeometry(f).data,g=h.points,p=h.polys;n.set(u,{points:g,polys:p})});const{dimensions:i,direction:o,origin:a,spacing:s,voxelManager:c}=e;sy(Ce,0);const l=await Tde.executeTask("polySeg","convertSurfacesToVolumeLabelmap",{segmentsInfo:n,dimensions:i,spacing:s,direction:o,origin:a},{callbacks:[f=>{sy(Ce,f)}]});return sy(Ce,100),c.setCompleteScalarDataArray(l),e.modified(),{volumeId:e.volumeId}}function Ede(t,e){const{segmentationId:r,config:n}=e,i={colorLUTIndex:Dde(n)};Xt.addSegmentationRepresentation(t,r,e.type,i),e.type===Ge.Contour&&pe([t]),Di(r)}function Dde(t){const{colorLUTOrIndex:e}=t||{},r=typeof e=="number",n=r?M0(e):zC,i=r?e:WC();return r||$C(n,i),i}function P0(t,e){e.map(r=>Ede(t,r))}function cP(t,e){return P0(t,e.map(r=>({...r,type:Ge.Contour})))}function bde(t){const e={};for(const[r,n]of Object.entries(t))e[r]=cP(r,n);return e}function lP(t,e){return P0(t,e.map(r=>({...r,type:Ge.Labelmap})))}function Ide(t){for(const[e,r]of Object.entries(t))lP(e,r.map(n=>({...n,type:Ge.Labelmap})))}function uP(t,e){return P0(t,e.map(r=>({...r,type:Ge.Surface})))}function Ode(t){const e={};for(const[r,n]of Object.entries(t))e[r]=uP(r,n);return e}async function Mde({segmentationId:t,viewportId:e,imageIds:r,options:n}){const i=Ct(t);if(n!=null&&n.removeOriginal){const o=i.representationData.Labelmap;_e.getVolume(o.volumeId)&&_e.removeVolumeLoadObject(o.volumeId),i.representationData.Labelmap={imageIds:r}}else i.representationData.Labelmap={...i.representationData.Labelmap,imageIds:r};await P0(e,[{segmentationId:t,type:Ge.Labelmap}]),Ce.addEventListenerOnce(F.SEGMENTATION_RENDERED,()=>Ei(t))}async function Rde({volumeId:t}){return{imageIds:_e.getVolume(t).imageIds}}function Lde({segmentationId:t,options:e}){const r=Ct(t);if(!r)return;const{volumeId:n}=r.representationData.Labelmap,i=_e.getVolume(n);return Mde({segmentationId:t,viewportId:e.viewportId,imageIds:i.imageIds,options:e})}async function Nde(t,e={}){var a;const r=(a=e.segmentIndices)!=null&&a.length?e.segmentIndices:ga(t);let n;const i=Ct(t),o=i.representationData;try{o.Contour?n=await Pde(t,{segmentIndices:r,...e}):o.Surface&&(n=await Ade(i.segmentationId,{segmentIndices:r,...e}))}catch(s){throw console.error(s),s}if(!n)throw new Error("Not enough data to convert to surface, currently only support converting volume labelmap to surface if available");return n}async function Pde(t,e={}){var c;const r=e.viewport instanceof an;if(r&&!e.viewport)throw new Error("Cannot compute labelmap from contour segmentation without providing the viewport");const n=(c=e.segmentIndices)!=null&&c.length?e.segmentIndices:ga(t),o=Ct(t).representationData.Contour;return await(r?Cde:Sde)(o,{segmentIndices:n,viewport:e.viewport})}async function Ade(t,e={}){var u;const{viewport:r}=e,n=r instanceof an,i=(u=e.segmentIndices)!=null&&u.length?e.segmentIndices:ga(t),o=Ct(t),a=new Map;if(o.representationData.Surface.geometryIds.forEach((d,h)=>{i.includes(h)&&a.set(h,d)}),n&&!r)throw new Error("Cannot compute labelmap from surface segmentation without providing the viewport");let c;if(n){const d=r.getVolumeId();c=await aC(d)}else{const d=e.viewport.getImageIds(),g=MM(d).map(p=>p.imageId);c=await oC("generatedSegmentationVolumeId",g)}const l=await _de({geometryIds:a},c);return n?l:await Rde({volumeId:c.volumeId})}async function fP(t,e={}){return GC(t,Ge.Labelmap,()=>Nde(t,e),()=>null,()=>{Xt.processLabelmapRepresentationAddition(e.viewport.id,t),setTimeout(()=>{Ei(t)},0)})}const cy=255,Zf=new Map;let ly=!1;function kde(t,e,r=!1){const n=Xn(t);if(Zf.forEach((o,a)=>{a.includes(e)&&Zf.delete(a)}),!n)return;const{viewport:i}=n;vde(i.element,e),r&&i.render()}async function Vde(t,e){const{segmentationId:r}=e,n=Ct(r);if(!n){console.warn("No segmentation found for segmentationId: ",r);return}let i=n.representationData[Ge.Labelmap],o=Ga(t.id,r);if(!i&&C2(r,Ge.Labelmap)&&!ly){if(ly=!0,i=await fP(r,{viewport:t}),!i)throw new Error(`No labelmap data found for segmentationId ${r}.`);ly=!1}if(i){if(t instanceof an)o||await dE(t,i,r),o=Ga(t.id,r);else{if(!Gi(t.id,r))return;o||await dE(t,i,r),o=Ga(t.id,r)}o&&Fde(t.id,o,e)}}function Fde(t,e,r){const{segmentationId:n}=r,{cfun:i,ofun:o}=r.config,{colorLUTIndex:a}=r,s=Il(t),c=(s==null?void 0:s.segmentationId)===n,l=Fi.getStyle({viewportId:t,type:Ge.Labelmap,segmentationId:n}),f=Fi.getRenderInactiveSegmentations(t),u=M0(a),d=Math.min(256,u.length),{outlineWidth:h,renderOutline:g,outlineOpacity:p,activeSegmentOutlineWidthDelta:v}=fE(l,c),x=nP(t,{segmentationId:n,type:Ge.Labelmap});for(let w=0;w_i().flatMap(r=>r.getViewports()),this._renderFlaggedSegmentations=()=>{this._throwIfDestroyed(),Array.from(this._needsRender).forEach(r=>{this._triggerRender(r)}),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}}renderSegmentationsForViewport(e){const r=e?[e]:this._getViewportIdsForSegmentation();this._setViewportsToBeRenderedNextFrame(r)}renderSegmentation(e){const r=this._getViewportIdsForSegmentation(e);this._setViewportsToBeRenderedNextFrame(r)}_getViewportIdsForSegmentation(e){const r=this._getAllViewports(),n=[];for(const i of r){const o=i.id;if(e){const a=Ti(o,{segmentationId:e});(a==null?void 0:a.length)>0&&n.push(o)}else{const a=Ti(o);(a==null?void 0:a.length)>0&&n.push(o)}}return n}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setViewportsToBeRenderedNextFrame(e){e.forEach(r=>{this._needsRender.add(r)}),this._render()}_render(){this._needsRender.size>0&&this._animationFrameSet===!1&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedSegmentations),this._animationFrameSet=!0)}_triggerRender(e){const r=Ti(e);if(!(r!=null&&r.length))return;const{viewport:n}=Xn(e)||{};if(!n)return;const i=[],o=r.map(a=>{a.type===Ge.Contour&&this._addPlanarFreeHandToolIfAbsent(n);const s=Bde[a.type];try{const c=s.render(n,a);i.push(c)}catch(c){console.error(c)}return Promise.resolve({segmentationId:a.segmentationId,type:a.type})});Promise.allSettled(o).then(a=>{const s=a.filter(f=>f.status==="fulfilled").map(f=>f.value);function c(f){const{element:u,viewportId:d}=f.detail;u.removeEventListener(Se.IMAGE_RENDERED,c),s.forEach(h=>{const g={viewportId:d,segmentationId:h.segmentationId,type:h.type};De(Ce,F.SEGMENTATION_RENDERED,{...g})})}n.element.addEventListener(Se.IMAGE_RENDERED,c),n.render()})}_addPlanarFreeHandToolIfAbsent(e){qg in ve.tools||pr(Za);const r=Cn(e.id);r.hasTool(qg)||(r.addTool(qg),r.setToolPassive(qg))}}function A0(t){hP.renderSegmentationsForViewport(t)}function L2(t){hP.renderSegmentation(t)}const hP=new Gde;function N2(){return Xt.getState().segmentations}function Wde(t){const{segmentationId:e,representation:r,config:n}=t,{type:i,data:o}=r,a=o?{...o}:{};if(!a)throw new Error("Segmentation representation data may not be undefined");i===Ge.Contour&&zde(a);const s=$de(n==null?void 0:n.segments,i,a);return n==null||delete n.segments,{segmentationId:e,label:(n==null?void 0:n.label)??null,cachedStats:(n==null?void 0:n.cachedStats)??{},segments:s,representationData:{[i]:{...a}}}}function zde(t){t.geometryIds=t.geometryIds??[],t.annotationUIDsMap=t.annotationUIDsMap??new Map}function $de(t,e,r){const n={};return t?Object.entries(t).forEach(([i,o])=>{n[i]={segmentIndex:Number(i),label:o.label??`Segment ${i}`,locked:o.locked??!1,cachedStats:o.cachedStats??{},active:o.active??!1}}):e===Ge.Surface?jde(n,r):n[1]=Hde(),n}function jde(t,e){const{geometryIds:r}=e;r.forEach(n=>{const i=_e.getGeometry(n);if(i!=null&&i.data){const{segmentIndex:o}=i.data;t[o]={segmentIndex:o}}})}function Hde(){return{segmentIndex:1,label:"Segment 1",locked:!1,cachedStats:{},active:!0}}function gP(t,e){const r=Xt;t.forEach(n=>{const i=Wde(n);r.addSegmentation(i),e||Di(i.segmentationId)})}function k0(t,e,r){return mP(t,e,r)}function pP(t,e,r){return mP(t,e,r)}function mP(t,e,r){const{segmentationId:n,type:i}=e;return Kde(t,n,i,r),Xt.removeSegmentationRepresentations(t,{segmentationId:n,type:i})}function vP(){Xt.getAllViewportSegmentationRepresentations().forEach(({viewportId:e,representations:r})=>{r.forEach(({segmentationId:n,type:i})=>{k0(e,{segmentationId:n,type:i})})}),Xt.resetState()}function yP(t,e,r){k0(t,{segmentationId:e,type:Ge.Labelmap},r)}function xP(t,e,r){k0(t,{segmentationId:e,type:Ge.Contour},r)}function wP(t,e,r){k0(t,{segmentationId:e,type:Ge.Surface},r)}function Kde(t,e,r,n){Ti(t,{segmentationId:e,type:r}).forEach(a=>{a.type===Ge.Labelmap?dP.removeRepresentation(t,a.segmentationId,n):a.type===Ge.Contour?iP.removeRepresentation(t,a.segmentationId,n):a.type===Ge.Surface&&mN.removeRepresentation(t,a.segmentationId,n)});const{viewport:o}=Xn(t)||{};o&&o.render()}function uS(t){const e=Xt;e.getAllViewportSegmentationRepresentations().filter(({representations:n})=>n.some(i=>i.segmentationId===t)).map(({viewportId:n})=>n).forEach(n=>{pP(n,{segmentationId:t})}),e.removeSegmentation(t),UC(t)}function CP(){const t=Xt;t.getState().segmentations.forEach(r=>{uS(r.segmentationId)}),t.resetState()}function qde(t){Xt.removeColorLUT(t)}function SP(t,e){return Xt.getState().viewportSegRepresentations[t].map(s=>(e&&s.type===e,Ct(s.segmentationId))).filter(s=>s!==void 0)}function TP(t,e){return Xt.updateLabelmapSegmentationImageReferences(t,e)}function _P(t,e){return Xt.getStackSegmentationImageIdsForViewport(t,e)}function Xde(){Xt.resetState()}const Yde=Object.freeze(Object.defineProperty({__proto__:null,addColorLUT:$C,addSegmentations:gP,destroy:Xde,getColorLUT:M0,getCurrentLabelmapImageIdForViewport:Gi,getNextColorLUTIndex:WC,getSegmentation:Ct,getSegmentationRepresentation:w2,getSegmentationRepresentations:Ti,getSegmentationRepresentationsBySegmentationId:ple,getSegmentations:N2,getStackSegmentationImageIdsForViewport:_P,getViewportIdsWithSegmentation:R0,getViewportSegmentations:SP,removeAllSegmentationRepresentations:vP,removeAllSegmentations:CP,removeColorLUT:qde,removeContourRepresentation:xP,removeLabelmapRepresentation:yP,removeSegmentation:uS,removeSegmentationRepresentation:k0,removeSurfaceRepresentation:wP,updateLabelmapSegmentationImageReferences:TP},Symbol.toStringTag,{value:"Module"})),Jde=function(t){const{segmentationId:e,modifiedSlicesToUse:r}=t.detail,{representationData:n}=Ct(e),i=R0(e),o=i.some(c=>{const{viewport:l}=Xn(c);return l instanceof an}),a=i.some(c=>{const{viewport:l}=Xn(c);return l instanceof ln}),s=o&&a;i.forEach(c=>{const{viewport:l}=Xn(c);l instanceof an&&Zde({modifiedSlicesToUse:s?[]:r,representationData:n,type:Ge.Labelmap}),l instanceof ln&&Qde({viewportIds:i,segmentationId:e})})};function Zde({modifiedSlicesToUse:t,representationData:e,type:r}){const n=_e.getVolume(e[r].volumeId);if(!n){console.warn("segmentation not found in cache");return}const{imageData:i,vtkOpenGLTexture:o}=n;let a;if((t==null?void 0:t.length)>0)a=t;else{const s=i.getDimensions()[2];a=[...Array(s).keys()]}a.forEach(s=>{o.setUpdatedFrame(s)}),i.modified()}function Qde({viewportIds:t,segmentationId:e}){t.forEach(r=>{let n=Ti(r,{segmentationId:e});n=n.filter(i=>i.type===Ge.Labelmap),n.forEach(i=>{if(i.segmentationId!==e)return;const o=Xn(r);if(!o)return;const{viewport:a}=o;if(a instanceof an)return;const s=Ga(r,e);if(!s)return;const c=s.actor.getMapper().getInputData(),l=Gi(r,e),f=_e.getImage(l);c.modified(),u2(c,f)})})}const EP=function(t){const{segmentationId:e}=t.detail,{representationData:r}=Ct(e);r.Labelmap&&Jde(t),L2(e)},DP=function(t){const{segmentationId:e}=t.detail;L2(e)},ehe=function(t){const{viewport:e}=re(t);e instanceof Mn||(t.addEventListener(Se.STACK_NEW_IMAGE,Xd),t.addEventListener(Se.IMAGE_RENDERED,Xd))},the=function(t){t.removeEventListener(Se.STACK_NEW_IMAGE,Xd),t.removeEventListener(Se.IMAGE_RENDERED,Xd)};function Xd(t){const e=t.detail,{viewportId:r,renderingEngineId:n}=e,{viewport:i}=dr(r,n),o=Ti(r);if(!(o!=null&&o.length))return;const a=o.filter(l=>l.type===Ge.Labelmap),s=i.getActors();a.forEach(l=>{const{segmentationId:f}=l;TP(r,f)});const c=a.map(l=>Ga(r,l.segmentationId)).filter(l=>l!==void 0);c.length&&(c.forEach(l=>{a.find(u=>Gi(r,u.segmentationId)===l.referencedId)||i.removeActors([l.uid])}),a.forEach(l=>{const{segmentationId:f}=l,u=i.getCurrentImageId(),d=Gi(r,f);if(!d)return;const h=_e.getImage(d);if(!h){console.warn("No derived image found in the cache for segmentation representation",l);return}const g=s.find(p=>p.referencedId===d);if(g){const p=g.actor.getMapper().getInputData();p.setDerivedImage?p.setDerivedImage(h):u2(p,h)}else{const{dimensions:p,spacing:v,direction:x}=i.getImageDataMetadata(h),m=_e.getImage(u)||{imageId:u},{origin:y}=i.getImageDataMetadata(m),w=y,C=tt.newInstance({name:"Pixels",numberOfComponents:1,values:[...h.voxelManager.getScalarData()]}),S=C0.newInstance();S.setDimensions(p[0],p[1],1),S.setSpacing(v),S.setDirection(x),S.setOrigin(w),S.getPointData().setScalars(C),S.modified(),i.addImages([{imageId:d,representationUID:`${f}-${Ge.Labelmap}`,callback:({imageActor:T})=>{T.getMapper().setInputData(S)}}]),A0(r);return}i.render(),t.type===Se.IMAGE_RENDERED&&i.element.removeEventListener(Se.IMAGE_RENDERED,Xd)}))}const bP={enable:ehe,disable:the};function nhe(t){const e=t.detail.annotation;T2(e)}function IP(t){const e=t.detail.annotation;Mh(e)&&Afe(t)}function mm(t){if(!t.detail.removed.length)return;_i().forEach(n=>{const o=n.getViewports().map(a=>a.id);pe(o)})}function OP(t){const{viewportId:e}=t.detail;pe([e])}function rhe(t){const e=t.detail.annotation;Mh(e)&&nhe(t)}const MP=function(t){L0(t.detail.element)},ihe=function(t){t.addEventListener(Se.IMAGE_RENDERED,MP)},ohe=function(t){t.removeEventListener(Se.IMAGE_RENDERED,MP)},RP={enable:ihe,disable:ohe},{Active:ahe}=Ft;function V0(t,e,r){if(ve.isInteractingWithTool)return!1;const{renderingEngineId:n,viewportId:i}=r.detail,o=Cn(i,n);if(!o)return!1;let a;const s=Object.keys(o.toolOptions);for(let c=0;c{for(const c of s){if(c.isLocked||!c.isVisible)continue;const l=a.getHandleNearImagePoint(t,c,r,i);if(l){o.push({tool:a,annotation:c,handle:l});break}}}),o}function Ah(t,e){const r=[];for(let n=0;n0&&r.push({tool:i,annotations:o}))}return r}function fS(t,e,r,n="mouse"){const i=n==="touch"?36:6,o=[];return e.forEach(({tool:a,annotations:s})=>{for(const c of s){if(c.isLocked||!c.isVisible)continue;if(a.isPointNearTool(t,c,r,i,n)){o.push({tool:a,annotation:c});break}}}),o}const{Active:she}=Ft;function P2(t){const{renderingEngineId:e,viewportId:r,event:n}=t.detail,i=N0(n)||O0.getModifierKey(),o=Cn(r,e);if(!o)return null;const a=Object.keys(o.toolOptions),s=o.getDefaultMousePrimary(),c=t.detail.buttons??(n==null?void 0:n.buttons)??s;for(let l=0;lh.mouseButton===c&&h.modifierKey===i);if(u.mode===she&&d)return o.getToolInstance(f)}}function i0(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Cn(i,n);if(!o)return[];const a=[],s=Object.keys(o.toolOptions);for(let c=0;cd.mouseButton===r);if(e.includes(f.mode)&&(!r||u)){const d=o.getToolInstance(l);a.push(d)}}return a}function che(t,e){var u;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Cn(i,n);if(!o)return r;const a=Object.keys(o.toolOptions),s=o.getDefaultMousePrimary(),c=t.detail.event,l=(c==null?void 0:c.buttons)??s,f=N0(c)||O0.getModifierKey();for(let d=0;dm.bindings.length&&m.bindings.some(y=>y.mouseButton===l&&y.modifierKey===f));x&&r.set(g,x)}return r}const{Active:lhe,Passive:uhe}=Ft;function fhe(t){if(ve.isInteractingWithTool)return!1;const e=t.detail,{element:r}=e,n=re(r),{canvas:i}=e.currentPoints;if(!n)return!1;const o=che(t,[lhe,uhe]),a=Array.from(o.keys()),s=Ah(r,a),c=fS(r,s,i);if(c.length>0){const{tool:l,annotation:f}=c[0],u=o.get(l);return(typeof u.method=="string"?l[u.method]:u.method).call(l,t,f),!0}return!1}const{Active:dhe,Passive:hhe}=Ft;function AP(t){if(ve.isInteractingWithTool)return;const e=P2(t);if(e&&typeof e.preMouseDownCallback=="function"&&e.preMouseDownCallback(t))return;const r=t.detail.event.buttons===1,n=i0(t,[dhe],t.detail.event.buttons),i=r?i0(t,[hhe]):void 0,o=[...n||[],...i||[]];if(fhe(t))return;const s=t.detail,{element:c}=s,l=Ah(c,o),f=s.currentPoints.canvas,u=PP(c,l,f,"mouse"),d=!!t.detail.event.shiftKey;if(u.length>0){const{tool:g,annotation:p,handle:v}=hE(u);gE(p.annotationUID,d),g.handleSelectedCallback(t,p,v,"Mouse");return}const h=fS(c,l,f,"mouse");if(h.length>0){const{tool:g,annotation:p}=hE(h);gE(p.annotationUID,d),g.toolSelectedCallback(t,p,"Mouse",f);return}e&&typeof e.postMouseDownCallback=="function"&&e.postMouseDownCallback(t)}function hE(t){if(t.length>1){const e=t.find(r=>{const n=!rr(r.annotation.annotationUID),i=Ur(r.annotation.annotationUID);return n&&i});if(e)return e}return t[0]}function gE(t,e=!1){e?Ih(t)?Vi(t,!1):Vi(t,!0,!0):Vi(t,!0,!1)}function kP(t){if(ve.isInteractingWithTool)return;const e=P2(t);if(e&&!ve.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"mouse");Vi(r.annotationUID)}}function VP(t){if(ve.isInteractingWithTool)return;const e=P2(t);!e||typeof e.mouseDragCallback!="function"||e.mouseDragCallback(t)}const{Active:ghe,Passive:phe}=Ft;function FP(t){if(ve.isInteractingWithTool||ve.isMultiPartToolActive)return;const e=i0(t,[ghe,phe]),r=t.detail,{element:n}=r,i=Ah(n,e),o=e.filter(s=>!i.some(l=>l.tool.getToolName()===s.getToolName()));let a=!1;for(const{tool:s,annotations:c}of i)typeof s.mouseMoveCallback=="function"&&(a=s.mouseMoveCallback(t,c)||a);o.forEach(s=>{typeof s.mouseMoveCallback=="function"&&s.mouseMoveCallback(t)}),a===!0&&L0(n),ve.isInteractingWithTool||bC(n,null)}const UP=V0.bind(null,"Mouse","mouseUpCallback");function BP(t){if(ve.isInteractingWithTool)return;t.detail.buttons=la.Wheel|(t.detail.event.buttons||0);const e=P2(t);if(e)return e.mouseWheelCallback(t)}const mhe=function(t){t.addEventListener(F.MOUSE_CLICK,LP),t.addEventListener(F.MOUSE_DOWN,AP),t.addEventListener(F.MOUSE_DOWN_ACTIVATE,kP),t.addEventListener(F.MOUSE_DOUBLE_CLICK,NP),t.addEventListener(F.MOUSE_DRAG,VP),t.addEventListener(F.MOUSE_MOVE,FP),t.addEventListener(F.MOUSE_UP,UP),t.addEventListener(F.MOUSE_WHEEL,BP)},vhe=function(t){t.removeEventListener(F.MOUSE_CLICK,LP),t.removeEventListener(F.MOUSE_DOWN,AP),t.removeEventListener(F.MOUSE_DOWN_ACTIVATE,kP),t.removeEventListener(F.MOUSE_DOUBLE_CLICK,NP),t.removeEventListener(F.MOUSE_DRAG,VP),t.removeEventListener(F.MOUSE_MOVE,FP),t.removeEventListener(F.MOUSE_UP,UP),t.removeEventListener(F.MOUSE_WHEEL,BP)},GP={enable:mhe,disable:vhe},{Active:yhe}=Ft;function WP(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=Ace(),i=O0.getModifierKey(),o=Cn(r,e);if(!o)return null;const a=Object.keys(o.toolOptions),s=o.getDefaultMousePrimary();for(let c=0;cd.mouseButton===(n??s)&&d.modifierKey===i))return o.getToolInstance(l)}}function xhe(t,e){var c;const r=new Map,{renderingEngineId:n,viewportId:i}=t.detail,o=Cn(i,n);if(!o)return r;const a=Object.keys(o.toolOptions),s=t.detail.key;for(let l=0;lp.bindings.some(v=>v.key===s));g&&r.set(u,g)}return r}function zP(t){const e=WP(t);if(e){const{renderingEngineId:n,viewportId:i}=t.detail,o=Cn(i,n),a=e.getToolName();Object.keys(o.toolOptions).includes(a)&&o.setViewportsCursorByToolName(a)}const r=xhe(t,[Ft.Active]);if(r!=null&&r.size){const{element:n}=t.detail;for(const[i,o]of[...r.entries()])(typeof o.method=="function"?o.method:i[o.method]).call(i,n,o,t)}}function $P(t){const e=WP(t);if(!e)return;const{renderingEngineId:r,viewportId:n}=t.detail,i=Cn(n,r);nN();const o=e.getToolName();Object.keys(i.toolOptions).includes(o)&&i.setViewportsCursorByToolName(o)}const whe=function(t){t.addEventListener(F.KEY_DOWN,zP),t.addEventListener(F.KEY_UP,$P)},Che=function(t){t.removeEventListener(F.KEY_DOWN,zP),t.removeEventListener(F.KEY_UP,$P)},jP={enable:whe,disable:Che},{Active:She,Passive:The,Enabled:_he}=Ft,HP=function(t){i0(t,[She,The,_he]).forEach(r=>{r.onCameraModified&&r.onCameraModified(t)})},Ehe=function(t){t.addEventListener(Se.CAMERA_MODIFIED,HP)},Dhe=function(t){t.removeEventListener(Se.CAMERA_MODIFIED,HP)},KP={enable:Ehe,disable:Dhe},{Active:bhe,Passive:Ihe,Enabled:Ohe}=Ft,qP=function(t){i0(t,[bhe,Ihe,Ohe]).forEach(r=>{r.onImageSpacingCalibrated&&r.onImageSpacingCalibrated(t)})},Mhe=function(t){t.addEventListener(Se.IMAGE_SPACING_CALIBRATED,qP)},Rhe=function(t){t.removeEventListener(Se.IMAGE_SPACING_CALIBRATED,qP)},XP={enable:Mhe,disable:Rhe},{Active:Lhe}=Ft;function dS(t){const{renderingEngineId:e,viewportId:r}=t.detail,n=t.detail.event,i=Cn(r,e);if(!i)return null;const o=Object.keys(i.toolOptions),a=Object.keys(n.touches).length,s=N0(n)||O0.getModifierKey(),c=i.getDefaultMousePrimary();for(let l=0;l(h.numTouchPoints===a||a===1&&h.mouseButton===c)&&h.modifierKey===s);if(u.mode===Lhe&&d)return i.getToolInstance(f)}}function pE(t,e,r){const{renderingEngineId:n,viewportId:i}=t.detail,o=Cn(i,n);if(!o)return[];const a=[],s=Object.keys(o.toolOptions);for(let c=0;cd.numTouchPoints===r);if(e.includes(f.mode)&&(!r||u)){const d=o.getToolInstance(l);a.push(d)}}return a}const{Active:Nhe,Passive:Phe}=Ft;function YP(t){if(ve.isInteractingWithTool)return;const e=dS(t);if(e&&typeof e.preTouchStartCallback=="function"&&e.preTouchStartCallback(t))return;const r=Object.keys(t.detail.event.touches).length===1,n=pE(t,[Nhe],Object.keys(t.detail.event.touches).length),i=r?pE(t,[Phe]):void 0,o=[...n||[],...i||[],e],a=t.detail,{element:s}=a,c=Ah(s,o),l=a.currentPoints.canvas,f=PP(s,c,l,"touch"),u=!1;if(f.length>0){const{tool:h,annotation:g,handle:p}=mE(f);vE(g.annotationUID,u),h.handleSelectedCallback(t,g,p,"Touch");return}const d=fS(s,c,l,"touch");if(d.length>0){const{tool:h,annotation:g}=mE(d);vE(g.annotationUID,u),h.toolSelectedCallback(t,g,"Touch");return}e&&typeof e.postTouchStartCallback=="function"&&e.postTouchStartCallback(t)}function mE(t){return t.length>1&&t.find(e=>!rr(e.annotation.annotationUID)&&Ur(e.annotation.annotationUID))||t[0]}function vE(t,e=!1){e?Ih(t)?Vi(t,!1):Vi(t,!0,!0):Vi(t,!0,!1)}function JP(t){if(ve.isInteractingWithTool)return;const e=dS(t);if(e&&!ve.isMultiPartToolActive&&e.addNewAnnotation){const r=e.addNewAnnotation(t,"touch");Vi(r.annotationUID)}}function ZP(t){if(ve.isInteractingWithTool)return;const e=dS(t);!e||typeof e.touchDragCallback!="function"||e.touchDragCallback(t)}const QP=V0.bind(null,"Touch","touchEndCallback"),Ahe=V0.bind(null,"Touch","touchTapCallback"),eA=V0.bind(null,"Touch","touchPressCallback"),khe=function(t){t.addEventListener(F.TOUCH_START,YP),t.addEventListener(F.TOUCH_START_ACTIVATE,JP),t.addEventListener(F.TOUCH_DRAG,ZP),t.addEventListener(F.TOUCH_END,QP),t.addEventListener(F.TOUCH_TAP,Ahe),t.addEventListener(F.TOUCH_PRESS,eA)},Vhe=function(t){t.removeEventListener(F.TOUCH_START,YP),t.removeEventListener(F.TOUCH_START_ACTIVATE,JP),t.removeEventListener(F.TOUCH_DRAG,ZP),t.removeEventListener(F.TOUCH_END,QP),t.removeEventListener(F.TOUCH_PRESS,eA)},tA={enable:khe,disable:Vhe},Fhe=function(){Ce.addEventListener(F.ANNOTATION_COMPLETED,ra.handleAnnotationCompleted),Ce.addEventListener(F.ANNOTATION_MODIFIED,ra.handleAnnotationUpdate),Ce.addEventListener(F.ANNOTATION_REMOVED,ra.handleAnnotationDelete)},Uhe=function(){Ce.removeEventListener(F.ANNOTATION_COMPLETED,ra.handleAnnotationCompleted),Ce.removeEventListener(F.ANNOTATION_MODIFIED,ra.handleAnnotationUpdate),Ce.removeEventListener(F.ANNOTATION_REMOVED,ra.handleAnnotationDelete)},nA={enable:Fhe,disable:Uhe},{Active:Bhe,Passive:Ghe,Enabled:Whe}=Ft,rA=function(t){i0(t,[Bhe,Ghe,Whe]).forEach(r=>{r.onResetCamera&&r.onResetCamera(t)})},zhe=function(t){t.addEventListener(Se.CAMERA_RESET,rA)},$he=function(t){t.removeEventListener(Se.CAMERA_RESET,rA)},iA={enable:zhe,disable:$he};function oA(t){const{element:e,viewportId:r}=t.detail,n=jhe(r);Hhe(e),Khe(n,e),oS.addViewportElement(r,e),AL.enable(e),eN.enable(e),JL.enable(e),O0.enable(e),bP.enable(e),RP.enable(e),KP.enable(e),XP.enable(e),iA.enable(e),GP.enable(e),jP.enable(e),tA.enable(e),ve.enabledElements.push(e)}function jhe(t){const e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg"),n=`svg-layer-${t}`;r.classList.add("svg-layer"),r.setAttribute("id",n),r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.style.width="100%",r.style.height="100%",r.style.pointerEvents="none",r.style.position="absolute";const i=document.createElementNS(e,"defs"),o=document.createElementNS(e,"filter"),a=document.createElementNS(e,"feOffset"),s=document.createElementNS(e,"feColorMatrix"),c=document.createElementNS(e,"feBlend");return o.setAttribute("id",`shadow-${n}`),o.setAttribute("filterUnits","userSpaceOnUse"),a.setAttribute("result","offOut"),a.setAttribute("in","SourceGraphic"),a.setAttribute("dx","0.5"),a.setAttribute("dy","0.5"),s.setAttribute("result","matrixOut"),s.setAttribute("in","offOut"),s.setAttribute("in2","matrix"),s.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),c.setAttribute("in","SourceGraphic"),c.setAttribute("in2","matrixOut"),c.setAttribute("mode","normal"),o.appendChild(a),o.appendChild(s),o.appendChild(c),i.appendChild(o),r.appendChild(i),r}function Hhe(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;ve.svgNodeCache[n]={}}function Khe(t,e){e.querySelector("div.viewport-element").appendChild(t)}function aA(t,e){const r=[];if(!e&&!t)throw new Error("At least one of renderingEngineId or viewportId should be given");for(let n=0;n{const e=re(t);aA(e.viewportId,e.renderingEngineId).forEach(n=>{n.remove(e)})},Yhe=t=>{const{renderingEngineId:e,viewportId:r}=re(t),n=Cn(r,e);n&&n.removeViewports(e,r)};function Jhe(t){const{viewportUid:e,renderingEngineUid:r}=t.dataset,n=`${e}:${r}`;delete ve.svgNodeCache[n]}function Zhe(t){const e=t.querySelector(`div.${qhe}`),r=e.querySelector("svg");r&&e.removeChild(r)}const Qhe=function(t){const e=ve.enabledElements.findIndex(r=>r===t);e>-1&&ve.enabledElements.splice(e,1)};function ege(t){const e=WN(t,[Ft.Active,Ft.Passive]),r=Ah(t,e);for(const{tool:n}of r){const i=n.cancel(t);if(i)return i}}class cA{constructor(e,r,n,i){this._viewportOptions={},this._onEvent=o=>{var l;if(this._ignoreFiredEvents===!0||!this._targetViewports.length)return;const a=this._eventSource==="element"?re(o.currentTarget):Xn((l=o.detail)==null?void 0:l.viewportId);if(!a)return;const{renderingEngineId:s,viewportId:c}=a;this._sourceViewports.find(f=>f.viewportId===c)&&this.fireEvent({renderingEngineId:s,viewportId:c},o)},this._enabled=!0,this._eventName=r,this._eventHandler=n,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=i||{},this._eventSource=this._options.eventSource||"element",this._auxiliaryEvents=this._options.auxiliaryEvents||[],this.id=e}isDisabled(){return!this._enabled||!this._hasSourceElements()}setOptions(e,r={}){this._viewportOptions[e]=r}setEnabled(e){this._enabled=e}getOptions(e){return this._viewportOptions[e]}add(e){this.addTarget(e),this.addSource(e)}addSource(e){if(Xg(this._sourceViewports,e))return;const{renderingEngineId:r,viewportId:n}=e,i=gr(r).getViewport(n);if(!i){console.warn(`Synchronizer.addSource: No viewport for ${r} ${n}`);return}(this._eventSource==="element"?i.element:Ce).addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEvents.forEach(({name:a,source:s})=>{(s==="element"?i.element:Ce).addEventListener(a,this._onEvent.bind(this))}),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){Xg(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}getSourceViewports(){return this._sourceViewports}getTargetViewports(){return this._targetViewports}destroy(){this._sourceViewports.forEach(e=>this.removeSource(e)),this._targetViewports.forEach(e=>this.removeTarget(e))}remove(e){this.removeTarget(e),this.removeSource(e)}removeSource(e){const r=yE(this._sourceViewports,e);if(r===-1)return;const n=this._eventSource==="element"?this.getViewportElement(e):Ce;this._sourceViewports.splice(r,1),n.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEvents.forEach(({name:i,source:o})=>{(o==="element"?this.getViewportElement(e):Ce).removeEventListener(i,this._eventHandler)}),this._updateDisableHandlers()}removeTarget(e){const r=yE(this._targetViewports,e);r!==-1&&(this._targetViewports.splice(r,1),this._updateDisableHandlers())}hasSourceViewport(e,r){return Xg(this._sourceViewports,{renderingEngineId:e,viewportId:r})}hasTargetViewport(e,r){return Xg(this._targetViewports,{renderingEngineId:e,viewportId:r})}fireEvent(e,r){if(this.isDisabled()||this._ignoreFiredEvents)return;this._ignoreFiredEvents=!0;const n=[];try{for(let i=0;i{this._ignoreFiredEvents=!1}):this._ignoreFiredEvents=!1}}_hasSourceElements(){return this._sourceViewports.length!==0}_updateDisableHandlers(){const e=tge(this._sourceViewports,this._targetViewports),r=this.remove.bind(this),n=i=>{r(i.detail.element)};e.forEach(i=>{const o=this.getEventSource(i);o.removeEventListener(Se.ELEMENT_DISABLED,n),o.addEventListener(Se.ELEMENT_DISABLED,n)})}getEventSource(e){return this._eventSource==="element"?this.getViewportElement(e):Ce}getViewportElement(e){const{renderingEngineId:r,viewportId:n}=e,i=gr(r);if(!i)throw new Error(`No RenderingEngine for Id: ${r}`);return i.getViewport(n).element}}function tge(t,e){const r=[],n=t.concat(e);for(let i=0;io.renderingEngineId===a.renderingEngineId&&o.viewportId===a.viewportId)||r.push(o)}return r}function yE(t,e){return t.findIndex(r=>e.renderingEngineId===r.renderingEngineId&&e.viewportId===r.viewportId)}function Xg(t,e){return t.some(r=>r.renderingEngineId===e.renderingEngineId&&r.viewportId===e.viewportId)}function Ol(t,e,r,n){if(ve.synchronizers.some(a=>a.id===t))throw new Error(`Synchronizer with id '${t}' already exists.`);const o=new cA(t,e,r,n);return ve.synchronizers.push(o),o}function nge(){for(;ve.synchronizers.length>0;)ve.synchronizers.pop().destroy()}function rge(t){return ve.synchronizers.find(e=>e.id===t)}function ige(){return ve.synchronizers}function oge(t){const e=ve.synchronizers.findIndex(r=>r.id===t);e>-1&&(ve.synchronizers[e].destroy(),ve.synchronizers.splice(e,1))}const age=Object.freeze(Object.defineProperty({__proto__:null,createSynchronizer:Ol,destroy:nge,destroySynchronizer:oge,getAllSynchronizers:ige,getSynchronizer:rge,getSynchronizersForViewport:aA},Symbol.toStringTag,{value:"Module"})),vm=function(t){const{viewportId:e}=t.detail;A0(e)};let N3=!1;function lA(t={}){N3||(cge(),lge(),N3=!0)}function sge(){uA(),fA(),sL(),Iae();const t=ha(),e=Xt;t.restoreAnnotations({}),e.resetState(),N3=!1}function cge(){uA();const t=Se.ELEMENT_ENABLED,e=Se.ELEMENT_DISABLED;Ce.addEventListener(t,oA),Ce.addEventListener(e,sA),nA.enable()}function uA(){const t=Se.ELEMENT_ENABLED,e=Se.ELEMENT_DISABLED;Ce.removeEventListener(t,oA),Ce.removeEventListener(e,sA),nA.disable()}function lge(){fA(),Ce.addEventListener(F.ANNOTATION_COMPLETED,IP),Ce.addEventListener(F.ANNOTATION_MODIFIED,OP),Ce.addEventListener(F.ANNOTATION_SELECTION_CHANGE,mm),Ce.addEventListener(F.ANNOTATION_SELECTION_CHANGE,mm),Ce.addEventListener(F.ANNOTATION_REMOVED,rhe),Ce.addEventListener(F.SEGMENTATION_MODIFIED,DP),Ce.addEventListener(F.SEGMENTATION_DATA_MODIFIED,EP),Ce.addEventListener(F.SEGMENTATION_REPRESENTATION_MODIFIED,vm),Ce.addEventListener(F.SEGMENTATION_REPRESENTATION_ADDED,vm)}function fA(){Ce.removeEventListener(F.ANNOTATION_COMPLETED,IP),Ce.removeEventListener(F.ANNOTATION_MODIFIED,OP),Ce.removeEventListener(F.ANNOTATION_SELECTION_CHANGE,mm),Ce.removeEventListener(F.ANNOTATION_SELECTION_CHANGE,mm),Ce.removeEventListener(F.SEGMENTATION_MODIFIED,DP),Ce.removeEventListener(F.SEGMENTATION_DATA_MODIFIED,EP),Ce.removeEventListener(F.SEGMENTATION_REPRESENTATION_MODIFIED,vm),Ce.removeEventListener(F.SEGMENTATION_REPRESENTATION_ADDED,vm)}const uge=Object.freeze(Object.defineProperty({__proto__:null,COLOR_LUT:zC},Symbol.toStringTag,{value:"Module"}));function fge(t,e,r,n){const{camera:i}=n.detail,o=gr(r.renderingEngineId);if(!o)throw new Error(`No RenderingEngine for Id: ${r.renderingEngineId}`);const a=o.getViewport(r.viewportId);a.setCamera(i),a.render()}const{CAMERA_MODIFIED:dge}=Se;function hge(t){return Ol(t,dge,fge)}function gge(t,e,r,n,i){const o=gr(r.renderingEngineId);if(!o)throw new Error(`No RenderingEngine for Id: ${r.renderingEngineId}`);const a=o.getViewport(r.viewportId),c=o.getViewport(e.viewportId).getViewPresentation(i);a.setViewPresentation(c),a.render()}const{CAMERA_MODIFIED:pge}=Se;function mge(t,e){return Ol(t,pge,gge,{viewPresentation:e})}function vge(t,e,r,n,i){const o=n.detail,{volumeId:a,range:s,invertStateChanged:c,invert:l,colormap:f}=o,u=gr(r.renderingEngineId);if(!u)throw new Error(`Rendering Engine does not exist: ${r.renderingEngineId}`);const d=u.getViewport(r.viewportId),h={voiRange:s};if(i!=null&&i.syncInvertState&&c&&(h.invert=l),i!=null&&i.syncColormap&&f&&(h.colormap=f),d instanceof Mn)d._actors&&d._actors.size>1?d.setProperties(h,a):d.setProperties(h);else if(d instanceof ln)d.setProperties(h);else throw new Error("Viewport type not supported.");d.render()}function yge(t,e){return e=Object.assign({syncInvertState:!0,syncColormap:!0},e),Ol(t,Se.VOI_MODIFIED,vge,{auxiliaryEvents:[{name:Se.COLORMAP_MODIFIED}],...e})}function xge(t,e,r){const n=gr(r.renderingEngineId);if(!n)throw new Error(`No RenderingEngine for Id: ${r.renderingEngineId}`);const i=t.getOptions(r.viewportId),o=n.getViewport(r.viewportId),a=n.getViewport(e.viewportId);if((i==null?void 0:i.syncZoom)!==!1){const s=a.getZoom();o.setZoom(s)}if((i==null?void 0:i.syncPan)!==!1){const s=a.getPan();o.setPan(s)}o.render()}const{CAMERA_MODIFIED:wge}=Se;function Cge(t){return Ol(t,wge,xge)}function Sge(t,e){const{viewPlaneNormal:r}=t.getCamera(),{viewPlaneNormal:n}=e.getCamera(),i=je(r,n);return Math.abs(i)>.9}const xE=(t,e)=>Fd.get("spatialRegistrationModule",t,e);async function Tge(t,e,r){const n=gr(r.renderingEngineId);if(!n)throw new Error(`No RenderingEngine for Id: ${r.renderingEngineId}`);const i=n.getViewport(e.viewportId),o=t.getOptions(r.viewportId);if(o!=null&&o.disabled)return;const a=n.getViewport(r.viewportId),s=i.getCurrentImageId(),l=Pe("imagePlaneModule",s).imagePositionPatient,f=a.getImageIds();if(!Sge(i,a))return;let u=xE(r.viewportId,e.viewportId);if(!u){const p=i.getFrameOfReferenceUID(),v=a.getFrameOfReferenceUID();if(p===v&&(o==null?void 0:o.useInitialPosition)!==!1?u=qe(lo()):(gR(i,a),u=xE(r.viewportId,e.viewportId)),!u)return}const d=et(we(),l,u),h=_ge(d,f);let g=h.index;a instanceof an&&(g=f.length-h.index-1),h.index!==-1&&a.getCurrentImageIdIndex()!==h.index&&await Ho(a.element,{imageIndex:g})}function _ge(t,e){return e.reduce((r,n,i)=>{const{imagePositionPatient:o}=Pe("imagePlaneModule",n),a=Cr(o,t);return a{i.getImageIds().includes(t)&&i.calibrateSpacing(t)})}function gA(t,e){const r=t.findIndex(([n,i])=>n===i);if(r===-1)throw new Error("3D bounding boxes not supported in an oblique plane");return t[r][0]-=e,t[r][1]+=e,t}const Age=Object.freeze(Object.defineProperty({__proto__:null,extend2DBoundingBoxInViewAxis:gA,getBoundingBoxAroundShape:Qs,getBoundingBoxAroundShapeIJK:Qs,getBoundingBoxAroundShapeWorld:oN},Symbol.toStringTag,{value:"Module"})),{transformWorldToIndex:uy}=Yt;function pA(t,e,r){const[n,i]=t,o=Ye((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Cr(n,i)/2;if(!r)throw new Error("viewport is required in order to calculate the sphere bounds");const{boundsIJK:s,topLeftWorld:c,bottomRightWorld:l}=kge(e,r,t,o,a);return{boundsIJK:s,centerWorld:o,radiusWorld:a,topLeftWorld:c,bottomRightWorld:l}}function kge(t,e,r,n,i){const[o,a]=r,s=t.getDimensions(),c=e.getCamera(),l=Ye(c.viewUp[0],c.viewUp[1],c.viewUp[2]),f=Ye(c.viewPlaneNormal[0],c.viewPlaneNormal[1],c.viewPlaneNormal[2]),u=we();Kt(u,l,f);const d=we(),h=we();Vt(d,a,f,i),Vt(h,o,f,-i),Vt(d,d,u,-i),Vt(h,h,u,i);const g=uy(t,d),p=uy(t,h),v=r.map(m=>uy(t,m));return{boundsIJK:Qs([g,p,...v],s),topLeftWorld:d,bottomRightWorld:h}}const jS=class jS{static imageIdToFrames(e){const r=e.match(this.frameRangeExtractor);if(!r||!r[2])return null;const n=r[2].split("-").map(i=>Number(i));return n.length===1?n[0]:n}static framesToString(e){return Array.isArray(e)?`${e[0]}-${e[1]}`:String(e)}static framesToImageId(e,r){const n=e.match(this.frameRangeExtractor);if(!n||!n[2])return null;const i=this.framesToString(r);return e.replace(this.frameRangeExtractor,`${n[1]}${i}`)}static setFrameRange(e,r,n){const{referencedImageId:i}=e.metadata;e.metadata.referencedImageId=this.framesToImageId(i,r);const o={...n,annotation:e};De(Ce,F.ANNOTATION_MODIFIED,o)}static getFrameRange(e){return this.imageIdToFrames(e.metadata.referencedImageId)}};jS.frameRangeExtractor=/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;let P3=jS;function Vge(t,e){const{viewPlaneNormal:r}=t.metadata,{viewPlaneNormal:n}=e.metadata,i=je(r,n);if(!Xs(1,Math.abs(i)))return!1;const{polyline:a}=t.data.contour,{polyline:s}=e.data.contour,c=je(r,a[0]),l=je(r,s[0]);return Xs(c,l)}function mA(t,e,r){let n=-1;if(e.forEach((i,o)=>{n>=0||i.a==t.b&&(n=o)}),n>=0){const i=e[n];return e.splice(n,1),r.push(i.b),r[0]==i.b?{remainingLines:e,contourPoints:r,type:"CLOSED_PLANAR"}:mA(i,e,r)}return{remainingLines:e,contourPoints:r,type:"OPEN_PLANAR"}}function hS(t){if(t.length==0)return[];const e=[],r=t.shift();e.push(r.a),e.push(r.b);const n=mA(r,t,e);if(n.remainingLines.length==0)return[{type:n.type,contourPoints:n.contourPoints}];{const i=hS(n.remainingLines);return i.push({type:n.type,contourPoints:n.contourPoints}),i}}function vA(t){return hS(t)}const Fge={findContours:hS,findContoursFromReducedSet:vA};function yA(t,e=!1){const r=t.getPoints(),n=t.getLines(),i=new Array(r.getNumberOfPoints()).fill(0).map((c,l)=>r.getPoint(l).slice()),o=new Array(n.getNumberOfCells()).fill(0).map((c,l)=>{const f=n.getCell(l*3).slice();return{a:f[0],b:f[1]}});if(e)return{points:i,lines:o};const a=[];for(const[c,l]of i.entries()){const f=a.findIndex(u=>u[0]===l[0]&&u[1]===l[1]&&u[2]===l[2]);if(f>=0)o.map(u=>(u.a===c&&(u.a=f),u.b===c&&(u.b=f),u));else{const u=a.length;a.push(l),o.map(d=>(d.a===c&&(d.a=u),d.b===c&&(d.b=u),d))}}const s=o.filter(c=>c.a!==c.b);return{points:a,lines:s}}const Uge=(t,e)=>{const r=t[0],n=t[1];let i=!1;for(let o=0,a=e.length-1;on!=f>n&&r<(l-s)*(n-c)/(f-c)+s&&(i=!i)}return i};function Bge(t,e,r){const n=[];t.contourPoints.forEach(o=>{n.push([r[o][0],r[o][1]])});let i=0;return e.contourPoints.forEach(o=>{Uge([r[o][0],r[o][1]],n)||i++}),i===0}function Gge(t,e,r=!0){const n=t.filter(s=>s.type!=="CLOSED_PLANAR"),i=t.filter(s=>s.type==="CLOSED_PLANAR"),o=[];let a=[];return i.forEach((s,c)=>{const l=[];i.forEach((f,u)=>{c!=u&&Bge(s,f,e)&&l.push(u)}),l.length>0?o.push({contour:s,holes:l}):a.push(c)}),r&&(o.forEach(s=>{s.contour.type="CLOSEDPLANAR_XOR",n.push(s.contour),s.holes.forEach(c=>{i[c].type="CLOSEDPLANAR_XOR",n.push(i[c]),a=a.filter(l=>l!==c)})}),a.forEach(s=>{n.push(i[s])})),n}const Wge={processContourHoles:Gge};class zge{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.oriented=e,this.edgeMap=new Map}initialize(){this.edgeMap.clear()}computeEdgeKey(e,r){return this.oriented||e0&&arguments[0]!==void 0?arguments[0]:{};return new zge(t.oriented)}var jge={newInstance:$ge};const Hge=[[-1,-1,-1,-1,-1],[0,3,-1,-1,-1],[1,0,-1,-1,-1],[1,3,-1,-1,-1],[2,1,-1,-1,-1],[0,3,2,1,-1],[2,0,-1,-1,-1],[2,3,-1,-1,-1],[3,2,-1,-1,-1],[0,2,-1,-1,-1],[1,0,3,2,-1],[1,2,-1,-1,-1],[3,1,-1,-1,-1],[0,1,-1,-1,-1],[3,0,-1,-1,-1],[-1,-1,-1,-1,-1]],Kge=[[0,1],[1,3],[2,3],[0,2]];function qge(t){return Hge[t]}function Xge(t){return Kge[t]}var wE={getCase:qge,getEdge:Xge};const{vtkErrorMacro:CE,vtkDebugMacro:Yge}=W;function Jge(t,e){function r(){let s=0,c=1;return e.slicingMode===1?(s=0,c=2):e.slicingMode===0&&(s=1,c=2),[s,c]}e.classHierarchy.push("vtkImageMarchingSquares"),t.getContourValues=()=>e.contourValues,t.setContourValues=s=>{e.contourValues=s,t.modified()};const n=[],i=[],o=[],a=jge.newInstance();t.getPixelScalars=(s,c,l,f,u,d)=>{const[h,g,p]=s;n[0]=p*c[1]*c[0]+g*c[0]+h,n[1]=n[0]+f[u],n[2]=n[0]+f[d],n[3]=n[2]+f[u];for(let v=0;v<4;++v)i[v]=l[n[v]]},t.getPixelPoints=(s,c,l,f,u)=>{const d=s[f],h=s[u];o[0]=c[f]+d*l[f],o[1]=c[u]+h*l[u],o[2]=o[0]+l[f],o[3]=o[1],o[4]=o[0],o[5]=o[1]+l[u],o[6]=o[2],o[7]=o[5]},t.produceLines=(s,c,l,f,u,d,h,g,p,v,x)=>{var E;const m=c[e.slicingMode],y=[1,2,8,4],w=[];let C;t.getPixelScalars(c,l,d,p,v,x);let S=0;for(let D=0;D<4;D++)i[D]>=s&&(S|=y[D]);const T=wE.getCase(S);if(T[0]<0)return;t.getPixelPoints(c,f,u,v,x);const _=f[e.slicingMode]+m*u[e.slicingMode];for(let D=0;T[D]>=0;D+=2){g.push(2);for(let b=0;b<2;b++){const I=wE.getEdge(T[D+b]);if(C=void 0,e.mergePoints&&(C=(E=a.isInsertedEdge(n[I[0]],n[I[1]]))==null?void 0:E.value),C===void 0){const R=(s-i[I[0]])/(i[I[1]]-i[I[0]]),M=o.slice(I[0]*2,(I[0]+1)*2),L=o.slice(I[1]*2,(I[1]+1)*2);w[v]=M[0]+R*(L[0]-M[0]),w[x]=M[1]+R*(L[1]-M[1]),w[e.slicingMode]=_,C=h.length/3,h.push(w[0],w[1],w[2]),e.mergePoints&&a.insertEdge(n[I[0]],n[I[1]],C)}g.push(C)}}},t.requestData=(s,c)=>{const l=s[0];if(!l){CE("Invalid or missing input");return}if(e.slicingMode==null||e.slicingMode<0||e.slicingMode>2){CE("Invalid or missing slicing mode");return}console.time("msquares");const f=l.getOrigin(),u=l.getSpacing(),d=l.getDimensions(),h=l.getExtent(),g=l.computeIncrements(h),p=l.getPointData().getScalars().getData(),[v,x]=r(),m=[],y=[];let w=Math.round(e.slice);w>=d[e.slicingMode]&&(w=0);const C=[0,0,0];C[e.slicingMode]=w;for(let T=0;T2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Zge,r),W.obj(t,e),W.algo(t,e,1,1),W.setGet(t,e,["slicingMode","slice","mergePoints"]),W.algo(t,e,1,1),Jge(t,e)}const Qge=W.newInstance(xA,"vtkImageMarchingSquares");var epe={newInstance:Qge,extend:xA};const{Labelmap:tpe}=Ge;function wA({segmentations:t}){var u;const{representationData:e,segments:r=[0,1]}=t,{volumeId:n}=e[tpe],i=_e.getVolume(n);if(!i){console.warn(`No volume found for ${n}`);return}const o=i.dimensions[2],a=i.voxelManager,s=i.dimensions[0]*i.dimensions[1];for(let d=0;d{const c=rpe(a),l=ipe(o[s],r);return{NumberOfContourPoints:c.length/3,ContourImageSequence:l,ContourGeometricType:"CLOSED_PLANAR",ContourData:c}})}}CA.toolName="RectangleROIStartEndThreshold";function rpe(t){return[...t[0],...t[1],...t[3],...t[2]].flat().map(i=>i.toFixed(2))}function ipe(t,e){const r=e.get("sopCommonModule",t);return{ReferencedSOPClassUID:r.sopClassUID,ReferencedSOPInstanceUID:r.sopInstanceUID}}function ope(t){if(!(t!=null&&t.data))throw new Error("Tool data is empty");if(!t.metadata||t.metadata.referencedImageId)throw new Error("Tool data is not associated with any imageId")}const sd=class sd{constructor(){}static convert(e,r,n){ope(e);const{toolName:i}=e.metadata,o=sd.TOOL_NAMES[i];if(!o)throw new Error(`Unknown tool type: ${i}, cannot convert to RTSSReport`);const a=o.getContourSequence(e,n),s=[Math.floor(Math.random()*255),Math.floor(Math.random()*255),Math.floor(Math.random()*255)];return{ReferencedROINumber:r+1,ROIDisplayColor:s,ContourSequence:a}}static register(e){sd.TOOL_NAMES[e.toolName]=e}};sd.TOOL_NAMES={};let ym=sd;ym.register(CA);function ape(t,e){ra.acceptAutoGenerated(t,e)}const{isEqual:spe}=Yt;function A3(t,e){const{polyline:r}=t.data.contour,{points:n}=t.data.handles,{length:i}=n;if(e===i)return r.length;if(e<0&&(e=(e+i)%i),e===0)return 0;const o=n[e],a=r.findIndex(c=>spe(o,c));if(a!==-1)return a;let s=1/0;return r.reduce((c,l,f)=>{const u=ib(l,o);return u{const C=({value:R})=>{d=d+1,R>=h.lower&&R<=h.upper&&(u=u+1)},{imageData:S,dimensions:T,lower:_,upper:E}=m,D=VC(S,T,y,w);d=0,u=0,h={lower:_,upper:E};let b=!1;const{voxelManager:I}=S.get("voxelManager");return I.forEach(C,{imageData:S,boundsIJK:D}),a===0?b=u>0:a==1&&(b=u===d),b},p=(m,y)=>{const{imageData:w,lower:C,upper:S}=m,T=w.get("voxelManager").voxelManager,_=T.toIndex(y),E=T.getAtIndex(_);return!(E<=C||E>=S)},v=({index:m,pointIJK:y,pointLPS:w})=>{let C=f.length>0;for(let S=0;S{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{label:"",handles:{points:[[...s],[...s],[...s],[...s]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},cachedStats:{}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=c.worldToCanvas(f[0]),d=c.worldToCanvas(f[3]),h=this._getRectangleImageCoordinates([u,d]),g=[o[0],o[1]],{left:p,top:v,width:x,height:m}=h;return eS([p,v,x,m],g)<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;let l=!1,f;o.worldPosition?l=!0:f=c.handles.points.findIndex(d=>d===o);const u=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),Qe(s),re(s),pe(u),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a))},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world,{points:h}=f.handles;h.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else{const{currentPoints:u}=i,d=re(o),{worldToCanvas:h,canvasToWorld:g}=d.viewport,p=u.world,{points:v}=f.handles;v[c]=[...p];let x,m,y,w,C,S,T,_;switch(c){case 0:case 3:x=h(v[0]),w=h(v[3]),m=[w[0],x[1]],y=[x[0],w[1]],S=g(m),T=g(y),v[1]=S,v[2]=T;break;case 1:case 2:m=h(v[1]),y=h(v[2]),x=[y[0],m[1]],w=[m[0],y[1]],C=g(x),_=g(w),v[0]=C,v[3]=_;break}a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(V));u.annotationUID=g;const{color:y,lineWidth:w,lineDash:C}=this.getAnnotationStyle({annotation:h,styleSpecifier:u}),{viewPlaneNormal:S,viewUp:T}=a.getCamera();if(!p.cachedStats[l]||p.cachedStats[l].areaUnit==null)p.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(h,S,T,f,n);else if(h.invalidated&&(this._throttledCalculateCachedStats(h,S,T,f,n),a instanceof an)){const{referencedImageId:V}=h.metadata;for(const $ in p.cachedStats)$.startsWith("imageId")&&f.getStackViewports().find(ne=>{const Q=Nn(V),ee=ne.hasImageURI(Q),de=Nn(ne.getCurrentImageId());return ee&&de!==Q})&&delete p.cachedStats[$]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let _;if(!Ur(g))continue;!rr(g)&&!this.editData&&x!==null&&(_=[m[x]]),_&&sn(i,g,"0",_,{color:y});const E=`${g}-rect`;iS(i,g,"0",m,{color:y,lineDash:C,lineWidth:w},E),o=!0;const b=this.getLinkedTextBoxStyle(u,h);if(!b.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const I=this.configuration.getTextLines(p,l);if(!I||I.length===0)continue;if(!p.handles.textBox.hasMoved){const V=$i(m);p.handles.textBox.worldPosition=a.canvasToWorld(V)}const R=a.worldToCanvas(p.handles.textBox.worldPosition),L=ei(i,g,"1",I,R,m,{},b),{x:A,y:G,width:P,height:N}=L;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([A,G]),topRight:a.canvasToWorld([A+P,G]),bottomLeft:a.canvasToWorld([A,G+N]),bottomRight:a.canvasToWorld([A+P,G+N])}}return o},this._getRectangleImageCoordinates=n=>{const[i,o]=n;return{left:Math.min(i[0],o[0]),top:Math.min(i[1],o[1]),width:Math.abs(i[0]-o[0]),height:Math.abs(i[1]-o[1])}},this._calculateCachedStats=(n,i,o,a,s)=>{var p,v,x;const{data:c}=n,{viewport:l}=s,{element:f}=l,u=c.handles.points[0],d=c.handles.points[3],{cachedStats:h}=c,g=Object.keys(h);for(let m=0;mIn(n,o)&&In(i,o),this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}}function lpe(t,e){const r=t.cachedStats[e],{area:n,mean:i,max:o,stdDev:a,areaUnit:s,modalityUnit:c}=r;if(i===void 0)return;const l=[];return l.push(`Area: ${yt(n)} ${s}`),l.push(`Mean: ${yt(i)} ${c}`),l.push(`Max: ${yt(o)} ${c}`),l.push(`Std Dev: ${yt(a)} ${c}`),l}tc.toolName="RectangleROI";const{transformWorldToIndex:uf}=Yt;class gS extends tc{constructor(e={},r={configuration:{storePointData:!1,numSlicesToPropagate:10,computePointsInsideVolume:!1,getTextLines:upe,statsCalculator:Ya,showTextBox:!1}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u;let g,p,v;if(l instanceof ln)throw new Error("Stack Viewport Not implemented");{const T=this.getTargetId(l);v=da(T),p=_e.getVolume(v),g=Xa(p,s,d)}const x=qa(p,d),m=this._getStartCoordinate(s,d),y=this._getEndCoordinate(s,x,d),w=l.getFrameOfReferenceUID(),C={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:w,referencedImageId:g,toolName:this.getToolName(),volumeId:v,spacingInNormal:x},data:{label:"",startCoordinate:m,endCoordinate:y,cachedStats:{pointsInVolume:[],projectionPoints:[],projectionPointsImageIds:[g],statistics:[]},handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null},labelmapUID:null}};this._computeProjectionPoints(C,p),Ut(C,a);const S=He(a,this.getToolName());return this.editData={annotation:C,viewportIdsToRender:S,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(S),C},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(c&&!l)return;f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o);const u=re(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID);const d=this.getTargetId(u.viewport),h=_e.getVolume(d.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(a,d,h,u),pe(s),c&&en(a)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n;let s=_t(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=b2(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let l=0;la.worldToCanvas(G));c.annotationUID=u;const m=this.getStyle("lineWidth",c,f),y=this.getStyle("lineDash",c,f),w=this.getStyle("color",c,f),C=a.getCamera().focalPoint,S=a.getCamera().viewPlaneNormal;let T=h,_=g;Array.isArray(h)&&(T=this._getCoordinateForViewplaneNormal(T,S),d.startCoordinate=T,d.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(S)]=T,d.startCoordinate=T,d.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(S)]=T),Array.isArray(g)&&(_=this._getCoordinateForViewplaneNormal(_,S),d.endCoordinate=_,d.endCoordinate=_);const E=Rs(T),D=Rs(_),b=this._getCoordinateForViewplaneNormal(C,S),I=Rs(b);if(IMath.max(E,D))continue;f.invalidated&&this._throttledCalculateCachedStats(f,n);let R=!1;if((I===E||I===D)&&(R=!0),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let M;if(!Ur(u))continue;!rr(u)&&!this.editData&&v!==null&&R&&(M=[x[v]]),M&&sn(i,u,"0",M,{color:w});let L=y;if(R||(L=2),Nh(i,u,"0",x[0],x[3],{color:w,lineDash:L,lineWidth:m}),o=!0,this.configuration.showTextBox&&this.configuration.calculatePointsInsideVolume){const G=this.getLinkedTextBoxStyle(c,f);if(!G.visibility){d.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const P=this.configuration.getTextLines(d);if(!P||P.length===0)continue;if(!d.handles.textBox.hasMoved){const ee=$i(x);d.handles.textBox.worldPosition=a.canvasToWorld(ee)}const N=a.worldToCanvas(d.handles.textBox.worldPosition),$=ei(i,u,"1",P,N,x,{},G),{x:H,y:Y,width:ne,height:Q}=$;d.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([H,Y]),topRight:a.canvasToWorld([H+ne,Y]),bottomLeft:a.canvasToWorld([H,Y+Q]),bottomRight:a.canvasToWorld([H+ne,Y+Q])}}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,r){const{data:n,metadata:i}=e,{viewPlaneNormal:o,spacingInNormal:a}=i,{imageData:s}=r,{startCoordinate:c,endCoordinate:l}=n,{points:f}=n.handles,u=uf(s,f[0]),d=uf(s,f[0]),h=we();s.indexToWorldVec3(u,h);const g=we();s.indexToWorldVec3(d,g),this._getIndexOfCoordinatesForViewplaneNormal(o)==2?(h[2]=c,g[2]=l):this._getIndexOfCoordinatesForViewplaneNormal(o)==0?(h[0]=c,g[0]=l):this._getIndexOfCoordinatesForViewplaneNormal(o)==1&&(h[1]=c,g[1]=l);const p=Cr(h,g),v=[];for(let x=0;x{const y=we();return Vt(y,m,o,x),Array.from(y)}));n.cachedStats.projectionPoints=v}_computePointsInsideVolume(e,r,n,i){var S,T,_;const{data:o,metadata:a}=e,{viewPlaneNormal:s,viewUp:c}=a,{viewport:l}=i,f=o.cachedStats.projectionPoints,u=[[]],d=this.getTargetImageData(r),h=o.handles.points[0],g=o.handles.points[3],{worldWidth:p,worldHeight:v}=E2(s,c,h,g),x=Bi(d,o.habdles),m=Math.abs(p*v)/(x.scale*x.scale),y={isPreScaled:os(l,r),isSuvScaled:this.isSuvScaled(l,r,e.metadata.referencedImageId)},w=bl(a.Modality,e.metadata.referencedImageId,y);for(let E=0;E{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getTargetId(l);let p,v;if(l instanceof ln)p=g.split("imageId:")[1];else{v=da(g);const w=_e.getVolume(v);p=Xa(w,s,d)}const x=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:c,viewUp:[...h],FrameOfReferenceUID:x,referencedImageId:p,toolName:this.getToolName(),volumeId:v},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null},segmentationId:null}};Ut(m,a);const y=He(a,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:y,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(y),m},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(S));l.annotationUID=d;const x=this.getStyle("lineWidth",l,u),m=this.getStyle("lineDash",l,u),y=this.getStyle("color",l,u);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;fn(u,s);let w;if(!Ur(d))continue;!rr(d)&&!this.editData&&p!==null&&(w=[v[p]]),w&&sn(i,d,"0",w,{color:y}),Nh(i,d,"0",v[0],v[3],{color:y,lineDash:m,lineWidth:x}),o=!0}return o}}}pS.toolName="RectangleROIThreshold";function TA(t,e,r={}){const n=[];return t.forEach(o=>{var h,g;const{data:a}=o,{points:s}=a.handles,{imageData:c,dimensions:l}=e;let f=s;if((h=a.cachedStats)!=null&&h.projectionPoints){const{projectionPoints:p}=a.cachedStats;f=[].concat(...p)}const u=f.map(p=>Gn(c,p));let d=Qs(u,l);r.numSlicesToProject&&!((g=a.cachedStats)!=null&&g.projectionPoints)&&(d=gA(d,r.numSlicesToProject)),n.push(d)}),n.length===1?n[0]:n.reduce((o,a)=>({iMin:Math.min(o.iMin,a.iMin),jMin:Math.min(o.jMin,a.jMin),kMin:Math.min(o.kMin,a.kMin),iMax:Math.max(o.iMax,a.iMax),jMax:Math.max(o.jMax,a.jMax),kMax:Math.max(o.kMax,a.kMax)}),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})}function fpe(t,e,r,n){const i=t.map(s=>On(s));dpe(i);let o;for(let s=0;s{if(!pt(l,t[0].dimensions)||!pt(c,t[0].direction)||!pt(u,t[0].spacing)||!pt(f,t[0].origin))throw new Error("labelmaps must have the same size and shape")});const n=t[0],i=n.voxelManager.getConstructor(),o=new i(n.voxelManager.getScalarDataLength());t.forEach(c=>{const l=c.voxelManager,f=l.getScalarDataLength();for(let u=0;u0;)h(l.pop());return{flooded:f,boundaries:T()};function h(_){const E=_.currentArgs,D=_.previousArgs;g(E)||(p(E),v(E)?(x(E),y(E)):m(D))}function g(_){const[E,D,b=0]=_,I=E+32768+65536*(D+32768+65536*(b+32768));return u.has(I)}function p(_){const[E,D,b=0]=_,I=E+32768+65536*(D+32768+65536*(b+32768));u.add(I)}function v(_){const E=w(_);return o?o(E,s):E===s}function x(_){f.push(_),n&&n(..._)}function m(_){const[E,D,b=0]=_,I=E+32768+65536*(D+32768+65536*(b+32768));d.set(I,_),i&&i(..._)}function y(_){for(let E=0;E{const{strategySpecificConfiguration:e}=t;if(!e)return;const{centerSegmentIndex:r}=e;r&&(t.segmentIndex=r.segmentIndex)},[it.OnInteractionStart]:t=>{const{segmentIndex:e,previewSegmentIndex:r,segmentationVoxelManager:n,centerIJK:i,strategySpecificConfiguration:o,imageVoxelManager:a,segmentationImageData:s,preview:c}=t;if(!(o!=null&&o.useCenterSegmentIndex))return;delete o.centerSegmentIndex;let l=!1,f=!1;const u=({value:h})=>{l||(l=h===e),f||(f=h===r)};if(a.forEach(u,{imageData:s,isInObject:t.isInObject}),!l&&!f)return;let d=n.getAtIJKPoint(i);if(d===r)if(c)d=c.segmentIndex;else return;else f&&(d=null);t.segmentIndex=d,o.centerSegmentIndex={segmentIndex:d}}},ype={[it.Initialize]:t=>{const{operationName:e,centerIJK:r,strategySpecificConfiguration:n,segmentationVoxelManager:i,imageVoxelManager:o,segmentIndex:a}=t,{THRESHOLD:s}=n;if(!(s!=null&&s.isDynamic)||!r||!a||e===it.RejectPreview||e===it.OnInteractionEnd)return;const c=i.getBoundsIJK(),{threshold:l,dynamicRadius:f=0}=s,u=l?0:f,d=c.map((p,v)=>{const[x,m]=p;return[Math.max(x,r[v]-u),Math.min(m,r[v]+u)]}),h=l||[1/0,-1/0],g=({value:p})=>{const v=Array.isArray(p)?Rd(p):p;h[0]=Math.min(v,h[0]),h[1]=Math.max(v,h[1])};o.forEach(g,{boundsIJK:d}),t.strategySpecificConfiguration.THRESHOLD.threshold=h},[it.OnInteractionStart]:t=>{var n;const{strategySpecificConfiguration:e,preview:r}=t;!((n=e==null?void 0:e.THRESHOLD)!=null&&n.isDynamic)&&!r||(e.THRESHOLD.threshold=null)},[it.ComputeInnerCircleRadius]:t=>{const{configuration:e,viewport:r}=t,{THRESHOLD:{dynamicRadius:n=0}={}}=e.strategySpecificConfiguration||{};if(n===0)return;const i=r.getImageData();if(!i)return;const{spacing:o}=i,a=[r.element.clientWidth/2,r.element.clientHeight/2],s=n*o[0],l=r.canvasToWorld(a).map(g=>g+s),f=r.worldToCanvas(l),u=Math.abs(a[0]-f[0]),{strategySpecificConfiguration:d,activeStrategy:h}=e;d[h]||(d[h]={}),d[h].dynamicRadiusInCanvas=u}},xpe={[it.Initialize]:t=>{t.segmentIndex=0}},wpe={[it.OnInteractionEnd]:t=>{const{previewVoxelManager:e,segmentationVoxelManager:r,strategySpecificConfiguration:n,previewSegmentIndex:i,segmentIndex:o}=t;if(!n.THRESHOLD||o===null)return;const a=e.getPoints();if(!(a!=null&&a.length)||i===void 0)return;const s=e.getBoundsIJK().map((v,x)=>[Math.min(v[0],...a.map(m=>m[x])),Math.max(v[1],...a.map(m=>m[x]))]);if(s.find(v=>v[0]<0||v[1]>65535))return;const c=new Set,l=(v,x,m)=>{if(vs[0][1]||xs[1][1]||ms[2][1])return-1;const y=r.toIndex([v,x,m]);if(c.has(y))return-2;const w=r.getAtIndex(y),C=w===i||w===o?1:0;return C||r.addPoint(y),C};let f=0;const u=(v,x,m)=>{const y=r.toIndex([v,x,m]);c.has(y)||(e.setAtIJK(v,x,m,i),c.add(y),f++)};a.forEach(v=>{l(...v)===1&&xm(l,v,{onFlood:u,diagonals:!0})});let d=0,h=0;const g=({index:v,pointIJK:x,value:m})=>{const y=r.getAtIndex(v);if(c.has(v)){h++;const w=m===o?o:i;e.setAtIJKPoint(x,w)}else if(y===i){d++;const w=m??0;e.setAtIJKPoint(x,w)}};e.forEach(g,{}),f-h!==0&&console.warn("There were flooded=",f,"cleared=",d,"preview count=",h,"not handled",f-h);const p=new Set(r.points||[]);c.clear();for(const v of p.keys()){if(c.has(v))continue;let x=!0;const m=new Set,y=(C,S,T)=>{const _=e.toIndex([C,S,T]);c.add(_),(s[0][0]!==s[0][1]&&(C===s[0][0]||C===s[0][1])||s[1][0]!==s[1][1]&&(S===s[1][0]||S===s[1][1])||s[2][0]!==s[2][1]&&(T===s[2][0]||T===s[2][1]))&&(x=!1),x&&m.add(_)},w=e.toIJK(v);if(l(...w)===0&&(xm(l,w,{onFlood:y,diagonals:!1}),x))for(const C of m)e.setAtIndex(C,i)}Ei(t.segmentationId,e.getArrayOfModifiedSlices())}};function Cpe(t,e,r,n,i=.4){return[Math.round(t+(255-t)*i),Math.round(e+(255-e)*i),Math.round(r+(255-r)*i),n]}const Spe={[it.Preview]:function(t){var o,a;const{previewColors:e,strategySpecificConfiguration:r,enabledElement:n}=t;if(!e||!r)return;t.preview&&delete t.preview,delete r.centerSegmentIndex,(o=this.onInteractionStart)==null||o.call(this,n,t);const i=this.fill(n,t);return i&&(i.isPreviewFromHover=!0,t.preview=i,(a=this.onInteractionEnd)==null||a.call(this,n,t)),i},[it.Initialize]:t=>{const{segmentIndex:e,previewSegmentIndex:r,previewColors:n,preview:i}=t;if(n===void 0||(i&&(i.previewVoxelManager.sourceVoxelManager=t.segmentationVoxelManager,t.previewVoxelManager=i.previewVoxelManager),e===null||!r))return;const o=n==null?void 0:n[e],a=ts(t.viewport.id,t.segmentationId,e);if(!o&&!a)return;const s=o||Cpe(...a);dN(t.viewport.id,t.segmentationId,r,s)},[it.AcceptPreview]:t=>{const{segmentationVoxelManager:e,previewVoxelManager:r,previewSegmentIndex:n,preview:i}=t||{};if(n===void 0)return;const o=(i==null?void 0:i.segmentIndex)??t.segmentIndex,a=r;if(!a||a.modifiedSlices.size===0)return;const s=({index:c})=>{e.getAtIndex(c)===n&&e.setAtIndex(c,o)};a.forEach(s,{}),Ei(t.segmentationId,a.getArrayOfModifiedSlices()),a.clear()},[it.RejectPreview]:t=>{const{previewVoxelManager:e,segmentationVoxelManager:r}=t;if(e.modifiedSlices.size===0)return;const n=({index:i,value:o})=>{r.setAtIndex(i,o)};e.forEach(n),Ei(t.segmentationId,e.getArrayOfModifiedSlices()),e.clear()}},Tpe={[it.Fill]:t=>{var f;const{segmentsLocked:e,segmentationImageData:r,segmentationVoxelManager:n,previewVoxelManager:i,brushStrategy:o,centerIJK:a}=t,s=(f=o.createIsInThreshold)==null?void 0:f.call(o,t),{setValue:c}=o,l=s?u=>{const{value:d,index:h}=u;e.includes(d)||!s(h)||c(t,u)}:u=>c(t,u);n.forEach(l,{imageData:r,isInObject:t.isInObject,boundsIJK:t.isInObjectBoundsIJK}),i.addPoint(a)}},_pe={[it.INTERNAL_setValue]:(t,{value:e,index:r})=>{const{segmentsLocked:n,segmentIndex:i,previewVoxelManager:o,previewSegmentIndex:a,segmentationVoxelManager:s}=t,c=s.getAtIndex(r);if(i===null){const f=o.getAtIndex(r);f!==void 0&&o.setAtIndex(r,f);return}if(c===i||n.includes(e))return;if(c===a)if(o.getAtIndex(r)===void 0)s.setAtIndex(r,i);else return;const l=a??i;o.setAtIndex(r,l)}},Epe={[it.CreateIsInThreshold]:t=>{const{imageVoxelManager:e,strategySpecificConfiguration:r,segmentIndex:n}=t;if(!(!r||!n))return i=>{const{THRESHOLD:o,THRESHOLD_INSIDE_CIRCLE:a}=r,s=e.getAtIndex(i),c=Array.isArray(s)?ui(s):s,{threshold:l}=o||a||{};return l!=null&&l.length?l[0]<=c&&c<=l[1]:!0}}},tr={determineSegmentIndex:vpe,dynamicThreshold:ype,erase:xpe,islandRemoval:wpe,preview:Spe,regionFill:Tpe,setValue:_pe,threshold:Epe};function _A({operationData:t,viewport:e}){var s;let r,n,i,o,a;if(e instanceof Mn){const{volumeId:c,referencedVolumeId:l}=t;if(!c){const u=new CustomEvent(Se.ERROR_EVENT,{detail:{type:"Segmentation",message:"No volume id found for the segmentation"},cancelable:!0});return Ce.dispatchEvent(u),null}const f=_e.getVolume(c);if(!f)return;a=f.voxelManager,l&&(o=_e.getVolume(l).voxelManager),{imageData:r}=f}else{const{segmentationId:c}=t,l=Gi(e.id,c);if(!l)return;const f=e.getCurrentImageId();if(!f)return;const u=Ga(e.id,c);if(!u)return;const d=_e.getImage(l);r=u.actor.getMapper().getInputData(),a=d.voxelManager;const h=t.imageId,g=_e.getImage(h);if(!g)return;n=(s=g.getPixelData)==null?void 0:s.call(g);const p=_e.getImage(f),v=p?null:e.getImageData();i=(p==null?void 0:p.getPixelData())||v.getScalarData(),o=p==null?void 0:p.voxelManager}return{segmentationImageData:r,segmentationScalarData:n,imageScalarData:i,segmentationVoxelManager:a,imageVoxelManager:o}}const{VoxelManager:Dpe}=Yt,Ac=class Ac{constructor(e,...r){this._initialize=[],this._fill=[],this._onInteractionStart=[],this.fill=(n,i)=>{const o=this.initialize(n,i,it.Fill);if(!o)return;const{strategySpecificConfiguration:a={},centerIJK:s}=o;if(pt(s,a.centerIJK))return i.preview;a.centerIJK=s,this._fill.forEach(u=>u(o));const{segmentationVoxelManager:c,previewVoxelManager:l,previewSegmentIndex:f}=o;return Ei(o.segmentationId,c.getArrayOfModifiedSlices()),!f||!l.modifiedSlices.size?(c.resetModifiedSlices(),null):o.preview||o},this.onInteractionStart=(n,i)=>{const{preview:o}=i;if(o!=null&&o.isPreviewFromHover){o.isPreviewFromHover=!1;return}const a=this.initialize(n,i);a&&this._onInteractionStart.forEach(s=>s.call(this,a))},this.configurationName=e,this.compositions=r,r.forEach(n=>{const i=typeof n=="function"?n():n;if(i)for(const o in i){if(!Ac.childFunctions[o])throw new Error(`Didn't find ${o} as a brush strategy`);Ac.childFunctions[o](this,i[o])}}),this.strategyFunction=(n,i)=>this.fill(n,i);for(const n of Object.keys(Ac.childFunctions))this.strategyFunction[n]=this[n]}initialize(e,r,n){var p,v,x;const{viewport:i}=e,o=_A({operationData:r,viewport:i});if(!o)return console.warn("No data found for BrushStrategy"),r.preview;const{imageVoxelManager:a,segmentationVoxelManager:s,segmentationImageData:c}=o,l=((p=r.override)==null?void 0:p.voxelManager)||s,f=((v=r.override)==null?void 0:v.imageData)||c,u=((x=r.preview)==null?void 0:x.previewVoxelManager)||Dpe.createHistoryVoxelManager({sourceVoxelManager:l}),h=!!r.previewColors?255:void 0,g={operationName:n,previewSegmentIndex:h,...r,enabledElement:e,imageVoxelManager:a,segmentationVoxelManager:l,segmentationImageData:f,previewVoxelManager:u,viewport:i,centerWorld:null,isInObject:null,isInObjectBoundsIJK:null,brushStrategy:this};return this._initialize.forEach(m=>m(g)),g}};Ac.COMPOSITIONS=tr,Ac.childFunctions={[it.OnInteractionStart]:Sc(it.OnInteractionStart,it.Initialize),[it.OnInteractionEnd]:Sc(it.OnInteractionEnd,it.Initialize),[it.Fill]:Sc(it.Fill),[it.Initialize]:Sc(it.Initialize),[it.CreateIsInThreshold]:fy(it.CreateIsInThreshold),[it.AcceptPreview]:Sc(it.AcceptPreview,it.Initialize),[it.RejectPreview]:Sc(it.RejectPreview,it.Initialize),[it.INTERNAL_setValue]:fy(it.INTERNAL_setValue),[it.Preview]:fy(it.Preview,!1),[it.ComputeInnerCircleRadius]:Sc(it.ComputeInnerCircleRadius),compositions:null};let nc=Ac;function Sc(t,e){const r=`_${t}`;return(n,i)=>{n[r]||(n[r]=[]),n[r].push(i),n[t]||(n[t]=e?(o,a)=>{const s=n[e](o,a,t);n[r].forEach(c=>c.call(n,s))}:o=>{n[r].forEach(a=>a.call(n,o))})}}function fy(t,e=!0){return(r,n)=>{if(r[t])throw new Error(`The singleton method ${t} already exists`);r[t]=e?n:(i,o)=>(o.enabledElement=i,n.call(r,o))}}function EA(t,e){const{center:r,radius:n}=t,i=t.radius2||n*n;return(e[0]-r[0])*(e[0]-r[0])+(e[1]-r[1])*(e[1]-r[1])+(e[2]-r[2])*(e[2]-r[2])<=i}const{transformWorldToIndex:TE,isEqual:dy}=Yt,DA={[it.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=Ye(0,0,0);e.forEach(d=>{xn(i,i,d)}),lr(i,i,1/e.length),t.centerWorld=i,t.centerIJK=TE(n,i);const o=e.map(d=>r.worldToCanvas(d)),[a,s]=Yf(o),c=r.canvasToWorld(a),l=r.canvasToWorld(s),f=e.map(d=>TE(n,d)),u=Qs(f,n.getDimensions());t.isInObject=bA({topLeftWorld:c,bottomRightWorld:l,center:i}),t.isInObjectBoundsIJK=u}};function bA(t){const{topLeftWorld:e,bottomRightWorld:r,center:n}=t,i=Math.abs(e[0]-r[0])/2,o=Math.abs(e[1]-r[1])/2,a=Math.abs(e[2]-r[2])/2,s=Math.max(i,o,a);if(dy(i,s)&&dy(o,s)&&dy(a,s)){const f={center:n,radius:s,radius2:s*s};return u=>EA(f,u)}const c={center:n,xRadius:i,yRadius:o,zRadius:a},{precalculated:l}=XC(c,{});return l}const IA=new nc("Circle",tr.regionFill,tr.setValue,DA,tr.determineSegmentIndex,tr.preview),bpe=new nc("CircleThreshold",tr.regionFill,tr.setValue,DA,tr.determineSegmentIndex,tr.dynamicThreshold,tr.threshold,tr.preview,tr.islandRemoval),OA=IA.strategyFunction,Ipe=bpe.strategyFunction,{transformWorldToIndex:Ope}=Yt,Mpe={[it.Initialize]:t=>{const{points:e,viewport:r,segmentationImageData:n}=t;if(!e)return;const i=Ye(0,0,0);e.forEach(c=>{xn(i,i,c)}),lr(i,i,1/e.length),t.centerWorld=i,t.centerIJK=Ope(n,i);const{boundsIJK:o,topLeftWorld:a,bottomRightWorld:s}=pA(e.slice(0,2),n,r);t.isInObjectBoundsIJK=o,t.isInObject=bA({topLeftWorld:a,bottomRightWorld:s,center:i})}},mS=new nc("Sphere",tr.regionFill,tr.setValue,Mpe,tr.determineSegmentIndex,tr.preview),MA=mS.strategyFunction,Rpe=new nc("SphereThreshold",...mS.compositions,tr.dynamicThreshold,tr.threshold,tr.islandRemoval),Lpe=Rpe.strategyFunction,Npe=new nc("EraseSphere",tr.erase,...mS.compositions),RA=Npe.strategyFunction,Ppe=new nc("EraseCircle",tr.erase,...IA.compositions),LA=Ppe.strategyFunction;class vS extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:OA,ERASE_INSIDE_CIRCLE:LA,FILL_INSIDE_SPHERE:MA,ERASE_INSIDE_SPHERE:RA,THRESHOLD_INSIDE_CIRCLE:Ipe,THRESHOLD_INSIDE_SPHERE:Lpe},strategySpecificConfiguration:{THRESHOLD:{threshold:[-150,-70]}},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",thresholdVolumeId:null,brushSize:25,preview:{enabled:!1,previewColors:{},previewTimeMs:250,previewMoveDistance:8,dragMoveDistance:4,dragTimeMs:500},actions:{[it.AcceptPreview]:{method:it.AcceptPreview,bindings:[{key:"Enter"}]},[it.RejectPreview]:{method:it.RejectPreview,bindings:[{key:"Escape"}]}}}}){super(e,r),this._previewData={preview:null,element:null,timerStart:0,timer:null,startPoint:[NaN,NaN],isDrag:!1},this.onSetToolPassive=n=>{this.disableCursor()},this.onSetToolEnabled=()=>{this.disableCursor()},this.onSetToolDisabled=n=>{this.disableCursor()},this.preMouseDownCallback=n=>{const i=n.detail,{element:o}=i,a=re(o);this._editData=this.createEditData(o),this._activateDraw(o),Qe(o),n.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const s=this._hoverData||this.createHoverData(o);pe(s.viewportIdsToRender);const c=this.getOperationData(o);return this.applyActiveStrategyCallback(a,c,it.OnInteractionStart),!0},this.mouseMoveCallback=n=>{if(this.mode===Ft.Active){if(this.updateCursor(n),!this.configuration.preview.enabled)return;const{previewTimeMs:i,previewMoveDistance:o,dragMoveDistance:a}=this.configuration.preview,{currentPoints:s,element:c}=n.detail,{canvas:l}=s,{preview:f,startPoint:u,timer:d,timerStart:h,isDrag:g}=this._previewData,p=bn(l,u),v=Date.now()-h;if((p>o||v>i&&p>a)&&(d&&(window.clearTimeout(d),this._previewData.timer=null),f&&!g&&this.rejectPreview(c)),!this._previewData.timer){const x=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:x,startPoint:l,element:c})}}},this.previewCallback=()=>{this._previewData.timer=null,!this._previewData.preview&&(this._previewData.preview=this.applyActiveStrategyCallback(re(this._previewData.element),this.getOperationData(this._previewData.element),it.Preview))},this._dragCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=re(o);this.updateCursor(n);const{viewportIdsToRender:c}=this._hoverData;pe(c);const l=bn(a.canvas,this._previewData.startPoint),{dragTimeMs:f,dragMoveDistance:u}=this.configuration.preview;!this._previewData.isDrag&&this._previewData.preview&&Date.now()-this._previewData.timerStart{const i=n.detail,{element:o}=i,a=re(o),s=this.getOperationData(o);!this._previewData.preview&&!this._previewData.isDrag&&this.applyActiveStrategy(a,s),this._deactivateDraw(o),ct(o),this.updateCursor(n),this._editData=null,this.applyActiveStrategyCallback(a,s,it.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(o)},this._activateDraw=n=>{n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback)}}disableCursor(){this._hoverData=void 0,this.rejectPreview()}createEditData(e){var c,l;const r=re(e),{viewport:n}=r,i=qd(n.id);if(!i){const f=new CustomEvent(Se.ERROR_EVENT,{detail:{type:"Segmentation",message:"No active segmentation detected, create a segmentation representation before using the brush tool"},cancelable:!0});return Ce.dispatchEvent(f),null}const{segmentationId:o}=i,a=Dl(o),{representationData:s}=Ct(o);if(n instanceof Mn){const{volumeId:f}=s[Ge.Labelmap],u=n.getActors();if(n instanceof ln){const v=new CustomEvent(Se.ERROR_EVENT,{detail:{type:"Segmentation",message:"Cannot perform brush operation on the selected viewport"},cancelable:!0});return Ce.dispatchEvent(v),null}const h=u.map(v=>_e.getVolume(v.referencedId)),g=_e.getVolume(f),p=((c=h.find(v=>pt(v.dimensions,g.dimensions)))==null?void 0:c.volumeId)||((l=h[0])==null?void 0:l.volumeId);return{volumeId:f,referencedVolumeId:this.configuration.thresholdVolumeId??p,segmentsLocked:a}}else{const f=Gi(n.id,o);if(!f)return;if(this.configuration.activeStrategy.includes("SPHERE")){const u=n.getImageIds();if(!pR(u))throw new Error("Volume is not reconstructable for sphere manipulation");const h=`${o}_${n.id}`,g=_e.getVolume(h);if(g)return{imageId:f,segmentsLocked:a,override:{voxelManager:g.voxelManager,imageData:g.imageData}};{const p=_P(n.id,o);if(!p||p.length===1)return{imageId:f,segmentsLocked:a};const v=UM(h,p);return{imageId:f,segmentsLocked:a,override:{voxelManager:v.voxelManager,imageData:v.imageData}}}}else return{imageId:f,segmentsLocked:a}}}createHoverData(e,r){const n=re(e),{viewport:i}=n,o=i.getCamera(),{viewPlaneNormal:a,viewUp:s}=o,c=[i.id],{segmentIndex:l,segmentationId:f,segmentColor:u}=this.getActiveSegmentationData(i)||{};return{brushCursor:{metadata:{viewPlaneNormal:[...a],viewUp:[...s],FrameOfReferenceUID:i.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:u},data:{}},centerCanvas:r,segmentIndex:l,viewport:i,segmentationId:f,segmentColor:u,viewportIdsToRender:c}}getActiveSegmentationData(e){const r=e.id,n=qd(r);if(!n)return;const{segmentationId:i}=n,o=No(i);if(!o)return;const a=ts(r,i,o);return{segmentIndex:o,segmentationId:i,segmentColor:a}}updateCursor(e){const r=e.detail,{element:n}=r,{currentPoints:i}=r,o=i.canvas;this._hoverData=this.createHoverData(n,o),this._calculateCursor(n,o),this._hoverData&&pe(this._hoverData.viewportIdsToRender)}getOperationData(e){var u,d;const r=this._editData||this.createEditData(e),{segmentIndex:n,segmentationId:i,brushCursor:o}=this._hoverData||this.createHoverData(e),{data:a,metadata:s={}}=o||{},{viewPlaneNormal:c,viewUp:l}=s;return{...r,points:(u=a==null?void 0:a.handles)==null?void 0:u.points,segmentIndex:n,previewColors:this.configuration.preview.enabled?this.configuration.preview.previewColors:null,viewPlaneNormal:c,toolGroupId:this.toolGroupId,segmentationId:i,viewUp:l,strategySpecificConfiguration:this.configuration.strategySpecificConfiguration,preview:(d=this._previewData)==null?void 0:d.preview}}_calculateCursor(e,r){const n=re(e),{viewport:i}=n,{canvasToWorld:o}=i,a=i.getCamera(),{brushSize:s}=this.configuration,c=Ye(a.viewUp[0],a.viewUp[1],a.viewUp[2]),l=Ye(a.viewPlaneNormal[0],a.viewPlaneNormal[1],a.viewPlaneNormal[2]),f=we();Kt(f,c,l);const u=o([r[0],r[1]]),d=we(),h=we(),g=we(),p=we();for(let w=0;w<=2;w++)d[w]=u[w]-c[w]*s,h[w]=u[w]+c[w]*s,g[w]=u[w]-f[w]*s,p[w]=u[w]+f[w]*s;if(!this._hoverData)return;const{brushCursor:v}=this._hoverData,{data:x}=v;x.handles===void 0&&(x.handles={}),x.handles.points=[d,h,g,p];const m=this.configuration.activeStrategy,y=this.configuration.strategies[m];typeof y.computeInnerCircleRadius=="function"&&y.computeInnerCircleRadius({configuration:this.configuration,viewport:i}),x.invalidated=!1}rejectPreview(e=this._previewData.element){if(!e||!this._previewData.preview)return;const r=re(e);this.applyActiveStrategyCallback(r,this.getOperationData(e),it.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(e=this._previewData.element){if(!e)return;const r=re(e);this.applyActiveStrategyCallback(r,this.getOperationData(e),it.AcceptPreview),this._previewData.isDrag=!1,this._previewData.preview=null}invalidateBrushCursor(){if(this._hoverData===void 0)return;const{data:e}=this._hoverData.brushCursor,{viewport:r}=this._hoverData;e.invalidated=!0;const{segmentColor:n}=this.getActiveSegmentationData(r)||{};this._hoverData.brushCursor.metadata.segmentColor=n}renderAnnotation(e,r){var y;if(!this._hoverData)return;const{viewport:n}=e;if(!this._hoverData.viewportIdsToRender.includes(n.id))return;const o=this._hoverData.brushCursor;if(o.data.invalidated===!0){const{centerCanvas:w}=this._hoverData,{element:C}=n;this._calculateCursor(C,w)}const a=o.metadata;if(!a)return;const s=a.brushCursorUID,c=o.data,{points:l}=c.handles,f=l.map(w=>n.worldToCanvas(w)),u=f[0],d=f[1],h=[Math.floor((u[0]+d[0])/2),Math.floor((u[1]+d[1])/2)],g=Math.abs(u[1]-Math.floor((u[1]+d[1])/2)),p=`rgb(${((y=a.segmentColor)==null?void 0:y.slice(0,3))||[0,0,0]})`;if(!n.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}bi(r,s,"0",h,g,{color:p});const x=this.configuration.activeStrategy,{dynamicRadiusInCanvas:m}=this.configuration.strategySpecificConfiguration[x]||{dynamicRadiusInCanvas:0};m&&bi(r,s,"1",h,m,{color:p})}}vS.toolName="Brush";function F0(t,e){const r=Wn(t);if(r===void 0)return;const n=r._toolInstances;return Object.keys(n).length?e&&n[e]?[n[e]]:Object.values(n).filter(o=>o instanceof vS):void 0}function Ape(t,e,r){const n=Wn(t);if(n===void 0)return;F0(t,r).forEach(l=>{l.configuration.brushSize=e,l.invalidateBrushCursor()});const o=n.getViewportsInfo(),a=Object.keys(o).map(l=>o[l]);if(!a.length)return;const{renderingEngineId:s}=a[0],c=n.getViewportIds();gr(s),pe(c)}function kpe(t,e){const r=Wn(t);if(r===void 0)return;const n=r._toolInstances;if(!Object.keys(n).length)return;const o=F0(t,e)[0];if(o)return o.configuration.brushSize}function Vpe(t,e,r={isDynamic:!1}){const n=Wn(t);if(n===void 0)return;const i=F0(t),o={...r,...e!==void 0&&{threshold:e}};i.forEach(l=>{l.configuration.strategySpecificConfiguration.THRESHOLD={...l.configuration.strategySpecificConfiguration.THRESHOLD,...o}});const a=n.getViewportsInfo();if(!a.length)return;const{renderingEngineId:s}=a[0],c=n.getViewportIds();gr(s),pe(c)}function Fpe(t){const e=Wn(t);if(e===void 0)return;const r=e._toolInstances;if(!Object.keys(r).length)return;const i=F0(t)[0];if(i)return i.configuration.strategySpecificConfiguration.THRESHOLD.threshold}function Upe(t,e,r,n){const{baseVolumeIdx:i,volumeInfoList:o}=aN(t,r),{voxelManager:a}=o[i],s=a,c=t.voxelManager.getScalarDataLength(),l=t.voxelManager;return o.forEach(f=>{const{volumeSize:u}=f;u===c?Gpe(l,s,e,f):Bpe(l,s,e,f,o,i,n)}),Ei(t.volumeId),t}function Bpe(t,e,r,n,i,o,a){const{imageData:s,lower:c,upper:l,dimensions:f}=n;let u,d,h;const g=t.getScalarDataLength();for(let p=0;p{u=u+1,y>=h.lower&&y<=h.upper&&(d=d+1)};u=0,d=0,h={lower:c,upper:l};let m=!1;t.forEach(x,{imageData:s,boundsIJK:v}),m=a===0?d>0:d===u,t.setAtIndex(p,m?r:0)}return{total:u,range:h,overlaps:d}}function Gpe(t,e,r,n){const{lower:i,upper:o}=n,a=t.getScalarDataLength();for(let s=0;s=i&&c<=o?r:0)}}function _E(t,e,r){const n=r.toIJK(t),i=r.toIJK(e),o=we(),{testIJK:a}=r,s=Qt(we(),n,i),c=Math.round(Math.max(...s.map(Math.abs)));if(c<2)return!0;const l=lr(we(),s,1/c);for(let f=1;f{const l=xn(we(),s,c).map(v=>v/2),f=n.imageData.worldToIndex(l).map(Math.round),[u,d,h]=f,g=u+d*o+h*a,p=i.getAtIndex(g);return p===e||(r==null?void 0:r.has(p))},toIJK:s=>n.imageData.worldToIndex(s),testIJK:s=>{const[c,l,f]=s,u=Math.round(c)+Math.round(l)*o+Math.round(f)*a,d=i.getAtIndex(u);return d===e||(r==null?void 0:r.has(d))}}}const ff=.01;function zpe(t,e,r){const{sliceContours:n}=t,{segmentIndex:i,containedSegmentIndices:o}=r;let a;const s=Wpe(e,i,o);for(const c of n){const l=$pe(c,s,a);l&&(a=l)}return a&&Object.assign(a,r),a}function $pe(t,e,r={maxMajor:0,maxMinor:0}){const{points:n}=t.polyData,{maxMinor:i,maxMajor:o}=r;let a=o*o,s=i*i,c;for(let v=0;vff||e.testCenter(m,y)&&_E(m,y,e)&&(s=w,d=[v,x])}if(!d)return;s=Math.sqrt(s);const h=n[d[0]],g=n[d[1]];return{majorAxis:[l,f],minorAxis:[h,g],maxMajor:a,maxMinor:s,...t}}const{Labelmap:jpe}=Ge;function NA(t){const e=wA({segmentations:t});if(!(e!=null&&e.length)||!e[0].sliceContours.length)return;const{representationData:r,segments:n=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=t,{volumeId:i}=r[jpe],o=n.findIndex(a=>!!a);if(o!==-1)return n[o].segmentIndex=o,zpe(e[0],i,n[o])}function PA(t,e){const{majorAxis:r,minorAxis:n,label:i="",sliceIndex:o}=t,[a,s]=r,[c,l]=n,f=[a,s,c,l];return{highlighted:!0,invalidated:!0,metadata:{toolName:"Bidirectional",...e.getViewReference({sliceIndex:o})},data:{handles:{points:f,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:i,cachedStats:{}},isLocked:!1,isVisible:!0}}const{transformWorldToIndex:Yg}=Yt;class yS extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Hpe}}){super(e,r),this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles;let u=c.worldToCanvas(f[0]),d=c.worldToCanvas(f[1]),h={start:{x:u[0],y:u[1]},end:{x:d[0],y:d[1]}},g=Pr([h.start.x,h.start.y],[h.end.x,h.end.y],[o[0],o[1]]);return g<=a||(u=c.worldToCanvas(f[2]),d=c.worldToCanvas(f[3]),h={start:{x:u[0],y:u[1]},end:{x:d[0],y:d[1]}},g=Pr([h.start.x,h.start.y],[h.end.x,h.end.y],[o[0],o[1]]),g<=a)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),re(a),pe(s),Qe(a),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,c=i.data;i.highlighted=!0;let l=!1,f;o.worldPosition?l=!0:f=c.handles.points.findIndex(d=>d===o);const u=He(s,this.getToolName());Qe(s),this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),re(s),pe(u),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(!(c&&!l)){if(f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.editData.handleIndex!==void 0){const{points:u}=f.handles,d=Cr(u[0],u[1]);if(Cr(u[2],u[3])>d){const g=[[...u[2]],[...u[3]]],p=[...u[0]],v=[...u[1]],x=ot();eo(x,g[1][0]-g[0][0],g[1][1]-g[1][0]);const m=ot();eo(m,-x[1],x[0]);const y=ot();eo(y,v[0]-p[0],v[1]-p[0]);let w;Ew(y,m)>0?w=[p,v]:w=[v,p],f.handles.points=[g[0],g[1],w[0],w[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1}},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=re(a),{renderingEngine:c,viewport:l}=s,{worldToCanvas:f}=l,{annotation:u,viewportIdsToRender:d,handleIndex:h}=this.editData,{data:g}=u,p=o.world;g.handles.points[h]=[...p];const v=g.handles.points.map(f),x={longLineSegment:{start:{x:v[0][0],y:v[0][1]},end:{x:v[1][0],y:v[1][1]}},shortLineSegment:{start:{x:v[2][0],y:v[2][1]},end:{x:v[3][0],y:v[3][1]}}},y=bn(v[0],v[1])/3,w=x.longLineSegment.start.x-x.longLineSegment.end.x,C=x.longLineSegment.start.y-x.longLineSegment.end.y,S=Math.sqrt(w*w+C*C),T=w/S,_=C/S,E=(x.longLineSegment.start.x+x.longLineSegment.end.x)/2,D=(x.longLineSegment.start.y+x.longLineSegment.end.y)/2,b=E+y*_,I=D-y*T,R=E-y*_,M=D+y*T;g.handles.points[2]=l.canvasToWorld([b,I]),g.handles.points[3]=l.canvasToWorld([R,M]),u.invalidated=!0,pe(d),this.editData.hasMoved=!0},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i;re(o);const{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else this._dragModifyHandle(n),a.invalidated=!0;pe(s)},this._dragModifyHandle=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=re(a),{viewport:c}=s,{annotation:l,handleIndex:f}=this.editData,{data:u}=l,d=o.world,h=[c.worldToCanvas(u.handles.points[0]),c.worldToCanvas(u.handles.points[1]),c.worldToCanvas(u.handles.points[2]),c.worldToCanvas(u.handles.points[3])],g={start:{x:h[0][0],y:h[0][1]},end:{x:h[1][0],y:h[1][1]}},p={start:{x:h[2][0],y:h[2][1]},end:{x:h[3][0],y:h[3][1]}},v=[...d],x=c.worldToCanvas(v);if(f===0||f===1){const y=h[f===0?1:0],w=eo(ot(),x[0]-y[0],x[1]-y[1]),C=eo(ot(),h[f][0]-y[0],h[f][1]-y[1]);Na(w,w),Na(C,C);const S={start:{x:y[0],y:y[1]},end:{x:x[0],y:x[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(S,p))return;const T=y,_=this._getSignedAngle(C,w);let E=h[2][0],D=h[2][1],b=h[3][0],I=h[3][1];E-=T[0],D-=T[1],b-=T[0],I-=T[1];const R=E*Math.cos(_)-D*Math.sin(_),M=E*Math.sin(_)+D*Math.cos(_),L=b*Math.cos(_)-I*Math.sin(_),A=b*Math.sin(_)+I*Math.cos(_);E=R+T[0],D=M+T[1],b=L+T[0],I=A+T[1];const G=c.canvasToWorld([E,D]),P=c.canvasToWorld([b,I]);u.handles.points[f]=v,u.handles.points[2]=G,u.handles.points[3]=P}else{const m=f===2?3:2,y={longLineSegment:{start:g.start,end:g.end},shortLineSegment:{start:p.start,end:p.end}},w=kn(ot(),[y.longLineSegment.end.x,y.longLineSegment.end.y],[y.longLineSegment.start.x,y.longLineSegment.start.y]),C=Na(ot(),w),S=kn(ot(),[x[0],x[1]],[h[f][0],h[f][1]]),T=z5(S),_=this._getSignedAngle(C,S),E=Math.cos(_)*T,D=aj(ot(),[h[m][0],h[m][1]],C,E);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:x[0],y:x[1]},end:{x:D[0],y:D[1]}},{start:{x:y.longLineSegment.start.x,y:y.longLineSegment.start.y},end:{x:y.longLineSegment.end.x,y:y.longLineSegment.end.y}})||!b3([x[0],x[1]],[D[0],D[1]],[g.start.x,g.start.y],[g.end.x,g.end.y]))return;u.handles.points[m]=c.canvasToWorld(D),u.handles.points[f]=v}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragDrawCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragDrawCallback)},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!0;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(H));u.annotationUID=g;const{color:y,lineWidth:w,lineDash:C,shadow:S}=this.getAnnotationStyle({annotation:h,styleSpecifier:u});if(!p.cachedStats[l]||p.cachedStats[l].unit==null?(p.cachedStats[l]={length:null,width:null,unit:null},this._calculateCachedStats(h,f,n)):h.invalidated&&this._throttledCalculateCachedStats(h,f,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let T;if(!Ur(g))continue;!rr(g)&&!this.editData&&x!==null&&(T=[m[x]]),T&&sn(i,g,"0",T,{color:y});const _=`${g}-line-1`,E=`${g}-line-2`;It(i,g,"0",m[0],m[1],{color:y,lineDash:C,lineWidth:w,shadow:S},_),It(i,g,"1",m[2],m[3],{color:y,lineDash:C,lineWidth:w,shadow:S},E),o=!0;const I=this.getLinkedTextBoxStyle(u,h);if(!I.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const R=this.configuration.getTextLines(p,l);if(!R||R.length===0)continue;let M;p.handles.textBox.hasMoved||(M=$i(m),p.handles.textBox.worldPosition=a.canvasToWorld(M));const L=a.worldToCanvas(p.handles.textBox.worldPosition),G=ei(i,g,"1",R,L,m,{},I),{x:P,y:N,width:V,height:$}=G;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([P,N]),topRight:a.canvasToWorld([P+V,N]),bottomLeft:a.canvasToWorld([P,N+$]),bottomRight:a.canvasToWorld([P+V,N+$])}}return o},this._movingLongAxisWouldPutItThroughShortAxis=(n,i)=>{const o=ot();eo(o,i.end.x-i.start.x,i.end.y-i.start.y),Na(o,o);const a={start:{x:i.start.x-o[0]*10,y:i.start.y-o[1]*10},end:{x:i.end.x+o[0]*10,y:i.end.y+o[1]*10}};return!b3([a.start.x,a.start.y],[a.end.x,a.end.y],[n.start.x,n.start.y],[n.end.x,n.end.y])},this._calculateCachedStats=(n,i,o)=>{const{data:a}=n,{element:s}=o.viewport,c=a.handles.points[0],l=a.handles.points[1],f=a.handles.points[2],u=a.handles.points[3],{cachedStats:d}=a,h=Object.keys(d);for(let g=0;gM?R:M,A=R>M?M:R,G=R>M?D:I,P=R>M?I:D;this._isInsideVolume(y,w,C,S,m)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,d[p]={length:L,width:A,unit:G,widthUnit:P}}return n.invalidated=!1,fn(n,s),d},this._isInsideVolume=(n,i,o,a,s)=>In(n,s)&&In(i,s)&&In(o,s)&&In(a,s),this._getSignedAngle=(n,i)=>Math.atan2(n[0]*i[1]-n[1]*i[0],n[0]*i[0]+n[1]*i[1]),this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,o=n.world,a=re(i),{viewport:s,renderingEngine:c}=a;this.isDrawing=!0;const l=s.getCamera(),{viewPlaneNormal:f,viewUp:u}=l,d=this.getReferencedImageId(s,o,f,u),h=s.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...f],viewUp:[...u],FrameOfReferenceUID:h,referencedImageId:d,...s.getViewReference({points:[o]})},data:{handles:{points:[[...o],[...o],[...o],[...o]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};Ut(g,i);const p=He(i,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),Qe(i),e.preventDefault(),pe(p),g}_calculateLength(e,r){const n=e[0]-r[0],i=e[1]-r[1],o=e[2]-r[2];return Math.sqrt(n*n+i*i+o*o)}}function Hpe(t,e){const{cachedStats:r,label:n}=t,{length:i,width:o,unit:a}=r[e],s=[];return n&&s.push(n),i===void 0||s.push(`L: ${yt(i)} ${a||a}`,`W: ${yt(o)} ${a}`),s}yS.toolName="Bidirectional";function Kpe(t,e){const{data:r}=e,n=re(t),i=(r.getSegment||qpe)(n,r);if(!i)return;const o=n.viewport.getFrameOfReferenceUID(),a=N2(),{segmentIndex:s,segmentationId:c}=i,l=_t(this.toolName||yS.toolName,o);let f=!1;const u=l.filter(h=>{const g=h.data.segment;return g?(g.segmentationId===c&&g.segmentIndex===s&&(f=!0,h.data.segment=g),!0):!1});f||u.push({data:{segment:i}});let d;if(u.forEach(h=>{const g=[],p=h.data.segment,{segmentIndex:v,segmentationId:x}=p;g[v]=p,Ot(h.annotationUID);const m=NA({...a.find(C=>C.segmentationId===x),segments:g});if(!m)return;const y=PA(m,n.viewport);y.annotationUID=h.annotationUID,y.data.segment=p;const w=Ut(y,o);if(p.segmentIndex===i.segmentIndex&&p.segmentationId===i.segmentationId){d=m;const{style:C}=i;C&&DC.setAnnotationStyles(w,C)}}),d){const{sliceIndex:h}=d,g=n.viewport.getImageIds();Ho(t,{imageIndex:g.length-1-h}),n.viewport.render()}else console.warn("No bidirectional found");return d}function qpe(t,e){var a;const r=N2();if(!r.length)return;const n=e.segmentationId||r[0].segmentationId,i=e.segmentIndex??No(n);if(!i)return;const o=(a=e.segmentData)==null?void 0:a.get(i);return{label:`Segment ${i}`,segmentIndex:i,segmentationId:n,...o}}function AA(t){const e=Wn(t);if(e===void 0)return;F0(t).forEach(a=>{a.invalidateBrushCursor()});const n=e.getViewportsInfo();if(!Object.keys(n).map(a=>n[a]).length)return;const o=e.getViewportIds();pe(o)}function kA(t,e,r={}){const n=Ct(t),i=n.representationData,o=(r==null?void 0:r.representationType)??Object.keys(i)[0];if(!o)throw new Error(`Segmentation ${t} does not have any representations`);switch(o){case Ge.Labelmap:return Xpe(n,e,r);case Ge.Contour:return Ype(n,e,r);default:return}}function Xpe(t,e,{viewport:r}){const n=t.representationData.Labelmap;if(r instanceof Mn){const{volumeId:d}=n,h=_e.getVolume(d);return h?h.imageData.getScalarValueFromWorld(e):void 0}const i=Gi(r.id,t.segmentationId);if(!_e.getImage(i))return;const a=Ga(r.id,t.segmentationId),s=a==null?void 0:a.actor.getMapper().getInputData(),c=Gn(s,e),l=s.getDimensions();return(s.voxelManager||es.createScalarVolumeVoxelManager({dimensions:l,scalarData:s.getPointData().getScalars().getData()})).getAtIJKPoint(c)}function Ype(t,e,{viewport:r}){const n=t.representationData.Contour,i=Array.from(n.annotationUIDsMap.keys()),{viewPlaneNormal:o}=r.getCamera();for(const a of i){const s=n.annotationUIDsMap.get(a);if(s)for(const c of s){const l=On(c);if(!l)continue;const{polyline:f}=l.data.contour;if(pt(o,l.metadata.viewPlaneNormal)&&AN(e,f))return Number(a)}}}function VA(t,e,{viewport:r,searchRadius:n}){const o=Ct(t).representationData.Labelmap;if(r instanceof Mn){const{volumeId:p}=o,v=_e.getVolume(p);if(!v)return;const x=v.voxelManager,m=v.imageData,y=Gn(m,e),w=x.getAtIJK(y[0],y[1],y[2]),C=r.worldToCanvas(e);return Zpe(C,w,r,m,n)?w:void 0}const a=Gi(r.id,t);if(!_e.getImage(a))return;const c=Ga(r.id,t),l=c==null?void 0:c.actor.getMapper().getInputData(),f=Gn(l,e),u=l.getDimensions(),d=l.voxelManager||es.createScalarVolumeVoxelManager({dimensions:u,scalarData:l.getPointData().getScalars().getData()}),h=d.getAtIJKPoint(f);return Jpe(f,u,d,h)?h:void 0}function FA(t,e,r=1){const n=Array.from({length:2*r+1},(i,o)=>o-r);for(const i of n)for(const o of n)for(const a of n){if(i===0&&o===0&&a===0)continue;const s=t(i,o,a);if(s!==void 0&&e!==s)return!0}return!1}function Jpe(t,e,r,n,i){return FA((a,s,c)=>{const l=[t[0]+a,t[1]+s,t[2]+c];return r.getAtIJK(l[0],l[1],l[2])},n,i)}function Zpe(t,e,r,n,i){return FA((a,s)=>{const c=[t[0]+a,t[1]+s],l=r.canvasToWorld(c),f=n.get("voxelManager").voxelManager,u=Gn(n,l);return f.getAtIJK(u[0],u[1],u[2])},e,i)}function UA(t){const e=Ct(t),{annotationUIDsMap:r}=e.representationData.Contour;for(const[n,i]of r.entries())if(Array.from(i).find(a=>On(a).highlighted))return n}const Qpe=Object.freeze(Object.defineProperty({__proto__:null,contourAndFindLargestBidirectional:NA,createBidirectionalToolData:PA,createLabelmapVolumeForViewport:gpe,createMergedLabelmapForIndex:hpe,floodFill:xm,getBrushSizeForToolGroup:kpe,getBrushThresholdForToolGroup:Fpe,getBrushToolInstances:F0,getHoveredContourSegmentationAnnotation:UA,getSegmentIndexAtLabelmapBorder:VA,getSegmentIndexAtWorldPoint:kA,getUniqueSegmentIndices:ga,invalidateBrushCursor:AA,rectangleROIThresholdVolumeByRange:fpe,segmentContourAction:Kpe,setBrushSizeForToolGroup:Ape,setBrushThresholdForToolGroup:Vpe,thresholdSegmentationByRange:Upe,thresholdVolumeByRange:SA,triggerSegmentationRender:A0,triggerSegmentationRenderBySegmentationId:L2},Symbol.toStringTag,{value:"Module"}));function e1e(t){let e="";const r=t[0]<0?"R":"L",n=t[1]<0?"A":"P",i=t[2]<0?"F":"H",o=[Math.abs(t[0]),Math.abs(t[1]),Math.abs(t[2])],a=1e-4;for(let s=0;s<3;s++)if(o[0]>a&&o[0]>o[1]&&o[0]>o[2])e+=r,o[0]=0;else if(o[1]>a&&o[1]>o[0]&&o[1]>o[2])e+=n,o[1]=0;else if(o[2]>a&&o[2]>o[0]&&o[2]>o[1])e+=i,o[2]=0;else if(o[0]>a&&o[1]>a&&o[0]===o[1])e+=r+n,o[0]=0,o[1]=0;else if(o[0]>a&&o[2]>a&&o[0]===o[2])e+=r+i,o[0]=0,o[2]=0;else if(o[1]>a&&o[2]>a&&o[1]===o[2])e+=n+i,o[1]=0,o[2]=0;else break;return e}function t1e(t){let e=t.replace("H","f");return e=e.replace("F","h"),e=e.replace("R","l"),e=e.replace("L","r"),e=e.replace("A","p"),e=e.replace("P","a"),e=e.toUpperCase(),e}const n1e=Object.freeze(Object.defineProperty({__proto__:null,getOrientationStringLPS:e1e,invertOrientationStringLPS:t1e},Symbol.toStringTag,{value:"Module"}));var k3;(function(t){t.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",t.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED"})(k3||(k3={}));const Hp=k3,xS={};function BA(t,e){const r=re(t),{viewportId:n}=r;xS[n]=e}function wS(t){const e=re(t),{viewportId:r}=e;return xS[r]}function r1e(t){return xS[t]}const{ViewportStatus:GA}=Ao,{triggerEvent:hy}=Yt,WA=!0,V3=new Map;function i1e(t,e){let r,n;if(t===void 0)throw new Error("playClip: element must not be undefined");const i=re(t);if(!i)throw new Error("playClip: element must be a valid Cornerstone enabled element");e||(e={}),e.dynamicCineEnabled=e.dynamicCineEnabled??!0;const{viewport:o}=i,a=u1e(o,e);let s=wS(t);const c=e.dynamicCineEnabled;if(c&&$A(t),s?F3(t,{stopDynamicCine:!c,viewportId:o.id}):(s={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:e.frameTimeVector??void 0,speed:e.frameTimeVectorSpeedMultiplier??1,reverse:e.reverse??!1,loop:e.loop??!0},BA(t,s)),s.dynamicCineEnabled=e.dynamicCineEnabled,(e.framesPerSecond<0||e.framesPerSecond>0)&&(s.framesPerSecond=Number(e.framesPerSecond),s.reverse=s.framesPerSecond<0,s.ignoreFrameTimeVector=!0),s.ignoreFrameTimeVector!==!0&&s.frameTimeVector&&s.frameTimeVector.length===a.numScrollSteps&&a.frameTimeVectorEnabled){const{timeouts:u,isTimeVarying:d}=o1e(s.frameTimeVector,s.speed);r=u,n=d}const l=()=>{const{numScrollSteps:u,currentStepIndex:d}=a;let h=d+(s.reverse?-1:1);const g=h<0||h>=u;if(!s.loop&&g){F3(t,{stopDynamicCine:!c,viewportId:o.id});const v={element:t};hy(t,Hp.CLIP_STOPPED,v);return}h>=u?h=0:h<0&&(h=u-1);const p=h-d;if(p)try{a.scroll(p)}catch(v){console.warn("Play clip not scrolling",v),jA(s),hy(t,Hp.CLIP_STOPPED,f);return}};if(c){const u=CS(o);u&&V3.set(u.volumeId,t)}a.play?s.framesPerSecond=a.play(e.framesPerSecond):r&&r.length>0&&n?(s.usingFrameTimeVector=!0,s.intervalId=window.setTimeout(function u(){s.intervalId=window.setTimeout(u,r[a.currentStepIndex]),l()},0)):(s.usingFrameTimeVector=!1,s.intervalId=window.setInterval(l,1e3/Math.abs(s.framesPerSecond)));const f={element:t};hy(t,Hp.CLIP_STARTED,f)}function zA(t,e={}){F3(t,{stopDynamicCine:!0,...e})}function F3(t,e={stopDynamicCine:!0,viewportId:void 0}){const{stopDynamicCine:r,viewportId:n}=e,i=re(t);let o;const a=i==null?void 0:i.viewport;if(i){const{viewport:s}=i;o=wS(s.element)}else if(n)o=r1e(n);else return;o&&jA(o),a instanceof Vd?a.pause():r&&a instanceof Mn&&$A(t)}function $A(t){const{viewport:e}=re(t),r=CS(e);if(r!=null&&r.isDynamicVolume()){const n=V3.get(r.volumeId);V3.delete(r.volumeId),n&&n!==t&&zA(n)}}function o1e(t,e){let r,n,i,o=0;const a=t.length,s=[];let c=!1;for((typeof e!="number"||e<=0)&&(e=1),r=1;r0&&(c?i=o/s.length|0:i=s[0],s.push(i)),{timeouts:s,isTimeVarying:c}}function jA(t){const e=t.intervalId;typeof e<"u"&&(t.intervalId=void 0,t.usingFrameTimeVector?clearTimeout(e):clearInterval(e))}function CS(t){const e=t.getAllVolumeIds(),n=e.find(i=>{var o;return(o=_e.getVolume(i))==null?void 0:o.isDynamicVolume()})??e[0];return _e.getVolume(n)}function a1e(t,e){const r=t.getImageIds();return{get numScrollSteps(){return r.length},get currentStepIndex(){return t.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(n){if(this.waitForRenderedCount<=e&&t.viewportStatus!==GA.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,fl(t,{delta:n,debounceLoading:WA})}}}function s1e(t,e){return{get numScrollSteps(){return t.getNumberOfSlices()},get currentStepIndex(){return t.getSliceIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(r){if(this.waitForRenderedCount<=e&&t.viewportStatus!==GA.RENDERED){this.waitForRenderedCount++;return}this.waitForRenderedCount=0,fl(t,{delta:r,debounceLoading:WA})},play(r){return r&&t.setPlaybackRate(r/24),t.play(),t.getFrameRate()}}}function c1e(t,e){const{volumeId:r}=e,n={viewPlaneNormal:we(),scrollInfo:null},i=()=>{const o=t.getCamera();if(!n.scrollInfo||!W5(o.viewPlaneNormal,n.viewPlaneNormal)){const s=Iu(t,r);n.viewPlaneNormal=o.viewPlaneNormal,n.scrollInfo=s}return n.scrollInfo};return{get numScrollSteps(){return i().numScrollSteps},get currentStepIndex(){return i().currentStepIndex},get frameTimeVectorEnabled(){const o=t.getCamera(),a=e.direction.slice(6,9).map(c=>-c),s=je(a,o.viewPlaneNormal);return Xs(s,1)},scroll(o){i().currentStepIndex+=o,fl(t,{delta:o})}}}function l1e(t){return{get numScrollSteps(){return t.numTimePoints},get currentStepIndex(){return t.timePointIndex},get frameTimeVectorEnabled(){return!1},scroll(e){t.scroll(e)}}}function u1e(t,e){if(t instanceof ln)return a1e(t,e.waitForRendered??30);if(t instanceof an){const r=CS(t);return e.dynamicCineEnabled&&(r!=null&&r.isDynamicVolume())?l1e(r):c1e(t,r)}if(t instanceof Vd)return s1e(t,e.waitForRendered??30);throw new Error("Unknown viewport type")}const f1e=Object.freeze(Object.defineProperty({__proto__:null,Events:Hp,addToolState:BA,getToolState:wS,playClip:i1e,stopClip:zA},Symbol.toStringTag,{value:"Module"}));function d1e(t,e){var n,i,o;const r=(e==null?void 0:e.knotsRatioPercentage)||30;return!((o=(i=(n=t==null?void 0:t.data)==null?void 0:n.contour)==null?void 0:i.polyline)!=null&&o.length)||r<=0}function h1e(t,e){const r=lo(),n=xn(we(),e,t),i=Math.abs(t[0])>.1?Ye(-t[1],t[0],0):Ye(0,-t[2],t[1]);return Sw(r,e,n,i),r}function Jg(t,e=Math.floor(Math.random()*(t.length-1))){if(e===0)return 0;const r=[...t],{length:n}=t;for(let i=0;i{const u=et(we(),f,o);return[u[0],u[1]]});let s=n?Jg(a):0,c=M3(a,0,a.length,(e==null?void 0:e.knotsRatioPercentage)||30);if(c===a)return!1;Jg(c,-s);for(let f=1;f<(e==null?void 0:e.loop);f++)s=n?Jg(c):0,c=M3(c,0,a.length,(e==null?void 0:e.knotsRatioPercentage)||30),Jg(c,-s);const l=$n(lo(),o);return t.data.contour.polyline=c.map(f=>et([0,0,0],[...f,0],l)),!0}const g1e={smoothAnnotation:HA},p1e=Object.freeze(Object.defineProperty({__proto__:null,default:g1e,smoothAnnotation:HA},Symbol.toStringTag,{value:"Module"})),{isEqual:Zg}=Yt,m1e=Ye(1,0,0),v1e=Ye(0,1,0),y1e=Ye(0,0,1),EE=[m1e,v1e,y1e];function KA(t){const e=kt(we(),t[0],t[1]),r=kt(we(),t[0],t[2]),n=DE(e,EE),i=DE(r,EE);return[...n,...i].every(a=>Zg(a,0)||Zg(a,90)||Zg(a,180)||Zg(a,270))}function DE(t,e){return e.map(r=>Tw(t,r)*180/Math.PI)}const x1e=Object.freeze(Object.defineProperty({__proto__:null,getBoundsIJKFromRectangleAnnotations:TA,isAxisAlignedRectangle:KA},Symbol.toStringTag,{value:"Module"})),qA={};function XA(t,e){const r=re(t),{viewportId:n}=r;qA[n]=e}function U0(t){const e=re(t),{viewportId:r}=e;return qA[r]}const Zc=ht.Prefetch,YA=0;function w1e(t,e){t=Math.round(t)||0,e=Math.round(e)||0;const r=[];let n=e-t+1;if(n<=0)return r;for(;n--;)r[n]=e--;return r}function C1e(t,e){let r=0,n=t.length-1;return t.forEach((i,o)=>{ie&&(n=Math.min(o,n))}),{low:r,high:n}}function B0(t){const e=re(t);if(!e)return null;const{viewport:r}=e;return r instanceof ln?{currentImageIdIndex:r.getCurrentImageIdIndex(),imageIds:r.getImageIds()}:null}function A2(t){return function(e){const r=e.detail;let n;try{n=B0(t)}catch{return}if(!n||!n.imageIds||n.imageIds.length===0)return;const o=n.imageIds.indexOf(r.imageId);if(o<0)return;const a=U0(t);!a||!a.indicesToRequest||!a.indicesToRequest.length||a.indicesToRequest.push(o)}}const S1e=t=>{const e=new Set(t.imageIds);return r=>r.type!==Zc||!e.has(r.additionalDetails.imageId)};let Qf={maxImagesToPrefetch:1/0,preserveExistingPool:!0},U3;const T1e=10;function JA(t){var g,p;const e=U0(t);if(!e)return;const r=e||{},n=B0(t);if(!((g=n==null?void 0:n.imageIds)!=null&&g.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const{currentImageIdIndex:i}=n;if(r.enabled=r.enabled&&(((p=r.indicesToRequest)==null?void 0:p.length)??0)>0,r.enabled===!1)return;function o(v){const x=r.indicesToRequest.indexOf(v);x>-1&&r.indicesToRequest.splice(x,1)}if(e.indicesToRequest.sort((v,x)=>v-x),r.indicesToRequest.slice().forEach(function(v){const x=n.imageIds[v];if(!x)return;(Math.abs(i-v)<6?_e.getImageLoadObject(x):_e.isLoaded(x))&&o(v)}),!r.indicesToRequest.length)return;Qf.preserveExistingPool||fi.clearRequestStack(Zc);const s=C1e(r.indicesToRequest,n.currentImageIdIndex);let c,l,f=s.low,u=s.high;const d=[];for(;f>=0||uQf.maxImagesToPrefetch,m=r.indicesToRequest[u]-v>Qf.maxImagesToPrefetch,y=!x&&f>=0,w=!m&&uJs(v,x);d.forEach(v=>{const x={requestType:Zc};fi.addRequest(h.bind(null,v,x),Zc,{imageId:v},YA)})}function B3(t){clearTimeout(U3),U3=setTimeout(function(){const e=t.target;try{JA(e)}catch{return}},T1e)}function _1e(t){const e=B0(t);if(!e||!e.imageIds||e.imageIds.length===0){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const r={indicesToRequest:w1e(0,e.imageIds.length-1),enabled:!0,direction:1},n=r.indicesToRequest.indexOf(e.currentImageIdIndex);r.indicesToRequest.splice(n,1),XA(t,r),JA(t),t.removeEventListener(Se.STACK_NEW_IMAGE,B3),t.addEventListener(Se.STACK_NEW_IMAGE,B3);const i=A2(t);Ce.removeEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,i),Ce.addEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,i)}function E1e(t){clearTimeout(U3),t.removeEventListener(Se.STACK_NEW_IMAGE,B3);const e=A2(t);Ce.removeEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,e);const r=U0(t);r&&r.indicesToRequest.length&&(r.enabled=!1,fi.clearRequestStack(Zc))}function D1e(){return Qf}function b1e(t){Qf=t}const I1e={enable:_1e,disable:E1e,getConfiguration:D1e,setConfiguration:b1e};let Yd={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1},G3;const O1e=5,M1e=t=>{var n;const e=B0(t);if(!e)return;if(!((n=e.imageIds)!=null&&n.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}TS(t),SS(t),t.removeEventListener(Se.STACK_NEW_IMAGE,W3),t.addEventListener(Se.STACK_NEW_IMAGE,W3);const r=A2(t);Ce.removeEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,r),Ce.addEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,r)};function SS(t){var l,f;const e=B0(t);if(!e)return;if(!((l=e==null?void 0:e.imageIds)!=null&&l.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const r=U0(t);if(!r)return;const n=r||{};if(n.enabled=n.enabled&&(((f=n.indicesToRequest)==null?void 0:f.length)??0)>0,n.enabled===!1)return;function i(u){const d=n.indicesToRequest.indexOf(u);d>-1&&n.indicesToRequest.splice(d,1)}const o=n.indicesToRequest.slice(),{currentImageIdIndex:a}=e;if(o.forEach(u=>{const d=e.imageIds[u];if(!d)return;(Math.abs(a-u)<6?_e.getImageLoadObject(d):_e.isLoaded(d))&&i(u)}),!n.indicesToRequest.length)return;Yd.preserveExistingPool||fi.filterRequests(S1e(e));function s(u){var v,x;const d=e.imageIds.indexOf(u);i(d);const h=_e.getCachedImageBasedOnImageURI(u),{stats:g}=n,p=((v=h==null?void 0:h.image)==null?void 0:v.decodeTimeInMS)||0;if(p){g.imageIds.set(u,p),g.decodeTimeInMS+=p;const m=((x=h==null?void 0:h.image)==null?void 0:x.loadTimeInMS)||0;g.loadTimeInMS+=m}if(!n.indicesToRequest.length&&h!=null&&h.sizeInBytes){const{sizeInBytes:m}=h,y=_e.getMaxCacheSize()/4/m;if(!n.cacheFill)g.initialTime=Date.now()-g.start,g.initialSize=g.imageIds.size,TS(t,y),SS(t);else if(g.imageIds.size){g.fillTime=Date.now()-g.start;const{size:w}=g.imageIds;g.fillSize=w}}}const c=(u,d)=>Js(u,d).then(()=>s(u));n.indicesToRequest.forEach(u=>{const d=e.imageIds[u],h={requestType:Zc};fi.addRequest(c.bind(null,d,h),Zc,{imageId:d},YA)})}function W3(t){clearTimeout(G3),G3=setTimeout(function(){const e=t.target;try{TS(e),SS(e)}catch{return}},O1e)}const R1e=t=>t<0?-1:1,TS=(t,e)=>{var d;const r=B0(t);if(!r)return;if(!((d=r.imageIds)!=null&&d.length)){console.warn("CornerstoneTools.stackPrefetch: No images in stack.");return}const{currentImageIdIndex:n}=r;let{maxAfter:i=2,minBefore:o=2}=Yd;const{directionExtraImages:a=10}=Yd,s=U0(t)||{indicesToRequest:[],currentImageIdIndex:n,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},c=n-s.currentImageIdIndex;if(s.direction=R1e(c),s.currentImageIdIndex=n,s.enabled=!0,s.stackCount<100&&(s.stackCount+=a),Math.abs(c)>i||!c)if(s.stackCount=0,e){const h=n/r.imageIds.length;o=Math.ceil(e*h),i=Math.ceil(e*(1-h)),s.cacheFill=!0}else s.cacheFill=!1;else c<0?(o+=s.stackCount,i=0):(i+=s.stackCount,o=0);const l=Math.max(0,n-o),f=Math.min(r.imageIds.length-1,n+i),u=[];for(let h=n+1;h<=f;h++)u.push(h);for(let h=n-1;h>=l;h--)u.push(h);s.indicesToRequest=u,XA(t,s)};function L1e(t){clearTimeout(G3),t.removeEventListener(Se.STACK_NEW_IMAGE,W3);const e=A2(t);Ce.removeEventListener(Se.IMAGE_CACHE_IMAGE_REMOVED,e);const r=U0(t);r&&(r.enabled=!1)}function N1e(){return Yd}function P1e(t){Yd=t}const A1e={enable:M1e,disable:L1e,getConfiguration:N1e,setConfiguration:P1e},k1e=Object.freeze(Object.defineProperty({__proto__:null,isViewportPreScaled:os},Symbol.toStringTag,{value:"Module"}));function V1e(t,e){let r;const n=e.frameNumbers||[...Array(t.numTimePoints).keys()];if(!e.maskVolumeId&&!e.worldCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(e.maskVolumeId&&e.worldCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(e.maskVolumeId){const i=_e.getVolume(e.maskVolumeId);if(!i)throw new Error("Segmentation volume not found");const[o,a]=U1e(n,t,i);return[o,a]}return e.worldCoordinate?F1e(n,e.worldCoordinate,t):r}function F1e(t,e,r){const{dimensions:n,imageData:i}=r,o=i.worldToIndex(e);if(o[0]=Math.floor(o[0]),o[1]=Math.floor(o[1]),o[2]=Math.floor(o[2]),!In(o,n))throw new Error("outside bounds");const a=n[0],s=n[0]*n[1],c=[];return t.forEach(l=>{const f=o[2]*s+o[1]*a+o[0];c.push(r.voxelManager.getAtIndexAndTimePoint(f,l))}),c}function U1e(t,e,r){const{imageData:n}=r,i=r.voxelManager,o=i.getScalarDataLength(),a=[];a.length=o;let s=0;for(let d=0,h=o;d{if(h===0)return;const p=VC(e.imageData,e.dimensions,e.spacing,d);let v=0;const x=new Map;t.forEach(w=>x.set(w,0));const m=({index:w})=>{for(let C=0;C{y.push(w/v)}),f.push(g),c.push(y)};return r.voxelManager.forEach(u,{imageData:n}),[c,f]}function ZA(t,e){const r=t.getScalarDataLength(),n=new Float32Array(r);for(const i of e){const o=t.getTimePointScalarData(i);for(let a=0;a{const n=ZA(t,e);for(let i=0;i{const n=B1e(t,e);for(let i=0;i{if(e.length!==2)throw new Error("Please provide only 2 time points for subtraction.");const n=t.getScalarDataLength(),i=t.getTimePointScalarData(e[0]),o=t.getTimePointScalarData(e[1]);for(let a=0;a{c[l]=f}),c}function W1e(t,e,r){const{frameNumbers:n,targetVolume:i}=r;if(!i)throw new Error("A target volume must be provided");const o=n||[...Array(t.numTimePoints).keys()];if(o.length<=1)throw new Error("Please provide two or more time points");const a=t.voxelManager,s=i.voxelManager,c=QA[e];if(!c)throw new Error(`Unsupported operation: ${e}`);c(a,o,(l,f)=>{s.setAtIndex(l,f)}),s.resetModifiedSlices();for(let l=0;l{for(const[c,l]of s.entries())if(l!==void 0)return c;return-1};let a=o(n);for(;a!==-1;){const s=[a];for(;n.has(a);){const c=n.get(a)[1];n.has(c)&&s.push(c),n.delete(a),a=c}i.push(s),a=o(n)}return i.length?i:void 0}function nk(t){const e=tk(t);if(!e)return;const r=t.getPoints().getData();return e.map(n=>n.map(i=>ek(r,i)))}const $1e=Object.freeze(Object.defineProperty({__proto__:null,getPoint:ek,getPolyDataPointIndexes:tk,getPolyDataPoints:nk},Symbol.toStringTag,{value:"Module"}));var Ai;(function(t){t.Top="top",t.Left="left",t.Bottom="bottom",t.Right="right"})(Ai||(Ai={}));const j1e=Object.freeze(Object.defineProperty({__proto__:null,get ColorbarRangeTextPosition(){return Ai}},Symbol.toStringTag,{value:"Module"})),Aa=t=>t&&t.upper>t.lower,wm=t=>!!t&&t.width>0&&t.height>0,Jd=(t,e)=>!!t&&!!e&&t.lower===e.lower&&t.upper===e.upper,rk=(t,e)=>!!t&&!!e&&t.width===e.width&&t.height===e.height,H1e=(t,e,r)=>[t[0]*(1-r)+e[0]*r,t[1]*(1-r)+e[1]*r,t[2]*(1-r)+e[2]*r],{clamp:K1e}=Yt;class _S{constructor(e){_S.validateProps(e);const{colormap:r,size:n={width:20,height:100},imageRange:i={lower:0,upper:1},voiRange:o={lower:0,upper:1},container:a,showFullPixelValueRange:s=!1}=e;this._colormap=r,this._imageRange=i,this._voiRange=o,this._showFullImageRange=s,this._canvas=this._createRootElement(n),a&&this.appendTo(a)}get colormap(){return this._colormap}set colormap(e){this._colormap=e,this.render()}get size(){const{width:e,height:r}=this._canvas;return{width:e,height:r}}set size(e){const{_canvas:r}=this;!wm(e)||rk(r,e)||(this._setCanvasSize(r,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!Aa(e)||Jd(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!Aa(e)||Jd(e,this._voiRange)||(this._voiRange=e,this.render())}get showFullImageRange(){return this._showFullImageRange}set showFullImageRange(e){e!==this._showFullImageRange&&(this._showFullImageRange=e,this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}dispose(){const{_canvas:e}=this,{parentElement:r}=e;r==null||r.removeChild(e)}static validateProps(e){const{size:r,imageRange:n,voiRange:i}=e;if(r&&!wm(r))throw new Error('Invalid "size"');if(n&&!Aa(n))throw new Error('Invalid "imageRange"');if(i&&!Aa(i))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,r){const{width:n,height:i}=r;e.width=n,e.height=i,Object.assign(e.style,{width:`${n}px`,height:`${i}px`})}_createRootElement(e){const r=document.createElement("canvas");return Object.assign(r.style,{position:"absolute",top:"0",left:"0",pointerEvents:"none",boxSizing:"border-box"}),this._setCanvasSize(r,e),r}render(){if(!this._canvas.isConnected)return;const{_colormap:e}=this,{RGBPoints:r}=e,n=r.length/4,i=x=>{const m=4*x;if(!(x<0||x>=n))return{index:x,position:r[m],color:[r[m+1],r[m+2],r[m+3]]}},{width:o,height:a}=this._canvas,s=this._canvas.getContext("2d");if(!s)return;const c=o>a,l=c?o:a,{_voiRange:f}=this,u=this._showFullImageRange?this._imageRange:{...f},{windowWidth:d}=T0(f.lower,f.upper);let h,g=i(0);const p=(u.upper-u.lower)/(l-1);let v=u.lower;for(let x=0;xK1e(Math.round(C*255),0,255));s.fillStyle=`rgb(${w[0]}, ${w[1]}, ${w[2]})`,c?s.fillRect(x,0,1,a):s.fillRect(0,a-x-1,o,1),v+=p}}}const Tc={FONT:"10px Arial",COLOR:"white",TICK_SIZE:5,TICK_WIDTH:1,TICK_LABEL_MARGIN:3,MAX_NUM_TICKS:8,TICKS_STEPS:[1,2.5,5,10]};class ES{constructor(e){ES.validateProps(e);const{top:r=0,left:n=0,size:i={width:20,height:100},imageRange:o={lower:0,upper:1},voiRange:a={lower:0,upper:1},ticks:s,container:c,showFullPixelValueRange:l=!1}=e,{style:f,position:u}=s??{};this._imageRange=o,this._voiRange=a,this._font=(f==null?void 0:f.font)??Tc.FONT,this._color=(f==null?void 0:f.color)??Tc.COLOR,this._tickSize=(f==null?void 0:f.tickSize)??Tc.TICK_SIZE,this._tickWidth=(f==null?void 0:f.tickWidth)??Tc.TICK_WIDTH,this._labelMargin=(f==null?void 0:f.labelMargin)??Tc.TICK_LABEL_MARGIN,this._maxNumTicks=(f==null?void 0:f.maxNumTicks)??Tc.MAX_NUM_TICKS,this._rangeTextPosition=u??Ai.Right,this._showFullPixelValueRange=l,this._canvas=this._createCanvasElement(i,r,n),c&&this.appendTo(c)}get size(){const{width:e,height:r}=this._canvas;return{width:e,height:r}}set size(e){const{_canvas:r}=this;!wm(e)||rk(r,e)||(this._setCanvasSize(r,e),this.render())}get top(){return Number.parseInt(this._canvas.style.top)}set top(e){const{_canvas:r}=this,n=this.top;e!==n&&(r.style.top=`${e}px`,this.render())}get left(){return Number.parseInt(this._canvas.style.left)}set left(e){const{_canvas:r}=this,n=this.left;e!==n&&(r.style.left=`${e}px`,this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){!Aa(e)||Jd(e,this._imageRange)||(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){!Aa(e)||Jd(e,this._voiRange)||(this._voiRange=e,this.render())}get tickSize(){return this._tickSize}set tickSize(e){e!==this._tickSize&&(this._tickSize=e,this.render())}get tickWidth(){return this._tickWidth}set tickWidth(e){e!==this._tickWidth&&(this._tickWidth=e,this.render())}get color(){return this._color}set color(e){e!==this._color&&(this._color=e,this.render())}get showFullPixelValueRange(){return this._showFullPixelValueRange}set showFullPixelValueRange(e){e!==this._showFullPixelValueRange&&(this._showFullPixelValueRange=e,this.render())}get visible(){return this._canvas.style.display==="block"}set visible(e){e!==this.visible&&(this._canvas.style.display=e?"block":"none",e&&this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}static validateProps(e){const{size:r,imageRange:n,voiRange:i}=e;if(r&&!wm(r))throw new Error('Invalid "size"');if(n&&!Aa(n))throw new Error('Invalid "imageRange"');if(i&&!Aa(i))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,r){const{width:n,height:i}=r;e.width=n,e.height=i,Object.assign(e.style,{width:`${n}px`,height:`${i}px`})}_createCanvasElement(e,r,n){const i=document.createElement("canvas");return Object.assign(i.style,{display:"none",position:"absolute",boxSizing:"border-box",top:`${r}px`,left:`${n}px`}),this._setCanvasSize(i,e),i}_getTicks(e){const{lower:r,upper:n}=e,o=(n-r)/(this._maxNumTicks-1),a=Math.pow(10,-Math.floor(Math.log10(Math.abs(o)))),s=o*a,l=Tc.TICKS_STEPS.find(g=>g>=s)/a,f=Math.ceil(n/l)*l,u=Math.floor(r/l)*l,d=Math.round((f-u)/l)+1,h=[];for(let g=0;g=n,o=i?r:n,a=e.getContext("2d"),{_voiRange:s}=this,c=this._showFullPixelValueRange?this._imageRange:{...s},l=c.upper-c.lower,{ticks:f}=this._getTicks(c);a.clearRect(0,0,r,n),a.font=this._font,a.textBaseline="middle",a.fillStyle=this._color,a.strokeStyle=this._color,a.lineWidth=this.tickWidth,f.forEach(u=>{let d=Math.round(o*((u-c.lower)/l));if(i||(d=n-d),d<0||d>o)return;const h=u.toString(),g=a.measureText(h);let p;i?this._rangeTextPosition===Ai.Top?p=this._getTopTickInfo({position:d,labelMeasure:g}):p=this._getBottomTickInfo({position:d,labelMeasure:g}):this._rangeTextPosition===Ai.Left?p=this._getLeftTickInfo({position:d,labelMeasure:g}):p=this._getRightTickInfo({position:d});const{labelPoint:v,tickPoints:x}=p,{start:m,end:y}=x;return a.beginPath(),a.moveTo(m[0],m[1]),a.lineTo(y[0],y[1]),a.fillText(h,v[0],v[1]),a.stroke(),d})}}function q1e(t,e,r){return(t>=e?[Ai.Top,Ai.Bottom]:[Ai.Left,Ai.Right]).includes(r)}class X1e{constructor({id:e,container:r}){this._containerResizeCallback=n=>{let i,o;const{contentRect:a,contentBoxSize:s}=n[0];a?(i=a.width,o=a.height):s!=null&&s.length&&(i=s[0].inlineSize,o=s[0].blockSize),this._containerSize={width:i,height:o},this.onContainerResize()},this._id=e,this._containerSize={width:0,height:0},this._rootElement=this.createRootElement(e),this._containerResizeObserver=new ResizeObserver(this._containerResizeCallback),r&&this.appendTo(r)}get id(){return this._id}get rootElement(){return this._rootElement}appendTo(e){const{_rootElement:r,_containerResizeObserver:n}=this,{parentElement:i}=r;!e||e===i||(i&&n.unobserve(i),e.appendChild(r),n.observe(e))}destroy(){const{_rootElement:e,_containerResizeObserver:r}=this,{parentElement:n}=e;n==null||n.removeChild(e),r.disconnect()}get containerSize(){return{...this._containerSize}}createRootElement(e){const r=document.createElement("div");return r.id=e,r.classList.add("widget"),Object.assign(r.style,{width:"100%",height:"100%"}),r}onContainerResize(){}}const df={MULTIPLIER:1,RANGE_TEXT_POSITION:Ai.Right,TICKS_BAR_SIZE:50};class Zd extends X1e{constructor(e){var r;super(e),this._isMouseOver=!1,this._isInteracting=!1,this._mouseOverCallback=n=>{this._isMouseOver=!0,this.showTicks(),n.stopPropagation()},this._mouseOutCallback=n=>{this._isMouseOver=!1,this.hideTicks(),n.stopPropagation()},this._mouseDownCallback=n=>{this._isInteracting=!0,this.showTicks(),this._addVOIEventListeners(n),n.stopPropagation()},this._mouseDragCallback=(n,i)=>{const o=this.getVOIMultipliers(),a=this._getPointsFromMouseEvent(n),{points:s,voiRange:c}=i,l=Oo(ot(),a.local,s.local),f=l[0]*o[0],u=l[1]*o[1];if(!f&&!u)return;const{lower:d,upper:h}=c;let{windowWidth:g,windowCenter:p}=T0(d,h);g=Math.max(g+f,1),p+=u;const v=Gs(g,p);this.voiRange=v,n.stopPropagation(),n.preventDefault()},this._mouseUpCallback=n=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),n.stopPropagation()},this._eventListenersManager=new sR,this._colormaps=Zd.getColormapsMap(e),this._activeColormapName=Zd.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=((r=e.ticks)==null?void 0:r.position)??df.RANGE_TEXT_POSITION,this._canvas.appendTo(this.rootElement),this._ticksBar.appendTo(this.rootElement),this._addRootElementEventListeners()}get activeColormapName(){return this._activeColormapName}set activeColormapName(e){if(e===this._activeColormapName)return;const r=this._colormaps.get(e);if(!r){console.warn(`Invalid colormap name (${e})`);return}this._activeColormapName=e,this._canvas.colormap=r}get imageRange(){return this._canvas.imageRange}set imageRange(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}get voiRange(){return this._canvas.voiRange}set voiRange(e){const{voiRange:r}=this._canvas;!Aa(e)||Jd(e,r)||(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}get showFullImageRange(){return this._canvas.showFullImageRange}set showFullImageRange(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}destroy(){super.destroy(),this._eventListenersManager.reset()}createRootElement(){const e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}onContainerResize(){super.onContainerResize(),this.updateTicksBar(),this._canvas.size=this.containerSize}getVOIMultipliers(){return[df.MULTIPLIER,df.MULTIPLIER]}onVoiChange(e){}showTicks(){this.updateTicksBar(),this._ticksBar.visible=!0}hideTicks(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}static getColormapsMap(e){const{colormaps:r}=e;return r.reduce((n,i)=>n.set(i.Name,i),new Map)}static getInitialColormapName(e){const{activeColormapName:r,colormaps:n}=e;return!!r&&n.some(o=>o.Name===r)?r:n[0].Name}_createCanvas(e){const{imageRange:r,voiRange:n,showFullPixelValueRange:i}=e,o=this._colormaps.get(this._activeColormapName);return new _S({colormap:o,imageRange:r,voiRange:n,showFullPixelValueRange:i})}_createTicksBar(e){const r=e.ticks;return new ES({imageRange:e.imageRange,voiRange:e.voiRange,ticks:r,showFullPixelValueRange:e.showFullPixelValueRange})}_getPointsFromMouseEvent(e){const{rootElement:r}=this,n=[e.clientX,e.clientY],i=[e.pageX,e.pageY],o=r.getBoundingClientRect(),a=[i[0]-o.left-window.pageXOffset,i[1]-o.top-window.pageYOffset];return{client:n,page:i,local:a}}updateTicksBar(){const{width:e,height:r}=this.containerSize;if(e===0&&r===0)return;const{_ticksBar:n,_rangeTextPosition:i}=this,o=e>=r,a=o?e:df.TICKS_BAR_SIZE,s=o?df.TICKS_BAR_SIZE:r;if(!q1e(e,r,i))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");let c,l;n.size={width:a,height:s},o?(l=0,c=i===Ai.Top?-s:r):(c=0,l=i===Ai.Left?-a:e),n.top=c,n.left=l}_addRootElementEventListeners(){const{_eventListenersManager:e}=this,{rootElement:r}=this;e.addEventListener(r,"mouseover",this._mouseOverCallback),e.addEventListener(r,"mouseout",this._mouseOutCallback),e.addEventListener(r,"mousedown",this._mouseDownCallback)}_addVOIEventListeners(e){const{_eventListenersManager:r}=this,n=this._getPointsFromMouseEvent(e),i={...this._canvas.voiRange},o={points:n,voiRange:i};this._removeVOIEventListeners(),r.addEventListener(document,"voi.mouseup",this._mouseUpCallback),r.addEventListener(document,"voi.mousemove",a=>this._mouseDragCallback(a,o))}_removeVOIEventListeners(){const{_eventListenersManager:e}=this;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}const gy=4;function Y1e(t,e,r){if(SR(t,e)==="PT"){const{clientWidth:i,clientHeight:o}=t.element,a=5/Math.max(i,o),s=os(t,e),{fixedPTWindowWidth:c=!0}={},l=c?0:a;return s?[l,a]:[l,gy]}return[gy,gy]}const{Events:Qg}=Ao,ep={lower:-1e3,upper:1e3};class fu extends Zd{constructor(e){const{element:r,volumeId:n}=e,i=fu._getImageRange(r,n),o=fu._getVOIRange(r,n);super({...e,imageRange:i,voiRange:o}),this.autoHideTicks=()=>{if(this._hideTicksTimeoutId)return;const a=this._hideTicksTime-Date.now();a<=0?this.hideTicks():this._hideTicksTimeoutId=window.setTimeout(()=>{this._hideTicksTimeoutId=0,this.autoHideTicks()},a)},this._stackNewImageCallback=()=>{this.imageRange=fu._getImageRange(this._element)},this._imageVolumeModifiedCallback=a=>{const{volumeId:s}=a.detail;if(s!==this._volumeId)return;const{_element:c}=this;this.imageRange=fu._getImageRange(c,s)},this._viewportVOIModifiedCallback=a=>{const{viewportId:s,volumeId:c,range:l,colormap:f}=a.detail,{viewport:u}=this.enabledElement;s!==u.id||c!==this._volumeId||(this.voiRange=l,f&&(this.activeColormapName=f.name),this.showAndAutoHideTicks())},this._viewportColormapModifiedCallback=a=>{const{viewportId:s,colormap:c,volumeId:l}=a.detail,{viewport:f}=this.enabledElement;s!==f.id||l!==this._volumeId||(this.activeColormapName=c.name)},this._element=r,this._volumeId=n,this._addCornerstoneEventListener()}get element(){return this._element}get enabledElement(){return re(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return Y1e(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:r}=this.enabledElement;if(r instanceof ln)r.setProperties({voiRange:e}),r.render();else if(r instanceof an){const{_volumeId:n}=this,i=Th(n);r.setProperties({voiRange:e},n),i.forEach(o=>o.render())}}static _getImageRange(e,r){const n=re(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return ep;const s=o.getMapper().getInputData().getPointData().getScalars();let c;if(s)c=s.getRange();else{if(!r)throw new Error("volumeId is required when scalarData is not available");const l=_e.getVolume(r),[f,u]=l.voxelManager.getRange();c=[f,u]}return c[0]===0&&c[1]===0?ep:{lower:c[0],upper:c[1]}}static _getVOIRange(e,r){const n=re(e),{viewport:i}=n,o=i.getImageActor(r);if(!o)return ep;const a=o.getProperty().getRGBTransferFunction(0).getRange();return a[0]===0&&a[1]===0?ep:{lower:a[0],upper:a[1]}}showAndAutoHideTicks(e=1e3){this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;Ce.addEventListener(Qg.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(Qg.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(Qg.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(Qg.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}const J1e=Object.freeze(Object.defineProperty({__proto__:null,Colorbar:Zd,Enums:j1e,ViewportColorbar:fu},Symbol.toStringTag,{value:"Module"}));function ik(t,e,r,n,i){const o=[];let a=0;const s=t.scalarData;let c,l,f;if(t.color)for(l=0;lEA(s,f),imageData:t})}function rme(t,e,r){const[n,i]=t,o=Ye((n[0]+i[0])/2,(n[1]+i[1])/2,(n[2]+i[2])/2),a=Cr(n,i)/2;let s;if(!r){const c=z3(e,o),l=e.getSpacing(),f=Math.min(...l),u=Math.ceil(a/f);return s=[[c[0]-u,c[0]+u],[c[1]-u,c[1]+u],[c[2]-u,c[2]+u]],{boundsIJK:s,centerWorld:o,radiusWorld:a}}return s=ime(e,r,t,o,a),{boundsIJK:s,centerWorld:o,radiusWorld:a}}function ime(t,e,r,n,i){const[o,a]=r,s=t.getDimensions(),c=e.getCamera(),l=Ye(c.viewUp[0],c.viewUp[1],c.viewUp[2]),f=Ye(c.viewPlaneNormal[0],c.viewPlaneNormal[1],c.viewPlaneNormal[2]),u=we();Kt(u,l,f);const d=we(),h=we();Vt(d,a,f,i),Vt(h,o,f,-i),Vt(d,d,u,-i),Vt(h,h,u,i);const g=[z3(t,d),z3(t,h)];return Qs(g,s)}const ome=yt,ame=Object.freeze(Object.defineProperty({__proto__:null,annotationFrameRange:P3,annotationHydration:$le,boundingBox:Age,calibrateImageSpacing:Pge,cine:f1e,contourSegmentation:Xle,contours:cpe,debounce:S2,drawing:vfe,dynamicVolume:z1e,getAnnotationNearPoint:Rge,getAnnotationNearPointOnEnabledElement:hA,getCalibratedAspect:qC,getCalibratedLengthUnitsAndScale:Bi,getCalibratedProbeUnitsAndValue:fm,getClosestImageIdForStackViewport:HC,getSphereBoundsInfo:pA,getViewportForAnnotation:jp,isObject:BC,math:Due,orientation:n1e,planar:Nue,planarFreehandROITool:p1e,pointInSurroundingSphereCallback:nme,pointToString:KC,polyDataUtils:$1e,rectangleROITool:x1e,roundNumber:ome,segmentation:Qpe,stackContextPrefetch:A1e,stackPrefetch:I1e,throttle:Qr,touch:$ce,triggerAnnotationRender:L0,triggerAnnotationRenderForToolGroupIds:eP,triggerAnnotationRenderForViewportIds:pe,triggerEvent:De,viewport:k1e,viewportFilters:Fue,voi:tme},Symbol.toStringTag,{value:"Module"})),sme=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function sk(t,e){const r=Xt;t.forEach(n=>{r.updateSegmentation(n.segmentationId,n.payload),e||Di(n.segmentationId)})}function cme(t,e,r){Xt.setSegmentationRepresentationVisibility(t,e,r)}function lme(t,e,r){const n=Ti(t,e);n&&n.forEach(i=>{cme(t,{segmentationId:i.segmentationId,type:i.type},r)})}function ume(t,e){return tP(t,e)}function fme(t,e,r,n){const i=Ti(t,e);i&&(i.forEach(o=>{o.segments[r].visible=n}),L2(e.segmentationId),Jo(t,e.segmentationId))}function dme(t,e,r){return!ck(t,e).has(r)}function ck(t,e){const r=w2(t,e);return r?Object.entries(r.segments).reduce((i,[o,a])=>(a.visible||i.add(Number(o)),i),new Set):new Set}const hme=Object.freeze(Object.defineProperty({__proto__:null,getHiddenSegmentIndices:ck,getSegmentIndexVisibility:dme,getSegmentationRepresentationVisibility:ume,setSegmentIndexVisibility:fme,setSegmentationRepresentationVisibility:lme},Symbol.toStringTag,{value:"Module"}));function gme(t){return Fi.getStyle(t)}function pme(t,e){Fi.setStyle(t,e),!t.viewportId&&!t.segmentationId&&N2().forEach(n=>{A0(n.segmentationId)}),Jo(t.viewportId,t.segmentationId,t.type)}function mme(t,e){Fi.setRenderInactiveSegmentations(t,e),A0(t),SP(t).forEach(n=>{Jo(t,n.segmentationId)})}function vme(t){return Fi.getRenderInactiveSegmentations(t)}function yme(){Fi.resetToGlobalStyle(),A0()}function xme(t){return Fi.hasCustomStyle(t)}const wme=Object.freeze(Object.defineProperty({__proto__:null,getRenderInactiveSegmentations:vme,getStyle:gme,hasCustomStyle:xme,resetToGlobalStyle:yme,setRenderInactiveSegmentations:mme,setStyle:pme},Symbol.toStringTag,{value:"Module"})),Cme=Object.freeze(Object.defineProperty({__proto__:null,color:kle,style:wme,visibility:hme},Symbol.toStringTag,{value:"Module"}));function Cm(t,e){const r=Ct(t);typeof e=="string"&&(console.warn("segmentIndex is a string, converting to number"),e=Number(e)),Object.values(r.segments).forEach(i=>{i.active=!1}),r.segments[e]||(r.segments[e]={segmentIndex:e,label:"",locked:!1,cachedStats:{},active:!1}),r.segments[e].active!==!0&&(r.segments[e].active=!0,Di(t));const n=R0(t);n.forEach(i=>{Ti(i,{segmentationId:t}).forEach(a=>{a.segments[e]||(a.segments[e]={visible:!0})})}),n.forEach(i=>{const o=Cn(i);AA(o.id)})}const Sme=Object.freeze(Object.defineProperty({__proto__:null,getActiveSegmentIndex:No,setActiveSegmentIndex:Cm},Symbol.toStringTag,{value:"Module"}));async function Tme(t){const e=gle(t);return Di(t.segmentationId),e}const _me=Object.freeze(Object.defineProperty({__proto__:null,canComputeRequestedRepresentation:C2,computeAndAddContourRepresentation:rP,computeAndAddLabelmapRepresentation:fP,computeAndAddSurfaceRepresentation:pN},Symbol.toStringTag,{value:"Module"}));function lk(t,e){const r=Ct(t);if(r.representationData.Labelmap){const{representationData:n}=r,i=n.Labelmap;("imageIds"in i||"volumeId"in i)&&("imageIds"in i?i.imageIds.map(a=>_e.getImage(a)):[_e.getVolume(i.volumeId)]).forEach(a=>{if(!a)return;const{voxelManager:s}=a;s.forEach(({value:c,index:l})=>{c===e&&s.setAtIndex(l,0)})}),Ei(t)}else throw new Error("Invalid segmentation type, only labelmap is supported right now")}function Eme(t,e,r={setNextSegmentAsActive:!0}){lk(t,e);const n=No(t)===e,i=Ct(t),{segments:o}=i;delete o[e];const a={...o};if(sk([{segmentationId:t,payload:{segments:a}}]),n&&r.setNextSegmentAsActive){const c=Object.keys(o).map(Number).sort((d,h)=>d-h),l=c.indexOf(e),f=c[l+1],u=c[l-1];f!==void 0?Cm(t,f):u!==void 0&&Cm(t,u)}R0(t).forEach(c=>{Ti(c,{segmentationId:t}).forEach(f=>{delete f.segments[e]})})}function Dme(t){const e=Xt,r=Ct(t);return e.getLabelmapImageIds(r.representationData)}const bme={clearSegmentValue:lk,convertStackToVolumeLabelmap:Tme,computeVolumeLabelmapFromStack:gN,convertVolumeToStackLabelmap:Lde},Ime=Object.freeze(Object.defineProperty({__proto__:null,activeSegmentation:wde,addContourRepresentationToViewport:cP,addContourRepresentationToViewportMap:bde,addLabelmapRepresentationToViewport:lP,addLabelmapRepresentationToViewportMap:Ide,addSegmentationRepresentations:P0,addSegmentations:gP,addSurfaceRepresentationToViewport:uP,addSurfaceRepresentationToViewportMap:Ode,config:Cme,getLabelmapImageIds:Dme,helpers:bme,polySeg:_me,removeAllSegmentationRepresentations:vP,removeAllSegmentations:CP,removeContourRepresentation:xP,removeLabelmapRepresentation:yP,removeSegment:Eme,removeSegmentation:uS,removeSegmentationRepresentation:k0,removeSegmentationRepresentations:pP,removeSurfaceRepresentation:wP,segmentIndex:Sme,segmentLocking:tde,state:Yde,triggerSegmentationEvents:ale,updateSegmentations:sk},Symbol.toStringTag,{value:"Module"}));class o0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r)}touchDragCallback(e){this._dragCallback(e)}mouseDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{element:r,deltaPoints:n}=e.detail,i=re(r),o=n.world;if(o[0]===0&&o[1]===0&&o[2]===0)return;const a=i.viewport.getCamera(),{focalPoint:s,position:c}=a,l=[c[0]-o[0],c[1]-o[1],c[2]-o[2]],f=[s[0]-o[0],s[1]-o[1],s[2]-o[2]];i.viewport.setCamera({focalPoint:f,position:l}),i.viewport.render()}}o0.toolName="Pan";class uk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}}){super(e,r),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.preMouseDownCallback=n=>{const i=n.detail,{element:o}=i,a=re(o),{viewport:s}=a,f=s.getDefaultActor().actor.getMapper();if(!("getSampleDistance"in f||"getCurrentSampleDistance"in f))return!0;const d=f.getSampleDistance();return this._hasResolutionChanged||(f.setSampleDistance(d*2),this._hasResolutionChanged=!0,this.cleanUp!==null&&document.removeEventListener("mouseup",this.cleanUp),this.cleanUp=()=>{f.setSampleDistance(d),s.render(),this._hasResolutionChanged=!1},document.addEventListener("mouseup",this.cleanUp,{once:!0})),!0},this._getViewportsInfo=()=>Wn(this.toolGroupId).viewportsInfo,this.onSetToolActive=()=>{const n=()=>{this._getViewportsInfo().forEach(({viewportId:o,renderingEngineId:a})=>{if(!this._resizeObservers.has(o)){const{viewport:s}=dr(o,a)||{viewport:null};if(!s)return;const{element:c}=s,l=new ResizeObserver(()=>{const f=dr(o,a);if(!f)return;const{viewport:u}=f;u.resetCamera(),u.render()});l.observe(c),this._resizeObservers.set(o,l)}})};n(),this._viewportAddedListener=i=>{i.detail.toolGroupId===this.toolGroupId&&n()},Ce.addEventListener(F.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)},this.onSetToolDisabled=()=>{this._resizeObservers.forEach((n,i)=>{n.disconnect(),this._resizeObservers.delete(i)}),this._viewportAddedListener&&(Ce.removeEventListener(F.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._viewportAddedListener=null)},this.rotateCamera=(n,i,o,a)=>{const s=n.getVtkActiveCamera(),c=s.getViewUp(),l=s.getFocalPoint(),f=s.getPosition(),u=[0,0,0],d=[0,0,0],h=[0,0,0],g=qe(new Float32Array(16));nn(g,g,i),Hr(g,g,a,o),nn(g,g,[-i[0],-i[1],-i[2]]),et(u,f,g),et(d,l,g),qe(g),Hr(g,g,a,o),et(h,c,g),n.setCamera({position:u,viewUp:h,focalPoint:d})},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:r,currentPoints:n,lastPoints:i}=e.detail,o=n.canvas,a=i.canvas,{rotateIncrementDegrees:s}=this.configuration,c=re(r),{viewport:l}=c,f=l.getCamera(),u=r.clientWidth,d=r.clientHeight,h=[o[0]/u,o[1]/d],g=[a[0]/u,a[1]/d],p=[u*.5,d*.5],v=l.canvasToWorld(p),m=(1+Math.abs([.5,.5][0]))**2,y=[g[0],0,0],w=[h[0],0,0],C=y[0]**2,S=w[0]**2,T=C>m?0:Math.sqrt(m-C),_=S>m?0:Math.sqrt(m-S),E=[y[0],0,T];nt.normalize(E);const D=[w[0],0,_];nt.normalize(D);const b=nt.dot(E,D);if(Math.abs(b)>1e-4){const I=-2*Math.acos(nt.clampValue(b,-1,1))*Math.sign(h[0]-g[0])*s,R=f.viewUp,M=f.viewPlaneNormal,L=[0,0,0],A=[0,0,0];nt.cross(R,M,L),nt.normalize(L),nt.cross(M,L,A),nt.normalize(A),nt.normalize(R),this.rotateCamera(l,v,A,I);const G=(g[1]-h[1])*s;this.rotateCamera(l,v,L,G),l.render()}}}uk.toolName="TrackballRotate";const py=4,Ome=1024,Mme="PT";class a0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this._getImageDynamicRangeFromMiddleSlice=(n,i)=>{const o=Math.floor(i[2]/2),a=i[0]*i[1];let s,c;n instanceof Float32Array?(s=4,c=Float32Array):n instanceof Uint8Array?(s=1,c=Uint8Array):n instanceof Uint16Array?(s=2,c=Uint16Array):n instanceof Int16Array&&(s=2,c=Int16Array);const l=n.buffer,f=o*a*s,u=new c(l,f,a),{max:d,min:h}=this._getMinMax(u,a);return d-h}}touchDragCallback(e){this.mouseDragCallback(e)}mouseDragCallback(e){var g,p;const{element:r,deltaPoints:n}=e.detail,i=re(r),{viewport:o}=i;let a,s,c,l,f,u,d=!1;const h=o.getProperties();if(o instanceof an){a=o.getVolumeId(),u=Th(a),{lower:s,upper:c}=h.voiRange;const v=_e.getVolume(a);if(!v)throw new Error("Volume not found "+a);l=v.metadata.Modality,d=v.scaling&&Object.keys(v.scaling).length>0}else if(h.voiRange){l=o.modality,{lower:s,upper:c}=h.voiRange;const{preScale:v={scaled:!1}}=((g=o.getImageData)==null?void 0:g.call(o))||{};d=v.scaled&&((p=v.scalingParameters)==null?void 0:p.suvbw)!==void 0}else throw new Error("Viewport is not a valid type");if(l===Mme&&d?f=this.getPTScaledNewRange({deltaPointsCanvas:n.canvas,lower:s,upper:c,clientHeight:r.clientHeight,isPreScaled:d,viewport:o,volumeId:a}):f=this.getNewRange({viewport:o,deltaPointsCanvas:n.canvas,volumeId:a,lower:s,upper:c}),!(f.lower>=f.upper)&&(o.setProperties({voiRange:f}),o.render(),o instanceof an)){u.forEach(v=>{o!==v&&v.render()});return}}getPTScaledNewRange({deltaPointsCanvas:e,lower:r,upper:n,clientHeight:i,viewport:o,volumeId:a,isPreScaled:s}){let c=py;s?c=5/i:c=this._getMultiplierFromDynamicRange(o,a)||py;const f=e[1]*c;return n-=f,n=s?Math.max(n,.1):n,{lower:r,upper:n}}getNewRange({viewport:e,deltaPointsCanvas:r,volumeId:n,lower:i,upper:o}){const a=this._getMultiplierFromDynamicRange(e,n)||py,s=r[0]*a,c=r[1]*a;let{windowWidth:l,windowCenter:f}=T0(i,o);return l+=s,f+=c,l=Math.max(l,1),Gs(l,f)}_getMultiplierFromDynamicRange(e,r){var o;let n;if(r){const a=_e.getVolume(r),{voxelManager:s}=e.getImageData(),l=s.getMiddleSliceData().reduce((d,h)=>[Math.min(d[0],h),Math.max(d[1],h)],[1/0,-1/0]),f=(o=a==null?void 0:a.metadata)==null?void 0:o.BitsStored,u=f?2**f:1/0;n=Math.min(l,u)}else n=this._getImageDynamicRangeFromViewport(e);const i=n/Ome;return i>1?Math.round(i):i}_getImageDynamicRangeFromViewport(e){const{imageData:r,voxelManager:n}=e.getImageData();if(n!=null&&n.getRange){const s=n.getRange();return s[1]-s[0]}const i=r.getDimensions();if(r.getRange){const s=r.getRange();return s[1]-s[0]}let o;if(r.getScalarData?o=r.getScalarData():o=r.getPointData().getScalars().getData(),i[2]!==1)return this._getImageDynamicRangeFromMiddleSlice(o,i);let a;if(o.getRange)a=o.getRange();else{const{min:s,max:c}=this._getMinMax(o,o.length);a=[s,c]}return a[1]-a[0]}_getMinMax(e,r){let n=1/0,i=-1/0;for(let o=0;oi&&(i=a)}return{max:i,min:n}}}a0.toolName="WindowLevel";class fk extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{minWindowWidth:10}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l}=c;this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=this.getReferencedImageId(l,s,u,d),g=l.getFrameOfReferenceUID(),p={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:g,referencedImageId:h},data:{handles:{points:[[...s],[...s],[...s],[...s]]},cachedStats:{}}};Ut(p,a);const v=He(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v},this._activateDraw(a),Qe(a),n.preventDefault(),pe(v),p},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s}=this.editData;this._deactivateDraw(o),ct(o),this.editData=null,this.isDrawing=!1,Ot(a.annotationUID),pe(s),en(a),this.applyWindowLevelRegion(a,o)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s}=this.editData,{data:c}=a,{currentPoints:l}=i,f=re(o),{worldToCanvas:u,canvasToWorld:d}=f.viewport,h=l.world,{points:g}=c.handles,p=3;g[p]=[...h];const v=u(g[0]),x=u(g[3]),m=[x[0],v[1]],y=[v[0],x[1]],w=d(m),C=d(y);g[1]=w,g[2]=C,a.invalidated=!0,pe(s)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(C));l.annotationUID=d;const{color:v,lineWidth:x,lineDash:m}=this.getAnnotationStyle({annotation:u,styleSpecifier:l});if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;const y=`${d}-rect`;Nh(i,d,"0",p[0],p[3],{color:v,lineDash:m,lineWidth:x},y),o=!0}return o},this.applyWindowLevelRegion=(n,i)=>{const o=re(i),{viewport:a}=o,s=ak(a),{data:c}=n,{points:l}=c.handles,f=l.map(S=>a.worldToCanvas(S)),u=f[0],d=f[3];let h=Math.min(u[0],d[0]),g=Math.min(u[1],d[1]),p=Math.abs(u[0]-d[0]),v=Math.abs(u[1]-d[1]);h=Q1(h,0,s.width),g=Q1(g,0,s.height),p=Math.floor(Math.min(p,Math.abs(s.width-h))),v=Math.floor(Math.min(v,Math.abs(s.height-g)));const x=ik(s,Math.round(h),Math.round(g),p,v),m=ok(x,s.minPixelValue,s.maxPixelValue);this.configuration.minWindowWidth===void 0&&(this.configuration.minWindowWidth=10);const y=Math.max(Math.abs(m.max-m.min),this.configuration.minWindowWidth),w=m.mean,C=Gs(y,w);a.setProperties({voiRange:C}),a.render()},this.cancel=()=>null,this.isPointNearTool=()=>null,this.toolSelectedCallback=()=>null,this.handleSelectedCallback=()=>null,this._activateModify=()=>null,this._deactivateModify=()=>null}}fk.toolName="WindowLevelRegion";class yl extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}){super(e,r),this.deltaY=1}mouseWheelCallback(e){this._scroll(e)}mouseDragCallback(e){this._dragCallback(e)}touchDragCallback(e){this._dragCallback(e)}_dragCallback(e){this._scrollDrag(e)}_scrollDrag(e){const{deltaPoints:r,viewportId:n,renderingEngineId:i}=e.detail,{viewport:o}=dr(n,i),{debounceIfNotLoaded:a,invert:s,loop:c}=this.configuration,l=r.canvas[1];let f;o instanceof an&&(f=o.getVolumeId());const u=this._getPixelPerImage(o),d=l+this.deltaY;if(u)if(Math.abs(d)>=u){const h=Math.round(d/u);fl(o,{delta:s?-h:h,volumeId:f,debounceLoading:a,loop:c}),this.deltaY=d%u}else this.deltaY=d}_scroll(e){const{wheel:r,element:n}=e.detail,{direction:i}=r,{invert:o}=this.configuration,{viewport:a}=re(n),s=i*(o?-1:1);fl(a,{delta:s,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:a instanceof Mn?a.getVolumeId():void 0,scrollSlabs:this.configuration.scrollSlabs})}_getPixelPerImage(e){const{element:r}=e,n=e.getNumberOfSlices();return Math.max(2,r.offsetHeight/Math.max(n,8))}}yl.toolName="StackScroll";function Rme(t,e){const[r,n]=t,[i,o]=e,a=Qt(we(),n,r),s=Qt(we(),i,o),c=je(a,s),l=ui(a),f=ui(s),u=c/(l*f);return Math.acos(u)*180/Math.PI}function Lme(t,e){const[r,n]=t,[i,o]=e,a=Oo(ot(),n,r),s=Oo(ot(),i,o),c=Ew(a,s),l=z5(a),f=z5(s),u=c/(l*f);return Math.acos(u)*(180/Math.PI)}function ed(t,e){return t[0].length===3?Rme(t,e):Lme(t,e)}class s0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this.mouseWheelCallback=n=>{const{element:i,wheel:o}=n.detail,a=re(i),{viewport:s}=a,{invert:c}=this.configuration,l=o.direction*10*(c?-1:1);this.setAngle(s,l)},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:r,currentPoints:n,startPoints:i}=e.detail,o=n.world,a=i.world,s=re(r),{viewport:c}=s,l=c.getCamera(),f=r.clientWidth,u=r.clientHeight,d=[f*.5,u*.5],h=c.canvasToWorld(d);let g=ed([a,h],[h,o]);const{viewPlaneNormal:p}=l,v=Qt(we(),h,a),x=Qt(we(),h,o),m=Kt(we(),v,x);je(p,m)>0&&(g=-g),!Number.isNaN(g)&&this.setAngle(c,g)}setAngle(e,r){const{viewPlaneNormal:n,viewUp:i}=e.getCamera();if(e instanceof Mn){const o=(r+360)%360*Math.PI/180,a=qe(new Float32Array(16));Hr(a,a,o,n);const s=et(we(),i,a);e.setCamera({viewUp:s})}else{const{rotation:o}=e.getViewPresentation();e.setViewPresentation({rotation:(o+r+360)%360})}e.render()}}s0.toolName="PlanarRotate";class c0 extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.001,maxZoomScale:3e3,pinchToZoom:!0,pan:!0,invert:!1}}){super(e,r),this.preMouseDownCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=a.world,l=re(o).viewport.getCamera(),{focalPoint:f}=l;this.initialMousePosWorld=s;let u=Ye(f[0]-s[0],f[1]-s[1],f[2]-s[2]);return u=on(we(),u),this.dirVec=u,!1},this.preTouchStartCallback=n=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(n)},this._dragParallelProjection=(n,i,o,a=!1)=>{const{element:s,deltaPoints:c}=n.detail,l=a?n.detail.deltaDistance.canvas:c.canvas[1],f=[s.clientWidth,s.clientHeight],{parallelScale:u,focalPoint:d,position:h}=o,g=5/f[1],p=l*g*(this.configuration.invert?-1:1),v=(1-p)*u;let x=d,m=h;if(!this.configuration.zoomToCenter){const b=Cr(d,this.initialMousePosWorld);m=Vt(we(),h,this.dirVec,-b*p),x=Vt(we(),d,this.dirVec,-b*p)}const y=i.getImageData();let w=[1,1,1];y&&(w=y.spacing);const{minZoomScale:C,maxZoomScale:S}=this.configuration,T=s.clientHeight*w[1]*.5,_=T/v;let E=v,D=!1;y&&(_=S&&(E=T/S,D=!0)),i.setCamera({parallelScale:E,focalPoint:D?d:x,position:D?h:m})},this._dragPerspectiveProjection=(n,i,o,a=!1)=>{const{element:s,deltaPoints:c}=n.detail,l=a?n.detail.deltaDistance.canvas:c.canvas[1],f=[s.clientWidth,s.clientHeight],{position:u,focalPoint:d,viewPlaneNormal:h}=o,g=nt.distance2BetweenPoints(u,d),p=Math.sqrt(g)/f[1],v=[-h[0],-h[1],-h[2]],x=this.configuration.invert?l/p:l*p;let m=x*v[0];u[0]+=m,d[0]+=m,m=x*v[1],u[1]+=m,d[1]+=m,m=x*v[2],u[2]+=m,d[2]+=m,i.setCamera({position:u,focalPoint:d})},this.initialMousePosWorld=[0,0,0],this.dirVec=[0,0,0],this.configuration.pinchToZoom?this.touchDragCallback=this._pinchCallback.bind(this):this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:n,currentPoints:i}=e.detail,o=re(n),{viewport:a}=o,s=a.getCamera(),c=i.world,{focalPoint:l}=s;this.initialMousePosWorld=c;let f=Ye(l[0]-c[0],l[1]-c[1],l[2]-c[2]);f=on(we(),f),this.dirVec=f,s.parallelProjection?this._dragParallelProjection(e,a,s,!0):this._dragPerspectiveProjection(e,a,s,!0),a.render()}this.configuration.pan&&this._panCallback(e)}_dragCallback(e){const{element:r}=e.detail,n=re(r),{viewport:i}=n,o=i.getCamera();o.parallelProjection?this._dragParallelProjection(e,i,o):this._dragPerspectiveProjection(e,i,o),i.render()}_panCallback(e){const{element:r,deltaPoints:n}=e.detail,i=re(r),o=n.world,a=i.viewport.getCamera(),{focalPoint:s,position:c}=a,l=[c[0]-o[0],c[1]-o[1],c[2]-o[2]],f=[s[0]-o[0],s[1]-o[1],s[2]-o[2]];i.viewport.setCamera({focalPoint:f,position:l}),i.viewport.render()}}c0.toolName="Zoom";class dk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}){super(e,r)}mouseClickCallback(e){const{element:r,currentPoints:n}=e.detail,i=re(r),{viewport:o,renderingEngine:a}=i,s=o.getVolumeId();if(!s)throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");let c=-1/0;const l=(g,p)=>{if(g>c)return c=g,p},f=nS(o,n.world,s,l);if(!f||!f.length)return;const{targetViewportIds:u,toolGroupId:d}=this.configuration;a.getViewports().filter(g=>{if((u==null?void 0:u.indexOf(g.id))>=0)return!0;const p=Cn(g.id,a.id);return!!(d&&d===(p==null?void 0:p.id))}).forEach(g=>{g instanceof an?g.jumpToWorld(f):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")})}}dk.toolName="MIPJumpToClickTool";const{RENDERING_DEFAULTS:my}=Sl;function Nme(){return"rgb(0, 200, 0)"}function Pme(){return!0}function Ame(){return!0}function kme(){return!0}const go={DRAG:1,ROTATE:2,SLAB:3};class Ko extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!1,viewportIndicatorsConfig:{radius:5,x:null,y:null},autoPan:{enabled:!1,panSize:10},referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:$u.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}}){var n,i,o,a;super(e,r),this.toolCenter=[0,0,0],this.initializeViewport=({renderingEngineId:s,viewportId:c})=>{const l=dr(c,s),{FrameOfReferenceUID:f,viewport:u}=l,{element:d}=u,{position:h,focalPoint:g,viewPlaneNormal:p}=u.getCamera();let v=this._getAnnotations(l);v=this.filterInteractableAnnotationsForElement(d,v),v.length&&Ot(v[0].annotationUID);const x={highlighted:!1,metadata:{cameraPosition:[...h],cameraFocalPoint:[...g],FrameOfReferenceUID:f,toolName:this.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:this.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:c}};return Ut(x,d),{normal:p,point:u.canvasToWorld([u.canvas.clientWidth/2,u.canvas.clientHeight/2])}},this._getViewportsInfo=()=>Wn(this.toolGroupId).viewportsInfo,this.resetCrosshairs=()=>{const s=this._getViewportsInfo();for(const c of s){const{viewportId:l,renderingEngineId:f}=c,u=dr(l,f),d=u.viewport;d.resetCamera({resetPan:!0,resetZoom:!0,resetToCenter:!0,resetRotation:!0,suppressEvents:!0}),d.resetSlabThickness();const{element:m}=d;let y=this._getAnnotations(u);y=this.filterInteractableAnnotationsForElement(m,y),y.length&&Ot(y[0].annotationUID),d.render()}this.computeToolCenter(s)},this.computeToolCenter=s=>{if(!s.length||s.length===1){console.warn("For crosshairs to operate, at least two viewports must be given.");return}const[c,l,f]=s,{normal:u,point:d}=this.initializeViewport(c),{normal:h,point:g}=this.initializeViewport(l);let p=[0,0,0],v=we();f?{normal:p,point:v}=this.initializeViewport(f):(xn(v,d,g),lr(v,v,.5),Kt(p,u,h));const x=Ba(u,d),m=Ba(h,g),y=Ba(p,v);this.toolCenter=GM(x,m,y),pe(s.map(({viewportId:w})=>w))},this.addNewAnnotation=s=>{const c=s.detail,{element:l}=c,{currentPoints:f}=c,u=f.world,d=re(l),{viewport:h}=d;this._jump(d,u);const g=this._getAnnotations(d),p=this.filterInteractableAnnotationsForElement(h.element,g),{data:v}=p[0],{rotationPoints:x}=v.handles,m=[];for(let y=0;y{console.log("Not implemented yet")},this.handleSelectedCallback=(s,c)=>{const l=s.detail,{element:f}=l;c.highlighted=!0,this._activateModify(f),Qe(f),s.preventDefault()},this.isPointNearTool=(s,c,l,f)=>!!this._pointNearTool(s,c,l,6),this.toolSelectedCallback=(s,c,l)=>{const f=s.detail,{element:u}=f;c.highlighted=!0,this._activateModify(u),Qe(u),s.preventDefault()},this.onCameraModified=s=>{var E;const c=s.detail,{element:l}=c,f=re(l),{renderingEngine:u}=f,d=f.viewport,h=this._getAnnotations(f),p=this.filterInteractableAnnotationsForElement(l,h)[0];if(!p)return;const v=d.getCamera(),x=p.metadata.cameraPosition,m=[0,0,0];nt.subtract(v.position,x,m);const y=p.metadata.cameraFocalPoint,w=[0,0,0];nt.subtract(v.focalPoint,y,w),p.metadata.cameraPosition=[...v.position],p.metadata.cameraFocalPoint=[...v.focalPoint];const C=this._getReferenceLineControllable(d.id),S=this._getReferenceLineDraggableRotatable(d.id);if(!pt(v.position,x,.001)&&C&&S){let D=!1;pt(m,w,.001)||(D=!0);const I=Math.abs(nt.dot(m,v.viewPlaneNormal))<.01;!D&&!I&&(this.toolCenter[0]+=m[0],this.toolCenter[1]+=m[1],this.toolCenter[2]+=m[2])}(E=this.configuration.autoPan)!=null&&E.enabled&&Cn(d.id,u.id).getViewportIds().filter(I=>I!==d.id).forEach(I=>{this._autoPanViewportIfNecessary(I,u)});const _=He(l,this.getToolName(),!1);pe(_)},this.onResetCamera=s=>{this.resetCrosshairs()},this.mouseMoveCallback=(s,c)=>{const{element:l,currentPoints:f}=s.detail,u=f.canvas;let d=!1;for(let h=0;h0?[...p.activeViewportIds]:[];p.activeViewportIds=[],p.handles.activeOperation=null;const y=this.getHandleNearImagePoint(l,g,u,6);let w=!1;y?w=!0:w=this._pointNearTool(l,g,u,6),w&&!v||!w&&v?(g.highlighted=!v,d=!0):(p.handles.activeOperation!==x||!this._areViewportIdArraysEqual(p.activeViewportIds,m))&&(d=!0)}return d},this.filterInteractableAnnotationsForElement=(s,c)=>{if(!c||!c.length)return[];const l=re(s),{viewportId:f}=l;return c.filter(d=>d.data.viewportId===f)},this.renderAnnotation=(s,c)=>{let l=!1;const{viewport:f,renderingEngine:u}=s,{element:d}=f,h=this._getAnnotations(s),g=f.getCamera(),v=this.filterInteractableAnnotationsForElement(d,h)[0];if(!(h!=null&&h.length)||!(v!=null&&v.data))return l;const x=v.annotationUID,{clientWidth:m,clientHeight:y}=f.canvas,w=Math.sqrt(m*m+y*y),C=Math.min(m,y),S=v.data,T=f.worldToCanvas(this.toolCenter),_=this._filterAnnotationsByUniqueViewportOrientations(s,h),E=[],D=[0,0,m,y];_.forEach(L=>{const{data:A}=L;A.handles.toolCenter=this.toolCenter;const G=u.getViewport(A.viewportId),P=G.getCamera(),N=this._getReferenceLineControllable(G.id),V=this._getReferenceLineDraggableRotatable(G.id),$=this._getReferenceLineSlabThicknessControlsOn(G.id),{clientWidth:H,clientHeight:Y}=G.canvas,ne=Math.sqrt(H*H+Y*Y),Q=[H*.5,Y*.5],ee=G.canvasToWorld(Q),de=[0,0,0];nt.cross(g.viewPlaneNormal,P.viewPlaneNormal,de),nt.normalize(de),nt.multiplyScalar(de,ne);const fe=[0,0,0];nt.add(ee,de,fe);const le=[0,0,0];nt.subtract(ee,de,le);const k=f.worldToCanvas(fe),O=f.worldToCanvas(ee),B=ot();kn(B,k,O),Na(B,B);const U=ot();Da(U,B,w*100);const z=ot();Da(z,B,C*.4);const j=ot();Da(j,B,C*.2);const K=ot(),ae=this.configuration.referenceLinesCenterGapRadius;Da(K,B,_.length===2?ae:0);const he=ot(),ye=ot(),Te=ot(),q=ot();let J=sg(T);(!V||!N)&&(J=sg(O)),Lr(he,J,K),Lr(ye,J,U),kn(Te,J,K),kn(q,J,U),Nf(he,ye,D),Nf(Te,q,D);const ie=ot();kn(ie,T,z);const Z=ot();Lr(Z,T,z);let te=sg(T);!V&&$&&(te=sg(O));let me=[...this.toolCenter];!V&&$&&(me=[...ee]);const X=[0,0,0];nt.subtract(fe,le,X),nt.normalize(X);const{viewPlaneNormal:Ae}=g,{matrix:Be}=br.buildFromDegree().rotate(90,Ae),Ve=[0,0,0];et(Ve,X,Be);const ue=G.getSlabThickness(),Ee=[...Ve];nt.multiplyScalar(Ee,ue);const Me=[0,0,0];nt.add(me,Ee,Me);const Re=f.worldToCanvas(Me),We=ot();kn(We,te,Re);const ut=ot();kn(ut,te,U),Lr(ut,ut,We);const ze=ot();Lr(ze,te,U),Lr(ze,ze,We),Nf(ut,ze,D);const ft=ot();Lr(ft,te,U),kn(ft,ft,We);const dt=ot();kn(dt,te,U),kn(dt,dt,We),Nf(ft,dt,D);const dn=ot(),Pn=ot(),Gt=ot(),sr=ot();kn(dn,te,j),Lr(dn,dn,We),Lr(Pn,te,j),Lr(Pn,Pn,We),kn(Gt,te,j),kn(Gt,Gt,We),Lr(sr,te,j),kn(sr,sr,We),E.push([G,he,ye,Te,q,ut,ze,ft,dt,ie,Z,dn,Pn,Gt,sr])});const b=[],I=[],R=this._getReferenceLineColor(f.id),M=R!==void 0?R:"rgb(200, 200, 200)";if(E.forEach((L,A)=>{var de,fe,le,k,O,B,U,z,j,K,ae,he,ye,Te,q,J,ie,Z,te;const G=L[0],P=this._getReferenceLineColor(G.id),N=this._getReferenceLineControllable(G.id),V=this._getReferenceLineDraggableRotatable(G.id)||((de=this.configuration.mobile)==null?void 0:de.enabled),$=this._getReferenceLineSlabThicknessControlsOn(G.id)||((fe=this.configuration.mobile)==null?void 0:fe.enabled),H=S.activeViewportIds.find(me=>me===G.id);let Y=P!==void 0?P:"rgb(200, 200, 200)",ne=1;const Q=S.handles.activeOperation!==null&&S.handles.activeOperation===go.DRAG&&H;Q&&(ne=2.5);let ee=`${A}`;if(N&&V?(ee=`${A}One`,It(c,x,ee,L[1],L[2],{color:Y,lineWidth:ne}),ee=`${A}Two`,It(c,x,ee,L[3],L[4],{color:Y,lineWidth:ne})):It(c,x,ee,L[2],L[4],{color:Y,lineWidth:ne}),N){Y=P!==void 0?P:"rgb(200, 200, 200)";const me=S.handles.activeOperation===go.ROTATE,X=[L[9],L[10]],Ae=[f.canvasToWorld(L[9]),G,L[1],L[2]],Be=[f.canvasToWorld(L[10]),G,L[3],L[4]];b.push(Ae,Be);const Ve=S.handles.activeOperation===go.SLAB,ue=[L[11],L[12],L[13],L[14]],Ee=[f.canvasToWorld(L[11]),G,L[5],L[6]],Me=[f.canvasToWorld(L[12]),G,L[5],L[6]],Re=[f.canvasToWorld(L[13]),G,L[7],L[8]],We=[f.canvasToWorld(L[14]),G,L[7],L[8]];if(I.push(Ee,Me,Re,We),(Q||(le=this.configuration.mobile)!=null&&le.enabled)&&!me&&!Ve&&V&&$){let ze=`${A}One`;sn(c,x,ze,X,{color:Y,handleRadius:(k=this.configuration.mobile)!=null&&k.enabled?(O=this.configuration.mobile)==null?void 0:O.handleRadius:3,opacity:(B=this.configuration.mobile)!=null&&B.enabled?(U=this.configuration.mobile)==null?void 0:U.opacity:1,type:"circle"}),ze=`${A}Two`,sn(c,x,ze,ue,{color:Y,handleRadius:(z=this.configuration.mobile)!=null&&z.enabled?(j=this.configuration.mobile)==null?void 0:j.handleRadius:3,opacity:(K=this.configuration.mobile)!=null&&K.enabled?(ae=this.configuration.mobile)==null?void 0:ae.opacity:1,type:"rect"})}else if(Q&&!me&&!Ve&&V){const ze=`${A}`;sn(c,x,ze,X,{color:Y,handleRadius:(he=this.configuration.mobile)!=null&&he.enabled?(ye=this.configuration.mobile)==null?void 0:ye.handleRadius:3,opacity:(Te=this.configuration.mobile)!=null&&Te.enabled?(q=this.configuration.mobile)==null?void 0:q.opacity:1,type:"circle"})}else if(H&&!me&&!Ve&&$){const ze=`${A}`;sn(c,x,ze,ue,{color:Y,handleRadius:(J=this.configuration.mobile)!=null&&J.enabled?(ie=this.configuration.mobile)==null?void 0:ie.handleRadius:3,opacity:(Z=this.configuration.mobile)!=null&&Z.enabled?(te=this.configuration.mobile)==null?void 0:te.opacity:1,type:"rect"})}else if(me&&V){const ze=`${A}`;sn(c,x,ze,X,{color:Y,handleRadius:2,fill:Y,type:"circle"})}else Ve&&H&&$&&sn(c,x,ee,ue,{color:Y,handleRadius:2,fill:Y,type:"rect"});G.getSlabThickness()>.5&&$&&(ee=`${A}STOne`,It(c,x,ee,L[5],L[6],{color:Y,width:1,lineDash:[2,3]}),ee=`${A}STTwo`,It(c,x,ee,L[7],L[8],{color:Y,width:L,lineDash:[2,3]}))}}),l=!0,S.handles.rotationPoints=b,S.handles.slabThicknessPoints=I,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:L}=this.configuration,A=(L==null?void 0:L.xOffset)||.95,G=(L==null?void 0:L.yOffset)||.05,P=[m*A,y*G],N=(L==null?void 0:L.circleRadius)||w*.01;bi(c,x,"0",P,N,{color:M,fill:M})}return l},this._getAnnotations=s=>{const{viewport:c}=s,l=_t(this.getToolName(),c.element)||[],f=this._getViewportsInfo().map(({viewportId:d})=>d);return l.filter(d=>{const{data:h}=d;return f.includes(h.viewportId)})},this._onNewVolume=()=>{const s=this._getViewportsInfo();this.computeToolCenter(s)},this._areViewportIdArraysEqual=(s,c)=>s.length!==c.length?!1:(s.forEach(l=>{let f=!1;for(let u=0;u{const{viewportId:l,renderingEngine:f,viewport:u}=s,d=c.filter(x=>x.data.viewportId!==l);if(!d||!d.length)return[];const h=u.getCamera(),{viewPlaneNormal:g,position:p}=h;return d.filter(x=>{const{viewportId:m}=x.data,w=f.getViewport(m).getCamera();return!(pt(w.viewPlaneNormal,g,.01)&&pt(w.position,p,1))})},this._filterViewportWithSameOrientation=(s,c,l)=>{const{renderingEngine:f}=s,{data:u}=c,d=f.getViewport(u.viewportId),h=l.filter(x=>{const{data:m}=x,y=f.getViewport(m.viewportId);return this._getReferenceLineControllable(y.id)===!0});if(!h||!h.length)return[];const g=d.getCamera(),p=g.viewPlaneNormal;return nt.normalize(p),h.filter(x=>{const{viewportId:m}=x.data,w=f.getViewport(m).getCamera(),C=w.viewPlaneNormal;return nt.normalize(C),pt(p,C,.01)&&pt(g.viewUp,w.viewUp,.01)})},this._filterAnnotationsByUniqueViewportOrientations=(s,c)=>{const{renderingEngine:l,viewport:f}=s,d=f.getCamera().viewPlaneNormal;nt.normalize(d);const h=c.filter(x=>{const{data:m}=x,y=l.getViewport(m.viewportId),w=this._getReferenceLineControllable(y.id);return f!==y&&w===!0}),g=[];for(let x=0;x{const{data:m}=x,y=l.getViewport(m.viewportId),w=this._getReferenceLineControllable(y.id);return f!==y&&w!==!0});for(let x=0;x_===m))continue;const{viewportId:y}=m.data,C=l.getViewport(y).getCamera(),S=C.viewPlaneNormal;if(nt.normalize(S),pt(d,S,.01)||Mf(d,S,.01))continue;let T=!1;for(let _=0;_{const l=s.getActors(),f=c.getActors();let u=!0;return l.forEach(d=>{(l.length!==f.length||f.find(({uid:h})=>h===d.uid)===void 0)&&(u=!1)}),u},this._jump=(s,c)=>{ve.isInteractingWithTool=!0;const{viewport:l,renderingEngine:f}=s,u=this._getAnnotations(s),d=[0,0,0];nt.subtract(c,this.toolCenter,d);const g=this._getAnnotationsForViewportsWithDifferentCameras(s,u).filter(p=>{const{data:v}=p,x=f.getViewport(v.viewportId),m=this._checkIfViewportsRenderingSameScene(l,x);return this._getReferenceLineControllable(x.id)&&this._getReferenceLineDraggableRotatable(x.id)&&m});return g.length===0?(ve.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(f,g,d),ve.isInteractingWithTool=!1,!0)},this._activateModify=s=>{var c;ve.isInteractingWithTool=!((c=this.configuration.mobile)!=null&&c.enabled),s.addEventListener(F.MOUSE_UP,this._endCallback),s.addEventListener(F.MOUSE_DRAG,this._dragCallback),s.addEventListener(F.MOUSE_CLICK,this._endCallback),s.addEventListener(F.TOUCH_END,this._endCallback),s.addEventListener(F.TOUCH_DRAG,this._dragCallback),s.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=s=>{ve.isInteractingWithTool=!1,s.removeEventListener(F.MOUSE_UP,this._endCallback),s.removeEventListener(F.MOUSE_DRAG,this._dragCallback),s.removeEventListener(F.MOUSE_CLICK,this._endCallback),s.removeEventListener(F.TOUCH_END,this._endCallback),s.removeEventListener(F.TOUCH_DRAG,this._dragCallback),s.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._endCallback=s=>{const c=s.detail,{element:l}=c;this.editData.annotation.data.handles.activeOperation=null,this.editData.annotation.data.activeViewportIds=[],this._deactivateModify(l),ct(l),this.editData=null;const u=He(l,this.getToolName(),!1);pe(u)},this._dragCallback=s=>{const c=s.detail,l=c.deltaPoints.world;if(Math.abs(l[0])<.001&&Math.abs(l[1])<.001&&Math.abs(l[2])<.001)return;const{element:f}=c,u=re(f),{renderingEngine:d,viewport:h}=u,g=this._getAnnotations(u),v=this.filterInteractableAnnotationsForElement(f,g)[0];if(!v)return;const{handles:x}=v.data,{currentPoints:m}=s.detail,y=m.canvas;if(x.activeOperation===go.DRAG){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(S=>{const{data:T}=S,_=d.getViewport(T.viewportId),E=this._getReferenceLineControllable(_.id),D=this._getReferenceLineDraggableRotatable(_.id);return E===!0&&D===!0&&v.data.activeViewportIds.find(b=>b===_.id)});this._applyDeltaShiftToSelectedViewportCameras(d,C,l)}else if(x.activeOperation===go.ROTATE){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(A=>{const{data:G}=A,P=d.getViewport(G.viewportId),N=this._getReferenceLineControllable(P.id),V=this._getReferenceLineDraggableRotatable(P.id);return N===!0&&V===!0}),S=ot(),T=ot(),_=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],E=h.worldToCanvas(_),D=c.currentPoints.canvas,b=ot();Oo(b,D,c.deltaPoints.canvas),Oo(S,b,E),Oo(T,D,E);let I=sj(S,T);this._isClockWise(E,b,D)&&(I*=-1),I=Math.round(I*100)/100;const R=h.getCamera().viewPlaneNormal,{matrix:M}=br.buildFromRadian().translate(_[0],_[1],_[2]).rotate(I,R).translate(-_[0],-_[1],-_[2]),L=[];C.forEach(A=>{const{data:G}=A;G.handles.toolCenter=_;const P=d.getViewport(G.viewportId),N=P.getCamera(),{viewUp:V,position:$,focalPoint:H}=N;V[0]+=$[0],V[1]+=$[1],V[2]+=$[2],et(H,H,M),et($,$,M),et(V,V,M),V[0]-=$[0],V[1]-=$[1],V[2]-=$[2],P.setCamera({position:$,viewUp:V,focalPoint:H}),L.push(P.id)}),d.renderViewports(L)}else if(x.activeOperation===go.SLAB){const C=this._getAnnotationsForViewportsWithDifferentCameras(u,g).filter(_=>{const{data:E}=_,D=d.getViewport(E.viewportId),b=this._getReferenceLineControllable(D.id),I=this._getReferenceLineSlabThicknessControlsOn(D.id);return b===!0&&I===!0&&v.data.activeViewportIds.find(R=>R===D.id)});if(C.length===0)return;const S=this._filterViewportWithSameOrientation(u,C[0],g),T=[];T.push(h.id),S.forEach(_=>{const{data:E}=_,D=d.getViewport(E.viewportId),I=D.getCamera().viewPlaneNormal,R=nt.dot(l,I),M=[...I];if(nt.multiplyScalar(M,R),Math.abs(M[0])>.001||Math.abs(M[1])>.001||Math.abs(M[2])>.001){const L=Math.sqrt(M[0]*M[0]+M[1]*M[1]+M[2]*M[2]),A=c.lastPoints.world,G=[0,0,0],P=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(D.id)){const{rotationPoints:fe}=this.editData.annotation.data.handles,le=fe.filter(k=>k[1].uid===D.id);if(le.length===2){const k=h.canvasToWorld(le[0][3]),O=h.canvasToWorld(le[1][3]);nt.add(k,O,P),nt.multiplyScalar(P,.5)}}nt.subtract(A,P,G);const V=nt.dot(G,I),$=[...I];nt.multiplyScalar($,V);const H=[$[0],$[1],$[2]];on(H,H);const Y=[M[0],M[1],M[2]];on(Y,Y);let ne=D.getSlabThickness();Mf(H,Y,.001)?ne-=L:ne+=L,ne=Math.abs(ne),ne=Math.max(my.MINIMUM_SLAB_THICKNESS,ne),this._pointNearReferenceLine(v,y,6,D)&&(ne=my.MINIMUM_SLAB_THICKNESS),Cn(D.id,d.id).getToolInstance(this.getToolName()).setSlabThickness(D,ne),T.push(D.id)}}),d.renderViewports(T)}},this._pointNearReferenceLine=(s,c,l,f)=>{const{data:u}=s,{rotationPoints:d}=u.handles;for(let h=0;h{const i=dr(n,r);if(!i)return;const o=this._getAnnotations(i);o!=null&&o.length&&o.forEach(a=>{Ot(a.annotationUID)})})}getHandleNearImagePoint(e,r,n,i){const o=re(e),{viewport:a}=o;let s=this._getRotationHandleNearImagePoint(a,r,n,i);if(s!==null||(s=this._getSlabThicknessHandleNearImagePoint(a,r,n,i),s!==null))return s}_unsubscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=dr(r,n),{element:o}=i;o.removeEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_subscribeToViewportNewVolumeSet(e){e.forEach(({viewportId:r,renderingEngineId:n})=>{const{viewport:i}=dr(r,n),{element:o}=i;o.addEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)})}_autoPanViewportIfNecessary(e,r){const n=r.getViewport(e),{clientWidth:i,clientHeight:o}=n.canvas,a=n.worldToCanvas(this.toolCenter),s=this.configuration.autoPan.panSize,c=[a[0],a[1]];if(a[0]<0?c[0]=s:a[0]>i&&(c[0]=i-s),a[1]<0?c[1]=s:a[1]>o&&(c[1]=o-s),c[0]===a[0]&&c[1]===a[1])return;const l=n.canvasToWorld(c),f=[l[0]-this.toolCenter[0],l[1]-this.toolCenter[1],l[2]-this.toolCenter[2]],u=n.getCamera(),{focalPoint:d,position:h}=u,g=[h[0]-f[0],h[1]-f[1],h[2]-f[2]],p=[d[0]-f[0],d[1]-f[1],d[2]-f[2]];n.setCamera({focalPoint:p,position:g}),n.render()}setSlabThickness(e,r){let n;const{filterActorUIDsToSetSlabThickness:i}=this.configuration;i&&i.length>0&&(n=i);let o=this.configuration.slabThicknessBlendMode;r===my.MINIMUM_SLAB_THICKNESS&&(o=$u.COMPOSITE),e.setBlendMode(o,n,!1),e.setSlabThickness(r,n)}_isClockWise(e,r,n){return(r[0]-e[0])*(n[1]-e[1])-(r[1]-e[1])*(n[0]-e[0])>0}_applyDeltaShiftToSelectedViewportCameras(e,r,n){r.forEach(i=>{this._applyDeltaShiftToViewportCamera(e,i,n)})}_applyDeltaShiftToViewportCamera(e,r,n){const{data:i}=r,o=e.getViewport(i.viewportId),a=o.getCamera(),s=a.viewPlaneNormal,c=nt.dot(n,s),l=[...s];if(nt.multiplyScalar(l,c),Math.abs(l[0])>.001||Math.abs(l[1])>.001||Math.abs(l[2])>.001){const f=[0,0,0],u=[0,0,0];nt.add(a.focalPoint,l,f),nt.add(a.position,l,u),o.setCamera({focalPoint:f,position:u}),o.render()}}_getRotationHandleNearImagePoint(e,r,n,i){const{data:o}=r,{rotationPoints:a}=o.handles;for(let s=0;sR===p.id))continue;const v=this._getReferenceLineControllable(p.id),x=this._getReferenceLineSlabThicknessControlsOn(p.id);if(!v||!x)continue;const m=d[g][2],y=d[g][3],w=ot();Lr(w,m,y),Da(w,w,.5);const C=ot();kn(C,m,w),Na(C,C);const S=ot();Da(S,C,l*.05);const T=ot(),_=ot();Lr(T,w,S),kn(_,w,S);const E={start:{x:T[0],y:T[1]},end:{x:m[0],y:m[1]}},D=Pr([E.start.x,E.start.y],[E.end.x,E.end.y],[n[0],n[1]]),b={start:{x:_[0],y:_[1]},end:{x:y[0],y:y[1]}},I=Pr([b.start.x,b.start.y],[b.end.x,b.end.y],[n[0],n[1]]);(D<=i||I<=i)&&(h.push(p.id),f.handles.activeOperation=null),g++}return f.activeViewportIds=[...h],this.editData={annotation:r},f.handles.activeOperation===go.DRAG}}Ko.toolName="Crosshairs";const tp="magnify-viewport";class hk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}}){super(e,r),this._hasBeenRemoved=!1,this.preMouseDownCallback=n=>{const i=n.detail,{element:o,currentPoints:a}=i,s=re(o),{viewport:c,renderingEngine:l}=s;if(!(c instanceof ln))throw new Error("MagnifyTool only works on StackViewports");const f=this._getReferencedImageId(c);if(!f)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");const u=He(o,this.getToolName());return this.editData={referencedImageId:f,viewportIdsToRender:u,enabledElement:s,renderingEngine:l,currentPoints:a},this._createMagnificationViewport(),this._activateDraw(o),Qe(o),n.preventDefault(),pe(u),!0},this.preTouchStartCallback=n=>{this.preMouseDownCallback(n)},this._createMagnificationViewport=()=>{const{enabledElement:n,referencedImageId:i,viewportIdsToRender:o,renderingEngine:a,currentPoints:s}=this.editData,{viewport:c}=n,{element:l}=c,f=c.getProperties(),{canvas:u,world:d}=s;let h;if(h=l.querySelector(".magnifyTool"),h===null){const p=document.createElement("div");p.classList.add("magnifyTool"),p.style.display="block",p.style.width=`${this.configuration.magnifyWidth}px`,p.style.height=`${this.configuration.magnifyHeight}px`,p.style.position="absolute",h=p,l.querySelector(".viewport-element").appendChild(p);const x={viewportId:tp,type:mn.STACK,element:h};a.enableElement(x)}h.style.top=`${u[1]-this.configuration.magnifyHeight/2}px`,h.style.left=`${u[0]-this.configuration.magnifyWidth/2}px`;const g=a.getViewport(tp);g.setStack([i]).then(()=>{if(this._hasBeenRemoved)return;g.setProperties(f);const{parallelScale:p}=c.getCamera(),{focalPoint:v,position:x,viewPlaneNormal:m}=g.getCamera(),y=Math.sqrt(Math.pow(v[0]-x[0],2)+Math.pow(v[1]-x[1],2)+Math.pow(v[2]-x[2],2)),w=[d[0],d[1],d[2]],C=[w[0]+y*m[0],w[1]+y*m[1],w[2]+y*m[2]];g.setCamera({parallelScale:p*(1/this.configuration.magnifySize),focalPoint:w,position:C}),g.render()}),h.style.display="block",pe(o)},this._dragCallback=n=>{const i=n.detail,{deltaPoints:o,element:a,currentPoints:s}=i,c=o.world,l=s.canvas,f=re(a),{renderingEngine:u}=f,d=u.getViewport(tp),h=a.querySelector(".magnifyTool");if(!h)return;h.style.top=`${l[1]-this.configuration.magnifyHeight/2}px`,h.style.left=`${l[0]-this.configuration.magnifyWidth/2}px`;const{focalPoint:g,position:p}=d.getCamera(),v=[p[0]+c[0],p[1]+c[1],p[2]+c[2]],x=[g[0]+c[0],g[1]+c[1],g[2]+c[2]];d.setCamera({focalPoint:x,position:v}),d.render()},this._dragEndCallback=n=>{const{element:i}=n.detail,o=re(i),{renderingEngine:a}=o;a.disableElement(tp);const s=i.querySelector(".viewport-element"),c=s.querySelector(".magnifyTool");s.removeChild(c),this._deactivateDraw(i),ct(i),this._hasBeenRemoved=!0},this._activateDraw=n=>{ve.isInteractingWithTool=!0,this._hasBeenRemoved=!1,n.addEventListener(F.MOUSE_UP,this._dragEndCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._dragEndCallback),n.addEventListener(F.TOUCH_END,this._dragEndCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._dragEndCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._dragEndCallback),n.removeEventListener(F.TOUCH_END,this._dragEndCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)}}_getReferencedImageId(e){const r=this.getTargetId(e);let n;return e instanceof ln&&(n=r.split("imageId:")[1]),n}}hk.toolName="Magnify";function Qc(t){const[e,r]=t;return so(e,r)}function td(t){const[e,r]=t,n=so(e,r),i=[e[0]-n,e[1]-n],o=[e[0]+n,e[1]+n];return[i,o]}const Vme="advancedMagnifyTool",Fme=125,{Events:ds}=Ao,bE=t=>t.uid!==t.referencedId;var $3;(function(t){t.ShowZoomFactorsList="showZoomFactorsList"})($3||($3={}));const Ume="AdvancedMagnify",Bme=1-Lo,HS=class HS extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:3,zoomFactorList:[1.5,2,2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:{showZoomFactorsList:{method:"showZoomFactorsList",bindings:[{mouseButton:la.Secondary,modifierKey:vr.Shift}]}}}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=re(a),{viewport:c,renderingEngine:l}=s,f=o.world,u=o.canvas,{magnifyingGlass:d}=this.configuration,{radius:h,zoomFactor:g,autoPan:p}=d,v=this._getCanvasHandlePoints(u,h),x=c.getCamera(),{viewPlaneNormal:m,viewUp:y}=x,w=this.getReferencedImageId(c,f,m,y),C=wn(),S=wn(),T=c.getFrameOfReferenceUID(),_={annotationUID:C,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...m],viewUp:[...y],FrameOfReferenceUID:T,referencedImageId:w},data:{sourceViewportId:c.id,magnifyViewportId:S,zoomFactor:g,isCanvasAnnotation:!0,handles:{points:v,activeHandleIndex:null}}};this.magnifyViewportManager.createViewport(_,{magnifyViewportId:S,sourceEnabledElement:s,position:u,radius:h,zoomFactor:g,autoPan:{enabled:p.enabled,padding:p.padding,callback:D=>{const b=_.data.handles.points,{canvas:I}=D.delta;for(let R=0,M=b.length;R{this.magnifyViewportManager.dispose(),Ru().forEach(i=>{i.metadata.toolName===this.getToolName()&&Ot(i.annotationUID)})},this.isPointNearTool=(n,i,o,a)=>{const{data:s}=i,{points:c}=s.handles,l=c,f=l[0],u=l[2],d=l[3],h=Math.abs(u[1]-f[1])*.5,g=[d[0]+h,f[1]+h],p=Qc([g,o]);return Math.abs(p-h){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},Qe(a),this._activateModify(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;const{points:l}=c.handles,f=l.findIndex(d=>d===o),u=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f},this._activateModify(s),Qe(s),pe(u),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{data:l}=a;l.handles.activeHandleIndex=null,this._deactivateModify(o),ct(o),this.editData=null,this.isDrawing=!1,pe(s),c&&en(a)},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{deltaPoints:o}=i,a=(o==null?void 0:o.canvas)??[0,0,0],{annotation:s,viewportIdsToRender:c}=this.editData,{points:l}=s.data.handles;l.forEach(f=>{f[0]+=a[0],f[1]+=a[1]}),s.invalidated=!0,this.editData.hasMoved=!0,pe(c)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{annotation:o,viewportIdsToRender:a,handleIndex:s}=this.editData,{data:c}=o;if(s===void 0){const{deltaPoints:l}=i,f=l.canvas;c.handles.points.forEach(d=>{d[0]+=f[0],d[1]+=f[1]}),o.invalidated=!0}else this._dragHandle(n),o.invalidated=!0;pe(a)},this._dragHandle=n=>{const i=n.detail,{annotation:o}=this.editData,{data:a}=o,{points:s}=a.handles,c=s,l=c[0],f=c[2],u=c[3],d=Math.abs(f[1]-l[1])*.5,h=[u[0]+d,l[1]+d],{currentPoints:g}=i,p=g.canvas,v=Qc([h,p]),x=this._getCanvasHandlePoints(h,v);s[0]=x[0],s[1]=x[1],s[2]=x[2],s[3]=x[3]},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length))return o;c=c==null?void 0:c.filter(u=>u.data.sourceViewportId===a.id);const l=this.filterInteractableAnnotationsForElement(s,c);if(!(l!=null&&l.length))return o;const f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let u=0;u[[n[0],n[1]-i,0],[n[0]+i,n[1],0],[n[0],n[1]+i,0],[n[0]-i,n[1],0]],this.magnifyViewportManager=du.getInstance()}showZoomFactorsList(e,r){const{element:n,currentPoints:i}=e.detail,o=re(n),{viewport:a}=o,{canvas:s}=i,c=n.querySelector(":scope .viewport-element"),l=r.data.zoomFactor,f=()=>u.parentElement.removeChild(u),u=this._getZoomFactorsListDropdown(l,d=>{d!==void 0&&(r.data.zoomFactor=Number.parseFloat(d),r.invalidated=!0),f(),a.render()});Object.assign(u.style,{left:`${s[0]}px`,top:`${s[1]}px`}),c.appendChild(u),u.focus()}_getZoomFactorsListDropdown(e,r){const{zoomFactorList:n}=this.configuration.magnifyingGlass,i=document.createElement("select");return i.size=5,Object.assign(i.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach(o=>{i.addEventListener(o,a=>a.stopPropagation())}),i.addEventListener("change",o=>{o.stopPropagation(),r(i.value)}),i.addEventListener("keydown",o=>{var s;((o.keyCode??o.which===27)||((s=o.key)==null?void 0:s.toLowerCase())==="escape")&&(o.stopPropagation(),r())}),n.forEach(o=>{const a=document.createElement("option");a.label=o,a.title=`Zoom factor ${o.toFixed(1)}`,a.value=o,a.defaultSelected=o===e,i.add(a)}),i}};HS.Actions=$3;let Qd=HS;class du{constructor(){this.createViewport=(e,r)=>{const{magnifyViewportId:n,sourceEnabledElement:i,position:o,radius:a,zoomFactor:s,autoPan:c}=r,{viewport:l}=i,{element:f}=l,u=new Gme({magnifyViewportId:n,sourceEnabledElement:i,radius:a,position:o,zoomFactor:s,autoPan:c});return this._addSourceElementEventListener(f),this._magnifyViewportsMap.set(u.viewportId,{annotation:e,magnifyViewport:u,magnifyViewportInfo:r}),u},this._annotationRemovedCallback=e=>{const{annotation:r}=e.detail;r.metadata.toolName===Ume&&this.destroyViewport(r.data.magnifyViewportId)},this._newStackImageCallback=e=>{const{viewportId:r,imageId:n}=e.detail,i=this._getMagnifyViewportsMapEntriesBySourceViewportId(r),{viewport:o}=Xn(r);o.stackActorReInitialized&&this._reset(r),i.forEach(({annotation:a})=>{a.metadata.referencedImageId=n,a.invalidated=!0})},this._newVolumeImageCallback=e=>{const{renderingEngineId:r,viewportId:n}=e.detail,o=gr(r).getViewport(n),{viewPlaneNormal:a}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach(({annotation:c})=>{const{viewPlaneNormal:l}=c.metadata;if(!(Math.abs(je(l,a))>Bme))return;const{handles:u}=c.data,d=o.canvasToWorld([0,0]),h=Qt(we(),d,u.points[0]),g=je(h,a),p=lr(we(),a,g);for(let v=0,x=u.points.length;vthis.destroyViewport(r))}_getMagnifyViewportsMapEntriesBySourceViewportId(e){return Array.from(this._magnifyViewportsMap.values()).filter(({magnifyViewport:n})=>{const{viewport:i}=n.sourceEnabledElement;return i.id===e})}_reset(e){this._getMagnifyViewportsMapEntriesBySourceViewportId(e).forEach(({magnifyViewport:n,annotation:i,magnifyViewportInfo:o})=>{this.destroyViewport(n.viewportId);const a=Xn(e);this.createViewport(i,{...o,sourceEnabledElement:{...a}})})}_addEventListeners(){Ce.addEventListener(F.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){Ce.removeEventListener(F.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(ds.STACK_NEW_IMAGE,this._newStackImageCallback);const r=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(ds.VIEWPORT_NEW_IMAGE_SET,r);const n=i=>{const{viewportId:o}=i.detail;this._reset(o)};e.addEventListener(ds.VOLUME_VIEWPORT_NEW_VOLUME,n),e.addEventListener(ds.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=r,e.newVolumeHandler=n}_removeSourceElementEventListener(e){e.removeEventListener(ds.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(ds.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(ds.VIEWPORT_NEW_IMAGE_SET,e.newStackHandler),e.removeEventListener(ds.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}class Gme{constructor({magnifyViewportId:e,sourceEnabledElement:r,radius:n=Fme,position:i=[0,0],zoomFactor:o,autoPan:a}){this._enabledElement=null,this._sourceToolGroup=null,this._magnifyToolGroup=null,this._isViewportReady=!1,this._radius=0,this._resized=!1,this._canAutoPan=!1,this._viewportId=e??wn(),this._sourceEnabledElement=r,this._autoPan=a,this.radius=n,this.position=i,this.zoomFactor=o,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=S2(this._resizeViewport.bind(this),1),this._initialize()}get sourceEnabledElement(){return this._sourceEnabledElement}get viewportId(){return this._viewportId}get radius(){return this._radius}set radius(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}update(){const{radius:e,position:r,visible:n}=this,{viewport:i}=this._enabledElement,{element:o}=i,a=2*e,[s,c]=r;this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(o.style,{display:n?"block":"hidden",width:`${a}px`,height:`${a}px`,left:`${-e}px`,top:`${-e}px`,transform:`translate(${s}px, ${c}px)`}),this._isViewportReady&&(this._syncViewports(),i.render())}dispose(){const{viewport:e}=this._enabledElement,{element:r}=e,n=e.getRenderingEngine();this._removeEventListeners(r),n.disableElement(e.id),r.parentNode&&r.parentNode.removeChild(r)}_handleToolModeChanged(e){var s;const{_magnifyToolGroup:r}=this,{toolGroupId:n,toolName:i,mode:o,toolBindingsOptions:a}=e.detail;if(((s=this._sourceToolGroup)==null?void 0:s.id)===n)switch(o){case Ft.Active:r.setToolActive(i,a);break;case Ft.Passive:r.setToolPassive(i);break;case Ft.Enabled:r.setToolEnabled(i);break;case Ft.Disabled:r.setToolDisabled(i);break;default:throw new Error(`Unknow tool mode (${o})`)}}_inheritBorderRadius(e){const r=e.querySelector(".viewport-element"),n=e.querySelector(".cornerstone-canvas");r.style.borderRadius="inherit",n.style.borderRadius="inherit"}_createViewportNode(){const e=document.createElement("div"),{radius:r}=this,n=r*2;return e.classList.add(Vme),Object.assign(e.style,{display:"block",width:`${n}px`,height:`${n}px`,position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:`${-r}px`,top:`${-r}px`,transform:"translate(-1000px, -1000px)"}),e}_convertZoomFactorToParallelScale(e,r,n){const{parallelScale:i}=e.getCamera(),o=r.canvas.offsetWidth/e.canvas.offsetWidth;return i*(1/n)*o}_isStackViewport(e){return"setStack"in e}_isVolumeViewport(e){return"addVolumes"in e}_cloneToolGroups(e,r){const n=e.getActors(),i=`${r.id}-toolGroup`,o=Cn(e.id,e.renderingEngineId),a=o.clone(i,s=>{const c=o.getToolInstance(s);return c instanceof ar&&!(c instanceof Qd)});return a.addViewport(r.id,r.renderingEngineId),n.filter(bE).forEach(s=>{P0(this.viewportId,[{segmentationId:s.referencedId,type:Ge.Labelmap}])}),{sourceToolGroup:o,magnifyToolGroup:a}}_cloneStack(e,r){const n=e.getImageIds();r.setStack(n).then(()=>{this._isViewportReady=!0,this.update()})}_cloneVolumes(e,r){const i=e.getActors().filter(o=>!bE(o)).map(o=>({volumeId:o.uid}));return r.setVolumes(i).then(()=>{this._isViewportReady=!0,this.update()}),r}_cloneViewport(e,r){const{viewportId:n}=this,i=e.getRenderingEngine(),{options:o}=e,a={element:r,viewportId:n,type:e.type,defaultOptions:{...o}};i.enableElement(a);const s=i.getViewport(n);this._isStackViewport(e)?this._cloneStack(e,s):this._isVolumeViewport(e)&&this._cloneVolumes(e,s),this._inheritBorderRadius(r);const c=this._cloneToolGroups(e,s);this._sourceToolGroup=c.sourceToolGroup,this._magnifyToolGroup=c.magnifyToolGroup}_cancelMouseEventCallback(e){e.stopPropagation(),e.preventDefault()}_browserMouseUpCallback(e){const{element:r}=this._enabledElement.viewport;document.removeEventListener("mouseup",this._browserMouseUpCallback),r.addEventListener("mouseup",this._cancelMouseEventCallback),r.addEventListener("mousemove",this._cancelMouseEventCallback)}_browserMouseDownCallback(e){var n;const{element:r}=this._enabledElement.viewport;this._canAutoPan=!!((n=e.target)!=null&&n.closest(".advancedMagnifyTool")),document.addEventListener("mouseup",this._browserMouseUpCallback),r.removeEventListener("mouseup",this._cancelMouseEventCallback),r.removeEventListener("mousemove",this._cancelMouseEventCallback)}_mouseDragCallback(e){if(!ve.isInteractingWithTool)return;const{_autoPan:r}=this;if(!r.enabled||!this._canAutoPan)return;const{currentPoints:n}=e.detail,{viewport:i}=this._enabledElement,{canvasToWorld:o}=i,{canvas:a}=n,{radius:s}=this,c=[s,s],l=so(c,a),f=s-r.padding;if(l<=f)return;const u=l-f,d=Oo(ot(),a,c);Na(d,d),Da(d,d,u);const h=Lr(ot(),this.position,d),g=o(this.position),p=o(h),v=Qt(we(),p,g),x={points:{currentPosition:{canvas:this.position,world:g},newPosition:{canvas:h,world:p}},delta:{canvas:d,world:v}};r.callback(x)}_addBrowserEventListeners(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}_removeBrowserEventListeners(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}_addEventListeners(e){Ce.addEventListener(F.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(F.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){Ce.removeEventListener(F.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(F.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}_initialize(){const{_sourceEnabledElement:e}=this,{viewport:r}=e,{canvas:n}=r,i=this._createViewportNode();n.parentNode.appendChild(i),this._addEventListeners(i),this._cloneViewport(r,i),this._enabledElement=re(i)}_syncViewportsCameras(e,r){const n=e.canvasToWorld(this.position),i=this._convertZoomFactorToParallelScale(e,r,this.zoomFactor),{focalPoint:o,position:a,viewPlaneNormal:s}=r.getCamera(),c=Math.sqrt(Math.pow(o[0]-a[0],2)+Math.pow(o[1]-a[1],2)+Math.pow(o[2]-a[2],2)),l=[n[0],n[1],n[2]],f=[l[0]+c*s[0],l[1]+c*s[1],l[2]+c*s[2]];r.setCamera({parallelScale:i,focalPoint:l,position:f})}_syncStackViewports(e,r){r.setImageIdIndex(e.getCurrentImageIdIndex())}_syncViewports(){const{viewport:e}=this._sourceEnabledElement,{viewport:r}=this._enabledElement,n=e.getProperties();r.getImageData()&&(r.setProperties(n),this._syncViewportsCameras(e,r),this._isStackViewport(e)&&this._syncStackViewports(e,r),this._syncViewportsCameras(e,r),r.render())}_resizeViewport(){const{viewport:e}=this._enabledElement;e.getRenderingEngine().resize()}}Qd.toolName="AdvancedMagnify";const{EPSILON:vy}=Sl;class el extends uc{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",enforceSameFrameOfReference:!0,showFullDimension:!1}}){super(e,r),this.editData=null,this._init=()=>{var h;const i=_i()[0];if(!i)return;let o=i.getViewports();o=I2(o,this.getToolName());const a=i.getViewport(this.configuration.sourceViewportId);if(!(a!=null&&a.getImageData()))return;const{element:s}=a,{viewUp:c,viewPlaneNormal:l}=a.getCamera(),f=Z1(a);let u=(h=this.editData)==null?void 0:h.annotation;const d=a.getFrameOfReferenceUID();if(u)this.editData.annotation.data.handles.points=f;else{const g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...l],viewUp:[...c],FrameOfReferenceUID:d,referencedImageId:null},data:{handles:{points:f}}};Ut(g,s),u=g}this.editData={sourceViewportId:a.id,renderingEngine:i,annotation:u},pe(o.filter(g=>g.id!==a.id).map(g=>g.id))},this.onSetToolEnabled=()=>{this._init()},this.onSetToolConfiguration=()=>{this._init()},this.onCameraModified=n=>{this._init()},this.renderAnnotation=(n,i)=>{var V,$;const{viewport:o}=n;if(!this.editData)return!1;const{annotation:a,sourceViewportId:s}=this.editData;let c=!1;const{viewport:l}=Xn(s)||{};if(!l||l.id===o.id||!a||!(($=(V=a==null?void 0:a.data)==null?void 0:V.handles)!=null&&$.points)||this.configuration.enforceSameFrameOfReference&&l.getFrameOfReferenceUID()!==o.getFrameOfReferenceUID())return c;const f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},u=a.data.handles.points[0],d=a.data.handles.points[1],h=a.data.handles.points[2],g=a.data.handles.points[3],{focalPoint:p,viewPlaneNormal:v,viewUp:x}=o.getCamera(),{viewPlaneNormal:m}=l.getCamera();if(this.isParallel(v,m))return c;const y=Ba(v,p),w=[u,h,d,g],C=[u,d,h,g];let S=w,T=kt(we(),w[0],w[1]);T=on(we(),T);let _=kt(we(),w[2],w[0]);_=on(we(),_);const E=Kt(we(),T,_);if(this.isParallel(E,v))return c;this.isPerpendicular(T,v)&&(S=C);const D=Ju(S[0],S[1],y),b=Ju(S[2],S[3],y),{annotationUID:I}=a;f.annotationUID=I;const R=this.getStyle("lineWidth",f,a),M=this.getStyle("lineDash",f,a),L=this.getStyle("color",f,a),A=this.getStyle("shadow",f,a);let G=[D,b].map(H=>o.worldToCanvas(H));if(this.configuration.showFullDimension&&(G=this.handleFullDimension(o,D,v,x,b,G)),G.length<2)return c;const P=`${I}-line`;return It(i,I,"1",G[0],G[1],{color:L,width:R,lineDash:M,shadow:A},P),c=!0,c},this.isPerpendicular=(n,i)=>{const o=je(n,i);return Math.abs(o)u3(l,m)),[v,x]=[r,o].map(m=>u3(l,m));a=[[d,h],[h,g],[p,g],[d,p]].map(([m,y])=>this.intersectInfiniteLines(m,y,v,x)).filter(m=>m&&this.isInBound(m,u)).map(m=>{const y=dR(l,m);return e.worldToCanvas(y)})}catch(f){console.log(f)}return a}intersectInfiniteLines(e,r,n,i){const[o,a]=e,[s,c]=r,[l,f]=n,[u,d]=i,h=c-a,g=o-s,p=s*a-o*c,v=d-f,x=l-u,m=u*f-l*d;if(Math.abs(h*x-v*g)1-vy}isInBound(e,r){return e[0]>=0&&e[0]<=r[0]&&e[1]>=0&&e[1]<=r[1]}}el.toolName="ReferenceLines";const{EPSILON:IE}=Sl;class gk extends uc{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}}){super(e,r),this.onSetToolEnabled=()=>{this._init()},this.onSetToolActive=()=>{this._init()},this._init=()=>{const n=this.configuration.sourceImageIds;if(!(n!=null&&n.length)){console.warn("OverlayGridTool: No sourceImageIds provided in configuration");return}const i=Pe("imagePlaneModule",n[0]);if(!i){console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");return}const{frameOfReferenceUID:o}=i,a=Wn(this.toolGroupId).viewportsInfo;if(!(a!=null&&a.length)){console.warn("OverlayGridTool: No viewports found");return}const s=_t(this.getToolName(),o);if(!(s!=null&&s.length)){const c=n.map(f=>this.calculateImageIdPointSets(f)),l={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{viewportData:new Map,pointSets:c}};Ut(l,o)}pe(a.map(({viewportId:c})=>c))},this.calculateImageIdPointSets=n=>{const{imagePositionPatient:i,rows:o,columns:a,rowCosines:s,columnCosines:c,rowPixelSpacing:l,columnPixelSpacing:f}=Pe("imagePlaneModule",n),u=[...i],d=[...i],h=[...i],g=[...i];return Vt(d,i,c,a*f),Vt(h,i,s,o*l),Vt(g,h,c,a*f),{pointSet1:[u,h,d,g],pointSet2:[u,d,h,g]}},this.renderAnnotation=(n,i)=>{const o=this.configuration.sourceImageIds;let a=!1;if(!(o!=null&&o.length))return a;const{viewport:s,FrameOfReferenceUID:c}=n;if(s.getImageIds().length<2)return a;const f=_t(this.getToolName(),c);if(!(f!=null&&f.length))return a;const u=f[0],{annotationUID:d}=u,{focalPoint:h,viewPlaneNormal:g}=s.getCamera(),p={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},v=this.getImageIdNormal(o[0]);if(this.isParallel(g,v))return a;const x=Ba(g,h),m=u.data.pointSets,y=u.data.viewportData;for(let w=0;ws.worldToCanvas(G)),L=`${d}-line`,A=`${w}`;It(i,d,A,M[0],M[1],{color:I,width:D,lineDash:b,shadow:R},L)}return a=!0,a},this.initializeViewportData=(n,i)=>(n.set(i,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),n.get(i)),this.isPerpendicular=(n,i)=>{const o=je(n,i);return Math.abs(o)1-IE}getImageIdNormal(e){const{imageOrientationPatient:r}=Pe("imagePlaneModule",e),n=Ye(r[0],r[1],r[2]),i=Ye(r[3],r[4],r[5]);return Kt(we(),n,i)}}gk.toolName="OverlayGrid";class pk extends uc{constructor(e={},r={configuration:{opacity:.5}}){super(e,r),this._init=()=>{var s;const n=Wn(this.toolGroupId).viewportsInfo;if(!(n!=null&&n.length)){console.warn(this.getToolName()+"Tool: No viewports found");return}const i=(s=gr(n[0].renderingEngineId))==null?void 0:s.getViewport(n[0].viewportId);if(!i)return;const o=i.getFrameOfReferenceUID(),a=_t(this.getToolName(),o);if(!(a!=null&&a.length)){const c=new Map;Wme(c,n);const l={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:c}};Ut(l,o)}pe(n.map(({viewportId:c})=>c))},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=n=>{this._init()},this.renderAnnotation=(n,i)=>{const{viewport:o,FrameOfReferenceUID:a}=n;let s=!1;const c=_t(this.getToolName(),a);if(!(c!=null&&c.length))return s;const l=c[0],{annotationUID:f}=l,u=l.data.actorsWorldPointsMap;mk(u,o);const d=o.getActors(),h=vk(o);return d.forEach(g=>{if(!(g!=null&&g.clippingFilter))return;const p=u.get(g.uid);if(!p||!p.get(h))return;let v=1;const{worldPointsSet:x,color:m}=p.get(h);for(let y=0;yo.worldToCanvas(_)),S={color:m,fillColor:m,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},T=g.uid+"#"+v;$s(i,f,T,C,S),v++}}),s=!0,s}}}function Wme(t,e){e.forEach(({viewportId:r,renderingEngineId:n})=>{var o;const i=(o=gr(n))==null?void 0:o.getViewport(r);mk(t,i)})}function mk(t,e){const r=e.getActors(),n=vk(e);r.forEach(i=>{if(!(i!=null&&i.clippingFilter))return;let o=t.get(i.uid);if(o||(o=new Map,t.set(i.uid,o)),!o.get(n)){const a=i.clippingFilter.getOutputData(),s=nk(a);if(!s)return;const c=i.actor.getProperty().getColor(),l=zme(c);o.set(n,{worldPointsSet:s,color:l})}})}function vk(t){const{viewPlaneNormal:e}=t.getCamera(),r=t.getCurrentImageIdIndex();return`${t.id}-${KC(e)}-${r}`}function zme(t){function e(r){let n=Math.floor(r*255).toString(16);return n.length===1&&(n="0"+n),n}return"#"+e(t[0])+e(t[1])+e(t[2])}pk.toolName="SegmentationIntersection";class Ri extends uc{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}}){super(e,r),this.isDrawing=!1,this.isHandleOutsideImage=!1,this._elementWithCursor=null,this._currentCursorWorldPosition=null,this._currentCanvasPosition=null,this._disableCursorEnabled=!1,this.mouseMoveCallback=n=>{const{detail:i}=n,{element:o,currentPoints:a}=i;this._currentCursorWorldPosition=a.world,this._currentCanvasPosition=a.canvas,this._elementWithCursor=o;const s=this.getActiveAnnotation(o);return s===null?(this.createInitialAnnotation(a.world,o),!1):(this.updateAnnotationPosition(o,s),!1)},this.createInitialAnnotation=(n,i)=>{const o=re(i);if(!o)throw new Error("No enabled element found");const{viewport:a,renderingEngine:s}=o;this.isDrawing=!0;const c=a.getCamera(),{viewPlaneNormal:l,viewUp:f}=c;if(!l||!f)throw new Error("Camera not found");const u=this.getReferencedImageId(a,n,l,f),d=a.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...l],viewUp:[...f],FrameOfReferenceUID:d,referencedImageId:u},data:{label:"",handles:{points:[[...n]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(_t(this.getToolName(),i).length>0)return null;if(Ut(h,i)===null)return;const v=He(i,this.getToolName(),!1);pe(v)},this.onCameraModified=n=>{const i=n.detail,{element:o,previousCamera:a,camera:s}=i,l=re(o).viewport;if(o!==this._elementWithCursor)return;const f=a.focalPoint,u=s.viewPlaneNormal,d=s.focalPoint,h=[0,0,0];if(nt.subtract(d,f,h),h.reduce((v,x)=>v+x,0)===0)return;const g=nt.dot(h,u);if(Math.abs(g)<.01||!this._currentCanvasPosition)return;const p=l.canvasToWorld(this._currentCanvasPosition);this._currentCursorWorldPosition=p,this.updateAnnotationPosition(o,this.getActiveAnnotation(o))},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a,FrameOfReferenceUID:s}=n,c=this._elementWithCursor===a.element;this.configuration.positionSync&&!c&&this.updateViewportImage(a);const{element:l}=a;let f=_t(this.getToolName(),l);if(!(f!=null&&f.length)||(f=this.filterInteractableAnnotationsForElement(l,f),!(f!=null&&f.length)))return o;const u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;disNaN(I)))return o;const S=x.map(I=>a.worldToCanvas(I));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Ur(g))continue;const T={upper:"upper",right:"right",lower:"lower",left:"left"},[_,E]=S[0],D=c?20:7,b=c?5:7;It(i,g,T.upper,[_,E-(D/2+b)],[_,E-D/2],{color:C,lineDash:w,lineWidth:y}),It(i,g,T.lower,[_,E+(D/2+b)],[_,E+D/2],{color:C,lineDash:w,lineWidth:y}),It(i,g,T.right,[_+(D/2+b),E],[_+D/2,E],{color:C,lineDash:w,lineWidth:y}),It(i,g,T.left,[_-(D/2+b),E],[_-D/2,E],{color:C,lineDash:w,lineWidth:y}),o=!0}return o},this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=Wn(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>dr(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&Qe(n.viewport.element)})}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=Wn(this.toolGroupId).viewportsInfo;if(!e)return;e.map(n=>dr(n.viewportId,n.renderingEngineId)).forEach(n=>{n&&ct(n.viewport.element)})}getActiveAnnotation(e){const r=_t(this.getToolName(),e);return r.length?r[0]:null}updateAnnotationPosition(e,r){var a,s;const n=this._currentCursorWorldPosition;if(!n||!((s=(a=r.data)==null?void 0:a.handles)!=null&&s.points))return;r.data.handles.points=[[...n]],r.invalidated=!0;const i=He(e,this.getToolName(),!1);re(e)&&pe(i)}filterInteractableAnnotationsForElement(e,r){var d,h,g;if(!(r instanceof Array)||r.length===0)return[];const n=r[0],i=(d=re(e))==null?void 0:d.viewport;if(!i)return[];const o=i.getCamera(),{viewPlaneNormal:a,focalPoint:s}=o;if(!a||!s)return[];const c=(g=(h=n.data)==null?void 0:h.handles)==null?void 0:g.points;if(!(c instanceof Array)||c.length!==1)return[];const l=c[0],f=Ba(a,s);return q1(f,l)isNaN(n)))){if(e instanceof ln){const n=hR(r,e);if(n===null)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof an){const{focalPoint:n,viewPlaneNormal:i}=e.getCamera();if(!n||!i)return;const o=Ba(i,n),a=q1(o,r,!0);if(Math.abs(a)<.5)return;const s=on(we(),Ye(...i)),c=lr(we(),s,a),l=xn(we(),Ye(...n),c);{e.setCamera({focalPoint:l});const f=e.getRenderingEngine();f&&f.renderViewport(e.id)}}}}}Ri.toolName="ReferenceCursors";const OE=[];class yk extends uc{constructor(e={},r={configuration:{viewportId:"",scaleLocation:"bottom"}}){super(e,r),this.editData=null,this._init=()=>{const i=_i()[0];if(!i)return;const o=Wn(this.toolGroupId).viewportsInfo;if(!o)return;const a=o.map(g=>dr(g.viewportId,g.renderingEngineId));let{viewport:s}=a[0];const{FrameOfReferenceUID:c}=a[0];if(this.configuration.viewportId&&a.forEach(g=>{g.viewport.id==this.configuration.viewportId&&(s=g.viewport)}),!s)return;const{viewUp:l,viewPlaneNormal:f}=s.getCamera(),u=Z1(s);let d=this.editData.annotation;const h=_t(this.getToolName(),s.element);h.length&&(d=h.filter(g=>g.data.viewportId==s.id)[0]),a.forEach(g=>{const{viewport:p}=g;if(!OE.includes(p.id)){const v={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...f],viewUp:[...l],FrameOfReferenceUID:c,referencedImageId:null},data:{handles:{points:Z1(p)},viewportId:p.id}};OE.push(p.id),Ut(v,p.element),d=v}}),this.editData.annotation&&this.editData.annotation.data.viewportId==s.id&&(this.editData.annotation.data.handles.points=u,this.editData.annotation.data.viewportId=s.id),this.editData={viewport:s,renderingEngine:i,annotation:d}},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=n=>{this.configuration.viewportId=n.detail.viewportId,this._init()},this.computeScaleSize=(n,i,o)=>{const a=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];let s;return o=="top"||o=="bottom"?s=a.filter(c=>cn*.2):s=a.filter(c=>ci*.2),s[0]},this.computeEndScaleTicks=(n,i)=>{const o={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]},a=[[n[1][0]+o[i][0][0],n[1][1]+o[i][0][0]],[n[1][0]+o[i][1][0],n[1][1]+o[i][1][1]]],s=[[n[0][0]+o[i][0][0],n[0][1]+o[i][0][0]],[n[0][0]+o[i][1][0],n[0][1]+o[i][1][1]]];return{endTick1:a,endTick2:s}},this.computeInnerScaleTicks=(n,i,o,a,s)=>{let c;i=="bottom"||i=="top"?c=s[0][0]-a[0][0]:(i=="left"||i=="right")&&(c=s[0][1]-a[0][1]);const l=[],f=[],u=[];let d=n;n>=50&&(d=n/10);const h=c/d;for(let g=0;g{let a,s=kt(we(),o[0],o[1]);s=on(we(),s);let c=kt(we(),o[2],o[0]);c=on(we(),c);const l={bottom:[o[1],o[2]],top:[o[0],o[3]],right:[o[2],o[3]],left:[o[0],o[1]]},f=xn(we(),l[i][0],l[i][0]).map(d=>d/2),u=n/2/Math.sqrt(Math.pow(s[0],2)+Math.pow(s[1],2)+Math.pow(s[2],2));return i=="top"||i=="bottom"?a=[kt(we(),f,c.map(d=>d*u)),xn(we(),f,c.map(d=>d*u))]:(i=="left"||i=="right")&&(a=[xn(we(),f,s.map(d=>d*u)),kt(we(),f,s.map(d=>d*u))]),a},this.computeCanvasScaleCoordinates=(n,i,o,a,s)=>{let c;if(s=="top"||s=="bottom"){const l=i[0][0]-i[1][0];c=[[n.width/2-l/2,o.height],[n.width/2+l/2,o.height]]}else if(s=="left"||s=="right"){const l=i[0][1]-i[1][1];c=[[a.width,n.height/2-l/2],[a.width,n.height/2+l/2]]}return c},this.computeScaleBounds=(n,i,o,a)=>{const s=i*Math.min(1e3,n.width),c=o*Math.min(1e3,n.height),l={bottom:[-c,-s],top:[c,s],left:[c,s],right:[-c,-s]},f={bottom:[n.height,n.width],top:[0,n.width],left:[n.height,0],right:[n.height,n.width]};return{height:f[a][0]+l[a][0],width:f[a][1]+l[a][1]}}}renderAnnotation(e,r){if(!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:i}=e,a=_t(this.getToolName(),i.element).filter(ee=>ee.data.viewportId==i.id)[0],s=e.viewport.canvas,c=!1;if(!i)return c;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},f={width:s.width/window.devicePixelRatio||1,height:s.height/window.devicePixelRatio||1},u=a.data.handles.points[0],d=a.data.handles.points[1],h=a.data.handles.points[2],g=a.data.handles.points[3],p=[u,h,d,g],v=Cr(h,g),x=Cr(u,h),m=this.computeScaleBounds(f,.05,.05,n),y=this.computeScaleBounds(f,.05,.05,n),w=this.computeScaleSize(v,x,n),C=this.computeWorldScaleCoordinates(w,n,p).map(ee=>i.worldToCanvas(ee)),S=this.computeCanvasScaleCoordinates(f,C,y,m,n),T=this.computeEndScaleTicks(S,n),{annotationUID:_}=a;l.annotationUID=_;const E=this.getStyle("lineWidth",l,a),D=this.getStyle("lineDash",l,a),b=this.getStyle("color",l,a),I=this.getStyle("shadow",l,a),R=`${_}-scaleline`;It(r,_,"1",S[0],S[1],{color:b,width:E,lineDash:D,shadow:I},R);const L=`${_}-left`;It(r,_,"2",T.endTick1[0],T.endTick1[1],{color:b,width:E,lineDash:D,shadow:I},L);const G=`${_}-right`;It(r,_,"3",T.endTick2[0],T.endTick2[1],{color:b,width:E,lineDash:D,shadow:I},G);const N={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},V=[S[0][0]+N[n][0],S[0][1]+N[n][1]],$=this._getTextLines(w),{tickIds:H,tickUIDs:Y,tickCoordinates:ne}=this.computeInnerScaleTicks(w,n,_,T.endTick1,T.endTick2);for(let ee=0;ee=50?(r=e/10,n=" cm"):(r=e,n=" mm"),[r.toString().concat(n)]}}yk.toolName="ScaleOverlay";const xk=(t,e,r)=>{var a,s,c;if(!((c=(s=(a=e==null?void 0:e.data)==null?void 0:a.contour)==null?void 0:s.polyline)!=null&&c.length))return;const{polyline:n}=e.data.contour,{length:i}=n;let o=1/0;for(let l=0;lthis.toolInfo.toolSize||(this.pushOneHandle(a,c,r),o.first===void 0&&(o.first=a),o.last=a)}return o}configureToolSize(e){const r=this.toolInfo;if(r.toolSize&&r.maxToolSize)return;const i=e.detail.element,a=Math.min(i.clientWidth,i.clientHeight)/12;r.toolSize=a,r.maxToolSize=a}updateToolSize(e,r,n){const i=this.toolInfo,o=xk(r,n,e);o>0&&(i.toolSize=Math.min(i.maxToolSize,o))}getMaxSpacing(e){return Math.max(this.toolInfo.toolSize/4,e)}getInsertPosition(e,r,n){let i;const{points:o,element:a,mouseCanvasPoint:s}=n,c=this.toolInfo.toolSize,l=re(a),{viewport:f}=l,u=f.worldToCanvas(o[e]),d=f.worldToCanvas(o[r]),h=[(u[0]+d[0])/2,(u[1]+d[1])/2],g=so(s,h);if(g{const i=n.detail,o=i.element;if(this.configureToolSize(n),this.selectFreehandTool(i),this.commonData.activeAnnotationUID!==null)return this.isActive=!0,Qe(o),this.activateModify(o),!0},this.mouseMoveCallback=n=>{this.mode===Ft.Active?(this.configureToolSize(n),this.updateCursor(n)):this.commonData.canvasLocation=void 0},this.endCallback=n=>{const i=n.detail,{element:o}=i,a=this.configuration,s=re(o);this.isActive=!1,this.deactivateModify(o),ct(o);const{renderingEngineId:c,viewportId:l}=s,u=Cn(l,c).getToolInstance(a.referencedToolName),h=this.filterSculptableAnnotationsForElement(o).find(g=>g.annotationUID===this.commonData.activeAnnotationUID);u.configuration.calculateStats&&(h.invalidated=!0),fn(h,o)},this.dragCallback=n=>{const i=n.detail,o=i.element;this.updateCursor(n);const a=this.filterSculptableAnnotationsForElement(o),s=a.find(l=>l.annotationUID===this.commonData.activeAnnotationUID);if(!(a!=null&&a.length)||!this.isActive)return;const c=s.data.contour.polyline;this.sculpt(i,c)},this.registerShapes(nd.shapeName,nd),this.setToolShape(this.configuration.toolShape)}registerShapes(e,r){const n=new r;this.registeredShapes.set(e,n)}sculpt(e,r){const n=this.configuration,i=e.element,o=re(i),{viewport:a}=o,s=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,points:r,maxSpacing:s.getMaxSpacing(n.minSpacing),element:i};const c=s.pushHandles(a,this.sculptData);c.first!==void 0&&this.insertNewHandles(c)}interpolatePointsWithinMaxSpacing(e,r,n,i){const{element:o}=this.sculptData,a=re(o),{viewport:s}=a,c=ME(e+1,r.length),l=s.worldToCanvas(r[e]),f=s.worldToCanvas(r[c]);so(l,f)>i&&n.push(e)}updateCursor(e){const r=e.detail,n=r.element,i=re(n),{renderingEngine:o,viewport:a}=i;this.commonData.viewportIdsToRender=[a.id];const s=this.filterSculptableAnnotationsForElement(n);if(!(s!=null&&s.length))return;const c=s.find(l=>l.annotationUID===this.commonData.activeAnnotationUID);if(this.commonData.canvasLocation=r.currentPoints.canvas,this.isActive)c.highlighted=!0;else{const l=this.registeredShapes.get(this.selectedShape),f=r.currentPoints.canvas;l.updateToolSize(f,a,c)}pe(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const r=this.configuration,n=re(e),{renderingEngineId:i,viewportId:o}=n,a=[],c=Cn(o,i).getToolInstance(r.referencedToolName);return r.referencedToolNames.forEach(l=>{const f=_t(l,e);f&&a.push(...f)}),c.filterInteractableAnnotationsForElement(e,a)}configureToolSize(e){this.registeredShapes.get(this.selectedShape).configureToolSize(e)}insertNewHandles(e){const r=this.findNewHandleIndices(e);let n=0;for(let i=0;i<(r==null?void 0:r.length);i++){const o=r[i]+1+n;this.insertHandleRadially(o),n++}}findNewHandleIndices(e){const{points:r,maxSpacing:n}=this.sculptData,i=[];for(let o=e.first;o<=e.last;o++)this.interpolatePointsWithinMaxSpacing(o,r,i,n);return i}insertHandleRadially(e){const{points:r}=this.sculptData;if(e>r.length-1&&this.commonData.isEditingOpenContour)return;const n=this.registeredShapes.get(this.selectedShape),i=e-1,o=ME(e,r.length),s=n.getInsertPosition(i,o,this.sculptData);r.splice(e,0,s)}selectFreehandTool(e){const r=this.getClosestFreehandToolOnElement(e);r!==void 0&&(this.commonData.activeAnnotationUID=r)}getClosestFreehandToolOnElement(e){const{element:r}=e,n=re(r),{viewport:i}=n,o=this.configuration,a=this.filterSculptableAnnotationsForElement(r);if(!(a!=null&&a.length))return;const s=e.currentPoints.canvas,c={distance:1/0,toolIndex:void 0,annotationUID:void 0};for(let l=0;l<(a==null?void 0:a.length);l++){if(a[l].isLocked||!a[l].isVisible)continue;const f=xk(i,a[l],s);f!==-1&&f(t+e)%e;l0.toolName="SculptorTool";const $me={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]};class wk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:$me.Z,rotateIncrementDegrees:30}}){super(e,r)}mouseWheelCallback(e){const{element:r,wheel:n}=e.detail,i=re(r),{viewport:o}=i,{direction:a,rotateIncrementDegrees:s}=this.configuration,c=o.getCamera(),{viewUp:l,position:f,focalPoint:u}=c,{direction:d}=n,[h,g,p]=u,[v,x,m]=a,y=d*(s*Math.PI)/180,w=[0,0,0],C=[0,0,0],S=[0,0,0],T=qe(new Float32Array(16));nn(T,T,[h,g,p]),Hr(T,T,y,[v,x,m]),nn(T,T,[-h,-g,-p]),et(w,f,T),et(C,u,T),qe(T),Hr(T,T,y,[v,x,m]),et(S,l,T),o.setCamera({position:w,viewUp:S,focalPoint:C}),o.render()}}wk.toolName="VolumeRotateMouseWheel";const{transformWorldToIndex:RE}=Yt;class xl extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:jme}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;Qe(a),this.isDrawing=!0;const{viewPlaneNormal:u,viewUp:d,position:h}=l.getCamera(),g=this.getReferencedImageId(l,s,u,d),p={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:g,viewUp:d,cameraPosition:h},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Ut(p,a);const v=He(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(v),p},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,[f,u]=l.handles.points,d=c.worldToCanvas(f),h=c.worldToCanvas(u),g={start:{x:d[0],y:d[1]},end:{x:h[0],y:h[1]}};return Pr([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]])<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{annotation:o,viewportIdsToRender:a,handleIndex:s,movingTextBox:c}=this.editData,{data:l}=o;if(c){const{deltaPoints:f}=i,u=f.world,{textBox:d}=l.handles,{worldPosition:h}=d;h[0]+=u[0],h[1]+=u[1],h[2]+=u[2],d.hasMoved=!0}else if(s===void 0){const{deltaPoints:f}=i,u=f.world;l.handles.points.forEach(h=>{h[0]+=u[0],h[1]+=u[1],h[2]+=u[2]}),o.invalidated=!0}else{const{currentPoints:f}=i,u=f.world;l.handles.points[s]=[...u],o.invalidated=!0}this.editData.hasMoved=!0,pe(a)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(N));if(!p.cachedStats[l]||p.cachedStats[l].unit==null?(p.cachedStats[l]={length:null,unit:null},this._calculateCachedStats(h,f,n)):h.invalidated&&this._throttledCalculateCachedStats(h,f,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let T;if(!Ur(g))continue;!rr(g)&&!this.editData&&x!==null&&(T=[S[x]]),T&&sn(i,g,"0",S,{color:m,lineDash:w,lineWidth:y});const _=`${g}-line`;if(It(i,g,"1",S[0],S[1],{color:m,width:y,lineDash:w,shadow:C},_),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;const D=this.getLinkedTextBoxStyle(u,h);if(!D.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const b=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const N=$i(S);p.handles.textBox.worldPosition=a.canvasToWorld(N)}const I=a.worldToCanvas(p.handles.textBox.worldPosition),M=ei(i,g,"1",b,I,S,{},D),{x:L,y:A,width:G,height:P}=M;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([L,A]),topRight:a.canvasToWorld([L+G,A]),bottomLeft:a.canvasToWorld([L,A+P]),bottomRight:a.canvasToWorld([L+G,A+P])}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,r,n){const i=e.detail,{element:o}=i,{data:a}=r;r.highlighted=!0;let s=!1,c;n.worldPosition?s=!0:c=a.handles.points.findIndex(f=>f===n);const l=He(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Qe(o),re(o),pe(l),e.preventDefault()}_calculateLength(e,r){const n=e[0]-r[0],i=e[1]-r[1],o=e[2]-r[2];return Math.sqrt(n*n+i*i+o*o)}_calculateCachedStats(e,r,n){const i=e.data,{element:o}=n.viewport,a=i.handles.points[0],s=i.handles.points[1],{cachedStats:c}=i,l=Object.keys(c);for(let f=0;f{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;Qe(a),this.isDrawing=!0;const{viewPlaneNormal:u,viewUp:d,position:h}=l.getCamera(),g=this.getReferencedImageId(l,s,u,d),p={highlighted:!0,invalidated:!0,metadata:{...l.getViewReference({points:[s]}),toolName:this.getToolName(),referencedImageId:g,viewUp:d,cameraPosition:h},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Ut(p,a);const v=He(a,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(v),p},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,[f,u]=l.handles.points,d=c.worldToCanvas(f),h=c.worldToCanvas(u),g={start:{x:d[0],y:d[1]},end:{x:h[0],y:h[1]}};return Pr([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]])<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else{const{currentPoints:u}=i,d=u.world;f.handles.points[c]=[...d],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,re(n),pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(P));let T;if(!p.cachedStats[l]||p.cachedStats[l].unit==null?(p.cachedStats[l]={length:null,unit:null},this._calculateCachedStats(h,f,n)):h.invalidated&&this._throttledCalculateCachedStats(h,f,n),!Ur(g))continue;if(!rr(g)&&!this.editData&&x!==null&&(T=[S[x]]),T&&sn(i,g,"0",S,{color:m,lineDash:w,lineWidth:y}),BN(i,g,"0",S[0],S[1],{color:m,width:y,lineDash:w}),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;const E=this.getLinkedTextBoxStyle(u,h);if(!E.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const D=this.configuration.getTextLines(p,l);if(!p.handles.textBox.hasMoved){const P=$i(S);p.handles.textBox.worldPosition=a.canvasToWorld(P)}const b=a.worldToCanvas(p.handles.textBox.worldPosition),R=ei(i,g,"1",D,b,S,{},E),{x:M,y:L,width:A,height:G}=R;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([M,L]),topRight:a.canvasToWorld([M+A,L]),bottomLeft:a.canvasToWorld([M,L+G]),bottomRight:a.canvasToWorld([M+A,L+G])}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,r,n){const i=e.detail,{element:o}=i,{data:a}=r;r.highlighted=!0;let s=!1,c;n.worldPosition?s=!0:c=a.handles.points.findIndex(f=>f===n);const l=He(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Qe(o),re(o),pe(l),e.preventDefault()}_calculateHeight(e,r){const n=r[0]-e[0],i=r[1]-e[1],o=r[2]-e[2];if(n==0)return i!=0?Math.abs(o):0;if(i==0)return Math.abs(o);if(o==0)return Math.abs(i)}_calculateCachedStats(e,r,n){const i=e.data,{element:o}=n.viewport,a=i.handles.points[0],s=i.handles.points[1],{cachedStats:c}=i,l=Object.keys(c);for(let f=0;f{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l}=c;this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=this.getReferencedImageId(l,s,u),g=l.getFrameOfReferenceUID(),p={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:g,referencedImageId:h},data:{label:"",handles:{points:[[...s]]},cachedStats:{}}};Ut(p,a);const v=He(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(a),Qe(a),n.preventDefault(),pe(v),p},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c}=this.editData,{viewportId:l,renderingEngine:f}=re(o);this.eventDispatchDetail={viewportId:l,renderingEngineId:f.id},this._deactivateModify(o),ct(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,{annotation:c,viewportIdsToRender:l}=this.editData,{data:f}=c;f.handles.points[0]=[...s],c.invalidated=!0,re(a),pe(l)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;d{const b=Nn(S),I=D.hasImageURI(b),R=Nn(D.getCurrentImageId());return I&&R!==b})&&delete p.cachedStats[T]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;sn(i,g,"0",[x],{color:m}),o=!0;const w=this.getLinkedTextBoxStyle(u,h);if(!w.visibility)continue;const C=this.configuration.getTextLines(p,l);if(C){const S=[x[0]+6,x[1]-6];pl(i,g,"0",C,[S[0],S[1]],w)}}return o}}isPointNearTool(){return!1}toolSelectedCallback(){}getHandleNearImagePoint(e,r,n,i){const o=re(e),{viewport:a}=o,{data:s}=r,c=s.handles.points[0],l=a.worldToCanvas(c);if(bn(n,l)E!==null);C=_?T.values:C,S=_?T.units:"raw"}else S=bl(y,e.metadata.referencedImageId,h);l[d]={index:w,value:C,Modality:y,modalityUnit:S}}else this.isHandleOutsideImage=!0,l[d]={index:w,Modality:y};e.invalidated=!1,fn(e,s)}return l}}function qme(t,e){const r=t.cachedStats[e],{index:n,value:i,modalityUnit:o}=r;if(i===void 0)return;const a=[];if(a.push(`(${n[0]}, ${n[1]}, ${n[2]})`),i instanceof Array&&o instanceof Array)for(let s=0;s{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:g},data:{label:"",handles:{points:[[...s]]},cachedStats:{}}},v=He(a,this.getToolName());return this.editData={annotation:p,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(a),Qe(a),n.preventDefault(),pe(v),p},this.postTouchStartCallback=n=>this.postMouseDownCallback(n),this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n;if(!this.editData)return o;const s=this.filterInteractableAnnotationsForElement(a.element,[this.editData.annotation]);if(!(s!=null&&s.length))return o;const c=this.getTargetId(a),l=a.getRenderingEngine(),f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},u=this.editData.annotation,d=u.annotationUID,h=u.data,g=h.handles.points[0],p=a.worldToCanvas(g);f.annotationUID=d;const{color:v}=this.getAnnotationStyle({annotation:u,styleSpecifier:f});if(!h.cachedStats[c]||h.cachedStats[c].value==null?(h.cachedStats[c]={Modality:null,index:null,value:null},this._calculateCachedStats(u,l,n)):u.invalidated&&this._calculateCachedStats(u,l,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;sn(i,d,"0",[p],{color:v}),o=!0;const m=this.configuration.getTextLines(h,c);if(m){const y=[p[0]+6,p[1]-6];pl(i,d,"0",m,[y[0],y[1]],this.getLinkedTextBoxStyle(f,u))}return o}}}function Xme(t,e){const r=t.cachedStats[e],{index:n,value:i,modalityUnit:o}=r;if(i===void 0)return;const a=[];return a.push(`(${n[0]}, ${n[1]}, ${n[2]})`),a.push(`${i.toFixed(2)} ${o}`),a}Sk.toolName="DragProbe";function k2(t,e,r,n){const i=we();Kt(i,e,t);const o=Ye(...r),a=Ye(...n),s=we();kt(s,o,a);const c=ui(s);if(c<1e-4)return{worldWidth:0,worldHeight:0};const l=je(s,i)/(c*ui(i)),u=Math.sqrt(1-l*l)*c,d=l*c;return{worldWidth:u,worldHeight:d}}const{transformWorldToIndex:NE}=Yt;class u0 extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,getTextLines:Yme,statsCalculator:Ya}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world;o.canvas;const c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null},cachedStats:{},initialRotation:l.getRotation()}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,centerWorld:s,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=f.map(y=>c.worldToCanvas(y)),d=Yf(u),[h,g]=d,p={left:Math.min(h[0],g[0])+a/2,top:Math.min(h[1],g[1])+a/2,width:Math.abs(h[0]-g[0])-a,height:Math.abs(h[1]-g[1])-a},v={left:Math.min(h[0],g[0])-a/2,top:Math.min(h[1],g[1])-a/2,width:Math.abs(h[0]-g[0])+a,height:Math.abs(h[1]-g[1])+a},x=this._pointInEllipseCanvas(p,o);return!!(this._pointInEllipseCanvas(v,o)&&!x)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},Qe(a),this._activateModify(a),re(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;let l=!1,f,u,d,h,g,p;if(o.worldPosition)l=!0;else{const{points:x}=c.handles,{viewport:m}=re(s),{worldToCanvas:y,canvasToWorld:w}=m;f=x.findIndex(S=>S===o);const C=x.map(y);p=C[f],h=Math.abs(C[2][0]-C[3][0]),g=Math.abs(C[0][1]-C[1][1]),u=[(C[2][0]+C[3][0])/2,(C[0][1]+C[1][1])/2],d=w(u)}const v=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:v,handleIndex:f,canvasWidth:h,canvasHeight:g,centerWorld:d,originalHandleCanvas:p,movingTextBox:l},this._activateModify(s),Qe(s),re(s),pe(v),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=re(o),{renderingEngine:l,viewport:f}=c,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h,centerWorld:g}=this.editData,p=f.worldToCanvas(g),{data:v}=d,x=Math.abs(s[0]-p[0]),m=Math.abs(s[1]-p[1]),y=[p[0],p[1]-m],w=[p[0],p[1]+m],C=[p[0]-x,p[1]],S=[p[0]+x,p[1]];v.handles.points=[u(y),u(w),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,pe(h)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;re(o),pe(s)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,{viewport:a}=re(o),{canvasToWorld:s,worldToCanvas:c}=a,{annotation:l,canvasWidth:f,canvasHeight:u,handleIndex:d,centerWorld:h,originalHandleCanvas:g}=this.editData,p=a.worldToCanvas(h),{data:v}=l,{points:x}=v.handles,{currentPoints:m}=i,y=m.canvas;if(d===0||d===1){const w=Math.abs(y[1]-p[1]),C=[p[0],p[1]-w],S=[p[0],p[1]+w];x[0]=s(C),x[1]=s(S);const T=y[0]-g[0],_=f/2+T,E=[p[0]-_,p[1]],D=[p[0]+_,p[1]];x[2]=s(E),x[3]=s(D)}else{const w=Math.abs(y[0]-p[0]),C=[p[0]-w,p[1]],S=[p[0]+w,p[1]];x[2]=s(C),x[3]=s(S);const T=y[1]-g[1],_=u/2+T,E=[p[0],p[1]-_],D=[p[0],p[1]+_];x[0]=s(E),x[1]=s(D)}},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(H)),T=Yf(S),{centerPointRadius:_}=this.configuration;if(!p.cachedStats[l]||p.cachedStats[l].areaUnit==null)p.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(h,a,f);else if(h.invalidated&&(this._throttledCalculateCachedStats(h,a,f,n),a instanceof an)){const{referencedImageId:H}=h.metadata;for(const Y in p.cachedStats)Y.startsWith("imageId")&&f.getStackViewports().find(ee=>{const de=Nn(H),fe=ee.hasImageURI(de),le=Nn(ee.getCurrentImageId());return fe&&le!==de})&&delete p.cachedStats[Y]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let E;if(!Ur(g))continue;!rr(g)&&!this.editData&&m!==null&&(E=[S[m]]),E&&sn(i,g,"0",E,{color:y});const D=`${g}-ellipse`,b="0";if(rS(i,g,b,S,{color:y,lineDash:C,lineWidth:w},D),_>0&&Math.min(Math.abs(T[0][0]-T[1][0])/2,Math.abs(T[0][1]-T[1][1])/2)>3*_){const Y=this._getCanvasEllipseCenter(S);bi(i,g,`${b}-center`,Y,_,{color:y,lineDash:C,lineWidth:w})}o=!0;const I=this.getLinkedTextBoxStyle(u,h);if(!I.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const R=this.configuration.getTextLines(p,l);if(!R||R.length===0)continue;let M;p.handles.textBox.hasMoved||(M=$i(T),p.handles.textBox.worldPosition=a.canvasToWorld(M));const L=a.worldToCanvas(p.handles.textBox.worldPosition),G=ei(i,g,"1",R,L,S,{},I),{x:P,y:N,width:V,height:$}=G;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([P,N]),topRight:a.canvasToWorld([P+V,N]),bottomLeft:a.canvasToWorld([P,N+$]),bottomRight:a.canvasToWorld([P+V,N+$])}}return o},this._calculateCachedStats=(n,i,o)=>{var w,C,S;const a=n.data,{element:s}=i,{points:c}=a.handles,l=c.map(T=>i.worldToCanvas(T)),{viewPlaneNormal:f,viewUp:u}=i.getCamera(),[d,h]=Yf(l),g=i.canvasToWorld(d),p=i.canvasToWorld(h),{cachedStats:v}=a,x=Object.keys(v),m=g,y=p;for(let T=0;T_2(ne,K,{fast:!0}),returnPoints:this.configuration.storePointData}),j=this.configuration.statsCalculator.getStatistics();v[_]={Modality:I.Modality,area:O,mean:(w=j.mean)==null?void 0:w.value,max:(C=j.max)==null?void 0:C.value,stdDev:(S=j.stdDev)==null?void 0:S.value,statsArray:j.array,pointsInShape:z,isEmptyArea:de,areaUnit:k,modalityUnit:U}}return n.invalidated=!1,fn(n,s),v},this._isInsideVolume=(n,i,o)=>In(n,o)&&In(i,o),this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,r){const n=e.width/2,i=e.height/2;if(n<=0||i<=0)return!1;const o=[e.left+n,e.top+i],a=[r[0]-o[0],r[1]-o[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(i*i)<=1}_getCanvasEllipseCenter(e){const[r,n,i,o]=e,a=[i[0],n[1]],s=[o[0],r[1]];return[(a[0]+s[0])/2,(a[1]+s[1])/2]}}function Yme(t,e){const r=t.cachedStats[e],{area:n,mean:i,stdDev:o,max:a,isEmptyArea:s,areaUnit:c,modalityUnit:l}=r,f=[];if(n){const u=s?"Area: Oblique not supported":`Area: ${yt(n)} ${c}`;f.push(u)}return i&&f.push(`Mean: ${yt(i)} ${l}`),a&&f.push(`Max: ${yt(a)} ${l}`),o&&f.push(`Std Dev: ${yt(o)} ${l}`),f}u0.toolName="EllipticalROI";const{transformWorldToIndex:PE}=Yt;class DS extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,getTextLines:Jme,statsCalculator:Ya}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...s],[...s]],activeHandleIndex:null},cachedStats:{}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=f.map(g=>c.worldToCanvas(g)),d=Qc(u),h=Qc([u[0],o]);return Math.abs(h-d)
{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},Qe(a),this._activateModify(a),re(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;let l=!1,f;if(o.worldPosition)l=!0;else{const{points:d}=c.handles;f=d.findIndex(h=>h===o)}const u=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),Qe(s),re(s),pe(u),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=re(o),{renderingEngine:l,viewport:f}=c,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h}=this.editData,{data:g}=d;g.handles.points=[g.handles.points[0],u(s)],d.invalidated=!0,this.editData.hasMoved=!0,pe(h)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else this._dragHandle(n),a.invalidated=!0;re(o),pe(s)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=re(o),{canvasToWorld:s,worldToCanvas:c}=a.viewport,{annotation:l,handleIndex:f}=this.editData,{data:u}=l,{points:d}=u.handles,h=d.map(v=>c(v)),{currentPoints:g}=i,p=g.canvas;if(f===0){const v=p[0]-h[0][0],x=p[1]-h[0][1],m=p,y=[h[1][0]+v,h[1][1]+x];d[0]=s(m),d[1]=s(y)}else d[1]=s(p)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(ne)),T=S[0],_=Qc(S),E=td(S),{centerPointRadius:D}=this.configuration;if(!p.cachedStats[l]||p.cachedStats[l].areaUnit==null)p.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},this._calculateCachedStats(h,a,f,n);else if(h.invalidated&&(this._throttledCalculateCachedStats(h,a,f,n),a instanceof an)){const{referencedImageId:ne}=h.metadata;for(const Q in p.cachedStats)Q.startsWith("imageId")&&f.getStackViewports().find(fe=>{const le=Nn(ne),k=fe.hasImageURI(le),O=Nn(fe.getCurrentImageId());return k&&O!==le})&&delete p.cachedStats[Q]}if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let b;if(!Ur(g))continue;!rr(g)&&!this.editData&&m!==null&&(b=[S[m]]),b&&sn(i,g,"0",b,{color:y});const I=`${g}-circle`,R="0";bi(i,g,R,T,_,{color:y,lineDash:C,lineWidth:w},I),D>0&&_>3*D&&bi(i,g,`${R}-center`,T,D,{color:y,lineDash:C,lineWidth:w}),o=!0;const M=this.getLinkedTextBoxStyle(u,h);if(!M.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const L=this.configuration.getTextLines(p,l);if(!L||L.length===0)continue;let A;p.handles.textBox.hasMoved||(A=$i(E),p.handles.textBox.worldPosition=a.canvasToWorld(A));const G=a.worldToCanvas(p.handles.textBox.worldPosition),N=ei(i,g,"1",L,G,S,{},M),{x:V,y:$,width:H,height:Y}=N;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([V,$]),topRight:a.canvasToWorld([V+H,$]),bottomLeft:a.canvasToWorld([V,$+Y]),bottomRight:a.canvasToWorld([V+H,$+Y])}}return o},this._calculateCachedStats=(n,i,o,a)=>{var C,S,T;const s=n.data,{element:c}=i,{points:l}=s.handles,f=l.map(_=>i.worldToCanvas(_)),{viewPlaneNormal:u,viewUp:d}=i.getCamera(),[h,g]=td(f),p=i.canvasToWorld(h),v=i.canvasToWorld(g),{cachedStats:x}=s,m=Object.keys(x),y=p,w=v;for(let _=0;__2(Q,ye,{fast:!0}),boundsIJK:Y,imageData:I,returnPoints:this.configuration.storePointData}),he=this.configuration.statsCalculator.getStatistics();x[E]={Modality:R.Modality,area:z,mean:(C=he.mean)==null?void 0:C.value,max:(S=he.max)==null?void 0:S.value,stdDev:(T=he.stdDev)==null?void 0:T.value,statsArray:he.array,pointsInShape:ae,isEmptyArea:fe,areaUnit:B,radius:ee/2/k,radiusUnit:O,perimeter:2*Math.PI*(ee/2)/k,modalityUnit:K}}else this.isHandleOutsideImage=!0,x[E]={Modality:R.Modality}}return n.invalidated=!1,fn(n,c),x},this._isInsideVolume=(n,i,o)=>In(n,o)&&In(i,o),this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}}function Jme(t,e){const r=t.cachedStats[e],{radius:n,radiusUnit:i,area:o,mean:a,stdDev:s,max:c,isEmptyArea:l,areaUnit:f,modalityUnit:u}=r,d=[];if(n){const h=l?"Radius: Oblique not supported":`Radius: ${yt(n)} ${i}`;d.push(h)}if(o){const h=l?"Area: Oblique not supported":`Area: ${yt(o)} ${f}`;d.push(h)}return a&&d.push(`Mean: ${yt(a)} ${u}`),c&&d.push(`Max: ${yt(c)} ${u}`),s&&d.push(`Std Dev: ${yt(s)} ${u}`),d}DS.toolName="CircleROI";const np=5;class Tk extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,degrees:[45,135,225,315],diameters:[10,30,60]}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{label:"",handles:{points:[[...s]]}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,newAnnotation:!0},this._activateDraw(a),Qe(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{points:f}=l.handles,u=c.worldToCanvas(f[0]),d=Qc([u,o]);return Math.abs(d){const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},Qe(a),this._activateModify(a),re(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a))},this._dragDrawCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=re(o),{renderingEngine:l,viewport:f}=c,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h}=this.editData,{data:g}=d;g.handles.points=[u(s),u(s)],d.invalidated=!0,this.editData.hasMoved=!0,pe(h)},this._dragModifyCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s}=this.editData,{data:c}=a,{deltaPoints:l}=i,f=l.world;c.handles.points.forEach(d=>{d[0]+=f[0],d[1]+=f[1],d[2]+=f[2]}),a.invalidated=!0,re(o),pe(s)},this._dragHandle=n=>{const i=n.detail,{element:o}=i,a=re(o),{canvasToWorld:s,worldToCanvas:c}=a.viewport,{annotation:l}=this.editData,{data:f}=l,{points:u}=f.handles,d=u.map(y=>c(y)),{currentPoints:h}=i,g=h.canvas,p=g[0]-d[0][0],v=g[1]-d[0][1],x=g,m=[d[1][0]+p,d[1][1]+v];u[0]=s(x),u[1]=s(m)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,re(n),pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragModifyCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragModifyCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.addEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragDrawCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragDrawCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragDrawCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(b))[0];if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!Ur(d))continue;let C=`${d}-crosshair-vertical`,S=[w[0],w[1]+np],T=[w[0],w[1]-np];It(i,d,C,S,T,{color:v,lineDash:m,lineWidth:x}),C=`${d}-crosshair-horizontal`,S=[w[0]+np,w[1]],T=[w[0]-np,w[1]],It(i,d,C,S,T,{color:v,lineDash:m,lineWidth:x});const _=this.configuration.diameters.map(b=>this.worldMeasureToCanvas(b,a));for(let b=0;b<_.length;b++){const I=`${d}-circle-${b}`,R=`${d}-circle-${b}`;bi(i,d,R,w,_[b]/2,{color:v,lineDash:m,lineWidth:x},I)}const E=b=>b*Math.PI/180,D=this.configuration.degrees.map(b=>E(b));for(let b=0;bthis.addControlPoint(r))}addControlPointAtU(e){const r=this._getLineSegmentAt(e),{start:n,end:i}=r.points,o=Math.floor(e),a=this._curveSegments[o],s=e-Math.floor(o),c=[n[0]+s*(i[0]-n[0]),n[1]+s*(i[1]-n[1])],l=this._controlPoints.indexOf(a.controlPoints.p1)+1;return this._controlPoints.splice(l,0,c),this.invalidated=!0,{index:l,point:c}}deleteControlPointByIndex(e){const r=this._closed?3:1;return e>=0&&er?(this._controlPoints.splice(e,1),this.invalidated=!0,!0):!1}clearControlPoints(){this._controlPoints=[],this.invalidated=!0}setControlPoints(e){this.clearControlPoints(),this.addControlPoints(e)}updateControlPoint(e,r){if(e<0||e>=this._controlPoints.length)throw new Error("Index out of bounds");this._controlPoints[e]=[...r],this.invalidated=!0}getControlPoints(){return this._controlPoints.map(e=>[e[0],e[1]])}getClosestControlPoint(e){const r=this._controlPoints;let n=1/0,i=-1;for(let o=0,a=r.length;ou.distanceSquared-d.distanceSquared);let n,i=-1,o=1/0,a,s;for(let u=0;uo)continue;const{curveSegmentIndex:h,curveSegment:g}=d,{lineSegments:p}=g;for(let v=0;v=c.minY&&e[1]=h.minY&&e[1]=l.maxX?o:l.maxX,a=a>=l.maxY?a:l.maxY,r+=f}this._curveSegments=e,this._aabb={minX:n,minY:i,maxX:o,maxY:a},this._length=r,this._invalidated=!1}_convertCurveSegmentsToPolyline(e){this._update();const r=[];return e.forEach(({lineSegments:n},i)=>{n.forEach((o,a)=>{i===0&&a===0&&r.push([...o.points.start]),r.push([...o.points.end])})}),r}_getCurveSegmmentsDistanceSquaredInfo(e){this._update();const r=[],{_curveSegments:n}=this;for(let i=0;in)return[];const i=this._getCurveSegmmentsDistanceSquaredInfo(e),o=[];for(let a=0,s=i.length;a=c.previousLineSegmentsLength&&a<=l)return c}}_getClosingCurveSegmentWithStraightLineSegment(){if(this.closed)return;const e=this._controlPoints,r=e[0],n=e[e.length-1],i={points:{start:[...r],end:[...n]},aabb:{minX:Math.min(r[0],n[0]),minY:Math.min(r[1],n[1]),maxX:Math.max(r[0],n[0]),maxY:Math.max(r[1],n[1])}};return{aabb:{minX:i.aabb.minX,minY:i.aabb.minY,maxX:i.aabb.maxX,maxY:i.aabb.maxY},lineSegments:[i]}}}const Qme=1e-8;class _k extends Zme{getPreviewCurveSegments(e,r){const n=this._getNumCurveSegments()+1,i=Math.max(0,n-2),o=r?n:n-1,a=this.getTransformMatrix(),s=[...this.controlPoints],c=[];r||s.push(e);for(let l=i;l<=o;l++){const f=this._getCurveSegment(l,a,s,r);c.push(f)}return c}getSplineCurves(){const e=this._getNumCurveSegments(),r=new Array(e);if(e<=0)return[];const n=this.getTransformMatrix();let i=0;for(let o=0;o=o)if(this.closed)s=(o+s)%o;else return;const{p0:f,p1:u,p2:d,p3:h}=this._getCurveSegmentPoints(s,n,i),g=c*c,p=g*c,v=bp(1,c,g,p),x=Os(ab(),v,r);return[PT(x,bp(f[0],u[0],d[0],h[0])),PT(x,bp(f[1],u[1],d[1],h[1]))]}_getCurveSegmentPoints(e,r=this.controlPoints,n=this.closed){const i=this._getNumCurveSegments(r,n),o=e,a=o-1,s=n?(o+1)%i:o+1,c=s+1,l=r[o],f=r[s];let u,d;return a>=0?u=r[a]:u=n?r[r.length-1]:D3(f,l),cl?l:p;const v=this._getPoint(p,r,n,i);if(!g){u=v;continue}d=v;const x=d[0]-u[0],m=d[1]-u[1],y=Math.sqrt(x**2+m**2),w={minX:u[0]<=d[0]?u[0]:d[0],maxX:u[0]>=d[0]?u[0]:d[0],minY:u[1]<=d[1]?u[1]:d[1],maxY:u[1]>=d[1]?u[1]:d[1]};f.push({points:{start:u,end:d},aabb:w,length:y,previousLineSegmentsLength:h}),u=d,h+=y}return f}_getCurveSegment(e,r=this.getTransformMatrix(),n=this.controlPoints,i=this.closed){const{p0:o,p1:a,p2:s,p3:c}=this._getCurveSegmentPoints(e,n,i),l=this._getLineSegments(e,r,n,i);let f=0,u=1/0,d=1/0,h=-1/0,g=-1/0;return l.forEach(({aabb:p,length:v})=>{u=Math.min(u,p.minX),d=Math.min(d,p.minY),h=Math.max(h,p.maxX),g=Math.max(g,p.maxY),f+=v}),{controlPoints:{p0:o,p1:a,p2:s,p3:c},aabb:{minX:u,minY:d,maxX:h,maxY:g},length:f,previousCurveSegmentsLength:0,lineSegments:l}}}class Sm extends _k{constructor(e){super(e),this._scale=(e==null?void 0:e.scale)??.5,this._fixedScale=(e==null?void 0:e.fixedScale)??!1}get scale(){return this._scale}set scale(e){this._fixedScale||this._scale===e||(this._scale=e,this.invalidated=!0)}get fixedScale(){return this._fixedScale}getTransformMatrix(){const{scale:e}=this,r=2*e;return[0,1,0,0,-e,0,e,0,r,e-3,3-r,-e,-e,2-e,e-2,e]}}class e2e extends Sm{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}class t2e extends Sm{constructor(){super({scale:.5,fixedScale:!0})}}const n2e=rb(lo(),pw(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class r2e extends _k{getTransformMatrix(){return n2e}}const i2e=3,AE=10,o2e={resolution:20,controlPointAdditionDistance:6,controlPointDeletionDistance:6,showControlPointsConnectors:!1,controlPointAdditionEnabled:!0,controlPointDeletionEnabled:!0};var ws;(function(t){t.Cardinal="CARDINAL",t.Linear="LINEAR",t.CatmullRom="CATMULLROM",t.BSpline="BSPLINE"})(ws||(ws={}));var rd;(function(t){t.AddControlPoint="addControlPoint",t.DeleteControlPoint="deleteControlPoint"})(rd||(rd={}));const Im=class Im extends lS{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,calculateStats:!0,getTextLines:a2e,contourHoleAdditionModifierKey:vr.Shift,decimate:{enabled:!1,epsilon:.1},spline:{configuration:{[ws.Cardinal]:{Class:Sm,scale:.5},[ws.CatmullRom]:{Class:t2e},[ws.Linear]:{Class:e2e},[ws.BSpline]:{Class:r2e,controlPointAdditionEnabled:!1,controlPointDeletionEnabled:!1,showControlPointsConnectors:!0}},type:ws.CatmullRom,drawPreviewEnabled:!0,lastControlPointDeletionKeys:["Backspace","Delete"]},actions:{[rd.AddControlPoint]:{method:"addControlPointCallback",bindings:[{mouseButton:la.Primary,modifierKey:vr.Shift}]},[rd.DeleteControlPoint]:{method:"deleteControlPointCallback",bindings:[{mouseButton:la.Primary,modifierKey:vr.Ctrl}]}}}}){super(e,r),this.isHandleOutsideImage=!1,this.fireChangeOnUpdate=null,this.isPointNearTool=(n,i,o,a)=>{const{instance:s}=i.data.spline;return s.isPointNearCurve(o,a)},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},re(a),this._activateModify(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;let l=!1,f;if(o.worldPosition)l=!0;else{const{points:d}=c.handles;f=d.findIndex(h=>h===o)}const u=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),re(s),pe(u),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,contourHoleProcessingEnabled:l}=this.editData,{data:f}=a;a.autoGenerated=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o);const u=re(o),d=this.getTargetImageData(this.getTargetId(u.viewport)),{imageData:h,dimensions:g}=d;this.isHandleOutsideImage=f.handles.points.map(v=>Gn(h,v)).some(v=>!In(v,g)),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID);const p=c?Bn.Completed:Bn.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=a.annotationUID,this.fireChangeOnUpdate.changeType=p):this.fireChangeOnUpdate={annotationUID:a.annotationUID,changeType:p,contourHoleProcessingEnabled:l},pe(s),this.editData=null,this.isDrawing=!1},this._keyDownCallback=n=>{const i=n.detail,{element:o}=i,a=i.key??"",{lastControlPointDeletionKeys:s}=this.configuration.spline;if(!s.includes(a))return;const{annotation:l}=this.editData,{data:f}=l;if(f.handles.points.length===i2e){this.cancel(o);return}else{const u=f.handles.points.length-1;this._deleteControlPointByIndex(o,l,u)}n.preventDefault()},this._mouseMoveCallback=n=>{const{drawPreviewEnabled:i}=this.configuration.spline;if(!i)return;const{element:o}=n.detail;re(o);const a=He(o,this.getToolName());this.editData.lastCanvasPoint=n.detail.currentPoints.canvas,pe(a),n.preventDefault()},this._mouseDownCallback=n=>{const i=n.type===F.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a}=this.editData,{data:s}=o;if(s.contour.closed)return;const c=n.detail,{element:l}=c,{currentPoints:f}=c,{canvas:u,world:d}=f;re(l);let h=s.handles.points.length>=2&&i,g=!0;if(s.handles.points.length>=3){const{instance:p}=s.spline,v=p.getClosestControlPointWithinDistance(u,AE);(v==null?void 0:v.index)===0&&(g=!1,h=!0)}g&&s.handles.points.push(d),s.contour.closed=s.contour.closed||h,o.invalidated=!0,pe(a),s.contour.closed&&this._endCallback(n),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;this.moveAnnotation(a,d)}else{const{currentPoints:u}=i,d=u.world;f.handles.points[c]=[...d],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.triggerAnnotationCompleted=(n,i)=>{const o=F.ANNOTATION_COMPLETED,a={annotation:n,changeType:Bn.Completed,contourHoleProcessingEnabled:i};De(Ce,o,a)},this.triggerAnnotationModified=(n,i,o=Bn.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=F.ANNOTATION_MODIFIED;De(Ce,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this.triggerChangeEvent=(n,i,o=Bn.StatsUpdated,a)=>{o===Bn.Completed?this.triggerAnnotationCompleted(n,a):this.triggerAnnotationModified(n,i,o)},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.KEY_DOWN,this._keyDownCallback),n.addEventListener(F.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(F.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(F.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(F.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.KEY_DOWN,this._keyDownCallback),n.removeEventListener(F.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(F.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(F.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(F.TOUCH_TAP,this._mouseDownCallback)},this._renderStats=(n,i,o,a)=>{const s=n.data,c=this.getTargetId(i);if(!s.spline.instance.closed||!a.visibility)return;const l=this.configuration.getTextLines(s,c);if(!l||l.length===0)return;const f=s.handles.points.map(m=>i.worldToCanvas(m));if(!s.handles.textBox.hasMoved){const m=$i(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=ei(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:x}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+x]),bottomRight:i.canvasToWorld([g+v,p+x])}},this.addControlPointCallback=(n,i)=>{const{data:o}=i,a=o.spline.type,s=this._getSplineConfig(a),c=s.controlPointAdditionDistance;if(s.controlPointAdditionEnabled===!1)return;const l=n.detail,{element:f}=l,u=re(f),{renderingEngine:d,viewport:h}=u,{canvasToWorld:g}=h,{instance:p}=o.spline,v=n.detail.currentPoints.canvas,x=p.getClosestPoint(v);if(x.distance>c)return;const{index:m,point:y}=p.addControlPointAtU(x.uValue);o.handles.points.splice(m,0,g(y)),i.invalidated=!0;const w=He(f,this.getToolName());pe(w)},this.deleteControlPointCallback=(n,i)=>{const o=i.data.spline.type,a=this._getSplineConfig(o),s=a.controlPointDeletionDistance;if(a.controlPointDeletionEnabled===!1)return;const c=n.detail,{element:l,currentPoints:f}=c,{canvas:u}=f,{instance:d}=i.data.spline,h=d.getClosestControlPointWithinDistance(u,s);h&&this._deleteControlPointByIndex(l,i,h.index)},this._calculateCachedStats=(n,i)=>{if(!this.configuration.calculateStats)return;const o=n.data;if(!o.contour.closed)return;const a=re(i),{viewport:s}=a,{cachedStats:c}=o,{polyline:l}=o.contour,f=Object.keys(c);for(let u=0;us.worldToCanvas(D)),v=p[0],x=s.canvasToWorld(v),m=s.canvasToWorld([v[0]+1,v[1]]),y=s.canvasToWorld([v[0],v[1]+1]),w=Cr(x,m),C=Cr(x,y),{imageData:S}=h,{scale:T,areaUnit:_}=Bi(h,()=>{const{maxX:D,maxY:b,minX:I,minY:R}=r0(p),M=s.canvasToWorld([I,R]),L=Gn(S,M),A=s.canvasToWorld([D,b]),G=Gn(S,A);return[L,G]});let E=Lh(p)/T/T;E*=w*C,c[d]={Modality:g.Modality,area:E,areaUnit:_}}return this.triggerAnnotationModified(n,a,Bn.StatsUpdated),c},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{canvas:o}=n,a=N0(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;re(i);const s=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(s,i);const c=He(i,this.getToolName());return this.editData={annotation:s,viewportIdsToRender:c,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,lastCanvasPoint:o,contourHoleProcessingEnabled:a},this._activateDraw(i),e.preventDefault(),pe(c),s}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),ct(e);const{annotation:r,viewportIdsToRender:n,newAnnotation:i}=this.editData;return i&&Ot(r.annotationUID),super.cancelAnnotation(r),re(e),pe(n),this.editData=null,r.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){var M,L,A;const{enabledElement:r,targetId:n,svgDrawingHelper:i,annotationStyle:o}=e,{viewport:a}=r,{worldToCanvas:s}=a,{element:c}=a,l=e.annotation,{annotationUID:f,data:u,highlighted:d}=l,{handles:h}=u,{points:g,activeHandleIndex:p}=h,v=(M=this.editData)==null?void 0:M.newAnnotation,{lineWidth:x,lineDash:m,color:y,locked:w}=o,C=g.map(G=>s(G)),{drawPreviewEnabled:S}=this.configuration.spline,T=l.data.spline.type,_=this._getSplineConfig(T),E=l.data.spline.instance,D=m2(l);if(D.findIndex(G=>!G)!==-1)throw new Error(`Can't find annotation for child ${l.childAnnotationUIDs.join()}`);[l,...D].filter(G=>this._isSplineROIAnnotation(G)).forEach(G=>{const N=this._updateSplineInstance(c,G).getPolylinePoints();this.updateContourPolyline(G,{points:N,closed:u.contour.closed,targetWindingDirection:ec.Clockwise},a,{updateWindingDirection:u.contour.closed})}),super.renderAnnotationInstance(e),!u.cachedStats[n]||u.cachedStats[n].areaUnit==null?(u.cachedStats[n]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(l,c)):l.invalidated&&this._throttledCalculateCachedStats(l,c);let R;if(!w&&!this.editData&&p!==null&&(R=[C[p]]),(R||v||d)&&sn(i,f,"0",C,{color:y,lineWidth:x,handleRadius:"3"}),S&&E.numControlPoints>1&&((L=this.editData)!=null&&L.lastCanvasPoint)&&!E.closed){const{lastCanvasPoint:G}=this.editData,P=E.getPreviewPolylinePoints(G,AE);ua(i,f,"previewSplineChange",P,{color:"#9EA0CA",lineDash:m,lineWidth:1})}if(_.showControlPointsConnectors){const G=[...C];E.closed&&G.push(C[0]),ua(i,f,"controlPointsConnectors",G,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(l,a,i,o.textbox),((A=this.fireChangeOnUpdate)==null?void 0:A.annotationUID)===f&&(this.triggerChangeEvent(l,r,this.fireChangeOnUpdate.changeType,this.fireChangeOnUpdate.contourHoleProcessingEnabled),this.fireChangeOnUpdate=null),l.invalidated=!1,!0}createInterpolatedSplineControl(e){var o;if((o=e.data.handles.points)!=null&&o.length)return;const{polyline:r}=e.data.contour;if(!r||!r.length)return;e.data.handles.points=[];const{points:n}=e.data.handles,i=Math.max(10,Math.floor(r.length/20));for(let a=0;a({type:o.type,instance:a,resolution:o.resolution});let c;return(l=this.configuration.interpolation)!=null&&l.enabled&&(c=f=>{var u;(u=f.data).spline||(u.spline=s()),this.createInterpolatedSplineControl(f)}),Zr(r,{data:{handles:{points:[[...n]]},spline:s(),cachedStats:{}},onInterpolationComplete:c})}_deleteControlPointByIndex(e,r,n){re(e);const{points:i}=r.data.handles;i.length===3?Ot(r.annotationUID):i.splice(n,1);const o=He(e,this.getToolName());r.invalidated=!0,pe(o)}_isSplineROIAnnotation(e){var r;return!!((r=e.data)!=null&&r.spline)}_getSplineConfig(e){const{configuration:r}=this,n=r.spline.configuration;return Object.assign({type:e},o2e,n[e])}_updateSplineInstance(e,r){const n=re(e),{viewport:i}=n,{worldToCanvas:o}=i,{data:a}=r,{type:s,instance:c}=r.data.spline,l=this._getSplineConfig(s),u=a.handles.points.map(o),d=l.resolution!==void 0?parseInt(l.resolution):void 0,h=l.scale!==void 0?parseFloat(l.scale):void 0;return c.setControlPoints(u),c.closed=!!a.contour.closed,!c.fixedResolution&&d!==void 0&&c.resolution!==d&&(c.resolution=d,r.invalidated=!0),c instanceof Sm&&!c.fixedScale&&h!==void 0&&c.scale!==h&&(c.scale=h,r.invalidated=!0),c}};Im.SplineTypes=ws,Im.Actions=rd;let eh=Im;function a2e(t,e){const r=t.cachedStats[e],{area:n,isEmptyArea:i,areaUnit:o}=r,a=[];if(n){const s=i?"Area: Oblique not supported":`Area: ${yt(n)} ${o}`;a.push(s)}return a}eh.toolName="SplineROI";class Ek extends eh{constructor(e){const r=Zr({configuration:{calculateStats:!1}},e);super(r)}isContourSegmentationTool(){return!0}}Ek.toolName="SplineContourSegmentationTool";class s2e{constructor({numBits:e,getPriority:r,areEqual:n}){this._bucketCount=1<i,this._areEqual=typeof n=="function"?n:(i,o)=>i===o}push(e){const r=this._getBucketIndex(e),n=this._buckets[r],i={value:e,next:n};this._buckets[r]=i,this._size++}pop(){if(this._size===0)throw new Error("Cannot pop because the queue is empty.");for(;this._buckets[this._currentBucketIndex]===null;)this._currentBucketIndex=(this._currentBucketIndex+1)%this._bucketCount;const e=this._buckets[this._currentBucketIndex];return this._buckets[this._currentBucketIndex]=e.next,this._size--,e.value}remove(e){if(!e)return!1;const r=this._getBucketIndex(e),n=this._buckets[r];let i=n,o;for(;i!==null&&!this._areEqual(e,i.value);)o=i,i=i.next;return i===null?!1:(i===n?this._buckets[r]=i.next:o.next=i.next,this._size--,!0)}isEmpty(){return this._size===0}_getBucketIndex(e){return this._getPriority(e)&this._mask}_buildArray(e){const r=new Array(e);return r.fill(null),r}}const yy=4294967295,c2e=2/(3*Math.PI);class Tm{constructor(e,r,n){this._getPointIndex=(o,a)=>{const{width:s}=this;return o*s+a},this._getPointCoordinate=o=>{const a=o%this.width,s=Math.floor(o/this.width);return[a,s]},this._getPointCost=o=>Math.round(this.searchGranularity*this.costs[o]);const i=e.length;this.searchGranularityBits=8,this.searchGranularity=1<.33?0:1;i[n(o,e-2)]=1,i[n(o,e-1)]=1}return i.fill(1,n(r-2,0)),i}_computeGradientX(){const{width:e,height:r}=this,n=new Float32Array(e*r);let i=0;for(let o=0;o=i||l<0||l>=o)return 1;if(a<0||s<0||a>=i||s>=o)return 0;const f=n(l,c);let u=this.gradMagnitude[f];(a===c||s===l)&&(u*=Math.SQRT1_2);const d=this.laplace[f],h=this._getGradientDirection(a,s,c,l);return .43*u+.43*d+.11*h}_getNeighborPoints(e){const{width:r,height:n}=this,i=[],o=Math.max(e[0]-1,0),a=Math.max(e[1]-1,0),s=Math.min(e[0]+1,r-1),c=Math.min(e[1]+1,n-1);for(let l=a;l<=c;l++)for(let f=o;f<=s;f++)(f!==e[0]||l!==e[1])&&i.push([f,l]);return i}static createInstanceFromRawPixelData(e,r,n,i){const o=e.length,a=new Float32Array(o),{lower:s,upper:c}=i,l=c-s;for(let f=0,u=e.length;fthis.pointArray[e])}getNumControlPoints(){return this._controlPointIndexes.length}removeLastControlPoint(){this._controlPointIndexes.length&&this._controlPointIndexes.pop()}getLastControlPoint(){if(this._controlPointIndexes.length)return this.pointArray[this._controlPointIndexes[this._controlPointIndexes.length-1]]}removeLastPoints(e){this.pointArray.splice(this.pointArray.length-e,e)}addPoints(e){this.pointArray=this.pointArray.concat(e)}prependPath(e){const r=e.pointArray.length,n=[];this.pointArray=e.pointArray.concat(this.pointArray);for(let i=0;ithis._controlPointIndexes.push(r))}}const l2e=10**2;class bS extends lS{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextLines:u2e,calculateStats:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:vr.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{undo:{method:"undo",bindings:[{key:"Escape"}]}}}}){super(e,r),this.isHandleOutsideImage=!1,this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,l=a*a,f=i.data.contour.polyline.map(d=>c.worldToCanvas(d));let u=f[f.length-1];for(let d=0;d{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},re(a),this._activateModify(a),pe(s),n.preventDefault()},this.handleSelectedCallback=(n,i,o)=>{const a=n.detail,{element:s}=a,{data:c}=i;i.highlighted=!0;let l=!1,f;if(o.worldPosition)l=!0;else{const{points:d}=c.handles;f=d.findIndex(h=>h===o)}const u=He(s,this.getToolName());this.editData={annotation:i,viewportIdsToRender:u,handleIndex:f,movingTextBox:l},this._activateModify(s),re(s),pe(u),n.preventDefault()},this._endCallback=(n,i=!1)=>{const o=n.detail,{element:a}=o,{annotation:s,viewportIdsToRender:c,newAnnotation:l,contourHoleProcessingEnabled:f}=this.editData,{data:u}=s;u.handles.activeHandleIndex=null,this._deactivateModify(a),this._deactivateDraw(a),ct(a);const d=re(a);if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage||i){Ot(s.annotationUID),this.clearEditData(),pe(c);return}pe(c);const h=l?Bn.Completed:Bn.HandlesUpdated;this.triggerChangeEvent(s,d,h,f),this.clearEditData()},this.triggerChangeEvent=(n,i,o=Bn.StatsUpdated,a=!1)=>{o===Bn.Completed?MC(n,a):fn(n,i.viewport.element,o)},this._mouseDownCallback=n=>{const i=n.type===F.MOUSE_DOUBLE_CLICK,{annotation:o,viewportIdsToRender:a,worldToSlice:s,sliceToWorld:c}=this.editData;if(this.editData.closed)return;const l=n.detail,{element:f}=l,{currentPoints:u}=l,{canvas:d,world:h}=u;let g=h;const p=re(f),{viewport:v,renderingEngine:x}=p,m=this.editData.currentPath.getControlPoints();let y=m.length>=2&&i;if(m.length>=2){const S={index:-1,distSquared:1/0};for(let T=0,_=m.length;T<_;T++){const E=m[T],D=c(E),b=v.worldToCanvas(D),I=Ja(d,b);I<=l2e&&I{const{element:i,currentPoints:o}=n.detail,{world:a,canvas:s}=o;re(i);const c=He(i,this.getToolName());this.editData.lastCanvasPoint=s;const{width:l,height:f}=this.scissors,{worldToSlice:u}=this.editData,d=u(a);if(d[0]<0||d[1]<0||d[0]>=l||d[1]>=f)return;const h=this.scissors.findPathToPoint(d),g=new Ca;g.addPoints(h),g.prependPath(this.editData.confirmedPath),this.editData.currentPath=g,pe(c),n.preventDefault()},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0)console.warn("Drag annotation not implemented");else{const{currentPoints:u}=i,d=u.world;this.editHandle(d,o,a,c)}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData;return a&&Ot(i.annotationUID),re(n),pe(o),this.editData=null,this.scissors=null,i.annotationUID},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_MOVE,this._mouseMoveCallback),n.addEventListener(F.MOUSE_DOWN,this._mouseDownCallback),n.addEventListener(F.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.addEventListener(F.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_MOVE,this._mouseMoveCallback),n.removeEventListener(F.MOUSE_DOWN,this._mouseDownCallback),n.removeEventListener(F.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),n.removeEventListener(F.TOUCH_TAP,this._mouseDownCallback)},this._calculateCachedStats=(n,i)=>{if(!this.configuration.calculateStats)return;const o=n.data;if(!o.contour.closed)return;const a=re(i),{viewport:s,renderingEngine:c}=a,{cachedStats:l}=o,{polyline:f}=o.contour,u=Object.keys(l);for(let d=0;ds.worldToCanvas(b)),x=v[0],m=s.canvasToWorld(x),y=s.canvasToWorld([x[0]+1,x[1]]),w=s.canvasToWorld([x[0],x[1]+1]),C=Cr(m,y),S=Cr(m,w),{imageData:T}=g,{scale:_,areaUnit:E}=Bi(g,()=>{const{maxX:b,maxY:I,minX:R,minY:M}=r0(v),L=s.canvasToWorld([R,M]),A=Gn(T,L),G=s.canvasToWorld([b,I]),P=Gn(T,G);return[A,P]});let D=Lh(v)/_/_;D*=C*S,l[h]={Modality:p.Modality,area:D,areaUnit:E}}return this.triggerAnnotationModified(n,a,Bn.StatsUpdated),l},this._renderStats=(n,i,o,a)=>{const s=n.data,c=this.getTargetId(i);if(!s.contour.closed||!a.visibility)return;const l=this.configuration.getTextLines(s,c);if(!l||l.length===0)return;const f=s.handles.points.map(m=>i.worldToCanvas(m));if(!s.handles.textBox.hasMoved){const m=$i(f);s.handles.textBox.worldPosition=i.canvasToWorld(m)}const u=i.worldToCanvas(s.handles.textBox.worldPosition),h=ei(o,n.annotationUID??"","textBox",l,u,f,{},a),{x:g,y:p,width:v,height:x}=h;s.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([g,p]),topRight:i.canvasToWorld([g+v,p]),bottomLeft:i.canvasToWorld([g,p+x]),bottomRight:i.canvasToWorld([g+v,p+x])}},this.triggerAnnotationModified=(n,i,o=Bn.StatsUpdated)=>{const{viewportId:a,renderingEngineId:s}=i,c=F.ANNOTATION_MODIFIED;De(Ce,c,{annotation:n,viewportId:a,renderingEngineId:s,changeType:o})},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}setupBaseEditData(e,r,n,i,o){var T,_;const a=re(r),{viewport:s}=a;this.isDrawing=!0;const c=s.getImageData(),{imageData:l}=c;let f,u,d,h,g;if(!(s instanceof an))d=c.dimensions[0],h=c.dimensions[1],f=E=>{const D=Gn(l,E);return[D[0],D[1]]},u=E=>X1(l,[E[0],E[1],0]),g=c.scalarData;else if(s instanceof an){const E=gC(s),{sliceToIndexMatrix:D,indexToSliceMatrix:b}=E;f=I=>{const R=Gn(l,I),M=et([0,0,0],R,b);return[M[0],M[1]]},u=I=>{const R=et([0,0,0],[I[0],I[1],0],D);return X1(l,R)},g=E.scalarData,d=E.width,h=E.height}else throw new Error("Viewport not supported");g=vR(g,d,h);const{voiRange:p}=s.getProperties(),v=f(e);this.scissors=Tm.createInstanceFromRawPixelData(g,d,h,p),i&&(this.scissorsNext=Tm.createInstanceFromRawPixelData(g,d,h,p),this.scissorsNext.startSearch(f(i))),this.scissors.startSearch(v);const x=!i,m=new Ca,y=new Ca,w=x?void 0:new Ca;m.addPoint(v),m.addControlPoint(v);const C=He(r,this.getToolName()),S=s.worldToCanvas(e);this.editData={annotation:n,viewportIdsToRender:C,newAnnotation:x,hasMoved:!1,lastCanvasPoint:S,confirmedPath:m,currentPath:y,confirmedPathNext:w,closed:!1,handleIndex:((T=this.editData)==null?void 0:T.handleIndex)??((_=n.handles)==null?void 0:_.activeHandleIndex),worldToSlice:f,sliceToWorld:u,contourHoleProcessingEnabled:o}}addNewAnnotation(e){const r=e.detail,{currentPoints:n,element:i}=r,{world:o}=n,a=this.createAnnotation(e),s=N0(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(o,i,a,void 0,s),this.addAnnotation(a,i),this._activateDraw(i),e.preventDefault(),pe(this.editData.viewportIdsToRender),a}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,r,n,i){var y;const{data:o}=n,{points:a}=o.handles,{length:s}=a,c=a[(i-1+s)%s],l=a[(i+1)%s];if(!((y=this.editData)!=null&&y.confirmedPathNext)){this.setupBaseEditData(c,r,n,l);const{polyline:w}=o.contour,C=new Ca,S=new Ca,{worldToSlice:T}=this.editData,_=A3(n,i-1),E=A3(n,i+1);if(E===-1||_===-1)throw new Error(`Can't find handle index ${E===-1&&l} ${_===-1&&c}`);i===0?S.addPoints(w.slice(E+1,_).map(T)):(C.addPoints(w.slice(0,_+1).map(T)),S.addPoints(w.slice(E,w.length).map(T))),this.editData.confirmedPath=C,this.editData.confirmedPathNext=S}const{editData:f,scissors:u}=this,{worldToSlice:d,sliceToWorld:h}=f,{activeHandleIndex:g}=o.handles;if(g==null)o.handles.activeHandleIndex=i;else if(g!==i)throw new Error(`Trying to edit a different handle than the one currently being edited ${i}!==${o.handles.activeHandleIndex}`);const p=d(e);if(p[0]<0||p[0]>=u.width||p[1]<0||p[1]>=u.height)return;a[i]=h(p);const v=u.findPathToPoint(p),x=this.scissorsNext.findPathToPoint(p),m=new Ca;m.prependPath(f.confirmedPath),i!==0&&m.addPoints(v),m.addPoints(x.reverse()),m.appendPath(f.confirmedPathNext),i===0&&m.addPoints(v),f.currentPath=m,n.invalidated=!0,f.hasMoved=!0,f.closed=!0}renderAnnotation(e,r){var n;return this.updateAnnotation((n=this.editData)==null?void 0:n.currentPath),super.renderAnnotation(e,r)}isContourSegmentationTool(){return!1}createAnnotation(e){const r=super.createAnnotation(e),{world:n}=e.detail.currentPoints;return Zr(r,{data:{handles:{points:[[...n]]}}})}undo(e,r,n){this.editData&&this._endCallback(n,!0)}renderAnnotationInstance(e){var m,y,w;const{annotation:r,enabledElement:n,svgDrawingHelper:i,annotationStyle:o,targetId:a}=e,{viewport:s}=n,{element:c}=s,{worldToCanvas:l}=s,{annotationUID:f,data:u,highlighted:d}=r,{handles:h}=u,g=(m=this.editData)==null?void 0:m.newAnnotation,{lineWidth:p,lineDash:v,color:x}=o;if(d||g&&r.annotationUID===((w=(y=this.editData)==null?void 0:y.annotation)==null?void 0:w.annotationUID)){const C="0",S=h.points.map(l);sn(i,f,C,S,{color:x,lineDash:v,lineWidth:p})}return super.renderAnnotationInstance(e),!u.cachedStats[a]||u.cachedStats[a].areaUnit==null?(u.cachedStats[a]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(r,c)):r.invalidated&&this._throttledCalculateCachedStats(r,c),this._renderStats(r,s,i,o.textbox),!0}updateAnnotation(e){if(!this.editData||!e)return;const{annotation:r,sliceToWorld:n,worldToSlice:i,closed:o,newAnnotation:a}=this.editData;let{pointArray:s}=e;s.length>1&&(s=[...s,s[0]]);const c=a&&o?ec.Clockwise:void 0;this.updateContourPolyline(r,{points:s,closed:o,targetWindingDirection:c},{canvasToWorld:n,worldToCanvas:i})}}bS.toolName="LivewireContour";function u2e(t,e){const r=t.cachedStats[e],{area:n,areaUnit:i}=r,o=[];if(n){const a=`Area: ${yt(n)} ${i}`;o.push(a)}return o}class Dk extends bS{updateInterpolatedAnnotation(e,r){this.editData||!e.invalidated||!e.data.handles.interpolationSources||(e.data.contour.originalPolyline=e.data.contour.polyline,queueMicrotask(()=>{if(!e.data.handles.interpolationSources)return;const{points:n}=e.data.handles,{element:i}=r.viewport;this.setupBaseEditData(n[0],i,e);const{length:o}=n,{scissors:a}=this,{nearestEdge:s,repeatInterpolation:c}=this.configuration.interpolation;e.data.handles.originalPoints=n;const{worldToSlice:l,sliceToWorld:f}=this.editData,u=[];if(s){let h=l(n[n.length-1]);n.forEach((g,p)=>{const v=l(g);h=v,u.push(v),a.startSearch(h),a.findPathToPoint(v),a.findPathToPoint(l(n[(p+3)%n.length]));const x=a.findMinNearby(v,s);pt(v,x)||(u[p]=x,h=x,n[p]=f(x))})}const d=new Ca;for(let h=0;h{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;Qe(a),this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),{arrowFirst:p}=this.configuration,v=l.getFrameOfReferenceUID(),x={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:v,referencedImageId:g,...l.getViewReference({points:[s]})},data:{text:"",handles:{points:[[...s],[...s]],activeHandleIndex:null,arrowFirst:p,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};Ut(x,a);const m=He(a,this.getToolName());return this.editData={annotation:x,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(m),x},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,[f,u]=l.handles.points,d=c.worldToCanvas(f),h=c.worldToCanvas(u),g={start:{x:d[0],y:d[1]},end:{x:h[0],y:h[1]}};return Pr([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]])<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;c&&!l||(f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),c?this.configuration.getTextCallback(u=>{if(!u){Ot(a.annotationUID),pe(s),this.editData=null,this.isDrawing=!1;return}a.data.text=u,en(a),pe(s)}):fn(a,o),this.editData=null,this.isDrawing=!1)},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else{const{currentPoints:u}=i,d=u.world;f.handles.points[c]=[...d],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.touchTapCallback=n=>{n.detail.taps==2&&this.doubleClickCallback(n)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=_t(this.getToolName(),o);if(a=this.filterInteractableAnnotationsForElement(o,a),!(a!=null&&a.length))return;const s=a.find(l=>this.isPointNearTool(o,l,i.currentPoints.canvas,6));if(!s)return;const c=s;this.configuration.changeTextCallback(s,n.detail,this._doneChangingTextCallback.bind(this,o,c)),this.editData=null,this.isDrawing=!1,n.stopImmediatePropagation(),n.preventDefault()},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_END,this._endCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fa.worldToCanvas(A));let S;!rr(d)&&!this.editData&&x!==null&&(S=[C[x]]),S&&sn(i,d,"0",C,{color:m,lineWidth:y});const T="1";if(this.configuration.arrowFirst?pm(i,d,T,C[1],C[0],{color:m,width:y,lineDash:w}):pm(i,d,T,C[0],C[1],{color:m,width:y,lineDash:w}),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;if(!p)continue;const _=this.getLinkedTextBoxStyle(l,u);if(!_.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}if(!h.handles.textBox.hasMoved){const A=C[1];h.handles.textBox.worldPosition=a.canvasToWorld(A)}const E=a.worldToCanvas(h.handles.textBox.worldPosition),b=ei(i,d,"1",[p],E,C,{},_),{x:I,y:R,width:M,height:L}=b;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([I,R]),topRight:a.canvasToWorld([I+M,R]),bottomLeft:a.canvasToWorld([I,R+L]),bottomRight:a.canvasToWorld([I+M,R+L])}}return o}}handleSelectedCallback(e,r,n){const i=e.detail,{element:o}=i,{data:a}=r;r.highlighted=!0;let s=!1,c;n.worldPosition?s=!0:c=a.handles.points.findIndex(f=>f===n);const l=He(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Qe(o),re(o),pe(l),e.preventDefault()}_doneChangingTextCallback(e,r,n){r.data.text=n,re(e);const i=He(e,this.getToolName());pe(i),fn(r,e)}_isInsideVolume(e,r,n){return In(e,n)&&In(r,n)}}function f2e(t){return t(prompt("Enter your annotation:"))}function d2e(t,e,r){return r(prompt("Enter your annotation:"))}ic.toolName="ArrowAnnotate";class bk extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:h2e}}){super(e,r),this.addNewAnnotation=n=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;Qe(a),this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,[f,u,d]=l.handles.points,h=c.worldToCanvas(f),g=c.worldToCanvas(u),p={start:{x:h[0],y:h[1]},end:{x:g[0],y:g[1]}};if(Pr([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]])<=a)return!0;if(!d)return!1;const x=c.worldToCanvas(d),m={start:{x:g[0],y:g[1]},end:{x:x[0],y:x[1]}};return Pr([m.start.x,m.start.y],[m.end.x,m.end.y],[o[0],o[1]])<=a},this.toolSelectedCallback=(n,i)=>{const o=n.detail,{element:a}=o;i.highlighted=!0;const s=He(a,this.getToolName());this.editData={annotation:i,viewportIdsToRender:s,movingTextBox:!1},this._activateModify(a),Qe(a),re(a),pe(s),n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(!(c&&!l)){if(this.angleStartedNotYetCompleted&&f.handles.points.length===2){this.editData.handleIndex=2;return}this.angleStartedNotYetCompleted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1}},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else{const{currentPoints:u}=i,d=u.world;f.handles.points[c]=[...d],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let h=0;ha.worldToCanvas(P));!v.cachedStats[l]||v.cachedStats[l].angle==null?(v.cachedStats[l]={angle:null},this._calculateCachedStats(g,f,n)):g.invalidated&&this._throttledCalculateCachedStats(g,f,n);let T;if(!rr(g.annotationUID)&&!this.editData&&m!==null&&(T=[S[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;T&&sn(i,p,"0",S,{color:y,lineDash:C,lineWidth:w});let _="1";if(It(i,p,_,S[0],S[1],{color:y,width:w,lineDash:C}),o=!0,S.length!==3)return o;if(_="2",It(i,p,_,S[1],S[2],{color:y,width:w,lineDash:C}),!((d=v.cachedStats[l])!=null&&d.angle))continue;const E=this.getLinkedTextBoxStyle(u,g);if(!E.visibility){v.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const D=this.configuration.getTextLines(v,l);if(!v.handles.textBox.hasMoved){const P=S[1];v.handles.textBox.worldPosition=a.canvasToWorld(P)}const b=a.worldToCanvas(v.handles.textBox.worldPosition),R=ei(i,p,"1",D,b,S,{},E),{x:M,y:L,width:A,height:G}=R;v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([M,L]),topRight:a.canvasToWorld([M+A,L]),bottomLeft:a.canvasToWorld([M,L+G]),bottomRight:a.canvasToWorld([M+A,L+G])}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,r,n){const i=e.detail,{element:o}=i,{data:a}=r;r.highlighted=!0;let s=!1,c;n.worldPosition?s=!0:c=a.handles.points.findIndex(f=>f===n);const l=He(o,this.getToolName());this.editData={annotation:r,viewportIdsToRender:l,handleIndex:c,movingTextBox:s},this._activateModify(o),Qe(o),re(o),pe(l),e.preventDefault()}_calculateCachedStats(e,r,n){const i=e.data,{element:o}=n.viewport;if(i.handles.points.length!==3)return;const a=i.handles.points[0],s=i.handles.points[1],c=i.handles.points[2],{cachedStats:l}=i,f=Object.keys(l);for(let u=0;uGn(p,v)).some(v=>!In(v,g)),l[d]={angle:isNaN(h)?"Incomplete Angle":h}}return e.invalidated=!1,fn(e,o),l}}function h2e(t,e){const r=t.cachedStats[e],{angle:n}=r;return n===void 0?void 0:isNaN(n)?[`${n}`]:[`${yt(n)} °`]}bk.toolName="Angle";const g2e=(...t)=>{const e=t[0].length===2?[0,0]:[0,0,0],r=t.length;for(const n of t)e[0]+=n[0]/r,e[1]+=n[1]/r,e.length===3&&(e[2]+=n[2]/r);return e},wa=g2e;class Ik extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:p2e,showArcLines:!1}}){super(e,r),this.addNewAnnotation=n=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;Qe(a),this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...l.getViewReference({points:[s]})},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>{const s=re(n),{viewport:c}=s,{data:l}=i,{distanceToPoint:f,distanceToPoint2:u}=this.distanceToLines({viewport:c,points:l.handles.points,canvasCoords:o,proximity:a});return f<=a||u<=a},this.toolSelectedCallback=(n,i,o,a,s=6)=>{const c=n.detail,{element:l}=c;i.highlighted=!0;const f=He(l,this.getToolName()),u=re(l),{renderingEngine:d,viewport:h}=u,{isNearFirstLine:g,isNearSecondLine:p}=this.distanceToLines({viewport:h,points:i.data.handles.points,canvasCoords:a,proximity:s});this.editData={annotation:i,viewportIdsToRender:f,movingTextBox:!1,isNearFirstLine:g,isNearSecondLine:p},this._activateModify(l),Qe(l),pe(f),n.preventDefault()},this._mouseUpCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(!(c&&!l)){if(this.angleStartedNotYetCompleted&&f.handles.points.length<4){ct(o),this.editData.handleIndex=f.handles.points.length;return}this.angleStartedNotYetCompleted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1}},this._mouseDownCallback=n=>{const{annotation:i,handleIndex:o}=this.editData,a=n.detail,{element:s,currentPoints:c}=a,l=c.world,{data:f}=i;if(o===1){f.handles.points[1]=l,this.editData.hasMoved=f.handles.points[1][0]!==f.handles.points[0][0]||f.handles.points[1][1]!==f.handles.points[0][0];return}if(o===3){f.handles.points[3]=l,this.editData.hasMoved=f.handles.points[3][0]!==f.handles.points[2][0]||f.handles.points[3][1]!==f.handles.points[2][0],this.angleStartedNotYetCompleted=!1;return}this.editData.hasMoved=!1,Qe(s),f.handles.points[2]=f.handles.points[3]=l,this.editData.handleIndex=f.handles.points.length-1},this._mouseDragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l,isNearFirstLine:f,isNearSecondLine:u}=this.editData,{data:d}=a;if(l){const{deltaPoints:h}=i,g=h.world,{textBox:p}=d.handles,{worldPosition:v}=p;v[0]+=g[0],v[1]+=g[1],v[2]+=g[2],p.hasMoved=!0}else if(c===void 0&&(f||u)){const{deltaPoints:h}=i,g=h.world,p=d.handles.points;f?[p[0],p[1]].forEach(x=>{x[0]+=g[0],x[1]+=g[1],x[2]+=g[2]}):u&&[p[2],p[3]].forEach(x=>{x[0]+=g[0],x[1]+=g[1],x[2]+=g[2]}),a.invalidated=!0}else{const{currentPoints:h}=i,g=h.world;d.handles.points[c]=[...g],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return s.handles.points.length<4&&Ot(i.annotationUID),i.highlighted=!1,s.handles.activeHandleIndex=null,re(n),pe(o),a&&en(i),this.editData=null,this.angleStartedNotYetCompleted=!1,i.annotationUID},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._mouseUpCallback),n.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),n.addEventListener(F.MOUSE_CLICK,this._mouseUpCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._mouseUpCallback),n.removeEventListener(F.MOUSE_DRAG,this._mouseDragCallback),n.removeEventListener(F.MOUSE_CLICK,this._mouseUpCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._mouseUpCallback),n.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),n.addEventListener(F.MOUSE_MOVE,this._mouseDragCallback),n.addEventListener(F.MOUSE_CLICK,this._mouseUpCallback),n.addEventListener(F.MOUSE_DOWN,this._mouseDownCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._mouseUpCallback),n.removeEventListener(F.MOUSE_DRAG,this._mouseDragCallback),n.removeEventListener(F.MOUSE_MOVE,this._mouseDragCallback),n.removeEventListener(F.MOUSE_CLICK,this._mouseUpCallback),n.removeEventListener(F.MOUSE_DOWN,this._mouseDownCallback)},this.renderAnnotation=(n,i)=>{var d;let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let h=0;ha.worldToCanvas(fe));!v.cachedStats[l]||v.cachedStats[l].angle==null?(v.cachedStats[l]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},this._calculateCachedStats(g,f,n)):g.invalidated&&this._throttledCalculateCachedStats(g,f,n);let T;if(!rr(p)&&!this.editData&&m!==null&&(T=[S[m]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;T&&sn(i,p,"0",S,{color:y,lineDash:C,lineWidth:w});const _=[S[0],S[1]],E=[S[2],S[3]];let D="line1";if(It(i,p,D,_[0],_[1],{color:y,width:w,lineDash:C}),o=!0,S.length<4)return o;D="line2",It(i,p,D,E[0],E[1],{color:y,width:w,lineDash:C}),D="linkLine";const b=wa(_[0],_[1]),I=wa(E[0],E[1]);It(i,p,D,b,I,{color:y,lineWidth:"1",lineDash:"1,4"});const{arc1Start:R,arc1End:M,arc2End:L,arc2Start:A}=v.cachedStats[l].points.canvas,{arc1Angle:G,arc2Angle:P}=v.cachedStats[l];if(this.configuration.showArcLines&&(D="arc1",It(i,p,D,R,M,{color:y,lineWidth:"1"}),D="arc2",It(i,p,D,A,L,{color:y,lineWidth:"1"})),!((d=v.cachedStats[l])!=null&&d.angle))continue;const N=this.getLinkedTextBoxStyle(u,g);if(!N.visibility){v.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const V=this.configuration.getTextLines(v,l);if(!v.handles.textBox.hasMoved){const fe=$i(S);v.handles.textBox.worldPosition=a.canvasToWorld(fe)}const $=a.worldToCanvas(v.handles.textBox.worldPosition),Y=ei(i,p,"cobbAngleText",V,$,S,{},N),{x:ne,y:Q,width:ee,height:de}=Y;if(v.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([ne,Q]),topRight:a.canvasToWorld([ne+ee,Q]),bottomLeft:a.canvasToWorld([ne,Q+de]),bottomRight:a.canvasToWorld([ne+ee,Q+de])},this.configuration.showArcLines){const fe="arcAngle1",le=[`${G.toFixed(2)} °`],k=wa(R,M);pl(i,p,fe,le,k,{...N,padding:3});const O="arcAngle2",B=[`${P.toFixed(2)} °`],U=wa(A,L);pl(i,p,O,B,U,{...N,padding:3})}}return o},this.distanceToLines=({viewport:n,points:i,canvasCoords:o,proximity:a})=>{const[s,c,l,f]=i,u=n.worldToCanvas(s),d=n.worldToCanvas(c),h=n.worldToCanvas(l),g=n.worldToCanvas(f),p={start:{x:u[0],y:u[1]},end:{x:d[0],y:d[1]}},v={start:{x:h[0],y:h[1]},end:{x:g[0],y:g[1]}},x=Pr([p.start.x,p.start.y],[p.end.x,p.end.y],[o[0],o[1]]),m=Pr([v.start.x,v.start.y],[v.end.x,v.end.y],[o[0],o[1]]);let y=!1,w=!1;return x<=a?y=!0:m<=a&&(w=!0),{distanceToPoint:x,distanceToPoint2:m,isNearFirstLine:y,isNearSecondLine:w}},this.getArcsStartEndPoints=({firstLine:n,secondLine:i,mid1:o,mid2:a})=>{const s=[o,a],c=ed(n,s),l=ed(i,s),f=c>90?1:0,u=l>90?0:1,d=wa(s[0],s[1]),h=Math.sqrt((s[1][0]-s[0][0])**2+(s[1][1]-s[0][1])**2),g=.1,p=wa(n[0],n[1]),v=wa(i[0],i[1]),x=[n[f][0]-p[0],n[f][1]-p[1]],m=Math.sqrt(x[0]**2+x[1]**2),y=[x[0]/m,x[1]/m],w=[p[0]+y[0]*h*g,p[1]+y[1]*h*g],C=[d[0]-o[0],d[1]-o[1]],S=Math.sqrt(C[0]**2+C[1]**2),T=[C[0]/S,C[1]/S],_=[o[0]+T[0]*h*g,o[1]+T[1]*h*g],E=[i[u][0]-v[0],i[u][1]-v[1]],D=Math.sqrt(E[0]**2+E[1]**2),b=[E[0]/D,E[1]/D],I=[v[0]+b[0]*h*g,v[1]+b[1]*h*g],R=[d[0]-a[0],d[1]-a[1]],M=Math.sqrt(R[0]**2+R[1]**2),L=[R[0]/M,R[1]/M],A=[a[0]+L[0]*h*g,a[1]+L[1]*h*g];return{arc1Start:w,arc1End:_,arc2Start:I,arc2End:A,arc1Angle:c>90?180-c:c,arc2Angle:l>90?180-l:l}},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,25,{trailing:!0})}handleSelectedCallback(e,r,n,i="mouse"){const o=e.detail,{element:a}=o,{data:s}=r;r.highlighted=!0;let c=!1,l;n.worldPosition?c=!0:l=s.handles.points.findIndex(u=>u===n);const f=He(a,this.getToolName());this.editData={annotation:r,viewportIdsToRender:f,handleIndex:l,movingTextBox:c},this._activateModify(a),Qe(a),re(a),pe(f),e.preventDefault()}_calculateCachedStats(e,r,n){const i=e.data;if(i.handles.points.length!==4)return;const o=[null,null],a=[null,null];let s=Number.MAX_VALUE;for(let T=0;T<2;T+=1)for(let _=2;_<4;_+=1){const E=Cr(i.handles.points[T],i.handles.points[_]);Ec.worldToCanvas(T)),u=[f[0],f[1]],d=[f[2],f[3]],h=wa(u[0],u[1]),g=wa(d[0],d[1]),{arc1Start:p,arc1End:v,arc2End:x,arc2Start:m,arc1Angle:y,arc2Angle:w}=this.getArcsStartEndPoints({firstLine:u,secondLine:d,mid1:h,mid2:g}),{cachedStats:C}=i,S=Object.keys(C);for(let T=0;T{if(this.startedDrawing)return;this.startedDrawing=!0;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;if(!(l instanceof ln))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");Qe(a),this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=l.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g},data:{handles:{points:[[...s],[...s]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Ut(v,a);const x=He(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:x,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),n.preventDefault(),pe(x),v},this.isPointNearTool=(n,i,o,a)=>!1,this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(!(c&&!l)){if(this.startedDrawing&&f.handles.points.length===1){this.editData.handleIndex=1;return}this.startedDrawing=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o),re(o),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID),pe(s),c&&en(a),this.editData=null,this.isDrawing=!1}},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c,movingTextBox:l}=this.editData,{data:f}=a;if(l){const{deltaPoints:u}=i,d=u.world,{textBox:h}=f.handles,{worldPosition:g}=h;g[0]+=d[0],g[1]+=d[1],g[2]+=d[2],h.hasMoved=!0}else if(c===void 0){const{deltaPoints:u}=i,d=u.world;f.handles.points.forEach(g=>{g[0]+=d[0],g[1]+=d[1],g[2]+=d[2]}),a.invalidated=!0}else{const{currentPoints:u}=i,d=u.world;f.handles.points[c]=[...d],a.invalidated=!0}this.editData.hasMoved=!0,re(o),pe(s)},this.cancel=n=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(n),this._deactivateModify(n),ct(n);const{annotation:i,viewportIdsToRender:o,newAnnotation:a}=this.editData,{data:s}=i;return i.highlighted=!1,s.handles.activeHandleIndex=null,pe(o),a&&en(i),this.editData=null,this.startedDrawing=!1,i.annotationUID}},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this._activateDraw=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l=this.getTargetId(a),f=a.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let d=0;da.worldToCanvas(M));if(!p.cachedStats[l]||p.cachedStats[l].xValues==null?(p.cachedStats[l]={xValues:[0,0],yValues:[0,0],isHorizontal:!1,units:[""],isUnitless:!1},this._calculateCachedStats(h,f,n)):h.invalidated&&this._throttledCalculateCachedStats(h,f,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let y="0";if(gm(i,g,y,m[0],{color:x},0),o=!0,m.length!==2)return o;if(y="1",gm(i,g,y,m[1],{color:x},1),p.cachedStats[l].isUnitless){const M=`${g}-line-1`;It(i,g,"1",m[0],m[1],{color:x,width:1,shadow:this.configuration.shadow},M)}else{const M=m[0],L=m[1],A=L[1]-M[1],G=L[0]-M[0],P=p.cachedStats[l].isHorizontal;let N=[0,0];P?N=[M[0]+G,M[1]]:N=[M[0],M[1]+A];let V=`${g}-line-1`,$="1";It(i,g,$,m[0],N,{color:x,width:1,shadow:this.configuration.shadow},V),V=`${g}-line-2`,$="2",It(i,g,$,m[1],N,{color:x,width:1,lineDash:[1,1],shadow:this.configuration.shadow},V)}const C=this.getLinkedTextBoxStyle(u,h);if(!C.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const S=this.configuration.getTextLines(p,l,this.configuration);if(!p.handles.textBox.hasMoved){const M=m[1];p.handles.textBox.worldPosition=a.canvasToWorld(M)}const T=a.worldToCanvas(p.handles.textBox.worldPosition),E=ei(i,g,"1",S,T,m,{},C),{x:D,y:b,width:I,height:R}=E;p.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,b]),topRight:a.canvasToWorld([D+I,b]),bottomLeft:a.canvasToWorld([D,b+R]),bottomRight:a.canvasToWorld([D+I,b+R])}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}toolSelectedCallback(e,r,n,i){}handleSelectedCallback(e,r,n){const i=e.detail,{element:o}=i,{data:a}=r;r.highlighted=!0;const s=He(o,this.getToolName());let c;n.worldPosition||(c=a.handles.points.findIndex(l=>l===n)),this.editData={handleIndex:c,annotation:r,viewportIdsToRender:s},this._activateModify(o),Qe(o),re(o),pe(s),e.preventDefault()}_calculateCachedStats(e,r,n){const i=e.data,{element:o}=n.viewport;if(i.handles.points.length!==2)return;const{cachedStats:a}=i,s=Object.keys(a);for(let c=0;cMath.abs(b),w=[v[0],m[0]],C=[v[1],m[1]],S=[x[0],x[1]]}a[l]={xValues:w,yValues:C,isHorizontal:T,units:S,isUnitless:_}}return e.invalidated=!1,fn(e,o),a}}function m2e(t,e,r){const n=t.cachedStats[e],{xValues:i,yValues:o,units:a,isUnitless:s,isHorizontal:c}=n;if(s)return[`${yt(i[0])} px`];if(r.displayBothAxesDistances){const l=Math.abs(i[1]-i[0]),f=Math.abs(o[1]-o[0]);return[`${yt(l)} ${a[0]}`,`${yt(f)} ${a[1]}`]}if(c){const l=Math.abs(i[1]-i[0]);return[`${yt(l)} ${a[0]}`]}else{const l=Math.abs(o[1]-o[0]);return[`${yt(l)} ${a[1]}`]}}Ok.toolName="UltrasoundDirectionalTool";class V2 extends ar{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:v2e,changeTextCallback:y2e,canvasPosition:[10,10],canvasSize:10}}){super(e,r),this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c,u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=this.getReferencedImageId(l,s,d,h),p=V2.createAnnotation({metadata:{...l.getViewReference(),referencedImageId:g}});Ut(p,a);const v=He(a,this.getToolName());return n.preventDefault(),pe(v),this.configuration.getTextCallback(x=>{if(!x){Ot(p.annotationUID),pe(v),this.isDrawing=!1;return}p.data.text=x,en(p),pe(v)}),p},this.isPointNearTool=(n,i,o,a)=>{re(n);const{canvasPosition:s,canvasSize:c}=this.configuration;return s!=null&&s.length?Math.abs(o[0]-s[0]+c/2)<=c/2&&Math.abs(o[1]-s[1]+c/2)<=c/2:!1},this.toolSelectedCallback=(n,i)=>{i.highlighted=!0,n.preventDefault()},this._endCallback=n=>{const i=n.detail,{element:o}=i;this._deactivateModify(o),ct(o)},this.doubleClickCallback=n=>{const i=n.detail,{element:o}=i;let a=_t(this.getToolName(),o);if(a=this.filterInteractableAnnotationsForElement(o,a),!(a!=null&&a.length))return;const s=a.find(l=>this.isPointNearTool(o,l,i.currentPoints.canvas,6));if(!s)return;const c=s;this.configuration.changeTextCallback(s,n.detail,this._doneChangingTextCallback.bind(this,o,c)),this.isDrawing=!1,n.stopImmediatePropagation(),n.preventDefault()},this._activateModify=n=>{ve.isInteractingWithTool=!0,n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback)},this._deactivateModify=n=>{ve.isInteractingWithTool=!1,n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n,{element:s}=a;let c=_t(this.getToolName(),s);if(!(c!=null&&c.length)||(c=this.filterInteractableAnnotationsForElement(s,c),!(c!=null&&c.length)))return o;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let f=0;fx+p),g,{color:h,width:1}),o=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o}return o}}cancel(){}handleSelectedCallback(e,r,n){}_doneChangingTextCallback(e,r,n){r.data.text=n,re(e);const i=He(e,this.getToolName());pe(i),fn(r,e)}_isInsideVolume(e,r,n){return In(e,n)&&In(r,n)}}function v2e(t){return t(prompt("Enter your annotation:"))}function y2e(t,e,r){return r(prompt("Enter your annotation:"))}V2.toolName="KeyImage";class Mk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this.preMouseDownCallback=n=>this._deleteNearbyAnnotations(n,"mouse"),this.preTouchStartCallback=n=>this._deleteNearbyAnnotations(n,"touch")}_deleteNearbyAnnotations(e,r){const{renderingEngineId:n,viewportId:i,element:o,currentPoints:a}=e.detail,s=Cn(i,n);if(!s)return!1;const c=s._toolInstances,l=[];for(const f in c){const u=c[f];if(typeof u.isPointNearTool!="function"||typeof u.filterInteractableAnnotationsForElement!="function")continue;const d=_t(f,o);if(!d.length)continue;const h=u.filterInteractableAnnotationsForElement(o,d)||[];for(const g of h)u.isPointNearTool(o,g,a.canvas,10,r)&&l.push(g.annotationUID)}for(const f of l)Vi(f),Ot(f);return e.preventDefault(),!0}}Mk.toolName="Eraser";const{transformWorldToIndex:x2e}=Yt;function w2e(t,e){const{points:r,segmentsLocked:n,segmentIndex:i,segmentationId:o}=e,{viewport:a}=t,s=_A({operationData:e,viewport:t.viewport});if(!s){console.warn("No data found for fillRectangle");return}const{segmentationImageData:c,segmentationVoxelManager:l}=s;let f=r.map(b=>x2e(c,b));f=f.map(b=>b.map(I=>Math.round(I)));const u=Qs(f,c.getDimensions()),h=a instanceof ln||KA(f),g=c.getDirection(),p=c.getSpacing(),{viewPlaneNormal:v}=a.getCamera(),x=qa({direction:g,spacing:p},v),m=oN(r);let[[y,w],[C,S],[T,_]]=m;y-=x,w+=x,C-=x,S+=x,T-=x,_+=x;const E=h?()=>!0:b=>{const[I,R,M]=b,L=I>=y&&I<=w,A=R>=C&&R<=S,G=M>=T&&M<=_;return L&&A&&G},D=({value:b,index:I})=>{n.includes(b)||l.setAtIndex(I,i)};l.forEach(D,{isInObject:E,boundsIJK:u,imageData:c}),Ei(o)}function Rk(t,e){w2e(t,e)}function C2e(t,e,r=!0){const n=Object.assign({},e,{segmentIndex:0});Rk(t,n)}function S2e(t,e){C2e(t,e,!0)}class Lk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:Rk,ERASE_INSIDE:S2e},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,r),this.preMouseDownCallback=n=>{if(this.isDrawing===!0)return;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l}=c;this.isDrawing=!0;const f=l.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=Il(l.id);if(!h)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:g}=h,p=No(g),v=Dl(g),x=ts(l.id,g,p),{representationData:m}=Ct(g),y=m[Ge.Labelmap],w={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...u],viewUp:[...d],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:x},data:{handles:{points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null}}},C=He(a,this.getToolName());if(this.editData={annotation:w,segmentIndex:p,segmentationId:g,segmentsLocked:v,segmentColor:x,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},l instanceof Mn){const{volumeId:S}=y,T=_e.getVolume(S);this.editData={...this.editData,volumeId:S,referencedVolumeId:T.referencedVolumeId}}else{const S=Gi(l.id,g);this.editData={...this.editData,imageId:S}}return this._activateDraw(a),Qe(a),n.preventDefault(),pe(C),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,handleIndex:c}=this.editData,{data:l}=a,{currentPoints:f}=i,u=re(o),{worldToCanvas:d,canvasToWorld:h}=u.viewport,g=f.world,{points:p}=l.handles;p[c]=[...g];let v,x,m,y,w,C,S,T;switch(c){case 0:case 3:v=d(p[0]),y=d(p[3]),x=[y[0],v[1]],m=[v[0],y[1]],C=h(x),S=h(m),p[1]=C,p[2]=S;break;case 1:case 2:x=d(p[1]),m=d(p[2]),v=[m[0],x[1]],y=[x[0],m[1]],w=h(v),T=h(y),p[0]=w,p[3]=T;break}a.invalidated=!0,this.editData.hasMoved=!0,pe(s)},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,newAnnotation:s,hasMoved:c}=this.editData,{data:l}=a;if(s&&!c)return;l.handles.activeHandleIndex=null,this._deactivateDraw(o),ct(o);const f=re(o),u={...this.editData,points:l.handles.points};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(f,u)},this._activateDraw=n=>{n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(n,i)=>{let o=!1;if(!this.editData)return o;const{viewport:a}=n,{annotation:s}=this.editData,c=s.metadata,l=s.annotationUID,f=s.data,{points:u}=f.handles,d=u.map(p=>a.worldToCanvas(p)),h=`rgb(${c.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(Nh(i,l,"0",d[0],d[3],{color:h}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}Lk.toolName="RectangleScissor";class Nk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:OA,ERASE_INSIDE:LA},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,r),this.preMouseDownCallback=n=>{if(this.isDrawing===!0)return;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=o.canvas,l=re(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=Il(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=No(p),x=Dl(p),m=ts(f.id,p,v),{representationData:y}=Ct(p),w=y.Labelmap;if(!w)throw new Error("No labelmap data found for the active segmentation, create one before using scissors tool");const C={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:f.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:m},data:{handles:{points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},S=[f.id];if(this.editData={annotation:C,centerCanvas:c,segmentIndex:v,segmentationId:p,segmentsLocked:x,segmentColor:m,viewportIdsToRender:S,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},f instanceof Mn){const{volumeId:T}=w,_=_e.getVolume(T);this.editData={...this.editData,volumeId:T,referencedVolumeId:_.referencedVolumeId}}else{const T=Gi(f.id,p);this.editData={...this.editData,imageId:T}}return this._activateDraw(a),Qe(a),n.preventDefault(),pe(S),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=re(o),{renderingEngine:l,viewport:f}=c,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h,centerCanvas:g}=this.editData,{data:p}=d,v=Math.abs(s[0]-g[0]),x=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+x*x),y=[g[0],g[1]+m],w=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(y),u(w),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,pe(h)},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,newAnnotation:s,hasMoved:c}=this.editData,{data:l}=a,{viewPlaneNormal:f,viewUp:u}=a.metadata;if(s&&!c)return;l.handles.activeHandleIndex=null,this._deactivateDraw(o),ct(o);const d=re(o),h={...this.editData,points:l.handles.points,viewPlaneNormal:f,viewUp:u,strategySpecificConfiguration:{}};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(d,h)},this._activateDraw=n=>{n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback),n.addEventListener(F.TOUCH_END,this._endCallback)},this._deactivateDraw=n=>{n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;if(!this.editData)return o;const{viewport:a}=n,{viewportIdsToRender:s}=this.editData;if(!s.includes(a.id))return o;const{annotation:c}=this.editData,l=c.metadata,f=c.annotationUID,u=c.data,{points:d}=u.handles,h=d.map(w=>a.worldToCanvas(w)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],x=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(bi(i,f,"0",v,x,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}Nk.toolName="CircleScissor";class Pk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:MA,ERASE_INSIDE:RA},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,r),this.preMouseDownCallback=n=>{if(this.isDrawing===!0)return;const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=o.canvas,l=re(a),{viewport:f}=l;this.isDrawing=!0;const u=f.getCamera(),{viewPlaneNormal:d,viewUp:h}=u,g=Il(f.id);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:p}=g,v=No(p),x=Dl(p),m=ts(f.id,p,v);this.isDrawing=!0;const y={metadata:{viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:f.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:m},data:{invalidated:!0,handles:{points:[[...s],[...s],[...s],[...s]],activeHandleIndex:null},cachedStats:{},highlighted:!0}},w=[f.id];this.editData={annotation:y,centerCanvas:c,segmentIndex:v,segmentationId:p,segmentsLocked:x,segmentColor:m,toolGroupId:this.toolGroupId,viewportIdsToRender:w,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null};const{representationData:C}=Ct(p),S=C[Ge.Labelmap];if(f instanceof Mn){const{volumeId:T}=S,_=_e.getVolume(T);this.editData={...this.editData,volumeId:T,referencedVolumeId:_.referencedVolumeId}}else this.editData={...this.editData};return this._activateDraw(a),Qe(a),n.preventDefault(),pe(w),!0},this._dragCallback=n=>{this.isDrawing=!0;const i=n.detail,{element:o}=i,{currentPoints:a}=i,s=a.canvas,c=re(o),{renderingEngine:l,viewport:f}=c,{canvasToWorld:u}=f,{annotation:d,viewportIdsToRender:h,centerCanvas:g}=this.editData,{data:p}=d,v=Math.abs(s[0]-g[0]),x=Math.abs(s[1]-g[1]),m=Math.sqrt(v*v+x*x),y=[g[0],g[1]+m],w=[g[0],g[1]-m],C=[g[0]-m,g[1]],S=[g[0]+m,g[1]];p.handles.points=[u(y),u(w),u(C),u(S)],d.invalidated=!0,this.editData.hasMoved=!0,pe(h)},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,newAnnotation:s,hasMoved:c,segmentIndex:l,segmentsLocked:f}=this.editData,{data:u}=a,{viewPlaneNormal:d,viewUp:h}=a.metadata;if(s&&!c)return;a.highlighted=!1,u.handles.activeHandleIndex=null,this._deactivateDraw(o),ct(o);const g=re(o),p={...this.editData,points:u.handles.points,segmentIndex:l,segmentsLocked:f,viewPlaneNormal:d,viewUp:h};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(g,p)},this._activateDraw=n=>{n.addEventListener(F.MOUSE_UP,this._endCallback),n.addEventListener(F.MOUSE_DRAG,this._dragCallback),n.addEventListener(F.MOUSE_CLICK,this._endCallback),n.addEventListener(F.MOUSE_MOVE,this._dragCallback),n.addEventListener(F.TOUCH_END,this._endCallback),n.addEventListener(F.TOUCH_TAP,this._endCallback),n.addEventListener(F.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=n=>{n.removeEventListener(F.MOUSE_UP,this._endCallback),n.removeEventListener(F.MOUSE_DRAG,this._dragCallback),n.removeEventListener(F.MOUSE_CLICK,this._endCallback),n.removeEventListener(F.MOUSE_MOVE,this._dragCallback),n.removeEventListener(F.TOUCH_END,this._endCallback),n.removeEventListener(F.TOUCH_DRAG,this._dragCallback),n.removeEventListener(F.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(n,i)=>{let o=!1;if(!this.editData)return o;const{viewport:a}=n,{viewportIdsToRender:s}=this.editData;if(!s.includes(a.id))return o;const{annotation:c}=this.editData,l=c.metadata,f=c.annotationUID,u=c.data,{points:d}=u.handles,h=d.map(w=>a.worldToCanvas(w)),g=h[0],p=h[1],v=[Math.floor((g[0]+p[0])/2),Math.floor((g[1]+p[1])/2)],x=Math.abs(g[1]-Math.floor((g[1]+p[1])/2)),m=`rgb(${l.segmentColor.slice(0,3)})`;return a.getRenderingEngine()?(bi(i,f,"0",v,x,{color:m}),o=!0,o):(console.warn("Rendering Engine has been destroyed"),o)}}}Pk.toolName="SphereScissor";const{transformWorldToIndex:hf}=Yt;class Ak extends DS{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!1,getTextLines:T2e,statsCalculator:Ya,showTextBox:!1}}){super(e,r),this.isHandleOutsideImage=!1,this.addNewAnnotation=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l,renderingEngine:f}=c;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:d,viewUp:h}=u;let g,p,v;if(l instanceof ln)throw new Error("Stack Viewport Not implemented");{const T=this.getTargetId(l);v=da(T),p=_e.getVolume(v),g=Xa(p,s,d)}const x=qa(p,d),m=this._getStartCoordinate(s,x,d),y=this._getEndCoordinate(s,x,d),w=l.getFrameOfReferenceUID(),C={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...h],FrameOfReferenceUID:w,referencedImageId:g,volumeId:v,spacingInNormal:x,enabledElement:c},data:{label:"",startCoordinate:m,endCoordinate:y,handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...s],[...s]],activeHandleIndex:null},cachedStats:{pointsInVolume:[],projectionPoints:[],statistics:[]},labelmapUID:null}};this._computeProjectionPoints(C,p),Ut(C,a);const S=He(a,this.getToolName());return this.editData={annotation:C,viewportIdsToRender:S,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),Qe(a),n.preventDefault(),pe(S),C},this._endCallback=n=>{const i=n.detail,{element:o}=i,{annotation:a,viewportIdsToRender:s,newAnnotation:c,hasMoved:l}=this.editData,{data:f}=a;if(c&&!l)return;a.highlighted=!1,f.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),ct(o);const u=re(o);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(a.annotationUID);const d=this.getTargetId(u.viewport),h=_e.getVolume(d.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(a,h,d,u),pe(s),c&&en(a)},this.renderAnnotation=(n,i)=>{let o=!1;const{viewport:a}=n;let s=_t(this.getToolName(),a.element);if(!(s!=null&&s.length))return o;s=b2(s,a.getCamera());const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id};for(let l=0;la.worldToCanvas(Y)),C=w[0],S=Qc(w),{centerPointRadius:T}=this.configuration,_=td(w),E=a.getCamera().focalPoint,D=a.getCamera().viewPlaneNormal;let b=h,I=g;Array.isArray(h)&&(b=this._getCoordinateForViewplaneNormal(b,D),d.startCoordinate=b),Array.isArray(g)&&(I=this._getCoordinateForViewplaneNormal(I,D),d.endCoordinate=I);const R=Rs(d.startCoordinate),M=Rs(d.endCoordinate),L=this._getCoordinateForViewplaneNormal(E,D),A=Rs(L);if(AMath.max(R,M))continue;const G=Rs((d.startCoordinate+d.endCoordinate)/2);let P=!1;if(A===G&&(P=!0),d.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(D)]=G,f.invalidated&&this._throttledCalculateCachedStats(f,n),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),o;let N;if(!Ur(u))continue;!rr(u)&&!this.editData&&v!==null&&P&&(N=[w[v]]),N&&sn(i,u,"0",N,{color:y});let V=x,$=m;P?(V=x,$=[]):$=[5,5];const H="0";if(bi(i,u,H,C,S,{color:y,lineDash:$,lineWidth:V}),T>0&&S>3*T&&bi(i,u,`${H}-center`,C,T,{color:y,lineDash:m,lineWidth:x}),o=!0,this.configuration.showTextBox==!0&&this.configuration.calculatePointsInsideVolume==!0){const Y=this.getLinkedTextBoxStyle(c,f);if(!Y.visibility){d.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const ne=this.configuration.getTextLines(d);if(!ne||ne.length===0)continue;let Q;d.handles.textBox.hasMoved||(Q=$i(_),d.handles.textBox.worldPosition=a.canvasToWorld(Q));const ee=a.worldToCanvas(d.handles.textBox.worldPosition),fe=ei(i,u,"1",ne,ee,w,{},Y),{x:le,y:k,width:O,height:B}=fe;d.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([le,k]),topRight:a.canvasToWorld([le+O,k]),bottomLeft:a.canvasToWorld([le,k+B]),bottomRight:a.canvasToWorld([le+O,k+B])}}}return o},this._throttledCalculateCachedStats=Qr(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,r){const{data:n,metadata:i}=e,{viewPlaneNormal:o,spacingInNormal:a}=i,{imageData:s}=r,{startCoordinate:c,endCoordinate:l}=n,{points:f}=n.handles,u=hf(s,f[0]),d=hf(s,f[0]),h=to(f),g=we();s.indexToWorldVec3(u,g);const p=we();s.indexToWorldVec3(d,p),this._getIndexOfCoordinatesForViewplaneNormal(o)==2?(g[2]=c,p[2]=l,h[0][2]=c,h[1][2]=c):this._getIndexOfCoordinatesForViewplaneNormal(o)==0?(g[0]=c,p[0]=l,h[0][0]=c,h[1][0]=c):this._getIndexOfCoordinatesForViewplaneNormal(o)==1&&(g[1]=c,p[1]=l,h[0][1]=c,h[1][1]=c);const v=Cr(g,p),x=[];for(let m=0;m{const w=we();return Vt(w,y,o,m),Array.from(w)}));n.cachedStats.projectionPoints=x}_computePointsInsideVolume(e,r,n,i){var D,b,I;const{data:o,metadata:a}=e,{viewPlaneNormal:s,viewUp:c}=a,{viewport:l}=i,f=o.cachedStats.projectionPoints,u=[[]],d=this.getTargetImageData(n),h=o.handles.points.map(R=>l.worldToCanvas(R)),[g,p]=td(h),v=l.canvasToWorld(g),x=l.canvasToWorld(p),{worldWidth:m,worldHeight:y}=k2(s,c,v,x),w=Bi(d,o.handles),C=qC(d),S=Math.abs(Math.PI*(m/w.scale/2)*(y/C/w.scale/2)),T={isPreScaled:os(l,n),isSuvScaled:this.isSuvScaled(l,n,e.metadata.referencedImageId)},_=bl(a.Modality,e.metadata.referencedImageId,T);for(let R=0;Rl.worldToCanvas(le)),[A,G]=td(L),P=l.canvasToWorld(A),N=l.canvasToWorld(G),V=P,$=N,{dimensions:H,imageData:Y,voxelManager:ne}=r,Q=hf(Y,V),ee=hf(Y,M),de=this._getIndexOfCoordinatesForViewplaneNormal(s);Q[0]=Math.floor(Q[0]),Q[1]=Math.floor(Q[1]),Q[2]=Math.floor(Q[2]),Q[de]=ee[de];const fe=hf(Y,$);if(fe[0]=Math.floor(fe[0]),fe[1]=Math.floor(fe[1]),fe[2]=Math.floor(fe[2]),fe[de]=ee[de],this._isInsideVolume(Q,fe,H)){const le=Math.min(Q[0],fe[0]),k=Math.max(Q[0],fe[0]),O=Math.min(Q[1],fe[1]),B=Math.max(Q[1],fe[1]),U=Math.min(Q[2],fe[2]),z=Math.max(Q[2],fe[2]),j=[[le,k],[O,B],[U,z]],ae={center:M,xRadius:Math.abs(P[0]-N[0])/2,yRadius:Math.abs(P[1]-N[1])/2,zRadius:Math.abs(P[2]-N[2])/2},he=ne.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:ye=>_2(ae,ye),boundsIJK:j,imageData:Y,returnPoints:this.configuration.storePointData});u.push(he)}}const E=this.configuration.statsCalculator.getStatistics();o.cachedStats.pointsInVolume=u,o.cachedStats.statistics={Modality:a.Modality,area:S,mean:(D=E.mean)==null?void 0:D.value,stdDev:(b=E.stdDev)==null?void 0:b.value,max:(I=E.max)==null?void 0:I.value,statsArray:E.array,areaUnit:w.areaUnit,modalityUnit:_}}_calculateCachedStatsTool(e,r){const n=e.data,{viewport:i}=r,{cachedStats:o}=n,a=this.getTargetId(i),s=_e.getVolume(a.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,s),this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(e,s,a,r),e.invalidated=!1,fn(e,i.element),o}_getStartCoordinate(e,r,n){const i=this.configuration.numSlicesToPropagate,o=Math.round(i/2),a=we();return Vt(a,e,n,o*-r),this._getCoordinateForViewplaneNormal(a,n)}_getEndCoordinate(e,r,n){const i=this.configuration.numSlicesToPropagate,o=i-Math.round(i/2),a=we();return Vt(a,e,n,o*r),this._getCoordinateForViewplaneNormal(a,n)}_getIndexOfCoordinatesForViewplaneNormal(e){const r=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])];return r.indexOf(Math.max(...r))}_getCoordinateForViewplaneNormal(e,r){const n=this._getIndexOfCoordinatesForViewplaneNormal(r);return e[n]}}function T2e(t){const e=t.cachedStats.statistics,{area:r,mean:n,max:i,stdDev:o,areaUnit:a,modalityUnit:s}=e;if(n===void 0)return;const c=[];return c.push(`Area: ${yt(r)} ${a}`),c.push(`Mean: ${yt(n)} ${s}`),c.push(`Max: ${yt(i)} ${s}`),c.push(`Std Dev: ${yt(o)} ${s}`),c}Ak.toolName="CircleROIStartEndThreshold";const{transformWorldToIndex:VE,isEqual:xy}=Yt;class kk extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"]}){super(e,r),this.preMouseDownCallback=n=>{const i=n.detail,{currentPoints:o,element:a}=i,s=o.world,c=re(a),{viewport:l}=c,f=l.getCamera(),{viewPlaneNormal:u}=f,d=Il(l.id);if(!d)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:h}=d,g=No(h),p=Dl(h),{representationData:v}=Ct(h);let x,m,y,w;if(l instanceof Mn){const{volumeId:L}=v[Ge.Labelmap],A=_e.getVolume(L);({dimensions:x,direction:m}=A),w=A.voxelManager,y=VE(A.imageData,s)}else{const L=Gi(l.id,h);if(!L)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const{imageData:A}=l.getImageData();x=A.getDimensions(),m=A.getDirection(),w=_e.getImage(L).voxelManager,y=VE(A,s)}const C=this.getFixedDimension(u,m);if(C===void 0){console.warn("Oblique paint fill not yet supported");return}const{floodFillGetter:S,getLabelValue:T,getScalarDataPositionFromPlane:_,inPlaneSeedPoint:E,fixedDimensionValue:D}=this.generateHelpers(w,x,y,C);if(y[0]<0||y[0]>=x[0]||y[1]<0||y[1]>=x[1]||y[2]<0||y[2]>=x[2])return;const b=T(y[0],y[1],y[2]);if(p.includes(b))return;const I=xm(S,E),{flooded:R}=I;R.forEach(L=>{const A=_(L[0],L[1]);w.setAtIndex(A,g)});const M=this.getFramesModified(C,D,I);return Ei(h,M),!0},this.getFramesModified=(n,i,o)=>{const{boundaries:a}=o;if(n===2)return[i];let s=1/0,c=-1/0;for(let f=0;fc&&(c=u)}const l=[];for(let f=s;f<=c;f++)l.push(f);return l},this.generateHelpers=(n,i,o,a=2)=>{let s,c;switch(a){case 0:s=o[0],c=[o[1],o[2]];break;case 1:s=o[1],c=[o[0],o[2]];break;case 2:s=o[2],c=[o[0],o[1]];break;default:throw new Error(`Invalid fixedDimension: ${a}`)}const l=(h,g,p)=>n.toIndex([h,g,p]),f=(h,g,p)=>n.getAtIJK(h,g,p),u=this.generateFloodFillGetter(i,a,s,f);return{getScalarDataPositionFromPlane:this.generateGetScalarDataPositionFromPlane(l,a,s),getLabelValue:f,floodFillGetter:u,inPlaneSeedPoint:c,fixedDimensionValue:s}},this.generateFloodFillGetter=(n,i,o,a)=>{let s;switch(i){case 0:s=(c,l)=>{if(!(c>=n[1]||c<0||l>=n[2]||l<0))return a(o,c,l)};break;case 1:s=(c,l)=>{if(!(c>=n[0]||c<0||l>=n[2]||l<0))return a(c,o,l)};break;case 2:s=(c,l)=>{if(!(c>=n[0]||c<0||l>=n[1]||l<0))return a(c,l,o)};break;default:throw new Error(`Invalid fixedDimension: ${i}`)}return s},this.generateGetScalarDataPositionFromPlane=(n,i,o)=>{let a;switch(i){case 0:a=(s,c)=>n(o,s,c);break;case 1:a=(s,c)=>n(s,o,c);break;case 2:a=(s,c)=>n(s,c,o);break;default:throw new Error(`Invalid fixedDimension: ${i}`)}return a}}getFixedDimension(e,r){const n=r.slice(0,3),i=r.slice(3,6),o=r.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],s=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(xy(a,s))return 0;const c=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];if(xy(a,c))return 1;const l=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(xy(a,l))return 2}}kk.toolName="PaintFill";const _2e={TOP_LEFT:"TOP_LEFT",TOP_RIGHT:"TOP_RIGHT",BOTTOM_LEFT:"BOTTOM_LEFT",BOTTOM_RIGHT:"BOTTOM_RIGHT"};var IS={Corners:_2e};const{vtkErrorMacro:wy}=W,{Corners:rp}=IS;function E2e(t,e){e.classHierarchy.push("vtkOrientationMarkerWidget");const r={...t},n=[],i=lO.newInstance(),o=new ResizeObserver(d=>{t.updateViewport()});let a=null,s=null,c=null,l=null,f=null;function u(){e._interactor.isAnimating()||t.updateMarkerOrientation()}e._onParentRendererChanged=()=>t.updateViewport(),t.computeViewport=()=>{const d=e.parentRenderer||e._interactor.getCurrentRenderer(),[h,g,p,v]=d.getViewport(),x=e._interactor.getView(),m=x.getSize(),[y,w]=x.getViewportSize(d),C=Math.min(y,w);let S=e.viewportSize*C;S=Math.max(Math.min(e.minPixelSize,C),Math.min(e.maxPixelSize,S));const T=S/m[0],_=S/m[1];switch(e.viewportCorner){case rp.TOP_LEFT:return[h,v-_,h+T,v];case rp.TOP_RIGHT:return[p-T,v-_,p,v];case rp.BOTTOM_LEFT:return[h,g,h+T,g+_];case rp.BOTTOM_RIGHT:return[p-T,g,p,g+_];default:return wy("Invalid widget corner"),null}},t.updateViewport=()=>{e.enabled&&(i.setViewport(...t.computeViewport()),e._interactor.render())},t.updateMarkerOrientation=()=>{const h=(e.parentRenderer||e._interactor.getCurrentRenderer()).getActiveCamera();if(!h)return;const g=h.getReferenceByName("position"),p=h.getReferenceByName("focalPoint"),v=h.getReferenceByName("viewUp");if(n[0]!==g[0]||n[1]!==g[1]||n[2]!==g[2]||n[3]!==p[0]||n[4]!==p[1]||n[5]!==p[2]||n[6]!==v[0]||n[7]!==v[1]||n[8]!==v[2]){n[0]=g[0],n[1]=g[1],n[2]=g[2],n[3]=p[0],n[4]=p[1],n[5]=p[2],n[6]=v[0],n[7]=v[1],n[8]=v[2];const x=i.getActiveCamera();x.setPosition(g[0],g[1],g[2]),x.setFocalPoint(p[0],p[1],p[2]),x.setViewUp(v[0],v[1],v[2]),i.resetCamera()}},t.setEnabled=d=>{var h,g;if(d){if(e.enabled)return;if(!e.actor){wy("Must set actor before enabling orientation marker.");return}if(!e._interactor){wy("Must set interactor before enabling orientation marker.");return}const p=e.parentRenderer||e._interactor.getCurrentRenderer(),v=p.getRenderWindow();v.addRenderer(i),v.getNumberOfLayers()<2&&v.setNumberOfLayers(2),i.setLayer(v.getNumberOfLayers()-1),i.setInteractive(e.interactiveRenderer),i.addViewProp(e.actor),e.actor.setVisibility(!0),a=p.onEvent(x=>{x.type==="ActiveCameraEvent"&&(s&&s.unsubscribe(),s=x.camera.onModified(u))}),s=p.getActiveCamera().onModified(u),c=e._interactor.onAnimation(t.updateMarkerOrientation),l=e._interactor.onEndAnimation(t.updateMarkerOrientation),o.observe(e._interactor.getView().getCanvas()),t.updateViewport(),t.updateMarkerOrientation(),e.enabled=!0}else{if(!e.enabled)return;e.enabled=!1,o.disconnect(),a.unsubscribe(),a=null,s.unsubscribe(),s=null,c.unsubscribe(),c=null,l.unsubscribe(),l=null,e.actor.setVisibility(!1),i.removeViewProp(e.actor);const p=(g=(h=e._interactor)==null?void 0:h.findPokedRenderer())==null?void 0:g.getRenderWindow();p&&p.removeRenderer(i)}t.modified()},t.setViewportCorner=d=>{d!==e.viewportCorner&&(e.viewportCorner=d,t.updateViewport())},t.setViewportSize=d=>{const h=Math.min(1,Math.max(0,d));h!==e.viewportSize&&(e.viewportSize=h,t.updateViewport())},t.setActor=d=>{const h=e.enabled;t.setEnabled(!1),e.actor=d,t.setEnabled(h)},t.getRenderer=()=>i,t.delete=()=>{r.delete(),f&&(f.unsubscribe(),f=null),a&&(a.unsubscribe(),a=null),s&&(s.unsubscribe(),s=null),c&&(c.unsubscribe(),c=null),l&&(l.unsubscribe(),l=null),o.disconnect()},f=t.onModified(t.updateViewport)}const D2e={viewportCorner:IS.Corners.BOTTOM_LEFT,viewportSize:.2,minPixelSize:50,maxPixelSize:200,parentRenderer:null,interactiveRenderer:!1};function Vk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,D2e,r),W.obj(t,e),W.get(t,e,["enabled","viewportCorner","viewportSize","interactiveRenderer"]),W.setGet(t,e,["_interactor","minPixelSize","maxPixelSize","parentRenderer"]),W.get(t,e,["actor"]),W.moveToProtected(t,e,["interactor"]),E2e(t,e)}const b2e=W.newInstance(Vk,"vtkOrientationMarkerWidget");var FE={newInstance:b2e,extend:Vk,...IS};function Fk(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0,0];const[r,n,i,o]=e,s=t.getContext("2d").getImageData(r,n,i||t.width,o||t.height),c=C0.newInstance({type:"vtkImageData"});c.setOrigin(0,0,0),c.setSpacing(1,1,1),c.setExtent(0,(i||t.width)-1,0,(o||t.height)-1,0,0);const l=tt.newInstance({numberOfComponents:4,values:new Uint8Array(s.data.buffer)});return l.setName("scalars"),c.getPointData().setScalars(l),c}function I2e(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{flipX:!1,flipY:!1,rotate:0};const r=document.createElement("canvas");r.width=t.width,r.height=t.height;const n=r.getContext("2d"),{flipX:i,flipY:o,rotate:a}=e;return n.translate(r.width/2,r.height/2),n.scale(i?-1:1,o?-1:1),n.rotate(a*Math.PI/180),n.drawImage(t,-t.width/2,-t.height/2),Fk(r)}var O2e={canvasToImageData:Fk,imageToImageData:I2e};const Uk={default:{defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:t=>t/2,faceColor:"white",edgeThickness:.1,edgeColor:"black",resolution:400},xMinusFaceProperty:{text:"X-",faceColor:"yellow"},xPlusFaceProperty:{text:"X+",faceColor:"yellow"},yMinusFaceProperty:{text:"Y-",faceColor:"red"},yPlusFaceProperty:{text:"Y+",faceColor:"red"},zMinusFaceProperty:{text:"Z-",faceColor:"#008000"},zPlusFaceProperty:{text:"Z+",faceColor:"#008000"}},lps:{xMinusFaceProperty:{text:"R",faceRotation:-90},xPlusFaceProperty:{text:"L",faceRotation:90},yMinusFaceProperty:{text:"A",faceRotation:0},yPlusFaceProperty:{text:"P",faceRotation:180},zMinusFaceProperty:{text:"I",faceRotation:180},zPlusFaceProperty:{text:"S",faceRotation:0}}};function Bk(t,e){e.set(t)}function M2e(t,e){return Bk(Uk[t],e)}function R2e(t,e){Uk[t]=e}var L2e={applyDefinitions:Bk,applyPreset:M2e,registerStylePreset:R2e};const N2e={xPlus:0,xMinus:1,yPlus:2,yMinus:3,zPlus:4,zMinus:5};function P2e(t,e){e.classHierarchy.push("vtkAnnotatedCubeActor"),e.xPlusFaceProperty={...e.xPlusFaceProperty},e.xMinusFaceProperty={...e.xMinusFaceProperty},e.yPlusFaceProperty={...e.yPlusFaceProperty},e.yMinusFaceProperty={...e.yMinusFaceProperty},e.zPlusFaceProperty={...e.zPlusFaceProperty},e.zMinusFaceProperty={...e.zMinusFaceProperty};let r=null;const n=document.createElement("canvas"),i=oa.newInstance(),o=Dh.newInstance();o.setInterpolate(!0);function a(c){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;l&&Object.assign(e[`${c}FaceProperty`],l);const f={...e.defaultStyle,...e[`${c}FaceProperty`]};n.width=f.resolution,n.height=f.resolution;const u=n.getContext("2d");u.fillStyle=f.faceColor,u.fillRect(0,0,n.width,n.height),f.edgeThickness>0&&(u.strokeStyle=f.edgeColor,u.lineWidth=f.edgeThickness*n.width,u.strokeRect(0,0,n.width,n.height)),u.save(),u.translate(0,n.height),u.scale(1,-1),u.translate(n.width/2,n.height/2),u.rotate(-Math.PI*(f.faceRotation/180));const d=f.fontSizeScale(f.resolution);u.fillStyle=f.fontColor,u.textAlign="center",u.textBaseline="middle",u.font=`${f.fontStyle} ${d}px "${f.fontFamily}"`,u.fillText(f.text,0,0),u.restore();const h=O2e.canvasToImageData(n);o.setInputData(h,N2e[c]),t.modified()}function s(){r=iM.newInstance({generate3DTextureCoordinates:!0}),i.setInputConnection(r.getOutputPort()),a("xPlus"),a("xMinus"),a("yPlus"),a("yMinus"),a("zPlus"),a("zMinus")}t.setDefaultStyle=c=>{e.defaultStyle={...e.defaultStyle,...c},s()},t.setXPlusFaceProperty=c=>a("xPlus",c),t.setXMinusFaceProperty=c=>a("xMinus",c),t.setYPlusFaceProperty=c=>a("yPlus",c),t.setYMinusFaceProperty=c=>a("yMinus",c),t.setZPlusFaceProperty=c=>a("zPlus",c),t.setZMinusFaceProperty=c=>a("zMinus",c),s(),i.setInputConnection(r.getOutputPort()),t.setMapper(i),t.addTexture(o)}const A2e={defaultStyle:{text:"",faceColor:"white",faceRotation:0,fontFamily:"Arial",fontColor:"black",fontStyle:"normal",fontSizeScale:t=>t/1.8,edgeThickness:.1,edgeColor:"black",resolution:200}};function Gk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,A2e,r),ca.extend(t,e,r),W.get(t,e,["defaultStyle","xPlusFaceProperty","xMinusFaceProperty","yPlusFaceProperty","yMinusFaceProperty","zPlusFaceProperty","zMinusFaceProperty"]),P2e(t,e)}const k2e=W.newInstance(Gk,"vtkAnnotatedCubeActor");var UE={newInstance:k2e,extend:Gk,Presets:L2e};const{vtkErrorMacro:V2e}=W;function F2e(t,e){let r=0;return t.map((n,i)=>i===r?(r+=n+1,n):n+e)}function ip(t,e,r,n){t.set(F2e(e,r),n)}function U2e(t,e){e.classHierarchy.push("vtkAppendPolyData"),t.requestData=(r,n)=>{const i=t.getNumberOfInputPorts();if(!i){V2e("No input specified.");return}if(i===1){n[0]=r[0];return}const o=hr.newInstance();let a=0,s=0,c=1,l=1,f=0,u=0,d=0,h=0,g=!0,p=!0,v=!0;for(let b=0;bc?s:c);const M=I.getPointData();M?(g=g&&M.getNormals()!==null,p=p&&M.getTCoords()!==null,v=v&&M.getScalars()!==null):(g=!1,p=!1,v=!1)}e.outputPointsPrecision===M1.SINGLE?s=vt.FLOAT:e.outputPointsPrecision===M1.DOUBLE&&(s=vt.DOUBLE);const x=Ld.newInstance({dataType:s});x.setNumberOfPoints(a);const m=x.getData(),y=new Uint32Array(f),w=new Uint32Array(u),C=new Uint32Array(d),S=new Uint32Array(h);let T=null,_=null,E=null;const D=r[i-1];if(g){const b=D.getPointData().getNormals();T=tt.newInstance({numberOfComponents:3,numberOfTuples:a,size:3*a,dataType:b.getDataType(),name:b.getName()})}if(p){const b=D.getPointData().getTCoords();_=tt.newInstance({numberOfComponents:2,numberOfTuples:a,size:2*a,dataType:b.getDataType(),name:b.getName()})}if(v){const b=D.getPointData().getScalars();E=tt.newInstance({numberOfComponents:b.getNumberOfComponents(),numberOfTuples:a,size:a*b.getNumberOfComponents(),dataType:b.getDataType(),name:b.getName()})}a=0,f=0,u=0,d=0,h=0;for(let b=0;b2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,B2e,r),W.setGet(t,e,["outputPointsPrecision"]),W.obj(t,e),W.algo(t,e,1,1),U2e(t,e)}const G2e=W.newInstance(Wk,"vtkAppendPolyData");var zk={newInstance:G2e,extend:Wk};function W2e(t,e){e.classHierarchy.push("vtkConeSource");function r(n,i){if(e.deleted)return;let o=i[0];const a=2*Math.PI/e.resolution,s=-e.height/2,c=e.resolution+1,l=4*e.resolution+1+e.resolution;let f=0;const u=W.newTypedArray(e.pointType,c*3);let d=0;const h=new Uint32Array(l);u[0]=e.height/2,u[1]=0,u[2]=0,e.capping&&(h[d++]=e.resolution);for(let g=0;ge.resolution?1:g+2;br.buildFromRadian().translate(...e.center).rotateFromDirections([1,0,0],e.direction).apply(u),o=hr.newInstance(),o.getPoints().setData(u,3),o.getPolys().setData(h,1),i[0]=o}t.requestData=r}const z2e={height:1,radius:.5,resolution:6,center:[0,0,0],direction:[1,0,0],capping:!0,pointType:"Float64Array"};function $k(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,z2e,r),W.obj(t,e),W.setGet(t,e,["height","radius","resolution","capping"]),W.setGetArray(t,e,["center","direction"],3),W.algo(t,e,0,1),W2e(t,e)}const $2e=W.newInstance($k,"vtkConeSource");var j2e={newInstance:$2e,extend:$k};function H2e(t,e){e.classHierarchy.push("vtkCylinderSource");function r(n,i){if(e.deleted)return;let o=i[0];const a=2*Math.PI/e.resolution;let s=2*e.resolution,c=5*e.resolution;e.capping&&(s=4*e.resolution,c=7*e.resolution+2);const l=W.newTypedArray(e.pointType,s*3);let f=0;const u=new Uint32Array(c),d=new Float32Array(s*3),h=tt.newInstance({numberOfComponents:3,values:d,name:"Normals"}),g=new Float32Array(s*2),p=tt.newInstance({numberOfComponents:2,values:g,name:"TCoords"}),v=[0,0,0],x=[0,0,0],m=[0,0,0],y=[0,0,0],w=[0,0],C=[0,0],S=e.otherRadius==null?e.radius:e.otherRadius;for(let T=0;TT*-1)).apply(l),o=hr.newInstance(),o.getPoints().setData(l,3),o.getPolys().setData(u,1),o.getPointData().setNormals(h),o.getPointData().setTCoords(p),i[0]=o}t.requestData=r}const K2e={height:1,initAngle:0,radius:1,resolution:6,center:[0,0,0],direction:[0,1,0],capping:!0,pointType:"Float64Array"};function jk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,K2e,r),W.obj(t,e),W.setGet(t,e,["height","initAngle","otherRadius","radius","resolution","capping"]),W.setGetArray(t,e,["center","direction"],3),W.algo(t,e,0,1),H2e(t,e)}const q2e=W.newInstance(jk,"vtkCylinderSource");var X2e={newInstance:q2e,extend:jk};function Y2e(t,e){e.classHierarchy.push("vtkArrowSource");function r(n,i){if(e.deleted)return;const o=X2e.newInstance({capping:!0});o.setResolution(e.shaftResolution),o.setRadius(e.shaftRadius),o.setHeight(1-e.tipLength),o.setCenter(0,(1-e.tipLength)*.5,0);const a=o.getOutputData(),s=a.getPoints().getData(),c=a.getPointData().getNormals().getData();br.buildFromDegree().rotateZ(-90).apply(s).apply(c);const l=j2e.newInstance();l.setResolution(e.tipResolution),l.setHeight(e.tipLength),l.setRadius(e.tipRadius);const f=l.getOutputData(),u=f.getPoints().getData();br.buildFromRadian().translate(1-e.tipLength*.5,0,0).apply(u);const d=zk.newInstance();d.setInputData(a),d.addInputData(f);const h=d.getOutputData(),g=h.getPoints().getData();br.buildFromRadian().translate(-.5+e.tipLength*.5,0,0).apply(g),e.invert?(br.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(-1,-1,-1).apply(g),i[0]=h):(br.buildFromRadian().rotateFromDirections([1,0,0],e.direction).scale(1,1,1).apply(g),i[0]=d.getOutputData())}t.requestData=r}const J2e={tipResolution:6,tipRadius:.1,tipLength:.35,shaftResolution:6,shaftRadius:.03,invert:!1,direction:[1,0,0],pointType:"Float64Array"};function Hk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,J2e,r),W.obj(t,e),W.setGet(t,e,["tipResolution","tipRadius","tipLength","shaftResolution","shaftRadius","invert"]),W.setGetArray(t,e,["direction"],3),W.algo(t,e,0,1),Y2e(t,e)}const Z2e=W.newInstance(Hk,"vtkArrowSource");var Cy={newInstance:Z2e,extend:Hk};function Sy(t){const e=t.getPoints().getBounds(),r=[-(e[0]+e[1])*.5,-(e[2]+e[3])*.5,-(e[4]+e[5])*.5];br.buildFromDegree().translate(...r).apply(t.getPoints().getData())}function Ty(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const n=t.getPoints().getBounds(),i=[0,0,0];r?i[e]=-n[e*2+1]:i[e]=-n[e*2],br.buildFromDegree().translate(...i).apply(t.getPoints().getData())}function _y(t,e,r,n){const i=t.getPoints().getData().length,o=new Uint8ClampedArray(i);let a=0;for(;a{let i={...e.config,...e.xConfig};const o=Cy.newInstance({direction:[1,0,0],...i}).getOutputData();e.config.recenter?Sy(o):Ty(o,0,i.invert),_y(o,...i.color),i={...e.config,...e.yConfig};const a=Cy.newInstance({direction:[0,1,0],...i}).getOutputData();e.config.recenter?Sy(a):Ty(a,1,i.invert),_y(a,...i.color),i={...e.config,...e.zConfig};const s=Cy.newInstance({direction:[0,0,1],...i}).getOutputData();e.config.recenter?Sy(s):Ty(s,2,i.invert),_y(s,...i.color);const c=zk.newInstance();c.setInputData(o),c.addInputData(a),c.addInputData(s),r.setInputConnection(c.getOutputPort())},t.update();const n=W.debounce(t.update,0);t.setXAxisColor=i=>t.setXConfig({...t.getXConfig(),color:i}),t.setYAxisColor=i=>t.setYConfig({...t.getYConfig(),color:i}),t.setZAxisColor=i=>t.setZConfig({...t.getZConfig(),color:i}),t.getXAxisColor=()=>e.getXConfig().color,t.getYAxisColor=()=>e.getYConfig().color,t.getZAxisColor=()=>e.getZConfig().color,e._onConfigChanged=n,e._onXConfigChanged=n,e._onYConfigChanged=n,e._onZConfigChanged=n}function eve(t){return{config:{recenter:!0,tipResolution:60,tipRadius:.1,tipLength:.2,shaftResolution:60,shaftRadius:.03,invert:!1,...t==null?void 0:t.config},xConfig:{color:[255,0,0],invert:!1,...t==null?void 0:t.xConfig},yConfig:{color:[255,255,0],invert:!1,...t==null?void 0:t.yConfig},zConfig:{color:[0,128,0],invert:!1,...t==null?void 0:t.zConfig}}}function Kk(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};ca.extend(t,e,eve(r)),W.setGet(t,e,["config","xConfig","yConfig","zConfig"]),Q2e(t,e)}const tve=W.newInstance(Kk,"vtkAxesActor");var nve={newInstance:tve,extend:Kk},qk={exports:{}};(function(t,e){(function(r,n){t.exports=n()})(Dr,function(){return function(r){var n={};function i(o){if(n[o])return n[o].exports;var a=n[o]={i:o,l:!1,exports:{}};return r[o].call(a.exports,a,a.exports,i),a.l=!0,a.exports}return i.m=r,i.c=n,i.d=function(o,a,s){i.o(o,a)||Object.defineProperty(o,a,{enumerable:!0,get:s})},i.r=function(o){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},i.t=function(o,a){if(1&a&&(o=i(o)),8&a||4&a&&typeof o=="object"&&o&&o.__esModule)return o;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:o}),2&a&&typeof o!="string")for(var c in o)i.d(s,c,(function(l){return o[l]}).bind(null,c));return s},i.n=function(o){var a=o&&o.__esModule?function(){return o.default}:function(){return o};return i.d(a,"a",a),a},i.o=function(o,a){return Object.prototype.hasOwnProperty.call(o,a)},i.p="",i(i.s=184)}([function(r,n,i){function o(a){for(var s in a)n.hasOwnProperty(s)||(n[s]=a[s])}Object.defineProperty(n,"__esModule",{value:!0}),o(i(240)),o(i(251)),o(i(175)),o(i(107)),o(i(29)),o(i(73)),o(i(106)),o(i(30)),o(i(252)),o(i(52)),o(i(97)),o(i(253)),o(i(37)),o(i(51)),o(i(173)),o(i(176)),o(i(172)),o(i(108)),o(i(254)),o(i(255)),o(i(256)),o(i(72)),o(i(177)),o(i(105)),o(i(17)),o(i(257)),o(i(12)),o(i(174))},function(r,n,i){var o=this&&this.__values||function(y){var w=typeof Symbol=="function"&&Symbol.iterator,C=w&&y[w],S=0;if(C)return C.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&S>=y.length&&(y=void 0),{value:y&&y[S++],done:!y}}};throw new TypeError(w?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(212);n.FixedSizeSet=a.FixedSizeSet;var s=i(213);n.ObjectCache=s.ObjectCache;var c=i(214);n.CompareCache=c.CompareCache;var l=i(215);n.Lazy=l.Lazy;var f=i(216);function u(y,w,C){if(x(y))y.forEach(function(T,_){return w.call(C,_,T)});else for(var S in y)y.hasOwnProperty(S)&&w.call(C,S,y[S])}function d(y){var w,C;if(h(y))return y;if(p(y)){var S=[];try{for(var T=o(y),_=T.next();!_.done;_=T.next()){var E=_.value;S.push(d(E))}}catch(I){w={error:I}}finally{try{_&&!_.done&&(C=T.return)&&C.call(T)}finally{if(w)throw w.error}}return S}if(g(y)){S={};for(var D in y)if(y.hasOwnProperty(D)){var b=y[D];S[D]=d(b)}return S}return y}function h(y){return!!y&&Object.prototype.toString.call(y)==="[object Function]"}function g(y){var w=typeof y;return!!y&&(w==="function"||w==="object")}function p(y){return Array.isArray(y)}function v(y){return y instanceof Set}function x(y){return y instanceof Map}function m(y){if(g(y)){var w=Object.getPrototypeOf(y),C=w.constructor;return w&&C&&typeof C=="function"&&C instanceof C&&Function.prototype.toString.call(C)===Function.prototype.toString.call(Object)}return!1}n.StringWalker=f.StringWalker,n.applyMixin=function(y,w){for(var C=[],S=2;S>6|192;else{if(T>55295&&T<56320){if(++S>=y.length)throw new Error("Incomplete surrogate pair.");var _=y.charCodeAt(S);if(_<56320||_>57343)throw new Error("Invalid surrogate character.");T=65536+((1023&T)<<10)+(1023&_),w[C++]=T>>18|240,w[C++]=T>>12&63|128}else w[C++]=T>>12|224;w[C++]=T>>6&63|128}w[C++]=63&T|128}}return w.subarray(0,C)},n.utf8Decode=function(y){for(var w="",C=0;C127)if(S>191&&S<224){if(C>=y.length)throw new Error("Incomplete 2-byte sequence.");S=(31&S)<<6|63&y[C++]}else if(S>223&&S<240){if(C+1>=y.length)throw new Error("Incomplete 3-byte sequence.");S=(15&S)<<12|(63&y[C++])<<6|63&y[C++]}else{if(!(S>239&&S<248))throw new Error("Unknown multi-byte start.");if(C+2>=y.length)throw new Error("Incomplete 4-byte sequence.");S=(7&S)<<18|(63&y[C++])<<12|(63&y[C++])<<6|63&y[C++]}if(S<=65535)w+=String.fromCharCode(S);else{if(!(S<=1114111))throw new Error("Code point exceeds UTF-16 limit.");S-=65536,w+=String.fromCharCode(S>>10|55296),w+=String.fromCharCode(1023&S|56320)}}return w}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),function(o){o[o.Before=0]="Before",o[o.Equal=1]="Equal",o[o.After=2]="After"}(n.BoundaryPosition||(n.BoundaryPosition={})),function(o){o[o.None=0]="None",o[o.Capturing=1]="Capturing",o[o.AtTarget=2]="AtTarget",o[o.Bubbling=3]="Bubbling"}(n.EventPhase||(n.EventPhase={})),function(o){o[o.Element=1]="Element",o[o.Attribute=2]="Attribute",o[o.Text=3]="Text",o[o.CData=4]="CData",o[o.EntityReference=5]="EntityReference",o[o.Entity=6]="Entity",o[o.ProcessingInstruction=7]="ProcessingInstruction",o[o.Comment=8]="Comment",o[o.Document=9]="Document",o[o.DocumentType=10]="DocumentType",o[o.DocumentFragment=11]="DocumentFragment",o[o.Notation=12]="Notation"}(n.NodeType||(n.NodeType={})),function(o){o[o.Disconnected=1]="Disconnected",o[o.Preceding=2]="Preceding",o[o.Following=4]="Following",o[o.Contains=8]="Contains",o[o.ContainedBy=16]="ContainedBy",o[o.ImplementationSpecific=32]="ImplementationSpecific"}(n.Position||(n.Position={})),function(o){o[o.Accept=1]="Accept",o[o.Reject=2]="Reject",o[o.Skip=3]="Skip"}(n.FilterResult||(n.FilterResult={})),function(o){o[o.All=4294967295]="All",o[o.Element=1]="Element",o[o.Attribute=2]="Attribute",o[o.Text=4]="Text",o[o.CDataSection=8]="CDataSection",o[o.EntityReference=16]="EntityReference",o[o.Entity=32]="Entity",o[o.ProcessingInstruction=64]="ProcessingInstruction",o[o.Comment=128]="Comment",o[o.Document=256]="Document",o[o.DocumentType=512]="DocumentType",o[o.DocumentFragment=1024]="DocumentFragment",o[o.Notation=2048]="Notation"}(n.WhatToShow||(n.WhatToShow={})),function(o){o[o.StartToStart=0]="StartToStart",o[o.StartToEnd=1]="StartToEnd",o[o.EndToEnd=2]="EndToEnd",o[o.EndToStart=3]="EndToStart"}(n.HowToCompare||(n.HowToCompare={}))},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(241);n.Cast=o.Cast;var a=i(150);n.Guard=a.Guard;var s=i(242);n.EmptySet=s.EmptySet},function(r,n,i){var o=i(11),a=i(55).f,s=i(21),c=i(25),l=i(80),f=i(119),u=i(123);r.exports=function(d,h){var g,p,v,x,m,y=d.target,w=d.global,C=d.stat;if(g=w?o:C?o[y]||l(y,{}):(o[y]||{}).prototype)for(p in h){if(x=h[p],v=d.noTargetGet?(m=a(g,p))&&m.value:g[p],!u(w?p:y+(C?".":"#")+p,d.forced)&&v!==void 0){if(typeof x==typeof v)continue;f(x,v)}(d.sham||v&&v.sham)&&s(x,"sham",!0),c(g,p,x,d)}}},function(r,n,i){var o=i(11),a=i(81),s=i(14),c=i(58),l=i(86),f=i(124),u=a("wks"),d=o.Symbol,h=f?d:d&&d.withoutSetter||c;r.exports=function(g){return s(u,g)||(l&&s(d,g)?u[g]=d[g]:u[g]=h("Symbol."+g)),u[g]}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(1),a=i(29),s=function(){function c(){this._features={mutationObservers:!0,customElements:!0,slots:!0,steps:!0},this._window=null,this._compareCache=new o.CompareCache,this._rangeList=new o.FixedSizeSet}return c.prototype.setFeatures=function(l){if(l===void 0&&(l=!0),o.isObject(l))for(var f in l)this._features[f]=l[f]||!1;else for(var f in this._features)this._features[f]=l},Object.defineProperty(c.prototype,"features",{get:function(){return this._features},enumerable:!0,configurable:!0}),Object.defineProperty(c.prototype,"window",{get:function(){return this._window===null&&(this._window=a.create_window()),this._window},enumerable:!0,configurable:!0}),Object.defineProperty(c.prototype,"compareCache",{get:function(){return this._compareCache},enumerable:!0,configurable:!0}),Object.defineProperty(c.prototype,"rangeList",{get:function(){return this._rangeList},enumerable:!0,configurable:!0}),Object.defineProperty(c,"instance",{get:function(){return c._instance||(c._instance=new c),c._instance},enumerable:!0,configurable:!0}),c}();n.dom=s.instance},function(r,n,i){var o=this&&this.__importStar||function(m){if(m&&m.__esModule)return m;var y={};if(m!=null)for(var w in m)Object.hasOwnProperty.call(m,w)&&(y[w]=m[w]);return y.default=m,y};Object.defineProperty(n,"__esModule",{value:!0});var a=o(i(228));n.base64=a;var s=o(i(146));n.byte=s;var c=o(i(147));n.byteSequence=c;var l=o(i(96));n.codePoint=l;var f=o(i(232));n.json=f;var u=o(i(233));n.list=u;var d=o(i(234));n.map=d;var h=o(i(235));n.namespace=h;var g=o(i(236));n.queue=g;var p=o(i(237));n.set=p;var v=o(i(238));n.stack=v;var x=o(i(239));n.string=x},function(r,n){r.exports=function(i){try{return!!i()}catch{return!0}}},function(r,n,i){var o,a=this&&this.__extends||(o=function(P,N){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(V,$){V.__proto__=$}||function(V,$){for(var H in $)$.hasOwnProperty(H)&&(V[H]=$[H])})(P,N)},function(P,N){function V(){this.constructor=P}o(P,N),P.prototype=N===null?Object.create(N):(V.prototype=N.prototype,new V)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(P){function N(V,$){$===void 0&&($="");var H=P.call(this,$)||this;return H.name=V,H}return a(N,P),N}(Error);n.DOMException=s;var c=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"DOMStringSizeError",V)||this}return a(N,P),N}(s);n.DOMStringSizeError=c;var l=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"WrongDocumentError","The object is in the wrong document. "+V)||this}return a(N,P),N}(s);n.WrongDocumentError=l;var f=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NoDataAllowedError",V)||this}return a(N,P),N}(s);n.NoDataAllowedError=f;var u=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NoModificationAllowedError","The object can not be modified. "+V)||this}return a(N,P),N}(s);n.NoModificationAllowedError=u;var d=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NotSupportedError","The operation is not supported. "+V)||this}return a(N,P),N}(s);n.NotSupportedError=d;var h=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InUseAttributeError",V)||this}return a(N,P),N}(s);n.InUseAttributeError=h;var g=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InvalidStateError","The object is in an invalid state. "+V)||this}return a(N,P),N}(s);n.InvalidStateError=g;var p=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InvalidModificationError","The object can not be modified in this way. "+V)||this}return a(N,P),N}(s);n.InvalidModificationError=p;var v=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NamespaceError","The operation is not allowed by Namespaces in XML. [XMLNS] "+V)||this}return a(N,P),N}(s);n.NamespaceError=v;var x=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InvalidAccessError","The object does not support the operation or argument. "+V)||this}return a(N,P),N}(s);n.InvalidAccessError=x;var m=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"ValidationError",V)||this}return a(N,P),N}(s);n.ValidationError=m;var y=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"TypeMismatchError",V)||this}return a(N,P),N}(s);n.TypeMismatchError=y;var w=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"SecurityError","The operation is insecure. "+V)||this}return a(N,P),N}(s);n.SecurityError=w;var C=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NetworkError","A network error occurred. "+V)||this}return a(N,P),N}(s);n.NetworkError=C;var S=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"AbortError","The operation was aborted. "+V)||this}return a(N,P),N}(s);n.AbortError=S;var T=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"URLMismatchError","The given URL does not match another URL. "+V)||this}return a(N,P),N}(s);n.URLMismatchError=T;var _=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"QuotaExceededError","The quota has been exceeded. "+V)||this}return a(N,P),N}(s);n.QuotaExceededError=_;var E=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"TimeoutError","The operation timed out. "+V)||this}return a(N,P),N}(s);n.TimeoutError=E;var D=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InvalidNodeTypeError","The supplied node is incorrect or has an incorrect ancestor for this operation. "+V)||this}return a(N,P),N}(s);n.InvalidNodeTypeError=D;var b=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"DataCloneError","The object can not be cloned. "+V)||this}return a(N,P),N}(s);n.DataCloneError=b;var I=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NotImplementedError","The DOM method is not implemented by this module. "+V)||this}return a(N,P),N}(s);n.NotImplementedError=I;var R=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"HierarchyRequestError","The operation would yield an incorrect node tree. "+V)||this}return a(N,P),N}(s);n.HierarchyRequestError=R;var M=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"NotFoundError","The object can not be found here. "+V)||this}return a(N,P),N}(s);n.NotFoundError=M;var L=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"IndexSizeError","The index is not in the allowed range. "+V)||this}return a(N,P),N}(s);n.IndexSizeError=L;var A=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"SyntaxError","The string did not match the expected pattern. "+V)||this}return a(N,P),N}(s);n.SyntaxError=A;var G=function(P){function N(V){return V===void 0&&(V=""),P.call(this,"InvalidCharacterError","The string contains invalid characters. "+V)||this}return a(N,P),N}(s);n.InvalidCharacterError=G},function(r,n,i){var o=i(53),a=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],s=["scalar","sequence","mapping"];r.exports=function(c,l){var f,u;if(l=l||{},Object.keys(l).forEach(function(d){if(a.indexOf(d)===-1)throw new o('Unknown option "'+d+'" is met in definition of "'+c+'" YAML type.')}),this.tag=c,this.kind=l.kind||null,this.resolve=l.resolve||function(){return!0},this.construct=l.construct||function(d){return d},this.instanceOf=l.instanceOf||null,this.predicate=l.predicate||null,this.represent=l.represent||null,this.defaultStyle=l.defaultStyle||null,this.styleAliases=(f=l.styleAliases||null,u={},f!==null&&Object.keys(f).forEach(function(d){f[d].forEach(function(h){u[String(h)]=d})}),u),s.indexOf(this.kind)===-1)throw new o('Unknown kind "'+this.kind+'" is specified for "'+c+'" YAML type.')}},function(r,n,i){(function(o){var a=function(s){return s&&s.Math==Math&&s};r.exports=a(typeof globalThis=="object"&&globalThis)||a(typeof window=="object"&&window)||a(typeof self=="object"&&self)||a(typeof o=="object"&&o)||Function("return this")()}).call(this,i(78))},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),n.idl_defineConst=function(o,a,s){Object.defineProperty(o,a,{writable:!1,enumerable:!0,configurable:!1,value:s})}},function(r,n){r.exports=function(i){return typeof i=="object"?i!==null:typeof i=="function"}},function(r,n){var i={}.hasOwnProperty;r.exports=function(o,a){return i.call(o,a)}},function(r,n,i){var o=i(16),a=i(115),s=i(18),c=i(56),l=Object.defineProperty;n.f=o?l:function(f,u,d){if(s(f),u=c(u,!0),s(d),a)try{return l(f,u,d)}catch{}if("get"in d||"set"in d)throw TypeError("Accessors not supported");return"value"in d&&(f[u]=d.value),f}},function(r,n,i){var o=i(8);r.exports=!o(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},function(r,n,i){var o=this&&this.__values||function(y){var w=typeof Symbol=="function"&&Symbol.iterator,C=w&&y[w],S=0;if(C)return C.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&S>=y.length&&(y=void 0),{value:y&&y[S++],done:!y}}};throw new TypeError(w?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(3),s=i(2);function c(y,w,C){if(C===void 0&&(C=!1),C&&a.Guard.isElementNode(w)&&a.Guard.isShadowRoot(w.shadowRoot)&&w.shadowRoot._firstChild)return w.shadowRoot._firstChild;if(w._firstChild)return w._firstChild;if(w===y)return null;if(w._nextSibling)return w._nextSibling;for(var S=w._parent;S&&S!==y;){if(S._nextSibling)return S._nextSibling;S=S._parent}return null}function l(){var y;return(y={})[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:null}}}},y}function f(y,w,C,S){w===void 0&&(w=!1),C===void 0&&(C=!1);for(var T=w?y:c(y,y,C);T&&S&&!S(T);)T=c(y,T,C);return T}function u(y,w,C,S,T){S===void 0&&(S=!1);for(var _=c(y,w,S);_&&T&&!T(_);)_=c(y,_,S);return _}function d(y,w,C,S){var T;return w===void 0&&(w=!1),C===void 0&&(C=!1),w||y._children.size!==0?((T={})[Symbol.iterator]=function(){var _=w?y:c(y,y,C);return{next:function(){for(;_&&S&&!S(_);)_=c(y,_,C);if(_===null)return{done:!0,value:null};var E={done:!1,value:_};return _=c(y,_,C),E}}},T):l()}function h(y,w,C){w===void 0&&(w=!1);for(var S=w?y:y._parent;S&&C&&!C(S);)S=S._parent;return S}function g(y,w,C,S){for(var T=w._parent;T&&S&&!S(T);)T=T._parent;return T}function p(y){return a.Guard.isDocumentTypeNode(y)?0:a.Guard.isCharacterDataNode(y)?y._data.length:y._children.size}function v(y,w){if(w===void 0&&(w=!1),w){var C=v(y,!1);return a.Guard.isShadowRoot(C)?v(C._host,!0):C}return y._parent?v(y._parent):y}function x(y,w,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=C?y:S&&a.Guard.isShadowRoot(y)?y._host:y._parent;T!==null;){if(T===w)return!0;T=S&&a.Guard.isShadowRoot(T)?T._host:T._parent}return!1}function m(y){for(var w=v(y),C=0,S=f(w);S!==null;){if(C++,S===y)return C;S=u(w,S)}return-1}n.tree_getFirstDescendantNode=f,n.tree_getNextDescendantNode=u,n.tree_getDescendantNodes=d,n.tree_getDescendantElements=function(y,w,C,S){var T;return w===void 0&&(w=!1),C===void 0&&(C=!1),w||y._children.size!==0?((T={})[Symbol.iterator]=function(){var _=d(y,w,C,function(D){return a.Guard.isElementNode(D)})[Symbol.iterator](),E=_.next().value;return{next:function(){for(;E&&S&&!S(E);)E=_.next().value;if(E===null)return{done:!0,value:null};var D={done:!1,value:E};return E=_.next().value,D}}},T):l()},n.tree_getSiblingNodes=function(y,w,C){var S;return w===void 0&&(w=!1),y._parent&&y._parent._children.size!==0?((S={})[Symbol.iterator]=function(){var T=y._parent?y._parent._firstChild:null;return{next:function(){for(;T&&(C&&!C(T)||!w&&T===y);)T=T._nextSibling;if(T===null)return{done:!0,value:null};var _={done:!1,value:T};return T=T._nextSibling,_}}},S):l()},n.tree_getFirstAncestorNode=h,n.tree_getNextAncestorNode=g,n.tree_getAncestorNodes=function(y,w,C){var S;return w===void 0&&(w=!1),w||y._parent?((S={})[Symbol.iterator]=function(){var T=h(y,w,C);return{next:function(){if(T===null)return{done:!0,value:null};var _={done:!1,value:T};return T=g(0,T,w,C),_}}},S):l()},n.tree_getCommonAncestor=function(y,w){if(y===w)return y._parent;for(var C=[],S=[],T=h(y,!0);T!==null;)C.push(T),T=g(0,T);for(var _=h(w,!0);_!==null;)S.push(_),_=g(0,_);for(var E=C.length,D=S.length,b=null,I=Math.min(E,D);I>0;I--){var R=C[--E];if(R!==S[--D])break;b=R}return b},n.tree_getFollowingNode=function(y,w){if(w._firstChild)return w._firstChild;if(w._nextSibling)return w._nextSibling;for(;;){var C=w._parent;if(C===null||C===y)return null;if(C._nextSibling)return C._nextSibling;w=C}},n.tree_getPrecedingNode=function(y,w){return w===y?null:w._previousSibling?(w=w._previousSibling)._lastChild?w._lastChild:w:w._parent},n.tree_isConstrained=function y(w){var C,S,T,_,E,D;switch(w._nodeType){case s.NodeType.Document:var b=!1,I=!1;try{for(var R=o(w._children),M=R.next();!M.done;M=R.next())switch(M.value._nodeType){case s.NodeType.ProcessingInstruction:case s.NodeType.Comment:break;case s.NodeType.DocumentType:if(b||I)return!1;b=!0;break;case s.NodeType.Element:if(I)return!1;I=!0;break;default:return!1}}catch(N){C={error:N}}finally{try{M&&!M.done&&(S=R.return)&&S.call(R)}finally{if(C)throw C.error}}break;case s.NodeType.DocumentFragment:case s.NodeType.Element:try{for(var L=o(w._children),A=L.next();!A.done;A=L.next())switch(A.value._nodeType){case s.NodeType.Element:case s.NodeType.Text:case s.NodeType.ProcessingInstruction:case s.NodeType.CData:case s.NodeType.Comment:break;default:return!1}}catch(N){T={error:N}}finally{try{A&&!A.done&&(_=L.return)&&_.call(L)}finally{if(T)throw T.error}}break;case s.NodeType.DocumentType:case s.NodeType.Text:case s.NodeType.ProcessingInstruction:case s.NodeType.CData:case s.NodeType.Comment:return!w.hasChildNodes()}try{for(var G=o(w._children),P=G.next();!P.done;P=G.next())if(!y(P.value))return!1}catch(N){E={error:N}}finally{try{P&&!P.done&&(D=G.return)&&D.call(G)}finally{if(E)throw E.error}}return!0},n.tree_nodeLength=p,n.tree_isEmpty=function(y){return p(y)===0},n.tree_rootNode=v,n.tree_isDescendantOf=function(y,w,C,S){C===void 0&&(C=!1),S===void 0&&(S=!1);for(var T=f(y,C,S);T!==null;){if(T===w)return!0;T=u(y,T,C,S)}return!1},n.tree_isAncestorOf=x,n.tree_isHostIncludingAncestorOf=function y(w,C,S){if(S===void 0&&(S=!1),x(w,C,S))return!0;var T=v(w);return!(!a.Guard.isDocumentFragmentNode(T)||T._host===null||!y(T._host,C,S))},n.tree_isSiblingOf=function(y,w,C){return C===void 0&&(C=!1),y!==w?y._parent!==null&&y._parent===w._parent:!!C},n.tree_isPreceding=function(y,w){var C=m(y),S=m(w);return C!==-1&&S!==-1&&v(y)===v(w)&&SC},n.tree_isParentOf=function(y,w){return y._parent===w},n.tree_isChildOf=function(y,w){return w._parent===y},n.tree_previousSibling=function(y){return y._previousSibling},n.tree_nextSibling=function(y){return y._nextSibling},n.tree_firstChild=function(y){return y._firstChild},n.tree_lastChild=function(y){return y._lastChild},n.tree_treePosition=m,n.tree_index=function(y){for(var w=0;y._previousSibling!==null;)w++,y=y._previousSibling;return w},n.tree_retarget=function(y,w){for(;;){if(!y||!a.Guard.isNode(y))return y;var C=v(y);if(!a.Guard.isShadowRoot(C)||w&&a.Guard.isNode(w)&&x(C,w,!0,!0))return y;y=C.host}}},function(r,n,i){var o=i(13);r.exports=function(a){if(!o(a))throw TypeError(String(a)+" is not an object");return a}},function(r,n,i){var o=i(24),a=i(130),s=i(49),c=i(43),l=i(88),f=c.set,u=c.getterFor("Array Iterator");r.exports=l(Array,"Array",function(d,h){f(this,{type:"Array Iterator",target:o(d),index:0,kind:h})},function(){var d=u(this),h=d.target,g=d.kind,p=d.index++;return!h||p>=h.length?(d.target=void 0,{value:void 0,done:!0}):g=="keys"?{value:p,done:!1}:g=="values"?{value:h[p],done:!1}:{value:[p,h[p]],done:!1}},"values"),s.Arguments=s.Array,a("keys"),a("values"),a("entries")},function(r,n,i){var o=i(90),a=i(25),s=i(202);o||a(Object.prototype,"toString",s,{unsafe:!0})},function(r,n,i){var o=i(16),a=i(15),s=i(40);r.exports=o?function(c,l,f){return a.f(c,l,s(1,f))}:function(c,l,f){return c[l]=f,c}},function(r,n,i){var o=i(137).charAt,a=i(43),s=i(88),c=a.set,l=a.getterFor("String Iterator");s(String,"String",function(f){c(this,{type:"String Iterator",string:String(f),index:0})},function(){var f,u=l(this),d=u.string,h=u.index;return h>=d.length?{value:void 0,done:!0}:(f=o(d,h),u.index+=f.length,{value:f,done:!1})})},function(r,n,i){var o=i(11),a=i(203),s=i(19),c=i(21),l=i(5),f=l("iterator"),u=l("toStringTag"),d=s.values;for(var h in a){var g=o[h],p=g&&g.prototype;if(p){if(p[f]!==d)try{c(p,f,d)}catch{p[f]=d}if(p[u]||c(p,u,h),a[h]){for(var v in s)if(p[v]!==s[v])try{c(p,v,s[v])}catch{p[v]=s[v]}}}}},function(r,n,i){var o=i(41),a=i(35);r.exports=function(s){return o(a(s))}},function(r,n,i){var o=i(11),a=i(21),s=i(14),c=i(80),l=i(117),f=i(43),u=f.get,d=f.enforce,h=String(String).split("String");(r.exports=function(g,p,v,x){var m=!!x&&!!x.unsafe,y=!!x&&!!x.enumerable,w=!!x&&!!x.noTargetGet;typeof v=="function"&&(typeof p!="string"||s(v,"name")||a(v,"name",p),d(v).source=h.join(typeof p=="string"?p:"")),g!==o?(m?!w&&g[p]&&(y=!0):delete g[p],y?g[p]=v:a(g,p,v)):y?g[p]=v:c(p,v)})(Function.prototype,"toString",function(){return typeof this=="function"&&u(this).source||l(this)})},function(r,n,i){var o=i(47),a=Math.min;r.exports=function(s){return s>0?a(o(s),9007199254740991):0}},function(r,n,i){var o=i(35);r.exports=function(a){return Object(o(a))}},function(r,n,i){var o=i(16),a=i(8),s=i(14),c=Object.defineProperty,l={},f=function(u){throw u};r.exports=function(u,d){if(s(l,u))return l[u];d||(d={});var h=[][u],g=!!s(d,"ACCESSORS")&&d.ACCESSORS,p=s(d,0)?d[0]:f,v=s(d,1)?d[1]:void 0;return l[u]=!!h&&!a(function(){if(g&&!o)return!0;var x={length:-1};g?c(x,1,{enumerable:!0,get:f}):x[1]=1,h.call(x,p,v)})}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(148),a=i(149),s=i(151),c=i(98),l=i(153),f=i(154),u=i(155),d=i(99),h=i(100),g=i(156),p=i(157),v=i(101),x=i(158),m=i(159),y=i(160),w=i(161),C=i(162),S=i(163),T=i(164),_=i(165),E=i(166),D=i(167),b=i(168),I=i(169),R=i(170);n.create_domImplementation=function(M){return o.DOMImplementationImpl._create(M)},n.create_window=function(){return a.WindowImpl._create()},n.create_xmlDocument=function(){return new s.XMLDocumentImpl},n.create_document=function(){return new c.DocumentImpl},n.create_abortController=function(){return new l.AbortControllerImpl},n.create_abortSignal=function(){return f.AbortSignalImpl._create()},n.create_documentType=function(M,L,A,G){return u.DocumentTypeImpl._create(M,L,A,G)},n.create_element=function(M,L,A,G){return d.ElementImpl._create(M,L,A,G)},n.create_htmlElement=function(M,L,A,G){return d.ElementImpl._create(M,L,A,G)},n.create_htmlUnknownElement=function(M,L,A,G){return d.ElementImpl._create(M,L,A,G)},n.create_documentFragment=function(M){return h.DocumentFragmentImpl._create(M)},n.create_shadowRoot=function(M,L){return g.ShadowRootImpl._create(M,L)},n.create_attr=function(M,L){return p.AttrImpl._create(M,L)},n.create_text=function(M,L){return v.TextImpl._create(M,L)},n.create_cdataSection=function(M,L){return x.CDATASectionImpl._create(M,L)},n.create_comment=function(M,L){return m.CommentImpl._create(M,L)},n.create_processingInstruction=function(M,L,A){return y.ProcessingInstructionImpl._create(M,L,A)},n.create_htmlCollection=function(M,L){return L===void 0&&(L=function(){return!0}),w.HTMLCollectionImpl._create(M,L)},n.create_nodeList=function(M){return C.NodeListImpl._create(M)},n.create_nodeListStatic=function(M,L){return S.NodeListStaticImpl._create(M,L)},n.create_namedNodeMap=function(M){return T.NamedNodeMapImpl._create(M)},n.create_range=function(M,L){return _.RangeImpl._create(M,L)},n.create_nodeIterator=function(M,L,A){return E.NodeIteratorImpl._create(M,L,A)},n.create_treeWalker=function(M,L){return D.TreeWalkerImpl._create(M,L)},n.create_nodeFilter=function(){return b.NodeFilterImpl._create()},n.create_mutationRecord=function(M,L,A,G,P,N,V,$,H){return I.MutationRecordImpl._create(M,L,A,G,P,N,V,$,H)},n.create_domTokenList=function(M,L){return R.DOMTokenListImpl._create(M,L)}},function(r,n,i){var o=this&&this.__values||function(p){var v=typeof Symbol=="function"&&Symbol.iterator,x=v&&p[v],m=0;if(x)return x.call(p);if(p&&typeof p.length=="number")return{next:function(){return p&&m>=p.length&&(p=void 0),{value:p&&p[m++],done:!p}}};throw new TypeError(v?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(17),c=i(3),l=i(72),f=new Map;function u(p,v){if(v!==p._root&&s.tree_isAncestorOf(p._reference,v,!0)){if(p._pointerBeforeReference)for(;;){var x=s.tree_getFollowingNode(p._root,v);if(x!==null&&s.tree_isDescendantOf(p._root,x,!0)&&!s.tree_isDescendantOf(v,x,!0))return void(p._reference=x);if(x===null)return void(p._pointerBeforeReference=!1)}if(v._previousSibling===null)v._parent!==null&&(p._reference=v._parent);else{for(var m=v._previousSibling,y=s.tree_getFirstDescendantNode(v._previousSibling,!0,!1);y!==null;)y!==null&&(m=y),y=s.tree_getNextDescendantNode(v._previousSibling,y,!0,!1);p._reference=m}}}function d(p,v,x,m,y){if(c.Guard.isSlot(p)&&v==="name"&&y===null){if(m===x||m===null&&x===""||m===""&&x===null)return;p._name=m===null||m===""?"":m,l.shadowTree_assignSlotablesForATree(s.tree_rootNode(p))}}function h(p,v,x,m,y){if(c.Guard.isSlotable(p)&&v==="slot"&&y===null){if(m===x||m===null&&x===""||m===""&&x===null)return;p._name=m===null||m===""?"":m,l.shadowTree_isAssigned(p)&&l.shadowTree_assignSlotables(p._assignedSlot),l.shadowTree_assignASlot(p)}}function g(p,v,x,m){v==="id"&&m===null&&(p._uniqueIdentifier=x||void 0)}n.dom_runRemovingSteps=function(p,v){},n.dom_runCloningSteps=function(p,v,x,m){},n.dom_runAdoptingSteps=function(p,v){},n.dom_runAttributeChangeSteps=function(p,v,x,m,y){var w,C;a.dom.features.slots&&(h.call(p,p,v,x,m,y),d.call(p,p,v,x,m,y)),g.call(p,p,v,m,y);try{for(var S=o(p._attributeChangeSteps),T=S.next();!T.done;T=S.next())T.value.call(p,p,v,x,m,y)}catch(_){w={error:_}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(w)throw w.error}}},n.dom_runInsertionSteps=function(p){},n.dom_runNodeIteratorPreRemovingSteps=function(p,v){u.call(p,p,v)},n.dom_hasSupportedTokens=function(p){return f.has(p)},n.dom_getSupportedTokens=function(p){return f.get(p)||new Set},n.dom_runEventConstructingSteps=function(p){},n.dom_runChildTextContentChangeSteps=function(p){}},function(r,n,i){var o=i(4),a=i(11),s=i(46),c=i(44),l=i(16),f=i(86),u=i(124),d=i(8),h=i(14),g=i(59),p=i(13),v=i(18),x=i(27),m=i(24),y=i(56),w=i(40),C=i(60),S=i(61),T=i(82),_=i(190),E=i(85),D=i(55),b=i(15),I=i(79),R=i(21),M=i(25),L=i(81),A=i(57),G=i(45),P=i(58),N=i(5),V=i(125),$=i(126),H=i(62),Y=i(43),ne=i(36).forEach,Q=A("hidden"),ee=N("toPrimitive"),de=Y.set,fe=Y.getterFor("Symbol"),le=Object.prototype,k=a.Symbol,O=s("JSON","stringify"),B=D.f,U=b.f,z=_.f,j=I.f,K=L("symbols"),ae=L("op-symbols"),he=L("string-to-symbol-registry"),ye=L("symbol-to-string-registry"),Te=L("wks"),q=a.QObject,J=!q||!q.prototype||!q.prototype.findChild,ie=l&&d(function(){return C(U({},"a",{get:function(){return U(this,"a",{value:7}).a}})).a!=7})?function(Ee,Me,Re){var We=B(le,Me);We&&delete le[Me],U(Ee,Me,Re),We&&Ee!==le&&U(le,Me,We)}:U,Z=function(Ee,Me){var Re=K[Ee]=C(k.prototype);return de(Re,{type:"Symbol",tag:Ee,description:Me}),l||(Re.description=Me),Re},te=u?function(Ee){return typeof Ee=="symbol"}:function(Ee){return Object(Ee)instanceof k},me=function(Ee,Me,Re){Ee===le&&me(ae,Me,Re),v(Ee);var We=y(Me,!0);return v(Re),h(K,We)?(Re.enumerable?(h(Ee,Q)&&Ee[Q][We]&&(Ee[Q][We]=!1),Re=C(Re,{enumerable:w(0,!1)})):(h(Ee,Q)||U(Ee,Q,w(1,{})),Ee[Q][We]=!0),ie(Ee,We,Re)):U(Ee,We,Re)},X=function(Ee,Me){v(Ee);var Re=m(Me),We=S(Re).concat(ue(Re));return ne(We,function(ut){l&&!Ae.call(Re,ut)||me(Ee,ut,Re[ut])}),Ee},Ae=function(Ee){var Me=y(Ee,!0),Re=j.call(this,Me);return!(this===le&&h(K,Me)&&!h(ae,Me))&&(!(Re||!h(this,Me)||!h(K,Me)||h(this,Q)&&this[Q][Me])||Re)},Be=function(Ee,Me){var Re=m(Ee),We=y(Me,!0);if(Re!==le||!h(K,We)||h(ae,We)){var ut=B(Re,We);return!ut||!h(K,We)||h(Re,Q)&&Re[Q][We]||(ut.enumerable=!0),ut}},Ve=function(Ee){var Me=z(m(Ee)),Re=[];return ne(Me,function(We){h(K,We)||h(G,We)||Re.push(We)}),Re},ue=function(Ee){var Me=Ee===le,Re=z(Me?ae:m(Ee)),We=[];return ne(Re,function(ut){!h(K,ut)||Me&&!h(le,ut)||We.push(K[ut])}),We};f||(M((k=function(){if(this instanceof k)throw TypeError("Symbol is not a constructor");var Ee=arguments.length&&arguments[0]!==void 0?String(arguments[0]):void 0,Me=P(Ee),Re=function(We){this===le&&Re.call(ae,We),h(this,Q)&&h(this[Q],Me)&&(this[Q][Me]=!1),ie(this,Me,w(1,We))};return l&&J&&ie(le,Me,{configurable:!0,set:Re}),Z(Me,Ee)}).prototype,"toString",function(){return fe(this).tag}),M(k,"withoutSetter",function(Ee){return Z(P(Ee),Ee)}),I.f=Ae,b.f=me,D.f=Be,T.f=_.f=Ve,E.f=ue,V.f=function(Ee){return Z(N(Ee),Ee)},l&&(U(k.prototype,"description",{configurable:!0,get:function(){return fe(this).description}}),c||M(le,"propertyIsEnumerable",Ae,{unsafe:!0}))),o({global:!0,wrap:!0,forced:!f,sham:!f},{Symbol:k}),ne(S(Te),function(Ee){$(Ee)}),o({target:"Symbol",stat:!0,forced:!f},{for:function(Ee){var Me=String(Ee);if(h(he,Me))return he[Me];var Re=k(Me);return he[Me]=Re,ye[Re]=Me,Re},keyFor:function(Ee){if(!te(Ee))throw TypeError(Ee+" is not a symbol");if(h(ye,Ee))return ye[Ee]},useSetter:function(){J=!0},useSimple:function(){J=!1}}),o({target:"Object",stat:!0,forced:!f,sham:!l},{create:function(Ee,Me){return Me===void 0?C(Ee):X(C(Ee),Me)},defineProperty:me,defineProperties:X,getOwnPropertyDescriptor:Be}),o({target:"Object",stat:!0,forced:!f},{getOwnPropertyNames:Ve,getOwnPropertySymbols:ue}),o({target:"Object",stat:!0,forced:d(function(){E.f(1)})},{getOwnPropertySymbols:function(Ee){return E.f(x(Ee))}}),O&&o({target:"JSON",stat:!0,forced:!f||d(function(){var Ee=k();return O([Ee])!="[null]"||O({a:Ee})!="{}"||O(Object(Ee))!="{}"})},{stringify:function(Ee,Me,Re){for(var We,ut=[Ee],ze=1;arguments.length>ze;)ut.push(arguments[ze++]);if(We=Me,(p(Me)||Ee!==void 0)&&!te(Ee))return g(Me)||(Me=function(ft,dt){if(typeof We=="function"&&(dt=We.call(this,ft,dt)),!te(dt))return dt}),ut[1]=Me,O.apply(null,ut)}}),k.prototype[ee]||R(k.prototype,ee,k.prototype.valueOf),H(k,"Symbol"),G[Q]=!0},function(r,n,i){var o=i(4),a=i(16),s=i(11),c=i(14),l=i(13),f=i(15).f,u=i(119),d=s.Symbol;if(a&&typeof d=="function"&&(!("description"in d.prototype)||d().description!==void 0)){var h={},g=function(){var y=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),w=this instanceof g?new d(y):y===void 0?d():d(y);return y===""&&(h[w]=!0),w};u(g,d);var p=g.prototype=d.prototype;p.constructor=g;var v=p.toString,x=String(d("test"))=="Symbol(test)",m=/^Symbol\((.*)\)[^)]+$/;f(p,"description",{configurable:!0,get:function(){var y=l(this)?this.valueOf():this,w=v.call(y);if(c(h,y))return"";var C=x?w.slice(7,-1):w.replace(m,"$1");return C===""?void 0:C}}),o({global:!0,forced:!0},{Symbol:g})}},function(r,n,i){i(126)("iterator")},function(r,n,i){var o,a=this&&this.__extends||(o=function(x,m){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,w){y.__proto__=w}||function(y,w){for(var C in w)w.hasOwnProperty(C)&&(y[C]=w[C])})(x,m)},function(x,m){function y(){this.constructor=x}o(x,m),x.prototype=m===null?Object.create(m):(y.prototype=m.prototype,new y)}),s=this&&this.__values||function(x){var m=typeof Symbol=="function"&&Symbol.iterator,y=m&&x[m],w=0;if(y)return y.call(x);if(x&&typeof x.length=="number")return{next:function(){return x&&w>=x.length&&(x=void 0),{value:x&&x[w++],done:!x}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(6),l=i(2),f=i(70),u=i(3),d=i(9),h=i(0),g=i(152),p=i(12),v=function(x){function m(){var y=x.call(this)||this;return y._parent=null,y._firstChild=null,y._lastChild=null,y._previousSibling=null,y._nextSibling=null,y}return a(m,x),Object.defineProperty(m.prototype,"_childNodes",{get:function(){return this.__childNodes||(this.__childNodes=h.create_nodeList(this))},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"_nodeDocument",{get:function(){return this._nodeDocumentOverride||c.dom.window._associatedDocument},set:function(y){this._nodeDocumentOverride=y},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"_registeredObserverList",{get:function(){return this.__registeredObserverList||(this.__registeredObserverList=[])},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"nodeType",{get:function(){return this._nodeType},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"nodeName",{get:function(){return u.Guard.isElementNode(this)?this._htmlUppercasedQualifiedName:u.Guard.isAttrNode(this)?this._qualifiedName:u.Guard.isExclusiveTextNode(this)?"#text":u.Guard.isCDATASectionNode(this)?"#cdata-section":u.Guard.isProcessingInstructionNode(this)?this._target:u.Guard.isCommentNode(this)?"#comment":u.Guard.isDocumentNode(this)?"#document":u.Guard.isDocumentTypeNode(this)?this._name:u.Guard.isDocumentFragmentNode(this)?"#document-fragment":""},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"baseURI",{get:function(){return g.urlSerializer(this._nodeDocument._URL)},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"isConnected",{get:function(){return u.Guard.isElementNode(this)&&h.shadowTree_isConnected(this)},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"ownerDocument",{get:function(){return this._nodeType===l.NodeType.Document?null:this._nodeDocument},enumerable:!0,configurable:!0}),m.prototype.getRootNode=function(y){return h.tree_rootNode(this,!!y&&y.composed)},Object.defineProperty(m.prototype,"parentNode",{get:function(){return this._nodeType===l.NodeType.Attribute?null:this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"parentElement",{get:function(){return this._parent&&u.Guard.isElementNode(this._parent)?this._parent:null},enumerable:!0,configurable:!0}),m.prototype.hasChildNodes=function(){return this._firstChild!==null},Object.defineProperty(m.prototype,"childNodes",{get:function(){return this._childNodes},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"firstChild",{get:function(){return this._firstChild},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"lastChild",{get:function(){return this._lastChild},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"previousSibling",{get:function(){return this._previousSibling},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"nextSibling",{get:function(){return this._nextSibling},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"nodeValue",{get:function(){return u.Guard.isAttrNode(this)?this._value:u.Guard.isCharacterDataNode(this)?this._data:null},set:function(y){y===null&&(y=""),u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,y):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,this._data.length,y)},enumerable:!0,configurable:!0}),Object.defineProperty(m.prototype,"textContent",{get:function(){return u.Guard.isDocumentFragmentNode(this)||u.Guard.isElementNode(this)?h.text_descendantTextContent(this):u.Guard.isAttrNode(this)?this._value:u.Guard.isCharacterDataNode(this)?this._data:null},set:function(y){y===null&&(y=""),u.Guard.isDocumentFragmentNode(this)||u.Guard.isElementNode(this)?h.node_stringReplaceAll(y,this):u.Guard.isAttrNode(this)?h.attr_setAnExistingAttributeValue(this,y):u.Guard.isCharacterDataNode(this)&&h.characterData_replaceData(this,0,h.tree_nodeLength(this),y)},enumerable:!0,configurable:!0}),m.prototype.normalize=function(){for(var y,w,C,S,T=[],_=h.tree_getFirstDescendantNode(this,!1,!1,function(ne){return u.Guard.isExclusiveTextNode(ne)});_!==null;)T.push(_),_=h.tree_getNextDescendantNode(this,_,!1,!1,function(ne){return u.Guard.isExclusiveTextNode(ne)});for(var E=0;ER;R++)if((m||R in D)&&(_=b(T=D[R],R,E),d)){if(h)L[R]=_;else if(_)switch(d){case 3:return!0;case 5:return T;case 6:return R;case 2:f.call(L,T)}else if(v)return!1}return x?-1:p||v?v:L}};r.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},function(r,n,i){var o=this&&this.__values||function(E){var D=typeof Symbol=="function"&&Symbol.iterator,b=D&&E[D],I=0;if(b)return b.call(E);if(E&&typeof E.length=="number")return{next:function(){return E&&I>=E.length&&(E=void 0),{value:E&&E[I++],done:!E}}};throw new TypeError(D?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(E,D){var b=typeof Symbol=="function"&&E[Symbol.iterator];if(!b)return E;var I,R,M=b.call(E),L=[];try{for(;(D===void 0||D-- >0)&&!(I=M.next()).done;)L.push(I.value)}catch(A){R={error:A}}finally{try{I&&!I.done&&(b=M.return)&&b.call(M)}finally{if(R)throw R.error}}return L},s=this&&this.__spread||function(){for(var E=[],D=0;D1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+Y+" element nodes.");if(Y===1){try{for(var de=o(D._children),fe=de.next();!fe.done;fe=de.next())if(fe.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(j){M={error:j}}finally{try{fe&&!fe.done&&(L=de.return)&&L.call(de)}finally{if(M)throw M.error}}if(b){if(H===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");for(var le=b._nextSibling;le;){if(le._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");le=le._nextSibling}}}}else if($===f.NodeType.Element){try{for(var k=o(D._children),O=k.next();!O.done;O=k.next())if(O.value._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+E.nodeName+".")}catch(j){A={error:j}}finally{try{O&&!O.done&&(G=k.return)&&G.call(k)}finally{if(A)throw A.error}}if(b){if(H===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");for(le=b._nextSibling;le;){if(le._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+E.nodeName+".");le=le._nextSibling}}}else if($===f.NodeType.DocumentType){try{for(var B=o(D._children),U=B.next();!U.done;U=B.next())if(U.value._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+E.nodeName+".")}catch(j){P={error:j}}finally{try{U&&!U.done&&(N=B.return)&&N.call(B)}finally{if(P)throw P.error}}if(b)for(var z=b._previousSibling;z;){if(z._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+E.nodeName+".");z=z._previousSibling}else for(z=D._firstChild;z;){if(z._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+E.nodeName+".");z=z._nextSibling}}}}function S(E,D,b){C(E,D,b);var I=b;return I===E&&(I=E._nextSibling),w.document_adopt(E,D._nodeDocument),T(E,D,I),E}function T(E,D,b,I){var R,M;if(b!==null||E._nodeType===f.NodeType.DocumentFragment){var L=E._nodeType===f.NodeType.DocumentFragment?E._children.size:1;if(b!==null&&c.dom.rangeList.size!==0){var A=p.tree_index(b);try{for(var G=o(c.dom.rangeList),P=G.next();!P.done;P=G.next()){var N=P.value;N._start[0]===D&&N._start[1]>A&&(N._start[1]+=L),N._end[0]===D&&N._end[1]>A&&(N._end[1]+=L)}}catch(fe){R={error:fe}}finally{try{P&&!P.done&&(M=G.return)&&M.call(G)}finally{if(R)throw R.error}}}var V=E._nodeType===f.NodeType.DocumentFragment?new(Array.bind.apply(Array,s([void 0],E._children))):[E];if(E._nodeType===f.NodeType.DocumentFragment)for(;E._firstChild;)_(E._firstChild,E,!0);c.dom.features.mutationObservers&&E._nodeType===f.NodeType.DocumentFragment&&m.observer_queueTreeMutationRecord(E,[],V,null,null);for(var $=b?b._previousSibling:D._lastChild,H=b===null?-1:p.tree_index(b),Y=0;YV&&Y._start[1]--,Y._end[0]===D&&Y._end[1]>V&&Y._end[1]--}}catch(he){I={error:he}}finally{try{H&&!H.done&&(R=$.return)&&R.call($)}finally{if(I)throw I.error}}try{for(var ne=o(c.dom.rangeList),Q=ne.next();!Q.done;Q=ne.next())(Y=Q.value)._start[0]===D&&Y._start[1]>V&&(Y._start[1]-=1),Y._end[0]===D&&Y._end[1]>V&&(Y._end[1]-=1)}catch(he){M={error:he}}finally{try{Q&&!Q.done&&(L=ne.return)&&L.call(ne)}finally{if(M)throw M.error}}}if(c.dom.features.steps)try{for(var ee=o(v.nodeIterator_iteratorList()),de=ee.next();!de.done;de=ee.next()){var fe=de.value;fe._root._nodeDocument===E._nodeDocument&&y.dom_runNodeIteratorPreRemovingSteps(fe,E)}}catch(he){A={error:he}}finally{try{de&&!de.done&&(G=ee.return)&&G.call(ee)}finally{if(A)throw A.error}}var le=E._previousSibling,k=E._nextSibling;u.Guard.isDocumentNode(D)&&u.Guard.isElementNode(E)&&(D._documentElement=null),E._parent=null,D._children.delete(E);var O=E._previousSibling,B=E._nextSibling;E._previousSibling=null,E._nextSibling=null,O&&(O._nextSibling=B),B&&(B._previousSibling=O),O||(D._firstChild=B),B||(D._lastChild=O),c.dom.features.slots&&u.Guard.isSlotable(E)&&E._assignedSlot!==null&&x.shadowTree_isAssigned(E)&&x.shadowTree_assignSlotables(E._assignedSlot),c.dom.features.slots&&u.Guard.isShadowRoot(p.tree_rootNode(D))&&u.Guard.isSlot(D)&&d.isEmpty(D._assignedNodes)&&x.shadowTree_signalASlotChange(D),c.dom.features.slots&&p.tree_getFirstDescendantNode(E,!0,!1,function(he){return u.Guard.isSlot(he)})!==null&&(x.shadowTree_assignSlotablesForATree(p.tree_rootNode(D)),x.shadowTree_assignSlotablesForATree(E)),c.dom.features.steps&&y.dom_runRemovingSteps(E,D),c.dom.features.customElements&&u.Guard.isCustomElementNode(E)&&g.customElement_enqueueACustomElementCallbackReaction(E,"disconnectedCallback",[]);for(var U=p.tree_getFirstDescendantNode(E,!1,!0);U!==null;)c.dom.features.steps&&y.dom_runRemovingSteps(U,E),c.dom.features.customElements&&u.Guard.isCustomElementNode(U)&&g.customElement_enqueueACustomElementCallbackReaction(U,"disconnectedCallback",[]),U=p.tree_getNextDescendantNode(E,U,!1,!0);if(c.dom.features.mutationObservers)for(var z=p.tree_getFirstAncestorNode(D,!0);z!==null;){try{for(var j=(P=void 0,o(z._registeredObserverList)),K=j.next();!K.done;K=j.next()){var ae=K.value;ae.options.subtree&&E._registeredObserverList.push({observer:ae.observer,options:ae.options,source:ae})}}catch(he){P={error:he}}finally{try{K&&!K.done&&(N=j.return)&&N.call(j)}finally{if(P)throw P.error}}z=p.tree_getNextAncestorNode(D,z,!0)}c.dom.features.mutationObservers&&(b||m.observer_queueTreeMutationRecord(D,[],[E],le,k)),c.dom.features.steps&&u.Guard.isTextNode(E)&&y.dom_runChildTextContentChangeSteps(D)}n.mutation_ensurePreInsertionValidity=C,n.mutation_preInsert=S,n.mutation_insert=T,n.mutation_append=function(E,D){return S(E,D,null)},n.mutation_replace=function(E,D,b){var I,R,M,L,A,G,P,N;if(b._nodeType!==f.NodeType.Document&&b._nodeType!==f.NodeType.DocumentFragment&&b._nodeType!==f.NodeType.Element)throw new l.HierarchyRequestError("Only document, document fragment and element nodes can contain child nodes. Parent node is "+b.nodeName+".");if(p.tree_isHostIncludingAncestorOf(b,D,!0))throw new l.HierarchyRequestError("The node to be inserted cannot be an ancestor of parent node. Node is "+D.nodeName+", parent node is "+b.nodeName+".");if(E._parent!==b)throw new l.NotFoundError("The reference child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+b.nodeName+".");if(D._nodeType!==f.NodeType.DocumentFragment&&D._nodeType!==f.NodeType.DocumentType&&D._nodeType!==f.NodeType.Element&&D._nodeType!==f.NodeType.Text&&D._nodeType!==f.NodeType.ProcessingInstruction&&D._nodeType!==f.NodeType.CData&&D._nodeType!==f.NodeType.Comment)throw new l.HierarchyRequestError("Only document fragment, document type, element, text, processing instruction, cdata section or comment nodes can be inserted. Node is "+D.nodeName+".");if(D._nodeType===f.NodeType.Text&&b._nodeType===f.NodeType.Document)throw new l.HierarchyRequestError("Cannot insert a text node as a child of a document node. Node is "+D.nodeName+".");if(D._nodeType===f.NodeType.DocumentType&&b._nodeType!==f.NodeType.Document)throw new l.HierarchyRequestError("A document type node can only be inserted under a document node. Parent node is "+b.nodeName+".");if(b._nodeType===f.NodeType.Document){if(D._nodeType===f.NodeType.DocumentFragment){var V=0;try{for(var $=o(D._children),H=$.next();!H.done;H=$.next()){var Y=H.value;if(Y._nodeType===f.NodeType.Element)V++;else if(Y._nodeType===f.NodeType.Text)throw new l.HierarchyRequestError("Cannot insert text a node as a child of a document node. Node is "+Y.nodeName+".")}}catch(ae){I={error:ae}}finally{try{H&&!H.done&&(R=$.return)&&R.call($)}finally{if(I)throw I.error}}if(V>1)throw new l.HierarchyRequestError("A document node can only have one document element node. Document fragment to be inserted has "+V+" element nodes.");if(V===1){try{for(var ne=o(b._children),Q=ne.next();!Q.done;Q=ne.next())if((O=Q.value)._nodeType===f.NodeType.Element&&O!==E)throw new l.HierarchyRequestError("The document node already has a document element node.")}catch(ae){M={error:ae}}finally{try{Q&&!Q.done&&(L=ne.return)&&L.call(ne)}finally{if(M)throw M.error}}for(var ee=E._nextSibling;ee;){if(ee._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node.");ee=ee._nextSibling}}}else if(D._nodeType===f.NodeType.Element){try{for(var de=o(b._children),fe=de.next();!fe.done;fe=de.next())if((O=fe.value)._nodeType===f.NodeType.Element&&O!==E)throw new l.HierarchyRequestError("Document already has a document element node. Node is "+D.nodeName+".")}catch(ae){A={error:ae}}finally{try{fe&&!fe.done&&(G=de.return)&&G.call(de)}finally{if(A)throw A.error}}for(ee=E._nextSibling;ee;){if(ee._nodeType===f.NodeType.DocumentType)throw new l.HierarchyRequestError("Cannot insert an element node before a document type node. Node is "+D.nodeName+".");ee=ee._nextSibling}}else if(D._nodeType===f.NodeType.DocumentType){try{for(var le=o(b._children),k=le.next();!k.done;k=le.next()){var O;if((O=k.value)._nodeType===f.NodeType.DocumentType&&O!==E)throw new l.HierarchyRequestError("Document already has a document type node. Node is "+D.nodeName+".")}}catch(ae){P={error:ae}}finally{try{k&&!k.done&&(N=le.return)&&N.call(le)}finally{if(P)throw P.error}}for(var B=E._previousSibling;B;){if(B._nodeType===f.NodeType.Element)throw new l.HierarchyRequestError("Cannot insert a document type node before an element node. Node is "+D.nodeName+".");B=B._previousSibling}}}var U=E._nextSibling;U===D&&(U=D._nextSibling);var z=E._previousSibling;w.document_adopt(D,b._nodeDocument);var j=[];E._parent!==null&&(j.push(E),_(E,E._parent,!0));var K=[];return D._nodeType===f.NodeType.DocumentFragment?K=Array.from(D._children):K.push(D),T(D,b,U,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(b,K,j,z,U),E},n.mutation_replaceAll=function(E,D){var b,I;E!==null&&w.document_adopt(E,D._nodeDocument);var R=Array.from(D._children),M=[];E&&E._nodeType===f.NodeType.DocumentFragment?M=Array.from(E._children):E!==null&&M.push(E);try{for(var L=o(R),A=L.next();!A.done;A=L.next())_(A.value,D,!0)}catch(G){b={error:G}}finally{try{A&&!A.done&&(I=L.return)&&I.call(L)}finally{if(b)throw b.error}}E!==null&&T(E,D,null,!0),c.dom.features.mutationObservers&&m.observer_queueTreeMutationRecord(D,M,R,null,null)},n.mutation_preRemove=function(E,D){if(E._parent!==D)throw new l.NotFoundError("The child node cannot be found under parent node. Child node is "+E.nodeName+", parent node is "+D.nodeName+".");return _(E,D),E},n.mutation_remove=_},function(r,n,i){function o(a){return a==null}r.exports.isNothing=o,r.exports.isObject=function(a){return typeof a=="object"&&a!==null},r.exports.toArray=function(a){return Array.isArray(a)?a:o(a)?[]:[a]},r.exports.repeat=function(a,s){var c,l="";for(c=0;c0?o:i)(a)}},function(r,n,i){var o=i(8);r.exports=function(a,s){var c=[][a];return!!c&&o(function(){c.call(null,s||function(){throw 1},1)})}},function(r,n){r.exports={}},function(r,n,i){i(31),i(32),i(33),i(220),i(64),i(19),i(65),i(20),i(68),i(66),i(92),i(144),i(22),i(94),i(23);var o=this&&this.__values||function(g){var p=typeof Symbol=="function"&&Symbol.iterator,v=p&&g[p],x=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(p?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(g,p){var v=typeof Symbol=="function"&&g[Symbol.iterator];if(!v)return g;var x,m,y=v.call(g),w=[];try{for(;(p===void 0||p-- >0)&&!(x=y.next()).done;)w.push(x.value)}catch(C){m={error:C}}finally{try{x&&!x.done&&(v=y.return)&&v.call(y)}finally{if(m)throw m.error}}return w},s=this&&this.__spread||function(){for(var g=[],p=0;p/g,">");this.text(x)},g.prototype._serializeDocumentFragmentNS=function(p,v,x,m,y){var w,C;try{for(var S=o(p.childNodes),T=S.next();!T.done;T=S.next()){var _=T.value;this._serializeNodeNS(_,v,x,m,y)}}catch(E){w={error:E}}finally{try{T&&!T.done&&(C=S.return)&&C.call(S)}finally{if(w)throw w.error}}},g.prototype._serializeDocumentFragment=function(p,v){var x,m;try{for(var y=o(p._children),w=y.next();!w.done;w=y.next()){var C=w.value;this._serializeNode(C,v)}}catch(S){x={error:S}}finally{try{w&&!w.done&&(m=y.return)&&m.call(y)}finally{if(x)throw x.error}}},g.prototype._serializeDocumentType=function(p,v){if(v&&!d.xml_isPubidChar(p.publicId))throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");if(v&&(!d.xml_isLegalChar(p.systemId)||p.systemId.indexOf('"')!==-1&&p.systemId.indexOf("'")!==-1))throw new Error("DocType system identifier contains invalid characters (well-formed required).");this.docType(p.name,p.publicId,p.systemId)},g.prototype._serializeProcessingInstruction=function(p,v){if(v&&(p.target.indexOf(":")!==-1||/^xml$/i.test(p.target)))throw new Error("Processing instruction target contains invalid characters (well-formed required).");if(v&&(!d.xml_isLegalChar(p.data)||p.data.indexOf("?>")!==-1))throw new Error("Processing instruction data contains invalid characters (well-formed required).");this.instruction(p.target,p.data)},g.prototype._serializeCData=function(p,v){if(v&&p.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters (well-formed required).");this.cdata(p.data)},g.prototype._serializeAttributesNS=function(p,v,x,m,y,w){var C,S,T=[],_=w?new l.LocalNameSet:void 0;try{for(var E=o(p.attributes),D=E.next();!D.done;D=E.next()){var b=D.value;if(w||y||b.namespaceURI!==null){if(w&&_&&_.has(b.namespaceURI,b.localName))throw new Error("Element contains duplicate attributes (well-formed required).");w&&_&&_.set(b.namespaceURI,b.localName);var I=b.namespaceURI,R=null;if(I!==null)if(R=v.get(b.prefix,I),I===u.namespace.XMLNS){if(b.value===u.namespace.XML||b.prefix===null&&y||b.prefix!==null&&(!(b.localName in m)||m[b.localName]!==b.value)&&v.has(b.localName,b.value))continue;if(w&&b.value===u.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(w&&b.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");b.prefix==="xmlns"&&(R="xmlns")}else R===null&&(R=b.prefix===null||v.hasPrefix(b.prefix)&&!v.has(b.prefix,I)?this._generatePrefix(I,v,x):b.prefix,T.push([null,"xmlns",R,this._serializeAttributeValue(I,w)]));if(w&&(b.localName.indexOf(":")!==-1||!d.xml_isName(b.localName)||b.localName==="xmlns"&&I===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");T.push([I,R,b.localName,this._serializeAttributeValue(b.value,w)])}else T.push([null,null,b.localName,this._serializeAttributeValue(b.value,w)])}}catch(M){C={error:M}}finally{try{D&&!D.done&&(S=E.return)&&S.call(E)}finally{if(C)throw C.error}}return T},g.prototype._serializeAttributes=function(p,v){var x,m,y=[],w=v?{}:void 0;try{for(var C=o(p.attributes),S=C.next();!S.done;S=C.next()){var T=S.value;if(v){if(v&&w&&T.localName in w)throw new Error("Element contains duplicate attributes (well-formed required).");if(v&&w&&(w[T.localName]=!0),v&&(T.localName.indexOf(":")!==-1||!d.xml_isName(T.localName)))throw new Error("Attribute local name contains invalid characters (well-formed required).");y.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}else y.push([null,null,T.localName,this._serializeAttributeValue(T.value,v)])}}catch(_){x={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.error}}return y},g.prototype._recordNamespaceInformation=function(p,v,x){var m,y,w=null;try{for(var C=o(p.attributes),S=C.next();!S.done;S=C.next()){var T=S.value,_=T.namespaceURI,E=T.prefix;if(_===u.namespace.XMLNS){if(E===null){w=T.value;continue}var D=T.localName,b=T.value;if(b===u.namespace.XML||(b===""&&(b=null),v.has(D,b)))continue;v.set(D,b),x[D]=b||""}}}catch(I){m={error:I}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(m)throw m.error}}return w},g.prototype._generatePrefix=function(p,v,x){var m="ns"+x.value.toString();return x.value++,v.set(m,p),m},g.prototype._serializeAttributeValue=function(p,v){if(v&&p!==null&&!d.xml_isLegalChar(p))throw new Error("Invalid characters in attribute value.");return p===null?"":p.replace(/(?!&([^&;]*);)&/g,"&").replace(//g,">").replace(/"/g,""")},g._VoidElementNames=new Set(["area","base","basefont","bgsound","br","col","embed","frame","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"]),g}();n.BaseWriter=h},function(r,n,i){var o=this&&this.__values||function(v){var x=typeof Symbol=="function"&&Symbol.iterator,m=x&&v[x],y=0;if(m)return m.call(v);if(v&&typeof v.length=="number")return{next:function(){return v&&y>=v.length&&(v=void 0),{value:v&&v[y++],done:!v}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(v,x){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var y,w,C=m.call(v),S=[];try{for(;(x===void 0||x-- >0)&&!(y=C.next()).done;)S.push(y.value)}catch(T){w={error:T}}finally{try{y&&!y.done&&(m=C.return)&&m.call(C)}finally{if(w)throw w.error}}return S};Object.defineProperty(n,"__esModule",{value:!0});var s=i(6),c=i(3),l=i(7),f=i(29),u=i(17),d=i(97);function h(){var v=s.dom.window;v._mutationObserverMicrotaskQueued||(v._mutationObserverMicrotaskQueued=!0,Promise.resolve().then(function(){g()}))}function g(){var v,x,m,y,w=s.dom.window;w._mutationObserverMicrotaskQueued=!1;var C=l.set.clone(w._mutationObservers),S=l.set.clone(w._signalSlots);l.set.empty(w._signalSlots);var T=function(R){var M=l.list.clone(R._recordQueue);l.list.empty(R._recordQueue);for(var L=0;L"+x+"<\/script>"},v=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch{}var x,m;v=o?function(w){w.write(p("")),w.close();var C=w.parentWindow.Object;return w=null,C}(o):((m=u("iframe")).style.display="none",f.appendChild(m),m.src="javascript:",(x=m.contentWindow.document).open(),x.write(p("document.F=Object")),x.close(),x.F);for(var y=c.length;y--;)delete v.prototype[c[y]];return v()};l[h]=!0,r.exports=Object.create||function(x,m){var y;return x!==null?(g.prototype=a(x),y=new g,g.prototype=null,y[h]=x):y=v(),m===void 0?y:s(y,m)}},function(r,n,i){var o=i(121),a=i(84);r.exports=Object.keys||function(s){return o(s,a)}},function(r,n,i){var o=i(15).f,a=i(14),s=i(5)("toStringTag");r.exports=function(c,l,f){c&&!a(c=f?c:c.prototype,s)&&o(c,s,{configurable:!0,value:l})}},function(r,n,i){var o=i(8),a=i(5),s=i(129),c=a("species");r.exports=function(l){return s>=51||!o(function(){var f=[];return(f.constructor={})[c]=function(){return{foo:1}},f[l](Boolean).foo!==1})}},function(r,n,i){var o=i(4),a=i(122).indexOf,s=i(48),c=i(28),l=[].indexOf,f=!!l&&1/[1].indexOf(1,-0)<0,u=s("indexOf"),d=c("indexOf",{ACCESSORS:!0,1:0});o({target:"Array",proto:!0,forced:f||!u||!d},{indexOf:function(h){return f?l.apply(this,arguments)||0:a(this,h,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(16),a=i(15).f,s=Function.prototype,c=s.toString,l=/^\s*function ([^ (]*)/;o&&!("name"in s)&&a(s,"name",{configurable:!0,get:function(){try{return c.call(this).match(l)[1]}catch{return""}}})},function(r,n,i){var o=i(25),a=i(18),s=i(8),c=i(136),l=RegExp.prototype,f=l.toString,u=s(function(){return f.call({source:"a",flags:"b"})!="/a/b"}),d=f.name!="toString";(u||d)&&o(RegExp.prototype,"toString",function(){var h=a(this),g=String(h.source),p=h.flags;return"/"+g+"/"+String(p===void 0&&h instanceof RegExp&&!("flags"in l)?c.call(h):p)},{unsafe:!0})},function(r,n,i){i(31),i(32),i(33),i(19),i(138),i(20),i(66),i(22),i(23);var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)}),s=this&&this.__values||function(u){var d=typeof Symbol=="function"&&Symbol.iterator,h=d&&u[d],g=0;if(h)return h.call(u);if(u&&typeof u.length=="number")return{next:function(){return u&&g>=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(1),l=i(2),f=function(u){function d(h,g){var p=u.call(this,h)||this;return p._writerOptions=c.applyDefaults(g,{format:"object",wellFormed:!1,group:!1,verbose:!1}),p}return a(d,u),d.prototype.serialize=function(h){return this._currentList=[],this._currentIndex=0,this._listRegister=[this._currentList],this.serializeNode(h,this._writerOptions.wellFormed),this._process(this._currentList,this._writerOptions)},d.prototype._process=function(h,g){var p,v,x,m,y,w,C;if(h.length===0)return{};for(var S={},T=!1,_=0,E=0,D=0,b=0,I=0;I2)try{for(var C=s(h),S=C.next();!S.done;S=C.next()){var T=S.value;g[v+(m++).toString()]=T}}catch(_){y={error:_}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(y)throw y.error}}else g[x>1?v+(m++).toString():v]=h;return m},d.prototype.beginElement=function(h){var g,p,v=[];if(this._currentList.length===0)this._currentList.push(((g={})[h]=v,g));else{var x=this._currentList[this._currentList.length-1];this._isElementNode(x,h)?x[h].length!==0&&c.isArray(x[h][0])?x[h].push(v):x[h]=[x[h],v]:this._currentList.push(((p={})[h]=v,p))}this._currentIndex++,this._listRegister.length>this._currentIndex?this._listRegister[this._currentIndex]=v:this._listRegister.push(v),this._currentList=v},d.prototype.endElement=function(){this._currentList=this._listRegister[--this._currentIndex]},d.prototype.attribute=function(h,g){var p,v;if(this._currentList.length===0)this._currentList.push({"@":(p={},p[h]=g,p)});else{var x=this._currentList[this._currentList.length-1];this._isAttrNode(x)?x["@"][h]=g:this._currentList.push({"@":(v={},v[h]=g,v)})}},d.prototype.comment=function(h){if(this._currentList.length===0)this._currentList.push({"!":h});else{var g=this._currentList[this._currentList.length-1];this._isCommentNode(g)?c.isArray(g["!"])?g["!"].push(h):g["!"]=[g["!"],h]:this._currentList.push({"!":h})}},d.prototype.text=function(h){if(this._currentList.length===0)this._currentList.push({"#":h});else{var g=this._currentList[this._currentList.length-1];this._isTextNode(g)?c.isArray(g["#"])?g["#"].push(h):g["#"]=[g["#"],h]:this._currentList.push({"#":h})}},d.prototype.instruction=function(h,g){var p=g===""?h:h+" "+g;if(this._currentList.length===0)this._currentList.push({"?":p});else{var v=this._currentList[this._currentList.length-1];this._isInstructionNode(v)?c.isArray(v["?"])?v["?"].push(p):v["?"]=[v["?"],p]:this._currentList.push({"?":p})}},d.prototype.cdata=function(h){if(this._currentList.length===0)this._currentList.push({$:h});else{var g=this._currentList[this._currentList.length-1];this._isCDATANode(g)?c.isArray(g.$)?g.$.push(h):g.$=[g.$,h]:this._currentList.push({$:h})}},d.prototype._isAttrNode=function(h){return"@"in h},d.prototype._isTextNode=function(h){return"#"in h},d.prototype._isCommentNode=function(h){return"!"in h},d.prototype._isInstructionNode=function(h){return"?"in h},d.prototype._isCDATANode=function(h){return"$"in h},d.prototype._isElementNode=function(h,g){return g in h},d.prototype._getAttrKey=function(){return this._builderOptions.convert.att},d.prototype._getNodeKey=function(h){switch(h){case l.NodeType.Comment:return this._builderOptions.convert.comment;case l.NodeType.Text:return this._builderOptions.convert.text;case l.NodeType.ProcessingInstruction:return this._builderOptions.convert.ins;case l.NodeType.CData:return this._builderOptions.convert.cdata;default:throw new Error("Invalid node type.")}},d}(i(50).BaseWriter);n.ObjectWriter=f},function(r,n,i){var o=i(4),a=i(93);o({target:"RegExp",proto:!0,forced:/./.exec!==a},{exec:a})},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(){this._items={},this._nullItems={}}return a.prototype.set=function(s,c){s===null?this._nullItems[c]=!0:(this._items[s]||(this._items[s]={}),this._items[s][c]=!0)},a.prototype.has=function(s,c){return s===null?this._nullItems[c]===!0:!!this._items[s]&&this._items[s][c]===!0},a}();n.LocalNameSet=o},function(r,n,i){var o=this&&this.__read||function(f,u){var d=typeof Symbol=="function"&&f[Symbol.iterator];if(!d)return f;var h,g,p=d.call(f),v=[];try{for(;(u===void 0||u-- >0)&&!(h=p.next()).done;)v.push(h.value)}catch(x){g={error:x}}finally{try{h&&!h.done&&(d=p.return)&&d.call(p)}finally{if(g)throw g.error}}return v};Object.defineProperty(n,"__esModule",{value:!0});var a=i(9),s=i(3),c=i(0),l=function(){function f(){}return Object.defineProperty(f.prototype,"_eventListenerList",{get:function(){return this.__eventListenerList||(this.__eventListenerList=[])},enumerable:!0,configurable:!0}),Object.defineProperty(f.prototype,"_eventHandlerMap",{get:function(){return this.__eventHandlerMap||(this.__eventHandlerMap={})},enumerable:!0,configurable:!0}),f.prototype.addEventListener=function(u,d,h){h===void 0&&(h={passive:!1,once:!1,capture:!1});var g,p=o(c.eventTarget_flattenMore(h),3),v=p[0],x=p[1],m=p[2];d&&(g=s.Guard.isEventListener(d)?d:{handleEvent:d},c.eventTarget_addEventListener(this,{type:u,callback:g,capture:v,passive:x,once:m,removed:!1}))},f.prototype.removeEventListener=function(u,d,h){h===void 0&&(h={capture:!1});var g=c.eventTarget_flatten(h);if(d)for(var p=0;p=x.length&&(x=void 0),{value:x&&x[w++],done:!x}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(x,m){var y=typeof Symbol=="function"&&x[Symbol.iterator];if(!y)return x;var w,C,S=y.call(x),T=[];try{for(;(m===void 0||m-- >0)&&!(w=S.next()).done;)T.push(w.value)}catch(_){C={error:_}}finally{try{w&&!w.done&&(y=S.return)&&y.call(S)}finally{if(C)throw C.error}}return T},s=this&&this.__spread||function(){for(var x=[],m=0;m",amp:"&",quot:'"',apos:"'"},s}();n.BaseReader=a},function(r,n,i){var o=i(39);r.exports=o.DEFAULT=new o({include:[i(54)],explicit:[i(299),i(300),i(301)]})},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(185);n.XMLBuilderImpl=o.XMLBuilderImpl;var a=i(304);n.XMLBuilderCBImpl=a.XMLBuilderCBImpl;var s=i(183);n.builder=s.builder,n.create=s.create,n.fragment=s.fragment,n.convert=s.convert;var c=i(309);n.createCB=c.createCB,n.fragmentCB=c.fragmentCB},function(r,n){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch{typeof window=="object"&&(i=window)}r.exports=i},function(r,n,i){var o={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,s=a&&!o.call({1:2},1);n.f=s?function(c){var l=a(this,c);return!!l&&l.enumerable}:o},function(r,n,i){var o=i(11),a=i(21);r.exports=function(s,c){try{a(o,s,c)}catch{o[s]=c}return c}},function(r,n,i){var o=i(44),a=i(118);(r.exports=function(s,c){return a[s]||(a[s]=c!==void 0?c:{})})("versions",[]).push({version:"3.6.5",mode:o?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(r,n,i){var o=i(121),a=i(84).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(s){return o(s,a)}},function(r,n,i){var o=i(47),a=Math.max,s=Math.min;r.exports=function(c,l){var f=o(c);return f<0?a(f+l,0):s(f,l)}},function(r,n){r.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(r,n){n.f=Object.getOwnPropertySymbols},function(r,n,i){var o=i(8);r.exports=!!Object.getOwnPropertySymbols&&!o(function(){return!String(Symbol())})},function(r,n,i){var o=i(127);r.exports=function(a,s,c){if(o(a),s===void 0)return a;switch(c){case 0:return function(){return a.call(s)};case 1:return function(l){return a.call(s,l)};case 2:return function(l,f){return a.call(s,l,f)};case 3:return function(l,f,u){return a.call(s,l,f,u)}}return function(){return a.apply(s,arguments)}}},function(r,n,i){var o=i(4),a=i(195),s=i(132),c=i(133),l=i(62),f=i(21),u=i(25),d=i(5),h=i(44),g=i(49),p=i(131),v=p.IteratorPrototype,x=p.BUGGY_SAFARI_ITERATORS,m=d("iterator"),y=function(){return this};r.exports=function(w,C,S,T,_,E,D){a(S,C,T);var b,I,R,M=function($){if($===_&&N)return N;if(!x&&$ in G)return G[$];switch($){case"keys":case"values":case"entries":return function(){return new S(this,$)}}return function(){return new S(this)}},L=C+" Iterator",A=!1,G=w.prototype,P=G[m]||G["@@iterator"]||_&&G[_],N=!x&&P||M(_),V=C=="Array"&&G.entries||P;if(V&&(b=s(V.call(new w)),v!==Object.prototype&&b.next&&(h||s(b)===v||(c?c(b,v):typeof b[m]!="function"&&f(b,m,y)),l(b,L,!0,!0),h&&(g[L]=y))),_=="values"&&P&&P.name!=="values"&&(A=!0,N=function(){return P.call(this)}),h&&!D||G[m]===N||f(G,m,N),g[C]=N,_)if(I={values:M("values"),keys:E?N:M("keys"),entries:M("entries")},D)for(R in I)(x||A||!(R in G))&&u(G,R,I[R]);else o({target:C,proto:!0,forced:x||A},I);return I}},function(r,n,i){var o=i(4),a=i(13),s=i(59),c=i(83),l=i(26),f=i(24),u=i(134),d=i(5),h=i(63),g=i(28),p=h("slice"),v=g("slice",{ACCESSORS:!0,0:0,1:2}),x=d("species"),m=[].slice,y=Math.max;o({target:"Array",proto:!0,forced:!p||!v},{slice:function(w,C){var S,T,_,E=f(this),D=l(E.length),b=c(w,D),I=c(C===void 0?D:C,D);if(s(E)&&(typeof(S=E.constructor)!="function"||S!==Array&&!s(S.prototype)?a(S)&&(S=S[x])===null&&(S=void 0):S=void 0,S===Array||S===void 0))return m.call(E,b,I);for(T=new(S===void 0?Array:S)(y(I-b,0)),_=0;b0&&(!w.multiline||w.multiline&&p[w.lastIndex-1]!==` -`)&&(T="(?: "+T+")",E=" "+E,_++),x=new RegExp("^(?:"+T+")",S)),g&&(x=new RegExp("^"+T+"$(?!\\s)",S)),d&&(v=w.lastIndex),m=l.call(C?x:w,E),C?m?(m.input=m.input.slice(_),m[0]=m[0].slice(_),m.index=w.lastIndex,w.lastIndex+=m[0].length):w.lastIndex=0:d&&m&&(w.lastIndex=w.global?m.index+m[0].length:v),g&&m&&m.length>1&&f.call(m[0],x,function(){for(y=1;y]*>)/g,x=/\$([$&'`]|\d\d?)/g;o("replace",2,function(m,y,w,C){var S=C.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,T=C.REPLACE_KEEPS_$0,_=S?"$":"$0";return[function(D,b){var I=f(this),R=D==null?void 0:D[m];return R!==void 0?R.call(D,I,b):y.call(String(I),D,b)},function(D,b){if(!S&&T||typeof b=="string"&&b.indexOf(_)===-1){var I=w(y,D,this,b);if(I.done)return I.value}var R=a(D),M=String(this),L=typeof b=="function";L||(b=String(b));var A=R.global;if(A){var G=R.unicode;R.lastIndex=0}for(var P=[];;){var N=d(R,M);if(N===null||(P.push(N),!A))break;String(N[0])===""&&(R.lastIndex=u(M,c(R.lastIndex),G))}for(var V,$="",H=0,Y=0;Y=H&&($+=M.slice(H,Q)+k,H=Q+ne.length)}return $+M.slice(H)}];function E(D,b,I,R,M,L){var A=I+D.length,G=R.length,P=x;return M!==void 0&&(M=s(M),P=v),y.call(L,P,function(N,V){var $;switch(V.charAt(0)){case"$":return"$";case"&":return D;case"`":return b.slice(0,I);case"'":return b.slice(A);case"<":$=M[V.slice(1,-1)];break;default:var H=+V;if(H===0)return N;if(H>G){var Y=p(H/10);return Y===0?N:Y<=G?R[Y-1]===void 0?V.charAt(1):R[Y-1]+V.charAt(1):N}$=R[H-1]}return $===void 0?"":$})}})},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(){this._items={},this._nullItems=[]}return a.prototype.copy=function(){var s=new a;for(var c in this._items)s._items[c]=this._items[c].slice(0);return s._nullItems=this._nullItems.slice(0),s},a.prototype.get=function(s,c){var l=c===null?this._nullItems:this._items[c]||null;if(l===null)return null;for(var f=null,u=0;u=b.length&&(b=void 0),{value:b&&b[M++],done:!b}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(b,I){var R=typeof Symbol=="function"&&b[Symbol.iterator];if(!R)return b;var M,L,A=R.call(b),G=[];try{for(;(I===void 0||I-- >0)&&!(M=A.next()).done;)G.push(M.value)}catch(P){L={error:P}}finally{try{M&&!M.done&&(R=A.return)&&R.call(A)}finally{if(L)throw L.error}}return G},s=this&&this.__spread||function(){for(var b=[],I=0;I=0;ae--)if((ye=K[ae]).shadowAdjustedTarget!==null){j=ye;break}if(j!==null)if(f.Guard.isNode(j.shadowAdjustedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(j.shadowAdjustedTarget,!0)))N=!0;else if(f.Guard.isNode(j.relatedTarget)&&f.Guard.isShadowRoot(g.tree_rootNode(j.relatedTarget,!0)))N=!0;else for(var he=0;he=0;ae--)(ye=K[ae]).shadowAdjustedTarget!==null?b._eventPhase=l.EventPhase.AtTarget:b._eventPhase=l.EventPhase.Capturing,C(ye,b,"capturing",M);for(ae=0;ae0&&(P=L[A-1]).shadowAdjustedTarget!==null)&&(I._target=P.shadowAdjustedTarget)}if(I._relatedTarget=b.relatedTarget,I._touchTargetList=b.touchTargetList,!I._stopPropagationFlag){I._currentTarget=b.invocationTarget;var N=I._currentTarget._eventListenerList,V=new(Array.bind.apply(Array,s([void 0],N)));if(!S(I,V,R,b,M)&&I._isTrusted){var $=I._type;$==="animationend"?I._type="webkitAnimationEnd":$==="animationiteration"?I._type="webkitAnimationIteration":$==="animationstart"?I._type="webkitAnimationStart":$==="transitionend"&&(I._type="webkitTransitionEnd"),S(I,V,R,b,M),I._type=$}}}function S(b,I,R,M,L){L===void 0&&(L={value:!1});for(var A=!1,G=0;G=w.length&&(w=void 0),{value:w&&w[T++],done:!w}}};throw new TypeError(C?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(w,C){var S=typeof Symbol=="function"&&w[Symbol.iterator];if(!S)return w;var T,_,E=S.call(w),D=[];try{for(;(C===void 0||C-- >0)&&!(T=E.next()).done;)D.push(T.value)}catch(b){_={error:b}}finally{try{T&&!T.done&&(S=E.return)&&S.call(E)}finally{if(_)throw _.error}}return D};Object.defineProperty(n,"__esModule",{value:!0});var l=i(6),f=i(2),u=i(9),d=i(34),h=i(3),g=i(1),p=i(7),v=i(152),x=i(0),m=i(12),y=function(w){function C(){var S=w.call(this)||this;return S._children=new Set,S._encoding={name:"UTF-8",labels:["unicode-1-1-utf-8","utf-8","utf8"]},S._contentType="application/xml",S._URL={scheme:"about",username:"",password:"",host:null,port:null,path:["blank"],query:null,fragment:null,_cannotBeABaseURLFlag:!0,_blobURLEntry:null},S._origin=null,S._type="xml",S._mode="no-quirks",S._documentElement=null,S._hasNamespaces=!1,S._nodeDocumentOverwrite=null,S}return a(C,w),Object.defineProperty(C.prototype,"_nodeDocument",{get:function(){return this._nodeDocumentOverwrite||this},set:function(S){this._nodeDocumentOverwrite=S},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"implementation",{get:function(){return this._implementation||(this._implementation=x.create_domImplementation(this))},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"URL",{get:function(){return v.urlSerializer(this._URL)},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"documentURI",{get:function(){return this.URL},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"origin",{get:function(){return"null"},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"compatMode",{get:function(){return this._mode==="quirks"?"BackCompat":"CSS1Compat"},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"characterSet",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"charset",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"inputEncoding",{get:function(){return this._encoding.name},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"contentType",{get:function(){return this._contentType},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"doctype",{get:function(){var S,T;try{for(var _=s(this._children),E=_.next();!E.done;E=_.next()){var D=E.value;if(h.Guard.isDocumentTypeNode(D))return D}}catch(b){S={error:b}}finally{try{E&&!E.done&&(T=_.return)&&T.call(_)}finally{if(S)throw S.error}}return null},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"documentElement",{get:function(){return this._documentElement},enumerable:!0,configurable:!0}),C.prototype.getElementsByTagName=function(S){return x.node_listOfElementsWithQualifiedName(S,this)},C.prototype.getElementsByTagNameNS=function(S,T){return x.node_listOfElementsWithNamespace(S,T,this)},C.prototype.getElementsByClassName=function(S){return x.node_listOfElementsWithClassNames(S,this)},C.prototype.createElement=function(S,T){if(!x.xml_isName(S))throw new u.InvalidCharacterError;this._type==="html"&&(S=S.toLowerCase());var _=null;T!==void 0&&(_=g.isString(T)?T:T.is);var E=this._type==="html"||this._contentType==="application/xhtml+xml"?p.namespace.HTML:null;return x.element_createAnElement(this,S,E,null,_,!0)},C.prototype.createElementNS=function(S,T,_){return x.document_internalCreateElementNS(this,S,T,_)},C.prototype.createDocumentFragment=function(){return x.create_documentFragment(this)},C.prototype.createTextNode=function(S){return x.create_text(this,S)},C.prototype.createCDATASection=function(S){if(this._type==="html")throw new u.NotSupportedError;if(S.indexOf("]]>")!==-1)throw new u.InvalidCharacterError;return x.create_cdataSection(this,S)},C.prototype.createComment=function(S){return x.create_comment(this,S)},C.prototype.createProcessingInstruction=function(S,T){if(!x.xml_isName(S))throw new u.InvalidCharacterError;if(T.indexOf("?>")!==-1)throw new u.InvalidCharacterError;return x.create_processingInstruction(this,S,T)},C.prototype.importNode=function(S,T){if(T===void 0&&(T=!1),h.Guard.isDocumentNode(S)||h.Guard.isShadowRoot(S))throw new u.NotSupportedError;return x.node_clone(S,this,T)},C.prototype.adoptNode=function(S){if(h.Guard.isDocumentNode(S))throw new u.NotSupportedError;if(h.Guard.isShadowRoot(S))throw new u.HierarchyRequestError;return x.document_adopt(S,this),S},C.prototype.createAttribute=function(S){if(!x.xml_isName(S))throw new u.InvalidCharacterError;return this._type==="html"&&(S=S.toLowerCase()),x.create_attr(this,S)},C.prototype.createAttributeNS=function(S,T){var _=c(x.namespace_validateAndExtract(S,T),3),E=_[0],D=_[1],b=_[2],I=x.create_attr(this,b);return I._namespace=E,I._namespacePrefix=D,I},C.prototype.createEvent=function(S){return x.event_createLegacyEvent(S)},C.prototype.createRange=function(){var S=x.create_range();return S._start=[this,0],S._end=[this,0],S},C.prototype.createNodeIterator=function(S,T,_){T===void 0&&(T=f.WhatToShow.All),_===void 0&&(_=null);var E=x.create_nodeIterator(S,S,!0);return E._whatToShow=T,E._iteratorCollection=x.create_nodeList(S),g.isFunction(_)?(E._filter=x.create_nodeFilter(),E._filter.acceptNode=_):E._filter=_,E},C.prototype.createTreeWalker=function(S,T,_){T===void 0&&(T=f.WhatToShow.All),_===void 0&&(_=null);var E=x.create_treeWalker(S,S);return E._whatToShow=T,g.isFunction(_)?(E._filter=x.create_nodeFilter(),E._filter.acceptNode=_):E._filter=_,E},C.prototype._getTheParent=function(S){return S._type==="load"?null:l.dom.window},C.prototype.getElementById=function(S){throw new Error("Mixin: NonElementParentNode not implemented.")},Object.defineProperty(C.prototype,"children",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"firstElementChild",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"lastElementChild",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),Object.defineProperty(C.prototype,"childElementCount",{get:function(){throw new Error("Mixin: ParentNode not implemented.")},enumerable:!0,configurable:!0}),C.prototype.prepend=function(){for(var S=[],T=0;T=v.length&&(v=void 0),{value:v&&v[y++],done:!v}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(v,x){var m=typeof Symbol=="function"&&v[Symbol.iterator];if(!m)return v;var y,w,C=m.call(v),S=[];try{for(;(x===void 0||x-- >0)&&!(y=C.next()).done;)S.push(y.value)}catch(T){w={error:T}}finally{try{y&&!y.done&&(m=C.return)&&m.call(C)}finally{if(w)throw w.error}}return S};Object.defineProperty(n,"__esModule",{value:!0});var l=i(2),f=i(34),u=i(9),d=i(7),h=i(0),g=i(12),p=function(v){function x(){var m=v.call(this)||this;return m._children=new Set,m._namespace=null,m._namespacePrefix=null,m._localName="",m._customElementState="undefined",m._customElementDefinition=null,m._is=null,m._shadowRoot=null,m._attributeList=h.create_namedNodeMap(m),m._attributeChangeSteps=[],m._name="",m._assignedSlot=null,m}return a(x,v),Object.defineProperty(x.prototype,"namespaceURI",{get:function(){return this._namespace},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"prefix",{get:function(){return this._namespacePrefix},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"localName",{get:function(){return this._localName},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"tagName",{get:function(){return this._htmlUppercasedQualifiedName},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"id",{get:function(){return h.element_getAnAttributeValue(this,"id")},set:function(m){h.element_setAnAttributeValue(this,"id",m)},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"className",{get:function(){return h.element_getAnAttributeValue(this,"class")},set:function(m){h.element_setAnAttributeValue(this,"class",m)},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"classList",{get:function(){var m=h.element_getAnAttributeByName("class",this);return m===null&&(m=h.create_attr(this._nodeDocument,"class")),h.create_domTokenList(this,m)},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"slot",{get:function(){return h.element_getAnAttributeValue(this,"slot")},set:function(m){h.element_setAnAttributeValue(this,"slot",m)},enumerable:!0,configurable:!0}),x.prototype.hasAttributes=function(){return this._attributeList.length!==0},Object.defineProperty(x.prototype,"attributes",{get:function(){return this._attributeList},enumerable:!0,configurable:!0}),x.prototype.getAttributeNames=function(){var m,y,w=[];try{for(var C=s(this._attributeList),S=C.next();!S.done;S=C.next()){var T=S.value;w.push(T._qualifiedName)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(m)throw m.error}}return w},x.prototype.getAttribute=function(m){var y=h.element_getAnAttributeByName(m,this);return y?y._value:null},x.prototype.getAttributeNS=function(m,y){var w=h.element_getAnAttributeByNamespaceAndLocalName(m,y,this);return w?w._value:null},x.prototype.setAttribute=function(m,y){if(!h.xml_isName(m))throw new u.InvalidCharacterError;this._namespace===d.namespace.HTML&&this._nodeDocument._type==="html"&&(m=m.toLowerCase());for(var w=null,C=0;C=h.length&&(h=void 0),{value:h&&h[v++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(2),l=i(71),f=i(0),u=i(12),d=function(h){function g(p){p===void 0&&(p="");var v=h.call(this,p)||this;return v._name="",v._assignedSlot=null,v}return a(g,h),Object.defineProperty(g.prototype,"wholeText",{get:function(){var p,v,x="";try{for(var m=s(f.text_contiguousTextNodes(this,!0)),y=m.next();!y.done;y=m.next())x+=y.value._data}catch(w){p={error:w}}finally{try{y&&!y.done&&(v=m.return)&&v.call(m)}finally{if(p)throw p.error}}return x},enumerable:!0,configurable:!0}),g.prototype.splitText=function(p){return f.text_split(this,p)},Object.defineProperty(g.prototype,"assignedSlot",{get:function(){throw new Error("Mixin: Slotable not implemented.")},enumerable:!0,configurable:!0}),g._create=function(p,v){v===void 0&&(v="");var x=new g(v);return x._nodeDocument=p,x},g}(l.CharacterDataImpl);n.TextImpl=d,u.idl_defineConst(d.prototype,"_nodeType",c.NodeType.Text)},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(){}return Object.defineProperty(a.prototype,"_startNode",{get:function(){return this._start[0]},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"_startOffset",{get:function(){return this._start[1]},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"_endNode",{get:function(){return this._end[0]},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"_endOffset",{get:function(){return this._end[1]},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"_collapsed",{get:function(){return this._start[0]===this._end[0]&&this._start[1]===this._end[1]},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"startContainer",{get:function(){return this._startNode},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"startOffset",{get:function(){return this._startOffset},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"endContainer",{get:function(){return this._endNode},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"endOffset",{get:function(){return this._endOffset},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"collapsed",{get:function(){return this._collapsed},enumerable:!0,configurable:!0}),a}();n.AbstractRangeImpl=o},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=function(){function s(c){this._activeFlag=!1,this._root=c,this._whatToShow=o.WhatToShow.All,this._filter=null}return Object.defineProperty(s.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"whatToShow",{get:function(){return this._whatToShow},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"filter",{get:function(){return this._filter},enumerable:!0,configurable:!0}),s}();n.TraverserImpl=a},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=i(0),s=i(12),c=function(){function l(f,u){this._target=null,this._relatedTarget=null,this._touchTargetList=[],this._path=[],this._currentTarget=null,this._eventPhase=o.EventPhase.None,this._stopPropagationFlag=!1,this._stopImmediatePropagationFlag=!1,this._canceledFlag=!1,this._inPassiveListenerFlag=!1,this._composedFlag=!1,this._initializedFlag=!1,this._dispatchFlag=!1,this._isTrusted=!1,this._bubbles=!1,this._cancelable=!1,this._type=f,u&&(this._bubbles=u.bubbles||!1,this._cancelable=u.cancelable||!1,this._composedFlag=u.composed||!1),this._initializedFlag=!0,this._timeStamp=new Date().getTime()}return Object.defineProperty(l.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"target",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"srcElement",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"currentTarget",{get:function(){return this._currentTarget},enumerable:!0,configurable:!0}),l.prototype.composedPath=function(){var f=[],u=this._path;if(u.length===0)return f;var d=this._currentTarget;if(d===null)throw new Error("Event currentTarget is null.");f.push(d);for(var h=0,g=0,p=u.length-1;p>=0;){if(u[p].rootOfClosedTree&&g++,u[p].invocationTarget===d){h=p;break}u[p].slotInClosedTree&&g--,p--}var v=g,x=g;for(p=h-1;p>=0;)u[p].rootOfClosedTree&&v++,v<=x&&f.unshift(u[p].invocationTarget),u[p].slotInClosedTree&&--v0)&&!(w=S.next()).done;)T.push(w.value)}catch(_){C={error:_}}finally{try{w&&!w.done&&(y=S.return)&&y.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(x){var m=typeof Symbol=="function"&&Symbol.iterator,y=m&&x[m],w=0;if(y)return y.call(x);if(x&&typeof x.length=="number")return{next:function(){return x&&w>=x.length&&(x=void 0),{value:x&&x[w++],done:!x}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var s=i(6),c=i(3),l=i(1),f=i(99),u=i(73),d=i(17),h=i(173),g=i(30),p=i(52),v=i(37);n.document_elementInterface=function(x,m){return f.ElementImpl},n.document_internalCreateElementNS=function(x,m,y,w){var C=o(h.namespace_validateAndExtract(m,y),3),S=C[0],T=C[1],_=C[2],E=null;return w!==void 0&&(E=l.isString(w)?w:w.is),p.element_createAnElement(x,_,S,T,E,!0)},n.document_adopt=function(x,m){var y,w;if(x._nodeDocument!==m||x._parent!==null){var C=x._nodeDocument;if(x._parent&&v.mutation_remove(x,x._parent),m!==C)for(var S=d.tree_getFirstDescendantNode(x,!0,!0);S!==null;){if(S._nodeDocument=m,c.Guard.isElementNode(S))try{for(var T=(y=void 0,a(S._attributeList._asArray())),_=T.next();!_.done;_=T.next())_.value._nodeDocument=m}catch(E){y={error:E}}finally{try{_&&!_.done&&(w=T.return)&&w.call(T)}finally{if(y)throw y.error}}s.dom.features.customElements&&c.Guard.isElementNode(S)&&S._customElementState==="custom"&&u.customElement_enqueueACustomElementCallbackReaction(S,"adoptedCallback",[C,m]),s.dom.features.steps&&g.dom_runAdoptingSteps(S,C),S=d.tree_getNextDescendantNode(x,S,!0,!0)}}}},function(r,n,i){var o=this&&this.__values||function(d){var h=typeof Symbol=="function"&&Symbol.iterator,g=h&&d[h],p=0;if(g)return g.call(d);if(d&&typeof d.length=="number")return{next:function(){return d&&p>=d.length&&(d=void 0),{value:d&&d[p++],done:!d}}};throw new TypeError(h?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(3),c=i(9),l=i(17),f=i(51),u=i(30);n.characterData_replaceData=function(d,h,g,p){var v,x,m=l.tree_nodeLength(d);if(h>m)throw new c.IndexSizeError("Offset exceeds character data length. Offset: "+h+", Length: "+m+", Node is "+d.nodeName+".");h+g>m&&(g=m-h),a.dom.features.mutationObservers&&f.observer_queueMutationRecord("characterData",d,null,null,d._data,[],[],null,null);var y=d._data.substring(0,h)+p+d._data.substring(h+g);d._data=y;try{for(var w=o(a.dom.rangeList),C=w.next();!C.done;C=w.next()){var S=C.value;S._start[0]===d&&S._start[1]>h&&S._start[1]<=h+g&&(S._start[1]=h),S._end[0]===d&&S._end[1]>h&&S._end[1]<=h+g&&(S._end[1]=h),S._start[0]===d&&S._start[1]>h+g&&(S._start[1]+=p.length-g),S._end[0]===d&&S._end[1]>h+g&&(S._end[1]+=p.length-g)}}catch(T){v={error:T}}finally{try{C&&!C.done&&(x=w.return)&&x.call(w)}finally{if(v)throw v.error}}a.dom.features.steps&&s.Guard.isTextNode(d)&&d._parent!==null&&u.dom_runChildTextContentChangeSteps(d._parent)},n.characterData_substringData=function(d,h,g){var p=l.tree_nodeLength(d);if(h>p)throw new c.IndexSizeError("Offset exceeds character data length. Offset: "+h+", Length: "+p+", Node is "+d.nodeName+".");return h+g>p?d._data.substr(h):d._data.substr(h,g)}},function(r,n,i){var o=this&&this.__read||function(u,d){var h=typeof Symbol=="function"&&u[Symbol.iterator];if(!h)return u;var g,p,v=h.call(u),x=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)x.push(g.value)}catch(m){p={error:m}}finally{try{g&&!g.done&&(h=v.return)&&h.call(v)}finally{if(p)throw p.error}}return x},a=this&&this.__spread||function(){for(var u=[],d=0;d=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(7);function l(u){var d=c.string.splitAStringOnASCIIWhitespace(u);return new Set(d)}function f(u){return a(u).join(" ")}n.orderedSet_parse=l,n.orderedSet_serialize=f,n.orderedSet_sanitize=function(u){return f(l(u))},n.orderedSet_contains=function(u,d,h){var g,p,v,x;try{for(var m=s(d),y=m.next();!y.done;y=m.next()){var w=y.value,C=!1;try{for(var S=(v=void 0,s(u)),T=S.next();!T.done;T=S.next()){var _=T.value;if(h){if(_===w){C=!0;break}}else if(_.toUpperCase()===w.toUpperCase()){C=!0;break}}}catch(E){v={error:E}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(v)throw v.error}}if(!C)return!1}}catch(E){g={error:E}}finally{try{y&&!y.done&&(p=m.return)&&p.call(m)}finally{if(g)throw g.error}}return!0}},function(r,n,i){i(179),Object.defineProperty(n,"__esModule",{value:!0});var o=i(262),a=i(110),s=i(1);a.dom.setFeatures(!1),n.createDocument=function(){var c=new o.DOMImplementation().createDocument(null,"root",null);return c.documentElement&&c.removeChild(c.documentElement),c},n.sanitizeInput=function(c,l){if(c==null)return c;if(l===void 0)return c+"";var f="";c+="";for(var u=0;u=32&&d<=55295||d>=57344&&d<=65533)f+=c.charAt(u);else if(d>=55296&&d<=56319&&u=56320&&h<=57343?(d=1024*(d-55296)+h-56320+65536,f+=String.fromCodePoint(d),u++):f+=s.isString(l)?l:l(c.charAt(u),u,c)}else f+=s.isString(l)?l:l(c.charAt(u),u,c)}return f}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(1),a=i(153);n.AbortController=a.AbortControllerImpl;var s=i(154);n.AbortSignal=s.AbortSignalImpl;var c=i(102);n.AbstractRange=c.AbstractRangeImpl;var l=i(157);n.Attr=l.AttrImpl;var f=i(158);n.CDATASection=f.CDATASectionImpl;var u=i(71);n.CharacterData=u.CharacterDataImpl;var d=i(263),h=i(159);n.Comment=h.CommentImpl;var g=i(171);n.CustomEvent=g.CustomEventImpl;var p=i(100);n.DocumentFragment=p.DocumentFragmentImpl;var v=i(98);n.Document=v.DocumentImpl;var x=i(264),m=i(155);n.DocumentType=m.DocumentTypeImpl;var y=i(6);n.dom=y.dom;var w=i(148);n.DOMImplementation=w.DOMImplementationImpl;var C=i(170);n.DOMTokenList=C.DOMTokenListImpl;var S=i(99);n.Element=S.ElementImpl;var T=i(104);n.Event=T.EventImpl;var _=i(70);n.EventTarget=_.EventTargetImpl;var E=i(161);n.HTMLCollection=E.HTMLCollectionImpl;var D=i(265);n.MutationObserver=D.MutationObserverImpl;var b=i(169);n.MutationRecord=b.MutationRecordImpl;var I=i(164);n.NamedNodeMap=I.NamedNodeMapImpl;var R=i(168);n.NodeFilter=R.NodeFilterImpl;var M=i(34);n.Node=M.NodeImpl;var L=i(166);n.NodeIterator=L.NodeIteratorImpl;var A=i(162);n.NodeList=A.NodeListImpl;var G=i(163);n.NodeListStatic=G.NodeListStaticImpl;var P=i(266),N=i(267),V=i(268),$=i(160);n.ProcessingInstruction=$.ProcessingInstructionImpl;var H=i(165);n.Range=H.RangeImpl;var Y=i(156);n.ShadowRoot=Y.ShadowRootImpl;var ne=i(269),Q=i(270);n.StaticRange=Q.StaticRangeImpl;var ee=i(101);n.Text=ee.TextImpl;var de=i(103);n.Traverser=de.TraverserImpl;var fe=i(167);n.TreeWalker=fe.TreeWalkerImpl;var le=i(149);n.Window=le.WindowImpl;var k=i(151);n.XMLDocument=k.XMLDocumentImpl,o.applyMixin(S.ElementImpl,d.ChildNodeImpl),o.applyMixin(u.CharacterDataImpl,d.ChildNodeImpl),o.applyMixin(m.DocumentTypeImpl,d.ChildNodeImpl),o.applyMixin(v.DocumentImpl,x.DocumentOrShadowRootImpl),o.applyMixin(Y.ShadowRootImpl,x.DocumentOrShadowRootImpl),o.applyMixin(S.ElementImpl,P.NonDocumentTypeChildNodeImpl),o.applyMixin(u.CharacterDataImpl,P.NonDocumentTypeChildNodeImpl),o.applyMixin(v.DocumentImpl,N.NonElementParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,N.NonElementParentNodeImpl),o.applyMixin(v.DocumentImpl,V.ParentNodeImpl),o.applyMixin(p.DocumentFragmentImpl,V.ParentNodeImpl),o.applyMixin(S.ElementImpl,V.ParentNodeImpl),o.applyMixin(ee.TextImpl,ne.SlotableImpl),o.applyMixin(S.ElementImpl,ne.SlotableImpl)},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),function(o){o[o.EOF=0]="EOF",o[o.Declaration=1]="Declaration",o[o.DocType=2]="DocType",o[o.Element=3]="Element",o[o.Text=4]="Text",o[o.CDATA=5]="CDATA",o[o.PI=6]="PI",o[o.Comment=7]="Comment",o[o.ClosingTag=8]="ClosingTag"}(n.TokenType||(n.TokenType={}))},function(r,n,i){i(64),i(20),i(66);var o,a=this&&this.__extends||(o=function(l,f){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,d){u.__proto__=d}||function(u,d){for(var h in d)d.hasOwnProperty(h)&&(u[h]=d[h])})(l,f)},function(l,f){function u(){this.constructor=l}o(l,f),l.prototype=f===null?Object.create(f):(u.prototype=f.prototype,new u)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(1),c=function(l){function f(){return l!==null&&l.apply(this,arguments)||this}return a(f,l),f.prototype._parse=function(u,d){var h=this,g=this._builderOptions,p=null;return s.isFunction(d)?p=this.parse(u,d.apply(this)):s.isArray(d)||s.isSet(d)?s.forEachArray(d,function(v){return p=h.parse(u,v)},this):s.isMap(d)||s.isObject(d)?s.forEachObject(d,function(v,x){if(s.isFunction(x)&&(x=x.apply(h)),g.ignoreConverters||v.indexOf(g.convert.att)!==0)if(g.ignoreConverters||v.indexOf(g.convert.text)!==0)if(g.ignoreConverters||v.indexOf(g.convert.cdata)!==0)if(g.ignoreConverters||v.indexOf(g.convert.comment)!==0)if(g.ignoreConverters||v.indexOf(g.convert.ins)!==0){if(!((s.isArray(x)||s.isSet(x))&&s.isEmpty(x))){if((s.isMap(x)||s.isObject(x))&&s.isEmpty(x))p=h.element(u,void 0,h.sanitize(v))||p;else if(g.keepNullNodes||x!=null)if(s.isArray(x)||s.isSet(x))s.forEachArray(x,function(S){var T={};T[v]=S,p=h.parse(u,T)},h);else if(s.isMap(x)||s.isObject(x))(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.parse(m,x));else if(x!=null&&x!==""){var m;(m=h.element(u,void 0,h.sanitize(v)))&&(p=m,h.text(m,h._decodeText(h.sanitize(x))))}else p=h.element(u,void 0,h.sanitize(v))||p}}else if(s.isString(x)){var y=x.indexOf(" "),w=y===-1?x:x.substr(0,y),C=y===-1?"":x.substr(y+1);p=h.instruction(u,h.sanitize(w),h.sanitize(C))||p}else s.isArray(x)||s.isSet(x)?s.forEachArray(x,function(S){var T=S.indexOf(" "),_=T===-1?S:S.substr(0,T),E=T===-1?"":S.substr(T+1);p=h.instruction(u,h.sanitize(_),h.sanitize(E))||p},h):s.forEachObject(x,function(S,T){return p=h.instruction(u,h.sanitize(S),h.sanitize(T))||p},h);else s.isArray(x)||s.isSet(x)?s.forEachArray(x,function(S){return p=h.comment(u,h.sanitize(S))||p},h):p=h.comment(u,h.sanitize(x))||p;else s.isArray(x)||s.isSet(x)?s.forEachArray(x,function(S){return p=h.cdata(u,h.sanitize(S))||p},h):p=h.cdata(u,h.sanitize(x))||p;else p=s.isMap(x)||s.isObject(x)?h.parse(u,x):h.text(u,h._decodeText(h.sanitize(x)))||p;else if(v===g.convert.att){if(s.isArray(x)||s.isSet(x))throw new Error("Invalid attribute: "+x.toString()+". "+u._debugInfo());s.forEachObject(x,function(S,T){p=h.attribute(u,void 0,h.sanitize(S),h._decodeAttributeValue(h.sanitize(T)))||p})}else p=h.attribute(u,void 0,h.sanitize(v.substr(g.convert.att.length)),h._decodeAttributeValue(h.sanitize(x)))||p},this):(g.keepNullNodes||d!=null)&&(p=this.text(u,this._decodeText(this.sanitize(d)))||p),p||u},f}(i(75).BaseReader);n.ObjectReader=c},function(r,n,i){var o=i(39);r.exports=new o({explicit:[i(286),i(287),i(288)]})},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(a){this.level=0,this._builderOptions=a,this._writerOptions=a};n.BaseCBWriter=o},function(r,n,i){var o=i(16),a=i(8),s=i(116);r.exports=!o&&!a(function(){return Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a!=7})},function(r,n,i){var o=i(11),a=i(13),s=o.document,c=a(s)&&a(s.createElement);r.exports=function(l){return c?s.createElement(l):{}}},function(r,n,i){var o=i(118),a=Function.toString;typeof o.inspectSource!="function"&&(o.inspectSource=function(s){return a.call(s)}),r.exports=o.inspectSource},function(r,n,i){var o=i(11),a=i(80),s=o["__core-js_shared__"]||a("__core-js_shared__",{});r.exports=s},function(r,n,i){var o=i(14),a=i(187),s=i(55),c=i(15);r.exports=function(l,f){for(var u=a(f),d=c.f,h=s.f,g=0;gh;)o(d,u=f[h++])&&(~s(g,u)||g.push(u));return g}},function(r,n,i){var o=i(24),a=i(26),s=i(83),c=function(l){return function(f,u,d){var h,g=o(f),p=a(g.length),v=s(d,p);if(l&&u!=u){for(;p>v;)if((h=g[v++])!=h)return!0}else for(;p>v;v++)if((l||v in g)&&g[v]===u)return l||v||0;return!l&&-1}};r.exports={includes:c(!0),indexOf:c(!1)}},function(r,n,i){var o=i(8),a=/#|\.prototype\./,s=function(d,h){var g=l[c(d)];return g==u||g!=f&&(typeof h=="function"?o(h):!!h)},c=s.normalize=function(d){return String(d).replace(a,".").toLowerCase()},l=s.data={},f=s.NATIVE="N",u=s.POLYFILL="P";r.exports=s},function(r,n,i){var o=i(86);r.exports=o&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},function(r,n,i){var o=i(5);n.f=o},function(r,n,i){var o=i(120),a=i(14),s=i(125),c=i(15).f;r.exports=function(l){var f=o.Symbol||(o.Symbol={});a(f,l)||c(f,l,{value:s.f(l)})}},function(r,n){r.exports=function(i){if(typeof i!="function")throw TypeError(String(i)+" is not a function");return i}},function(r,n,i){var o=i(13),a=i(59),s=i(5)("species");r.exports=function(c,l){var f;return a(c)&&(typeof(f=c.constructor)!="function"||f!==Array&&!a(f.prototype)?o(f)&&(f=f[s])===null&&(f=void 0):f=void 0),new(f===void 0?Array:f)(l===0?0:l)}},function(r,n,i){var o,a,s=i(11),c=i(193),l=s.process,f=l&&l.versions,u=f&&f.v8;u?a=(o=u.split("."))[0]+o[1]:c&&(!(o=c.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=c.match(/Chrome\/(\d+)/))&&(a=o[1]),r.exports=a&&+a},function(r,n,i){var o=i(5),a=i(60),s=i(15),c=o("unscopables"),l=Array.prototype;l[c]==null&&s.f(l,c,{configurable:!0,value:a(null)}),r.exports=function(f){l[c][f]=!0}},function(r,n,i){var o,a,s,c=i(132),l=i(21),f=i(14),u=i(5),d=i(44),h=u("iterator"),g=!1;[].keys&&("next"in(s=[].keys())?(a=c(c(s)))!==Object.prototype&&(o=a):g=!0),o==null&&(o={}),d||f(o,h)||l(o,h,function(){return this}),r.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:g}},function(r,n,i){var o=i(14),a=i(27),s=i(57),c=i(196),l=s("IE_PROTO"),f=Object.prototype;r.exports=c?Object.getPrototypeOf:function(u){return u=a(u),o(u,l)?u[l]:typeof u.constructor=="function"&&u instanceof u.constructor?u.constructor.prototype:u instanceof Object?f:null}},function(r,n,i){var o=i(18),a=i(197);r.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var s,c=!1,l={};try{(s=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(l,[]),c=l instanceof Array}catch{}return function(f,u){return o(f),a(u),c?s.call(f,u):f.__proto__=u,f}}():void 0)},function(r,n,i){var o=i(56),a=i(15),s=i(40);r.exports=function(c,l,f){var u=o(l);u in c?a.f(c,u,s(0,f)):c[u]=f}},function(r,n,i){var o=i(90),a=i(42),s=i(5)("toStringTag"),c=a(function(){return arguments}())=="Arguments";r.exports=o?a:function(l){var f,u,d;return l===void 0?"Undefined":l===null?"Null":typeof(u=function(h,g){try{return h[g]}catch{}}(f=Object(l),s))=="string"?u:c?a(f):(d=a(f))=="Object"&&typeof f.callee=="function"?"Arguments":d}},function(r,n,i){var o=i(18);r.exports=function(){var a=o(this),s="";return a.global&&(s+="g"),a.ignoreCase&&(s+="i"),a.multiline&&(s+="m"),a.dotAll&&(s+="s"),a.unicode&&(s+="u"),a.sticky&&(s+="y"),s}},function(r,n,i){var o=i(47),a=i(35),s=function(c){return function(l,f){var u,d,h=String(a(l)),g=o(f),p=h.length;return g<0||g>=p?c?"":void 0:(u=h.charCodeAt(g))<55296||u>56319||g+1===p||(d=h.charCodeAt(g+1))<56320||d>57343?c?h.charAt(g):u:c?h.slice(g,g+2):d-56320+(u-55296<<10)+65536}};r.exports={codeAt:s(!1),charAt:s(!0)}},function(r,n,i){var o=i(4),a=i(27),s=i(61);o({target:"Object",stat:!0,forced:i(8)(function(){s(1)})},{keys:function(c){return s(a(c))}})},function(r,n,i){var o=i(4),a=i(11),s=i(123),c=i(25),l=i(140),f=i(141),u=i(142),d=i(13),h=i(8),g=i(208),p=i(62),v=i(209);r.exports=function(x,m,y){var w=x.indexOf("Map")!==-1,C=x.indexOf("Weak")!==-1,S=w?"set":"add",T=a[x],_=T&&T.prototype,E=T,D={},b=function(G){var P=_[G];c(_,G,G=="add"?function(N){return P.call(this,N===0?0:N),this}:G=="delete"?function(N){return!(C&&!d(N))&&P.call(this,N===0?0:N)}:G=="get"?function(N){return C&&!d(N)?void 0:P.call(this,N===0?0:N)}:G=="has"?function(N){return!(C&&!d(N))&&P.call(this,N===0?0:N)}:function(N,V){return P.call(this,N===0?0:N,V),this})};if(s(x,typeof T!="function"||!(C||_.forEach&&!h(function(){new T().entries().next()}))))E=y.getConstructor(m,x,w,S),l.REQUIRED=!0;else if(s(x,!0)){var I=new E,R=I[S](C?{}:-0,1)!=I,M=h(function(){I.has(1)}),L=g(function(G){new T(G)}),A=!C&&h(function(){for(var G=new T,P=5;P--;)G[S](P,P);return!G.has(-0)});L||((E=m(function(G,P){u(G,E,x);var N=v(new T,G,E);return P!=null&&f(P,N[S],N,w),N})).prototype=_,_.constructor=E),(M||A)&&(b("delete"),b("has"),w&&b("get")),(A||R)&&b(S),C&&_.clear&&delete _.clear}return D[x]=E,o({global:!0,forced:E!=T},D),p(E,x),C||y.setStrong(E,x,w),E}},function(r,n,i){var o=i(45),a=i(13),s=i(14),c=i(15).f,l=i(58),f=i(204),u=l("meta"),d=0,h=Object.isExtensible||function(){return!0},g=function(v){c(v,u,{value:{objectID:"O"+ ++d,weakData:{}}})},p=r.exports={REQUIRED:!1,fastKey:function(v,x){if(!a(v))return typeof v=="symbol"?v:(typeof v=="string"?"S":"P")+v;if(!s(v,u)){if(!h(v))return"F";if(!x)return"E";g(v)}return v[u].objectID},getWeakData:function(v,x){if(!s(v,u)){if(!h(v))return!0;if(!x)return!1;g(v)}return v[u].weakData},onFreeze:function(v){return f&&p.REQUIRED&&h(v)&&!s(v,u)&&g(v),v}};o[u]=!0},function(r,n,i){var o=i(18),a=i(205),s=i(26),c=i(87),l=i(206),f=i(207),u=function(d,h){this.stopped=d,this.result=h};(r.exports=function(d,h,g,p,v){var x,m,y,w,C,S,T,_=c(h,g,p?2:1);if(v)x=d;else{if(typeof(m=l(d))!="function")throw TypeError("Target is not iterable");if(a(m)){for(y=0,w=s(d.length);w>y;y++)if((C=p?_(o(T=d[y])[0],T[1]):_(d[y]))&&C instanceof u)return C;return new u(!1)}x=m.call(d)}for(S=x.next;!(T=S.call(x)).done;)if(typeof(C=f(x,_,T.value,p))=="object"&&C&&C instanceof u)return C;return new u(!1)}).stop=function(d){return new u(!0,d)}},function(r,n){r.exports=function(i,o,a){if(!(i instanceof o))throw TypeError("Incorrect "+(a?a+" ":"")+"invocation");return i}},function(r,n,i){var o=i(15).f,a=i(60),s=i(210),c=i(87),l=i(142),f=i(141),u=i(88),d=i(211),h=i(16),g=i(140).fastKey,p=i(43),v=p.set,x=p.getterFor;r.exports={getConstructor:function(m,y,w,C){var S=m(function(D,b){l(D,S,y),v(D,{type:y,index:a(null),first:void 0,last:void 0,size:0}),h||(D.size=0),b!=null&&f(b,D[C],D,w)}),T=x(y),_=function(D,b,I){var R,M,L=T(D),A=E(D,b);return A?A.value=I:(L.last=A={index:M=g(b,!0),key:b,value:I,previous:R=L.last,next:void 0,removed:!1},L.first||(L.first=A),R&&(R.next=A),h?L.size++:D.size++,M!=="F"&&(L.index[M]=A)),D},E=function(D,b){var I,R=T(D),M=g(b);if(M!=="F")return R.index[M];for(I=R.first;I;I=I.next)if(I.key==b)return I};return s(S.prototype,{clear:function(){for(var D=T(this),b=D.index,I=D.first;I;)I.removed=!0,I.previous&&(I.previous=I.previous.next=void 0),delete b[I.index],I=I.next;D.first=D.last=void 0,h?D.size=0:this.size=0},delete:function(D){var b=T(this),I=E(this,D);if(I){var R=I.next,M=I.previous;delete b.index[I.index],I.removed=!0,M&&(M.next=R),R&&(R.previous=M),b.first==I&&(b.first=R),b.last==I&&(b.last=M),h?b.size--:this.size--}return!!I},forEach:function(D){for(var b,I=T(this),R=c(D,arguments.length>1?arguments[1]:void 0,3);b=b?b.next:I.first;)for(R(b.value,b.key,this);b&&b.removed;)b=b.previous},has:function(D){return!!E(this,D)}}),s(S.prototype,w?{get:function(D){var b=E(this,D);return b&&b.value},set:function(D,b){return _(this,D===0?0:D,b)}}:{add:function(D){return _(this,D=D===0?0:D,D)}}),h&&o(S.prototype,"size",{get:function(){return T(this).size}}),S},setStrong:function(m,y,w){var C=y+" Iterator",S=x(y),T=x(C);u(m,y,function(_,E){v(this,{type:C,target:_,state:S(_),kind:E,last:void 0})},function(){for(var _=T(this),E=_.kind,D=_.last;D&&D.removed;)D=D.previous;return _.target&&(_.last=D=D?D.next:_.state.first)?E=="keys"?{value:D.key,done:!1}:E=="values"?{value:D.value,done:!1}:{value:[D.key,D.value],done:!1}:(_.target=void 0,{value:void 0,done:!0})},w?"entries":"values",!w,!0),d(y)}}},function(r,n,i){var o,a=i(4),s=i(55).f,c=i(26),l=i(222),f=i(35),u=i(224),d=i(44),h="".endsWith,g=Math.min,p=u("endsWith");a({target:"String",proto:!0,forced:!!(d||p||(o=s(String.prototype,"endsWith"),!o||o.writable))&&!p},{endsWith:function(v){var x=String(f(this));l(v);var m=arguments.length>1?arguments[1]:void 0,y=c(x.length),w=m===void 0?y:g(c(m),y),C=String(v);return h?h.call(x,C,w):x.slice(w-C.length,w)===C}})},function(r,n,i){(function(o){/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */var a=i(229),s=i(230),c=i(231);function l(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function f(k,O){if(l()=l())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l().toString(16)+" bytes");return 0|k}function x(k,O){if(u.isBuffer(k))return k.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(k)||k instanceof ArrayBuffer))return k.byteLength;typeof k!="string"&&(k=""+k);var B=k.length;if(B===0)return 0;for(var U=!1;;)switch(O){case"ascii":case"latin1":case"binary":return B;case"utf8":case"utf-8":case void 0:return de(k).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*B;case"hex":return B>>>1;case"base64":return fe(k).length;default:if(U)return de(k).length;O=(""+O).toLowerCase(),U=!0}}function m(k,O,B){var U=!1;if((O===void 0||O<0)&&(O=0),O>this.length||((B===void 0||B>this.length)&&(B=this.length),B<=0)||(B>>>=0)<=(O>>>=0))return"";for(k||(k="utf8");;)switch(k){case"hex":return A(this,O,B);case"utf8":case"utf-8":return R(this,O,B);case"ascii":return M(this,O,B);case"latin1":case"binary":return L(this,O,B);case"base64":return I(this,O,B);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,O,B);default:if(U)throw new TypeError("Unknown encoding: "+k);k=(k+"").toLowerCase(),U=!0}}function y(k,O,B){var U=k[O];k[O]=k[B],k[B]=U}function w(k,O,B,U,z){if(k.length===0)return-1;if(typeof B=="string"?(U=B,B=0):B>2147483647?B=2147483647:B<-2147483648&&(B=-2147483648),B=+B,isNaN(B)&&(B=z?0:k.length-1),B<0&&(B=k.length+B),B>=k.length){if(z)return-1;B=k.length-1}else if(B<0){if(!z)return-1;B=0}if(typeof O=="string"&&(O=u.from(O,U)),u.isBuffer(O))return O.length===0?-1:C(k,O,B,U,z);if(typeof O=="number")return O&=255,u.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?z?Uint8Array.prototype.indexOf.call(k,O,B):Uint8Array.prototype.lastIndexOf.call(k,O,B):C(k,[O],B,U,z);throw new TypeError("val must be string, number or Buffer")}function C(k,O,B,U,z){var j,K=1,ae=k.length,he=O.length;if(U!==void 0&&((U=String(U).toLowerCase())==="ucs2"||U==="ucs-2"||U==="utf16le"||U==="utf-16le")){if(k.length<2||O.length<2)return-1;K=2,ae/=2,he/=2,B/=2}function ye(ie,Z){return K===1?ie[Z]:ie.readUInt16BE(Z*K)}if(z){var Te=-1;for(j=B;jae&&(B=ae-he),j=B;j>=0;j--){for(var q=!0,J=0;Jz&&(U=z):U=z;var j=O.length;if(j%2!=0)throw new TypeError("Invalid hex string");U>j/2&&(U=j/2);for(var K=0;K>8,he=K%256,ye.push(he),ye.push(ae);return ye}(O,k.length-B),k,B,U)}function I(k,O,B){return O===0&&B===k.length?a.fromByteArray(k):a.fromByteArray(k.slice(O,B))}function R(k,O,B){B=Math.min(k.length,B);for(var U=[],z=O;z239?4:ye>223?3:ye>191?2:1;if(z+q<=B)switch(q){case 1:ye<128&&(Te=ye);break;case 2:(192&(j=k[z+1]))==128&&(he=(31&ye)<<6|63&j)>127&&(Te=he);break;case 3:j=k[z+1],K=k[z+2],(192&j)==128&&(192&K)==128&&(he=(15&ye)<<12|(63&j)<<6|63&K)>2047&&(he<55296||he>57343)&&(Te=he);break;case 4:j=k[z+1],K=k[z+2],ae=k[z+3],(192&j)==128&&(192&K)==128&&(192&ae)==128&&(he=(15&ye)<<18|(63&j)<<12|(63&K)<<6|63&ae)>65535&&he<1114112&&(Te=he)}Te===null?(Te=65533,q=1):Te>65535&&(Te-=65536,U.push(Te>>>10&1023|55296),Te=56320|1023&Te),U.push(Te),z+=q}return function(J){var ie=J.length;if(ie<=4096)return String.fromCharCode.apply(String,J);for(var Z="",te=0;te0&&(k=this.toString("hex",0,O).match(/.{2}/g).join(" "),this.length>O&&(k+=" ... ")),""},u.prototype.compare=function(k,O,B,U,z){if(!u.isBuffer(k))throw new TypeError("Argument must be a Buffer");if(O===void 0&&(O=0),B===void 0&&(B=k?k.length:0),U===void 0&&(U=0),z===void 0&&(z=this.length),O<0||B>k.length||U<0||z>this.length)throw new RangeError("out of range index");if(U>=z&&O>=B)return 0;if(U>=z)return-1;if(O>=B)return 1;if(this===k)return 0;for(var j=(z>>>=0)-(U>>>=0),K=(B>>>=0)-(O>>>=0),ae=Math.min(j,K),he=this.slice(U,z),ye=k.slice(O,B),Te=0;Tez)&&(B=z),k.length>0&&(B<0||O<0)||O>this.length)throw new RangeError("Attempt to write outside buffer bounds");U||(U="utf8");for(var j=!1;;)switch(U){case"hex":return S(this,k,O,B);case"utf8":case"utf-8":return T(this,k,O,B);case"ascii":return _(this,k,O,B);case"latin1":case"binary":return E(this,k,O,B);case"base64":return D(this,k,O,B);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,k,O,B);default:if(j)throw new TypeError("Unknown encoding: "+U);U=(""+U).toLowerCase(),j=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function M(k,O,B){var U="";B=Math.min(k.length,B);for(var z=O;zU)&&(B=U);for(var z="",j=O;jB)throw new RangeError("Trying to access beyond buffer length")}function N(k,O,B,U,z,j){if(!u.isBuffer(k))throw new TypeError('"buffer" argument must be a Buffer instance');if(O>z||Ok.length)throw new RangeError("Index out of range")}function V(k,O,B,U){O<0&&(O=65535+O+1);for(var z=0,j=Math.min(k.length-B,2);z>>8*(U?z:1-z)}function $(k,O,B,U){O<0&&(O=4294967295+O+1);for(var z=0,j=Math.min(k.length-B,4);z>>8*(U?z:3-z)&255}function H(k,O,B,U,z,j){if(B+U>k.length)throw new RangeError("Index out of range");if(B<0)throw new RangeError("Index out of range")}function Y(k,O,B,U,z){return z||H(k,0,B,4),s.write(k,O,B,U,23,4),B+4}function ne(k,O,B,U,z){return z||H(k,0,B,8),s.write(k,O,B,U,52,8),B+8}u.prototype.slice=function(k,O){var B,U=this.length;if((k=~~k)<0?(k+=U)<0&&(k=0):k>U&&(k=U),(O=O===void 0?U:~~O)<0?(O+=U)<0&&(O=0):O>U&&(O=U),O0&&(z*=256);)U+=this[k+--O]*z;return U},u.prototype.readUInt8=function(k,O){return O||P(k,1,this.length),this[k]},u.prototype.readUInt16LE=function(k,O){return O||P(k,2,this.length),this[k]|this[k+1]<<8},u.prototype.readUInt16BE=function(k,O){return O||P(k,2,this.length),this[k]<<8|this[k+1]},u.prototype.readUInt32LE=function(k,O){return O||P(k,4,this.length),(this[k]|this[k+1]<<8|this[k+2]<<16)+16777216*this[k+3]},u.prototype.readUInt32BE=function(k,O){return O||P(k,4,this.length),16777216*this[k]+(this[k+1]<<16|this[k+2]<<8|this[k+3])},u.prototype.readIntLE=function(k,O,B){k|=0,O|=0,B||P(k,O,this.length);for(var U=this[k],z=1,j=0;++j=(z*=128)&&(U-=Math.pow(2,8*O)),U},u.prototype.readIntBE=function(k,O,B){k|=0,O|=0,B||P(k,O,this.length);for(var U=O,z=1,j=this[k+--U];U>0&&(z*=256);)j+=this[k+--U]*z;return j>=(z*=128)&&(j-=Math.pow(2,8*O)),j},u.prototype.readInt8=function(k,O){return O||P(k,1,this.length),128&this[k]?-1*(255-this[k]+1):this[k]},u.prototype.readInt16LE=function(k,O){O||P(k,2,this.length);var B=this[k]|this[k+1]<<8;return 32768&B?4294901760|B:B},u.prototype.readInt16BE=function(k,O){O||P(k,2,this.length);var B=this[k+1]|this[k]<<8;return 32768&B?4294901760|B:B},u.prototype.readInt32LE=function(k,O){return O||P(k,4,this.length),this[k]|this[k+1]<<8|this[k+2]<<16|this[k+3]<<24},u.prototype.readInt32BE=function(k,O){return O||P(k,4,this.length),this[k]<<24|this[k+1]<<16|this[k+2]<<8|this[k+3]},u.prototype.readFloatLE=function(k,O){return O||P(k,4,this.length),s.read(this,k,!0,23,4)},u.prototype.readFloatBE=function(k,O){return O||P(k,4,this.length),s.read(this,k,!1,23,4)},u.prototype.readDoubleLE=function(k,O){return O||P(k,8,this.length),s.read(this,k,!0,52,8)},u.prototype.readDoubleBE=function(k,O){return O||P(k,8,this.length),s.read(this,k,!1,52,8)},u.prototype.writeUIntLE=function(k,O,B,U){k=+k,O|=0,B|=0,U||N(this,k,O,B,Math.pow(2,8*B)-1,0);var z=1,j=0;for(this[O]=255&k;++j=0&&(j*=256);)this[O+z]=k/j&255;return O+B},u.prototype.writeUInt8=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,1,255,0),u.TYPED_ARRAY_SUPPORT||(k=Math.floor(k)),this[O]=255&k,O+1},u.prototype.writeUInt16LE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[O]=255&k,this[O+1]=k>>>8):V(this,k,O,!0),O+2},u.prototype.writeUInt16BE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[O]=k>>>8,this[O+1]=255&k):V(this,k,O,!1),O+2},u.prototype.writeUInt32LE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[O+3]=k>>>24,this[O+2]=k>>>16,this[O+1]=k>>>8,this[O]=255&k):$(this,k,O,!0),O+4},u.prototype.writeUInt32BE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[O]=k>>>24,this[O+1]=k>>>16,this[O+2]=k>>>8,this[O+3]=255&k):$(this,k,O,!1),O+4},u.prototype.writeIntLE=function(k,O,B,U){if(k=+k,O|=0,!U){var z=Math.pow(2,8*B-1);N(this,k,O,B,z-1,-z)}var j=0,K=1,ae=0;for(this[O]=255&k;++j>0)-ae&255;return O+B},u.prototype.writeIntBE=function(k,O,B,U){if(k=+k,O|=0,!U){var z=Math.pow(2,8*B-1);N(this,k,O,B,z-1,-z)}var j=B-1,K=1,ae=0;for(this[O+j]=255&k;--j>=0&&(K*=256);)k<0&&ae===0&&this[O+j+1]!==0&&(ae=1),this[O+j]=(k/K>>0)-ae&255;return O+B},u.prototype.writeInt8=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,1,127,-128),u.TYPED_ARRAY_SUPPORT||(k=Math.floor(k)),k<0&&(k=255+k+1),this[O]=255&k,O+1},u.prototype.writeInt16LE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[O]=255&k,this[O+1]=k>>>8):V(this,k,O,!0),O+2},u.prototype.writeInt16BE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[O]=k>>>8,this[O+1]=255&k):V(this,k,O,!1),O+2},u.prototype.writeInt32LE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[O]=255&k,this[O+1]=k>>>8,this[O+2]=k>>>16,this[O+3]=k>>>24):$(this,k,O,!0),O+4},u.prototype.writeInt32BE=function(k,O,B){return k=+k,O|=0,B||N(this,k,O,4,2147483647,-2147483648),k<0&&(k=4294967295+k+1),u.TYPED_ARRAY_SUPPORT?(this[O]=k>>>24,this[O+1]=k>>>16,this[O+2]=k>>>8,this[O+3]=255&k):$(this,k,O,!1),O+4},u.prototype.writeFloatLE=function(k,O,B){return Y(this,k,O,!0,B)},u.prototype.writeFloatBE=function(k,O,B){return Y(this,k,O,!1,B)},u.prototype.writeDoubleLE=function(k,O,B){return ne(this,k,O,!0,B)},u.prototype.writeDoubleBE=function(k,O,B){return ne(this,k,O,!1,B)},u.prototype.copy=function(k,O,B,U){if(B||(B=0),U||U===0||(U=this.length),O>=k.length&&(O=k.length),O||(O=0),U>0&&U=this.length)throw new RangeError("sourceStart out of bounds");if(U<0)throw new RangeError("sourceEnd out of bounds");U>this.length&&(U=this.length),k.length-O=0;--z)k[z+O]=this[z+B];else if(j<1e3||!u.TYPED_ARRAY_SUPPORT)for(z=0;z>>=0,B=B===void 0?this.length:B>>>0,k||(k=0),typeof k=="number")for(j=O;j55295&&B<57344){if(!z){if(B>56319){(O-=3)>-1&&j.push(239,191,189);continue}if(K+1===U){(O-=3)>-1&&j.push(239,191,189);continue}z=B;continue}if(B<56320){(O-=3)>-1&&j.push(239,191,189),z=B;continue}B=65536+(z-55296<<10|B-56320)}else z&&(O-=3)>-1&&j.push(239,191,189);if(z=null,B<128){if((O-=1)<0)break;j.push(B)}else if(B<2048){if((O-=2)<0)break;j.push(B>>6|192,63&B|128)}else if(B<65536){if((O-=3)<0)break;j.push(B>>12|224,B>>6&63|128,63&B|128)}else{if(!(B<1114112))throw new Error("Invalid code point");if((O-=4)<0)break;j.push(B>>18|240,B>>12&63|128,B>>6&63|128,63&B|128)}}return j}function fe(k){return a.toByteArray(function(O){if((O=function(B){return B.trim?B.trim():B.replace(/^\s+|\s+$/g,"")}(O).replace(Q,"")).length<2)return"";for(;O.length%4!=0;)O+="=";return O}(k))}function le(k,O,B,U){for(var z=0;z=O.length||z>=k.length);++z)O[z+B]=k[z];return z}}).call(this,i(78))},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),n.isASCIIByte=function(o){return o>=0&&o<=127}},function(r,n,i){var o=this&&this.__read||function(s,c){var l=typeof Symbol=="function"&&s[Symbol.iterator];if(!l)return s;var f,u,d=l.call(s),h=[];try{for(;(c===void 0||c-- >0)&&!(f=d.next()).done;)h.push(f.value)}catch(g){u={error:g}}finally{try{f&&!f.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}return h},a=this&&this.__spread||function(){for(var s=[],c=0;c=65&&l<=90&&(s[c]=l+32)}},n.byteUppercase=function(s){for(var c=0;c=97&&l<=122&&(s[c]=l-32)}},n.byteCaseInsensitiveMatch=function(s,c){if(s.length!==c.length)return!1;for(var l=0;l=65&&f<=90&&(f+=32),u>=65&&u<=90&&(u+=32),f!==u)return!1}return!0},n.startsWith=function(s,c){for(var l=0;;){if(l>=s.length)return!1;if(l>=c.length)return!0;if(s[l]!==c[l])return!1;l++}},n.byteLessThan=function(s,c){for(var l=0;;){if(l>=s.length)return!1;if(l>=c.length)return!0;var f=s[l],u=c[l];if(fu)return!1;l++}},n.isomorphicDecode=function(s){return String.fromCodePoint.apply(String,a(s))}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(6),a=i(7),s=i(0),c=i(12),l=function(){function f(u){this._associatedDocument=u||o.dom.window.document}return f.prototype.createDocumentType=function(u,d,h){return s.namespace_validate(u),s.create_documentType(this._associatedDocument,u,d,h)},f.prototype.createDocument=function(u,d,h){h===void 0&&(h=null);var g=s.create_xmlDocument(),p=null;return d&&(p=s.document_internalCreateElementNS(g,u,d)),h&&g.appendChild(h),p&&g.appendChild(p),g._origin=this._associatedDocument._origin,u===a.namespace.HTML?g._contentType="application/xhtml+xml":u===a.namespace.SVG?g._contentType="image/svg+xml":g._contentType="application/xml",g},f.prototype.createHTMLDocument=function(u){var d=s.create_document();d._type="html",d._contentType="text/html",d.appendChild(s.create_documentType(d,"html","",""));var h=s.element_createAnElement(d,"html",a.namespace.HTML);d.appendChild(h);var g=s.element_createAnElement(d,"head",a.namespace.HTML);if(h.appendChild(g),u!==void 0){var p=s.element_createAnElement(d,"title",a.namespace.HTML);g.appendChild(p);var v=s.create_text(d,u);p.appendChild(v)}var x=s.element_createAnElement(d,"body",a.namespace.HTML);return h.appendChild(x),d._origin=this._associatedDocument._origin,d},f.prototype.hasFeature=function(){return!0},f._create=function(u){return new f(u)},f}();n.DOMImplementationImpl=l,c.idl_defineConst(l.prototype,"_ID","@oozcitak/dom")},function(r,n,i){var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(70),c=i(1),l=i(0),f=function(u){function d(){var h=u.call(this)||this;return h._signalSlots=new Set,h._mutationObserverMicrotaskQueued=!1,h._mutationObservers=new Set,h._iteratorList=new c.FixedSizeSet,h._associatedDocument=l.create_document(),h}return a(d,u),Object.defineProperty(d.prototype,"document",{get:function(){return this._associatedDocument},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"event",{get:function(){return this._currentEvent},enumerable:!0,configurable:!0}),d._create=function(){return new d},d}(s.EventTargetImpl);n.WindowImpl=f},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=function(){function s(){}return s.isNode=function(c){return!!c&&c._nodeType!==void 0},s.isDocumentNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.Document},s.isDocumentTypeNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.DocumentType},s.isDocumentFragmentNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.DocumentFragment},s.isAttrNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.Attribute},s.isCharacterDataNode=function(c){if(!s.isNode(c))return!1;var l=c._nodeType;return l===o.NodeType.Text||l===o.NodeType.ProcessingInstruction||l===o.NodeType.Comment||l===o.NodeType.CData},s.isTextNode=function(c){return s.isNode(c)&&(c._nodeType===o.NodeType.Text||c._nodeType===o.NodeType.CData)},s.isExclusiveTextNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.Text},s.isCDATASectionNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.CData},s.isCommentNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.Comment},s.isProcessingInstructionNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.ProcessingInstruction},s.isElementNode=function(c){return s.isNode(c)&&c._nodeType===o.NodeType.Element},s.isCustomElementNode=function(c){return s.isElementNode(c)&&c._customElementState==="custom"},s.isShadowRoot=function(c){return!!c&&c.host!==void 0},s.isMouseEvent=function(c){return!!c&&c.screenX!==void 0&&c.screenY!=null},s.isSlotable=function(c){return!!c&&c._name!==void 0&&c._assignedSlot!==void 0&&(s.isTextNode(c)||s.isElementNode(c))},s.isSlot=function(c){return!!c&&c._name!==void 0&&c._assignedNodes!==void 0&&s.isElementNode(c)},s.isWindow=function(c){return!!c&&c.navigator!==void 0},s.isEventListener=function(c){return!!c&&c.handleEvent!==void 0},s.isRegisteredObserver=function(c){return!!c&&c.observer!==void 0&&c.options!==void 0},s.isTransientRegisteredObserver=function(c){return!!c&&c.source!==void 0&&s.isRegisteredObserver(c)},s}();n.Guard=a},function(r,n,i){var o,a=this&&this.__extends||(o=function(c,l){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,u){f.__proto__=u}||function(f,u){for(var d in u)u.hasOwnProperty(d)&&(f[d]=u[d])})(c,l)},function(c,l){function f(){this.constructor=c}o(c,l),c.prototype=l===null?Object.create(l):(f.prototype=l.prototype,new f)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(c){function l(){return c.call(this)||this}return a(l,c),l}(i(98).DocumentImpl);n.XMLDocumentImpl=s},function(r,n,i){var o=this&&this.__values||function(U){var z=typeof Symbol=="function"&&Symbol.iterator,j=z&&U[z],K=0;if(j)return j.call(U);if(U&&typeof U.length=="number")return{next:function(){return U&&K>=U.length&&(U=void 0),{value:U&&U[K++],done:!U}}};throw new TypeError(z?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(U,z){var j=typeof Symbol=="function"&&U[Symbol.iterator];if(!j)return U;var K,ae,he=j.call(U),ye=[];try{for(;(z===void 0||z-- >0)&&!(K=he.next()).done;)ye.push(K.value)}catch(Te){ae={error:Te}}finally{try{K&&!K.done&&(j=he.return)&&j.call(he)}finally{if(ae)throw ae.error}}return ye};Object.defineProperty(n,"__esModule",{value:!0});var s,c=i(1),l=i(243),f=i(7),u=i(244),d={ftp:21,file:null,http:80,https:443,ws:80,wss:443},h=/[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/[ "<>`]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,p=/[ "<>`#?{}]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,v=/[ "<>`#?{}/:;=@\[\]\\\^\|]|[\0-\x1F\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,x=/[0-9A-Za-z!\$&-\/:;=\?@_~\xA0-\uD7FF\uE000-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uD83E\uD840-\uD87E\uD880-\uD8BE\uD8C0-\uD8FE\uD900-\uD93E\uD940-\uD97E\uD980-\uD9BE\uD9C0-\uD9FE\uDA00-\uDA3E\uDA40-\uDA7E\uDA80-\uDABE\uDAC0-\uDAFE\uDB00-\uDB3E\uDB40-\uDB7E\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDC00-\uDFFD]/,m=/[\0\t\f\r #%/:?@\[\\\]]/;function y(U){s!==void 0&&s.call(null,"Validation Error: "+U)}function w(){return{scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null}}function C(U){return U in d}function S(U){return C(U.scheme)}function T(U){return d[U]||null}function _(U){return U.username!==""||U.password!==""}function E(U,z){var j,K;z===void 0&&(z=!1);var ae=U.scheme+":";if(U.host!==null?(ae+="//",_(U)&&(ae+=U.username,U.password!==""&&(ae+=":"+U.password),ae+="@"),ae+=D(U.host),U.port!==null&&(ae+=":"+U.port)):U.host===null&&U.scheme==="file"&&(ae+="//"),U._cannotBeABaseURLFlag)ae+=U.path[0];else try{for(var he=o(U.path),ye=he.next();!ye.done;ye=he.next())ae+="/"+ye.value}catch(Te){j={error:Te}}finally{try{ye&&!ye.done&&(K=he.return)&&K.call(he)}finally{if(j)throw j.error}}return U.query!==null&&(ae+="?"+U.query),z||U.fragment===null||(ae+="#"+U.fragment),ae}function D(U){return c.isNumber(U)?b(U):c.isArray(U)?"["+I(U)+"]":U}function b(U){for(var z="",j=U,K=1;K<=4;K++)z=(j%256).toString()+z,K!==4&&(z="."+z),j=Math.floor(j/256);return z}function I(U){for(var z="",j=null,K=-1,ae=0,he=0,ye=0;ye<8;ye++)if(U[ye]===0){ae=1;for(var Te=ye+1;Te<8&&U[Te]===0;Te++)ae++;ae>he&&(he=ae,K=ye)}he>1&&(j=K);for(var q=!1,J=0;J<8;J++)q&&U[J]===0||(q&&(q=!1),j!==J?(z+=U[J].toString(16),J!==7&&(z+=":")):(z+=J===0?"::":":",q=!0));return z}function R(U,z,j,K,ae){var he,ye,Te,q;if(K===void 0){K={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,_cannotBeABaseURLFlag:!1,_blobURLEntry:null};var J=/^[\u0000-\u001F\u0020]+/,ie=/[\u0000-\u001F\u0020]+$/;(J.test(U)||ie.test(U))&&y("Input string contains leading or trailing control characters or space."),U=(U=U.replace(J,"")).replace(ie,"")}var Z=/[\u0009\u000A\u000D]/g;Z.test(U)&&y("Input string contains tab or newline characters."),U=U.replace(Z,"");var te=ae===void 0?l.ParserState.SchemeStart:ae;z===void 0&&(z=null);for(var me=j===void 0||j==="replacement"||j==="UTF-16BE"||j==="UTF-16LE"?"UTF-8":j,X="",Ae=!1,Be=!1,Ve=!1,ue=new c.StringWalker(U);;){switch(te){case l.ParserState.SchemeStart:if(f.codePoint.ASCIIAlpha.test(ue.c()))X+=ue.c().toLowerCase(),te=l.ParserState.Scheme;else{if(ae!==void 0)return y("Invalid scheme start character."),null;te=l.ParserState.NoScheme,ue.pointer--}break;case l.ParserState.Scheme:if(f.codePoint.ASCIIAlphanumeric.test(ue.c())||ue.c()==="+"||ue.c()==="-"||ue.c()===".")X+=ue.c().toLowerCase();else{if(ue.c()!==":"){if(ae===void 0){X="",te=l.ParserState.NoScheme,ue.pointer=0;continue}return y("Invalid input string."),null}if(ae!==void 0&&(C(K.scheme)&&!C(X)||!C(K.scheme)&&C(X)||(_(K)||K.port!==null)&&X==="file"||K.scheme==="file"&&(K.host===""||K.host===null)))return K;if(K.scheme=X,ae!==void 0)return K.port===T(K.scheme)&&(K.port=null),K;X="",K.scheme==="file"?(ue.remaining().startsWith("//")||y("Invalid file URL scheme, '//' expected."),te=l.ParserState.File):S(K)&&z!==null&&z.scheme===K.scheme?te=l.ParserState.SpecialRelativeOrAuthority:S(K)?te=l.ParserState.SpecialAuthoritySlashes:ue.remaining().startsWith("/")?(te=l.ParserState.PathOrAuthority,ue.pointer++):(K._cannotBeABaseURLFlag=!0,K.path.push(""),te=l.ParserState.CannotBeABaseURLPath)}break;case l.ParserState.NoScheme:if(z===null||z._cannotBeABaseURLFlag&&ue.c()!=="#")return y("Invalid input string."),null;z._cannotBeABaseURLFlag&&ue.c()==="#"?(K.scheme=z.scheme,K.path=f.list.clone(z.path),K.query=z.query,K.fragment="",K._cannotBeABaseURLFlag=!0,te=l.ParserState.Fragment):z.scheme!=="file"?(te=l.ParserState.Relative,ue.pointer--):(te=l.ParserState.File,ue.pointer--);break;case l.ParserState.SpecialRelativeOrAuthority:ue.c()==="/"&&ue.remaining().startsWith("/")?(te=l.ParserState.SpecialAuthorityIgnoreSlashes,ue.pointer++):(y("Invalid input string."),te=l.ParserState.Relative,ue.pointer--);break;case l.ParserState.PathOrAuthority:ue.c()==="/"?te=l.ParserState.Authority:(te=l.ParserState.Path,ue.pointer--);break;case l.ParserState.Relative:if(z===null)throw new Error("Invalid parser state. Base URL is null.");switch(K.scheme=z.scheme,ue.c()){case"":K.username=z.username,K.password=z.password,K.host=z.host,K.port=z.port,K.path=f.list.clone(z.path),K.query=z.query;break;case"/":te=l.ParserState.RelativeSlash;break;case"?":K.username=z.username,K.password=z.password,K.host=z.host,K.port=z.port,K.path=f.list.clone(z.path),K.query="",te=l.ParserState.Query;break;case"#":K.username=z.username,K.password=z.password,K.host=z.host,K.port=z.port,K.path=f.list.clone(z.path),K.query=z.query,K.fragment="",te=l.ParserState.Fragment;break;default:S(K)&&ue.c()==="\\"?(y("Invalid input string."),te=l.ParserState.RelativeSlash):(K.username=z.username,K.password=z.password,K.host=z.host,K.port=z.port,K.path=f.list.clone(z.path),K.path.length!==0&&K.path.splice(K.path.length-1,1),te=l.ParserState.Path,ue.pointer--)}break;case l.ParserState.RelativeSlash:if(!S(K)||ue.c()!=="/"&&ue.c()!=="\\")if(ue.c()==="/")te=l.ParserState.Authority;else{if(z===null)throw new Error("Invalid parser state. Base URL is null.");K.username=z.username,K.password=z.password,K.host=z.host,K.port=z.port,te=l.ParserState.Path,ue.pointer--}else ue.c()==="\\"&&y("Invalid input string."),te=l.ParserState.SpecialAuthorityIgnoreSlashes;break;case l.ParserState.SpecialAuthoritySlashes:ue.c()==="/"&&ue.remaining().startsWith("/")?(te=l.ParserState.SpecialAuthorityIgnoreSlashes,ue.pointer++):(y("Expected '//'."),te=l.ParserState.SpecialAuthorityIgnoreSlashes,ue.pointer--);break;case l.ParserState.SpecialAuthorityIgnoreSlashes:ue.c()!=="/"&&ue.c()!=="\\"?(te=l.ParserState.Authority,ue.pointer--):y("Unexpected '/' or '\\'.");break;case l.ParserState.Authority:if(ue.c()==="@"){y("Unexpected '@'."),Ae&&(X="%40"+X),Ae=!0;try{for(var Ee=(he=void 0,o(X)),Me=Ee.next();!Me.done;Me=Ee.next()){var Re=Me.value;if(Re!==":"||Ve){var We=le(Re,v);Ve?K.password+=We:K.username+=We}else Ve=!0}}catch(sr){he={error:sr}}finally{try{Me&&!Me.done&&(ye=Ee.return)&&ye.call(Ee)}finally{if(he)throw he.error}}X=""}else if(ue.c()===""||ue.c()==="/"||ue.c()==="?"||ue.c()==="#"||S(K)&&ue.c()==="\\"){if(Ae&&X==="")return y("Invalid input string."),null;ue.pointer-=X.length+1,X="",te=l.ParserState.Host}else X+=ue.c();break;case l.ParserState.Host:case l.ParserState.Hostname:if(ae!==void 0&&K.scheme==="file")ue.pointer--,te=l.ParserState.FileHost;else if(ue.c()!==":"||Be)if(ue.c()===""||ue.c()==="/"||ue.c()==="?"||ue.c()==="#"||S(K)&&ue.c()==="\\"){if(ue.pointer--,S(K)&&X==="")return y("Invalid input string."),null;if(ae!==void 0&&X===""&&(_(K)||K.port!==null))return y("Invalid input string."),K;if((ze=V(X,!S(K)))===null)return null;if(K.host=ze,X="",te=l.ParserState.PathStart,ae!==void 0)return K}else ue.c()==="["&&(Be=!0),ue.c()==="]"&&(Be=!1),X+=ue.c();else{if(X==="")return y("Invalid input string."),null;if((ze=V(X,!S(K)))===null)return null;if(K.host=ze,X="",te=l.ParserState.Port,ae===l.ParserState.Hostname)return K}break;case l.ParserState.Port:if(f.codePoint.ASCIIDigit.test(ue.c()))X+=ue.c();else{if(!(ue.c()===""||ue.c()==="/"||ue.c()==="?"||ue.c()==="#"||S(K)&&ue.c()==="\\"||ae))return y("Invalid input string."),null;if(X!==""&&X!==""){var ut=parseInt(X,10);if(ut>Math.pow(2,16)-1)return y("Invalid port number."),null;K.port=ut===T(K.scheme)?null:ut,X=""}if(ae!==void 0)return K;te=l.ParserState.PathStart,ue.pointer--}break;case l.ParserState.File:if(K.scheme="file",ue.c()==="/"||ue.c()==="\\")ue.c()==="\\"&&y("Invalid input string."),te=l.ParserState.FileSlash;else if(z!==null&&z.scheme==="file")switch(ue.c()){case"":K.host=z.host,K.path=f.list.clone(z.path),K.query=z.query;break;case"?":K.host=z.host,K.path=f.list.clone(z.path),K.query="",te=l.ParserState.Query;break;case"#":K.host=z.host,K.path=f.list.clone(z.path),K.query=z.query,K.fragment="",te=l.ParserState.Fragment;break;default:N(ue.substring())?y("Unexpected windows drive letter in input string."):(K.host=z.host,K.path=f.list.clone(z.path),A(K)),te=l.ParserState.Path,ue.pointer--}else te=l.ParserState.Path,ue.pointer--;break;case l.ParserState.FileSlash:ue.c()==="/"||ue.c()==="\\"?(ue.c()==="\\"&&y("Invalid input string."),te=l.ParserState.FileHost):(z===null||z.scheme!=="file"||N(ue.substring())||(G(z.path[0])?K.path.push(z.path[0]):K.host=z.host),te=l.ParserState.Path,ue.pointer--);break;case l.ParserState.FileHost:if(ue.c()===""||ue.c()==="/"||ue.c()==="\\"||ue.c()==="?"||ue.c()==="#")if(ue.pointer--,ae===void 0&&P(X))y("Unexpected windows drive letter in input string."),te=l.ParserState.Path;else if(X===""){if(K.host="",ae!==void 0)return K;te=l.ParserState.PathStart}else{var ze;if((ze=V(X,!S(K)))===null)return null;if(ze==="localhost"&&(ze=""),K.host=ze,ae!==void 0)return K;X="",te=l.ParserState.PathStart}else X+=ue.c();break;case l.ParserState.PathStart:S(K)?(ue.c()==="\\"&&y("Invalid input string."),te=l.ParserState.Path,ue.c()!=="/"&&ue.c()!=="\\"&&ue.pointer--):ae===void 0&&ue.c()==="?"?(K.query="",te=l.ParserState.Query):ae===void 0&&ue.c()==="#"?(K.fragment="",te=l.ParserState.Fragment):ue.c()!==""&&(te=l.ParserState.Path,ue.c()!=="/"&&ue.pointer--);break;case l.ParserState.Path:if(ue.c()===""||ue.c()==="/"||S(K)&&ue.c()==="\\"||ae===void 0&&(ue.c()==="?"||ue.c()==="#")){if(S(K)&&ue.c()==="\\"&&y("Invalid input string."),L(X))A(K),ue.c()==="/"||S(K)&&ue.c()==="\\"||K.path.push("");else if(!M(X)||ue.c()==="/"||S(K)&&ue.c()==="\\"){if(!M(X)){if(K.scheme==="file"&&K.path.length===0&&P(X)){K.host!==null&&K.host!==""&&(y("Invalid input string."),K.host="");var ft=Array.from(X);X=ft.slice(0,1)+":"+ft.slice(2)}K.path.push(X)}}else K.path.push("");if(X="",K.scheme==="file"&&(ue.c()===""||ue.c()==="?"||ue.c()==="#"))for(;K.path.length>1&&K.path[0]==="";)y("Invalid input string."),K.path.splice(0,1);ue.c()==="?"&&(K.query="",te=l.ParserState.Query),ue.c()==="#"&&(K.fragment="",te=l.ParserState.Fragment)}else x.test(ue.c())||ue.c()==="%"||y("Character is not a URL code point or a percent encoded character."),ue.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(ue.remaining())||y("Percent encoded character must be followed by two hex digits."),X+=le(ue.c(),p);break;case l.ParserState.CannotBeABaseURLPath:ue.c()==="?"?(K.query="",te=l.ParserState.Query):ue.c()==="#"?(K.fragment="",te=l.ParserState.Fragment):(ue.c()===""||x.test(ue.c())||ue.c()==="%"||y("Character is not a URL code point or a percent encoded character."),ue.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(ue.remaining())||y("Percent encoded character must be followed by two hex digits."),ue.c()!==""&&(K.path[0]+=le(ue.c(),h)));break;case l.ParserState.Query:if(me==="UTF-8"||S(K)&&K.scheme!=="ws"&&K.scheme!=="wss"||(me="UTF-8"),ae===void 0&&ue.c()==="#")K.fragment="",te=l.ParserState.Fragment;else if(ue.c()!==""){if(x.test(ue.c())||ue.c()==="%"||y("Character is not a URL code point or a percent encoded character."),ue.c()!=="%"||/^[0-9a-fA-F][0-9a-fA-F]/.test(ue.remaining())||y("Percent encoded character must be followed by two hex digits."),me.toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var dt=c.utf8Encode(ue.c());if(dt.length>=3&&dt[0]===38&&dt[1]===35&&dt[dt.length-1]===59)dt=dt.subarray(2,dt.length-1),K.query+="%26%23"+f.byteSequence.isomorphicDecode(dt)+"%3B";else try{for(var dn=(Te=void 0,o(dt)),Pn=dn.next();!Pn.done;Pn=dn.next()){var Gt=Pn.value;Gt<33||Gt>126||Gt===34||Gt===35||Gt===60||Gt===62||Gt===39&&S(K)?K.query+=ee(Gt):K.query+=String.fromCharCode(Gt)}}catch(sr){Te={error:sr}}finally{try{Pn&&!Pn.done&&(q=dn.return)&&q.call(dn)}finally{if(Te)throw Te.error}}}break;case l.ParserState.Fragment:ue.c()===""||(ue.c()==="\0"?y("NULL character in input string."):(x.test(ue.c())||ue.c()==="%"||y("Unexpected character in fragment string."),ue.c()!=="%"||/^[A-Za-z0-9][A-Za-z0-9]/.test(ue.remaining())||y("Unexpected character in fragment string."),K.fragment+=le(ue.c(),g)))}if(ue.eof)break;ue.pointer++}return K}function M(U){return U==="."||U.toLowerCase()==="%2e"}function L(U){var z=U.toLowerCase();return z===".."||z===".%2e"||z==="%2e."||z==="%2e%2e"}function A(U){var z=U.path;z.length!==0&&(U.scheme==="file"&&z.length===1&&G(z[0])||U.path.splice(U.path.length-1,1))}function G(U){return U.length>=2&&f.codePoint.ASCIIAlpha.test(U[0])&&U[1]===":"}function P(U){return U.length>=2&&f.codePoint.ASCIIAlpha.test(U[0])&&(U[1]===":"||U[1]==="|")}function N(U){return U.length>=2&&P(U)&&(U.length===2||U[2]==="/"||U[2]==="\\"||U[2]==="?"||U[2]==="#")}function V(U,z){if(z===void 0&&(z=!1),U.startsWith("["))return U.endsWith("]")?Y(U.substring(1,U.length-1)):(y("Expected ']' after '['."),null);if(z)return ne(U);var j=B(c.utf8Decode(fe(U)));if(j===null||m.test(j))return y("Invalid domain."),null;var K=H(j);return K===null||c.isNumber(K)?K:j}function $(U,z){z===void 0&&(z={value:!1});var j=10;return U.startsWith("0x")||U.startsWith("0X")?(z.value=!0,U=U.substr(2),j=16):U.length>=2&&U[0]==="0"&&(z.value=!0,U=U.substr(1),j=8),U===""?0:(j===10?/^[0-9]+$/:j===16?/^[0-9A-Fa-f]+$/:/^[0-7]+$/).test(U)?parseInt(U,j):null}function H(U){var z,j,K,ae,he={value:!1},ye=U.split(".");if(ye[ye.length-1]===""&&(he.value=!0,ye.length>1&&ye.pop()),ye.length>4)return U;var Te=[];try{for(var q=o(ye),J=q.next();!J.done;J=q.next()){var ie=J.value;if(ie===""||(Be=$(ie,he))===null)return U;Te.push(Be)}}catch(Ve){z={error:Ve}}finally{try{J&&!J.done&&(j=q.return)&&j.call(q)}finally{if(z)throw z.error}}he.value&&y("Invalid IP v4 address.");for(var Z=0;Z255&&(y("Invalid IP v4 address."),Z=Math.pow(256,5-Te.length))return y("Invalid IP v4 address."),null;var te=Te[Te.length-1];Te.pop();var me=0;try{for(var X=o(Te),Ae=X.next();!Ae.done;Ae=X.next()){var Be;te+=(Be=Ae.value)*Math.pow(256,3-me),me++}}catch(Ve){K={error:Ve}}finally{try{Ae&&!Ae.done&&(ae=X.return)&&ae.call(X)}finally{if(K)throw K.error}}return te}function Y(U){var z,j=[0,0,0,0,0,0,0,0],K=0,ae=null,he=new c.StringWalker(U);if(he.c()===":"){if(!he.remaining().startsWith(":"))return y("Invalid IP v6 address."),null;he.pointer+=2,ae=K+=1}for(;he.c()!=="";){if(K===8)return y("Invalid IP v6 address."),null;if(he.c()!==":"){for(var ye=0,Te=0;Te<4&&f.codePoint.ASCIIHexDigit.test(he.c());)ye=16*ye+parseInt(he.c(),16),he.pointer++,Te++;if(he.c()==="."){if(Te===0||(he.pointer-=Te,K>6))return y("Invalid IP v6 address."),null;for(var q=0;he.c()!=="";){var J=null;if(q>0){if(!(he.c()==="."&&q<4))return y("Invalid IP v6 address."),null;he.pointer++}if(!f.codePoint.ASCIIDigit.test(he.c()))return y("Invalid IP v6 address."),null;for(;f.codePoint.ASCIIDigit.test(he.c());){var ie=parseInt(he.c(),10);if(J===null)J=ie;else{if(J===0)return y("Invalid IP v6 address."),null;J=10*J+ie}if(J>255)return y("Invalid IP v6 address."),null;he.pointer++}if(J===null)return y("Invalid IP v6 address."),null;j[K]=256*j[K]+J,++q!==2&&q!==4||K++}if(q!==4)return y("Invalid IP v6 address."),null;break}if(he.c()===":"){if(he.pointer++,he.c()==="")return y("Invalid IP v6 address."),null}else if(he.c()!=="")return y("Invalid IP v6 address."),null;j[K]=ye,K++}else{if(ae!==null)return y("Invalid IP v6 address."),null;he.pointer++,ae=++K}}if(ae!==null){var Z=K-ae;for(K=7;K!==0&&Z>0;)z=a([j[ae+Z-1],j[K]],2),j[K]=z[0],j[ae+Z-1]=z[1],K--,Z--}else if(ae===null&&K!==8)return y("Invalid IP v6 address."),null;return j}function ne(U){var z,j;if(/[\x00\t\f\r #/:?@\[\\\]]/.test(U))return y("Invalid host string."),null;var K="";try{for(var ae=o(U),he=ae.next();!he.done;he=ae.next())K+=le(he.value,h)}catch(ye){z={error:ye}}finally{try{he&&!he.done&&(j=ae.return)&&j.call(ae)}finally{if(z)throw z.error}}return K}function Q(U){return null}function ee(U){return"%"+("00"+U.toString(16).toUpperCase()).slice(-2)}function de(U){for(var z=function(Te){return Te>=48&&Te<=57||Te>=65&&Te<=70||Te>=97&&Te<=102},j=new Uint8Array(U.length),K=0,ae=0;ae=U.length-2)j[K]=he,K++;else if(he!==37||z(U[ae+1])&&z(U[ae+2])){var ye=parseInt(c.utf8Decode(Uint8Array.of(U[ae+1],U[ae+2])),16);j[K]=ye,K++,ae+=2}else j[K]=he,K++}return j.subarray(0,K)}function fe(U){return de(c.utf8Encode(U))}function le(U,z){var j,K;if(!z.test(U))return U;var ae=c.utf8Encode(U),he="";try{for(var ye=o(ae),Te=ye.next();!Te.done;Te=ye.next())he+=ee(Te.value)}catch(q){j={error:q}}finally{try{Te&&!Te.done&&(K=ye.return)&&K.call(ye)}finally{if(j)throw j.error}}return he}function k(U){var z,j,K,ae,he=[],ye=[];try{for(var Te=o(U),q=Te.next();!q.done;q=Te.next()){var J=q.value;J===38?(he.push(Uint8Array.from(ye)),ye=[]):ye.push(J)}}catch(Me){z={error:Me}}finally{try{q&&!q.done&&(j=Te.return)&&j.call(Te)}finally{if(z)throw z.error}}ye.length!==0&&he.push(Uint8Array.from(ye));var ie=[];try{for(var Z=o(he),te=Z.next();!te.done;te=Z.next()){var me=te.value;if(me.length!==0){for(var X=me.indexOf(61),Ae=X!==-1?me.slice(0,X):me,Be=X!==-1?me.slice(X+1):new Uint8Array,Ve=0;Ve=48&&ye<=57||ye>=65&&ye<=90||ye===95||ye>=97&&ye<=122?String.fromCodePoint(ye):ee(ye)}}catch(Te){z={error:Te}}finally{try{he&&!he.done&&(j=ae.return)&&j.call(ae)}finally{if(z)throw z.error}}return K}function B(U,z){var j=u.domainToASCII(U);return j===""?(y("Invalid domain name."),null):j}n.setValidationErrorCallback=function(U){s=U},n.newURL=w,n.isSpecialScheme=C,n.isSpecial=S,n.defaultPort=T,n.includesCredentials=_,n.cannotHaveAUsernamePasswordPort=function(U){return U.host===null||U.host===""||U._cannotBeABaseURLFlag||U.scheme==="file"},n.urlSerializer=E,n.hostSerializer=D,n.iPv4Serializer=b,n.iPv6Serializer=I,n.urlParser=function(U,z,j){var K=R(U,z,j);return K===null?null:(K.scheme!=="blob"||(K._blobURLEntry=null),K)},n.basicURLParser=R,n.setTheUsername=function(U,z){var j,K,ae="";try{for(var he=o(z),ye=he.next();!ye.done;ye=he.next())ae+=le(ye.value,v)}catch(Te){j={error:Te}}finally{try{ye&&!ye.done&&(K=he.return)&&K.call(he)}finally{if(j)throw j.error}}U.username=ae},n.setThePassword=function(U,z){var j,K,ae="";try{for(var he=o(z),ye=he.next();!ye.done;ye=he.next())ae+=le(ye.value,v)}catch(Te){j={error:Te}}finally{try{ye&&!ye.done&&(K=he.return)&&K.call(he)}finally{if(j)throw j.error}}U.password=ae},n.isSingleDotPathSegment=M,n.isDoubleDotPathSegment=L,n.shorten=A,n.isNormalizedWindowsDriveLetter=G,n.isWindowsDriveLetter=P,n.startsWithAWindowsDriveLetter=N,n.hostParser=V,n.iPv4NumberParser=$,n.iPv4Parser=H,n.iPv6Parser=Y,n.opaqueHostParser=ne,n.resolveABlobURL=Q,n.percentEncode=ee,n.percentDecode=de,n.stringPercentDecode=fe,n.utf8PercentEncode=le,n.hostEquals=function(U,z){return U===z},n.urlEquals=function(U,z,j){return j===void 0&&(j=!1),E(U,j)===E(z,j)},n.urlEncodedStringParser=function(U){return k(c.utf8Encode(U))},n.urlEncodedParser=k,n.urlEncodedByteSerializer=O,n.urlEncodedSerializer=function(U,z){var j,K;if((z===void 0||z==="replacement"||z==="UTF-16BE"||z==="UTF-16LE"?"UTF-8":z).toUpperCase()!=="UTF-8")throw new Error("Only UTF-8 encoding is supported.");var ae="";try{for(var he=o(U),ye=he.next();!ye.done;ye=he.next()){var Te=ye.value,q=O(c.utf8Encode(Te[0])),J=Te[1];J=O(c.utf8Encode(J)),ae!==""&&(ae+="&"),ae+=q+"="+J}}catch(ie){j={error:ie}}finally{try{ye&&!ye.done&&(K=he.return)&&K.call(he)}finally{if(j)throw j.error}}return ae},n.origin=function U(z){switch(z.scheme){case"blob":z._blobURLEntry;var j=R(z.path[0]);return j===null?l.OpaqueOrigin:U(j);case"ftp":case"http":case"https":case"ws":case"wss":return[z.scheme,z.host===null?"":z.host,z.port,null];case"file":default:return l.OpaqueOrigin}},n.domainToASCII=B,n.domainToUnicode=function(U,z){var j=u.domainToUnicode(U);return j===""&&y("Invalid domain name."),j},n.asciiSerializationOfAnOrigin=function(U){if(U[0]===""&&U[1]===""&&U[2]===null&&U[3]===null)return"null";var z=U[0]+"://"+D(U[1]);return U[2]!==null&&(z+=":"+U[2].toString()),z}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(0),a=function(){function s(){this._signal=o.create_abortSignal()}return Object.defineProperty(s.prototype,"signal",{get:function(){return this._signal},enumerable:!0,configurable:!0}),s.prototype.abort=function(){o.abort_signalAbort(this._signal)},s}();n.AbortControllerImpl=a},function(r,n,i){var o,a=this&&this.__extends||(o=function(f,u){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,h){d.__proto__=h}||function(d,h){for(var g in h)h.hasOwnProperty(g)&&(d[g]=h[g])})(f,u)},function(f,u){function d(){this.constructor=f}o(f,u),f.prototype=u===null?Object.create(u):(d.prototype=u.prototype,new d)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(70),c=i(0),l=function(f){function u(){var d=f.call(this)||this;return d._abortedFlag=!1,d._abortAlgorithms=new Set,d}return a(u,f),Object.defineProperty(u.prototype,"aborted",{get:function(){return this._abortedFlag},enumerable:!0,configurable:!0}),Object.defineProperty(u.prototype,"onabort",{get:function(){return c.event_getterEventHandlerIDLAttribute(this,"onabort")},set:function(d){c.event_setterEventHandlerIDLAttribute(this,"onabort",d)},enumerable:!0,configurable:!0}),u._create=function(){return new u},u}(s.EventTargetImpl);n.AbortSignalImpl=l},function(r,n,i){var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(2),c=i(34),l=i(12),f=function(u){function d(h,g,p){var v=u.call(this)||this;return v._name="",v._publicId="",v._systemId="",v._name=h,v._publicId=g,v._systemId=p,v}return a(d,u),Object.defineProperty(d.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"publicId",{get:function(){return this._publicId},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"systemId",{get:function(){return this._systemId},enumerable:!0,configurable:!0}),d.prototype.before=function(){for(var h=[],g=0;g=f.length&&(f=void 0),{value:f&&f[h++],done:!f}}};throw new TypeError(u?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(1),c=i(0),l=function(){function f(u){return this._live=!0,this._filter=null,this._length=0,this._root=u,new Proxy(this,this)}return Object.defineProperty(f.prototype,"length",{get:function(){return this._root._children.size},enumerable:!0,configurable:!0}),f.prototype.item=function(u){if(u<0||u>this.length-1)return null;if(u=l.length&&(l=void 0),{value:l&&l[d++],done:!l}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(1),c=function(){function l(f){return this._live=!1,this._items=[],this._length=0,this._root=f,this._items=[],this._filter=function(u){return!0},new Proxy(this,this)}return Object.defineProperty(l.prototype,"length",{get:function(){return this._items.length},enumerable:!0,configurable:!0}),l.prototype.item=function(f){return f<0||f>this.length-1?null:this._items[f]},l.prototype.keys=function(){var f;return(f={})[Symbol.iterator]=(function(){var u=0;return{next:(function(){return u===this.length?{done:!0,value:null}:{done:!1,value:u++}}).bind(this)}}).bind(this),f},l.prototype.values=function(){var f;return(f={})[Symbol.iterator]=(function(){var u=this[Symbol.iterator]();return{next:function(){return u.next()}}}).bind(this),f},l.prototype.entries=function(){var f;return(f={})[Symbol.iterator]=(function(){var u=this[Symbol.iterator](),d=0;return{next:function(){var h=u.next();return h.done?{done:!0,value:null}:{done:!1,value:[d++,h.value]}}}}).bind(this),f},l.prototype[Symbol.iterator]=function(){var f=this._items[Symbol.iterator]();return{next:function(){return f.next()}}},l.prototype.forEach=function(f,u){var d,h;u===void 0&&(u=a.dom.window);var g=0;try{for(var p=o(this._items),v=p.next();!v.done;v=p.next()){var x=v.value;f.call(u,x,g++,this)}}catch(m){d={error:m}}finally{try{v&&!v.done&&(h=p.return)&&h.call(p)}finally{if(d)throw d.error}}},l.prototype.get=function(f,u,d){if(!s.isString(u))return Reflect.get(f,u,d);var h=Number(u);return isNaN(h)?Reflect.get(f,u,d):f._items[h]||void 0},l.prototype.set=function(f,u,d,h){if(!s.isString(u))return Reflect.set(f,u,d,h);var g=Number(u);return isNaN(g)?Reflect.set(f,u,d,h):g>=0&&g=v.length&&(v=void 0),{value:v&&v[y++],done:!v}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(6),l=i(2),f=i(102),u=i(9),d=i(0),h=i(12),g=i(3),p=function(v){function x(){var m=v.call(this)||this,y=c.dom.window._associatedDocument;return m._start=[y,0],m._end=[y,0],c.dom.rangeList.add(m),m}return a(x,v),Object.defineProperty(x.prototype,"commonAncestorContainer",{get:function(){for(var m=this._start[0];!d.tree_isAncestorOf(this._end[0],m,!0);){if(m._parent===null)throw new Error("Parent node is null.");m=m._parent}return m},enumerable:!0,configurable:!0}),x.prototype.setStart=function(m,y){d.range_setTheStart(this,m,y)},x.prototype.setEnd=function(m,y){d.range_setTheEnd(this,m,y)},x.prototype.setStartBefore=function(m){var y=m._parent;if(y===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,y,d.tree_index(m))},x.prototype.setStartAfter=function(m){var y=m._parent;if(y===null)throw new u.InvalidNodeTypeError;d.range_setTheStart(this,y,d.tree_index(m)+1)},x.prototype.setEndBefore=function(m){var y=m._parent;if(y===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,y,d.tree_index(m))},x.prototype.setEndAfter=function(m){var y=m._parent;if(y===null)throw new u.InvalidNodeTypeError;d.range_setTheEnd(this,y,d.tree_index(m)+1)},x.prototype.collapse=function(m){m?this._end=this._start:this._start=this._end},x.prototype.selectNode=function(m){d.range_select(m,this)},x.prototype.selectNodeContents=function(m){if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;var y=d.tree_nodeLength(m);this._start=[m,0],this._end=[m,y]},x.prototype.compareBoundaryPoints=function(m,y){if(m!==l.HowToCompare.StartToStart&&m!==l.HowToCompare.StartToEnd&&m!==l.HowToCompare.EndToEnd&&m!==l.HowToCompare.EndToStart)throw new u.NotSupportedError;if(d.range_root(this)!==d.range_root(y))throw new u.WrongDocumentError;var w,C;switch(m){case l.HowToCompare.StartToStart:w=this._start,C=y._start;break;case l.HowToCompare.StartToEnd:w=this._end,C=y._start;break;case l.HowToCompare.EndToEnd:w=this._end,C=y._end;break;case l.HowToCompare.EndToStart:w=this._start,C=y._end;break;default:throw new u.NotSupportedError}var S=d.boundaryPoint_position(w,C);return S===l.BoundaryPosition.Before?-1:S===l.BoundaryPosition.After?1:0},x.prototype.deleteContents=function(){var m,y,w,C;if(!d.range_collapsed(this)){var S=this._startNode,T=this._startOffset,_=this._endNode,E=this._endOffset;if(S===_&&g.Guard.isCharacterDataNode(S))d.characterData_replaceData(S,T,E-T,"");else{var D,b,I=[];try{for(var R=s(d.range_getContainedNodes(this)),M=R.next();!M.done;M=R.next()){var L=(N=M.value)._parent;L!==null&&d.range_isContained(L,this)||I.push(N)}}catch(V){m={error:V}}finally{try{M&&!M.done&&(y=R.return)&&y.call(R)}finally{if(m)throw m.error}}if(d.tree_isAncestorOf(_,S,!0))D=S,b=T;else{for(var A=S;A._parent!==null&&!d.tree_isAncestorOf(_,A._parent,!0);)A=A._parent;if(A._parent===null)throw new Error("Parent node is null.");D=A._parent,b=d.tree_index(A)+1}g.Guard.isCharacterDataNode(S)&&d.characterData_replaceData(S,T,d.tree_nodeLength(S)-T,"");try{for(var G=s(I),P=G.next();!P.done;P=G.next()){var N;(N=P.value)._parent&&d.mutation_remove(N,N._parent)}}catch(V){w={error:V}}finally{try{P&&!P.done&&(C=G.return)&&C.call(G)}finally{if(w)throw w.error}}g.Guard.isCharacterDataNode(_)&&d.characterData_replaceData(_,0,E,""),this._start=[D,b],this._end=[D,b]}}},x.prototype.extractContents=function(){return d.range_extract(this)},x.prototype.cloneContents=function(){return d.range_cloneTheContents(this)},x.prototype.insertNode=function(m){return d.range_insert(m,this)},x.prototype.surroundContents=function(m){var y,w;try{for(var C=s(d.range_getPartiallyContainedNodes(this)),S=C.next();!S.done;S=C.next()){var T=S.value;if(!g.Guard.isTextNode(T))throw new u.InvalidStateError}}catch(E){y={error:E}}finally{try{S&&!S.done&&(w=C.return)&&w.call(C)}finally{if(y)throw y.error}}if(g.Guard.isDocumentNode(m)||g.Guard.isDocumentTypeNode(m)||g.Guard.isDocumentFragmentNode(m))throw new u.InvalidNodeTypeError;var _=d.range_extract(this);m._children.size!==0&&d.mutation_replaceAll(null,m),d.range_insert(m,this),d.mutation_append(_,m),d.range_select(m,this)},x.prototype.cloneRange=function(){return d.create_range(this._start,this._end)},x.prototype.detach=function(){c.dom.rangeList.delete(this)},x.prototype.isPointInRange=function(m,y){if(d.tree_rootNode(m)!==d.range_root(this))return!1;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(y>d.tree_nodeLength(m))throw new u.IndexSizeError;var w=[m,y];return d.boundaryPoint_position(w,this._start)!==l.BoundaryPosition.Before&&d.boundaryPoint_position(w,this._end)!==l.BoundaryPosition.After},x.prototype.comparePoint=function(m,y){if(d.tree_rootNode(m)!==d.range_root(this))throw new u.WrongDocumentError;if(g.Guard.isDocumentTypeNode(m))throw new u.InvalidNodeTypeError;if(y>d.tree_nodeLength(m))throw new u.IndexSizeError;var w=[m,y];return d.boundaryPoint_position(w,this._start)===l.BoundaryPosition.Before?-1:d.boundaryPoint_position(w,this._end)===l.BoundaryPosition.After?1:0},x.prototype.intersectsNode=function(m){if(d.tree_rootNode(m)!==d.range_root(this))return!1;var y=m._parent;if(y===null)return!0;var w=d.tree_index(m);return d.boundaryPoint_position([y,w],this._end)===l.BoundaryPosition.Before&&d.boundaryPoint_position([y,w+1],this._start)===l.BoundaryPosition.After},x.prototype.toString=function(){var m,y,w="";if(this._startNode===this._endNode&&g.Guard.isTextNode(this._startNode))return this._startNode._data.substring(this._startOffset,this._endOffset);g.Guard.isTextNode(this._startNode)&&(w+=this._startNode._data.substring(this._startOffset));try{for(var C=s(d.range_getContainedNodes(this)),S=C.next();!S.done;S=C.next()){var T=S.value;g.Guard.isTextNode(T)&&(w+=T._data)}}catch(_){m={error:_}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(m)throw m.error}}return g.Guard.isTextNode(this._endNode)&&(w+=this._endNode._data.substring(0,this._endOffset)),w},x._create=function(m,y){var w=new x;return m&&(w._start=m),y&&(w._end=y),w},x.START_TO_START=0,x.START_TO_END=1,x.END_TO_END=2,x.END_TO_START=3,x}(f.AbstractRangeImpl);n.RangeImpl=p,h.idl_defineConst(p.prototype,"START_TO_START",0),h.idl_defineConst(p.prototype,"START_TO_END",1),h.idl_defineConst(p.prototype,"END_TO_END",2),h.idl_defineConst(p.prototype,"END_TO_START",3)},function(r,n,i){var o,a=this&&this.__extends||(o=function(f,u){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,h){d.__proto__=h}||function(d,h){for(var g in h)h.hasOwnProperty(g)&&(d[g]=h[g])})(f,u)},function(f,u){function d(){this.constructor=f}o(f,u),f.prototype=u===null?Object.create(u):(d.prototype=u.prototype,new d)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(103),c=i(0),l=function(f){function u(d,h,g){var p=f.call(this,d)||this;return p._iteratorCollection=void 0,p._reference=h,p._pointerBeforeReference=g,c.nodeIterator_iteratorList().add(p),p}return a(u,f),Object.defineProperty(u.prototype,"referenceNode",{get:function(){return this._reference},enumerable:!0,configurable:!0}),Object.defineProperty(u.prototype,"pointerBeforeReferenceNode",{get:function(){return this._pointerBeforeReference},enumerable:!0,configurable:!0}),u.prototype.nextNode=function(){return c.nodeIterator_traverse(this,!0)},u.prototype.previousNode=function(){return c.nodeIterator_traverse(this,!1)},u.prototype.detach=function(){c.nodeIterator_iteratorList().delete(this)},u._create=function(d,h,g){return new u(d,h,g)},u}(s.TraverserImpl);n.NodeIteratorImpl=l},function(r,n,i){var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(2),c=i(103),l=i(0),f=function(u){function d(h,g){var p=u.call(this,h)||this;return p._current=g,p}return a(d,u),Object.defineProperty(d.prototype,"currentNode",{get:function(){return this._current},set:function(h){this._current=h},enumerable:!0,configurable:!0}),d.prototype.parentNode=function(){for(var h=this._current;h!==null&&h!==this._root;)if((h=h._parent)!==null&&l.traversal_filter(this,h)===s.FilterResult.Accept)return this._current=h,h;return null},d.prototype.firstChild=function(){return l.treeWalker_traverseChildren(this,!0)},d.prototype.lastChild=function(){return l.treeWalker_traverseChildren(this,!1)},d.prototype.nextSibling=function(){return l.treeWalker_traverseSiblings(this,!0)},d.prototype.previousNode=function(){for(var h=this._current;h!==this._root;){for(var g=h._previousSibling;g;){h=g;for(var p=l.traversal_filter(this,h);p!==s.FilterResult.Reject&&h._lastChild;)h=h._lastChild,p=l.traversal_filter(this,h);if(p===s.FilterResult.Accept)return this._current=h,h;g=h._previousSibling}if(h===this._root||h._parent===null)return null;if(h=h._parent,l.traversal_filter(this,h)===s.FilterResult.Accept)return this._current=h,h}return null},d.prototype.previousSibling=function(){return l.treeWalker_traverseSiblings(this,!1)},d.prototype.nextNode=function(){for(var h=this._current,g=s.FilterResult.Accept;;){for(;g!==s.FilterResult.Reject&&h._firstChild;)if(h=h._firstChild,(g=l.traversal_filter(this,h))===s.FilterResult.Accept)return this._current=h,h;for(var p=null,v=h;v!==null;){if(v===this._root)return null;if((p=v._nextSibling)!==null){h=p;break}v=v._parent}if((g=l.traversal_filter(this,h))===s.FilterResult.Accept)return this._current=h,h}},d._create=function(h,g){return new d(h,g)},d}(c.TraverserImpl);n.TreeWalkerImpl=f},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=i(12),s=function(){function c(){}return c.prototype.acceptNode=function(l){return o.FilterResult.Accept},c._create=function(){return new c},c.FILTER_ACCEPT=1,c.FILTER_REJECT=2,c.FILTER_SKIP=3,c.SHOW_ALL=4294967295,c.SHOW_ELEMENT=1,c.SHOW_ATTRIBUTE=2,c.SHOW_TEXT=4,c.SHOW_CDATA_SECTION=8,c.SHOW_ENTITY_REFERENCE=16,c.SHOW_ENTITY=32,c.SHOW_PROCESSING_INSTRUCTION=64,c.SHOW_COMMENT=128,c.SHOW_DOCUMENT=256,c.SHOW_DOCUMENT_TYPE=512,c.SHOW_DOCUMENT_FRAGMENT=1024,c.SHOW_NOTATION=2048,c}();n.NodeFilterImpl=s,a.idl_defineConst(s.prototype,"FILTER_ACCEPT",1),a.idl_defineConst(s.prototype,"FILTER_REJECT",2),a.idl_defineConst(s.prototype,"FILTER_SKIP",3),a.idl_defineConst(s.prototype,"SHOW_ALL",4294967295),a.idl_defineConst(s.prototype,"SHOW_ELEMENT",1),a.idl_defineConst(s.prototype,"SHOW_ATTRIBUTE",2),a.idl_defineConst(s.prototype,"SHOW_TEXT",4),a.idl_defineConst(s.prototype,"SHOW_CDATA_SECTION",8),a.idl_defineConst(s.prototype,"SHOW_ENTITY_REFERENCE",16),a.idl_defineConst(s.prototype,"SHOW_ENTITY",32),a.idl_defineConst(s.prototype,"SHOW_PROCESSING_INSTRUCTION",64),a.idl_defineConst(s.prototype,"SHOW_COMMENT",128),a.idl_defineConst(s.prototype,"SHOW_DOCUMENT",256),a.idl_defineConst(s.prototype,"SHOW_DOCUMENT_TYPE",512),a.idl_defineConst(s.prototype,"SHOW_DOCUMENT_FRAGMENT",1024),a.idl_defineConst(s.prototype,"SHOW_NOTATION",2048)},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(s,c,l,f,u,d,h,g,p){this._type=s,this._target=c,this._addedNodes=l,this._removedNodes=f,this._previousSibling=u,this._nextSibling=d,this._attributeName=h,this._attributeNamespace=g,this._oldValue=p}return Object.defineProperty(a.prototype,"type",{get:function(){return this._type},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"target",{get:function(){return this._target},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"addedNodes",{get:function(){return this._addedNodes},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"removedNodes",{get:function(){return this._removedNodes},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"previousSibling",{get:function(){return this._previousSibling},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"nextSibling",{get:function(){return this._nextSibling},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"attributeName",{get:function(){return this._attributeName},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"attributeNamespace",{get:function(){return this._attributeNamespace},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"oldValue",{get:function(){return this._oldValue},enumerable:!0,configurable:!0}),a._create=function(s,c,l,f,u,d,h,g,p){return new a(s,c,l,f,u,d,h,g,p)},a}();n.MutationRecordImpl=o},function(r,n,i){var o=this&&this.__values||function(u){var d=typeof Symbol=="function"&&Symbol.iterator,h=d&&u[d],g=0;if(h)return h.call(u);if(u&&typeof u.length=="number")return{next:function(){return u&&g>=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(9),c=i(7),l=i(0),f=function(){function u(d,h){this._element=d,this._attribute=h,this._tokenSet=new Set;var g=h._localName,p=l.element_getAnAttributeValue(d,g),v=this;this._element._attributeChangeSteps.push(function(x,m,y,w,C){m===v._attribute._localName&&C===null&&(w?v._tokenSet=l.orderedSet_parse(w):v._tokenSet.clear())}),a.dom.features.steps&&l.dom_runAttributeChangeSteps(d,g,p,p,null)}return Object.defineProperty(u.prototype,"length",{get:function(){return this._tokenSet.size},enumerable:!0,configurable:!0}),u.prototype.item=function(d){var h,g,p=0;try{for(var v=o(this._tokenSet),x=v.next();!x.done;x=v.next()){var m=x.value;if(p===d)return m;p++}}catch(y){h={error:y}}finally{try{x&&!x.done&&(g=v.return)&&g.call(v)}finally{if(h)throw h.error}}return null},u.prototype.contains=function(d){return this._tokenSet.has(d)},u.prototype.add=function(){for(var d,h,g=[],p=0;p=97&&s<=122||s>=65&&s<=90||s===58||s===95||s>=192&&s<=214||s>=216&&s<=246||s>=248&&s<=767||s>=880&&s<=893||s>=895&&s<=8191||s>=8204&&s<=8205||s>=8304&&s<=8591||s>=11264&&s<=12271||s>=12289&&s<=55295||s>=63744&&s<=64975||s>=65008&&s<=65533)&&(a===0||!(s===45||s===46||s>=48&&s<=57||s===183||s>=768&&s<=879||s>=8255&&s<=8256))){if(s>=55296&&s<=56319&&a=56320&&c<=57343&&(a++,(s=1024*(s-55296)+c-56320+65536)>=65536&&s<=983039))continue}return!1}}return!0},n.xml_isQName=function(o){for(var a=!1,s=0;s=97&&c<=122||c>=65&&c<=90||c===95||c>=192&&c<=214||c>=216&&c<=246||c>=248&&c<=767||c>=880&&c<=893||c>=895&&c<=8191||c>=8204&&c<=8205||c>=8304&&c<=8591||c>=11264&&c<=12271||c>=12289&&c<=55295||c>=63744&&c<=64975||c>=65008&&c<=65533)&&(s===0||!(c===45||c===46||c>=48&&c<=57||c===183||c>=768&&c<=879||c>=8255&&c<=8256))){if(s===0||c!==58){if(c>=55296&&c<=56319&&s=56320&&l<=57343&&(s++,(c=1024*(c-55296)+l-56320+65536)>=65536&&c<=983039))continue}return!1}if(a||s===o.length-1)return!1;a=!0}}return!0},n.xml_isLegalChar=function(o){for(var a=0;a=32&&s<=55295||s>=57344&&s<=65533)){if(s>=55296&&s<=56319&&a=56320&&c<=57343&&(a++,(s=1024*(s-55296)+c-56320+65536)>=65536&&s<=1114111))continue}return!1}}return!0},n.xml_isPubidChar=function(o){for(var a=0;a=97&&s<=122||s>=65&&s<=90||s>=39&&s<=59||s===32||s===13||s===10||s>=35&&s<=37||s===33||s===61||s===63||s===64||s===95))return!1}return!0}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=i(17);n.boundaryPoint_position=function s(c,l){var f=c[0],u=c[1],d=l[0],h=l[1];if(console.assert(a.tree_rootNode(f)===a.tree_rootNode(d),"Boundary points must share the same root node."),f===d)return u===h?o.BoundaryPosition.Equal:u=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(p?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(3),c=i(7),l=i(29),f=i(108),u=i(30),d=i(37),h=i(52);n.node_stringReplaceAll=function(g,p){var v=null;g!==""&&(v=l.create_text(p._nodeDocument,g)),d.mutation_replaceAll(v,p)},n.node_clone=function g(p,v,x){var m,y,w,C,S;if(v===void 0&&(v=null),x===void 0&&(x=!1),v===null&&(v=p._nodeDocument),s.Guard.isElementNode(p)){S=h.element_createAnElement(v,p._localName,p._namespace,p._namespacePrefix,p._is,!1);try{for(var T=o(p._attributeList),_=T.next();!_.done;_=T.next()){var E=g(_.value,v);h.element_append(E,S)}}catch(L){m={error:L}}finally{try{_&&!_.done&&(y=T.return)&&y.call(T)}finally{if(m)throw m.error}}}else if(s.Guard.isDocumentNode(p)){var D=l.create_document();D._encoding=p._encoding,D._contentType=p._contentType,D._URL=p._URL,D._origin=p._origin,D._type=p._type,D._mode=p._mode,S=D}else if(s.Guard.isDocumentTypeNode(p))S=l.create_documentType(v,p._name,p._publicId,p._systemId);else if(s.Guard.isAttrNode(p)){var b=l.create_attr(v,p.localName);b._namespace=p._namespace,b._namespacePrefix=p._namespacePrefix,b._value=p._value,S=b}else S=s.Guard.isExclusiveTextNode(p)?l.create_text(v,p._data):s.Guard.isCDATASectionNode(p)?l.create_cdataSection(v,p._data):s.Guard.isCommentNode(p)?l.create_comment(v,p._data):s.Guard.isProcessingInstructionNode(p)?l.create_processingInstruction(v,p._target,p._data):s.Guard.isDocumentFragmentNode(p)?l.create_documentFragment(v):Object.create(p);if(s.Guard.isDocumentNode(S)?(S._nodeDocument=S,v=S):S._nodeDocument=v,a.dom.features.steps&&u.dom_runCloningSteps(S,p,v,x),x)try{for(var I=o(p._children),R=I.next();!R.done;R=I.next()){var M=g(R.value,v,!0);d.mutation_append(M,S)}}catch(L){w={error:L}}finally{try{R&&!R.done&&(C=I.return)&&C.call(I)}finally{if(w)throw w.error}}return S},n.node_equals=function g(p,v){var x,m,y,w;if(p._nodeType!==v._nodeType)return!1;if(s.Guard.isDocumentTypeNode(p)&&s.Guard.isDocumentTypeNode(v)){if(p._name!==v._name||p._publicId!==v._publicId||p._systemId!==v._systemId)return!1}else if(s.Guard.isElementNode(p)&&s.Guard.isElementNode(v)){if(p._namespace!==v._namespace||p._namespacePrefix!==v._namespacePrefix||p._localName!==v._localName||p._attributeList.length!==v._attributeList.length)return!1}else if(s.Guard.isAttrNode(p)&&s.Guard.isAttrNode(v)){if(p._namespace!==v._namespace||p._localName!==v._localName||p._value!==v._value)return!1}else if(s.Guard.isProcessingInstructionNode(p)&&s.Guard.isProcessingInstructionNode(v)){if(p._target!==v._target||p._data!==v._data)return!1}else if(s.Guard.isCharacterDataNode(p)&&s.Guard.isCharacterDataNode(v)&&p._data!==v._data)return!1;if(s.Guard.isElementNode(p)&&s.Guard.isElementNode(v)){var C={};try{for(var S=o(p._attributeList),T=S.next();!T.done;T=S.next())C[(D=T.value)._localName]=D}catch(A){x={error:A}}finally{try{T&&!T.done&&(m=S.return)&&m.call(S)}finally{if(x)throw x.error}}try{for(var _=o(v._attributeList),E=_.next();!E.done;E=_.next()){var D,b=E.value;if(!(D=C[b._localName])||!g(D,b))return!1}}catch(A){y={error:A}}finally{try{E&&!E.done&&(w=_.return)&&w.call(_)}finally{if(y)throw y.error}}}if(p._children.size!==v._children.size)return!1;for(var I=p._children[Symbol.iterator](),R=v._children[Symbol.iterator](),M=I.next(),L=R.next();!M.done&&!L.done;){if(!g(M.value,L.value))return!1;M=I.next(),L=R.next()}return!0},n.node_listOfElementsWithQualifiedName=function(g,p){return g==="*"?l.create_htmlCollection(p):p._nodeDocument._type==="html"?l.create_htmlCollection(p,function(v){return v._namespace===c.namespace.HTML&&v._qualifiedName===g.toLowerCase()||v._namespace!==c.namespace.HTML&&v._qualifiedName===g}):l.create_htmlCollection(p,function(v){return v._qualifiedName===g})},n.node_listOfElementsWithNamespace=function(g,p,v){return g===""&&(g=null),g==="*"&&p==="*"?l.create_htmlCollection(v):g==="*"?l.create_htmlCollection(v,function(x){return x._localName===p}):p==="*"?l.create_htmlCollection(v,function(x){return x._namespace===g}):l.create_htmlCollection(v,function(x){return x._localName===p&&x._namespace===g})},n.node_listOfElementsWithClassNames=function(g,p){var v=f.orderedSet_parse(g);if(v.size===0)return l.create_htmlCollection(p,function(){return!1});var x=p._nodeDocument._mode!=="quirks";return l.create_htmlCollection(p,function(m){var y=m.classList;return f.orderedSet_contains(y._tokenSet,v,x)})},n.node_locateANamespacePrefix=function g(p,v){if(p._namespace===v&&p._namespacePrefix!==null)return p._namespacePrefix;for(var x=0;x=h.length&&(h=void 0),{value:h&&h[v++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(3),c=i(9),l=i(29),f=i(17),u=i(107),d=i(37);n.text_contiguousTextNodes=function(h,g){var p;return g===void 0&&(g=!1),(p={})[Symbol.iterator]=function(){for(var v=h;v&&s.Guard.isTextNode(v._previousSibling);)v=v._previousSibling;return{next:function(){if(v&&!g&&v===h&&(v=s.Guard.isTextNode(v._nextSibling)?v._nextSibling:null),v===null)return{done:!0,value:null};var x={done:!1,value:v};return v=s.Guard.isTextNode(v._nextSibling)?v._nextSibling:null,x}}},p},n.text_contiguousExclusiveTextNodes=function(h,g){var p;return g===void 0&&(g=!1),(p={})[Symbol.iterator]=function(){for(var v=h;v&&s.Guard.isExclusiveTextNode(v._previousSibling);)v=v._previousSibling;return{next:function(){if(v&&!g&&v===h&&(v=s.Guard.isExclusiveTextNode(v._nextSibling)?v._nextSibling:null),v===null)return{done:!0,value:null};var x={done:!1,value:v};return v=s.Guard.isExclusiveTextNode(v._nextSibling)?v._nextSibling:null,x}}},p},n.text_descendantTextContent=function(h){for(var g="",p=f.tree_getFirstDescendantNode(h,!1,!1,function(v){return s.Guard.isTextNode(v)});p!==null;)g+=p._data,p=f.tree_getNextDescendantNode(h,p,!1,!1,function(v){return s.Guard.isTextNode(v)});return g},n.text_split=function(h,g){var p,v,x=h._data.length;if(g>x)throw new c.IndexSizeError;var m=x-g,y=u.characterData_substringData(h,g,m),w=l.create_text(h._nodeDocument,y),C=h._parent;if(C!==null){d.mutation_insert(w,C,h._nextSibling);try{for(var S=o(a.dom.rangeList),T=S.next();!T.done;T=S.next()){var _=T.value;_._start[0]===h&&_._start[1]>g&&(_._start[0]=w,_._start[1]-=g),_._end[0]===h&&_._end[1]>g&&(_._end[0]=w,_._end[1]-=g);var E=f.tree_index(h);_._start[0]===C&&_._start[1]===E+1&&_._start[1]++,_._end[0]===C&&_._end[1]===E+1&&_._end[1]++}}catch(D){p={error:D}}finally{try{T&&!T.done&&(v=S.return)&&v.call(S)}finally{if(p)throw p.error}}}return u.characterData_replaceData(h,g,m,""),w}},function(r,n,i){var o=i(4),a=i(41),s=i(24),c=i(48),l=[].join,f=a!=Object,u=c("join",",");o({target:"Array",proto:!0,forced:f||!u},{join:function(d){return l.call(s(this),d===void 0?",":d)}})},function(r,n,i){var o=i(4),a=i(83),s=String.fromCharCode,c=String.fromCodePoint;o({target:"String",stat:!0,forced:!!c&&c.length!=1},{fromCodePoint:function(l){for(var f,u=[],d=arguments.length,h=0;d>h;){if(f=+arguments[h++],a(f,1114111)!==f)throw RangeError(f+" is not a valid code point");u.push(f<65536?s(f):s(55296+((f-=65536)>>10),f%1024+56320))}return u.join("")}})},function(r,n,i){var o=this&&this.__read||function(c,l){var f=typeof Symbol=="function"&&c[Symbol.iterator];if(!f)return c;var u,d,h=f.call(c),g=[];try{for(;(l===void 0||l-- >0)&&!(u=h.next()).done;)g.push(u.value)}catch(p){d={error:p}}finally{try{u&&!u.done&&(f=h.return)&&f.call(h)}finally{if(d)throw d.error}}return g};Object.defineProperty(n,"__esModule",{value:!0});var a=i(111),s=function(){function c(l,f){this._options={skipWhitespaceOnlyText:!1},this.err={line:-1,col:-1,index:-1,str:""},this._str=l,this._index=0,this._length=l.length,f&&(this._options.skipWhitespaceOnlyText=f.skipWhitespaceOnlyText||!1)}return c.prototype.nextToken=function(){if(this.eof())return{type:a.TokenType.EOF};var l=this.skipIfStartsWith("<")?this.openBracket():this.text();return this._options.skipWhitespaceOnlyText&&l.type===a.TokenType.Text&&c.isWhiteSpaceToken(l)&&(l=this.nextToken()),l},c.prototype.openBracket=function(){return this.skipIfStartsWith("?")?this.skipIfStartsWith("xml")?c.isSpace(this._str[this._index])?this.declaration():(this.seek(-3),this.pi()):this.pi():this.skipIfStartsWith("!")?this.skipIfStartsWith("--")?this.comment():this.skipIfStartsWith("[CDATA[")?this.cdata():this.skipIfStartsWith("DOCTYPE")?this.doctype():void this.throwError("Invalid '!' in opening tag."):this.skipIfStartsWith("/")?this.closeTag():this.openTag()},c.prototype.declaration=function(){for(var l="",f="",u="";!this.eof();){if(this.skipSpace(),this.skipIfStartsWith("?>"))return{type:a.TokenType.Declaration,version:l,encoding:f,standalone:u};var d=o(this.attribute(),2),h=d[0],g=d[1];h==="version"?l=g:h==="encoding"?f=g:h==="standalone"?u=g:this.throwError("Invalid attribute name: "+h)}this.throwError("Missing declaration end symbol `?>`")},c.prototype.doctype=function(){var l="",f="";this.skipSpace();var u=this.takeUntil2("[",">",!0);return this.skipSpace(),this.skipIfStartsWith("PUBLIC")?(l=this.quotedString(),f=this.quotedString()):this.skipIfStartsWith("SYSTEM")&&(f=this.quotedString()),this.skipSpace(),this.skipIfStartsWith("[")&&(this.skipUntil("]"),this.skipIfStartsWith("]")||this.throwError("Missing end bracket of DTD internal subset")),this.skipSpace(),this.skipIfStartsWith(">")||this.throwError("Missing doctype end symbol `>`"),{type:a.TokenType.DocType,name:u,pubId:l,sysId:f}},c.prototype.pi=function(){var l=this.takeUntilStartsWith("?>",!0);if(this.eof()&&this.throwError("Missing processing instruction end symbol `?>`"),this.skipSpace(),this.skipIfStartsWith("?>"))return{type:a.TokenType.PI,target:l,data:""};var f=this.takeUntilStartsWith("?>");return this.eof()&&this.throwError("Missing processing instruction end symbol `?>`"),this.seek(2),{type:a.TokenType.PI,target:l,data:f}},c.prototype.text=function(){var l=this.takeUntil("<");return{type:a.TokenType.Text,data:l}},c.prototype.comment=function(){var l=this.takeUntilStartsWith("-->");return this.eof()&&this.throwError("Missing comment end symbol `-->`"),this.seek(3),{type:a.TokenType.Comment,data:l}},c.prototype.cdata=function(){var l=this.takeUntilStartsWith("]]>");return this.eof()&&this.throwError("Missing CDATA end symbol `]>`"),this.seek(3),{type:a.TokenType.CDATA,data:l}},c.prototype.openTag=function(){this.skipSpace();var l=this.takeUntil2(">","/",!0);if(this.skipSpace(),this.skipIfStartsWith(">"))return{type:a.TokenType.Element,name:l,attributes:[],selfClosing:!1};if(this.skipIfStartsWith("/>"))return{type:a.TokenType.Element,name:l,attributes:[],selfClosing:!0};for(var f=[];!this.eof();){if(this.skipSpace(),this.skipIfStartsWith(">"))return{type:a.TokenType.Element,name:l,attributes:f,selfClosing:!1};if(this.skipIfStartsWith("/>"))return{type:a.TokenType.Element,name:l,attributes:f,selfClosing:!0};var u=this.attribute();f.push(u)}this.throwError("Missing opening element tag end symbol `>`")},c.prototype.closeTag=function(){this.skipSpace();var l=this.takeUntil(">",!0);return this.skipSpace(),this.skipIfStartsWith(">")||this.throwError("Missing closing element tag end symbol `>`"),{type:a.TokenType.ClosingTag,name:l}},c.prototype.attribute=function(){this.skipSpace();var l=this.takeUntil("=",!0);return this.skipSpace(),this.skipIfStartsWith("=")||this.throwError("Missing equals sign before attribute value"),[l,this.quotedString()]},c.prototype.quotedString=function(){this.skipSpace();var l=this.take(1);c.isQuote(l)||this.throwError("Missing start quote character before quoted value");var f=this.takeUntil(l);return this.skipIfStartsWith(l)||this.throwError("Missing end quote character after quoted value"),f},c.prototype.eof=function(){return this._index>=this._length},c.prototype.skipIfStartsWith=function(l){var f=l.length;if(f===1)return this._str[this._index]===l&&(this._index++,!0);for(var u=0;uthis._length&&(this._index=this._length)},c.prototype.skipSpace=function(){for(;!this.eof()&&c.isSpace(this._str[this._index]);)this._index++},c.prototype.take=function(l){if(l===1)return this._str[this._index++];var f=this._index;return this.seek(l),this._str.slice(f,this._index)},c.prototype.takeUntil=function(l,f){f===void 0&&(f=!1);for(var u=this._index;this._indexthis._index){g=u.index;break}throw this.err={line:d,col:this._index-h,index:this._index,str:this._str.substring(h,g)},new Error(l+` -Index: `+this.err.index+` -Ln: `+this.err.line+", Col: "+this.err.col+` -Input: `+this.err.str)},c.prototype[Symbol.iterator]=function(){return this._index=0,{next:(function(){var l=this.nextToken();return l.type===a.TokenType.EOF?{done:!0,value:null}:{done:!1,value:l}}).bind(this)}},c}();n.XMLStringLexer=s},function(r,n,i){var o=i(39);r.exports=new o({include:[i(182)]})},function(r,n,i){var o=i(39);r.exports=new o({include:[i(113)],implicit:[i(289),i(290),i(291),i(292)]})},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(91),a=i(1),s=i(3),c=i(77),l=i(109);function f(g,p){var v=d(g===void 0||u(g)?g:o.DefaultBuilderOptions),x=u(g)?p:g,m=l.createDocument();h(m,v);var y=new c.XMLBuilderImpl(m);return x!==void 0&&y.ele(x),y}function u(g){if(!a.isPlainObject(g))return!1;for(var p in g)if(g.hasOwnProperty(p)&&!o.XMLBuilderOptionKeys.has(p))return!1;return!0}function d(g){g===void 0&&(g={});var p=a.applyDefaults(g,o.DefaultBuilderOptions);if(p.convert.att.length===0||p.convert.ins.length===0||p.convert.text.length===0||p.convert.cdata.length===0||p.convert.comment.length===0)throw new Error("JS object converter strings cannot be zero length.");return p}function h(g,p,v){var x=g;x._xmlBuilderOptions=p,x._isFragment=v}n.builder=function(g,p){var v=d(u(g)?g:o.DefaultBuilderOptions),x=s.Guard.isNode(g)||a.isArray(g)?g:p;if(x===void 0)throw new Error("Invalid arguments.");if(a.isArray(x)){for(var m=[],y=0;y0)&&!(w=S.next()).done;)T.push(w.value)}catch(_){C={error:_}}finally{try{w&&!w.done&&(y=S.return)&&y.call(S)}finally{if(C)throw C.error}}return T},a=this&&this.__values||function(x){var m=typeof Symbol=="function"&&Symbol.iterator,y=m&&x[m],w=0;if(y)return y.call(x);if(x&&typeof x.length=="number")return{next:function(){return x&&w>=x.length&&(x=void 0),{value:x&&x[w++],done:!x}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var s=i(91),c=i(1),l=i(217),f=i(2),u=i(3),d=i(0),h=i(109),g=i(7),p=i(276),v=function(){function x(m){this._domNode=m}return Object.defineProperty(x.prototype,"node",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"options",{get:function(){return this._options},enumerable:!0,configurable:!0}),x.prototype.set=function(m){return this._options=c.applyDefaults(c.applyDefaults(this._options,m,!0),s.DefaultBuilderOptions),this},x.prototype.ele=function(m,y,w){var C,S,T,_,E,D;if(c.isObject(m))return new p.ObjectReader(this._options).parse(this,m);if(m!==null&&/^\s*0&&(m===void 0&&(m=y.slice(C+1)),y=y.slice(0,C)),m===void 0)m=w?this._options.defaultNamespace.ele:this._options.defaultNamespace.att;else if(m!==null&&m[0]==="@"){var S=m.slice(1);if((m=this._options.namespaceAlias[S])===void 0)throw new Error("Namespace alias `"+S+"` is not defined. "+this._debugInfo())}return[m,y]},x.prototype._updateNamespace=function(m){var y,w,C,S,T=this._domNode;if(u.Guard.isElementNode(T)&&m!==null&&T.namespaceURI!==m){var _=o(d.namespace_extractQName(T.prefix?T.prefix+":"+T.localName:T.localName),2),E=_[0],D=_[1],b=d.create_element(this._doc,D,m,E);try{for(var I=a(T.attributes),R=I.next();!R.done;R=I.next()){var M=R.value,L=M.prefix?M.prefix+":"+M.localName:M.localName,A=o(d.namespace_extractQName(L),1)[0],G=M.namespaceURI;G===null&&A!==null&&(G=T.lookupNamespaceURI(A)),G===null?b.setAttribute(L,M.value):b.setAttributeNS(G,L,M.value)}}catch(ne){y={error:ne}}finally{try{R&&!R.done&&(w=I.return)&&w.call(I)}finally{if(y)throw y.error}}var P=T.parentNode;if(P===null)throw new Error("Parent node is null."+this._debugInfo());P.replaceChild(b,T),this._domNode=b;try{for(var N=a(T.childNodes),V=N.next();!V.done;V=N.next()){var $=V.value.cloneNode(!0);if(b.appendChild($),u.Guard.isElementNode($)){var H=o(d.namespace_extractQName($.prefix?$.prefix+":"+$.localName:$.localName),1)[0],Y=b.lookupNamespaceURI(H);new x($)._updateNamespace(Y)}}}catch(ne){C={error:ne}}finally{try{V&&!V.done&&(S=N.return)&&S.call(N)}finally{if(C)throw C.error}}}},Object.defineProperty(x.prototype,"_doc",{get:function(){var m=this.node;if(u.Guard.isDocumentNode(m))return m;var y=m.ownerDocument;if(!y)throw new Error("Owner document is null. "+this._debugInfo());return y},enumerable:!0,configurable:!0}),x.prototype._debugInfo=function(m){var y=this.node,w=y.parentNode;m=m||y.nodeName;var C=w?w.nodeName:"";return C?"node: <"+m+">, parent: <"+C+">":"node: <"+m+">"},Object.defineProperty(x.prototype,"_options",{get:function(){var m=this._doc;if(m._xmlBuilderOptions===void 0)throw new Error("Builder options is not set.");return m._xmlBuilderOptions},set:function(m){this._doc._xmlBuilderOptions=m},enumerable:!0,configurable:!0}),x}();n.XMLBuilderImpl=v},function(r,n,i){var o=i(11),a=i(117),s=o.WeakMap;r.exports=typeof s=="function"&&/native code/.test(a(s))},function(r,n,i){var o=i(46),a=i(82),s=i(85),c=i(18);r.exports=o("Reflect","ownKeys")||function(l){var f=a.f(c(l)),u=s.f;return u?f.concat(u(l)):f}},function(r,n,i){var o=i(16),a=i(15),s=i(18),c=i(61);r.exports=o?Object.defineProperties:function(l,f){s(l);for(var u,d=c(f),h=d.length,g=0;h>g;)a.f(l,u=d[g++],f[u]);return l}},function(r,n,i){var o=i(46);r.exports=o("document","documentElement")},function(r,n,i){var o=i(24),a=i(82).f,s={}.toString,c=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];r.exports.f=function(l){return c&&s.call(l)=="[object Window]"?function(f){try{return a(f)}catch{return c.slice()}}(l):a(o(l))}},function(r,n,i){var o=i(4),a=i(36).every,s=i(48),c=i(28),l=s("every"),f=c("every");o({target:"Array",proto:!0,forced:!l||!f},{every:function(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(4),a=i(36).filter,s=i(63),c=i(28),l=s("filter"),f=c("filter");o({target:"Array",proto:!0,forced:!l||!f},{filter:function(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(46);r.exports=o("navigator","userAgent")||""},function(r,n,i){var o=i(4),a=i(36).find,s=i(130),c=i(28),l=!0,f=c("find");"find"in[]&&Array(1).find(function(){l=!1}),o({target:"Array",proto:!0,forced:l||!f},{find:function(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}}),s("find")},function(r,n,i){var o=i(131).IteratorPrototype,a=i(60),s=i(40),c=i(62),l=i(49),f=function(){return this};r.exports=function(u,d,h){var g=d+" Iterator";return u.prototype=a(o,{next:s(1,h)}),c(u,g,!1,!0),l[g]=f,u}},function(r,n,i){var o=i(8);r.exports=!o(function(){function a(){}return a.prototype.constructor=null,Object.getPrototypeOf(new a)!==a.prototype})},function(r,n,i){var o=i(13);r.exports=function(a){if(!o(a)&&a!==null)throw TypeError("Can't set "+String(a)+" as a prototype");return a}},function(r,n,i){var o=i(4),a=i(36).map,s=i(63),c=i(28),l=s("map"),f=c("map");o({target:"Array",proto:!0,forced:!l||!f},{map:function(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(4),a=i(200).left,s=i(48),c=i(28),l=s("reduce"),f=c("reduce",{1:0});o({target:"Array",proto:!0,forced:!l||!f},{reduce:function(u){return a(this,u,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(127),a=i(27),s=i(41),c=i(26),l=function(f){return function(u,d,h,g){o(d);var p=a(u),v=s(p),x=c(p.length),m=f?x-1:0,y=f?-1:1;if(h<2)for(;;){if(m in v){g=v[m],m+=y;break}if(m+=y,f?m<0:x<=m)throw TypeError("Reduce of empty array with no initial value")}for(;f?m>=0:x>m;m+=y)m in v&&(g=d(g,v[m],m,p));return g}};r.exports={left:l(!1),right:l(!0)}},function(r,n,i){var o=i(4),a=i(36).some,s=i(48),c=i(28),l=s("some"),f=c("some");o({target:"Array",proto:!0,forced:!l||!f},{some:function(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}})},function(r,n,i){var o=i(90),a=i(135);r.exports=o?{}.toString:function(){return"[object "+a(this)+"]"}},function(r,n){r.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(r,n,i){var o=i(8);r.exports=!o(function(){return Object.isExtensible(Object.preventExtensions({}))})},function(r,n,i){var o=i(5),a=i(49),s=o("iterator"),c=Array.prototype;r.exports=function(l){return l!==void 0&&(a.Array===l||c[s]===l)}},function(r,n,i){var o=i(135),a=i(49),s=i(5)("iterator");r.exports=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[o(c)]}},function(r,n,i){var o=i(18);r.exports=function(a,s,c,l){try{return l?s(o(c)[0],c[1]):s(c)}catch(u){var f=a.return;throw f!==void 0&&o(f.call(a)),u}}},function(r,n,i){var o=i(5)("iterator"),a=!1;try{var s=0,c={next:function(){return{done:!!s++}},return:function(){a=!0}};c[o]=function(){return this},Array.from(c,function(){throw 2})}catch{}r.exports=function(l,f){if(!f&&!a)return!1;var u=!1;try{var d={};d[o]=function(){return{next:function(){return{done:u=!0}}}},l(d)}catch{}return u}},function(r,n,i){var o=i(13),a=i(133);r.exports=function(s,c,l){var f,u;return a&&typeof(f=c.constructor)=="function"&&f!==l&&o(u=f.prototype)&&u!==l.prototype&&a(s,u),s}},function(r,n,i){var o=i(25);r.exports=function(a,s,c){for(var l in s)o(a,l,s[l],c);return a}},function(r,n,i){var o=i(46),a=i(15),s=i(5),c=i(16),l=s("species");r.exports=function(f){var u=o(f),d=a.f;c&&u&&!u[l]&&d(u,l,{configurable:!0,get:function(){return this}})}},function(r,n,i){var o=this&&this.__generator||function(c,l){var f,u,d,h,g={label:0,sent:function(){if(1&d[0])throw d[1];return d[1]},trys:[],ops:[]};return h={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(h[Symbol.iterator]=function(){return this}),h;function p(v){return function(x){return function(m){if(f)throw new TypeError("Generator is already executing.");for(;g;)try{if(f=1,u&&(d=2&m[0]?u.return:m[0]?u.throw||((d=u.return)&&d.call(u),0):u.next)&&!(d=d.call(u,m[1])).done)return d;switch(u=0,d&&(m=[2&m[0],d.value]),m[0]){case 0:case 1:d=m;break;case 4:return g.label++,{value:m[1],done:!1};case 5:g.label++,u=m[1],m=[0];continue;case 7:m=g.ops.pop(),g.trys.pop();continue;default:if(d=g.trys,!((d=d.length>0&&d[d.length-1])||m[0]!==6&&m[0]!==2)){g=0;continue}if(m[0]===3&&(!d||m[1]>d[0]&&m[1]=c.length&&(c=void 0),{value:c&&c[u++],done:!c}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function c(l){l===void 0&&(l=1e3),this._items=new Set,this._limit=l}return c.prototype.add=function(l){if(this._items.add(l),this._items.size>this._limit){var f=this._items.values().next();f.done||this._items.delete(f.value)}return this},c.prototype.delete=function(l){return this._items.delete(l)},c.prototype.has=function(l){return this._items.has(l)},c.prototype.clear=function(){this._items.clear()},Object.defineProperty(c.prototype,"size",{get:function(){return this._items.size},enumerable:!0,configurable:!0}),c.prototype.forEach=function(l,f){var u=this;this._items.forEach(function(d){return l.call(f,d,d,u)})},c.prototype.keys=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.keys())];case 1:return l.sent(),[2]}})},c.prototype.values=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.values())];case 1:return l.sent(),[2]}})},c.prototype.entries=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.entries())];case 1:return l.sent(),[2]}})},c.prototype[Symbol.iterator]=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items)];case 1:return l.sent(),[2]}})},Object.defineProperty(c.prototype,Symbol.toStringTag,{get:function(){return"FixedSizeSet"},enumerable:!0,configurable:!0}),c}();n.FixedSizeSet=s},function(r,n,i){var o=this&&this.__generator||function(c,l){var f,u,d,h,g={label:0,sent:function(){if(1&d[0])throw d[1];return d[1]},trys:[],ops:[]};return h={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(h[Symbol.iterator]=function(){return this}),h;function p(v){return function(x){return function(m){if(f)throw new TypeError("Generator is already executing.");for(;g;)try{if(f=1,u&&(d=2&m[0]?u.return:m[0]?u.throw||((d=u.return)&&d.call(u),0):u.next)&&!(d=d.call(u,m[1])).done)return d;switch(u=0,d&&(m=[2&m[0],d.value]),m[0]){case 0:case 1:d=m;break;case 4:return g.label++,{value:m[1],done:!1};case 5:g.label++,u=m[1],m=[0];continue;case 7:m=g.ops.pop(),g.trys.pop();continue;default:if(d=g.trys,!((d=d.length>0&&d[d.length-1])||m[0]!==6&&m[0]!==2)){g=0;continue}if(m[0]===3&&(!d||m[1]>d[0]&&m[1]=c.length&&(c=void 0),{value:c&&c[u++],done:!c}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function c(l){l===void 0&&(l=1e3),this._items=new Map,this._limit=l}return c.prototype.get=function(l){return this._items.get(l)},c.prototype.set=function(l,f){if(this._items.set(l,f),this._items.size>this._limit){var u=this._items.keys().next();u.done||this._items.delete(u.value)}},c.prototype.delete=function(l){return this._items.delete(l)},c.prototype.has=function(l){return this._items.has(l)},c.prototype.clear=function(){this._items.clear()},Object.defineProperty(c.prototype,"size",{get:function(){return this._items.size},enumerable:!0,configurable:!0}),c.prototype.forEach=function(l,f){this._items.forEach(function(u,d){return l.call(f,d,u)})},c.prototype.keys=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.keys())];case 1:return l.sent(),[2]}})},c.prototype.values=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.values())];case 1:return l.sent(),[2]}})},c.prototype.entries=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items.entries())];case 1:return l.sent(),[2]}})},c.prototype[Symbol.iterator]=function(){return o(this,function(l){switch(l.label){case 0:return[5,a(this._items)];case 1:return l.sent(),[2]}})},Object.defineProperty(c.prototype,Symbol.toStringTag,{get:function(){return"ObjectCache"},enumerable:!0,configurable:!0}),c}();n.ObjectCache=s},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(s){s===void 0&&(s=1e3),this._items=new Map,this._limit=s}return a.prototype.check=function(s,c){if(this._items.get(s)===c)return!0;if(this._items.get(c)===s)return!1;var l=Math.random()<.5;if(l?this._items.set(s,c):this._items.set(c,s),this._items.size>this._limit){var f=this._items.keys().next();f.done||this._items.delete(f.value)}return l},a}();n.CompareCache=o},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(s){this._initialized=!1,this._value=void 0,this._initFunc=s}return Object.defineProperty(a.prototype,"value",{get:function(){return this._initialized||(this._value=this._initFunc(),this._initialized=!0),this._value},enumerable:!0,configurable:!0}),a}();n.Lazy=o},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function a(s){this._pointer=0,this._chars=Array.from(s),this._length=this._chars.length}return Object.defineProperty(a.prototype,"eof",{get:function(){return this._pointer>=this._length},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),a.prototype.codePoint=function(){if(this._codePoint===void 0)if(this.eof)this._codePoint=-1;else{var s=this._chars[this._pointer].codePointAt(0);this._codePoint=s!==void 0?s:-1}return this._codePoint},a.prototype.c=function(){return this._c===void 0&&(this._c=this.eof?"":this._chars[this._pointer]),this._c},a.prototype.remaining=function(){return this._remaining===void 0&&(this._remaining=this.eof?"":this._chars.slice(this._pointer+1).join("")),this._remaining},a.prototype.substring=function(){return this._substring===void 0&&(this._substring=this.eof?"":this._chars.slice(this._pointer).join("")),this._substring},Object.defineProperty(a.prototype,"pointer",{get:function(){return this._pointer},set:function(s){s!==this._pointer&&(this._pointer=s,this._codePoint=void 0,this._c=void 0,this._remaining=void 0,this._substring=void 0)},enumerable:!0,configurable:!0}),a}();n.StringWalker=o},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(218);n.MapWriter=o.MapWriter;var a=i(258);n.XMLWriter=a.XMLWriter;var s=i(67);n.ObjectWriter=s.ObjectWriter;var c=i(260);n.JSONWriter=c.JSONWriter;var l=i(261);n.YAMLWriter=l.YAMLWriter},function(r,n,i){i(19),i(219),i(20),i(22),i(23);var o,a=this&&this.__extends||(o=function(f,u){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,h){d.__proto__=h}||function(d,h){for(var g in h)h.hasOwnProperty(g)&&(d[g]=h[g])})(f,u)},function(f,u){function d(){this.constructor=f}o(f,u),f.prototype=u===null?Object.create(u):(d.prototype=u.prototype,new d)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(1),c=i(67),l=function(f){function u(d,h){var g=f.call(this,d)||this;return g._writerOptions=s.applyDefaults(h,{format:"map",wellFormed:!1,group:!1,verbose:!1}),g}return a(u,f),u.prototype.serialize=function(d){var h=s.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1,verbose:!1}),g=new c.ObjectWriter(this._builderOptions,h).serialize(d);return this._convertObject(g)},u.prototype._convertObject=function(d){if(s.isArray(d)){for(var h=0;h=51||!a(function(){var w=[];return w[v]=!1,w.concat()[0]!==w}),m=h("concat"),y=function(w){if(!c(w))return!1;var C=w[v];return C!==void 0?!!C:s(w)};o({target:"Array",proto:!0,forced:!x||!m},{concat:function(w){var C,S,T,_,E,D=l(this),b=d(D,0),I=0;for(C=-1,T=arguments.length;C9007199254740991)throw TypeError("Maximum allowed index exceeded");for(S=0;S<_;S++,I++)S in E&&u(b,I,E[S])}else{if(I>=9007199254740991)throw TypeError("Maximum allowed index exceeded");u(b,I++,E)}return b.length=I,b}})},function(r,n,i){var o=i(8);function a(s,c){return RegExp(s,c)}n.UNSUPPORTED_Y=o(function(){var s=a("a","y");return s.lastIndex=2,s.exec("abcd")!=null}),n.BROKEN_CARET=o(function(){var s=a("^r","gy");return s.lastIndex=2,s.exec("str")!=null})},function(r,n,i){var o=i(223);r.exports=function(a){if(o(a))throw TypeError("The method doesn't accept regular expressions");return a}},function(r,n,i){var o=i(13),a=i(42),s=i(5)("match");r.exports=function(c){var l;return o(c)&&((l=c[s])!==void 0?!!l:a(c)=="RegExp")}},function(r,n,i){var o=i(5)("match");r.exports=function(a){var s=/./;try{"/./"[a](s)}catch{try{return s[o]=!1,"/./"[a](s)}catch{}}return!1}},function(r,n,i){i(68);var o=i(25),a=i(8),s=i(5),c=i(93),l=i(21),f=s("species"),u=!a(function(){var v=/./;return v.exec=function(){var x=[];return x.groups={a:"7"},x},"".replace(v,"$")!=="7"}),d="a".replace(/./,"$0")==="$0",h=s("replace"),g=!!/./[h]&&/./[h]("a","$0")==="",p=!a(function(){var v=/(?:)/,x=v.exec;v.exec=function(){return x.apply(this,arguments)};var m="ab".split(v);return m.length!==2||m[0]!=="a"||m[1]!=="b"});r.exports=function(v,x,m,y){var w=s(v),C=!a(function(){var b={};return b[w]=function(){return 7},""[v](b)!=7}),S=C&&!a(function(){var b=!1,I=/a/;return v==="split"&&((I={}).constructor={},I.constructor[f]=function(){return I},I.flags="",I[w]=/./[w]),I.exec=function(){return b=!0,null},I[w](""),!b});if(!C||!S||v==="replace"&&(!u||!d||g)||v==="split"&&!p){var T=/./[w],_=m(w,""[v],function(b,I,R,M,L){return I.exec===c?C&&!L?{done:!0,value:T.call(I,R,M)}:{done:!0,value:b.call(R,I,M)}:{done:!1}},{REPLACE_KEEPS_$0:d,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:g}),E=_[0],D=_[1];o(String.prototype,v,E),o(RegExp.prototype,w,x==2?function(b,I){return D.call(b,this,I)}:function(b){return D.call(b,this)})}y&&l(RegExp.prototype[w],"sham",!0)}},function(r,n,i){var o=i(137).charAt;r.exports=function(a,s,c){return s+(c?o(a,s).length:1)}},function(r,n,i){var o=i(42),a=i(93);r.exports=function(s,c){var l=s.exec;if(typeof l=="function"){var f=l.call(s,c);if(typeof f!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return f}if(o(s)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return a.call(s,c)}},function(r,n,i){(function(o){Object.defineProperty(n,"__esModule",{value:!0});var a=i(96);n.forgivingBase64Encode=function(s){return o.from(s).toString("base64")},n.forgivingBase64Decode=function(s){return s===""?"":((s=s.replace(a.ASCIIWhiteSpace,"")).length%4==0&&(s.endsWith("==")?s=s.substr(0,s.length-2):s.endsWith("=")&&(s=s.substr(0,s.length-1))),s.length%4==1?null:/[0-9A-Za-z+/]/.test(s)?o.from(s,"base64").toString("utf8"):null)}}).call(this,i(145).Buffer)},function(r,n,i){n.byteLength=function(h){var g=u(h),p=g[0],v=g[1];return 3*(p+v)/4-v},n.toByteArray=function(h){var g,p,v=u(h),x=v[0],m=v[1],y=new s(function(S,T,_){return 3*(T+_)/4-_}(0,x,m)),w=0,C=m>0?x-4:x;for(p=0;p>16&255,y[w++]=g>>8&255,y[w++]=255&g;return m===2&&(g=a[h.charCodeAt(p)]<<2|a[h.charCodeAt(p+1)]>>4,y[w++]=255&g),m===1&&(g=a[h.charCodeAt(p)]<<10|a[h.charCodeAt(p+1)]<<4|a[h.charCodeAt(p+2)]>>2,y[w++]=g>>8&255,y[w++]=255&g),y},n.fromByteArray=function(h){for(var g,p=h.length,v=p%3,x=[],m=0,y=p-v;my?y:m+16383));return v===1?(g=h[p-1],x.push(o[g>>2]+o[g<<4&63]+"==")):v===2&&(g=(h[p-2]<<8)+h[p-1],x.push(o[g>>10]+o[g>>4&63]+o[g<<2&63]+"=")),x.join("")};for(var o=[],a=[],s=typeof Uint8Array<"u"?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,f=c.length;l0)throw new Error("Invalid string. Length must be a multiple of 4");var p=h.indexOf("=");return p===-1&&(p=g),[p,p===g?0:4-p%4]}function d(h,g,p){for(var v,x,m=[],y=g;y>18&63]+o[x>>12&63]+o[x>>6&63]+o[63&x]);return m.join("")}a[45]=62,a[95]=63},function(r,n){n.read=function(i,o,a,s,c){var l,f,u=8*c-s-1,d=(1<>1,g=-7,p=a?c-1:0,v=a?-1:1,x=i[o+p];for(p+=v,l=x&(1<<-g)-1,x>>=-g,g+=u;g>0;l=256*l+i[o+p],p+=v,g-=8);for(f=l&(1<<-g)-1,l>>=-g,g+=s;g>0;f=256*f+i[o+p],p+=v,g-=8);if(l===0)l=1-h;else{if(l===d)return f?NaN:1/0*(x?-1:1);f+=Math.pow(2,s),l-=h}return(x?-1:1)*f*Math.pow(2,l-s)},n.write=function(i,o,a,s,c,l){var f,u,d,h=8*l-c-1,g=(1<>1,v=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,x=s?0:l-1,m=s?1:-1,y=o<0||o===0&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(u=isNaN(o)?1:0,f=g):(f=Math.floor(Math.log(o)/Math.LN2),o*(d=Math.pow(2,-f))<1&&(f--,d*=2),(o+=f+p>=1?v/d:v*Math.pow(2,1-p))*d>=2&&(f++,d/=2),f+p>=g?(u=0,f=g):f+p>=1?(u=(o*d-1)*Math.pow(2,c),f+=p):(u=o*Math.pow(2,p-1)*Math.pow(2,c),f=0));c>=8;i[a+x]=255&u,x+=m,u/=256,c-=8);for(f=f<0;i[a+x]=255&f,x+=m,f/=256,h-=8);i[a+x-m]|=128*y}},function(r,n){var i={}.toString;r.exports=Array.isArray||function(o){return i.call(o)=="[object Array]"}},function(r,n,i){var o=this&&this.__values||function(c){var l=typeof Symbol=="function"&&Symbol.iterator,f=l&&c[l],u=0;if(f)return f.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&u>=c.length&&(c=void 0),{value:c&&c[u++],done:!c}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(1);function s(c){var l,f;if(c===null||a.isString(c)||a.isNumber(c))return c;if(a.isArray(c)){var u=new Array;try{for(var d=o(c),h=d.next();!h.done;h=d.next()){var g=h.value;u.push(s(g))}}catch(x){l={error:x}}finally{try{h&&!h.done&&(f=d.return)&&f.call(d)}finally{if(l)throw l.error}}return u}if(a.isObject(c)){u=new Map;for(var p in c)if(c.hasOwnProperty(p)){var v=c[p];u.set(p,s(v))}return u}return c}n.parseJSONFromBytes=function(c){var l=a.utf8Decode(c);return JSON.parse.call(void 0,l)},n.serializeJSONToBytes=function(c){var l=JSON.stringify.call(void 0,c);return a.utf8Encode(l)},n.parseJSONIntoInfraValues=function(c){return s(JSON.parse.call(void 0,c))},n.convertAJSONDerivedJavaScriptValueToAnInfraValue=s},function(r,n,i){var o=this&&this.__generator||function(f,u){var d,h,g,p,v={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return p={next:x(0),throw:x(1),return:x(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function x(m){return function(y){return function(w){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&w[0]?h.return:w[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,w[1])).done)return g;switch(h=0,g&&(w=[2&w[0],g.value]),w[0]){case 0:case 1:g=w;break;case 4:return v.label++,{value:w[1],done:!1};case 5:v.label++,h=w[1],w=[0];continue;case 7:w=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||w[0]!==6&&w[0]!==2)){v=0;continue}if(w[0]===3&&(!g||w[1]>g[0]&&w[1]0)&&!(h=p.next()).done;)v.push(h.value)}catch(x){g={error:x}}finally{try{h&&!h.done&&(d=p.return)&&d.call(p)}finally{if(g)throw g.error}}return v},s=this&&this.__spread||function(){for(var f=[],u=0;u=f.length&&(f=void 0),{value:f&&f[h++],done:!f}}};throw new TypeError(u?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var l=i(1);n.append=function(f,u){f.push(u)},n.extend=function(f,u){f.push.apply(f,s(u))},n.prepend=function(f,u){f.unshift(u)},n.replace=function(f,u,d){var h,g,p=0;try{for(var v=c(f),x=v.next();!x.done;x=v.next()){var m=x.value;if(l.isFunction(u))u.call(null,m)&&(f[p]=d);else if(m===u)return void(f[p]=d);p++}}catch(y){h={error:y}}finally{try{x&&!x.done&&(g=v.return)&&g.call(v)}finally{if(h)throw h.error}}},n.insert=function(f,u,d){f.splice(d,0,u)},n.remove=function(f,u){for(var d=f.length;d--;){var h=f[d];if(l.isFunction(u))u.call(null,h)&&f.splice(d,1);else if(h===u)return void f.splice(d,1)}},n.empty=function(f){f.length=0},n.contains=function(f,u){var d,h;try{for(var g=c(f),p=g.next();!p.done;p=g.next()){var v=p.value;if(l.isFunction(u)){if(u.call(null,v))return!0}else if(v===u)return!0}}catch(x){d={error:x}}finally{try{p&&!p.done&&(h=g.return)&&h.call(g)}finally{if(d)throw d.error}}return!1},n.size=function(f,u){var d,h;if(u===void 0)return f.length;var g=0;try{for(var p=c(f),v=p.next();!v.done;v=p.next()){var x=v.value;u.call(null,x)&&g++}}catch(m){d={error:m}}finally{try{v&&!v.done&&(h=p.return)&&h.call(p)}finally{if(d)throw d.error}}return g},n.isEmpty=function(f){return f.length===0},n.forEach=function(f,u){var d,h,g,p,v,x;return o(this,function(m){switch(m.label){case 0:return u!==void 0?[3,2]:[5,c(f)];case 1:return m.sent(),[3,9];case 2:m.trys.push([2,7,8,9]),d=c(f),h=d.next(),m.label=3;case 3:return h.done?[3,6]:(g=h.value,u.call(null,g)?[4,g]:[3,5]);case 4:m.sent(),m.label=5;case 5:return h=d.next(),[3,3];case 6:return[3,9];case 7:return p=m.sent(),v={error:p},[3,9];case 8:try{h&&!h.done&&(x=d.return)&&x.call(d)}finally{if(v)throw v.error}return[7];case 9:return[2]}})},n.clone=function(f){return new(Array.bind.apply(Array,s([void 0],f)))},n.sortInAscendingOrder=function(f,u){return f.sort(function(d,h){return u.call(null,d,h)?-1:1})},n.sortInDescendingOrder=function(f,u){return f.sort(function(d,h){return u.call(null,d,h)?1:-1})}},function(r,n,i){var o=this&&this.__generator||function(f,u){var d,h,g,p,v={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return p={next:x(0),throw:x(1),return:x(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function x(m){return function(y){return function(w){if(d)throw new TypeError("Generator is already executing.");for(;v;)try{if(d=1,h&&(g=2&w[0]?h.return:w[0]?h.throw||((g=h.return)&&g.call(h),0):h.next)&&!(g=g.call(h,w[1])).done)return g;switch(h=0,g&&(w=[2&w[0],g.value]),w[0]){case 0:case 1:g=w;break;case 4:return v.label++,{value:w[1],done:!1};case 5:v.label++,h=w[1],w=[0];continue;case 7:w=v.ops.pop(),v.trys.pop();continue;default:if(g=v.trys,!((g=g.length>0&&g[g.length-1])||w[0]!==6&&w[0]!==2)){v=0;continue}if(w[0]===3&&(!g||w[1]>g[0]&&w[1]=f.length&&(f=void 0),{value:f&&f[h++],done:!f}}};throw new TypeError(u?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__read||function(f,u){var d=typeof Symbol=="function"&&f[Symbol.iterator];if(!d)return f;var h,g,p=d.call(f),v=[];try{for(;(u===void 0||u-- >0)&&!(h=p.next()).done;)v.push(h.value)}catch(x){g={error:x}}finally{try{h&&!h.done&&(d=p.return)&&d.call(p)}finally{if(g)throw g.error}}return v},c=this&&this.__spread||function(){for(var f=[],u=0;u0&&p[p.length-1])||C[0]!==6&&C[0]!==2)){x=0;continue}if(C[0]===3&&(!p||C[1]>p[0]&&C[1]=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__read||function(u,d){var h=typeof Symbol=="function"&&u[Symbol.iterator];if(!h)return u;var g,p,v=h.call(u),x=[];try{for(;(d===void 0||d-- >0)&&!(g=v.next()).done;)x.push(g.value)}catch(m){p={error:m}}finally{try{g&&!g.done&&(h=v.return)&&h.call(v)}finally{if(p)throw p.error}}return x},c=this&&this.__spread||function(){for(var u=[],d=0;d=x.length&&(x=void 0),{value:x&&x[w++],done:!x}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(96),s=i(147),c=i(146),l=i(1);function f(x,m){for(var y=0;;){var w=y=65&&_<=90?String.fromCodePoint(_+32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(m)throw m.error}}return w}function g(x){return x.replace(/^[\t\n\f\r ]+/,"").replace(/[\t\n\f\r ]+$/,"")}function p(x,m,y){if(!l.isArray(m))return p(x,Array.from(m),y);for(var w="";y.position=97&&_<=122?String.fromCodePoint(_-32):T}}catch(E){m={error:E}}finally{try{S&&!S.done&&(y=C.return)&&y.call(C)}finally{if(m)throw m.error}}return w},n.asciiCaseInsensitiveMatch=function(x,m){return h(x)===h(m)},n.asciiEncode=function(x){return console.assert(d(x),"asciiEncode requires an ASCII string."),u(x)},n.asciiDecode=function(x){var m,y;try{for(var w=o(x),C=w.next();!C.done;C=w.next()){var S=C.value;console.assert(c.isASCIIByte(S),"asciiDecode requires an ASCII byte sequence.")}}catch(T){m={error:T}}finally{try{C&&!C.done&&(y=w.return)&&y.call(w)}finally{if(m)throw m.error}}return s.isomorphicDecode(x)},n.stripNewlines=function(x){return x.replace(/[\n\r]/g,"")},n.normalizeNewlines=function(x){return x.replace(/\r\n/g,` -`).replace(/\r/g,` -`)},n.stripLeadingAndTrailingASCIIWhitespace=g,n.stripAndCollapseASCIIWhitespace=function(x){return g(x.replace(/[\t\n\f\r ]{2,}/g," "))},n.collectASequenceOfCodePoints=p,n.skipASCIIWhitespace=v,n.strictlySplit=function x(m,y){if(!l.isArray(m))return x(Array.from(m),y);var w={position:0},C=[],S=p(function(T){return y!==T},m,w);for(C.push(S);w.position=s.length&&(s=void 0),{value:s&&s[f++],done:!s}}};throw new TypeError(c?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(97);n.abort_add=function(s,c){c._abortedFlag||c._abortAlgorithms.add(s)},n.abort_remove=function(s,c){c._abortAlgorithms.delete(s)},n.abort_signalAbort=function(s){var c,l;if(!s._abortedFlag){s._abortedFlag=!0;try{for(var f=o(s._abortAlgorithms),u=f.next();!u.done;u=f.next())u.value.call(s)}catch(d){c={error:d}}finally{try{u&&!u.done&&(l=f.return)&&l.call(f)}finally{if(c)throw c.error}}s._abortAlgorithms.clear(),a.event_fireAnEvent("abort",s)}}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(150),a=function(){function s(){}return s.asNode=function(c){if(o.Guard.isNode(c))return c;throw new Error("Invalid object. Node expected.")},s}();n.Cast=a},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function s(){}return Object.defineProperty(s.prototype,"size",{get:function(){return 0},enumerable:!0,configurable:!0}),s.prototype.add=function(c){throw new Error("Cannot add to an empty set.")},s.prototype.clear=function(){},s.prototype.delete=function(c){return!1},s.prototype.forEach=function(c,l){},s.prototype.has=function(c){return!1},s.prototype[Symbol.iterator]=function(){return new a},s.prototype.entries=function(){return new a},s.prototype.keys=function(){return new a},s.prototype.values=function(){return new a},Object.defineProperty(s.prototype,Symbol.toStringTag,{get:function(){return"EmptySet"},enumerable:!0,configurable:!0}),s}();n.EmptySet=o;var a=function(){function s(){}return s.prototype[Symbol.iterator]=function(){return this},s.prototype.next=function(){return{done:!0,value:null}},s}()},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),function(o){o[o.SchemeStart=0]="SchemeStart",o[o.Scheme=1]="Scheme",o[o.NoScheme=2]="NoScheme",o[o.SpecialRelativeOrAuthority=3]="SpecialRelativeOrAuthority",o[o.PathOrAuthority=4]="PathOrAuthority",o[o.Relative=5]="Relative",o[o.RelativeSlash=6]="RelativeSlash",o[o.SpecialAuthoritySlashes=7]="SpecialAuthoritySlashes",o[o.SpecialAuthorityIgnoreSlashes=8]="SpecialAuthorityIgnoreSlashes",o[o.Authority=9]="Authority",o[o.Host=10]="Host",o[o.Hostname=11]="Hostname",o[o.Port=12]="Port",o[o.File=13]="File",o[o.FileSlash=14]="FileSlash",o[o.FileHost=15]="FileHost",o[o.PathStart=16]="PathStart",o[o.Path=17]="Path",o[o.CannotBeABaseURLPath=18]="CannotBeABaseURLPath",o[o.Query=19]="Query",o[o.Fragment=20]="Fragment"}(n.ParserState||(n.ParserState={})),n.OpaqueOrigin=["","",null,null]},function(r,n,i){var o=i(245),a=i(247);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=C,n.resolve=function(S,T){return C(S,!1,!0).resolve(T)},n.resolveObject=function(S,T){return S?C(S,!1,!0).resolveObject(T):T},n.format=function(S){return a.isString(S)&&(S=C(S)),S instanceof s?S.format():s.prototype.format.call(S)},n.Url=s;var c=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r",` -`," "]),d=["'"].concat(u),h=["%","/","?",";","#"].concat(d),g=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,v=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,x={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},w=i(248);function C(S,T,_){if(S&&a.isObject(S)&&S instanceof s)return S;var E=new s;return E.parse(S,T,_),E}s.prototype.parse=function(S,T,_){if(!a.isString(S))throw new TypeError("Parameter 'url' must be a string, not "+typeof S);var E=S.indexOf("?"),D=E!==-1&&E127?ee+="x":ee+=Q[de];if(!ee.match(p)){var le=Y.slice(0,V),k=Y.slice(V+1),O=Q.match(v);O&&(le.push(O[1]),k.unshift(O[2])),k.length&&(I="/"+k.join(".")+I),this.hostname=le.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),H||(this.hostname=o.toASCII(this.hostname));var B=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+B,this.href+=this.host,H&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),I[0]!=="/"&&(I="/"+I))}if(!x[L])for(V=0,ne=d.length;V0)&&_.host.split("@"))&&(_.auth=O.shift(),_.host=_.hostname=O.shift())),_.search=S.search,_.query=S.query,a.isNull(_.pathname)&&a.isNull(_.search)||(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.href=_.format(),_;if(!Q.length)return _.pathname=null,_.search?_.path="/"+_.search:_.path=null,_.href=_.format(),_;for(var de=Q.slice(-1)[0],fe=(_.host||S.host||Q.length>1)&&(de==="."||de==="..")||de==="",le=0,k=Q.length;k>=0;k--)(de=Q[k])==="."?Q.splice(k,1):de===".."?(Q.splice(k,1),le++):le&&(Q.splice(k,1),le--);if(!Y&&!ne)for(;le--;le)Q.unshift("..");!Y||Q[0]===""||Q[0]&&Q[0].charAt(0)==="/"||Q.unshift(""),fe&&Q.join("/").substr(-1)!=="/"&&Q.push("");var O,B=Q[0]===""||Q[0]&&Q[0].charAt(0)==="/";return ee&&(_.hostname=_.host=B?"":Q.length?Q.shift():"",(O=!!(_.host&&_.host.indexOf("@")>0)&&_.host.split("@"))&&(_.auth=O.shift(),_.host=_.hostname=O.shift())),(Y=Y||_.host&&Q.length)&&!B&&Q.unshift(""),Q.length?_.pathname=Q.join("/"):(_.pathname=null,_.path=null),a.isNull(_.pathname)&&a.isNull(_.search)||(_.path=(_.pathname?_.pathname:"")+(_.search?_.search:"")),_.auth=S.auth||_.auth,_.slashes=_.slashes||S.slashes,_.href=_.format(),_},s.prototype.parseHost=function(){var S=this.host,T=l.exec(S);T&&((T=T[0])!==":"&&(this.port=T.substr(1)),S=S.substr(0,S.length-T.length)),S&&(this.hostname=S)}},function(r,n,i){(function(o,a){var s;/*! https://mths.be/punycode v1.4.1 by @mathias */(function(c){n&&n.nodeType,o&&o.nodeType;var l=typeof a=="object"&&a;l.global!==l&&l.window!==l&&l.self;var f,u=2147483647,d=/^xn--/,h=/[^\x20-\x7E]/,g=/[\x2E\u3002\uFF0E\uFF61]/g,p={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=Math.floor,x=String.fromCharCode;function m(b){throw new RangeError(p[b])}function y(b,I){for(var R=b.length,M=[];R--;)M[R]=I(b[R]);return M}function w(b,I){var R=b.split("@"),M="";return R.length>1&&(M=R[0]+"@",b=R[1]),M+y((b=b.replace(g,".")).split("."),I).join(".")}function C(b){for(var I,R,M=[],L=0,A=b.length;L=55296&&I<=56319&&L65535&&(R+=x((I-=65536)>>>10&1023|55296),I=56320|1023&I),R+=x(I)}).join("")}function T(b,I){return b+22+75*(b<26)-((I!=0)<<5)}function _(b,I,R){var M=0;for(b=R?v(b/700):b>>1,b+=v(b/I);b>455;M+=36)b=v(b/35);return v(M+36*b/(b+38))}function E(b){var I,R,M,L,A,G,P,N,V,$,H,Y=[],ne=b.length,Q=0,ee=128,de=72;for((R=b.lastIndexOf("-"))<0&&(R=0),M=0;M=128&&m("not-basic"),Y.push(b.charCodeAt(M));for(L=R>0?R+1:0;L=ne&&m("invalid-input"),((N=(H=b.charCodeAt(L++))-48<10?H-22:H-65<26?H-65:H-97<26?H-97:36)>=36||N>v((u-Q)/G))&&m("overflow"),Q+=N*G,!(N<(V=P<=de?1:P>=de+26?26:P-de));P+=36)G>v(u/($=36-V))&&m("overflow"),G*=$;de=_(Q-A,I=Y.length+1,A==0),v(Q/I)>u-ee&&m("overflow"),ee+=v(Q/I),Q%=I,Y.splice(Q++,0,ee)}return S(Y)}function D(b){var I,R,M,L,A,G,P,N,V,$,H,Y,ne,Q,ee,de=[];for(Y=(b=C(b)).length,I=128,R=0,A=72,G=0;G=I&&Hv((u-R)/(ne=M+1))&&m("overflow"),R+=(P-I)*ne,I=P,G=0;Gu&&m("overflow"),H==I){for(N=R,V=36;!(N<($=V<=A?1:V>=A+26?26:V-A));V+=36)ee=N-$,Q=36-$,de.push(x(T($+ee%Q,0))),N=v(ee/Q);de.push(x(T(N,0))),A=_(R,ne,M==L),R=0,++M}++R,++I}return de.join("")}f={version:"1.4.1",ucs2:{decode:C,encode:S},decode:E,encode:D,toASCII:function(b){return w(b,function(I){return h.test(I)?"xn--"+D(I):I})},toUnicode:function(b){return w(b,function(I){return d.test(I)?E(I.slice(4).toLowerCase()):I})}},(s=(function(){return f}).call(n,i,n,o))===void 0||(o.exports=s)})()}).call(this,i(246)(r),i(78))},function(r,n){r.exports=function(i){return i.webpackPolyfill||(i.deprecate=function(){},i.paths=[],i.children||(i.children=[]),Object.defineProperty(i,"loaded",{enumerable:!0,get:function(){return i.l}}),Object.defineProperty(i,"id",{enumerable:!0,get:function(){return i.i}}),i.webpackPolyfill=1),i}},function(r,n,i){r.exports={isString:function(o){return typeof o=="string"},isObject:function(o){return typeof o=="object"&&o!==null},isNull:function(o){return o===null},isNullOrUndefined:function(o){return o==null}}},function(r,n,i){n.decode=n.parse=i(249),n.encode=n.stringify=i(250)},function(r,n,i){function o(s,c){return Object.prototype.hasOwnProperty.call(s,c)}r.exports=function(s,c,l,f){c=c||"&",l=l||"=";var u={};if(typeof s!="string"||s.length===0)return u;var d=/\+/g;s=s.split(c);var h=1e3;f&&typeof f.maxKeys=="number"&&(h=f.maxKeys);var g=s.length;h>0&&g>h&&(g=h);for(var p=0;p=0?(v=w.substr(0,C),x=w.substr(C+1)):(v=w,x=""),m=decodeURIComponent(v),y=decodeURIComponent(x),o(u,m)?a(u[m])?u[m].push(y):u[m]=[u[m],y]:u[m]=y}return u};var a=Array.isArray||function(s){return Object.prototype.toString.call(s)==="[object Array]"}},function(r,n,i){var o=function(l){switch(typeof l){case"string":return l;case"boolean":return l?"true":"false";case"number":return isFinite(l)?l:"";default:return""}};r.exports=function(l,f,u,d){return f=f||"&",u=u||"=",l===null&&(l=void 0),typeof l=="object"?s(c(l),function(h){var g=encodeURIComponent(o(h))+u;return a(l[h])?s(l[h],function(p){return g+encodeURIComponent(o(p))}).join(f):g+encodeURIComponent(o(l[h]))}).join(f):d?encodeURIComponent(o(d))+u+encodeURIComponent(o(l)):""};var a=Array.isArray||function(l){return Object.prototype.toString.call(l)==="[object Array]"};function s(l,f){if(l.map)return l.map(f);for(var u=[],d=0;d=c.length&&(c=void 0),{value:c&&c[u++],done:!c}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(1);function s(c){return a.isBoolean(c)?c:c.capture||!1}n.eventTarget_flatten=s,n.eventTarget_flattenMore=function(c){var l=s(c),f=!1,u=!1;return a.isBoolean(c)||(f=c.once||!1,u=c.passive||!1),[l,u,f]},n.eventTarget_addEventListener=function(c,l){if(l.callback!==null){for(var f=0;f=c.length&&(c=void 0),{value:c&&c[u++],done:!c}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(1),s=i(29);n.parentNode_convertNodesIntoANode=function(c,l){for(var f,u,d=null,h=0;h=T.length&&(T=void 0),{value:T&&T[D++],done:!T}}};throw new TypeError(_?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(T,_){var E=typeof Symbol=="function"&&T[Symbol.iterator];if(!E)return T;var D,b,I=E.call(T),R=[];try{for(;(_===void 0||_-- >0)&&!(D=I.next()).done;)R.push(D.value)}catch(M){b={error:M}}finally{try{D&&!D.done&&(E=I.return)&&E.call(I)}finally{if(b)throw b.error}}return R},s=this&&this.__spread||function(){for(var T=[],_=0;_0;Q--){var ee;if(C(ee=ne[Q],T)){Y=ee;break}}var de,fe,le=[];try{for(var k=o(N._children),O=k.next();!O.done;O=k.next())if(w(ae=O.value,T)){if(f.Guard.isDocumentTypeNode(ae))throw new l.HierarchyRequestError;le.push(ae)}}catch(he){D={error:he}}finally{try{O&&!O.done&&(b=k.return)&&b.call(k)}finally{if(D)throw D.error}}if(d.tree_isAncestorOf(G,L,!0))de=L,fe=A;else{for(var B=L;B._parent!==null&&!d.tree_isAncestorOf(G,B._parent);)B=B._parent;if(B._parent===null)throw new Error("Parent node is null.");de=B._parent,fe=1+d.tree_index(B)}if(f.Guard.isCharacterDataNode(V))(U=p.node_clone(L))._data=g.characterData_substringData(L,A,d.tree_nodeLength(L)-A),v.mutation_append(U,M),g.characterData_replaceData(L,A,d.tree_nodeLength(L)-A,"");else if(V!==null){var U=p.node_clone(V);v.mutation_append(U,M);var z=S(u.create_range([L,A],[V,d.tree_nodeLength(V)]));v.mutation_append(z,U)}try{for(var j=o(le),K=j.next();!K.done;K=j.next()){var ae=K.value;v.mutation_append(ae,M)}}catch(he){I={error:he}}finally{try{K&&!K.done&&(R=j.return)&&R.call(j)}finally{if(I)throw I.error}}return f.Guard.isCharacterDataNode(Y)?((U=p.node_clone(G))._data=g.characterData_substringData(G,0,P),v.mutation_append(U,M),g.characterData_replaceData(G,0,P,"")):Y!==null&&(U=p.node_clone(Y),v.mutation_append(U,M),z=S(u.create_range([Y,0],[G,P])),v.mutation_append(z,U)),T._start=[de,fe],T._end=[de,fe],M}n.range_collapsed=m,n.range_root=y,n.range_isContained=w,n.range_isPartiallyContained=C,n.range_setTheStart=function(T,_,E){if(f.Guard.isDocumentTypeNode(_))throw new l.InvalidNodeTypeError;if(E>d.tree_nodeLength(_))throw new l.IndexSizeError;var D=[_,E];y(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(D,T._end)!==c.BoundaryPosition.After||(T._end=D),T._start=D},n.range_setTheEnd=function(T,_,E){if(f.Guard.isDocumentTypeNode(_))throw new l.InvalidNodeTypeError;if(E>d.tree_nodeLength(_))throw new l.IndexSizeError;var D=[_,E];y(T)===d.tree_rootNode(_)&&h.boundaryPoint_position(D,T._start)!==c.BoundaryPosition.Before||(T._start=D),T._end=D},n.range_select=function(T,_){var E=T._parent;if(E===null)throw new l.InvalidNodeTypeError;var D=d.tree_index(T);_._start=[E,D],_._end=[E,D+1]},n.range_extract=S,n.range_cloneTheContents=function T(_){var E,D,b,I,R,M,L=u.create_documentFragment(_._startNode._nodeDocument);if(m(_))return L;var A=_._startNode,G=_._startOffset,P=_._endNode,N=_._endOffset;A===P&&f.Guard.isCharacterDataNode(A)&&((O=p.node_clone(A))._data=g.characterData_substringData(A,G,N-G),v.mutation_append(O,L));for(var V=A;!d.tree_isAncestorOf(P,V,!0);){if(V._parent===null)throw new Error("Parent node is null.");V=V._parent}var $=null;if(!d.tree_isAncestorOf(P,A,!0))try{for(var H=o(V._children),Y=H.next();!Y.done;Y=H.next())if(C(de=Y.value,_)){$=de;break}}catch(K){E={error:K}}finally{try{Y&&!Y.done&&(D=H.return)&&D.call(H)}finally{if(E)throw E.error}}var ne=null;if(!d.tree_isAncestorOf(A,P,!0))for(var Q=s(V._children),ee=Q.length-1;ee>0;ee--){var de;if(C(de=Q[ee],_)){ne=de;break}}var fe=[];try{for(var le=o(V._children),k=le.next();!k.done;k=le.next())if(w(j=k.value,_)){if(f.Guard.isDocumentTypeNode(j))throw new l.HierarchyRequestError;fe.push(j)}}catch(K){b={error:K}}finally{try{k&&!k.done&&(I=le.return)&&I.call(le)}finally{if(b)throw b.error}}if(f.Guard.isCharacterDataNode($))(O=p.node_clone(A))._data=g.characterData_substringData(A,G,d.tree_nodeLength(A)-G),v.mutation_append(O,L);else if($!==null){var O=p.node_clone($);v.mutation_append(O,L);var B=T(u.create_range([A,G],[$,d.tree_nodeLength($)]));v.mutation_append(B,O)}try{for(var U=o(fe),z=U.next();!z.done;z=U.next()){var j=z.value,O=p.node_clone(j);v.mutation_append(O,L)}}catch(K){R={error:K}}finally{try{z&&!z.done&&(M=U.return)&&M.call(U)}finally{if(R)throw R.error}}return f.Guard.isCharacterDataNode(ne)?((O=p.node_clone(P))._data=g.characterData_substringData(P,0,N),v.mutation_append(O,L)):ne!==null&&(O=p.node_clone(ne),L.append(O),B=S(u.create_range([ne,0],[P,N])),v.mutation_append(B,O)),L},n.range_insert=function(T,_){var E,D;if(f.Guard.isProcessingInstructionNode(_._startNode)||f.Guard.isCommentNode(_._startNode)||f.Guard.isTextNode(_._startNode)&&_._startNode._parent===null||_._startNode===T)throw new l.HierarchyRequestError;var b,I=null;if(f.Guard.isTextNode(_._startNode))I=_._startNode;else{var R=0;try{for(var M=o(_._startNode._children),L=M.next();!L.done;L=M.next()){var A=L.value;if(R===_._startOffset){I=A;break}R++}}catch(P){E={error:P}}finally{try{L&&!L.done&&(D=M.return)&&D.call(M)}finally{if(E)throw E.error}}}if(I===null)b=_._startNode;else{if(I._parent===null)throw new Error("Parent node is null.");b=I._parent}v.mutation_ensurePreInsertionValidity(T,b,I),f.Guard.isTextNode(_._startNode)&&(I=x.text_split(_._startNode,_._startOffset)),T===I&&(I=T._nextSibling),T._parent!==null&&v.mutation_remove(T,T._parent);var G=I===null?d.tree_nodeLength(b):d.tree_index(I);f.Guard.isDocumentFragmentNode(T)?G+=d.tree_nodeLength(T):G++,v.mutation_preInsert(T,b,I),m(_)&&(_._end=[b,G])},n.range_getContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,D=d.tree_getFirstDescendantNode(E);return{next:function(){for(;D&&!w(D,T);)D=d.tree_getNextDescendantNode(E,D);if(D===null)return{done:!0,value:null};var b={done:!1,value:D};return D=d.tree_getNextDescendantNode(E,D),b}}},_},n.range_getPartiallyContainedNodes=function(T){var _;return(_={})[Symbol.iterator]=function(){var E=T.commonAncestorContainer,D=d.tree_getFirstDescendantNode(E);return{next:function(){for(;D&&!C(D,T);)D=d.tree_getNextDescendantNode(E,D);if(D===null)return{done:!0,value:null};var b={done:!1,value:D};return D=d.tree_getNextDescendantNode(E,D),b}}},_}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(9);n.selectors_scopeMatchASelectorsString=function(a,s){throw new o.NotSupportedError}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(2),a=i(105);n.treeWalker_traverseChildren=function(s,c){for(var l=c?s._current._firstChild:s._current._lastChild;l!==null;){var f=a.traversal_filter(s,l);if(f===o.FilterResult.Accept)return s._current=l,l;if(f===o.FilterResult.Skip){var u=c?l._firstChild:l._lastChild;if(u!==null){l=u;continue}}for(;l!==null;){var d=c?l._nextSibling:l._previousSibling;if(d!==null){l=d;break}var h=l._parent;if(h===null||h===s._root||h===s._current)return null;l=h}}return null},n.treeWalker_traverseSiblings=function(s,c){var l=s._current;if(l===s._root)return null;for(;;){for(var f=c?l._nextSibling:l._previousSibling;f!==null;){l=f;var u=a.traversal_filter(s,l);if(u===o.FilterResult.Accept)return s._current=l,l;f=c?l._firstChild:l._lastChild,u!==o.FilterResult.Reject&&f!==null||(f=c?l._nextSibling:l._previousSibling)}if((l=l._parent)===null||l===s._root||a.traversal_filter(s,l)===o.FilterResult.Accept)return null}}},function(r,n,i){i(89),i(74);var o,a=this&&this.__extends||(o=function(d,h){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,p){g.__proto__=p}||function(g,p){for(var v in p)p.hasOwnProperty(v)&&(g[v]=p[v])})(d,h)},function(d,h){function g(){this.constructor=d}o(d,h),d.prototype=h===null?Object.create(h):(g.prototype=h.prototype,new g)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(1),c=i(2),l=i(50),f=i(3),u=function(d){function h(g,p){var v=d.call(this,g)||this;return v._indentation={},v._lengthToLastNewline=0,v._writerOptions=s.applyDefaults(p,{wellFormed:!1,headless:!1,prettyPrint:!1,indent:" ",newline:` -`,offset:0,width:0,allowEmptyTags:!1,indentTextOnlyNodes:!1,spaceBeforeSlash:!1}),v}return a(h,d),h.prototype.serialize=function(g){return this._refs={suppressPretty:!1,emptyNode:!1,markup:""},g.nodeType!==c.NodeType.Document||this._writerOptions.headless||this.declaration(this._builderOptions.version,this._builderOptions.encoding,this._builderOptions.standalone),this.serializeNode(g,this._writerOptions.wellFormed),this._writerOptions.prettyPrint&&this._refs.markup.slice(-this._writerOptions.newline.length)===this._writerOptions.newline&&(this._refs.markup=this._refs.markup.slice(0,-this._writerOptions.newline.length)),this._refs.markup},h.prototype.declaration=function(g,p,v){this._beginLine(),this._refs.markup+='",this._endLine()},h.prototype.docType=function(g,p,v){this._beginLine(),this._refs.markup+=p&&v?"':p?"':v?"':"",this._endLine()},h.prototype.openTagBegin=function(g){this._beginLine(),this._refs.markup+="<"+g},h.prototype.openTagEnd=function(g,p,v){if(this._refs.suppressPretty=!1,this._refs.emptyNode=!1,this._writerOptions.prettyPrint&&!p&&!v){for(var x=!0,m=!0,y=this.currentNode.firstChild,w=0,C=0;y;){if(f.Guard.isExclusiveTextNode(y))C++;else{if(!f.Guard.isCDATASectionNode(y)){x=!1,m=!1;break}w++}y.data!==""&&(m=!1),y=y.nextSibling}this._refs.suppressPretty=!this._writerOptions.indentTextOnlyNodes&&x&&(w<=1&&C===0||w===0),this._refs.emptyNode=m}(v||p||this._refs.emptyNode)&&this._writerOptions.allowEmptyTags?this._refs.markup+=">":this._refs.markup+=v?" />":p||this._refs.emptyNode?this._writerOptions.spaceBeforeSlash?" />":"/>":">",this._endLine()},h.prototype.closeTag=function(g){this._refs.emptyNode||(this._beginLine(),this._refs.markup+=""),this._refs.suppressPretty=!1,this._refs.emptyNode=!1,this._endLine()},h.prototype.attribute=function(g,p){var v=g+'="'+p+'"';this._writerOptions.prettyPrint&&this._writerOptions.width>0&&this._refs.markup.length-this._lengthToLastNewline+1+v.length>this._writerOptions.width?(this._endLine(),this._beginLine(),this._refs.markup+=this._indent(1)+v):this._refs.markup+=" "+v},h.prototype.text=function(g){g!==""&&(this._beginLine(),this._refs.markup+=g,this._endLine())},h.prototype.cdata=function(g){g!==""&&(this._beginLine(),this._refs.markup+="",this._endLine())},h.prototype.comment=function(g){this._beginLine(),this._refs.markup+="",this._endLine()},h.prototype.instruction=function(g,p){this._beginLine(),this._refs.markup+="",this._endLine()},h.prototype._beginLine=function(){this._writerOptions.prettyPrint&&!this._refs.suppressPretty&&(this._refs.markup+=this._indent(this._writerOptions.offset+this.level))},h.prototype._endLine=function(){this._writerOptions.prettyPrint&&!this._refs.suppressPretty&&(this._refs.markup+=this._writerOptions.newline,this._lengthToLastNewline=this._refs.markup.length)},h.prototype._indent=function(g){if(g<=0)return"";if(this._indentation[g]!==void 0)return this._indentation[g];var p=this._writerOptions.indent.repeat(g);return this._indentation[g]=p,p},h}(l.BaseWriter);n.XMLWriter=u},function(r,n,i){var o=i(47),a=i(35);r.exports="".repeat||function(s){var c=String(a(this)),l="",f=o(s);if(f<0||f==1/0)throw RangeError("Wrong number of repetitions");for(;f>0;(f>>>=1)&&(c+=c))1&f&&(l+=c);return l}},function(r,n,i){i(31),i(32),i(33),i(19),i(178),i(20),i(22),i(23);var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)}),s=this&&this.__values||function(u){var d=typeof Symbol=="function"&&Symbol.iterator,h=d&&u[d],g=0;if(h)return h.call(u);if(u&&typeof u.length=="number")return{next:function(){return u&&g>=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(67),l=i(1),f=function(u){function d(h,g){var p=u.call(this,h)||this;return p._writerOptions=l.applyDefaults(g,{wellFormed:!1,prettyPrint:!1,indent:" ",newline:` -`,offset:0,group:!1,verbose:!1}),p}return a(d,u),d.prototype.serialize=function(h){var g=l.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1}),p=new c.ObjectWriter(this._builderOptions,g).serialize(h);return this._beginLine(this._writerOptions,0)+this._convertObject(p,this._writerOptions)},d.prototype._convertObject=function(h,g,p){var v,x,m=this;p===void 0&&(p=0);var y="",w=this._isLeafNode(h);if(l.isArray(h)){y+="[";var C=h.length,S=0;try{for(var T=s(h),_=T.next();!_.done;_=T.next()){var E=_.value;y+=this._endLine(g,p+1)+this._beginLine(g,p+1)+this._convertObject(E,g,p+1),S0?new Array(p).join(h.indent):""},d.prototype._endLine=function(h,g){return h.prettyPrint?h.newline:""},d.prototype._key=function(h){return'"'+h+'":'},d.prototype._val=function(h){return JSON.stringify(h)},d.prototype._isLeafNode=function(h){return this._descendantCount(h)<=1},d.prototype._descendantCount=function(h,g){var p=this;return g===void 0&&(g=0),l.isArray(h)?l.forEachArray(h,function(v){return g+=p._descendantCount(v,g)},this):l.isObject(h)?l.forEachObject(h,function(v,x){return g+=p._descendantCount(x,g)},this):g++,g},d}(i(50).BaseWriter);n.JSONWriter=f},function(r,n,i){i(31),i(32),i(33),i(19),i(178),i(89),i(20),i(22),i(23);var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)}),s=this&&this.__values||function(u){var d=typeof Symbol=="function"&&Symbol.iterator,h=d&&u[d],g=0;if(h)return h.call(u);if(u&&typeof u.length=="number")return{next:function(){return u&&g>=u.length&&(u=void 0),{value:u&&u[g++],done:!u}}};throw new TypeError(d?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var c=i(67),l=i(1),f=function(u){function d(h,g){var p=u.call(this,h)||this;if(p._writerOptions=l.applyDefaults(g,{wellFormed:!1,indent:" ",newline:` -`,offset:0,group:!1,verbose:!1}),p._writerOptions.indent.length<2)throw new Error("YAML indententation string must be at least two characters long.");if(p._writerOptions.offset<0)throw new Error("YAML offset should be zero or a positive number.");return p}return a(d,u),d.prototype.serialize=function(h){var g=l.applyDefaults(this._writerOptions,{format:"object",wellFormed:!1}),p=new c.ObjectWriter(this._builderOptions,g).serialize(h),v=this._beginLine(this._writerOptions,0)+"---"+this._endLine(this._writerOptions)+this._convertObject(p,this._writerOptions,0);return v.slice(-this._writerOptions.newline.length)===this._writerOptions.newline&&(v=v.slice(0,-this._writerOptions.newline.length)),v},d.prototype._convertObject=function(h,g,p,v){var x,m,y=this;v===void 0&&(v=!1);var w="";if(l.isArray(h))try{for(var C=s(h),S=C.next();!S.done;S=C.next()){var T=S.value;w+=this._beginLine(g,p,!0),l.isObject(T)?l.isEmpty(T)?w+='""'+this._endLine(g):w+=this._convertObject(T,g,p,!0):w+=this._val(T)+this._endLine(g)}}catch(_){x={error:_}}finally{try{S&&!S.done&&(m=C.return)&&m.call(C)}finally{if(x)throw x.error}}else l.forEachObject(h,function(_,E){v?(w+=y._key(_),v=!1):w+=y._beginLine(g,p)+y._key(_),l.isObject(E)?l.isEmpty(E)?w+=' ""'+y._endLine(g):w+=y._endLine(g)+y._convertObject(E,g,p+1):w+=" "+y._val(E)+y._endLine(g)},this);return w},d.prototype._beginLine=function(h,g,p){p===void 0&&(p=!1);var v=h.offset+g+1,x=new Array(v).join(h.indent);return p?x.substr(0,x.length-2)+"-"+x.substr(-1,1):x},d.prototype._endLine=function(h){return h.newline},d.prototype._key=function(h){return'"'+h+'":'},d.prototype._val=function(h){return JSON.stringify(h)},d}(i(50).BaseWriter);n.YAMLWriter=f},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0}),i(110).dom.setFeatures(!0);var o=i(110);n.DOMImplementation=o.DOMImplementation;var a=i(271);n.DOMParser=a.DOMParser;var s=i(274);n.XMLSerializer=s.XMLSerializer},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(3),a=i(0),s=function(){function c(){}return c.prototype.before=function(){for(var l=[],f=0;f=f.length&&(f=void 0),{value:f&&f[h++],done:!f}}};throw new TypeError(u?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(6),s=i(3),c=i(7),l=function(){function f(u){this._nodeList=[],this._recordQueue=[],this._callback=u;var d=a.dom.window;c.set.append(d._mutationObservers,this)}return f.prototype.observe=function(u,d){var h,g;if((d=d||{childList:!1,subtree:!1}).attributeOldValue===void 0&&d.attributeFilter===void 0||d.attributes!==void 0||(d.attributes=!0),d.characterDataOldValue!==void 0&&d.characterData===void 0&&(d.characterData=!0),!d.childList&&!d.attributes&&!d.characterData)throw new TypeError;if(d.attributeOldValue&&!d.attributes)throw new TypeError;if(d.attributeFilter!==void 0&&!d.attributes)throw new TypeError;if(d.characterDataOldValue&&!d.characterData)throw new TypeError;var p=!1,v=d,x=function(C){var S,T;if(C.observer===m){p=!0;try{for(var _=(S=void 0,o(m._nodeList)),E=_.next();!E.done;E=_.next()){var D=E.value;c.list.remove(D._registeredObserverList,function(b){return s.Guard.isTransientRegisteredObserver(b)&&b.source===C})}}catch(b){S={error:b}}finally{try{E&&!E.done&&(T=_.return)&&T.call(_)}finally{if(S)throw S.error}}C.options=v}},m=this;try{for(var y=o(u._registeredObserverList),w=y.next();!w.done;w=y.next())x(w.value)}catch(C){h={error:C}}finally{try{w&&!w.done&&(g=y.return)&&g.call(y)}finally{if(h)throw h.error}}p||(u._registeredObserverList.push({observer:this,options:d}),this._nodeList.push(u))},f.prototype.disconnect=function(){var u,d,h=this;try{for(var g=o(this._nodeList),p=g.next();!p.done;p=g.next()){var v=p.value;c.list.remove(v._registeredObserverList,function(x){return x.observer===h})}}catch(x){u={error:x}}finally{try{p&&!p.done&&(d=g.return)&&d.call(g)}finally{if(u)throw u.error}}this._recordQueue=[]},f.prototype.takeRecords=function(){var u=this._recordQueue;return this._recordQueue=[],u},f}();n.MutationObserverImpl=l},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(3),a=function(){function s(){}return Object.defineProperty(s.prototype,"previousElementSibling",{get:function(){for(var c=o.Cast.asNode(this)._previousSibling;c;){if(o.Guard.isElementNode(c))return c;c=c._previousSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"nextElementSibling",{get:function(){for(var c=o.Cast.asNode(this)._nextSibling;c;){if(o.Guard.isElementNode(c))return c;c=c._nextSibling}return null},enumerable:!0,configurable:!0}),s}();n.NonDocumentTypeChildNodeImpl=a},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(3),a=i(0),s=function(){function c(){}return c.prototype.getElementById=function(l){for(var f=a.tree_getFirstDescendantNode(o.Cast.asNode(this),!1,!1,function(u){return o.Guard.isElementNode(u)});f!==null;){if(f._uniqueIdentifier===l)return f;f=a.tree_getNextDescendantNode(o.Cast.asNode(this),f,!1,!1,function(u){return o.Guard.isElementNode(u)})}return null},c}();n.NonElementParentNodeImpl=s},function(r,n,i){var o=this&&this.__values||function(l){var f=typeof Symbol=="function"&&Symbol.iterator,u=f&&l[f],d=0;if(u)return u.call(l);if(l&&typeof l.length=="number")return{next:function(){return l&&d>=l.length&&(l=void 0),{value:l&&l[d++],done:!l}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(3),s=i(0),c=function(){function l(){}return Object.defineProperty(l.prototype,"children",{get:function(){return s.create_htmlCollection(a.Cast.asNode(this))},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"firstElementChild",{get:function(){for(var f=a.Cast.asNode(this)._firstChild;f;){if(a.Guard.isElementNode(f))return f;f=f._nextSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"lastElementChild",{get:function(){for(var f=a.Cast.asNode(this)._lastChild;f;){if(a.Guard.isElementNode(f))return f;f=f._previousSibling}return null},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"childElementCount",{get:function(){var f,u,d=0;try{for(var h=o(a.Cast.asNode(this)._children),g=h.next();!g.done;g=h.next()){var p=g.value;a.Guard.isElementNode(p)&&d++}}catch(v){f={error:v}}finally{try{g&&!g.done&&(u=h.return)&&u.call(h)}finally{if(f)throw f.error}}return d},enumerable:!0,configurable:!0}),l.prototype.prepend=function(){for(var f=[],u=0;u0)&&!(v=m.next()).done;)y.push(v.value)}catch(w){x={error:w}}finally{try{v&&!v.done&&(p=m.return)&&p.call(m)}finally{if(x)throw x.error}}return y},a=this&&this.__values||function(h){var g=typeof Symbol=="function"&&Symbol.iterator,p=g&&h[g],v=0;if(p)return p.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&v>=h.length&&(h=void 0),{value:h&&h[v++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var s=i(180),c=i(111),l=i(7),f=i(0),u=i(69),d=function(){function h(){}return h.prototype.parse=function(g){for(var p,v,x,m,y=new s.XMLStringLexer(g,{skipWhitespaceOnlyText:!0}),w=f.create_document(),C=w,S=y.nextToken();S.type!==c.TokenType.EOF;){switch(S.type){case c.TokenType.Declaration:var T=S;if(T.version!=="1.0")throw new Error("Invalid xml version: "+T.version);break;case c.TokenType.DocType:var _=S;if(!f.xml_isPubidChar(_.pubId))throw new Error("DocType public identifier does not match PubidChar construct.");if(!f.xml_isLegalChar(_.sysId)||_.sysId.indexOf('"')!==-1&&_.sysId.indexOf("'")!==-1)throw new Error("DocType system identifier contains invalid characters.");C.appendChild(w.implementation.createDocumentType(_.name,_.pubId,_.sysId));break;case c.TokenType.CDATA:var E=S;if(!f.xml_isLegalChar(E.data)||E.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters.");C.appendChild(w.createCDATASection(E.data));break;case c.TokenType.Comment:var D=S;if(!f.xml_isLegalChar(D.data)||D.data.indexOf("--")!==-1||D.data.endsWith("-"))throw new Error("Comment data contains invalid characters.");C.appendChild(w.createComment(D.data));break;case c.TokenType.PI:var b=S;if(b.target.indexOf(":")!==-1||/^xml$/i.test(b.target))throw new Error("Processing instruction target contains invalid characters.");if(!f.xml_isLegalChar(b.data)||b.data.indexOf("?>")!==-1)throw new Error("Processing instruction data contains invalid characters.");C.appendChild(w.createProcessingInstruction(b.target,b.data));break;case c.TokenType.Text:var I=S;if(!f.xml_isLegalChar(I.data))throw new Error("Text data contains invalid characters.");C.appendChild(w.createTextNode(this._decodeText(I.data)));break;case c.TokenType.Element:var R=S,M=o(f.namespace_extractQName(R.name),2),L=M[0],A=M[1];if(A.indexOf(":")!==-1||!f.xml_isName(A))throw new Error("Node local name contains invalid characters.");if(L==="xmlns")throw new Error("An element cannot have the 'xmlns' prefix.");var G=C.lookupNamespaceURI(L),P={};try{for(var N=(p=void 0,a(R.attributes)),V=N.next();!V.done;V=N.next()){var $=o(V.value,2),H=$[0],Y=$[1];if(H==="xmlns")G=Y;else{var ne=o(f.namespace_extractQName(H),2),Q=ne[0],ee=ne[1];Q==="xmlns"&&(ee===L&&(G=Y),P[ee]=Y)}}}catch(z){p={error:z}}finally{try{V&&!V.done&&(v=N.return)&&v.call(N)}finally{if(p)throw p.error}}var de=G!==null?w.createElementNS(G,R.name):w.createElement(R.name);C.appendChild(de);var fe=new u.LocalNameSet;try{for(var le=(x=void 0,a(R.attributes)),k=le.next();!k.done;k=le.next()){var O=o(k.value,2),B=(H=O[0],Y=O[1],o(f.namespace_extractQName(H),2)),U=(Q=B[0],ee=B[1],null);if(Q==="xmlns"||Q===null&&ee==="xmlns"?U=l.namespace.XMLNS:(U=de.lookupNamespaceURI(Q))!==null&&de.isDefaultNamespace(U)?U=null:U===null&&Q!==null&&(U=P[Q]||null),fe.has(U,ee))throw new Error("Element contains duplicate attributes.");if(fe.set(U,ee),U===l.namespace.XMLNS&&Y===l.namespace.XMLNS)throw new Error("XMLNS namespace is reserved.");if(ee.indexOf(":")!==-1||!f.xml_isName(ee))throw new Error("Attribute local name contains invalid characters.");if(Q==="xmlns"&&Y==="")throw new Error("Empty XML namespace is not allowed.");U!==null?de.setAttributeNS(U,H,this._decodeAttributeValue(Y)):de.setAttribute(H,this._decodeAttributeValue(Y))}}catch(z){x={error:z}}finally{try{k&&!k.done&&(m=le.return)&&m.call(le)}finally{if(x)throw x.error}}R.selfClosing||(C=de);break;case c.TokenType.ClosingTag:if(S.name!==C.nodeName)throw new Error("Closing tag name does not match opening tag name.");C._parent&&(C=C._parent)}S=y.nextToken()}return w},h.prototype._decodeText=function(g){return g==null?g:g.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},h.prototype._decodeAttributeValue=function(g){return g==null?g:g.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},h}();n.XMLParserImpl=d},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(275);n.XMLSerializer=o.XMLSerializerImpl},function(r,n,i){var o=this&&this.__values||function(h){var g=typeof Symbol=="function"&&Symbol.iterator,p=g&&h[g],v=0;if(p)return p.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&v>=h.length&&(h=void 0),{value:h&&h[v++],done:!h}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var a=i(2),s=i(69),c=i(95),l=i(9),f=i(7),u=i(0),d=function(){function h(){}return h.prototype.serializeToString=function(g){return this._xmlSerialization(g,!1)},h.prototype._xmlSerialization=function(g,p){if(g._nodeDocument===void 0||g._nodeDocument._hasNamespaces){var v=new c.NamespacePrefixMap;v.set("xml",f.namespace.XML);try{return this._serializeNodeNS(g,null,v,{value:1},p)}catch{throw new l.InvalidStateError}}else try{return this._serializeNode(g,p)}catch{throw new l.InvalidStateError}},h.prototype._serializeNodeNS=function(g,p,v,x,m){switch(g.nodeType){case a.NodeType.Element:return this._serializeElementNS(g,p,v,x,m);case a.NodeType.Document:return this._serializeDocumentNS(g,p,v,x,m);case a.NodeType.Comment:return this._serializeComment(g,m);case a.NodeType.Text:return this._serializeText(g,m);case a.NodeType.DocumentFragment:return this._serializeDocumentFragmentNS(g,p,v,x,m);case a.NodeType.DocumentType:return this._serializeDocumentType(g,m);case a.NodeType.ProcessingInstruction:return this._serializeProcessingInstruction(g,m);case a.NodeType.CData:return this._serializeCData(g,m);default:throw new Error("Unknown node type: "+g.nodeType)}},h.prototype._serializeNode=function(g,p){switch(g.nodeType){case a.NodeType.Element:return this._serializeElement(g,p);case a.NodeType.Document:return this._serializeDocument(g,p);case a.NodeType.Comment:return this._serializeComment(g,p);case a.NodeType.Text:return this._serializeText(g,p);case a.NodeType.DocumentFragment:return this._serializeDocumentFragment(g,p);case a.NodeType.DocumentType:return this._serializeDocumentType(g,p);case a.NodeType.ProcessingInstruction:return this._serializeProcessingInstruction(g,p);case a.NodeType.CData:return this._serializeCData(g,p);default:throw new Error("Unknown node type: "+g.nodeType)}},h.prototype._serializeElementNS=function(g,p,v,x,m){var y,w;if(m&&(g.localName.indexOf(":")!==-1||!u.xml_isName(g.localName)))throw new Error("Node local name contains invalid characters (well-formed required).");var C="<",S="",T=!1,_=!1,E=v.copy(),D={},b=this._recordNamespaceInformation(g,E,D),I=p,R=g.namespaceURI;if(I===R)b!==null&&(_=!0),C+=S=R===f.namespace.XML?"xml:"+g.localName:g.localName;else{var M=g.prefix,L=null;if(M===null&&R===b||(L=E.get(M,R)),M==="xmlns"){if(m)throw new Error("An element cannot have the 'xmlns' prefix (well-formed required).");L=M}L!==null?(S=L+":"+g.localName,b!==null&&b!==f.namespace.XML&&(I=b||null),C+=S):M!==null?(M in D&&(M=this._generatePrefix(R,E,x)),E.set(M,R),C+=S+=M+":"+g.localName,C+=" xmlns:"+M+'="'+this._serializeAttributeValue(R,m)+'"',b!==null&&(I=b||null)):b===null||b!==null&&b!==R?(_=!0,I=R,C+=S+=g.localName,C+=' xmlns="'+this._serializeAttributeValue(R,m)+'"'):(I=R,C+=S+=g.localName)}C+=this._serializeAttributesNS(g,E,x,D,_,m);var A=R===f.namespace.HTML;if(A&&g.childNodes.length===0&&h._VoidElementNames.has(g.localName)?(C+=" /",T=!0):A||g.childNodes.length!==0||(C+="/",T=!0),C+=">",T)return C;if(!(A&&g.localName==="template"))try{for(var G=o(g._children||g.childNodes),P=G.next();!P.done;P=G.next()){var N=P.value;C+=this._serializeNodeNS(N,I,E,x,m)}}catch(V){y={error:V}}finally{try{P&&!P.done&&(w=G.return)&&w.call(G)}finally{if(y)throw y.error}}return C+=""},h.prototype._serializeDocumentNS=function(g,p,v,x,m){var y,w;if(m&&g.documentElement===null)throw new Error("Missing document element (well-formed required).");var C="";try{for(var S=o(g._children||g.childNodes),T=S.next();!T.done;T=S.next()){var _=T.value;C+=this._serializeNodeNS(_,p,v,x,m)}}catch(E){y={error:E}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(y)throw y.error}}return C},h.prototype._serializeComment=function(g,p){if(p&&(!u.xml_isLegalChar(g.data)||g.data.indexOf("--")!==-1||g.data.endsWith("-")))throw new Error("Comment data contains invalid characters (well-formed required).");return""},h.prototype._serializeText=function(g,p){if(p&&!u.xml_isLegalChar(g.data))throw new Error("Text data contains invalid characters (well-formed required).");for(var v="",x=0;x"?">":m}return v},h.prototype._serializeDocumentFragmentNS=function(g,p,v,x,m){var y,w,C="";try{for(var S=o(g._children||g.childNodes),T=S.next();!T.done;T=S.next()){var _=T.value;C+=this._serializeNodeNS(_,p,v,x,m)}}catch(E){y={error:E}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(y)throw y.error}}return C},h.prototype._serializeDocumentType=function(g,p){if(p&&!u.xml_isPubidChar(g.publicId))throw new Error("DocType public identifier does not match PubidChar construct (well-formed required).");if(p&&(!u.xml_isLegalChar(g.systemId)||g.systemId.indexOf('"')!==-1&&g.systemId.indexOf("'")!==-1))throw new Error("DocType system identifier contains invalid characters (well-formed required).");return g.publicId&&g.systemId?"':g.publicId?"':g.systemId?"':""},h.prototype._serializeProcessingInstruction=function(g,p){if(p&&(g.target.indexOf(":")!==-1||/^xml$/i.test(g.target)))throw new Error("Processing instruction target contains invalid characters (well-formed required).");if(p&&(!u.xml_isLegalChar(g.data)||g.data.indexOf("?>")!==-1))throw new Error("Processing instruction data contains invalid characters (well-formed required).");return""},h.prototype._serializeCData=function(g,p){if(p&&g.data.indexOf("]]>")!==-1)throw new Error("CDATA contains invalid characters (well-formed required).");return""},h.prototype._serializeAttributesNS=function(g,p,v,x,m,y){var w,C,S="",T=y?new s.LocalNameSet:void 0;try{for(var _=o(g.attributes),E=_.next();!E.done;E=_.next()){var D=E.value;if(m||y||D.namespaceURI!==null){if(y&&T&&T.has(D.namespaceURI,D.localName))throw new Error("Element contains duplicate attributes (well-formed required).");y&&T&&T.set(D.namespaceURI,D.localName);var b=D.namespaceURI,I=null;if(b!==null)if(I=p.get(D.prefix,b),b===f.namespace.XMLNS){if(D.value===f.namespace.XML||D.prefix===null&&m||D.prefix!==null&&(!(D.localName in x)||x[D.localName]!==D.value)&&p.has(D.localName,D.value))continue;if(y&&D.value===f.namespace.XMLNS)throw new Error("XMLNS namespace is reserved (well-formed required).");if(y&&D.value==="")throw new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required).");D.prefix==="xmlns"&&(I="xmlns")}else I===null&&(S+=" xmlns:"+(I=D.prefix===null||p.hasPrefix(D.prefix)&&!p.has(D.prefix,b)?this._generatePrefix(b,p,v):D.prefix)+'="'+this._serializeAttributeValue(b,y)+'"');if(S+=" ",I!==null&&(S+=I+":"),y&&(D.localName.indexOf(":")!==-1||!u.xml_isName(D.localName)||D.localName==="xmlns"&&b===null))throw new Error("Attribute local name contains invalid characters (well-formed required).");S+=D.localName+'="'+this._serializeAttributeValue(D.value,y)+'"'}else S+=" "+D.localName+'="'+this._serializeAttributeValue(D.value,y)+'"'}}catch(R){w={error:R}}finally{try{E&&!E.done&&(C=_.return)&&C.call(_)}finally{if(w)throw w.error}}return S},h.prototype._recordNamespaceInformation=function(g,p,v){var x,m,y=null;try{for(var w=o(g.attributes),C=w.next();!C.done;C=w.next()){var S=C.value,T=S.namespaceURI,_=S.prefix;if(T===f.namespace.XMLNS){if(_===null){y=S.value;continue}var E=S.localName,D=S.value;if(D===f.namespace.XML||(D===""&&(D=null),p.has(E,D)))continue;p.set(E,D),v[E]=D||""}}}catch(b){x={error:b}}finally{try{C&&!C.done&&(m=w.return)&&m.call(w)}finally{if(x)throw x.error}}return y},h.prototype._generatePrefix=function(g,p,v){var x="ns"+v.value;return v.value++,p.set(x,g),x},h.prototype._serializeAttributeValue=function(g,p){if(p&&g!==null&&!u.xml_isLegalChar(g))throw new Error("Invalid characters in attribute value.");if(g===null)return"";for(var v="",x=0;x"?">":m}return v},h.prototype._serializeElement=function(g,p){var v,x;if(p&&(g.localName.indexOf(":")!==-1||!u.xml_isName(g.localName)))throw new Error("Node local name contains invalid characters (well-formed required).");var m=!1,y=g.localName,w="<"+y;if(w+=this._serializeAttributes(g,p),g._children.size===0&&(w+="/",m=!0),w+=">",m)return w;try{for(var C=o(g._children),S=C.next();!S.done;S=C.next()){var T=S.value;w+=this._serializeNode(T,p)}}catch(_){v={error:_}}finally{try{S&&!S.done&&(x=C.return)&&x.call(C)}finally{if(v)throw v.error}}return w+=""},h.prototype._serializeDocument=function(g,p){var v,x;if(p&&g.documentElement===null)throw new Error("Missing document element (well-formed required).");var m="";try{for(var y=o(g._children),w=y.next();!w.done;w=y.next()){var C=w.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{w&&!w.done&&(x=y.return)&&x.call(y)}finally{if(v)throw v.error}}return m},h.prototype._serializeDocumentFragment=function(g,p){var v,x,m="";try{for(var y=o(g._children),w=y.next();!w.done;w=y.next()){var C=w.value;m+=this._serializeNode(C,p)}}catch(S){v={error:S}}finally{try{w&&!w.done&&(x=y.return)&&x.call(y)}finally{if(v)throw v.error}}return m},h.prototype._serializeAttributes=function(g,p){var v,x,m="",y=p?{}:void 0;try{for(var w=o(g.attributes),C=w.next();!C.done;C=w.next()){var S=C.value;if(p&&y&&S.localName in y)throw new Error("Element contains duplicate attributes (well-formed required).");if(p&&y&&(y[S.localName]=!0),p&&(S.localName.indexOf(":")!==-1||!u.xml_isName(S.localName)))throw new Error("Attribute local name contains invalid characters (well-formed required).");m+=" "+S.localName+'="'+this._serializeAttributeValue(S.value,p)+'"'}}catch(T){v={error:T}}finally{try{C&&!C.done&&(x=w.return)&&x.call(w)}finally{if(v)throw v.error}}return m},h._VoidElementNames=new Set(["area","base","basefont","bgsound","br","col","embed","frame","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"]),h}();n.XMLSerializerImpl=d},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(277);n.XMLReader=o.XMLReader;var a=i(112);n.ObjectReader=a.ObjectReader;var s=i(280);n.JSONReader=s.JSONReader;var c=i(281);n.YAMLReader=c.YAMLReader},function(r,n,i){i(31),i(32),i(33),i(19),i(65),i(20),i(22),i(23);var o,a=this&&this.__extends||(o=function(g,p){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,x){v.__proto__=x}||function(v,x){for(var m in x)x.hasOwnProperty(m)&&(v[m]=x[m])})(g,p)},function(g,p){function v(){this.constructor=g}o(g,p),g.prototype=p===null?Object.create(p):(v.prototype=p.prototype,new v)}),s=this&&this.__read||function(g,p){var v=typeof Symbol=="function"&&g[Symbol.iterator];if(!v)return g;var x,m,y=v.call(g),w=[];try{for(;(p===void 0||p-- >0)&&!(x=y.next()).done;)w.push(x.value)}catch(C){m={error:C}}finally{try{x&&!x.done&&(v=y.return)&&v.call(y)}finally{if(m)throw m.error}}return w},c=this&&this.__values||function(g){var p=typeof Symbol=="function"&&Symbol.iterator,v=p&&g[p],x=0;if(v)return v.call(g);if(g&&typeof g.length=="number")return{next:function(){return g&&x>=g.length&&(g=void 0),{value:g&&g[x++],done:!g}}};throw new TypeError(p?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0});var l=i(180),f=i(111),u=i(7),d=i(0),h=function(g){function p(){return g!==null&&g.apply(this,arguments)||this}return a(p,g),p.prototype._parse=function(v,x){for(var m,y,w,C,S=new l.XMLStringLexer(x,{skipWhitespaceOnlyText:!0}),T=v,_=v,E=S.nextToken();E.type!==f.TokenType.EOF;){switch(E.type){case f.TokenType.Declaration:var D=E,b=this.sanitize(D.version);if(b!=="1.0")throw new Error("Invalid xml version: "+b);var I={version:b};D.encoding&&(I.encoding=this.sanitize(D.encoding)),D.standalone&&(I.standalone=this.sanitize(D.standalone)==="yes"),_.set(I);break;case f.TokenType.DocType:var R=E;_=this.docType(_,this.sanitize(R.name),this.sanitize(R.pubId),this.sanitize(R.sysId))||_;break;case f.TokenType.CDATA:var M=E;_=this.cdata(_,this.sanitize(M.data))||_;break;case f.TokenType.Comment:var L=E;_=this.comment(_,this.sanitize(L.data))||_;break;case f.TokenType.PI:var A=E;_=this.instruction(_,this.sanitize(A.target),this.sanitize(A.data))||_;break;case f.TokenType.Text:var G=E;_=this.text(_,this._decodeText(this.sanitize(G.data)))||_;break;case f.TokenType.Element:var P=E,N=this.sanitize(P.name),V=s(d.namespace_extractQName(N),1)[0],$=_.node.lookupNamespaceURI(V),H={};try{for(var Y=(m=void 0,c(P.attributes)),ne=Y.next();!ne.done;ne=Y.next()){var Q=s(ne.value,2),ee=Q[0],de=Q[1];if(ee=this.sanitize(ee),de=this.sanitize(de),ee==="xmlns")$=de;else{var fe=s(d.namespace_extractQName(ee),2),le=fe[0],k=fe[1];le==="xmlns"&&(k===V&&($=de),H[k]=de)}}}catch(ae){m={error:ae}}finally{try{ne&&!ne.done&&(y=Y.return)&&y.call(Y)}finally{if(m)throw m.error}}var O=$!==null?this.element(_,$,N):this.element(_,void 0,N);if(O===void 0)break;_.node===v.node&&(T=O);try{for(var B=(w=void 0,c(P.attributes)),U=B.next();!U.done;U=B.next()){var z=s(U.value,2);ee=z[0],de=z[1],ee=this.sanitize(ee),de=this.sanitize(de);var j=s(d.namespace_extractQName(ee),2),K=(le=j[0],k=j[1],null);le==="xmlns"||le===null&&k==="xmlns"?K=u.namespace.XMLNS:(K=O.node.lookupNamespaceURI(le))!==null&&O.node.isDefaultNamespace(K)?K=null:K===null&&le!==null&&(K=H[le]||null),K!==null?this.attribute(O,K,ee,this._decodeAttributeValue(de)):this.attribute(O,void 0,ee,this._decodeAttributeValue(de))}}catch(ae){w={error:ae}}finally{try{U&&!U.done&&(C=B.return)&&C.call(B)}finally{if(w)throw w.error}}P.selfClosing||(_=O);break;case f.TokenType.ClosingTag:_.node.parentNode&&(_=_.up())}E=S.nextToken()}return T},p}(i(75).BaseReader);n.XMLReader=h},function(r,n,i){var o=i(4),a=i(279);o({target:"Object",stat:!0,forced:Object.assign!==a},{assign:a})},function(r,n,i){var o=i(16),a=i(8),s=i(61),c=i(85),l=i(79),f=i(27),u=i(41),d=Object.assign,h=Object.defineProperty;r.exports=!d||a(function(){if(o&&d({b:1},d(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var g={},p={},v=Symbol();return g[v]=7,"abcdefghijklmnopqrst".split("").forEach(function(x){p[x]=x}),d({},g)[v]!=7||s(d({},p)).join("")!="abcdefghijklmnopqrst"})?function(g,p){for(var v=f(g),x=arguments.length,m=1,y=c.f,w=l.f;x>m;)for(var C,S=u(arguments[m++]),T=y?s(S).concat(y(S)):s(S),_=T.length,E=0;_>E;)C=T[E++],o&&!w.call(S,C)||(v[C]=S[C]);return v}:d},function(r,n,i){var o,a=this&&this.__extends||(o=function(l,f){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,d){u.__proto__=d}||function(u,d){for(var h in d)d.hasOwnProperty(h)&&(u[h]=d[h])})(l,f)},function(l,f){function u(){this.constructor=l}o(l,f),l.prototype=f===null?Object.create(f):(u.prototype=f.prototype,new u)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(112),c=function(l){function f(){return l!==null&&l.apply(this,arguments)||this}return a(f,l),f.prototype._parse=function(u,d){return new s.ObjectReader(this._builderOptions).parse(u,JSON.parse(d))},f}(i(75).BaseReader);n.JSONReader=c},function(r,n,i){var o,a=this&&this.__extends||(o=function(u,d){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,g){h.__proto__=g}||function(h,g){for(var p in g)g.hasOwnProperty(p)&&(h[p]=g[p])})(u,d)},function(u,d){function h(){this.constructor=u}o(u,d),u.prototype=d===null?Object.create(d):(h.prototype=d.prototype,new h)});Object.defineProperty(n,"__esModule",{value:!0});var s=i(112),c=i(75),l=i(282),f=function(u){function d(){return u!==null&&u.apply(this,arguments)||this}return a(d,u),d.prototype._parse=function(h,g){var p=l.safeLoad(g);if(p===void 0)throw new Error("Unable to parse YAML document.");return new s.ObjectReader(this._builderOptions).parse(h,p)},d}(c.BaseReader);n.YAMLReader=f},function(r,n,i){var o=i(283);r.exports=o},function(r,n,i){var o=i(284),a=i(303);function s(c){return function(){throw new Error("Function "+c+" is deprecated and cannot be used.")}}r.exports.Type=i(10),r.exports.Schema=i(39),r.exports.FAILSAFE_SCHEMA=i(113),r.exports.JSON_SCHEMA=i(182),r.exports.CORE_SCHEMA=i(181),r.exports.DEFAULT_SAFE_SCHEMA=i(54),r.exports.DEFAULT_FULL_SCHEMA=i(76),r.exports.load=o.load,r.exports.loadAll=o.loadAll,r.exports.safeLoad=o.safeLoad,r.exports.safeLoadAll=o.safeLoadAll,r.exports.dump=a.dump,r.exports.safeDump=a.safeDump,r.exports.YAMLException=i(53),r.exports.MINIMAL_SCHEMA=i(113),r.exports.SAFE_SCHEMA=i(54),r.exports.DEFAULT_SCHEMA=i(76),r.exports.scan=s("scan"),r.exports.parse=s("parse"),r.exports.compose=s("compose"),r.exports.addConstructor=s("addConstructor")},function(r,n,i){var o=i(38),a=i(53),s=i(285),c=i(54),l=i(76),f=Object.prototype.hasOwnProperty,u=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,d=/[\x85\u2028\u2029]/,h=/[,\[\]\{\}]/,g=/^(?:!|!!|![a-z\-]+!)$/i,p=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function v(O){return Object.prototype.toString.call(O)}function x(O){return O===10||O===13}function m(O){return O===9||O===32}function y(O){return O===9||O===32||O===10||O===13}function w(O){return O===44||O===91||O===93||O===123||O===125}function C(O){var B;return 48<=O&&O<=57?O-48:97<=(B=32|O)&&B<=102?B-97+10:-1}function S(O){return O===48?"\0":O===97?"\x07":O===98?"\b":O===116||O===9?" ":O===110?` -`:O===118?"\v":O===102?"\f":O===114?"\r":O===101?"\x1B":O===32?" ":O===34?'"':O===47?"/":O===92?"\\":O===78?"…":O===95?" ":O===76?"\u2028":O===80?"\u2029":""}function T(O){return O<=65535?String.fromCharCode(O):String.fromCharCode(55296+(O-65536>>10),56320+(O-65536&1023))}for(var _=new Array(256),E=new Array(256),D=0;D<256;D++)_[D]=S(D)?1:0,E[D]=S(D);function b(O,B){this.input=O,this.filename=B.filename||null,this.schema=B.schema||l,this.onWarning=B.onWarning||null,this.legacy=B.legacy||!1,this.json=B.json||!1,this.listener=B.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=O.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function I(O,B){return new a(B,new s(O.filename,O.input,O.position,O.line,O.position-O.lineStart))}function R(O,B){throw I(O,B)}function M(O,B){O.onWarning&&O.onWarning.call(null,I(O,B))}var L={YAML:function(O,B,U){var z,j,K;O.version!==null&&R(O,"duplication of %YAML directive"),U.length!==1&&R(O,"YAML directive accepts exactly one argument"),(z=/^([0-9]+)\.([0-9]+)$/.exec(U[0]))===null&&R(O,"ill-formed argument of the YAML directive"),j=parseInt(z[1],10),K=parseInt(z[2],10),j!==1&&R(O,"unacceptable YAML version of the document"),O.version=U[0],O.checkLineBreaks=K<2,K!==1&&K!==2&&M(O,"unsupported YAML version of the document")},TAG:function(O,B,U){var z,j;U.length!==2&&R(O,"TAG directive accepts exactly two arguments"),z=U[0],j=U[1],g.test(z)||R(O,"ill-formed tag handle (first argument) of the TAG directive"),f.call(O.tagMap,z)&&R(O,'there is a previously declared suffix for "'+z+'" tag handle'),p.test(j)||R(O,"ill-formed tag prefix (second argument) of the TAG directive"),O.tagMap[z]=j}};function A(O,B,U,z){var j,K,ae,he;if(B1&&(O.result+=o.repeat(` -`,B-1))}function Y(O,B){var U,z,j=O.tag,K=O.anchor,ae=[],he=!1;for(O.anchor!==null&&(O.anchorMap[O.anchor]=ae),z=O.input.charCodeAt(O.position);z!==0&&z===45&&y(O.input.charCodeAt(O.position+1));)if(he=!0,O.position++,V(O,!0,-1)&&O.lineIndent<=B)ae.push(null),z=O.input.charCodeAt(O.position);else if(U=O.line,ee(O,B,3,!1,!0),ae.push(O.result),V(O,!0,-1),z=O.input.charCodeAt(O.position),(O.line===U||O.lineIndent>B)&&z!==0)R(O,"bad indentation of a sequence entry");else if(O.lineIndentB?Z=1:O.lineIndent===B?Z=0:O.lineIndentB?Z=1:O.lineIndent===B?Z=0:O.lineIndentAe)&&(ee(X,Ae,4,!0,ue)&&(Gt?dn=X.result:Pn=X.result),Gt||(P(X,ze,ft,dt,dn,Pn,Ee,Me),dt=dn=Pn=null),V(X,!0,-1),Re=X.input.charCodeAt(X.position)),X.lineIndent>Ae&&Re!==0)R(X,"bad indentation of a mapping entry");else if(X.lineIndent=0))break;ue===0?R(X,"bad explicit indentation width of a block scalar; it cannot be less than one"):ut?R(X,"repeat of an indentation width identifier"):(ze=Ae+ue-1,ut=!0)}if(m(Ee)){do Ee=X.input.charCodeAt(++X.position);while(m(Ee));if(Ee===35)do Ee=X.input.charCodeAt(++X.position);while(!x(Ee)&&Ee!==0)}for(;Ee!==0;){for(N(X),X.lineIndent=0,Ee=X.input.charCodeAt(X.position);(!ut||X.lineIndentze&&(ze=X.lineIndent),x(Ee))ft++;else{if(X.lineIndent0){for(ue=Me,Ee=0;ue>0;ue--)(Me=C(Re=X.input.charCodeAt(++X.position)))>=0?Ee=(Ee<<4)+Me:R(X,"expected hexadecimal character");X.result+=T(Ee),X.position++}else R(X,"unknown escape sequence");Be=Ve=X.position}else x(Re)?(A(X,Be,Ve,!0),H(X,V(X,!1,Ae)),Be=Ve=X.position):X.position===X.lineStart&&$(X)?R(X,"unexpected end of the document within a double quoted scalar"):(X.position++,Ve=X.position)}R(X,"unexpected end of the stream within a double quoted scalar")}(O,J)?me=!0:function(X){var Ae,Be,Ve;if((Ve=X.input.charCodeAt(X.position))!==42)return!1;for(Ve=X.input.charCodeAt(++X.position),Ae=X.position;Ve!==0&&!y(Ve)&&!w(Ve);)Ve=X.input.charCodeAt(++X.position);return X.position===Ae&&R(X,"name of an alias node must contain at least one character"),Be=X.input.slice(Ae,X.position),X.anchorMap.hasOwnProperty(Be)||R(X,'unidentified alias "'+Be+'"'),X.result=X.anchorMap[Be],V(X,!0,-1),!0}(O)?(me=!0,O.tag===null&&O.anchor===null||R(O,"alias node should not have any properties")):function(X,Ae,Be){var Ve,ue,Ee,Me,Re,We,ut,ze,ft=X.kind,dt=X.result;if(y(ze=X.input.charCodeAt(X.position))||w(ze)||ze===35||ze===38||ze===42||ze===33||ze===124||ze===62||ze===39||ze===34||ze===37||ze===64||ze===96||(ze===63||ze===45)&&(y(Ve=X.input.charCodeAt(X.position+1))||Be&&w(Ve)))return!1;for(X.kind="scalar",X.result="",ue=Ee=X.position,Me=!1;ze!==0;){if(ze===58){if(y(Ve=X.input.charCodeAt(X.position+1))||Be&&w(Ve))break}else if(ze===35){if(y(X.input.charCodeAt(X.position-1)))break}else{if(X.position===X.lineStart&&$(X)||Be&&w(ze))break;if(x(ze)){if(Re=X.line,We=X.lineStart,ut=X.lineIndent,V(X,!1,-1),X.lineIndent>=Ae){Me=!0,ze=X.input.charCodeAt(X.position);continue}X.position=Ee,X.line=Re,X.lineStart=We,X.lineIndent=ut;break}}Me&&(A(X,ue,Ee,!1),H(X,X.line-Re),ue=Ee=X.position,Me=!1),m(ze)||(Ee=X.position+1),ze=X.input.charCodeAt(++X.position)}return A(X,ue,Ee,!1),!!X.result||(X.kind=ft,X.result=dt,!1)}(O,J,U===1)&&(me=!0,O.tag===null&&(O.tag="?")),O.anchor!==null&&(O.anchorMap[O.anchor]=O.result)):Z===0&&(me=he&&Y(O,ie))),O.tag!==null&&O.tag!=="!")if(O.tag==="?"){for(O.result!==null&&O.kind!=="scalar"&&R(O,'unacceptable node kind for ! tag; it should be "scalar", not "'+O.kind+'"'),ye=0,Te=O.implicitTypes.length;ye tag; it should be "'+q.kind+'", not "'+O.kind+'"'),q.resolve(O.result)?(O.result=q.construct(O.result),O.anchor!==null&&(O.anchorMap[O.anchor]=O.result)):R(O,"cannot resolve a node with !<"+O.tag+"> explicit tag")):R(O,"unknown tag !<"+O.tag+">");return O.listener!==null&&O.listener("close",O),O.tag!==null||O.anchor!==null||me}function de(O){var B,U,z,j,K=O.position,ae=!1;for(O.version=null,O.checkLineBreaks=O.legacy,O.tagMap={},O.anchorMap={};(j=O.input.charCodeAt(O.position))!==0&&(V(O,!0,-1),j=O.input.charCodeAt(O.position),!(O.lineIndent>0||j!==37));){for(ae=!0,j=O.input.charCodeAt(++O.position),B=O.position;j!==0&&!y(j);)j=O.input.charCodeAt(++O.position);for(z=[],(U=O.input.slice(B,O.position)).length<1&&R(O,"directive name must not be less than one character in length");j!==0;){for(;m(j);)j=O.input.charCodeAt(++O.position);if(j===35){do j=O.input.charCodeAt(++O.position);while(j!==0&&!x(j));break}if(x(j))break;for(B=O.position;j!==0&&!y(j);)j=O.input.charCodeAt(++O.position);z.push(O.input.slice(B,O.position))}j!==0&&N(O),f.call(L,U)?L[U](O,U,z):M(O,'unknown document directive "'+U+'"')}V(O,!0,-1),O.lineIndent===0&&O.input.charCodeAt(O.position)===45&&O.input.charCodeAt(O.position+1)===45&&O.input.charCodeAt(O.position+2)===45?(O.position+=3,V(O,!0,-1)):ae&&R(O,"directives end mark is expected"),ee(O,O.lineIndent-1,4,!1,!0),V(O,!0,-1),O.checkLineBreaks&&d.test(O.input.slice(K,O.position))&&M(O,"non-ASCII line breaks are interpreted as content"),O.documents.push(O.result),O.position===O.lineStart&&$(O)?O.input.charCodeAt(O.position)===46&&(O.position+=3,V(O,!0,-1)):O.position0&&`\0\r -…\u2028\u2029`.indexOf(this.buffer.charAt(f-1))===-1;)if(f-=1,this.position-f>c/2-1){l=" ... ",f+=5;break}for(u="",d=this.position;dc/2-1){u=" ... ",d-=5;break}return h=this.buffer.slice(f,d),o.repeat(" ",s)+l+h+u+` -`+o.repeat(" ",s+this.position-f+l.length)+"^"},a.prototype.toString=function(s){var c,l="";return this.name&&(l+='in "'+this.name+'" '),l+="at line "+(this.line+1)+", column "+(this.column+1),s||(c=this.getSnippet())&&(l+=`: -`+c),l},r.exports=a},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:str",{kind:"scalar",construct:function(a){return a!==null?a:""}})},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(a){return a!==null?a:[]}})},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:map",{kind:"mapping",construct:function(a){return a!==null?a:{}}})},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(a){if(a===null)return!0;var s=a.length;return s===1&&a==="~"||s===4&&(a==="null"||a==="Null"||a==="NULL")},construct:function(){return null},predicate:function(a){return a===null},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(a){if(a===null)return!1;var s=a.length;return s===4&&(a==="true"||a==="True"||a==="TRUE")||s===5&&(a==="false"||a==="False"||a==="FALSE")},construct:function(a){return a==="true"||a==="True"||a==="TRUE"},predicate:function(a){return Object.prototype.toString.call(a)==="[object Boolean]"},represent:{lowercase:function(a){return a?"true":"false"},uppercase:function(a){return a?"TRUE":"FALSE"},camelcase:function(a){return a?"True":"False"}},defaultStyle:"lowercase"})},function(r,n,i){var o=i(38),a=i(10);function s(l){return 48<=l&&l<=55}function c(l){return 48<=l&&l<=57}r.exports=new a("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(l){if(l===null)return!1;var f,u,d=l.length,h=0,g=!1;if(!d)return!1;if((f=l[h])!=="-"&&f!=="+"||(f=l[++h]),f==="0"){if(h+1===d)return!0;if((f=l[++h])==="b"){for(h++;h=0?"0b"+l.toString(2):"-0b"+l.toString(2).slice(1)},octal:function(l){return l>=0?"0"+l.toString(8):"-0"+l.toString(8).slice(1)},decimal:function(l){return l.toString(10)},hexadecimal:function(l){return l>=0?"0x"+l.toString(16).toUpperCase():"-0x"+l.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},function(r,n,i){var o=i(38),a=i(10),s=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),c=/^[-+]?[0-9]+e/;r.exports=new a("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(l){return l!==null&&!(!s.test(l)||l[l.length-1]==="_")},construct:function(l){var f,u,d,h;return u=(f=l.replace(/_/g,"").toLowerCase())[0]==="-"?-1:1,h=[],"+-".indexOf(f[0])>=0&&(f=f.slice(1)),f===".inf"?u===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:f===".nan"?NaN:f.indexOf(":")>=0?(f.split(":").forEach(function(g){h.unshift(parseFloat(g,10))}),f=0,d=1,h.forEach(function(g){f+=g*d,d*=60}),u*f):u*parseFloat(f,10)},predicate:function(l){return Object.prototype.toString.call(l)==="[object Number]"&&(l%1!=0||o.isNegativeZero(l))},represent:function(l,f){var u;if(isNaN(l))switch(f){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===l)switch(f){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===l)switch(f){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(o.isNegativeZero(l))return"-0.0";return u=l.toString(10),c.test(u)?u.replace("e",".e"):u},defaultStyle:"lowercase"})},function(r,n,i){var o=i(10),a=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),s=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");r.exports=new o("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(c){return c!==null&&(a.exec(c)!==null||s.exec(c)!==null)},construct:function(c){var l,f,u,d,h,g,p,v,x=0,m=null;if((l=a.exec(c))===null&&(l=s.exec(c)),l===null)throw new Error("Date resolve error");if(f=+l[1],u=+l[2]-1,d=+l[3],!l[4])return new Date(Date.UTC(f,u,d));if(h=+l[4],g=+l[5],p=+l[6],l[7]){for(x=l[7].slice(0,3);x.length<3;)x+="0";x=+x}return l[9]&&(m=6e4*(60*+l[10]+ +(l[11]||0)),l[9]==="-"&&(m=-m)),v=new Date(Date.UTC(f,u,d,h,g,p,x)),m&&v.setTime(v.getTime()-m),v},instanceOf:Date,represent:function(c){return c.toISOString()}})},function(r,n,i){var o=i(10);r.exports=new o("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(a){return a==="<<"||a===null}})},function(r,n,i){var o;try{o=i(145).Buffer}catch{}var a=i(10),s=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;r.exports=new a("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(c){if(c===null)return!1;var l,f,u=0,d=c.length,h=s;for(f=0;f64)){if(l<0)return!1;u+=6}return u%8==0},construct:function(c){var l,f,u=c.replace(/[\r\n=]/g,""),d=u.length,h=s,g=0,p=[];for(l=0;l>16&255),p.push(g>>8&255),p.push(255&g)),g=g<<6|h.indexOf(u.charAt(l));return(f=d%4*6)===0?(p.push(g>>16&255),p.push(g>>8&255),p.push(255&g)):f===18?(p.push(g>>10&255),p.push(g>>2&255)):f===12&&p.push(g>>4&255),o?o.from?o.from(p):new o(p):p},predicate:function(c){return o&&o.isBuffer(c)},represent:function(c){var l,f,u="",d=0,h=c.length,g=s;for(l=0;l>18&63],u+=g[d>>12&63],u+=g[d>>6&63],u+=g[63&d]),d=(d<<8)+c[l];return(f=h%3)===0?(u+=g[d>>18&63],u+=g[d>>12&63],u+=g[d>>6&63],u+=g[63&d]):f===2?(u+=g[d>>10&63],u+=g[d>>4&63],u+=g[d<<2&63],u+=g[64]):f===1&&(u+=g[d>>2&63],u+=g[d<<4&63],u+=g[64],u+=g[64]),u}})},function(r,n,i){var o=i(10),a=Object.prototype.hasOwnProperty,s=Object.prototype.toString;r.exports=new o("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(c){if(c===null)return!0;var l,f,u,d,h,g=[],p=c;for(l=0,f=p.length;l3||s[s.length-l.length-1]!=="/"))},construct:function(a){var s=a,c=/\/([gim]*)$/.exec(a),l="";return s[0]==="/"&&(c&&(l=c[1]),s=s.slice(1,s.length-l.length-1)),new RegExp(s,l)},predicate:function(a){return Object.prototype.toString.call(a)==="[object RegExp]"},represent:function(a){var s="/"+a.source+"/";return a.global&&(s+="g"),a.multiline&&(s+="m"),a.ignoreCase&&(s+="i"),s}})},function(r,n,i){var o;try{o=i(302)}catch{typeof window<"u"&&(o=window.esprima)}var a=i(10);r.exports=new a("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(s){if(s===null)return!1;try{var c="("+s+")",l=o.parse(c,{range:!0});return l.type==="Program"&&l.body.length===1&&l.body[0].type==="ExpressionStatement"&&(l.body[0].expression.type==="ArrowFunctionExpression"||l.body[0].expression.type==="FunctionExpression")}catch{return!1}},construct:function(s){var c,l="("+s+")",f=o.parse(l,{range:!0}),u=[];if(f.type!=="Program"||f.body.length!==1||f.body[0].type!=="ExpressionStatement"||f.body[0].expression.type!=="ArrowFunctionExpression"&&f.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return f.body[0].expression.params.forEach(function(d){u.push(d.name)}),c=f.body[0].expression.body.range,f.body[0].expression.body.type==="BlockStatement"?new Function(u,l.slice(c[0]+1,c[1]-1)):new Function(u,"return "+l.slice(c[0],c[1]))},predicate:function(s){return Object.prototype.toString.call(s)==="[object Function]"},represent:function(s){return s.toString()}})},function(r,n,i){var o;o=function(){return function(a){var s={};function c(l){if(s[l])return s[l].exports;var f=s[l]={exports:{},id:l,loaded:!1};return a[l].call(f.exports,f,f.exports,c),f.loaded=!0,f.exports}return c.m=a,c.c=s,c.p="",c(0)}([function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(1),f=c(3),u=c(8),d=c(15);function h(p,v,x){var m=null,y=function(D,b){x&&x(D,b),m&&m.visit(D,b)},w=typeof x=="function"?y:null,C=!1;if(v){C=typeof v.comment=="boolean"&&v.comment;var S=typeof v.attachComment=="boolean"&&v.attachComment;(C||S)&&((m=new l.CommentHandler).attach=S,v.comment=!0,w=y)}var T,_=!1;v&&typeof v.sourceType=="string"&&(_=v.sourceType==="module"),T=v&&typeof v.jsx=="boolean"&&v.jsx?new f.JSXParser(p,v,w):new u.Parser(p,v,w);var E=_?T.parseModule():T.parseScript();return C&&m&&(E.comments=m.comments),T.config.tokens&&(E.tokens=T.tokens),T.config.tolerant&&(E.errors=T.errorHandler.errors),E}s.parse=h,s.parseModule=function(p,v,x){var m=v||{};return m.sourceType="module",h(p,m,x)},s.parseScript=function(p,v,x){var m=v||{};return m.sourceType="script",h(p,m,x)},s.tokenize=function(p,v,x){var m,y=new d.Tokenizer(p,v);m=[];try{for(;;){var w=y.getNextToken();if(!w)break;x&&(w=x(w)),m.push(w)}}catch(C){y.errorHandler.tolerate(C)}return y.errorHandler.tolerant&&(m.errors=y.errors()),m};var g=c(2);s.Syntax=g.Syntax,s.version="4.0.1"},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(2),f=function(){function u(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return u.prototype.insertInnerComments=function(d,h){if(d.type===l.Syntax.BlockStatement&&d.body.length===0){for(var g=[],p=this.leading.length-1;p>=0;--p){var v=this.leading[p];h.end.offset>=v.start&&(g.unshift(v.comment),this.leading.splice(p,1),this.trailing.splice(p,1))}g.length&&(d.innerComments=g)}},u.prototype.findTrailingComments=function(d){var h=[];if(this.trailing.length>0){for(var g=this.trailing.length-1;g>=0;--g){var p=this.trailing[g];p.start>=d.end.offset&&h.unshift(p.comment)}return this.trailing.length=0,h}var v=this.stack[this.stack.length-1];if(v&&v.node.trailingComments){var x=v.node.trailingComments[0];x&&x.range[0]>=d.end.offset&&(h=v.node.trailingComments,delete v.node.trailingComments)}return h},u.prototype.findLeadingComments=function(d){for(var h,g=[];this.stack.length>0&&(x=this.stack[this.stack.length-1])&&x.start>=d.start.offset;)h=x.node,this.stack.pop();if(h){for(var p=(h.leadingComments?h.leadingComments.length:0)-1;p>=0;--p){var v=h.leadingComments[p];v.range[1]<=d.start.offset&&(g.unshift(v),h.leadingComments.splice(p,1))}return h.leadingComments&&h.leadingComments.length===0&&delete h.leadingComments,g}for(p=this.leading.length-1;p>=0;--p){var x;(x=this.leading[p]).start<=d.start.offset&&(g.unshift(x.comment),this.leading.splice(p,1))}return g},u.prototype.visitNode=function(d,h){if(!(d.type===l.Syntax.Program&&d.body.length>0)){this.insertInnerComments(d,h);var g=this.findTrailingComments(h),p=this.findLeadingComments(h);p.length>0&&(d.leadingComments=p),g.length>0&&(d.trailingComments=g),this.stack.push({node:d,start:h.start.offset})}},u.prototype.visitComment=function(d,h){var g=d.type[0]==="L"?"Line":"Block",p={type:g,value:d.value};if(d.range&&(p.range=d.range),d.loc&&(p.loc=d.loc),this.comments.push(p),this.attach){var v={comment:{type:g,value:d.value,range:[h.start.offset,h.end.offset]},start:h.start.offset};d.loc&&(v.comment.loc=d.loc),d.type=g,this.leading.push(v),this.trailing.push(v)}},u.prototype.visit=function(d,h){d.type==="LineComment"||d.type==="BlockComment"?this.visitComment(d,h):this.attach&&this.visitNode(d,h)},u}();s.CommentHandler=f},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(a,s,c){var l,f=this&&this.__extends||(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,C){w.__proto__=C}||function(w,C){for(var S in C)C.hasOwnProperty(S)&&(w[S]=C[S])},function(w,C){function S(){this.constructor=w}l(w,C),w.prototype=C===null?Object.create(C):(S.prototype=C.prototype,new S)});Object.defineProperty(s,"__esModule",{value:!0});var u=c(4),d=c(5),h=c(6),g=c(7),p=c(8),v=c(13),x=c(14);function m(w){var C;switch(w.type){case h.JSXSyntax.JSXIdentifier:C=w.name;break;case h.JSXSyntax.JSXNamespacedName:var S=w;C=m(S.namespace)+":"+m(S.name);break;case h.JSXSyntax.JSXMemberExpression:var T=w;C=m(T.object)+"."+m(T.property)}return C}v.TokenName[100]="JSXIdentifier",v.TokenName[101]="JSXText";var y=function(w){function C(S,T,_){return w.call(this,S,T,_)||this}return f(C,w),C.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():w.prototype.parsePrimaryExpression.call(this)},C.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column},C.prototype.finishJSX=function(){this.nextToken()},C.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},C.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},C.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},C.prototype.scanXHTMLEntity=function(S){for(var T="&",_=!0,E=!1,D=!1,b=!1;!this.scanner.eof()&&_&&!E;){var I=this.scanner.source[this.scanner.index];if(I===S)break;if(E=I===";",T+=I,++this.scanner.index,!E)switch(T.length){case 2:D=I==="#";break;case 3:D&&(_=(b=I==="x")||u.Character.isDecimalDigit(I.charCodeAt(0)),D=D&&!b);break;default:_=(_=_&&!(D&&!u.Character.isDecimalDigit(I.charCodeAt(0))))&&!(b&&!u.Character.isHexDigit(I.charCodeAt(0)))}}if(_&&E&&T.length>2){var R=T.substr(1,T.length-2);D&&R.length>1?T=String.fromCharCode(parseInt(R.substr(1),10)):b&&R.length>2?T=String.fromCharCode(parseInt("0"+R.substr(1),16)):D||b||!x.XHTMLEntities[R]||(T=x.XHTMLEntities[R])}return T},C.prototype.lexJSX=function(){var S=this.scanner.source.charCodeAt(this.scanner.index);if(S===60||S===62||S===47||S===58||S===61||S===123||S===125)return{type:7,value:I=this.scanner.source[this.scanner.index++],lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index};if(S===34||S===39){for(var T=this.scanner.index,_=this.scanner.source[this.scanner.index++],E="";!this.scanner.eof()&&(R=this.scanner.source[this.scanner.index++])!==_;)E+=R==="&"?this.scanXHTMLEntity(_):R;return{type:8,value:E,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:T,end:this.scanner.index}}if(S===46){var D=this.scanner.source.charCodeAt(this.scanner.index+1),b=this.scanner.source.charCodeAt(this.scanner.index+2),I=D===46&&b===46?"...":".";return T=this.scanner.index,this.scanner.index+=I.length,{type:7,value:I,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:T,end:this.scanner.index}}if(S===96)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(u.Character.isIdentifierStart(S)&&S!==92){for(T=this.scanner.index,++this.scanner.index;!this.scanner.eof();){var R=this.scanner.source.charCodeAt(this.scanner.index);if(u.Character.isIdentifierPart(R)&&R!==92)++this.scanner.index;else{if(R!==45)break;++this.scanner.index}}return{type:100,value:this.scanner.source.slice(T,this.scanner.index),lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:T,end:this.scanner.index}}return this.scanner.lex()},C.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;var S=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(S)),S},C.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;for(var S=this.scanner.index,T="";!this.scanner.eof();){var _=this.scanner.source[this.scanner.index];if(_==="{"||_==="<")break;++this.scanner.index,T+=_,u.Character.isLineTerminator(_.charCodeAt(0))&&(++this.scanner.lineNumber,_==="\r"&&this.scanner.source[this.scanner.index]===` -`&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var E={type:101,value:T,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:S,end:this.scanner.index};return T.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(E)),E},C.prototype.peekJSXToken=function(){var S=this.scanner.saveState();this.scanner.scanComments();var T=this.lexJSX();return this.scanner.restoreState(S),T},C.prototype.expectJSX=function(S){var T=this.nextJSXToken();T.type===7&&T.value===S||this.throwUnexpectedToken(T)},C.prototype.matchJSX=function(S){var T=this.peekJSXToken();return T.type===7&&T.value===S},C.prototype.parseJSXIdentifier=function(){var S=this.createJSXNode(),T=this.nextJSXToken();return T.type!==100&&this.throwUnexpectedToken(T),this.finalize(S,new d.JSXIdentifier(T.value))},C.prototype.parseJSXElementName=function(){var S=this.createJSXNode(),T=this.parseJSXIdentifier();if(this.matchJSX(":")){var _=T;this.expectJSX(":");var E=this.parseJSXIdentifier();T=this.finalize(S,new d.JSXNamespacedName(_,E))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var D=T;this.expectJSX(".");var b=this.parseJSXIdentifier();T=this.finalize(S,new d.JSXMemberExpression(D,b))}return T},C.prototype.parseJSXAttributeName=function(){var S,T=this.createJSXNode(),_=this.parseJSXIdentifier();if(this.matchJSX(":")){var E=_;this.expectJSX(":");var D=this.parseJSXIdentifier();S=this.finalize(T,new d.JSXNamespacedName(E,D))}else S=_;return S},C.prototype.parseJSXStringLiteralAttribute=function(){var S=this.createJSXNode(),T=this.nextJSXToken();T.type!==8&&this.throwUnexpectedToken(T);var _=this.getTokenRaw(T);return this.finalize(S,new g.Literal(T.value,_))},C.prototype.parseJSXExpressionAttribute=function(){var S=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var T=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(S,new d.JSXExpressionContainer(T))},C.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},C.prototype.parseJSXNameValueAttribute=function(){var S=this.createJSXNode(),T=this.parseJSXAttributeName(),_=null;return this.matchJSX("=")&&(this.expectJSX("="),_=this.parseJSXAttributeValue()),this.finalize(S,new d.JSXAttribute(T,_))},C.prototype.parseJSXSpreadAttribute=function(){var S=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var T=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(S,new d.JSXSpreadAttribute(T))},C.prototype.parseJSXAttributes=function(){for(var S=[];!this.matchJSX("/")&&!this.matchJSX(">");){var T=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();S.push(T)}return S},C.prototype.parseJSXOpeningElement=function(){var S=this.createJSXNode();this.expectJSX("<");var T=this.parseJSXElementName(),_=this.parseJSXAttributes(),E=this.matchJSX("/");return E&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(S,new d.JSXOpeningElement(T,E,_))},C.prototype.parseJSXBoundaryElement=function(){var S=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var T=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(S,new d.JSXClosingElement(T))}var _=this.parseJSXElementName(),E=this.parseJSXAttributes(),D=this.matchJSX("/");return D&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(S,new d.JSXOpeningElement(_,D,E))},C.prototype.parseJSXEmptyExpression=function(){var S=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(S,new d.JSXEmptyExpression)},C.prototype.parseJSXExpressionContainer=function(){var S,T=this.createJSXNode();return this.expectJSX("{"),this.matchJSX("}")?(S=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),S=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(T,new d.JSXExpressionContainer(S))},C.prototype.parseJSXChildren=function(){for(var S=[];!this.scanner.eof();){var T=this.createJSXChildNode(),_=this.nextJSXText();if(_.start<_.end){var E=this.getTokenRaw(_),D=this.finalize(T,new d.JSXText(_.value,E));S.push(D)}if(this.scanner.source[this.scanner.index]!=="{")break;var b=this.parseJSXExpressionContainer();S.push(b)}return S},C.prototype.parseComplexJSXElement=function(S){for(var T=[];!this.scanner.eof();){S.children=S.children.concat(this.parseJSXChildren());var _=this.createJSXChildNode(),E=this.parseJSXBoundaryElement();if(E.type===h.JSXSyntax.JSXOpeningElement){var D=E;if(D.selfClosing){var b=this.finalize(_,new d.JSXElement(D,[],null));S.children.push(b)}else T.push(S),S={node:_,opening:D,closing:null,children:[]}}if(E.type===h.JSXSyntax.JSXClosingElement){S.closing=E;var I=m(S.opening.name);if(I!==m(S.closing.name)&&this.tolerateError("Expected corresponding JSX closing tag for %0",I),!(T.length>0))break;b=this.finalize(S.node,new d.JSXElement(S.opening,S.children,S.closing)),(S=T[T.length-1]).children.push(b),T.pop()}}return S},C.prototype.parseJSXElement=function(){var S=this.createJSXNode(),T=this.parseJSXOpeningElement(),_=[],E=null;if(!T.selfClosing){var D=this.parseComplexJSXElement({node:S,opening:T,closing:E,children:_});_=D.children,E=D.closing}return this.finalize(S,new d.JSXElement(T,_,E))},C.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var S=this.parseJSXElement();return this.finishJSX(),S},C.prototype.isStartOfExpression=function(){return w.prototype.isStartOfExpression.call(this)||this.match("<")},C}(p.Parser);s.JSXParser=y},function(a,s){Object.defineProperty(s,"__esModule",{value:!0});var c={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};s.Character={fromCodePoint:function(l){return l<65536?String.fromCharCode(l):String.fromCharCode(55296+(l-65536>>10))+String.fromCharCode(56320+(l-65536&1023))},isWhiteSpace:function(l){return l===32||l===9||l===11||l===12||l===160||l>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(l)>=0},isLineTerminator:function(l){return l===10||l===13||l===8232||l===8233},isIdentifierStart:function(l){return l===36||l===95||l>=65&&l<=90||l>=97&&l<=122||l===92||l>=128&&c.NonAsciiIdentifierStart.test(s.Character.fromCodePoint(l))},isIdentifierPart:function(l){return l===36||l===95||l>=65&&l<=90||l>=97&&l<=122||l>=48&&l<=57||l===92||l>=128&&c.NonAsciiIdentifierPart.test(s.Character.fromCodePoint(l))},isDecimalDigit:function(l){return l>=48&&l<=57},isHexDigit:function(l){return l>=48&&l<=57||l>=65&&l<=70||l>=97&&l<=102},isOctalDigit:function(l){return l>=48&&l<=55}}},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(6),f=function(C){this.type=l.JSXSyntax.JSXClosingElement,this.name=C};s.JSXClosingElement=f;var u=function(C,S,T){this.type=l.JSXSyntax.JSXElement,this.openingElement=C,this.children=S,this.closingElement=T};s.JSXElement=u;var d=function(){this.type=l.JSXSyntax.JSXEmptyExpression};s.JSXEmptyExpression=d;var h=function(C){this.type=l.JSXSyntax.JSXExpressionContainer,this.expression=C};s.JSXExpressionContainer=h;var g=function(C){this.type=l.JSXSyntax.JSXIdentifier,this.name=C};s.JSXIdentifier=g;var p=function(C,S){this.type=l.JSXSyntax.JSXMemberExpression,this.object=C,this.property=S};s.JSXMemberExpression=p;var v=function(C,S){this.type=l.JSXSyntax.JSXAttribute,this.name=C,this.value=S};s.JSXAttribute=v;var x=function(C,S){this.type=l.JSXSyntax.JSXNamespacedName,this.namespace=C,this.name=S};s.JSXNamespacedName=x;var m=function(C,S,T){this.type=l.JSXSyntax.JSXOpeningElement,this.name=C,this.selfClosing=S,this.attributes=T};s.JSXOpeningElement=m;var y=function(C){this.type=l.JSXSyntax.JSXSpreadAttribute,this.argument=C};s.JSXSpreadAttribute=y;var w=function(C,S){this.type=l.JSXSyntax.JSXText,this.value=C,this.raw=S};s.JSXText=w},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(2),f=function(xe){this.type=l.Syntax.ArrayExpression,this.elements=xe};s.ArrayExpression=f;var u=function(xe){this.type=l.Syntax.ArrayPattern,this.elements=xe};s.ArrayPattern=u;var d=function(xe,Le,xt){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=xe,this.body=Le,this.generator=!1,this.expression=xt,this.async=!1};s.ArrowFunctionExpression=d;var h=function(xe,Le,xt){this.type=l.Syntax.AssignmentExpression,this.operator=xe,this.left=Le,this.right=xt};s.AssignmentExpression=h;var g=function(xe,Le){this.type=l.Syntax.AssignmentPattern,this.left=xe,this.right=Le};s.AssignmentPattern=g;var p=function(xe,Le,xt){this.type=l.Syntax.ArrowFunctionExpression,this.id=null,this.params=xe,this.body=Le,this.generator=!1,this.expression=xt,this.async=!0};s.AsyncArrowFunctionExpression=p;var v=function(xe,Le,xt){this.type=l.Syntax.FunctionDeclaration,this.id=xe,this.params=Le,this.body=xt,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionDeclaration=v;var x=function(xe,Le,xt){this.type=l.Syntax.FunctionExpression,this.id=xe,this.params=Le,this.body=xt,this.generator=!1,this.expression=!1,this.async=!0};s.AsyncFunctionExpression=x;var m=function(xe){this.type=l.Syntax.AwaitExpression,this.argument=xe};s.AwaitExpression=m;var y=function(xe,Le,xt){var ti=xe==="||"||xe==="&&";this.type=ti?l.Syntax.LogicalExpression:l.Syntax.BinaryExpression,this.operator=xe,this.left=Le,this.right=xt};s.BinaryExpression=y;var w=function(xe){this.type=l.Syntax.BlockStatement,this.body=xe};s.BlockStatement=w;var C=function(xe){this.type=l.Syntax.BreakStatement,this.label=xe};s.BreakStatement=C;var S=function(xe,Le){this.type=l.Syntax.CallExpression,this.callee=xe,this.arguments=Le};s.CallExpression=S;var T=function(xe,Le){this.type=l.Syntax.CatchClause,this.param=xe,this.body=Le};s.CatchClause=T;var _=function(xe){this.type=l.Syntax.ClassBody,this.body=xe};s.ClassBody=_;var E=function(xe,Le,xt){this.type=l.Syntax.ClassDeclaration,this.id=xe,this.superClass=Le,this.body=xt};s.ClassDeclaration=E;var D=function(xe,Le,xt){this.type=l.Syntax.ClassExpression,this.id=xe,this.superClass=Le,this.body=xt};s.ClassExpression=D;var b=function(xe,Le){this.type=l.Syntax.MemberExpression,this.computed=!0,this.object=xe,this.property=Le};s.ComputedMemberExpression=b;var I=function(xe,Le,xt){this.type=l.Syntax.ConditionalExpression,this.test=xe,this.consequent=Le,this.alternate=xt};s.ConditionalExpression=I;var R=function(xe){this.type=l.Syntax.ContinueStatement,this.label=xe};s.ContinueStatement=R;var M=function(){this.type=l.Syntax.DebuggerStatement};s.DebuggerStatement=M;var L=function(xe,Le){this.type=l.Syntax.ExpressionStatement,this.expression=xe,this.directive=Le};s.Directive=L;var A=function(xe,Le){this.type=l.Syntax.DoWhileStatement,this.body=xe,this.test=Le};s.DoWhileStatement=A;var G=function(){this.type=l.Syntax.EmptyStatement};s.EmptyStatement=G;var P=function(xe){this.type=l.Syntax.ExportAllDeclaration,this.source=xe};s.ExportAllDeclaration=P;var N=function(xe){this.type=l.Syntax.ExportDefaultDeclaration,this.declaration=xe};s.ExportDefaultDeclaration=N;var V=function(xe,Le,xt){this.type=l.Syntax.ExportNamedDeclaration,this.declaration=xe,this.specifiers=Le,this.source=xt};s.ExportNamedDeclaration=V;var $=function(xe,Le){this.type=l.Syntax.ExportSpecifier,this.exported=Le,this.local=xe};s.ExportSpecifier=$;var H=function(xe){this.type=l.Syntax.ExpressionStatement,this.expression=xe};s.ExpressionStatement=H;var Y=function(xe,Le,xt){this.type=l.Syntax.ForInStatement,this.left=xe,this.right=Le,this.body=xt,this.each=!1};s.ForInStatement=Y;var ne=function(xe,Le,xt){this.type=l.Syntax.ForOfStatement,this.left=xe,this.right=Le,this.body=xt};s.ForOfStatement=ne;var Q=function(xe,Le,xt,ti){this.type=l.Syntax.ForStatement,this.init=xe,this.test=Le,this.update=xt,this.body=ti};s.ForStatement=Q;var ee=function(xe,Le,xt,ti){this.type=l.Syntax.FunctionDeclaration,this.id=xe,this.params=Le,this.body=xt,this.generator=ti,this.expression=!1,this.async=!1};s.FunctionDeclaration=ee;var de=function(xe,Le,xt,ti){this.type=l.Syntax.FunctionExpression,this.id=xe,this.params=Le,this.body=xt,this.generator=ti,this.expression=!1,this.async=!1};s.FunctionExpression=de;var fe=function(xe){this.type=l.Syntax.Identifier,this.name=xe};s.Identifier=fe;var le=function(xe,Le,xt){this.type=l.Syntax.IfStatement,this.test=xe,this.consequent=Le,this.alternate=xt};s.IfStatement=le;var k=function(xe,Le){this.type=l.Syntax.ImportDeclaration,this.specifiers=xe,this.source=Le};s.ImportDeclaration=k;var O=function(xe){this.type=l.Syntax.ImportDefaultSpecifier,this.local=xe};s.ImportDefaultSpecifier=O;var B=function(xe){this.type=l.Syntax.ImportNamespaceSpecifier,this.local=xe};s.ImportNamespaceSpecifier=B;var U=function(xe,Le){this.type=l.Syntax.ImportSpecifier,this.local=xe,this.imported=Le};s.ImportSpecifier=U;var z=function(xe,Le){this.type=l.Syntax.LabeledStatement,this.label=xe,this.body=Le};s.LabeledStatement=z;var j=function(xe,Le){this.type=l.Syntax.Literal,this.value=xe,this.raw=Le};s.Literal=j;var K=function(xe,Le){this.type=l.Syntax.MetaProperty,this.meta=xe,this.property=Le};s.MetaProperty=K;var ae=function(xe,Le,xt,ti,Rl){this.type=l.Syntax.MethodDefinition,this.key=xe,this.computed=Le,this.value=xt,this.kind=ti,this.static=Rl};s.MethodDefinition=ae;var he=function(xe){this.type=l.Syntax.Program,this.body=xe,this.sourceType="module"};s.Module=he;var ye=function(xe,Le){this.type=l.Syntax.NewExpression,this.callee=xe,this.arguments=Le};s.NewExpression=ye;var Te=function(xe){this.type=l.Syntax.ObjectExpression,this.properties=xe};s.ObjectExpression=Te;var q=function(xe){this.type=l.Syntax.ObjectPattern,this.properties=xe};s.ObjectPattern=q;var J=function(xe,Le,xt,ti,Rl,$2){this.type=l.Syntax.Property,this.key=Le,this.computed=xt,this.value=ti,this.kind=xe,this.method=Rl,this.shorthand=$2};s.Property=J;var ie=function(xe,Le,xt,ti){this.type=l.Syntax.Literal,this.value=xe,this.raw=Le,this.regex={pattern:xt,flags:ti}};s.RegexLiteral=ie;var Z=function(xe){this.type=l.Syntax.RestElement,this.argument=xe};s.RestElement=Z;var te=function(xe){this.type=l.Syntax.ReturnStatement,this.argument=xe};s.ReturnStatement=te;var me=function(xe){this.type=l.Syntax.Program,this.body=xe,this.sourceType="script"};s.Script=me;var X=function(xe){this.type=l.Syntax.SequenceExpression,this.expressions=xe};s.SequenceExpression=X;var Ae=function(xe){this.type=l.Syntax.SpreadElement,this.argument=xe};s.SpreadElement=Ae;var Be=function(xe,Le){this.type=l.Syntax.MemberExpression,this.computed=!1,this.object=xe,this.property=Le};s.StaticMemberExpression=Be;var Ve=function(){this.type=l.Syntax.Super};s.Super=Ve;var ue=function(xe,Le){this.type=l.Syntax.SwitchCase,this.test=xe,this.consequent=Le};s.SwitchCase=ue;var Ee=function(xe,Le){this.type=l.Syntax.SwitchStatement,this.discriminant=xe,this.cases=Le};s.SwitchStatement=Ee;var Me=function(xe,Le){this.type=l.Syntax.TaggedTemplateExpression,this.tag=xe,this.quasi=Le};s.TaggedTemplateExpression=Me;var Re=function(xe,Le){this.type=l.Syntax.TemplateElement,this.value=xe,this.tail=Le};s.TemplateElement=Re;var We=function(xe,Le){this.type=l.Syntax.TemplateLiteral,this.quasis=xe,this.expressions=Le};s.TemplateLiteral=We;var ut=function(){this.type=l.Syntax.ThisExpression};s.ThisExpression=ut;var ze=function(xe){this.type=l.Syntax.ThrowStatement,this.argument=xe};s.ThrowStatement=ze;var ft=function(xe,Le,xt){this.type=l.Syntax.TryStatement,this.block=xe,this.handler=Le,this.finalizer=xt};s.TryStatement=ft;var dt=function(xe,Le){this.type=l.Syntax.UnaryExpression,this.operator=xe,this.argument=Le,this.prefix=!0};s.UnaryExpression=dt;var dn=function(xe,Le,xt){this.type=l.Syntax.UpdateExpression,this.operator=xe,this.argument=Le,this.prefix=xt};s.UpdateExpression=dn;var Pn=function(xe,Le){this.type=l.Syntax.VariableDeclaration,this.declarations=xe,this.kind=Le};s.VariableDeclaration=Pn;var Gt=function(xe,Le){this.type=l.Syntax.VariableDeclarator,this.id=xe,this.init=Le};s.VariableDeclarator=Gt;var sr=function(xe,Le){this.type=l.Syntax.WhileStatement,this.test=xe,this.body=Le};s.WhileStatement=sr;var ji=function(xe,Le){this.type=l.Syntax.WithStatement,this.object=xe,this.body=Le};s.WithStatement=ji;var Ml=function(xe,Le){this.type=l.Syntax.YieldExpression,this.argument=xe,this.delegate=Le};s.YieldExpression=Ml},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(9),f=c(10),u=c(11),d=c(7),h=c(12),g=c(2),p=c(13),v=function(){function x(m,y,w){y===void 0&&(y={}),this.config={range:typeof y.range=="boolean"&&y.range,loc:typeof y.loc=="boolean"&&y.loc,source:null,tokens:typeof y.tokens=="boolean"&&y.tokens,comment:typeof y.comment=="boolean"&&y.comment,tolerant:typeof y.tolerant=="boolean"&&y.tolerant},this.config.loc&&y.source&&y.source!==null&&(this.config.source=String(y.source)),this.delegate=w,this.errorHandler=new f.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new h.Scanner(m,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,await:!1,allowIn:!0,allowStrictDirective:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:!1},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}return x.prototype.throwError=function(m){for(var y=[],w=1;w0&&this.delegate)for(var y=0;y>="||m===">>>="||m==="&="||m==="^="||m==="|="},x.prototype.isolateCoverGrammar=function(m){var y=this.context.isBindingElement,w=this.context.isAssignmentTarget,C=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var S=m.call(this);return this.context.firstCoverInitializedNameError!==null&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=y,this.context.isAssignmentTarget=w,this.context.firstCoverInitializedNameError=C,S},x.prototype.inheritCoverGrammar=function(m){var y=this.context.isBindingElement,w=this.context.isAssignmentTarget,C=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var S=m.call(this);return this.context.isBindingElement=this.context.isBindingElement&&y,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&w,this.context.firstCoverInitializedNameError=C||this.context.firstCoverInitializedNameError,S},x.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type===2||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)},x.prototype.parsePrimaryExpression=function(){var m,y,w,C=this.createNode();switch(this.lookahead.type){case 3:(this.context.isModule||this.context.await)&&this.lookahead.value==="await"&&this.tolerateUnexpectedToken(this.lookahead),m=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(C,new d.Identifier(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,u.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,y=this.nextToken(),w=this.getTokenRaw(y),m=this.finalize(C,new d.Literal(y.value,w));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,y=this.nextToken(),w=this.getTokenRaw(y),m=this.finalize(C,new d.Literal(y.value==="true",w));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,y=this.nextToken(),w=this.getTokenRaw(y),m=this.finalize(C,new d.Literal(null,w));break;case 10:m=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,m=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":m=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":m=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,y=this.nextRegexToken(),w=this.getTokenRaw(y),m=this.finalize(C,new d.RegexLiteral(y.regex,w,y.pattern,y.flags));break;default:m=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?m=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?m=this.finalize(C,new d.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?m=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),m=this.finalize(C,new d.ThisExpression)):m=this.matchKeyword("class")?this.parseClassExpression():this.throwUnexpectedToken(this.nextToken()));break;default:m=this.throwUnexpectedToken(this.nextToken())}return m},x.prototype.parseSpreadElement=function(){var m=this.createNode();this.expect("...");var y=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(m,new d.SpreadElement(y))},x.prototype.parseArrayInitializer=function(){var m=this.createNode(),y=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),y.push(null);else if(this.match("...")){var w=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),y.push(w)}else y.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(m,new d.ArrayExpression(y))},x.prototype.parsePropertyMethod=function(m){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var y=this.context.strict,w=this.context.allowStrictDirective;this.context.allowStrictDirective=m.simple;var C=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&m.firstRestricted&&this.tolerateUnexpectedToken(m.firstRestricted,m.message),this.context.strict&&m.stricted&&this.tolerateUnexpectedToken(m.stricted,m.message),this.context.strict=y,this.context.allowStrictDirective=w,C},x.prototype.parsePropertyMethodFunction=function(){var m=this.createNode(),y=this.context.allowYield;this.context.allowYield=!0;var w=this.parseFormalParameters(),C=this.parsePropertyMethod(w);return this.context.allowYield=y,this.finalize(m,new d.FunctionExpression(null,w.params,C,!1))},x.prototype.parsePropertyMethodAsyncFunction=function(){var m=this.createNode(),y=this.context.allowYield,w=this.context.await;this.context.allowYield=!1,this.context.await=!0;var C=this.parseFormalParameters(),S=this.parsePropertyMethod(C);return this.context.allowYield=y,this.context.await=w,this.finalize(m,new d.AsyncFunctionExpression(null,C.params,S))},x.prototype.parseObjectPropertyKey=function(){var m,y=this.createNode(),w=this.nextToken();switch(w.type){case 8:case 6:this.context.strict&&w.octal&&this.tolerateUnexpectedToken(w,u.Messages.StrictOctalLiteral);var C=this.getTokenRaw(w);m=this.finalize(y,new d.Literal(w.value,C));break;case 3:case 1:case 5:case 4:m=this.finalize(y,new d.Identifier(w.value));break;case 7:w.value==="["?(m=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):m=this.throwUnexpectedToken(w);break;default:m=this.throwUnexpectedToken(w)}return m},x.prototype.isPropertyKey=function(m,y){return m.type===g.Syntax.Identifier&&m.name===y||m.type===g.Syntax.Literal&&m.value===y},x.prototype.parseObjectProperty=function(m){var y,w=this.createNode(),C=this.lookahead,S=null,T=null,_=!1,E=!1,D=!1,b=!1;if(C.type===3){var I=C.value;this.nextToken(),_=this.match("["),S=(b=!(this.hasLineTerminator||I!=="async"||this.match(":")||this.match("(")||this.match("*")||this.match(",")))?this.parseObjectPropertyKey():this.finalize(w,new d.Identifier(I))}else this.match("*")?this.nextToken():(_=this.match("["),S=this.parseObjectPropertyKey());var R=this.qualifiedPropertyName(this.lookahead);if(C.type===3&&!b&&C.value==="get"&&R)y="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod();else if(C.type===3&&!b&&C.value==="set"&&R)y="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod();else if(C.type===7&&C.value==="*"&&R)y="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0;else if(S||this.throwUnexpectedToken(this.lookahead),y="init",this.match(":")&&!b)!_&&this.isPropertyKey(S,"__proto__")&&(m.value&&this.tolerateError(u.Messages.DuplicateProtoProperty),m.value=!0),this.nextToken(),T=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))T=b?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0;else if(C.type===3)if(I=this.finalize(w,new d.Identifier(C.value)),this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),D=!0;var M=this.isolateCoverGrammar(this.parseAssignmentExpression);T=this.finalize(w,new d.AssignmentPattern(I,M))}else D=!0,T=I;else this.throwUnexpectedToken(this.nextToken());return this.finalize(w,new d.Property(y,S,_,T,E,D))},x.prototype.parseObjectInitializer=function(){var m=this.createNode();this.expect("{");for(var y=[],w={value:!1};!this.match("}");)y.push(this.parseObjectProperty(w)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(m,new d.ObjectExpression(y))},x.prototype.parseTemplateHead=function(){l.assert(this.lookahead.head,"Template literal must start with a template head");var m=this.createNode(),y=this.nextToken(),w=y.value,C=y.cooked;return this.finalize(m,new d.TemplateElement({raw:w,cooked:C},y.tail))},x.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var m=this.createNode(),y=this.nextToken(),w=y.value,C=y.cooked;return this.finalize(m,new d.TemplateElement({raw:w,cooked:C},y.tail))},x.prototype.parseTemplateLiteral=function(){var m=this.createNode(),y=[],w=[],C=this.parseTemplateHead();for(w.push(C);!C.tail;)y.push(this.parseExpression()),C=this.parseTemplateElement(),w.push(C);return this.finalize(m,new d.TemplateLiteral(w,y))},x.prototype.reinterpretExpressionAsPattern=function(m){switch(m.type){case g.Syntax.Identifier:case g.Syntax.MemberExpression:case g.Syntax.RestElement:case g.Syntax.AssignmentPattern:break;case g.Syntax.SpreadElement:m.type=g.Syntax.RestElement,this.reinterpretExpressionAsPattern(m.argument);break;case g.Syntax.ArrayExpression:m.type=g.Syntax.ArrayPattern;for(var y=0;y")||this.expect("=>"),m={type:"ArrowParameterPlaceHolder",params:[],async:!1};else{var y=this.lookahead,w=[];if(this.match("..."))m=this.parseRestElement(w),this.expect(")"),this.match("=>")||this.expect("=>"),m={type:"ArrowParameterPlaceHolder",params:[m],async:!1};else{var C=!1;if(this.context.isBindingElement=!0,m=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var S=[];for(this.context.isAssignmentTarget=!1,S.push(m);this.lookahead.type!==2&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(var T=0;T")||this.expect("=>"),this.context.isBindingElement=!1,T=0;T")&&(m.type===g.Syntax.Identifier&&m.name==="yield"&&(C=!0,m={type:"ArrowParameterPlaceHolder",params:[m],async:!1}),!C)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),m.type===g.Syntax.SequenceExpression)for(T=0;T")){for(var E=0;E<_.length;++E)this.reinterpretExpressionAsPattern(_[E]);m={type:"ArrowParameterPlaceHolder",params:_,async:!0}}}else if(this.match("["))this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("["),S=this.isolateCoverGrammar(this.parseExpression),this.expect("]"),m=this.finalize(this.startNode(y),new d.ComputedMemberExpression(m,S));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var D=this.parseTemplateLiteral();m=this.finalize(this.startNode(y),new d.TaggedTemplateExpression(m,D))}return this.context.allowIn=C,m},x.prototype.parseSuper=function(){var m=this.createNode();return this.expectKeyword("super"),this.match("[")||this.match(".")||this.throwUnexpectedToken(this.lookahead),this.finalize(m,new d.Super)},x.prototype.parseLeftHandSideExpression=function(){l.assert(this.context.allowIn,"callee of new expression always allow in keyword.");for(var m=this.startNode(this.lookahead),y=this.matchKeyword("super")&&this.context.inFunctionBody?this.parseSuper():this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression);;)if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");var w=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),y=this.finalize(m,new d.ComputedMemberExpression(y,w))}else if(this.match("."))this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("."),w=this.parseIdentifierName(),y=this.finalize(m,new d.StaticMemberExpression(y,w));else{if(this.lookahead.type!==10||!this.lookahead.head)break;var C=this.parseTemplateLiteral();y=this.finalize(m,new d.TaggedTemplateExpression(y,C))}return y},x.prototype.parseUpdateExpression=function(){var m,y=this.lookahead;if(this.match("++")||this.match("--")){var w=this.startNode(y),C=this.nextToken();m=this.inheritCoverGrammar(this.parseUnaryExpression),this.context.strict&&m.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(m.name)&&this.tolerateError(u.Messages.StrictLHSPrefix),this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment);var S=!0;m=this.finalize(w,new d.UpdateExpression(C.value,m,S)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else if(m=this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall),!this.hasLineTerminator&&this.lookahead.type===7&&(this.match("++")||this.match("--"))){this.context.strict&&m.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(m.name)&&this.tolerateError(u.Messages.StrictLHSPostfix),this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var T=this.nextToken().value;S=!1,m=this.finalize(this.startNode(y),new d.UpdateExpression(T,m,S))}return m},x.prototype.parseAwaitExpression=function(){var m=this.createNode();this.nextToken();var y=this.parseUnaryExpression();return this.finalize(m,new d.AwaitExpression(y))},x.prototype.parseUnaryExpression=function(){var m;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")||this.matchKeyword("delete")||this.matchKeyword("void")||this.matchKeyword("typeof")){var y=this.startNode(this.lookahead),w=this.nextToken();m=this.inheritCoverGrammar(this.parseUnaryExpression),m=this.finalize(y,new d.UnaryExpression(w.value,m)),this.context.strict&&m.operator==="delete"&&m.argument.type===g.Syntax.Identifier&&this.tolerateError(u.Messages.StrictDelete),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else m=this.context.await&&this.matchContextualKeyword("await")?this.parseAwaitExpression():this.parseUpdateExpression();return m},x.prototype.parseExponentiationExpression=function(){var m=this.lookahead,y=this.inheritCoverGrammar(this.parseUnaryExpression);if(y.type!==g.Syntax.UnaryExpression&&this.match("**")){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var w=y,C=this.isolateCoverGrammar(this.parseExponentiationExpression);y=this.finalize(this.startNode(m),new d.BinaryExpression("**",w,C))}return y},x.prototype.binaryPrecedence=function(m){var y=m.value;return m.type===7?this.operatorPrecedence[y]||0:m.type===4&&(y==="instanceof"||this.context.allowIn&&y==="in")?7:0},x.prototype.parseBinaryExpression=function(){var m=this.lookahead,y=this.inheritCoverGrammar(this.parseExponentiationExpression),w=this.lookahead,C=this.binaryPrecedence(w);if(C>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var S=[m,this.lookahead],T=y,_=this.isolateCoverGrammar(this.parseExponentiationExpression),E=[T,w.value,_],D=[C];!((C=this.binaryPrecedence(this.lookahead))<=0);){for(;E.length>2&&C<=D[D.length-1];){_=E.pop();var b=E.pop();D.pop(),T=E.pop(),S.pop();var I=this.startNode(S[S.length-1]);E.push(this.finalize(I,new d.BinaryExpression(b,T,_)))}E.push(this.nextToken().value),D.push(C),S.push(this.lookahead),E.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var R=E.length-1;y=E[R];for(var M=S.pop();R>1;){var L=S.pop(),A=M&&M.lineStart;I=this.startNode(L,A),b=E[R-1],y=this.finalize(I,new d.BinaryExpression(b,E[R-2],y)),R-=2,M=L}}return y},x.prototype.parseConditionalExpression=function(){var m=this.lookahead,y=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var w=this.context.allowIn;this.context.allowIn=!0;var C=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=w,this.expect(":");var S=this.isolateCoverGrammar(this.parseAssignmentExpression);y=this.finalize(this.startNode(m),new d.ConditionalExpression(y,C,S)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return y},x.prototype.checkPatternParam=function(m,y){switch(y.type){case g.Syntax.Identifier:this.validateParam(m,y,y.name);break;case g.Syntax.RestElement:this.checkPatternParam(m,y.argument);break;case g.Syntax.AssignmentPattern:this.checkPatternParam(m,y.left);break;case g.Syntax.ArrayPattern:for(var w=0;w")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var S=m.async,T=this.reinterpretAsCoverFormalsList(m);if(T){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var _=this.context.strict,E=this.context.allowStrictDirective;this.context.allowStrictDirective=T.simple;var D=this.context.allowYield,b=this.context.await;this.context.allowYield=!0,this.context.await=S;var I=this.startNode(y);this.expect("=>");var R=void 0;if(this.match("{")){var M=this.context.allowIn;this.context.allowIn=!0,R=this.parseFunctionSourceElements(),this.context.allowIn=M}else R=this.isolateCoverGrammar(this.parseAssignmentExpression);var L=R.type!==g.Syntax.BlockStatement;this.context.strict&&T.firstRestricted&&this.throwUnexpectedToken(T.firstRestricted,T.message),this.context.strict&&T.stricted&&this.tolerateUnexpectedToken(T.stricted,T.message),m=S?this.finalize(I,new d.AsyncArrowFunctionExpression(T.params,R,L)):this.finalize(I,new d.ArrowFunctionExpression(T.params,R,L)),this.context.strict=_,this.context.allowStrictDirective=E,this.context.allowYield=D,this.context.await=b}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.strict&&m.type===g.Syntax.Identifier){var A=m;this.scanner.isRestrictedWord(A.name)&&this.tolerateUnexpectedToken(w,u.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(A.name)&&this.tolerateUnexpectedToken(w,u.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(m):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1);var G=(w=this.nextToken()).value,P=this.isolateCoverGrammar(this.parseAssignmentExpression);m=this.finalize(this.startNode(y),new d.AssignmentExpression(G,m,P)),this.context.firstCoverInitializedNameError=null}}return m},x.prototype.parseExpression=function(){var m=this.lookahead,y=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var w=[];for(w.push(y);this.lookahead.type!==2&&this.match(",");)this.nextToken(),w.push(this.isolateCoverGrammar(this.parseAssignmentExpression));y=this.finalize(this.startNode(m),new d.SequenceExpression(w))}return y},x.prototype.parseStatementListItem=function(){var m;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,this.lookahead.type===4)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,u.Messages.IllegalExportDeclaration),m=this.parseExportDeclaration();break;case"import":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,u.Messages.IllegalImportDeclaration),m=this.parseImportDeclaration();break;case"const":m=this.parseLexicalDeclaration({inFor:!1});break;case"function":m=this.parseFunctionDeclaration();break;case"class":m=this.parseClassDeclaration();break;case"let":m=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:m=this.parseStatement()}else m=this.parseStatement();return m},x.prototype.parseBlock=function(){var m=this.createNode();this.expect("{");for(var y=[];!this.match("}");)y.push(this.parseStatementListItem());return this.expect("}"),this.finalize(m,new d.BlockStatement(y))},x.prototype.parseLexicalBinding=function(m,y){var w=this.createNode(),C=this.parsePattern([],m);this.context.strict&&C.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(C.name)&&this.tolerateError(u.Messages.StrictVarName);var S=null;return m==="const"?this.matchKeyword("in")||this.matchContextualKeyword("of")||(this.match("=")?(this.nextToken(),S=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError(u.Messages.DeclarationMissingInitializer,"const")):(!y.inFor&&C.type!==g.Syntax.Identifier||this.match("="))&&(this.expect("="),S=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(w,new d.VariableDeclarator(C,S))},x.prototype.parseBindingList=function(m,y){for(var w=[this.parseLexicalBinding(m,y)];this.match(",");)this.nextToken(),w.push(this.parseLexicalBinding(m,y));return w},x.prototype.isLexicalDeclaration=function(){var m=this.scanner.saveState();this.scanner.scanComments();var y=this.scanner.lex();return this.scanner.restoreState(m),y.type===3||y.type===7&&y.value==="["||y.type===7&&y.value==="{"||y.type===4&&y.value==="let"||y.type===4&&y.value==="yield"},x.prototype.parseLexicalDeclaration=function(m){var y=this.createNode(),w=this.nextToken().value;l.assert(w==="let"||w==="const","Lexical declaration must be either let or const");var C=this.parseBindingList(w,m);return this.consumeSemicolon(),this.finalize(y,new d.VariableDeclaration(C,w))},x.prototype.parseBindingRestElement=function(m,y){var w=this.createNode();this.expect("...");var C=this.parsePattern(m,y);return this.finalize(w,new d.RestElement(C))},x.prototype.parseArrayPattern=function(m,y){var w=this.createNode();this.expect("[");for(var C=[];!this.match("]");)if(this.match(","))this.nextToken(),C.push(null);else{if(this.match("...")){C.push(this.parseBindingRestElement(m,y));break}C.push(this.parsePatternWithDefault(m,y)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(w,new d.ArrayPattern(C))},x.prototype.parsePropertyPattern=function(m,y){var w,C,S=this.createNode(),T=!1,_=!1;if(this.lookahead.type===3){var E=this.lookahead;w=this.parseVariableIdentifier();var D=this.finalize(S,new d.Identifier(E.value));if(this.match("=")){m.push(E),_=!0,this.nextToken();var b=this.parseAssignmentExpression();C=this.finalize(this.startNode(E),new d.AssignmentPattern(D,b))}else this.match(":")?(this.expect(":"),C=this.parsePatternWithDefault(m,y)):(m.push(E),_=!0,C=D)}else T=this.match("["),w=this.parseObjectPropertyKey(),this.expect(":"),C=this.parsePatternWithDefault(m,y);return this.finalize(S,new d.Property("init",w,T,C,!1,_))},x.prototype.parseObjectPattern=function(m,y){var w=this.createNode(),C=[];for(this.expect("{");!this.match("}");)C.push(this.parsePropertyPattern(m,y)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(w,new d.ObjectPattern(C))},x.prototype.parsePattern=function(m,y){var w;return this.match("[")?w=this.parseArrayPattern(m,y):this.match("{")?w=this.parseObjectPattern(m,y):(!this.matchKeyword("let")||y!=="const"&&y!=="let"||this.tolerateUnexpectedToken(this.lookahead,u.Messages.LetInLexicalBinding),m.push(this.lookahead),w=this.parseVariableIdentifier(y)),w},x.prototype.parsePatternWithDefault=function(m,y){var w=this.lookahead,C=this.parsePattern(m,y);if(this.match("=")){this.nextToken();var S=this.context.allowYield;this.context.allowYield=!0;var T=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=S,C=this.finalize(this.startNode(w),new d.AssignmentPattern(C,T))}return C},x.prototype.parseVariableIdentifier=function(m){var y=this.createNode(),w=this.nextToken();return w.type===4&&w.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(w,u.Messages.StrictReservedWord):this.context.allowYield||this.throwUnexpectedToken(w):w.type!==3?this.context.strict&&w.type===4&&this.scanner.isStrictModeReservedWord(w.value)?this.tolerateUnexpectedToken(w,u.Messages.StrictReservedWord):(this.context.strict||w.value!=="let"||m!=="var")&&this.throwUnexpectedToken(w):(this.context.isModule||this.context.await)&&w.type===3&&w.value==="await"&&this.tolerateUnexpectedToken(w),this.finalize(y,new d.Identifier(w.value))},x.prototype.parseVariableDeclaration=function(m){var y=this.createNode(),w=this.parsePattern([],"var");this.context.strict&&w.type===g.Syntax.Identifier&&this.scanner.isRestrictedWord(w.name)&&this.tolerateError(u.Messages.StrictVarName);var C=null;return this.match("=")?(this.nextToken(),C=this.isolateCoverGrammar(this.parseAssignmentExpression)):w.type===g.Syntax.Identifier||m.inFor||this.expect("="),this.finalize(y,new d.VariableDeclarator(w,C))},x.prototype.parseVariableDeclarationList=function(m){var y={inFor:m.inFor},w=[];for(w.push(this.parseVariableDeclaration(y));this.match(",");)this.nextToken(),w.push(this.parseVariableDeclaration(y));return w},x.prototype.parseVariableStatement=function(){var m=this.createNode();this.expectKeyword("var");var y=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(m,new d.VariableDeclaration(y,"var"))},x.prototype.parseEmptyStatement=function(){var m=this.createNode();return this.expect(";"),this.finalize(m,new d.EmptyStatement)},x.prototype.parseExpressionStatement=function(){var m=this.createNode(),y=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ExpressionStatement(y))},x.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(u.Messages.StrictFunction),this.parseStatement()},x.prototype.parseIfStatement=function(){var m,y=this.createNode(),w=null;this.expectKeyword("if"),this.expect("(");var C=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),m=this.finalize(this.createNode(),new d.EmptyStatement)):(this.expect(")"),m=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),w=this.parseIfClause())),this.finalize(y,new d.IfStatement(C,m,w))},x.prototype.parseDoWhileStatement=function(){var m=this.createNode();this.expectKeyword("do");var y=this.context.inIteration;this.context.inIteration=!0;var w=this.parseStatement();this.context.inIteration=y,this.expectKeyword("while"),this.expect("(");var C=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(m,new d.DoWhileStatement(w,C))},x.prototype.parseWhileStatement=function(){var m,y=this.createNode();this.expectKeyword("while"),this.expect("(");var w=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),m=this.finalize(this.createNode(),new d.EmptyStatement);else{this.expect(")");var C=this.context.inIteration;this.context.inIteration=!0,m=this.parseStatement(),this.context.inIteration=C}return this.finalize(y,new d.WhileStatement(w,m))},x.prototype.parseForStatement=function(){var m,y,w,C=null,S=null,T=null,_=!0,E=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){C=this.createNode(),this.nextToken();var D=this.context.allowIn;this.context.allowIn=!1;var b=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=D,b.length===1&&this.matchKeyword("in")){var I=b[0];I.init&&(I.id.type===g.Syntax.ArrayPattern||I.id.type===g.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(u.Messages.ForInOfLoopInitializer,"for-in"),C=this.finalize(C,new d.VariableDeclaration(b,"var")),this.nextToken(),m=C,y=this.parseExpression(),C=null}else b.length===1&&b[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(b,"var")),this.nextToken(),m=C,y=this.parseAssignmentExpression(),C=null,_=!1):(C=this.finalize(C,new d.VariableDeclaration(b,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){C=this.createNode();var R=this.nextToken().value;this.context.strict||this.lookahead.value!=="in"?(D=this.context.allowIn,this.context.allowIn=!1,b=this.parseBindingList(R,{inFor:!0}),this.context.allowIn=D,b.length===1&&b[0].init===null&&this.matchKeyword("in")?(C=this.finalize(C,new d.VariableDeclaration(b,R)),this.nextToken(),m=C,y=this.parseExpression(),C=null):b.length===1&&b[0].init===null&&this.matchContextualKeyword("of")?(C=this.finalize(C,new d.VariableDeclaration(b,R)),this.nextToken(),m=C,y=this.parseAssignmentExpression(),C=null,_=!1):(this.consumeSemicolon(),C=this.finalize(C,new d.VariableDeclaration(b,R)))):(C=this.finalize(C,new d.Identifier(R)),this.nextToken(),m=C,y=this.parseExpression(),C=null)}else{var M=this.lookahead;if(D=this.context.allowIn,this.context.allowIn=!1,C=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=D,this.matchKeyword("in"))this.context.isAssignmentTarget&&C.type!==g.Syntax.AssignmentExpression||this.tolerateError(u.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(C),m=C,y=this.parseExpression(),C=null;else if(this.matchContextualKeyword("of"))this.context.isAssignmentTarget&&C.type!==g.Syntax.AssignmentExpression||this.tolerateError(u.Messages.InvalidLHSInForLoop),this.nextToken(),this.reinterpretExpressionAsPattern(C),m=C,y=this.parseAssignmentExpression(),C=null,_=!1;else{if(this.match(",")){for(var L=[C];this.match(",");)this.nextToken(),L.push(this.isolateCoverGrammar(this.parseAssignmentExpression));C=this.finalize(this.startNode(M),new d.SequenceExpression(L))}this.expect(";")}}if(m===void 0&&(this.match(";")||(S=this.parseExpression()),this.expect(";"),this.match(")")||(T=this.parseExpression())),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),w=this.finalize(this.createNode(),new d.EmptyStatement);else{this.expect(")");var A=this.context.inIteration;this.context.inIteration=!0,w=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=A}return m===void 0?this.finalize(E,new d.ForStatement(C,S,T,w)):_?this.finalize(E,new d.ForInStatement(m,y,w)):this.finalize(E,new d.ForOfStatement(m,y,w))},x.prototype.parseContinueStatement=function(){var m=this.createNode();this.expectKeyword("continue");var y=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var w=this.parseVariableIdentifier();y=w;var C="$"+w.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,w.name)}return this.consumeSemicolon(),y!==null||this.context.inIteration||this.throwError(u.Messages.IllegalContinue),this.finalize(m,new d.ContinueStatement(y))},x.prototype.parseBreakStatement=function(){var m=this.createNode();this.expectKeyword("break");var y=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var w=this.parseVariableIdentifier(),C="$"+w.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,C)||this.throwError(u.Messages.UnknownLabel,w.name),y=w}return this.consumeSemicolon(),y!==null||this.context.inIteration||this.context.inSwitch||this.throwError(u.Messages.IllegalBreak),this.finalize(m,new d.BreakStatement(y))},x.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(u.Messages.IllegalReturn);var m=this.createNode();this.expectKeyword("return");var y=(this.match(";")||this.match("}")||this.hasLineTerminator||this.lookahead.type===2)&&this.lookahead.type!==8&&this.lookahead.type!==10?null:this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ReturnStatement(y))},x.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(u.Messages.StrictModeWith);var m,y=this.createNode();this.expectKeyword("with"),this.expect("(");var w=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),m=this.finalize(this.createNode(),new d.EmptyStatement)):(this.expect(")"),m=this.parseStatement()),this.finalize(y,new d.WithStatement(w,m))},x.prototype.parseSwitchCase=function(){var m,y=this.createNode();this.matchKeyword("default")?(this.nextToken(),m=null):(this.expectKeyword("case"),m=this.parseExpression()),this.expect(":");for(var w=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)w.push(this.parseStatementListItem());return this.finalize(y,new d.SwitchCase(m,w))},x.prototype.parseSwitchStatement=function(){var m=this.createNode();this.expectKeyword("switch"),this.expect("(");var y=this.parseExpression();this.expect(")");var w=this.context.inSwitch;this.context.inSwitch=!0;var C=[],S=!1;for(this.expect("{");!this.match("}");){var T=this.parseSwitchCase();T.test===null&&(S&&this.throwError(u.Messages.MultipleDefaultsInSwitch),S=!0),C.push(T)}return this.expect("}"),this.context.inSwitch=w,this.finalize(m,new d.SwitchStatement(y,C))},x.prototype.parseLabelledStatement=function(){var m,y=this.createNode(),w=this.parseExpression();if(w.type===g.Syntax.Identifier&&this.match(":")){this.nextToken();var C=w,S="$"+C.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,S)&&this.throwError(u.Messages.Redeclaration,"Label",C.name),this.context.labelSet[S]=!0;var T=void 0;if(this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),T=this.parseClassDeclaration();else if(this.matchKeyword("function")){var _=this.lookahead,E=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(_,u.Messages.StrictFunction):E.generator&&this.tolerateUnexpectedToken(_,u.Messages.GeneratorInLegacyContext),T=E}else T=this.parseStatement();delete this.context.labelSet[S],m=new d.LabeledStatement(C,T)}else this.consumeSemicolon(),m=new d.ExpressionStatement(w);return this.finalize(y,m)},x.prototype.parseThrowStatement=function(){var m=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(u.Messages.NewlineAfterThrow);var y=this.parseExpression();return this.consumeSemicolon(),this.finalize(m,new d.ThrowStatement(y))},x.prototype.parseCatchClause=function(){var m=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var y=[],w=this.parsePattern(y),C={},S=0;S0&&this.tolerateError(u.Messages.BadGetterArity);var C=this.parsePropertyMethod(w);return this.context.allowYield=y,this.finalize(m,new d.FunctionExpression(null,w.params,C,!1))},x.prototype.parseSetterMethod=function(){var m=this.createNode(),y=this.context.allowYield;this.context.allowYield=!0;var w=this.parseFormalParameters();w.params.length!==1?this.tolerateError(u.Messages.BadSetterArity):w.params[0]instanceof d.RestElement&&this.tolerateError(u.Messages.BadSetterRestParameter);var C=this.parsePropertyMethod(w);return this.context.allowYield=y,this.finalize(m,new d.FunctionExpression(null,w.params,C,!1))},x.prototype.parseGeneratorMethod=function(){var m=this.createNode(),y=this.context.allowYield;this.context.allowYield=!0;var w=this.parseFormalParameters();this.context.allowYield=!1;var C=this.parsePropertyMethod(w);return this.context.allowYield=y,this.finalize(m,new d.FunctionExpression(null,w.params,C,!0))},x.prototype.isStartOfExpression=function(){var m=!0,y=this.lookahead.value;switch(this.lookahead.type){case 7:m=y==="["||y==="("||y==="{"||y==="+"||y==="-"||y==="!"||y==="~"||y==="++"||y==="--"||y==="/"||y==="/=";break;case 4:m=y==="class"||y==="delete"||y==="function"||y==="let"||y==="new"||y==="super"||y==="this"||y==="typeof"||y==="void"||y==="yield"}return m},x.prototype.parseYieldExpression=function(){var m=this.createNode();this.expectKeyword("yield");var y=null,w=!1;if(!this.hasLineTerminator){var C=this.context.allowYield;this.context.allowYield=!1,(w=this.match("*"))?(this.nextToken(),y=this.parseAssignmentExpression()):this.isStartOfExpression()&&(y=this.parseAssignmentExpression()),this.context.allowYield=C}return this.finalize(m,new d.YieldExpression(y,w))},x.prototype.parseClassElement=function(m){var y=this.lookahead,w=this.createNode(),C="",S=null,T=null,_=!1,E=!1,D=!1,b=!1;if(this.match("*"))this.nextToken();else if(_=this.match("["),(S=this.parseObjectPropertyKey()).name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(y=this.lookahead,D=!0,_=this.match("["),this.match("*")?this.nextToken():S=this.parseObjectPropertyKey()),y.type===3&&!this.hasLineTerminator&&y.value==="async"){var I=this.lookahead.value;I!==":"&&I!=="("&&I!=="*"&&(b=!0,y=this.lookahead,S=this.parseObjectPropertyKey(),y.type===3&&y.value==="constructor"&&this.tolerateUnexpectedToken(y,u.Messages.ConstructorIsAsync))}var R=this.qualifiedPropertyName(this.lookahead);return y.type===3?y.value==="get"&&R?(C="get",_=this.match("["),S=this.parseObjectPropertyKey(),this.context.allowYield=!1,T=this.parseGetterMethod()):y.value==="set"&&R&&(C="set",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseSetterMethod()):y.type===7&&y.value==="*"&&R&&(C="init",_=this.match("["),S=this.parseObjectPropertyKey(),T=this.parseGeneratorMethod(),E=!0),!C&&S&&this.match("(")&&(C="init",T=b?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0),C||this.throwUnexpectedToken(this.lookahead),C==="init"&&(C="method"),_||(D&&this.isPropertyKey(S,"prototype")&&this.throwUnexpectedToken(y,u.Messages.StaticPrototype),!D&&this.isPropertyKey(S,"constructor")&&((C!=="method"||!E||T&&T.generator)&&this.throwUnexpectedToken(y,u.Messages.ConstructorSpecialMethod),m.value?this.throwUnexpectedToken(y,u.Messages.DuplicateConstructor):m.value=!0,C="constructor")),this.finalize(w,new d.MethodDefinition(S,_,T,C,D))},x.prototype.parseClassElementList=function(){var m=[],y={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():m.push(this.parseClassElement(y));return this.expect("}"),m},x.prototype.parseClassBody=function(){var m=this.createNode(),y=this.parseClassElementList();return this.finalize(m,new d.ClassBody(y))},x.prototype.parseClassDeclaration=function(m){var y=this.createNode(),w=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var C=m&&this.lookahead.type!==3?null:this.parseVariableIdentifier(),S=null;this.matchKeyword("extends")&&(this.nextToken(),S=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var T=this.parseClassBody();return this.context.strict=w,this.finalize(y,new d.ClassDeclaration(C,S,T))},x.prototype.parseClassExpression=function(){var m=this.createNode(),y=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var w=this.lookahead.type===3?this.parseVariableIdentifier():null,C=null;this.matchKeyword("extends")&&(this.nextToken(),C=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var S=this.parseClassBody();return this.context.strict=y,this.finalize(m,new d.ClassExpression(w,C,S))},x.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var m=this.createNode(),y=this.parseDirectivePrologues();this.lookahead.type!==2;)y.push(this.parseStatementListItem());return this.finalize(m,new d.Module(y))},x.prototype.parseScript=function(){for(var m=this.createNode(),y=this.parseDirectivePrologues();this.lookahead.type!==2;)y.push(this.parseStatementListItem());return this.finalize(m,new d.Script(y))},x.prototype.parseModuleSpecifier=function(){var m=this.createNode();this.lookahead.type!==8&&this.throwError(u.Messages.InvalidModuleSpecifier);var y=this.nextToken(),w=this.getTokenRaw(y);return this.finalize(m,new d.Literal(y.value,w))},x.prototype.parseImportSpecifier=function(){var m,y,w=this.createNode();return this.lookahead.type===3?(y=m=this.parseVariableIdentifier(),this.matchContextualKeyword("as")&&(this.nextToken(),y=this.parseVariableIdentifier())):(y=m=this.parseIdentifierName(),this.matchContextualKeyword("as")?(this.nextToken(),y=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(w,new d.ImportSpecifier(y,m))},x.prototype.parseNamedImports=function(){this.expect("{");for(var m=[];!this.match("}");)m.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),m},x.prototype.parseImportDefaultSpecifier=function(){var m=this.createNode(),y=this.parseIdentifierName();return this.finalize(m,new d.ImportDefaultSpecifier(y))},x.prototype.parseImportNamespaceSpecifier=function(){var m=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(u.Messages.NoAsAfterImportNamespace),this.nextToken();var y=this.parseIdentifierName();return this.finalize(m,new d.ImportNamespaceSpecifier(y))},x.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalImportDeclaration);var m,y=this.createNode();this.expectKeyword("import");var w=[];if(this.lookahead.type===8)m=this.parseModuleSpecifier();else{if(this.match("{")?w=w.concat(this.parseNamedImports()):this.match("*")?w.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(w.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?w.push(this.parseImportNamespaceSpecifier()):this.match("{")?w=w.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){var C=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause;this.throwError(C,this.lookahead.value)}this.nextToken(),m=this.parseModuleSpecifier()}return this.consumeSemicolon(),this.finalize(y,new d.ImportDeclaration(w,m))},x.prototype.parseExportSpecifier=function(){var m=this.createNode(),y=this.parseIdentifierName(),w=y;return this.matchContextualKeyword("as")&&(this.nextToken(),w=this.parseIdentifierName()),this.finalize(m,new d.ExportSpecifier(y,w))},x.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalExportDeclaration);var m,y=this.createNode();if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var w=this.parseFunctionDeclaration(!0);m=this.finalize(y,new d.ExportDefaultDeclaration(w))}else this.matchKeyword("class")?(w=this.parseClassDeclaration(!0),m=this.finalize(y,new d.ExportDefaultDeclaration(w))):this.matchContextualKeyword("async")?(w=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression(),m=this.finalize(y,new d.ExportDefaultDeclaration(w))):(this.matchContextualKeyword("from")&&this.throwError(u.Messages.UnexpectedToken,this.lookahead.value),w=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression(),this.consumeSemicolon(),m=this.finalize(y,new d.ExportDefaultDeclaration(w)));else if(this.match("*")){if(this.nextToken(),!this.matchContextualKeyword("from")){var C=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause;this.throwError(C,this.lookahead.value)}this.nextToken();var S=this.parseModuleSpecifier();this.consumeSemicolon(),m=this.finalize(y,new d.ExportAllDeclaration(S))}else if(this.lookahead.type===4){switch(w=void 0,this.lookahead.value){case"let":case"const":w=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":w=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}m=this.finalize(y,new d.ExportNamedDeclaration(w,[],null))}else if(this.matchAsyncFunction())w=this.parseFunctionDeclaration(),m=this.finalize(y,new d.ExportNamedDeclaration(w,[],null));else{var T=[],_=null,E=!1;for(this.expect("{");!this.match("}");)E=E||this.matchKeyword("default"),T.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");this.expect("}"),this.matchContextualKeyword("from")?(this.nextToken(),_=this.parseModuleSpecifier(),this.consumeSemicolon()):E?(C=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause,this.throwError(C,this.lookahead.value)):this.consumeSemicolon(),m=this.finalize(y,new d.ExportNamedDeclaration(null,T,_))}return m},x}();s.Parser=v},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.assert=function(c,l){if(!c)throw new Error("ASSERT: "+l)}},function(a,s){Object.defineProperty(s,"__esModule",{value:!0});var c=function(){function l(){this.errors=[],this.tolerant=!1}return l.prototype.recordError=function(f){this.errors.push(f)},l.prototype.tolerate=function(f){if(!this.tolerant)throw f;this.recordError(f)},l.prototype.constructError=function(f,u){var d=new Error(f);try{throw d}catch(h){Object.create&&Object.defineProperty&&(d=Object.create(h),Object.defineProperty(d,"column",{value:u}))}return d},l.prototype.createError=function(f,u,d,h){var g="Line "+u+": "+h,p=this.constructError(g,d);return p.index=f,p.lineNumber=u,p.description=h,p},l.prototype.throwError=function(f,u,d,h){throw this.createError(f,u,d,h)},l.prototype.tolerateError=function(f,u,d,h){var g=this.createError(f,u,d,h);if(!this.tolerant)throw g;this.recordError(g)},l}();s.ErrorHandler=c},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(9),f=c(4),u=c(11);function d(p){return"0123456789abcdef".indexOf(p.toLowerCase())}function h(p){return"01234567".indexOf(p)}var g=function(){function p(v,x){this.source=v,this.errorHandler=x,this.trackComment=!1,this.isModule=!1,this.length=v.length,this.index=0,this.lineNumber=v.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return p.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}},p.prototype.restoreState=function(v){this.index=v.index,this.lineNumber=v.lineNumber,this.lineStart=v.lineStart},p.prototype.eof=function(){return this.index>=this.length},p.prototype.throwUnexpectedToken=function(v){return v===void 0&&(v=u.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,v)},p.prototype.tolerateUnexpectedToken=function(v){v===void 0&&(v=u.Messages.UnexpectedTokenIllegal),this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,v)},p.prototype.skipSingleLineComment=function(v){var x,m,y=[];for(this.trackComment&&(y=[],x=this.index-v,m={start:{line:this.lineNumber,column:this.index-this.lineStart-v},end:{}});!this.eof();){var w=this.source.charCodeAt(this.index);if(++this.index,f.Character.isLineTerminator(w)){if(this.trackComment){m.end={line:this.lineNumber,column:this.index-this.lineStart-1};var C={multiLine:!1,slice:[x+v,this.index-1],range:[x,this.index-1],loc:m};y.push(C)}return w===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,y}}return this.trackComment&&(m.end={line:this.lineNumber,column:this.index-this.lineStart},C={multiLine:!1,slice:[x+v,this.index],range:[x,this.index],loc:m},y.push(C)),y},p.prototype.skipMultiLineComment=function(){var v,x,m=[];for(this.trackComment&&(m=[],v=this.index-2,x={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var y=this.source.charCodeAt(this.index);if(f.Character.isLineTerminator(y))y===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(y===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){x.end={line:this.lineNumber,column:this.index-this.lineStart};var w={multiLine:!0,slice:[v+2,this.index-2],range:[v,this.index],loc:x};m.push(w)}return m}++this.index}else++this.index}return this.trackComment&&(x.end={line:this.lineNumber,column:this.index-this.lineStart},w={multiLine:!0,slice:[v+2,this.index],range:[v,this.index],loc:x},m.push(w)),this.tolerateUnexpectedToken(),m},p.prototype.scanComments=function(){var v;this.trackComment&&(v=[]);for(var x=this.index===0;!this.eof();){var m=this.source.charCodeAt(this.index);if(f.Character.isWhiteSpace(m))++this.index;else if(f.Character.isLineTerminator(m))++this.index,m===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,x=!0;else if(m===47)if((m=this.source.charCodeAt(this.index+1))===47){this.index+=2;var y=this.skipSingleLineComment(2);this.trackComment&&(v=v.concat(y)),x=!0}else{if(m!==42)break;this.index+=2,y=this.skipMultiLineComment(),this.trackComment&&(v=v.concat(y))}else if(x&&m===45){if(this.source.charCodeAt(this.index+1)!==45||this.source.charCodeAt(this.index+2)!==62)break;this.index+=3,y=this.skipSingleLineComment(3),this.trackComment&&(v=v.concat(y))}else{if(m!==60||this.isModule||this.source.slice(this.index+1,this.index+4)!=="!--")break;this.index+=4,y=this.skipSingleLineComment(4),this.trackComment&&(v=v.concat(y))}}return v},p.prototype.isFutureReservedWord=function(v){switch(v){case"enum":case"export":case"import":case"super":return!0;default:return!1}},p.prototype.isStrictModeReservedWord=function(v){switch(v){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},p.prototype.isRestrictedWord=function(v){return v==="eval"||v==="arguments"},p.prototype.isKeyword=function(v){switch(v.length){case 2:return v==="if"||v==="in"||v==="do";case 3:return v==="var"||v==="for"||v==="new"||v==="try"||v==="let";case 4:return v==="this"||v==="else"||v==="case"||v==="void"||v==="with"||v==="enum";case 5:return v==="while"||v==="break"||v==="catch"||v==="throw"||v==="const"||v==="yield"||v==="class"||v==="super";case 6:return v==="return"||v==="typeof"||v==="delete"||v==="switch"||v==="export"||v==="import";case 7:return v==="default"||v==="finally"||v==="extends";case 8:return v==="function"||v==="continue"||v==="debugger";case 10:return v==="instanceof";default:return!1}},p.prototype.codePointAt=function(v){var x=this.source.charCodeAt(v);if(x>=55296&&x<=56319){var m=this.source.charCodeAt(v+1);m>=56320&&m<=57343&&(x=1024*(x-55296)+m-56320+65536)}return x},p.prototype.scanHexEscape=function(v){for(var x=v==="u"?4:2,m=0,y=0;y1114111||v!=="}")&&this.throwUnexpectedToken(),f.Character.fromCodePoint(x)},p.prototype.getIdentifier=function(){for(var v=this.index++;!this.eof();){var x=this.source.charCodeAt(this.index);if(x===92)return this.index=v,this.getComplexIdentifier();if(x>=55296&&x<57343)return this.index=v,this.getComplexIdentifier();if(!f.Character.isIdentifierPart(x))break;++this.index}return this.source.slice(v,this.index)},p.prototype.getComplexIdentifier=function(){var v,x=this.codePointAt(this.index),m=f.Character.fromCodePoint(x);for(this.index+=m.length,x===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,v=this.scanUnicodeCodePointEscape()):(v=this.scanHexEscape("u"))!==null&&v!=="\\"&&f.Character.isIdentifierStart(v.charCodeAt(0))||this.throwUnexpectedToken(),m=v);!this.eof()&&(x=this.codePointAt(this.index),f.Character.isIdentifierPart(x));)m+=v=f.Character.fromCodePoint(x),this.index+=v.length,x===92&&(m=m.substr(0,m.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,v=this.scanUnicodeCodePointEscape()):(v=this.scanHexEscape("u"))!==null&&v!=="\\"&&f.Character.isIdentifierPart(v.charCodeAt(0))||this.throwUnexpectedToken(),m+=v);return m},p.prototype.octalToDecimal=function(v){var x=v!=="0",m=h(v);return!this.eof()&&f.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(x=!0,m=8*m+h(this.source[this.index++]),"0123".indexOf(v)>=0&&!this.eof()&&f.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(m=8*m+h(this.source[this.index++]))),{code:m,octal:x}},p.prototype.scanIdentifier=function(){var v,x=this.index,m=this.source.charCodeAt(x)===92?this.getComplexIdentifier():this.getIdentifier();if((v=m.length===1?3:this.isKeyword(m)?4:m==="null"?5:m==="true"||m==="false"?1:3)!=3&&x+m.length!==this.index){var y=this.index;this.index=x,this.tolerateUnexpectedToken(u.Messages.InvalidEscapedReservedWord),this.index=y}return{type:v,value:m,lineNumber:this.lineNumber,lineStart:this.lineStart,start:x,end:this.index}},p.prototype.scanPunctuator=function(){var v=this.index,x=this.source[this.index];switch(x){case"(":case"{":x==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,x="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:(x=this.source.substr(this.index,4))===">>>="?this.index+=4:(x=x.substr(0,3))==="==="||x==="!=="||x===">>>"||x==="<<="||x===">>="||x==="**="?this.index+=3:(x=x.substr(0,2))==="&&"||x==="||"||x==="=="||x==="!="||x==="+="||x==="-="||x==="*="||x==="/="||x==="++"||x==="--"||x==="<<"||x===">>"||x==="&="||x==="|="||x==="^="||x==="%="||x==="<="||x===">="||x==="=>"||x==="**"?this.index+=2:(x=this.source[this.index],"<>=!+-*%&|^/".indexOf(x)>=0&&++this.index)}return this.index===v&&this.throwUnexpectedToken(),{type:7,value:x,lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanHexLiteral=function(v){for(var x="";!this.eof()&&f.Character.isHexDigit(this.source.charCodeAt(this.index));)x+=this.source[this.index++];return x.length===0&&this.throwUnexpectedToken(),f.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+x,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanBinaryLiteral=function(v){for(var x,m="";!this.eof()&&((x=this.source[this.index])==="0"||x==="1");)m+=this.source[this.index++];return m.length===0&&this.throwUnexpectedToken(),this.eof()||(x=this.source.charCodeAt(this.index),(f.Character.isIdentifierStart(x)||f.Character.isDecimalDigit(x))&&this.throwUnexpectedToken()),{type:6,value:parseInt(m,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:v,end:this.index}},p.prototype.scanOctalLiteral=function(v,x){var m="",y=!1;for(f.Character.isOctalDigit(v.charCodeAt(0))?(y=!0,m="0"+this.source[this.index++]):++this.index;!this.eof()&&f.Character.isOctalDigit(this.source.charCodeAt(this.index));)m+=this.source[this.index++];return y||m.length!==0||this.throwUnexpectedToken(),(f.Character.isIdentifierStart(this.source.charCodeAt(this.index))||f.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(m,8),octal:y,lineNumber:this.lineNumber,lineStart:this.lineStart,start:x,end:this.index}},p.prototype.isImplicitOctalLiteral=function(){for(var v=this.index+1;v=0&&(m=m.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(w,C,S){var T=parseInt(C||S,16);return T>1114111&&y.throwUnexpectedToken(u.Messages.InvalidRegExp),T<=65535?String.fromCharCode(T):"￿"}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"￿"));try{RegExp(m)}catch{this.throwUnexpectedToken(u.Messages.InvalidRegExp)}try{return new RegExp(v,x)}catch{return null}},p.prototype.scanRegExpBody=function(){var v=this.source[this.index];l.assert(v==="/","Regular expression literal must start with a slash");for(var x=this.source[this.index++],m=!1,y=!1;!this.eof();)if(x+=v=this.source[this.index++],v==="\\")v=this.source[this.index++],f.Character.isLineTerminator(v.charCodeAt(0))&&this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),x+=v;else if(f.Character.isLineTerminator(v.charCodeAt(0)))this.throwUnexpectedToken(u.Messages.UnterminatedRegExp);else if(m)v==="]"&&(m=!1);else{if(v==="/"){y=!0;break}v==="["&&(m=!0)}return y||this.throwUnexpectedToken(u.Messages.UnterminatedRegExp),x.substr(1,x.length-2)},p.prototype.scanRegExpFlags=function(){for(var v="";!this.eof();){var x=this.source[this.index];if(!f.Character.isIdentifierPart(x.charCodeAt(0)))break;if(++this.index,x!=="\\"||this.eof())v+=x;else if((x=this.source[this.index])==="u"){++this.index;var m=this.index,y=this.scanHexEscape("u");if(y!==null)for(v+=y;m=55296&&v<57343&&f.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},p}();s.Scanner=g},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.TokenName={},s.TokenName[1]="Boolean",s.TokenName[2]="",s.TokenName[3]="Identifier",s.TokenName[4]="Keyword",s.TokenName[5]="Null",s.TokenName[6]="Numeric",s.TokenName[7]="Punctuator",s.TokenName[8]="String",s.TokenName[9]="RegularExpression",s.TokenName[10]="Template"},function(a,s){Object.defineProperty(s,"__esModule",{value:!0}),s.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(a,s,c){Object.defineProperty(s,"__esModule",{value:!0});var l=c(10),f=c(12),u=c(13),d=function(){function g(){this.values=[],this.curly=this.paren=-1}return g.prototype.beforeFunctionExpression=function(p){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(p)>=0},g.prototype.isRegexStart=function(){var p=this.values[this.values.length-1],v=p!==null;switch(p){case"this":case"]":v=!1;break;case")":var x=this.values[this.paren-1];v=x==="if"||x==="while"||x==="for"||x==="with";break;case"}":if(v=!1,this.values[this.curly-3]==="function")v=!!(m=this.values[this.curly-4])&&!this.beforeFunctionExpression(m);else if(this.values[this.curly-4]==="function"){var m;v=!(m=this.values[this.curly-5])||!this.beforeFunctionExpression(m)}}return v},g.prototype.push=function(p){p.type===7||p.type===4?(p.value==="{"?this.curly=this.values.length:p.value==="("&&(this.paren=this.values.length),this.values.push(p.value)):this.values.push(null)},g}(),h=function(){function g(p,v){this.errorHandler=new l.ErrorHandler,this.errorHandler.tolerant=!!v&&typeof v.tolerant=="boolean"&&v.tolerant,this.scanner=new f.Scanner(p,this.errorHandler),this.scanner.trackComment=!!v&&typeof v.comment=="boolean"&&v.comment,this.trackRange=!!v&&typeof v.range=="boolean"&&v.range,this.trackLoc=!!v&&typeof v.loc=="boolean"&&v.loc,this.buffer=[],this.reader=new d}return g.prototype.errors=function(){return this.errorHandler.errors},g.prototype.getNextToken=function(){if(this.buffer.length===0){var p=this.scanner.scanComments();if(this.scanner.trackComment)for(var v=0;v0?M.charCodeAt(N-1):null,de=de&&y(V,$)}else{for(N=0;NG&&M[ee+1]!==" ",ee=N);else if(!m(V))return 5;$=N>0?M.charCodeAt(N-1):null,de=de&&y(V,$)}ne=ne||Q&&N-ee-1>G&&M[ee+1]!==" "}return Y||ne?A>9&&w(M)?5:ne?4:3:de&&!P(M)?1:2}function S(M,L,A,G){M.dump=function(){if(L.length===0)return"''";if(!M.noCompatMode&&d.indexOf(L)!==-1)return"'"+L+"'";var P=M.indent*Math.max(1,A),N=M.lineWidth===-1?-1:Math.max(Math.min(M.lineWidth,40),M.lineWidth-P),V=G||M.flowLevel>-1&&A>=M.flowLevel;switch(C(L,V,M.indent,N,function($){return function(H,Y){var ne,Q;for(ne=0,Q=H.implicitTypes.length;ne"+T(L,M.indent)+_(p(function($,H){for(var Y,ne,Q=/(\n+)([^\n]*)/g,ee=(fe=$.indexOf(` -`),fe=fe!==-1?fe:$.length,Q.lastIndex=fe,E($.slice(0,fe),H)),de=$[0]===` -`||$[0]===" ",fe;ne=Q.exec($);){var le=ne[1],k=ne[2];Y=k[0]===" ",ee+=le+(de||Y||k===""?"":` -`)+E(k,H),de=Y}return ee}(L,N),P));case 5:return'"'+function($){for(var H,Y,ne,Q="",ee=0;ee<$.length;ee++)(H=$.charCodeAt(ee))>=55296&&H<=56319&&(Y=$.charCodeAt(ee+1))>=56320&&Y<=57343?(Q+=h(1024*(H-55296)+Y-56320+65536),ee++):(ne=u[H],Q+=!ne&&m(H)?$[ee]:ne||h(H));return Q}(L)+'"';default:throw new a("impossible error: invalid scalar style")}}()}function T(M,L){var A=w(M)?String(L):"",G=M[M.length-1]===` -`;return A+(G&&(M[M.length-2]===` -`||M===` -`)?"+":G?"":"-")+` -`}function _(M){return M[M.length-1]===` -`?M.slice(0,-1):M}function E(M,L){if(M===""||M[0]===" ")return M;for(var A,G,P=/ [^ ]/g,N=0,V=0,$=0,H="";A=P.exec(M);)($=A.index)-N>L&&(G=V>N?V:$,H+=` -`+M.slice(N,G),N=G+1),V=$;return H+=` -`,M.length-N>L&&V>N?H+=M.slice(N,V)+` -`+M.slice(V+1):H+=M.slice(N),H.slice(1)}function D(M,L,A){var G,P,N,V,$,H;for(N=0,V=(P=A?M.explicitTypes:M.implicitTypes).length;N tag resolver accepts not "'+H+'" style');G=$.represent[H](L,H)}M.dump=G}return!0}return!1}function b(M,L,A,G,P,N){M.tag=null,M.dump=A,D(M,A,!1)||D(M,A,!0);var V=l.call(M.dump);G&&(G=M.flowLevel<0||M.flowLevel>L);var $,H,Y=V==="[object Object]"||V==="[object Array]";if(Y&&(H=($=M.duplicates.indexOf(A))!==-1),(M.tag!==null&&M.tag!=="?"||H||M.indent!==2&&L>0)&&(P=!1),H&&M.usedDuplicates[$])M.dump="*ref_"+$;else{if(Y&&H&&!M.usedDuplicates[$]&&(M.usedDuplicates[$]=!0),V==="[object Object]")G&&Object.keys(M.dump).length!==0?(function(Q,ee,de,fe){var le,k,O,B,U,z,j="",K=Q.tag,ae=Object.keys(de);if(Q.sortKeys===!0)ae.sort();else if(typeof Q.sortKeys=="function")ae.sort(Q.sortKeys);else if(Q.sortKeys)throw new a("sortKeys must be a boolean or a function");for(le=0,k=ae.length;le1024)&&(Q.dump&&Q.dump.charCodeAt(0)===10?z+="?":z+="? "),z+=Q.dump,U&&(z+=v(Q,ee)),b(Q,ee+1,B,!0,U)&&(Q.dump&&Q.dump.charCodeAt(0)===10?z+=":":z+=": ",j+=z+=Q.dump));Q.tag=K,Q.dump=j||"{}"}(M,L,M.dump,P),H&&(M.dump="&ref_"+$+M.dump)):(function(Q,ee,de){var fe,le,k,O,B,U="",z=Q.tag,j=Object.keys(de);for(fe=0,le=j.length;fe1024&&(B+="? "),B+=Q.dump+(Q.condenseFlow?'"':"")+":"+(Q.condenseFlow?"":" "),b(Q,ee,O,!1,!1)&&(U+=B+=Q.dump));Q.tag=z,Q.dump="{"+U+"}"}(M,L,M.dump),H&&(M.dump="&ref_"+$+" "+M.dump));else if(V==="[object Array]"){var ne=M.noArrayIndent&&L>0?L-1:L;G&&M.dump.length!==0?(function(Q,ee,de,fe){var le,k,O="",B=Q.tag;for(le=0,k=de.length;le "+M.dump)}return!0}function I(M,L){var A,G,P=[],N=[];for(function V($,H,Y){var ne,Q,ee;if($!==null&&typeof $=="object")if((Q=H.indexOf($))!==-1)Y.indexOf(Q)===-1&&Y.push(Q);else if(H.push($),Array.isArray($))for(Q=0,ee=$.length;Q=C.length&&(C=void 0),{value:C&&C[_++],done:!C}}};throw new TypeError(S?"Object is not iterable.":"Symbol.iterator is not defined.")},c=this&&this.__read||function(C,S){var T=typeof Symbol=="function"&&C[Symbol.iterator];if(!T)return C;var _,E,D=T.call(C),b=[];try{for(;(S===void 0||S-- >0)&&!(_=D.next()).done;)b.push(_.value)}catch(I){E={error:I}}finally{try{_&&!_.done&&(T=D.return)&&T.call(D)}finally{if(E)throw E.error}}return b};Object.defineProperty(n,"__esModule",{value:!0});var l=i(91),f=i(1),u=i(183),d=i(0),h=i(7),g=i(95),p=i(69),v=i(3),x=i(305),m=i(306),y=i(307),w=function(C){function S(T,_){_===void 0&&(_=!1);var E=C.call(this)||this;return E._hasDeclaration=!1,E._docTypeName="",E._hasDocumentElement=!1,E._currentElementSerialized=!1,E._openTags=[],E._ended=!1,E._fragment=_,E._options=f.applyDefaults(T||{},l.DefaultXMLBuilderCBOptions),E._builderOptions={defaultNamespace:E._options.defaultNamespace,namespaceAlias:E._options.namespaceAlias},E._options.format==="json"?E._writer=new m.JSONCBWriter(E._options):E._options.format==="yaml"?E._writer=new y.YAMLCBWriter(E._options):E._writer=new x.XMLCBWriter(E._options),E._options.data!==void 0&&E.on("data",E._options.data),E._options.end!==void 0&&E.on("end",E._options.end),E._options.error!==void 0&&E.on("error",E._options.error),E._prefixMap=new g.NamespacePrefixMap,E._prefixMap.set("xml",h.namespace.XML),E._prefixIndex={value:1},E._push(E._writer.frontMatter()),E}return a(S,C),S.prototype.ele=function(T,_,E){var D,b;if(f.isObject(T)||f.isString(T)&&(/^\s*/g,">");return this._push(this._writer.text(E)),this},S.prototype.ins=function(T,_){var E;_===void 0&&(_=""),this._serializeOpenTag(!0);try{E=u.fragment(this._builderOptions).ins(T,_).first().node}catch(D){return this.emit("error",D),this}return this._options.wellFormed&&(E.target.indexOf(":")!==-1||/^xml$/i.test(E.target))?(this.emit("error",new Error("Processing instruction target contains invalid characters (well-formed required).")),this):this._options.wellFormed&&!d.xml_isLegalChar(E.data)?(this.emit("error",Error("Processing instruction data contains invalid characters (well-formed required).")),this):(this._push(this._writer.instruction(E.target,E.data)),this)},S.prototype.dat=function(T){var _;this._serializeOpenTag(!0);try{_=u.fragment(this._builderOptions).dat(T).first().node}catch(E){return this.emit("error",E),this}return this._push(this._writer.cdata(_.data)),this},S.prototype.dec=function(T){return T===void 0&&(T={version:"1.0"}),this._fragment?(this.emit("error",Error("Cannot insert an XML declaration into a document fragment.")),this):this._hasDeclaration?(this.emit("error",Error("XML declaration is already inserted.")),this):(this._push(this._writer.declaration(T.version||"1.0",T.encoding,T.standalone)),this._hasDeclaration=!0,this)},S.prototype.dtd=function(T){if(this._fragment)return this.emit("error",Error("Cannot insert a DocType declaration into a document fragment.")),this;if(this._docTypeName!=="")return this.emit("error",new Error("DocType declaration is already inserted.")),this;if(this._hasDocumentElement)return this.emit("error",new Error("Cannot insert DocType declaration after document element.")),this;var _;try{_=u.create().dtd(T).first().node}catch(E){return this.emit("error",E),this}return this._options.wellFormed&&!d.xml_isPubidChar(_.publicId)?(this.emit("error",new Error("DocType public identifier does not match PubidChar construct (well-formed required).")),this):this._options.wellFormed&&(!d.xml_isLegalChar(_.systemId)||_.systemId.indexOf('"')!==-1&&_.systemId.indexOf("'")!==-1)?(this.emit("error",new Error("DocType system identifier contains invalid characters (well-formed required).")),this):(this._docTypeName=T.name,this._push(this._writer.docType(T.name,_.publicId,_.systemId)),this)},S.prototype.import=function(T){var _,E,D=u.fragment().set(this._options);try{D.import(T)}catch(M){return this.emit("error",M),this}try{for(var b=s(D.node.childNodes),I=b.next();!I.done;I=b.next()){var R=I.value;this._fromNode(R)}}catch(M){_={error:M}}finally{try{I&&!I.done&&(E=b.return)&&E.call(b)}finally{if(_)throw _.error}}return this},S.prototype.up=function(){return this._serializeOpenTag(!1),this._serializeCloseTag(),this},S.prototype.end=function(){for(this._serializeOpenTag(!1);this._openTags.length>0;)this._serializeCloseTag();return this._push(null),this},S.prototype._serializeOpenTag=function(T){if(!this._currentElementSerialized&&this._currentElement!==void 0){var _=this._currentElement.node;if(!this._options.wellFormed||_.localName.indexOf(":")===-1&&d.xml_isName(_.localName)){var E="",D=!1,b=this._prefixMap.copy(),I={},R=this._recordNamespaceInformation(_,b,I),M=this._openTags.length===0?null:this._openTags[this._openTags.length-1][1],L=_.namespaceURI;if(L===null&&(L=M),M===L)R!==null&&(D=!0),E=L===h.namespace.XML?"xml:"+_.localName:_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E));else{var A=_.prefix,G=null;if(A===null&&L===R||(G=b.get(A,L)),A==="xmlns"){if(this._options.wellFormed)return void this.emit("error",new Error("An element cannot have the 'xmlns' prefix (well-formed required)."));G=A}G!==null?(E=G+":"+_.localName,R!==null&&R!==h.namespace.XML&&(M=R||null),this._writer.beginElement(E),this._push(this._writer.openTagBegin(E))):A!==null?(A in I&&(A=this._generatePrefix(L,b,this._prefixIndex)),b.set(A,L),E+=A+":"+_.localName,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)),this._push(this._writer.attribute("xmlns:"+A,this._serializeAttributeValue(L,this._options.wellFormed))),R!==null&&(M=R||null)):R===null||R!==null&&R!==L?(D=!0,E+=_.localName,M=L,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)),this._push(this._writer.attribute("xmlns",this._serializeAttributeValue(L,this._options.wellFormed)))):(E+=_.localName,M=L,this._writer.beginElement(E),this._push(this._writer.openTagBegin(E)))}this._serializeAttributes(_,b,this._prefixIndex,I,D,this._options.wellFormed);var P=L===h.namespace.HTML;P&&!T&&S._VoidElementNames.has(_.localName)?(this._push(this._writer.openTagEnd(E,!0,!0)),this._writer.endElement(E)):P||T?this._push(this._writer.openTagEnd(E,!1,!1)):(this._push(this._writer.openTagEnd(E,!0,!1)),this._writer.endElement(E)),this._currentElementSerialized=!0,this._openTags.push([E,M,this._prefixMap,T]),this._isPrefixMapModified(this._prefixMap,b)&&(this._prefixMap=b),this._writer.level++}else this.emit("error",new Error("Node local name contains invalid characters (well-formed required)."))}},S.prototype._serializeCloseTag=function(){this._writer.level--;var T=this._openTags.pop();if(T!==void 0){var _=c(T,4),E=_[0],D=(_[1],_[2]),b=_[3];this._prefixMap=D,b&&(this._push(this._writer.closeTag(E)),this._writer.endElement(E))}else this.emit("error",new Error("Last element is undefined."))},S.prototype._push=function(T){T===null?(this._ended=!0,this.emit("end")):this._ended?this.emit("error",new Error("Cannot push to ended stream.")):T.length!==0&&(this._writer.hasData=!0,this.emit("data",T,this._writer.level))},S.prototype._fromNode=function(T){var _,E,D,b;if(v.Guard.isElementNode(T)){var I=T.prefix?T.prefix+":"+T.localName:T.localName;T.namespaceURI!==null?this.ele(T.namespaceURI,I):this.ele(I);try{for(var R=s(T.attributes),M=R.next();!M.done;M=R.next()){var L=M.value,A=L.prefix?L.prefix+":"+L.localName:L.localName;L.namespaceURI!==null?this.att(L.namespaceURI,A,L.value):this.att(A,L.value)}}catch(V){_={error:V}}finally{try{M&&!M.done&&(E=R.return)&&E.call(R)}finally{if(_)throw _.error}}try{for(var G=s(T.childNodes),P=G.next();!P.done;P=G.next()){var N=P.value;this._fromNode(N)}}catch(V){D={error:V}}finally{try{P&&!P.done&&(b=G.return)&&b.call(G)}finally{if(D)throw D.error}}this.up()}else v.Guard.isExclusiveTextNode(T)&&T.data?this.txt(T.data):v.Guard.isCommentNode(T)?this.com(T.data):v.Guard.isCDATASectionNode(T)?this.dat(T.data):v.Guard.isProcessingInstructionNode(T)&&this.ins(T.target,T.data)},S.prototype._serializeAttributes=function(T,_,E,D,b,I){var R,M,L=I?new p.LocalNameSet:void 0;try{for(var A=s(T.attributes),G=A.next();!G.done;G=A.next()){var P=G.value;if(I||b||P.namespaceURI!==null){if(I&&L&&L.has(P.namespaceURI,P.localName))return void this.emit("error",new Error("Element contains duplicate attributes (well-formed required)."));I&&L&&L.set(P.namespaceURI,P.localName);var N=P.namespaceURI,V=null;if(N!==null)if(V=_.get(P.prefix,N),N===h.namespace.XMLNS){if(P.value===h.namespace.XML||P.prefix===null&&b||P.prefix!==null&&(!(P.localName in D)||D[P.localName]!==P.value)&&_.has(P.localName,P.value))continue;if(I&&P.value===h.namespace.XMLNS)return void this.emit("error",new Error("XMLNS namespace is reserved (well-formed required)."));if(I&&P.value==="")return void this.emit("error",new Error("Namespace prefix declarations cannot be used to undeclare a namespace (well-formed required)."));P.prefix==="xmlns"&&(V="xmlns")}else V===null&&(V=P.prefix===null||_.hasPrefix(P.prefix)&&!_.has(P.prefix,N)?this._generatePrefix(N,_,E):P.prefix,this._push(this._writer.attribute("xmlns:"+V,this._serializeAttributeValue(N,this._options.wellFormed))));if(I&&(P.localName.indexOf(":")!==-1||!d.xml_isName(P.localName)||P.localName==="xmlns"&&N===null))return void this.emit("error",new Error("Attribute local name contains invalid characters (well-formed required)."));this._push(this._writer.attribute((V!==null?V+":":"")+P.localName,this._serializeAttributeValue(P.value,this._options.wellFormed)))}else this._push(this._writer.attribute(P.localName,this._serializeAttributeValue(P.value,this._options.wellFormed)))}}catch($){R={error:$}}finally{try{G&&!G.done&&(M=A.return)&&M.call(A)}finally{if(R)throw R.error}}},S.prototype._serializeAttributeValue=function(T,_){return _&&T!==null&&!d.xml_isLegalChar(T)?(this.emit("error",new Error("Invalid characters in attribute value.")),""):T===null?"":T.replace(/(?!&(lt|gt|amp|apos|quot);)&/g,"&").replace(//g,">").replace(/"/g,""")},S.prototype._recordNamespaceInformation=function(T,_,E){var D,b,I=null;try{for(var R=s(T.attributes),M=R.next();!M.done;M=R.next()){var L=M.value,A=L.namespaceURI,G=L.prefix;if(A===h.namespace.XMLNS){if(G===null){I=L.value;continue}var P=L.localName,N=L.value;if(N===h.namespace.XML||(N===""&&(N=null),_.has(P,N)))continue;_.set(P,N),E[P]=N||""}}}catch(V){D={error:V}}finally{try{M&&!M.done&&(b=R.return)&&b.call(R)}finally{if(D)throw D.error}}return I},S.prototype._generatePrefix=function(T,_,E){var D="ns"+E.value;return E.value++,_.set(D,T),D},S.prototype._isPrefixMapModified=function(T,_){var E=T._items,D=_._items,b=T._nullItems,I=_._nullItems;for(var R in D){var M=E[R];if(M===void 0)return!0;var L=D[R];if(M.length!==L.length)return!0;for(var A=0;A':u?"':d?"':""},l.prototype.comment=function(f){return this._beginLine()+""},l.prototype.text=function(f){return this._beginLine()+f},l.prototype.instruction=function(f,u){return u?this._beginLine()+"":this._beginLine()+""},l.prototype.cdata=function(f){return this._beginLine()+""},l.prototype.openTagBegin=function(f){return this._lineLength+=1+f.length,this._beginLine()+"<"+f},l.prototype.openTagEnd=function(f,u,d){return d?" />":u?this._writerOptions.allowEmptyTags?">":this._writerOptions.spaceBeforeSlash?" />":"/>":">"},l.prototype.closeTag=function(f){return this._beginLine()+""},l.prototype.attribute=function(f,u){var d=f+'="'+u+'"';return this._writerOptions.prettyPrint&&this._writerOptions.width>0&&this._lineLength+1+d.length>this._writerOptions.width?(d=this._beginLine()+this._indent(1)+d,this._lineLength=d.length,d):(this._lineLength+=1+d.length," "+d)},l.prototype.beginElement=function(f){},l.prototype.endElement=function(f){},l.prototype._beginLine=function(){if(this._writerOptions.prettyPrint){var f=(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level);return this._lineLength=f.length,f}return""},l.prototype._indent=function(f){return f<=0?"":this._writerOptions.indent.repeat(f)},l}(i(114).BaseCBWriter);n.XMLCBWriter=s},function(r,n,i){i(74);var o,a=this&&this.__extends||(o=function(c,l){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,u){f.__proto__=u}||function(f,u){for(var d in u)u.hasOwnProperty(d)&&(f[d]=u[d])})(c,l)},function(c,l){function f(){this.constructor=c}o(c,l),c.prototype=l===null?Object.create(l):(f.prototype=l.prototype,new f)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(c){function l(f){var u=c.call(this,f)||this;return u._hasChildren=[],u._additionalLevel=0,u}return a(l,c),l.prototype.frontMatter=function(){return""},l.prototype.declaration=function(f,u,d){return""},l.prototype.docType=function(f,u,d){return""},l.prototype.comment=function(f){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.comment)+this._sep()+this._val(f)+this._sep()+"}"},l.prototype.text=function(f){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.text)+this._sep()+this._val(f)+this._sep()+"}"},l.prototype.instruction=function(f,u){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.ins)+this._sep()+this._val(u?f+" "+u:f)+this._sep()+"}"},l.prototype.cdata=function(f){return this._comma()+this._beginLine()+"{"+this._sep()+this._key(this._builderOptions.convert.cdata)+this._sep()+this._val(f)+this._sep()+"}"},l.prototype.attribute=function(f,u){return this._comma()+this._beginLine(1)+"{"+this._sep()+this._key(this._builderOptions.convert.att+f)+this._sep()+this._val(u)+this._sep()+"}"},l.prototype.openTagBegin=function(f){var u=this._comma()+this._beginLine()+"{"+this._sep()+this._key(f)+this._sep()+"{";return this._additionalLevel++,this.hasData=!0,u+=this._beginLine()+this._key(this._builderOptions.convert.text)+this._sep()+"[",this._hasChildren.push(!1),u},l.prototype.openTagEnd=function(f,u,d){if(u){var h=this._sep()+"]";return this._additionalLevel--,h+=this._beginLine()+"}"+this._sep()+"}"}return""},l.prototype.closeTag=function(f){var u=this._beginLine()+"]";return this._additionalLevel--,u+=this._beginLine()+"}"+this._sep()+"}"},l.prototype.beginElement=function(f){},l.prototype.endElement=function(f){this._hasChildren.pop()},l.prototype._beginLine=function(f){return f===void 0&&(f=0),this._writerOptions.prettyPrint?(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level+f):""},l.prototype._indent=function(f){return f+this._additionalLevel<=0?"":this._writerOptions.indent.repeat(f+this._additionalLevel)},l.prototype._comma=function(){var f=this._hasChildren[this._hasChildren.length-1]?",":"";return this._hasChildren.length>0&&(this._hasChildren[this._hasChildren.length-1]=!0),f},l.prototype._sep=function(){return this._writerOptions.prettyPrint?" ":""},l.prototype._key=function(f){return'"'+f+'":'},l.prototype._val=function(f){return JSON.stringify(f)},l}(i(114).BaseCBWriter);n.JSONCBWriter=s},function(r,n,i){i(74);var o,a=this&&this.__extends||(o=function(c,l){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,u){f.__proto__=u}||function(f,u){for(var d in u)u.hasOwnProperty(d)&&(f[d]=u[d])})(c,l)},function(c,l){function f(){this.constructor=c}o(c,l),c.prototype=l===null?Object.create(l):(f.prototype=l.prototype,new f)});Object.defineProperty(n,"__esModule",{value:!0});var s=function(c){function l(f){var u=c.call(this,f)||this;if(u._rootWritten=!1,u._additionalLevel=0,f.indent.length<2)throw new Error("YAML indententation string must be at least two characters long.");if(f.offset<0)throw new Error("YAML offset should be zero or a positive number.");return u}return a(l,c),l.prototype.frontMatter=function(){return this._beginLine()+"---"},l.prototype.declaration=function(f,u,d){return""},l.prototype.docType=function(f,u,d){return""},l.prototype.comment=function(f){return this._beginLine()+this._key(this._builderOptions.convert.comment)+" "+this._val(f)},l.prototype.text=function(f){return this._beginLine()+this._key(this._builderOptions.convert.text)+" "+this._val(f)},l.prototype.instruction=function(f,u){return this._beginLine()+this._key(this._builderOptions.convert.ins)+" "+this._val(u?f+" "+u:f)},l.prototype.cdata=function(f){return this._beginLine()+this._key(this._builderOptions.convert.cdata)+" "+this._val(f)},l.prototype.attribute=function(f,u){this._additionalLevel++;var d=this._beginLine()+this._key(this._builderOptions.convert.att+f)+" "+this._val(u);return this._additionalLevel--,d},l.prototype.openTagBegin=function(f){var u=this._beginLine()+this._key(f);return this._rootWritten||(this._rootWritten=!0),this.hasData=!0,this._additionalLevel++,u+=this._beginLine(!0)+this._key(this._builderOptions.convert.text)},l.prototype.openTagEnd=function(f,u,d){return u?" "+this._val(""):""},l.prototype.closeTag=function(f){return this._additionalLevel--,""},l.prototype.beginElement=function(f){},l.prototype.endElement=function(f){},l.prototype._beginLine=function(f){return f===void 0&&(f=!1),(this.hasData?this._writerOptions.newline:"")+this._indent(this._writerOptions.offset+this.level,f)},l.prototype._indent=function(f,u){if(f+this._additionalLevel<=0)return"";var d=this._writerOptions.indent.repeat(f+this._additionalLevel);return!u&&this._rootWritten?d.substr(0,d.length-2)+"-"+d.substr(-1,1):d},l.prototype._key=function(f){return'"'+f+'":'},l.prototype._val=function(f){return JSON.stringify(f)},l}(i(114).BaseCBWriter);n.YAMLCBWriter=s},function(r,n,i){var o,a=typeof Reflect=="object"?Reflect:null,s=a&&typeof a.apply=="function"?a.apply:function(y,w,C){return Function.prototype.apply.call(y,w,C)};o=a&&typeof a.ownKeys=="function"?a.ownKeys:Object.getOwnPropertySymbols?function(y){return Object.getOwnPropertyNames(y).concat(Object.getOwnPropertySymbols(y))}:function(y){return Object.getOwnPropertyNames(y)};var c=Number.isNaN||function(y){return y!=y};function l(){l.init.call(this)}r.exports=l,l.EventEmitter=l,l.prototype._events=void 0,l.prototype._eventsCount=0,l.prototype._maxListeners=void 0;var f=10;function u(y){if(typeof y!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof y)}function d(y){return y._maxListeners===void 0?l.defaultMaxListeners:y._maxListeners}function h(y,w,C,S){var T,_,E,D;if(u(C),(_=y._events)===void 0?(_=y._events=Object.create(null),y._eventsCount=0):(_.newListener!==void 0&&(y.emit("newListener",w,C.listener?C.listener:C),_=y._events),E=_[w]),E===void 0)E=_[w]=C,++y._eventsCount;else if(typeof E=="function"?E=_[w]=S?[C,E]:[E,C]:S?E.unshift(C):E.push(C),(T=d(y))>0&&E.length>T&&!E.warned){E.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+E.length+" "+String(w)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=y,b.type=w,b.count=E.length,D=b,console&&console.warn&&console.warn(D)}return y}function g(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(y,w,C){var S={fired:!1,wrapFn:void 0,target:y,type:w,listener:C},T=g.bind(S);return T.listener=C,S.wrapFn=T,T}function v(y,w,C){var S=y._events;if(S===void 0)return[];var T=S[w];return T===void 0?[]:typeof T=="function"?C?[T.listener||T]:[T]:C?function(_){for(var E=new Array(_.length),D=0;D0&&(_=w[0]),_ instanceof Error)throw _;var E=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw E.context=_,E}var D=T[y];if(D===void 0)return!1;if(typeof D=="function")s(D,this,w);else{var b=D.length,I=m(D,b);for(C=0;C=0;_--)if(C[_]===w||C[_].listener===w){E=C[_].listener,T=_;break}if(T<0)return this;T===0?C.shift():function(D,b){for(;b+1=0;S--)this.removeListener(y,w[S]);return this},l.prototype.listeners=function(y){return v(this,y,!0)},l.prototype.rawListeners=function(y){return v(this,y,!1)},l.listenerCount=function(y,w){return typeof y.listenerCount=="function"?y.listenerCount(w):x.call(y,w)},l.prototype.listenerCount=x,l.prototype.eventNames=function(){return this._eventsCount>0?o(this._events):[]}},function(r,n,i){Object.defineProperty(n,"__esModule",{value:!0});var o=i(77);n.createCB=function(a){return new o.XMLBuilderCBImpl(a)},n.fragmentCB=function(a){return new o.XMLBuilderCBImpl(a,!0)}}])})})(qk);var rve=qk.exports,Li=Uint8Array,zc=Uint16Array,Xk=Uint32Array,Yk=new Li([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Jk=new Li([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ive=new Li([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Zk=function(t,e){for(var r=new zc(31),n=0;n<31;++n)r[n]=e+=1<>>1|(En&21845)<<1;hs=(hs&52428)>>>2|(hs&13107)<<2,hs=(hs&61680)>>>4|(hs&3855)<<4,j3[En]=((hs&65280)>>>8|(hs&255)<<8)>>>1}var id=function(t,e,r){for(var n=t.length,i=0,o=new zc(e);i>>c]=l}else for(s=new zc(n),i=0;i>>15-t[i]);return s},kh=new Li(288);for(var En=0;En<144;++En)kh[En]=8;for(var En=144;En<256;++En)kh[En]=9;for(var En=256;En<280;++En)kh[En]=7;for(var En=280;En<288;++En)kh[En]=8;var tV=new Li(32);for(var En=0;En<32;++En)tV[En]=5;var cve=id(kh,9,1),lve=id(tV,5,1),Ey=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},po=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(e&7)&r},Dy=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(e&7)},uve=function(t){return(t+7)/8|0},fve=function(t,e,r){(r==null||r>t.length)&&(r=t.length);var n=new(t.BYTES_PER_ELEMENT==2?zc:t.BYTES_PER_ELEMENT==4?Xk:Li)(r-e);return n.set(t.subarray(e,r)),n},dve=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Co=function(t,e,r){var n=new Error(e||dve[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,Co),!r)throw n;return n},OS=function(t,e,r){var n=t.length;if(!n||r&&r.f&&!r.l)return e||new Li(0);var i=!e||r,o=!r||r.i;r||(r={}),e||(e=new Li(n*3));var a=function(ee){var de=e.length;if(ee>de){var fe=new Li(Math.max(de*2,ee));fe.set(e),e=fe}},s=r.f||0,c=r.p||0,l=r.b||0,f=r.l,u=r.d,d=r.m,h=r.n,g=n*8;do{if(!f){s=po(t,c,1);var p=po(t,c+1,3);if(c+=3,p)if(p==1)f=cve,u=lve,d=9,h=5;else if(p==2){var y=po(t,c,31)+257,w=po(t,c+10,15)+4,C=y+po(t,c+5,31)+1;c+=14;for(var S=new Li(C),T=new Li(19),_=0;_>>4;if(v<16)S[_++]=v;else{var R=0,M=0;for(v==16?(M=3+po(t,c,3),c+=2,R=S[_-1]):v==17?(M=3+po(t,c,7),c+=3):v==18&&(M=11+po(t,c,127),c+=7);M--;)S[_++]=R}}var L=S.subarray(0,y),A=S.subarray(y);d=Ey(L),h=Ey(A),f=id(L,d,1),u=id(A,h,1)}else Co(1);else{var v=uve(c)+4,x=t[v-4]|t[v-3]<<8,m=v+x;if(m>n){o&&Co(0);break}i&&a(l+x),e.set(t.subarray(v,m),l),r.b=l+=x,r.p=c=m*8,r.f=s;continue}if(c>g){o&&Co(0);break}}i&&a(l+131072);for(var G=(1<>>4;if(c+=R&15,c>g){o&&Co(0);break}if(R||Co(2),V<256)e[l++]=V;else if(V==256){N=c,f=null;break}else{var $=V-254;if(V>264){var _=V-257,H=Yk[_];$=po(t,c,(1<>>4;Y||Co(3),c+=Y&15;var A=sve[ne];if(ne>3){var H=Jk[ne];A+=Dy(t,c)&(1<g){o&&Co(0);break}i&&a(l+131072);for(var Q=l+$;l>3&1)+(e>>4&1);n>0;n-=!t[r++]);return r+(e&2)},pve=function(t){var e=t.length;return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0},mve=function(t){((t[0]&15)!=8||t[0]>>>4>7||(t[0]<<8|t[1])%31)&&Co(6,"invalid zlib data"),t[1]&32&&Co(6,"invalid zlib data: preset dictionaries not supported")};function vve(t,e){return OS(t,e)}function yve(t,e){return OS(t.subarray(gve(t),-8),new Li(pve(t)))}function xve(t,e){return OS((mve(t),t.subarray(2,-4)),e)}function wve(t,e){return t[0]==31&&t[1]==139&&t[2]==8?yve(t):(t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31?vve(t,e):xve(t,e)}var Cve=typeof TextDecoder<"u"&&new TextDecoder,Sve=0;try{Cve.decode(hve,{stream:!0}),Sve=1}catch{}const MS={};function nV(t){return!!MS[t]}function Tve(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"http",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return MS[t](e)}function rV(t,e){MS[t]=e}var _ve={get:Tve,has:nV,registerType:rV};const Oi=[];Oi[45]=62;Oi[95]=63;const hu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0;t>16&255,n[f++]=l>>8&255,n[f++]=l&255}switch(a){case 3:for(;!Wo(t[c]);)c++;for(l=Oi[t.charCodeAt(c++)]<<10;!Wo(t[c]);)c++;for(l|=Oi[t.charCodeAt(c++)]<<4;!Wo(t[c]);)c++;l|=Oi[t.charCodeAt(c++)]>>2,n[f++]=l>>8&255,n[f++]=l&255;break;case 2:for(;!Wo(t[c]);)c++;for(l=Oi[t.charCodeAt(c++)]<<2;!Wo(t[c]);)c++;l|=Oi[t.charCodeAt(c++)]>>4,n[f++]=l&255;break;case 1:throw new Error("BASE64: remain 1 should not happen")}return f}function bve(t){const e=Eve(t),r=e[e.length-1].end+1,n=(4-r%4)%4,i=(r+n)*3/4-n,o=new ArrayBuffer(i),a=new Uint8Array(o);let s=0;for(let c=0;c>18]+hu[n>>12&63]+hu[n>>6&63]+hu[n&63]}function Ive(t){const e=new Uint8Array(t),r=t.byteLength%3,n=t.byteLength-r,i=Array(n/3);for(let o=0;o0){const o=BE(e[n],e[n+1]||0,e[n+2]||0);r===1?i.push(`${o.substr(0,2)}==`):r===2&&i.push(`${o.substr(0,3)}=`)}return i.join("")}var RS={toArrayBuffer:bve,fromArrayBuffer:Ive};function Ove(t,e){e.classHierarchy.push("vtkStringArray"),t.getComponent=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[r*e.numberOfComponents+n]},t.setComponent=(r,n,i)=>{i!==e.values[r*e.numberOfComponents+n]&&(e.values[r*e.numberOfComponents+n]=i,t.modified())},t.getData=()=>e.values,t.getTuple=function(r){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const i=e.numberOfComponents||1;n.length&&(n.length=i);const o=r*i;for(let a=0;a0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},t.getNumberOfComponents=()=>e.numberOfComponents,t.getNumberOfValues=()=>e.values.length,t.getNumberOfTuples=()=>e.values.length/e.numberOfComponents,t.getDataType=()=>e.dataType,t.newClone=()=>oV({name:e.name,numberOfComponents:e.numberOfComponents,empty:!0}),t.getName=()=>(e.name||t.setName(`vtkStringArray${t.getMTime()}`),e.name),t.setData=(r,n)=>{e.values=r,e.size=r.length,n&&(e.numberOfComponents=n),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),t.modified()}}const Mve={name:"",numberOfComponents:1,size:0,dataType:"string"};function iV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Mve,r),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkStringArray object without: size > 0, values");e.values?Array.isArray(e.values)&&(e.values=[...e.values]):e.values=[],e.values&&(e.size=e.values.length),W.obj(t,e),W.set(t,e,["name"]),Ove(t,e)}const oV=W.newInstance(iV,"vtkStringArray");var Rve={newInstance:oV,extend:iV};function aV(t){return new TextDecoder("latin1").decode(t)}function Lve(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;const n=aV(t),i=e.exec(n);if(!i)return{text:n};const o=i.index+i[0].length,a=n.substring(0,o);let s=null;const c=r?r.exec(n):null;if(c){const l=n.substr(c.index);s={text:a+l,binaryBuffer:t.slice(o,c.index)}}else s={text:a,binaryBuffer:t.slice(o)};return s}var Nve={arrayBufferToString:aV,extractBinary:Lve};function sV(){const t=new ArrayBuffer(4),e=new Uint8Array(t),r=new Uint32Array(t);return e[0]=161,e[1]=178,e[2]=195,e[3]=212,r[0]===3569595041?"LittleEndian":r[0]===2712847316?"BigEndian":null}const Pve=sV();function Ave(t,e){if(e<2)return;const r=new Int8Array(t),n=r.length,i=[];for(let o=0;o(cV("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead."),Promise.reject(new Error("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead.")));let f0=0;function F2(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const n=new XMLHttpRequest;return n.open(t,e,!0),r.headers&&Object.entries(r.headers).forEach(i=>{let[o,a]=i;return n.setRequestHeader(o,a)}),r.progressCallback&&n.addEventListener("progress",r.progressCallback),n}function Vve(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((r,n)=>{const i=F2("GET",t,e);i.onreadystatechange=o=>{i.readyState===4&&(i.status===200||i.status===0?r(i.response):n({xhr:i,e:o}))},i.responseType="arraybuffer",i.send()})}function Fve(t,e,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n&&n.compression?LS():r.ref&&!r.ref.pending?new Promise((i,o)=>{const a=[e,r.ref.basepath,r.ref.id].join("/"),s=F2("GET",a,n);s.onreadystatechange=c=>{s.readyState===1&&(r.ref.pending=!0,++f0===1&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!0)),s.readyState===4&&(r.ref.pending=!1,s.status===200||s.status===0?(r.buffer=s.response,r.ref.encode==="JSON"?r.values=JSON.parse(r.buffer):(by.ENDIANNESS!==r.ref.encode&&by.ENDIANNESS&&(kve(`Swap bytes of ${r.name}`),by.swapBytes(r.buffer,s7[r.dataType])),r.values=W.newTypedArray(r.dataType,r.buffer)),r.values.length!==r.size&&cV(`Error in FetchArray: ${r.name}, does not have the proper array size. Got ${r.values.length}, instead of ${r.size}`),delete r.ref,--f0===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),t!=null&&t.modified&&t.modified(),i(r)):o({xhr:s,e:c}))},s.responseType=r.dataType!=="string"?"arraybuffer":"text",s.send()}):Promise.resolve(r)}function Uve(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?LS():new Promise((n,i)=>{const o=F2("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++f0===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--f0===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),o.status===200||o.status===0?n(JSON.parse(o.responseText)):i({xhr:o,e:a}))},o.responseType="text",o.send()})}function Bve(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return r&&r.compression?LS():new Promise((n,i)=>{const o=F2("GET",e,r);o.onreadystatechange=a=>{o.readyState===1&&++f0===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),o.readyState===4&&(--f0===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),o.status===200||o.status===0?n(o.responseText):i({xhr:o,e:a}))},o.responseType="text",o.send()})}function Gve(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return new Promise((n,i)=>{const o=new Image;r.crossOrigin&&(o.crossOrigin=r.crossOrigin),o.onload=()=>n(o),o.onerror=i,o.src=e})}const Wve={fetchArray:Fve,fetchJSON:Uve,fetchText:Bve,fetchBinary:Vve,fetchImage:Gve};nV("http")||rV("http",t=>Wve);function zve(t,e){return[...t.getElementsByTagName(e)]}function GE(t,e){return zve(t,e)[0]}function $ve(t){return rve.create(t)}function jve(t){const e=/^\s*\s*_/m,r=/\n\s*<\/AppendedData>/m;return Nve.extractBinary(t,e,r)}const Ls={Int8:Int8Array,UInt8:Uint8Array,Int16:Int16Array,UInt16:Uint16Array,Int32:Int32Array,UInt32:Uint32Array,Int64:Int32Array,UInt64:Uint32Array,Float32:Float32Array,Float64:Float64Array},th={Int8:1,UInt8:1,Int16:2,UInt16:2,Int32:4,UInt32:4,Int64:8,UInt64:8,Float32:4,Float64:8};function H3(t){const e=t.length-1;return t.filter((r,n)=>n0&&(o===0?a=n*i:a=(n-1)*i+o);const s=new ArrayBuffer(a),c={offset:0,uint8:new Uint8Array(s)};let l=Kve(r);for(;l{d.trim().length&&(f[u++]=Number(d))})}else if(c==="binary"){const u=new Uint8Array(RS.toArrayBuffer(e.firstChild.nodeValue.trim()));if(r==="vtkZLibDataCompressor"){const d=NS(u,i);f=new Ls[a](d.buffer),/^U?Int64$/.test(a)&&(f=H3(f))}else f=new Ls[a](u.buffer,th[i]),a.indexOf("Int64")!==-1&&(f=H3(f))}else if(c==="appended"){const u=Number(e.getAttribute("offset"));f=K3(new Uint8Array(o,u),a,i)}else console.error("Format not supported",c);return{name:s,values:f,numberOfComponents:l}}function Iy(t){return new TextDecoder().decode(t).split("\0").slice(0,-1)}function Xve(t,e,r,n,i){const o=t.getAttribute("Name"),a=t.getAttribute("format"),s=Number(t.getAttribute("NumberOfComponents")||"1"),l=Number(t.getAttribute("NumberOfTuples")||"1")*s,f=[];if(a==="ascii"){const u=t.firstChild.nodeValue.trim().split(/\s+/);let d=0;const h=[];for(;f.length{const p=g-h;u[d++]=p;for(let v=0;v{const d=e.getAttribute(u);d&&(c[d]=r[`set${u}`])});const l=e.getElementsByTagName("DataArray"),f=l.length;for(let u=0;utt.newInstance(nh(Number(s.getAttribute("NumberOfTuples")),s,e,r,n,i))),a=[...t.getElementsByTagName("Array")].filter(s=>s.getAttribute("type")==="String").map(s=>Rve.newInstance(Xve(s,e,r,n,i)));return[...o,...a]}function Qve(t,e){e.classHierarchy.push("vtkXMLReader"),e.dataAccessHelper||(e.dataAccessHelper=_ve.get("http"));function r(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.dataAccessHelper.fetchBinary(n,i)}t.setUrl=function(n){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.url=n;const o=n.split("/");return o.pop(),e.baseURL=o.join("/"),t.loadData(i)},t.loadData=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r(e.url,n).then(t.parseAsArrayBuffer)},t.parseAsArrayBuffer=n=>{if(!n)return!1;if(n!==e.rawDataBuffer)t.modified();else return!0;const{text:i,binaryBuffer:o}=jve(n);e.rawDataBuffer=n,e.binaryBuffer=o;const s=$ve(i).root(),c=s.node,l=c.getAttribute("type"),f=c.getAttribute("compressor"),u=c.getAttribute("byte_order"),d=c.getAttribute("header_type")||"UInt32";if(f&&f!=="vtkZLibDataCompressor")return console.error("Invalid compressor",f),!1;if(u&&u!=="LittleEndian")return console.error("Only LittleEndian encoding is supported"),!1;if(l!==e.dataType)return console.error("Invalid data type",l,"expecting",e.dataType),!1;if(GE(c,"AppendedData")){const p=GE(c,"AppendedData"),v=p.getAttribute("encoding"),x=s.filter(T=>{const{node:_}=T;return _.nodeType===Node.ELEMENT_NODE&&_.getAttribute("format")==="appended"&&_.hasAttribute("offset")},!1,!0).map(T=>({node:T.node,offset:Number(T.node.getAttribute("offset"))}));x.sort((T,_)=>T.offset-_.offset);let m=e.binaryBuffer;v==="base64"&&(m=p.textContent.trim().substr(1));const y=[];for(let T=0;TT+_.length,0),C=new ArrayBuffer(w),S=new Uint8Array(C);for(let T=0,_=0;T{t.parseAsArrayBuffer(e.rawDataBuffer)}}const eye={};function tye(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,eye,r),W.obj(t,e),W.get(t,e,["url","baseURL"]),W.setGet(t,e,["dataAccessHelper"]),W.algo(t,e,0,1),Qve(t,e)}var rh={extend:tye,processDataArray:nh,processFieldData:Jve,processCells:Yve};function nye(t,e,r,n,i,o,a){const s=Number(r.getAttribute(`NumberOf${e}`));if(s>0){const c=r.getElementsByTagName(e)[0].getElementsByTagName("DataArray")[0],{values:l,numberOfComponents:f}=rh.processDataArray(s,c,n,i,o,a);t[`get${e}`]().setData(l,f)}return s}function rye(t,e,r,n,i,o,a){const s=Number(r.getAttribute(`NumberOf${e}`));if(s>0){const c=rh.processCells(s,r.getElementsByTagName(e)[0],n,i,o,a);t[`get${e}`]().setData(c)}return s}function iye(t,e){e.classHierarchy.push("vtkXMLPolyDataReader"),t.parseXML=(r,n,i,o,a)=>{const c=r.getElementsByTagName(e.dataType)[0].getElementsByTagName("Piece"),l=c.length;for(let f=0;f{g+=rye(u,p,d,i,o,a,e.binaryBuffer)}),rh.processFieldData(h,d.getElementsByTagName("PointData")[0],u.getPointData(),i,o,a,e.binaryBuffer),rh.processFieldData(g,d.getElementsByTagName("CellData")[0],u.getCellData(),i,o,a,e.binaryBuffer),e.output[f]=u}}}const oye={dataType:"PolyData"};function lV(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oye,r),rh.extend(t,e,r),iye(t,e)}const aye=W.newInstance(lV,"vtkXMLPolyDataReader");var sye={newInstance:aye,extend:lV},_m;(function(t){t[t.ANNOTATED_CUBE=1]="ANNOTATED_CUBE",t[t.AXES=2]="AXES",t[t.CUSTOM=3]="CUSTOM"})(_m||(_m={}));const $o=class $o extends or{constructor(e={},r={configuration:{orientationWidget:{enabled:!0,viewportCorner:FE.Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:$o.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[$o.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE]:{faceProperties:{xPlus:{text:"L",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"R",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:n=>n/2,faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}},[$o.OVERLAY_MARKER_TYPES.AXES]:{},[$o.OVERLAY_MARKER_TYPES.CUSTOM]:{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}}}}){super(e,r),this._resizeObservers=new Map,this.onSetToolEnabled=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolActive=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolDisabled=()=>{this.cleanUpData(),this._unsubscribeToViewportNewVolumeSet()},this._getViewportsInfo=()=>Wn(this.toolGroupId).viewportsInfo,this.resize=n=>{const i=this.orientationMarkers[n];if(!i)return;const{orientationWidget:o}=i;o.updateViewport()},this.orientationMarkers={},this.updatingOrientationMarker={}}_unsubscribeToViewportNewVolumeSet(){const e=()=>{this._getViewportsInfo().forEach(({viewportId:n,renderingEngineId:i})=>{const{viewport:o}=dr(n,i),{element:a}=o;a.removeEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this)),this._resizeObservers.get(n).unobserve(a)})};Ce.removeEventListener(F.TOOLGROUP_VIEWPORT_ADDED,r=>{r.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}_subscribeToViewportEvents(){const e=()=>{this._getViewportsInfo().forEach(({viewportId:n,renderingEngineId:i})=>{const{viewport:o}=dr(n,i),{element:a}=o;this.initViewports(),a.addEventListener(Se.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const s=new ResizeObserver(()=>{setTimeout(()=>{const c=dr(n,i);if(!c)return;const{viewport:l}=c;this.resize(n),l.render()},100)});s.observe(a),this._resizeObservers.set(n,s)})};e(),Ce.addEventListener(F.TOOLGROUP_VIEWPORT_ADDED,r=>{r.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())})}cleanUpData(){_i()[0].getViewports().forEach(i=>{const o=this.orientationMarkers[i.id];if(!o)return;const{actor:a,orientationWidget:s}=o;s==null||s.setEnabled(!1),s==null||s.delete(),a==null||a.delete(),i.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),i.getRenderingEngine().render(),delete this.orientationMarkers[i.id]})}initViewports(){const r=_i()[0];if(!r)return;let n=r.getViewports();n=I2(n,this.getToolName()),n.forEach(i=>{const o=i.getWidget(this.getToolName());(!o||o.isDeleted())&&this.addAxisActorInViewport(i)})}async addAxisActorInViewport(e){const r=e.id;if(!this.updatingOrientationMarker[r]){this.updatingOrientationMarker[r]=!0;const n=this.configuration.overlayMarkerType,i=this.configuration.overlayConfiguration[n];if(this.orientationMarkers[r]){const{actor:g,orientationWidget:p}=this.orientationMarkers[r];e.getRenderer().removeActor(g),p.setEnabled(!1)}let o;n===1?o=this.createAnnotationCube(i):n===2?o=nve.newInstance():n===3&&(o=await this.createCustomActor());const a=e.getRenderer(),s=e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),{enabled:c,viewportCorner:l,viewportSize:f,minPixelSize:u,maxPixelSize:d}=this.configuration.orientationWidget,h=FE.newInstance({actor:o,interactor:s.getInteractor(),parentRenderer:a});h.setEnabled(c),h.setViewportCorner(l),h.setViewportSize(f),h.setMinPixelSize(u),h.setMaxPixelSize(d),h.updateMarkerOrientation(),this.orientationMarkers[r]={orientationWidget:h,actor:o},e.addWidget(this.getToolName(),h),s.render(),e.getRenderingEngine().render(),this.updatingOrientationMarker[r]=!1}}async createCustomActor(){const e=this.configuration.overlayConfiguration[_m.CUSTOM].polyDataURL,n=await(await fetch(e)).arrayBuffer(),i=sye.newInstance();i.parseAsArrayBuffer(n),i.update();const o=hr.newInstance();o.shallowCopy(i.getOutputData()),o.getPointData().setActiveScalars("Color");const a=oa.newInstance();a.setInputData(o),a.setColorModeToDirectScalars();const s=ca.newInstance();return s.setMapper(a),s.rotateZ(180),s}createAnnotationCube(e){const r=UE.newInstance();return r.setDefaultStyle({...e.defaultStyle}),r.setXPlusFaceProperty({...e.faceProperties.xPlus}),r.setXMinusFaceProperty({...e.faceProperties.xMinus}),r.setYPlusFaceProperty({...e.faceProperties.yPlus}),r.setYMinusFaceProperty({...e.faceProperties.yMinus}),r.setZPlusFaceProperty({...e.faceProperties.zPlus}),r.setZMinusFaceProperty({...e.faceProperties.zMinus}),r}async createAnnotatedCubeActor(){const e=UE.newInstance(),{faceProperties:r,defaultStyle:n}=this.configuration.annotatedCube;return e.setDefaultStyle(n),Object.keys(r).forEach(i=>{const o=`set${i.charAt(0).toUpperCase()+i.slice(1)}FaceProperty`;e[o](r[i])}),e}};$o.CUBE=1,$o.AXIS=2,$o.VTPFILE=3,$o.OVERLAY_MARKER_TYPES=_m;let Em=$o;Em.toolName="OrientationMarker";const cd=class cd extends or{constructor(e={},r={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:cd.SelectMode.Border,searchRadius:6}}){super(e,r),this.mouseMoveCallback=n=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout(()=>{this._setActiveSegment(n),this.hoverTimer=null},this.configuration.hoverTimeout),!0),this.onSetToolEnabled=()=>{this.onSetToolActive()},this.onSetToolActive=()=>{this.hoverTimer=null},this.onSetToolDisabled=()=>{this.hoverTimer=null},this.hoverTimer=null}_setActiveSegment(e={}){if(ve.isInteractingWithTool)return;const{element:r,currentPoints:n}=e.detail,i=n.world,o=re(r);if(!o)return;const{viewport:a}=o,s=Il(a.id);s&&this._setActiveSegmentForType(s,i,a)}_setActiveSegmentForType(e,r,n){if(!n.getImageData())return;const{segmentationId:o,representationData:a}=e;let s;if(this.configuration.mode===cd.SelectMode.Inside?s=kA(o,r,{viewport:n}):a.Labelmap?s=VA(o,r,{viewport:n,searchRadius:this.configuration.searchRadius}):a.Contour?s=UA(o):a.Surface,!s||s===0)return;Cm(o,s);const l=n.getRenderingEngine().getViewports().map(f=>f.id);Di(o),pe(l)}};cd.SelectMode={Inside:"Inside",Border:"Border"};let Dm=cd;Dm.toolName="SegmentSelectTool";class uV extends ar{constructor(e={}){super(e,{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),this.addNewAnnotation=r=>{const n=r.detail,{currentPoints:i,element:o}=n,a=i.world,s=re(o),{viewport:c,renderingEngine:l}=s;this.isDrawing=!0;const f=c.getCamera(),{viewPlaneNormal:u,viewUp:d}=f,h=this.getReferencedImageId(c,a,u,d),g={metadata:{viewPlaneNormal:[0,0,1],viewUp:[0,1,0],FrameOfReferenceUID:c.getFrameOfReferenceUID(),referencedImageId:h,toolName:this.getToolName()},data:{invalidated:!0,handles:{points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null},cachedStats:{},active:!0}};Ut(g,o);const p=He(o,this.getToolName(),!1);return this.editData={annotation:g,viewportUIDsToRender:p,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qe(o),r.preventDefault(),pe(p),g},this.getHandleNearImagePoint=(r,n,i,o)=>{const a=re(r),{viewport:s}=a,{data:c}=n,{points:l}=c.handles;for(let f=0;f{const a=re(r),{viewport:s}=a,{data:c}=n,{points:l}=c.handles,f=s.worldToCanvas(l[0]),u=s.worldToCanvas(l[3]),d=this._getRectangleImageCoordinates([f,u]),h=[i[0],i[1]],{left:g,top:p,width:v,height:x}=d;if(eS([g,p,v,x],h)<=o)return!0},this.toolSelectedCallback=(r,n,i="mouse")=>{const o=r.detail,{element:a}=o,{data:s}=n;s.active=!0;const c=He(a,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:c},this._activateModify(a),Qe(a),pe(c),r.preventDefault()},this.handleSelectedCallback=(r,n,i,o="mouse")=>{const a=r.detail,{element:s}=a,{data:c}=n;c.active=!0;let l;i.worldPosition||(l=c.handles.points.findIndex(u=>u===i));const f=He(s,this.getToolName(),!1);this.editData={annotation:n,viewportUIDsToRender:f,handleIndex:l},this._activateModify(s),Qe(s),pe(f),r.preventDefault()},this._mouseUpCallback=r=>{const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,newAnnotation:s,hasMoved:c}=this.editData,{data:l}=o;s&&!c||(l.active=!1,l.handles.activeHandleIndex=null,this._deactivateModify(i),this._deactivateDraw(i),ct(i),re(i),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Ot(o.annotationUID),pe(a))},this._mouseDragCallback=r=>{this.isDrawing=!0;const n=r.detail,{element:i}=n,{annotation:o,viewportUIDsToRender:a,handleIndex:s}=this.editData,{data:c}=o;if(s===void 0){const{deltaPoints:l}=n,f=l.world,{points:u}=c.handles;u.forEach(d=>{d[0]+=f[0],d[1]+=f[1],d[2]+=f[2]}),c.invalidated=!0}else{const{currentPoints:l}=n,f=re(i),{worldToCanvas:u,canvasToWorld:d}=f.viewport,h=l.world,{points:g}=c.handles;g[s]=[...h];let p,v,x,m,y,w,C,S;switch(s){case 0:case 3:p=u(g[0]),m=u(g[3]),v=[m[0],p[1]],x=[p[0],m[1]],w=d(v),C=d(x),g[1]=w,g[2]=C;break;case 1:case 2:v=u(g[1]),x=u(g[2]),p=[x[0],v[1]],m=[v[0],x[1]],y=d(p),S=d(m),g[0]=y,g[3]=S;break}c.invalidated=!0}this.editData.hasMoved=!0,re(i),pe(a)},this._activateDraw=r=>{ve.isInteractingWithTool=!0,r.addEventListener(F.MOUSE_UP,this._mouseUpCallback),r.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),r.addEventListener(F.MOUSE_MOVE,this._mouseDragCallback),r.addEventListener(F.MOUSE_CLICK,this._mouseUpCallback),r.addEventListener(F.TOUCH_END,this._mouseUpCallback),r.addEventListener(F.TOUCH_DRAG,this._mouseDragCallback)},this._deactivateDraw=r=>{ve.isInteractingWithTool=!1,r.removeEventListener(F.MOUSE_UP,this._mouseUpCallback),r.removeEventListener(F.MOUSE_DRAG,this._mouseDragCallback),r.removeEventListener(F.MOUSE_MOVE,this._mouseDragCallback),r.removeEventListener(F.MOUSE_CLICK,this._mouseUpCallback),r.removeEventListener(F.TOUCH_END,this._mouseUpCallback),r.removeEventListener(F.TOUCH_DRAG,this._mouseDragCallback)},this._activateModify=r=>{ve.isInteractingWithTool=!0,r.addEventListener(F.MOUSE_UP,this._mouseUpCallback),r.addEventListener(F.MOUSE_DRAG,this._mouseDragCallback),r.addEventListener(F.MOUSE_CLICK,this._mouseUpCallback),r.addEventListener(F.TOUCH_END,this._mouseUpCallback),r.addEventListener(F.TOUCH_DRAG,this._mouseDragCallback)},this._deactivateModify=r=>{ve.isInteractingWithTool=!1,r.removeEventListener(F.MOUSE_UP,this._mouseUpCallback),r.removeEventListener(F.MOUSE_DRAG,this._mouseDragCallback),r.removeEventListener(F.MOUSE_CLICK,this._mouseUpCallback),r.removeEventListener(F.TOUCH_END,this._mouseUpCallback),r.removeEventListener(F.TOUCH_DRAG,this._mouseDragCallback)},this.renderAnnotation=(r,n)=>{const{viewport:o}=r,{element:a}=o;let s=_t(this.getToolName(),a);if(!(s!=null&&s.length)||(s=this.filterInteractableAnnotationsForElement(a,s),!(s!=null&&s.length)))return!1;this.getTargetId(o),o.getRenderingEngine();const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:r.viewport.id};for(let l=0;lo.worldToCanvas(C)),v=this.getStyle("lineWidth",c,f),x=this.getStyle("lineDash",c,f),m=this.getStyle("color",c,f);if(!o.getRenderingEngine()){console.warn("Rendering Engine has been destroyed");return}let y;!this.editData&&g!==null&&(y=[p[g]]),y&&sn(n,u,"0",y,{color:m}),GN(n,u,"0",p[0],p[3],{color:"black",lineDash:x,lineWidth:v})}},this._getRectangleImageCoordinates=r=>{const[n,i]=r;return{left:Math.min(n[0],i[0]),top:Math.min(n[1],i[1]),width:Math.abs(n[0]-i[0]),height:Math.abs(n[1]-i[1])}},this._calculateCachedStats=(r,n,i,o,a)=>{const{data:s}=r,{viewportUID:c,renderingEngineUID:l,sceneUID:f}=a,u=s.handles.points[0],d=s.handles.points[3],{cachedStats:h}=s,g=Object.keys(h);for(let x=0;xIn(r,i)&&In(n,i),this._getTargetVolumeUID=r=>{if(this.configuration.volumeUID)return this.configuration.volumeUID;const n=r.getVolumeActors();if(!(!n&&!n.length))return n[0].uid},this._throttledCalculateCachedStats=Qr(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),ct(e);const{annotation:r,viewportUIDsToRender:n}=this.editData,{data:i}=r;return i.active=!1,i.handles.activeHandleIndex=null,pe(n),this.editData=null,r.metadata.annotationUID}_getImageVolumeFromTargetUID(e,r){let n,i;if(e.startsWith("stackTarget")){const o=e.indexOf(":"),a=e.substring(o+1);n=r.getViewport(a).getImageData()}else n=_e.getVolume(e);return{imageVolume:n,viewport:i}}_getTargetStackUID(e){return`stackTarget:${e.uid}`}}uV.toolName="VideoRedaction";const cye=Object.freeze(Object.defineProperty({__proto__:null,AdvancedMagnifyTool:Qd,AngleTool:bk,AnnotationDisplayTool:uc,AnnotationTool:ar,ArrowAnnotateTool:ic,BaseTool:or,BidirectionalTool:yS,BrushTool:vS,CONSTANTS:uge,CircleROIStartEndThresholdTool:Ak,CircleROITool:DS,CircleScissorsTool:Nk,CobbAngleTool:Ik,CrosshairsTool:Ko,DragProbeTool:Sk,ETDRSGridTool:Tk,EllipticalROITool:u0,Enums:qR,EraserTool:Mk,HeightTool:Ck,KeyImageTool:V2,LengthTool:xl,LivewireContourSegmentationTool:Dk,LivewireContourTool:bS,MIPJumpToClickTool:dk,MagnifyTool:hk,OrientationMarkerTool:Em,OverlayGridTool:gk,PaintFillTool:kk,PanTool:o0,PlanarFreehandContourSegmentationTool:Za,PlanarFreehandROITool:vl,PlanarRotateTool:s0,ProbeTool:rc,RectangleROIStartEndThresholdTool:gS,RectangleROIThresholdTool:pS,RectangleROITool:tc,RectangleScissorsTool:Lk,ReferenceCursors:Ri,ReferenceLinesTool:el,ScaleOverlayTool:yk,SculptorTool:l0,SegmentSelectTool:Dm,SegmentationIntersectionTool:pk,SphereScissorsTool:Pk,SplineContourSegmentationTool:Ek,SplineROITool:eh,StackScrollTool:yl,Synchronizer:cA,SynchronizerManager:age,ToolGroupManager:Yse,TrackballRotateTool:uk,Types:sme,UltrasoundDirectionalTool:Ok,VideoRedactionTool:uV,VolumeRotateTool:wk,WindowLevelRegionTool:fk,WindowLevelTool:a0,ZoomTool:c0,addTool:pr,annotation:Sfe,cancelActiveManipulations:ege,cursors:Hse,destroy:sge,drawing:Jue,init:lA,removeTool:Cce,segmentation:Ime,get state(){return ve},synchronizers:Mge,utilities:ame},Symbol.toStringTag,{value:"Module"}));function fV(t,e,r){if(t===void 0)throw new Error("decodeRGB: rgbBuffer must be defined");if(t.length%3!==0)throw new Error(`decodeRGB: rgbBuffer length ${t.length} must be divisible by 3`);const n=t.length/3;let i=0,o=0;if(r){for(let a=0;a>e;return n}function My(t,e,r){const n=t[`${e}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const i=Pe("imagePixelModule",t.imageId);return i&&typeof i.then=="function"?i.then(o=>o?o[`${e}PaletteColorLookupTableData`]:r):Promise.resolve(i?i[`${e}PaletteColorLookupTableData`]:r)}function pV(t,e,r){const n=t.columns*t.rows,i=t.pixelData;Promise.all([My(t,"red",null),My(t,"green",null),My(t,"blue",null)]).then(([o,a,s])=>{if(!o||!a||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const c=o.length;let l=0,f=0;const u=t.redPaletteColorLookupTableDescriptor[1],d=t.redPaletteColorLookupTableDescriptor[2]===8?0:8,h=Oy(o,d),g=Oy(a,d),p=Oy(s,d);if(r){for(let v=0;vu+c-1?x=c-1:x-=u,e[f++]=h[x],e[f++]=g[x],e[f++]=p[x],e[f++]=255}return}for(let v=0;vu+c-1?x=c-1:x-=u,e[f++]=h[x],e[f++]=g[x],e[f++]=p[x]}})}function Ry(t,e){if(!(!t.elements[e]||t.elements[e].length!==6))return[t.uint16(e,0),t.uint16(e,1),t.uint16(e,2)]}function Ly(t,e,r){const n=[],i=t.elements[e];for(let o=0;o0?0:t.uint16("x00280103")}function Po(t,e,r){const n=[],i=t.string(e);if(!i)return;const o=i.split("\\");if(!(r&&o.lengthq.byteArray.length-q.position&&(Be=q.byteArray.length-q.position),J.fragments.push({offset:q.position-X-8,position:q.position,length:Be}),q.seek(Be),void(J.length=q.position-J.dataOffset);J.fragments.push({offset:q.position-X-8,position:q.position,length:Be}),q.seek(Be)}ie&&ie.push("pixel data element ".concat(J.tag," missing sequence delimiter tag xfffee0dd"))}function T(q,J){if(q===void 0)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var ie=q.byteArray.length-8;q.position<=ie;)if(q.readUint16()===65534){var Z=q.readUint16();if(Z===57565)return q.readUint32()!==0&&q.warnings("encountered non zero length following item delimiter at position ".concat(q.position-4," while reading element of undefined length with tag ").concat(J.tag)),void(J.length=q.position-J.dataOffset)}J.length=q.byteArray.length-J.dataOffset,q.seek(q.byteArray.length-q.position)}function _(q,J,ie){if(ie<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(J+ie>q.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var Z,te="",me=0;meJ.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var te=q.elements;J.positionie)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function Y(q,J,ie){var Z=3J.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var te=q.elements;J.positionq.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(q[J]<<8)+q[J+1]},readInt16:function(q,J){if(J<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(J+2>q.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";return J=(q[J]<<8)+q[J+1],J=32768&J?J-65535-1:J},readUint32:function(q,J){if(J<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(J+4>q.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*q[J]+q[J+1])+q[J+2])+q[J+3]},readInt32:function(q,J){if(J<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(J+4>q.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(q[J]<<24)+(q[J+1]<<16)+(q[J+2]<<8)+q[J+3]},readFloat:function(q,J){if(J<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(J+4>q.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var ie=new Uint8Array(4);return ie[3]=q[J],ie[2]=q[J+1],ie[1]=q[J+2],ie[0]=q[J+3],new Float32Array(ie.buffer)[0]},readDouble:function(q,J){if(J<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(J+8>q.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var ie=new Uint8Array(8);return ie[7]=q[J],ie[6]=q[J+1],ie[5]=q[J+2],ie[4]=q[J+3],ie[3]=q[J+4],ie[2]=q[J+5],ie[1]=q[J+6],ie[0]=q[J+7],new Float64Array(ie.buffer)[0]}};function de(q,J,ie){if(typeof Buffer<"u"&&q instanceof Buffer)return q.slice(J,J+ie);if(q instanceof Uint8Array)return new Uint8Array(q.buffer,q.byteOffset+J,ie);throw"dicomParser.from: unknown type for byteArray"}function fe(q,J){for(var ie=0;ie"u"||!(te instanceof Buffer)))throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(me<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(me>=te.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=Z,this.byteArray=te,this.position=me||0,this.warnings=[]}var J,ie;return J=q,(ie=[{key:"seek",value:function(Z){if(this.position+Z<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=Z}},{key:"readByteStream",value:function(Z){if(this.position+Z>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var te=de(this.byteArray,this.position,Z);return this.position+=Z,new q(this.byteArrayParser,te)}},{key:"getSize",value:function(){return this.byteArray.length}},{key:"readUint16",value:function(){var Z=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,Z}},{key:"readUint32",value:function(){var Z=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,Z}},{key:"readFixedString",value:function(Z){var te=_(this.byteArray,this.position,Z);return this.position+=Z,te}}])&&fe(J.prototype,ie),Object.defineProperty(J,"prototype",{writable:!1}),q}(),k={readUint16:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(J+2>q.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return q[J]+256*q[J+1]},readInt16:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(J+2>q.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";return J=q[J]+(q[J+1]<<8),J=32768&J?J-65535-1:J},readUint32:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(J+4>q.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return q[J]+256*q[J+1]+256*q[J+2]*256+256*q[J+3]*256*256},readInt32:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(J+4>q.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return q[J]+(q[J+1]<<8)+(q[J+2]<<16)+(q[J+3]<<24)},readFloat:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(J+4>q.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var ie=new Uint8Array(4);return ie[0]=q[J],ie[1]=q[J+1],ie[2]=q[J+2],ie[3]=q[J+3],new Float32Array(ie.buffer)[0]},readDouble:function(q,J){if(J<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(J+8>q.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var ie=new Uint8Array(8);return ie[0]=q[J],ie[1]=q[J+1],ie[2]=q[J+2],ie[3]=q[J+3],ie[4]=q[J+4],ie[5]=q[J+5],ie[6]=q[J+6],ie[7]=q[J+7],new Float64Array(ie.buffer)[0]}};function O(q){var J=1"u")throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax";return Me=q.slice(ue),Re=pako.inflateRaw(Me),(Me=ne(q,Re.length+ue)).set(q.slice(0,ue),0),Me.set(Re,ue),new le(k,Me,0)}(Ae,Be.position),Be=new b(Ae.byteArrayParser,Ae.byteArray,{});Be.warnings=Ae.warnings;try{(X?H:Y)(Be,Ae,Ae.byteArray.length,J)}catch(Ve){throw{exception:Ve,dataSet:Be}}return Be}return function(me,X){for(var Ae in me.elements)me.elements.hasOwnProperty(Ae)&&(X.elements[Ae]=me.elements[Ae]);return me.warnings!==void 0&&(X.warnings=me.warnings.concat(X.warnings)),X}(ie=O(q,J),te(ie))}var z=function(q,J,ie){for(var Z=0,te=J;te= 0";if(ie>=X.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(Z<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(ie+Z>X.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var me=new le(q.byteArrayParser,q.byteArray,X.dataOffset),X=L(me);if(X.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";me.seek(X.length);var Ae=me.position;if(Z===1)return de(me.byteArray,Ae+te[ie].offset+8,te[ie].length);for(var X=z(te,ie,Z),Be=ne(me.byteArray,X),Ve=0,ue=ie;ue= 0";if(ie>=Z.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var me=Z[ie],me=K(te,me);if(me===void 0)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return j(q,J,me,ae(ie,Z,te,me),te)}var ye=!1;function Te(q,J,ie){if(ye||(ye=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),q===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(J===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(ie===void 0)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if(J.tag!=="x7fe00010")throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(J.encapsulatedPixelData!==!0||J.hadUndefinedLength!==!0||J.basicOffsetTable===void 0||J.fragments===void 0)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(ie<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return J.basicOffsetTable.length!==0?he(q,J,ie):j(q,J,0,J.fragments.length)}s.default={isStringVr:f,isPrivateTag:u,parsePN:d,parseTM:h,parseDA:p,explicitElementToString:v,explicitDataSetToJS:x,createJPEGBasicOffsetTable:w,parseDicomDataSetExplicit:H,parseDicomDataSetImplicit:Y,readFixedString:_,alloc:ne,version:Q,bigEndianByteArrayParser:ee,ByteStream:le,sharedCopy:de,DataSet:b,findAndSetUNElementLength:T,findEndOfEncapsulatedElement:S,findItemDelimitationItemAndSetElementLength:I,littleEndianByteArrayParser:k,parseDicom:U,readDicomElementExplicit:$,readDicomElementImplicit:M,readEncapsulatedImageFrame:he,readEncapsulatedPixelData:Te,readEncapsulatedPixelDataFromFragments:j,readPart10Header:O,readSequenceItemsExplicit:N,readSequenceItemsImplicit:G,readSequenceItem:L,readTag:C,LEI:"1.2.840.10008.1.2",LEE:"1.2.840.10008.1.2.1"}}],o={},n.m=i,n.c=o,n.d=function(a,s,c){n.o(a,s)||Object.defineProperty(a,s,{enumerable:!0,get:c})},n.r=function(a){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},n.t=function(a,s){if(1&s&&(a=n(a)),8&s||4&s&&typeof a=="object"&&a&&a.__esModule)return a;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:a}),2&s&&typeof a!="string")for(var l in a)n.d(c,l,(function(f){return a[f]}).bind(null,l));return c},n.n=function(a){var s=a&&a.__esModule?function(){return a.default}:function(){return a};return n.d(s,"a",s),s},n.o=function(a,s){return Object.prototype.hasOwnProperty.call(a,s)},n.p="",n(n.s=1);function n(a){if(o[a])return o[a].exports;var s=o[a]={i:a,l:!1,exports:{}};return i[a].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var i,o})})(yV);var Tn=yV.exports;function Vh(t){const e=t.indexOf(":");let r=t.substring(e+1);const n=r.indexOf("frame=");let i;if(n!==-1){const s=r.substring(n+6);i=parseInt(s,10),r=r.substring(0,n-1)}const o=t.substring(0,e),a=i!==void 0?i-1:void 0;return{scheme:o,url:r,frame:i,pixelDataFrame:a}}let X3={open(t,e){t.open("get",e,!0)},beforeSend(){},beforeProcessing(t){return Promise.resolve(t.response)},imageCreated(){},strict:!1};function xV(t){X3=Object.assign(X3,t)}function Fh(){return X3}function U2(t,e,r={},n={}){const i=Fh(),o=c=>{if(typeof i.errorInterceptor=="function"){const l=new Error("request failed");l.request=c,l.response=c.response,l.status=c.status,i.errorInterceptor(l)}},a=new XMLHttpRequest,s=new Promise((c,l)=>{i.open(a,t,r,n);const f=i.beforeSend(a,e,r,n);a.responseType="arraybuffer";const u=Object.assign({},r,f);Object.keys(u).forEach(function(d){u[d]!==null&&(d==="Accept"&&t.indexOf("accept=")!==-1||a.setRequestHeader(d,u[d]))}),n.deferred={resolve:c,reject:l},n.url=t,n.imageId=e,a.onloadstart=function(d){i.onloadstart&&i.onloadstart(d,n),De(Ce,"cornerstoneimageloadstart",{url:t,imageId:e})},a.onloadend=function(d){i.onloadend&&i.onloadend(d,n),De(Ce,"cornerstoneimageloadend",{url:t,imageId:e})},a.onreadystatechange=function(d){if(i.onreadystatechange){i.onreadystatechange(d,n);return}a.readyState===4&&(a.status===200||a.status===206?i.beforeProcessing(a).then(c).catch(()=>{o(a),l(a)}):(o(a),l(a)))},a.onprogress=function(d){d.loaded,d.lengthComputable&&d.total,i.onprogress&&i.onprogress(d,n)},a.onerror=function(){o(a),l(a)},a.onabort=function(){o(a),l(a)},a.send()});return s.xhr=a,s}function gye(t,e,r){if(r+t.length>e.length)return!1;let n=r;for(let i=0;i{if(typeof i.errorInterceptor=="function"){const u=new Error("request failed");i.errorInterceptor(u)}},l=new xye("streamRequest");return l.generate(async(f,u)=>{var g,p;const d=(g=i.beforeSend)==null?void 0:g.call(i,null,t,r,{}),h=Object.assign({},r,d);Object.keys(h).forEach(function(v){h[v]===null&&(h[v]=void 0),v==="Accept"&&t.indexOf("accept=")!==-1&&(h[v]=void 0)});try{const v=await fetch(t,{headers:h,signal:void 0});if(v.status!==200)throw new Error(`Couldn't retrieve ${t} got status ${v.status}`);const x=v.body.getReader(),m=v.headers,y=m.get("content-type"),w=Number(m.get("Content-Length"));let C=!1,S=a.encodedData,T=a.lastSize||0;for(a.isPartial=!0;!C;){const{done:_,value:E}=await x.read();if(S=wye(S,E),!S){if(C)throw new Error(`Done but no image frame available ${e}`);continue}if(C=_||S.byteLength===w,!C&&S.lengthr-i&&(console.log(`Truncated fragment, changing fragment length from ${n.length} to ${r-i}`),n.length=r-i)}return t}function Tye(t){let e=Tn.parseDicom(t,{untilTag:"x7fe00010"});e.elements.x7fe00010||console.warn("Pixel data not found!");let r;try{r=Tn.parseDicom(t)}catch(n){console.error(n),console.log("pixel data dataset:",n.dataSet),r=n.dataSet}return e.elements.x7fe00010=r.elements.x7fe00010,e=Sye(e),e}async function CV(t,e,r){const n=Tye(t),{uri:i,imageId:o,fileTotalLength:a}=r;return n.fetchMore=async function(s){const c=Object.assign({uri:i,imageId:o,fetchedLength:t.length,lengthToFetch:a-t.length},s),{fetchedLength:l,lengthToFetch:f}=c,{arrayBuffer:u}=await e(i,o,{byteRange:`${l}-${l+f}`}),d=new Uint8Array(u),h=new Uint8Array(n.byteArray.length+d.length);return h.set(n.byteArray),h.set(d,n.byteArray.length),CV(h,e,r)},n}function _ye(t,e){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i}=TV(t);if(n||r>1){const{shared:o,perFrame:a}=SV(n,i,e);return{NumberOfFrames:r,PerFrameFunctionalInformation:a,SharedFunctionalInformation:o}}return{NumberOfFrames:r}}function SV(t,e,r){const n={};(e?Object.values(e.items[0].dataSet.elements):[]).map(o=>n[o.tag]=o);const i={};return(t?Object.values(t.items[r-1].dataSet.elements):[]).map(o=>i[o.tag]=o),{shared:n,perFrame:i}}function TV(t){if(!t)return;const{elements:e,...r}=t,{x52009230:n,x52009229:i,...o}=e;return{NumberOfFrames:t.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i,otherElements:o,otherAttributtes:r}}function Eye(t,e){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:i,otherElements:o}=TV(e);if(n||r>1){const{shared:a,perFrame:s}=SV(n,i,t),c={elements:{...o,...a,...s}},l=Object.create(e);return Object.assign(l,c)}return e}let xr={};const Dye=()=>{xr={}};function kS(t){if(xr[t])return xr[t]}function bye(t){const e=kS(t);return _V(e)}function _V(t){if(!t)return!1;const e=t.intString("x00280008");return e&&e>1}function Iye(t){return t.indexOf("&frame=")}function Oye(t){const e=Iye(t),r=e===-1?t:t.slice(0,e),n=parseInt(t.slice(e+7),10)||1;let i;return xr[r]?i=xr[r].dataSet:i=void 0,{dataSet:i,frame:n}}function Mye(t){const e=[],r=kS(t);if(_V(r)){const n=r.intString("x00280008");for(let i=1;i<=n;i++)e.push(`${t}&frame=${i}`)}else e.push(t);return e}const EV={_get:kS,generateMultiframeWADOURIs:Mye,retrieveMultiframeDataset:Oye,isMultiframeDataset:bye};let d0=0,Ic={};function Rye(t){return xr[t]!==void 0}function Lye(t){let e;if(t.includes("&frame=")){const{frame:r,dataSet:n}=EV.retrieveMultiframeDataset(t);e=Eye(r,n)}else xr[t]&&(e=xr[t].dataSet);return e}function Nye(t,e){const r=xr[t];if(!r){console.error(`No loaded dataSet for uri ${t}`);return}d0-=r.dataSet.byteArray.length,r.dataSet=e,d0+=e.byteArray.length,De(Ce,"datasetscachechanged",{uri:t,action:"updated",cacheInfo:B2()})}function Pye(t,e=U2,r){if(xr[t])return new Promise(o=>{xr[t].cacheCount++,o(xr[t].dataSet)});if(Ic[t])return Ic[t].cacheCount++,Ic[t];const n=e(t,r),i=new Promise((o,a)=>{n.then(async function(s){const c={isPartialContent:!1,fileTotalLength:null};if(!(s instanceof ArrayBuffer)){if(!s.arrayBuffer)return a(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=s.flags.isPartialContent,c.fileTotalLength=s.flags.fileTotalLength,s=s.arrayBuffer}const l=new Uint8Array(s);let f;try{c.isPartialContent?f=await CV(l,e,{uri:t,imageId:r,fileTotalLength:c.fileTotalLength}):f=Tn.parseDicom(l)}catch(u){return a(u)}xr[t]={dataSet:f,cacheCount:i.cacheCount},d0+=f.byteArray.length,o(f),De(Ce,"datasetscachechanged",{uri:t,action:"loaded",cacheInfo:B2()})},a).then(()=>{delete Ic[t]},()=>{delete Ic[t]})});return i.cacheCount=1,Ic[t]=i,i}function Aye(t){xr[t]&&(xr[t].cacheCount--,xr[t].cacheCount===0&&(d0-=xr[t].dataSet.byteArray.length,delete xr[t],De(Ce,"datasetscachechanged",{uri:t,action:"unloaded",cacheInfo:B2()})))}function B2(){return{cacheSizeInBytes:d0,numberOfDataSetsCached:Object.keys(xr).length}}function kye(){Dye(),Ic={},d0=0}const Au={isLoaded:Rye,load:Pye,unload:Aye,getInfo:B2,purge:kye,get:Lye,update:Nye};function Vye(t){const e=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;n.length===4&&(n=`x600${r.toString(16)}`);const i=t.elements[`${n}3000`];if(!i)continue;const o=[];for(let a=0;a>s&1}e.push({rows:t.uint16(`${n}0010`),columns:t.uint16(`${n}0011`),type:t.string(`${n}0040`),x:t.int16(`${n}0050`,1)-1,y:t.int16(`${n}0050`,0)-1,pixelData:o,description:t.string(`${n}0022`),label:t.string(`${n}1500`),roiArea:t.string(`${n}1301`),roiMean:t.string(`${n}1302`),roiStandardDeviation:t.string(`${n}1303`)})}return{overlays:e}}function G0(t){return t==="RECON TOMO"||t==="RECON GATED TOMO"}function VS(t,e){const r=t.string("x00080008");if(r){const n=r.split("\\");if(n.length>e)return n[e]}}function Fye(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=VS(t,2);n&&G0(n)&&t.elements.x00540022&&(e=Po(t.elements.x00540022.items[0].dataSet,"x00200037",6))}return e}function Uye(t){let e;const r=t.string("x00080060");if(r!=null&&r.includes("NM")){const n=VS(t,2);n&&G0(n)&&t.elements.x00540022&&(e=Po(t.elements.x00540022.items[0].dataSet,"x00200032",3))}return e}function $E(t){let e=Po(t,"x00200037",6);return!e&&t.elements.x00209116&&(e=Po(t.elements.x00209116.items[0].dataSet,"x00200037",6)),e||(e=Fye(t)),e}function jE(t){let e=Po(t,"x00200032",3);return!e&&t.elements.x00209113&&(e=Po(t.elements.x00209113.items[0].dataSet,"x00200032",3)),e||(e=Uye(t)),e}function HE(t){let e=Po(t,"x00280030",2);return!e&&t.elements.x00289110&&(e=Po(t.elements.x00289110.items[0].dataSet,"x00280030",2)),e}function KE(t){let e;return t.elements.x00180050?e=t.floatString("x00180050"):t.elements.x00289110&&t.elements.x00289110.items.length&&t.elements.x00289110.items[0].dataSet.elements.x00180050&&(e=t.elements.x00289110.items[0].dataSet.floatString("x00180050")),e}function DV(t,e,r){const n={};for(const i of r)try{const o=e(i,t);if(o){const a={};for(const s in o)if(s in o){const c=Bye(s);a[c]=o[s]}Object.assign(n,a)}}catch(o){console.error(`Error retrieving ${i} data:`,o)}return n}const Bye=t=>t.charAt(0).toUpperCase()+t.slice(1),bV=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function qE(t){const e=t.elements.x00186011;return!e||!e.items?[]:e.items.map(n=>{const i=n.dataSet.double("x0018602c"),o=n.dataSet.double("x0018602e"),a=n.dataSet.uint16("x00186024"),s=n.dataSet.uint16("x00186026"),c=n.dataSet.uint16("x0018601a"),l=n.dataSet.uint16("x0018601e"),f=n.dataSet.uint16("x00186018"),u=n.dataSet.uint16("x0018601c"),d=n.dataSet.int32("x00186020")||null,h=n.dataSet.int32("x00186022")||null,g=n.dataSet.uint16("x0018602a"),p=n.dataSet.uint16("x00186028"),v=n.dataSet.uint16("x00186012"),x=n.dataSet.uint16("x00186014"),m=n.dataSet.uint16("x00186016"),y=n.dataSet.uint16("x00186030");return{regionLocationMinY0:c,regionLocationMaxY1:l,regionLocationMinX0:f,regionLocationMaxX1:u,referencePixelX0:d,referencePixelY0:h,physicalDeltaX:i,physicalDeltaY:o,physicalUnitsXDirection:a,physicalUnitsYDirection:s,referencePhysicalPixelValueY:g,referencePhysicalPixelValueX:p,regionSpatialFormat:v,regionDataType:x,regionFlags:m,transducerFrequency:y}})}function FS(t,e){const{MetadataModules:r}=Ao;if(Array.isArray(e))return;const n=Vh(e);if(t===r.MULTIFRAME){const a=EV.retrieveMultiframeDataset(n.url);return a.dataSet?_ye(a.dataSet,a.frame):void 0}let i=n.url;n.frame&&(i=`${i}&frame=${n.frame}`);const o=Au.get(i);if(o)return IV(t,e,o)}function IV(t,e,r){const{MetadataModules:n}=Ao;if(t===n.GENERAL_STUDY)return{studyDescription:r.string("x00081030"),studyDate:Tn.parseDA(r.string("x00080020")),studyTime:Tn.parseTM(r.string("x00080030")||""),accessionNumber:r.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:r.string("x00080060"),seriesInstanceUID:r.string("x0020000e"),seriesNumber:r.intString("x00200011"),studyInstanceUID:r.string("x0020000d"),seriesDate:Tn.parseDA(r.string("x00080021")),seriesTime:Tn.parseTM(r.string("x00080031")||""),acquisitionDate:Tn.parseDA(r.string("x00080022")),acquisitionTime:Tn.parseTM(r.string("x00080032")||"")};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:r.string("x00080018"),instanceNumber:r.intString("x00200013"),lossyImageCompression:r.string("x00282110"),lossyImageCompressionRatio:r.floatString("x00282112"),lossyImageCompressionMethod:r.string("x00282114")};if(t===n.PATIENT)return{patientID:r.string("x00100020"),patientName:r.string("x00100010")};if(t===n.PATIENT_STUDY)return{patientAge:r.intString("x00101010"),patientSize:r.floatString("x00101020"),patientSex:r.string("x00100040"),patientWeight:r.floatString("x00101030")};if(t===n.NM_MULTIFRAME_GEOMETRY){const i=r.string("x00080060"),o=VS(r,2);return{modality:i,imageType:r.string("x00080008"),imageSubType:o,imageOrientationPatient:$E(r),imagePositionPatient:jE(r),sliceThickness:KE(r),pixelSpacing:HE(r),numberOfFrames:r.uint16("x00280008"),isNMReconstructable:G0(o)&&i.includes("NM")}}if(t===n.IMAGE_PLANE){const i=$E(r),o=jE(r),a=HE(r),s=KE(r);let c=null,l=null;a&&(l=a[0],c=a[1]);let f=null,u=null;return i&&(f=[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])],u=[parseFloat(i[3]),parseFloat(i[4]),parseFloat(i[5])]),{frameOfReferenceUID:r.string("x00200052"),rows:r.uint16("x00280010"),columns:r.uint16("x00280011"),imageOrientationPatient:i,rowCosines:f,columnCosines:u,imagePositionPatient:o,sliceThickness:s,sliceLocation:r.floatString("x00201041"),pixelSpacing:a,rowPixelSpacing:l,columnPixelSpacing:c}}if(t===n.CINE)return{frameTime:r.floatString("x00181063")};if(t===n.IMAGE_PIXEL)return mV(r);if(t===n.VOI_LUT){const i=vV(r);return{windowCenter:Po(r,"x00281050",1),windowWidth:Po(r,"x00281051",1),voiLUTSequence:q3(i,r.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:r.floatString("x00281052"),rescaleSlope:r.floatString("x00281053"),rescaleType:r.string("x00281054"),modalityLUTSequence:q3(r.uint16("x00280103"),r.elements.x00283000)};if(t===n.SOP_COMMON)return{sopClassUID:r.string("x00080016"),sopInstanceUID:r.string("x00080018")};if(t===n.PET_ISOTOPE){const i=r.elements.x00540016;if(i===void 0)return;const o=i.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:Tn.parseTM(o.string("x00181072")||""),radionuclideTotalDose:o.floatString("x00181074"),radionuclideHalfLife:o.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return Vye(r);if(t==="transferSyntax"){let i;try{i=r.string("x00020010")}catch{}return{transferSyntaxUID:i}}if(t===n.PET_SERIES)return{correctedImage:r.string("x00280051"),units:r.string("x00541001"),decayCorrection:r.string("x00541102")};if(t===n.PET_IMAGE)return{frameReferenceTime:r.floatString(r.string("x00541300")||""),actualFrameDuration:r.intString(r.string("x00181242"))};if(t===n.ULTRASOUND_ENHANCED_REGION)return qE(r);if(t===n.CALIBRATION&&r.string("x00080060")==="US")return{sequenceOfUltrasoundRegions:qE(r)};if(t==="instance")return DV(e,FS,bV)}let G2=[];function Gye(t){return`dicomfile:${G2.push(t)-1}`}function Wye(t){return G2[t]}function zye(t){G2[t]=void 0}function $ye(){G2=[]}const OV={add:Gye,get:Wye,remove:zye,purge:$ye};function jye(t){const e=t.intString("x00280008"),r=t.elements.x7fe00010;return e!==r.fragments.length}function MV(t,e){if(t.elements.x7fe00010&&t.elements.x7fe00010.basicOffsetTable.length)return Tn.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e);if(jye(t)){const l=Tn.createJPEGBasicOffsetTable(t,t.elements.x7fe00010);return Tn.readEncapsulatedImageFrame(t,t.elements.x7fe00010,e,l)}const r=t.elements.x7fe00010.fragments,n=new Tn.ByteStream(t.byteArrayParser,t.byteArray,t.elements.x7fe00010.dataOffset),i=Tn.readSequenceItem(n);if(i.tag!=="xfffee000")throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";n.seek(i.length);const o=n.position;if(e+1>r.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=o+r[e].offset+8,c=r[e].length;return new Uint8Array(n.byteArray.buffer.slice(n.byteArray.byteOffset+s,n.byteArray.byteOffset+s+c))}function Hye(t,e){return t&1<=t.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(t.byteArray.buffer.slice(f,f+l))}else if(n===16){if(f=c+e*l*2,f>=t.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(t.byteArray.buffer.slice(f,f+l*2))}else if(n===1){if(f=c+e*l*.125,f>=t.byteArray.length)throw new Error("frame exceeds size of pixelData");return RV(t.byteArray,f,l)}else if(n===32){if(f=c+e*l*4,f>=t.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(t.byteArray.buffer.slice(f,f+l*4))}throw new Error("unsupported pixel format")}function NV(t){const e=Vh(t),r=parseInt(e.url,10),n=OV.get(r);return new Promise((i,o)=>{const a=new FileReader;a.onload=s=>{const c=s.target.result;i(c)},a.onerror=o,a.readAsArrayBuffer(n)})}function US(t,e=0){const r=t.elements.x7fe00010||t.elements.x7fe00008;return r?r.encapsulatedPixelData?MV(t,e):LV(t,e):null}function BS(t){let e=t[0],r=t[0],n;const i=t.length;for(let o=1;o=0?e<=255?r=Uint8Array:e<=65535&&(r=Uint16Array):t>=-128&&e<=127?r=Int8Array:t>=-32768&&e<=32767&&(r=Int16Array)),r||Float32Array}function Ny(t,e,r){t.planarConfiguration===0?fV(t.pixelData,e,r):dV(t.pixelData,e,r)}function qye(t,e,r){t.planarConfiguration===0?hV(t.pixelData,e,r):gV(t.pixelData,e,r)}function PV(t,e,r){if(t.photometricInterpretation==="RGB")Ny(t,e,r);else if(t.photometricInterpretation==="YBR_RCT")Ny(t,e,r);else if(t.photometricInterpretation==="YBR_ICT")Ny(t,e,r);else if(t.photometricInterpretation==="PALETTE COLOR")pV(t,e,r);else if(t.photometricInterpretation==="YBR_FULL_422")lye(t.pixelData,e,r);else if(t.photometricInterpretation==="YBR_FULL")qye(t,e,r);else throw new Error(`No color space conversion for photometric interpretation ${t.photometricInterpretation}`)}function Xye(t){if(t===void 0)return!1;const{rows:e,columns:r,photometricInterpretation:n,pixelDataLength:i,planarConfiguration:o}=t;return i===4*r*e?!1:n.endsWith("420")?i===(3*Math.ceil(r/2)+Math.floor(r/2))*e:n.endsWith("422")?i===(3*Math.ceil(r/2)+Math.floor(r/2))*Math.ceil(e/2)+Math.floor(e/2)*r:n!=="RGB"||o===1}function Yye(t){return Jye(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(t))))}function Jye(t){let e;try{return decodeURIComponent(escape(t))}catch(r){if(e=r,e instanceof URIError)return t;throw e}}function AV(t,e,r){const n=new Date().getTime(),i=new Blob([e],{type:"image/jpeg"});return new Promise((o,a)=>{const s=new FileReader;s.readAsBinaryString===void 0?s.readAsArrayBuffer(i):s.readAsBinaryString(i),s.onload=function(){const c=new Image;c.onload=function(){r.height=c.height,r.width=c.width,t.rows=c.height,t.columns=c.width;const l=r.getContext("2d");l.drawImage(this,0,0);const f=l.getImageData(0,0,c.width,c.height),u=new Date().getTime();t.pixelData=new Uint8Array(f.data.buffer),t.imageData=f,t.decodeTimeInMS=u-n;const d=BS(t.pixelData);t.smallestPixelValue=d.min,t.largestPixelValue=d.max,t.pixelDataLength=t.pixelData.length,o(t)},c.onerror=function(l){a(l)},s.readAsBinaryString===void 0?c.src=`data:image/jpeg;base64,${window.btoa(Yye(s.result))}`:c.src=`data:image/jpeg;base64,${window.btoa(s.result)}`},s.onerror=c=>{a(c)}})}function mi(t,e,r,n,i){const o={...n};delete o.loader,delete o.streamingData;const a=cc(),s=o.priority||void 0;return o.transferPixelData&&r.buffer,a.executeTask("dicomImageLoader","decodeTask",{imageFrame:t,transferSyntax:e,pixelData:r,options:o,decodeConfig:i},{priority:s,requestType:o==null?void 0:o.requestType})}function Zye(t,e,r,n,i={},o){switch(e){case"1.2.840.10008.1.2":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.1":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.2":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.1.99":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.5":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.50":return t.bitsAllocated===8&&(t.samplesPerPixel===3||t.samplesPerPixel===4)?AV(t,r,n):mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.51":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.57":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.70":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.80":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.81":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.90":return mi(t,e,r,i,o);case"1.2.840.10008.1.2.4.91":return mi(t,e,r,i,o);case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return mi(t,e,r,i,o)}return Promise.reject(new Error(`No decoder for transfer syntax ${e}`))}function kV(t){const e=Pe("imagePixelModule",t);return{samplesPerPixel:e.samplesPerPixel,photometricInterpretation:e.photometricInterpretation,planarConfiguration:e.planarConfiguration,rows:e.rows,columns:e.columns,bitsAllocated:e.bitsAllocated,bitsStored:e.bitsStored,pixelRepresentation:e.pixelRepresentation,smallestPixelValue:e.smallestPixelValue,largestPixelValue:e.largestPixelValue,redPaletteColorLookupTableDescriptor:e.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:e.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:e.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:e.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:e.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:e.bluePaletteColorLookupTableData,pixelData:void 0,imageId:t}}function Qye(t,e){const r=t.get("modalityLutModule",e)||{},n=t.get("generalSeriesModule",e)||{},{modality:i}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:i},a=t.get("scalingModule",e)||{};return{...o,...i==="PT"&&{suvbw:a.suvbw}}}function VV(t){return t==="RGB"||t==="PALETTE COLOR"||t==="YBR_FULL"||t==="YBR_FULL_422"||t==="YBR_PARTIAL_422"||t==="YBR_PARTIAL_420"||t==="YBR_RCT"||t==="YBR_ICT"}let XE="";function e5e(t){return t!=="1.2.840.10008.5.1.4.1.1.12.1"&&t!=="1.2.840.10008.5.1.4.1.1.12.2.1"}function t5e(t){const e=t.smallestPixelValue,r=t.largestPixelValue,n=Kye(e,r);if(n){const i=new n(t.pixelData);t.pixelData=i}else throw new Error("Could not apply a typed array to the pixel data")}function n5e(t,e){const r=t.length/4;let n=0,i=0;for(let o=0;o{(typeof s[u]=="function"||s[u]instanceof Promise)&&delete s[u]});const l=Zye(s,r,e,a,n,c),f=VV(s.photometricInterpretation);return new Promise((u,d)=>{l.then(function(h){let g=!1;if(n.targetBuffer&&n.targetBuffer.type&&!f){const{arrayBuffer:_,type:E,offset:D=0,length:b}=n.targetBuffer,I=h.pixelDataLength,R=D,M=b??I-R,L={Uint8Array,Uint16Array,Int16Array,Float32Array};if(M!==h.pixelDataLength)throw new Error(`target array for image does not have the same length (${M}) as the decoded image length (${h.pixelDataLength}).`);const A=L[E],G=_?new A(_,R,M):new A(h.pixelData);if(M!==h.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");h.pixelData=G,g=!0}g||t5e(h);const p=Pe(o.IMAGE_PLANE,t)||{},v=Pe(o.VOI_LUT,t)||{},x=Pe(o.MODALITY_LUT,t)||{},m=Pe(o.SOP_COMMON,t)||{},y=Pe(o.CALIBRATION,t)||{},{rows:w,columns:C}=h;if(f){if(Xye(h)){a.height=h.rows,a.width=h.columns;let D=a.getContext("2d").createImageData(h.columns,h.rows);i||(D={...D,data:new Uint8ClampedArray(3*h.columns*h.rows)}),PV(h,D.data,i),h.imageData=D,h.pixelData=D.data,h.pixelDataLength=D.data.length}else if(!i&&h.pixelDataLength===4*w*C){const E=new Uint8Array(h.pixelData.length/4*3);h.pixelData=n5e(h.pixelData,E),h.pixelDataLength=h.pixelData.length}const _=BS(h.pixelData);h.smallestPixelValue=_.min,h.largestPixelValue=_.max}const S=es.createImageVoxelManager({scalarData:h.pixelData,width:h.columns,height:h.rows,numberOfComponents:h.samplesPerPixel}),T={imageId:t,dataType:h.pixelData.constructor.name,color:f,calibration:y,columnPixelSpacing:p.columnPixelSpacing,columns:h.columns,height:h.rows,preScale:h.preScale,intercept:x.rescaleIntercept?x.rescaleIntercept:0,slope:x.rescaleSlope?x.rescaleSlope:1,invert:h.photometricInterpretation==="MONOCHROME1",minPixelValue:h.smallestPixelValue,maxPixelValue:h.largestPixelValue,rowPixelSpacing:p.rowPixelSpacing,rows:h.rows,sizeInBytes:h.pixelData.byteLength,width:h.columns,windowCenter:v.windowCenter?v.windowCenter[0]:void 0,windowWidth:v.windowWidth?v.windowWidth[0]:void 0,voiLUTFunction:v.voiLUTFunction?v.voiLUTFunction:void 0,decodeTimeInMS:h.decodeTimeInMS,floatPixelData:void 0,imageFrame:h,voxelManager:S,rgba:f&&i,getPixelData:()=>h.pixelData,getCanvas:void 0,numberOfComponents:h.samplesPerPixel};if(T.color&&(T.getCanvas=function(){if(XE===t)return a;const _=T.columns,E=T.rows;a.height=E,a.width=_;const D=a.getContext("2d"),b=D.createImageData(_,E),I=h.pixelData;if(I.length===_*E*4)for(let R=0;R0&&e5e(m.sopClassUID)&&(T.modalityLUT=x.modalityLUTSequence[0]),v.voiLUTSequence&&v.voiLUTSequence.length>0&&(T.voiLUT=v.voiLUTSequence[0]),T.color&&(T.windowWidth=256,T.windowCenter=128),T.windowCenter===void 0||T.windowWidth===void 0){const _=T.imageFrame.smallestPixelValue,E=T.imageFrame.largestPixelValue;T.windowWidth=E-_,T.windowCenter=(E+_)/2}u(T)},d)})}function r5e(t,e){t.decache=function(){const r=Vh(e);Au.unload(r.url)}}function FV(t,e,r=0,n,i,o){const a=new Date().getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise((c,l)=>{t.then(f=>{const u=US(f,r),d=f.string("x00020010"),h=new Date().getTime(),g=W2(e,u,d,i);r5e(s,e),g.then(p=>{p=p,p.data=f,p.sharedCacheKey=n;const v=new Date().getTime();p.loadTimeInMS=h-a,p.totalTimeInMS=v-a,o!==void 0&&o.imageDoneCallback!==void 0&&o.imageDoneCallback(p),c(p)},function(p){l({error:p,dataSet:f})})},function(f){l({error:f})})}),s}function i5e(t,e,r=0,n,i){const o=new Date().getTime();return{promise:new Promise((s,c)=>{const l=new Date().getTime();let f;try{const u=US(t,r),d=t.string("x00020010");f=W2(e,u,d,i)}catch(u){c({error:u,dataSet:t});return}f.then(u=>{u=u,u.data=t,u.sharedCacheKey=n;const d=new Date().getTime();u.loadTimeInMS=l-o,u.totalTimeInMS=d-o,s(u)},c)}),cancelFn:void 0}}function UV(t){if(t==="dicomweb"||t==="wadouri")return U2;if(t==="dicomfile")return NV}function Kp(t,e={}){const r=Vh(t);e=Object.assign({},e),delete e.loader;const n=UV(r.scheme);if(Au.isLoaded(r.url)){const o=Au.get(r.url,n,t);return i5e(o,t,r.pixelDataFrame,r.url,e)}const i=Au.load(r.url,n,t);return FV(i,t,r.frame,r.url,e)}function BV(){Ap("dicomweb",Kp),Ap("wadouri",Kp),Ap("dicomfile",Kp),S0(FS)}const o5e={getImagePixelModule:mV,getLUTs:q3,getModalityLUTOutputPixelRepresentation:vV,getNumberValues:Po,metaDataProvider:FS,metadataForDataset:IV},a5e={metaData:o5e,dataSetCacheManager:Au,fileManager:OV,getEncapsulatedImageFrame:MV,getUncompressedImageFrame:LV,loadFileRequest:NV,loadImageFromPromise:FV,getLoaderForScheme:UV,getPixelData:US,loadImage:Kp,parseImageId:Vh,unpackBinaryFrame:RV,register:BV};function lt(t,e,r){return e=e||0,!t||!t.Value||Array.isArray(t.Value)&&t.Value.length<=e?r:t.Value[e]}function s5e(t,e,r){const n=lt(t,e,r);if(n!==void 0)return parseFloat(String(n))}function zt(t,e){const r=lt(t,e);if(r!==void 0)return parseFloat(r)}function jr(t,e){if(!t||!t.Value||!Array.isArray(t.Value)||e&&t.Value.length>s&1}e.push({rows:zt(t[`${n}0010`]),columns:zt(t[`${n}0011`]),type:lt(t[`${n}0040`]),x:zt(t[`${n}0050`],1)-1,y:zt(t[`${n}0050`],0)-1,pixelData:o,description:lt(t[`${n}0022`]),label:lt(t[`${n}1500`]),roiArea:lt(t[`${n}1301`]),roiMean:lt(t[`${n}1302`]),roiStandardDeviation:lt(t[`${n}1303`])})}return{overlays:e}}function z2(t){const e=t.indexOf(":");return t.substring(e+1)}function ku(t,e=!0){return t&&t.Value?t.Value[0]&&e?t.Value[0]:t.Value:t}function GV(t,e,r){const n=(e?Object.values(e[0]):[]).map(o=>o[0]).filter(o=>o!==void 0&&typeof o=="object"),i=(t?Object.values(t[r-1]):[]).map(o=>o.Value[0]).filter(o=>o!==void 0&&typeof o=="object");return{shared:n,perFrame:i}}function WV(t){let{52009230:e,52009229:r,"00280008":n,...i}=t;return e=ku(e,!1),r=ku(r,!1),n=ku(n),{PerFrameFunctionalGroupsSequence:e,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:i}}function l5e(t,e){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:i,rest:o}=WV(e);if(r||i>1){const{shared:a,perFrame:s}=GV(r,n,t),c=Object.assign(e,{frameNumber:t});return[...a,...s].forEach(l=>{Object.entries(l).forEach(([f,u])=>{c[f]=u})}),Object.assign(o,{"00280008":i},c)}return e}let Uh=[],bm={};function zV(t){const e=t.indexOf("/frames/")+8,r=t.slice(0,e),n=parseInt(t.slice(e),10);return{metadata:Uh[`${r}1`],frame:n}}function u5e(t){const e=z2(t);return zV(e)}function f5e(t){const e=lt(t["00280008"]);return e&&e>1}function d5e(t,e){const r=z2(t);Object.defineProperty(e,"isMultiframe",{value:f5e(e),enumerable:!1}),Uh[r]=e}function h5e(t){const e=z2(t),r=Uh[e];if(r&&!(r!=null&&r.isMultiframe))return r;const n=bm[e];if(n)return n;const i=zV(e);if(!i||!i.metadata)return;const{metadata:o,frame:a}=i;if(o){const s=l5e(a,o);return bm[e]=s,s}}function g5e(t){const e=z2(t);Uh[e]=void 0,bm[e]=void 0}function p5e(){Uh=[],bm={}}const GS={add:d5e,get:h5e,remove:g5e,purge:p5e};function $V(t){return lt(t["00080060"]).includes("NM")}function WS(t,e){const r=ku(t["00080008"],!1);if(r)return r[e]}function m5e(t){let e;const r=WS(t,2);if(r&&G0(r)){const n=ku(t["00540022"]);n&&(e=jr(n["00200037"],6))}return e}function v5e(t){let e;const r=WS(t,2);if(r&&G0(r)){const n=ku(t["00540022"]);n&&(e=jr(n["00200032"],3))}return e}function YE(t){let e=jr(t["00200037"],6);return!e&&$V(t)&&(e=m5e(t)),e}function JE(t){let e=jr(t["00200032"],3);return!e&&$V(t)&&(e=v5e(t)),e}function $r(t,e){const r=jr(t[e]);return r?r[0]:null}function y5e(t){var e;return(e=t==null?void 0:t.Value)!=null&&e.length?Array.isArray(t.Value)?t.Value:typeof t.Value=="object"?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[t.Value]):[]:[]}function ZE(t){const e=y5e(t["00186011"]);return!e||!e.length?null:e.map(n=>{const i=$r(n,"0018602C"),o=$r(n,"0018602E"),a=$r(n,"00186024"),s=$r(n,"00186026"),c=$r(n,"0018601A"),l=$r(n,"0018601E"),f=$r(n,"00186018"),u=$r(n,"0018601C"),d=$r(n,"00186020"),h=$r(n,"00186022"),g=$r(n,"0018602A"),p=$r(n,"00186028"),v=$r(n,"00186012"),x=$r(n,"00186014"),m=$r(n,"00186016"),y=$r(n,"00186030");return{regionLocationMinY0:c,regionLocationMaxY1:l,regionLocationMinX0:f,regionLocationMaxX1:u,referencePixelX0:d,referencePixelY0:h,physicalDeltaX:i,physicalDeltaY:o,physicalUnitsXDirection:a,physicalUnitsYDirection:s,referencePhysicalPixelValueY:g,referencePhysicalPixelValueX:p,regionSpatialFormat:v,regionDataType:x,regionFlags:m,transducerFrequency:y}})}function zS(t,e){const{MetadataModules:r}=Ao;if(t===r.MULTIFRAME){const{metadata:i,frame:o}=u5e(e);if(!i)return;const{PerFrameFunctionalGroupsSequence:a,SharedFunctionalGroupsSequence:s,NumberOfFrames:c}=WV(i);if(a||c>1){const{shared:l,perFrame:f}=GV(a,s,o);return{NumberOfFrames:c,PerFrameFunctionalInformation:f,SharedFunctionalInformation:l}}return{NumberOfFrames:c}}const n=GS.get(e);if(n){if(t===r.GENERAL_STUDY)return{studyDescription:lt(n["00081030"]),studyDate:Tn.parseDA(lt(n["00080020"])),studyTime:Tn.parseTM(lt(n["00080030"],0,"")),accessionNumber:lt(n["00080050"])};if(t===r.GENERAL_SERIES)return{modality:lt(n["00080060"]),seriesInstanceUID:lt(n["0020000E"]),seriesNumber:zt(n["00200011"]),studyInstanceUID:lt(n["0020000D"]),seriesDate:Tn.parseDA(lt(n["00080021"])),seriesTime:Tn.parseTM(lt(n["00080031"],0,"")),acquisitionDate:Tn.parseDA(lt(n["00080022"])),acquisitionTime:Tn.parseTM(lt(n["00080032"],0,""))};if(t===r.GENERAL_IMAGE)return{sopInstanceUID:lt(n["00080018"]),instanceNumber:zt(n["00200013"]),lossyImageCompression:lt(n["00282110"]),lossyImageCompressionRatio:zt(n["00282112"]),lossyImageCompressionMethod:lt(n["00282114"])};if(t===r.PATIENT)return{patientID:lt(n["00100020"]),patientName:lt(n["00100010"])};if(t===r.PATIENT_STUDY)return{patientAge:zt(n["00101010"]),patientSize:zt(n["00101020"]),patientSex:lt(n["00100040"]),patientWeight:zt(n["00101030"])};if(t===r.NM_MULTIFRAME_GEOMETRY){const i=lt(n["00080060"]),o=WS(n,2);return{modality:i,imageType:lt(n["00080008"]),imageSubType:o,imageOrientationPatient:YE(n),imagePositionPatient:JE(n),sliceThickness:zt(n["00180050"]),spacingBetweenSlices:zt(n["00180088"]),pixelSpacing:jr(n["00280030"],2),numberOfFrames:zt(n["00280008"]),isNMReconstructable:G0(o)&&i.includes("NM")}}if(t===r.IMAGE_PLANE){let i=YE(n),o=JE(n);const a=jr(n["00280030"],2);let s=null,c=null,l=null,f=null,u=!1;return a?(c=a[0],s=a[1]):(u=!0,c=1,s=1),i?(l=[parseFloat(i[0]),parseFloat(i[1]),parseFloat(i[2])],f=[parseFloat(i[3]),parseFloat(i[4]),parseFloat(i[5])]):(l=[0,1,0],f=[0,0,-1],u=!0,i=[...l,...f]),o||(o=[0,0,0],u=!0),{frameOfReferenceUID:lt(n["00200052"]),rows:zt(n["00280010"]),columns:zt(n["00280011"]),imageOrientationPatient:i,rowCosines:l,columnCosines:f,imagePositionPatient:o,sliceThickness:zt(n["00180050"]),sliceLocation:zt(n["00201041"]),pixelSpacing:a,rowPixelSpacing:c,columnPixelSpacing:s,usingDefaultValues:u}}if(t===r.ULTRASOUND_ENHANCED_REGION)return ZE(n);if(t===r.CALIBRATION&<(n["00080060"])==="US")return{sequenceOfUltrasoundRegions:ZE(n)};if(t===r.IMAGE_URL)return x5e(e,n);if(t===r.CINE)return w5e(e,n);if(t===r.IMAGE_PIXEL)return{samplesPerPixel:zt(n["00280002"]),photometricInterpretation:lt(n["00280004"]),rows:zt(n["00280010"]),columns:zt(n["00280011"]),bitsAllocated:zt(n["00280100"]),bitsStored:zt(n["00280101"]),highBit:lt(n["00280102"]),pixelRepresentation:zt(n["00280103"]),planarConfiguration:zt(n["00280006"]),pixelAspectRatio:lt(n["00280034"]),smallestPixelValue:zt(n["00280106"]),largestPixelValue:zt(n["00280107"]),redPaletteColorLookupTableDescriptor:jr(n["00281101"]),greenPaletteColorLookupTableDescriptor:jr(n["00281102"]),bluePaletteColorLookupTableDescriptor:jr(n["00281103"]),redPaletteColorLookupTableData:jr(n["00281201"]),greenPaletteColorLookupTableData:jr(n["00281202"]),bluePaletteColorLookupTableData:jr(n["00281203"])};if(t===r.VOI_LUT)return{windowCenter:jr(n["00281050"],1),windowWidth:jr(n["00281051"],1)};if(t===r.MODALITY_LUT)return{rescaleIntercept:zt(n["00281052"]),rescaleSlope:zt(n["00281053"]),rescaleType:lt(n["00281054"])};if(t===r.SOP_COMMON)return{sopClassUID:lt(n["00080016"]),sopInstanceUID:lt(n["00080018"])};if(t===r.PET_ISOTOPE){const i=lt(n["00540016"]);return i===void 0?void 0:{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:Tn.parseTM(lt(i["00181072"],0,"")),radiopharmaceuticalStartDateTime:lt(i["00181078"],0,""),radionuclideTotalDose:zt(i["00181074"]),radionuclideHalfLife:zt(i["00181075"])}}}if(t===r.OVERLAY_PLANE)return c5e(n);if(t==="transferSyntax")return jV(e,n);if(t===r.PET_SERIES)return{correctedImage:lt(n["00280051"]),units:lt(n["00541001"]),decayCorrection:lt(n["00541102"])};if(t===r.PET_IMAGE)return{frameReferenceTime:zt(n["00541300"]),actualFrameDuration:zt(n["00181242"])};if(t==="instance")return DV(e,zS,bV)}}function x5e(t,e){const{transferSyntaxUID:r}=jV(t,e),n=mR(r),i=t.substring(7),o=i.replace("/frames/","/thumbnail/");let a=i.replace("/frames/","/rendered/");return n&&(a=a.replace("/rendered/1","/rendered")),{isVideo:n,rendered:a,thumbnail:o}}function w5e(t,e){return{cineRate:lt(e["00180040"]),numberOfFrames:zt(e["00280008"])}}function jV(t,e){return{transferSyntaxUID:lt(e["00020010"])||lt(e["00083002"])}}function C5e(t,e,r={},n={}){const i=Fh(),{retrieveOptions:o={},streamingData:a}=n,s=a.chunkSize||T5e(e,o,"chunkSize")||65536,c=f=>{if(typeof i.errorInterceptor=="function"){const u=new Error("request failed");i.errorInterceptor(u)}else console.warn("rangeRequest:Caught",f)};return new Promise(async(f,u)=>{const d=Object.assign({},r);Object.keys(d).forEach(function(h){(d[h]===null||d[h]===void 0)&&delete d[h]});try{a.encodedData||(a.chunkSize=s,a.rangesFetched=0);const h=_5e(a,o),{encodedData:g,responseHeaders:p}=await S5e(t,d,h,a),v=p.get("content-type"),{totalBytes:x}=a,m=x===g.byteLength,y=PS(v,g,{isPartial:!0}),w=AS(o,m||y.extractDone);f({...y,imageQualityStatus:w,percentComplete:y.extractDone?100:s*100/x})}catch(h){c(h),console.error(h),u(h)}})}async function S5e(t,e,r,n){r&&(e=Object.assign(e,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:i}=n;if(r[1]&&(i==null?void 0:i.byteLength)>r[1])return n;const o=await fetch(t,{headers:e,signal:void 0}),a=await o.arrayBuffer(),s=new Uint8Array(a),{status:c}=o;let l;i?(l=new Uint8Array(i.length+s.length),l.set(i,0),l.set(s,i.length),n.rangesFetched=1):(l=new Uint8Array(s.length),l.set(s,0),n.rangesFetched++),n.encodedData=i=l,n.responseHeaders=o.headers;const f=o.headers.get("Content-Range");return f?n.totalBytes=Number(f.split("/")[1]):c!==206||!r?n.totalBytes=i==null?void 0:i.byteLength:r[1]===""||(i==null?void 0:i.length)r-i?[(n==null?void 0:n.byteLength)||0,""]:[(n==null?void 0:n.byteLength)||0,i*(o+1)-1]}function $S(t,e,r="application/octet-stream",n){const{streamingData:i,retrieveOptions:o={}}=n||{},a={Accept:r};let s=o.urlArguments?`${t}${t.indexOf("?")===-1?"?":"&"}${o.urlArguments}`:t;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),(i==null?void 0:i.url)!==s&&(n.streamingData={url:s}),o.rangeIndex!==void 0)return C5e(s,e,a,n);if(o.streaming)return wV(s,e,a,n);const c=U2(s,e,a),{xhr:l}=c;return c.then(function(f){const u=l.getResponseHeader("Content-Type")||"application/octet-stream",d=PS(u,new Uint8Array(f));return d.imageQualityStatus=AS(o,!0),d})}const{ProgressiveIterator:QE}=Yt,{ImageQualityStatus:e6}=Ao,E5e=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function D5e(t){const e="1.2.840.10008.1.2";if(!t)return e;const r=t.split(";"),n={};r.forEach(o=>{const a=o.split("=");if(a.length!==2)return;const s=a[1].trim().replace(/"/g,"");n[a[0].trim()]=s});const i={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:t&&!Object.keys(n).length&&i[t]?i[t]:n.type&&i[n.type]?i[n.type]:i[t]?i[t]:e}function b5e(){return _h}const I5e="multipart/related; type=application/octet-stream; transfer-syntax=*";function HV(t,e={}){const r=b5e(),n=new Date().getTime(),i=new QE("decompress");async function o(f,u,d){i.generate(async h=>{var v;const g=QE.as($S(f,u,d,e));let p=10;for await(const x of g){const{pixelData:m,imageQualityStatus:y=e6.FULL_RESOLUTION,percentComplete:w,done:C=!0,extractDone:S=!0}=x,T=D5e(x.contentType);if(!S&&!E5e.has(T))continue;const _=x.decodeLevel??(y===e6.FULL_RESOLUTION?0:O5e(w,(v=e.retrieveOptions)==null?void 0:v.decodeLevel));if(!(!C&&p<=_))try{const E={...e,decodeLevel:_},D=await W2(u,m,T,E),b=new Date().getTime();D.loadTimeInMS=b-n,D.transferSyntaxUID=T,D.imageQualityStatus=y,h.add(D,C),p=_}catch(E){if(S)throw console.warn("Couldn't decode",E),E}}})}const a=e.requestType||ht.Interaction,s=e.additionalDetails||{imageId:t},c=e.priority===void 0?5:e.priority,l=t.substring(7);return r.addRequest(o.bind(this,l,t,I5e),a,s,c),{promise:i.getDonePromise(),cancelFn:void 0}}function O5e(t,e=4){const r=t/100-.02;return r>1/4?Math.min(e,0):r>1/16?Math.min(e,1):r>1/64?Math.min(e,2):Math.min(e,3)}function KV(){Ap("wadors",HV),S0(zS)}const M5e={getNumberString:s5e,getNumberValue:zt,getNumberValues:jr,getValue:lt,metaDataProvider:zS},R5e={metaData:M5e,findIndexOfString:Y3,getPixelData:$S,loadImage:HV,metaDataManager:GS,register:KV};function L5e(){KV(),BV()}const N5e=()=>new Worker(new URL("/static/dv3d/assets/decodeImageFrameWorker-pUTBwvad.js",import.meta.url),{type:"module"});function qV(t){xV(t),L5e();const e=cc(),r=(t==null?void 0:t.maxWebWorkers)||P5e();e.registerWorker("dicomImageLoader",N5e,{maxWorkerInstances:r})}function P5e(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.max(1,Math.floor(navigator.hardwareConcurrency/2)):1}function A5e(t,e){if(e=e||t.transferSyntax,t.bitsAllocated===8&&e==="1.2.840.10008.1.2.4.50"&&(t.samplesPerPixel===3||t.samplesPerPixel===4))return!0}const k5e={IMPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2",EXPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2.1",DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN:"1.2.840.10008.1.2.1.99",EXPLICIT_VR_BIG_ENDIAN:"1.2.840.10008.1.2.2",JPEG_BASELINE_PROCESS_1:"1.2.840.10008.1.2.4.50",JPEG_EXTENDED_PROCESS_2_4:"1.2.840.10008.1.2.4.51",JPEG_EXTENDED_PROCESSES_3_5:"1.2.840.10008.1.2.4.52",JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_6_8:"1.2.840.10008.1.2.4.53",JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_7_9:"1.2.840.10008.1.2.4.54",JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_10_12:"1.2.840.10008.1.2.4.55",JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_11_13:"1.2.840.10008.1.2.4.56",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_14:"1.2.840.10008.1.2.4.57",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_15:"1.2.840.10008.1.2.4.58",JPEG_EXTENDED_HIERARCHICAL_PROCESSES_16_18:"1.2.840.10008.1.2.4.59",JPEG_EXTENDED_HIERARCHICAL_PROCESSES_17_19:"1.2.840.10008.1.2.4.60",JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_20_22:"1.2.840.10008.1.2.4.61",JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_21_23:"1.2.840.10008.1.2.4.62",JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_24_26:"1.2.840.10008.1.2.4.63",JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_25_27:"1.2.840.10008.1.2.4.64",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_28:"1.2.840.10008.1.2.4.65",JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_29:"1.2.840.10008.1.2.4.66",JPEG_LOSSLESS_NONHIERARCHICAL_FIRST_ORDER_PREDICTION_PROCESS_14:"1.2.840.10008.1.2.4.70",JPEG_LS_LOSSLESS_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.80",JPEG_LS_LOSSY_NEAR_LOSSLESS_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.81",JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY:"1.2.840.10008.1.2.4.90",JPEG_2000_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.91",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY:"1.2.840.10008.1.2.4.92",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.93",JPIP_REFERENCED:"1.2.840.10008.1.2.4.94",JPIP_REFERENCED_DEFLATE:"1.2.840.10008.1.2.4.95",MPEG2_MAIN_PROFILE_MAIN_LEVEL:"1.2.840.10008.1.2.4.100",MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1:"1.2.840.10008.1.2.4.101",MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1:"1.2.840.10008.1.2.4.102",MPEG4_AVC_H264_HIGH_PROFILE_FOR_2D_VIDEO:"1.2.840.10008.1.2.4.103",MPEG4_AVC_H264_HIGH_PROFILE_FOR_3D_VIDEO:"1.2.840.10008.1.2.4.104",JPIP_LOSSLESS:"1.2.840.10008.1.2.4.96",JPIP_PART2_MULTICOMPONENT_IMAGE_COMPRESSION:"1.2.840.10008.1.2.4.97",RFC_2557_MIME_ENCAPSULATION:"1.2.840.10008.1.2.6.1",JPEG_XR_IMAGE_COMPRESSION:"1.2.840.10008.1.2.6.2",JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED:"1.2.840.10008.1.2.4.90R",JPEG_2000_IMAGE_COMPRESSION_RETIRED:"1.2.840.10008.1.2.4.91R",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED:"1.2.840.10008.1.2.4.92R",JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_RETIRED:"1.2.840.10008.1.2.4.93R"},V5e=Object.freeze(Object.defineProperty({__proto__:null,transferSyntaxes:k5e},Symbol.toStringTag,{value:"Module"})),t6={constants:V5e,convertRGBColorByPixel:fV,convertRGBColorByPlane:dV,convertYBRFullByPixel:hV,convertYBRFullByPlane:gV,convertPALETTECOLOR:pV,wadouri:a5e,wadors:R5e,init:qV,convertColorSpace:PV,createImage:W2,decodeJPEGBaseline8BitColor:AV,getImageFrame:kV,getPixelData:$S,getMinMax:BS,isColorImage:VV,isJPEGBaseline8BitColor:A5e,internal:Cye};class ih extends ic{}n4(ih,"toolName","NoLabelArrowAnnotate");function n6(t,e){const r=Pe("imagePlaneModule",t);if(!r)return;const{rowCosines:n,columnCosines:i,imagePositionPatient:o,rowPixelSpacing:a,columnPixelSpacing:s}=r;if(!n||!i||!o)return;const c=s||1,l=a||1,f=n,u=i,d=o;return[d[0]+e.x*u[0]*c+e.y*f[0]*l,d[1]+e.x*u[1]*c+e.y*f[1]*l,d[2]+e.x*u[2]*c+e.y*f[2]*l]}window.cornerstone3dTools=cye;const{MouseBindings:gf,KeyboardBindings:r6}=qR,{IMAGE_RENDERED:i6}=Se,F5e=[{name:"Soft Tissue",center:40,width:400},{name:"Lung",center:-600,width:1500},{name:"Bone",center:300,width:1500},{name:"Brain",center:40,width:80},{name:"Abdomen",center:60,width:400}],pf=[{label:"Window/Level",value:a0.toolName},{label:"Pan",value:o0.toolName},{label:"Zoom",value:c0.toolName},{label:"Stack Scroll",value:yl.toolName},{label:"Rotate",value:s0.toolName},{label:"Length",value:xl.toolName},{label:"Probe",value:rc.toolName},{label:"Arrow (No Label)",value:ih.toolName},{label:"Arrow Annotate",value:ic.toolName},{label:"Rectangle ROI",value:tc.toolName},{label:"Ellipse ROI",value:u0.toolName},{label:"Freehand ROI",value:vl.toolName},{label:"Freehand Contour Segmentation",value:Za.toolName},{label:"Sculptor",value:l0.toolName},{label:"Reference Cursors",value:Ri.toolName}],o6=[{label:"Left",value:"Primary"},{label:"Middle",value:"Auxiliary"},{label:"Right",value:"Secondary"}],op=[{label:"Left",value:"Primary",mask:1},{label:"Middle",value:"Auxiliary",mask:4},{label:"Right",value:"Secondary",mask:2},{label:"Left + Right",value:"Primary_and_Secondary",mask:3},{label:"Left + Middle",value:"Primary_and_Auxiliary",mask:5},{label:"Right + Middle",value:"Secondary_and_Auxiliary",mask:6},{label:"Left + Right + Middle",value:"Primary_and_Secondary_and_Auxiliary",mask:7},{label:"Fourth Button",value:"Fourth_Button",mask:8},{label:"Fifth Button",value:"Fifth_Button",mask:16},{label:"Mouse Wheel",value:"Wheel",mask:524288},{label:"Mouse Wheel + Left",value:"Wheel_Primary",mask:524289}];function a6({container_id:t,imageStacks:e,autoCacheStack:r,annotationJson:n,viewerState:i,...o}){var YS,JS,ZS,QS,e4,t4;const a=Ze.useRef(null),s=Ze.useRef(!1),[c,l]=Ze.useState(!1),[f,u]=Ze.useState(!1),[d,h]=Ze.useState(null),[g,p]=Ze.useState(null),v=9,x="renderingEngine_"+t,m="TOOL_GROUP_"+t,y=Ze.useRef(null),w=Ze.useRef(!1),[C,S]=Ze.useState([]),[T,_]=Ze.useState(0),[E,D]=Ze.useState(()=>Array(v).fill([])),[b,I]=Ze.useState(()=>Array(v).fill(0)),[R,M]=Ze.useState(null);Ze.useEffect(()=>{let oe=!1;if(n||i){M(n?"annotations":"viewerState");const Ie=setTimeout(()=>{if(oe)return;const ge=t||"default";if(n)try{const se=window[`importAnnotations_${ge}`]||window.importAnnotations;typeof se=="function"&&se(n)}catch(se){console.error("Failed to import annotations from prop:",se)}if(i)try{const se=window[`importViewerState_${ge}`]||window.importViewerState;typeof se=="function"&&se(i)}catch(se){console.error("Failed to import viewer state from prop:",se)}M(null)},800);return()=>{oe=!0,clearTimeout(Ie),M(null)}}},[n,i,t]),Ze.useEffect(()=>{e().then(async oe=>{const Ie=await Promise.all(oe.map(async ge=>{let se;try{const Oe=ge[0];if(Oe&&Oe.startsWith("wadouri:")){const ke=Oe.slice(8),$e=await(await fetch(ke)).arrayBuffer();se=Tn.parseDicom(new Uint8Array($e)).string("x0020000d")}}catch{}return{imageIds:ge,studyInstanceUID:se}}));S(Ie),await Q(oe[0]),D(Array(v).fill(oe[0]||[]))})},[]);const L=async(oe,Ie)=>{const ge=C[Ie];if(!ge)return;const se=ge.imageIds;q(Oe=>{const ke=[...Oe];return ke[oe]="stack",ke}),D(Oe=>{const ke=[...Oe];return ke[oe]=se,ke}),I(Oe=>{const ke=[...Oe];return ke[oe]=Ie,ke}),await Q(se)},[A,G]=Ze.useState(!1),[P,N]=Ze.useState(!0),[V,$]=Ze.useState(!1),[H,Y]=Ze.useState(!1),ne=()=>{console.log("Sorting viewport imageIds by slice location"),D(oe=>oe.map((ge,se)=>{if(!ge||ge.length===0)return ge;const Fe=[...ge.map($e=>{const Ue=Pe("imagePlaneModule",$e);let mt=null;return Ue&&(Ue.sliceLocation!==void 0?mt=Number(Ue.sliceLocation):Ue.imagePositionPatient&&Array.isArray(Ue.imagePositionPatient)&&Ue.imagePositionPatient.length===3&&(mt=Number(Ue.imagePositionPatient[2]))),{imageId:$e,sortKey:mt}})].sort(($e,Ue)=>$e.sortKey!==null&&Ue.sortKey!==null?$e.sortKey-Ue.sortKey:$e.imageId.localeCompare(Ue.imageId)).map($e=>$e.imageId);return JSON.stringify(Fe)===JSON.stringify(ge)?ge:Fe}))},Q=async oe=>{console.log("Setting loaded imageIds:",oe),console.log("autoCacheStack:",r);const Ie=[];if(r){for(const ge of oe)if(ge.startsWith("wadouri:")){console.log("Caching metadata for imageId:",ge);try{const se=ge.slice(8);if(t6.wadouri.dataSetCacheManager){const Oe=t6.wadouri.dataSetCacheManager.load(se);Oe&&typeof Oe.then=="function"&&Ie.push(Oe)}else console.warn("MetaDataManager not found. Unable to cache metadata.")}catch(se){console.warn(`Failed to cache metadata for ${ge}:`,se)}}await Promise.all(Ie),U&&(console.log("Sorting viewport imageIds by slice location"),ne())}},[ee,de]=Ze.useState({rows:1,cols:1}),[fe,le]=Ze.useState(!1),k=Ze.useRef([]),O=Ze.useRef({}),B=Ze.useRef({}),[U,z]=Ze.useState(!0),[j,K]=Ze.useState(!0),ae=[];for(let oe=1;oe<=3;oe++)for(let Ie=1;Ie<=3;Ie++)ae.push({rows:oe,cols:Ie});const[he,ye]=Ze.useState(()=>Array(ee.rows*ee.cols).fill({index:0,total:0,windowCenter:"",windowWidth:""})),[Te,q]=Ze.useState(()=>Array(v).fill("stack")),[J,ie]=Ze.useState(()=>Array(ee.rows*ee.cols).fill(!1)),[Z,te]=Ze.useState({Primary:yl.toolName,Auxiliary:o0.toolName,Secondary:a0.toolName,Primary_and_Secondary:c0.toolName,Fourth_Button:s0.toolName,Wheel:yl.toolName}),[me,X]=Ze.useState({Primary:xl.toolName,Auxiliary:rc.toolName,Secondary:ic.toolName}),[Ae,Be]=Ze.useState(!1);Ze.useEffect(()=>{const oe=ge=>{ge.ctrlKey&&Be(!0)},Ie=ge=>{ge.ctrlKey||Be(!1)};return window.addEventListener("keydown",oe),window.addEventListener("keyup",Ie),()=>{window.removeEventListener("keydown",oe),window.removeEventListener("keyup",Ie)}},[]);const[Ve,ue]=Ze.useState(!1),[Ee,Me]=Ze.useState(null),Re=(oe,Ie)=>{Vi&&Vi(Ie),qS(ge=>{const se=[...ge];return se[oe]=Ie,se})},We=(oe,Ie,ge)=>{const se=Ru()||[];se.forEach(ke=>{ke.annotationUID===Ie&&(ke.isSelected=!1)}),Ot(Ie),y.current.render();const Oe=ge.filter(ke=>ke.annotationUID!==Ie);qS(ke=>{const Fe=[...ke],$e=Oe.length>0?Oe[0].annotationUID:null;return Fe[oe]=$e,se.forEach(Ue=>{Ue.isSelected=Ue.annotationUID===$e}),Vi($e),y.current.render(),Fe})},ut=()=>{const oe=E.findIndex(Oe=>Oe&&Oe.length>0);if(oe===-1){Me("No images loaded."),ue(!0);return}const Ie=E[oe][0],ge=["imagePlaneModule","generalSeriesModule","generalStudyModule","patientModule","imagePixelModule","voiLutModule","modalityLutModule","sopCommonModule","petIsotopeModule","multiframeModule","cineModule","overlayPlaneModule","generalImageModule","stackModule","voiLutModule","modalityLutModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule","petSeriesModule","petImageModule","petIsotopeModule"],se={};ge.forEach(Oe=>{const ke=Pe(Oe,Ie);ke!==void 0&&(se[Oe]=ke)}),Me(be.jsx("pre",{style:{maxHeight:600,overflow:"auto",fontSize:13,color:"#fff"},children:JSON.stringify(se,null,2)})),ue(!0)};Ze.useEffect(()=>(window.loadDicomStackFromFiles=oe=>{const Ie=Array.from(oe);sr({target:{files:Ie}})},()=>{window.loadDicomStackFromFiles=void 0}),[]);const[ze,ft]=Ze.useState(!1);Ze.useEffect(()=>{const oe=Wn(m);oe&&["ArrowAnnotate","NoLabelArrowAnnotate","Length","RectangleROI","EllipticalROI","PlanarFreehandROI","PlanarFreehandContourSegmentation"].forEach(Ie=>{oe.setToolConfiguration(Ie,{color:"#00e676",selectedColor:"#ffeb3b"})})},[m]),Ze.useEffect(()=>{const oe=ge=>{ge.altKey&&ft(!0)},Ie=ge=>{ge.altKey||ft(!1)};return window.addEventListener("keydown",oe),window.addEventListener("keyup",Ie),()=>{window.removeEventListener("keydown",oe),window.removeEventListener("keyup",Ie)}},[]),Ze.useEffect(()=>{if(!j)return;const oe=Wn(m);oe&&(ze?(oe.hasTool(Ri.toolName)||oe.addTool(Ri.toolName),oe.setToolEnabled(Ri.toolName),oe.setToolActive(Ri.toolName)):oe.hasTool(Ri.toolName)&&oe.setToolDisabled(Ri.toolName))},[ze,j]);const dt=Ze.useCallback(()=>{[Wn(m)].forEach(Ie=>{if(Ie){pf.forEach(se=>{Ie.setToolPassive(se.value,{removeAllBindings:!0})}),Ie.setToolDisabled(Ri.toolName);const ge={};Object.entries(Z).forEach(([se,Oe])=>{ge[Oe]||(ge[Oe]=[]);const ke=op.find(Fe=>Fe.value===se);ke?ge[Oe].push({mouseButton:ke.mask}):gf[se]&&ge[Oe].push({mouseButton:gf[se]})}),Object.entries(me).forEach(([se,Oe])=>{if(!Oe)return;ge[Oe]||(ge[Oe]=[]);const ke=op.find(Fe=>Fe.value===se);ke?ge[Oe].push({mouseButton:ke.mask,modifierKey:r6.Ctrl}):gf[se]&&ge[Oe].push({mouseButton:gf[se],modifierKey:r6.Ctrl})}),Object.entries(ge).forEach(([se,Oe])=>{Ie.setToolActive(se,{bindings:Oe})})}})},[Z,me]),[dn,Pn]=Ze.useState(!1),Gt=Ze.useRef(null),sr=async oe=>{const Ie=oe.target.files;if(!Ie||Ie.length===0)return;z(!1);const ge=Array.from(Ie).sort(($e,Ue)=>$e.name.localeCompare(Ue.name));let se;const Oe=await ge[0].arrayBuffer();se=Tn.parseDicom(new Uint8Array(Oe)).string("x0020000d"),console.log("StudyInstanceUID:",se);const Fe=ge.map($e=>`wadouri:${URL.createObjectURL($e)}`);S($e=>{const Ue=[...$e,{imageIds:Fe,studyInstanceUID:se}];return D(mt=>{const Et=[...mt];return Et[0]=Fe,Et}),I(mt=>{const Et=[...mt];return Et[0]=Ue.length-1,Et}),Q(Fe),Ue})},ji=Ze.useCallback((oe,Ie)=>{if(!Ie)return;const ge=typeof Ie.getCurrentImageIdIndex=="function"?Ie.getCurrentImageIdIndex():0,Oe=(typeof Ie.getImageIds=="function"?Ie.getImageIds():[]).length;let ke="",Fe="";if(typeof Ie.getProperties=="function"){const $e=Ie.getProperties();if($e.voiRange){const{lower:Ue,upper:mt}=$e.voiRange;ke=((mt+Ue)/2).toFixed(0),Fe=(mt-Ue).toFixed(0)}}ye($e=>{const Ue=[...$e];return Ue[oe]={index:ge+1,total:Oe,windowCenter:ke,windowWidth:Fe},Ue})},[]),[Ml,xe]=Ze.useState(!1);function Le(){for(let oe=0;oe{const oe=async()=>{var ke;console.log("setup"),s.current||(s.current=!0,await oZ(),await lA({showSVGCursors:!0}),qV({maxWebWorkers:1}));let ge=y.current;ge||(ge=new aR(x),y.current=ge);let se=Wn(m);se||(se=U5e(m)),Te.slice(0,ee.rows*ee.cols).filter(Fe=>Fe==="volume").length,Rl(se);for(let Fe=0;Fe{if(mt.offsetWidth>0&&mt.offsetHeight>0){ge.resize();const An=ge.getViewport(Ue);An&&typeof An.resize=="function"&&An.resize(),An&&typeof An.render=="function"&&An.render()}});st.observe(mt),mt._resizeObserver=st}if(Te[Fe]==="stack")$e&&!w.current&&cn.setStack($e),A?se.removeViewports(x,Ue):se.addViewport(Ue,x);else if(Te[Fe]==="volume"){se.addViewport(Ue,x);const st=`myVolumeId_${Fe}`;(await iC(st,{imageIds:$e})).load(),cn.setVolumes([{volumeId:st}]),cn.render();continue}if(cn.render(),!w.current){B.current[Fe]!==void 0&&typeof cn.setImageIdIndex=="function"&&Ho(cn.element,{imageIndex:B.current[Fe]});const st=O.current[Fe];if(st&&typeof cn.setProperties=="function"){const{voiRange:An,invert:Gr,interpolationType:Or,VOILUTFunction:Vo,colormap:Hi}=st,pa={};An&&An.lower!==void 0&&An.upper!==void 0&&(pa.voiRange=An),Gr!==void 0&&(pa.invert=Gr),Or!==void 0&&(pa.interpolationType=Or),Vo&&(pa.VOILUTFunction=Vo),Hi!=null&&(typeof Hi=="string"||typeof Hi=="object"&&!("actor"in Hi))&&(pa.colormap=Hi),setTimeout(()=>{console.log("Restoring properties (timeout) for viewport",Fe,pa),cn.setProperties(pa),cn.render()},100)}}mt._overlayListener&&cn.element.removeEventListener(i6,mt._overlayListener);const jt=()=>ji(Fe,cn);cn.element.addEventListener(i6,jt),mt._overlayListener=jt,ji(Fe,cn)}for(let Fe=0;Fe=2?(se.hasTool(Ko.toolName)||se.addTool(Ko.toolName),se.setToolEnabled(Ko.toolName),se.setToolConfiguration(Ko.toolName,{}),se.setToolActive(Ko.toolName,{bindings:[{mouseButton:gf.Primary}]})):se.hasTool(Ko.toolName)&&se.setToolDisabled(Ko.toolName)),dt()},Ie=requestAnimationFrame(()=>{oe()});return()=>{k.current.forEach(ge=>{ge&&ge._resizeObserver&&(ge._resizeObserver.disconnect(),delete ge._resizeObserver)}),cancelAnimationFrame(Ie)}},[a,ji,ee,Te,E]);const xt=Ze.useCallback(oe=>{const Ie=`CT_${oe}`,se=y.current.getViewport(Ie);se&&typeof se.resetCamera=="function"&&(se.resetCamera(),console.log("Restoring viewport properties for viewport",oe),se.resetProperties(),se.render())},[]),ti=Ze.useCallback((oe,Ie,ge)=>{const se=`CT_${oe}`;try{const Oe=y.current;if(Oe){const ke=Oe.getViewport(se);ke&&typeof ke.setProperties=="function"&&(console.log(`Applying preset to viewport ${oe}: center=${Ie}, width=${ge}`),ke.setProperties({voiRange:{lower:Ie-ge/2,upper:Ie+ge/2}}),ke.render(),ji(oe,ke))}}catch{}},[ji]);Ze.useEffect(()=>{ye(Array(ee.rows*ee.cols).fill({index:0,total:0,windowCenter:"",windowWidth:""})),ie(Array(ee.rows*ee.cols).fill(!1))},[ee]),Ze.useEffect(()=>{dt()},[Z,me,Ae,dt]),Ze.useEffect(()=>{if(!c)return;const oe=Ie=>{const ge=document.querySelector(".preset-menu");ge&&!ge.contains(Ie.target)&&l(!1)};return document.addEventListener("mousedown",oe),()=>document.removeEventListener("mousedown",oe)},[c]),Ze.useEffect(()=>{const oe=Ie=>{Ie.preventDefault()};return document.addEventListener("contextmenu",oe),()=>{document.removeEventListener("contextmenu",oe)}},[]),Ze.useEffect(()=>{if(!P)return;const oe=Wn(m);Rl(oe)},[T,P]),Ze.useEffect(()=>{Gt.current&&(Gt.current.setAttribute("webkitdirectory","true"),Gt.current.setAttribute("directory","true"))},[]),Ze.useEffect(()=>(window.loadDicomStackFromWadouriList=async oe=>{if(!oe||oe.length===0)return;let Ie;try{const ge=oe[0];if(ge&&ge.startsWith("wadouri:")){const se=ge.slice(8),ke=await(await fetch(se)).arrayBuffer();Ie=Tn.parseDicom(new Uint8Array(ke)).string("x0020000d")}}catch{}S(ge=>{const se=[...ge,{imageIds:oe,studyInstanceUID:Ie}];return D(Oe=>{const ke=[...Oe];return ke[0]=oe,ke}),I(Oe=>{const ke=[...Oe];return ke[0]=se.length-1,ke}),Q(oe),se})},()=>{window.loadDicomStackFromWadouriList=void 0}),[S,D,I,Q]),Ze.useEffect(()=>{!U||!E.every(Ie=>!Ie||Ie.length===0||Ie.every(ge=>!!Pe("imagePlaneModule",ge)))||D(Ie=>Ie.map(se=>{if(!se||se.length===0)return se;const Fe=[...se.map($e=>({imageId:$e,sliceLoc:(()=>{const Ue=Pe("imagePlaneModule",$e);return Ue&&Ue.sliceLocation!==void 0?Number(Ue.sliceLocation):null})()}))].sort(($e,Ue)=>$e.sliceLoc!==null&&Ue.sliceLoc!==null?$e.sliceLoc-Ue.sliceLoc:$e.imageId.localeCompare(Ue.imageId)).map($e=>$e.imageId);return JSON.stringify(Fe)===JSON.stringify(se)?se:Fe}))},[U,C]);function Rl(oe){if(!oe)return;const Ie=`CT_${T}`;P?(oe.setToolEnabled(el.toolName),oe.setToolConfiguration(el.toolName,{sourceViewportId:Ie})):oe.setToolDisabled(el.toolName)}Ze.useEffect(()=>{const oe=t||"default";function Ie(ge,se){const Oe=y.current;if(!Oe)return;const ke=Oe.getViewport(`CT_${ge}`);if(!ke||typeof ke.getImageIds!="function")return;const $e=ke.getImageIds().map(Et=>Et.replace(/^wadouri:/,"")),Ue=se.replace(/^wadouri:/,""),mt=$e.indexOf(Ue);mt!==-1&&typeof ke.setImageIdIndex=="function"&&(Ho(ke.element,{imageIndex:mt}),ji(ge,ke))}return window[`jumpToSliceByImageId_${oe}`]=Ie,window[`exportViewerState_${oe}`]=()=>{const ge=ee.rows*ee.cols,se=Te.slice(0,ge),Oe=b.slice(0,ge),ke=C.map(cn=>({i:cn.imageIds,u:cn.studyInstanceUID})),Fe=y.current,$e=[],Ue=[],mt=[];for(let cn=0;cn{try{w.current=!0;const se=typeof ge=="string"?JSON.parse(ge):ge;if(se.grid&&de(se.grid),se.modes&&q(se.modes),se.stacks&&S(se.stacks.map(Oe=>({imageIds:Oe.i,studyInstanceUID:Oe.u}))),se.stackIdx&&se.stacks){const Oe=se.stackIdx.map(ke=>{var Fe;return((Fe=se.stacks[ke])==null?void 0:Fe.i)||[]});D(Oe),I(se.stackIdx)}setTimeout(()=>{var Fe,$e;const Oe=y.current;if(!Oe){w.current=!1;return}const ke=((Fe=se.grid)==null?void 0:Fe.rows)*(($e=se.grid)==null?void 0:$e.cols)||1;for(let Ue=0;Ue{try{let ge=Ru();if(console.log("Exporting annotations:",ge),Array.isArray(ge)){const se=[xl.toolName,ih.toolName,ic.toolName,tc.toolName,u0.toolName,vl.toolName,Za.toolName,rc.toolName,l0.toolName];ge=ge.filter(Oe=>se.includes(Oe.metadata.toolName))}else return"{}";return JSON.stringify(ge,null,2)}catch(ge){return alert("Failed to export annotations: "+ge),"{}"}},window[`importAnnotations_${oe}`]=ge=>{try{const se=typeof ge=="string"?JSON.parse(ge):ge;Lf&&Lf(),Array.isArray(se)&&se.forEach(Oe=>{Ut(Oe,Oe.annotationUID)}),y.current&&y.current.render()}catch(se){alert("Failed to import annotations: "+se)}},window[`importLegacyAnnotations_${oe}`]=ge=>{Lf&&Lf();let se;try{se=typeof ge=="string"?JSON.parse(ge):ge}catch{alert("Invalid legacy annotation JSON");return}const Oe={ArrowAnnotate:"ArrowAnnotate"};Object.entries(se).forEach(([ke,Fe])=>{console.log("Importing legacy annotations for imageId:",ke),Object.entries(Fe).forEach(([$e,Ue])=>{const mt=Oe[$e]||$e;Ue.data&&Array.isArray(Ue.data)&&Ue.data.forEach(Et=>{const cn=n6(ke,{x:Et.handles.start.y,y:Et.handles.start.x}),jt=n6(ke,{x:Et.handles.end.y,y:Et.handles.end.x});console.log("Importing legacy annotation:"),console.log(" Image ID:",ke),console.log(" Start World:",cn),console.log(" End World:",jt);const st=Pe("imagePlaneModule",ke);console.log(NO);let An=Pe("frameOfReferenceUID",ke);!An&&st&&st.frameOfReferenceUID&&(An=st.frameOfReferenceUID);const Gr=st!=null&&st.rowCosines&&(st!=null&&st.columnCosines)?[st.rowCosines[1]*st.columnCosines[2]-st.rowCosines[2]*st.columnCosines[1],st.rowCosines[2]*st.columnCosines[0]-st.rowCosines[0]*st.columnCosines[2],st.rowCosines[0]*st.columnCosines[1]-st.rowCosines[1]*st.columnCosines[0]]:void 0;Array.isArray(Gr)&&Gr.length,typeof Et.rotation=="number"&&Et.rotation;const Or={annotationUID:Et.uuid,metadata:{toolName:mt,referencedImageId:ke,FrameOfReferenceUID:An,viewPlaneNormal:Gr},data:{handles:{points:[cn,jt],textBox:Et.handles.textBox},text:Et.text||""},visibility:Et.visible!==!1,active:Et.active||!1};Ut(Or,Or.annotationUID)})})}),y.current&&y.current.render()},window[`importLegacyViewport_${oe}`]=ge=>{let se;try{se=typeof ge=="string"?JSON.parse(ge):ge}catch{alert("Invalid legacy viewport JSON");return}const Oe=y.current;if(!Oe)return;const ke=`CT_${T??0}`,Fe=Oe.getViewport(ke);if(!Fe)return;const $e={};if(se.voi&&($e.voiRange={lower:se.voi.windowCenter-se.voi.windowWidth/2,upper:se.voi.windowCenter+se.voi.windowWidth/2}),typeof se.invert=="boolean"&&($e.invert=se.invert),typeof se.pixelReplication=="boolean"&&($e.interpolationType=se.pixelReplication?0:1),typeof se.hflip=="boolean"&&($e.hflip=se.hflip),typeof se.vflip=="boolean"&&($e.vflip=se.vflip),typeof Fe.setProperties=="function"&&Fe.setProperties($e),se.translation||se.scale){const Ue=Fe.getCamera?Fe.getCamera():{};se.translation&&(Ue.translation={...Ue.translation,...se.translation}),se.scale&&(Ue.parallelScale=200/se.scale),console.log("Applying legacy camera properties:",Ue),typeof Fe.setCamera=="function"&&Fe.setCamera(Ue)}typeof se.rotation=="number"&&Fe.setRotation(se.rotation),Fe.render(),ji(T??0,Fe)},()=>{window[`exportViewerState_${oe}`]=void 0,window[`importViewerState_${oe}`]=void 0,window[`exportAnnotations_${oe}`]=void 0,window[`importAnnotations_${oe}`]=void 0,window[`importLegacyAnnotations_${oe}`]=void 0,window[`importLegacyViewport_${oe}`]=void 0,window[`jumpToSliceByImageId_${oe}`]=void 0}},[ee,Te,b,C,E,de,q,I,S,D]);const $2=T!==null?b[T]:0,j2=C[$2],Bh=j2==null?void 0:j2.studyInstanceUID,[YV,qS]=Ze.useState(()=>Array(v).fill(null)),JV=ee.rows*ee.cols,XS=[];for(let oe=0;oek.current[oe]=ge,style:{flex:1,border:Ie?"1px solid #222":"none",background:"#000",minWidth:0,minHeight:0,position:"relative",overflow:"hidden",flexDirection:"column",gridRow:Math.floor(oe/ee.cols)+1,gridColumn:oe%ee.cols+1,height:"100%",boxShadow:T===oe?"0 0 0 4px #1976d2, 0 0 16px 4px #1976d2cc":void 0,zIndex:T===oe?10:1},onClick:()=>_(oe),onDoubleClick:()=>xt(oe),children:[be.jsx("button",{style:{position:"absolute",top:8,left:8,zIndex:20,background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 8px",cursor:"pointer",fontSize:"12px",opacity:.85},onClick:()=>{q(ge=>{const se=[...ge];return se[oe]=ge[oe]==="stack"?"volume":"stack",se})},children:Te[oe]==="stack"?"Volume":"Stack"}),Te[oe]==="volume"&&be.jsxs("div",{style:{position:"absolute",top:8,left:70,zIndex:21,display:"flex",gap:"6px",background:"rgba(34,34,34,0.85)",borderRadius:"4px",padding:"2px 6px",alignItems:"center"},children:[be.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const ge=y.current,se=ge==null?void 0:ge.getViewport(`CT_${oe}`);se&&se.setOrientation&&(se.setOrientation("axial"),se.render())},children:"Axial"}),be.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px",marginRight:"2px"},onClick:()=>{const ge=y.current,se=ge==null?void 0:ge.getViewport(`CT_${oe}`);se&&se.setOrientation&&(se.setOrientation("sagittal"),se.render())},children:"Sagittal"}),be.jsx("button",{style:{background:"#444",color:"#fff",border:"none",borderRadius:"3px",padding:"2px 8px",cursor:"pointer",fontSize:"12px"},onClick:()=>{const ge=y.current,se=ge==null?void 0:ge.getViewport(`CT_${oe}`);se&&se.setOrientation&&(se.setOrientation("coronal"),se.render())},children:"Coronal"})]}),be.jsxs("button",{style:{position:"absolute",top:40,left:8,zIndex:20,background:"#111",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 8px",cursor:"pointer",fontSize:"13px",opacity:.85,marginTop:"4px",display:"flex",alignItems:"center",gap:"6px"},title:"Toggle Fullscreen",onClick:ge=>{ge.stopPropagation();const se=k.current[oe];document.fullscreenElement===se?document.exitFullscreen():se!=null&&se.requestFullscreen?se.requestFullscreen():se!=null&&se.webkitRequestFullscreen?se.webkitRequestFullscreen():se!=null&&se.msRequestFullscreen&&se.msRequestFullscreen()},onMouseEnter:()=>h(oe),onMouseLeave:()=>h(null),children:[be.jsx("span",{style:{fontSize:"18px",lineHeight:1},children:"⛶"}),d===oe&&be.jsx("span",{style:{marginLeft:6},children:document.fullscreenElement===k.current[oe]?"Exit Fullscreen":"Fullscreen"})]}),"// Annotations buttons",Te[oe]==="stack"&&(()=>{var cn;const ge=E[oe],Oe=(Ru()||[]).filter(jt=>jt.metadata&&jt.metadata.referencedImageId&&ge.includes(jt.metadata.referencedImageId)&&jt.metadata.toolName!==Ri.toolName);if(!Oe.length)return null;const ke=y.current,Fe=ke==null?void 0:ke.getViewport(`CT_${oe}`),$e=((cn=Fe==null?void 0:Fe.getCurrentImageIdIndex)==null?void 0:cn.call(Fe))??0,Ue=ge[$e],mt=Oe.filter(jt=>jt.metadata.referencedImageId===Ue),Et=YV[oe];return be.jsxs("div",{style:{position:"absolute",left:"50%",bottom:60,transform:"translateX(-50%)",zIndex:30,display:"flex",gap:4,pointerEvents:"auto",alignItems:"center"},children:[be.jsx("button",{style:{background:"rgba(30,30,30,0.7)",color:"#fff",border:"none",borderRadius:"50%",width:28,height:28,fontSize:"16px",fontWeight:"bold",cursor:"pointer",opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 1px 4px rgba(0,0,0,0.18)",transition:"opacity 0.2s"},title:"Previous Annotation","aria-label":"Previous Annotation",onClick:()=>{const jt=y.current,st=jt==null?void 0:jt.getViewport(`CT_${oe}`);if(!st||typeof st.getCurrentImageIdIndex!="function")return;const An=st.getCurrentImageIdIndex(),Gr=s6(An,ge,Oe,-1);if(Gr!==null&&typeof st.setImageIdIndex=="function"){Ho(st.element,{imageIndex:Gr}),ji(oe,st);const Or=ge[Gr],Vo=Oe.filter(Hi=>Hi.metadata.referencedImageId===Or);Re(oe,Vo.length>0?Vo[0].annotationUID:null)}},children:be.jsx("span",{"aria-hidden":"true",children:"◀"})}),be.jsx("button",{style:{background:"rgba(30,30,30,0.7)",color:"#fff",border:"none",borderRadius:"50%",width:28,height:28,fontSize:"16px",fontWeight:"bold",cursor:"pointer",opacity:.7,display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 1px 4px rgba(0,0,0,0.18)",transition:"opacity 0.2s"},title:"Next Annotation","aria-label":"Next Annotation",onClick:()=>{const jt=y.current,st=jt==null?void 0:jt.getViewport(`CT_${oe}`);if(!st||typeof st.getCurrentImageIdIndex!="function")return;const An=st.getCurrentImageIdIndex(),Gr=s6(An,ge,Oe,1);if(Gr!==null&&typeof st.setImageIdIndex=="function"){Ho(st.element,{imageIndex:Gr}),ji(oe,st);const Or=ge[Gr],Vo=Oe.filter(Hi=>Hi.metadata.referencedImageId===Or);Re(oe,Vo.length>0?Vo[0].annotationUID:null)}},children:be.jsx("span",{"aria-hidden":"true",children:"▶"})}),mt.length>0&&be.jsx("div",{style:{display:"flex",gap:2,alignItems:"center"},children:mt.map(jt=>be.jsxs("div",{style:{display:"flex",alignItems:"center",background:Et===jt.annotationUID?"rgb(4, 225, 0)":"#444",color:Et===jt.annotationUID?"#222":"#fff",borderRadius:"4px",padding:"2px 6px",marginRight:2,cursor:"pointer",border:Et===jt.annotationUID?"2px solid #1976d2":"none",fontWeight:Et===jt.annotationUID?"bold":"normal"},onClick:()=>Re(oe,jt.annotationUID),children:[be.jsxs("span",{style:{marginRight:4},children:[Et===jt.annotationUID?"★ ":"",jt.metadata.toolName||"Annotation"]}),be.jsx("button",{style:{background:"#b71c1c",color:"#fff",border:"none",borderRadius:"50%",width:20,height:20,fontSize:"13px",fontWeight:"bold",cursor:"pointer",marginLeft:2,display:"flex",alignItems:"center",justifyContent:"center",opacity:.85},title:"Delete this annotation","aria-label":"Delete annotation",onClick:st=>{st.stopPropagation(),We(oe,jt.annotationUID,mt)},children:"🗑️"})]},jt.annotationUID))})]})})(),"// ...existing code...",be.jsx("div",{style:{position:"absolute",left:8,bottom:8,background:"rgba(0,0,0,0.7)",color:"#fff",padding:"6px 12px",borderRadius:"4px",fontSize:"14px",zIndex:10,pointerEvents:"none",minWidth:"120px",userSelect:"none"},children:Te[oe]==="stack"?be.jsxs(be.Fragment,{children:[be.jsxs("div",{children:["Image: ",(YS=he[oe])==null?void 0:YS.index," / ",(JS=he[oe])==null?void 0:JS.total]}),be.jsxs("div",{children:["WC: ",(ZS=he[oe])==null?void 0:ZS.windowCenter,"   WW: ",(QS=he[oe])==null?void 0:QS.windowWidth]})]}):be.jsxs("div",{children:["WC: ",(e4=he[oe])==null?void 0:e4.windowCenter,"   WW: ",(t4=he[oe])==null?void 0:t4.windowWidth]})}),be.jsx("div",{style:{position:"absolute",right:8,bottom:8,zIndex:10},children:be.jsxs("div",{className:"preset-menu",style:{background:"rgba(0,0,0,0.7)",color:"#fff",borderRadius:"4px",fontSize:"14px",minWidth:"120px",overflow:"hidden",cursor:"pointer",position:"relative",boxShadow:J[oe]?"0 2px 8px rgba(0,0,0,0.3)":void 0},children:[be.jsxs("div",{style:{padding:"6px 12px",fontWeight:"bold",userSelect:"none"},onClick:()=>ie(ge=>{const se=[...ge];return se[oe]=!se[oe],se}),children:["Presets",be.jsx("span",{style:{float:"right",fontWeight:"normal"},children:J[oe]?"▲":"▼"})]}),J[oe]&&be.jsx("div",{className:"preset-menu-content",style:{background:"rgba(0,0,0,0.95)",borderRadius:"0 0 4px 4px",padding:"6px 0 6px 0",display:"flex",flexDirection:"column",zIndex:11},children:F5e.map(ge=>be.jsx("button",{style:{display:"block",width:"100%",margin:"2px 0",background:"#333",color:"#fff",border:"none",borderRadius:"3px",cursor:"pointer",padding:"4px 0",fontSize:"13px",opacity:.9},onClick:()=>{ti(oe,ge.center,ge.width),ie(se=>{const Oe=[...se];return Oe[oe]=!1,Oe})},children:ge.name},ge.name))})]})}),Te[oe]==="stack"&&E[oe]&&be.jsx("div",{style:{position:"absolute",top:"10%",right:8,width:"12px",height:"80%",maxHeight:"100%",minHeight:0,zIndex:30,display:E[oe].length>0?"flex":"none",alignItems:"flex-start",justifyContent:"center",pointerEvents:"none",flexDirection:"column",padding:0},children:be.jsx("div",{style:{width:"8px",height:"100%",maxHeight:"100%",minHeight:0,borderRadius:"6px",background:"#222",position:"relative",display:"flex",flexDirection:"column",justifyContent:"flex-start",boxShadow:"0 0 8px #2196f3cc",overflow:"hidden"},children:E[oe].map((ge,se)=>{const Oe=!!Pe("imagePlaneModule",ge),ke=y.current;let Fe=-1;if(ke&&typeof ke.getViewport=="function"){const Ue=ke.getViewport(`CT_${oe}`);Ue&&typeof Ue.getCurrentImageIdIndex=="function"&&(Fe=Ue.getCurrentImageIdIndex())}const $e=se===Fe;return be.jsx("div",{style:{width:"100%",height:`${100/E[oe].length}%`,background:$e?"linear-gradient(to right, #ffeb3b 60%, #ff9800 100%)":Oe?"linear-gradient(to right, #4caf50 60%, #2196f3 100%)":"#444",opacity:Oe?.95:.4,transition:"background 0.3s, opacity 0.3s",borderBottom:se{const Ue=y.current,mt=Ue==null?void 0:Ue.getViewport(`CT_${oe}`);mt&&typeof mt.setImageIdIndex=="function"&&Te[oe]==="stack"&&(Ho(mt.element,{imageIndex:se}),ji(oe,mt))}},ge)})})}),Ie&&C.length>1&&be.jsx("div",{style:{position:"absolute",left:0,right:0,bottom:8,zIndex:20,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",width:"100%",background:"none",borderRadius:"0",padding:0},children:be.jsxs("div",{style:{position:"relative"},children:[be.jsxs("button",{style:{background:"#222",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"2px 8px",fontSize:"13px",marginRight:"6px",minWidth:120,textAlign:"left",cursor:"pointer"},onClick:()=>p(g===oe?null:oe),"aria-haspopup":"listbox","aria-expanded":g===oe,children:[(()=>{const ge=C[b[oe]||0],se=ge==null?void 0:ge.studyInstanceUID,ke=Bh&&se&&Bh===se?"#4caf50":"#888";return be.jsxs("span",{children:[be.jsx("span",{style:{color:ke,fontWeight:"bold",marginRight:6,fontSize:"16px",verticalAlign:"middle"},children:"●"}),"Stack ",b[oe]+1," (",(ge==null?void 0:ge.imageIds.length)||0," images)"]})})(),be.jsx("span",{style:{float:"right",fontSize:"12px"},children:"▼"})]}),g===oe&&be.jsx("div",{ref:ge=>{ge&&ge.focus()},tabIndex:0,style:{position:"absolute",left:0,bottom:"110%",background:"#222",border:"1px solid #444",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.3)",zIndex:100,minWidth:180,maxHeight:220,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin"},role:"listbox",onMouseDown:ge=>ge.stopPropagation(),onWheel:ge=>{const se=ge.currentTarget,{scrollTop:Oe,scrollHeight:ke,clientHeight:Fe}=se,$e=Oe===0,Ue=Oe+Fe>=ke-1;ge.deltaY<0&&$e||ge.deltaY>0&&Ue||(ge.stopPropagation(),ge.preventDefault(),se.scrollTop+=ge.deltaY)},onBlur:ge=>{const se=ge.relatedTarget,Oe=ge.currentTarget.parentElement;Oe!=null&&Oe.contains(se)||setTimeout(()=>p(null),100)},children:C.map((ge,se)=>{const Oe=ge.studyInstanceUID,Fe=Bh&&Oe&&Bh===Oe?"#4caf50":"#888",$e=ge.imageIds.length===0;return be.jsxs("div",{role:"option","aria-selected":b[oe]===se,style:{padding:"6px 12px",background:b[oe]===se?"#444":"#222",color:$e?"#aaa":"#fff",cursor:$e?"not-allowed":"pointer",display:"flex",alignItems:"center",fontWeight:b[oe]===se?"bold":"normal",borderBottom:"1px solid #333",userSelect:"none",opacity:$e?.6:1},tabIndex:-1,onMouseDown:Ue=>{Ue.preventDefault(),$e||(L(oe,se),p(null))},children:[be.jsx("span",{style:{color:Fe,fontWeight:"bold",marginRight:8,fontSize:"16px",verticalAlign:"middle"},children:"●"}),"Stack ",se+1," (",ge.imageIds.length," images",$e&&be.jsx("span",{style:{color:"#f44336",marginLeft:6},children:"(empty)"}),")"]},se)})})]})})]},oe))}return be.jsxs("div",{style:{position:"relative",inset:0,width:"100%",height:"100%",boxSizing:"border-box",background:"#222",padding:"12px",overflow:"hidden"},children:[R&&be.jsx("div",{style:{position:"absolute",zIndex:3e3,top:0,left:0,width:"100%",height:"100%",background:"rgba(0,0,0,0.7)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:28,fontWeight:"bold",letterSpacing:1},children:R==="annotations"?"Loading Annotations...":"Loading Viewer State..."}),be.jsxs("div",{children:[be.jsx("button",{style:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:dn?250:-20,zIndex:200,width:40,height:40,background:"#222",color:"#fff",border:"none",borderRadius:"50%",fontWeight:"bold",cursor:"pointer",fontSize:"22px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",transition:"left 0.25s cubic-bezier(.4,2,.6,1), background 0.2s"},onClick:()=>Pn(oe=>!oe),"aria-label":"Open menu",children:"☰"}),dn&&be.jsx("div",{style:{position:"absolute",top:0,left:0,width:220,height:"100%",background:"#222",color:"#fff",zIndex:199,boxShadow:"2px 0 12px rgba(0,0,0,0.3)",flexDirection:"column",padding:"24px 16px 16px 16px",display:"flex",overflow:"hidden"},children:be.jsxs("div",{style:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column"},children:[be.jsxs("div",{style:{fontWeight:"bold",fontSize:18,marginBottom:24},children:["Menu",be.jsx("button",{style:{float:"right",background:"transparent",color:"#fff",border:"none",fontSize:"22px",cursor:"pointer"},onClick:()=>Pn(!1),"aria-label":"Close menu",children:"×"})]}),be.jsx("button",{style:{padding:"10px 18px",background:"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>{var oe;return(oe=Gt.current)==null?void 0:oe.click()},children:"Load DICOM Folder"}),be.jsx("input",{ref:Gt,type:"file",style:{display:"none"},multiple:!0,onChange:sr,accept:".dcm,application/dicom"}),be.jsxs("div",{style:{marginBottom:"18px",display:"flex",alignItems:"center",gap:"8px"},children:[be.jsx("input",{type:"checkbox",id:"orderBySliceLocation",checked:U,onChange:oe=>z(oe.target.checked),style:{accentColor:"#666"}}),be.jsx("label",{htmlFor:"orderBySliceLocation",style:{fontSize:"15px",cursor:"pointer"},children:"Order by Slice Location"})]}),be.jsx("button",{style:{padding:"10px 18px",background:"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:ut,children:"Show DICOM Metadata"}),be.jsxs("button",{style:{padding:"10px 18px",background:A?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>G(oe=>!oe),children:[A?"Disable":"Enable"," Cross Reference Lines"]}),be.jsxs("button",{style:{padding:"10px 18px",background:P?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>N(oe=>!oe),children:[P?"Disable":"Enable"," Reference Lines"]}),be.jsx("button",{onClick:ne,style:{margin:8,padding:8},children:"Sort All Viewports by Slice Location"}),be.jsx("button",{style:{padding:"10px 18px",background:j?"#1976d2":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginBottom:"18px",width:"100%"},onClick:()=>K(oe=>!oe),children:j?"Disable Alt Key for Reference Cursors":"Enable Alt Key for Reference Cursors"})]})})]}),be.jsxs("div",{className:"grid-menu-hover-container",style:{position:"absolute",top:0,left:"50%",transform:"translateX(-50%)",zIndex:100,display:"flex",flexDirection:"column",alignItems:"center",width:"auto",height:"48px",pointerEvents:"none"},children:[be.jsx("div",{style:{position:"absolute",top:0,left:"50%",transform:"translateX(-50%)",width:80,height:14,zIndex:1,pointerEvents:"auto",background:"transparent"},onMouseEnter:()=>xe(!0),onFocus:()=>xe(!0),tabIndex:-1}),be.jsxs("button",{className:"grid-menu-btn",style:{position:"relative",top:Ml?"0":"-22px",opacity:Ml?1:.5,transition:"top 0.25s cubic-bezier(.4,2,.6,1), opacity 0.2s",padding:"6px 16px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px",marginRight:"8px",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",pointerEvents:Ml?"auto":"none",zIndex:2,display:Ml?"block":"none"},onMouseLeave:()=>xe(!1),onBlur:()=>xe(!1),onClick:()=>le(oe=>!oe),tabIndex:0,children:["Grid: ",ee.rows,"x",ee.cols," ▼"]}),fe&&be.jsx("div",{style:{position:"absolute",top:"110%",left:"50%",transform:"translateX(-50%)",background:"#222",color:"#fff",borderRadius:"6px",boxShadow:"0 2px 12px rgba(0,0,0,0.4)",padding:"12px",display:"grid",gridTemplateColumns:"repeat(3, 40px)",gap:"8px",zIndex:200,pointerEvents:"auto"},children:ae.map(oe=>be.jsxs("button",{style:{width:"40px",height:"40px",background:oe.rows===ee.rows&&oe.cols===ee.cols?"#444":"#333",color:"#fff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",fontSize:"15px"},onClick:()=>{Le(),de({rows:oe.rows,cols:oe.cols}),le(!1)},children:[oe.rows,"x",oe.cols]},`${oe.rows}x${oe.cols}`))})]}),be.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"grid",margin:3,gridTemplateRows:`repeat(${ee.rows}, 1fr)`,gridTemplateColumns:`repeat(${ee.cols}, 1fr)`,gap:"5px",zIndex:1},children:XS}),be.jsx("button",{style:{position:"absolute",top:8,right:8,zIndex:20,padding:"6px 12px",background:"#222",color:"#fff",border:"none",borderRadius:"4px",cursor:"pointer",opacity:.85,userSelect:"none"},onClick:()=>u(!0),children:"Settings"}),f&&be.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",background:"rgba(0,0,0,0.4)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>u(!1),children:be.jsxs("div",{style:{background:"#222",color:"#fff",borderRadius:"8px",minWidth:"320px",minHeight:"180px",padding:"24px",boxShadow:"0 4px 24px rgba(0,0,0,0.4)",position:"relative"},onClick:oe=>oe.stopPropagation(),children:[be.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"Settings"}),be.jsxs("div",{style:{marginBottom:"24px"},children:[be.jsx("div",{style:{marginBottom:12,fontWeight:"bold"},children:"Mouse Button Tool Bindings"}),o6.map(oe=>be.jsxs("div",{style:{marginBottom:10},children:[be.jsxs("label",{style:{marginRight:8},children:[oe.label," Button:"]}),be.jsx("select",{value:Z[oe.value],onChange:Ie=>te(ge=>({...ge,[oe.value]:Ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:pf.map(Ie=>be.jsx("option",{value:Ie.value,children:Ie.label},Ie.value))})]},oe.value)),be.jsxs("div",{style:{margin:"12px 0"},children:[be.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>$(oe=>!oe),children:[V?"Hide":"Show"," Advanced Mouse Bindings"]}),V&&be.jsx("div",{style:{marginTop:8},children:op.slice(3).map(oe=>be.jsxs("div",{style:{marginBottom:10},children:[be.jsxs("label",{style:{marginRight:8},children:[oe.label,":"]}),be.jsxs("select",{value:Z[oe.value]||"",onChange:Ie=>te(ge=>({...ge,[oe.value]:Ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[be.jsx("option",{value:"",children:"(None)"}),pf.map(Ie=>be.jsx("option",{value:Ie.value,children:Ie.label},Ie.value))]})]},oe.value))})]}),be.jsx("div",{style:{margin:"18px 0 8px 0",fontWeight:"bold"},children:"Ctrl + Mouse Button Tool Bindings"}),o6.map(oe=>be.jsxs("div",{style:{marginBottom:10},children:[be.jsxs("label",{style:{marginRight:8},children:[oe.label," + Ctrl:"]}),be.jsxs("select",{value:me[oe.value]||"",onChange:Ie=>X(ge=>({...ge,[oe.value]:Ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[be.jsx("option",{value:"",children:"(None)"}),pf.map(Ie=>be.jsx("option",{value:Ie.value,children:Ie.label},Ie.value))]})]},oe.value+"_ctrl")),be.jsxs("div",{style:{margin:"12px 0"},children:[be.jsxs("button",{style:{background:"#333",color:"#fff",border:"none",borderRadius:"4px",padding:"4px 12px",cursor:"pointer",fontSize:"14px",marginBottom:"8px"},onClick:()=>Y(oe=>!oe),children:[H?"Hide":"Show"," Advanced Ctrl + Mouse Bindings"]}),H&&be.jsx("div",{style:{marginTop:8},children:op.slice(3).map(oe=>be.jsxs("div",{style:{marginBottom:10},children:[be.jsxs("label",{style:{marginRight:8},children:[oe.label," + Ctrl:"]}),be.jsxs("select",{value:me[oe.value]||"",onChange:Ie=>X(ge=>({...ge,[oe.value]:Ie.target.value})),style:{background:"#333",color:"#fff",border:"1px solid #444",borderRadius:"4px",padding:"4px 8px",fontSize:"14px"},children:[be.jsx("option",{value:"",children:"(None)"}),pf.map(Ie=>be.jsx("option",{value:Ie.value,children:Ie.label},Ie.value))]})]},oe.value+"_ctrl"))})]})]}),be.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>u(!1),"aria-label":"Close",children:"×"})]})}),Ve&&be.jsx("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0,0,0,0.5)",zIndex:2e3,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>ue(!1),children:be.jsxs("div",{style:{background:"#222",color:"#fff",borderRadius:"8px",minWidth:"320px",maxWidth:"80vw",maxHeight:"80vh",padding:"24px",boxShadow:"0 4px 24px rgba(0,0,0,0.4)",position:"relative",overflow:"auto"},onClick:oe=>oe.stopPropagation(),children:[be.jsx("div",{style:{fontSize:"20px",marginBottom:"16px"},children:"DICOM Metadata"}),Ee,be.jsx("button",{style:{position:"absolute",top:12,right:12,background:"transparent",color:"#fff",border:"none",fontSize:"20px",cursor:"pointer"},onClick:()=>ue(!1),"aria-label":"Close",children:"×"})]})})]})}function U5e(t){console.log("Setting up tools...",t),pr(o0),pr(a0),pr(yl),pr(c0),pr(s0),pr(xl),pr(rc),pr(ic),pr(tc),pr(u0),pr(vl),pr(Za),pr(l0),pr(Ri),pr(Ko),pr(el),pr(ih);let e=Wn(t);return e||(e=oL(t),e.addTool(a0.toolName),e.addTool(o0.toolName),e.addTool(c0.toolName),e.addTool(yl.toolName,{loop:!1}),e.addTool(s0.toolName),e.addTool(xl.toolName),e.addTool(ih.toolName,{getTextCallback:()=>""}),e.addTool(ic.toolName),e.addTool(rc.toolName,{statsCalculator:()=>null}),e.addTool(tc.toolName,{calculateStats:!1,getTextCallback:()=>""}),e.addTool(u0.toolName,{getTextCallback:()=>""}),e.addTool(vl.toolName,{calculateStats:!1}),e.addTool(Za.toolName,{}),e.addTool(l0.toolName,{}),e.addTool(el.toolName),e.addTool(Ri.toolName)),e}function s6(t,e,r,n){if(!r.length||!e.length)return null;const i=r.map(o=>e.findIndex(a=>a===o.metadata.referencedImageId)).filter(o=>o!==-1).sort((o,a)=>o-a);if(!i.length)return null;if(n===1){for(let o of i)if(o>t)return o;return i[0]}else{for(let o=i.length-1;o>=0;o--)if(i[o]`wadouri:/test_images/stack2/IMG${r+1}.dcm`),Array.from({length:25},(e,r)=>`wadouri:/test_images/stack5/IMG${r+1}.dcm`),Array.from({length:26},(e,r)=>`wadouri:/test_images/stack3/IMG${r+1}.dcm`)]}const c6=t=>t.map(e=>e.startsWith("wadouri:")?e:`wadouri:${e}`);function XV(){document.querySelectorAll(".dicom-viewer-test-root").forEach(r=>{const n=r.id||"",i=()=>B5e();D5(r).render(be.jsx(a6,{container_id:n,imageStacks:i}))}),document.querySelectorAll(".dicom-viewer-root").forEach(r=>{const n=r.id||"";let i;const o=r.getAttribute("data-images");if(o){let f;try{f=JSON.parse(o)}catch(u){console.error("Invalid data-images JSON:",u),f=[]}Array.isArray(f)&&f.length>0&&typeof f[0]=="string"?i=()=>Promise.resolve([c6(f)]):Array.isArray(f)?i=()=>Promise.resolve(f.map(u=>Array.isArray(u)?c6(u):[])):i=()=>Promise.resolve([[]])}else i=()=>Promise.resolve([[]]);const a=r.getAttribute("data-auto-cache-stack"),s=a==="true"||a==="1",c=r.getAttribute("data-annotationjson"),l=r.getAttribute("data-viewerstate");console.log("Mounting DICOM viewer:"),console.log(l,c,s),D5(r).render(be.jsx(a6,{container_id:n,imageStacks:i,autoCacheStack:s,annotationJson:c||void 0,viewerState:l||void 0}))})}XV();window.mountDicomViewers=XV; diff --git a/templates/base.html b/templates/base.html index 8acc2dec..5a6178b6 100644 --- a/templates/base.html +++ b/templates/base.html @@ -70,7 +70,7 @@ - + {% block js %} {% endblock %}